{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@stimulus/core/dist/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/action.js","webpack:///./node_modules/@stimulus/core/dist/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/attribute_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/string_map_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/value_observer.js","webpack:///./node_modules/@stimulus/core/dist/context.js","webpack:///./node_modules/@stimulus/core/dist/inheritable_statics.js","webpack:///./node_modules/@stimulus/core/dist/blessing.js","webpack:///./node_modules/@stimulus/core/dist/module.js","webpack:///./node_modules/@stimulus/core/dist/definition.js","webpack:///./node_modules/@stimulus/core/dist/class_map.js","webpack:///./node_modules/@stimulus/core/dist/string_helpers.js","webpack:///./node_modules/@stimulus/core/dist/data_map.js","webpack:///./node_modules/@stimulus/core/dist/guide.js","webpack:///./node_modules/@stimulus/core/dist/selectors.js","webpack:///./node_modules/@stimulus/core/dist/target_set.js","webpack:///./node_modules/@stimulus/core/dist/scope.js","webpack:///./node_modules/@stimulus/core/dist/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/router.js","webpack:///./node_modules/@stimulus/core/dist/schema.js","webpack:///./node_modules/@stimulus/core/dist/application.js","webpack:///./node_modules/@stimulus/core/dist/class_properties.js","webpack:///./node_modules/@stimulus/core/dist/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/value_properties.js","webpack:///./node_modules/@stimulus/core/dist/controller.js","webpack:///./node_modules/tailwindcss-stimulus-components/dist/tailwindcss-stimulus-components.m.js","webpack:///./node_modules/webcola/dist/src/layout.js","webpack:///./node_modules/webcola/dist/src/rectangle.js","webpack:///./node_modules/webcola/dist/src/shortestpaths.js","webpack:///./node_modules/webcola/dist/src/linklengths.js","webpack:///./node_modules/webcola/dist/src/descent.js","webpack:///./node_modules/webcola/dist/src/vpsc.js","webpack:///(webpack)/buildin/module.js","webpack:///./app/javascript/packs/application.scss?c0ef","webpack:///./node_modules/webcola/dist/src/powergraph.js","webpack:///./node_modules/webcola/dist/src/rbtree.js","webpack:///./node_modules/webcola/dist/src/pqueue.js","webpack:///./node_modules/webcola/dist/src/geom.js","webpack:///./node_modules/webcola/dist/src/handledisconnected.js","webpack:///./node_modules/webcola/dist/src/gridrouter.js","webpack:///./node_modules/quill/dist/quill.js","webpack:///./node_modules/webcola/dist/index.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./app/javascript/controllers/rich_text_controller.js","webpack:///./node_modules/buffer/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./app/javascript/controllers/task_dropdown_controller.js","webpack:///./app/javascript/controllers/task_modal_controller.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./app/javascript/packs/application.scss","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./app/javascript/images/logo.png","webpack:///./node_modules/webcola/dist/src/adaptor.js","webpack:///./node_modules/webcola/dist/src/d3adaptor.js","webpack:///./node_modules/webcola/dist/src/d3v3adaptor.js","webpack:///./node_modules/webcola/dist/src/d3v4adaptor.js","webpack:///./node_modules/webcola/dist/src/layout3d.js","webpack:///./node_modules/webcola/dist/src/batch.js","webpack:///./app/javascript/controllers/index.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./app/javascript/packs/application.js","webpack:///./app/javascript/graph/settings.js","webpack:///./app/javascript/controllers/graph_controller.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","EventListener","eventTarget","eventName","eventOptions","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","_i","_a","bindings","length","Array","from","sort","left","right","leftIndex","index","rightIndex","configurable","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","handleError","error","message","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","createEventListener","set","parts","keys","push","join","descriptorPattern","parseEventTarget","eventTargetName","window","document","Action","element","descriptor","tagName","toLowerCase","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","token","descriptorString","content","matches","trim","match","split","options","replace","test","toString","eventNameSuffix","e","getAttribute","Error","Binding","context","action","willBeInvokedByEvent","invokeWithEvent","method","controller","target","Element","contains","scope","containsElement","ElementObserver","delegate","_this","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","attributes","childList","subtree","refresh","takeRecords","matchElementsInTree","has","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","StringMapObserver","stringMap","knownAttributeNames","refreshAttribute","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","fetch","del","size","prune","_extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","filter","__extends","b","setPrototypeOf","__proto__","__","constructor","_super","IndexedMultimap","keysByValue","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","_","findIndex","tokensAreEqual","slice","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","attributeValue","invokeChangedCallbackForValue","valueDescriptors","name_1","undefined","defaultValue","data","Context","controllerConstructor","bindingObserver","dispatcher","valueObserver","initialize","parentElement","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","isArray","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","apply","getOwnStaticObjectPairs","getPrototypeOf","reverse","__spreadArrays","il","arguments","k","a","j","jl","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","_newTarget","Reflect","construct","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAttributeName","getAttributeNameForKey","camelize","char","toUpperCase","capitalize","charAt","dasherize","DataMap","setAttribute","removeAttribute","Guide","logger","warnedKeysByObject","warn","warnedKeys","attributeValueContainsToken","TargetSet","targetName","find","targetNames","findTarget","findLegacyTarget","findAll","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","guide","Scope","classes","closest","controllerSelector","queryElements","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","__generator","body","f","y","g","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","Application","documentElement","console","router","readyState","register","load","head","rest","definitions","unload","identifiers","getControllerForElementAndIdentifier","ClassPropertiesBlessing","classDefinition","TargetPropertiesBlessing","targetDefinition","_typeof","obj","ValuePropertiesBlessing","valueDefinitionPairs","propertyDescriptorMap","valueDefinitionPair","valueDescriptor","parseValueDefinitionPair","read","readers","write","writers","default","propertiesForValueDefinitionPair","defaultValuesByType","valueDescriptorForTokenAndType","typeConstant","Boolean","Number","String","parseValueTypeConstant","boolean","number","string","array","JSON","parse","parseFloat","writeJSON","stringify","Controller","blessings","writable","hide","setTimeout","show","close","remove","timeout","duration","save","clearTimeout","statusTarget","textContent","Rails","fire","formTarget","success","setStatus","_onMenuButtonKeydown","keyCode","preventDefault","toggle","toggleClass","visibleClass","invisibleClass","activeClass","enteringClass","leavingClass","hasButtonTarget","buttonTarget","openValue","openValueChanged","_show","_hide","menuTarget","classList","_enteringClassList","_activeClassList","activeTarget","_invisibleClassList","_visibleClassList","enterTimeout","_leavingClassList","leaveTimeout","querySelector","parseInt","open","backgroundId","backgroundHtml","_backgroundHTML","allowBackgroundClose","preventDefaultActionOpening","preventDefaultActionClosing","blur","lockScroll","containerTarget","insertAdjacentHTML","background","unlockScroll","closeBackground","closeWithKeyboard","innerWidth","clientWidth","style","paddingRight","saveScrollPosition","top","scrollPosition","restoreScrollPosition","pageYOffset","scrollTop","activeTabClasses","inactiveTabClasses","anchor","tabTargets","id","showTab","change","currentTarget","dataset","indexOf","dispatchEvent","CustomEvent","panelTargets","location","hash","URL","u","toggleableTargets","contentTarget","mouseOver","mouseOut","h","overlayTarget","styleProperty","update","preview","color","_getContrastYIQ","substr","previewTarget","backgroundColor","colorTarget","EventType","powergraph","linklengths_1","descent_1","rectangle_1","shortestpaths_1","geom_1","handledisconnected_1","isGroup","leaves","groups","Layout","_canvasSize","_linkDistance","_defaultNodeSize","_linkLengthCalculator","_linkType","_avoidOverlaps","_handleDisconnected","_running","_nodes","_groups","_rootGroup","_links","_constraints","_distanceMatrix","_descent","_directedLinkConstraints","_threshold","_visibilityGraph","_groupCompactness","linkAccessor","getSourceIndex","getTargetIndex","setLength","setLinkLength","getType","on","listener","trigger","kick","tick","_alpha","end","alpha","stress","_lastStress","locks","fixed","px","py","x","s1","rungeKutta","updateNodePositions","source","padding","parent","gi","powerGraphGroups","getGroups","avoidOverlaps","handleDisconnected","flowLayout","axis","minSeparation","getMinSeparation","links","constraints","distanceMatrix","defaultNodeSize","groupCompactness","linkDistance","linkType","convergenceThreshold","getLinkLength","link","getLinkType","symmetricDiffLinkLengths","idealLength","w","jaccardLinkLengths","initialUnconstrainedIterations","initialUserConstraintIterations","initialAllConstraintsIterations","gridSnapIterations","keepRunning","centerGraph","distances","N","G","ao","Calculator","DistanceMatrix","Descent","createSquareMatrix","weight","D","strength","idealDistance","addAttraction","curConstraints","generateDirectedEdgeConstraints","threshold","initialLayout","project","Projection","projectFunctions","run","separateOverlappingComponents","snapStrength","snapGridSize","width","numGridSnapNodes","scaleSnapByMaxH","G0","resume","iterations","edges","vs","gg","height","x_1","y_1","graphs","separateGraphs","applyPacking","bounds","setXCentre","setYCentre","prepareEdgeRouting","nodeMargin","TangentVisibilityGraph","inflate","vertices","routeEdge","edge","ah","draw","lineData","vg2","V","E","port1","port2","addPoint","addEdgeIfVisible","shortestPath","PathFromNodeToNode","route","makeEdgeBetween","innerBounds","sourceIntersection","arrowStart","q","rayIntersection","makeEdgeTo","linkId","dragStart","storeOffset","dragOrigin","stopNode","origin","_dragGroupOffsetX","_dragGroupOffsetY","cx","cy","drag","position","dragEnd","vpsc_1","rbtree_1","computeGroupBounds","union","Rectangle","empty","X","Y","POSITIVE_INFINITY","NEGATIVE_INFINITY","overlapX","ux","vx","overlapY","uy","vy","dx","dy","min","lineIntersections","x1","y1","x2","y2","sides","intersections","lineIntersection","ints","x3","y3","x4","y4","dx12","dx34","dy12","dy34","denominator","dx31","dy31","pad","si","ti","sqrt","al","targetIntersection","pos","prev","makeRBTree","Event","isOpen","compareEvents","RBTree","xRect","getCentre","getOpen","getClose","getSize","makeRect","center","findNeighbours","scanline","forward","it","findIter","uovervX","insert","yRect","generateGroupConstraints","root","minSep","isContained","gn","ln","childConstraints","ccs","rs","minVar","desiredPosition","maxVar","variable","cs","generateConstraints","cOut","cIn","gapAdjustment","gap","vars","rect","assert","events","makeConstraint","sep","Constraint","visitNeighbours","mkcon","generateXConstraints","generateYConstraints","generateXGroupConstraints","generateYGroupConstraints","removeOverlaps","Variable","solver","Solver","solve","IndexedVariable","rootGroup","variables","createConstraints","w2","h2","stiffness","createSeparation","equality","makeFeasible","dim","offsets","nextPos","createAlignment","xConstraints","yConstraints","offset","isSep","setupVariablesAndBounds","x0","y0","desired","getDesired","fixedWeight","ix","iy","xProject","xmin","xmax","p2","yProject","ymin","ymax","updateNodeBounds","updateGroupBounds","starting","setStartingPositions","setDesiredPositions","pqueue_1","Neighbour","distance","neighbours","QueueEntry","es","getLength","dijkstraNeighbours","DistancesFromNode","PathFromNodeToNodeWithPrevCost","prevCost","PriorityQueue","qu","visitedFrom","neighbour","viduid","cc","path","dest","MAX_VALUE","reduceKey","unionCount","intersectionCount","computeLinkLengths","la","addNeighbours","getNeighbours","stronglyConnectedComponents","numVertices","stack","components","strongConnect","lowlink","onStack","out","component","edges_1","v_1","nodes_1","ui","vi","Locks","isEmpty","random","PseudoRandom","H","Hd","ia","ib","xtmp","minD","M","offsetDir","getNextBetween","computeDerivatives","d2","Huu","maxH","maxDisplaces","sd2","rd","isFinite","D2","gs","l3","hs","log","numNodes","xiu","abs","dotProd","rightMultiply","computeStepSize","numerator","reduceStress","takeDescentStep","computeStress","copy","stepAndProject","stepSize","mApply","matrixApply","computeNextPosition","beta","converged","mid","disp","nMinus1","rl","zeroDistance","seed","range","getNext","PositionStats","scale","AB","AD","A2","addVariable","ai","bi","wi","getPosn","active","unsatisfiable","slack","dfdv","block","ps","posn","ff","Block","updateWeightedPosition","compute_lm","postAction","_dfdv","lm","populateSplitBlock","traverse","visit","acc","findMinLM","findMinLMBetween","lv","rv","findPath","to","endFound","isActiveDirectedPathBetween","createSplitBlock","startVar","splitBetween","vl","vr","bs","constraint","lb","rb","mergeAcross","dist","cost","sum","Blocks","list","blockInd","last","swapBlock","merge","updateBlockPositions","inactive","LAGRANGIAN_TOLERANCE","nb","mostViolated","minSlack","deletePoint","ZERO_UPPERBOUND","satisfy","lastcost","removeOverlapInOneDimension","spans","lowerBound","upperBound","desiredCenter","leftMost","rightMost","leftMostSize","rightMostSize","vLower","vUpper","newCenters","webpackPolyfill","paths","children","api","locals","PowerEdge","Configuration","roots","initModulesFromGroup","ModuleSet","R","outgoing","incoming","group","moduleSet","child","prop","LinkSets","inInt","intersection","outInt","forAll","ms","linktype","nls","count","rootMerges","merges","ctr","i_","nEdges","greedyMerge","getGroupHierarchy","retargetedEdges","toGroups","allEdges","gid","getEdges","isLeaf","isIsland","isPredefined","edgetype","table","other","sets","forAllModules","lt","powerEdges","TreeBase","res","_root","iter","_comparator","_cursor","_ancestors","get_child","_bound","cmp","Iterator","each","cb","reach","cur","_tree","_minNode","_maxNode","red","dir","set_child","val","comparator","ret","gp","ggp","is_red","dir2","single_rotate","double_rotate","found","sr","sibling","gpc","PairingHeap","elem","subheaps","str","needComma","subheap","isHeap","lessThan","every","heap2","removeMin","mergePairs","firstPair","remaining","decreaseKey","newValue","setHeapNode","newHeap","pairingNode","args","arg","heapNode","newKey","Point","LineSegment","PolyPoint","isLeft","P0","P1","P2","above","vj","below","Rtangent_PointPolyC","dnC","floor","Ltangent_PointPolyC","tangent_PolyPolyC","W","t1","t2","cmp1","cmp2","ix1","ix2","RLtangent_PolyPolyC","ConvexHull","S","minmax","maxmin","maxmax","bot","clockwiseRadialSweep","atan2","LRtangent_PolyPolyC","LLtangent_PolyPolyC","RRtangent_PolyPolyC","BiTangent","BiTangents","TVGPoint","VisibilityVertex","polyid","polyvertid","vv","VisibilityEdge","g0","pj","Pi","Pj","tangents","i1","i2","intersectsPolys","Vclosed","poly","rtan","ltan","intersects","int","bt","v1","v2","v3","w1","w3","v1v2w2","v2w1w2","v2w2w3","w1w2v2","w2v1v2","w2v2v3","ll","rr","lr","isAnyPInQ","isPointInsidePoly","polysOverlap","packingOptions","node_size","desired_ratio","svg_width","svg_height","real_width","real_height","min_width","global_bottom","line","max_width","put_rect","space_left","bottom","graph","min_x","min_y","max_x","max_y","calculate_bb","curr_best_f","curr_best","get_entire_width","iterationCounter","f_x1","f_x2","flag","df","corner","put_nodes_to_right_positions","marks","ways","clusters","n1","n2","explore_node","is_new","adjacent","NodeWrapper","leaf","Vert","LongestCommonSubsequence","mf","findMatch","tr","mr","reversed","getSequence","GridRouter","originalnodes","accessor","groupPadding","getBounds","getChildren","cols","getGridLines","rows","ports","backToFront","getDepth","colMids","midPoints","rowMids","rowx","rowX","coly","colY","hlines","vlines","lines","verts","li","intersect","isHoriz","delta","avg","columns","ls","overlapping","col","splice","depth","mids","findLineage","lineage","findAncestorPathBetween","aa","ba","commonAncestor","lineages","siblingObstacles","lineageLookup","obstacles","getSegmentSets","routes","vsegments","ei","edgeid","sdx","vsegmentsets","segmentset","segments","nudgeSegs","leftOf","s2","e1","e2","lind","rind","nudgeSegments","ss","openCount","routeEdges","nudgeGap","routePaths","order","orderEdges","makeSegments","unreverseEdges","segment","angleBetween2Lines","line1","line2","angle1","angle2","diff","PI","getOrder","edgeOrder","lcs","copyPoint","isStraight","obstacleLookup","passableEdges","pathPoints","getRoutePath","cornerradius","arrowwidth","arrowheight","routepath","arrowpath","angle","arrowtip","arrowcorner1","arrowcorner2","factory","_typeof2","self","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","query","Container","Format","Leaf","Embed","Scroll","Inline","Text","Attributor","Attribute","Class","Style","Store","extendStatics","ParchmentError","tags","types","ANY","TEXT_NODE","LEVEL","BLOCK","INLINE","HTMLElement","names","TYPE","DATA_KEY","input","BlotClass","bubble","blot","parentNode","Definitions","Definition","blotName","attrName","keyName","className","tagNames","tag","equal","NULL_CHARACTER","fromCharCode","Delta","text","newOp","retain","lastOp","unshift","chop","predicate","partition","passed","failed","initial","changeLength","Infinity","hasNext","nextOp","compose","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","thisOp","otherOp","strings","diffResult","opLength","INSERT","DELETE","EQUAL","eachLine","newline","transform","priority","transformPosition","nextType","hasOwn","toStr","gOPD","arr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","src","copyIsArray","clone","deep","BlockEmbed","bubbleFormats","_createClass","props","Constructor","protoProps","staticProps","_get","Function","desc","_extend2","_interopRequireDefault","_quillDelta2","_parchment2","_break2","_inline2","_text2","_classCallCheck","instance","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","_Parchment$Embed","domNode","formats","BLOCK_ATTRIBUTE","format","def","endsWith","insertBefore","insertAt","BLOCK_BLOT","_Parchment$Block","_this2","cache","descendants","shift","tail","ref","force","statics","defaultChild","allowedChildren","overload","expandConfig","_slicedToArray","_arr","_n","_d","_e","_s","err","sliceIterator","_editor2","_emitter4","_module2","_selection","_selection2","_logger2","_theme2","_defineProperty","debug","Quill","container","html","innerHTML","__quill","addContainer","scrollingContainer","emitter","scroll","whitelist","editor","selection","theme","keyboard","addModule","clipboard","history","init","EDITOR_CHANGE","TEXT_CHANGE","isBlank","SCROLL_UPDATE","lastRange","modify","contents","convert","setContents","placeholder","readOnly","disable","limit","level","imports","overwrite","startsWith","refNode","createElement","setRange","_this3","_overload","_overload2","deleteText","enable","enabled","focus","scrollIntoView","_this4","sources","API","getSelection","formatLine","formatText","setSelection","SILENT","_this5","_overload3","_overload4","_this6","_overload5","_overload6","containerBounds","getBoundingClientRect","_overload7","_overload8","getContents","getFormat","getRange","_overload9","_overload10","getText","hasFocus","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","off","once","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","deleted","applied","applyDelta","_overload15","_overload16","Range","USER","_this11","userConfig","DEFAULTS","import","themeConfig","config","moduleConfig","moduleClass","toolbar","modifier","strict","isEnabled","oldDelta","shiftRange","_emitter","_emitter2","emit","_map","_map2","_map3","_map4","version","_Parchment$Inline","compare","BLOT","isolate","wrap","moveChildren","selfIndex","otherIndex","_parchment","TextBlot","_Parchment$Text","_eventemitter2","_len","_key","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","_len2","_key2","_ref","handler","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","quill","levels","_console","namespace","newLevel","pSlice","objectKeys","isArguments","deepEqual","actual","expected","opts","Date","getTime","isUndefinedOrNull","isBuffer","ka","kb","objEquiv","attributeBit","ATTRIBUTE","item","canAdd","Code","_block2","_Inline","CodeBlock","_Block","frag","_descendant","descendant","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","lastIndexOf","appendChild","optimize","removeChild","unwrap","TAB","_op2","_code2","_cursor2","_block","_clone2","_deepEqual2","ASCII","Editor","getDelta","consumeNextNewline","scrollLength","batchStart","image","bullet","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","suffix","cursorIndex","textBlot","oldValue","CONTENTS","oldText","newText","diffDelta","combined","merged","_toConsumableArray","arr2","Selection","composing","mouseDown","cursor","savedRange","handleComposition","handleDragging","listenDOM","native","getNativeRange","textNode","setNativeRange","ignored","_context$range","startNode","startOffset","endNode","endOffset","restore","_format","nativeRange","collapsed","after","attach","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","createRange","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rangeCount","getRangeAt","normalizeNative","info","normalized","normalizedToRange","activeElement","positions","indexes","_position","startContainer","endContainer","childNodes","lastChild","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","first","scrollBounds","removeAllRanges","addRange","rangeToNative","oldRange","_getRange","_getRange2","Break","linked_list_1","shadow_1","ContainerBlot","build","makeBlot","forEachAt","criteria","lengthLeft","detach","childBlot","refBlot","insertInto","memo","targetParent","inclusive","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","nextSibling","replaceChild","FormatBlot","replaceWith","replacement","wrapper","move","LeafBlot","INLINE_BLOT","lib","keepNull","retOp","_instanceof","nativeMap","nativeSet","nativePromise","circular","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","_clone","proto","__isArray","__isRegExp","RegExp","__getRegExpFlags","lastIndex","__isDate","allocUnsafe","keyChild","valueChild","entryChild","attrs","symbols","symbol","allPropertyNames","__objToStr","re","flags","global","ignoreCase","multiline","clonePrototype","_container2","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_newlineIndex","getLines","observer","SHORTKEY","_quill2","navigator","platform","Keyboard","_Module","addBinding","ENTER","shiftKey","handleEnter","metaKey","ctrlKey","altKey","userAgent","BACKSPACE","handleBackspace","handleDelete","prefix","handleDeleteRange","listen","evt","normalize","which","defaultPrevented","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","makeEmbedArrowHandler","_ref3","where","LEFT","RIGHT","_quill$getLeaf3","_quill$getLine11","_quill$getLine13","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine17","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","charCodeAt","ESCAPE","UP","DOWN","cutoff","updateContents","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","header","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","Cursor","createTextNode","_length","restoreText","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","sanitize","_inline","Link","url","_sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","href","protocol","_keyboard2","_dropdown2","optionsCounter","toggleAriaAttribute","Picker","select","buildPicker","display","togglePicker","escape","option","tabIndex","selectItem","buildItem","selected","buildLabel","buildOptions","selectedIndex","createEvent","initEvent","isActive","_embed2","_scroll2","_clipboard2","_history2","ShadowBlot","cloneNode","parentBlot","refDomNode","AttributorStore","styles","attr","ClassAttributor","part","StyleAttributor","Theme","themes","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","getLastChangeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","changeDelta","undoDelta","timestamp","now","delay","maxStack","deleteLength","changeIndex","endsWithNewlineChange","BaseTooltip","_colorPicker2","_iconPicker2","_picker2","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","tooltip","textbox","pickers","picker","extendToolbar","buttons","icons","button","selects","fillSelect","align","handlers","formula","edit","fileInput","files","reader","FileReader","onload","readAsDataURL","click","video","_Tooltip","boundsContainer","cancel","linkRange","restoreFocus","LinkedList","append","curNode","callback","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","ScrollBlot","records","mark","markParent","previousSibling","grandChild","InlineBlot","obj1","obj2","isEqual","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","searchString","subjectString","execCommand","DIFF_DELETE","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","longtext","shorttext","hm","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","best_common","prefixLength","text1_a","text1_b","text2_a","text2_b","hm1","ceil","hm2","mid_common","diff_halfMatch_","diffs_a","diffs_b","text1_length","text2_length","max_d","v_offset","v_length","front","k1start","k1end","k2start","k2end","k1","k1_offset","k2_offset","diff_bisectSplit_","k2","diff_bisect_","diff_compute_","diff_cleanupMerge","norm","current_pos","next_pos","split_pos","d_left","d_right","cursor_normalize_diff","ndiffs","cursor_pointer","d_next","merge_tuples","fix_cursor","compact","starts_with_pair_end","ends_with_pair_start","fixed_diffs","fix_emoji","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","pointer","count_delete","count_insert","text_delete","text_insert","changes","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","propertyIsEnumerable","Events","EE","fn","EventEmitter","_events","_eventsCount","eventNames","exists","available","ee","a1","a2","a3","a4","a5","len","removeListener","removeAllListeners","addListener","setMaxListeners","prefixed","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","deltaEndsWith","fontStyle","computeStyle","italic","fontWeight","bold","applyFormat","textIndent","matchAlias","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchers","matcher","matchVisual","addMatcher","innerText","_prepareMatching","prepareMatching","_prepareMatching2","elementMatchers","textMatchers","paste","pair","_pair","getComputedStyle","endText","childrenDelta","nextElementSibling","nodeHeight","offsetHeight","marginTop","marginBottom","offsetTop","whiteSpace","replacer","collapse","Bold","addControls","Toolbar","_ret","controls","addHandler","_this$quill$selection","_quill$selection$getR","prompt","addButton","control","addSelect","clean","direction","_picker","ColorPicker","_Picker","colorLabel","stroke","fill","IconPicker","defaultItem","Tooltip","TEMPLATE","reference","offsetWidth","rootBounds","verticalShift","_base","_base2","_link2","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","_core2","_indent","_blockquote2","_header2","_list","_list2","_bold2","_italic2","_script2","_strike2","_underline2","_image2","_video2","_code","_formula2","_syntax2","_toolbar2","_bubble2","_snow2","IndentClass","ListItem","IdentAttributor","Blockquote","Header","List","_Container","listEventHandler","_bold","Italic","_Bold","Script","Strike","Underline","_link","ATTRIBUTES","Image","Video","_BlockEmbed","FormulaBlot","_Embed","katex","render","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedText","Syntax","highlight","timer","interval","code","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","marginLeft","__export","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","cspNonce","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","$","csrfParam","csrfToken","meta","CSRFProtection","xhr","setRequestHeader","refreshCSRFTokens","param","params","initCustomEvent","bubbles","cancelable","stopEverything","stopPropagation","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","xml","json","script","ajax","response","responseText","getResponseHeader","status","statusText","complete","beforeSend","XMLHttpRequest","OPENED","send","dataType","accept","crossDomain","withCredentials","onreadystatechange","DONE","parser","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","host","toArray","serializeElement","additionalParam","inputs","disabled","checked","encodeURIComponent","formElements","form","el","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","originalText","handleMethod","formContent","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","ajaxPrefilter","originalOptions","_rails_loaded","webpackContext","req","webpackContextResolve","quillInit","quillOption","hiddenTarget","toolbarTarget","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","encodingOrOffset","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","fromString","buffer","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","isNaN","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","toJSON","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","num","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","valueTarget","titleTarget","title","Modal","isOldIE","all","atob","getTarget","styleTarget","HTMLIFrameElement","contentDocument","stylesInDom","getIndexByIdentifier","modulesToDom","idCountMap","base","css","media","sourceMap","references","updater","addStyle","insertStyleElement","textStore","replaceText","applyToSingletonTag","styleSheet","cssText","cssNode","applyToTag","btoa","unescape","firstChild","singleton","singletonCounter","styleIndex","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","___CSS_LOADER_API_IMPORT___","useSourceMap","cssMapping","sourceMapping","sourceURLs","sourceRoot","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","layout_1","LayoutAdaptor","dragstart","dragend","adaptor","d3v3","d3v4","d3adaptor","d3Context","v3exp","isD3V3","D3StyleLayoutAdaptor","d3","dispatch","d3layout","behavior","d3event","subject","Link3D","actualLength","Node3D","z","Layout3D","idealLinkLength","useJaccardLinkLengths","dims","linkLength","LinkAccessor","descent","gridrouter_1","gridify","pgLayout","margin","groupMargin","cola","routerNode","gridRouterNodes","powerGraph","powerGraphGridLayout","grouppadding","sourceInd","require","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","Alert","Autosave","Dropdown","Tabs","Popover","Toggle","Slideover","radius","layout","structural","svg","settings","zoom","scaleExtent","selectAll","projectIdValue","enter","edgeLabel","icon","p1","rad","deg","sin","cos","transition","scaleBy","zoomIdentity","projectId"],"mappings":"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","file":"js/application-597ca3e0a5e91bee7a3b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 18);\n","var EventListener = function () {\n function EventListener(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n };\n\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }; // Binding observer delegate\n\n /** @hidden */\n\n\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n\n\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: false,\n configurable: true\n });\n return EventListener;\n}();\n\nexport { EventListener };\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}","import { EventListener } from \"./event_listener\";\n\nvar Dispatcher = function () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n };\n\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n };\n\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function get() {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n },\n enumerable: false,\n configurable: true\n }); // Binding observer delegate\n\n /** @hidden */\n\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n\n\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }; // Error handling\n\n\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n };\n\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName, eventOptions) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var cacheKey = this.cacheKey(eventName, eventOptions);\n var eventListener = eventListenerMap.get(cacheKey);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName, eventOptions) {\n var eventListener = new EventListener(eventTarget, eventName, eventOptions);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n };\n\n Dispatcher.prototype.cacheKey = function (eventName, eventOptions) {\n var parts = [eventName];\n Object.keys(eventOptions).sort().forEach(function (key) {\n parts.push(\"\" + (eventOptions[key] ? \"\" : \"!\") + key);\n });\n return parts.join(\":\");\n };\n\n return Dispatcher;\n}();\n\nexport { Dispatcher };","// capture nos.: 12 23 4 43 1 5 56 7 768 9 98\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nexport function parseActionDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n identifier: matches[5],\n methodName: matches[7]\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce(function (options, token) {\n var _a;\n\n return Object.assign(options, (_a = {}, _a[token.replace(/^!/, \"\")] = !/^!/.test(token), _a));\n }, {});\n}\n\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}","import { parseActionDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\n\nvar Action = function () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n };\n\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: false,\n configurable: true\n });\n return Action;\n}();\n\nexport { Action };\nvar defaultEventNames = {\n \"a\": function a(e) {\n return \"click\";\n },\n \"button\": function button(e) {\n return \"click\";\n },\n \"form\": function form(e) {\n return \"submit\";\n },\n \"input\": function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"input\";\n }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}","var Binding = function () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function get() {\n return this.action.index;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function get() {\n return this.action.eventTarget;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventOptions\", {\n get: function get() {\n return this.action.eventOptions;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: false,\n configurable: true\n });\n\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function get() {\n return this.action.eventName;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function get() {\n var method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: false,\n configurable: true\n });\n\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n } catch (error) {\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element,\n index = _a.index;\n\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return this.scope.containsElement(this.action.element);\n }\n };\n\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function get() {\n return this.action.methodName;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: false,\n configurable: true\n });\n return Binding;\n}();\n\nexport { Binding };","var ElementObserver = function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\n };\n\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n }; // Mutation record processing\n\n\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }; // Element matching\n\n\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) {\n tree = this.element;\n }\n\n return this.delegate.matchElementsInTree(tree);\n };\n\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }; // Element tracking\n\n\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n\n return ElementObserver;\n}();\n\nexport { ElementObserver };","import { ElementObserver } from \"./element_observer\";\n\nvar AttributeObserver = function () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function get() {\n return this.elementObserver.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function get() {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: false,\n configurable: true\n });\n\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function get() {\n return this.elementObserver.started;\n },\n enumerable: false,\n configurable: true\n }); // Element observer delegate\n\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n\n return AttributeObserver;\n}();\n\nexport { AttributeObserver };","var StringMapObserver = function () {\n function StringMapObserver(element, delegate) {\n var _this = this;\n\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n StringMapObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true\n });\n this.refresh();\n }\n };\n\n StringMapObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n\n StringMapObserver.prototype.refresh = function () {\n if (this.started) {\n for (var _i = 0, _a = this.knownAttributeNames; _i < _a.length; _i++) {\n var attributeName = _a[_i];\n this.refreshAttribute(attributeName);\n }\n }\n }; // Mutation record processing\n\n\n StringMapObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n\n StringMapObserver.prototype.processMutation = function (mutation) {\n var attributeName = mutation.attributeName;\n\n if (attributeName) {\n this.refreshAttribute(attributeName);\n }\n }; // State tracking\n\n\n StringMapObserver.prototype.refreshAttribute = function (attributeName) {\n var key = this.delegate.getStringMapKeyForAttribute(attributeName);\n\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n\n var value = this.element.getAttribute(attributeName);\n\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key);\n }\n\n if (value == null) {\n this.stringMap.delete(attributeName);\n this.stringMapKeyRemoved(key, attributeName);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n };\n\n StringMapObserver.prototype.stringMapKeyAdded = function (key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n };\n\n StringMapObserver.prototype.stringMapValueChanged = function (value, key) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key);\n }\n };\n\n StringMapObserver.prototype.stringMapKeyRemoved = function (key, attributeName) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName);\n }\n };\n\n Object.defineProperty(StringMapObserver.prototype, \"knownAttributeNames\", {\n get: function get() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StringMapObserver.prototype, \"currentAttributeNames\", {\n get: function get() {\n return Array.from(this.element.attributes).map(function (attribute) {\n return attribute.name;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StringMapObserver.prototype, \"recordedAttributeNames\", {\n get: function get() {\n return Array.from(this.stringMap.keys());\n },\n enumerable: false,\n configurable: true\n });\n return StringMapObserver;\n}();\n\nexport { StringMapObserver };","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}","import { add, del } from \"./set_operations\";\n\nvar Multimap = function () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n },\n enumerable: false,\n configurable: true\n });\n\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n };\n\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey).filter(function (_a) {\n var key = _a[0],\n values = _a[1];\n return values.has(value);\n }).map(function (_a) {\n var key = _a[0],\n values = _a[1];\n return key;\n });\n };\n\n return Multimap;\n}();\n\nexport { Multimap };","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\n\nvar IndexedMultimap = function (_super) {\n __extends(IndexedMultimap, _super);\n\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n\n _this.keysByValue = new Map();\n return _this;\n }\n\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function get() {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: false,\n configurable: true\n });\n\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n\n add(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n\n del(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n\n return IndexedMultimap;\n}(Multimap);\n\nexport { IndexedMultimap };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\n\nvar TokenListObserver = function () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function get() {\n return this.attributeObserver.started;\n },\n enumerable: false,\n configurable: true\n });\n\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function get() {\n return this.attributeObserver.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.attributeObserver.attributeName;\n },\n enumerable: false,\n configurable: true\n }); // Attribute observer delegate\n\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element),\n unmatchedTokens = _a[0],\n matchedTokens = _a[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenMatched(token);\n });\n };\n\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenUnmatched(token);\n });\n };\n\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_a) {\n var previousToken = _a[0],\n currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n\n return TokenListObserver;\n}();\n\nexport { TokenListObserver };\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\n\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\n\nvar ValueListObserver = function () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function get() {\n return this.tokenListObserver.started;\n },\n enumerable: false,\n configurable: true\n });\n\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function get() {\n return this.tokenListObserver.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.tokenListObserver.attributeName;\n },\n enumerable: false,\n configurable: true\n });\n\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n };\n\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n };\n\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n };\n\n return ValueListObserver;\n}();\n\nexport { ValueListObserver };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar BindingObserver = function () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function get() {\n return this.context.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function get() {\n return this.schema.actionAttribute;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function get() {\n return this.context.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: false,\n configurable: true\n });\n\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n\n this.bindings.forEach(function (binding) {\n return _this.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }; // Value observer delegate\n\n\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n\n return BindingObserver;\n}();\n\nexport { BindingObserver };","import { StringMapObserver } from \"@stimulus/mutation-observers\";\n\nvar ValueObserver = function () {\n function ValueObserver(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n this.invokeChangedCallbacksForDefaultValues();\n }\n\n ValueObserver.prototype.start = function () {\n this.stringMapObserver.start();\n };\n\n ValueObserver.prototype.stop = function () {\n this.stringMapObserver.stop();\n };\n\n Object.defineProperty(ValueObserver.prototype, \"element\", {\n get: function get() {\n return this.context.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ValueObserver.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: false,\n configurable: true\n }); // String map observer delegate\n\n ValueObserver.prototype.getStringMapKeyForAttribute = function (attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n };\n\n ValueObserver.prototype.stringMapValueChanged = function (attributeValue, name) {\n this.invokeChangedCallbackForValue(name);\n };\n\n ValueObserver.prototype.invokeChangedCallbacksForDefaultValues = function () {\n for (var _i = 0, _a = this.valueDescriptors; _i < _a.length; _i++) {\n var _b = _a[_i],\n key = _b.key,\n name_1 = _b.name,\n defaultValue = _b.defaultValue;\n\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallbackForValue(name_1);\n }\n }\n };\n\n ValueObserver.prototype.invokeChangedCallbackForValue = function (name) {\n var methodName = name + \"Changed\";\n var method = this.receiver[methodName];\n\n if (typeof method == \"function\") {\n var value = this.receiver[name];\n method.call(this.receiver, value);\n }\n };\n\n Object.defineProperty(ValueObserver.prototype, \"valueDescriptors\", {\n get: function get() {\n var valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(function (key) {\n return valueDescriptorMap[key];\n });\n },\n enumerable: false,\n configurable: true\n });\n return ValueObserver;\n}();\n\nexport { ValueObserver };","import { BindingObserver } from \"./binding_observer\";\nimport { ValueObserver } from \"./value_observer\";\n\nvar Context = function () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n\n try {\n this.controller.initialize();\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n this.valueObserver.start();\n\n try {\n this.controller.connect();\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.valueObserver.stop();\n this.bindingObserver.stop();\n };\n\n Object.defineProperty(Context.prototype, \"application\", {\n get: function get() {\n return this.module.application;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function get() {\n return this.module.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function get() {\n return this.application.dispatcher;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function get() {\n return this.element.parentElement;\n },\n enumerable: false,\n configurable: true\n }); // Error handling\n\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element;\n\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n return Context;\n}();\n\nexport { Context };","export function readInheritableStaticArrayValues(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (values, constructor) {\n getOwnStaticArrayValues(constructor, propertyName).forEach(function (name) {\n return values.add(name);\n });\n return values;\n }, new Set()));\n}\nexport function readInheritableStaticObjectPairs(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce(function (pairs, constructor) {\n pairs.push.apply(pairs, getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\n\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors.reverse();\n}\n\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n var definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n var definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(function (key) {\n return [key, definition[key]];\n }) : [];\n}","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n};\n\nimport { readInheritableStaticArrayValues } from \"./inheritable_statics\";\n/** @hidden */\n\nexport function bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\n\nfunction shadow(constructor, properties) {\n var shadowConstructor = extend(constructor);\n var shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\n\nfunction getBlessedProperties(constructor) {\n var blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce(function (blessedProperties, blessing) {\n var properties = blessing(constructor);\n\n for (var key in properties) {\n var descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n\n return blessedProperties;\n }, {});\n}\n\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce(function (shadowProperties, key) {\n var _a;\n\n var descriptor = getShadowedDescriptor(prototype, properties, key);\n\n if (descriptor) {\n Object.assign(shadowProperties, (_a = {}, _a[key] = descriptor, _a));\n }\n\n return shadowProperties;\n }, {});\n}\n\nfunction getShadowedDescriptor(prototype, properties, key) {\n var shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n var shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n\n if (!shadowedByValue) {\n var descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n\n return descriptor;\n }\n}\n\nvar getOwnKeys = function () {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return function (object) {\n return __spreadArrays(Object.getOwnPropertyNames(object), Object.getOwnPropertySymbols(object));\n };\n } else {\n return Object.getOwnPropertyNames;\n }\n}();\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function extended() {\n var _newTarget = this && this instanceof extended ? this.constructor : void 0;\n\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n\n function testReflectExtension() {\n var a = function a() {\n this.a.call(this);\n };\n\n var b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return function (_super) {\n __extends(extended, _super);\n\n function extended() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return extended;\n }(constructor);\n };\n }\n}();","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\n\nvar Module = function () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function get() {\n return this.definition.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function get() {\n return this.definition.controllerConstructor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function get() {\n return Array.from(this.connectedContexts);\n },\n enumerable: false,\n configurable: true\n });\n\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n };\n\n return Module;\n}();\n\nexport { Module };","import { bless } from \"./blessing\";\n/** @hidden */\n\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}","var ClassMap = function () {\n function ClassMap(scope) {\n this.scope = scope;\n }\n\n ClassMap.prototype.has = function (name) {\n return this.data.has(this.getDataKey(name));\n };\n\n ClassMap.prototype.get = function (name) {\n return this.data.get(this.getDataKey(name));\n };\n\n ClassMap.prototype.getAttributeName = function (name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n };\n\n ClassMap.prototype.getDataKey = function (name) {\n return name + \"-class\";\n };\n\n Object.defineProperty(ClassMap.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: false,\n configurable: true\n });\n return ClassMap;\n}();\n\nexport { ClassMap };","export function camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, function (_, char) {\n return char.toUpperCase();\n });\n}\nexport function capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nexport function dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) {\n return \"-\" + char.toLowerCase();\n });\n}","import { dasherize } from \"./string_helpers\";\n\nvar DataMap = function () {\n function DataMap(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n\n DataMap.prototype.get = function (key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n };\n\n DataMap.prototype.set = function (key, value) {\n var name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n };\n\n DataMap.prototype.has = function (key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n };\n\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n var name_1 = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name_1);\n return true;\n } else {\n return false;\n }\n };\n\n DataMap.prototype.getAttributeNameForKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n\n return DataMap;\n}();\n\nexport { DataMap };","var Guide = function () {\n function Guide(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n\n Guide.prototype.warn = function (object, key, message) {\n var warnedKeys = this.warnedKeysByObject.get(object);\n\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n };\n\n return Guide;\n}();\n\nexport { Guide };","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","var __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n};\n\nimport { attributeValueContainsToken } from \"./selectors\";\n\nvar TargetSet = function () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function get() {\n return this.scope.schema;\n },\n enumerable: false,\n configurable: true\n });\n\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n\n TargetSet.prototype.find = function () {\n var _this = this;\n\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n return targetNames.reduce(function (target, targetName) {\n return target || _this.findTarget(targetName) || _this.findLegacyTarget(targetName);\n }, undefined);\n };\n\n TargetSet.prototype.findAll = function () {\n var _this = this;\n\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n return targetNames.reduce(function (targets, targetName) {\n return __spreadArrays(targets, _this.findAllTargets(targetName), _this.findAllLegacyTargets(targetName));\n }, []);\n };\n\n TargetSet.prototype.findTarget = function (targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n };\n\n TargetSet.prototype.findAllTargets = function (targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n };\n\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var attributeName = \"data-\" + this.identifier + \"-target\";\n return attributeValueContainsToken(attributeName, targetName);\n };\n\n TargetSet.prototype.findLegacyTarget = function (targetName) {\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n };\n\n TargetSet.prototype.findAllLegacyTargets = function (targetName) {\n var _this = this;\n\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(function (element) {\n return _this.deprecate(element, targetName);\n });\n };\n\n TargetSet.prototype.getLegacySelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n\n TargetSet.prototype.deprecate = function (element, targetName) {\n if (element) {\n var identifier = this.identifier;\n var attributeName = this.schema.targetAttribute;\n this.guide.warn(element, \"target:\" + targetName, \"Please replace \" + attributeName + \"=\\\"\" + identifier + \".\" + targetName + \"\\\" with data-\" + identifier + \"-target=\\\"\" + targetName + \"\\\". \" + (\"The \" + attributeName + \" attribute is deprecated and will be removed in a future version of Stimulus.\"));\n }\n\n return element;\n };\n\n Object.defineProperty(TargetSet.prototype, \"guide\", {\n get: function get() {\n return this.scope.guide;\n },\n enumerable: false,\n configurable: true\n });\n return TargetSet;\n}();\n\nexport { TargetSet };","var __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n};\n\nimport { ClassMap } from \"./class_map\";\nimport { DataMap } from \"./data_map\";\nimport { Guide } from \"./guide\";\nimport { attributeValueContainsToken } from \"./selectors\";\nimport { TargetSet } from \"./target_set\";\n\nvar Scope = function () {\n function Scope(schema, element, identifier, logger) {\n var _this = this;\n\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n\n this.containsElement = function (element) {\n return element.closest(_this.controllerSelector) === _this.element;\n };\n\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n }\n\n Scope.prototype.findElement = function (selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n };\n\n Scope.prototype.findAllElements = function (selector) {\n return __spreadArrays(this.element.matches(selector) ? [this.element] : [], this.queryElements(selector).filter(this.containsElement));\n };\n\n Scope.prototype.queryElements = function (selector) {\n return Array.from(this.element.querySelectorAll(selector));\n };\n\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: false,\n configurable: true\n });\n return Scope;\n}();\n\nexport { Scope };","import { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar ScopeObserver = function () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: false,\n configurable: true\n }); // Value observer delegate\n\n /** @hidden */\n\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n };\n\n return ScopeObserver;\n}();\n\nexport { ScopeObserver };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { Scope } from \"./scope\";\nimport { ScopeObserver } from \"./scope_observer\";\n\nvar Router = function () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n\n Object.defineProperty(Router.prototype, \"element\", {\n get: function get() {\n return this.application.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"logger\", {\n get: function get() {\n return this.application.logger;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n };\n\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n }; // Error handler delegate\n\n /** @hidden */\n\n\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n }; // Scope observer delegate\n\n /** @hidden */\n\n\n Router.prototype.createScopeForElementAndIdentifier = function (element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n };\n /** @hidden */\n\n\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n\n\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }; // Modules\n\n\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n };\n\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n };\n\n return Router;\n}();\n\nexport { Router };","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n};\n\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\n\nvar Application = function () {\n function Application(element, schema) {\n if (element === void 0) {\n element = document.documentElement;\n }\n\n if (schema === void 0) {\n schema = defaultSchema;\n }\n\n this.logger = console;\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , domReady()];\n\n case 1:\n _a.sent();\n\n this.dispatcher.start();\n this.router.start();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Application.prototype.stop = function () {\n this.dispatcher.stop();\n this.router.stop();\n };\n\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n };\n\n Application.prototype.load = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var definitions = Array.isArray(head) ? head : __spreadArrays([head], rest);\n definitions.forEach(function (definition) {\n return _this.router.loadDefinition(definition);\n });\n };\n\n Application.prototype.unload = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var identifiers = Array.isArray(head) ? head : __spreadArrays([head], rest);\n identifiers.forEach(function (identifier) {\n return _this.router.unloadIdentifier(identifier);\n });\n };\n\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n },\n enumerable: false,\n configurable: true\n });\n\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }; // Error handling\n\n\n Application.prototype.handleError = function (error, message, detail) {\n this.logger.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n\n return Application;\n}();\n\nexport { Application };\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n } else {\n resolve();\n }\n });\n}","import { readInheritableStaticArrayValues } from \"./inheritable_statics\";\nimport { capitalize } from \"./string_helpers\";\n/** @hidden */\n\nexport function ClassPropertiesBlessing(constructor) {\n var classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce(function (properties, classDefinition) {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\n\nfunction propertiesForClassDefinition(key) {\n var _a;\n\n var name = key + \"Class\";\n return _a = {}, _a[name] = {\n get: function get() {\n var classes = this.classes;\n\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n var attribute = classes.getAttributeName(key);\n throw new Error(\"Missing attribute \\\"\" + attribute + \"\\\"\");\n }\n }\n }, _a[\"has\" + capitalize(name)] = {\n get: function get() {\n return this.classes.has(key);\n }\n }, _a;\n}","import { readInheritableStaticArrayValues } from \"./inheritable_statics\";\nimport { capitalize } from \"./string_helpers\";\n/** @hidden */\n\nexport function TargetPropertiesBlessing(constructor) {\n var targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce(function (properties, targetDefinition) {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\n\nfunction propertiesForTargetDefinition(name) {\n var _a;\n\n return _a = {}, _a[name + \"Target\"] = {\n get: function get() {\n var target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n }, _a[name + \"Targets\"] = {\n get: function get() {\n return this.targets.findAll(name);\n }\n }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function get() {\n return this.targets.has(name);\n }\n }, _a;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { readInheritableStaticObjectPairs } from \"./inheritable_statics\";\nimport { camelize, capitalize, dasherize } from \"./string_helpers\";\n/** @hidden */\n\nexport function ValuePropertiesBlessing(constructor) {\n var valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n var propertyDescriptorMap = {\n valueDescriptorMap: {\n get: function get() {\n var _this = this;\n\n return valueDefinitionPairs.reduce(function (result, valueDefinitionPair) {\n var _a;\n\n var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n\n var attributeName = _this.data.getAttributeNameForKey(valueDescriptor.key);\n\n return Object.assign(result, (_a = {}, _a[attributeName] = valueDescriptor, _a));\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce(function (properties, valueDefinitionPair) {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\n/** @hidden */\n\nexport function propertiesForValueDefinitionPair(valueDefinitionPair) {\n var _a;\n\n var definition = parseValueDefinitionPair(valueDefinitionPair);\n var type = definition.type,\n key = definition.key,\n name = definition.name;\n var read = readers[type],\n write = writers[type] || writers.default;\n return _a = {}, _a[name] = {\n get: function get() {\n var value = this.data.get(key);\n\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set: function set(value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n }, _a[\"has\" + capitalize(name)] = {\n get: function get() {\n return this.data.has(key);\n }\n }, _a;\n}\n\nfunction parseValueDefinitionPair(_a) {\n var token = _a[0],\n typeConstant = _a[1];\n var type = parseValueTypeConstant(typeConstant);\n return valueDescriptorForTokenAndType(token, type);\n}\n\nfunction parseValueTypeConstant(typeConstant) {\n switch (typeConstant) {\n case Array:\n return \"array\";\n\n case Boolean:\n return \"boolean\";\n\n case Number:\n return \"number\";\n\n case Object:\n return \"object\";\n\n case String:\n return \"string\";\n }\n\n throw new Error(\"Unknown value type constant \\\"\" + typeConstant + \"\\\"\");\n}\n\nfunction valueDescriptorForTokenAndType(token, type) {\n var key = dasherize(token) + \"-value\";\n return {\n type: type,\n key: key,\n name: camelize(key),\n\n get defaultValue() {\n return defaultValuesByType[type];\n }\n\n };\n}\n\nvar defaultValuesByType = {\n get array() {\n return [];\n },\n\n boolean: false,\n number: 0,\n\n get object() {\n return {};\n },\n\n string: \"\"\n};\nvar readers = {\n array: function array(value) {\n var array = JSON.parse(value);\n\n if (!Array.isArray(array)) {\n throw new TypeError(\"Expected array\");\n }\n\n return array;\n },\n boolean: function boolean(value) {\n return !(value == \"0\" || value == \"false\");\n },\n number: function number(value) {\n return parseFloat(value);\n },\n object: function object(value) {\n var object = JSON.parse(value);\n\n if (object === null || _typeof(object) != \"object\" || Array.isArray(object)) {\n throw new TypeError(\"Expected object\");\n }\n\n return object;\n },\n string: function string(value) {\n return value;\n }\n};\nvar writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\n\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\n\nfunction writeString(value) {\n return \"\" + value;\n}","import { ClassPropertiesBlessing } from \"./class_properties\";\nimport { TargetPropertiesBlessing } from \"./target_properties\";\nimport { ValuePropertiesBlessing } from \"./value_properties\";\n\nvar Controller = function () {\n function Controller(context) {\n this.context = context;\n }\n\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function get() {\n return this.context.application;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function get() {\n return this.scope.targets;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"classes\", {\n get: function get() {\n return this.scope.classes;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: false,\n configurable: true\n });\n\n Controller.prototype.initialize = function () {// Override in your subclass to set up initial controller state\n };\n\n Controller.prototype.connect = function () {// Override in your subclass to respond when the controller is connected to the DOM\n };\n\n Controller.prototype.disconnect = function () {// Override in your subclass to respond when the controller is disconnected from the DOM\n };\n\n Controller.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\n Controller.targets = [];\n Controller.values = {};\n return Controller;\n}();\n\nexport { Controller };","import { Controller as t } from \"stimulus\";\n\nfunction e(t, e) {\n for (var s = 0; s < e.length; s++) {\n var n = e[s];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);\n }\n}\n\nfunction s(t, s, n) {\n return s && e(t.prototype, s), n && e(t, n), t;\n}\n\nfunction n(t, e) {\n t.prototype = Object.create(e.prototype), t.prototype.constructor = t, t.__proto__ = e;\n}\n\nvar i = function (t) {\n function e() {\n return t.apply(this, arguments) || this;\n }\n\n n(e, t);\n var s = e.prototype;\n return s.initialize = function () {\n this.hide();\n }, s.connect = function () {\n var t = this;\n setTimeout(function () {\n t.show();\n }, 200);\n }, s.close = function () {\n var t = this;\n this.hide(), setTimeout(function () {\n t.element.remove();\n }, 1100);\n }, s.show = function () {\n this.element.setAttribute(\"style\", \"transition: 1s; transform:translate(0, 0);\");\n }, s.hide = function () {\n this.element.setAttribute(\"style\", \"transition: 1s; transform:translate(400px, 0);\");\n }, e;\n}(t),\n a = function (t) {\n function e() {\n return t.apply(this, arguments) || this;\n }\n\n n(e, t);\n var s = e.prototype;\n return s.connect = function () {\n this.timeout = null, this.duration = this.data.get(\"duration\") || 1e3;\n }, s.save = function () {\n var t = this;\n clearTimeout(this.timeout), this.timeout = setTimeout(function () {\n t.statusTarget.textContent = \"Saving...\", Rails.fire(t.formTarget, \"submit\");\n }, this.duration);\n }, s.success = function () {\n this.setStatus(\"Saved!\");\n }, s.error = function () {\n this.setStatus(\"Unable to save!\");\n }, s.setStatus = function (t) {\n var e = this;\n this.statusTarget.textContent = t, this.timeout = setTimeout(function () {\n e.statusTarget.textContent = \"\";\n }, 2e3);\n }, e;\n}(t);\n\na.targets = [\"form\", \"status\"];\n\nvar o = function (t) {\n function e() {\n for (var e, s = arguments.length, n = new Array(s), i = 0; i < s; i++) {\n n[i] = arguments[i];\n }\n\n return (e = t.call.apply(t, [this].concat(n)) || this)._onMenuButtonKeydown = function (t) {\n switch (t.keyCode) {\n case 13:\n case 32:\n t.preventDefault(), e.toggle();\n }\n }, e;\n }\n\n n(e, t);\n var i = e.prototype;\n return i.connect = function () {\n this.toggleClass = this.data.get(\"class\") || \"hidden\", this.visibleClass = this.data.get(\"visibleClass\") || null, this.invisibleClass = this.data.get(\"invisibleClass\") || null, this.activeClass = this.data.get(\"activeClass\") || null, this.enteringClass = this.data.get(\"enteringClass\") || null, this.leavingClass = this.data.get(\"leavingClass\") || null, this.hasButtonTarget && this.buttonTarget.addEventListener(\"keydown\", this._onMenuButtonKeydown), this.element.setAttribute(\"aria-haspopup\", \"true\");\n }, i.disconnect = function () {\n this.hasButtonTarget && this.buttonTarget.removeEventListener(\"keydown\", this._onMenuButtonKeydown);\n }, i.toggle = function () {\n this.openValue = !this.openValue;\n }, i.openValueChanged = function () {\n this.openValue ? this._show() : this._hide();\n }, i._show = function (t) {\n var e = this;\n setTimeout(function () {\n e.menuTarget.classList.remove(e.toggleClass), e.element.setAttribute(\"aria-expanded\", \"true\"), e._enteringClassList[0].forEach(function (t) {\n e.menuTarget.classList.add(t);\n }.bind(e)), e._activeClassList[0].forEach(function (t) {\n e.activeTarget.classList.add(t);\n }), e._invisibleClassList[0].forEach(function (t) {\n return e.menuTarget.classList.remove(t);\n }), e._visibleClassList[0].forEach(function (t) {\n e.menuTarget.classList.add(t);\n }), setTimeout(function () {\n e._enteringClassList[0].forEach(function (t) {\n return e.menuTarget.classList.remove(t);\n });\n }.bind(e), e.enterTimeout[0]), \"function\" == typeof t && t();\n }.bind(this));\n }, i._hide = function (t) {\n var e = this;\n setTimeout(function () {\n e.element.setAttribute(\"aria-expanded\", \"false\"), e._invisibleClassList[0].forEach(function (t) {\n return e.menuTarget.classList.add(t);\n }), e._visibleClassList[0].forEach(function (t) {\n return e.menuTarget.classList.remove(t);\n }), e._activeClassList[0].forEach(function (t) {\n return e.activeTarget.classList.remove(t);\n }), e._leavingClassList[0].forEach(function (t) {\n return e.menuTarget.classList.add(t);\n }), setTimeout(function () {\n e._leavingClassList[0].forEach(function (t) {\n return e.menuTarget.classList.remove(t);\n }), \"function\" == typeof t && t(), e.menuTarget.classList.add(e.toggleClass);\n }.bind(e), e.leaveTimeout[0]);\n }.bind(this));\n }, i.hide = function (t) {\n !1 === this.element.contains(t.target) && this.openValue && (this.openValue = !1);\n }, s(e, [{\n key: \"activeTarget\",\n get: function get() {\n return this.data.has(\"activeTarget\") ? document.querySelector(this.data.get(\"activeTarget\")) : this.element;\n }\n }, {\n key: \"_activeClassList\",\n get: function get() {\n return this.activeClass ? this.activeClass.split(\",\").map(function (t) {\n return t.split(\" \");\n }) : [[], []];\n }\n }, {\n key: \"_visibleClassList\",\n get: function get() {\n return this.visibleClass ? this.visibleClass.split(\",\").map(function (t) {\n return t.split(\" \");\n }) : [[], []];\n }\n }, {\n key: \"_invisibleClassList\",\n get: function get() {\n return this.invisibleClass ? this.invisibleClass.split(\",\").map(function (t) {\n return t.split(\" \");\n }) : [[], []];\n }\n }, {\n key: \"_enteringClassList\",\n get: function get() {\n return this.enteringClass ? this.enteringClass.split(\",\").map(function (t) {\n return t.split(\" \");\n }) : [[], []];\n }\n }, {\n key: \"_leavingClassList\",\n get: function get() {\n return this.leavingClass ? this.leavingClass.split(\",\").map(function (t) {\n return t.split(\" \");\n }) : [[], []];\n }\n }, {\n key: \"enterTimeout\",\n get: function get() {\n return (this.data.get(\"enterTimeout\") || \"0,0\").split(\",\").map(function (t) {\n return parseInt(t);\n });\n }\n }, {\n key: \"leaveTimeout\",\n get: function get() {\n return (this.data.get(\"leaveTimeout\") || \"0,0\").split(\",\").map(function (t) {\n return parseInt(t);\n });\n }\n }]), e;\n}(t);\n\no.targets = [\"menu\", \"button\"], o.values = {\n open: Boolean\n};\n\nvar r = function (t) {\n function e() {\n return t.apply(this, arguments) || this;\n }\n\n n(e, t);\n var s = e.prototype;\n return s.connect = function () {\n this.toggleClass = this.data.get(\"class\") || \"hidden\", this.backgroundId = this.data.get(\"backgroundId\") || \"modal-background\", this.backgroundHtml = this.data.get(\"backgroundHtml\") || this._backgroundHTML(), this.allowBackgroundClose = \"true\" === (this.data.get(\"allowBackgroundClose\") || \"true\"), this.preventDefaultActionOpening = \"true\" === (this.data.get(\"preventDefaultActionOpening\") || \"true\"), this.preventDefaultActionClosing = \"true\" === (this.data.get(\"preventDefaultActionClosing\") || \"true\");\n }, s.disconnect = function () {\n this.close();\n }, s.open = function (t) {\n this.preventDefaultActionOpening && t.preventDefault(), t.target.blur(), this.lockScroll(), this.containerTarget.classList.remove(this.toggleClass), this.data.get(\"disable-backdrop\") || (document.body.insertAdjacentHTML(\"beforeend\", this.backgroundHtml), this.background = document.querySelector(\"#\" + this.backgroundId));\n }, s.close = function (t) {\n t && this.preventDefaultActionClosing && t.preventDefault(), this.unlockScroll(), this.containerTarget.classList.add(this.toggleClass), this.background && this.background.remove();\n }, s.closeBackground = function (t) {\n this.allowBackgroundClose && t.target === this.containerTarget && this.close(t);\n }, s.closeWithKeyboard = function (t) {\n 27 !== t.keyCode || this.containerTarget.classList.contains(this.toggleClass) || this.close(t);\n }, s._backgroundHTML = function () {\n return '
';\n }, s.lockScroll = function () {\n var t = window.innerWidth - document.documentElement.clientWidth;\n document.body.style.paddingRight = t + \"px\", this.saveScrollPosition(), document.body.classList.add(\"fixed\", \"inset-x-0\", \"overflow-hidden\"), document.body.style.top = \"-\" + this.scrollPosition + \"px\";\n }, s.unlockScroll = function () {\n document.body.style.paddingRight = null, document.body.classList.remove(\"fixed\", \"inset-x-0\", \"overflow-hidden\"), this.restoreScrollPosition(), document.body.style.top = null;\n }, s.saveScrollPosition = function () {\n this.scrollPosition = window.pageYOffset || document.body.scrollTop;\n }, s.restoreScrollPosition = function () {\n document.documentElement.scrollTop = this.scrollPosition;\n }, e;\n}(t);\n\nr.targets = [\"container\"];\n\nvar l = function (t) {\n function e() {\n return t.apply(this, arguments) || this;\n }\n\n n(e, t);\n var i = e.prototype;\n return i.connect = function () {\n var t = this;\n this.activeTabClasses = (this.data.get(\"activeTab\") || \"active\").split(\" \"), this.inactiveTabClasses = (this.data.get(\"inactiveTab\") || \"inactive\").split(\" \"), this.anchor && (this.index = this.tabTargets.findIndex(function (e) {\n return e.id === t.anchor;\n })), this.showTab();\n }, i.change = function (t) {\n t.preventDefault(), this.index = t.currentTarget.dataset.index ? t.currentTarget.dataset.index : t.currentTarget.dataset.id ? this.tabTargets.findIndex(function (e) {\n return e.id == t.currentTarget.dataset.id;\n }) : this.tabTargets.indexOf(t.currentTarget), window.dispatchEvent(new CustomEvent(\"tsc:tab-change\"));\n }, i.showTab = function () {\n var t = this;\n this.tabTargets.forEach(function (e, s) {\n var n,\n i,\n a,\n o,\n r = t.panelTargets[s];\n s === t.index ? (r.classList.remove(\"hidden\"), (n = e.classList).remove.apply(n, t.inactiveTabClasses), (i = e.classList).add.apply(i, t.activeTabClasses), e.id && (location.hash = e.id)) : (r.classList.add(\"hidden\"), (a = e.classList).remove.apply(a, t.activeTabClasses), (o = e.classList).add.apply(o, t.inactiveTabClasses));\n });\n }, s(e, [{\n key: \"index\",\n get: function get() {\n return parseInt(this.data.get(\"index\") || 0);\n },\n set: function set(t) {\n this.data.set(\"index\", t >= 0 ? t : 0), this.showTab();\n }\n }, {\n key: \"anchor\",\n get: function get() {\n return document.URL.split(\"#\").length > 1 ? document.URL.split(\"#\")[1] : null;\n }\n }]), e;\n}(t);\n\nl.targets = [\"tab\", \"panel\"];\n\nvar u = function (t) {\n function e() {\n return t.apply(this, arguments) || this;\n }\n\n n(e, t);\n var s = e.prototype;\n return s.connect = function () {\n this.toggleClass = this.data.get(\"class\") || \"hidden\";\n }, s.toggle = function (t) {\n t.preventDefault(), this.openValue = !this.openValue;\n }, s.hide = function (t) {\n t.preventDefault(), this.openValue = !1;\n }, s.show = function (t) {\n t.preventDefault(), this.openValue = !0;\n }, s.openValueChanged = function () {\n var t = this;\n this.toggleClass && this.toggleableTargets.forEach(function (e) {\n e.classList.toggle(t.toggleClass);\n });\n }, e;\n}(t);\n\nu.targets = [\"toggleable\"], u.values = {\n open: Boolean\n};\n\nvar c = function (t) {\n function e() {\n return t.apply(this, arguments) || this;\n }\n\n n(e, t);\n var s = e.prototype;\n return s.initialize = function () {\n this.contentTarget.setAttribute(\"style\", \"transform:translate(\" + this.data.get(\"translateX\") + \", \" + this.data.get(\"translateY\") + \");\");\n }, s.mouseOver = function () {\n this.contentTarget.classList.remove(\"hidden\");\n }, s.mouseOut = function () {\n this.contentTarget.classList.add(\"hidden\");\n }, e;\n}(t);\n\nc.targets = [\"content\"];\n\nvar h = function (t) {\n function e() {\n return t.apply(this, arguments) || this;\n }\n\n n(e, t);\n var s = e.prototype;\n return s._show = function () {\n var e = this;\n this.overlayTarget.classList.remove(this.toggleClass), t.prototype._show.call(this, function () {\n e._activeClassList[1].forEach(function (t) {\n return e.overlayTarget.classList.add(t);\n }), e._invisibleClassList[1].forEach(function (t) {\n return e.overlayTarget.classList.remove(t);\n }), e._visibleClassList[1].forEach(function (t) {\n return e.overlayTarget.classList.add(t);\n }), setTimeout(function () {\n e._enteringClassList[1].forEach(function (t) {\n return e.overlayTarget.classList.remove(t);\n });\n }.bind(e), e.enterTimeout[1]);\n }.bind(this));\n }, s._hide = function () {\n var e = this;\n this._leavingClassList[1].forEach(function (t) {\n return e.overlayTarget.classList.add(t);\n }), t.prototype._hide.call(this, function () {\n setTimeout(function () {\n e._visibleClassList[1].forEach(function (t) {\n return e.overlayTarget.classList.remove(t);\n }), e._invisibleClassList[1].forEach(function (t) {\n return e.overlayTarget.classList.add(t);\n }), e._activeClassList[1].forEach(function (t) {\n return e.overlayTarget.classList.remove(t);\n }), e._leavingClassList[1].forEach(function (t) {\n return e.overlayTarget.classList.remove(t);\n }), e.overlayTarget.classList.add(e.toggleClass);\n }.bind(e), e.leaveTimeout[1]);\n }.bind(this));\n }, e;\n}(o);\n\nh.targets = [\"menu\", \"overlay\"];\n\nvar d = function (t) {\n function e() {\n return t.apply(this, arguments) || this;\n }\n\n n(e, t);\n var i = e.prototype;\n return i.connect = function () {\n this.styleProperty = this.data.get(\"style\") || \"backgroundColor\";\n }, i.update = function () {\n this.preview = this.color;\n }, i._getContrastYIQ = function (t) {\n return t = t.replace(\"#\", \"\"), (299 * parseInt(t.substr(0, 2), 16) + 587 * parseInt(t.substr(2, 2), 16) + 114 * parseInt(t.substr(4, 2), 16)) / 1e3 >= 128 ? \"#000\" : \"#fff\";\n }, s(e, [{\n key: \"preview\",\n set: function set(t) {\n this.previewTarget.style[this.styleProperty] = t;\n\n var e = this._getContrastYIQ(t);\n\n \"color\" === this.styleProperty ? this.previewTarget.style.backgroundColor = e : this.previewTarget.style.color = e;\n }\n }, {\n key: \"color\",\n get: function get() {\n return this.colorTarget.value;\n }\n }]), e;\n}(t);\n\nd.targets = [\"preview\", \"color\"];\nexport { i as Alert, a as Autosave, d as ColorPreview, o as Dropdown, r as Modal, c as Popover, h as Slideover, l as Tabs, u as Toggle };","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar powergraph = require(\"./powergraph\");\n\nvar linklengths_1 = require(\"./linklengths\");\n\nvar descent_1 = require(\"./descent\");\n\nvar rectangle_1 = require(\"./rectangle\");\n\nvar shortestpaths_1 = require(\"./shortestpaths\");\n\nvar geom_1 = require(\"./geom\");\n\nvar handledisconnected_1 = require(\"./handledisconnected\");\n\nvar EventType;\n\n(function (EventType) {\n EventType[EventType[\"start\"] = 0] = \"start\";\n EventType[EventType[\"tick\"] = 1] = \"tick\";\n EventType[EventType[\"end\"] = 2] = \"end\";\n})(EventType = exports.EventType || (exports.EventType = {}));\n\n;\n\nfunction isGroup(g) {\n return typeof g.leaves !== 'undefined' || typeof g.groups !== 'undefined';\n}\n\nvar Layout = function () {\n function Layout() {\n var _this = this;\n\n this._canvasSize = [1, 1];\n this._linkDistance = 20;\n this._defaultNodeSize = 10;\n this._linkLengthCalculator = null;\n this._linkType = null;\n this._avoidOverlaps = false;\n this._handleDisconnected = true;\n this._running = false;\n this._nodes = [];\n this._groups = [];\n this._rootGroup = null;\n this._links = [];\n this._constraints = [];\n this._distanceMatrix = null;\n this._descent = null;\n this._directedLinkConstraints = null;\n this._threshold = 0.01;\n this._visibilityGraph = null;\n this._groupCompactness = 1e-6;\n this.event = null;\n this.linkAccessor = {\n getSourceIndex: Layout.getSourceIndex,\n getTargetIndex: Layout.getTargetIndex,\n setLength: Layout.setLinkLength,\n getType: function getType(l) {\n return typeof _this._linkType === \"function\" ? _this._linkType(l) : 0;\n }\n };\n }\n\n Layout.prototype.on = function (e, listener) {\n if (!this.event) this.event = {};\n\n if (typeof e === 'string') {\n this.event[EventType[e]] = listener;\n } else {\n this.event[e] = listener;\n }\n\n return this;\n };\n\n Layout.prototype.trigger = function (e) {\n if (this.event && typeof this.event[e.type] !== 'undefined') {\n this.event[e.type](e);\n }\n };\n\n Layout.prototype.kick = function () {\n while (!this.tick()) {\n ;\n }\n };\n\n Layout.prototype.tick = function () {\n if (this._alpha < this._threshold) {\n this._running = false;\n this.trigger({\n type: EventType.end,\n alpha: this._alpha = 0,\n stress: this._lastStress\n });\n return true;\n }\n\n var n = this._nodes.length,\n m = this._links.length;\n var o, i;\n\n this._descent.locks.clear();\n\n for (i = 0; i < n; ++i) {\n o = this._nodes[i];\n\n if (o.fixed) {\n if (typeof o.px === 'undefined' || typeof o.py === 'undefined') {\n o.px = o.x;\n o.py = o.y;\n }\n\n var p = [o.px, o.py];\n\n this._descent.locks.add(i, p);\n }\n }\n\n var s1 = this._descent.rungeKutta();\n\n if (s1 === 0) {\n this._alpha = 0;\n } else if (typeof this._lastStress !== 'undefined') {\n this._alpha = s1;\n }\n\n this._lastStress = s1;\n this.updateNodePositions();\n this.trigger({\n type: EventType.tick,\n alpha: this._alpha,\n stress: this._lastStress\n });\n return false;\n };\n\n Layout.prototype.updateNodePositions = function () {\n var x = this._descent.x[0],\n y = this._descent.x[1];\n var o,\n i = this._nodes.length;\n\n while (i--) {\n o = this._nodes[i];\n o.x = x[i];\n o.y = y[i];\n }\n };\n\n Layout.prototype.nodes = function (v) {\n if (!v) {\n if (this._nodes.length === 0 && this._links.length > 0) {\n var n = 0;\n\n this._links.forEach(function (l) {\n n = Math.max(n, l.source, l.target);\n });\n\n this._nodes = new Array(++n);\n\n for (var i = 0; i < n; ++i) {\n this._nodes[i] = {};\n }\n }\n\n return this._nodes;\n }\n\n this._nodes = v;\n return this;\n };\n\n Layout.prototype.groups = function (x) {\n var _this = this;\n\n if (!x) return this._groups;\n this._groups = x;\n this._rootGroup = {};\n\n this._groups.forEach(function (g) {\n if (typeof g.padding === \"undefined\") g.padding = 1;\n\n if (typeof g.leaves !== \"undefined\") {\n g.leaves.forEach(function (v, i) {\n if (typeof v === 'number') (g.leaves[i] = _this._nodes[v]).parent = g;\n });\n }\n\n if (typeof g.groups !== \"undefined\") {\n g.groups.forEach(function (gi, i) {\n if (typeof gi === 'number') (g.groups[i] = _this._groups[gi]).parent = g;\n });\n }\n });\n\n this._rootGroup.leaves = this._nodes.filter(function (v) {\n return typeof v.parent === 'undefined';\n });\n this._rootGroup.groups = this._groups.filter(function (g) {\n return typeof g.parent === 'undefined';\n });\n return this;\n };\n\n Layout.prototype.powerGraphGroups = function (f) {\n var g = powergraph.getGroups(this._nodes, this._links, this.linkAccessor, this._rootGroup);\n this.groups(g.groups);\n f(g);\n return this;\n };\n\n Layout.prototype.avoidOverlaps = function (v) {\n if (!arguments.length) return this._avoidOverlaps;\n this._avoidOverlaps = v;\n return this;\n };\n\n Layout.prototype.handleDisconnected = function (v) {\n if (!arguments.length) return this._handleDisconnected;\n this._handleDisconnected = v;\n return this;\n };\n\n Layout.prototype.flowLayout = function (axis, minSeparation) {\n if (!arguments.length) axis = 'y';\n this._directedLinkConstraints = {\n axis: axis,\n getMinSeparation: typeof minSeparation === 'number' ? function () {\n return minSeparation;\n } : minSeparation\n };\n return this;\n };\n\n Layout.prototype.links = function (x) {\n if (!arguments.length) return this._links;\n this._links = x;\n return this;\n };\n\n Layout.prototype.constraints = function (c) {\n if (!arguments.length) return this._constraints;\n this._constraints = c;\n return this;\n };\n\n Layout.prototype.distanceMatrix = function (d) {\n if (!arguments.length) return this._distanceMatrix;\n this._distanceMatrix = d;\n return this;\n };\n\n Layout.prototype.size = function (x) {\n if (!x) return this._canvasSize;\n this._canvasSize = x;\n return this;\n };\n\n Layout.prototype.defaultNodeSize = function (x) {\n if (!x) return this._defaultNodeSize;\n this._defaultNodeSize = x;\n return this;\n };\n\n Layout.prototype.groupCompactness = function (x) {\n if (!x) return this._groupCompactness;\n this._groupCompactness = x;\n return this;\n };\n\n Layout.prototype.linkDistance = function (x) {\n if (!x) {\n return this._linkDistance;\n }\n\n this._linkDistance = typeof x === \"function\" ? x : +x;\n this._linkLengthCalculator = null;\n return this;\n };\n\n Layout.prototype.linkType = function (f) {\n this._linkType = f;\n return this;\n };\n\n Layout.prototype.convergenceThreshold = function (x) {\n if (!x) return this._threshold;\n this._threshold = typeof x === \"function\" ? x : +x;\n return this;\n };\n\n Layout.prototype.alpha = function (x) {\n if (!arguments.length) return this._alpha;else {\n x = +x;\n\n if (this._alpha) {\n if (x > 0) this._alpha = x;else this._alpha = 0;\n } else if (x > 0) {\n if (!this._running) {\n this._running = true;\n this.trigger({\n type: EventType.start,\n alpha: this._alpha = x\n });\n this.kick();\n }\n }\n\n return this;\n }\n };\n\n Layout.prototype.getLinkLength = function (link) {\n return typeof this._linkDistance === \"function\" ? +this._linkDistance(link) : this._linkDistance;\n };\n\n Layout.setLinkLength = function (link, length) {\n link.length = length;\n };\n\n Layout.prototype.getLinkType = function (link) {\n return typeof this._linkType === \"function\" ? this._linkType(link) : 0;\n };\n\n Layout.prototype.symmetricDiffLinkLengths = function (idealLength, w) {\n var _this = this;\n\n if (w === void 0) {\n w = 1;\n }\n\n this.linkDistance(function (l) {\n return idealLength * l.length;\n });\n\n this._linkLengthCalculator = function () {\n return linklengths_1.symmetricDiffLinkLengths(_this._links, _this.linkAccessor, w);\n };\n\n return this;\n };\n\n Layout.prototype.jaccardLinkLengths = function (idealLength, w) {\n var _this = this;\n\n if (w === void 0) {\n w = 1;\n }\n\n this.linkDistance(function (l) {\n return idealLength * l.length;\n });\n\n this._linkLengthCalculator = function () {\n return linklengths_1.jaccardLinkLengths(_this._links, _this.linkAccessor, w);\n };\n\n return this;\n };\n\n Layout.prototype.start = function (initialUnconstrainedIterations, initialUserConstraintIterations, initialAllConstraintsIterations, gridSnapIterations, keepRunning, centerGraph) {\n var _this = this;\n\n if (initialUnconstrainedIterations === void 0) {\n initialUnconstrainedIterations = 0;\n }\n\n if (initialUserConstraintIterations === void 0) {\n initialUserConstraintIterations = 0;\n }\n\n if (initialAllConstraintsIterations === void 0) {\n initialAllConstraintsIterations = 0;\n }\n\n if (gridSnapIterations === void 0) {\n gridSnapIterations = 0;\n }\n\n if (keepRunning === void 0) {\n keepRunning = true;\n }\n\n if (centerGraph === void 0) {\n centerGraph = true;\n }\n\n var i,\n j,\n n = this.nodes().length,\n N = n + 2 * this._groups.length,\n m = this._links.length,\n w = this._canvasSize[0],\n h = this._canvasSize[1];\n var x = new Array(N),\n y = new Array(N);\n var G = null;\n var ao = this._avoidOverlaps;\n\n this._nodes.forEach(function (v, i) {\n v.index = i;\n\n if (typeof v.x === 'undefined') {\n v.x = w / 2, v.y = h / 2;\n }\n\n x[i] = v.x, y[i] = v.y;\n });\n\n if (this._linkLengthCalculator) this._linkLengthCalculator();\n var distances;\n\n if (this._distanceMatrix) {\n distances = this._distanceMatrix;\n } else {\n distances = new shortestpaths_1.Calculator(N, this._links, Layout.getSourceIndex, Layout.getTargetIndex, function (l) {\n return _this.getLinkLength(l);\n }).DistanceMatrix();\n G = descent_1.Descent.createSquareMatrix(N, function () {\n return 2;\n });\n\n this._links.forEach(function (l) {\n if (typeof l.source == \"number\") l.source = _this._nodes[l.source];\n if (typeof l.target == \"number\") l.target = _this._nodes[l.target];\n });\n\n this._links.forEach(function (e) {\n var u = Layout.getSourceIndex(e),\n v = Layout.getTargetIndex(e);\n G[u][v] = G[v][u] = e.weight || 1;\n });\n }\n\n var D = descent_1.Descent.createSquareMatrix(N, function (i, j) {\n return distances[i][j];\n });\n\n if (this._rootGroup && typeof this._rootGroup.groups !== 'undefined') {\n var i = n;\n\n var addAttraction = function addAttraction(i, j, strength, idealDistance) {\n G[i][j] = G[j][i] = strength;\n D[i][j] = D[j][i] = idealDistance;\n };\n\n this._groups.forEach(function (g) {\n addAttraction(i, i + 1, _this._groupCompactness, 0.1);\n x[i] = 0, y[i++] = 0;\n x[i] = 0, y[i++] = 0;\n });\n } else this._rootGroup = {\n leaves: this._nodes,\n groups: []\n };\n\n var curConstraints = this._constraints || [];\n\n if (this._directedLinkConstraints) {\n this.linkAccessor.getMinSeparation = this._directedLinkConstraints.getMinSeparation;\n curConstraints = curConstraints.concat(linklengths_1.generateDirectedEdgeConstraints(n, this._links, this._directedLinkConstraints.axis, this.linkAccessor));\n }\n\n this.avoidOverlaps(false);\n this._descent = new descent_1.Descent([x, y], D);\n\n this._descent.locks.clear();\n\n for (var i = 0; i < n; ++i) {\n var o = this._nodes[i];\n\n if (o.fixed) {\n o.px = o.x;\n o.py = o.y;\n var p = [o.x, o.y];\n\n this._descent.locks.add(i, p);\n }\n }\n\n this._descent.threshold = this._threshold;\n this.initialLayout(initialUnconstrainedIterations, x, y);\n if (curConstraints.length > 0) this._descent.project = new rectangle_1.Projection(this._nodes, this._groups, this._rootGroup, curConstraints).projectFunctions();\n\n this._descent.run(initialUserConstraintIterations);\n\n this.separateOverlappingComponents(w, h, centerGraph);\n this.avoidOverlaps(ao);\n\n if (ao) {\n this._nodes.forEach(function (v, i) {\n v.x = x[i], v.y = y[i];\n });\n\n this._descent.project = new rectangle_1.Projection(this._nodes, this._groups, this._rootGroup, curConstraints, true).projectFunctions();\n\n this._nodes.forEach(function (v, i) {\n x[i] = v.x, y[i] = v.y;\n });\n }\n\n this._descent.G = G;\n\n this._descent.run(initialAllConstraintsIterations);\n\n if (gridSnapIterations) {\n this._descent.snapStrength = 1000;\n this._descent.snapGridSize = this._nodes[0].width;\n this._descent.numGridSnapNodes = n;\n this._descent.scaleSnapByMaxH = n != N;\n var G0 = descent_1.Descent.createSquareMatrix(N, function (i, j) {\n if (i >= n || j >= n) return G[i][j];\n return 0;\n });\n this._descent.G = G0;\n\n this._descent.run(gridSnapIterations);\n }\n\n this.updateNodePositions();\n this.separateOverlappingComponents(w, h, centerGraph);\n return keepRunning ? this.resume() : this;\n };\n\n Layout.prototype.initialLayout = function (iterations, x, y) {\n if (this._groups.length > 0 && iterations > 0) {\n var n = this._nodes.length;\n\n var edges = this._links.map(function (e) {\n return {\n source: e.source.index,\n target: e.target.index\n };\n });\n\n var vs = this._nodes.map(function (v) {\n return {\n index: v.index\n };\n });\n\n this._groups.forEach(function (g, i) {\n vs.push({\n index: g.index = n + i\n });\n });\n\n this._groups.forEach(function (g, i) {\n if (typeof g.leaves !== 'undefined') g.leaves.forEach(function (v) {\n return edges.push({\n source: g.index,\n target: v.index\n });\n });\n if (typeof g.groups !== 'undefined') g.groups.forEach(function (gg) {\n return edges.push({\n source: g.index,\n target: gg.index\n });\n });\n });\n\n new Layout().size(this.size()).nodes(vs).links(edges).avoidOverlaps(false).linkDistance(this.linkDistance()).symmetricDiffLinkLengths(5).convergenceThreshold(1e-4).start(iterations, 0, 0, 0, false);\n\n this._nodes.forEach(function (v) {\n x[v.index] = vs[v.index].x;\n y[v.index] = vs[v.index].y;\n });\n } else {\n this._descent.run(iterations);\n }\n };\n\n Layout.prototype.separateOverlappingComponents = function (width, height, centerGraph) {\n var _this = this;\n\n if (centerGraph === void 0) {\n centerGraph = true;\n }\n\n if (!this._distanceMatrix && this._handleDisconnected) {\n var x_1 = this._descent.x[0],\n y_1 = this._descent.x[1];\n\n this._nodes.forEach(function (v, i) {\n v.x = x_1[i], v.y = y_1[i];\n });\n\n var graphs = handledisconnected_1.separateGraphs(this._nodes, this._links);\n handledisconnected_1.applyPacking(graphs, width, height, this._defaultNodeSize, 1, centerGraph);\n\n this._nodes.forEach(function (v, i) {\n _this._descent.x[0][i] = v.x, _this._descent.x[1][i] = v.y;\n\n if (v.bounds) {\n v.bounds.setXCentre(v.x);\n v.bounds.setYCentre(v.y);\n }\n });\n }\n };\n\n Layout.prototype.resume = function () {\n return this.alpha(0.1);\n };\n\n Layout.prototype.stop = function () {\n return this.alpha(0);\n };\n\n Layout.prototype.prepareEdgeRouting = function (nodeMargin) {\n if (nodeMargin === void 0) {\n nodeMargin = 0;\n }\n\n this._visibilityGraph = new geom_1.TangentVisibilityGraph(this._nodes.map(function (v) {\n return v.bounds.inflate(-nodeMargin).vertices();\n }));\n };\n\n Layout.prototype.routeEdge = function (edge, ah, draw) {\n if (ah === void 0) {\n ah = 5;\n }\n\n var lineData = [];\n var vg2 = new geom_1.TangentVisibilityGraph(this._visibilityGraph.P, {\n V: this._visibilityGraph.V,\n E: this._visibilityGraph.E\n }),\n port1 = {\n x: edge.source.x,\n y: edge.source.y\n },\n port2 = {\n x: edge.target.x,\n y: edge.target.y\n },\n start = vg2.addPoint(port1, edge.source.index),\n end = vg2.addPoint(port2, edge.target.index);\n vg2.addEdgeIfVisible(port1, port2, edge.source.index, edge.target.index);\n\n if (typeof draw !== 'undefined') {\n draw(vg2);\n }\n\n var sourceInd = function sourceInd(e) {\n return e.source.id;\n },\n targetInd = function targetInd(e) {\n return e.target.id;\n },\n length = function length(e) {\n return e.length();\n },\n spCalc = new shortestpaths_1.Calculator(vg2.V.length, vg2.E, sourceInd, targetInd, length),\n shortestPath = spCalc.PathFromNodeToNode(start.id, end.id);\n\n if (shortestPath.length === 1 || shortestPath.length === vg2.V.length) {\n var route = rectangle_1.makeEdgeBetween(edge.source.innerBounds, edge.target.innerBounds, ah);\n lineData = [route.sourceIntersection, route.arrowStart];\n } else {\n var n = shortestPath.length - 2,\n p = vg2.V[shortestPath[n]].p,\n q = vg2.V[shortestPath[0]].p,\n lineData = [edge.source.innerBounds.rayIntersection(p.x, p.y)];\n\n for (var i = n; i >= 0; --i) {\n lineData.push(vg2.V[shortestPath[i]].p);\n }\n\n lineData.push(rectangle_1.makeEdgeTo(q, edge.target.innerBounds, ah));\n }\n\n return lineData;\n };\n\n Layout.getSourceIndex = function (e) {\n return typeof e.source === 'number' ? e.source : e.source.index;\n };\n\n Layout.getTargetIndex = function (e) {\n return typeof e.target === 'number' ? e.target : e.target.index;\n };\n\n Layout.linkId = function (e) {\n return Layout.getSourceIndex(e) + \"-\" + Layout.getTargetIndex(e);\n };\n\n Layout.dragStart = function (d) {\n if (isGroup(d)) {\n Layout.storeOffset(d, Layout.dragOrigin(d));\n } else {\n Layout.stopNode(d);\n d.fixed |= 2;\n }\n };\n\n Layout.stopNode = function (v) {\n v.px = v.x;\n v.py = v.y;\n };\n\n Layout.storeOffset = function (d, origin) {\n if (typeof d.leaves !== 'undefined') {\n d.leaves.forEach(function (v) {\n v.fixed |= 2;\n Layout.stopNode(v);\n v._dragGroupOffsetX = v.x - origin.x;\n v._dragGroupOffsetY = v.y - origin.y;\n });\n }\n\n if (typeof d.groups !== 'undefined') {\n d.groups.forEach(function (g) {\n return Layout.storeOffset(g, origin);\n });\n }\n };\n\n Layout.dragOrigin = function (d) {\n if (isGroup(d)) {\n return {\n x: d.bounds.cx(),\n y: d.bounds.cy()\n };\n } else {\n return d;\n }\n };\n\n Layout.drag = function (d, position) {\n if (isGroup(d)) {\n if (typeof d.leaves !== 'undefined') {\n d.leaves.forEach(function (v) {\n d.bounds.setXCentre(position.x);\n d.bounds.setYCentre(position.y);\n v.px = v._dragGroupOffsetX + position.x;\n v.py = v._dragGroupOffsetY + position.y;\n });\n }\n\n if (typeof d.groups !== 'undefined') {\n d.groups.forEach(function (g) {\n return Layout.drag(g, position);\n });\n }\n } else {\n d.px = position.x;\n d.py = position.y;\n }\n };\n\n Layout.dragEnd = function (d) {\n if (isGroup(d)) {\n if (typeof d.leaves !== 'undefined') {\n d.leaves.forEach(function (v) {\n Layout.dragEnd(v);\n delete v._dragGroupOffsetX;\n delete v._dragGroupOffsetY;\n });\n }\n\n if (typeof d.groups !== 'undefined') {\n d.groups.forEach(Layout.dragEnd);\n }\n } else {\n d.fixed &= ~6;\n }\n };\n\n Layout.mouseOver = function (d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n };\n\n Layout.mouseOut = function (d) {\n d.fixed &= ~4;\n };\n\n return Layout;\n}();\n\nexports.Layout = Layout;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar vpsc_1 = require(\"./vpsc\");\n\nvar rbtree_1 = require(\"./rbtree\");\n\nfunction computeGroupBounds(g) {\n g.bounds = typeof g.leaves !== \"undefined\" ? g.leaves.reduce(function (r, c) {\n return c.bounds.union(r);\n }, Rectangle.empty()) : Rectangle.empty();\n if (typeof g.groups !== \"undefined\") g.bounds = g.groups.reduce(function (r, c) {\n return computeGroupBounds(c).union(r);\n }, g.bounds);\n g.bounds = g.bounds.inflate(g.padding);\n return g.bounds;\n}\n\nexports.computeGroupBounds = computeGroupBounds;\n\nvar Rectangle = function () {\n function Rectangle(x, X, y, Y) {\n this.x = x;\n this.X = X;\n this.y = y;\n this.Y = Y;\n }\n\n Rectangle.empty = function () {\n return new Rectangle(Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY);\n };\n\n Rectangle.prototype.cx = function () {\n return (this.x + this.X) / 2;\n };\n\n Rectangle.prototype.cy = function () {\n return (this.y + this.Y) / 2;\n };\n\n Rectangle.prototype.overlapX = function (r) {\n var ux = this.cx(),\n vx = r.cx();\n if (ux <= vx && r.x < this.X) return this.X - r.x;\n if (vx <= ux && this.x < r.X) return r.X - this.x;\n return 0;\n };\n\n Rectangle.prototype.overlapY = function (r) {\n var uy = this.cy(),\n vy = r.cy();\n if (uy <= vy && r.y < this.Y) return this.Y - r.y;\n if (vy <= uy && this.y < r.Y) return r.Y - this.y;\n return 0;\n };\n\n Rectangle.prototype.setXCentre = function (cx) {\n var dx = cx - this.cx();\n this.x += dx;\n this.X += dx;\n };\n\n Rectangle.prototype.setYCentre = function (cy) {\n var dy = cy - this.cy();\n this.y += dy;\n this.Y += dy;\n };\n\n Rectangle.prototype.width = function () {\n return this.X - this.x;\n };\n\n Rectangle.prototype.height = function () {\n return this.Y - this.y;\n };\n\n Rectangle.prototype.union = function (r) {\n return new Rectangle(Math.min(this.x, r.x), Math.max(this.X, r.X), Math.min(this.y, r.y), Math.max(this.Y, r.Y));\n };\n\n Rectangle.prototype.lineIntersections = function (x1, y1, x2, y2) {\n var sides = [[this.x, this.y, this.X, this.y], [this.X, this.y, this.X, this.Y], [this.X, this.Y, this.x, this.Y], [this.x, this.Y, this.x, this.y]];\n var intersections = [];\n\n for (var i = 0; i < 4; ++i) {\n var r = Rectangle.lineIntersection(x1, y1, x2, y2, sides[i][0], sides[i][1], sides[i][2], sides[i][3]);\n if (r !== null) intersections.push({\n x: r.x,\n y: r.y\n });\n }\n\n return intersections;\n };\n\n Rectangle.prototype.rayIntersection = function (x2, y2) {\n var ints = this.lineIntersections(this.cx(), this.cy(), x2, y2);\n return ints.length > 0 ? ints[0] : null;\n };\n\n Rectangle.prototype.vertices = function () {\n return [{\n x: this.x,\n y: this.y\n }, {\n x: this.X,\n y: this.y\n }, {\n x: this.X,\n y: this.Y\n }, {\n x: this.x,\n y: this.Y\n }];\n };\n\n Rectangle.lineIntersection = function (x1, y1, x2, y2, x3, y3, x4, y4) {\n var dx12 = x2 - x1,\n dx34 = x4 - x3,\n dy12 = y2 - y1,\n dy34 = y4 - y3,\n denominator = dy34 * dx12 - dx34 * dy12;\n if (denominator == 0) return null;\n var dx31 = x1 - x3,\n dy31 = y1 - y3,\n numa = dx34 * dy31 - dy34 * dx31,\n a = numa / denominator,\n numb = dx12 * dy31 - dy12 * dx31,\n b = numb / denominator;\n\n if (a >= 0 && a <= 1 && b >= 0 && b <= 1) {\n return {\n x: x1 + a * dx12,\n y: y1 + a * dy12\n };\n }\n\n return null;\n };\n\n Rectangle.prototype.inflate = function (pad) {\n return new Rectangle(this.x - pad, this.X + pad, this.y - pad, this.Y + pad);\n };\n\n return Rectangle;\n}();\n\nexports.Rectangle = Rectangle;\n\nfunction makeEdgeBetween(source, target, ah) {\n var si = source.rayIntersection(target.cx(), target.cy()) || {\n x: source.cx(),\n y: source.cy()\n },\n ti = target.rayIntersection(source.cx(), source.cy()) || {\n x: target.cx(),\n y: target.cy()\n },\n dx = ti.x - si.x,\n dy = ti.y - si.y,\n l = Math.sqrt(dx * dx + dy * dy),\n al = l - ah;\n return {\n sourceIntersection: si,\n targetIntersection: ti,\n arrowStart: {\n x: si.x + al * dx / l,\n y: si.y + al * dy / l\n }\n };\n}\n\nexports.makeEdgeBetween = makeEdgeBetween;\n\nfunction makeEdgeTo(s, target, ah) {\n var ti = target.rayIntersection(s.x, s.y);\n if (!ti) ti = {\n x: target.cx(),\n y: target.cy()\n };\n var dx = ti.x - s.x,\n dy = ti.y - s.y,\n l = Math.sqrt(dx * dx + dy * dy);\n return {\n x: ti.x - ah * dx / l,\n y: ti.y - ah * dy / l\n };\n}\n\nexports.makeEdgeTo = makeEdgeTo;\n\nvar Node = function () {\n function Node(v, r, pos) {\n this.v = v;\n this.r = r;\n this.pos = pos;\n this.prev = makeRBTree();\n this.next = makeRBTree();\n }\n\n return Node;\n}();\n\nvar Event = function () {\n function Event(isOpen, v, pos) {\n this.isOpen = isOpen;\n this.v = v;\n this.pos = pos;\n }\n\n return Event;\n}();\n\nfunction compareEvents(a, b) {\n if (a.pos > b.pos) {\n return 1;\n }\n\n if (a.pos < b.pos) {\n return -1;\n }\n\n if (a.isOpen) {\n return -1;\n }\n\n if (b.isOpen) {\n return 1;\n }\n\n return 0;\n}\n\nfunction makeRBTree() {\n return new rbtree_1.RBTree(function (a, b) {\n return a.pos - b.pos;\n });\n}\n\nvar xRect = {\n getCentre: function getCentre(r) {\n return r.cx();\n },\n getOpen: function getOpen(r) {\n return r.y;\n },\n getClose: function getClose(r) {\n return r.Y;\n },\n getSize: function getSize(r) {\n return r.width();\n },\n makeRect: function makeRect(open, close, center, size) {\n return new Rectangle(center - size / 2, center + size / 2, open, close);\n },\n findNeighbours: findXNeighbours\n};\nvar yRect = {\n getCentre: function getCentre(r) {\n return r.cy();\n },\n getOpen: function getOpen(r) {\n return r.x;\n },\n getClose: function getClose(r) {\n return r.X;\n },\n getSize: function getSize(r) {\n return r.height();\n },\n makeRect: function makeRect(open, close, center, size) {\n return new Rectangle(open, close, center - size / 2, center + size / 2);\n },\n findNeighbours: findYNeighbours\n};\n\nfunction generateGroupConstraints(root, f, minSep, isContained) {\n if (isContained === void 0) {\n isContained = false;\n }\n\n var padding = root.padding,\n gn = typeof root.groups !== 'undefined' ? root.groups.length : 0,\n ln = typeof root.leaves !== 'undefined' ? root.leaves.length : 0,\n childConstraints = !gn ? [] : root.groups.reduce(function (ccs, g) {\n return ccs.concat(generateGroupConstraints(g, f, minSep, true));\n }, []),\n n = (isContained ? 2 : 0) + ln + gn,\n vs = new Array(n),\n rs = new Array(n),\n i = 0,\n add = function add(r, v) {\n rs[i] = r;\n vs[i++] = v;\n };\n\n if (isContained) {\n var b = root.bounds,\n c = f.getCentre(b),\n s = f.getSize(b) / 2,\n open = f.getOpen(b),\n close = f.getClose(b),\n min = c - s + padding / 2,\n max = c + s - padding / 2;\n root.minVar.desiredPosition = min;\n add(f.makeRect(open, close, min, padding), root.minVar);\n root.maxVar.desiredPosition = max;\n add(f.makeRect(open, close, max, padding), root.maxVar);\n }\n\n if (ln) root.leaves.forEach(function (l) {\n return add(l.bounds, l.variable);\n });\n if (gn) root.groups.forEach(function (g) {\n var b = g.bounds;\n add(f.makeRect(f.getOpen(b), f.getClose(b), f.getCentre(b), f.getSize(b)), g.minVar);\n });\n var cs = generateConstraints(rs, vs, f, minSep);\n\n if (gn) {\n vs.forEach(function (v) {\n v.cOut = [], v.cIn = [];\n });\n cs.forEach(function (c) {\n c.left.cOut.push(c), c.right.cIn.push(c);\n });\n root.groups.forEach(function (g) {\n var gapAdjustment = (g.padding - f.getSize(g.bounds)) / 2;\n g.minVar.cIn.forEach(function (c) {\n return c.gap += gapAdjustment;\n });\n g.minVar.cOut.forEach(function (c) {\n c.left = g.maxVar;\n c.gap += gapAdjustment;\n });\n });\n }\n\n return childConstraints.concat(cs);\n}\n\nfunction generateConstraints(rs, vars, rect, minSep) {\n var i,\n n = rs.length;\n var N = 2 * n;\n console.assert(vars.length >= n);\n var events = new Array(N);\n\n for (i = 0; i < n; ++i) {\n var r = rs[i];\n var v = new Node(vars[i], r, rect.getCentre(r));\n events[i] = new Event(true, v, rect.getOpen(r));\n events[i + n] = new Event(false, v, rect.getClose(r));\n }\n\n events.sort(compareEvents);\n var cs = new Array();\n var scanline = makeRBTree();\n\n for (i = 0; i < N; ++i) {\n var e = events[i];\n var v = e.v;\n\n if (e.isOpen) {\n scanline.insert(v);\n rect.findNeighbours(v, scanline);\n } else {\n scanline.remove(v);\n\n var makeConstraint = function makeConstraint(l, r) {\n var sep = (rect.getSize(l.r) + rect.getSize(r.r)) / 2 + minSep;\n cs.push(new vpsc_1.Constraint(l.v, r.v, sep));\n };\n\n var visitNeighbours = function visitNeighbours(forward, reverse, mkcon) {\n var u,\n it = v[forward].iterator();\n\n while ((u = it[forward]()) !== null) {\n mkcon(u, v);\n u[reverse].remove(v);\n }\n };\n\n visitNeighbours(\"prev\", \"next\", function (u, v) {\n return makeConstraint(u, v);\n });\n visitNeighbours(\"next\", \"prev\", function (u, v) {\n return makeConstraint(v, u);\n });\n }\n }\n\n console.assert(scanline.size === 0);\n return cs;\n}\n\nfunction findXNeighbours(v, scanline) {\n var f = function f(forward, reverse) {\n var it = scanline.findIter(v);\n var u;\n\n while ((u = it[forward]()) !== null) {\n var uovervX = u.r.overlapX(v.r);\n\n if (uovervX <= 0 || uovervX <= u.r.overlapY(v.r)) {\n v[forward].insert(u);\n u[reverse].insert(v);\n }\n\n if (uovervX <= 0) {\n break;\n }\n }\n };\n\n f(\"next\", \"prev\");\n f(\"prev\", \"next\");\n}\n\nfunction findYNeighbours(v, scanline) {\n var f = function f(forward, reverse) {\n var u = scanline.findIter(v)[forward]();\n\n if (u !== null && u.r.overlapX(v.r) > 0) {\n v[forward].insert(u);\n u[reverse].insert(v);\n }\n };\n\n f(\"next\", \"prev\");\n f(\"prev\", \"next\");\n}\n\nfunction generateXConstraints(rs, vars) {\n return generateConstraints(rs, vars, xRect, 1e-6);\n}\n\nexports.generateXConstraints = generateXConstraints;\n\nfunction generateYConstraints(rs, vars) {\n return generateConstraints(rs, vars, yRect, 1e-6);\n}\n\nexports.generateYConstraints = generateYConstraints;\n\nfunction generateXGroupConstraints(root) {\n return generateGroupConstraints(root, xRect, 1e-6);\n}\n\nexports.generateXGroupConstraints = generateXGroupConstraints;\n\nfunction generateYGroupConstraints(root) {\n return generateGroupConstraints(root, yRect, 1e-6);\n}\n\nexports.generateYGroupConstraints = generateYGroupConstraints;\n\nfunction removeOverlaps(rs) {\n var vs = rs.map(function (r) {\n return new vpsc_1.Variable(r.cx());\n });\n var cs = generateXConstraints(rs, vs);\n var solver = new vpsc_1.Solver(vs, cs);\n solver.solve();\n vs.forEach(function (v, i) {\n return rs[i].setXCentre(v.position());\n });\n vs = rs.map(function (r) {\n return new vpsc_1.Variable(r.cy());\n });\n cs = generateYConstraints(rs, vs);\n solver = new vpsc_1.Solver(vs, cs);\n solver.solve();\n vs.forEach(function (v, i) {\n return rs[i].setYCentre(v.position());\n });\n}\n\nexports.removeOverlaps = removeOverlaps;\n\nvar IndexedVariable = function (_super) {\n __extends(IndexedVariable, _super);\n\n function IndexedVariable(index, w) {\n var _this = _super.call(this, 0, w) || this;\n\n _this.index = index;\n return _this;\n }\n\n return IndexedVariable;\n}(vpsc_1.Variable);\n\nexports.IndexedVariable = IndexedVariable;\n\nvar Projection = function () {\n function Projection(nodes, groups, rootGroup, constraints, avoidOverlaps) {\n var _this = this;\n\n if (rootGroup === void 0) {\n rootGroup = null;\n }\n\n if (constraints === void 0) {\n constraints = null;\n }\n\n if (avoidOverlaps === void 0) {\n avoidOverlaps = false;\n }\n\n this.nodes = nodes;\n this.groups = groups;\n this.rootGroup = rootGroup;\n this.avoidOverlaps = avoidOverlaps;\n this.variables = nodes.map(function (v, i) {\n return v.variable = new IndexedVariable(i, 1);\n });\n if (constraints) this.createConstraints(constraints);\n\n if (avoidOverlaps && rootGroup && typeof rootGroup.groups !== 'undefined') {\n nodes.forEach(function (v) {\n if (!v.width || !v.height) {\n v.bounds = new Rectangle(v.x, v.x, v.y, v.y);\n return;\n }\n\n var w2 = v.width / 2,\n h2 = v.height / 2;\n v.bounds = new Rectangle(v.x - w2, v.x + w2, v.y - h2, v.y + h2);\n });\n computeGroupBounds(rootGroup);\n var i = nodes.length;\n groups.forEach(function (g) {\n _this.variables[i] = g.minVar = new IndexedVariable(i++, typeof g.stiffness !== \"undefined\" ? g.stiffness : 0.01);\n _this.variables[i] = g.maxVar = new IndexedVariable(i++, typeof g.stiffness !== \"undefined\" ? g.stiffness : 0.01);\n });\n }\n }\n\n Projection.prototype.createSeparation = function (c) {\n return new vpsc_1.Constraint(this.nodes[c.left].variable, this.nodes[c.right].variable, c.gap, typeof c.equality !== \"undefined\" ? c.equality : false);\n };\n\n Projection.prototype.makeFeasible = function (c) {\n var _this = this;\n\n if (!this.avoidOverlaps) return;\n var axis = 'x',\n dim = 'width';\n if (c.axis === 'x') axis = 'y', dim = 'height';\n var vs = c.offsets.map(function (o) {\n return _this.nodes[o.node];\n }).sort(function (a, b) {\n return a[axis] - b[axis];\n });\n var p = null;\n vs.forEach(function (v) {\n if (p) {\n var nextPos = p[axis] + p[dim];\n\n if (nextPos > v[axis]) {\n v[axis] = nextPos;\n }\n }\n\n p = v;\n });\n };\n\n Projection.prototype.createAlignment = function (c) {\n var _this = this;\n\n var u = this.nodes[c.offsets[0].node].variable;\n this.makeFeasible(c);\n var cs = c.axis === 'x' ? this.xConstraints : this.yConstraints;\n c.offsets.slice(1).forEach(function (o) {\n var v = _this.nodes[o.node].variable;\n cs.push(new vpsc_1.Constraint(u, v, o.offset, true));\n });\n };\n\n Projection.prototype.createConstraints = function (constraints) {\n var _this = this;\n\n var isSep = function isSep(c) {\n return typeof c.type === 'undefined' || c.type === 'separation';\n };\n\n this.xConstraints = constraints.filter(function (c) {\n return c.axis === \"x\" && isSep(c);\n }).map(function (c) {\n return _this.createSeparation(c);\n });\n this.yConstraints = constraints.filter(function (c) {\n return c.axis === \"y\" && isSep(c);\n }).map(function (c) {\n return _this.createSeparation(c);\n });\n constraints.filter(function (c) {\n return c.type === 'alignment';\n }).forEach(function (c) {\n return _this.createAlignment(c);\n });\n };\n\n Projection.prototype.setupVariablesAndBounds = function (x0, y0, desired, getDesired) {\n this.nodes.forEach(function (v, i) {\n if (v.fixed) {\n v.variable.weight = v.fixedWeight ? v.fixedWeight : 1000;\n desired[i] = getDesired(v);\n } else {\n v.variable.weight = 1;\n }\n\n var w = (v.width || 0) / 2,\n h = (v.height || 0) / 2;\n var ix = x0[i],\n iy = y0[i];\n v.bounds = new Rectangle(ix - w, ix + w, iy - h, iy + h);\n });\n };\n\n Projection.prototype.xProject = function (x0, y0, x) {\n if (!this.rootGroup && !(this.avoidOverlaps || this.xConstraints)) return;\n this.project(x0, y0, x0, x, function (v) {\n return v.px;\n }, this.xConstraints, generateXGroupConstraints, function (v) {\n return v.bounds.setXCentre(x[v.variable.index] = v.variable.position());\n }, function (g) {\n var xmin = x[g.minVar.index] = g.minVar.position();\n var xmax = x[g.maxVar.index] = g.maxVar.position();\n var p2 = g.padding / 2;\n g.bounds.x = xmin - p2;\n g.bounds.X = xmax + p2;\n });\n };\n\n Projection.prototype.yProject = function (x0, y0, y) {\n if (!this.rootGroup && !this.yConstraints) return;\n this.project(x0, y0, y0, y, function (v) {\n return v.py;\n }, this.yConstraints, generateYGroupConstraints, function (v) {\n return v.bounds.setYCentre(y[v.variable.index] = v.variable.position());\n }, function (g) {\n var ymin = y[g.minVar.index] = g.minVar.position();\n var ymax = y[g.maxVar.index] = g.maxVar.position();\n var p2 = g.padding / 2;\n g.bounds.y = ymin - p2;\n ;\n g.bounds.Y = ymax + p2;\n });\n };\n\n Projection.prototype.projectFunctions = function () {\n var _this = this;\n\n return [function (x0, y0, x) {\n return _this.xProject(x0, y0, x);\n }, function (x0, y0, y) {\n return _this.yProject(x0, y0, y);\n }];\n };\n\n Projection.prototype.project = function (x0, y0, start, desired, getDesired, cs, generateConstraints, updateNodeBounds, updateGroupBounds) {\n this.setupVariablesAndBounds(x0, y0, desired, getDesired);\n\n if (this.rootGroup && this.avoidOverlaps) {\n computeGroupBounds(this.rootGroup);\n cs = cs.concat(generateConstraints(this.rootGroup));\n }\n\n this.solve(this.variables, cs, start, desired);\n this.nodes.forEach(updateNodeBounds);\n\n if (this.rootGroup && this.avoidOverlaps) {\n this.groups.forEach(updateGroupBounds);\n computeGroupBounds(this.rootGroup);\n }\n };\n\n Projection.prototype.solve = function (vs, cs, starting, desired) {\n var solver = new vpsc_1.Solver(vs, cs);\n solver.setStartingPositions(starting);\n solver.setDesiredPositions(desired);\n solver.solve();\n };\n\n return Projection;\n}();\n\nexports.Projection = Projection;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar pqueue_1 = require(\"./pqueue\");\n\nvar Neighbour = function () {\n function Neighbour(id, distance) {\n this.id = id;\n this.distance = distance;\n }\n\n return Neighbour;\n}();\n\nvar Node = function () {\n function Node(id) {\n this.id = id;\n this.neighbours = [];\n }\n\n return Node;\n}();\n\nvar QueueEntry = function () {\n function QueueEntry(node, prev, d) {\n this.node = node;\n this.prev = prev;\n this.d = d;\n }\n\n return QueueEntry;\n}();\n\nvar Calculator = function () {\n function Calculator(n, es, getSourceIndex, getTargetIndex, getLength) {\n this.n = n;\n this.es = es;\n this.neighbours = new Array(this.n);\n var i = this.n;\n\n while (i--) {\n this.neighbours[i] = new Node(i);\n }\n\n i = this.es.length;\n\n while (i--) {\n var e = this.es[i];\n var u = getSourceIndex(e),\n v = getTargetIndex(e);\n var d = getLength(e);\n this.neighbours[u].neighbours.push(new Neighbour(v, d));\n this.neighbours[v].neighbours.push(new Neighbour(u, d));\n }\n }\n\n Calculator.prototype.DistanceMatrix = function () {\n var D = new Array(this.n);\n\n for (var i = 0; i < this.n; ++i) {\n D[i] = this.dijkstraNeighbours(i);\n }\n\n return D;\n };\n\n Calculator.prototype.DistancesFromNode = function (start) {\n return this.dijkstraNeighbours(start);\n };\n\n Calculator.prototype.PathFromNodeToNode = function (start, end) {\n return this.dijkstraNeighbours(start, end);\n };\n\n Calculator.prototype.PathFromNodeToNodeWithPrevCost = function (start, end, prevCost) {\n var q = new pqueue_1.PriorityQueue(function (a, b) {\n return a.d <= b.d;\n }),\n u = this.neighbours[start],\n qu = new QueueEntry(u, null, 0),\n visitedFrom = {};\n q.push(qu);\n\n while (!q.empty()) {\n qu = q.pop();\n u = qu.node;\n\n if (u.id === end) {\n break;\n }\n\n var i = u.neighbours.length;\n\n while (i--) {\n var neighbour = u.neighbours[i],\n v = this.neighbours[neighbour.id];\n if (qu.prev && v.id === qu.prev.node.id) continue;\n var viduid = v.id + ',' + u.id;\n if (viduid in visitedFrom && visitedFrom[viduid] <= qu.d) continue;\n var cc = qu.prev ? prevCost(qu.prev.node.id, u.id, v.id) : 0,\n t = qu.d + neighbour.distance + cc;\n visitedFrom[viduid] = t;\n q.push(new QueueEntry(v, qu, t));\n }\n }\n\n var path = [];\n\n while (qu.prev) {\n qu = qu.prev;\n path.push(qu.node.id);\n }\n\n return path;\n };\n\n Calculator.prototype.dijkstraNeighbours = function (start, dest) {\n if (dest === void 0) {\n dest = -1;\n }\n\n var q = new pqueue_1.PriorityQueue(function (a, b) {\n return a.d <= b.d;\n }),\n i = this.neighbours.length,\n d = new Array(i);\n\n while (i--) {\n var node = this.neighbours[i];\n node.d = i === start ? 0 : Number.POSITIVE_INFINITY;\n node.q = q.push(node);\n }\n\n while (!q.empty()) {\n var u = q.pop();\n d[u.id] = u.d;\n\n if (u.id === dest) {\n var path = [];\n var v = u;\n\n while (typeof v.prev !== 'undefined') {\n path.push(v.prev.id);\n v = v.prev;\n }\n\n return path;\n }\n\n i = u.neighbours.length;\n\n while (i--) {\n var neighbour = u.neighbours[i];\n var v = this.neighbours[neighbour.id];\n var t = u.d + neighbour.distance;\n\n if (u.d !== Number.MAX_VALUE && v.d > t) {\n v.d = t;\n v.prev = u;\n q.reduceKey(v.q, v, function (e, q) {\n return e.q = q;\n });\n }\n }\n }\n\n return d;\n };\n\n return Calculator;\n}();\n\nexports.Calculator = Calculator;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction unionCount(a, b) {\n var u = {};\n\n for (var i in a) {\n u[i] = {};\n }\n\n for (var i in b) {\n u[i] = {};\n }\n\n return Object.keys(u).length;\n}\n\nfunction intersectionCount(a, b) {\n var n = 0;\n\n for (var i in a) {\n if (typeof b[i] !== 'undefined') ++n;\n }\n\n return n;\n}\n\nfunction getNeighbours(links, la) {\n var neighbours = {};\n\n var addNeighbours = function addNeighbours(u, v) {\n if (typeof neighbours[u] === 'undefined') neighbours[u] = {};\n neighbours[u][v] = {};\n };\n\n links.forEach(function (e) {\n var u = la.getSourceIndex(e),\n v = la.getTargetIndex(e);\n addNeighbours(u, v);\n addNeighbours(v, u);\n });\n return neighbours;\n}\n\nfunction computeLinkLengths(links, w, f, la) {\n var neighbours = getNeighbours(links, la);\n links.forEach(function (l) {\n var a = neighbours[la.getSourceIndex(l)];\n var b = neighbours[la.getTargetIndex(l)];\n la.setLength(l, 1 + w * f(a, b));\n });\n}\n\nfunction symmetricDiffLinkLengths(links, la, w) {\n if (w === void 0) {\n w = 1;\n }\n\n computeLinkLengths(links, w, function (a, b) {\n return Math.sqrt(unionCount(a, b) - intersectionCount(a, b));\n }, la);\n}\n\nexports.symmetricDiffLinkLengths = symmetricDiffLinkLengths;\n\nfunction jaccardLinkLengths(links, la, w) {\n if (w === void 0) {\n w = 1;\n }\n\n computeLinkLengths(links, w, function (a, b) {\n return Math.min(Object.keys(a).length, Object.keys(b).length) < 1.1 ? 0 : intersectionCount(a, b) / unionCount(a, b);\n }, la);\n}\n\nexports.jaccardLinkLengths = jaccardLinkLengths;\n\nfunction generateDirectedEdgeConstraints(n, links, axis, la) {\n var components = stronglyConnectedComponents(n, links, la);\n var nodes = {};\n components.forEach(function (c, i) {\n return c.forEach(function (v) {\n return nodes[v] = i;\n });\n });\n var constraints = [];\n links.forEach(function (l) {\n var ui = la.getSourceIndex(l),\n vi = la.getTargetIndex(l),\n u = nodes[ui],\n v = nodes[vi];\n\n if (u !== v) {\n constraints.push({\n axis: axis,\n left: ui,\n right: vi,\n gap: la.getMinSeparation(l)\n });\n }\n });\n return constraints;\n}\n\nexports.generateDirectedEdgeConstraints = generateDirectedEdgeConstraints;\n\nfunction stronglyConnectedComponents(numVertices, edges, la) {\n var nodes = [];\n var index = 0;\n var stack = [];\n var components = [];\n\n function strongConnect(v) {\n v.index = v.lowlink = index++;\n stack.push(v);\n v.onStack = true;\n\n for (var _i = 0, _a = v.out; _i < _a.length; _i++) {\n var w = _a[_i];\n\n if (typeof w.index === 'undefined') {\n strongConnect(w);\n v.lowlink = Math.min(v.lowlink, w.lowlink);\n } else if (w.onStack) {\n v.lowlink = Math.min(v.lowlink, w.index);\n }\n }\n\n if (v.lowlink === v.index) {\n var component = [];\n\n while (stack.length) {\n w = stack.pop();\n w.onStack = false;\n component.push(w);\n if (w === v) break;\n }\n\n components.push(component.map(function (v) {\n return v.id;\n }));\n }\n }\n\n for (var i = 0; i < numVertices; i++) {\n nodes.push({\n id: i,\n out: []\n });\n }\n\n for (var _i = 0, edges_1 = edges; _i < edges_1.length; _i++) {\n var e = edges_1[_i];\n var v_1 = nodes[la.getSourceIndex(e)],\n w = nodes[la.getTargetIndex(e)];\n v_1.out.push(w);\n }\n\n for (var _a = 0, nodes_1 = nodes; _a < nodes_1.length; _a++) {\n var v = nodes_1[_a];\n if (typeof v.index === 'undefined') strongConnect(v);\n }\n\n return components;\n}\n\nexports.stronglyConnectedComponents = stronglyConnectedComponents;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar Locks = function () {\n function Locks() {\n this.locks = {};\n }\n\n Locks.prototype.add = function (id, x) {\n this.locks[id] = x;\n };\n\n Locks.prototype.clear = function () {\n this.locks = {};\n };\n\n Locks.prototype.isEmpty = function () {\n for (var l in this.locks) {\n return false;\n }\n\n return true;\n };\n\n Locks.prototype.apply = function (f) {\n for (var l in this.locks) {\n f(Number(l), this.locks[l]);\n }\n };\n\n return Locks;\n}();\n\nexports.Locks = Locks;\n\nvar Descent = function () {\n function Descent(x, D, G) {\n if (G === void 0) {\n G = null;\n }\n\n this.D = D;\n this.G = G;\n this.threshold = 0.0001;\n this.numGridSnapNodes = 0;\n this.snapGridSize = 100;\n this.snapStrength = 1000;\n this.scaleSnapByMaxH = false;\n this.random = new PseudoRandom();\n this.project = null;\n this.x = x;\n this.k = x.length;\n var n = this.n = x[0].length;\n this.H = new Array(this.k);\n this.g = new Array(this.k);\n this.Hd = new Array(this.k);\n this.a = new Array(this.k);\n this.b = new Array(this.k);\n this.c = new Array(this.k);\n this.d = new Array(this.k);\n this.e = new Array(this.k);\n this.ia = new Array(this.k);\n this.ib = new Array(this.k);\n this.xtmp = new Array(this.k);\n this.locks = new Locks();\n this.minD = Number.MAX_VALUE;\n var i = n,\n j;\n\n while (i--) {\n j = n;\n\n while (--j > i) {\n var d = D[i][j];\n\n if (d > 0 && d < this.minD) {\n this.minD = d;\n }\n }\n }\n\n if (this.minD === Number.MAX_VALUE) this.minD = 1;\n i = this.k;\n\n while (i--) {\n this.g[i] = new Array(n);\n this.H[i] = new Array(n);\n j = n;\n\n while (j--) {\n this.H[i][j] = new Array(n);\n }\n\n this.Hd[i] = new Array(n);\n this.a[i] = new Array(n);\n this.b[i] = new Array(n);\n this.c[i] = new Array(n);\n this.d[i] = new Array(n);\n this.e[i] = new Array(n);\n this.ia[i] = new Array(n);\n this.ib[i] = new Array(n);\n this.xtmp[i] = new Array(n);\n }\n }\n\n Descent.createSquareMatrix = function (n, f) {\n var M = new Array(n);\n\n for (var i = 0; i < n; ++i) {\n M[i] = new Array(n);\n\n for (var j = 0; j < n; ++j) {\n M[i][j] = f(i, j);\n }\n }\n\n return M;\n };\n\n Descent.prototype.offsetDir = function () {\n var _this = this;\n\n var u = new Array(this.k);\n var l = 0;\n\n for (var i = 0; i < this.k; ++i) {\n var x = u[i] = this.random.getNextBetween(0.01, 1) - 0.5;\n l += x * x;\n }\n\n l = Math.sqrt(l);\n return u.map(function (x) {\n return x *= _this.minD / l;\n });\n };\n\n Descent.prototype.computeDerivatives = function (x) {\n var _this = this;\n\n var n = this.n;\n if (n < 1) return;\n var i;\n var d = new Array(this.k);\n var d2 = new Array(this.k);\n var Huu = new Array(this.k);\n var maxH = 0;\n\n for (var u = 0; u < n; ++u) {\n for (i = 0; i < this.k; ++i) {\n Huu[i] = this.g[i][u] = 0;\n }\n\n for (var v = 0; v < n; ++v) {\n if (u === v) continue;\n var maxDisplaces = n;\n\n while (maxDisplaces--) {\n var sd2 = 0;\n\n for (i = 0; i < this.k; ++i) {\n var dx = d[i] = x[i][u] - x[i][v];\n sd2 += d2[i] = dx * dx;\n }\n\n if (sd2 > 1e-9) break;\n var rd = this.offsetDir();\n\n for (i = 0; i < this.k; ++i) {\n x[i][v] += rd[i];\n }\n }\n\n var l = Math.sqrt(sd2);\n var D = this.D[u][v];\n var weight = this.G != null ? this.G[u][v] : 1;\n\n if (weight > 1 && l > D || !isFinite(D)) {\n for (i = 0; i < this.k; ++i) {\n this.H[i][u][v] = 0;\n }\n\n continue;\n }\n\n if (weight > 1) {\n weight = 1;\n }\n\n var D2 = D * D;\n var gs = 2 * weight * (l - D) / (D2 * l);\n var l3 = l * l * l;\n var hs = 2 * -weight / (D2 * l3);\n if (!isFinite(gs)) console.log(gs);\n\n for (i = 0; i < this.k; ++i) {\n this.g[i][u] += d[i] * gs;\n Huu[i] -= this.H[i][u][v] = hs * (l3 + D * (d2[i] - sd2) + l * sd2);\n }\n }\n\n for (i = 0; i < this.k; ++i) {\n maxH = Math.max(maxH, this.H[i][u][u] = Huu[i]);\n }\n }\n\n var r = this.snapGridSize / 2;\n var g = this.snapGridSize;\n var w = this.snapStrength;\n var k = w / (r * r);\n var numNodes = this.numGridSnapNodes;\n\n for (var u = 0; u < numNodes; ++u) {\n for (i = 0; i < this.k; ++i) {\n var xiu = this.x[i][u];\n var m = xiu / g;\n var f = m % 1;\n var q = m - f;\n var a = Math.abs(f);\n var dx = a <= 0.5 ? xiu - q * g : xiu > 0 ? xiu - (q + 1) * g : xiu - (q - 1) * g;\n\n if (-r < dx && dx <= r) {\n if (this.scaleSnapByMaxH) {\n this.g[i][u] += maxH * k * dx;\n this.H[i][u][u] += maxH * k;\n } else {\n this.g[i][u] += k * dx;\n this.H[i][u][u] += k;\n }\n }\n }\n }\n\n if (!this.locks.isEmpty()) {\n this.locks.apply(function (u, p) {\n for (i = 0; i < _this.k; ++i) {\n _this.H[i][u][u] += maxH;\n _this.g[i][u] -= maxH * (p[i] - x[i][u]);\n }\n });\n }\n };\n\n Descent.dotProd = function (a, b) {\n var x = 0,\n i = a.length;\n\n while (i--) {\n x += a[i] * b[i];\n }\n\n return x;\n };\n\n Descent.rightMultiply = function (m, v, r) {\n var i = m.length;\n\n while (i--) {\n r[i] = Descent.dotProd(m[i], v);\n }\n };\n\n Descent.prototype.computeStepSize = function (d) {\n var numerator = 0,\n denominator = 0;\n\n for (var i = 0; i < this.k; ++i) {\n numerator += Descent.dotProd(this.g[i], d[i]);\n Descent.rightMultiply(this.H[i], d[i], this.Hd[i]);\n denominator += Descent.dotProd(d[i], this.Hd[i]);\n }\n\n if (denominator === 0 || !isFinite(denominator)) return 0;\n return 1 * numerator / denominator;\n };\n\n Descent.prototype.reduceStress = function () {\n this.computeDerivatives(this.x);\n var alpha = this.computeStepSize(this.g);\n\n for (var i = 0; i < this.k; ++i) {\n this.takeDescentStep(this.x[i], this.g[i], alpha);\n }\n\n return this.computeStress();\n };\n\n Descent.copy = function (a, b) {\n var m = a.length,\n n = b[0].length;\n\n for (var i = 0; i < m; ++i) {\n for (var j = 0; j < n; ++j) {\n b[i][j] = a[i][j];\n }\n }\n };\n\n Descent.prototype.stepAndProject = function (x0, r, d, stepSize) {\n Descent.copy(x0, r);\n this.takeDescentStep(r[0], d[0], stepSize);\n if (this.project) this.project[0](x0[0], x0[1], r[0]);\n this.takeDescentStep(r[1], d[1], stepSize);\n if (this.project) this.project[1](r[0], x0[1], r[1]);\n\n for (var i = 2; i < this.k; i++) {\n this.takeDescentStep(r[i], d[i], stepSize);\n }\n };\n\n Descent.mApply = function (m, n, f) {\n var i = m;\n\n while (i-- > 0) {\n var j = n;\n\n while (j-- > 0) {\n f(i, j);\n }\n }\n };\n\n Descent.prototype.matrixApply = function (f) {\n Descent.mApply(this.k, this.n, f);\n };\n\n Descent.prototype.computeNextPosition = function (x0, r) {\n var _this = this;\n\n this.computeDerivatives(x0);\n var alpha = this.computeStepSize(this.g);\n this.stepAndProject(x0, r, this.g, alpha);\n\n if (this.project) {\n this.matrixApply(function (i, j) {\n return _this.e[i][j] = x0[i][j] - r[i][j];\n });\n var beta = this.computeStepSize(this.e);\n beta = Math.max(0.2, Math.min(beta, 1));\n this.stepAndProject(x0, r, this.e, beta);\n }\n };\n\n Descent.prototype.run = function (iterations) {\n var stress = Number.MAX_VALUE,\n converged = false;\n\n while (!converged && iterations-- > 0) {\n var s = this.rungeKutta();\n converged = Math.abs(stress / s - 1) < this.threshold;\n stress = s;\n }\n\n return stress;\n };\n\n Descent.prototype.rungeKutta = function () {\n var _this = this;\n\n this.computeNextPosition(this.x, this.a);\n Descent.mid(this.x, this.a, this.ia);\n this.computeNextPosition(this.ia, this.b);\n Descent.mid(this.x, this.b, this.ib);\n this.computeNextPosition(this.ib, this.c);\n this.computeNextPosition(this.c, this.d);\n var disp = 0;\n this.matrixApply(function (i, j) {\n var x = (_this.a[i][j] + 2.0 * _this.b[i][j] + 2.0 * _this.c[i][j] + _this.d[i][j]) / 6.0,\n d = _this.x[i][j] - x;\n disp += d * d;\n _this.x[i][j] = x;\n });\n return disp;\n };\n\n Descent.mid = function (a, b, m) {\n Descent.mApply(a.length, a[0].length, function (i, j) {\n return m[i][j] = a[i][j] + (b[i][j] - a[i][j]) / 2.0;\n });\n };\n\n Descent.prototype.takeDescentStep = function (x, d, stepSize) {\n for (var i = 0; i < this.n; ++i) {\n x[i] = x[i] - stepSize * d[i];\n }\n };\n\n Descent.prototype.computeStress = function () {\n var stress = 0;\n\n for (var u = 0, nMinus1 = this.n - 1; u < nMinus1; ++u) {\n for (var v = u + 1, n = this.n; v < n; ++v) {\n var l = 0;\n\n for (var i = 0; i < this.k; ++i) {\n var dx = this.x[i][u] - this.x[i][v];\n l += dx * dx;\n }\n\n l = Math.sqrt(l);\n var d = this.D[u][v];\n if (!isFinite(d)) continue;\n var rl = d - l;\n var d2 = d * d;\n stress += rl * rl / d2;\n }\n }\n\n return stress;\n };\n\n Descent.zeroDistance = 1e-10;\n return Descent;\n}();\n\nexports.Descent = Descent;\n\nvar PseudoRandom = function () {\n function PseudoRandom(seed) {\n if (seed === void 0) {\n seed = 1;\n }\n\n this.seed = seed;\n this.a = 214013;\n this.c = 2531011;\n this.m = 2147483648;\n this.range = 32767;\n }\n\n PseudoRandom.prototype.getNext = function () {\n this.seed = (this.seed * this.a + this.c) % this.m;\n return (this.seed >> 16) / this.range;\n };\n\n PseudoRandom.prototype.getNextBetween = function (min, max) {\n return min + this.getNext() * (max - min);\n };\n\n return PseudoRandom;\n}();\n\nexports.PseudoRandom = PseudoRandom;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar PositionStats = function () {\n function PositionStats(scale) {\n this.scale = scale;\n this.AB = 0;\n this.AD = 0;\n this.A2 = 0;\n }\n\n PositionStats.prototype.addVariable = function (v) {\n var ai = this.scale / v.scale;\n var bi = v.offset / v.scale;\n var wi = v.weight;\n this.AB += wi * ai * bi;\n this.AD += wi * ai * v.desiredPosition;\n this.A2 += wi * ai * ai;\n };\n\n PositionStats.prototype.getPosn = function () {\n return (this.AD - this.AB) / this.A2;\n };\n\n return PositionStats;\n}();\n\nexports.PositionStats = PositionStats;\n\nvar Constraint = function () {\n function Constraint(left, right, gap, equality) {\n if (equality === void 0) {\n equality = false;\n }\n\n this.left = left;\n this.right = right;\n this.gap = gap;\n this.equality = equality;\n this.active = false;\n this.unsatisfiable = false;\n this.left = left;\n this.right = right;\n this.gap = gap;\n this.equality = equality;\n }\n\n Constraint.prototype.slack = function () {\n return this.unsatisfiable ? Number.MAX_VALUE : this.right.scale * this.right.position() - this.gap - this.left.scale * this.left.position();\n };\n\n return Constraint;\n}();\n\nexports.Constraint = Constraint;\n\nvar Variable = function () {\n function Variable(desiredPosition, weight, scale) {\n if (weight === void 0) {\n weight = 1;\n }\n\n if (scale === void 0) {\n scale = 1;\n }\n\n this.desiredPosition = desiredPosition;\n this.weight = weight;\n this.scale = scale;\n this.offset = 0;\n }\n\n Variable.prototype.dfdv = function () {\n return 2.0 * this.weight * (this.position() - this.desiredPosition);\n };\n\n Variable.prototype.position = function () {\n return (this.block.ps.scale * this.block.posn + this.offset) / this.scale;\n };\n\n Variable.prototype.visitNeighbours = function (prev, f) {\n var ff = function ff(c, next) {\n return c.active && prev !== next && f(c, next);\n };\n\n this.cOut.forEach(function (c) {\n return ff(c, c.right);\n });\n this.cIn.forEach(function (c) {\n return ff(c, c.left);\n });\n };\n\n return Variable;\n}();\n\nexports.Variable = Variable;\n\nvar Block = function () {\n function Block(v) {\n this.vars = [];\n v.offset = 0;\n this.ps = new PositionStats(v.scale);\n this.addVariable(v);\n }\n\n Block.prototype.addVariable = function (v) {\n v.block = this;\n this.vars.push(v);\n this.ps.addVariable(v);\n this.posn = this.ps.getPosn();\n };\n\n Block.prototype.updateWeightedPosition = function () {\n this.ps.AB = this.ps.AD = this.ps.A2 = 0;\n\n for (var i = 0, n = this.vars.length; i < n; ++i) {\n this.ps.addVariable(this.vars[i]);\n }\n\n this.posn = this.ps.getPosn();\n };\n\n Block.prototype.compute_lm = function (v, u, postAction) {\n var _this = this;\n\n var dfdv = v.dfdv();\n v.visitNeighbours(u, function (c, next) {\n var _dfdv = _this.compute_lm(next, v, postAction);\n\n if (next === c.right) {\n dfdv += _dfdv * c.left.scale;\n c.lm = _dfdv;\n } else {\n dfdv += _dfdv * c.right.scale;\n c.lm = -_dfdv;\n }\n\n postAction(c);\n });\n return dfdv / v.scale;\n };\n\n Block.prototype.populateSplitBlock = function (v, prev) {\n var _this = this;\n\n v.visitNeighbours(prev, function (c, next) {\n next.offset = v.offset + (next === c.right ? c.gap : -c.gap);\n\n _this.addVariable(next);\n\n _this.populateSplitBlock(next, v);\n });\n };\n\n Block.prototype.traverse = function (visit, acc, v, prev) {\n var _this = this;\n\n if (v === void 0) {\n v = this.vars[0];\n }\n\n if (prev === void 0) {\n prev = null;\n }\n\n v.visitNeighbours(prev, function (c, next) {\n acc.push(visit(c));\n\n _this.traverse(visit, acc, next, v);\n });\n };\n\n Block.prototype.findMinLM = function () {\n var m = null;\n this.compute_lm(this.vars[0], null, function (c) {\n if (!c.equality && (m === null || c.lm < m.lm)) m = c;\n });\n return m;\n };\n\n Block.prototype.findMinLMBetween = function (lv, rv) {\n this.compute_lm(lv, null, function () {});\n var m = null;\n this.findPath(lv, null, rv, function (c, next) {\n if (!c.equality && c.right === next && (m === null || c.lm < m.lm)) m = c;\n });\n return m;\n };\n\n Block.prototype.findPath = function (v, prev, to, visit) {\n var _this = this;\n\n var endFound = false;\n v.visitNeighbours(prev, function (c, next) {\n if (!endFound && (next === to || _this.findPath(next, v, to, visit))) {\n endFound = true;\n visit(c, next);\n }\n });\n return endFound;\n };\n\n Block.prototype.isActiveDirectedPathBetween = function (u, v) {\n if (u === v) return true;\n var i = u.cOut.length;\n\n while (i--) {\n var c = u.cOut[i];\n if (c.active && this.isActiveDirectedPathBetween(c.right, v)) return true;\n }\n\n return false;\n };\n\n Block.split = function (c) {\n c.active = false;\n return [Block.createSplitBlock(c.left), Block.createSplitBlock(c.right)];\n };\n\n Block.createSplitBlock = function (startVar) {\n var b = new Block(startVar);\n b.populateSplitBlock(startVar, null);\n return b;\n };\n\n Block.prototype.splitBetween = function (vl, vr) {\n var c = this.findMinLMBetween(vl, vr);\n\n if (c !== null) {\n var bs = Block.split(c);\n return {\n constraint: c,\n lb: bs[0],\n rb: bs[1]\n };\n }\n\n return null;\n };\n\n Block.prototype.mergeAcross = function (b, c, dist) {\n c.active = true;\n\n for (var i = 0, n = b.vars.length; i < n; ++i) {\n var v = b.vars[i];\n v.offset += dist;\n this.addVariable(v);\n }\n\n this.posn = this.ps.getPosn();\n };\n\n Block.prototype.cost = function () {\n var sum = 0,\n i = this.vars.length;\n\n while (i--) {\n var v = this.vars[i],\n d = v.position() - v.desiredPosition;\n sum += d * d * v.weight;\n }\n\n return sum;\n };\n\n return Block;\n}();\n\nexports.Block = Block;\n\nvar Blocks = function () {\n function Blocks(vs) {\n this.vs = vs;\n var n = vs.length;\n this.list = new Array(n);\n\n while (n--) {\n var b = new Block(vs[n]);\n this.list[n] = b;\n b.blockInd = n;\n }\n }\n\n Blocks.prototype.cost = function () {\n var sum = 0,\n i = this.list.length;\n\n while (i--) {\n sum += this.list[i].cost();\n }\n\n return sum;\n };\n\n Blocks.prototype.insert = function (b) {\n b.blockInd = this.list.length;\n this.list.push(b);\n };\n\n Blocks.prototype.remove = function (b) {\n var last = this.list.length - 1;\n var swapBlock = this.list[last];\n this.list.length = last;\n\n if (b !== swapBlock) {\n this.list[b.blockInd] = swapBlock;\n swapBlock.blockInd = b.blockInd;\n }\n };\n\n Blocks.prototype.merge = function (c) {\n var l = c.left.block,\n r = c.right.block;\n var dist = c.right.offset - c.left.offset - c.gap;\n\n if (l.vars.length < r.vars.length) {\n r.mergeAcross(l, c, dist);\n this.remove(l);\n } else {\n l.mergeAcross(r, c, -dist);\n this.remove(r);\n }\n };\n\n Blocks.prototype.forEach = function (f) {\n this.list.forEach(f);\n };\n\n Blocks.prototype.updateBlockPositions = function () {\n this.list.forEach(function (b) {\n return b.updateWeightedPosition();\n });\n };\n\n Blocks.prototype.split = function (inactive) {\n var _this = this;\n\n this.updateBlockPositions();\n this.list.forEach(function (b) {\n var v = b.findMinLM();\n\n if (v !== null && v.lm < Solver.LAGRANGIAN_TOLERANCE) {\n b = v.left.block;\n Block.split(v).forEach(function (nb) {\n return _this.insert(nb);\n });\n\n _this.remove(b);\n\n inactive.push(v);\n }\n });\n };\n\n return Blocks;\n}();\n\nexports.Blocks = Blocks;\n\nvar Solver = function () {\n function Solver(vs, cs) {\n this.vs = vs;\n this.cs = cs;\n this.vs = vs;\n vs.forEach(function (v) {\n v.cIn = [], v.cOut = [];\n });\n this.cs = cs;\n cs.forEach(function (c) {\n c.left.cOut.push(c);\n c.right.cIn.push(c);\n });\n this.inactive = cs.map(function (c) {\n c.active = false;\n return c;\n });\n this.bs = null;\n }\n\n Solver.prototype.cost = function () {\n return this.bs.cost();\n };\n\n Solver.prototype.setStartingPositions = function (ps) {\n this.inactive = this.cs.map(function (c) {\n c.active = false;\n return c;\n });\n this.bs = new Blocks(this.vs);\n this.bs.forEach(function (b, i) {\n return b.posn = ps[i];\n });\n };\n\n Solver.prototype.setDesiredPositions = function (ps) {\n this.vs.forEach(function (v, i) {\n return v.desiredPosition = ps[i];\n });\n };\n\n Solver.prototype.mostViolated = function () {\n var minSlack = Number.MAX_VALUE,\n v = null,\n l = this.inactive,\n n = l.length,\n deletePoint = n;\n\n for (var i = 0; i < n; ++i) {\n var c = l[i];\n if (c.unsatisfiable) continue;\n var slack = c.slack();\n\n if (c.equality || slack < minSlack) {\n minSlack = slack;\n v = c;\n deletePoint = i;\n if (c.equality) break;\n }\n }\n\n if (deletePoint !== n && (minSlack < Solver.ZERO_UPPERBOUND && !v.active || v.equality)) {\n l[deletePoint] = l[n - 1];\n l.length = n - 1;\n }\n\n return v;\n };\n\n Solver.prototype.satisfy = function () {\n if (this.bs == null) {\n this.bs = new Blocks(this.vs);\n }\n\n this.bs.split(this.inactive);\n var v = null;\n\n while ((v = this.mostViolated()) && (v.equality || v.slack() < Solver.ZERO_UPPERBOUND && !v.active)) {\n var lb = v.left.block,\n rb = v.right.block;\n\n if (lb !== rb) {\n this.bs.merge(v);\n } else {\n if (lb.isActiveDirectedPathBetween(v.right, v.left)) {\n v.unsatisfiable = true;\n continue;\n }\n\n var split = lb.splitBetween(v.left, v.right);\n\n if (split !== null) {\n this.bs.insert(split.lb);\n this.bs.insert(split.rb);\n this.bs.remove(lb);\n this.inactive.push(split.constraint);\n } else {\n v.unsatisfiable = true;\n continue;\n }\n\n if (v.slack() >= 0) {\n this.inactive.push(v);\n } else {\n this.bs.merge(v);\n }\n }\n }\n };\n\n Solver.prototype.solve = function () {\n this.satisfy();\n var lastcost = Number.MAX_VALUE,\n cost = this.bs.cost();\n\n while (Math.abs(lastcost - cost) > 0.0001) {\n this.satisfy();\n lastcost = cost;\n cost = this.bs.cost();\n }\n\n return cost;\n };\n\n Solver.LAGRANGIAN_TOLERANCE = -1e-4;\n Solver.ZERO_UPPERBOUND = -1e-10;\n return Solver;\n}();\n\nexports.Solver = Solver;\n\nfunction removeOverlapInOneDimension(spans, lowerBound, upperBound) {\n var vs = spans.map(function (s) {\n return new Variable(s.desiredCenter);\n });\n var cs = [];\n var n = spans.length;\n\n for (var i = 0; i < n - 1; i++) {\n var left = spans[i],\n right = spans[i + 1];\n cs.push(new Constraint(vs[i], vs[i + 1], (left.size + right.size) / 2));\n }\n\n var leftMost = vs[0],\n rightMost = vs[n - 1],\n leftMostSize = spans[0].size / 2,\n rightMostSize = spans[n - 1].size / 2;\n var vLower = null,\n vUpper = null;\n\n if (lowerBound) {\n vLower = new Variable(lowerBound, leftMost.weight * 1000);\n vs.push(vLower);\n cs.push(new Constraint(vLower, leftMost, leftMostSize));\n }\n\n if (upperBound) {\n vUpper = new Variable(upperBound, rightMost.weight * 1000);\n vs.push(vUpper);\n cs.push(new Constraint(rightMost, vUpper, rightMostSize));\n }\n\n var solver = new Solver(vs, cs);\n solver.solve();\n return {\n newCenters: vs.slice(0, spans.length).map(function (v) {\n return v.position();\n }),\n lowerBound: vLower ? vLower.position() : leftMost.position() - leftMostSize,\n upperBound: vUpper ? vUpper.position() : rightMost.position() + rightMostSize\n };\n}\n\nexports.removeOverlapInOneDimension = removeOverlapInOneDimension;","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--6-1!../../../node_modules/postcss-loader/src/index.js??ref--6-2!../../../node_modules/sass-loader/dist/cjs.js??ref--6-3!./application.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar PowerEdge = function () {\n function PowerEdge(source, target, type) {\n this.source = source;\n this.target = target;\n this.type = type;\n }\n\n return PowerEdge;\n}();\n\nexports.PowerEdge = PowerEdge;\n\nvar Configuration = function () {\n function Configuration(n, edges, linkAccessor, rootGroup) {\n var _this = this;\n\n this.linkAccessor = linkAccessor;\n this.modules = new Array(n);\n this.roots = [];\n\n if (rootGroup) {\n this.initModulesFromGroup(rootGroup);\n } else {\n this.roots.push(new ModuleSet());\n\n for (var i = 0; i < n; ++i) {\n this.roots[0].add(this.modules[i] = new Module(i));\n }\n }\n\n this.R = edges.length;\n edges.forEach(function (e) {\n var s = _this.modules[linkAccessor.getSourceIndex(e)],\n t = _this.modules[linkAccessor.getTargetIndex(e)],\n type = linkAccessor.getType(e);\n\n s.outgoing.add(type, t);\n t.incoming.add(type, s);\n });\n }\n\n Configuration.prototype.initModulesFromGroup = function (group) {\n var moduleSet = new ModuleSet();\n this.roots.push(moduleSet);\n\n for (var i = 0; i < group.leaves.length; ++i) {\n var node = group.leaves[i];\n var module = new Module(node.id);\n this.modules[node.id] = module;\n moduleSet.add(module);\n }\n\n if (group.groups) {\n for (var j = 0; j < group.groups.length; ++j) {\n var child = group.groups[j];\n var definition = {};\n\n for (var prop in child) {\n if (prop !== \"leaves\" && prop !== \"groups\" && child.hasOwnProperty(prop)) definition[prop] = child[prop];\n }\n\n moduleSet.add(new Module(-1 - j, new LinkSets(), new LinkSets(), this.initModulesFromGroup(child), definition));\n }\n }\n\n return moduleSet;\n };\n\n Configuration.prototype.merge = function (a, b, k) {\n if (k === void 0) {\n k = 0;\n }\n\n var inInt = a.incoming.intersection(b.incoming),\n outInt = a.outgoing.intersection(b.outgoing);\n var children = new ModuleSet();\n children.add(a);\n children.add(b);\n var m = new Module(this.modules.length, outInt, inInt, children);\n this.modules.push(m);\n\n var update = function update(s, i, o) {\n s.forAll(function (ms, linktype) {\n ms.forAll(function (n) {\n var nls = n[i];\n nls.add(linktype, m);\n nls.remove(linktype, a);\n nls.remove(linktype, b);\n a[o].remove(linktype, n);\n b[o].remove(linktype, n);\n });\n });\n };\n\n update(outInt, \"incoming\", \"outgoing\");\n update(inInt, \"outgoing\", \"incoming\");\n this.R -= inInt.count() + outInt.count();\n this.roots[k].remove(a);\n this.roots[k].remove(b);\n this.roots[k].add(m);\n return m;\n };\n\n Configuration.prototype.rootMerges = function (k) {\n if (k === void 0) {\n k = 0;\n }\n\n var rs = this.roots[k].modules();\n var n = rs.length;\n var merges = new Array(n * (n - 1));\n var ctr = 0;\n\n for (var i = 0, i_ = n - 1; i < i_; ++i) {\n for (var j = i + 1; j < n; ++j) {\n var a = rs[i],\n b = rs[j];\n merges[ctr] = {\n id: ctr,\n nEdges: this.nEdges(a, b),\n a: a,\n b: b\n };\n ctr++;\n }\n }\n\n return merges;\n };\n\n Configuration.prototype.greedyMerge = function () {\n for (var i = 0; i < this.roots.length; ++i) {\n if (this.roots[i].modules().length < 2) continue;\n var ms = this.rootMerges(i).sort(function (a, b) {\n return a.nEdges == b.nEdges ? a.id - b.id : a.nEdges - b.nEdges;\n });\n var m = ms[0];\n if (m.nEdges >= this.R) continue;\n this.merge(m.a, m.b, i);\n return true;\n }\n };\n\n Configuration.prototype.nEdges = function (a, b) {\n var inInt = a.incoming.intersection(b.incoming),\n outInt = a.outgoing.intersection(b.outgoing);\n return this.R - inInt.count() - outInt.count();\n };\n\n Configuration.prototype.getGroupHierarchy = function (retargetedEdges) {\n var _this = this;\n\n var groups = [];\n var root = {};\n toGroups(this.roots[0], root, groups);\n var es = this.allEdges();\n es.forEach(function (e) {\n var a = _this.modules[e.source];\n var b = _this.modules[e.target];\n retargetedEdges.push(new PowerEdge(typeof a.gid === \"undefined\" ? e.source : groups[a.gid], typeof b.gid === \"undefined\" ? e.target : groups[b.gid], e.type));\n });\n return groups;\n };\n\n Configuration.prototype.allEdges = function () {\n var es = [];\n Configuration.getEdges(this.roots[0], es);\n return es;\n };\n\n Configuration.getEdges = function (modules, es) {\n modules.forAll(function (m) {\n m.getEdges(es);\n Configuration.getEdges(m.children, es);\n });\n };\n\n return Configuration;\n}();\n\nexports.Configuration = Configuration;\n\nfunction toGroups(modules, group, groups) {\n modules.forAll(function (m) {\n if (m.isLeaf()) {\n if (!group.leaves) group.leaves = [];\n group.leaves.push(m.id);\n } else {\n var g = group;\n m.gid = groups.length;\n\n if (!m.isIsland() || m.isPredefined()) {\n g = {\n id: m.gid\n };\n if (m.isPredefined()) for (var prop in m.definition) {\n g[prop] = m.definition[prop];\n }\n if (!group.groups) group.groups = [];\n group.groups.push(m.gid);\n groups.push(g);\n }\n\n toGroups(m.children, g, groups);\n }\n });\n}\n\nvar Module = function () {\n function Module(id, outgoing, incoming, children, definition) {\n if (outgoing === void 0) {\n outgoing = new LinkSets();\n }\n\n if (incoming === void 0) {\n incoming = new LinkSets();\n }\n\n if (children === void 0) {\n children = new ModuleSet();\n }\n\n this.id = id;\n this.outgoing = outgoing;\n this.incoming = incoming;\n this.children = children;\n this.definition = definition;\n }\n\n Module.prototype.getEdges = function (es) {\n var _this = this;\n\n this.outgoing.forAll(function (ms, edgetype) {\n ms.forAll(function (target) {\n es.push(new PowerEdge(_this.id, target.id, edgetype));\n });\n });\n };\n\n Module.prototype.isLeaf = function () {\n return this.children.count() === 0;\n };\n\n Module.prototype.isIsland = function () {\n return this.outgoing.count() === 0 && this.incoming.count() === 0;\n };\n\n Module.prototype.isPredefined = function () {\n return typeof this.definition !== \"undefined\";\n };\n\n return Module;\n}();\n\nexports.Module = Module;\n\nfunction intersection(m, n) {\n var i = {};\n\n for (var v in m) {\n if (v in n) i[v] = m[v];\n }\n\n return i;\n}\n\nvar ModuleSet = function () {\n function ModuleSet() {\n this.table = {};\n }\n\n ModuleSet.prototype.count = function () {\n return Object.keys(this.table).length;\n };\n\n ModuleSet.prototype.intersection = function (other) {\n var result = new ModuleSet();\n result.table = intersection(this.table, other.table);\n return result;\n };\n\n ModuleSet.prototype.intersectionCount = function (other) {\n return this.intersection(other).count();\n };\n\n ModuleSet.prototype.contains = function (id) {\n return id in this.table;\n };\n\n ModuleSet.prototype.add = function (m) {\n this.table[m.id] = m;\n };\n\n ModuleSet.prototype.remove = function (m) {\n delete this.table[m.id];\n };\n\n ModuleSet.prototype.forAll = function (f) {\n for (var mid in this.table) {\n f(this.table[mid]);\n }\n };\n\n ModuleSet.prototype.modules = function () {\n var vs = [];\n this.forAll(function (m) {\n if (!m.isPredefined()) vs.push(m);\n });\n return vs;\n };\n\n return ModuleSet;\n}();\n\nexports.ModuleSet = ModuleSet;\n\nvar LinkSets = function () {\n function LinkSets() {\n this.sets = {};\n this.n = 0;\n }\n\n LinkSets.prototype.count = function () {\n return this.n;\n };\n\n LinkSets.prototype.contains = function (id) {\n var result = false;\n this.forAllModules(function (m) {\n if (!result && m.id == id) {\n result = true;\n }\n });\n return result;\n };\n\n LinkSets.prototype.add = function (linktype, m) {\n var s = linktype in this.sets ? this.sets[linktype] : this.sets[linktype] = new ModuleSet();\n s.add(m);\n ++this.n;\n };\n\n LinkSets.prototype.remove = function (linktype, m) {\n var ms = this.sets[linktype];\n ms.remove(m);\n\n if (ms.count() === 0) {\n delete this.sets[linktype];\n }\n\n --this.n;\n };\n\n LinkSets.prototype.forAll = function (f) {\n for (var linktype in this.sets) {\n f(this.sets[linktype], Number(linktype));\n }\n };\n\n LinkSets.prototype.forAllModules = function (f) {\n this.forAll(function (ms, lt) {\n return ms.forAll(f);\n });\n };\n\n LinkSets.prototype.intersection = function (other) {\n var result = new LinkSets();\n this.forAll(function (ms, lt) {\n if (lt in other.sets) {\n var i = ms.intersection(other.sets[lt]),\n n = i.count();\n\n if (n > 0) {\n result.sets[lt] = i;\n result.n += n;\n }\n }\n });\n return result;\n };\n\n return LinkSets;\n}();\n\nexports.LinkSets = LinkSets;\n\nfunction intersectionCount(m, n) {\n return Object.keys(intersection(m, n)).length;\n}\n\nfunction getGroups(nodes, links, la, rootGroup) {\n var n = nodes.length,\n c = new Configuration(n, links, la, rootGroup);\n\n while (c.greedyMerge()) {\n ;\n }\n\n var powerEdges = [];\n var g = c.getGroupHierarchy(powerEdges);\n powerEdges.forEach(function (e) {\n var f = function f(end) {\n var g = e[end];\n if (typeof g == \"number\") e[end] = nodes[g];\n };\n\n f(\"source\");\n f(\"target\");\n });\n return {\n groups: g,\n powerEdges: powerEdges\n };\n}\n\nexports.getGroups = getGroups;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar TreeBase = function () {\n function TreeBase() {\n this.findIter = function (data) {\n var res = this._root;\n var iter = this.iterator();\n\n while (res !== null) {\n var c = this._comparator(data, res.data);\n\n if (c === 0) {\n iter._cursor = res;\n return iter;\n } else {\n iter._ancestors.push(res);\n\n res = res.get_child(c > 0);\n }\n }\n\n return null;\n };\n }\n\n TreeBase.prototype.clear = function () {\n this._root = null;\n this.size = 0;\n };\n\n ;\n\n TreeBase.prototype.find = function (data) {\n var res = this._root;\n\n while (res !== null) {\n var c = this._comparator(data, res.data);\n\n if (c === 0) {\n return res.data;\n } else {\n res = res.get_child(c > 0);\n }\n }\n\n return null;\n };\n\n ;\n\n TreeBase.prototype.lowerBound = function (data) {\n return this._bound(data, this._comparator);\n };\n\n ;\n\n TreeBase.prototype.upperBound = function (data) {\n var cmp = this._comparator;\n\n function reverse_cmp(a, b) {\n return cmp(b, a);\n }\n\n return this._bound(data, reverse_cmp);\n };\n\n ;\n\n TreeBase.prototype.min = function () {\n var res = this._root;\n\n if (res === null) {\n return null;\n }\n\n while (res.left !== null) {\n res = res.left;\n }\n\n return res.data;\n };\n\n ;\n\n TreeBase.prototype.max = function () {\n var res = this._root;\n\n if (res === null) {\n return null;\n }\n\n while (res.right !== null) {\n res = res.right;\n }\n\n return res.data;\n };\n\n ;\n\n TreeBase.prototype.iterator = function () {\n return new Iterator(this);\n };\n\n ;\n\n TreeBase.prototype.each = function (cb) {\n var it = this.iterator(),\n data;\n\n while ((data = it.next()) !== null) {\n cb(data);\n }\n };\n\n ;\n\n TreeBase.prototype.reach = function (cb) {\n var it = this.iterator(),\n data;\n\n while ((data = it.prev()) !== null) {\n cb(data);\n }\n };\n\n ;\n\n TreeBase.prototype._bound = function (data, cmp) {\n var cur = this._root;\n var iter = this.iterator();\n\n while (cur !== null) {\n var c = this._comparator(data, cur.data);\n\n if (c === 0) {\n iter._cursor = cur;\n return iter;\n }\n\n iter._ancestors.push(cur);\n\n cur = cur.get_child(c > 0);\n }\n\n for (var i = iter._ancestors.length - 1; i >= 0; --i) {\n cur = iter._ancestors[i];\n\n if (cmp(data, cur.data) > 0) {\n iter._cursor = cur;\n iter._ancestors.length = i;\n return iter;\n }\n }\n\n iter._ancestors.length = 0;\n return iter;\n };\n\n ;\n return TreeBase;\n}();\n\nexports.TreeBase = TreeBase;\n\nvar Iterator = function () {\n function Iterator(tree) {\n this._tree = tree;\n this._ancestors = [];\n this._cursor = null;\n }\n\n Iterator.prototype.data = function () {\n return this._cursor !== null ? this._cursor.data : null;\n };\n\n ;\n\n Iterator.prototype.next = function () {\n if (this._cursor === null) {\n var root = this._tree._root;\n\n if (root !== null) {\n this._minNode(root);\n }\n } else {\n if (this._cursor.right === null) {\n var save;\n\n do {\n save = this._cursor;\n\n if (this._ancestors.length) {\n this._cursor = this._ancestors.pop();\n } else {\n this._cursor = null;\n break;\n }\n } while (this._cursor.right === save);\n } else {\n this._ancestors.push(this._cursor);\n\n this._minNode(this._cursor.right);\n }\n }\n\n return this._cursor !== null ? this._cursor.data : null;\n };\n\n ;\n\n Iterator.prototype.prev = function () {\n if (this._cursor === null) {\n var root = this._tree._root;\n\n if (root !== null) {\n this._maxNode(root);\n }\n } else {\n if (this._cursor.left === null) {\n var save;\n\n do {\n save = this._cursor;\n\n if (this._ancestors.length) {\n this._cursor = this._ancestors.pop();\n } else {\n this._cursor = null;\n break;\n }\n } while (this._cursor.left === save);\n } else {\n this._ancestors.push(this._cursor);\n\n this._maxNode(this._cursor.left);\n }\n }\n\n return this._cursor !== null ? this._cursor.data : null;\n };\n\n ;\n\n Iterator.prototype._minNode = function (start) {\n while (start.left !== null) {\n this._ancestors.push(start);\n\n start = start.left;\n }\n\n this._cursor = start;\n };\n\n ;\n\n Iterator.prototype._maxNode = function (start) {\n while (start.right !== null) {\n this._ancestors.push(start);\n\n start = start.right;\n }\n\n this._cursor = start;\n };\n\n ;\n return Iterator;\n}();\n\nexports.Iterator = Iterator;\n\nvar Node = function () {\n function Node(data) {\n this.data = data;\n this.left = null;\n this.right = null;\n this.red = true;\n }\n\n Node.prototype.get_child = function (dir) {\n return dir ? this.right : this.left;\n };\n\n ;\n\n Node.prototype.set_child = function (dir, val) {\n if (dir) {\n this.right = val;\n } else {\n this.left = val;\n }\n };\n\n ;\n return Node;\n}();\n\nvar RBTree = function (_super) {\n __extends(RBTree, _super);\n\n function RBTree(comparator) {\n var _this = _super.call(this) || this;\n\n _this._root = null;\n _this._comparator = comparator;\n _this.size = 0;\n return _this;\n }\n\n RBTree.prototype.insert = function (data) {\n var ret = false;\n\n if (this._root === null) {\n this._root = new Node(data);\n ret = true;\n this.size++;\n } else {\n var head = new Node(undefined);\n var dir = false;\n var last = false;\n var gp = null;\n var ggp = head;\n var p = null;\n var node = this._root;\n ggp.right = this._root;\n\n while (true) {\n if (node === null) {\n node = new Node(data);\n p.set_child(dir, node);\n ret = true;\n this.size++;\n } else if (RBTree.is_red(node.left) && RBTree.is_red(node.right)) {\n node.red = true;\n node.left.red = false;\n node.right.red = false;\n }\n\n if (RBTree.is_red(node) && RBTree.is_red(p)) {\n var dir2 = ggp.right === gp;\n\n if (node === p.get_child(last)) {\n ggp.set_child(dir2, RBTree.single_rotate(gp, !last));\n } else {\n ggp.set_child(dir2, RBTree.double_rotate(gp, !last));\n }\n }\n\n var cmp = this._comparator(node.data, data);\n\n if (cmp === 0) {\n break;\n }\n\n last = dir;\n dir = cmp < 0;\n\n if (gp !== null) {\n ggp = gp;\n }\n\n gp = p;\n p = node;\n node = node.get_child(dir);\n }\n\n this._root = head.right;\n }\n\n this._root.red = false;\n return ret;\n };\n\n ;\n\n RBTree.prototype.remove = function (data) {\n if (this._root === null) {\n return false;\n }\n\n var head = new Node(undefined);\n var node = head;\n node.right = this._root;\n var p = null;\n var gp = null;\n var found = null;\n var dir = true;\n\n while (node.get_child(dir) !== null) {\n var last = dir;\n gp = p;\n p = node;\n node = node.get_child(dir);\n\n var cmp = this._comparator(data, node.data);\n\n dir = cmp > 0;\n\n if (cmp === 0) {\n found = node;\n }\n\n if (!RBTree.is_red(node) && !RBTree.is_red(node.get_child(dir))) {\n if (RBTree.is_red(node.get_child(!dir))) {\n var sr = RBTree.single_rotate(node, dir);\n p.set_child(last, sr);\n p = sr;\n } else if (!RBTree.is_red(node.get_child(!dir))) {\n var sibling = p.get_child(!last);\n\n if (sibling !== null) {\n if (!RBTree.is_red(sibling.get_child(!last)) && !RBTree.is_red(sibling.get_child(last))) {\n p.red = false;\n sibling.red = true;\n node.red = true;\n } else {\n var dir2 = gp.right === p;\n\n if (RBTree.is_red(sibling.get_child(last))) {\n gp.set_child(dir2, RBTree.double_rotate(p, last));\n } else if (RBTree.is_red(sibling.get_child(!last))) {\n gp.set_child(dir2, RBTree.single_rotate(p, last));\n }\n\n var gpc = gp.get_child(dir2);\n gpc.red = true;\n node.red = true;\n gpc.left.red = false;\n gpc.right.red = false;\n }\n }\n }\n }\n }\n\n if (found !== null) {\n found.data = node.data;\n p.set_child(p.right === node, node.get_child(node.left === null));\n this.size--;\n }\n\n this._root = head.right;\n\n if (this._root !== null) {\n this._root.red = false;\n }\n\n return found !== null;\n };\n\n ;\n\n RBTree.is_red = function (node) {\n return node !== null && node.red;\n };\n\n RBTree.single_rotate = function (root, dir) {\n var save = root.get_child(!dir);\n root.set_child(!dir, save.get_child(dir));\n save.set_child(dir, root);\n root.red = true;\n save.red = false;\n return save;\n };\n\n RBTree.double_rotate = function (root, dir) {\n root.set_child(!dir, RBTree.single_rotate(root.get_child(!dir), !dir));\n return RBTree.single_rotate(root, dir);\n };\n\n return RBTree;\n}(TreeBase);\n\nexports.RBTree = RBTree;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar PairingHeap = function () {\n function PairingHeap(elem) {\n this.elem = elem;\n this.subheaps = [];\n }\n\n PairingHeap.prototype.toString = function (selector) {\n var str = \"\",\n needComma = false;\n\n for (var i = 0; i < this.subheaps.length; ++i) {\n var subheap = this.subheaps[i];\n\n if (!subheap.elem) {\n needComma = false;\n continue;\n }\n\n if (needComma) {\n str = str + \",\";\n }\n\n str = str + subheap.toString(selector);\n needComma = true;\n }\n\n if (str !== \"\") {\n str = \"(\" + str + \")\";\n }\n\n return (this.elem ? selector(this.elem) : \"\") + str;\n };\n\n PairingHeap.prototype.forEach = function (f) {\n if (!this.empty()) {\n f(this.elem, this);\n this.subheaps.forEach(function (s) {\n return s.forEach(f);\n });\n }\n };\n\n PairingHeap.prototype.count = function () {\n return this.empty() ? 0 : 1 + this.subheaps.reduce(function (n, h) {\n return n + h.count();\n }, 0);\n };\n\n PairingHeap.prototype.min = function () {\n return this.elem;\n };\n\n PairingHeap.prototype.empty = function () {\n return this.elem == null;\n };\n\n PairingHeap.prototype.contains = function (h) {\n if (this === h) return true;\n\n for (var i = 0; i < this.subheaps.length; i++) {\n if (this.subheaps[i].contains(h)) return true;\n }\n\n return false;\n };\n\n PairingHeap.prototype.isHeap = function (lessThan) {\n var _this = this;\n\n return this.subheaps.every(function (h) {\n return lessThan(_this.elem, h.elem) && h.isHeap(lessThan);\n });\n };\n\n PairingHeap.prototype.insert = function (obj, lessThan) {\n return this.merge(new PairingHeap(obj), lessThan);\n };\n\n PairingHeap.prototype.merge = function (heap2, lessThan) {\n if (this.empty()) return heap2;else if (heap2.empty()) return this;else if (lessThan(this.elem, heap2.elem)) {\n this.subheaps.push(heap2);\n return this;\n } else {\n heap2.subheaps.push(this);\n return heap2;\n }\n };\n\n PairingHeap.prototype.removeMin = function (lessThan) {\n if (this.empty()) return null;else return this.mergePairs(lessThan);\n };\n\n PairingHeap.prototype.mergePairs = function (lessThan) {\n if (this.subheaps.length == 0) return new PairingHeap(null);else if (this.subheaps.length == 1) {\n return this.subheaps[0];\n } else {\n var firstPair = this.subheaps.pop().merge(this.subheaps.pop(), lessThan);\n var remaining = this.mergePairs(lessThan);\n return firstPair.merge(remaining, lessThan);\n }\n };\n\n PairingHeap.prototype.decreaseKey = function (subheap, newValue, setHeapNode, lessThan) {\n var newHeap = subheap.removeMin(lessThan);\n subheap.elem = newHeap.elem;\n subheap.subheaps = newHeap.subheaps;\n\n if (setHeapNode !== null && newHeap.elem !== null) {\n setHeapNode(subheap.elem, subheap);\n }\n\n var pairingNode = new PairingHeap(newValue);\n\n if (setHeapNode !== null) {\n setHeapNode(newValue, pairingNode);\n }\n\n return this.merge(pairingNode, lessThan);\n };\n\n return PairingHeap;\n}();\n\nexports.PairingHeap = PairingHeap;\n\nvar PriorityQueue = function () {\n function PriorityQueue(lessThan) {\n this.lessThan = lessThan;\n }\n\n PriorityQueue.prototype.top = function () {\n if (this.empty()) {\n return null;\n }\n\n return this.root.elem;\n };\n\n PriorityQueue.prototype.push = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var pairingNode;\n\n for (var i = 0, arg; arg = args[i]; ++i) {\n pairingNode = new PairingHeap(arg);\n this.root = this.empty() ? pairingNode : this.root.merge(pairingNode, this.lessThan);\n }\n\n return pairingNode;\n };\n\n PriorityQueue.prototype.empty = function () {\n return !this.root || !this.root.elem;\n };\n\n PriorityQueue.prototype.isHeap = function () {\n return this.root.isHeap(this.lessThan);\n };\n\n PriorityQueue.prototype.forEach = function (f) {\n this.root.forEach(f);\n };\n\n PriorityQueue.prototype.pop = function () {\n if (this.empty()) {\n return null;\n }\n\n var obj = this.root.min();\n this.root = this.root.removeMin(this.lessThan);\n return obj;\n };\n\n PriorityQueue.prototype.reduceKey = function (heapNode, newKey, setHeapNode) {\n if (setHeapNode === void 0) {\n setHeapNode = null;\n }\n\n this.root = this.root.decreaseKey(heapNode, newKey, setHeapNode, this.lessThan);\n };\n\n PriorityQueue.prototype.toString = function (selector) {\n return this.root.toString(selector);\n };\n\n PriorityQueue.prototype.count = function () {\n return this.root.count();\n };\n\n return PriorityQueue;\n}();\n\nexports.PriorityQueue = PriorityQueue;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar rectangle_1 = require(\"./rectangle\");\n\nvar Point = function () {\n function Point() {}\n\n return Point;\n}();\n\nexports.Point = Point;\n\nvar LineSegment = function () {\n function LineSegment(x1, y1, x2, y2) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n }\n\n return LineSegment;\n}();\n\nexports.LineSegment = LineSegment;\n\nvar PolyPoint = function (_super) {\n __extends(PolyPoint, _super);\n\n function PolyPoint() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return PolyPoint;\n}(Point);\n\nexports.PolyPoint = PolyPoint;\n\nfunction isLeft(P0, P1, P2) {\n return (P1.x - P0.x) * (P2.y - P0.y) - (P2.x - P0.x) * (P1.y - P0.y);\n}\n\nexports.isLeft = isLeft;\n\nfunction above(p, vi, vj) {\n return isLeft(p, vi, vj) > 0;\n}\n\nfunction below(p, vi, vj) {\n return isLeft(p, vi, vj) < 0;\n}\n\nfunction ConvexHull(S) {\n var P = S.slice(0).sort(function (a, b) {\n return a.x !== b.x ? b.x - a.x : b.y - a.y;\n });\n var n = S.length,\n i;\n var minmin = 0;\n var xmin = P[0].x;\n\n for (i = 1; i < n; ++i) {\n if (P[i].x !== xmin) break;\n }\n\n var minmax = i - 1;\n var H = [];\n H.push(P[minmin]);\n\n if (minmax === n - 1) {\n if (P[minmax].y !== P[minmin].y) H.push(P[minmax]);\n } else {\n var maxmin,\n maxmax = n - 1;\n var xmax = P[n - 1].x;\n\n for (i = n - 2; i >= 0; i--) {\n if (P[i].x !== xmax) break;\n }\n\n maxmin = i + 1;\n i = minmax;\n\n while (++i <= maxmin) {\n if (isLeft(P[minmin], P[maxmin], P[i]) >= 0 && i < maxmin) continue;\n\n while (H.length > 1) {\n if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0) break;else H.length -= 1;\n }\n\n if (i != minmin) H.push(P[i]);\n }\n\n if (maxmax != maxmin) H.push(P[maxmax]);\n var bot = H.length;\n i = maxmin;\n\n while (--i >= minmax) {\n if (isLeft(P[maxmax], P[minmax], P[i]) >= 0 && i > minmax) continue;\n\n while (H.length > bot) {\n if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0) break;else H.length -= 1;\n }\n\n if (i != minmin) H.push(P[i]);\n }\n }\n\n return H;\n}\n\nexports.ConvexHull = ConvexHull;\n\nfunction clockwiseRadialSweep(p, P, f) {\n P.slice(0).sort(function (a, b) {\n return Math.atan2(a.y - p.y, a.x - p.x) - Math.atan2(b.y - p.y, b.x - p.x);\n }).forEach(f);\n}\n\nexports.clockwiseRadialSweep = clockwiseRadialSweep;\n\nfunction nextPolyPoint(p, ps) {\n if (p.polyIndex === ps.length - 1) return ps[0];\n return ps[p.polyIndex + 1];\n}\n\nfunction prevPolyPoint(p, ps) {\n if (p.polyIndex === 0) return ps[ps.length - 1];\n return ps[p.polyIndex - 1];\n}\n\nfunction tangent_PointPolyC(P, V) {\n var Vclosed = V.slice(0);\n Vclosed.push(V[0]);\n return {\n rtan: Rtangent_PointPolyC(P, Vclosed),\n ltan: Ltangent_PointPolyC(P, Vclosed)\n };\n}\n\nfunction Rtangent_PointPolyC(P, V) {\n var n = V.length - 1;\n var a, b, c;\n var upA, dnC;\n if (below(P, V[1], V[0]) && !above(P, V[n - 1], V[0])) return 0;\n\n for (a = 0, b = n;;) {\n if (b - a === 1) if (above(P, V[a], V[b])) return a;else return b;\n c = Math.floor((a + b) / 2);\n dnC = below(P, V[c + 1], V[c]);\n if (dnC && !above(P, V[c - 1], V[c])) return c;\n upA = above(P, V[a + 1], V[a]);\n\n if (upA) {\n if (dnC) b = c;else {\n if (above(P, V[a], V[c])) b = c;else a = c;\n }\n } else {\n if (!dnC) a = c;else {\n if (below(P, V[a], V[c])) b = c;else a = c;\n }\n }\n }\n}\n\nfunction Ltangent_PointPolyC(P, V) {\n var n = V.length - 1;\n var a, b, c;\n var dnA, dnC;\n if (above(P, V[n - 1], V[0]) && !below(P, V[1], V[0])) return 0;\n\n for (a = 0, b = n;;) {\n if (b - a === 1) if (below(P, V[a], V[b])) return a;else return b;\n c = Math.floor((a + b) / 2);\n dnC = below(P, V[c + 1], V[c]);\n if (above(P, V[c - 1], V[c]) && !dnC) return c;\n dnA = below(P, V[a + 1], V[a]);\n\n if (dnA) {\n if (!dnC) b = c;else {\n if (below(P, V[a], V[c])) b = c;else a = c;\n }\n } else {\n if (dnC) a = c;else {\n if (above(P, V[a], V[c])) b = c;else a = c;\n }\n }\n }\n}\n\nfunction tangent_PolyPolyC(V, W, t1, t2, cmp1, cmp2) {\n var ix1, ix2;\n ix1 = t1(W[0], V);\n ix2 = t2(V[ix1], W);\n var done = false;\n\n while (!done) {\n done = true;\n\n while (true) {\n if (ix1 === V.length - 1) ix1 = 0;\n if (cmp1(W[ix2], V[ix1], V[ix1 + 1])) break;\n ++ix1;\n }\n\n while (true) {\n if (ix2 === 0) ix2 = W.length - 1;\n if (cmp2(V[ix1], W[ix2], W[ix2 - 1])) break;\n --ix2;\n done = false;\n }\n }\n\n return {\n t1: ix1,\n t2: ix2\n };\n}\n\nexports.tangent_PolyPolyC = tangent_PolyPolyC;\n\nfunction LRtangent_PolyPolyC(V, W) {\n var rl = RLtangent_PolyPolyC(W, V);\n return {\n t1: rl.t2,\n t2: rl.t1\n };\n}\n\nexports.LRtangent_PolyPolyC = LRtangent_PolyPolyC;\n\nfunction RLtangent_PolyPolyC(V, W) {\n return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Ltangent_PointPolyC, above, below);\n}\n\nexports.RLtangent_PolyPolyC = RLtangent_PolyPolyC;\n\nfunction LLtangent_PolyPolyC(V, W) {\n return tangent_PolyPolyC(V, W, Ltangent_PointPolyC, Ltangent_PointPolyC, below, below);\n}\n\nexports.LLtangent_PolyPolyC = LLtangent_PolyPolyC;\n\nfunction RRtangent_PolyPolyC(V, W) {\n return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Rtangent_PointPolyC, above, above);\n}\n\nexports.RRtangent_PolyPolyC = RRtangent_PolyPolyC;\n\nvar BiTangent = function () {\n function BiTangent(t1, t2) {\n this.t1 = t1;\n this.t2 = t2;\n }\n\n return BiTangent;\n}();\n\nexports.BiTangent = BiTangent;\n\nvar BiTangents = function () {\n function BiTangents() {}\n\n return BiTangents;\n}();\n\nexports.BiTangents = BiTangents;\n\nvar TVGPoint = function (_super) {\n __extends(TVGPoint, _super);\n\n function TVGPoint() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return TVGPoint;\n}(Point);\n\nexports.TVGPoint = TVGPoint;\n\nvar VisibilityVertex = function () {\n function VisibilityVertex(id, polyid, polyvertid, p) {\n this.id = id;\n this.polyid = polyid;\n this.polyvertid = polyvertid;\n this.p = p;\n p.vv = this;\n }\n\n return VisibilityVertex;\n}();\n\nexports.VisibilityVertex = VisibilityVertex;\n\nvar VisibilityEdge = function () {\n function VisibilityEdge(source, target) {\n this.source = source;\n this.target = target;\n }\n\n VisibilityEdge.prototype.length = function () {\n var dx = this.source.p.x - this.target.p.x;\n var dy = this.source.p.y - this.target.p.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n return VisibilityEdge;\n}();\n\nexports.VisibilityEdge = VisibilityEdge;\n\nvar TangentVisibilityGraph = function () {\n function TangentVisibilityGraph(P, g0) {\n this.P = P;\n this.V = [];\n this.E = [];\n\n if (!g0) {\n var n = P.length;\n\n for (var i = 0; i < n; i++) {\n var p = P[i];\n\n for (var j = 0; j < p.length; ++j) {\n var pj = p[j],\n vv = new VisibilityVertex(this.V.length, i, j, pj);\n this.V.push(vv);\n if (j > 0) this.E.push(new VisibilityEdge(p[j - 1].vv, vv));\n }\n\n if (p.length > 1) this.E.push(new VisibilityEdge(p[0].vv, p[p.length - 1].vv));\n }\n\n for (var i = 0; i < n - 1; i++) {\n var Pi = P[i];\n\n for (var j = i + 1; j < n; j++) {\n var Pj = P[j],\n t = tangents(Pi, Pj);\n\n for (var q in t) {\n var c = t[q],\n source = Pi[c.t1],\n target = Pj[c.t2];\n this.addEdgeIfVisible(source, target, i, j);\n }\n }\n }\n } else {\n this.V = g0.V.slice(0);\n this.E = g0.E.slice(0);\n }\n }\n\n TangentVisibilityGraph.prototype.addEdgeIfVisible = function (u, v, i1, i2) {\n if (!this.intersectsPolys(new LineSegment(u.x, u.y, v.x, v.y), i1, i2)) {\n this.E.push(new VisibilityEdge(u.vv, v.vv));\n }\n };\n\n TangentVisibilityGraph.prototype.addPoint = function (p, i1) {\n var n = this.P.length;\n this.V.push(new VisibilityVertex(this.V.length, n, 0, p));\n\n for (var i = 0; i < n; ++i) {\n if (i === i1) continue;\n var poly = this.P[i],\n t = tangent_PointPolyC(p, poly);\n this.addEdgeIfVisible(p, poly[t.ltan], i1, i);\n this.addEdgeIfVisible(p, poly[t.rtan], i1, i);\n }\n\n return p.vv;\n };\n\n TangentVisibilityGraph.prototype.intersectsPolys = function (l, i1, i2) {\n for (var i = 0, n = this.P.length; i < n; ++i) {\n if (i != i1 && i != i2 && intersects(l, this.P[i]).length > 0) {\n return true;\n }\n }\n\n return false;\n };\n\n return TangentVisibilityGraph;\n}();\n\nexports.TangentVisibilityGraph = TangentVisibilityGraph;\n\nfunction intersects(l, P) {\n var ints = [];\n\n for (var i = 1, n = P.length; i < n; ++i) {\n var int = rectangle_1.Rectangle.lineIntersection(l.x1, l.y1, l.x2, l.y2, P[i - 1].x, P[i - 1].y, P[i].x, P[i].y);\n if (int) ints.push(int);\n }\n\n return ints;\n}\n\nfunction tangents(V, W) {\n var m = V.length - 1,\n n = W.length - 1;\n var bt = new BiTangents();\n\n for (var i = 0; i < m; ++i) {\n for (var j = 0; j < n; ++j) {\n var v1 = V[i == 0 ? m - 1 : i - 1];\n var v2 = V[i];\n var v3 = V[i + 1];\n var w1 = W[j == 0 ? n - 1 : j - 1];\n var w2 = W[j];\n var w3 = W[j + 1];\n var v1v2w2 = isLeft(v1, v2, w2);\n var v2w1w2 = isLeft(v2, w1, w2);\n var v2w2w3 = isLeft(v2, w2, w3);\n var w1w2v2 = isLeft(w1, w2, v2);\n var w2v1v2 = isLeft(w2, v1, v2);\n var w2v2v3 = isLeft(w2, v2, v3);\n\n if (v1v2w2 >= 0 && v2w1w2 >= 0 && v2w2w3 < 0 && w1w2v2 >= 0 && w2v1v2 >= 0 && w2v2v3 < 0) {\n bt.ll = new BiTangent(i, j);\n } else if (v1v2w2 <= 0 && v2w1w2 <= 0 && v2w2w3 > 0 && w1w2v2 <= 0 && w2v1v2 <= 0 && w2v2v3 > 0) {\n bt.rr = new BiTangent(i, j);\n } else if (v1v2w2 <= 0 && v2w1w2 > 0 && v2w2w3 <= 0 && w1w2v2 >= 0 && w2v1v2 < 0 && w2v2v3 >= 0) {\n bt.rl = new BiTangent(i, j);\n } else if (v1v2w2 >= 0 && v2w1w2 < 0 && v2w2w3 >= 0 && w1w2v2 <= 0 && w2v1v2 > 0 && w2v2v3 <= 0) {\n bt.lr = new BiTangent(i, j);\n }\n }\n }\n\n return bt;\n}\n\nexports.tangents = tangents;\n\nfunction isPointInsidePoly(p, poly) {\n for (var i = 1, n = poly.length; i < n; ++i) {\n if (below(poly[i - 1], poly[i], p)) return false;\n }\n\n return true;\n}\n\nfunction isAnyPInQ(p, q) {\n return !p.every(function (v) {\n return !isPointInsidePoly(v, q);\n });\n}\n\nfunction polysOverlap(p, q) {\n if (isAnyPInQ(p, q)) return true;\n if (isAnyPInQ(q, p)) return true;\n\n for (var i = 1, n = p.length; i < n; ++i) {\n var v = p[i],\n u = p[i - 1];\n if (intersects(new LineSegment(u.x, u.y, v.x, v.y), q).length > 0) return true;\n }\n\n return false;\n}\n\nexports.polysOverlap = polysOverlap;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar packingOptions = {\n PADDING: 10,\n GOLDEN_SECTION: (1 + Math.sqrt(5)) / 2,\n FLOAT_EPSILON: 0.0001,\n MAX_INERATIONS: 100\n};\n\nfunction applyPacking(graphs, w, h, node_size, desired_ratio, centerGraph) {\n if (desired_ratio === void 0) {\n desired_ratio = 1;\n }\n\n if (centerGraph === void 0) {\n centerGraph = true;\n }\n\n var init_x = 0,\n init_y = 0,\n svg_width = w,\n svg_height = h,\n desired_ratio = typeof desired_ratio !== 'undefined' ? desired_ratio : 1,\n node_size = typeof node_size !== 'undefined' ? node_size : 0,\n real_width = 0,\n real_height = 0,\n min_width = 0,\n global_bottom = 0,\n line = [];\n if (graphs.length == 0) return;\n calculate_bb(graphs);\n apply(graphs, desired_ratio);\n\n if (centerGraph) {\n put_nodes_to_right_positions(graphs);\n }\n\n function calculate_bb(graphs) {\n graphs.forEach(function (g) {\n calculate_single_bb(g);\n });\n\n function calculate_single_bb(graph) {\n var min_x = Number.MAX_VALUE,\n min_y = Number.MAX_VALUE,\n max_x = 0,\n max_y = 0;\n graph.array.forEach(function (v) {\n var w = typeof v.width !== 'undefined' ? v.width : node_size;\n var h = typeof v.height !== 'undefined' ? v.height : node_size;\n w /= 2;\n h /= 2;\n max_x = Math.max(v.x + w, max_x);\n min_x = Math.min(v.x - w, min_x);\n max_y = Math.max(v.y + h, max_y);\n min_y = Math.min(v.y - h, min_y);\n });\n graph.width = max_x - min_x;\n graph.height = max_y - min_y;\n }\n }\n\n function put_nodes_to_right_positions(graphs) {\n graphs.forEach(function (g) {\n var center = {\n x: 0,\n y: 0\n };\n g.array.forEach(function (node) {\n center.x += node.x;\n center.y += node.y;\n });\n center.x /= g.array.length;\n center.y /= g.array.length;\n var corner = {\n x: center.x - g.width / 2,\n y: center.y - g.height / 2\n };\n var offset = {\n x: g.x - corner.x + svg_width / 2 - real_width / 2,\n y: g.y - corner.y + svg_height / 2 - real_height / 2\n };\n g.array.forEach(function (node) {\n node.x += offset.x;\n node.y += offset.y;\n });\n });\n }\n\n function apply(data, desired_ratio) {\n var curr_best_f = Number.POSITIVE_INFINITY;\n var curr_best = 0;\n data.sort(function (a, b) {\n return b.height - a.height;\n });\n min_width = data.reduce(function (a, b) {\n return a.width < b.width ? a.width : b.width;\n });\n var left = x1 = min_width;\n var right = x2 = get_entire_width(data);\n var iterationCounter = 0;\n var f_x1 = Number.MAX_VALUE;\n var f_x2 = Number.MAX_VALUE;\n var flag = -1;\n var dx = Number.MAX_VALUE;\n var df = Number.MAX_VALUE;\n\n while (dx > min_width || df > packingOptions.FLOAT_EPSILON) {\n if (flag != 1) {\n var x1 = right - (right - left) / packingOptions.GOLDEN_SECTION;\n var f_x1 = step(data, x1);\n }\n\n if (flag != 0) {\n var x2 = left + (right - left) / packingOptions.GOLDEN_SECTION;\n var f_x2 = step(data, x2);\n }\n\n dx = Math.abs(x1 - x2);\n df = Math.abs(f_x1 - f_x2);\n\n if (f_x1 < curr_best_f) {\n curr_best_f = f_x1;\n curr_best = x1;\n }\n\n if (f_x2 < curr_best_f) {\n curr_best_f = f_x2;\n curr_best = x2;\n }\n\n if (f_x1 > f_x2) {\n left = x1;\n x1 = x2;\n f_x1 = f_x2;\n flag = 1;\n } else {\n right = x2;\n x2 = x1;\n f_x2 = f_x1;\n flag = 0;\n }\n\n if (iterationCounter++ > 100) {\n break;\n }\n }\n\n step(data, curr_best);\n }\n\n function step(data, max_width) {\n line = [];\n real_width = 0;\n real_height = 0;\n global_bottom = init_y;\n\n for (var i = 0; i < data.length; i++) {\n var o = data[i];\n put_rect(o, max_width);\n }\n\n return Math.abs(get_real_ratio() - desired_ratio);\n }\n\n function put_rect(rect, max_width) {\n var parent = undefined;\n\n for (var i = 0; i < line.length; i++) {\n if (line[i].space_left >= rect.height && line[i].x + line[i].width + rect.width + packingOptions.PADDING - max_width <= packingOptions.FLOAT_EPSILON) {\n parent = line[i];\n break;\n }\n }\n\n line.push(rect);\n\n if (parent !== undefined) {\n rect.x = parent.x + parent.width + packingOptions.PADDING;\n rect.y = parent.bottom;\n rect.space_left = rect.height;\n rect.bottom = rect.y;\n parent.space_left -= rect.height + packingOptions.PADDING;\n parent.bottom += rect.height + packingOptions.PADDING;\n } else {\n rect.y = global_bottom;\n global_bottom += rect.height + packingOptions.PADDING;\n rect.x = init_x;\n rect.bottom = rect.y;\n rect.space_left = rect.height;\n }\n\n if (rect.y + rect.height - real_height > -packingOptions.FLOAT_EPSILON) real_height = rect.y + rect.height - init_y;\n if (rect.x + rect.width - real_width > -packingOptions.FLOAT_EPSILON) real_width = rect.x + rect.width - init_x;\n }\n\n ;\n\n function get_entire_width(data) {\n var width = 0;\n data.forEach(function (d) {\n return width += d.width + packingOptions.PADDING;\n });\n return width;\n }\n\n function get_real_ratio() {\n return real_width / real_height;\n }\n}\n\nexports.applyPacking = applyPacking;\n\nfunction separateGraphs(nodes, links) {\n var marks = {};\n var ways = {};\n var graphs = [];\n var clusters = 0;\n\n for (var i = 0; i < links.length; i++) {\n var link = links[i];\n var n1 = link.source;\n var n2 = link.target;\n if (ways[n1.index]) ways[n1.index].push(n2);else ways[n1.index] = [n2];\n if (ways[n2.index]) ways[n2.index].push(n1);else ways[n2.index] = [n1];\n }\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (marks[node.index]) continue;\n explore_node(node, true);\n }\n\n function explore_node(n, is_new) {\n if (marks[n.index] !== undefined) return;\n\n if (is_new) {\n clusters++;\n graphs.push({\n array: []\n });\n }\n\n marks[n.index] = clusters;\n graphs[clusters - 1].array.push(n);\n var adjacent = ways[n.index];\n if (!adjacent) return;\n\n for (var j = 0; j < adjacent.length; j++) {\n explore_node(adjacent[j], false);\n }\n }\n\n return graphs;\n}\n\nexports.separateGraphs = separateGraphs;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar rectangle_1 = require(\"./rectangle\");\n\nvar vpsc_1 = require(\"./vpsc\");\n\nvar shortestpaths_1 = require(\"./shortestpaths\");\n\nvar NodeWrapper = function () {\n function NodeWrapper(id, rect, children) {\n this.id = id;\n this.rect = rect;\n this.children = children;\n this.leaf = typeof children === 'undefined' || children.length === 0;\n }\n\n return NodeWrapper;\n}();\n\nexports.NodeWrapper = NodeWrapper;\n\nvar Vert = function () {\n function Vert(id, x, y, node, line) {\n if (node === void 0) {\n node = null;\n }\n\n if (line === void 0) {\n line = null;\n }\n\n this.id = id;\n this.x = x;\n this.y = y;\n this.node = node;\n this.line = line;\n }\n\n return Vert;\n}();\n\nexports.Vert = Vert;\n\nvar LongestCommonSubsequence = function () {\n function LongestCommonSubsequence(s, t) {\n this.s = s;\n this.t = t;\n var mf = LongestCommonSubsequence.findMatch(s, t);\n var tr = t.slice(0).reverse();\n var mr = LongestCommonSubsequence.findMatch(s, tr);\n\n if (mf.length >= mr.length) {\n this.length = mf.length;\n this.si = mf.si;\n this.ti = mf.ti;\n this.reversed = false;\n } else {\n this.length = mr.length;\n this.si = mr.si;\n this.ti = t.length - mr.ti - mr.length;\n this.reversed = true;\n }\n }\n\n LongestCommonSubsequence.findMatch = function (s, t) {\n var m = s.length;\n var n = t.length;\n var match = {\n length: 0,\n si: -1,\n ti: -1\n };\n var l = new Array(m);\n\n for (var i = 0; i < m; i++) {\n l[i] = new Array(n);\n\n for (var j = 0; j < n; j++) {\n if (s[i] === t[j]) {\n var v = l[i][j] = i === 0 || j === 0 ? 1 : l[i - 1][j - 1] + 1;\n\n if (v > match.length) {\n match.length = v;\n match.si = i - v + 1;\n match.ti = j - v + 1;\n }\n\n ;\n } else l[i][j] = 0;\n }\n }\n\n return match;\n };\n\n LongestCommonSubsequence.prototype.getSequence = function () {\n return this.length >= 0 ? this.s.slice(this.si, this.si + this.length) : [];\n };\n\n return LongestCommonSubsequence;\n}();\n\nexports.LongestCommonSubsequence = LongestCommonSubsequence;\n\nvar GridRouter = function () {\n function GridRouter(originalnodes, accessor, groupPadding) {\n var _this = this;\n\n if (groupPadding === void 0) {\n groupPadding = 12;\n }\n\n this.originalnodes = originalnodes;\n this.groupPadding = groupPadding;\n this.leaves = null;\n this.nodes = originalnodes.map(function (v, i) {\n return new NodeWrapper(i, accessor.getBounds(v), accessor.getChildren(v));\n });\n this.leaves = this.nodes.filter(function (v) {\n return v.leaf;\n });\n this.groups = this.nodes.filter(function (g) {\n return !g.leaf;\n });\n this.cols = this.getGridLines('x');\n this.rows = this.getGridLines('y');\n this.groups.forEach(function (v) {\n return v.children.forEach(function (c) {\n return _this.nodes[c].parent = v;\n });\n });\n this.root = {\n children: []\n };\n this.nodes.forEach(function (v) {\n if (typeof v.parent === 'undefined') {\n v.parent = _this.root;\n\n _this.root.children.push(v.id);\n }\n\n v.ports = [];\n });\n this.backToFront = this.nodes.slice(0);\n this.backToFront.sort(function (x, y) {\n return _this.getDepth(x) - _this.getDepth(y);\n });\n var frontToBackGroups = this.backToFront.slice(0).reverse().filter(function (g) {\n return !g.leaf;\n });\n frontToBackGroups.forEach(function (v) {\n var r = rectangle_1.Rectangle.empty();\n v.children.forEach(function (c) {\n return r = r.union(_this.nodes[c].rect);\n });\n v.rect = r.inflate(_this.groupPadding);\n });\n var colMids = this.midPoints(this.cols.map(function (r) {\n return r.pos;\n }));\n var rowMids = this.midPoints(this.rows.map(function (r) {\n return r.pos;\n }));\n var rowx = colMids[0],\n rowX = colMids[colMids.length - 1];\n var coly = rowMids[0],\n colY = rowMids[rowMids.length - 1];\n var hlines = this.rows.map(function (r) {\n return {\n x1: rowx,\n x2: rowX,\n y1: r.pos,\n y2: r.pos\n };\n }).concat(rowMids.map(function (m) {\n return {\n x1: rowx,\n x2: rowX,\n y1: m,\n y2: m\n };\n }));\n var vlines = this.cols.map(function (c) {\n return {\n x1: c.pos,\n x2: c.pos,\n y1: coly,\n y2: colY\n };\n }).concat(colMids.map(function (m) {\n return {\n x1: m,\n x2: m,\n y1: coly,\n y2: colY\n };\n }));\n var lines = hlines.concat(vlines);\n lines.forEach(function (l) {\n return l.verts = [];\n });\n this.verts = [];\n this.edges = [];\n hlines.forEach(function (h) {\n return vlines.forEach(function (v) {\n var p = new Vert(_this.verts.length, v.x1, h.y1);\n h.verts.push(p);\n v.verts.push(p);\n\n _this.verts.push(p);\n\n var i = _this.backToFront.length;\n\n while (i-- > 0) {\n var node = _this.backToFront[i],\n r = node.rect;\n var dx = Math.abs(p.x - r.cx()),\n dy = Math.abs(p.y - r.cy());\n\n if (dx < r.width() / 2 && dy < r.height() / 2) {\n p.node = node;\n break;\n }\n }\n });\n });\n lines.forEach(function (l, li) {\n _this.nodes.forEach(function (v, i) {\n v.rect.lineIntersections(l.x1, l.y1, l.x2, l.y2).forEach(function (intersect, j) {\n var p = new Vert(_this.verts.length, intersect.x, intersect.y, v, l);\n\n _this.verts.push(p);\n\n l.verts.push(p);\n v.ports.push(p);\n });\n });\n\n var isHoriz = Math.abs(l.y1 - l.y2) < 0.1;\n\n var delta = function delta(a, b) {\n return isHoriz ? b.x - a.x : b.y - a.y;\n };\n\n l.verts.sort(delta);\n\n for (var i = 1; i < l.verts.length; i++) {\n var u = l.verts[i - 1],\n v = l.verts[i];\n if (u.node && u.node === v.node && u.node.leaf) continue;\n\n _this.edges.push({\n source: u.id,\n target: v.id,\n length: Math.abs(delta(u, v))\n });\n }\n });\n }\n\n GridRouter.prototype.avg = function (a) {\n return a.reduce(function (x, y) {\n return x + y;\n }) / a.length;\n };\n\n GridRouter.prototype.getGridLines = function (axis) {\n var columns = [];\n var ls = this.leaves.slice(0, this.leaves.length);\n\n while (ls.length > 0) {\n var overlapping = ls.filter(function (v) {\n return v.rect['overlap' + axis.toUpperCase()](ls[0].rect);\n });\n var col = {\n nodes: overlapping,\n pos: this.avg(overlapping.map(function (v) {\n return v.rect['c' + axis]();\n }))\n };\n columns.push(col);\n col.nodes.forEach(function (v) {\n return ls.splice(ls.indexOf(v), 1);\n });\n }\n\n columns.sort(function (a, b) {\n return a.pos - b.pos;\n });\n return columns;\n };\n\n GridRouter.prototype.getDepth = function (v) {\n var depth = 0;\n\n while (v.parent !== this.root) {\n depth++;\n v = v.parent;\n }\n\n return depth;\n };\n\n GridRouter.prototype.midPoints = function (a) {\n var gap = a[1] - a[0];\n var mids = [a[0] - gap / 2];\n\n for (var i = 1; i < a.length; i++) {\n mids.push((a[i] + a[i - 1]) / 2);\n }\n\n mids.push(a[a.length - 1] + gap / 2);\n return mids;\n };\n\n GridRouter.prototype.findLineage = function (v) {\n var lineage = [v];\n\n do {\n v = v.parent;\n lineage.push(v);\n } while (v !== this.root);\n\n return lineage.reverse();\n };\n\n GridRouter.prototype.findAncestorPathBetween = function (a, b) {\n var aa = this.findLineage(a),\n ba = this.findLineage(b),\n i = 0;\n\n while (aa[i] === ba[i]) {\n i++;\n }\n\n return {\n commonAncestor: aa[i - 1],\n lineages: aa.slice(i).concat(ba.slice(i))\n };\n };\n\n GridRouter.prototype.siblingObstacles = function (a, b) {\n var _this = this;\n\n var path = this.findAncestorPathBetween(a, b);\n var lineageLookup = {};\n path.lineages.forEach(function (v) {\n return lineageLookup[v.id] = {};\n });\n var obstacles = path.commonAncestor.children.filter(function (v) {\n return !(v in lineageLookup);\n });\n path.lineages.filter(function (v) {\n return v.parent !== path.commonAncestor;\n }).forEach(function (v) {\n return obstacles = obstacles.concat(v.parent.children.filter(function (c) {\n return c !== v.id;\n }));\n });\n return obstacles.map(function (v) {\n return _this.nodes[v];\n });\n };\n\n GridRouter.getSegmentSets = function (routes, x, y) {\n var vsegments = [];\n\n for (var ei = 0; ei < routes.length; ei++) {\n var route = routes[ei];\n\n for (var si = 0; si < route.length; si++) {\n var s = route[si];\n s.edgeid = ei;\n s.i = si;\n var sdx = s[1][x] - s[0][x];\n\n if (Math.abs(sdx) < 0.1) {\n vsegments.push(s);\n }\n }\n }\n\n vsegments.sort(function (a, b) {\n return a[0][x] - b[0][x];\n });\n var vsegmentsets = [];\n var segmentset = null;\n\n for (var i = 0; i < vsegments.length; i++) {\n var s = vsegments[i];\n\n if (!segmentset || Math.abs(s[0][x] - segmentset.pos) > 0.1) {\n segmentset = {\n pos: s[0][x],\n segments: []\n };\n vsegmentsets.push(segmentset);\n }\n\n segmentset.segments.push(s);\n }\n\n return vsegmentsets;\n };\n\n GridRouter.nudgeSegs = function (x, y, routes, segments, leftOf, gap) {\n var n = segments.length;\n if (n <= 1) return;\n var vs = segments.map(function (s) {\n return new vpsc_1.Variable(s[0][x]);\n });\n var cs = [];\n\n for (var i = 0; i < n; i++) {\n for (var j = 0; j < n; j++) {\n if (i === j) continue;\n var s1 = segments[i],\n s2 = segments[j],\n e1 = s1.edgeid,\n e2 = s2.edgeid,\n lind = -1,\n rind = -1;\n\n if (x == 'x') {\n if (leftOf(e1, e2)) {\n if (s1[0][y] < s1[1][y]) {\n lind = j, rind = i;\n } else {\n lind = i, rind = j;\n }\n }\n } else {\n if (leftOf(e1, e2)) {\n if (s1[0][y] < s1[1][y]) {\n lind = i, rind = j;\n } else {\n lind = j, rind = i;\n }\n }\n }\n\n if (lind >= 0) {\n cs.push(new vpsc_1.Constraint(vs[lind], vs[rind], gap));\n }\n }\n }\n\n var solver = new vpsc_1.Solver(vs, cs);\n solver.solve();\n vs.forEach(function (v, i) {\n var s = segments[i];\n var pos = v.position();\n s[0][x] = s[1][x] = pos;\n var route = routes[s.edgeid];\n if (s.i > 0) route[s.i - 1][1][x] = pos;\n if (s.i < route.length - 1) route[s.i + 1][0][x] = pos;\n });\n };\n\n GridRouter.nudgeSegments = function (routes, x, y, leftOf, gap) {\n var vsegmentsets = GridRouter.getSegmentSets(routes, x, y);\n\n for (var i = 0; i < vsegmentsets.length; i++) {\n var ss = vsegmentsets[i];\n var events = [];\n\n for (var j = 0; j < ss.segments.length; j++) {\n var s = ss.segments[j];\n events.push({\n type: 0,\n s: s,\n pos: Math.min(s[0][y], s[1][y])\n });\n events.push({\n type: 1,\n s: s,\n pos: Math.max(s[0][y], s[1][y])\n });\n }\n\n events.sort(function (a, b) {\n return a.pos - b.pos + a.type - b.type;\n });\n var open = [];\n var openCount = 0;\n events.forEach(function (e) {\n if (e.type === 0) {\n open.push(e.s);\n openCount++;\n } else {\n openCount--;\n }\n\n if (openCount == 0) {\n GridRouter.nudgeSegs(x, y, routes, open, leftOf, gap);\n open = [];\n }\n });\n }\n };\n\n GridRouter.prototype.routeEdges = function (edges, nudgeGap, source, target) {\n var _this = this;\n\n var routePaths = edges.map(function (e) {\n return _this.route(source(e), target(e));\n });\n var order = GridRouter.orderEdges(routePaths);\n var routes = routePaths.map(function (e) {\n return GridRouter.makeSegments(e);\n });\n GridRouter.nudgeSegments(routes, 'x', 'y', order, nudgeGap);\n GridRouter.nudgeSegments(routes, 'y', 'x', order, nudgeGap);\n GridRouter.unreverseEdges(routes, routePaths);\n return routes;\n };\n\n GridRouter.unreverseEdges = function (routes, routePaths) {\n routes.forEach(function (segments, i) {\n var path = routePaths[i];\n\n if (path.reversed) {\n segments.reverse();\n segments.forEach(function (segment) {\n segment.reverse();\n });\n }\n });\n };\n\n GridRouter.angleBetween2Lines = function (line1, line2) {\n var angle1 = Math.atan2(line1[0].y - line1[1].y, line1[0].x - line1[1].x);\n var angle2 = Math.atan2(line2[0].y - line2[1].y, line2[0].x - line2[1].x);\n var diff = angle1 - angle2;\n\n if (diff > Math.PI || diff < -Math.PI) {\n diff = angle2 - angle1;\n }\n\n return diff;\n };\n\n GridRouter.isLeft = function (a, b, c) {\n return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x) <= 0;\n };\n\n GridRouter.getOrder = function (pairs) {\n var outgoing = {};\n\n for (var i = 0; i < pairs.length; i++) {\n var p = pairs[i];\n if (typeof outgoing[p.l] === 'undefined') outgoing[p.l] = {};\n outgoing[p.l][p.r] = true;\n }\n\n return function (l, r) {\n return typeof outgoing[l] !== 'undefined' && outgoing[l][r];\n };\n };\n\n GridRouter.orderEdges = function (edges) {\n var edgeOrder = [];\n\n for (var i = 0; i < edges.length - 1; i++) {\n for (var j = i + 1; j < edges.length; j++) {\n var e = edges[i],\n f = edges[j],\n lcs = new LongestCommonSubsequence(e, f);\n var u, vi, vj;\n if (lcs.length === 0) continue;\n\n if (lcs.reversed) {\n f.reverse();\n f.reversed = true;\n lcs = new LongestCommonSubsequence(e, f);\n }\n\n if ((lcs.si <= 0 || lcs.ti <= 0) && (lcs.si + lcs.length >= e.length || lcs.ti + lcs.length >= f.length)) {\n edgeOrder.push({\n l: i,\n r: j\n });\n continue;\n }\n\n if (lcs.si + lcs.length >= e.length || lcs.ti + lcs.length >= f.length) {\n u = e[lcs.si + 1];\n vj = e[lcs.si - 1];\n vi = f[lcs.ti - 1];\n } else {\n u = e[lcs.si + lcs.length - 2];\n vi = e[lcs.si + lcs.length];\n vj = f[lcs.ti + lcs.length];\n }\n\n if (GridRouter.isLeft(u, vi, vj)) {\n edgeOrder.push({\n l: j,\n r: i\n });\n } else {\n edgeOrder.push({\n l: i,\n r: j\n });\n }\n }\n }\n\n return GridRouter.getOrder(edgeOrder);\n };\n\n GridRouter.makeSegments = function (path) {\n function copyPoint(p) {\n return {\n x: p.x,\n y: p.y\n };\n }\n\n var isStraight = function isStraight(a, b, c) {\n return Math.abs((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) < 0.001;\n };\n\n var segments = [];\n var a = copyPoint(path[0]);\n\n for (var i = 1; i < path.length; i++) {\n var b = copyPoint(path[i]),\n c = i < path.length - 1 ? path[i + 1] : null;\n\n if (!c || !isStraight(a, b, c)) {\n segments.push([a, b]);\n a = b;\n }\n }\n\n return segments;\n };\n\n GridRouter.prototype.route = function (s, t) {\n var _this = this;\n\n var source = this.nodes[s],\n target = this.nodes[t];\n this.obstacles = this.siblingObstacles(source, target);\n var obstacleLookup = {};\n this.obstacles.forEach(function (o) {\n return obstacleLookup[o.id] = o;\n });\n this.passableEdges = this.edges.filter(function (e) {\n var u = _this.verts[e.source],\n v = _this.verts[e.target];\n return !(u.node && u.node.id in obstacleLookup || v.node && v.node.id in obstacleLookup);\n });\n\n for (var i = 1; i < source.ports.length; i++) {\n var u = source.ports[0].id;\n var v = source.ports[i].id;\n this.passableEdges.push({\n source: u,\n target: v,\n length: 0\n });\n }\n\n for (var i = 1; i < target.ports.length; i++) {\n var u = target.ports[0].id;\n var v = target.ports[i].id;\n this.passableEdges.push({\n source: u,\n target: v,\n length: 0\n });\n }\n\n var getSource = function getSource(e) {\n return e.source;\n },\n getTarget = function getTarget(e) {\n return e.target;\n },\n getLength = function getLength(e) {\n return e.length;\n };\n\n var shortestPathCalculator = new shortestpaths_1.Calculator(this.verts.length, this.passableEdges, getSource, getTarget, getLength);\n\n var bendPenalty = function bendPenalty(u, v, w) {\n var a = _this.verts[u],\n b = _this.verts[v],\n c = _this.verts[w];\n var dx = Math.abs(c.x - a.x),\n dy = Math.abs(c.y - a.y);\n if (a.node === source && a.node === b.node || b.node === target && b.node === c.node) return 0;\n return dx > 1 && dy > 1 ? 1000 : 0;\n };\n\n var shortestPath = shortestPathCalculator.PathFromNodeToNodeWithPrevCost(source.ports[0].id, target.ports[0].id, bendPenalty);\n var pathPoints = shortestPath.reverse().map(function (vi) {\n return _this.verts[vi];\n });\n pathPoints.push(this.nodes[target.id].ports[0]);\n return pathPoints.filter(function (v, i) {\n return !(i < pathPoints.length - 1 && pathPoints[i + 1].node === source && v.node === source || i > 0 && v.node === target && pathPoints[i - 1].node === target);\n });\n };\n\n GridRouter.getRoutePath = function (route, cornerradius, arrowwidth, arrowheight) {\n var result = {\n routepath: 'M ' + route[0][0].x + ' ' + route[0][0].y + ' ',\n arrowpath: ''\n };\n\n if (route.length > 1) {\n for (var i = 0; i < route.length; i++) {\n var li = route[i];\n var x = li[1].x,\n y = li[1].y;\n var dx = x - li[0].x;\n var dy = y - li[0].y;\n\n if (i < route.length - 1) {\n if (Math.abs(dx) > 0) {\n x -= dx / Math.abs(dx) * cornerradius;\n } else {\n y -= dy / Math.abs(dy) * cornerradius;\n }\n\n result.routepath += 'L ' + x + ' ' + y + ' ';\n var l = route[i + 1];\n var x0 = l[0].x,\n y0 = l[0].y;\n var x1 = l[1].x;\n var y1 = l[1].y;\n dx = x1 - x0;\n dy = y1 - y0;\n var angle = GridRouter.angleBetween2Lines(li, l) < 0 ? 1 : 0;\n var x2, y2;\n\n if (Math.abs(dx) > 0) {\n x2 = x0 + dx / Math.abs(dx) * cornerradius;\n y2 = y0;\n } else {\n x2 = x0;\n y2 = y0 + dy / Math.abs(dy) * cornerradius;\n }\n\n var cx = Math.abs(x2 - x);\n var cy = Math.abs(y2 - y);\n result.routepath += 'A ' + cx + ' ' + cy + ' 0 0 ' + angle + ' ' + x2 + ' ' + y2 + ' ';\n } else {\n var arrowtip = [x, y];\n var arrowcorner1, arrowcorner2;\n\n if (Math.abs(dx) > 0) {\n x -= dx / Math.abs(dx) * arrowheight;\n arrowcorner1 = [x, y + arrowwidth];\n arrowcorner2 = [x, y - arrowwidth];\n } else {\n y -= dy / Math.abs(dy) * arrowheight;\n arrowcorner1 = [x + arrowwidth, y];\n arrowcorner2 = [x - arrowwidth, y];\n }\n\n result.routepath += 'L ' + x + ' ' + y + ' ';\n\n if (arrowheight > 0) {\n result.arrowpath = 'M ' + arrowtip[0] + ' ' + arrowtip[1] + ' L ' + arrowcorner1[0] + ' ' + arrowcorner1[1] + ' L ' + arrowcorner2[0] + ' ' + arrowcorner2[1];\n }\n }\n }\n } else {\n var li = route[0];\n var x = li[1].x,\n y = li[1].y;\n var dx = x - li[0].x;\n var dy = y - li[0].y;\n var arrowtip = [x, y];\n var arrowcorner1, arrowcorner2;\n\n if (Math.abs(dx) > 0) {\n x -= dx / Math.abs(dx) * arrowheight;\n arrowcorner1 = [x, y + arrowwidth];\n arrowcorner2 = [x, y - arrowwidth];\n } else {\n y -= dy / Math.abs(dy) * arrowheight;\n arrowcorner1 = [x + arrowwidth, y];\n arrowcorner2 = [x - arrowwidth, y];\n }\n\n result.routepath += 'L ' + x + ' ' + y + ' ';\n\n if (arrowheight > 0) {\n result.arrowpath = 'M ' + arrowtip[0] + ' ' + arrowtip[1] + ' L ' + arrowcorner1[0] + ' ' + arrowcorner1[1] + ' L ' + arrowcorner2[0] + ' ' + arrowcorner2[1];\n }\n }\n\n return result;\n };\n\n return GridRouter;\n}();\n\nexports.GridRouter = GridRouter;","function _typeof2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\n/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) === 'object' && (typeof module === \"undefined\" ? \"undefined\" : _typeof2(module)) === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) === 'object') exports[\"Quill\"] = factory();else root[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function () {\n return (\n /******/\n function (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n /******/\n configurable: false,\n\n /******/\n enumerable: true,\n\n /******/\n get: getter\n /******/\n\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"\";\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = 109);\n /******/\n }([\n /* 0 */\n\n /***/\n\n /* 1 */\n\n /***/\n\n /* 2 */\n\n /***/\n\n /* 3 */\n\n /***/\n\n /* 4 */\n\n /***/\n\n /* 5 */\n\n /***/\n\n /* 6 */\n\n /***/\n\n /* 7 */\n\n /***/\n\n /* 8 */\n\n /***/\n\n /* 9 */\n\n /***/\n\n /* 10 */\n\n /***/\n\n /* 11 */\n\n /***/\n\n /* 12 */\n\n /***/\n\n /* 13 */\n\n /***/\n\n /* 14 */\n\n /***/\n\n /* 15 */\n\n /***/\n\n /* 16 */\n\n /***/\n\n /* 17 */\n\n /***/\n\n /* 18 */\n\n /***/\n\n /* 19 */\n\n /***/\n\n /* 20 */\n\n /***/\n\n /* 21 */\n\n /***/\n\n /* 22 */\n\n /***/\n\n /* 23 */\n\n /***/\n\n /* 24 */\n\n /***/\n\n /* 25 */\n\n /***/\n\n /* 26 */\n\n /***/\n\n /* 27 */\n\n /***/\n\n /* 28 */\n\n /***/\n\n /* 29 */\n\n /***/\n\n /* 30 */\n\n /***/\n\n /* 31 */\n\n /***/\n\n /* 32 */\n\n /***/\n\n /* 33 */\n\n /***/\n\n /* 34 */\n\n /***/\n\n /* 35 */\n\n /***/\n\n /* 36 */\n\n /***/\n\n /* 37 */\n\n /***/\n\n /* 38 */\n\n /***/\n\n /* 39 */\n\n /***/\n\n /* 40 */\n\n /***/\n\n /* 41 */\n\n /***/\n\n /* 42 */\n\n /***/\n\n /* 43 */\n\n /***/\n\n /* 44 */\n\n /***/\n\n /* 45 */\n\n /***/\n\n /* 46 */\n\n /***/\n\n /* 47 */\n\n /***/\n\n /* 48 */\n\n /***/\n\n /* 49 */\n\n /***/\n\n /* 50 */\n\n /***/\n\n /* 51 */\n\n /***/\n\n /* 52 */\n\n /***/\n\n /* 53 */\n\n /***/\n\n /* 54 */\n\n /***/\n\n /* 55 */\n\n /***/\n\n /* 56 */\n\n /***/\n\n /* 57 */\n\n /***/\n\n /* 58 */\n\n /***/\n\n /* 59 */\n\n /***/\n\n /* 60 */\n\n /***/\n\n /* 61 */\n\n /***/\n\n /* 62 */\n\n /***/\n\n /* 63 */\n\n /***/\n\n /* 64 */\n\n /***/\n\n /* 65 */\n\n /***/\n\n /* 66 */\n\n /***/\n\n /* 67 */\n\n /***/\n\n /* 68 */\n\n /***/\n\n /* 69 */\n\n /***/\n\n /* 70 */\n\n /***/\n\n /* 71 */\n\n /***/\n\n /* 72 */\n\n /***/\n\n /* 73 */\n\n /***/\n\n /* 74 */\n\n /***/\n\n /* 75 */\n\n /***/\n\n /* 76 */\n\n /***/\n\n /* 77 */\n\n /***/\n\n /* 78 */\n\n /***/\n\n /* 79 */\n\n /***/\n\n /* 80 */\n\n /***/\n\n /* 81 */\n\n /***/\n\n /* 82 */\n\n /***/\n\n /* 83 */\n\n /***/\n\n /* 84 */\n\n /***/\n\n /* 85 */\n\n /***/\n\n /* 86 */\n\n /***/\n\n /* 87 */\n\n /***/\n\n /* 88 */\n\n /***/\n\n /* 89 */\n\n /***/\n\n /* 90 */\n\n /***/\n\n /* 91 */\n\n /***/\n\n /* 92 */\n\n /***/\n\n /* 93 */\n\n /***/\n\n /* 94 */\n\n /***/\n\n /* 95 */\n\n /***/\n\n /* 96 */\n\n /***/\n\n /* 97 */\n\n /***/\n\n /* 98 */\n\n /***/\n\n /* 99 */\n\n /***/\n\n /* 100 */\n\n /***/\n\n /* 101 */\n\n /***/\n\n /* 102 */\n\n /***/\n\n /* 103 */\n\n /***/\n\n /* 104 */\n\n /***/\n\n /* 105 */\n\n /***/\n\n /* 106 */\n\n /***/\n\n /* 107 */\n\n /***/\n\n /* 108 */\n\n /***/\n\n /* 109 */\n\n /***/\n\n /******/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var container_1 = __webpack_require__(17);\n\n var format_1 = __webpack_require__(18);\n\n var leaf_1 = __webpack_require__(19);\n\n var scroll_1 = __webpack_require__(45);\n\n var inline_1 = __webpack_require__(46);\n\n var block_1 = __webpack_require__(47);\n\n var embed_1 = __webpack_require__(48);\n\n var text_1 = __webpack_require__(49);\n\n var attributor_1 = __webpack_require__(12);\n\n var class_1 = __webpack_require__(32);\n\n var style_1 = __webpack_require__(33);\n\n var store_1 = __webpack_require__(31);\n\n var Registry = __webpack_require__(1);\n\n var 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 };\n exports.default = Parchment;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var ParchmentError = function (_super) {\n __extends(ParchmentError, _super);\n\n function ParchmentError(message) {\n var _this = this;\n\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return ParchmentError;\n }(Error);\n\n exports.ParchmentError = ParchmentError;\n var attributes = {};\n var classes = {};\n var tags = {};\n var types = {};\n exports.DATA_KEY = '__blot';\n var Scope;\n\n (function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n })(Scope = exports.Scope || (exports.Scope = {}));\n\n function create(input, value) {\n var match = query(input);\n\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n\n var BlotClass = match;\n var node = // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n }\n\n exports.create = create;\n\n function find(node, bubble) {\n if (bubble === void 0) {\n bubble = false;\n }\n\n if (node == null) return null; // @ts-ignore\n\n if (node[exports.DATA_KEY] != null) return node[exports.DATA_KEY].blot;\n if (bubble) return find(node.parentNode, bubble);\n return null;\n }\n\n exports.find = find;\n\n function query(query, scope) {\n if (scope === void 0) {\n scope = Scope.ANY;\n }\n\n var match;\n\n if (typeof query === 'string') {\n match = types[query] || attributes[query]; // @ts-ignore\n } else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n } else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n } else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n } else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n\n for (var i in names) {\n match = classes[names[i]];\n if (match) break;\n }\n\n match = match || tags[query.tagName];\n }\n\n if (match == null) return null; // @ts-ignore\n\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope) return match;\n return null;\n }\n\n exports.query = query;\n\n function register() {\n var Definitions = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n\n var Definition = Definitions[0];\n\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n } else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n\n types[Definition.blotName || Definition.attrName] = Definition;\n\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n } else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\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 } else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\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\n return Definition;\n }\n\n exports.register = register;\n /***/\n }, function (module, exports, __webpack_require__) {\n var diff = __webpack_require__(51);\n\n var equal = __webpack_require__(11);\n\n var extend = __webpack_require__(3);\n\n var op = __webpack_require__(20);\n\n var NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n var Delta = function Delta(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 Delta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n\n if (attributes != null && _typeof2(attributes) === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n\n return this.push(newOp);\n };\n\n Delta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({\n 'delete': length\n });\n };\n\n Delta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = {\n retain: length\n };\n\n if (attributes != null && _typeof2(attributes) === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n\n return this.push(newOp);\n };\n\n Delta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n\n if (_typeof2(lastOp) === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = {\n 'delete': lastOp['delete'] + newOp['delete']\n };\n return this;\n } // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n\n\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n\n if (_typeof2(lastOp) !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = {\n insert: lastOp.insert + newOp.insert\n };\n if (_typeof2(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] = {\n retain: lastOp.retain + newOp.retain\n };\n if (_typeof2(newOp.attributes) === 'object') this.ops[index - 1].attributes = newOp.attributes;\n return this;\n }\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\n return this;\n };\n\n Delta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n\n return this;\n };\n\n Delta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n };\n\n Delta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n };\n\n Delta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n };\n\n Delta.prototype.partition = function (predicate) {\n var passed = [],\n failed = [];\n this.forEach(function (op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n };\n\n Delta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n };\n\n Delta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n\n return length;\n }, 0);\n };\n\n Delta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n };\n\n Delta.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\n while (index < end && iter.hasNext()) {\n var nextOp;\n\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n\n index += op.length(nextOp);\n }\n\n return new Delta(ops);\n };\n\n Delta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n\n var delta = new Delta(ops);\n\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\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n } // Preserve null when composing with a retain, otherwise remove it for inserts\n\n\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp); // Optimization if rest of other is just retain\n\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n } // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n\n return delta.chop();\n };\n\n Delta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n\n return delta;\n };\n\n Delta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n\n var prep = delta === other ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n\n while (length > 0) {\n var opLength = 0;\n\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n\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\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\n break;\n }\n\n length -= opLength;\n }\n });\n return delta.chop();\n };\n\n Delta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ? thisOp.insert.indexOf(newline, start) - start : -1;\n\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n\n i += 1;\n line = new Delta();\n }\n }\n\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n };\n\n Delta.prototype.transform = function (other, priority) {\n priority = !!priority;\n\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n\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\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\n return delta.chop();\n };\n\n Delta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n\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\n offset += length;\n }\n\n return index;\n };\n\n module.exports = Delta;\n /***/\n }, function (module, exports) {\n 'use strict';\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n var defineProperty = Object.defineProperty;\n var gOPD = Object.getOwnPropertyDescriptor;\n\n var isArray = function isArray(arr) {\n if (typeof Array.isArray === 'function') {\n return Array.isArray(arr);\n }\n\n return toStr.call(arr) === '[object Array]';\n };\n\n var isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object\n\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n } // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n\n\n var key;\n\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n }; // If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\n\n\n var setProperty = function setProperty(target, options) {\n if (defineProperty && options.name === '__proto__') {\n defineProperty(target, options.name, {\n enumerable: true,\n configurable: true,\n value: options.newValue,\n writable: true\n });\n } else {\n target[options.name] = options.newValue;\n }\n }; // Return undefined instead of __proto__ if '__proto__' is not an own property\n\n\n var getProperty = function getProperty(obj, name) {\n if (name === '__proto__') {\n if (!hasOwn.call(obj, name)) {\n return void 0;\n } else if (gOPD) {\n // In early versions of node, obj['__proto__'] is buggy when obj has\n // __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n return gOPD(obj, name).value;\n }\n }\n\n return obj[name];\n };\n\n module.exports = function extend() {\n var options, name, src, copy, copyIsArray, clone;\n var target = arguments[0];\n var i = 1;\n var length = arguments.length;\n var deep = false; // Handle a deep copy situation\n\n if (typeof target === 'boolean') {\n deep = target;\n target = arguments[1] || {}; // skip the boolean and the target\n\n i = 2;\n }\n\n if (target == null || _typeof2(target) !== 'object' && typeof target !== 'function') {\n target = {};\n }\n\n for (; i < length; ++i) {\n options = arguments[i]; // Only deal with non-null/undefined values\n\n if (options != null) {\n // Extend the base object\n for (name in options) {\n src = getProperty(target, name);\n copy = getProperty(options, name); // Prevent never-ending loop\n\n if (target !== copy) {\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && isArray(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n } // Never move original objects, clone them\n\n\n setProperty(target, {\n name: name,\n newValue: extend(deep, clone, copy)\n }); // Don't bring in undefined values\n } else if (typeof copy !== 'undefined') {\n setProperty(target, {\n name: name,\n newValue: copy\n });\n }\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n };\n /***/\n\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _break = __webpack_require__(16);\n\n var _break2 = _interopRequireDefault(_break);\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var NEWLINE_LENGTH = 1;\n\n var BlockEmbed = function (_Parchment$Embed) {\n _inherits(BlockEmbed, _Parchment$Embed);\n\n function BlockEmbed() {\n _classCallCheck(this, BlockEmbed);\n\n return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n }\n\n _createClass(BlockEmbed, [{\n key: 'attach',\n value: function attach() {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n\n this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n }\n }, {\n key: 'delta',\n value: function delta() {\n return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n this.format(name, value);\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n var block = _parchment2.default.create(Block.blotName);\n\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n }\n }\n }]);\n\n return BlockEmbed;\n }(_parchment2.default.Embed);\n\n BlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT; // It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n var Block = function (_Parchment$Block) {\n _inherits(Block, _Parchment$Block);\n\n function Block(domNode) {\n _classCallCheck(this, Block);\n\n var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n _this2.cache = {};\n return _this2;\n }\n\n _createClass(Block, [{\n key: 'delta',\n value: function delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n }\n\n return this.cache.delta;\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n\n this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\n\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n }\n\n this.cache = {};\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n if (value.length === 0) return;\n var lines = value.split('\\n');\n var text = lines.shift();\n\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n\n this.cache = {};\n }\n\n var block = this;\n lines.reduce(function (index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n var head = this.children.head;\n\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n\n if (head instanceof _break2.default) {\n head.remove();\n }\n\n this.cache = {};\n }\n }, {\n key: 'length',\n value: function length() {\n if (this.cache.length == null) {\n this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n }\n\n return this.cache.length;\n }\n }, {\n key: 'moveChildren',\n value: function moveChildren(target, ref) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n\n this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n\n this.cache = {};\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n }\n }, {\n key: 'removeChild',\n value: function removeChild(child) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n\n this.cache = {};\n }\n }, {\n key: 'split',\n value: function split(index) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n var clone = this.clone();\n\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n\n this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n }(_parchment2.default.Block);\n\n Block.blotName = 'block';\n Block.tagName = 'P';\n Block.defaultChild = 'break';\n Block.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\n function bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (blot == null) return formats;\n\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2.default)(formats, blot.formats());\n }\n\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n\n return bubbleFormats(blot.parent, formats);\n }\n\n exports.bubbleFormats = bubbleFormats;\n exports.BlockEmbed = BlockEmbed;\n exports.default = Block;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = exports.overload = exports.expandConfig = undefined;\n\n var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n __webpack_require__(50);\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _editor = __webpack_require__(14);\n\n var _editor2 = _interopRequireDefault(_editor);\n\n var _emitter3 = __webpack_require__(8);\n\n var _emitter4 = _interopRequireDefault(_emitter3);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _selection = __webpack_require__(15);\n\n var _selection2 = _interopRequireDefault(_selection);\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n var _theme = __webpack_require__(34);\n\n var _theme2 = _interopRequireDefault(_theme);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var debug = (0, _logger2.default)('quill');\n\n var Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n\n _logger2.default.level(limit);\n }\n }, {\n key: 'find',\n value: function find(node) {\n return node.__quill || _parchment2.default.find(node);\n }\n }, {\n key: 'import',\n value: function _import(name) {\n if (this.imports[name] == null) {\n debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n }\n\n return this.imports[name];\n }\n }, {\n key: 'register',\n value: function register(path, target) {\n var _this = this;\n\n var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof path !== 'string') {\n var name = path.attrName || path.blotName;\n\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach(function (key) {\n _this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn('Overwriting ' + path + ' with', target);\n }\n\n this.imports[path] = target;\n\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n _parchment2.default.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n }]);\n\n function Quill(container) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Quill);\n\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n\n var html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new _emitter4.default();\n this.scroll = _parchment2.default.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new _editor2.default(this.scroll);\n this.selection = new _selection2.default(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n if (type === _emitter4.default.events.TEXT_CHANGE) {\n _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n var range = _this2.selection.lastRange;\n var index = range && range.length === 0 ? range.index : undefined;\n modify.call(_this2, function () {\n return _this2.editor.update(null, mutations, index);\n }, source);\n });\n var contents = this.clipboard.convert('
' + html + '


');\n this.setContents(contents);\n this.history.clear();\n\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n _createClass(Quill, [{\n key: 'addContainer',\n value: function addContainer(container) {\n var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof container === 'string') {\n var className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n\n this.container.insertBefore(container, refNode);\n return container;\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.selection.setRange(null);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length, source) {\n var _this3 = this;\n\n var _overload = overload(index, length, source);\n\n var _overload2 = _slicedToArray(_overload, 4);\n\n index = _overload2[0];\n length = _overload2[1];\n source = _overload2[3];\n return modify.call(this, function () {\n return _this3.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.enable(false);\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n }, {\n key: 'focus',\n value: function focus() {\n var scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var _this4 = this;\n\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n\n var change = new _quillDelta2.default();\n\n if (range == null) {\n return change;\n } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n } else if (range.length === 0) {\n _this4.selection.format(name, value);\n\n return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n\n _this4.setSelection(range, _emitter4.default.sources.SILENT);\n\n return change;\n }, source);\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length, name, value, source) {\n var _this5 = this;\n\n var formats = void 0;\n\n var _overload3 = overload(index, length, name, value, source);\n\n var _overload4 = _slicedToArray(_overload3, 4);\n\n index = _overload4[0];\n length = _overload4[1];\n formats = _overload4[2];\n source = _overload4[3];\n return modify.call(this, function () {\n return _this5.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length, name, value, source) {\n var _this6 = this;\n\n var formats = void 0;\n\n var _overload5 = overload(index, length, name, value, source);\n\n var _overload6 = _slicedToArray(_overload5, 4);\n\n index = _overload6[0];\n length = _overload6[1];\n formats = _overload6[2];\n source = _overload6[3];\n return modify.call(this, function () {\n return _this6.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var bounds = void 0;\n\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n\n var containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n }, {\n key: 'getContents',\n value: function getContents() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload7 = overload(index, length);\n\n var _overload8 = _slicedToArray(_overload7, 2);\n\n index = _overload8[0];\n length = _overload8[1];\n return this.editor.getContents(index, length);\n }\n }, {\n key: 'getFormat',\n value: function getFormat() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n }, {\n key: 'getIndex',\n value: function getIndex(blot) {\n return blot.offset(this.scroll);\n }\n }, {\n key: 'getLength',\n value: function getLength() {\n return this.scroll.length();\n }\n }, {\n key: 'getLeaf',\n value: function getLeaf(index) {\n return this.scroll.leaf(index);\n }\n }, {\n key: 'getLine',\n value: function getLine(index) {\n return this.scroll.line(index);\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n }, {\n key: 'getModule',\n value: function getModule(name) {\n return this.theme.modules[name];\n }\n }, {\n key: 'getSelection',\n value: function getSelection() {\n var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n\n return this.selection.getRange()[0];\n }\n }, {\n key: 'getText',\n value: function getText() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload9 = overload(index, length);\n\n var _overload10 = _slicedToArray(_overload9, 2);\n\n index = _overload10[0];\n length = _overload10[1];\n return this.editor.getText(index, length);\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return this.selection.hasFocus();\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n var _this7 = this;\n\n var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n return modify.call(this, function () {\n return _this7.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text, name, value, source) {\n var _this8 = this;\n\n var formats = void 0;\n\n var _overload11 = overload(index, 0, name, value, source);\n\n var _overload12 = _slicedToArray(_overload11, 4);\n\n index = _overload12[0];\n formats = _overload12[2];\n source = _overload12[3];\n return modify.call(this, function () {\n return _this8.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n }, {\n key: 'off',\n value: function off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n }, {\n key: 'on',\n value: function on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n }, {\n key: 'once',\n value: function once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n }, {\n key: 'pasteHTML',\n value: function pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length, source) {\n var _this9 = this;\n\n var _overload13 = overload(index, length, source);\n\n var _overload14 = _slicedToArray(_overload13, 4);\n\n index = _overload14[0];\n length = _overload14[1];\n source = _overload14[3];\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }, {\n key: 'setContents',\n value: function setContents(delta) {\n var _this10 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n\n var length = _this10.getLength();\n\n var deleted = _this10.editor.deleteText(0, length);\n\n var applied = _this10.editor.applyDelta(delta);\n\n var lastOp = applied.ops[applied.ops.length - 1];\n\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n\n applied.delete(1);\n }\n\n var ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n }, {\n key: 'setSelection',\n value: function setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n var _overload15 = overload(index, length, source);\n\n var _overload16 = _slicedToArray(_overload15, 4);\n\n index = _overload16[0];\n length = _overload16[1];\n source = _overload16[3];\n this.selection.setRange(new _selection.Range(index, length), source);\n\n if (source !== _emitter4.default.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n }, {\n key: 'setText',\n value: function setText(text) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n var delta = new _quillDelta2.default().insert(text);\n return this.setContents(delta, source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n\n this.selection.update(source);\n return change;\n }\n }, {\n key: 'updateContents',\n value: function updateContents(delta) {\n var _this11 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n return _this11.editor.applyDelta(delta, source);\n }, source, true);\n }\n }]);\n\n return Quill;\n }();\n\n Quill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n };\n Quill.events = _emitter4.default.events;\n Quill.sources = _emitter4.default.sources; // eslint-disable-next-line no-undef\n\n Quill.version = false ? 'dev' : \"1.3.7\";\n Quill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n };\n\n function expandConfig(container, userConfig) {\n userConfig = (0, _extend2.default)(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n\n var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill.import('modules/' + name);\n\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\n return config;\n }, {}); // Special case toolbar shorthand\n\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, {\n modules: moduleConfig\n }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n\n return config;\n }, {});\n return userConfig;\n } // Handle selection preservation and TEXT_CHANGE emission\n // common to modification APIs\n\n\n function modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n\n if (range != null) {\n if (index === true) index = range.index;\n\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n\n return change;\n }\n\n function overload(index, length, name, value, source) {\n var formats = {};\n\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 } // Handle format being object, two format name/value strings or excluded\n\n\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n } // Handle optional source\n\n\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n }\n\n function shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n\n if (index instanceof _quillDelta2.default) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n\n return new _selection.Range(start, end - start);\n }\n\n exports.expandConfig = expandConfig;\n exports.overload = overload;\n exports.default = Quill;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Inline = function (_Parchment$Inline) {\n _inherits(Inline, _Parchment$Inline);\n\n function Inline() {\n _classCallCheck(this, Inline);\n\n return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n _createClass(Inline, [{\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n var blot = this.isolate(index, length);\n\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n var parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n }], [{\n key: 'compare',\n value: function compare(self, other) {\n var selfIndex = Inline.order.indexOf(self);\n var otherIndex = Inline.order.indexOf(other);\n\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n }]);\n\n return Inline;\n }(_parchment2.default.Inline);\n\n Inline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default]; // Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n\n Inline.order = ['cursor', 'inline', // Must be lower\n 'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n ];\n exports.default = Inline;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var TextBlot = function (_Parchment$Text) {\n _inherits(TextBlot, _Parchment$Text);\n\n function TextBlot() {\n _classCallCheck(this, TextBlot);\n\n return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n }\n\n return TextBlot;\n }(_parchment2.default.Text);\n\n exports.default = TextBlot;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _eventemitter = __webpack_require__(54);\n\n var _eventemitter2 = _interopRequireDefault(_eventemitter);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var debug = (0, _logger2.default)('quill:events');\n var EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n EVENTS.forEach(function (eventName) {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n var _node$__quill$emitter;\n\n (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n }\n });\n });\n });\n\n var Emitter = function (_EventEmitter) {\n _inherits(Emitter, _EventEmitter);\n\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n _this.listeners = {};\n\n _this.on('error', debug.error);\n\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }, {\n key: 'handleDOM',\n value: function handleDOM(event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (this.listeners[event.type] || []).forEach(function (_ref) {\n var node = _ref.node,\n handler = _ref.handler;\n\n if (event.target === node || node.contains(event.target)) {\n handler.apply(undefined, [event].concat(args));\n }\n });\n }\n }, {\n key: 'listenDOM',\n value: function listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n\n this.listeners[eventName].push({\n node: node,\n handler: handler\n });\n }\n }]);\n\n return Emitter;\n }(_eventemitter2.default);\n\n Emitter.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 };\n Emitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n };\n exports.default = Emitter;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Module = function Module(quill) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Module);\n\n this.quill = quill;\n this.options = options;\n };\n\n Module.DEFAULTS = {};\n exports.default = Module;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var levels = ['error', 'warn', 'log', 'info'];\n var level = 'warn';\n\n function debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n\n }\n }\n\n function namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n }\n\n debug.level = namespace.level = function (newLevel) {\n level = newLevel;\n };\n\n exports.default = namespace;\n /***/\n }, function (module, exports, __webpack_require__) {\n var pSlice = Array.prototype.slice;\n\n var objectKeys = __webpack_require__(52);\n\n var isArguments = __webpack_require__(53);\n\n var deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {}; // 7.1. All identical values are equivalent, as determined by ===.\n\n if (actual === expected) {\n return true;\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime(); // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || _typeof2(actual) != 'object' && _typeof2(expected) != 'object') {\n return opts.strict ? actual === expected : actual == expected; // 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\n function isUndefinedOrNull(value) {\n return value === null || value === undefined;\n }\n\n function isBuffer(x) {\n if (!x || _typeof2(x) !== 'object' || typeof x.length !== 'number') return false;\n\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n }\n\n function objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) return false; // an identical 'prototype' property.\n\n if (a.prototype !== b.prototype) return false; //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n\n if (a.length !== b.length) return false;\n\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {\n //happens when one is a string literal and the other isn't\n return false;\n } // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n\n\n if (ka.length != kb.length) return false; //the same set of keys (although not necessarily the same order),\n\n ka.sort();\n kb.sort(); //~~~cheap key test\n\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) return false;\n } //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n\n\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\n return _typeof2(a) === _typeof2(b);\n }\n /***/\n\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Registry = __webpack_require__(1);\n\n var Attributor = function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = options.scope & Registry.Scope.LEVEL | attributeBit;\n } else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n\n if (options.whitelist != null) this.whitelist = options.whitelist;\n }\n\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value)) return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\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) return false;\n if (this.whitelist == null) return true;\n\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n } else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n\n if (this.canAdd(node, value) && value) {\n return value;\n }\n\n return '';\n };\n\n return Attributor;\n }();\n\n exports.default = Attributor;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = exports.Code = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Code = function (_Inline) {\n _inherits(Code, _Inline);\n\n function Code() {\n _classCallCheck(this, Code);\n\n return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n }\n\n return Code;\n }(_inline2.default);\n\n Code.blotName = 'code';\n Code.tagName = 'CODE';\n\n var CodeBlock = function (_Block) {\n _inherits(CodeBlock, _Block);\n\n function CodeBlock() {\n _classCallCheck(this, CodeBlock);\n\n return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n }\n\n _createClass(CodeBlock, [{\n key: 'delta',\n value: function delta() {\n var _this3 = this;\n\n var text = this.domNode.textContent;\n\n if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\n }\n\n return text.split('\\n').reduce(function (delta, frag) {\n return delta.insert(frag).insert('\\n', _this3.formats());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (name === this.statics.blotName && value) return;\n\n var _descendant = this.descendant(_text2.default, this.length() - 1),\n _descendant2 = _slicedToArray(_descendant, 1),\n text = _descendant2[0];\n\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length === 0) return;\n\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\n }\n\n var nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n var prevNewline = this.newlineIndex(index, true) + 1;\n var isolateLength = nextNewline - prevNewline + 1;\n var blot = this.isolate(prevNewline, isolateLength);\n var next = blot.next;\n blot.format(name, value);\n\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return;\n\n var _descendant3 = this.descendant(_text2.default, index),\n _descendant4 = _slicedToArray(_descendant3, 2),\n text = _descendant4[0],\n offset = _descendant4[1];\n\n text.insertAt(offset, value);\n }\n }, {\n key: 'length',\n value: function length() {\n var length = this.domNode.textContent.length;\n\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n\n return length;\n }\n }, {\n key: 'newlineIndex',\n value: function newlineIndex(searchIndex) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!reverse) {\n var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2.default.create('text', '\\n'));\n }\n\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n\n var next = this.next;\n\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2.default.find(node);\n\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof _parchment2.default.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return CodeBlock;\n }(_block2.default);\n\n CodeBlock.blotName = 'code-block';\n CodeBlock.tagName = 'PRE';\n CodeBlock.TAB = ' ';\n exports.Code = Code;\n exports.default = CodeBlock;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _op = __webpack_require__(20);\n\n var _op2 = _interopRequireDefault(_op);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _code = __webpack_require__(13);\n\n var _code2 = _interopRequireDefault(_code);\n\n var _cursor = __webpack_require__(24);\n\n var _cursor2 = _interopRequireDefault(_cursor);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n var _break = __webpack_require__(16);\n\n var _break2 = _interopRequireDefault(_break);\n\n var _clone = __webpack_require__(21);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _deepEqual = __webpack_require__(11);\n\n var _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var ASCII = /^[ -~]*$/;\n\n var Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op.delete || op.insert.length || 1;\n var attributes = op.attributes || {};\n\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n\n if (line instanceof _block2.default) {\n var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n }\n\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n\n if (key == null) return index;\n\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n\n scrollLength += length;\n }\n\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op.delete === 'number') {\n _this.scroll.deleteAt(index, op.delete);\n\n return index;\n }\n\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2.default().retain(index).delete(length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n\n if (!(line instanceof _code2.default)) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var lines = [],\n leaves = [];\n\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2.default) {\n lines.push(blot);\n } else if (blot instanceof _parchment2.default.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n }\n\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n\n return formats;\n });\n return _extend2.default.apply(_extend2.default, formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var block = this.scroll.children.head;\n if (block.statics.blotName !== _block2.default.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _break2.default;\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2.default();\n\n if (line != null) {\n if (!(line instanceof _code2.default)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n var delta = new _quillDelta2.default().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n var oldDelta = this.delta;\n\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\n\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n var oldText = new _quillDelta2.default().insert(oldValue);\n var newText = new _quillDelta2.default().insert(textBlot.value());\n var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2.default());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n\n return change;\n }\n }]);\n\n return Editor;\n }();\n\n function combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n\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\n return merged;\n }, {});\n }\n\n function normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2.default)(op.attributes);\n delete attributes['image'];\n return delta.insert({\n image: op.attributes.image\n }, attributes);\n }\n\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\n\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\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n\n return delta.push(op);\n }, new _quillDelta2.default());\n }\n\n exports.default = Editor;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = exports.Range = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _clone = __webpack_require__(21);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _deepEqual = __webpack_require__(11);\n\n var _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n var _emitter3 = __webpack_require__(8);\n\n var _emitter4 = _interopRequireDefault(_emitter3);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var debug = (0, _logger2.default)('quill:selection');\n\n var Range = function Range(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Range);\n\n this.index = index;\n this.length = length;\n };\n\n var Selection = function () {\n function Selection(scroll, emitter) {\n var _this = this;\n\n _classCallCheck(this, Selection);\n\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = _parchment2.default.create('cursor', this); // savedRange is last non-null range\n\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, function () {\n if (!_this.mouseDown) {\n setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n }\n });\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n _this.update(_emitter4.default.sources.SILENT);\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n if (!_this.hasFocus()) return;\n\n var native = _this.getNativeRange();\n\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\n _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n try {\n _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n if (context.range) {\n var _context$range = context.range,\n startNode = _context$range.startNode,\n startOffset = _context$range.startOffset,\n endNode = _context$range.endNode,\n endOffset = _context$range.endOffset;\n\n _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(_emitter4.default.sources.SILENT);\n }\n\n _createClass(Selection, [{\n key: 'handleComposition',\n value: function handleComposition() {\n var _this2 = this;\n\n this.root.addEventListener('compositionstart', function () {\n _this2.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this2.composing = false;\n\n if (_this2.cursor.parent) {\n var range = _this2.cursor.restore();\n\n if (!range) return;\n setTimeout(function () {\n _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n }, {\n key: 'handleDragging',\n value: function handleDragging() {\n var _this3 = this;\n\n this.emitter.listenDOM('mousedown', document.body, function () {\n _this3.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, function () {\n _this3.mouseDown = false;\n\n _this3.update(_emitter4.default.sources.USER);\n });\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n }, {\n key: 'format',\n value: function format(_format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n this.scroll.update();\n var nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n\n if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2.default.find(nativeRange.start.node, false);\n\n if (blot == null) return; // TODO Give blot ability to not split\n\n if (blot instanceof _parchment2.default.Leaf) {\n var after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n\n this.cursor.attach();\n }\n\n this.cursor.format(_format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n\n var node = void 0,\n _scroll$leaf = this.scroll.leaf(index),\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n leaf = _scroll$leaf2[0],\n offset = _scroll$leaf2[1];\n\n if (leaf == null) return null;\n\n var _leaf$position = leaf.position(offset, true);\n\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n node = _leaf$position2[0];\n offset = _leaf$position2[1];\n var range = document.createRange();\n\n if (length > 0) {\n range.setStart(node, offset);\n\n var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n leaf = _scroll$leaf4[0];\n offset = _scroll$leaf4[1];\n if (leaf == null) return null;\n\n var _leaf$position3 = leaf.position(offset, true);\n\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n node = _leaf$position4[0];\n offset = _leaf$position4[1];\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\n\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\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n }, {\n key: 'getNativeRange',\n value: function getNativeRange() {\n var selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n var nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n var range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n var range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'normalizedToRange',\n value: function normalizedToRange(range) {\n var _this4 = this;\n\n var positions = [[range.start.node, range.start.offset]];\n\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n\n var indexes = positions.map(function (position) {\n var _position = _slicedToArray(position, 2),\n node = _position[0],\n offset = _position[1];\n\n var blot = _parchment2.default.find(node, true);\n\n var index = blot.offset(_this4.scroll);\n\n if (offset === 0) {\n return index;\n } else if (blot instanceof _parchment2.default.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n return new Range(start, end - start);\n }\n }, {\n key: 'normalizeNative',\n value: function normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n\n var range = {\n start: {\n node: nativeRange.startContainer,\n offset: nativeRange.startOffset\n },\n end: {\n node: nativeRange.endContainer,\n offset: nativeRange.endOffset\n },\n native: nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\n\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\n position.node = node, position.offset = offset;\n });\n return range;\n }\n }, {\n key: 'rangeToNative',\n value: function rangeToNative(range) {\n var _this5 = this;\n\n var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n var args = [];\n var scrollLength = this.scroll.length();\n indexes.forEach(function (index, i) {\n index = Math.min(scrollLength - 1, index);\n\n var node = void 0,\n _scroll$leaf5 = _this5.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\n\n var _leaf$position5 = leaf.position(offset, i !== 0);\n\n var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n node = _leaf$position6[0];\n offset = _leaf$position6[1];\n args.push(node, offset);\n });\n\n if (args.length < 2) {\n args = args.concat(args);\n }\n\n return args;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(scrollingContainer) {\n var range = this.lastRange;\n if (range == null) return;\n var bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n var limit = this.scroll.length() - 1;\n\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n _scroll$line2 = _slicedToArray(_scroll$line, 1),\n first = _scroll$line2[0];\n\n var last = first;\n\n if (range.length > 0) {\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n last = _scroll$line4[0];\n }\n\n if (first == null || last == null) return;\n var scrollBounds = scrollingContainer.getBoundingClientRect();\n\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n }\n }\n }, {\n key: 'setNativeRange',\n value: function setNativeRange(startNode, startOffset) {\n var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n\n var selection = document.getSelection();\n if (selection == null) return;\n\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var native = (this.getNativeRange() || {}).native;\n\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n\n var range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(range) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n\n debug.info('setRange', range);\n\n if (range != null) {\n var args = this.rangeToNative(range);\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\n }\n\n this.update(source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n var oldRange = this.lastRange;\n\n var _getRange = this.getRange(),\n _getRange2 = _slicedToArray(_getRange, 2),\n lastRange = _getRange2[0],\n nativeRange = _getRange2[1];\n\n this.lastRange = lastRange;\n\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n\n if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n var _emitter;\n\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n\n var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n }\n }]);\n\n return Selection;\n }();\n\n function contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n } // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n\n\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n\n return parent.contains(descendant);\n }\n\n exports.Range = Range;\n exports.default = Selection;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Break = function (_Parchment$Embed) {\n _inherits(Break, _Parchment$Embed);\n\n function Break() {\n _classCallCheck(this, Break);\n\n return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n }\n\n _createClass(Break, [{\n key: 'insertInto',\n value: function insertInto(parent, ref) {\n if (parent.children.length === 0) {\n _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n } else {\n this.remove();\n }\n }\n }, {\n key: 'length',\n value: function length() {\n return 0;\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }], [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n return Break;\n }(_parchment2.default.Embed);\n\n Break.blotName = 'break';\n Break.tagName = 'BR';\n exports.default = Break;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var linked_list_1 = __webpack_require__(44);\n\n var shadow_1 = __webpack_require__(30);\n\n var Registry = __webpack_require__(1);\n\n var ContainerBlot = function (_super) {\n __extends(ContainerBlot, _super);\n\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n\n _this.build();\n\n return _this;\n }\n\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n\n ContainerBlot.prototype.build = function () {\n var _this = this;\n\n this.children = new linked_list_1.default(); // Need to be reversed for if DOM nodes already in order\n\n [].slice.call(this.domNode.childNodes).reverse().forEach(function (node) {\n try {\n var child = makeBlot(node);\n\n _this.insertBefore(child, _this.children.head || undefined);\n } catch (err) {\n if (err instanceof Registry.ParchmentError) return;else throw err;\n }\n });\n };\n\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index),\n child = _a[0],\n offset = _a[1];\n\n if (criteria.blotName == null && criteria(child) || criteria.blotName != null && child instanceof criteria) {\n return [child, offset];\n } else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n } else {\n return [null, -1];\n }\n };\n\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) {\n index = 0;\n }\n\n if (length === void 0) {\n length = Number.MAX_VALUE;\n }\n\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if (criteria.blotName == null && criteria(child) || criteria.blotName != null && child instanceof criteria) {\n descendants.push(child);\n }\n\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n\n lengthLeft -= length;\n });\n return descendants;\n };\n\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n\n _super.prototype.detach.call(this);\n };\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\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index),\n child = _a[0],\n offset = _a[1];\n\n if (child) {\n child.insertAt(offset, value, def);\n } else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\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\n childBlot.insertInto(this, refBlot);\n };\n\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n\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(context);\n } else {\n this.remove();\n }\n }\n };\n\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n\n var _a = this.children.find(index, inclusive),\n child = _a[0],\n offset = _a[1];\n\n var position = [[this, index]];\n\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n } else if (child != null) {\n position.push([child, offset]);\n }\n\n return position;\n };\n\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n\n _super.prototype.replace.call(this, target);\n };\n\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) {\n force = false;\n }\n\n if (!force) {\n if (index === 0) return this;\n if (index === this.length()) return this.next;\n }\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\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null && // @ts-ignore\n node.tagName !== 'IFRAME' && document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n\n var blot = Registry.find(node);\n if (blot == null) return;\n\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) return 0;\n\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n\n return -1;\n }).forEach(function (node) {\n var refBlot = null;\n\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n\n var blot = makeBlot(node);\n\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n\n return ContainerBlot;\n }(shadow_1.default);\n\n function makeBlot(node) {\n var blot = Registry.find(node);\n\n if (blot == null) {\n try {\n blot = Registry.create(node);\n } catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n\n blot.attach();\n }\n }\n\n return blot;\n }\n\n exports.default = ContainerBlot;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var attributor_1 = __webpack_require__(12);\n\n var store_1 = __webpack_require__(31);\n\n var container_1 = __webpack_require__(17);\n\n var Registry = __webpack_require__(1);\n\n var FormatBlot = function (_super) {\n __extends(FormatBlot, _super);\n\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n } else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n\n return undefined;\n };\n\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\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\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n\n return formats;\n };\n\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n\n this.attributes.copy(replacement);\n return replacement;\n };\n\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n\n _super.prototype.update.call(this, mutations, context);\n\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n\n return wrapper;\n };\n\n return FormatBlot;\n }(container_1.default);\n\n exports.default = FormatBlot;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var shadow_1 = __webpack_require__(30);\n\n var Registry = __webpack_require__(1);\n\n var LeafBlot = function (_super) {\n __extends(LeafBlot, _super);\n\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n LeafBlot.value = function (domNode) {\n return true;\n };\n\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node || this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n\n return -1;\n };\n\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0) offset += 1;\n return [this.parent.domNode, offset];\n };\n\n LeafBlot.prototype.value = function () {\n var _a;\n\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n };\n\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n }(shadow_1.default);\n\n exports.default = LeafBlot;\n /***/\n }, function (module, exports, __webpack_require__) {\n var equal = __webpack_require__(11);\n\n var extend = __webpack_require__(3);\n\n var lib = {\n attributes: {\n compose: function compose(a, b, keepNull) {\n if (_typeof2(a) !== 'object') a = {};\n if (_typeof2(b) !== 'object') b = {};\n var attributes = extend(true, {}, b);\n\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n\n return copy;\n }, {});\n }\n\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n diff: function diff(a, b) {\n if (_typeof2(a) !== 'object') a = {};\n if (_typeof2(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\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n transform: function transform(a, b, priority) {\n if (_typeof2(a) !== 'object') return b;\n if (_typeof2(b) !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n\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\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n iterator: function iterator(ops) {\n return new Iterator(ops);\n },\n length: function length(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 function Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n }\n\n ;\n\n Iterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n };\n\n Iterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp);\n\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\n if (typeof nextOp['delete'] === 'number') {\n return {\n 'delete': length\n };\n } else {\n var retOp = {};\n\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\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\n return retOp;\n }\n } else {\n return {\n retain: Infinity\n };\n }\n };\n\n Iterator.prototype.peek = function () {\n return this.ops[this.index];\n };\n\n Iterator.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\n Iterator.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\n return 'retain';\n };\n\n Iterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n };\n\n module.exports = lib;\n /***/\n }, function (module, exports) {\n var clone = function () {\n 'use strict';\n\n function _instanceof(obj, type) {\n return type != null && obj instanceof type;\n }\n\n var nativeMap;\n\n try {\n nativeMap = Map;\n } catch (_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function nativeMap() {};\n }\n\n var nativeSet;\n\n try {\n nativeSet = Set;\n } catch (_) {\n nativeSet = function nativeSet() {};\n }\n\n var nativePromise;\n\n try {\n nativePromise = Promise;\n } catch (_) {\n nativePromise = function nativePromise() {};\n }\n /**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n */\n\n\n function clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (_typeof2(circular) === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n } // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n\n\n var allParents = [];\n var allChildren = [];\n var useBuffer = typeof Buffer != 'undefined';\n if (typeof circular == 'undefined') circular = true;\n if (typeof depth == 'undefined') depth = Infinity; // recurse this function so we don't reset allParents and allChildren\n\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null) return null;\n if (depth === 0) return parent;\n var child;\n var proto;\n\n if (_typeof2(parent) != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function (value) {\n resolve(_clone(value, depth - 1));\n }, function (err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n } 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\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function (value, key) {\n var keyChild = _clone(key, depth - 1);\n\n var valueChild = _clone(value, depth - 1);\n\n child.set(keyChild, valueChild);\n });\n }\n\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function (value) {\n var entryChild = _clone(value, depth - 1);\n\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n\n child[symbol] = _clone(parent[symbol], depth - 1);\n\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n }\n /**\n * 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 */\n\n\n clone.clonePrototype = function clonePrototype(parent) {\n if (parent === null) return null;\n\n var c = function c() {};\n\n c.prototype = parent;\n return new c();\n }; // private utility functions\n\n\n function __objToStr(o) {\n return Object.prototype.toString.call(o);\n }\n\n clone.__objToStr = __objToStr;\n\n function __isDate(o) {\n return _typeof2(o) === 'object' && __objToStr(o) === '[object Date]';\n }\n\n clone.__isDate = __isDate;\n\n function __isArray(o) {\n return _typeof2(o) === 'object' && __objToStr(o) === '[object Array]';\n }\n\n clone.__isArray = __isArray;\n\n function __isRegExp(o) {\n return _typeof2(o) === 'object' && __objToStr(o) === '[object RegExp]';\n }\n\n clone.__isRegExp = __isRegExp;\n\n function __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 }\n\n clone.__getRegExpFlags = __getRegExpFlags;\n return clone;\n }();\n\n if (_typeof2(module) === 'object' && module.exports) {\n module.exports = clone;\n }\n /***/\n\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _emitter = __webpack_require__(8);\n\n var _emitter2 = _interopRequireDefault(_emitter);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n var _break = __webpack_require__(16);\n\n var _break2 = _interopRequireDefault(_break);\n\n var _code = __webpack_require__(13);\n\n var _code2 = _interopRequireDefault(_code);\n\n var _container = __webpack_require__(25);\n\n var _container2 = _interopRequireDefault(_container);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function isLine(blot) {\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n }\n\n var Scroll = function (_Parchment$Scroll) {\n _inherits(Scroll, _Parchment$Scroll);\n\n function Scroll(domNode, config) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n _this.emitter = config.emitter;\n\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n } // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n\n\n _this.domNode.addEventListener('DOMNodeInserted', function () {});\n\n _this.optimize();\n\n _this.enable();\n\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'batchStart',\n value: function batchStart() {\n this.batch = true;\n }\n }, {\n key: 'batchEnd',\n value: function batchEnd() {\n this.batch = false;\n this.optimize();\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n var _line = this.line(index),\n _line2 = _slicedToArray(_line, 2),\n first = _line2[0],\n offset = _line2[1];\n\n var _line3 = this.line(index + length),\n _line4 = _slicedToArray(_line3, 1),\n last = _line4[0];\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n this.optimize();\n return;\n }\n\n if (first instanceof _code2.default) {\n var newlineIndex = first.newlineIndex(first.length(), true);\n\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof _code2.default) {\n var _newlineIndex = last.newlineIndex(0);\n\n if (_newlineIndex > -1) {\n last.split(_newlineIndex + 1);\n }\n }\n\n var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n\n this.optimize();\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.domNode.setAttribute('contenteditable', enabled);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n\n this.optimize();\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n\n if (index >= this.length()) {\n if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n var blot = _parchment2.default.create(this.statics.defaultChild);\n\n this.appendChild(blot);\n\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2.default.create(value, def);\n\n this.appendChild(embed);\n }\n } else {\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n }\n\n this.optimize();\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n var wrapper = _parchment2.default.create(this.statics.defaultChild);\n\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n }\n }, {\n key: 'leaf',\n value: function leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n }, {\n key: 'line',\n value: function line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n\n return this.descendant(isLine, index);\n }\n }, {\n key: 'lines',\n value: function lines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n var getLines = function getLines(blot, index, length) {\n var lines = [],\n lengthLeft = length;\n blot.children.forEachAt(index, length, function (child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof _parchment2.default.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n\n lengthLeft -= length;\n });\n return lines;\n };\n\n return getLines(this, index, length);\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.batch === true) return;\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n if (this.batch === true) return;\n var source = _emitter2.default.sources.USER;\n\n if (typeof mutations === 'string') {\n source = mutations;\n }\n\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n\n\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n }\n }\n }]);\n\n return Scroll;\n }(_parchment2.default.Scroll);\n\n Scroll.blotName = 'scroll';\n Scroll.className = 'ql-editor';\n Scroll.tagName = 'DIV';\n Scroll.defaultChild = 'block';\n Scroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n exports.default = Scroll;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SHORTKEY = exports.default = undefined;\n\n var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _clone = __webpack_require__(21);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _deepEqual = __webpack_require__(11);\n\n var _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _op = __webpack_require__(20);\n\n var _op2 = _interopRequireDefault(_op);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var debug = (0, _logger2.default)('quill:keyboard');\n var SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n var Keyboard = function (_Module) {\n _inherits(Keyboard, _Module);\n\n _createClass(Keyboard, null, [{\n key: 'match',\n value: function match(evt, binding) {\n binding = normalize(binding);\n\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n\n return binding.key === (evt.which || evt.keyCode);\n }\n }]);\n\n function Keyboard(quill, options) {\n _classCallCheck(this, Keyboard);\n\n var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n _this.bindings = {};\n Object.keys(_this.options.bindings).forEach(function (name) {\n if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n return;\n }\n\n if (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n\n _this.addBinding({\n key: Keyboard.keys.ENTER,\n shiftKey: null\n }, handleEnter);\n\n _this.addBinding({\n key: Keyboard.keys.ENTER,\n metaKey: null,\n ctrlKey: null,\n altKey: null\n }, function () {});\n\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({\n key: Keyboard.keys.BACKSPACE\n }, {\n collapsed: true\n }, handleBackspace);\n\n _this.addBinding({\n key: Keyboard.keys.DELETE\n }, {\n collapsed: true\n }, handleDelete);\n } else {\n _this.addBinding({\n key: Keyboard.keys.BACKSPACE\n }, {\n collapsed: true,\n prefix: /^.?$/\n }, handleBackspace);\n\n _this.addBinding({\n key: Keyboard.keys.DELETE\n }, {\n collapsed: true,\n suffix: /^.?$/\n }, handleDelete);\n }\n\n _this.addBinding({\n key: Keyboard.keys.BACKSPACE\n }, {\n collapsed: false\n }, handleDeleteRange);\n\n _this.addBinding({\n key: Keyboard.keys.DELETE\n }, {\n collapsed: false\n }, handleDeleteRange);\n\n _this.addBinding({\n key: Keyboard.keys.BACKSPACE,\n altKey: null,\n ctrlKey: null,\n metaKey: null,\n shiftKey: null\n }, {\n collapsed: true,\n offset: 0\n }, handleBackspace);\n\n _this.listen();\n\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var binding = normalize(key);\n\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n\n if (typeof context === 'function') {\n context = {\n handler: context\n };\n }\n\n if (typeof handler === 'function') {\n handler = {\n handler: handler\n };\n }\n\n binding = (0, _extend2.default)(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n\n var range = _this2.quill.getSelection();\n\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n }(_module2.default);\n\n Keyboard.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 Keyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range) {\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2.default.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: {\n list: 'checked'\n },\n handler: function handler(range) {\n var _quill$getLine3 = this.quill.getLine(range.index),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n line = _quill$getLine4[0],\n offset = _quill$getLine4[1];\n\n var formats = (0, _extend2.default)({}, line.formats(), {\n list: 'checked'\n });\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, {\n list: 'unchecked'\n });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range, context) {\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n line = _quill$getLine6[0],\n offset = _quill$getLine6[1];\n\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, {\n header: null\n });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: {\n list: false\n },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function handler(range, context) {\n var length = context.prefix.length;\n\n var _quill$getLine7 = this.quill.getLine(range.index),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n line = _quill$getLine8[0],\n offset = _quill$getLine8[1];\n\n if (offset > length) return true;\n var value = void 0;\n\n switch (context.prefix.trim()) {\n case '[]':\n case '[ ]':\n value = 'unchecked';\n break;\n\n case '[x]':\n value = 'checked';\n break;\n\n case '-':\n case '*':\n value = 'bullet';\n break;\n\n default:\n value = 'ordered';\n }\n\n this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, {\n list: value\n });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n line = _quill$getLine10[0],\n offset = _quill$getLine10[1];\n\n var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, {\n 'code-block': null\n }).delete(1);\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n };\n\n function makeEmbedArrowHandler(key, shiftKey) {\n var _ref3;\n\n var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return _ref3 = {\n key: key,\n shiftKey: shiftKey,\n altKey: null\n }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n var index = range.index;\n\n if (key === Keyboard.keys.RIGHT) {\n index += range.length + 1;\n }\n\n var _quill$getLeaf3 = this.quill.getLeaf(index),\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n leaf = _quill$getLeaf4[0];\n\n if (!(leaf instanceof _parchment2.default.Embed)) return true;\n\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n }\n }\n\n return false;\n }), _ref3;\n }\n\n function handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine11 = this.quill.getLine(range.index),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n line = _quill$getLine12[0];\n\n var formats = {};\n\n if (context.offset === 0) {\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n prev = _quill$getLine14[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n } // Check for astral symbols\n\n\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n\n this.quill.focus();\n }\n\n function handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n var formats = {},\n nextLength = 0;\n\n var _quill$getLine15 = this.quill.getLine(range.index),\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n line = _quill$getLine16[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n next = _quill$getLine18[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n }\n }\n\n function handleDeleteRange(range) {\n var lines = this.quill.getLines(range);\n var formats = {};\n\n if (lines.length > 1) {\n var firstFormats = lines[0].formats();\n var lastFormats = lines[lines.length - 1].formats();\n formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n }\n\n this.quill.deleteText(range, _quill2.default.sources.USER);\n\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n }\n\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.focus();\n }\n\n function handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER); // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n\n _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n }\n\n function makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: {\n 'code-block': true\n },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\n\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n\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\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n\n offset += line.length + 1;\n });\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n }\n };\n }\n\n function makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n }\n };\n }\n\n function normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({\n key: binding\n });\n }\n\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\n }\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\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n\n return binding;\n }\n\n exports.default = Keyboard;\n exports.SHORTKEY = SHORTKEY;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Cursor = function (_Parchment$Embed) {\n _inherits(Cursor, _Parchment$Embed);\n\n _createClass(Cursor, null, [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n function Cursor(domNode, selection) {\n _classCallCheck(this, Cursor);\n\n var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n _this.selection = selection;\n _this.textNode = document.createTextNode(Cursor.CONTENTS);\n\n _this.domNode.appendChild(_this.textNode);\n\n _this._length = 0;\n return _this;\n }\n\n _createClass(Cursor, [{\n key: 'detach',\n value: function detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (this._length !== 0) {\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n }\n\n var target = this,\n index = 0;\n\n while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n }, {\n key: 'index',\n value: function index(node, offset) {\n if (node === this.textNode) return 0;\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'length',\n value: function length() {\n return this._length;\n }\n }, {\n key: 'position',\n value: function position() {\n return [this.textNode, this.textNode.data.length];\n }\n }, {\n key: 'remove',\n value: function remove() {\n _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n\n this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n if (this.selection.composing || this.parent == null) return;\n var textNode = this.textNode;\n var range = this.selection.getNativeRange();\n var restoreText = void 0,\n start = void 0,\n end = void 0;\n\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n var _ref = [textNode, range.start.offset, range.end.offset];\n restoreText = _ref[0];\n start = _ref[1];\n end = _ref[2];\n } // Link format will insert text outside of anchor tag\n\n\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n\n if (this.next instanceof _text2.default) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n\n this.remove();\n\n if (start != null) {\n var _map = [start, end].map(function (offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n })) {\n var range = this.restore();\n if (range) context.range = range;\n }\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n }(_parchment2.default.Embed);\n\n Cursor.blotName = 'cursor';\n Cursor.className = 'ql-cursor';\n Cursor.tagName = 'span';\n Cursor.CONTENTS = \"\\uFEFF\"; // Zero width no break space\n\n exports.default = Cursor;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Container = function (_Parchment$Container) {\n _inherits(Container, _Parchment$Container);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n }\n\n return Container;\n }(_parchment2.default.Container);\n\n Container.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n exports.default = Container;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ColorAttributor = function (_Parchment$Attributor) {\n _inherits(ColorAttributor, _Parchment$Attributor);\n\n function ColorAttributor() {\n _classCallCheck(this, ColorAttributor);\n\n return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n }\n\n _createClass(ColorAttributor, [{\n key: 'value',\n value: function value(domNode) {\n var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function (component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n }]);\n\n return ColorAttributor;\n }(_parchment2.default.Attributor.Style);\n\n var ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n scope: _parchment2.default.Scope.INLINE\n });\n var ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2.default.Scope.INLINE\n });\n exports.ColorAttributor = ColorAttributor;\n exports.ColorClass = ColorClass;\n exports.ColorStyle = ColorStyle;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.sanitize = exports.default = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Link = function (_Inline) {\n _inherits(Link, _Inline);\n\n function Link() {\n _classCallCheck(this, Link);\n\n return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n }\n\n _createClass(Link, [{\n key: 'format',\n value: function format(name, value) {\n if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('rel', 'noopener noreferrer');\n node.setAttribute('target', '_blank');\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return domNode.getAttribute('href');\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n }]);\n\n return Link;\n }(_inline2.default);\n\n Link.blotName = 'link';\n Link.tagName = 'A';\n Link.SANITIZED_URL = 'about:blank';\n Link.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\n function _sanitize(url, protocols) {\n var anchor = document.createElement('a');\n anchor.href = url;\n var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n }\n\n exports.default = Link;\n exports.sanitize = _sanitize;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _keyboard = __webpack_require__(23);\n\n var _keyboard2 = _interopRequireDefault(_keyboard);\n\n var _dropdown = __webpack_require__(107);\n\n var _dropdown2 = _interopRequireDefault(_dropdown);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var optionsCounter = 0;\n\n function toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n }\n\n var Picker = function () {\n function Picker(select) {\n var _this = this;\n\n _classCallCheck(this, Picker);\n\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n this.label.addEventListener('mousedown', function () {\n _this.togglePicker();\n });\n this.label.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case _keyboard2.default.keys.ENTER:\n _this.togglePicker();\n\n break;\n // Allows the \"Escape\" key to close the picker\n\n case _keyboard2.default.keys.ESCAPE:\n _this.escape();\n\n event.preventDefault();\n break;\n\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n _createClass(Picker, [{\n key: 'togglePicker',\n value: function togglePicker() {\n this.container.classList.toggle('ql-expanded'); // Toggle aria-expanded and aria-hidden to make the picker accessible\n\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n }, {\n key: 'buildItem',\n value: function buildItem(option) {\n var _this2 = this;\n\n var item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n item.classList.add('ql-picker-item');\n\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n\n item.addEventListener('click', function () {\n _this2.selectItem(item, true);\n });\n item.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case _keyboard2.default.keys.ENTER:\n _this2.selectItem(item, true);\n\n event.preventDefault();\n break;\n // Allows the \"Escape\" key to close the picker\n\n case _keyboard2.default.keys.ESCAPE:\n _this2.escape();\n\n event.preventDefault();\n break;\n\n default:\n }\n });\n return item;\n }\n }, {\n key: 'buildLabel',\n value: function buildLabel() {\n var label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = _dropdown2.default;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n }, {\n key: 'buildOptions',\n value: function buildOptions() {\n var _this3 = this;\n\n var options = document.createElement('span');\n options.classList.add('ql-picker-options'); // Don't want screen readers to read this until options are visible\n\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1'; // Need a unique id for aria-controls\n\n options.id = 'ql-picker-options-' + optionsCounter;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n this.options = options;\n [].slice.call(this.select.options).forEach(function (option) {\n var item = _this3.buildItem(option);\n\n options.appendChild(item);\n\n if (option.selected === true) {\n _this3.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n }, {\n key: 'buildPicker',\n value: function buildPicker() {\n var _this4 = this;\n\n [].slice.call(this.select.attributes).forEach(function (item) {\n _this4.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n }, {\n key: 'escape',\n value: function escape() {\n var _this5 = this; // Close menu and return focus to trigger label\n\n\n this.close(); // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n\n setTimeout(function () {\n return _this5.label.focus();\n }, 1);\n }\n }, {\n key: 'close',\n value: function close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item) {\n var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n\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\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\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n // IE11\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n\n this.close();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var option = void 0;\n\n if (this.select.selectedIndex > -1) {\n var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n\n var isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n }]);\n\n return Picker;\n }();\n\n exports.default = Picker;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n var _break = __webpack_require__(16);\n\n var _break2 = _interopRequireDefault(_break);\n\n var _container = __webpack_require__(25);\n\n var _container2 = _interopRequireDefault(_container);\n\n var _cursor = __webpack_require__(24);\n\n var _cursor2 = _interopRequireDefault(_cursor);\n\n var _embed = __webpack_require__(35);\n\n var _embed2 = _interopRequireDefault(_embed);\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n var _scroll = __webpack_require__(22);\n\n var _scroll2 = _interopRequireDefault(_scroll);\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n var _clipboard = __webpack_require__(55);\n\n var _clipboard2 = _interopRequireDefault(_clipboard);\n\n var _history = __webpack_require__(42);\n\n var _history2 = _interopRequireDefault(_history);\n\n var _keyboard = __webpack_require__(23);\n\n var _keyboard2 = _interopRequireDefault(_keyboard);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n _quill2.default.register({\n 'blots/block': _block2.default,\n 'blots/block/embed': _block.BlockEmbed,\n 'blots/break': _break2.default,\n 'blots/container': _container2.default,\n 'blots/cursor': _cursor2.default,\n 'blots/embed': _embed2.default,\n 'blots/inline': _inline2.default,\n 'blots/scroll': _scroll2.default,\n 'blots/text': _text2.default,\n 'modules/clipboard': _clipboard2.default,\n 'modules/history': _history2.default,\n 'modules/keyboard': _keyboard2.default\n });\n\n _parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\n exports.default = _quill2.default;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Registry = __webpack_require__(1);\n\n var ShadowBlot = function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode; // @ts-ignore\n\n this.domNode[Registry.DATA_KEY] = {\n blot: this\n };\n }\n\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function get() {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n\n var node;\n\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n } else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n } else {\n node = document.createElement(this.tagName[0]);\n }\n } else {\n node = document.createElement(this.tagName);\n }\n\n if (this.className) {\n node.classList.add(this.className);\n }\n\n return node;\n };\n\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null) this.parent.removeChild(this); // @ts-ignore\n\n delete this.domNode[Registry.DATA_KEY];\n };\n\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n } else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n\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\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) {\n refBlot = null;\n }\n\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n\n if (this.domNode.parentNode != parentBlot.domNode || this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n\n this.parent = parentBlot;\n this.attach();\n };\n\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) {\n root = this.parent;\n }\n\n if (this.parent == null || this == root) return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n\n this.detach();\n };\n\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null) return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\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\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n\n ShadowBlot.prototype.update = function (mutations, context) {// Nothing to do by default\n };\n\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n\n wrapper.appendChild(this);\n return wrapper;\n };\n\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n }();\n\n exports.default = ShadowBlot;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var attributor_1 = __webpack_require__(12);\n\n var class_1 = __webpack_require__(32);\n\n var style_1 = __webpack_require__(33);\n\n var Registry = __webpack_require__(1);\n\n var AttributorStore = function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n } else {\n delete this.attributes[attribute.attrName];\n }\n }\n } else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n\n AttributorStore.prototype.build = function () {\n var _this = this;\n\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\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n\n target.format(key, value);\n });\n };\n\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n\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\n AttributorStore.prototype.values = function () {\n var _this = this;\n\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\n return AttributorStore;\n }();\n\n exports.default = AttributorStore;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var attributor_1 = __webpack_require__(12);\n\n function 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 }\n\n var ClassAttributor = function (_super) {\n __extends(ClassAttributor, _super);\n\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\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\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value)) return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\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\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n\n return this.canAdd(node, value) ? value : '';\n };\n\n return ClassAttributor;\n }(attributor_1.default);\n\n exports.default = ClassAttributor;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var attributor_1 = __webpack_require__(12);\n\n function 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 }\n\n var StyleAttributor = function (_super) {\n __extends(StyleAttributor, _super);\n\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\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\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value)) return false; // @ts-ignore\n\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n\n return StyleAttributor;\n }(attributor_1.default);\n\n exports.default = StyleAttributor;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Theme = function () {\n function Theme(quill, options) {\n _classCallCheck(this, Theme);\n\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n _createClass(Theme, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n Object.keys(this.options.modules).forEach(function (name) {\n if (_this.modules[name] == null) {\n _this.addModule(name);\n }\n });\n }\n }, {\n key: 'addModule',\n value: function addModule(name) {\n var moduleClass = this.quill.constructor.import('modules/' + name);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n }]);\n\n return Theme;\n }();\n\n Theme.DEFAULTS = {\n modules: {}\n };\n Theme.themes = {\n 'default': Theme\n };\n exports.default = Theme;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var GUARD_TEXT = \"\\uFEFF\";\n\n var Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed(node) {\n _classCallCheck(this, Embed);\n\n var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n _this.contentNode = document.createElement('span');\n\n _this.contentNode.setAttribute('contenteditable', false);\n\n [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n _this.contentNode.appendChild(childNode);\n });\n _this.leftGuard = document.createTextNode(GUARD_TEXT);\n _this.rightGuard = document.createTextNode(GUARD_TEXT);\n\n _this.domNode.appendChild(_this.leftGuard);\n\n _this.domNode.appendChild(_this.contentNode);\n\n _this.domNode.appendChild(_this.rightGuard);\n\n return _this;\n }\n\n _createClass(Embed, [{\n key: 'index',\n value: function index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'restore',\n value: function restore(node) {\n var range = void 0,\n textNode = void 0;\n var text = node.data.split(GUARD_TEXT).join('');\n\n if (node === this.leftGuard) {\n if (this.prev instanceof _text2.default) {\n var prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof _text2.default) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n\n node.data = GUARD_TEXT;\n return range;\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n var range = _this2.restore(mutation.target);\n\n if (range) context.range = range;\n }\n });\n }\n }]);\n\n return Embed;\n }(_parchment2.default.Embed);\n\n exports.default = Embed;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n };\n var AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\n var AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\n var AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n exports.AlignAttribute = AlignAttribute;\n exports.AlignClass = AlignClass;\n exports.AlignStyle = AlignStyle;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BackgroundStyle = exports.BackgroundClass = undefined;\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _color = __webpack_require__(26);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n scope: _parchment2.default.Scope.INLINE\n });\n var BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2.default.Scope.INLINE\n });\n exports.BackgroundClass = BackgroundClass;\n exports.BackgroundStyle = BackgroundStyle;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['rtl']\n };\n var DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\n var DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\n var DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n exports.DirectionAttribute = DirectionAttribute;\n exports.DirectionClass = DirectionClass;\n exports.DirectionStyle = DirectionStyle;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FontClass = exports.FontStyle = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var config = {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n };\n var FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\n var FontStyleAttributor = function (_Parchment$Attributor) {\n _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n function FontStyleAttributor() {\n _classCallCheck(this, FontStyleAttributor);\n\n return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n }\n\n _createClass(FontStyleAttributor, [{\n key: 'value',\n value: function value(node) {\n return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n }\n }]);\n\n return FontStyleAttributor;\n }(_parchment2.default.Attributor.Style);\n\n var FontStyle = new FontStyleAttributor('font', 'font-family', config);\n exports.FontStyle = FontStyle;\n exports.FontClass = FontClass;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SizeStyle = exports.SizeClass = undefined;\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n });\n var SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n });\n exports.SizeClass = SizeClass;\n exports.SizeStyle = SizeStyle;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n module.exports = {\n 'align': {\n '': __webpack_require__(76),\n 'center': __webpack_require__(77),\n 'right': __webpack_require__(78),\n 'justify': __webpack_require__(79)\n },\n 'background': __webpack_require__(80),\n 'blockquote': __webpack_require__(81),\n 'bold': __webpack_require__(82),\n 'clean': __webpack_require__(83),\n 'code': __webpack_require__(58),\n 'code-block': __webpack_require__(58),\n 'color': __webpack_require__(84),\n 'direction': {\n '': __webpack_require__(85),\n 'rtl': __webpack_require__(86)\n },\n 'float': {\n 'center': __webpack_require__(87),\n 'full': __webpack_require__(88),\n 'left': __webpack_require__(89),\n 'right': __webpack_require__(90)\n },\n 'formula': __webpack_require__(91),\n 'header': {\n '1': __webpack_require__(92),\n '2': __webpack_require__(93)\n },\n 'italic': __webpack_require__(94),\n 'image': __webpack_require__(95),\n 'indent': {\n '+1': __webpack_require__(96),\n '-1': __webpack_require__(97)\n },\n 'link': __webpack_require__(98),\n 'list': {\n 'ordered': __webpack_require__(99),\n 'bullet': __webpack_require__(100),\n 'check': __webpack_require__(101)\n },\n 'script': {\n 'sub': __webpack_require__(102),\n 'super': __webpack_require__(103)\n },\n 'strike': __webpack_require__(104),\n 'underline': __webpack_require__(105),\n 'video': __webpack_require__(106)\n };\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getLastChangeIndex = exports.default = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var History = function (_Module) {\n _inherits(History, _Module);\n\n function History(quill, options) {\n _classCallCheck(this, History);\n\n var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n _this.lastRecorded = 0;\n _this.ignoreChange = false;\n\n _this.clear();\n\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n\n if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n\n _this.quill.keyboard.addBinding({\n key: 'Z',\n shortKey: true\n }, _this.undo.bind(_this));\n\n _this.quill.keyboard.addBinding({\n key: 'Z',\n shortKey: true,\n shiftKey: true\n }, _this.redo.bind(_this));\n\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({\n key: 'Y',\n shortKey: true\n }, _this.redo.bind(_this));\n }\n\n return _this;\n }\n\n _createClass(History, [{\n key: 'change',\n value: function change(source, dest) {\n if (this.stack[source].length === 0) return;\n var delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n this.ignoreChange = false;\n var index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = {\n undo: [],\n redo: []\n };\n }\n }, {\n key: 'cutoff',\n value: function cutoff() {\n this.lastRecorded = 0;\n }\n }, {\n key: 'record',\n value: function record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n var undoDelta = this.quill.getContents().diff(oldDelta);\n var timestamp = Date.now();\n\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n var delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n }, {\n key: 'redo',\n value: function redo() {\n this.change('redo', 'undo');\n }\n }, {\n key: 'transform',\n value: function transform(delta) {\n this.stack.undo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n }, {\n key: 'undo',\n value: function undo() {\n this.change('undo', 'redo');\n }\n }]);\n\n return History;\n }(_module2.default);\n\n History.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n };\n\n function endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function (attr) {\n return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n });\n }\n\n return false;\n }\n\n function getLastChangeIndex(delta) {\n var deleteLength = delta.reduce(function (length, op) {\n length += op.delete || 0;\n return length;\n }, 0);\n var changeIndex = delta.length() - deleteLength;\n\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n\n return changeIndex;\n }\n\n exports.default = History;\n exports.getLastChangeIndex = getLastChangeIndex;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = exports.BaseTooltip = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _emitter = __webpack_require__(8);\n\n var _emitter2 = _interopRequireDefault(_emitter);\n\n var _keyboard = __webpack_require__(23);\n\n var _keyboard2 = _interopRequireDefault(_keyboard);\n\n var _theme = __webpack_require__(34);\n\n var _theme2 = _interopRequireDefault(_theme);\n\n var _colorPicker = __webpack_require__(59);\n\n var _colorPicker2 = _interopRequireDefault(_colorPicker);\n\n var _iconPicker = __webpack_require__(60);\n\n var _iconPicker2 = _interopRequireDefault(_iconPicker);\n\n var _picker = __webpack_require__(28);\n\n var _picker2 = _interopRequireDefault(_picker);\n\n var _tooltip = __webpack_require__(61);\n\n var _tooltip2 = _interopRequireDefault(_tooltip);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ALIGNS = [false, 'center', 'right', 'justify'];\n var 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 var FONTS = [false, 'serif', 'monospace'];\n var HEADERS = ['1', '2', '3', false];\n var SIZES = ['small', false, 'large', 'huge'];\n\n var BaseTheme = function (_Theme) {\n _inherits(BaseTheme, _Theme);\n\n function BaseTheme(quill, options) {\n _classCallCheck(this, BaseTheme);\n\n var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n var listener = function listener(e) {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n\n if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n _this.tooltip.hide();\n }\n\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\n quill.emitter.listenDOM('click', document.body, listener);\n return _this;\n }\n\n _createClass(BaseTheme, [{\n key: 'addModule',\n value: function addModule(name) {\n var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n\n return module;\n }\n }, {\n key: 'buildButtons',\n value: function buildButtons(buttons, icons) {\n buttons.forEach(function (button) {\n var className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach(function (name) {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n var value = button.value || '';\n\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n }, {\n key: 'buildPickers',\n value: function buildPickers(selects, icons) {\n var _this2 = this;\n\n this.pickers = selects.map(function (select) {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n\n return new _iconPicker2.default(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n var format = select.classList.contains('ql-background') ? 'background' : 'color';\n\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n\n return new _colorPicker2.default(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n\n return new _picker2.default(select);\n }\n });\n\n var update = function update() {\n _this2.pickers.forEach(function (picker) {\n picker.update();\n });\n };\n\n this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n }\n }]);\n\n return BaseTheme;\n }(_theme2.default);\n\n BaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function image() {\n var _this3 = this;\n\n var fileInput = this.container.querySelector('input.ql-image[type=file]');\n\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', function () {\n if (fileInput.files != null && fileInput.files[0] != null) {\n var reader = new FileReader();\n\n reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n\n _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({\n image: e.target.result\n }), _emitter2.default.sources.USER);\n\n _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n\n fileInput.value = \"\";\n };\n\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n });\n\n var BaseTooltip = function (_Tooltip) {\n _inherits(BaseTooltip, _Tooltip);\n\n function BaseTooltip(quill, boundsContainer) {\n _classCallCheck(this, BaseTooltip);\n\n var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n\n _this4.listen();\n\n return _this4;\n }\n\n _createClass(BaseTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this5 = this;\n\n this.textbox.addEventListener('keydown', function (event) {\n if (_keyboard2.default.match(event, 'enter')) {\n _this5.save();\n\n event.preventDefault();\n } else if (_keyboard2.default.match(event, 'escape')) {\n _this5.cancel();\n\n event.preventDefault();\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.hide();\n }\n }, {\n key: 'edit',\n value: function edit() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n this.root.setAttribute('data-mode', mode);\n }\n }, {\n key: 'restoreFocus',\n value: function restoreFocus() {\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n }, {\n key: 'save',\n value: function save() {\n var value = this.textbox.value;\n\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\n\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _emitter2.default.sources.USER);\n }\n\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n\n case 'video':\n {\n value = extractVideoUrl(value);\n }\n // eslint-disable-next-line no-fallthrough\n\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n\n if (range != null) {\n var index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n }\n\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n }\n\n break;\n }\n\n default:\n }\n\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n }(_tooltip2.default);\n\n function extractVideoUrl(url) {\n var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n\n return url;\n }\n\n function fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n values.forEach(function (value) {\n var option = document.createElement('option');\n\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n\n select.appendChild(option);\n });\n }\n\n exports.BaseTooltip = BaseTooltip;\n exports.default = BaseTheme;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var LinkedList = function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n LinkedList.prototype.append = function () {\n var nodes = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n\n this.insertBefore(nodes[0], null);\n\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n\n LinkedList.prototype.contains = function (node) {\n var cur,\n next = this.iterator();\n\n while (cur = next()) {\n if (cur === node) return true;\n }\n\n return false;\n };\n\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node) return;\n node.next = refNode;\n\n if (refNode != null) {\n node.prev = refNode.prev;\n\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n\n refNode.prev = node;\n\n if (refNode === this.head) {\n this.head = node;\n }\n } else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n } else {\n node.prev = null;\n this.head = this.tail = node;\n }\n\n this.length += 1;\n };\n\n LinkedList.prototype.offset = function (target) {\n var index = 0,\n cur = this.head;\n\n while (cur != null) {\n if (cur === target) return index;\n index += cur.length();\n cur = cur.next;\n }\n\n return -1;\n };\n\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node)) return;\n if (node.prev != null) node.prev.next = node.next;\n if (node.next != null) node.next.prev = node.prev;\n if (node === this.head) this.head = node.next;\n if (node === this.tail) this.tail = node.prev;\n this.length -= 1;\n };\n\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) {\n curNode = this.head;\n } // TODO use yield when we can\n\n\n return function () {\n var ret = curNode;\n if (curNode != null) curNode = curNode.next;\n return ret;\n };\n };\n\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n\n var cur,\n next = this.iterator();\n\n while (cur = next()) {\n var length = cur.length();\n\n if (index < length || inclusive && index === length && (cur.next == null || cur.next.length() !== 0)) {\n return [cur, index];\n }\n\n index -= length;\n }\n\n return [null, 0];\n };\n\n LinkedList.prototype.forEach = function (callback) {\n var cur,\n next = this.iterator();\n\n while (cur = next()) {\n callback(cur);\n }\n };\n\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0) return;\n\n var _a = this.find(index),\n startNode = _a[0],\n offset = _a[1];\n\n var cur,\n curIndex = index - offset,\n next = this.iterator(startNode);\n\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n } else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n\n curIndex += curLength;\n }\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\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur,\n next = this.iterator();\n\n while (cur = next()) {\n memo = callback(memo, cur);\n }\n\n return memo;\n };\n\n return LinkedList;\n }();\n\n exports.default = LinkedList;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var container_1 = __webpack_require__(17);\n\n var Registry = __webpack_require__(1);\n\n var OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n };\n var MAX_OPTIMIZE_ITERATIONS = 100;\n\n var ScrollBlot = function (_super) {\n __extends(ScrollBlot, _super);\n\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n\n _this.attach();\n\n return _this;\n }\n\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n\n this.observer.disconnect();\n };\n\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n } else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n\n _super.prototype.insertAt.call(this, index, value, def);\n };\n\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n\n if (mutations === void 0) {\n mutations = [];\n }\n\n if (context === void 0) {\n context = {};\n }\n\n _super.prototype.optimize.call(this, context); // We must modify mutations directly, cannot make copy and then modify\n\n\n var records = [].slice.call(this.observer.takeRecords()); // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n\n while (records.length > 0) {\n mutations.push(records.pop());\n } // TODO use WeakMap\n\n\n var mark = function mark(blot, markParent) {\n if (markParent === void 0) {\n markParent = true;\n }\n\n if (blot == null || blot === _this) return;\n if (blot.domNode.parentNode == null) return; // @ts-ignore\n\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n\n if (markParent) mark(blot.parent);\n };\n\n var optimize = function optimize(blot) {\n // Post-order traversal\n if ( // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null || // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n\n blot.optimize(context);\n };\n\n var remaining = mutations;\n\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\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null) return;\n\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\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n } else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n\n while (records.length > 0) {\n mutations.push(records.pop());\n }\n }\n };\n\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n\n if (context === void 0) {\n context = {};\n }\n\n mutations = mutations || this.observer.takeRecords(); // TODO use WeakMap\n\n mutations.map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null) return null; // @ts-ignore\n\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n } else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n }).forEach(function (blot) {\n if (blot == null || blot === _this || //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null) return; // @ts-ignore\n\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n }); // @ts-ignore\n\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n\n this.optimize(mutations, context);\n };\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);\n\n exports.default = ScrollBlot;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var format_1 = __webpack_require__(18);\n\n var Registry = __webpack_require__(1); // Shallow object comparison\n\n\n function isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length) return false; // @ts-ignore\n\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop]) return false;\n }\n\n return true;\n }\n\n var InlineBlot = function (_super) {\n __extends(InlineBlot, _super);\n\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName) return undefined;\n return _super.formats.call(this, domNode);\n };\n\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n\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\n _this.attributes.copy(child);\n });\n this.unwrap();\n } else {\n _super.prototype.format.call(this, name, value);\n }\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 } else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n\n var formats = this.formats();\n\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n\n var next = this.next;\n\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n }(format_1.default);\n\n exports.default = InlineBlot;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var format_1 = __webpack_require__(18);\n\n var Registry = __webpack_require__(1);\n\n var BlockBlot = function (_super) {\n __extends(BlockBlot, _super);\n\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName) return undefined;\n return _super.formats.call(this, domNode);\n };\n\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n } else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n } else {\n _super.prototype.format.call(this, name, value);\n }\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 } else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\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 } else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n } else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n }(format_1.default);\n\n exports.default = BlockBlot;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var leaf_1 = __webpack_require__(19);\n\n var EmbedBlot = function (_super) {\n __extends(EmbedBlot, _super);\n\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\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\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n } else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n\n return EmbedBlot;\n }(leaf_1.default);\n\n exports.default = EmbedBlot;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var leaf_1 = __webpack_require__(19);\n\n var Registry = __webpack_require__(1);\n\n var TextBlot = function (_super) {\n __extends(TextBlot, _super);\n\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n\n TextBlot.value = function (domNode) {\n var text = domNode.data; // @ts-ignore\n\n if (text['normalize']) text = text['normalize']();\n return text;\n };\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\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n\n return -1;\n };\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 } else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n\n this.text = this.statics.value(this.domNode);\n\n if (this.text.length === 0) {\n this.remove();\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\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n\n return [this.domNode, index];\n };\n\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) {\n force = false;\n }\n\n if (!force) {\n if (index === 0) return this;\n if (index === this.length()) return this.next;\n }\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\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n\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\n TextBlot.prototype.value = function () {\n return this.text;\n };\n\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n }(leaf_1.default);\n\n exports.default = TextBlot;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var elem = document.createElement('div');\n elem.classList.toggle('test-class', false);\n\n if (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\n\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\n if (!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\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n }\n\n if (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\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\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n\n return undefined;\n }\n });\n }\n\n document.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false); // Disable automatic linkifying in IE11\n\n document.execCommand(\"autoUrlDetect\", false, false);\n });\n /***/\n }, function (module, exports) {\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 * 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 */\n var DIFF_DELETE = -1;\n var DIFF_INSERT = 1;\n var DIFF_EQUAL = 0;\n /**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\n\n function diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n\n return [];\n } // Check cursor_pos within bounds\n\n\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n } // Trim off common prefix (speedup).\n\n\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength); // Trim off common suffix (speedup).\n\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); // Compute the diff on the middle block.\n\n var diffs = diff_compute_(text1, text2); // Restore the prefix and suffix.\n\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n\n diff_cleanupMerge(diffs);\n\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n\n diffs = fix_emoji(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 */\n\n function 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\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)], [DIFF_EQUAL, shorttext], [DIFF_INSERT, longtext.substring(i + shorttext.length)]]; // Swap insertions for deletions if diff is reversed.\n\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\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 } // Check to see if the problem can be split in two.\n\n\n var hm = diff_halfMatch_(text1, text2);\n\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]; // Send both pairs off for separate processing.\n\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b); // Merge the results.\n\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 */\n\n function 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); // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length; // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n\n var front = delta % 2 != 0; // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n\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\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\n var y1 = x1 - k1;\n\n while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n\n v1[k1_offset] = x1;\n\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\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\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n } // Walk the reverse path one step.\n\n\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n\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\n var y2 = x2 - k2;\n\n while (x2 < text1_length && y2 < text2_length && text1.charAt(text1_length - x2 - 1) == text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n\n v2[k2_offset] = x2;\n\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\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; // Mirror x2 onto top-left coordinate system.\n\n x2 = text1_length - x2;\n\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\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\n\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 */\n\n function 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); // Compute both diffs serially.\n\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\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 */\n\n function 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 } // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\n\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) == text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\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 */\n\n function diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n } // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\n\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) == text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\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 */\n\n function diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\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\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\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i), shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i), shorttext.substring(0, j));\n\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) + 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\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n } // First check if the second quarter is the seed for a half-match.\n\n\n var hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4)); // Check again based on the third quarter.\n\n var hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));\n var hm;\n\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 } // A half-match was found, sort out the return data.\n\n\n var text1_a, text1_b, text2_a, text2_b;\n\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\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 */\n\n function diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n\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\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\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n\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\n if (commonlength !== 0) {\n if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] == DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL, text_insert.substring(0, commonlength)]);\n pointer++;\n }\n\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n } // Factor out any common suffixies.\n\n\n commonlength = diff_commonSuffix(text_insert, text_delete);\n\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length - commonlength);\n text_delete = text_delete.substring(0, text_delete.length - commonlength);\n }\n } // Delete the offending records and add the merged ones.\n\n\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert, count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete, count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert, count_delete + count_insert, [DIFF_DELETE, text_delete], [DIFF_INSERT, text_insert]);\n }\n\n pointer = pointer - count_delete - count_insert + (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\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\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\n\n var changes = false;\n pointer = 1; // Intentionally ignore the first and last element (don't need checking).\n\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL && 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 - 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] + diffs[pointer][1].substring(0, diffs[pointer][1].length - 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) == 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] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n\n pointer++;\n } // If shifts were made, the diff needs reordering and another shift sweep.\n\n\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n }\n\n ;\n var diff = diff_main;\n diff.INSERT = DIFF_INSERT;\n diff.DELETE = DIFF_DELETE;\n diff.EQUAL = DIFF_EQUAL;\n module.exports = diff;\n /*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\n\n function cursor_normalize_diff(diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice(); // split d into two diff changes\n\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n\n throw new Error('cursor_pos is out of bounds!');\n }\n /*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\n\n\n function fix_cursor(diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d);\n return merge_tuples(ndiffs, cursor_pointer, 2);\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n\n return merge_tuples(ndiffs, cursor_pointer, 3);\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n }\n /*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\n\n\n function fix_emoji(diffs) {\n var compact = false;\n\n var starts_with_pair_end = function starts_with_pair_end(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n };\n\n var ends_with_pair_start = function ends_with_pair_start(str) {\n return str.charCodeAt(str.length - 1) >= 0xD800 && str.charCodeAt(str.length - 1) <= 0xDBFF;\n };\n\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i - 2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i - 2][1]) && diffs[i - 1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i - 1][1]) && diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n diffs[i - 1][1] = diffs[i - 2][1].slice(-1) + diffs[i - 1][1];\n diffs[i][1] = diffs[i - 2][1].slice(-1) + diffs[i][1];\n diffs[i - 2][1] = diffs[i - 2][1].slice(0, -1);\n }\n }\n\n if (!compact) {\n return diffs;\n }\n\n var fixed_diffs = [];\n\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n\n return fixed_diffs;\n }\n /*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\n\n\n function merge_tuples(diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i + 1];\n\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n\n return diffs;\n }\n /***/\n\n }, function (module, exports) {\n exports = module.exports = typeof Object.keys === 'function' ? Object.keys : shim;\n exports.shim = shim;\n\n function shim(obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n }\n /***/\n\n }, function (module, exports) {\n var supportsArgumentsClass = function () {\n return Object.prototype.toString.call(arguments);\n }() == '[object Arguments]';\n\n exports = module.exports = supportsArgumentsClass ? supported : unsupported;\n exports.supported = supported;\n\n function supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n }\n\n ;\n exports.unsupported = unsupported;\n\n function unsupported(object) {\n return object && _typeof2(object) == 'object' && typeof object.length == 'number' && Object.prototype.hasOwnProperty.call(object, 'callee') && !Object.prototype.propertyIsEnumerable.call(object, 'callee') || false;\n }\n\n ;\n /***/\n }, function (module, exports) {\n 'use strict';\n\n var has = Object.prototype.hasOwnProperty,\n prefix = '~';\n /**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\n\n function Events() {} //\n // We try to not inherit from `Object.prototype`. In some engines creating an\n // instance in this way is faster than calling `Object.create(null)` directly.\n // If `Object.create(null)` is not supported we prefix the event names with a\n // character to make sure that the built-in object properties are not\n // overridden or used as an attack vector.\n //\n\n\n if (Object.create) {\n Events.prototype = Object.create(null); //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n\n if (!new Events().__proto__) prefix = false;\n }\n /**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\n\n\n function EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n }\n /**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\n\n\n function EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\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 */\n\n\n EventEmitter.prototype.eventNames = function eventNames() {\n var names = [],\n events,\n name;\n if (this._eventsCount === 0) return names;\n\n for (name in events = this._events) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n };\n /**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\n\n\n EventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event,\n available = this._events[evt];\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 * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\n\n\n EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt]) return false;\n var listeners = this._events[evt],\n len = arguments.length,\n args,\n i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1:\n return listeners.fn.call(listeners.context), true;\n\n case 2:\n return listeners.fn.call(listeners.context, a1), true;\n\n case 3:\n return listeners.fn.call(listeners.context, a1, a2), true;\n\n case 4:\n return listeners.fn.call(listeners.context, a1, a2, a3), true;\n\n case 5:\n return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n\n case 6:\n 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:\n listeners[i].fn.call(listeners[i].context);\n break;\n\n case 2:\n listeners[i].fn.call(listeners[i].context, a1);\n break;\n\n case 3:\n listeners[i].fn.call(listeners[i].context, a1, a2);\n break;\n\n case 4:\n listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n break;\n\n default:\n if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n };\n /**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n\n\n EventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this),\n evt = prefix ? prefix + event : event;\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;else if (!this._events[evt].fn) this._events[evt].push(listener);else this._events[evt] = [this._events[evt], listener];\n return this;\n };\n /**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n\n\n EventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true),\n evt = prefix ? prefix + event : event;\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;else if (!this._events[evt].fn) this._events[evt].push(listener);else this._events[evt] = [this._events[evt], listener];\n return this;\n };\n /**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n\n\n EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt]) return this;\n\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n if (--this._eventsCount === 0) this._events = new Events();else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n events.push(listeners[i]);\n }\n } //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n\n\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;else if (--this._eventsCount === 0) this._events = new Events();else delete this._events[evt];\n }\n\n return this;\n };\n /**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n\n\n EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n }; //\n // Alias methods names because people roll like that.\n //\n\n\n EventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n EventEmitter.prototype.addListener = EventEmitter.prototype.on; //\n // This function doesn't apply anymore.\n //\n\n EventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n }; //\n // Expose the prefix.\n //\n\n\n EventEmitter.prefixed = prefix; //\n // Allow `EventEmitter` to be imported as module namespace.\n //\n\n EventEmitter.EventEmitter = EventEmitter; //\n // Expose the module.\n //\n\n if ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n }\n /***/\n\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\n var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _extend2 = __webpack_require__(3);\n\n var _extend3 = _interopRequireDefault(_extend2);\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n var _align = __webpack_require__(36);\n\n var _background = __webpack_require__(37);\n\n var _code = __webpack_require__(13);\n\n var _code2 = _interopRequireDefault(_code);\n\n var _color = __webpack_require__(26);\n\n var _direction = __webpack_require__(38);\n\n var _font = __webpack_require__(39);\n\n var _size = __webpack_require__(40);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var debug = (0, _logger2.default)('quill:clipboard');\n var DOM_KEY = '__ql-matcher';\n var CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n var ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n }, {});\n var STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n }, {});\n\n var Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n\n _this.container = _this.quill.addContainer('ql-clipboard');\n\n _this.container.setAttribute('contenteditable', true);\n\n _this.container.setAttribute('tabindex', -1);\n\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n selector = _ref2[0],\n matcher = _ref2[1];\n\n if (!options.matchVisual && matcher === matchSpacing) return;\n\n _this.addMatcher(selector, matcher);\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n\n return this.convert();\n }\n\n var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n\n if (formats[_code2.default.blotName]) {\n var text = this.container.innerText;\n this.container.innerHTML = '';\n return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers); // Remove trailing newline\n\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n }\n\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, _quill2.default.sources.SILENT);\n } else {\n var paste = this.convert(html);\n this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2.default().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(_quill2.default.sources.SILENT);\n setTimeout(function () {\n delta = delta.concat(_this2.convert()).delete(range.length);\n\n _this2.quill.updateContents(delta, _quill2.default.sources.USER); // range.length contributes to delta.length()\n\n\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n\n _this2.quill.focus();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n }(_module2.default);\n\n Clipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n };\n\n function applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2.default());\n }\n }\n\n function computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n }\n\n function deltaEndsWith(delta, text) {\n var endText = \"\";\n\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n\n return endText.slice(-1 * text.length) === text;\n }\n\n function isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n }\n\n function traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2.default());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n\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\n return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n }\n\n function matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n }\n\n function matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n\n var classes = _parchment2.default.Attributor.Class.keys(node);\n\n var styles = _parchment2.default.Attributor.Style.keys(node);\n\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n\n attr = STYLE_ATTRIBUTORS[name];\n\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n\n return delta;\n }\n\n function matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n\n if (match == null) return delta;\n\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\n\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2.default().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n\n return delta;\n }\n\n function matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n\n return delta;\n }\n\n function matchIgnore() {\n return new _quillDelta2.default();\n }\n\n function matchIndent(node, delta) {\n var match = _parchment2.default.query(node);\n\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n\n var indent = -1,\n parent = node.parentNode;\n\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n\n parent = parent.parentNode;\n }\n\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, {\n indent: indent\n }));\n }\n\n function matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n\n return delta;\n }\n\n function matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n\n return delta;\n }\n\n function matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n\n return delta;\n }\n\n function matchText(node, delta) {\n var text = node.data; // Word represents empty line with  \n\n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n\n return match.length < 1 && collapse ? ' ' : match;\n };\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\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n\n return delta.insert(text);\n }\n\n exports.default = Clipboard;\n exports.matchAttributor = matchAttributor;\n exports.matchBlot = matchBlot;\n exports.matchNewline = matchNewline;\n exports.matchSpacing = matchSpacing;\n exports.matchText = matchText;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Bold = function (_Inline) {\n _inherits(Bold, _Inline);\n\n function Bold() {\n _classCallCheck(this, Bold);\n\n return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n }\n\n _createClass(Bold, [{\n key: 'optimize',\n value: function optimize(context) {\n _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n }], [{\n key: 'create',\n value: function create() {\n return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return Bold;\n }(_inline2.default);\n\n Bold.blotName = 'bold';\n Bold.tagName = ['STRONG', 'B'];\n exports.default = Bold;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.addControls = exports.default = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var debug = (0, _logger2.default)('quill:toolbar');\n\n var Toolbar = function (_Module) {\n _inherits(Toolbar, _Module);\n\n function Toolbar(quill, options) {\n _classCallCheck(this, Toolbar);\n\n var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n if (Array.isArray(_this.options.container)) {\n var container = document.createElement('div');\n addControls(container, _this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n _this.container = container;\n } else if (typeof _this.options.container === 'string') {\n _this.container = document.querySelector(_this.options.container);\n } else {\n _this.container = _this.options.container;\n }\n\n if (!(_this.container instanceof HTMLElement)) {\n var _ret;\n\n return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n }\n\n _this.container.classList.add('ql-toolbar');\n\n _this.controls = [];\n _this.handlers = {};\n Object.keys(_this.options.handlers).forEach(function (format) {\n _this.addHandler(format, _this.options.handlers[format]);\n });\n [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n _this.attach(input);\n });\n\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n if (type === _quill2.default.events.SELECTION_CHANGE) {\n _this.update(range);\n }\n });\n\n _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n var _this$quill$selection = _this.quill.selection.getRange(),\n _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n _this.update(range);\n });\n\n return _this;\n }\n\n _createClass(Toolbar, [{\n key: 'addHandler',\n value: function addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n }, {\n key: 'attach',\n value: function attach(input) {\n var _this2 = this;\n\n var format = [].find.call(input.classList, function (className) {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\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\n if (_parchment2.default.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n\n var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, function (e) {\n var value = void 0;\n\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n var selected = input.options[input.selectedIndex];\n\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\n e.preventDefault();\n }\n\n _this2.quill.focus();\n\n var _quill$selection$getR = _this2.quill.selection.getRange(),\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n range = _quill$selection$getR2[0];\n\n if (_this2.handlers[format] != null) {\n _this2.handlers[format].call(_this2, value);\n } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n value = prompt('Enter ' + format);\n if (!value) return;\n\n _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n } else {\n _this2.quill.format(format, value, _quill2.default.sources.USER);\n }\n\n _this2.update(range);\n }); // TODO use weakmap\n\n this.controls.push([format, input]);\n }\n }, {\n key: 'update',\n value: function update(range) {\n var formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n format = _pair[0],\n input = _pair[1];\n\n if (input.tagName === 'SELECT') {\n var option = void 0;\n\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n var value = formats[format];\n\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n\n option = input.querySelector('option[value=\"' + value + '\"]');\n }\n\n if (option == null) {\n input.value = ''; // TODO make configurable?\n\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n }]);\n\n return Toolbar;\n }(_module2.default);\n\n Toolbar.DEFAULTS = {};\n\n function addButton(container, format, value) {\n var input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n\n if (value != null) {\n input.value = value;\n }\n\n container.appendChild(input);\n }\n\n function addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n\n groups.forEach(function (controls) {\n var group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function (control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n var format = Object.keys(control)[0];\n var value = control[format];\n\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\n function addSelect(container, format, values) {\n var input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function (value) {\n var option = document.createElement('option');\n\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n\n input.appendChild(option);\n });\n container.appendChild(input);\n }\n\n Toolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function clean() {\n var _this3 = this;\n\n var range = this.quill.getSelection();\n if (range == null) return;\n\n if (range.length == 0) {\n var formats = this.quill.getFormat();\n Object.keys(formats).forEach(function (name) {\n // Clean functionality in existing apps only clean inline formats\n if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n _this3.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, _quill2.default.sources.USER);\n }\n },\n direction: function direction(value) {\n var align = this.quill.getFormat()['align'];\n\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', _quill2.default.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, _quill2.default.sources.USER);\n }\n\n this.quill.format('direction', value, _quill2.default.sources.USER);\n },\n indent: function indent(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n var indent = parseInt(formats.indent || 0);\n\n if (value === '+1' || value === '-1') {\n var modifier = value === '+1' ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n }\n },\n link: function link(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n\n this.quill.format('link', value, _quill2.default.sources.USER);\n },\n list: function list(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, _quill2.default.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n }\n } else {\n this.quill.format('list', value, _quill2.default.sources.USER);\n }\n }\n }\n };\n exports.default = Toolbar;\n exports.addControls = addControls;\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _picker = __webpack_require__(28);\n\n var _picker2 = _interopRequireDefault(_picker);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ColorPicker = function (_Picker) {\n _inherits(ColorPicker, _Picker);\n\n function ColorPicker(select, label) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n _this.label.innerHTML = label;\n\n _this.container.classList.add('ql-color-picker');\n\n [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n item.classList.add('ql-primary');\n });\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\n var colorLabel = this.label.querySelector('.ql-color-label');\n var value = item ? item.getAttribute('data-value') || '' : '';\n\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n }]);\n\n return ColorPicker;\n }(_picker2.default);\n\n exports.default = ColorPicker;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _picker = __webpack_require__(28);\n\n var _picker2 = _interopRequireDefault(_picker);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var IconPicker = function (_Picker) {\n _inherits(IconPicker, _Picker);\n\n function IconPicker(select, icons) {\n _classCallCheck(this, IconPicker);\n\n var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n _this.container.classList.add('ql-icon-picker');\n\n [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n _this.defaultItem = _this.container.querySelector('.ql-selected');\n\n _this.selectItem(_this.defaultItem);\n\n return _this;\n }\n\n _createClass(IconPicker, [{\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n }]);\n\n return IconPicker;\n }(_picker2.default);\n\n exports.default = IconPicker;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Tooltip = function () {\n function Tooltip(quill, boundsContainer) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', function () {\n _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n });\n }\n\n this.hide();\n }\n\n _createClass(Tooltip, [{\n key: 'hide',\n value: function hide() {\n this.root.classList.add('ql-hidden');\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2; // root.scrollTop should be 0 if scrollContainer !== root\n\n var top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n var containerBounds = this.boundsContainer.getBoundingClientRect();\n var rootBounds = this.root.getBoundingClientRect();\n var shift = 0;\n\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = left + shift + 'px';\n }\n\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = left + shift + 'px';\n }\n\n if (rootBounds.bottom > containerBounds.bottom) {\n var height = rootBounds.bottom - rootBounds.top;\n var verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = top - verticalShift + 'px';\n this.root.classList.add('ql-flip');\n }\n\n return shift;\n }\n }, {\n key: 'show',\n value: function show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n }]);\n\n return Tooltip;\n }();\n\n exports.default = Tooltip;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _emitter = __webpack_require__(8);\n\n var _emitter2 = _interopRequireDefault(_emitter);\n\n var _base = __webpack_require__(43);\n\n var _base2 = _interopRequireDefault(_base);\n\n var _link = __webpack_require__(27);\n\n var _link2 = _interopRequireDefault(_link);\n\n var _selection = __webpack_require__(15);\n\n var _icons = __webpack_require__(41);\n\n var _icons2 = _interopRequireDefault(_icons);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var TOOLBAR_CONFIG = [[{\n header: ['1', '2', '3', false]\n }], ['bold', 'italic', 'underline', 'link'], [{\n list: 'ordered'\n }, {\n list: 'bullet'\n }], ['clean']];\n\n var SnowTheme = function (_BaseTheme) {\n _inherits(SnowTheme, _BaseTheme);\n\n function SnowTheme(quill, options) {\n _classCallCheck(this, SnowTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-snow');\n\n return _this;\n }\n\n _createClass(SnowTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({\n key: 'K',\n shortKey: true\n }, function (range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n }]);\n\n return SnowTheme;\n }(_base2.default);\n\n SnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (value) {\n var range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n var preview = this.quill.getText(range);\n\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n\n var tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n });\n\n var SnowTooltip = function (_BaseTooltip) {\n _inherits(SnowTooltip, _BaseTooltip);\n\n function SnowTooltip(quill, bounds) {\n _classCallCheck(this, SnowTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n _this2.preview = _this2.root.querySelector('a.ql-preview');\n return _this2;\n }\n\n _createClass(SnowTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n\n this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n if (_this3.root.classList.contains('ql-editing')) {\n _this3.save();\n } else {\n _this3.edit('link', _this3.preview.textContent);\n }\n\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n if (_this3.linkRange != null) {\n var range = _this3.linkRange;\n\n _this3.restoreFocus();\n\n _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n\n delete _this3.linkRange;\n }\n\n event.preventDefault();\n\n _this3.hide();\n });\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n if (range == null) return;\n\n if (range.length === 0 && source === _emitter2.default.sources.USER) {\n var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n link = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (link != null) {\n _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n\n var preview = _link2.default.formats(link.domNode);\n\n _this3.preview.textContent = preview;\n\n _this3.preview.setAttribute('href', preview);\n\n _this3.show();\n\n _this3.position(_this3.quill.getBounds(_this3.linkRange));\n\n return;\n }\n } else {\n delete _this3.linkRange;\n }\n\n _this3.hide();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n\n this.root.removeAttribute('data-mode');\n }\n }]);\n\n return SnowTooltip;\n }(_base.BaseTooltip);\n\n SnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n exports.default = SnowTheme;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _core = __webpack_require__(29);\n\n var _core2 = _interopRequireDefault(_core);\n\n var _align = __webpack_require__(36);\n\n var _direction = __webpack_require__(38);\n\n var _indent = __webpack_require__(64);\n\n var _blockquote = __webpack_require__(65);\n\n var _blockquote2 = _interopRequireDefault(_blockquote);\n\n var _header = __webpack_require__(66);\n\n var _header2 = _interopRequireDefault(_header);\n\n var _list = __webpack_require__(67);\n\n var _list2 = _interopRequireDefault(_list);\n\n var _background = __webpack_require__(37);\n\n var _color = __webpack_require__(26);\n\n var _font = __webpack_require__(39);\n\n var _size = __webpack_require__(40);\n\n var _bold = __webpack_require__(56);\n\n var _bold2 = _interopRequireDefault(_bold);\n\n var _italic = __webpack_require__(68);\n\n var _italic2 = _interopRequireDefault(_italic);\n\n var _link = __webpack_require__(27);\n\n var _link2 = _interopRequireDefault(_link);\n\n var _script = __webpack_require__(69);\n\n var _script2 = _interopRequireDefault(_script);\n\n var _strike = __webpack_require__(70);\n\n var _strike2 = _interopRequireDefault(_strike);\n\n var _underline = __webpack_require__(71);\n\n var _underline2 = _interopRequireDefault(_underline);\n\n var _image = __webpack_require__(72);\n\n var _image2 = _interopRequireDefault(_image);\n\n var _video = __webpack_require__(73);\n\n var _video2 = _interopRequireDefault(_video);\n\n var _code = __webpack_require__(13);\n\n var _code2 = _interopRequireDefault(_code);\n\n var _formula = __webpack_require__(74);\n\n var _formula2 = _interopRequireDefault(_formula);\n\n var _syntax = __webpack_require__(75);\n\n var _syntax2 = _interopRequireDefault(_syntax);\n\n var _toolbar = __webpack_require__(57);\n\n var _toolbar2 = _interopRequireDefault(_toolbar);\n\n var _icons = __webpack_require__(41);\n\n var _icons2 = _interopRequireDefault(_icons);\n\n var _picker = __webpack_require__(28);\n\n var _picker2 = _interopRequireDefault(_picker);\n\n var _colorPicker = __webpack_require__(59);\n\n var _colorPicker2 = _interopRequireDefault(_colorPicker);\n\n var _iconPicker = __webpack_require__(60);\n\n var _iconPicker2 = _interopRequireDefault(_iconPicker);\n\n var _tooltip = __webpack_require__(61);\n\n var _tooltip2 = _interopRequireDefault(_tooltip);\n\n var _bubble = __webpack_require__(108);\n\n var _bubble2 = _interopRequireDefault(_bubble);\n\n var _snow = __webpack_require__(62);\n\n var _snow2 = _interopRequireDefault(_snow);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n _core2.default.register({\n 'attributors/attribute/direction': _direction.DirectionAttribute,\n 'attributors/class/align': _align.AlignClass,\n 'attributors/class/background': _background.BackgroundClass,\n 'attributors/class/color': _color.ColorClass,\n 'attributors/class/direction': _direction.DirectionClass,\n 'attributors/class/font': _font.FontClass,\n 'attributors/class/size': _size.SizeClass,\n 'attributors/style/align': _align.AlignStyle,\n 'attributors/style/background': _background.BackgroundStyle,\n 'attributors/style/color': _color.ColorStyle,\n 'attributors/style/direction': _direction.DirectionStyle,\n 'attributors/style/font': _font.FontStyle,\n 'attributors/style/size': _size.SizeStyle\n }, true);\n\n _core2.default.register({\n 'formats/align': _align.AlignClass,\n 'formats/direction': _direction.DirectionClass,\n 'formats/indent': _indent.IndentClass,\n 'formats/background': _background.BackgroundStyle,\n 'formats/color': _color.ColorStyle,\n 'formats/font': _font.FontClass,\n 'formats/size': _size.SizeClass,\n 'formats/blockquote': _blockquote2.default,\n 'formats/code-block': _code2.default,\n 'formats/header': _header2.default,\n 'formats/list': _list2.default,\n 'formats/bold': _bold2.default,\n 'formats/code': _code.Code,\n 'formats/italic': _italic2.default,\n 'formats/link': _link2.default,\n 'formats/script': _script2.default,\n 'formats/strike': _strike2.default,\n 'formats/underline': _underline2.default,\n 'formats/image': _image2.default,\n 'formats/video': _video2.default,\n 'formats/list/item': _list.ListItem,\n 'modules/formula': _formula2.default,\n 'modules/syntax': _syntax2.default,\n 'modules/toolbar': _toolbar2.default,\n 'themes/bubble': _bubble2.default,\n 'themes/snow': _snow2.default,\n 'ui/icons': _icons2.default,\n 'ui/picker': _picker2.default,\n 'ui/icon-picker': _iconPicker2.default,\n 'ui/color-picker': _colorPicker2.default,\n 'ui/tooltip': _tooltip2.default\n }, true);\n\n exports.default = _core2.default;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.IndentClass = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var IdentAttributor = function (_Parchment$Attributor) {\n _inherits(IdentAttributor, _Parchment$Attributor);\n\n function IdentAttributor() {\n _classCallCheck(this, IdentAttributor);\n\n return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n }\n\n _createClass(IdentAttributor, [{\n key: 'add',\n value: function add(node, value) {\n if (value === '+1' || value === '-1') {\n var indent = this.value(node) || 0;\n value = value === '+1' ? indent + 1 : indent - 1;\n }\n\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n }\n }\n }, {\n key: 'canAdd',\n value: function canAdd(node, value) {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n }\n }, {\n key: 'value',\n value: function value(node) {\n return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n }\n }]);\n\n return IdentAttributor;\n }(_parchment2.default.Attributor.Class);\n\n var IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n });\n exports.IndentClass = IndentClass;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Blockquote = function (_Block) {\n _inherits(Blockquote, _Block);\n\n function Blockquote() {\n _classCallCheck(this, Blockquote);\n\n return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n }\n\n return Blockquote;\n }(_block2.default);\n\n Blockquote.blotName = 'blockquote';\n Blockquote.tagName = 'blockquote';\n exports.default = Blockquote;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Header = function (_Block) {\n _inherits(Header, _Block);\n\n function Header() {\n _classCallCheck(this, Header);\n\n return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n }\n\n _createClass(Header, null, [{\n key: 'formats',\n value: function formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n }]);\n\n return Header;\n }(_block2.default);\n\n Header.blotName = 'header';\n Header.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n exports.default = Header;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = exports.ListItem = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n var _container = __webpack_require__(25);\n\n var _container2 = _interopRequireDefault(_container);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ListItem = function (_Block) {\n _inherits(ListItem, _Block);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'format',\n value: function format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(_parchment2.default.create(this.statics.scope));\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n }\n }\n }, {\n key: 'remove',\n value: function remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n }\n }\n }, {\n key: 'replaceWith',\n value: function replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n }\n }\n }], [{\n key: 'formats',\n value: function formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n }\n }]);\n\n return ListItem;\n }(_block2.default);\n\n ListItem.blotName = 'list-item';\n ListItem.tagName = 'LI';\n\n var List = function (_Container) {\n _inherits(List, _Container);\n\n _createClass(List, null, [{\n key: 'create',\n value: function create(value) {\n var tagName = value === 'ordered' ? 'OL' : 'UL';\n\n var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n\n return undefined;\n }\n }]);\n\n function List(domNode) {\n _classCallCheck(this, List);\n\n var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n var listEventHandler = function listEventHandler(e) {\n if (e.target.parentNode !== domNode) return;\n\n var format = _this2.statics.formats(domNode);\n\n var blot = _parchment2.default.find(e.target);\n\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if (format === 'unchecked') {\n blot.format('list', 'checked');\n }\n };\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n return _this2;\n }\n\n _createClass(List, [{\n key: 'format',\n value: function format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats() {\n // We don't inherit from FormatBlot\n return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n } else {\n var index = ref == null ? this.length() : ref.offset(this);\n var after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n\n var next = this.next;\n\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n var item = _parchment2.default.create(this.statics.defaultChild);\n\n target.moveChildren(item);\n this.appendChild(item);\n }\n\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n }\n }]);\n\n return List;\n }(_container2.default);\n\n List.blotName = 'list';\n List.scope = _parchment2.default.Scope.BLOCK_BLOT;\n List.tagName = ['OL', 'UL'];\n List.defaultChild = 'list-item';\n List.allowedChildren = [ListItem];\n exports.ListItem = ListItem;\n exports.default = List;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _bold = __webpack_require__(56);\n\n var _bold2 = _interopRequireDefault(_bold);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Italic = function (_Bold) {\n _inherits(Italic, _Bold);\n\n function Italic() {\n _classCallCheck(this, Italic);\n\n return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n }\n\n return Italic;\n }(_bold2.default);\n\n Italic.blotName = 'italic';\n Italic.tagName = ['EM', 'I'];\n exports.default = Italic;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Script = function (_Inline) {\n _inherits(Script, _Inline);\n\n function Script() {\n _classCallCheck(this, Script);\n\n return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n }\n\n _createClass(Script, null, [{\n key: 'create',\n value: function create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n }]);\n\n return Script;\n }(_inline2.default);\n\n Script.blotName = 'script';\n Script.tagName = ['SUB', 'SUP'];\n exports.default = Script;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Strike = function (_Inline) {\n _inherits(Strike, _Inline);\n\n function Strike() {\n _classCallCheck(this, Strike);\n\n return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n }\n\n return Strike;\n }(_inline2.default);\n\n Strike.blotName = 'strike';\n Strike.tagName = 'S';\n exports.default = Strike;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Underline = function (_Inline) {\n _inherits(Underline, _Inline);\n\n function Underline() {\n _classCallCheck(this, Underline);\n\n return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n }\n\n return Underline;\n }(_inline2.default);\n\n Underline.blotName = 'underline';\n Underline.tagName = 'U';\n exports.default = Underline;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _link = __webpack_require__(27);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ATTRIBUTES = ['alt', 'height', 'width'];\n\n var Image = function (_Parchment$Embed) {\n _inherits(Image, _Parchment$Embed);\n\n function Image() {\n _classCallCheck(this, Image);\n\n return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n }\n\n _createClass(Image, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n\n return formats;\n }, {});\n }\n }, {\n key: 'match',\n value: function match(url) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url);\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Image;\n }(_parchment2.default.Embed);\n\n Image.blotName = 'image';\n Image.tagName = 'IMG';\n exports.default = Image;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _block = __webpack_require__(4);\n\n var _link = __webpack_require__(27);\n\n var _link2 = _interopRequireDefault(_link);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ATTRIBUTES = ['height', 'width'];\n\n var Video = function (_BlockEmbed) {\n _inherits(Video, _BlockEmbed);\n\n function Video() {\n _classCallCheck(this, Video);\n\n return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n }\n\n _createClass(Video, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n\n return formats;\n }, {});\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _link2.default.sanitize(url);\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Video;\n }(_block.BlockEmbed);\n\n Video.blotName = 'video';\n Video.className = 'ql-video';\n Video.tagName = 'IFRAME';\n exports.default = Video;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = exports.FormulaBlot = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _embed = __webpack_require__(35);\n\n var _embed2 = _interopRequireDefault(_embed);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var FormulaBlot = function (_Embed) {\n _inherits(FormulaBlot, _Embed);\n\n function FormulaBlot() {\n _classCallCheck(this, FormulaBlot);\n\n return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n }\n\n _createClass(FormulaBlot, null, [{\n key: 'create',\n value: function create(value) {\n var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n\n return node;\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('data-value');\n }\n }]);\n\n return FormulaBlot;\n }(_embed2.default);\n\n FormulaBlot.blotName = 'formula';\n FormulaBlot.className = 'ql-formula';\n FormulaBlot.tagName = 'SPAN';\n\n var Formula = function (_Module) {\n _inherits(Formula, _Module);\n\n _createClass(Formula, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(FormulaBlot, true);\n }\n }]);\n\n function Formula() {\n _classCallCheck(this, Formula);\n\n var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n\n return _this2;\n }\n\n return Formula;\n }(_module2.default);\n\n exports.FormulaBlot = FormulaBlot;\n exports.default = Formula;\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n var _code = __webpack_require__(13);\n\n var _code2 = _interopRequireDefault(_code);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var SyntaxCodeBlock = function (_CodeBlock) {\n _inherits(SyntaxCodeBlock, _CodeBlock);\n\n function SyntaxCodeBlock() {\n _classCallCheck(this, SyntaxCodeBlock);\n\n return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n }\n\n _createClass(SyntaxCodeBlock, [{\n key: 'replaceWith',\n value: function replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n\n _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n }\n }, {\n key: 'highlight',\n value: function highlight(_highlight) {\n var text = this.domNode.textContent;\n\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = _highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n\n this.cachedText = text;\n }\n }\n }]);\n\n return SyntaxCodeBlock;\n }(_code2.default);\n\n SyntaxCodeBlock.className = 'ql-syntax';\n var CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n scope: _parchment2.default.Scope.INLINE\n });\n\n var Syntax = function (_Module) {\n _inherits(Syntax, _Module);\n\n _createClass(Syntax, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(CodeToken, true);\n\n _quill2.default.register(SyntaxCodeBlock, true);\n }\n }]);\n\n function Syntax(quill, options) {\n _classCallCheck(this, Syntax);\n\n var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n if (typeof _this2.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n\n var timer = null;\n\n _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n clearTimeout(timer);\n timer = setTimeout(function () {\n _this2.highlight();\n\n timer = null;\n }, _this2.options.interval);\n });\n\n _this2.highlight();\n\n return _this2;\n }\n\n _createClass(Syntax, [{\n key: 'highlight',\n value: function highlight() {\n var _this3 = this;\n\n if (this.quill.selection.composing) return;\n this.quill.update(_quill2.default.sources.USER);\n var range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n code.highlight(_this3.options.highlight);\n });\n this.quill.update(_quill2.default.sources.SILENT);\n\n if (range != null) {\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\n }\n }\n }]);\n\n return Syntax;\n }(_module2.default);\n\n Syntax.DEFAULTS = {\n highlight: function () {\n if (window.hljs == null) return null;\n return function (text) {\n var result = window.hljs.highlightAuto(text);\n return result.value;\n };\n }(),\n interval: 1000\n };\n exports.CodeBlock = SyntaxCodeBlock;\n exports.CodeToken = CodeToken;\n exports.default = Syntax;\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports) {\n module.exports = \" \";\n /***/\n }, function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = exports.BubbleTooltip = undefined;\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _emitter = __webpack_require__(8);\n\n var _emitter2 = _interopRequireDefault(_emitter);\n\n var _base = __webpack_require__(43);\n\n var _base2 = _interopRequireDefault(_base);\n\n var _selection = __webpack_require__(15);\n\n var _icons = __webpack_require__(41);\n\n var _icons2 = _interopRequireDefault(_icons);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{\n header: 1\n }, {\n header: 2\n }, 'blockquote']];\n\n var BubbleTheme = function (_BaseTheme) {\n _inherits(BubbleTheme, _BaseTheme);\n\n function BubbleTheme(quill, options) {\n _classCallCheck(this, BubbleTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-bubble');\n\n return _this;\n }\n\n _createClass(BubbleTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n }\n }]);\n\n return BubbleTheme;\n }(_base2.default);\n\n BubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n });\n\n var BubbleTooltip = function (_BaseTooltip) {\n _inherits(BubbleTooltip, _BaseTooltip);\n\n function BubbleTooltip(quill, bounds) {\n _classCallCheck(this, BubbleTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n\n if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n _this2.show(); // Lock our width so we will expand beyond our offsetParent boundaries\n\n\n _this2.root.style.left = '0px';\n _this2.root.style.width = '';\n _this2.root.style.width = _this2.root.offsetWidth + 'px';\n\n var lines = _this2.quill.getLines(range.index, range.length);\n\n if (lines.length === 1) {\n _this2.position(_this2.quill.getBounds(range));\n } else {\n var lastLine = lines[lines.length - 1];\n\n var index = _this2.quill.getIndex(lastLine);\n\n var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n\n var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n\n _this2.position(_bounds);\n }\n } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n _this2.hide();\n }\n });\n\n return _this2;\n }\n\n _createClass(BubbleTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n\n this.root.querySelector('.ql-close').addEventListener('click', function () {\n _this3.root.classList.remove('ql-editing');\n });\n this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(function () {\n if (_this3.root.classList.contains('ql-hidden')) return;\n\n var range = _this3.quill.getSelection();\n\n if (range != null) {\n _this3.position(_this3.quill.getBounds(range));\n }\n }, 1);\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.show();\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n\n var arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n }\n }]);\n\n return BubbleTooltip;\n }(_base.BaseTooltip);\n\n BubbleTooltip.TEMPLATE = ['', '
', '', '', '
'].join('');\n exports.BubbleTooltip = BubbleTooltip;\n exports.default = BubbleTheme;\n /***/\n }, function (module, exports, __webpack_require__) {\n module.exports = __webpack_require__(63);\n /***/\n }])[\"default\"]\n );\n});","\"use strict\";\n\nfunction __export(m) {\n for (var p in m) {\n if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__export(require(\"./src/adaptor\"));\n\n__export(require(\"./src/d3adaptor\"));\n\n__export(require(\"./src/descent\"));\n\n__export(require(\"./src/geom\"));\n\n__export(require(\"./src/gridrouter\"));\n\n__export(require(\"./src/handledisconnected\"));\n\n__export(require(\"./src/layout\"));\n\n__export(require(\"./src/layout3d\"));\n\n__export(require(\"./src/linklengths\"));\n\n__export(require(\"./src/powergraph\"));\n\n__export(require(\"./src/pqueue\"));\n\n__export(require(\"./src/rbtree\"));\n\n__export(require(\"./src/rectangle\"));\n\n__export(require(\"./src/shortestpaths\"));\n\n__export(require(\"./src/vpsc\"));\n\n__export(require(\"./src/batch\"));","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */\n;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n\n return element[expando][key] = value;\n };\n\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function CustomEvent(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function get() {\n return true;\n }\n });\n }\n\n return result;\n };\n }\n\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function prepareOptions(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n\n options.accept = AcceptHeaders[options.dataType];\n\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n\n return options;\n };\n\n createXHR = function createXHR(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n\n xhr.withCredentials = !!options.withCredentials;\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n\n return xhr;\n };\n\n processResponse = function processResponse(response, type) {\n var parser, script;\n\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n\n return response;\n };\n\n Rails.href = function (element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n\n toArray = function toArray(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n\n if (additionalParam) {\n params.push(additionalParam);\n }\n\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n\n allowAction = function allowAction(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n\n if (!message) {\n return true;\n }\n\n answer = false;\n\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n\n callback = fire(element, 'confirm:complete', [answer]);\n }\n\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function (e) {\n var element;\n\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n\n element = e.target;\n } else {\n element = e;\n }\n\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function disableLinkElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function enableLinkElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function disableFormElements(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function disableFormElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function enableFormElements(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function enableFormElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n\n setData(element, 'ujs:enable-with', null);\n }\n\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function isXhrRedirect(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n\n if (!method) {\n return;\n }\n\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function isRemote(element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n\n if (!isRemote(element)) {\n return true;\n }\n\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function beforeSend(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function success() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function error() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function complete() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n\n if (!form) {\n return;\n }\n\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","var map = {\n\t\"./graph_controller.js\": 40,\n\t\"./rich_text_controller.js\": 21,\n\t\"./task_dropdown_controller.js\": 27,\n\t\"./task_modal_controller.js\": 28\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 20;","import { Controller } from 'stimulus'\nimport Quill from 'quill'\n\n// Based on https://mattsears.com/articles/2021/01/26/creating-a-simple-rich-text-editor-with-quill-stimulus-and-tailwind-css/\nexport default class extends Controller {\n static targets = ['container', 'hidden', 'toolbar']\n\n quill = null\n\n connect() {\n this.quillInit()\n }\n\n quillInit() {\n this.quill = new Quill(this.containerTarget, this.quillOption)\n let self = this\n\n this.quill.on('text-change', function(delta) {\n self.hiddenTarget.value = self.quill.root.innerHTML\n\n // Dispatch change event, so autosave triggers\n self.hiddenTarget.dispatchEvent(new Event('change'))\n })\n }\n\n undo() {\n this.quill.history.undo()\n }\n\n redo() {\n this.quill.history.redo()\n }\n\n get quillOption() {\n return {\n modules: {\n toolbar: this.toolbarTarget,\n history: {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n },\n },\n }\n }\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n/* eslint-disable no-proto */\n'use strict';\n\nvar base64 = require('base64-js');\n\nvar ieee754 = require('ieee754');\n\nvar isArray = require('isarray');\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n} // base64 is 4/3 + up to two characters of the original data\n\n\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n\n return parts.join('');\n}","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = e << mLen | m;\n eLen += mLen;\n\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","import { Controller } from 'stimulus';\n\nexport default class extends Controller {\n static targets = ['menu', 'title', 'value', 'button']\n\n static values = {\n // Dropdown state\n open: Boolean,\n }\n\n toggle() {\n this.openValue = !this.openValue\n }\n\n hide(event) {\n if (this.element.contains(event.target) === false && this.openValue) {\n this.openValue = false\n }\n }\n\n set(e) {\n // Set hidden form input\n this.valueTarget.value = e.currentTarget.dataset.value\n\n // Set dropdown\n this.titleTarget.innerHTML = e.currentTarget.dataset.title || e.currentTarget.innerHTML\n\n // Dispatch change event, so autosave triggers\n this.valueTarget.dispatchEvent(new Event('change'))\n }\n\n openValueChanged() {\n this.openValue ? this._show() : this._hide()\n }\n\n _show() {\n setTimeout(() => {\n this.menuTarget.classList.remove('hidden')\n this.buttonTarget.classList.add('bg-gray-100')\n })\n }\n\n _hide() {\n setTimeout(() => {\n this.menuTarget.classList.add('hidden')\n this.buttonTarget.classList.remove('bg-gray-100')\n })\n }\n}\n","import { Modal } from 'tailwindcss-stimulus-components';\n\nexport default class extends Modal {\n connect() {\n super.connect()\n }\n}\n","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of