分布式调度框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1 lines
2.3 MiB

{"version":3,"sources":["webpack:///src/js/conf/home/pages/projects/pages/definition/pages/details/index.vue","webpack:///src/js/conf/home/pages/dag/definitionDetails.vue","webpack:///./src/js/conf/home/pages/dag/definitionDetails.vue","webpack:///./src/js/conf/home/pages/dag/definitionDetails.vue?49ae","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/details/index.vue?2d6a","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/details/index.vue","webpack:///src/js/module/components/spin/spin.vue","webpack:///src/js/module/components/secondaryMenu/secondaryMenu.vue","webpack:///./src/js/module/mixin/disabledState.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/dayjs/dayjs.min.js","webpack:///./src/js/module/components/spin/spin.vue","webpack:///./src/js/module/components/spin/spin.vue?542d","webpack:///./src/js/module/components/spin/spin.vue?9371","webpack:///./src/js/module/components/spin/spin.vue?87eb","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?c652","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?7693","webpack:///./src/js/module/components/secondaryMenu/close.png","webpack:///./src/js/module/components/secondaryMenu/open.png","webpack:///./src/js/module/components/secondaryMenu/menu.js","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?048e","webpack:///./src/js/module/filter/filter.js","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/listBox.vue","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/_source/codemirror.js","webpack:///./node_modules/codemirror/mode/sql/sql.js","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/util.js","webpack:///src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue","webpack:///src/js/module/components/priority/priority.vue","webpack:///./src/js/conf/home/pages/dag/_source/plugIn/util.js","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue","webpack:///./src/js/module/components/priority/priority.vue","webpack:///./src/js/module/download/index.js","webpack:///src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue","webpack:///./node_modules/jsplumb/dist/js/jsplumb.js","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/commcon.js","webpack:///src/js/conf/home/pages/dag/_source/formModel/log.vue","webpack:///./node_modules/codemirror/addon/hint/show-hint.js","webpack:///./node_modules/codemirror/addon/hint/sql-hint.js","webpack:///./node_modules/codemirror/addon/hint/xml-hint.js","webpack:///./node_modules/codemirror/mode/python/python.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/codemirror/mode/textile/textile.js","webpack:///./node_modules/codemirror/mode/shell/shell.js","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue?56df","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue?a332","webpack:///./src/lib/localData/email.js","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue?1e68","webpack:///./src/js/module/components/priority/priority.vue?4252","webpack:///./src/js/module/components/priority/priority.vue?ffb9","webpack:///./src/js/module/components/priority/priority.vue?cd09","webpack:///src/js/conf/home/pages/dag/_source/dag.vue","webpack:///./src/js/conf/home/pages/dag/_source/plugIn/jsPlumbHandle.js","webpack:///src/js/conf/home/pages/dag/_source/udp/udp.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue","webpack:///./src/js/conf/home/pages/dag/_source/jumpAffirm/index.js","webpack:///src/js/conf/home/pages/dag/_source/jumpAffirm/jumpAffirm.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/formModel.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/_source/listBox.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/_source/sqlType.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/datasource.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/_source/datasource.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/_source/selectInput.vue","webpack:///src/js/conf/home/pages/dag/_source/formModel/_source/timeoutAlarm.vue","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue?9af2","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue?3cff","webpack:///./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue?ea4b","webpack:///./src/js/conf/home/pages/dag/_source/formModel/log.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/log.vue?29c9","webpack:///./src/js/conf/home/pages/dag/_source/formModel/log.vue?ae18","webpack:///./src/js/conf/home/pages/dag/_source/formModel/log.vue?0568","webpack:///./src/js/conf/home/pages/dag/_source/dag.vue","webpack:///./src/js/conf/home/pages/dag/_source/dag.vue?a21c","webpack:///./src/js/conf/home/pages/dag/_source/dag.vue?b45e","webpack:///./src/js/conf/home/pages/dag/img/dag_bg.png","webpack:///./src/js/conf/home/pages/dag/img/toolbar_SHELL.png","webpack:///./src/js/conf/home/pages/dag/img/toolbar_SUB_PROCESS.png","webpack:///./src/js/conf/home/pages/dag/img/toolbar_PROCEDURE.png","webpack:///./src/js/conf/home/pages/dag/img/toolbar_SQL.png","webpack:///./src/js/conf/home/pages/dag/img/toolbar_SPARK.png","webpack:///./src/js/conf/home/pages/dag/img/toolbar_MR.png","webpack:///./src/js/conf/home/pages/dag/img/toolbar_PYTHON.png","webpack:///./src/js/conf/home/pages/dag/img/toolbar_DEPENDENT.png","webpack:///./src/js/conf/home/pages/dag/_source/dag.js","webpack:///./src/js/conf/home/pages/dag/_source/plugIn/dragZoom.js","webpack:///./src/js/conf/home/pages/dag/_source/plugIn/downChart.js","webpack:///./src/js/conf/home/pages/dag/_source/udp/udp.vue","webpack:///./src/js/conf/home/pages/dag/_source/udp/udp.vue?fb85","webpack:///./src/js/conf/home/pages/dag/_source/udp/udp.vue?7134","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue?02c7","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue?f451","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue?9206","webpack:///./src/js/conf/home/pages/dag/_source/jumpAffirm/jumpAffirm.vue","webpack:///./src/js/conf/home/pages/dag/_source/jumpAffirm/jumpAffirm.vue?e1a2","webpack:///./src/js/conf/home/pages/dag/_source/jumpAffirm/jumpAffirm.vue?8bc5","webpack:///./src/js/conf/home/pages/dag/_source/jumpAffirm/jumpAffirm.vue?d597","webpack:///./src/js/conf/home/pages/dag/_source/udp/udp.vue?b1ec","webpack:///./src/js/conf/home/pages/dag/_source/formModel/formModel.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/formModel.vue?5c7b","webpack:///./src/js/conf/home/pages/dag/_source/formModel/formModel.vue?3acf","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue?5496","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue?f58c","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/listBox.vue?b7cb","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/listBox.vue?1832","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/listBox.vue?1f38","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue?a2e9","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue?6bbb","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue?2df1","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue?5d26","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue?1aa0","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue?d1bd","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue?6a32","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/sqlType.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/sqlType.vue?d70f","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/datasource.vue?ac07","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue?d814","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue?2b27","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue?8cd5","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue?ab26","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue?ae0a","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue?fb62","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue?406c","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue?2dac","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue?8755","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue?0c2d","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue?abbc","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue?ef7f","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue?469c","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue?4fce","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue?4640","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue?35ba","webpack:///./src/js/conf/home/pages/dag/_source/formModel/_source/selectInput.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/_source/selectInput.vue?d02b","webpack:///./src/js/conf/home/pages/dag/_source/formModel/_source/timeoutAlarm.vue","webpack:///./src/js/conf/home/pages/dag/_source/formModel/_source/timeoutAlarm.vue?50ee","webpack:///./src/js/module/util/clickoutside.js","webpack:///./src/js/conf/home/pages/dag/_source/formModel/formModel.vue?bb4a","webpack:///./src/js/conf/home/pages/dag/_source/dag.vue?9346"],"names":["__webpack_require__","name","components","mDefinitionDetails","_definitionDetails2","default","mSecondaryMenu","_secondaryMenu2","_vuex","data","isLoading","releaseState","mixins","_disabledState2","props","methods","Object","assign","mapMutations","mapActions","init","_this","this","resetParams","Promise","all","getProcessDetails","$route","params","id","getProcessList","getResourcesList","then","item","setIsDetails","_jumpAffirm2","$root","catch","_reset","_this2","res","watch","deep","handler","created","mounted","mDag","_dag2","mSpin","_spin2","defineProperty","__webpack_exports__","value","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_definitionDetails_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_definitionDetails_vue___default","n","__WEBPACK_IMPORT_KEY__","key","d","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_f974417c_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_definitionDetails_vue__","Component","normalizeComponent","a","esExports","render","_h","$createElement","_c","_self","staticClass","_e","attrs","type","release-state","_v","is-spin","staticRenderFns","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_626d0192_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__","isSpin","Boolean","isLeft","menuList","_menu2","index","isTogHide","String","className","is","layoutBox","$","addClass","removeClass","_toggleSubMenu","isOpen","_toggleMenu","router","store","isDetails","state","dag","computed","_isDetails","factory","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","exec","edge","ie","ie_version","document","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","android","mobile","mac","chromeOS","windows","presto_version","match","Number","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","range","rmClass","node","current","after","slice","length","removeChildren","e","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","appendChild","elt","tag","content","style","createElement","cssText","createTextNode","i","eltP","setAttribute","contains","child","nodeType","parentNode","host","activeElt","activeElement","body","shadowRoot","joinClasses","b","as","split","createRange","start","end","endNode","r","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","bind","f","args","Array","prototype","call","arguments","apply","copyObj","obj","target","overwrite","prop","hasOwnProperty","countColumn","string","tabSize","startIndex","startValue","search","nextTab","indexOf","selectionStart","selectionEnd","Delayed","array","set","ms","clearTimeout","setTimeout","scrollerGap","Pass","toString","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","Math","min","spaceStrs","spaceStr","push","lst","arr","map","out","nothing","createObj","base","inst","create","nonASCIISingleCaseWordChar","isWordCharBasic","ch","toUpperCase","toLowerCase","isWordChar","helper","source","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","charAt","findFirst","pred","from","to","midF","mid","ceil","floor","getLine","doc","first","size","Error","chunk","lines","children","sz","chunkSize","getBetween","line","iter","text","getLines","updateLineHeight","height","diff","lineNo","cur","no","lineAtHeight","h","outer","i$1","lh","isLine","l","lineNumberFor","options","lineNumberFormatter","firstLineNumber","Pos","sticky","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","max","clipPos","last","linelen","clipToLen","clipPosArray","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","stretchSpansOverChange","change","full","oldFirst","markedSpans","oldLast","startCh","endCh","isInsert","old","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","offset","found","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","i$2","i$3","clearWhenEmpty","splice","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","find","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","lineNo$$1","visualLine","merged","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","p","lineLength","len","found$1","findMaxLine","cm","display","maxLine","maxLineLength","maxLineChanged","bidiOther","getBidiPartAt","order","bidiOrdering","lowTypes","arabicTypes","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","level","direction","outerType","code","types","prev","type$1","prev$1","type$2","i$4","type$3","replace","j","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","m","i$7","at","j$2","nstart","unshift","reverse","getOrder","noHandlers","on","emitter","addEventListener","attachEvent","map$$1","_handlers","concat","getHandlers","off","removeEventListener","detachEvent","signal","handlers","signalDOMEvent","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","result","nl","rt","hasSelection","window","getSelection","te","range$$1","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","resolveMode","spec","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","mode","properties","copyState","nstate","val","innerMode","info","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","eol","sol","peek","undefined","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","context","forceToEnd","st","modeGen","lineClasses","runMode","loop","o","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","token","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","title","startStyle","endStyle","css","attributes","displayText","trailingBefore","spaceBefore","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","part","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","hidden","buildViewArray","nextPos","view","operationGroup","orphanDelayedCallbacks","signalLater","list","delayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","getLineContent","ext","built","background","wrap","insertBefore","updateLineBackground","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","markers","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","k","gutters","gutterWidth","alignable","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","lineMeasure","updateExternalMeasurement","rect","hasHeights","prepared","varHeight","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","abs","bottom","top","ensureLineHeights","place","nodeAndOffsetInLineMap","coverStart","coverEnd","getUsefulRect","screen","logicalXDPI","deviceXDPI","normal","fromRange","hasBadZoomedRects","scaleX","scaleY","logicalYDPI","deviceYDPI","maybeUpdateRectForZooming","rSpan","charWidth","nullRect","rtop","rbot","bot","bogus","singleCursorHeightPerLine","rbottom","measureCharInner","measureText","mStart","mEnd","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","get","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","widgetHeight$$1","ltr","_lineNo","ref","closestDist","endX","dist","baseX","chAround","boxAround","atLeft","atStart","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","clientX","clientY","colDiff","round","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","head","drawSelectionRange","cursor","cursorHeight","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","sizerWidth","docLTR","add","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","iterateBidiSections","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","onBlur","readOnly","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","alignHorizontally","alignWidgets","comp","gutterW","align","maybeUpdateLineNumberWidth","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","updateGutterSpace","calculateScrollPos","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","margin","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateScrollTop","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","setScrollLeft","isScroller","scrollWidth","measureForScrollbars","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","clear","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","native","null","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","op","viewChanged","updateInput","typing","changeObjs","cursorActivityCalled","selectionChanged","updateMaxLine","ops","ownsGroup","endOperation","endCb","group","callbacks","fireCallbacksForOps","finishOperation","endOperation_R1","updatedDisplay","mustUpdate","updateDisplayIfNeeded","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","scrollbarsClipped","marginBottom","borderRightWidth","maybeClipScrollbars","DisplayUpdate","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","doScroll","innerHeight","scrollNode","scrollIntoView","maybeScrollWindow","limit","changed","endCoords","scrollPos","startTop","startLeft","scrollPosIntoView","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","regChange","lendiff","updateLineNumbers","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","time","highlight","highlightWorker","Date","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","renderedView","viewportMargin","different","lastWrapHeight","lastWrapWidth","adjustView","toUpdate","selSnapshot","hasFocus","active","anchorNode","extend","anchorOffset","focusNode","focusOffset","selectionSnapshot","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","patchDisplay","snapshot","removeAllRanges","addRange","restoreSelection","selectionDiv","reportedViewFrom","reportedViewTo","updateGutters","specs","gElt","setGuttersForLineNumbers","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","wheelDX","wheelDY","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","sort","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","estimateHeight$$1","spansFor","updateLine","linesFor","firstLine","lastText","lastSpans","nlines","insert","remove","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","History","startGen","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","pop","addChangeToHistory","selAfter","opId","hist","history","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","event","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","setSelectionReplaceHistory","setSelectionNoUndo","NaN","filterSelectionChange","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","mark","parts","mk","newParts","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","filter","returned","v","shiftDoc","distance","removed","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","changeHandler","makeChangeSingleDocInEditor","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","oldHeight","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","cloneNode","isParent","SharedTextMarker","markTextShared","replacedWith","addToHistory","curLine","addMarkedSpan","clearOnEnter","clearHistory","withOp","visual","dHeight","findSharedMarkers","findMarks","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","constructor","getValue","join","lineSeparator","setValue","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","hint","oldPrev","newPrev","computeReplacedSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","loadFile","file","allowDropFileTypes","reader","onload","readAsText","draggingText","text$1","getData","selected","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","onResize","setSize","keyNames","3","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","93","106","107","109","110","111","127","145","173","186","187","188","189","190","191","192","219","220","221","222","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","keys","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","basic","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Shift-Backspace","Tab","Shift-Tab","Enter","Insert","Esc","pcDefault","Ctrl-A","Ctrl-D","Ctrl-Z","Shift-Ctrl-Z","Ctrl-Y","Ctrl-Home","Ctrl-End","Ctrl-Up","Ctrl-Down","Ctrl-Left","Ctrl-Right","Alt-Left","Alt-Right","Ctrl-Backspace","Ctrl-Delete","Ctrl-S","Ctrl-F","Ctrl-G","Shift-Ctrl-G","Shift-Ctrl-F","Shift-Ctrl-R","Ctrl-[","Ctrl-]","Ctrl-U","Shift-Ctrl-U","Alt-U","emacsy","Ctrl-B","Ctrl-P","Ctrl-N","Alt-F","Alt-B","Ctrl-E","Ctrl-V","Shift-Ctrl-V","Ctrl-H","Alt-D","Alt-Backspace","Ctrl-K","Ctrl-T","Ctrl-O","macDefault","Cmd-A","Cmd-D","Cmd-Z","Shift-Cmd-Z","Cmd-Y","Cmd-Home","Cmd-Up","Cmd-End","Cmd-Down","Cmd-Left","Cmd-Right","Ctrl-Alt-Backspace","Alt-Delete","Cmd-S","Cmd-F","Cmd-G","Shift-Cmd-G","Cmd-Alt-F","Shift-Cmd-Alt-F","Cmd-[","Cmd-]","Cmd-Backspace","Cmd-Delete","Cmd-U","Shift-Cmd-U","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","extraKeys","lookupKeyForEditor","handleKeyBinding","motion","lastStoppedKey","onKeyDown","handled","up","showCrossHair","onKeyUp","onKeyPress","charCode","handleCharBinding","lastClick","lastDoubleClick","PastClick","onMouseDown","activeTouch","supportsTouch","draggable","clickInGutter","repeat","now","compare","clickRepeat","selectingText","handleMappedButton","contained","behavior","option","unit","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","anchorLine","boundary","headIndex","usePart","bidiSimplify","editorSize","counter","move","buttons","curCount","leftButtonSelect","leftButtonDown","onContextMenu","findWordAt","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","guttersChanged","dragDropChanged","funcs","dragFunctions","toggle","enter","over","leave","drop","wrappingChanged","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","word","touchFinished","prevTouch","finishTouch","farAway","touch","radiusX","radiusY","isMouseLikeTouchEvent","pageX","pageY","frag","onDragOver","setData","effectAllowed","setDragImage","img","src","_top","onDragStart","inp","getField","registerEventHandlers","finishInit","initHooks","textRendering","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","spellcheck","autocorrect","autocapitalize","hiddenTextarea","border","findPosH","origDir","moveOnce","boundToLine","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","nextCh","moveVisually","sawType","getHelper","hitSide","findPosV","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","textNode","topNode","nodeValue","curNode","textContent","previousSibling","dist$1","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","blur","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromIndex","fromNode","toNode","toIndex","newText","closing","extraLinebreak","close","addText","walk","cmText","markerID","isBlock","nodeName","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","createField","textarea","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","scrollTo","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","detach","attach","integer","defineOptions","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","score","priority","insertSorted","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","amount","rtlMoveVisually","goalColumn","goals","startChar","check","getScrollInfo","scrollToRange","interpret","swapDoc","phrase","phraseText","phrases","getWrapperElement","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","addEditorMethods","dontDelegate","method","contenteditable","defineMode","dependencies","defineMIME","mime","defineExtension","func","defineDocExtension","fromTextArea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","cmpPos","addLegacyProps","version","module","exports","t","s","u","c","z","utcOffset","year","month","clone","M","Q","weekdays","months","S","format","pl","date","D","locale","$L","utc","$u","parse","$d","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","day","hour","minute","second","millisecond","unix","valueOf","getTime","toDate","$locale","weekStart","$set","daysInMonth","setDate","subtract","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","A","mm","ss","SSS","Z","getTimezoneOffset","toJSON","toISOString","toUTCString","isDayjs","en","Ls","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_spin_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_spin_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_16cfa774_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_spin_vue__","__vue_styles__","ssrContext","locals","_vm","class","staticStyle","xmlns","xmlns:xlink","viewBox","preserveAspectRatio","transform","attributeName","values","keyTimes","dur","repeatCount","fill","_s","$t","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_secondaryMenu_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_secondaryMenu_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_f72bdd3a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_secondaryMenu_vue__","escape","_i18n","menu","projects","i18n","path","icon","security","resource","user","href","click","_l","$index","$event","el","active-class","_dayjs","formatDate","fmt","_dayjs2","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_localParams_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_localParams_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_1c93b12e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_localParams_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_listBox_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_listBox_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_1a083a16_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_listBox_vue__","_codemirror","getElementById","hookIdentifier","hookVar","hookClient","config","parserConfig","client","atoms","false","true","builtin","defaultBuiltin","keywords","sqlKeywords","operatorChars","support","hooks","dateSQL","timestamp","backslashStringEscapes","brackets","punctuation","tokenBase","quote","hexNumber","binaryNumber","decimallessFloat","doubleQuote","tokenize","escaped","nCharCast","charsetCast","commentSlashSlash","commentHash","commentSpaceRequired","tokenComment","depth","zerolessFloat","ODBCdotTable","pushContext","tok","popContext","textAfter","cx","blockCommentStart","blockCommentEnd","lineComment","closeBrackets","words","@","`","\\","identifierQuote",":","?","\"","warningTypeList","isEmial","fuzzyQuery","keyWord","reg","_util","tagModel","email","activeIndex","emailList","emailWidth","isCn","activeList","repeatData","model","_manualEmail","_lodash2","some","cloneDeep","$message","warning","_i18n2","_handlerEmailWitch","_handlerEmail","_email2","uniqWith","isEqual","isEmail","_emailEnter","_selectEmail","_emailDelete","isInteger","_del","_emailKeyup","$refs","emailInput","_this3","_emailTab","_this4","$emit","_this5","priorityList","unicode","color","_rtUnicode","_onChange","rtBantpl","tasksAll","_jquery2","each","idx","elem","targetarr","rtTargetarrArr","saveTargetarr","valId","domId","$target","targetStr","rtTasksTpl","_ref","isAttachment","taskType","runFlag","tpl","isNameExDag","rely","_","findIndex","tasks","setSvgColor","canvas","allNodesId","idArr","$obj","$span","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_resources_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_resources_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5b25ea8f_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_resources_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_priority_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_priority_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6a4fc01c_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_priority_vue__","downloadFile","$url","param","url","forEach","appendTo","_store2","processDefinitionId","failureStrategy","warningType","notifyGroupList","warningGroupId","scheduleTime","spinnerLoading","execType","taskDependType","receivers","receiversCc","processInstancePriority","startNodeList","sourceType","_datepicker","_start","dispatch","success","msg","error","_getNotifyGroupList","resolve","reject","notifyGroupListS","_getReceiver","$nextTick","mEmail","mPriority","_priority2","sgn","Vectors","v1","v2","sqrt","flatnessTolerance","pow","_distanceFromCurve","point","curve","candidates","_convertToBezier","degree","numSolutions","_findRoots","_bezier","newDist","location","higherDegree","cdTable","row","parseFloat","lb","ub","left_count","right_count","left_t","right_t","_getCrossingCount","_isFlatEnough","_computeXIntercept","sign","old_sign","n_crossings","intercept_1","intercept_2","left_intercept","b2","max_distance_above","max_distance_below","XNM","YNM","XMK","temp","_curveFunctionCache","_pointOnPath","cc","fns","c_term","t_term","one_minus_t_term","_termFunc","terms","_getCurveFunctions","_x","_y","_dist","p1","p2","_isPoint","_pointAlongPath","tally","curLoc","_gradientAtPoint","atan","_lineIntersection","x1","y1","x2","y2","coeffs","_computeCoefficientsForAxis","_computeCoefficients","T","B","C","R","acos","cos","PI","intersections","t2","t3","jsBezier","distanceFromCurve","gradientAtPoint","gradientAtPointAlongCurveFrom","nearestPointOnCurve","td","pointOnCurve","pointAlongCurveFrom","perpendicularToCurveAt","_theta2","sin","locationAlongCurveFrom","getLength","lineIntersection","boxIntersection","boundingBoxIntersection","boundingBox","Biltong","_isa","_pointHelper","fn","_gradient","gradient","_p1","_p2","_quadrant","quadrant","_segmentMultipliers","theta","intersects","r2","b1","encloses","allowSharedEdges","v3","v4","_inverseSegmentMultipliers","pointOnLine","fromPoint","toPoint","segmentMultiplier","perpendicularLineTo","theta2","_touchAndList","screenX","screenY","_touchList","Touch","identifier","_uuid","matchesSelector","selector","ctx","possibles","querySelectorAll","_gel","_t","_pi","doCompute","_one","_d","guid","_store","__ta","__tauid","_curryChildFilter","evt","_fn","pathInfo","registerExtraFunction","newFn","__taExtra","DefaultHandler","isTouchDevice","touchMap","tfn","_bind","_tapProfiles","tap","taps","dbltap","contextmenu","meeHelper","__tamee","isMouseDevice","mousedown","mousemove","iev","rv","appName","ua","$1","isIELT9","_genLoc","prefix","ts","_touches","_getTouch","_pageLocation","changedTouches","targetTouches","_touchCount","originalFn","_unbind","_each","_el","__taUnstore","_unstore","__taTouchProxy","Window","tagName","random","Mottle","clickThreshold","dblClickThreshold","mouseEnterExitHandler","activeElements","mouseenter","mouseexit","relatedTarget","toElement","tapHandler","__taTapHandler","tt","down","downSelectors","clearSingle","clearDouble","finished","currentTarget","tc","eventId","pLoop","_smartClicks","smartClicks","_doBind","__taSmartClicks","__tad","__tau","SmartClickHandler","_f","trigger","originalEvent","payload","originalIsMouse","MouseEvent","eventToBind","bindingAMouseEvent","sl","cl","_clientLocation","_decorate","_evt","eventGenerators","TouchEvent","touchList","initTouchEvent","initEvent","MouseEvents","initMouseEvent","createEvent","evtName","createEventObject","eventType","eventName","fireEvent","doNotPreventDefault","pageLocation","setForceTouchEvents","setForceMouseEvents","_suggest","_vanquish","_isString","isIE9","_pl","_classes","droppable","drag","hover","noSelect","ghostProxy","clonedDrag","_events","_devNull","_true","_foreach","_setDroppablesActive","andHover","setActive","updatePosition","setHover","_consume","Super","scope","_class","uuid","enabled","setEnabled","isEnabled","toggleEnabled","setScope","scopes","addScope","removeScope","toggleScope","katavorio","TRUE","FALSE","Drag","rightButtonCanDrag","constrain","downAt","posAtDown","pagePosAtDown","pageDelta","moving","initialScroll","consumeStartEvent","dragEl","_multipleDrop","multipleDrop","isConstrained","useGhostProxy","elementToDrag","snapThreshold","_snap","gridX","gridY","thresholdX","thresholdY","_dxl","_dxt","_dyl","_dyt","posses","posseRoles","toGrid","grid","tx","DEFAULT_GRID_X","ty","DEFAULT_GRID_Y","snap","getPosition","setPosition","setUseGhostProxy","revertFunction","negativeFilter","allowNegative","_setConstrain","_constrainRect","_size","containment","setConstrain","setRevert","_filters","_setFilter","setFilter","_exclude","_katavorioId","addFilter","removeFilter","clearAllFilters","canDrag","constrainRect","matchingDroppables","intersectingDroppables","downListener","docElem","clientTop","_testFilter","_katavorio","getInputFilterSelector","_inputFilter","childElement","currentParent","findDelegateElement","moveListener","upListener","markSelection","markPosses","_dispatch","consumeFilteredEvents","abort","ignoreZoom","getZoom","moveBy","updatePosses","unbind","unmark","unmarkSelection","unmarkPosses","stop","notifyPosseDragStop","getFilters","getDragElement","retrieveOriginalElement","listeners","beforeStart","revert","ghostProxyOffsets","notifyStart","positions","dPos","finalPos","andNotify","cs","getSize","getMatchingDroppables","dragClass","getConstrainingRectangle","notifySelectionDragStart","doNotCheckDroppables","_rankSort","desiredLoc","cPos","gp","pageRect","focusDropElement","pagePosition","canDrop","isHover","destroy","filterExclude","Drop","rank","_activeClass","activeClass","_hoverClass","hoverClass","allowLoopback","_katavorioDragHover","Katavorio","katavorioParams","_selection","_selectionMap","_dragsByScope","_dropsByScope","_zoom","_reg","_obj","_unreg","_prepareParams","_m","_dd","_p","_mistletoe","existingDrag","_css","overrideCss","_scope","inputFilterSelector","setInputFilterSelector","_katavorioDrag","_katavorioDrop","deselect","deselectAll","_posses","members","_posseAction","notifySelectionDragStop","setZoom","_scopeManip","kObj","_kObj","snapToGrid","getDragsForScope","getDropsForScope","_destroy","selIdx","_removeListener","elementRemoved","destroyDraggable","destroyDroppable","_processOneSpec","_spec","dontAddExisting","posseId","posse","addToPosse","setPosse","l1","l2","_difference","removeFromPosse","TypeError","removeFromAllPosses","setPosseState","jsPlumbUtil","isArray","isString","isBoolean","isObject","isDate","isFunction","merge","collations","overwrites","ar","cMap","oMap","findWithFunction","addToList","insertAtStart","log","_i","logEnabled","console","isNumber","isNull","isNamedFunction","inObj","term","lc","_getArray","a_1","functionChain","successValue","failValue","populate","functionPrefix","doNotExpandFunctions","fromString","matches","substring","removeWithFunction","addWithFunction","hashFunction","suggest","insertAtHead","_protoFn","_copyProtoChain","proto","__proto__","_makeFn","protoFn","_oneSet","fastTrim","mergeWithParents","parentAttribute","_def","_parent","def","d_1","_getDef","wrappedFunction","newFunction","returnOnThisValue","EventGenerator","_listeners","eventsSuspended","tick","eventsToDieOn","ready","queue","listener","__jsPlumb","fire","_gone","ret","shouldFireEvent","_drain","eventOrListener","getListener","forEvent","setSuspendEvents","isSuspendEvents","silently","cleanupListeners","sizeElement","root","_ju","_timestamp","_updateHoverStyle","component","_jsPlumb","paintStyle","hoverPaintStyle","mergedHoverStyle","jsPlumb","_splitType","_mapType","typeId","_applyTypes","doNotRepaint","getDefaultType","getTypeDescriptor","defType","tid","instance","getType","applyType","repaint","jsPlumbUIComponent","idPrefix","parameters","paintStyleInUse","beforeDetach","beforeDrop","overlayPlacements","Defaults","HoverClass","typeCache","cacheTypeItem","getCachedTypeItem","getId","oo","defaultOverlayKeys","fo","convertToFullOverlaySpec","_defaultType","getDefaultScope","appendToDefaultType","isDetachAllowed","connection","isDropAllowed","sourceId","targetId","dropEndpoint","checkCondition","domListeners","setListenerComponent","_removeTypeCssHelper","typeIndex","cssClass","getParameter","setParameter","getParameters","setParameters","getClass","hasClass","clazz","updateClasses","classesToAdd","classesToRemove","setType","clearTypes","reapplyTypes","hasType","addType","_cont","removeType","toggleType","setPaintStyle","setHoverPaintStyle","getPaintStyle","getHoverPaintStyle","ignoreAttachedElements","currentlyDragging","isHoverSuspended","isSuspendDrawing","recalc","getAttachedElements","sourceElement","affectedElements","_updateAttachedElements","_jsPlumbInstanceIndex","jsPlumbInstance","_defaults","Anchor","Anchors","ConnectionsDetachable","ConnectionOverlays","Connector","Container","DoNotThrowErrors","DragOptions","DropOptions","Endpoint","EndpointOverlays","Endpoints","EndpointStyle","EndpointStyles","EndpointHoverStyle","EndpointHoverStyles","HoverPaintStyle","LabelStyle","LogEnabled","Overlays","MaxConnections","PaintStyle","stroke-width","stroke","ReattachConnections","RenderMode","Scope","_connectionTypes","_endpointTypes","_currentInstance","_instanceIndex","getInstanceIndex","_bb","_initialDefaults","_info","getElement","_getId","repaintEverything","_container","_containerDelegations","unbindContainer","setContainer","conn","moveParent","selectEndpoints","ep","previousContainer","eventAliases","endpointclick","endpointdblclick","_oneDelegateHandler","componentType","jp","alias","_addOneDelegate","_oneDelegate","elId","managedElements","getContainer","initialized","importDefaults","restoreDefaults","connections","endpointsByElement","endpointsByUUID","offsets","offsetTimestamps","connectionBeingDragged","_suspendDrawing","_suspendedAt","DEFAULT_SCOPE","_curIdStamp","_idstamp","_appendElement","appendToRoot","_draw","element","ui","clearEdits","repaintEls","dm","getDragManager","getElementsForDraggable","_updateOffset","anchorManager","redraw","_getEndpoint","_prepareConnectionParams","referenceParams","endpoint","sourceEndpoint","targetEndpoint","uuids","isFull","connectionType","connectorOverlays","connectorPointerEvents","_addEndpoint","addEndpoint","_mergeOverrides","anchors","endpoints","endpointStyles","endpointStyle","endpointHoverStyles","endpointHoverStyle","_oneElementDef","defs","matchType","newConnection","tep","newEndpoint","uniqueEndpoint","finalEndpoint","setDeleteOnEmpty","sourceEndpointDefinitions","targetEndpointDefinitions","e1","s1","s2","_scopeMatch","_newConnection","connectionFunc","ConnectionType","getDefaultConnectionType","_newEndpoint","finaliseConnection","_finaliseConnection","con","isDetachable","initDraggable","jpc","doInformAnchorManager","suspendedEndpoint","pending","isTemporarySource","doNotFireConnectionEvent","eventArgs","endpointFunc","EndpointType","fireDetachEvent","elementId","_manage","headless","endpointAdded","_operation","ii","jj","_setVisible","alsoChangeEndpoints","setVisible","oidx","isVisible","doNotCreateIfNotFound","setConnectionBeingDragged","isConnectionBeingDragged","getManagedElements","connectorClass","connectorOutlineClass","connectedClass","endpointClass","endpointConnectedClass","endpointFullClass","endpointDropAllowedClass","endpointDropForbiddenClass","overlayClass","draggingClass","elementDraggingClass","sourceElementDraggingClass","targetElementDraggingClass","endpointAnchorClassPrefix","hoverSourceClass","hoverTargetClass","dragSelectClass","Connectors","svg","ConnectorRenderers","SVG","results","inputs","_ensureContainer","myOffset","paint","anchorLoc","xy","wh","addEndpoints","animate","animationSupported","del","stepFunction","animEvents","step","completeFunction","complete","revalidate","doAnimate","conditionName","connect","stTypes","epDefs","_set","sid","sep","_st","cId","oldEndpoint","evtParams","originalSourceId","newSourceId","originalTargetId","newTargetId","addConnection","makeEndpoint","detachFromConnection","fireMoveEvent","setSource","sourceChanged","setTarget","updateOtherEndpoint","deleteEndpoint","object","dontUpdateHover","deleteAttachedObjects","deleteObject","deleteEveryEndpoint","_is","setSuspendDrawing","doFireEvent","connType","connectionDetached","unregisterEndpoint","newEndpoints","deleteConnection","cleanup","deleteEveryConnection","deletedCount","batch","deleteConnectionsForElement","endpointCount","connectionCount","unravelConnection","unravelEndpoint","doNotCleanup","setter","_setOperation","getter","_getOperation","prepareList","doNotGetIds","filterList","missingIsFalse","getConnections","flat","sources","targets","_addOne","proxies","originalEp","_makeCommonSelectHandler","executor","_curryEach","_curryGet","setters","getters","_makeConnectionSelectHandler","common","setDetachable","setReattach","setConnector","delete","isReattach","_makeEndpointSelectHandler","setAnchor","noElementFilters","elements","either","sourceMatchExact","targetMatchExact","_ep","noMatchSource","isSource","noMatchTarget","isTarget","getAllConnections","getEndpoint","getEndpoints","getDefaultEndpointType","Connection","draw","appendElement","_hoverSuspended","setHoverSuspended","hide","changeEndpoints","idstamp","candidate","can","manage","_transient","unmanage","getOffset","centerx","centery","updateOffset","AnchorManager","makeAnchor","pp","_a","specimen","getOrientation","DynamicAnchor","anchorParams","orientation","makeAnchors","makeDynamicAnchor","anchorSelector","_makeElementDropHandler","elInfo","dropOptions","proxyComponent","_drop","EndpointDropHandler","targetCount","maxConnections","unlock","isRedrop","suspendedElement","eps","deriveEndpointAndAnchorSpec","_mtNew","positionFinder","dropPosition","getUIPosition","elPosition","elSize","ap","constructorParams","maybeCleanup","dropEvent","dragEvents","_drag","_jsPlumbRelatedElement","initDroppable","makeTarget","_doOne","elid","_isJsPlumbGroup","createEndpoint","targetDef","unmakeTarget","doNotClearArrays","makeSource","aae","onMaxConnections","stopEvent","dragEvent","dragOptions","existingStop","endpointAddedButNoDragYet","anchorDef","oldAnchor","oldConnection","mouseDownListener","_instance","negate","getSelector","selectorFilter","sourceCount","elxy","getPositionOnElement","tempEndpointParams","_delTempEndpoint","extract","att","setDragFilter","unmakeSource","eldefs","unmakeEverySource","_getScope","_setScope","getScope","getSourceScope","getTargetScope","setSourceScope","setTargetScope","setDragScope","setDropScope","unmakeEveryTarget","_setEnabled","originalState","newState","_first","toggleSourceEnabled","isSourceEnabled","setSourceEnabled","toggleTargetEnabled","isTargetEnabled","setTargetEnabled","_elEach","isIdAlready","updateOffsets","removeAllEndpoints","recurse","ebe","_doRemove","clearFor","removeFloatingConnection","floatingConnections","removeElement","ae","dontRemoveFocus","doNotUnbindInstanceEventListeners","removeAllGroups","removeGroupManager","doReset","_clearObject","setDefaultScope","dontPrependDefault","bits","setId","newId","doNotSetAttribute","sConns","tConns","setElementId","setReferenceElement","changeId","_conns","epIdx","setDebugLog","debugLog","repaintAfterwards","curVal","getSuspendedAt","doNotRepaintAfterwards","_wasSuspended","doWhileSuspended","getCachedData","show","toggleVisible","addListener","registerFloatingConnection","getFloatingConnectionFor","registerConnectionType","registerConnectionTypes","registerEndpointType","registerEndpointTypes","typeDescriptor","setIdChanged","oldId","setParent","newParent","_dom","_id","_pdom","_pid","o1","o2","names","getFloatingAnchorIndex","isFloating","getInstance","overrideFns","ovf","_jp","OverlayCapableJsPlumbUIComponent","overlayPositions","label","labelLocation","defaultLabelLocation","labelStyle","keep","updateFrom","reattach","_newOverlay","getRenderMode","_processOverlay","getOverlay","getOverlays","hideOverlay","hideOverlays","showOverlay","showOverlays","removeAllOverlays","overlayId","dontCleanup","removeOverlays","bgCanvas","isAppendedAtTopLevel","getLabel","lo","getLabelOverlay","setLabel","Function","setLocation","_params","mergedParams","Label","_makeLabelOverlay","setAbsoluteOverlayPosition","getAbsoluteOverlayPosition","_clazzManip","action","dontUpdateOverlays","typeParameters","connectorStyle","connectorHoverStyle","connectorHoverClass","connector","connectorTooltip","floatingEndpoint","dragProxy","connectionCost","connectionsDirected","currentAnchorClass","deleteOnEmpty","_updateAnchorClass","oldAnchorClass","getCssClass","anchorClass","prepareAnchor","currentAnchor","setPreparedAnchor","continuousAnchorFactory","internalHover","prepareEndpoint","endpointArgs","tooltip","setEndpoint","setPreparedEndpoint","reattachConnections","connectionsDetachable","detachable","dragAllowedWhenFull","detachFrom","setElement","parentId","curId","rehomeEndpoint","dragManager","makeInPlaceCopy","loc","getCurrentLocation","acc","inPlaceAnchor","hideOnDrag","reference","connectorSelector","setStyle","anchorPoint","connectorPaintStyle","dimensions","isDynamic","elementWithPrecedence","findConnectionToUseForDynamicAnchor","oIdx","oId","oInfo","oOffset","oWH","txy","twh","tElement","draggingInitialised","isDragSupported","placeholderInfo","existingJpc","existingJpcParams","_dragHandler","stopped","_ui","stopDrag","_makeConnectionDragHandler","startEvent","beforeStartEvent","startParams","_continue","beforeDrag","ipco","canvasElement","ips","_makeDraggablePlaceholder","setAttributes","dragId","endpointToFloat","centerAnchor","referenceAnchor","referenceCanvas","FloatingAnchor","_makeFloatingEndpoint","_savedAnchor","anchorIdx","dragScope","getDragScope","suspendedElementId","suspendedElementType","referenceEndpoint","getDropEvent","deleteConnectionNow","floatingElement","floatingId","floatingIndex","fe","_forceReattach","_forceDetach","deleteAfterDragStop","beforeStartParams","anchorParamsToUse","_initDropTarget","isTransient","isDropSupported","overEvent","outEvent","dhParams","getDragObject","_jpc","bb","doNotChangeConnections","doNotNotifyOtherEndpoint","isConnectedTo","getConnectionCost","setConnectionCost","areConnectionsDirected","setConnectionsDirected","_elId","setDragAllowedWhenFull","allowed","getUuid","computeAnchor","existingConnection","_doContinue","continueFunction","optionalData","aParam","originalSourceEndpoint","newSourceEndpoint","originalTargetEndpoint","newTargetEndpoint","mergeData","makeConnector","renderMode","connectorName","connectorArgs","forComponent","_makeAnchor","_updateConnectedClass","_jsPlumbConnections","previousConnection","pointer-events","editorParams","lastPaintedAt","eS","eT","deleteEndpointsOnEmpty","_detachable","_reattach","myInfo","myWH","otherInfo","otherOffset","otherWH","initialTimestamp","cost","directed","_types","updateConnectedClass","typeMap","_connector","prepareConnector","setPreparedConnector","_anchors","informEndpoints","getUuids","getCost","setCost","isDirected","getConnector","connectorSpec","doNotChangeListenerComponent","previous","previousClasses","transfer","tId","sId","sourceInfo","targetInfo","sE","tE","sAnchorP","tAnchorP","resetBounds","sourcePos","targetPos","sourceOrientation","targetOrientation","strokeWidth","overlayExtents","minX","minY","maxX","maxY","lineWidth","outlineWidth","extents","xmin","bounds","ymin","xmax","ymax","es","outlineStroke","ehs","drawEndpoints","_amEndpoints","continuousAnchorLocations","continuousAnchorOrientations","connectionsByElementId","self","anchorLists","currySort","reverseAngles","edgeSortFunctions","placeAnchors","_anchorLists","cd","sS","sO","placeSomeAnchors","desc","elementDimensions","elementPosition","unsortedConnections","isHorizontal","otherMultiplier","horizontal","xp","yp","placeAnchorsOnLine","_setAnchorLocation","anchorPos","weAreSource","weAreTarget","addFloatingConnection","doRegisterTarget","registerConnection","otherIndex","otherEndpoint","otherAnchor","isContinuous","removeEndpointFromAnchorLists","eId","connInfo","doNotRedraw","removeConnection","getConnectionsFor","getEndpointsFor","_updateAnchorList","lists","aBoolean","otherElId","edgeId","connsToPaint","endpointsToPaint","firstMatchingElIdx","endpointId","listToAddTo","listToRemoveFrom","_continuousAnchorEdge","rIdx","insertIdx","sourceElId","oldTargetId","sIndex","tIndex","originalId","newElement","tIdx","currentId","offsetToUI","doNotRecalcEndpoint","endpointConnections","connectionsToPaint","anchorsToUpdate","orientationCache","sourceContinuous","targetContinuous","oKey","sd","calculateOrientation","getDefaultFace","fc","faces","clockwise","availableFaces","opposites","clockwiseOptions","antiClockwiseOptions","secondBest","lastChoice","_currentFace","_lockedFace","X_AXIS_FACES","Y_AXIS_FACES","_lockedAxis","isRelocatable","isSnapOnRelocate","verifyEdge","isEdgeSupported","setCurrentFace","face","overrideLock","getCurrentFace","getSupportedFaces","af","lock","isLocked","lockCurrentAxis","unlockCurrentAxis","sourceAnchor","targetAnchor","axes","atan2","midpoints","dim","sf","tf","sourceEdge","targetEdge","userDefinedLocation","lastReturnValue","relocatable","setRelocatable","_relocatable","snapOnRelocate","locked","clearUserDefinedLocation","ox","oy","ao","getUserDefinedLocation","setUserDefinedLocation","refCanvas","_lastResult","_endpoint","getAnchors","_curAnchor","_lastAnchor","_distance","cy","ax","ay","acx","acy","_anchorSelector","minIdx","minDist","udl","setAnchorCoordinates","_curryAnchor","fnInit","DynamicAnchors","AutoDefault","_curryContinuousAnchor","Continuous","pf","AnchorPositionFinders","Fixed","dp","Grid","gx","gy","mx","my","Perimeter","anchorCount","shape","_circle","_path","segments","anchorsPerFace","_computeFace","fractionalLength","_shape","_rectangle","_shapes","Circle","Ellipse","Diamond","Rectangle","Square","Triangle","Path","points","tl","da","rotation","amountInDegrees","_rotate","_jg","Segments","AbstractSegment","findClosestPointOnPath","getBounds","Straight","m2","getGradient","getCoordinates","setCoordinates","pointOnPath","absolute","pointAlongPathFrom","farAwayPoint","within","closest","_x1","_y1","fractionInSegment","_plb","q","_x2","_y2","m1","X","Y","Arc","_calcAngle","TWO_PI","radius","anticlockwise","ac","startAngle","endAngle","ea","sweep","circumference","frac","gentleRound","angle","segment","sa","_calcAngleForLocation","arcSpan","Bezier","cp1x","cp1y","cp2x","cp2y","_translateLocation","_curve","SegmentRenderer","getPath","isFirstSegment","laf","AbstractComponent","AbstractConnector","totalLength","segmentProportions","segmentProportionalLengths","stub","sourceStub","targetStub","sourceGap","targetGap","userProvidedSegments","paintInfo","getPathData","findSegmentForPoint","_findSegmentForLocation","inSegmentProportion","proportion","setSegments","_segs","_prepareCompute","swapX","swapY","lw","so","oIndex","sx","sy","oProduct","xSpan","ySpan","startStubX","startStubY","endStubX","endStubY","isXGreaterThanStubTimes2","isYGreaterThanStubTimes2","opposite","perpendicular","orthogonal","sourceAxis","stubs","anchorOrientation","getSegments","updateBounds","segBounds","seg","_compute","_updateSegmentProportions","addSegment","prepareCompute","maxStub","maxGap","AbstractEndpoint","Dot","defaultOffset","defaultInnerRadius","DOMElementEndpoint","displayElements","getDisplayElements","appendDisplayElement","Image","_onload","widthToUse","heightToUse","setImage","_img","outline","actuallyPaint","Blank","AbstractOverlay","endpointLoc","endpointLocation","incrementLocation","getLocation","Arrow","foldback","computeMaxSize","elementCreated","currentConnectionPaintStyle","hxy","tail","fromLoc","__","cxy","PlainArrow","_getDimensions","forceRefresh","cachedDimensions","AbstractDOMOverlay","detached","initialised","initiallyInvisible","webkitTransform","mozTransform","msTransform","oTransform","absolutePosition","locToUse","minx","miny","clearCachedDimensions","containerExtents","Custom","GuideLines","tailLine","headLine","labelText","font","borderWidth","dStyle","borderStyle","lt","innerHTML","_jpi","STOP","REVERT","GROUP","CMD_SHOW","CMD_HIDE","GroupManager","_managedGroups","_connectionSourceMap","_connectionTargetMap","getMembers","_cleanupDetachedConnection","addGroup","getEl","manager","_updateConnectionsForGroup","addToGroup","doNotFireEvent","getGroup","groupEl","currentGroup","_jsPlumbGroup","elpos","cpos","getDragArea","updateConnectionsForGroup","handleDroppedConnections","expandConnection","collapseConnection","newPosition","revalidateParent","sourceGroup","removeFromGroup","groupId","getGroups","removeGroup","deleteMembers","manipulateDOM","expandGroup","newPositions","_groups","_collapseConnection","proxyEp","groupElId","originalElementId","otherEl","shouldProxy","getAnchor","isProxyEndpoint","collapseGroup","_collapseSet","conns","_expandConnection","originalElement","c1","c2","processed","oneSet","_expandSet","repaintGroup","refreshAllGroups","ghost","orphan","prune","dropOverride","proxied","internal","endpointIndex","opts","overrideDrop","getGroupManager","els","_isInsideParent","_findParent","leftEdge","rightEdge","topEdge","bottomEdge","_orphan","_unbindDragHandlers","clearParent","_pruneOrOrphan","orphanedPosition","_revalidate","_bindDragHandlers","__el","targetGroup","dragArea","isAlreadyDraggable","doNotUpdateConnections","removeAll","orphanAll","orphanedPositions","dragParams","toggleGroup","mgr","getGroupFor","Flowchart","_super","midpoint","alwaysRespectStubs","lastx","lasty","cornerRadius","loopbackRadius","segmentDirections","lx","ly","segLength","_cloneArray","commonStubCalculator","pi","oss","oes","midx","midy","orientations","midLines","linesToEnd","startToEnd","startToMidToEnd","otherStubs","soIdx","toIdx","_so","_to","otherFlipped","stub1","stub2","segmentIndexes","startStub","otherStartStub","endStub","otherEndStub","otherAxis","comparator","_val","currentDirection","nextDirection","minSegLength","radiusToUse","sgnEqual","writeSegments","AbstractBezierConnector","showLoopback","curviness","proximityLimit","tp","_w","loopback","_computeBezier","majorAnchor","getCurviness","_findControlPoint","sourceAnchorPosition","targetAnchorPosition","soo","too","_CP","_CP2","_sx","_sy","_tx","_ty","StateMachine","_controlPoint","_midx","_midy","svgAttributeMap","stroke-linejoin","stroke-dashoffset","stroke-linecap","ns","_attr","_node","createElementNS","_pos","_clearGradient","_applyStyles","uiComponent","gradientUnits","stops","styleToUse","stopColor","stop-color","applyGradientTo","_updateGradient","_appendAtIndex","SvgComponent","pointerEventsSpec","renderer","originalArgs","svgParams","useDivWrapper","outlineStyle","outlineStrokeWidth","bgPath","SvgEndpoint","makeNode","updateNode","AbstractSvgArrowOverlay","superclass","makePath","p1_1","p1_2","attachListeners","d1","d2","_jk","_getDragManager","category","getEventManager","relativeToRoot","_screenLocation","_setClassName","cn","classList","baseVal","_getClassName","_classManip","curClasses","screenLocation","clientLocation","_draggables","_dlist","_delements","_elementsWithEndpoints","_draggablesForElements","register","parentOffset","_oneLevel","cEl","cid","cOff","childOffsetOverrides","domEl","cel","pid","pLoc","cLoc","endpointDeleted","dragEnded","ancestor","pId","currentChildLocation","childOffset","co","getDragAncestor","de","aid","recalculateOffsets","atts","attName","getRenderModes","toggleClass","toAdd","toRemove","setClass","getStyle","getPropertyValue","_maybeAdjustScroll","zoom","getAbsolutePosition","setAbsolutePosition","animateFrom","animateOptions","getWidth","getHeight","_initDraggableIfNecessary","_jsPlumbDragOptions","unbindDraggable","setDraggable","_draggableStates","setElementDraggable","toggleDraggable","isDraggable","cont","_dragging","uip","enctype","pName","_animProps","ldist","tdist","duration","steps","linc","tinc","_int","unbindDroppable","isElementDraggable","oc","addToDragSelection","removeFromDragSelection","clearDragSelection","_mottle","callback","_do","readyState","cycleList","dateValueList","week","sqlTypeList","typeList","directList","_download","handerTextareaSize","isH","_router2","isLog","stateId","isScreen","loadingIndex","isData","loading","logId","_refreshLog","_rtParam","html","_ckLog","_screenOpen","$logBox","winW","winH","_screenClose","_downloadLog","taskInstId","_onUp","debounce","leading","trailing","_onDown","_onTextareaScroll","$this","closable","updated","skipLineNum","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","Completion","startPos","startLen","activityFunc","showHint","getHints","async","newOpts","editor","hintOptions","defaultOptions","parseOptions","selections","supportsSelection","completionActive","completion","requestAnimationFrame","cancelAnimationFrame","getText","getHintElement","hintsElement","Widget","picked","parentWindow","defaultView","hints","selectedHint","completions","hintId","alignWithWord","below","innerWidth","overlapY","scrolls","startScroll","closingOnBlur","overlapX","baseMap","moveFocus","menuSize","setFocus","pick","custom","customKeys","ourMap","addBinding","extra","buildKeyMap","avoidWrap","changeActive","screenAmount","closeOnUnfocus","onScroll","curScroll","completeOnSingleClick","fetchHints","closeCharacters","disable","myTick","finishUpdate","completeSingle","resolved","app","applicableHelpers","run","fromList","anyword","autocomplete","auto","tables","defaultTable","CONS","QUERY_DIV","ALIAS_KEYWORD","wrapTable","columns","getTable","shallowClone","addMatches","wordlist","formatter","cleanName","nameParts","insertIdentifierQuotes","eachWord","lineText","findTableByAlias","fullQuery","aliasUpperCase","previousWord","table","separator","validRange","indexOfSeparator","prevItem","query","wordUpperCase","parseTables","defaultTableName","disableKeywords","getKeywords","getIdentifierQuote","useIdentifierQuotes","aliasTable","oldTable","tableInsert","nameCompletion","objectOrClass","typed","matchInMiddle","lastIndexOf","tags","schemaInfo","quoteChar","tagStart","replaceToken","tagType","curTag","childList","globalAttrs","nm","atValues","atName","wordRegexp","wordOperators","commonKeywords","commonBuiltins","conf","parserConf","ERRORCLASS","delimiters","singleDelimiters","operators","singleOperators","doubleOperators","doubleDelimiters","tripleDelimiters","hangingIndent","myKeywords","myBuiltins","extra_keywords","extra_builtins","py3","identifiers","stringPrefixes","builtins","lastToken","scopeOffset","lineOffset","pushPyScope","dedent","errorToken","tokenBaseInner","floatLiteral","intLiteral","delimiter","tokenOuter","singleline","OUTCLASS","tokenNestedExpr","tokenString","singleLineStringErrors","formatStringFactory","tokenStringFactory","tokenLexer","beginningOfLine","lambda","delimiter_index","pushBracketScope","basecolumn","addErr","triples","fold","htmlConfig","autoSelfClosers","area","br","command","embed","frame","hr","keygen","link","meta","track","wbr","menuitem","implicitlyClosed","li","optgroup","rp","tbody","tfoot","tr","contextGrabbers","dt","address","article","aside","blockquote","dl","fieldset","footer","h1","h2","h3","h4","h5","h6","header","hgroup","nav","ol","section","ul","thead","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","htmlMode","inText","chain","parser","inBlock","doctype","inTag","closure","baseState","isInAttribute","stringStartCol","terminator","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","startOfLine","noIndent","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","TOKEN_STYLES","addition","bold","cite","definitionList","deletion","em","footnote","footCite","image","italic","linkDefinition","list1","list2","list3","notextile","specialChar","strong","sup","tableHeading","handlePhraseModifier","togglePhraseModifier","tokenStyles","tokenStylesWith","phraseModifier","closeRE","openSize","charBefore","charAfter","Modes","textileDisabled","layoutType","activeStyles","extraStyles","spanningLayout","newLayout","REs","single","bc","bq","definitionListEnd","drawTable","foot","para","tableCellAttributes","tableText","lang","pad","createRe","makeRe","RE","choiceRe","arg","blockType","newMode","layoutLength","listDepth","listMod","tableCell","startNewLine","define","dict","commonAtoms","commonCommands","tokenDollar","tokenStringStart","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_email_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_email_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_17a2306c_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_email_vue__","placement","append-to-body","visible-arrow","$$v","expression","max-height","slot","directives","rawName","domProps","keydown","_k","keyup","on-change","scopedSlots","_u","selectedModel","_jsplumb","_config","_filter","_util2","eventModel","tasksTypeList","tasksType","toolOperList","toolOper","dagBarId","toolOperCode","urlParam","isRtTasks","isRefresh","taskId","backfill","_getTaskState","setIntervalP","isReset","getTaskState","processInstanceState","taskList","dom","_state","dependentResult","append","icoUnicode","$item","retryTimes","submitTime","startTime","endTime","findComponentDownward","_getDagId","_ckOperation","toolbarEvent","_operationClass","_save","saveStore","saveDAGchart","$router","setName","_udpTopFloorPop","modal","$modal","dialog","showMask","escClose","transitionName","_udp2","onUdp","_saveChart","_rtNodesDag","idsArr","subProcessIds","ids","$name","_subProcessHandle","subProcessId","getIds","_refresh","_this6","_toggleView","_createNodes","removeNodesEvent","fromThis","$destroy","$drawer","_formModel2","addTaskInfo","_ref2","addTasks","_ref3","flag","onSubProcess","_ref4","setIsEditDag","beforeDestroy","destroyed","mapState","JSP","selectedElement","isDrag","isNewNodes","isDblclick","isContextmenu","isClick","JspInstance","setConfig","Permissions","getAuth","connectClick","DragZoom","tasksEvent","selfId","tasksContextmenu","tasksDblclick","tasksClick","ev","thisDom","initNode","jsonHandle","largeJson","locations","isOne","isTwo","$id","$contextmenu","$left","$top","Vue","onUpdate","removeNodes","copyNodes","$body","$connect","removePaste","handleEventPointer","wDom","handleEventLine","handleEventRemove","removeConnect","commit","newArr","_store$commit","newNodeInfo","newNodePors","newUuId","newName","newX","newY","handleEventScreen","screenOpen","$mainLayoutModel","connects","preTasks","idDep","tasksParam","omit","endPointSourceId","endPointTargetId","handleEvent","recursiveVal","recursiveTargetarr","recTargetarrArr","jspBackfill","_this7","wNodes","udpList","syncDefine","_onLocalParams","_verif","refLocalParams","_verifProp","setIsPop","globalParams","mLocalParams","_localParams2","_commcon","localParamsList","localParamsIndex","_getIndex","_handleDirectChanged","_handleTypeChanged","_removeUdp","_addUdp","direct","_handleValue","Affirm","$routerType","$isPop","beforeEach","paramVerification","isPop","dagStore","isEditDag","mAffirm","_ok","_close","mPopup","_popup2","backfillItem","resourcesList","dependence","isContentBox","maxRetryTimes","retryInterval","timeout","taskInstancePriority","clickoutside","_clickoutside2","_onDependent","_onTimeout","_handleClose","_seeHistory","processInstanceId","taskName","_goSubProcess","subProcessInstanceId","_onParams","_verifName","trim","_verification","_onSetProcessName","_jsPlumbHandle2","_isGoSubProcess","mMr","_mr2","mShell","_shell2","mSubProcess","_sub_process2","mProcedure","_procedure2","mSql","_sql2","mLog","_log2","mSpark","_spark2","mPython","_python2","mDependent","_dependent2","mSelectInput","_selectInput2","mTimeoutAlarm","_timeoutAlarm2","mainClass","mainJar","mainJarList","resourceList","localParams","mainArgs","others","programType","programTypeList","_onResourcesData","refResources","_verifResources","_getResourcesList","resourcesListS","mListBox","_listBox2","mResources","_resources2","resList","datasource","rtDatasource","sql","udfs","sqlType","showType","connParams","_onSqlType","_onUdfsData","_onUdpData","_onDsData","refDs","_verifDatasource","refUdfs","_verifUdfs","_handlerEditor","_codemirror2","keypress","mDatasource","_datasource2","mUdfs","_udfs2","mSqlType","_sqlType2","udfsStr","udfsList","_getUdfList","funcName","sqlTypeId","_handleSqlTypeChanged","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_datasource_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_datasource_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_62aa87e3_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_datasource_vue__","datasourceList","supportType","_getDatasourceData","dsTypeListS","rawScript","deployMode","driverCores","driverMemory","numExecutors","executorMemory","executorCores","relation","dependTaskList","_addDep","dependItemList","_deleteDep","_onDeleteAll","_setGlobalRelation","_setRelation","beforeCreate","defaultState","definitionId","depTasks","cycle","dateValue","mDependItemList","_dependItemList2","isInstance","itemIndex","_add","noArr","_getDependItemList","depTasksList","_rtNewParams","_removeTip","_remove","_getProcessList","processListS","processDefinitionIdList","_onChangeDefinitionId","_rtOldParams","_onChangeCycle","processDefinitionList","wdiCurr","_handleWdiChanged","_handleName","isIconState","isInput","_setIconState","includes","_ckIcon","_onBlur","$el","_validation","enable","strategy","interval","_onSwitch","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_start_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_start_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2175c153_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_start_vue__","margin-top","city","readonly","on-click-icon","font-size","repeat-data","padding-top","panel-num","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_log_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_log_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2c0a3d2b_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_log_vue__","data-container","data-toggle","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_dag_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_dag_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6010fed6_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_dag_vue__","Dag","DownChart","download","dagThis","scale","$canvas","d3","scaleExtent","translate","maxVal","tasksAllList","maxBy","copyDom","nodesToRecover","nodesToRemove","outerHTML","_canvg2","getContext","_html2canvas2","dpi","devicePixelRatio","heigth","useCORS","toDataURL","triggerDownload","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_udp_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_udp_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0da27219_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_udp_vue__","maxlength","on-blur","margin-bottom","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_jumpAffirm_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_jumpAffirm_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_4ebc9f24_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_jumpAffirm_vue__","ok-text","nameText","autosize","minRows","udp-list","on-local-params","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_formModel_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_formModel_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_91cb951e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_formModel_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_mr_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_mr_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_392d9caa_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_mr_vue__","multiple","filterable","resource-list","on-resourcesData","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_sql_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_sql_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2d2fa5ab_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_sql_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_udfs_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_udfs_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_4df7487c_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_udfs_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_sqlType_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_sqlType_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_4ee4d39a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_sqlType_vue__","on-dsData","sql-type","on-sqlType","padding-left","opacity","on-udfsData","on-udpData","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_shell_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_shell_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_1342a312_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_shell_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_spark_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_spark_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6bd3ca6b_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_spark_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_python_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_python_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_1e41f351_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_python_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_procedure_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_procedure_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_378b770a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_procedure_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_dependent_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_dependent_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0cc53381_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_dependent_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_dependItemList_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_dependItemList_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0312320a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_dependItemList_vue__","on-delete-all","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_sub_process_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_sub_process_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_53f16ddc_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_sub_process_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_selectInput_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_selectInput_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7911c305_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_selectInput_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_timeoutAlarm_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_timeoutAlarm_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0f1c5934_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_timeoutAlarm_vue__","on-click","binding","vnode","documentHandler","methodName","bindingFn","resize","backfill-item","on-timeout","on-params","on-set-process-name","on-dependent","vertical-align"],"mappings":"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","file":"js/5.995cbec.js","sourcesContent":["<template>\n <div class=\"main-layout-box\">\n <m-secondary-menu :type=\"'projects'\"></m-secondary-menu>\n <m-definition-details></m-definition-details>\n </div>\n</template>\n<script>\n import mSecondaryMenu from '@/module/components/secondaryMenu/secondaryMenu'\n import mDefinitionDetails from '@/conf/home/pages/dag/definitionDetails.vue'\n export default {\n name: 'definition-details-index',\n components: { mDefinitionDetails, mSecondaryMenu }\n }\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/projects/pages/definition/pages/details/index.vue","<template>\n <div class=\"home-main index-model\">\n <m-dag v-if=\"!isLoading\" :type=\"'definition'\" :release-state=\"releaseState\"></m-dag>\n <m-spin :is-spin=\"isLoading\" ></m-spin>\n </div>\n</template>\n<script>\n import mDag from './_source/dag.vue'\n import mSpin from '@/module/components/spin/spin'\n import Affirm from './_source/jumpAffirm'\n import disabledState from '@/module/mixin/disabledState'\n import { mapActions, mapMutations } from 'vuex'\n\n export default {\n name: 'definition-details',\n data () {\n return {\n // loading\n isLoading: true,\n // state\n releaseState: ''\n }\n },\n mixins: [disabledState],\n props: {},\n methods: {\n ...mapMutations('dag', ['resetParams', 'setIsDetails']),\n ...mapActions('dag', ['getProcessList', 'getResourcesList', 'getProcessDetails']),\n /**\n * init\n */\n init () {\n this.isLoading = true\n // Initialization parameters\n this.resetParams()\n // Promise Get node needs data\n Promise.all([\n // Node details\n this.getProcessDetails(this.$route.params.id),\n // get process definition\n this.getProcessList(),\n // get resource\n this.getResourcesList()\n ]).then((data) => {\n let item = data[0]\n this.setIsDetails(item.releaseState === 'ONLINE')\n this.releaseState = item.releaseState\n this.isLoading = false\n // Whether to pop up the box?\n Affirm.init(this.$root)\n }).catch(() => {\n this.isLoading = false\n })\n },\n /**\n * Redraw (refresh operation)\n */\n _reset () {\n this.getProcessDetails(this.$route.params.id).then(res => {\n let item = res\n this.setIsDetails(item.releaseState === 'ONLINE')\n this.releaseState = item.releaseState\n })\n }\n },\n watch: {\n // Listening for routing changes\n '$route': {\n deep: true,\n handler () {\n this.init()\n }\n }\n },\n created () {\n this.init()\n },\n mounted () {\n },\n components: { mDag, mSpin }\n }\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/definitionDetails.vue","var normalizeComponent = require(\"!../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./definitionDetails.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./definitionDetails.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f974417c\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./definitionDetails.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/definitionDetails.vue\n// module id = 1103\n// module chunks = 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"home-main index-model\"},[(!_vm.isLoading)?_c('m-dag',{attrs:{\"type\":'definition',\"release-state\":_vm.releaseState}}):_vm._e(),_vm._v(\" \"),_c('m-spin',{attrs:{\"is-spin\":_vm.isLoading}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-f974417c\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/definitionDetails.vue\n// module id = 1104\n// module chunks = 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"main-layout-box\"},[_c('m-secondary-menu',{attrs:{\"type\":'projects'}}),_vm._v(\" \"),_c('m-definition-details')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-626d0192\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/projects/pages/definition/pages/details/index.vue\n// module id = 1105\n// module chunks = 5","var normalizeComponent = require(\"!../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./index.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./index.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-626d0192\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./index.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/projects/pages/definition/pages/details/index.vue\n// module id = 606\n// module chunks = 5","<template>\n <div id=\"spin-model\" v-if=\"isSpin\" :class=\"isLeft ? 'spin-sp2' : 'spin-sp1'\">\n <div class=\"svg-box\">\n <svg class=\"lds-gears\" width=\"54px\" height=\"54px\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"xMidYMid\" style=\"background: none;\"><g transform=\"translate(50 50)\"> <g transform=\"translate(-19 -19) scale(0.6)\"> <g transform=\"rotate(107.866)\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" values=\"0;360\" keyTimes=\"0;1\" dur=\"1s\" begin=\"0s\" repeatCount=\"indefinite\"></animateTransform><path d=\"M37.3496987939662 -7 L47.3496987939662 -7 L47.3496987939662 7 L37.3496987939662 7 A38 38 0 0 1 31.359972760794346 21.46047782418268 L31.359972760794346 21.46047782418268 L38.431040572659825 28.531545636048154 L28.531545636048154 38.431040572659825 L21.46047782418268 31.359972760794346 A38 38 0 0 1 7.0000000000000036 37.3496987939662 L7.0000000000000036 37.3496987939662 L7.000000000000004 47.3496987939662 L-6.999999999999999 47.3496987939662 L-7 37.3496987939662 A38 38 0 0 1 -21.46047782418268 31.35997276079435 L-21.46047782418268 31.35997276079435 L-28.531545636048154 38.431040572659825 L-38.43104057265982 28.531545636048158 L-31.359972760794346 21.460477824182682 A38 38 0 0 1 -37.3496987939662 7.000000000000007 L-37.3496987939662 7.000000000000007 L-47.3496987939662 7.000000000000008 L-47.3496987939662 -6.9999999999999964 L-37.3496987939662 -6.999999999999997 A38 38 0 0 1 -31.35997276079435 -21.460477824182675 L-31.35997276079435 -21.460477824182675 L-38.431040572659825 -28.531545636048147 L-28.53154563604818 -38.4310405726598 L-21.4604778241827 -31.35997276079433 A38 38 0 0 1 -6.999999999999992 -37.3496987939662 L-6.999999999999992 -37.3496987939662 L-6.999999999999994 -47.3496987939662 L6.999999999999977 -47.3496987939662 L6.999999999999979 -37.3496987939662 A38 38 0 0 1 21.460477824182686 -31.359972760794342 L21.460477824182686 -31.359972760794342 L28.531545636048158 -38.43104057265982 L38.4310405726598 -28.53154563604818 L31.35997276079433 -21.4604778241827 A38 38 0 0 1 37.3496987939662 -6.999999999999995 M0 -23A23 23 0 1 0 0 23 A23 23 0 1 0 0 -23\" fill=\"#0097e0\"></path></g></g> <g transform=\"translate(19 19) scale(0.6)\"> <g transform=\"rotate(229.634)\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" values=\"360;0\" keyTimes=\"0;1\" dur=\"1s\" begin=\"-0.0625s\" repeatCount=\"indefinite\"></animateTransform><path d=\"M37.3496987939662 -7 L47.3496987939662 -7 L47.3496987939662 7 L37.3496987939662 7 A38 38 0 0 1 31.359972760794346 21.46047782418268 L31.359972760794346 21.46047782418268 L38.431040572659825 28.531545636048154 L28.531545636048154 38.431040572659825 L21.46047782418268 31.359972760794346 A38 38 0 0 1 7.0000000000000036 37.3496987939662 L7.0000000000000036 37.3496987939662 L7.000000000000004 47.3496987939662 L-6.999999999999999 47.3496987939662 L-7 37.3496987939662 A38 38 0 0 1 -21.46047782418268 31.35997276079435 L-21.46047782418268 31.35997276079435 L-28.531545636048154 38.431040572659825 L-38.43104057265982 28.531545636048158 L-31.359972760794346 21.460477824182682 A38 38 0 0 1 -37.3496987939662 7.000000000000007 L-37.3496987939662 7.000000000000007 L-47.3496987939662 7.000000000000008 L-47.3496987939662 -6.9999999999999964 L-37.3496987939662 -6.999999999999997 A38 38 0 0 1 -31.35997276079435 -21.460477824182675 L-31.35997276079435 -21.460477824182675 L-38.431040572659825 -28.531545636048147 L-28.53154563604818 -38.4310405726598 L-21.4604778241827 -31.35997276079433 A38 38 0 0 1 -6.999999999999992 -37.3496987939662 L-6.999999999999992 -37.3496987939662 L-6.999999999999994 -47.3496987939662 L6.999999999999977 -47.3496987939662 L6.999999999999979 -37.3496987939662 A38 38 0 0 1 21.460477824182686 -31.359972760794342 L21.460477824182686 -31.359972760794342 L28.531545636048158 -38.43104057265982 L38.4310405726598 -28.53154563604818 L31.35997276079433 -21.4604778241827 A38 38 0 0 1 37.3496987939662 -6.999999999999995 M0 -23A23 23 0 1 0 0 23 A23 23 0 1 0 0 -23\" fill=\"#7f8b95\"></path></g></g></g></svg>\n <span class=\"sp1\">{{$t('正在努力加载中...')}}</span>\n </div>\n </div>\n</template>\n<script>\n export default {\n name: 'spin',\n data () {\n return {}\n },\n props: {\n isSpin: {\n type: Boolean,\n default: true\n },\n isLeft: {\n type: Boolean,\n default: true\n }\n }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n #spin-model {\n position: fixed;\n left: 20px;\n top: 80px;\n background: #fff;\n z-index: 99;\n border-radius: 3px;\n .svg-box {\n width: 100px;\n height: 66px;\n position: absolute;\n left:50%;\n top: 50%;\n margin-left: -50px;\n margin-top: -33px;\n text-align: center;\n .sp1 {\n display: block;\n font-size: 12px;\n color: #999;\n padding-top: 4px;\n }\n }\n &.spin-sp1 {\n width: calc(100% - 40px);\n height: calc(100% - 100px);\n }\n &.spin-sp2 {\n width: calc(100% - 240px);\n height: calc(100% - 100px);\n left: 220px;\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/spin/spin.vue","<template>\n <div class=\"secondary-menu-model\" :class=\"className\" >\n <div class=\"toogle-box\">\n <a href=\"javascript:\" class=\"tog-close\" @click=\"_toggleMenu\" v-if=\"!isTogHide\"></a>\n <a href=\"javascript:\" class=\"tog-open\" @click=\"_toggleMenu\" v-if=\"isTogHide\"></a>\n <!--<a href=\"javascriipt:\" @click=\"_toggleMenu\"><i class=\"iconfont\">{{isTogHide ?'&#xeef5;' : '&#xe652;'}}</i></a>-->\n </div>\n <div class=\"leven-1\" v-for=\"(item,$index) in menuList\">\n <template v-if=\"item.path\">\n <router-link :to=\"{ name: item.path}\">\n <div class=\"name\" @click=\"_toggleSubMenu(item)\">\n <a href=\"javascript:\">\n <i class=\"fa icon\" :class=\"item.icon\"></i>\n <span>{{item.name}}</span>\n <i class=\"fa angle\" :class=\"item.isOpen ? 'fa-angle-down' : 'fa-angle-right'\" v-if=\"item.children.length\"></i>\n </a>\n </div>\n </router-link>\n </template>\n <template v-if=\"!item.path\">\n <div class=\"name\" @click=\"_toggleSubMenu(item)\">\n <a href=\"javascript:\">\n <i class=\"fa icon\" :class=\"item.icon\"></i>\n <span>{{item.name}}</span>\n <i class=\"fa angle\" :class=\"item.isOpen ? 'fa-angle-down' : 'fa-angle-right'\" v-if=\"item.children.length\"></i>\n </a>\n </div>\n </template>\n <ul v-if=\"item.isOpen && item.children.length\">\n <router-link :to=\"{ name: el.path}\" tag=\"li\" active-class=\"active\" v-for=\"(el,index) in item.children\">\n <span>{{el.name}}</span>\n </router-link>\n </ul>\n </div>\n </div>\n</template>\n<script>\n import menu from './menu'\n\n export default {\n name: 'secondary-menu',\n data () {\n return {\n menuList: menu(this.type),\n index: 0,\n id: this.$route.params.id,\n isTogHide: false\n }\n },\n props: {\n type: String,\n className: String\n },\n watch: {\n isTogHide (is) {\n let layoutBox = $('.main-layout-box')\n is ? layoutBox.addClass('toggle') : layoutBox.removeClass('toggle')\n }\n },\n methods: {\n _toggleSubMenu (item) {\n item.isOpen = !item.isOpen\n },\n _toggleMenu () {\n this.isTogHide = !this.isTogHide\n }\n },\n mounted () {\n }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .main-layout-box {\n &.toggle {\n padding-left: 0;\n >.secondary-menu-model {\n left:-200px;\n }\n }\n }\n .secondary-menu-model {\n position: fixed;\n left: 0;\n top: 0;\n width: 200px;\n background: #41444C;\n height: calc(100%);\n padding-top: 80px;\n .toogle-box {\n position: absolute;\n right: -1px;\n top: calc(50% - 50px);\n .tog-close {\n width: 12px;\n height: 102px;\n background: url(\"./close.png\") no-repeat;\n display: inline-block;\n }\n .tog-open {\n width: 12px;\n height: 102px;\n background: url(\"./open.png\") no-repeat;\n display: inline-block;\n position: absolute;\n right: -12px;\n top: 0;\n }\n }\n .leven-1 {\n .name {\n a {\n height: 40px;\n line-height: 40px;\n display: block;\n position: relative;\n padding-left: 12px;\n >.icon {\n vertical-align: middle;\n font-size: 15px;\n width: 20px;\n text-align: center;\n color: #fff;\n }\n >span {\n vertical-align: middle;\n padding-left: 2px;\n font-size: 14px;\n color: #fff;\n }\n >.angle {\n position: absolute;\n right: 12px;\n top: 14px;\n }\n\n }\n }\n ul {\n li {\n height: 36px;\n line-height: 36px;\n cursor: pointer;\n padding-left: 39px;\n color: #fff;\n a {\n font-size: 14px;\n }\n &.active {\n border-right: 2px solid #2d8cf0;\n background: #2C2F39;\n span {\n font-weight: bold;\n color: #2d8cf0;\n }\n }\n }\n }\n >.router-link-exact-active,.router-link-active {\n background: #f0f6fb;\n .name {\n border-right: 2px solid #2d8cf0;\n background: #2B2E38;\n a {\n span {\n color: #2d8cf0;\n font-weight: bold;\n }\n .fa {\n color: #2d8cf0;\n }\n }\n }\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/secondaryMenu/secondaryMenu.vue","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nimport store from '@/conf/home/store'\nimport router from '@/conf/home/router'\n\nexport default {\n data () {\n return {\n router,\n store,\n isDetails: false\n }\n },\n created () {\n this.isDetails = this.store.state.dag.isDetails\n },\n methods: {\n },\n computed: {\n _isDetails () {\n return this.isDetails ? 'icon-disabled' : ''\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/module/mixin/disabledState.js","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {this.id = null;};\n Delayed.prototype.set = function (ms, f) {\n clearTimeout(this.id);\n this.id = setTimeout(f, ms);\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 30;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n input.init(d);\n }\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n // Add a span to a line.\n function addMarkedSpan(line, span) {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\n var line = getLine(doc, lineNo$$1);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map$$1 = emitter._handlers || (emitter._handlers = {});\n map$$1[type] = (map$$1[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map$$1 = emitter._handlers, arr = map$$1 && map$$1[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range$$1;\n try {range$$1 = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range$$1 || range$$1.parentElement() != te) { return false }\n return range$$1.compareEndPoints(\"StartToEnd\", range$$1) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var this$1 = this;\n\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n var this$1 = this;\n\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this$1.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) {\n var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (node.className == \"CodeMirror-linewidget\")\n { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map$$1, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map$$1.length; i += 3) {\n mStart = map$$1[i];\n mEnd = map$$1[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map$$1[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\n node = map$$1[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\n node = map$$1[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n { height += widgetHeight(lineObj.widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = true; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo$$1, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight$$1 = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo$$1, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight$$1; box.bottom += widgetHeight$$1;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight$$1 <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo$$1, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top || y >= coords.bottom;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo$$1, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo$$1, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo$$1, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo$$1, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor]);\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[cm.options.gutters[i]] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range$$1 = doc.sel.ranges[i];\n if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue }\n var collapsed = range$$1.empty();\n if (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range$$1.head, curFragment); }\n if (!collapsed)\n { drawSelectionRange(cm, range$$1, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range$$1, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range$$1.from(), sTo = range$$1.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\"; },\n cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n onBlur(cm);\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm);\n return true\n }\n return false\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range$$1) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range$$1;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range$$1 = cm.curOp.scrollToPos;\n if (range$$1) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to);\n scrollToCoordsRange(cm, from, to, range$$1.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val);\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt$$1 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt$$1 != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId // Unique ID\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this$1.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range$$1 = document.createRange();\n range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range$$1.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range$$1);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(cm) {\n var width = cm.display.gutters.offsetWidth;\n cm.display.sizer.style.marginLeft = width + \"px\";\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function updateGutters(cm) {\n var gutters = cm.display.gutters, specs = cm.options.gutters;\n removeChildren(gutters);\n var i = 0;\n for (; i < specs.length; ++i) {\n var gutterClass = specs[i];\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n if (gutterClass == \"CodeMirror-linenumbers\") {\n cm.display.lineGutter = gElt;\n gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = i ? \"\" : \"none\";\n updateGutterSpace(cm);\n }\n\n // Make sure the gutters options contains the element\n // \"CodeMirror-linenumbers\" when the lineNumbers option is true.\n function setGuttersForLineNumbers(options) {\n var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n if (found == -1 && options.lineNumbers) {\n options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n } else if (found > -1 && !options.lineNumbers) {\n options.gutters = options.gutters.slice(0);\n options.gutters.splice(found, 1);\n }\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n var this$1 = this;\n\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this$1.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var this$1 = this;\n\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this$1.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n var this$1 = this;\n\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this$1.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight$$1) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight$$1);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight$$1));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(startGen) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = startGen || 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n var this$1 = this;\n\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm)\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n var this$1 = this;\n\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this$1;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n var this$1 = this;\n\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this$1.lines[i];\n this$1.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n var this$1 = this;\n\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n var this$1 = this;\n\n for (var e = at + n; at < e; ++at)\n { if (op(this$1.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n var this$1 = this;\n\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this$1;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n var this$1 = this;\n\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this$1.height -= oldHeight - child.height;\n if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n var this$1 = this;\n\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this$1.children.splice(++i, 0, leaf);\n leaf.parent = this$1;\n }\n child.lines = child.lines.slice(0, remaining);\n this$1.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n var this$1 = this;\n\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this$1[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var this$1 = this;\n\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n var this$1 = this;\n\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null));\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n var this$1 = this;\n\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this$1; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this$1.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range$$1 = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range$$1.head; }\n else if (start == \"anchor\") { pos = range$$1.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range$$1.to(); }\n else { pos = range$$1.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n var this$1 = this;\n\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this$1, ranges[i].anchor),\n clipPos(this$1, ranges[i].head)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var this$1 = this;\n\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var this$1 = this;\n\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var this$1 = this;\n\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range$$1 = sel.ranges[i];\n changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this$1, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history.maxGeneration);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo$$1 = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to ||\n span.from == null && lineNo$$1 != from.line ||\n span.from != null && lineNo$$1 == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo$$1;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo$$1;\n });\n return clipPos(this, Pos(lineNo$$1, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n var this$1 = this;\n\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this$1.linked[i];\n if (link.doc != other) { continue }\n this$1.linked.splice(i, 1);\n other.unlinkDoc(this$1);\n detachSharedMarkers(findSharedMarkers(this$1));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var loadFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1)\n { return }\n\n var reader = new FileReader;\n reader.onload = operation(cm, function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) { content = \"\"; }\n text[i] = content;\n if (++read == n) {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n }\n });\n reader.readAsText(file);\n };\n for (var i = 0; i < n; ++i) { loadFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 127: \"Delete\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map$$1, handle, context) {\n map$$1 = getKeyMap(map$$1);\n var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map$$1.fallthrough) {\n if (Object.prototype.toString.call(map$$1.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map$$1.fallthrough, handle, context) }\n for (var i = 0; i < map$$1.fallthrough.length; i++) {\n var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"char\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(0, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if (webkit || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus(); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n delayBlurEvent(cm);\n setTimeout(function () { return display.input.focus(); }, 20);\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range$$1 = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range$$1.anchor, range$$1.head, behavior.extend); }\n else\n { ourRange = range$$1; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range$$1 = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range$$1.anchor, anchor) > 0) {\n head = range$$1.head;\n anchor = minPos(oldRange.from(), range$$1.anchor);\n } else {\n head = range$$1.anchor;\n anchor = maxPos(oldRange.to(), range$$1.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n e_preventDefault(e);\n display.input.focus();\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range$$1) {\n var anchor = range$$1.anchor;\n var head = range$$1.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range$$1 }\n var order = getOrder(anchorLine);\n if (!order) { return range$$1 }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range$$1 }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range$$1 }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range$$1 : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.options.gutters.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.options.gutters[i];\n signal(cm, type, cm, line, gutter, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n guttersChanged(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm) {\n setGuttersForLineNumbers(cm.options);\n guttersChanged(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm) {\n setGuttersForLineNumbers(cm.options);\n guttersChanged(cm);\n }, true);\n option(\"firstLineNumber\", 1, guttersChanged, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, guttersChanged, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function guttersChanged(cm) {\n updateGutters(cm);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n setGuttersForLineNumbers(options);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input);\n display.wrapper.CodeMirror = this;\n updateGutters(this);\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(bind(onFocus, this), 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this$1, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range$$1 = sel.ranges[i$1];\n var from = range$$1.from(), to = range$$1.to();\n if (range$$1.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == inserted)\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range$$1 = sel.ranges[i];\n if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue }\n var mode = cm.getModeAt(range$$1.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range$$1.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch)))\n { indented = indentLine(cm, range$$1.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range$$1.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", !!autocorrect);\n field.setAttribute(\"autocapitalize\", !!autocapitalize);\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map$$1, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map$$1));\n },\n removeKeyMap: function(map$$1) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map$$1 || maps[i].name == map$$1) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var this$1 = this;\n\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this$1.state.modeGen++;\n regChange(this$1);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var this$1 = this;\n\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range$$1 = ranges[i];\n if (!range$$1.empty()) {\n var from = range$$1.from(), to = range$$1.to();\n var start = Math.max(end, from.line);\n end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this$1, j, how); }\n var newRanges = this$1.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range$$1.head.line > end) {\n indentLine(this$1, range$$1.head.line, how, true);\n end = range$$1.head.line;\n if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var this$1 = this;\n\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range$$1 = this.doc.sel.primary();\n if (start == null) { pos = range$$1.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range$$1.from() : range$$1.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var this$1 = this;\n\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this$1.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range$$1) {\n if (this$1.display.shift || this$1.doc.extend || range$$1.empty())\n { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range$$1.from() : range$$1.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range$$1) {\n var other = findPosH(doc, range$$1.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var this$1 = this;\n\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this$1, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this$1, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range$$1) {\n if (collapse)\n { return dir < 0 ? range$$1.from() : range$$1.to() }\n var headPos = cursorCoords(this$1, range$$1.head, \"div\");\n if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range$$1 == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range$$1, margin) {\n if (range$$1 == null) {\n range$$1 = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range$$1 == \"number\") {\n range$$1 = {from: Pos(range$$1, 0), to: null};\n } else if (range$$1.from == null) {\n range$$1 = {from: range$$1, to: null};\n }\n if (!range$$1.to) { range$$1.to = range$$1.from; }\n range$$1.margin = margin || 0;\n\n if (range$$1.from.line != null) {\n scrollToRange(this, range$$1);\n } else {\n scrollToCoordsRange(this, range$$1.from, range$$1.to, range$$1.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo$$1 = this.display.viewFrom;\n this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, \"widget\"); break } } }\n ++lineNo$$1;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"char\", \"column\" (like char, but doesn't\n // cross line boundaries), \"word\" (across next word), or \"group\" (to\n // the start of next group of word or non-word-non-whitespace\n // chars). The visually param controls whether, in right-to-left\n // text, direction 1 means to move towards the next index in the\n // string, or towards the character to the right of the current\n // position. The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n function findNextLine() {\n var l = pos.line + dir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n on(div, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = document.activeElement;\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = this.cm.state.focused;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor())\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var input = this;\n if (this.selectionInEditor())\n { this.pollSelection(); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range$$1;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range$$1 = found[0].find(0)))\n { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map$$1 = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map$$1.length; j += 3) {\n var curNode = map$$1[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map$$1[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.45.0\";\n\n return CodeMirror;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/lib/codemirror.js\n// module id = 644\n// module chunks = 3 4 5 7 8 14","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):t.dayjs=n()}(this,function(){\"use strict\";var t=\"millisecond\",n=\"second\",e=\"minute\",i=\"hour\",r=\"day\",s=\"week\",u=\"month\",a=\"quarter\",o=\"year\",h=/^(\\d{4})-?(\\d{1,2})-?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?.?(\\d{1,3})?$/,f=/\\[([^\\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=function(t,n,e){var i=String(t);return!i||i.length>=n?t:\"\"+Array(n+1-i.length).join(e)+t},d={s:c,z:function(t){var n=-t.utcOffset(),e=Math.abs(n),i=Math.floor(e/60),r=e%60;return(n<=0?\"+\":\"-\")+c(i,2,\"0\")+\":\"+c(r,2,\"0\")},m:function(t,n){var e=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(e,u),r=n-i<0,s=t.clone().add(e+(r?-1:1),u);return Number(-(e+(n-i)/(r?i-s:s-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:o,w:s,d:r,h:i,m:e,s:n,ms:t,Q:a}[h]||String(h||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},$={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},l=\"en\",m={};m[l]=$;var y=function(t){return t instanceof S},M=function(t,n,e){var i;if(!t)return null;if(\"string\"==typeof t)m[t]&&(i=t),n&&(m[t]=n,i=t);else{var r=t.name;m[r]=t,i=r}return e||(l=i),i},g=function(t,n,e){if(y(t))return t.clone();var i=n?\"string\"==typeof n?{format:n,pl:e}:n:{};return i.date=t,new S(i)},D=d;D.l=M,D.i=y,D.w=function(t,n){return g(t,{locale:n.$L,utc:n.$u})};var S=function(){function c(t){this.$L=this.$L||M(t.locale,null,!0)||l,this.parse(t)}var d=c.prototype;return d.parse=function(t){this.$d=function(t){var n=t.date,e=t.utc;if(null===n)return new Date(NaN);if(D.u(n))return new Date;if(n instanceof Date)return new Date(n);if(\"string\"==typeof n&&!/Z$/i.test(n)){var i=n.match(h);if(i)return e?new Date(Date.UTC(i[1],i[2]-1,i[3]||1,i[4]||0,i[5]||0,i[6]||0,i[7]||0)):new Date(i[1],i[2]-1,i[3]||1,i[4]||0,i[5]||0,i[6]||0,i[7]||0)}return new Date(n)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return D},d.isValid=function(){return!(\"Invalid Date\"===this.$d.toString())},d.isSame=function(t,n){var e=g(t);return this.startOf(n)<=e&&e<=this.endOf(n)},d.isAfter=function(t,n){return g(t)<this.startOf(n)},d.isBefore=function(t,n){return this.endOf(n)<g(t)},d.$g=function(t,n,e){return D.u(t)?this[n]:this.set(e,t)},d.year=function(t){return this.$g(t,\"$y\",o)},d.month=function(t){return this.$g(t,\"$M\",u)},d.day=function(t){return this.$g(t,\"$W\",r)},d.date=function(t){return this.$g(t,\"$D\",\"date\")},d.hour=function(t){return this.$g(t,\"$H\",i)},d.minute=function(t){return this.$g(t,\"$m\",e)},d.second=function(t){return this.$g(t,\"$s\",n)},d.millisecond=function(n){return this.$g(n,\"$ms\",t)},d.unix=function(){return Math.floor(this.valueOf()/1e3)},d.valueOf=function(){return this.$d.getTime()},d.startOf=function(t,a){var h=this,f=!!D.u(a)||a,c=D.p(t),d=function(t,n){var e=D.w(h.$u?Date.UTC(h.$y,n,t):new Date(h.$y,n,t),h);return f?e:e.endOf(r)},$=function(t,n){return D.w(h.toDate()[t].apply(h.toDate(),(f?[0,0,0,0]:[23,59,59,999]).slice(n)),h)},l=this.$W,m=this.$M,y=this.$D,M=\"set\"+(this.$u?\"UTC\":\"\");switch(c){case o:return f?d(1,0):d(31,11);case u:return f?d(1,m):d(0,m+1);case s:var g=this.$locale().weekStart||0,S=(l<g?l+7:l)-g;return d(f?y-S:y+(6-S),m);case r:case\"date\":return $(M+\"Hours\",0);case i:return $(M+\"Minutes\",1);case e:return $(M+\"Seconds\",2);case n:return $(M+\"Milliseconds\",3);default:return this.clone()}},d.endOf=function(t){return this.startOf(t,!1)},d.$set=function(s,a){var h,f=D.p(s),c=\"set\"+(this.$u?\"UTC\":\"\"),d=(h={},h[r]=c+\"Date\",h.date=c+\"Date\",h[u]=c+\"Month\",h[o]=c+\"FullYear\",h[i]=c+\"Hours\",h[e]=c+\"Minutes\",h[n]=c+\"Seconds\",h[t]=c+\"Milliseconds\",h)[f],$=f===r?this.$D+(a-this.$W):a;if(f===u||f===o){var l=this.clone().set(\"date\",1);l.$d[d]($),l.init(),this.$d=l.set(\"date\",Math.min(this.$D,l.daysInMonth())).toDate()}else d&&this.$d[d]($);return this.init(),this},d.set=function(t,n){return this.clone().$set(t,n)},d.get=function(t){return this[D.p(t)]()},d.add=function(t,a){var h,f=this;t=Number(t);var c=D.p(a),d=function(n){var e=new Date(f.$d);return e.setDate(e.getDate()+n*t),D.w(e,f)};if(c===u)return this.set(u,this.$M+t);if(c===o)return this.set(o,this.$y+t);if(c===r)return d(1);if(c===s)return d(7);var $=(h={},h[e]=6e4,h[i]=36e5,h[n]=1e3,h)[c]||1,l=this.valueOf()+t*$;return D.w(l,this)},d.subtract=function(t,n){return this.add(-1*t,n)},d.format=function(t){var n=this;if(!this.isValid())return\"Invalid Date\";var e=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=D.z(this),r=this.$locale(),s=r.weekdays,u=r.months,a=function(t,n,e,i){return t&&t[n]||e[n].substr(0,i)},o=function(t){return D.s(n.$H%12||12,t,\"0\")},h={YY:String(this.$y).slice(-2),YYYY:String(this.$y),M:String(this.$M+1),MM:D.s(this.$M+1,2,\"0\"),MMM:a(r.monthsShort,this.$M,u,3),MMMM:u[this.$M],D:String(this.$D),DD:D.s(this.$D,2,\"0\"),d:String(this.$W),dd:a(r.weekdaysMin,this.$W,s,2),ddd:a(r.weekdaysShort,this.$W,s,3),dddd:s[this.$W],H:String(this.$H),HH:D.s(this.$H,2,\"0\"),h:o(1),hh:o(2),a:this.$H<12?\"am\":\"pm\",A:this.$H<12?\"AM\":\"PM\",m:String(this.$m),mm:D.s(this.$m,2,\"0\"),s:String(this.$s),ss:D.s(this.$s,2,\"0\"),SSS:D.s(this.$ms,3,\"0\"),Z:i};return e.replace(f,function(t,n){return n||h[t]||i.replace(\":\",\"\")})},d.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},d.diff=function(t,h,f){var c,d=D.p(h),$=g(t),l=6e4*($.utcOffset()-this.utcOffset()),m=this-$,y=D.m(this,$);return y=(c={},c[o]=y/12,c[u]=y,c[a]=y/3,c[s]=(m-l)/6048e5,c[r]=(m-l)/864e5,c[i]=m/36e5,c[e]=m/6e4,c[n]=m/1e3,c)[d]||m,f?y:D.a(y)},d.daysInMonth=function(){return this.endOf(u).$D},d.$locale=function(){return m[this.$L]},d.locale=function(t,n){if(!t)return this.$L;var e=this.clone();return e.$L=M(t,n,!0),e},d.clone=function(){return D.w(this.toDate(),this)},d.toDate=function(){return new Date(this.$d)},d.toJSON=function(){return this.toISOString()},d.toISOString=function(){return this.$d.toISOString()},d.toString=function(){return this.$d.toUTCString()},c}();return g.prototype=S.prototype,g.extend=function(t,n){return t(n,S,g),g},g.locale=M,g.isDayjs=y,g.unix=function(t){return g(1e3*t)},g.en=m[l],g.Ls=m,g});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dayjs/dayjs.min.js\n// module id = 645\n// module chunks = 0 1 2 3 4 5 6 9 10 11 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-16cfa774\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./spin.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./spin.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./spin.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-16cfa774\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./spin.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/module/components/spin/spin.vue\n// module id = 646\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-16cfa774\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/sass-loader/lib/loader.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./spin.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"3d76622a\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-16cfa774\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/module/components/spin/spin.vue\n// module id = 647\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#spin-model{position:fixed;left:20px;top:80px;background:#fff;z-index:99;border-radius:3px}#spin-model .svg-box{width:100px;height:66px;position:absolute;left:50%;top:50%;margin-left:-50px;margin-top:-33px;text-align:center}#spin-model .svg-box .sp1{display:block;font-size:12px;color:#999;padding-top:4px}#spin-model.spin-sp1{width:calc(100% - 40px);height:calc(100% - 100px)}#spin-model.spin-sp2{width:calc(100% - 240px);height:calc(100% - 100px);left:220px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-16cfa774\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/module/components/spin/spin.vue\n// module id = 648\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isSpin)?_c('div',{class:_vm.isLeft ? 'spin-sp2' : 'spin-sp1',attrs:{\"id\":\"spin-model\"}},[_c('div',{staticClass:\"svg-box\"},[_c('svg',{staticClass:\"lds-gears\",staticStyle:{\"background\":\"none\"},attrs:{\"width\":\"54px\",\"height\":\"54px\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"viewBox\":\"0 0 100 100\",\"preserveAspectRatio\":\"xMidYMid\"}},[_c('g',{attrs:{\"transform\":\"translate(50 50)\"}},[_c('g',{attrs:{\"transform\":\"translate(-19 -19) scale(0.6)\"}},[_c('g',{attrs:{\"transform\":\"rotate(107.866)\"}},[_c('animateTransform',{attrs:{\"attributeName\":\"transform\",\"type\":\"rotate\",\"values\":\"0;360\",\"keyTimes\":\"0;1\",\"dur\":\"1s\",\"begin\":\"0s\",\"repeatCount\":\"indefinite\"}}),_c('path',{attrs:{\"d\":\"M37.3496987939662 -7 L47.3496987939662 -7 L47.3496987939662 7 L37.3496987939662 7 A38 38 0 0 1 31.359972760794346 21.46047782418268 L31.359972760794346 21.46047782418268 L38.431040572659825 28.531545636048154 L28.531545636048154 38.431040572659825 L21.46047782418268 31.359972760794346 A38 38 0 0 1 7.0000000000000036 37.3496987939662 L7.0000000000000036 37.3496987939662 L7.000000000000004 47.3496987939662 L-6.999999999999999 47.3496987939662 L-7 37.3496987939662 A38 38 0 0 1 -21.46047782418268 31.35997276079435 L-21.46047782418268 31.35997276079435 L-28.531545636048154 38.431040572659825 L-38.43104057265982 28.531545636048158 L-31.359972760794346 21.460477824182682 A38 38 0 0 1 -37.3496987939662 7.000000000000007 L-37.3496987939662 7.000000000000007 L-47.3496987939662 7.000000000000008 L-47.3496987939662 -6.9999999999999964 L-37.3496987939662 -6.999999999999997 A38 38 0 0 1 -31.35997276079435 -21.460477824182675 L-31.35997276079435 -21.460477824182675 L-38.431040572659825 -28.531545636048147 L-28.53154563604818 -38.4310405726598 L-21.4604778241827 -31.35997276079433 A38 38 0 0 1 -6.999999999999992 -37.3496987939662 L-6.999999999999992 -37.3496987939662 L-6.999999999999994 -47.3496987939662 L6.999999999999977 -47.3496987939662 L6.999999999999979 -37.3496987939662 A38 38 0 0 1 21.460477824182686 -31.359972760794342 L21.460477824182686 -31.359972760794342 L28.531545636048158 -38.43104057265982 L38.4310405726598 -28.53154563604818 L31.35997276079433 -21.4604778241827 A38 38 0 0 1 37.3496987939662 -6.999999999999995 M0 -23A23 23 0 1 0 0 23 A23 23 0 1 0 0 -23\",\"fill\":\"#0097e0\"}})],1)]),_vm._v(\" \"),_c('g',{attrs:{\"transform\":\"translate(19 19) scale(0.6)\"}},[_c('g',{attrs:{\"transform\":\"rotate(229.634)\"}},[_c('animateTransform',{attrs:{\"attributeName\":\"transform\",\"type\":\"rotate\",\"values\":\"360;0\",\"keyTimes\":\"0;1\",\"dur\":\"1s\",\"begin\":\"-0.0625s\",\"repeatCount\":\"indefinite\"}}),_c('path',{attrs:{\"d\":\"M37.3496987939662 -7 L47.3496987939662 -7 L47.3496987939662 7 L37.3496987939662 7 A38 38 0 0 1 31.359972760794346 21.46047782418268 L31.359972760794346 21.46047782418268 L38.431040572659825 28.531545636048154 L28.531545636048154 38.431040572659825 L21.46047782418268 31.359972760794346 A38 38 0 0 1 7.0000000000000036 37.3496987939662 L7.0000000000000036 37.3496987939662 L7.000000000000004 47.3496987939662 L-6.999999999999999 47.3496987939662 L-7 37.3496987939662 A38 38 0 0 1 -21.46047782418268 31.35997276079435 L-21.46047782418268 31.35997276079435 L-28.531545636048154 38.431040572659825 L-38.43104057265982 28.531545636048158 L-31.359972760794346 21.460477824182682 A38 38 0 0 1 -37.3496987939662 7.000000000000007 L-37.3496987939662 7.000000000000007 L-47.3496987939662 7.000000000000008 L-47.3496987939662 -6.9999999999999964 L-37.3496987939662 -6.999999999999997 A38 38 0 0 1 -31.35997276079435 -21.460477824182675 L-31.35997276079435 -21.460477824182675 L-38.431040572659825 -28.531545636048147 L-28.53154563604818 -38.4310405726598 L-21.4604778241827 -31.35997276079433 A38 38 0 0 1 -6.999999999999992 -37.3496987939662 L-6.999999999999992 -37.3496987939662 L-6.999999999999994 -47.3496987939662 L6.999999999999977 -47.3496987939662 L6.999999999999979 -37.3496987939662 A38 38 0 0 1 21.460477824182686 -31.359972760794342 L21.460477824182686 -31.359972760794342 L28.531545636048158 -38.43104057265982 L38.4310405726598 -28.53154563604818 L31.35997276079433 -21.4604778241827 A38 38 0 0 1 37.3496987939662 -6.999999999999995 M0 -23A23 23 0 1 0 0 23 A23 23 0 1 0 0 -23\",\"fill\":\"#7f8b95\"}})],1)])])]),_vm._v(\" \"),_c('span',{staticClass:\"sp1\"},[_vm._v(_vm._s(_vm.$t('正在努力加载中...')))])])]):_vm._e()}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-16cfa774\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/module/components/spin/spin.vue\n// module id = 649\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-f72bdd3a\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./secondaryMenu.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./secondaryMenu.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./secondaryMenu.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f72bdd3a\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./secondaryMenu.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/module/components/secondaryMenu/secondaryMenu.vue\n// module id = 654\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 25 27","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-f72bdd3a\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/sass-loader/lib/loader.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./secondaryMenu.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"6a41b246\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-f72bdd3a\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/module/components/secondaryMenu/secondaryMenu.vue\n// module id = 655\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 25 27","var escape = require(\"../../../../../node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".main-layout-box.toggle{padding-left:0}.main-layout-box.toggle>.secondary-menu-model{left:-200px}.secondary-menu-model{position:fixed;left:0;top:0;width:200px;background:#41444c;height:100%;padding-top:80px}.secondary-menu-model .toogle-box{position:absolute;right:-1px;top:calc(50% - 50px)}.secondary-menu-model .toogle-box .tog-close{width:12px;height:102px;background:url(\" + escape(require(\"./close.png\")) + \") no-repeat;display:inline-block}.secondary-menu-model .toogle-box .tog-open{width:12px;height:102px;background:url(\" + escape(require(\"./open.png\")) + \") no-repeat;display:inline-block;position:absolute;right:-12px;top:0}.secondary-menu-model .leven-1 .name a{height:40px;line-height:40px;display:block;position:relative;padding-left:12px}.secondary-menu-model .leven-1 .name a>.icon{vertical-align:middle;font-size:15px;width:20px;text-align:center;color:#fff}.secondary-menu-model .leven-1 .name a>span{vertical-align:middle;padding-left:2px;font-size:14px;color:#fff}.secondary-menu-model .leven-1 .name a>.angle{position:absolute;right:12px;top:14px}.secondary-menu-model .leven-1 ul li{height:36px;line-height:36px;cursor:pointer;padding-left:39px;color:#fff}.secondary-menu-model .leven-1 ul li a{font-size:14px}.secondary-menu-model .leven-1 ul li.active{border-right:2px solid #2d8cf0;background:#2c2f39}.secondary-menu-model .leven-1 ul li.active span{font-weight:700;color:#2d8cf0}.secondary-menu-model .leven-1 .router-link-active,.secondary-menu-model .leven-1>.router-link-exact-active{background:#f0f6fb}.secondary-menu-model .leven-1 .router-link-active .name,.secondary-menu-model .leven-1>.router-link-exact-active .name{border-right:2px solid #2d8cf0;background:#2b2e38}.secondary-menu-model .leven-1 .router-link-active .name a span,.secondary-menu-model .leven-1>.router-link-exact-active .name a span{color:#2d8cf0;font-weight:700}.secondary-menu-model .leven-1 .router-link-active .name a .fa,.secondary-menu-model .leven-1>.router-link-exact-active .name a .fa{color:#2d8cf0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-f72bdd3a\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/module/components/secondaryMenu/secondaryMenu.vue\n// module id = 656\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 25 27","module.exports = __webpack_public_path__ + \"images/close.png?02806e641df25c1b4dbff4cb0af3984d\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/module/components/secondaryMenu/close.png\n// module id = 657\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 25 27","module.exports = __webpack_public_path__ + \"images/open.png?97ec0726c7acab8a2a48282d68cea631\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/module/components/secondaryMenu/open.png\n// module id = 658\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 25 27","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nimport i18n from '@/module/i18n'\nlet menu = {\n projects: [\n {\n name: `${i18n.$t('项目首页')}`,\n id: 1,\n path: 'projects-index',\n isOpen: true,\n icon: 'fa-home',\n children: []\n },\n {\n name: `${i18n.$t('工作流')}`,\n id: 2,\n path: '',\n isOpen: true,\n icon: 'fa-gear',\n children: [\n {\n name: `${i18n.$t('工作流定义')}`,\n path: 'definition',\n id: 1\n },\n {\n name: `${i18n.$t('工作流实例')}`,\n path: 'instance',\n id: 2\n },\n {\n name: `${i18n.$t('任务实例')}`,\n path: 'task-instance-list',\n id: 3\n }\n // {\n // name: `${i18n.$t('任务记录')}`,\n // path: 'task-record-list',\n // id: 4\n // }\n ]\n }\n ],\n\n security: [\n {\n name: `${i18n.$t('租户管理')}`,\n id: 1,\n path: 'tenement-manage',\n isOpen: true,\n icon: 'fa-users',\n children: []\n },\n {\n name: `${i18n.$t('用户管理')}`,\n id: 1,\n path: 'users-manage',\n isOpen: true,\n icon: 'fa-user-circle',\n children: []\n },\n {\n name: `${i18n.$t('告警组管理')}`,\n id: 1,\n path: 'warning-groups-manage',\n isOpen: true,\n icon: 'fa-warning',\n children: []\n },\n {\n name: `${i18n.$t('队列管理')}`,\n id: 1,\n path: 'queue-manage',\n isOpen: true,\n icon: 'fa-recycle',\n children: []\n },\n {\n name: `${i18n.$t('服务管理')}`,\n id: 1,\n path: '',\n isOpen: true,\n icon: 'fa-server',\n children: [\n {\n name: 'master',\n path: 'servers-master',\n id: 1\n },\n {\n name: 'worker',\n path: 'servers-worker',\n id: 2\n }\n ]\n }\n ],\n resource: [\n {\n name: `${i18n.$t('文件管理')}`,\n id: 1,\n path: 'file',\n isOpen: true,\n icon: 'fa-files-o',\n children: [],\n disabled: false\n },\n {\n name: `${i18n.$t('UDF管理')}`,\n id: 1,\n path: '',\n isOpen: true,\n icon: 'fa-file-text',\n disabled: false,\n children: [\n {\n name: `${i18n.$t('资源管理')}`,\n path: 'resource-udf-resource',\n id: 1\n },\n {\n name: `${i18n.$t('函数管理')}`,\n path: 'resource-udf-function',\n id: 2\n }\n ]\n }\n ],\n user: [\n {\n name: `${i18n.$t('用户信息')}`,\n id: 1,\n path: 'account',\n isOpen: true,\n icon: 'fa-user',\n children: [],\n disabled: false\n },\n {\n name: `${i18n.$t('修改密码')}`,\n id: 1,\n path: 'password',\n isOpen: true,\n icon: 'fa-key',\n children: [],\n disabled: false\n }\n ]\n}\n\nexport default type => menu[type]\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/module/components/secondaryMenu/menu.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"secondary-menu-model\",class:_vm.className},[_c('div',{staticClass:\"toogle-box\"},[(!_vm.isTogHide)?_c('a',{staticClass:\"tog-close\",attrs:{\"href\":\"javascript:\"},on:{\"click\":_vm._toggleMenu}}):_vm._e(),_vm._v(\" \"),(_vm.isTogHide)?_c('a',{staticClass:\"tog-open\",attrs:{\"href\":\"javascript:\"},on:{\"click\":_vm._toggleMenu}}):_vm._e()]),_vm._v(\" \"),_vm._l((_vm.menuList),function(item,$index){return _c('div',{staticClass:\"leven-1\"},[(item.path)?[_c('router-link',{attrs:{\"to\":{ name: item.path}}},[_c('div',{staticClass:\"name\",on:{\"click\":function($event){return _vm._toggleSubMenu(item)}}},[_c('a',{attrs:{\"href\":\"javascript:\"}},[_c('i',{staticClass:\"fa icon\",class:item.icon}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.name))]),_vm._v(\" \"),(item.children.length)?_c('i',{staticClass:\"fa angle\",class:item.isOpen ? 'fa-angle-down' : 'fa-angle-right'}):_vm._e()])])])]:_vm._e(),_vm._v(\" \"),(!item.path)?[_c('div',{staticClass:\"name\",on:{\"click\":function($event){return _vm._toggleSubMenu(item)}}},[_c('a',{attrs:{\"href\":\"javascript:\"}},[_c('i',{staticClass:\"fa icon\",class:item.icon}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.name))]),_vm._v(\" \"),(item.children.length)?_c('i',{staticClass:\"fa angle\",class:item.isOpen ? 'fa-angle-down' : 'fa-angle-right'}):_vm._e()])])]:_vm._e(),_vm._v(\" \"),(item.isOpen && item.children.length)?_c('ul',_vm._l((item.children),function(el,index){return _c('router-link',{attrs:{\"to\":{ name: el.path},\"tag\":\"li\",\"active-class\":\"active\"}},[_c('span',[_vm._v(_vm._s(el.name))])])}),1):_vm._e()],2)})],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-f72bdd3a\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/module/components/secondaryMenu/secondaryMenu.vue\n// module id = 660\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 25 27","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nimport dayjs from 'dayjs'\n\n/**\n * Formatting time\n */\nconst formatDate = (value, fmt) => {\n fmt = fmt || 'YYYY-MM-DD HH:mm:ss'\n return dayjs(value).format(fmt)\n}\n\nexport {\n formatDate\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/module/filter/filter.js","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1c93b12e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./localParams.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./localParams.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./localParams.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1c93b12e\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./localParams.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue\n// module id = 675\n// module chunks = 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1a083a16\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./listBox.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./listBox.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./listBox.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1a083a16\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./listBox.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/listBox.vue\n// module id = 676\n// module chunks = 3 4 5","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nimport CodeMirror from 'codemirror/lib/codemirror'\nimport 'codemirror/lib/codemirror.css'\nimport 'codemirror/addon/hint/show-hint'\nimport 'codemirror/addon/hint/sql-hint'\nimport 'codemirror/addon/hint/xml-hint'\nimport 'codemirror/mode/python/python'\nimport 'codemirror/mode/sql/sql'\nimport 'codemirror/mode/xml/xml'\nimport 'codemirror/mode/textile/textile'\nimport 'codemirror/mode/shell/shell'\nimport 'codemirror/theme/mdn-like.css'\nimport 'codemirror/addon/hint/show-hint.css'\n\nexport default (id, o) => {\n return CodeMirror.fromTextArea(document.getElementById(id), Object.assign({\n lineNumbers: true,\n theme: 'mdn-like',\n readOnly: true\n }, {}, o))\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/conf/home/pages/resource/pages/file/pages/_source/codemirror.js","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sql\", function(config, parserConfig) {\n var client = parserConfig.client || {},\n atoms = parserConfig.atoms || {\"false\": true, \"true\": true, \"null\": true},\n builtin = parserConfig.builtin || set(defaultBuiltin),\n keywords = parserConfig.keywords || set(sqlKeywords),\n operatorChars = parserConfig.operatorChars || /^[*+\\-%<>!=&|~^\\/]/,\n support = parserConfig.support || {},\n hooks = parserConfig.hooks || {},\n dateSQL = parserConfig.dateSQL || {\"date\" : true, \"time\" : true, \"timestamp\" : true},\n backslashStringEscapes = parserConfig.backslashStringEscapes !== false,\n brackets = parserConfig.brackets || /^[\\{}\\(\\)\\[\\]]/,\n punctuation = parserConfig.punctuation || /^[;.,:]/\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n\n // call hooks from the mime type\n if (hooks[ch]) {\n var result = hooks[ch](stream, state);\n if (result !== false) return result;\n }\n\n if (support.hexNumber &&\n ((ch == \"0\" && stream.match(/^[xX][0-9a-fA-F]+/))\n || (ch == \"x\" || ch == \"X\") && stream.match(/^'[0-9a-fA-F]+'/))) {\n // hex\n // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html\n return \"number\";\n } else if (support.binaryNumber &&\n (((ch == \"b\" || ch == \"B\") && stream.match(/^'[01]+'/))\n || (ch == \"0\" && stream.match(/^b[01]+/)))) {\n // bitstring\n // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html\n return \"number\";\n } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) {\n // numbers\n // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html\n stream.match(/^[0-9]*(\\.[0-9]+)?([eE][-+]?[0-9]+)?/);\n support.decimallessFloat && stream.match(/^\\.(?!\\.)/);\n return \"number\";\n } else if (ch == \"?\" && (stream.eatSpace() || stream.eol() || stream.eat(\";\"))) {\n // placeholders\n return \"variable-3\";\n } else if (ch == \"'\" || (ch == '\"' && support.doubleQuote)) {\n // strings\n // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html\n state.tokenize = tokenLiteral(ch);\n return state.tokenize(stream, state);\n } else if ((((support.nCharCast && (ch == \"n\" || ch == \"N\"))\n || (support.charsetCast && ch == \"_\" && stream.match(/[a-z][a-z0-9]*/i)))\n && (stream.peek() == \"'\" || stream.peek() == '\"'))) {\n // charset casting: _utf8'str', N'str', n'str'\n // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html\n return \"keyword\";\n } else if (support.commentSlashSlash && ch == \"/\" && stream.eat(\"/\")) {\n // 1-line comment\n stream.skipToEnd();\n return \"comment\";\n } else if ((support.commentHash && ch == \"#\")\n || (ch == \"-\" && stream.eat(\"-\") && (!support.commentSpaceRequired || stream.eat(\" \")))) {\n // 1-line comments\n // ref: https://kb.askmonty.org/en/comment-syntax/\n stream.skipToEnd();\n return \"comment\";\n } else if (ch == \"/\" && stream.eat(\"*\")) {\n // multi-line comments\n // ref: https://kb.askmonty.org/en/comment-syntax/\n state.tokenize = tokenComment(1);\n return state.tokenize(stream, state);\n } else if (ch == \".\") {\n // .1 for 0.1\n if (support.zerolessFloat && stream.match(/^(?:\\d+(?:e[+-]?\\d+)?)/i))\n return \"number\";\n if (stream.match(/^\\.+/))\n return null\n // .table_name (ODBC)\n // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html\n if (support.ODBCdotTable && stream.match(/^[\\w\\d_]+/))\n return \"variable-2\";\n } else if (operatorChars.test(ch)) {\n // operators\n stream.eatWhile(operatorChars);\n return \"operator\";\n } else if (brackets.test(ch)) {\n // brackets\n return \"bracket\";\n } else if (punctuation.test(ch)) {\n // punctuation\n stream.eatWhile(punctuation);\n return \"punctuation\";\n } else if (ch == '{' &&\n (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*\"[^\"]*\"( )*}/))) {\n // dates (weird ODBC syntax)\n // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html\n return \"number\";\n } else {\n stream.eatWhile(/^[_\\w\\d]/);\n var word = stream.current().toLowerCase();\n // dates (standard SQL syntax)\n // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html\n if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+\"[^\"]*\"/)))\n return \"number\";\n if (atoms.hasOwnProperty(word)) return \"atom\";\n if (builtin.hasOwnProperty(word)) return \"builtin\";\n if (keywords.hasOwnProperty(word)) return \"keyword\";\n if (client.hasOwnProperty(word)) return \"string-2\";\n return null;\n }\n }\n\n // 'string', with char specified in quote escaped by '\\'\n function tokenLiteral(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = backslashStringEscapes && !escaped && ch == \"\\\\\";\n }\n return \"string\";\n };\n }\n function tokenComment(depth) {\n return function(stream, state) {\n var m = stream.match(/^.*?(\\/\\*|\\*\\/)/)\n if (!m) stream.skipToEnd()\n else if (m[1] == \"/*\") state.tokenize = tokenComment(depth + 1)\n else if (depth > 1) state.tokenize = tokenComment(depth - 1)\n else state.tokenize = tokenBase\n return \"comment\"\n }\n }\n\n function pushContext(stream, state, type) {\n state.context = {\n prev: state.context,\n indent: stream.indentation(),\n col: stream.column(),\n type: type\n };\n }\n\n function popContext(state) {\n state.indent = state.context.indent;\n state.context = state.context.prev;\n }\n\n return {\n startState: function() {\n return {tokenize: tokenBase, context: null};\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (state.context && state.context.align == null)\n state.context.align = false;\n }\n if (state.tokenize == tokenBase && stream.eatSpace()) return null;\n\n var style = state.tokenize(stream, state);\n if (style == \"comment\") return style;\n\n if (state.context && state.context.align == null)\n state.context.align = true;\n\n var tok = stream.current();\n if (tok == \"(\")\n pushContext(stream, state, \")\");\n else if (tok == \"[\")\n pushContext(stream, state, \"]\");\n else if (state.context && state.context.type == tok)\n popContext(state);\n return style;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context;\n if (!cx) return CodeMirror.Pass;\n var closing = textAfter.charAt(0) == cx.type;\n if (cx.align) return cx.col + (closing ? 0 : 1);\n else return cx.indent + (closing ? 0 : config.indentUnit);\n },\n\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n lineComment: support.commentSlashSlash ? \"//\" : support.commentHash ? \"#\" : \"--\",\n closeBrackets: \"()[]{}''\\\"\\\"``\"\n };\n});\n\n // `identifier`\n function hookIdentifier(stream) {\n // MySQL/MariaDB identifiers\n // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"`\" && !stream.eat(\"`\")) return \"variable-2\";\n }\n stream.backUp(stream.current().length - 1);\n return stream.eatWhile(/\\w/) ? \"variable-2\" : null;\n }\n\n // \"identifier\"\n function hookIdentifierDoublequote(stream) {\n // Standard SQL /SQLite identifiers\n // ref: http://web.archive.org/web/20160813185132/http://savage.net.au/SQL/sql-99.bnf.html#delimited%20identifier\n // ref: http://sqlite.org/lang_keywords.html\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"\\\"\" && !stream.eat(\"\\\"\")) return \"variable-2\";\n }\n stream.backUp(stream.current().length - 1);\n return stream.eatWhile(/\\w/) ? \"variable-2\" : null;\n }\n\n // variable token\n function hookVar(stream) {\n // variables\n // @@prefix.varName @varName\n // varName can be quoted with ` or ' or \"\n // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html\n if (stream.eat(\"@\")) {\n stream.match(/^session\\./);\n stream.match(/^local\\./);\n stream.match(/^global\\./);\n }\n\n if (stream.eat(\"'\")) {\n stream.match(/^.*'/);\n return \"variable-2\";\n } else if (stream.eat('\"')) {\n stream.match(/^.*\"/);\n return \"variable-2\";\n } else if (stream.eat(\"`\")) {\n stream.match(/^.*`/);\n return \"variable-2\";\n } else if (stream.match(/^[0-9a-zA-Z$\\.\\_]+/)) {\n return \"variable-2\";\n }\n return null;\n };\n\n // short client keyword token\n function hookClient(stream) {\n // \\N means NULL\n // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html\n if (stream.eat(\"N\")) {\n return \"atom\";\n }\n // \\g, etc\n // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html\n return stream.match(/^[a-zA-Z.#!?]/) ? \"variable-2\" : null;\n }\n\n // these keywords are used by all SQL dialects (however, a mode can still overwrite it)\n var sqlKeywords = \"alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit \";\n\n // turn a space-separated list into an array\n function set(str) {\n var obj = {}, words = str.split(\" \");\n for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n return obj;\n }\n\n var defaultBuiltin = \"bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric\"\n\n // A generic SQL Mode. It's not a standard, it just try to support what is generally supported\n CodeMirror.defineMIME(\"text/x-sql\", {\n name: \"sql\",\n keywords: set(sqlKeywords + \"begin\"),\n builtin: set(defaultBuiltin),\n atoms: set(\"false true null unknown\"),\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable doubleQuote binaryNumber hexNumber\")\n });\n\n CodeMirror.defineMIME(\"text/x-mssql\", {\n name: \"sql\",\n client: set(\"$partition binary_checksum checksum connectionproperty context_info current_request_id error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big xact_state object_id\"),\n keywords: set(sqlKeywords + \"begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec go if use index holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot tablock tablockx updlock with\"),\n builtin: set(\"bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table \"),\n atoms: set(\"is not null like and or in left right between inner outer join all any some cross unpivot pivot exists\"),\n operatorChars: /^[*+\\-%<>!=^\\&|\\/]/,\n brackets: /^[\\{}\\(\\)]/,\n punctuation: /^[;.,:/]/,\n backslashStringEscapes: false,\n dateSQL: set(\"date datetimeoffset datetime2 smalldatetime datetime time\"),\n hooks: {\n \"@\": hookVar\n }\n });\n\n CodeMirror.defineMIME(\"text/x-mysql\", {\n name: \"sql\",\n client: set(\"charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee\"),\n keywords: set(sqlKeywords + \"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat\"),\n builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric\"),\n atoms: set(\"false true null unknown\"),\n operatorChars: /^[*+\\-%<>!=&|^]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired\"),\n hooks: {\n \"@\": hookVar,\n \"`\": hookIdentifier,\n \"\\\\\": hookClient\n }\n });\n\n CodeMirror.defineMIME(\"text/x-mariadb\", {\n name: \"sql\",\n client: set(\"charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee\"),\n keywords: set(sqlKeywords + \"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat\"),\n builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric\"),\n atoms: set(\"false true null unknown\"),\n operatorChars: /^[*+\\-%<>!=&|^]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired\"),\n hooks: {\n \"@\": hookVar,\n \"`\": hookIdentifier,\n \"\\\\\": hookClient\n }\n });\n\n // provided by the phpLiteAdmin project - phpliteadmin.org\n CodeMirror.defineMIME(\"text/x-sqlite\", {\n name: \"sql\",\n // commands of the official SQLite client, ref: https://www.sqlite.org/cli.html#dotcmd\n client: set(\"auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width\"),\n // ref: http://sqlite.org/lang_keywords.html\n keywords: set(sqlKeywords + \"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without\"),\n // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types.\n builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real\"),\n // ref: http://sqlite.org/syntax/literal-value.html\n atoms: set(\"null current_date current_time current_timestamp\"),\n // ref: http://sqlite.org/lang_expr.html#binaryops\n operatorChars: /^[*+\\-%<>!=&|/~]/,\n // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types.\n dateSQL: set(\"date time timestamp datetime\"),\n support: set(\"decimallessFloat zerolessFloat\"),\n identifierQuote: \"\\\"\", //ref: http://sqlite.org/lang_keywords.html\n hooks: {\n // bind-parameters ref:http://sqlite.org/lang_expr.html#varparam\n \"@\": hookVar,\n \":\": hookVar,\n \"?\": hookVar,\n \"$\": hookVar,\n // The preferred way to escape Identifiers is using double quotes, ref: http://sqlite.org/lang_keywords.html\n \"\\\"\": hookIdentifierDoublequote,\n // there is also support for backtics, ref: http://sqlite.org/lang_keywords.html\n \"`\": hookIdentifier\n }\n });\n\n // the query language used by Apache Cassandra is called CQL, but this mime type\n // is called Cassandra to avoid confusion with Contextual Query Language\n CodeMirror.defineMIME(\"text/x-cassandra\", {\n name: \"sql\",\n client: { },\n keywords: set(\"add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime\"),\n builtin: set(\"ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint\"),\n atoms: set(\"false true infinity NaN\"),\n operatorChars: /^[<>=]/,\n dateSQL: { },\n support: set(\"commentSlashSlash decimallessFloat\"),\n hooks: { }\n });\n\n // this is based on Peter Raganitsch's 'plsql' mode\n CodeMirror.defineMIME(\"text/x-plsql\", {\n name: \"sql\",\n client: set(\"appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap\"),\n keywords: set(\"abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work\"),\n builtin: set(\"abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml\"),\n operatorChars: /^[*\\/+\\-%<>!=~]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"doubleQuote nCharCast zerolessFloat binaryNumber hexNumber\")\n });\n\n // Created to support specific hive keywords\n CodeMirror.defineMIME(\"text/x-hive\", {\n name: \"sql\",\n keywords: set(\"select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year\"),\n builtin: set(\"bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar\"),\n atoms: set(\"false true null unknown\"),\n operatorChars: /^[*+\\-%<>!=]/,\n dateSQL: set(\"date timestamp\"),\n support: set(\"ODBCdotTable doubleQuote binaryNumber hexNumber\")\n });\n\n CodeMirror.defineMIME(\"text/x-pgsql\", {\n name: \"sql\",\n client: set(\"source\"),\n // For PostgreSQL - https://www.postgresql.org/docs/11/sql-keywords-appendix.html\n // For pl/pgsql lang - https://github.com/postgres/postgres/blob/REL_11_2/src/pl/plpgsql/src/pl_scanner.c\n keywords: set(sqlKeywords + \"a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone\"),\n // https://www.postgresql.org/docs/11/datatype.html\n builtin: set(\"bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml\"),\n atoms: set(\"false true null unknown\"),\n operatorChars: /^[*\\/+\\-%<>!=&|^\\/#@?~]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast\")\n });\n\n // Google's SQL-like query language, GQL\n CodeMirror.defineMIME(\"text/x-gql\", {\n name: \"sql\",\n keywords: set(\"ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where\"),\n atoms: set(\"false true\"),\n builtin: set(\"blob datetime first key __key__ string integer double boolean null\"),\n operatorChars: /^[*+\\-%<>!=]/\n });\n\n // Greenplum\n CodeMirror.defineMIME(\"text/x-gpsql\", {\n name: \"sql\",\n client: set(\"source\"),\n //https://github.com/greenplum-db/gpdb/blob/master/src/include/parser/kwlist.h\n keywords: set(\"abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone\"),\n builtin: set(\"bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml\"),\n atoms: set(\"false true null unknown\"),\n operatorChars: /^[*+\\-%<>!=&|^\\/#@?~]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast\")\n });\n\n // Spark SQL\n CodeMirror.defineMIME(\"text/x-sparksql\", {\n name: \"sql\",\n keywords: set(\"add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases datata dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with\"),\n builtin: set(\"tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat\"),\n atoms: set(\"false true null\"),\n operatorChars: /^[*\\/+\\-%<>!=~&|^]/,\n dateSQL: set(\"date time timestamp\"),\n support: set(\"ODBCdotTable doubleQuote zerolessFloat\")\n });\n\n // Esper\n CodeMirror.defineMIME(\"text/x-esper\", {\n name: \"sql\",\n client: set(\"source\"),\n // http://www.espertech.com/esper/release-5.5.0/esper-reference/html/appendix_keywords.html\n keywords: set(\"alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window\"),\n builtin: {},\n atoms: set(\"false true null\"),\n operatorChars: /^[*+\\-%<>!=&|^\\/#@?~]/,\n dateSQL: set(\"time\"),\n support: set(\"decimallessFloat zerolessFloat binaryNumber hexNumber\")\n });\n});\n\n/*\n How Properties of Mime Types are used by SQL Mode\n =================================================\n\n keywords:\n A list of keywords you want to be highlighted.\n builtin:\n A list of builtin types you want to be highlighted (if you want types to be of class \"builtin\" instead of \"keyword\").\n operatorChars:\n All characters that must be handled as operators.\n client:\n Commands parsed and executed by the client (not the server).\n support:\n A list of supported syntaxes which are not common, but are supported by more than 1 DBMS.\n * ODBCdotTable: .tableName\n * zerolessFloat: .1\n * doubleQuote\n * nCharCast: N'string'\n * charsetCast: _utf8'string'\n * commentHash: use # char for comments\n * commentSlashSlash: use // for comments\n * commentSpaceRequired: require a space after -- for comments\n atoms:\n Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others:\n UNKNOWN, INFINITY, UNDERFLOW, NaN...\n dateSQL:\n Used for date/time SQL standard syntax, because not all DBMS's support same temporal types.\n*/\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/mode/sql/sql.js\n// module id = 683\n// module chunks = 3 4 5 7 8 14","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nimport i18n from '@/module/i18n'\n\nlet warningTypeList = [\n {\n id: 'NONE',\n code: `${i18n.$t('都不发')}`\n },\n {\n id: 'SUCCESS',\n code: `${i18n.$t('成功发')}`\n },\n {\n id: 'FAILURE',\n code: `${i18n.$t('失败发')}`\n },\n {\n id: 'ALL',\n code: `${i18n.$t('成功或失败都发')}`\n }\n]\n\nconst isEmial = (val) => {\n let regEmail = /^([a-zA-Z0-9]+[_|\\_|\\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\\_|\\.]?)*[a-zA-Z0-9]+\\.[a-zA-Z]{2,3}$/ // eslint-disable-line\n return regEmail.test(val)\n}\n\nconst fuzzyQuery = (list, keyWord) => {\n let len = list.length\n let arr = []\n let reg = new RegExp(keyWord)\n for (let i = 0; i < len; i++) {\n if (list[i].match(reg)) {\n arr.push(list[i])\n }\n }\n return arr\n}\n\nexport {\n warningTypeList,\n isEmial,\n fuzzyQuery\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/util.js","<template>\n <div class=\"ans-input email-model\">\n <div class=\"clearfix input-element\">\n <span class=\"tag-wrapper\" v-for=\"(item,$index) in activeList\" :class=\"activeIndex === $index ? 'active' : ''\">\n <span class=\"tag-text\">{{item}}</span>\n <i class=\"remove-tag ans-icon-close\" @click=\"_del($index)\"></i>\n </span>\n <x-poptip\n placement=\"bottom-start\"\n :append-to-body=\"true\"\n :visible-arrow=\"false\"\n v-model=\"isEmail\"\n trigger=\"manual\">\n <div class=\"email-list-model\">\n <div class=\"ans-scroller\" style=\" max-height: 300px;\">\n <div class=\"scroll-area-wrapper scroll-transition\">\n <ul class=\"dropdown-container\">\n <li class=\"ans-option\" v-for=\"(item,$index) in emailList\" @click=\"_selectEmail($index + 1)\">\n <span class=\"default-option-class\" :class=\"index === ($index + 1) ? 'active' : ''\">{{item}}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <span class=\"label-wrapper\" slot=\"reference\" >\n <!--@keydown.tab=\"_emailTab\"-->\n <input\n class=\"email-input\"\n ref=\"emailInput\"\n :style=\"{width:emailWidth + 'px'}\"\n type=\"text\"\n v-model=\"email\"\n :placeholder=\"$t('请输入邮箱')\"\n @keydown.tab=\"_emailTab\"\n @keyup.delete=\"_emailDelete\"\n @keyup.enter=\"_emailEnter\"\n @keyup.up=\"_emailKeyup('up')\"\n @keyup.down=\"_emailKeyup('down')\">\n </span>\n </x-poptip>\n\n </div>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import emailList from '~/localData/email'\n import { isEmial, fuzzyQuery } from './util'\n\n export default {\n name: 'email',\n data () {\n return {\n tagModel: false,\n email: '',\n activeIndex: null,\n emailList: [],\n index: 0,\n emailWidth: 100,\n isCn: false\n }\n },\n props: {\n activeList: Array,\n repeatData: Array\n },\n model: {\n prop: 'activeList',\n event: 'valueEvent'\n },\n methods: {\n /**\n * Manually add a mailbox\n */\n _manualEmail () {\n let email = this.email\n\n let is = (n) => {\n return _.some(_.cloneDeep(this.repeatData).concat(_.cloneDeep(this.activeList)), v => v === n)\n }\n\n if (isEmial(email)) {\n if (!is(email)) {\n this.emailWidth = 0\n this.activeList.push(email)\n this.email = ''\n this._handlerEmailWitch()\n } else {\n this.$message.warning(`${i18n.$t('邮箱已存在!收件人和抄送人不能重复')}`)\n }\n } else {\n this.$message.warning(`${i18n.$t('邮箱输入不合法')}`)\n }\n },\n /**\n * Processing mailbox\n */\n _handlerEmail (val) {\n if (!val) {\n this.emailList = []\n this.isEmail = false\n } else {\n let a = _.cloneDeep(this.repeatData).concat(_.cloneDeep(this.activeList))\n let b = a.concat(emailList)\n let list = fuzzyQuery(b, val)\n this.emailList = _.uniqWith(list.length && list, _.isEqual)\n this.isEmail = !!list.length\n if (this.emailList.length) {\n this.index = 1\n }\n }\n },\n /**\n * Carriage return\n */\n _emailEnter () {\n // 没有list 手填\n if (!this.emailList.length) {\n this._manualEmail()\n return\n }\n this._selectEmail(this.index)\n },\n /**\n * delete email\n */\n _emailDelete () {\n // 输入法中文情况下禁止删除\n if (!this.isCn) {\n this.emailWidth = 0\n if (_.isInteger(this.activeIndex)) {\n this.activeList.pop()\n this.activeIndex = null\n } else {\n if (!this.email) {\n this.activeIndex = this.activeList.length - 1\n }\n }\n this._handlerEmailWitch()\n }\n },\n /**\n * click delete\n */\n _del (i) {\n this.emailWidth = 0\n this.activeList.splice(i, 1)\n this._handlerEmailWitch()\n },\n /**\n * keyup Up/down event processing\n */\n _emailKeyup (type) {\n let emailList = this.emailList.length\n if (emailList === 1) {\n this.index = 1\n return\n }\n if (emailList) {\n if (type === 'up') {\n this.index = ((i) => {\n let num\n if (i === 0 || i === 1) {\n num = emailList\n } else {\n num = i - 1\n }\n return num\n })(this.index)\n } else {\n this.index = ((i) => {\n let num\n if (i === 0 || i === emailList) {\n num = 1\n } else {\n num = i + 1\n }\n return num\n })(this.index)\n }\n }\n },\n /**\n * Check mailbox processing\n */\n _selectEmail (i) {\n let item = this.emailList[i - 1]\n this.isEmail = false\n this.email = ''\n\n // Non-existing data\n if (_.filter(_.cloneDeep(this.repeatData).concat(_.cloneDeep(this.activeList)), v => v === item).length) {\n this.$message.warning(`${i18n.$t('邮箱已存在!收件人和抄送人不能重复')}`)\n return\n }\n // Width initialization\n this.emailWidth = 0\n // Insert data\n this.activeList.push(item)\n // Calculated width\n this._handlerEmailWitch()\n // Check mailbox index initialization\n this.activeIndex = null\n setTimeout(() => {\n // Focus position\n this.$refs.emailInput.focus()\n }, 100)\n },\n /**\n * Processing width\n */\n _handlerEmailWitch () {\n setTimeout(() => {\n this.emailWidth = parseInt(688 - $(this.$refs.emailInput).position().left - 20)\n if (this.emailWidth < 80) {\n this.emailWidth = 200\n }\n }, 100)\n },\n /**\n * Tab event processing\n */\n _emailTab () {\n // Data processing\n this._emailEnter()\n // Focus acquisition\n setTimeout(() => {\n // Focus position\n this.$refs.emailInput.focus()\n }, 100)\n }\n },\n watch: {\n email (val) {\n this._handlerEmail(val)\n // Check mailbox index initialization\n this.activeIndex = null\n },\n activeList (val) {\n this.$emit('valueEvent', val)\n }\n },\n created () {\n\n },\n mounted () {\n setTimeout(() => {\n // Processing width\n this._handlerEmailWitch()\n }, 500)\n\n // Input method judgment\n $('.email-input').on('input', function () {\n // Chinese input is not truncated\n if ($(this).prop('comStart')) return\n this.isCn = false\n }).on('compositionstart', () => {\n $(this).prop('comStart', true)\n // Check mailbox index initialization\n this.activeIndex = null\n // console.log('中文输入:开始');\n this.isCn = true\n }).on('compositionend', () => {\n $(this).prop('comStart', false)\n // Check mailbox index initialization\n this.activeIndex = null\n // console.log('中文输入:结束');\n this.isCn = false\n })\n }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .email-model {\n width: 688px;\n .input-element {\n min-height: 32px;\n padding: 1px 8px;\n .tag-wrapper {\n display: inline-block;\n height: 22px;\n margin: 3px 8px 3px 0px;\n padding: 0 10px;\n background: #ebf8ff;\n border-radius: 2px;\n cursor: default;\n &.active {\n background: #E2EFF9\n }\n .tag-text {\n margin-right: 8px;\n font-size: 12px;\n line-height: 22px;\n color: #666;\n cursor: text;\n }\n .remove-tag {\n font-size: 12px;\n -webkit-transform: scale(.8);\n -ms-transform: scale(.8);\n transform: scale(.8);\n color: #666;\n cursor: pointer;\n &:hover {\n color: #000;\n }\n }\n }\n .label-wrapper {\n margin-left: -6px;\n input {\n height: 29px;\n line-height: 29px;\n border: 0;\n padding-left: 4px;\n }\n }\n }\n }\n .email-list-model {\n margin: -10px -13px;\n .ans-scroller {\n width: 230px;\n overflow-y: scroll;\n .default-option-class {\n width: 230px;\n overflow: hidden;\n text-overflow:ellipsis;\n white-space: nowrap;\n }\n }\n .ans-option .default-option-class.active {\n background: #ebf8ff;\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue","<template>\n <div class=\"priority-model\">\n <x-select @on-change=\"_onChange\" v-model=\"value\" style=\"width: 130px;\" :disabled=\"isDetails\">\n <div slot=\"trigger\" slot-scope=\"{ selectedModel }\" class=\"ans-input\" >\n <div class=\"input-element\" :class=\"isDetails?'disabled' : ''\">\n <span v-html=\"_rtUnicode(selectedModel ? selectedModel.label : 'MEDIUM')\"></span>\n <span class=\"label-p\">{{selectedModel ? selectedModel.label : 'MEDIUM'}}</span>\n <i class=\"ans-icon-arrow-down\" ></i>\n </div>\n </div>\n <x-option\n v-for=\"item in priorityList\"\n :key=\"item.code\"\n :value=\"item.code\"\n :label=\"item.code\">\n <li class=\"ans-option ans-option-listp\">\n <span class=\"default-option-class\">\n <i class=\"iconfont\" v-html=\"item.unicode\" :style=\"{color:item.color}\"></i>\n {{item.code}}\n </span>\n </li>\n </x-option>\n </x-select>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import disabledState from '@/module/mixin/disabledState'\n\n export default {\n name: 'priority',\n data () {\n return {\n priorityList: [\n {\n code: 'HIGHEST',\n unicode: '&#xe632;',\n color: '#ff0000'\n },\n {\n code: 'HIGH',\n unicode: '&#xe632;',\n color: '#ff0000'\n },\n {\n code: 'MEDIUM',\n unicode: '&#xe632;',\n color: '#EA7D24'\n },\n {\n code: 'LOW',\n unicode: '&#xeef8;',\n color: '#2A8734'\n },\n {\n code: 'LOWEST',\n unicode: '&#xeef8;',\n color: '#2A8734'\n }\n ]\n }\n },\n props: {\n value: {\n type: String,\n default: 'MEDIUM'\n }\n },\n mixins: [disabledState],\n model: {\n prop: 'value',\n event: 'priorityEvent'\n },\n methods: {\n _rtUnicode (value) {\n let o = _.find(this.priorityList, ['code', value])\n return `<i class=\"iconfont\" style=\"color:${o.color}\">${o.unicode}</i>`\n },\n _onChange (o) {\n this.value = o.value\n this.$emit('priorityEvent', o.value)\n }\n },\n created () {\n },\n mounted () {\n },\n components: {}\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .priority-model {\n .ans-option-listp {\n >span {\n font-weight: normal;\n >.iconfont {\n padding-right: 2px;\n }\n }\n }\n .ans-input {\n .input-element {\n cursor: pointer;\n height: 32px;\n line-height: 30px;\n position: relative;\n font-weight: normal;\n .ans-icon-arrow-down {\n position: absolute;\n right: 8px;\n top: 0;\n font-size: 12px;\n color: #888;\n cursor: pointer;\n }\n span {\n vertical-align: middle;\n &.label-p {\n margin-top: -4px;\n display: inline-block;\n }\n }\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/priority/priority.vue","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nimport _ from 'lodash'\nimport $ from 'jquery'\nimport i18n from '@/module/i18n'\nimport store from '@/conf/home/store'\n\n/**\n * Node, to array\n */\nconst rtTargetarrArr = (id) => {\n let a = $(`#${id}`).attr('data-targetarr')\n return a ? a.split(',') : []\n}\n\n/**\n * Store node id to targetarr\n */\nconst saveTargetarr = (valId, domId) => {\n let $target = $(`#${domId}`)\n let targetStr = $target.attr('data-targetarr') ? $target.attr('data-targetarr') + `,${valId}` : `${valId}`\n $target.attr('data-targetarr', targetStr)\n}\n\nconst rtBantpl = () => {\n return `<i class=\"iconfont\" data-toggle=\"tooltip\" data-html=\"true\" data-container=\"body\" data-placement=\"left\" title=\"${i18n.$t('禁止执行')}\">&#xe63e;</i>`\n}\n\n/**\n * return node html\n */\nconst rtTasksTpl = ({ id, name, x, y, targetarr, isAttachment, taskType,runFlag }) => {\n let tpl = ``\n tpl += `<div class=\"w jtk-draggable jtk-droppable jtk-endpoint-anchor jtk-connected ${isAttachment ? 'jtk-ep' : ''}\" data-targetarr=\"${targetarr || ''}\" data-tasks-type=\"${taskType}\" id=\"${id}\" style=\"left: ${x}px; top: ${y}px;\">`\n tpl += `<div>`\n tpl += `<div class=\"state-p\"></div>`\n tpl += `<div class=\"icos icos-${taskType}\"></div>`\n tpl += `<span class=\"name-p\">${name}</span>`\n tpl += `</div>`\n tpl += `<div class=\"ep\"></div>`\n tpl += `<div class=\"ban-p\">`\n if (runFlag === 'FORBIDDEN') {\n tpl += rtBantpl()\n }\n tpl += `</div>`\n tpl += `</div>`\n\n return tpl\n}\n\n/**\n * Get all tasks nodes\n */\nconst tasksAll = () => {\n let a = []\n $('#canvas .w').each(function (idx, elem) {\n let e = $(elem)\n a.push({\n id: e.attr('id'),\n name: e.find('.name-p').text(),\n targetarr: e.attr('data-targetarr') || '',\n x: parseInt(e.css('left'), 10),\n y: parseInt(e.css('top'), 10)\n })\n })\n return a\n}\n\n/**\n * Determine if name is in the current dag map\n * rely dom / backfill\n */\nconst isNameExDag = (name, rely) => {\n if (rely === 'dom') {\n return _.findIndex(tasksAll(), v => v.name === name) !== -1\n } else {\n return _.findIndex(store.state.dag.tasks, v => v.name === name) !== -1\n }\n}\n\n/**\n * Change svg line color\n */\nconst setSvgColor = (e, color) => {\n // Traverse clear all colors\n $('.jtk-connector').each((i, o) => {\n _.map($(o)[0].childNodes, v => {\n $(v).attr('fill', '#555').attr('stroke', '#555').attr('stroke-width', 2)\n })\n })\n\n // Add color to the selection\n _.map($(e.canvas)[0].childNodes, (v, i) => {\n $(v).attr('fill', color).attr('stroke', color)\n if ($(v).attr('class')) {\n $(v).attr('stroke-width', 2)\n }\n })\n}\n\n/**\n * Get all node ids\n */\nconst allNodesId = () => {\n let idArr = []\n $('.w').each((i, o) => {\n let $obj = $(o)\n let $span = $obj.find('.name-p').text()\n if ($span) {\n idArr.push({\n id: $obj.attr('id'),\n name: $span\n })\n }\n })\n return idArr\n}\n\nexport {\n rtTargetarrArr,\n saveTargetarr,\n rtTasksTpl,\n tasksAll,\n isNameExDag,\n setSvgColor,\n allNodesId,\n rtBantpl\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/conf/home/pages/dag/_source/plugIn/util.js","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5b25ea8f\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./resources.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./resources.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./resources.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5b25ea8f\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./resources.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue\n// module id = 699\n// module chunks = 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6a4fc01c\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./priority.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./priority.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./priority.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6a4fc01c\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./priority.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/module/components/priority/priority.vue\n// module id = 700\n// module chunks = 0 3 4 5 6","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nimport i18n from '@/module/i18n'\n/**\n * download file\n */\nlet downloadFile = ($url, $obj) => {\n let param = {\n url: $url,\n obj: $obj\n }\n\n if (!param.url) {\n this.$message.warning(`${i18n.$t('无下载url无法下载')}`)\n return\n }\n\n let generatorInput = function (obj) {\n let result = ''\n let keyArr = Object.keys(obj)\n keyArr.forEach(function (key) {\n result += \"<input type='hidden' name = '\" + key + \"' value='\" + obj[key] + \"'>\"\n })\n return result\n }\n $(`<form action=\"${param.url}\" method=\"get\">${generatorInput(param.obj)}</form>`).appendTo('body').submit().remove()\n}\n\nexport { downloadFile }\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/module/download/index.js","<template>\n <div class=\"start-process-model\">\n <div class=\"title-box\">\n <span>{{$t('启动前请先设置参数')}}</span>\n </div>\n <div class=\"clearfix list\">\n <div class=\"text\">\n {{$t('失败策略')}}\n </div>\n <div class=\"cont\">\n <x-radio-group v-model=\"failureStrategy\" style=\"margin-top: 7px;\">\n <x-radio :label=\"'CONTINUE'\">{{$t('继续')}}</x-radio>\n <x-radio :label=\"'END'\">{{$t('结束')}}</x-radio>\n </x-radio-group>\n </div>\n </div>\n <div class=\"clearfix list\" v-if=\"sourceType === 'contextmenu'\">\n <div class=\"text\">\n {{$t('节点执行')}}\n </div>\n <div class=\"cont\">\n <x-radio-group v-model=\"taskDependType\">\n <x-radio :label=\"'TASK_POST'\">{{$t('向后执行')}}</x-radio>\n <x-radio :label=\"'TASK_PRE'\">{{$t('向前执行')}}</x-radio>\n <x-radio :label=\"'TASK_ONLY'\">{{$t('仅执行当前节点')}}</x-radio>\n </x-radio-group>\n </div>\n </div>\n <div class=\"clearfix list\">\n <div class=\"text\">\n {{$t('通知策略')}}\n </div>\n <div class=\"cont\">\n <x-select style=\"width: 200px;\" v-model=\"warningType\">\n <x-option\n v-for=\"city in warningTypeList\"\n :key=\"city.id\"\n :value=\"city\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n </div>\n <div class=\"clearfix list\">\n <div class=\"text\">\n {{$t('流程优先级')}}\n </div>\n <div class=\"cont\">\n <m-priority v-model=\"processInstancePriority\"></m-priority>\n </div>\n </div>\n <div class=\"clearfix list\">\n <div class=\"text\">\n {{$t('通知组')}}\n </div>\n <div class=\"cont\">\n <x-select\n style=\"width: 200px;\"\n v-model=\"warningGroupId\"\n :disabled=\"!notifyGroupList.length\">\n <x-input slot=\"trigger\" slot-scope=\"{ selectedModel }\" readonly :placeholder=\"$t('请选择通知组')\" :value=\"selectedModel ? selectedModel.label : ''\" style=\"width: 200px;\" @on-click-icon.stop=\"warningGroupId = {}\">\n <i slot=\"suffix\" class=\"fa fa-times-circle\" style=\"font-size: 15px;cursor: pointer;\" v-show=\"warningGroupId.id\"></i>\n <i slot=\"suffix\" class=\"ans-icon-arrow-down\" style=\"font-size: 12px;\" v-show=\"!warningGroupId.id\"></i>\n </x-input>\n <x-option\n v-for=\"city in notifyGroupList\"\n :key=\"city.id\"\n :value=\"city\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n </div>\n <div class=\"clearfix list\">\n <div class=\"text\">\n {{$t('收件人')}}\n </div>\n <div class=\"cont\">\n <m-email v-model=\"receivers\" :repeat-data=\"receiversCc\"></m-email>\n </div>\n </div>\n <div class=\"clearfix list\">\n <div class=\"text\">\n {{$t('抄送人')}}\n </div>\n <div class=\"cont\">\n <m-email v-model=\"receiversCc\" :repeat-data=\"receivers\"></m-email>\n </div>\n </div>\n <div class=\"clearfix list\">\n <div class=\"text\">\n {{$t('补数')}}\n </div>\n <div class=\"cont\">\n <div style=\"padding-top: 6px;\">\n <x-checkbox v-model=\"execType\">{{$t('是否补数')}}</x-checkbox>\n </div>\n </div>\n </div>\n <template v-if=\"execType\">\n <div class=\"clearfix list\" style=\"margin:-6px 0 16px 0\">\n <div class=\"text\">\n {{$t('执行方式')}}\n </div>\n <div class=\"cont\">\n <x-radio-group v-model=\"runMode\" style=\"margin-top: 7px;\">\n <x-radio :label=\"'RUN_MODE_SERIAL'\">{{$t('串行执行')}}</x-radio>\n <x-radio :label=\"'RUN_MODE_PARALLEL'\">{{$t('并行执行')}}</x-radio>\n </x-radio-group>\n </div>\n </div>\n <div class=\"clearfix list\">\n <div class=\"text\">\n {{$t('时间')}}\n </div>\n <div class=\"cont\">\n <x-datepicker\n style=\"width: 360px;\"\n :panel-num=\"2\"\n placement=\"bottom-start\"\n @on-change=\"_datepicker\"\n :value=\"scheduleTime\"\n type=\"daterange\"\n :placeholder=\"$t('选择日期区间')\"\n format=\"YYYY-MM-DD HH:mm:ss\">\n </x-datepicker>\n </div>\n </div>\n </template>\n <div class=\"submit\">\n <x-button type=\"text\" @click=\"close()\"> {{$t('取消')}} </x-button>\n <x-button type=\"primary\" shape=\"circle\" :loading=\"spinnerLoading\" @click=\"ok()\" v-ps=\"['GENERAL_USER']\">{{spinnerLoading ? 'Loading...' : $t('启动')}} </x-button>\n </div>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import dayjs from 'dayjs'\n import mEmail from './email.vue'\n import store from '@/conf/home/store'\n import { warningTypeList } from './util'\n import mPriority from '@/module/components/priority/priority'\n\n export default {\n name: 'start-process',\n data () {\n return {\n store,\n processDefinitionId: 0,\n failureStrategy: 'CONTINUE',\n warningTypeList: warningTypeList,\n warningType: {},\n notifyGroupList: [],\n warningGroupId: {},\n scheduleTime: '',\n spinnerLoading: false,\n execType: false,\n taskDependType: 'TASK_POST',\n receivers: [],\n receiversCc: [],\n runMode: 'RUN_MODE_SERIAL',\n processInstancePriority: 'MEDIUM'\n }\n },\n props: {\n item: Object,\n startNodeList: {\n type: String,\n default: ''\n },\n sourceType: String\n },\n methods: {\n _datepicker (val) {\n this.scheduleTime = val\n },\n _start () {\n this.spinnerLoading = true\n let param = {\n processDefinitionId: this.item.id,\n scheduleTime: this.scheduleTime.length && this.scheduleTime.join(',') || '',\n failureStrategy: this.failureStrategy,\n warningType: this.warningType.id,\n warningGroupId: _.isEmpty(this.warningGroupId) ? 0 : this.warningGroupId.id,\n execType: this.execType ? 'COMPLEMENT_DATA' : null,\n startNodeList: this.startNodeList,\n taskDependType: this.taskDependType,\n runMode: this.runMode,\n processInstancePriority: this.processInstancePriority,\n receivers: this.receivers.join(',') || '',\n receiversCc: this.receiversCc.join(',') || ''\n }\n // Executed from the specified node\n if (this.sourceType === 'contextmenu') {\n param.taskDependType = this.taskDependType\n }\n this.store.dispatch('dag/processStart', param).then(res => {\n this.$message.success(res.msg)\n this.$emit('onUpdate')\n setTimeout(() => {\n this.spinnerLoading = false\n this.close()\n }, 500)\n }).catch(e => {\n this.$message.error(e.msg || '')\n this.spinnerLoading = false\n })\n },\n _getNotifyGroupList () {\n return new Promise((resolve, reject) => {\n let notifyGroupListS = _.cloneDeep(this.store.state.dag.notifyGroupListS) || []\n if (!notifyGroupListS.length) {\n this.store.dispatch('dag/getNotifyGroupList').then(res => {\n this.notifyGroupList = res\n resolve()\n })\n } else {\n this.notifyGroupList = notifyGroupListS\n resolve()\n }\n })\n },\n _getReceiver () {\n this.store.dispatch('dag/getReceiver', { processDefinitionId: this.item.id }).then(res => {\n this.receivers = res.receivers && res.receivers.split(',') || []\n this.receiversCc = res.receiversCc && res.receiversCc.split(',') || []\n })\n },\n ok () {\n this._start()\n },\n close () {\n this.$emit('close')\n }\n },\n watch: {\n execType (a) {\n this.scheduleTime = a ? [dayjs().format('YYYY-MM-DD 00:00:00'), dayjs().format('YYYY-MM-DD 00:00:00')] : ''\n }\n },\n created () {\n this.warningType = this.warningTypeList[0]\n\n this._getReceiver()\n },\n mounted () {\n this._getNotifyGroupList().then(() => {\n this.$nextTick(() => {\n this.warningGroupId = { id: 0 }\n })\n })\n },\n computed: {},\n components: { mEmail, mPriority }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .start-process-model {\n width: 860px;\n min-height: 300px;\n background: #fff;\n border-radius: 3px;\n .title-box {\n margin-bottom: 18px;\n span {\n padding-left: 30px;\n font-size: 16px;\n padding-top: 29px;\n display: block;\n }\n }\n .list {\n margin-bottom: 14px;\n .text {\n width: 140px;\n float: left;\n text-align: right;\n line-height: 32px;\n padding-right: 8px;\n }\n .cont {\n width: 350px;\n float: left;\n .add-email-model {\n padding: 20px;\n }\n\n }\n }\n .submit {\n text-align: right;\n padding-right: 30px;\n padding-top: 10px;\n padding-bottom: 30px;\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue","/**\n * jsBezier\n *\n * Copyright (c) 2010 - 2017 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * licensed under the MIT license.\n *\n * a set of Bezier curve functions that deal with Beziers, used by jsPlumb, and perhaps useful for other people. These functions work with Bezier\n * curves of arbitrary degree.\n *\n * - functions are all in the 'jsBezier' namespace.\n *\n * - all input points should be in the format {x:.., y:..}. all output points are in this format too.\n *\n * - all input curves should be in the format [ {x:.., y:..}, {x:.., y:..}, {x:.., y:..}, {x:.., y:..} ]\n *\n * - 'location' as used as an input here refers to a decimal in the range 0-1 inclusive, which indicates a point some proportion along the length\n * of the curve. location as output has the same format and meaning.\n *\n *\n * Function List:\n * --------------\n *\n * distanceFromCurve(point, curve)\n *\n * \tCalculates the distance that the given point lies from the given Bezier. Note that it is computed relative to the center of the Bezier,\n * so if you have stroked the curve with a wide pen you may wish to take that into account! The distance returned is relative to the values\n * of the curve and the point - it will most likely be pixels.\n *\n * gradientAtPoint(curve, location)\n *\n * \tCalculates the gradient to the curve at the given location, as a decimal between 0 and 1 inclusive.\n *\n * gradientAtPointAlongCurveFrom (curve, location)\n *\n *\tCalculates the gradient at the point on the given curve that is 'distance' units from location.\n *\n * nearestPointOnCurve(point, curve)\n *\n *\tCalculates the nearest point to the given point on the given curve. The return value of this is a JS object literal, containing both the\n *point's coordinates and also the 'location' of the point (see above), for example: { point:{x:551,y:150}, location:0.263365 }.\n *\n * pointOnCurve(curve, location)\n *\n * \tCalculates the coordinates of the point on the given Bezier curve at the given location.\n *\n * pointAlongCurveFrom(curve, location, distance)\n *\n * \tCalculates the coordinates of the point on the given curve that is 'distance' units from location. 'distance' should be in the same coordinate\n * space as that used to construct the Bezier curve. For an HTML Canvas usage, for example, distance would be a measure of pixels.\n *\n * locationAlongCurveFrom(curve, location, distance)\n *\n * \tCalculates the location on the given curve that is 'distance' units from location. 'distance' should be in the same coordinate\n * space as that used to construct the Bezier curve. For an HTML Canvas usage, for example, distance would be a measure of pixels.\n *\n * perpendicularToCurveAt(curve, location, length, distance)\n *\n * \tCalculates the perpendicular to the given curve at the given location. length is the length of the line you wish for (it will be centered\n * on the point at 'location'). distance is optional, and allows you to specify a point along the path from the given location as the center of\n * the perpendicular returned. The return value of this is an array of two points: [ {x:...,y:...}, {x:...,y:...} ].\n *\n *\n */\n\n(function() {\n\n var root = this;\n\n if(typeof Math.sgn == \"undefined\") {\n Math.sgn = function(x) { return x == 0 ? 0 : x > 0 ? 1 :-1; };\n }\n\n var Vectors = {\n subtract \t: \tfunction(v1, v2) { return {x:v1.x - v2.x, y:v1.y - v2.y }; },\n dotProduct\t: \tfunction(v1, v2) { return (v1.x * v2.x) + (v1.y * v2.y); },\n square\t\t:\tfunction(v) { return Math.sqrt((v.x * v.x) + (v.y * v.y)); },\n scale\t\t:\tfunction(v, s) { return {x:v.x * s, y:v.y * s }; }\n },\n\n maxRecursion = 64,\n flatnessTolerance = Math.pow(2.0,-maxRecursion-1);\n\n /**\n * Calculates the distance that the point lies from the curve.\n *\n * @param point a point in the form {x:567, y:3342}\n * @param curve a Bezier curve in the form [{x:..., y:...}, {x:..., y:...}, {x:..., y:...}, {x:..., y:...}]. note that this is currently\n * hardcoded to assume cubiz beziers, but would be better off supporting any degree.\n * @return a JS object literal containing location and distance, for example: {location:0.35, distance:10}. Location is analogous to the location\n * argument you pass to the pointOnPath function: it is a ratio of distance travelled along the curve. Distance is the distance in pixels from\n * the point to the curve.\n */\n var _distanceFromCurve = function(point, curve) {\n var candidates = [],\n w = _convertToBezier(point, curve),\n degree = curve.length - 1, higherDegree = (2 * degree) - 1,\n numSolutions = _findRoots(w, higherDegree, candidates, 0),\n v = Vectors.subtract(point, curve[0]), dist = Vectors.square(v), t = 0.0;\n\n for (var i = 0; i < numSolutions; i++) {\n v = Vectors.subtract(point, _bezier(curve, degree, candidates[i], null, null));\n var newDist = Vectors.square(v);\n if (newDist < dist) {\n dist = newDist;\n t = candidates[i];\n }\n }\n v = Vectors.subtract(point, curve[degree]);\n newDist = Vectors.square(v);\n if (newDist < dist) {\n dist = newDist;\n t = 1.0;\n }\n return {location:t, distance:dist};\n };\n /**\n * finds the nearest point on the curve to the given point.\n */\n var _nearestPointOnCurve = function(point, curve) {\n var td = _distanceFromCurve(point, curve);\n return {point:_bezier(curve, curve.length - 1, td.location, null, null), location:td.location};\n };\n var _convertToBezier = function(point, curve) {\n var degree = curve.length - 1, higherDegree = (2 * degree) - 1,\n c = [], d = [], cdTable = [], w = [],\n z = [ [1.0, 0.6, 0.3, 0.1], [0.4, 0.6, 0.6, 0.4], [0.1, 0.3, 0.6, 1.0] ];\n\n for (var i = 0; i <= degree; i++) c[i] = Vectors.subtract(curve[i], point);\n for (var i = 0; i <= degree - 1; i++) {\n d[i] = Vectors.subtract(curve[i+1], curve[i]);\n d[i] = Vectors.scale(d[i], 3.0);\n }\n for (var row = 0; row <= degree - 1; row++) {\n for (var column = 0; column <= degree; column++) {\n if (!cdTable[row]) cdTable[row] = [];\n cdTable[row][column] = Vectors.dotProduct(d[row], c[column]);\n }\n }\n for (i = 0; i <= higherDegree; i++) {\n if (!w[i]) w[i] = [];\n w[i].y = 0.0;\n w[i].x = parseFloat(i) / higherDegree;\n }\n var n = degree, m = degree-1;\n for (var k = 0; k <= n + m; k++) {\n var lb = Math.max(0, k - m),\n ub = Math.min(k, n);\n for (i = lb; i <= ub; i++) {\n var j = k - i;\n w[i+j].y += cdTable[j][i] * z[j][i];\n }\n }\n return w;\n };\n /**\n * counts how many roots there are.\n */\n var _findRoots = function(w, degree, t, depth) {\n var left = [], right = [],\n left_count, right_count,\n left_t = [], right_t = [];\n\n switch (_getCrossingCount(w, degree)) {\n case 0 : {\n return 0;\n }\n case 1 : {\n if (depth >= maxRecursion) {\n t[0] = (w[0].x + w[degree].x) / 2.0;\n return 1;\n }\n if (_isFlatEnough(w, degree)) {\n t[0] = _computeXIntercept(w, degree);\n return 1;\n }\n break;\n }\n }\n _bezier(w, degree, 0.5, left, right);\n left_count = _findRoots(left, degree, left_t, depth+1);\n right_count = _findRoots(right, degree, right_t, depth+1);\n for (var i = 0; i < left_count; i++) t[i] = left_t[i];\n for (var i = 0; i < right_count; i++) t[i+left_count] = right_t[i];\n return (left_count+right_count);\n };\n var _getCrossingCount = function(curve, degree) {\n var n_crossings = 0, sign, old_sign;\n sign = old_sign = Math.sgn(curve[0].y);\n for (var i = 1; i <= degree; i++) {\n sign = Math.sgn(curve[i].y);\n if (sign != old_sign) n_crossings++;\n old_sign = sign;\n }\n return n_crossings;\n };\n var _isFlatEnough = function(curve, degree) {\n var error,\n intercept_1, intercept_2, left_intercept, right_intercept,\n a, b, c, det, dInv, a1, b1, c1, a2, b2, c2;\n a = curve[0].y - curve[degree].y;\n b = curve[degree].x - curve[0].x;\n c = curve[0].x * curve[degree].y - curve[degree].x * curve[0].y;\n\n var max_distance_above, max_distance_below;\n max_distance_above = max_distance_below = 0.0;\n\n for (var i = 1; i < degree; i++) {\n var value = a * curve[i].x + b * curve[i].y + c;\n if (value > max_distance_above)\n max_distance_above = value;\n else if (value < max_distance_below)\n max_distance_below = value;\n }\n\n a1 = 0.0; b1 = 1.0; c1 = 0.0; a2 = a; b2 = b;\n c2 = c - max_distance_above;\n det = a1 * b2 - a2 * b1;\n dInv = 1.0/det;\n intercept_1 = (b1 * c2 - b2 * c1) * dInv;\n a2 = a; b2 = b; c2 = c - max_distance_below;\n det = a1 * b2 - a2 * b1;\n dInv = 1.0/det;\n intercept_2 = (b1 * c2 - b2 * c1) * dInv;\n left_intercept = Math.min(intercept_1, intercept_2);\n right_intercept = Math.max(intercept_1, intercept_2);\n error = right_intercept - left_intercept;\n return (error < flatnessTolerance)? 1 : 0;\n };\n var _computeXIntercept = function(curve, degree) {\n var XLK = 1.0, YLK = 0.0,\n XNM = curve[degree].x - curve[0].x, YNM = curve[degree].y - curve[0].y,\n XMK = curve[0].x - 0.0, YMK = curve[0].y - 0.0,\n det = XNM*YLK - YNM*XLK, detInv = 1.0/det,\n S = (XNM*YMK - YNM*XMK) * detInv;\n return 0.0 + XLK * S;\n };\n var _bezier = function(curve, degree, t, left, right) {\n var temp = [[]];\n for (var j =0; j <= degree; j++) temp[0][j] = curve[j];\n for (var i = 1; i <= degree; i++) {\n for (var j =0 ; j <= degree - i; j++) {\n if (!temp[i]) temp[i] = [];\n if (!temp[i][j]) temp[i][j] = {};\n temp[i][j].x = (1.0 - t) * temp[i-1][j].x + t * temp[i-1][j+1].x;\n temp[i][j].y = (1.0 - t) * temp[i-1][j].y + t * temp[i-1][j+1].y;\n }\n }\n if (left != null)\n for (j = 0; j <= degree; j++) left[j] = temp[j][0];\n if (right != null)\n for (j = 0; j <= degree; j++) right[j] = temp[degree-j][j];\n\n return (temp[degree][0]);\n };\n\n var _curveFunctionCache = {};\n var _getCurveFunctions = function(order) {\n var fns = _curveFunctionCache[order];\n if (!fns) {\n fns = [];\n var f_term = function() { return function(t) { return Math.pow(t, order); }; },\n l_term = function() { return function(t) { return Math.pow((1-t), order); }; },\n c_term = function(c) { return function(t) { return c; }; },\n t_term = function() { return function(t) { return t; }; },\n one_minus_t_term = function() { return function(t) { return 1-t; }; },\n _termFunc = function(terms) {\n return function(t) {\n var p = 1;\n for (var i = 0; i < terms.length; i++) p = p * terms[i](t);\n return p;\n };\n };\n\n fns.push(new f_term()); // first is t to the power of the curve order\n for (var i = 1; i < order; i++) {\n var terms = [new c_term(order)];\n for (var j = 0 ; j < (order - i); j++) terms.push(new t_term());\n for (var j = 0 ; j < i; j++) terms.push(new one_minus_t_term());\n fns.push(new _termFunc(terms));\n }\n fns.push(new l_term()); // last is (1-t) to the power of the curve order\n\n _curveFunctionCache[order] = fns;\n }\n\n return fns;\n };\n\n\n /**\n * calculates a point on the curve, for a Bezier of arbitrary order.\n * @param curve an array of control points, eg [{x:10,y:20}, {x:50,y:50}, {x:100,y:100}, {x:120,y:100}]. For a cubic bezier this should have four points.\n * @param location a decimal indicating the distance along the curve the point should be located at. this is the distance along the curve as it travels, taking the way it bends into account. should be a number from 0 to 1, inclusive.\n */\n var _pointOnPath = function(curve, location) {\n var cc = _getCurveFunctions(curve.length - 1),\n _x = 0, _y = 0;\n for (var i = 0; i < curve.length ; i++) {\n _x = _x + (curve[i].x * cc[i](location));\n _y = _y + (curve[i].y * cc[i](location));\n }\n\n return {x:_x, y:_y};\n };\n\n var _dist = function(p1,p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n };\n\n var _isPoint = function(curve) {\n return curve[0].x === curve[1].x && curve[0].y === curve[1].y;\n };\n\n /**\n * finds the point that is 'distance' along the path from 'location'. this method returns both the x,y location of the point and also\n * its 'location' (proportion of travel along the path); the method below - _pointAlongPathFrom - calls this method and just returns the\n * point.\n */\n var _pointAlongPath = function(curve, location, distance) {\n\n if (_isPoint(curve)) {\n return {\n point:curve[0],\n location:location\n };\n }\n\n var prev = _pointOnPath(curve, location),\n tally = 0,\n curLoc = location,\n direction = distance > 0 ? 1 : -1,\n cur = null;\n\n while (tally < Math.abs(distance)) {\n curLoc += (0.005 * direction);\n cur = _pointOnPath(curve, curLoc);\n tally += _dist(cur, prev);\n prev = cur;\n }\n return {point:cur, location:curLoc};\n };\n\n var _length = function(curve) {\n if (_isPoint(curve)) return 0;\n\n var prev = _pointOnPath(curve, 0),\n tally = 0,\n curLoc = 0,\n direction = 1,\n cur = null;\n\n while (curLoc < 1) {\n curLoc += (0.005 * direction);\n cur = _pointOnPath(curve, curLoc);\n tally += _dist(cur, prev);\n prev = cur;\n }\n return tally;\n };\n\n /**\n * finds the point that is 'distance' along the path from 'location'.\n */\n var _pointAlongPathFrom = function(curve, location, distance) {\n return _pointAlongPath(curve, location, distance).point;\n };\n\n /**\n * finds the location that is 'distance' along the path from 'location'.\n */\n var _locationAlongPathFrom = function(curve, location, distance) {\n return _pointAlongPath(curve, location, distance).location;\n };\n\n /**\n * returns the gradient of the curve at the given location, which is a decimal between 0 and 1 inclusive.\n *\n * thanks // http://bimixual.org/AnimationLibrary/beziertangents.html\n */\n var _gradientAtPoint = function(curve, location) {\n var p1 = _pointOnPath(curve, location),\n p2 = _pointOnPath(curve.slice(0, curve.length - 1), location),\n dy = p2.y - p1.y, dx = p2.x - p1.x;\n return dy === 0 ? Infinity : Math.atan(dy / dx);\n };\n\n /**\n returns the gradient of the curve at the point which is 'distance' from the given location.\n if this point is greater than location 1, the gradient at location 1 is returned.\n if this point is less than location 0, the gradient at location 0 is returned.\n */\n var _gradientAtPointAlongPathFrom = function(curve, location, distance) {\n var p = _pointAlongPath(curve, location, distance);\n if (p.location > 1) p.location = 1;\n if (p.location < 0) p.location = 0;\n return _gradientAtPoint(curve, p.location);\n };\n\n /**\n * calculates a line that is 'length' pixels long, perpendicular to, and centered on, the path at 'distance' pixels from the given location.\n * if distance is not supplied, the perpendicular for the given location is computed (ie. we set distance to zero).\n */\n var _perpendicularToPathAt = function(curve, location, length, distance) {\n distance = distance == null ? 0 : distance;\n var p = _pointAlongPath(curve, location, distance),\n m = _gradientAtPoint(curve, p.location),\n _theta2 = Math.atan(-1 / m),\n y = length / 2 * Math.sin(_theta2),\n x = length / 2 * Math.cos(_theta2);\n return [{x:p.point.x + x, y:p.point.y + y}, {x:p.point.x - x, y:p.point.y - y}];\n };\n\n /**\n * Calculates all intersections of the given line with the given curve.\n * @param x1\n * @param y1\n * @param x2\n * @param y2\n * @param curve\n * @returns {Array}\n */\n var _lineIntersection = function(x1, y1, x2, y2, curve) {\n var a = y2 - y1,\n b = x1 - x2,\n c = (x1 * (y1 - y2)) + (y1 * (x2-x1)),\n coeffs = _computeCoefficients(curve),\n p = [\n (a*coeffs[0][0]) + (b * coeffs[1][0]),\n (a*coeffs[0][1])+(b*coeffs[1][1]),\n (a*coeffs[0][2])+(b*coeffs[1][2]),\n (a*coeffs[0][3])+(b*coeffs[1][3]) + c\n ],\n r = _cubicRoots.apply(null, p),\n intersections = [];\n\n if (r != null) {\n\n for (var i = 0; i < 3; i++) {\n var t = r[i],\n t2 = Math.pow(t, 2),\n t3 = Math.pow(t, 3),\n x = [\n (coeffs[0][0] * t3) + (coeffs[0][1] * t2) + (coeffs[0][2] * t) + coeffs[0][3],\n (coeffs[1][0] * t3) + (coeffs[1][1] * t2) + (coeffs[1][2] * t) + coeffs[1][3]\n ];\n\n // check bounds of the line\n var s;\n if ((x2 - x1) !== 0) {\n s = (x[0] - x1) / (x2 - x1);\n }\n else {\n s = (x[1] - y1) / (y2 - y1);\n }\n\n if (t >= 0 && t <= 1.0 && s >= 0 && s <= 1.0) {\n intersections.push(x);\n }\n }\n }\n\n return intersections;\n };\n\n /**\n * Calculates all intersections of the given box with the given curve.\n * @param x X position of top left corner of box\n * @param y Y position of top left corner of box\n * @param w width of box\n * @param h height of box\n * @param curve\n * @returns {Array}\n */\n var _boxIntersection = function(x, y, w, h, curve) {\n var i = [];\n i.push.apply(i, _lineIntersection(x, y, x + w, y, curve));\n i.push.apply(i, _lineIntersection(x + w, y, x + w, y + h, curve));\n i.push.apply(i, _lineIntersection(x + w, y + h, x, y + h, curve));\n i.push.apply(i, _lineIntersection(x, y + h, x, y, curve));\n return i;\n };\n\n /**\n * Calculates all intersections of the given bounding box with the given curve.\n * @param boundingBox Bounding box, in { x:.., y:..., w:..., h:... } format.\n * @param curve\n * @returns {Array}\n */\n var _boundingBoxIntersection = function(boundingBox, curve) {\n var i = [];\n i.push.apply(i, _lineIntersection(boundingBox.x, boundingBox.y, boundingBox.x + boundingBox.w, boundingBox.y, curve));\n i.push.apply(i, _lineIntersection(boundingBox.x + boundingBox.w, boundingBox.y, boundingBox.x + boundingBox.w, boundingBox.y + boundingBox.h, curve));\n i.push.apply(i, _lineIntersection(boundingBox.x + boundingBox.w, boundingBox.y + boundingBox.h, boundingBox.x, boundingBox.y + boundingBox.h, curve));\n i.push.apply(i, _lineIntersection(boundingBox.x, boundingBox.y + boundingBox.h, boundingBox.x, boundingBox.y, curve));\n return i;\n };\n\n\n function _computeCoefficientsForAxis(curve, axis) {\n return [\n -(curve[0][axis]) + (3*curve[1][axis]) + (-3 * curve[2][axis]) + curve[3][axis],\n (3*(curve[0][axis])) - (6*(curve[1][axis])) + (3*(curve[2][axis])),\n -3*curve[0][axis] + 3*curve[1][axis],\n curve[0][axis]\n ];\n }\n\n function _computeCoefficients(curve)\n {\n return [\n _computeCoefficientsForAxis(curve, \"x\"),\n _computeCoefficientsForAxis(curve, \"y\")\n ];\n }\n\n function sgn(x) {\n return x < 0 ? -1 : x > 0 ? 1 : 0;\n }\n\n function _cubicRoots(a, b, c, d) {\n var A = b / a,\n B = c / a,\n C = d / a,\n Q = (3*B - Math.pow(A, 2))/9,\n R = (9*A*B - 27*C - 2*Math.pow(A, 3))/54,\n D = Math.pow(Q, 3) + Math.pow(R, 2),\n S,\n T,\n t = [];\n\n if (D >= 0) // complex or duplicate roots\n {\n S = sgn(R + Math.sqrt(D))*Math.pow(Math.abs(R + Math.sqrt(D)),(1/3));\n T = sgn(R - Math.sqrt(D))*Math.pow(Math.abs(R - Math.sqrt(D)),(1/3));\n\n t[0] = -A/3 + (S + T);\n t[1] = -A/3 - (S + T)/2;\n t[2] = -A/3 - (S + T)/2;\n\n /*discard complex roots*/\n if (Math.abs(Math.sqrt(3)*(S - T)/2) !== 0) {\n t[1] = -1;\n t[2] = -1;\n }\n }\n else // distinct real roots\n {\n var th = Math.acos(R/Math.sqrt(-Math.pow(Q, 3)));\n t[0] = 2*Math.sqrt(-Q)*Math.cos(th/3) - A/3;\n t[1] = 2*Math.sqrt(-Q)*Math.cos((th + 2*Math.PI)/3) - A/3;\n t[2] = 2*Math.sqrt(-Q)*Math.cos((th + 4*Math.PI)/3) - A/3;\n }\n\n // discard out of spec roots\n for (var i = 0; i < 3; i++) {\n if (t[i] < 0 || t[i] > 1.0) {\n t[i] = -1;\n }\n }\n\n return t;\n }\n\n var jsBezier = this.jsBezier = {\n distanceFromCurve : _distanceFromCurve,\n gradientAtPoint : _gradientAtPoint,\n gradientAtPointAlongCurveFrom : _gradientAtPointAlongPathFrom,\n nearestPointOnCurve : _nearestPointOnCurve,\n pointOnCurve : _pointOnPath,\n pointAlongCurveFrom : _pointAlongPathFrom,\n perpendicularToCurveAt : _perpendicularToPathAt,\n locationAlongCurveFrom:_locationAlongPathFrom,\n getLength:_length,\n lineIntersection:_lineIntersection,\n boxIntersection:_boxIntersection,\n boundingBoxIntersection:_boundingBoxIntersection,\n version:\"0.9.0\"\n };\n\n if (typeof exports !== \"undefined\") {\n exports.jsBezier = jsBezier;\n }\n\n}).call(typeof window !== 'undefined' ? window : this);\n\n/**\n * Biltong v0.4.0\n *\n * Various geometry functions written as part of jsPlumb and perhaps useful for others.\n *\n * Copyright (c) 2017 jsPlumb\n * https://jsplumbtoolkit.com\n *\n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n */\n;(function() {\n\n \"use strict\";\n var root = this;\n\n var Biltong = root.Biltong = {\n version:\"0.4.0\"\n };\n\n if (typeof exports !== \"undefined\") {\n exports.Biltong = Biltong;\n }\n\n var _isa = function(a) { return Object.prototype.toString.call(a) === \"[object Array]\"; },\n _pointHelper = function(p1, p2, fn) {\n p1 = _isa(p1) ? p1 : [p1.x, p1.y];\n p2 = _isa(p2) ? p2 : [p2.x, p2.y];\n return fn(p1, p2);\n },\n /**\n * @name Biltong.gradient\n * @function\n * @desc Calculates the gradient of a line between the two points.\n * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.\n * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.\n * @return {Float} The gradient of a line between the two points.\n */\n _gradient = Biltong.gradient = function(p1, p2) {\n return _pointHelper(p1, p2, function(_p1, _p2) {\n if (_p2[0] == _p1[0])\n return _p2[1] > _p1[1] ? Infinity : -Infinity;\n else if (_p2[1] == _p1[1])\n return _p2[0] > _p1[0] ? 0 : -0;\n else\n return (_p2[1] - _p1[1]) / (_p2[0] - _p1[0]);\n });\n },\n /**\n * @name Biltong.normal\n * @function\n * @desc Calculates the gradient of a normal to a line between the two points.\n * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.\n * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.\n * @return {Float} The gradient of a normal to a line between the two points.\n */\n _normal = Biltong.normal = function(p1, p2) {\n return -1 / _gradient(p1, p2);\n },\n /**\n * @name Biltong.lineLength\n * @function\n * @desc Calculates the length of a line between the two points.\n * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.\n * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.\n * @return {Float} The length of a line between the two points.\n */\n _lineLength = Biltong.lineLength = function(p1, p2) {\n return _pointHelper(p1, p2, function(_p1, _p2) {\n return Math.sqrt(Math.pow(_p2[1] - _p1[1], 2) + Math.pow(_p2[0] - _p1[0], 2));\n });\n },\n /**\n * @name Biltong.quadrant\n * @function\n * @desc Calculates the quadrant in which the angle between the two points lies.\n * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.\n * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.\n * @return {Integer} The quadrant - 1 for upper right, 2 for lower right, 3 for lower left, 4 for upper left.\n */\n _quadrant = Biltong.quadrant = function(p1, p2) {\n return _pointHelper(p1, p2, function(_p1, _p2) {\n if (_p2[0] > _p1[0]) {\n return (_p2[1] > _p1[1]) ? 2 : 1;\n }\n else if (_p2[0] == _p1[0]) {\n return _p2[1] > _p1[1] ? 2 : 1;\n }\n else {\n return (_p2[1] > _p1[1]) ? 3 : 4;\n }\n });\n },\n /**\n * @name Biltong.theta\n * @function\n * @desc Calculates the angle between the two points.\n * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.\n * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.\n * @return {Float} The angle between the two points.\n */\n _theta = Biltong.theta = function(p1, p2) {\n return _pointHelper(p1, p2, function(_p1, _p2) {\n var m = _gradient(_p1, _p2),\n t = Math.atan(m),\n s = _quadrant(_p1, _p2);\n if ((s == 4 || s== 3)) t += Math.PI;\n if (t < 0) t += (2 * Math.PI);\n\n return t;\n });\n },\n /**\n * @name Biltong.intersects\n * @function\n * @desc Calculates whether or not the two rectangles intersect.\n * @param {Rectangle} r1 First rectangle, as a js object in the form `{x:.., y:.., w:.., h:..}`\n * @param {Rectangle} r2 Second rectangle, as a js object in the form `{x:.., y:.., w:.., h:..}`\n * @return {Boolean} True if the rectangles intersect, false otherwise.\n */\n _intersects = Biltong.intersects = function(r1, r2) {\n var x1 = r1.x, x2 = r1.x + r1.w, y1 = r1.y, y2 = r1.y + r1.h,\n a1 = r2.x, a2 = r2.x + r2.w, b1 = r2.y, b2 = r2.y + r2.h;\n\n return ( (x1 <= a1 && a1 <= x2) && (y1 <= b1 && b1 <= y2) ) ||\n ( (x1 <= a2 && a2 <= x2) && (y1 <= b1 && b1 <= y2) ) ||\n ( (x1 <= a1 && a1 <= x2) && (y1 <= b2 && b2 <= y2) ) ||\n ( (x1 <= a2 && a1 <= x2) && (y1 <= b2 && b2 <= y2) ) ||\n ( (a1 <= x1 && x1 <= a2) && (b1 <= y1 && y1 <= b2) ) ||\n ( (a1 <= x2 && x2 <= a2) && (b1 <= y1 && y1 <= b2) ) ||\n ( (a1 <= x1 && x1 <= a2) && (b1 <= y2 && y2 <= b2) ) ||\n ( (a1 <= x2 && x1 <= a2) && (b1 <= y2 && y2 <= b2) );\n },\n /**\n * @name Biltong.encloses\n * @function\n * @desc Calculates whether or not r2 is completely enclosed by r1.\n * @param {Rectangle} r1 First rectangle, as a js object in the form `{x:.., y:.., w:.., h:..}`\n * @param {Rectangle} r2 Second rectangle, as a js object in the form `{x:.., y:.., w:.., h:..}`\n * @param {Boolean} [allowSharedEdges=false] If true, the concept of enclosure allows for one or more edges to be shared by the two rectangles.\n * @return {Boolean} True if r1 encloses r2, false otherwise.\n */\n _encloses = Biltong.encloses = function(r1, r2, allowSharedEdges) {\n var x1 = r1.x, x2 = r1.x + r1.w, y1 = r1.y, y2 = r1.y + r1.h,\n a1 = r2.x, a2 = r2.x + r2.w, b1 = r2.y, b2 = r2.y + r2.h,\n c = function(v1, v2, v3, v4) { return allowSharedEdges ? v1 <= v2 && v3>= v4 : v1 < v2 && v3 > v4; };\n\n return c(x1,a1,x2,a2) && c(y1,b1,y2,b2);\n },\n _segmentMultipliers = [null, [1, -1], [1, 1], [-1, 1], [-1, -1] ],\n _inverseSegmentMultipliers = [null, [-1, -1], [-1, 1], [1, 1], [1, -1] ],\n /**\n * @name Biltong.pointOnLine\n * @function\n * @desc Calculates a point on the line from `fromPoint` to `toPoint` that is `distance` units along the length of the line.\n * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.\n * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.\n * @return {Point} Point on the line, in the form `{ x:..., y:... }`.\n */\n _pointOnLine = Biltong.pointOnLine = function(fromPoint, toPoint, distance) {\n var m = _gradient(fromPoint, toPoint),\n s = _quadrant(fromPoint, toPoint),\n segmentMultiplier = distance > 0 ? _segmentMultipliers[s] : _inverseSegmentMultipliers[s],\n theta = Math.atan(m),\n y = Math.abs(distance * Math.sin(theta)) * segmentMultiplier[1],\n x = Math.abs(distance * Math.cos(theta)) * segmentMultiplier[0];\n return { x:fromPoint.x + x, y:fromPoint.y + y };\n },\n /**\n * @name Biltong.perpendicularLineTo\n * @function\n * @desc Calculates a line of length `length` that is perpendicular to the line from `fromPoint` to `toPoint` and passes through `toPoint`.\n * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.\n * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.\n * @return {Line} Perpendicular line, in the form `[ { x:..., y:... }, { x:..., y:... } ]`.\n */\n _perpendicularLineTo = Biltong.perpendicularLineTo = function(fromPoint, toPoint, length) {\n var m = _gradient(fromPoint, toPoint),\n theta2 = Math.atan(-1 / m),\n y = length / 2 * Math.sin(theta2),\n x = length / 2 * Math.cos(theta2);\n return [{x:toPoint.x + x, y:toPoint.y + y}, {x:toPoint.x - x, y:toPoint.y - y}];\n };\n}).call(typeof window !== 'undefined' ? window : this);\n;\n(function () {\n\n \"use strict\";\n\n /**\n * Creates a Touch object.\n * @param view\n * @param target\n * @param pageX\n * @param pageY\n * @param screenX\n * @param screenY\n * @param clientX\n * @param clientY\n * @returns {Touch}\n * @private\n */\n function _touch(view, target, pageX, pageY, screenX, screenY, clientX, clientY) {\n\n return new Touch({\n target:target,\n identifier:_uuid(),\n pageX: pageX,\n pageY: pageY,\n screenX: screenX,\n screenY: screenY,\n clientX: clientX || screenX,\n clientY: clientY || screenY\n });\n }\n\n /**\n * Create a synthetic touch list from the given list of Touch objects.\n * @returns {Array}\n * @private\n */\n function _touchList() {\n var list = [];\n Array.prototype.push.apply(list, arguments);\n list.item = function(index) { return this[index]; };\n return list;\n }\n\n /**\n * Create a Touch object and then insert it into a synthetic touch list, returning the list.s\n * @param view\n * @param target\n * @param pageX\n * @param pageY\n * @param screenX\n * @param screenY\n * @param clientX\n * @param clientY\n * @returns {Array}\n * @private\n */\n function _touchAndList(view, target, pageX, pageY, screenX, screenY, clientX, clientY) {\n return _touchList(_touch.apply(null, arguments));\n }\n\n var root = this,\n matchesSelector = function (el, selector, ctx) {\n ctx = ctx || el.parentNode;\n var possibles = ctx.querySelectorAll(selector);\n for (var i = 0; i < possibles.length; i++) {\n if (possibles[i] === el) {\n return true;\n }\n }\n return false;\n },\n _gel = function (el) {\n return (typeof el == \"string\" || el.constructor === String) ? document.getElementById(el) : el;\n },\n _t = function (e) {\n return e.srcElement || e.target;\n },\n //\n // gets path info for the given event - the path from target to obj, in the event's bubble chain. if doCompute\n // is false we just return target for the path.\n //\n _pi = function(e, target, obj, doCompute) {\n if (!doCompute) return { path:[target], end:1 };\n else if (typeof e.path !== \"undefined\" && e.path.indexOf) {\n return { path: e.path, end: e.path.indexOf(obj) };\n } else {\n var out = { path:[], end:-1 }, _one = function(el) {\n out.path.push(el);\n if (el === obj) {\n out.end = out.path.length - 1;\n }\n else if (el.parentNode != null) {\n _one(el.parentNode)\n }\n };\n _one(target);\n return out;\n }\n },\n _d = function (l, fn) {\n for (var i = 0, j = l.length; i < j; i++) {\n if (l[i] == fn) break;\n }\n if (i < l.length) l.splice(i, 1);\n },\n guid = 1,\n //\n // this function generates a guid for every handler, sets it on the handler, then adds\n // it to the associated object's map of handlers for the given event. this is what enables us\n // to unbind all events of some type, or all events (the second of which can be requested by the user,\n // but it also used by Mottle when an element is removed.)\n _store = function (obj, event, fn) {\n var g = guid++;\n obj.__ta = obj.__ta || {};\n obj.__ta[event] = obj.__ta[event] || {};\n // store each handler with a unique guid.\n obj.__ta[event][g] = fn;\n // set the guid on the handler.\n fn.__tauid = g;\n return g;\n },\n _unstore = function (obj, event, fn) {\n obj.__ta && obj.__ta[event] && delete obj.__ta[event][fn.__tauid];\n // a handler might have attached extra functions, so we unbind those too.\n if (fn.__taExtra) {\n for (var i = 0; i < fn.__taExtra.length; i++) {\n _unbind(obj, fn.__taExtra[i][0], fn.__taExtra[i][1]);\n }\n fn.__taExtra.length = 0;\n }\n // a handler might have attached an unstore callback\n fn.__taUnstore && fn.__taUnstore();\n },\n _curryChildFilter = function (children, obj, fn, evt) {\n if (children == null) return fn;\n else {\n var c = children.split(\",\"),\n _fn = function (e) {\n _fn.__tauid = fn.__tauid;\n var t = _t(e), target = t; // t is the target element on which the event occurred. it is the\n // element we will wish to pass to any callbacks.\n var pathInfo = _pi(e, t, obj, children != null)\n if (pathInfo.end != -1) {\n for (var p = 0; p < pathInfo.end; p++) {\n target = pathInfo.path[p];\n for (var i = 0; i < c.length; i++) {\n if (matchesSelector(target, c[i], obj)) {\n fn.apply(target, arguments);\n }\n }\n }\n }\n };\n registerExtraFunction(fn, evt, _fn);\n return _fn;\n }\n },\n //\n // registers an 'extra' function on some event listener function we were given - a function that we\n // created and bound to the element as part of our housekeeping, and which we want to unbind and remove\n // whenever the given function is unbound.\n registerExtraFunction = function (fn, evt, newFn) {\n fn.__taExtra = fn.__taExtra || [];\n fn.__taExtra.push([evt, newFn]);\n },\n DefaultHandler = function (obj, evt, fn, children) {\n if (isTouchDevice && touchMap[evt]) {\n var tfn = _curryChildFilter(children, obj, fn, touchMap[evt]);\n _bind(obj, touchMap[evt], tfn , fn);\n }\n if (evt === \"focus\" && obj.getAttribute(\"tabindex\") == null) {\n obj.setAttribute(\"tabindex\", \"1\");\n }\n _bind(obj, evt, _curryChildFilter(children, obj, fn, evt), fn);\n },\n SmartClickHandler = function (obj, evt, fn, children) {\n if (obj.__taSmartClicks == null) {\n var down = function (e) {\n obj.__tad = _pageLocation(e);\n },\n up = function (e) {\n obj.__tau = _pageLocation(e);\n },\n click = function (e) {\n if (obj.__tad && obj.__tau && obj.__tad[0] === obj.__tau[0] && obj.__tad[1] === obj.__tau[1]) {\n for (var i = 0; i < obj.__taSmartClicks.length; i++)\n obj.__taSmartClicks[i].apply(_t(e), [ e ]);\n }\n };\n DefaultHandler(obj, \"mousedown\", down, children);\n DefaultHandler(obj, \"mouseup\", up, children);\n DefaultHandler(obj, \"click\", click, children);\n obj.__taSmartClicks = [];\n }\n\n // store in the list of callbacks\n obj.__taSmartClicks.push(fn);\n // the unstore function removes this function from the object's listener list for this type.\n fn.__taUnstore = function () {\n _d(obj.__taSmartClicks, fn);\n };\n },\n _tapProfiles = {\n \"tap\": {touches: 1, taps: 1},\n \"dbltap\": {touches: 1, taps: 2},\n \"contextmenu\": {touches: 2, taps: 1}\n },\n TapHandler = function (clickThreshold, dblClickThreshold) {\n return function (obj, evt, fn, children) {\n // if event is contextmenu, for devices which are mouse only, we want to\n // use the default bind.\n if (evt == \"contextmenu\" && isMouseDevice)\n DefaultHandler(obj, evt, fn, children);\n else {\n // the issue here is that this down handler gets registered only for the\n // child nodes in the first registration. in fact it should be registered with\n // no child selector and then on down we should cycle through the registered\n // functions to see if one of them matches. on mouseup we should execute ALL of\n // the functions whose children are either null or match the element.\n if (obj.__taTapHandler == null) {\n var tt = obj.__taTapHandler = {\n tap: [],\n dbltap: [],\n contextmenu: [],\n down: false,\n taps: 0,\n downSelectors: []\n };\n var down = function (e) {\n var target = _t(e), pathInfo = _pi(e, target, obj, children != null), finished = false;\n for (var p = 0; p < pathInfo.end; p++) {\n if (finished) return;\n target = pathInfo.path[p];\n for (var i = 0; i < tt.downSelectors.length; i++) {\n if (tt.downSelectors[i] == null || matchesSelector(target, tt.downSelectors[i], obj)) {\n tt.down = true;\n setTimeout(clearSingle, clickThreshold);\n setTimeout(clearDouble, dblClickThreshold);\n finished = true;\n break; // we only need one match on mousedown\n }\n }\n }\n },\n up = function (e) {\n if (tt.down) {\n var target = _t(e), currentTarget, pathInfo;\n tt.taps++;\n var tc = _touchCount(e);\n for (var eventId in _tapProfiles) {\n if (_tapProfiles.hasOwnProperty(eventId)) {\n var p = _tapProfiles[eventId];\n if (p.touches === tc && (p.taps === 1 || p.taps === tt.taps)) {\n for (var i = 0; i < tt[eventId].length; i++) {\n pathInfo = _pi(e, target, obj, tt[eventId][i][1] != null);\n for (var pLoop = 0; pLoop < pathInfo.end; pLoop++) {\n currentTarget = pathInfo.path[pLoop];\n // this is a single event registration handler.\n if (tt[eventId][i][1] == null || matchesSelector(currentTarget, tt[eventId][i][1], obj)) {\n tt[eventId][i][0].apply(currentTarget, [ e ]);\n break;\n }\n }\n }\n }\n }\n }\n }\n },\n clearSingle = function () {\n tt.down = false;\n },\n clearDouble = function () {\n tt.taps = 0;\n };\n\n DefaultHandler(obj, \"mousedown\", down);\n DefaultHandler(obj, \"mouseup\", up);\n }\n // add this child selector (it can be null, that's fine).\n obj.__taTapHandler.downSelectors.push(children);\n\n obj.__taTapHandler[evt].push([fn, children]);\n // the unstore function removes this function from the object's listener list for this type.\n fn.__taUnstore = function () {\n _d(obj.__taTapHandler[evt], fn);\n };\n }\n };\n },\n meeHelper = function (type, evt, obj, target) {\n for (var i in obj.__tamee[type]) {\n if (obj.__tamee[type].hasOwnProperty(i)) {\n obj.__tamee[type][i].apply(target, [ evt ]);\n }\n }\n },\n MouseEnterExitHandler = function () {\n var activeElements = [];\n return function (obj, evt, fn, children) {\n if (!obj.__tamee) {\n // __tamee holds a flag saying whether the mouse is currently \"in\" the element, and a list of\n // both mouseenter and mouseexit functions.\n obj.__tamee = { over: false, mouseenter: [], mouseexit: [] };\n // register over and out functions\n var over = function (e) {\n var t = _t(e);\n if ((children == null && (t == obj && !obj.__tamee.over)) || (matchesSelector(t, children, obj) && (t.__tamee == null || !t.__tamee.over))) {\n meeHelper(\"mouseenter\", e, obj, t);\n t.__tamee = t.__tamee || {};\n t.__tamee.over = true;\n activeElements.push(t);\n }\n },\n out = function (e) {\n var t = _t(e);\n // is the current target one of the activeElements? and is the\n // related target NOT a descendant of it?\n for (var i = 0; i < activeElements.length; i++) {\n if (t == activeElements[i] && !matchesSelector((e.relatedTarget || e.toElement), \"*\", t)) {\n t.__tamee.over = false;\n activeElements.splice(i, 1);\n meeHelper(\"mouseexit\", e, obj, t);\n }\n }\n };\n\n _bind(obj, \"mouseover\", _curryChildFilter(children, obj, over, \"mouseover\"), over);\n _bind(obj, \"mouseout\", _curryChildFilter(children, obj, out, \"mouseout\"), out);\n }\n\n fn.__taUnstore = function () {\n delete obj.__tamee[evt][fn.__tauid];\n };\n\n _store(obj, evt, fn);\n obj.__tamee[evt][fn.__tauid] = fn;\n };\n },\n isTouchDevice = \"ontouchstart\" in document.documentElement,\n isMouseDevice = \"onmousedown\" in document.documentElement,\n touchMap = { \"mousedown\": \"touchstart\", \"mouseup\": \"touchend\", \"mousemove\": \"touchmove\" },\n touchstart = \"touchstart\", touchend = \"touchend\", touchmove = \"touchmove\",\n iev = (function () {\n var rv = -1;\n if (navigator.appName == 'Microsoft Internet Explorer') {\n var ua = navigator.userAgent,\n re = new RegExp(\"MSIE ([0-9]{1,}[\\.0-9]{0,})\");\n if (re.exec(ua) != null)\n rv = parseFloat(RegExp.$1);\n }\n return rv;\n })(),\n isIELT9 = iev > -1 && iev < 9,\n _genLoc = function (e, prefix) {\n if (e == null) return [ 0, 0 ];\n var ts = _touches(e), t = _getTouch(ts, 0);\n return [t[prefix + \"X\"], t[prefix + \"Y\"]];\n },\n _pageLocation = function (e) {\n if (e == null) return [ 0, 0 ];\n if (isIELT9) {\n return [ e.clientX + document.documentElement.scrollLeft, e.clientY + document.documentElement.scrollTop ];\n }\n else {\n return _genLoc(e, \"page\");\n }\n },\n _screenLocation = function (e) {\n return _genLoc(e, \"screen\");\n },\n _clientLocation = function (e) {\n return _genLoc(e, \"client\");\n },\n _getTouch = function (touches, idx) {\n return touches.item ? touches.item(idx) : touches[idx];\n },\n _touches = function (e) {\n return e.touches && e.touches.length > 0 ? e.touches :\n e.changedTouches && e.changedTouches.length > 0 ? e.changedTouches :\n e.targetTouches && e.targetTouches.length > 0 ? e.targetTouches :\n [ e ];\n },\n _touchCount = function (e) {\n return _touches(e).length;\n },\n //http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html\n _bind = function (obj, type, fn, originalFn) {\n _store(obj, type, fn);\n originalFn.__tauid = fn.__tauid;\n if (obj.addEventListener)\n obj.addEventListener(type, fn, false);\n else if (obj.attachEvent) {\n var key = type + fn.__tauid;\n obj[\"e\" + key] = fn;\n // TODO look at replacing with .call(..)\n obj[key] = function () {\n obj[\"e\" + key] && obj[\"e\" + key](window.event);\n };\n obj.attachEvent(\"on\" + type, obj[key]);\n }\n },\n _unbind = function (obj, type, fn) {\n if (fn == null) return;\n _each(obj, function () {\n var _el = _gel(this);\n _unstore(_el, type, fn);\n // it has been bound if there is a tauid. otherwise it was not bound and we can ignore it.\n if (fn.__tauid != null) {\n if (_el.removeEventListener) {\n _el.removeEventListener(type, fn, false);\n if (isTouchDevice && touchMap[type]) _el.removeEventListener(touchMap[type], fn, false);\n }\n else if (this.detachEvent) {\n var key = type + fn.__tauid;\n _el[key] && _el.detachEvent(\"on\" + type, _el[key]);\n _el[key] = null;\n _el[\"e\" + key] = null;\n }\n }\n\n // if a touch event was also registered, deregister now.\n if (fn.__taTouchProxy) {\n _unbind(obj, fn.__taTouchProxy[1], fn.__taTouchProxy[0]);\n }\n });\n },\n _each = function (obj, fn) {\n if (obj == null) return;\n // if a list (or list-like), use it. if a string, get a list\n // by running the string through querySelectorAll. else, assume\n // it's an Element.\n // obj.top is \"unknown\" in IE8.\n obj = (typeof Window !== \"undefined\" && (typeof obj.top !== \"unknown\" && obj == obj.top)) ? [ obj ] :\n (typeof obj !== \"string\") && (obj.tagName == null && obj.length != null) ? obj :\n typeof obj === \"string\" ? document.querySelectorAll(obj)\n : [ obj ];\n\n for (var i = 0; i < obj.length; i++)\n fn.apply(obj[i]);\n },\n _uuid = function () {\n return ('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n }));\n };\n\n /**\n * Mottle offers support for abstracting out the differences\n * between touch and mouse devices, plus \"smart click\" functionality\n * (don't fire click if the mouse has moved between mousedown and mouseup),\n * and synthesized click/tap events.\n * @class Mottle\n * @constructor\n * @param {Object} params Constructor params\n * @param {Number} [params.clickThreshold=250] Threshold, in milliseconds beyond which a touchstart followed by a touchend is not considered to be a click.\n * @param {Number} [params.dblClickThreshold=450] Threshold, in milliseconds beyond which two successive tap events are not considered to be a click.\n * @param {Boolean} [params.smartClicks=false] If true, won't fire click events if the mouse has moved between mousedown and mouseup. Note that this functionality\n * requires that Mottle consume the mousedown event, and so may not be viable in all use cases.\n */\n root.Mottle = function (params) {\n params = params || {};\n var clickThreshold = params.clickThreshold || 250,\n dblClickThreshold = params.dblClickThreshold || 450,\n mouseEnterExitHandler = new MouseEnterExitHandler(),\n tapHandler = new TapHandler(clickThreshold, dblClickThreshold),\n _smartClicks = params.smartClicks,\n _doBind = function (obj, evt, fn, children) {\n if (fn == null) return;\n _each(obj, function () {\n var _el = _gel(this);\n if (_smartClicks && evt === \"click\")\n SmartClickHandler(_el, evt, fn, children);\n else if (evt === \"tap\" || evt === \"dbltap\" || evt === \"contextmenu\") {\n tapHandler(_el, evt, fn, children);\n }\n else if (evt === \"mouseenter\" || evt == \"mouseexit\")\n mouseEnterExitHandler(_el, evt, fn, children);\n else\n DefaultHandler(_el, evt, fn, children);\n });\n };\n\n /**\n * Removes an element from the DOM, and deregisters all event handlers for it. You should use this\n * to ensure you don't leak memory.\n * @method remove\n * @param {String|Element} el Element, or id of the element, to remove.\n * @return {Mottle} The current Mottle instance; you can chain this method.\n */\n this.remove = function (el) {\n _each(el, function () {\n var _el = _gel(this);\n if (_el.__ta) {\n for (var evt in _el.__ta) {\n if (_el.__ta.hasOwnProperty(evt)) {\n for (var h in _el.__ta[evt]) {\n if (_el.__ta[evt].hasOwnProperty(h))\n _unbind(_el, evt, _el.__ta[evt][h]);\n }\n }\n }\n }\n _el.parentNode && _el.parentNode.removeChild(_el);\n });\n return this;\n };\n\n /**\n * Register an event handler, optionally as a delegate for some set of descendant elements. Note\n * that this method takes either 3 or 4 arguments - if you supply 3 arguments it is assumed you have\n * omitted the `children` parameter, and that the event handler should be bound directly to the given element.\n * @method on\n * @param {Element[]|Element|String} el Either an Element, or a CSS spec for a list of elements, or an array of Elements.\n * @param {String} [children] Comma-delimited list of selectors identifying allowed children.\n * @param {String} event Event ID.\n * @param {Function} fn Event handler function.\n * @return {Mottle} The current Mottle instance; you can chain this method.\n */\n this.on = function (el, event, children, fn) {\n var _el = arguments[0],\n _c = arguments.length == 4 ? arguments[2] : null,\n _e = arguments[1],\n _f = arguments[arguments.length - 1];\n\n _doBind(_el, _e, _f, _c);\n return this;\n };\n\n /**\n * Cancel delegate event handling for the given function. Note that unlike with 'on' you do not supply\n * a list of child selectors here: it removes event delegation from all of the child selectors for which the\n * given function was registered (if any).\n * @method off\n * @param {Element[]|Element|String} el Element - or ID of element - from which to remove event listener.\n * @param {String} event Event ID.\n * @param {Function} fn Event handler function.\n * @return {Mottle} The current Mottle instance; you can chain this method.\n */\n this.off = function (el, event, fn) {\n _unbind(el, event, fn);\n return this;\n };\n\n /**\n * Triggers some event for a given element.\n * @method trigger\n * @param {Element} el Element for which to trigger the event.\n * @param {String} event Event ID.\n * @param {Event} originalEvent The original event. Should be optional of course, but currently is not, due\n * to the jsPlumb use case that caused this method to be added.\n * @param {Object} [payload] Optional object to set as `payload` on the generated event; useful for message passing.\n * @return {Mottle} The current Mottle instance; you can chain this method.\n */\n this.trigger = function (el, event, originalEvent, payload) {\n // MouseEvent undefined in old IE; that's how we know it's a mouse event. A fine Microsoft paradox.\n var originalIsMouse = isMouseDevice && (typeof MouseEvent === \"undefined\" || originalEvent == null || originalEvent.constructor === MouseEvent);\n\n var eventToBind = (isTouchDevice && !isMouseDevice && touchMap[event]) ? touchMap[event] : event,\n bindingAMouseEvent = !(isTouchDevice && !isMouseDevice && touchMap[event]);\n\n var pl = _pageLocation(originalEvent), sl = _screenLocation(originalEvent), cl = _clientLocation(originalEvent);\n _each(el, function () {\n var _el = _gel(this), evt;\n originalEvent = originalEvent || {\n screenX: sl[0],\n screenY: sl[1],\n clientX: cl[0],\n clientY: cl[1]\n };\n\n var _decorate = function (_evt) {\n if (payload) _evt.payload = payload;\n };\n\n var eventGenerators = {\n \"TouchEvent\": function (evt) {\n\n var touchList = _touchAndList(window, _el, 0, pl[0], pl[1], sl[0], sl[1], cl[0], cl[1]),\n init = evt.initTouchEvent || evt.initEvent;\n\n init(eventToBind, true, true, window, null, sl[0], sl[1],\n cl[0], cl[1], false, false, false, false,\n touchList, touchList, touchList, 1, 0);\n },\n \"MouseEvents\": function (evt) {\n evt.initMouseEvent(eventToBind, true, true, window, 0,\n sl[0], sl[1],\n cl[0], cl[1],\n false, false, false, false, 1, _el);\n }\n };\n\n if (document.createEvent) {\n\n var ite = !bindingAMouseEvent && !originalIsMouse && (isTouchDevice && touchMap[event]),\n evtName = ite ? \"TouchEvent\" : \"MouseEvents\";\n\n evt = document.createEvent(evtName);\n eventGenerators[evtName](evt);\n _decorate(evt);\n _el.dispatchEvent(evt);\n }\n else if (document.createEventObject) {\n evt = document.createEventObject();\n evt.eventType = evt.eventName = eventToBind;\n evt.screenX = sl[0];\n evt.screenY = sl[1];\n evt.clientX = cl[0];\n evt.clientY = cl[1];\n _decorate(evt);\n _el.fireEvent('on' + eventToBind, evt);\n }\n });\n return this;\n }\n };\n\n /**\n * Static method to assist in 'consuming' an element: uses `stopPropagation` where available, or sets\n * `e.returnValue=false` where it is not.\n * @method Mottle.consume\n * @param {Event} e Event to consume\n * @param {Boolean} [doNotPreventDefault=false] If true, does not call `preventDefault()` on the event.\n */\n root.Mottle.consume = function (e, doNotPreventDefault) {\n if (e.stopPropagation)\n e.stopPropagation();\n else\n e.returnValue = false;\n\n if (!doNotPreventDefault && e.preventDefault)\n e.preventDefault();\n };\n\n /**\n * Gets the page location corresponding to the given event. For touch events this means get the page location of the first touch.\n * @method Mottle.pageLocation\n * @param {Event} e Event to get page location for.\n * @return {Number[]} [left, top] for the given event.\n */\n root.Mottle.pageLocation = _pageLocation;\n\n /**\n * Forces touch events to be turned \"on\". Useful for testing: even if you don't have a touch device, you can still\n * trigger a touch event when this is switched on and it will be captured and acted on.\n * @method setForceTouchEvents\n * @param {Boolean} value If true, force touch events to be on.\n */\n root.Mottle.setForceTouchEvents = function (value) {\n isTouchDevice = value;\n };\n\n /**\n * Forces mouse events to be turned \"on\". Useful for testing: even if you don't have a mouse, you can still\n * trigger a mouse event when this is switched on and it will be captured and acted on.\n * @method setForceMouseEvents\n * @param {Boolean} value If true, force mouse events to be on.\n */\n root.Mottle.setForceMouseEvents = function (value) {\n isMouseDevice = value;\n };\n\n root.Mottle.version = \"0.8.0\";\n\n if (typeof exports !== \"undefined\") {\n exports.Mottle = root.Mottle;\n }\n\n}).call(typeof window === \"undefined\" ? this : window);\n\n/**\n drag/drop functionality for use with jsPlumb but with\n no knowledge of jsPlumb. supports multiple scopes (separated by whitespace), dragging\n multiple elements, constrain to parent, drop filters, drag start filters, custom\n css classes.\n\n a lot of the functionality of this script is expected to be plugged in:\n\n addClass\n removeClass\n\n addEvent\n removeEvent\n\n getPosition\n setPosition\n getSize\n\n indexOf\n intersects\n\n the name came from here:\n\n http://mrsharpoblunto.github.io/foswig.js/\n\n copyright 2016 jsPlumb\n */\n\n;(function() {\n\n \"use strict\";\n var root = this;\n\n var _suggest = function(list, item, head) {\n if (list.indexOf(item) === -1) {\n head ? list.unshift(item) : list.push(item);\n return true;\n }\n return false;\n };\n\n var _vanquish = function(list, item) {\n var idx = list.indexOf(item);\n if (idx !== -1) list.splice(idx, 1);\n };\n\n var _difference = function(l1, l2) {\n var d = [];\n for (var i = 0; i < l1.length; i++) {\n if (l2.indexOf(l1[i]) === -1)\n d.push(l1[i]);\n }\n return d;\n };\n\n var _isString = function(f) {\n return f == null ? false : (typeof f === \"string\" || f.constructor === String);\n };\n\n var getOffsetRect = function (elem) {\n // (1)\n var box = elem.getBoundingClientRect(),\n body = document.body,\n docElem = document.documentElement,\n // (2)\n scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop,\n scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft,\n // (3)\n clientTop = docElem.clientTop || body.clientTop || 0,\n clientLeft = docElem.clientLeft || body.clientLeft || 0,\n // (4)\n top = box.top + scrollTop - clientTop,\n left = box.left + scrollLeft - clientLeft;\n\n return { top: Math.round(top), left: Math.round(left) };\n };\n\n var matchesSelector = function(el, selector, ctx) {\n ctx = ctx || el.parentNode;\n var possibles = ctx.querySelectorAll(selector);\n for (var i = 0; i < possibles.length; i++) {\n if (possibles[i] === el)\n return true;\n }\n return false;\n };\n\n var findDelegateElement = function(parentElement, childElement, selector) {\n if (matchesSelector(childElement, selector, parentElement)) {\n return childElement;\n } else {\n var currentParent = childElement.parentNode;\n while (currentParent != null && currentParent !== parentElement) {\n if (matchesSelector(currentParent, selector, parentElement)) {\n return currentParent;\n } else {\n currentParent = currentParent.parentNode;\n }\n }\n }\n };\n\n var iev = (function() {\n var rv = -1;\n if (navigator.appName === 'Microsoft Internet Explorer') {\n var ua = navigator.userAgent,\n re = new RegExp(\"MSIE ([0-9]{1,}[\\.0-9]{0,})\");\n if (re.exec(ua) != null)\n rv = parseFloat(RegExp.$1);\n }\n return rv;\n })(),\n DEFAULT_GRID_X = 10,\n DEFAULT_GRID_Y = 10,\n isIELT9 = iev > -1 && iev < 9,\n isIE9 = iev === 9,\n _pl = function(e) {\n if (isIELT9) {\n return [ e.clientX + document.documentElement.scrollLeft, e.clientY + document.documentElement.scrollTop ];\n }\n else {\n var ts = _touches(e), t = _getTouch(ts, 0);\n // for IE9 pageX might be null if the event was synthesized. We try for pageX/pageY first,\n // falling back to clientX/clientY if necessary. In every other browser we want to use pageX/pageY.\n return isIE9 ? [t.pageX || t.clientX, t.pageY || t.clientY] : [t.pageX, t.pageY];\n }\n },\n _getTouch = function(touches, idx) { return touches.item ? touches.item(idx) : touches[idx]; },\n _touches = function(e) {\n return e.touches && e.touches.length > 0 ? e.touches :\n e.changedTouches && e.changedTouches.length > 0 ? e.changedTouches :\n e.targetTouches && e.targetTouches.length > 0 ? e.targetTouches :\n [ e ];\n },\n _classes = {\n draggable:\"katavorio-draggable\", // draggable elements\n droppable:\"katavorio-droppable\", // droppable elements\n drag : \"katavorio-drag\", // elements currently being dragged\n selected:\"katavorio-drag-selected\", // elements in current drag selection\n active : \"katavorio-drag-active\", // droppables that are targets of a currently dragged element\n hover : \"katavorio-drag-hover\", // droppables over which a matching drag element is hovering\n noSelect : \"katavorio-drag-no-select\", // added to the body to provide a hook to suppress text selection\n ghostProxy:\"katavorio-ghost-proxy\", // added to a ghost proxy element in use when a drag has exited the bounds of its parent.\n clonedDrag:\"katavorio-clone-drag\" // added to a node that is a clone of an element created at the start of a drag\n },\n _defaultScope = \"katavorio-drag-scope\",\n _events = [ \"stop\", \"start\", \"drag\", \"drop\", \"over\", \"out\", \"beforeStart\" ],\n _devNull = function() {},\n _true = function() { return true; },\n _foreach = function(l, fn, from) {\n for (var i = 0; i < l.length; i++) {\n if (l[i] != from)\n fn(l[i]);\n }\n },\n _setDroppablesActive = function(dd, val, andHover, drag) {\n _foreach(dd, function(e) {\n e.setActive(val);\n if (val) e.updatePosition();\n if (andHover) e.setHover(drag, val);\n });\n },\n _each = function(obj, fn) {\n if (obj == null) return;\n obj = !_isString(obj) && (obj.tagName == null && obj.length != null) ? obj : [ obj ];\n for (var i = 0; i < obj.length; i++)\n fn.apply(obj[i], [ obj[i] ]);\n },\n _consume = function(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n e.preventDefault();\n }\n else {\n e.returnValue = false;\n }\n },\n _defaultInputFilterSelector = \"input,textarea,select,button,option\",\n //\n // filters out events on all input elements, like textarea, checkbox, input, select.\n _inputFilter = function(e, el, _katavorio) {\n var t = e.srcElement || e.target;\n return !matchesSelector(t, _katavorio.getInputFilterSelector(), el);\n };\n\n var Super = function(el, params, css, scope) {\n this.params = params || {};\n this.el = el;\n this.params.addClass(this.el, this._class);\n this.uuid = _uuid();\n var enabled = true;\n this.setEnabled = function(e) { enabled = e; };\n this.isEnabled = function() { return enabled; };\n this.toggleEnabled = function() { enabled = !enabled; };\n this.setScope = function(scopes) {\n this.scopes = scopes ? scopes.split(/\\s+/) : [ scope ];\n };\n this.addScope = function(scopes) {\n var m = {};\n _each(this.scopes, function(s) { m[s] = true;});\n _each(scopes ? scopes.split(/\\s+/) : [], function(s) { m[s] = true;});\n this.scopes = [];\n for (var i in m) this.scopes.push(i);\n };\n this.removeScope = function(scopes) {\n var m = {};\n _each(this.scopes, function(s) { m[s] = true;});\n _each(scopes ? scopes.split(/\\s+/) : [], function(s) { delete m[s];});\n this.scopes = [];\n for (var i in m) this.scopes.push(i);\n };\n this.toggleScope = function(scopes) {\n var m = {};\n _each(this.scopes, function(s) { m[s] = true;});\n _each(scopes ? scopes.split(/\\s+/) : [], function(s) {\n if (m[s]) delete m[s];\n else m[s] = true;\n });\n this.scopes = [];\n for (var i in m) this.scopes.push(i);\n };\n this.setScope(params.scope);\n this.k = params.katavorio;\n return params.katavorio;\n };\n\n var TRUE = function() { return true; };\n var FALSE = function() { return false; };\n\n var Drag = function(el, params, css, scope) {\n this._class = css.draggable;\n var k = Super.apply(this, arguments);\n this.rightButtonCanDrag = this.params.rightButtonCanDrag;\n var downAt = [0,0], posAtDown = null, pagePosAtDown = null, pageDelta = [0,0], moving = false, initialScroll = [0,0],\n consumeStartEvent = this.params.consumeStartEvent !== false,\n dragEl = this.el,\n clone = this.params.clone,\n scroll = this.params.scroll,\n _multipleDrop = params.multipleDrop !== false,\n isConstrained = false,\n useGhostProxy = params.ghostProxy === true ? TRUE : params.ghostProxy && typeof params.ghostProxy === \"function\" ? params.ghostProxy : FALSE,\n ghostProxy = function(el) { return el.cloneNode(true); },\n selector = params.selector,\n elementToDrag = null;\n\n var snapThreshold = params.snapThreshold,\n _snap = function(pos, gridX, gridY, thresholdX, thresholdY) {\n var _dx = Math.floor(pos[0] / gridX),\n _dxl = gridX * _dx,\n _dxt = _dxl + gridX,\n _x = Math.abs(pos[0] - _dxl) <= thresholdX ? _dxl : Math.abs(_dxt - pos[0]) <= thresholdX ? _dxt : pos[0];\n\n var _dy = Math.floor(pos[1] / gridY),\n _dyl = gridY * _dy,\n _dyt = _dyl + gridY,\n _y = Math.abs(pos[1] - _dyl) <= thresholdY ? _dyl : Math.abs(_dyt - pos[1]) <= thresholdY ? _dyt : pos[1];\n\n return [ _x, _y];\n };\n\n this.posses = [];\n this.posseRoles = {};\n\n this.toGrid = function(pos) {\n if (this.params.grid == null) {\n return pos;\n }\n else {\n var tx = this.params.grid ? this.params.grid[0] / 2 : snapThreshold ? snapThreshold : DEFAULT_GRID_X / 2,\n ty = this.params.grid ? this.params.grid[1] / 2 : snapThreshold ? snapThreshold : DEFAULT_GRID_Y / 2;\n\n return _snap(pos, this.params.grid[0], this.params.grid[1], tx, ty);\n }\n };\n\n this.snap = function(x, y) {\n if (dragEl == null) return;\n x = x || (this.params.grid ? this.params.grid[0] : DEFAULT_GRID_X);\n y = y || (this.params.grid ? this.params.grid[1] : DEFAULT_GRID_Y);\n var p = this.params.getPosition(dragEl),\n tx = this.params.grid ? this.params.grid[0] / 2 : snapThreshold,\n ty = this.params.grid ? this.params.grid[1] / 2 : snapThreshold;\n\n this.params.setPosition(dragEl, _snap(p, x, y, tx, ty));\n };\n\n this.setUseGhostProxy = function(val) {\n useGhostProxy = val ? TRUE : FALSE;\n };\n\n var constrain;\n var negativeFilter = function(pos) {\n return (params.allowNegative === false) ? [ Math.max (0, pos[0]), Math.max(0, pos[1]) ] : pos;\n };\n\n var _setConstrain = function(value) {\n constrain = typeof value === \"function\" ? value : value ? function(pos, dragEl, _constrainRect, _size) {\n return negativeFilter([\n Math.max(0, Math.min(_constrainRect.w - _size[0], pos[0])),\n Math.max(0, Math.min(_constrainRect.h - _size[1], pos[1]))\n ]);\n }.bind(this) : function(pos) { return negativeFilter(pos); };\n }.bind(this);\n\n _setConstrain(typeof this.params.constrain === \"function\" ? this.params.constrain : (this.params.constrain || this.params.containment));\n\n\n /**\n * Sets whether or not the Drag is constrained. A value of 'true' means constrain to parent bounds; a function\n * will be executed and returns true if the position is allowed.\n * @param value\n */\n this.setConstrain = function(value) {\n _setConstrain(value);\n };\n\n var revertFunction;\n /**\n * Sets a function to call on drag stop, which, if it returns true, indicates that the given element should\n * revert to its position before the previous drag.\n * @param fn\n */\n this.setRevert = function(fn) {\n revertFunction = fn;\n };\n\n var _assignId = function(obj) {\n if (typeof obj === \"function\") {\n obj._katavorioId = _uuid();\n return obj._katavorioId;\n } else {\n return obj;\n }\n },\n // a map of { spec -> [ fn, exclusion ] } entries.\n _filters = {},\n _testFilter = function(e) {\n for (var key in _filters) {\n var f = _filters[key];\n var rv = f[0](e);\n if (f[1]) rv = !rv;\n if (!rv) return false;\n }\n return true;\n },\n _setFilter = this.setFilter = function(f, _exclude) {\n if (f) {\n var key = _assignId(f);\n _filters[key] = [\n function(e) {\n var t = e.srcElement || e.target, m;\n if (_isString(f)) {\n m = matchesSelector(t, f, el);\n }\n else if (typeof f === \"function\") {\n m = f(e, el);\n }\n return m;\n },\n _exclude !== false\n ];\n\n }\n },\n _addFilter = this.addFilter = _setFilter,\n _removeFilter = this.removeFilter = function(f) {\n var key = typeof f === \"function\" ? f._katavorioId : f;\n delete _filters[key];\n };\n\n this.clearAllFilters = function() {\n _filters = {};\n };\n\n this.canDrag = this.params.canDrag || _true;\n\n var constrainRect,\n matchingDroppables = [],\n intersectingDroppables = [];\n\n this.downListener = function(e) {\n var isNotRightClick = this.rightButtonCanDrag || (e.which !== 3 && e.button !== 2);\n if (isNotRightClick && this.isEnabled() && this.canDrag()) {\n\n var _f = _testFilter(e) && _inputFilter(e, this.el, this.k);\n if (_f) {\n\n if (selector) {\n elementToDrag = findDelegateElement(this.el, e.target || e.srcElement, selector);\n if(elementToDrag == null) {\n return;\n }\n }\n else {\n elementToDrag = this.el;\n }\n\n if (clone) {\n dragEl = elementToDrag.cloneNode(true);\n this.params.addClass(dragEl, _classes.clonedDrag);\n\n dragEl.setAttribute(\"id\", null);\n dragEl.style.position = \"absolute\";\n\n if (this.params.parent != null) {\n var p = this.params.getPosition(this.el);\n dragEl.style.left = p[0] + \"px\";\n dragEl.style.top = p[1] + \"px\";\n this.params.parent.appendChild(dragEl);\n } else {\n // the clone node is added to the body; getOffsetRect gives us a value\n // relative to the body.\n var b = getOffsetRect(elementToDrag);\n dragEl.style.left = b.left + \"px\";\n dragEl.style.top = b.top + \"px\";\n\n document.body.appendChild(dragEl);\n }\n\n } else {\n dragEl = elementToDrag;\n }\n\n consumeStartEvent && _consume(e);\n downAt = _pl(e);\n if (dragEl && dragEl.parentNode)\n {\n initialScroll = [dragEl.parentNode.scrollLeft, dragEl.parentNode.scrollTop];\n }\n //\n this.params.bind(document, \"mousemove\", this.moveListener);\n this.params.bind(document, \"mouseup\", this.upListener);\n k.markSelection(this);\n k.markPosses(this);\n this.params.addClass(document.body, css.noSelect);\n _dispatch(\"beforeStart\", {el:this.el, pos:posAtDown, e:e, drag:this});\n }\n else if (this.params.consumeFilteredEvents) {\n _consume(e);\n }\n }\n }.bind(this);\n\n this.moveListener = function(e) {\n if (downAt) {\n if (!moving) {\n var _continue = _dispatch(\"start\", {el:this.el, pos:posAtDown, e:e, drag:this});\n if (_continue !== false) {\n if (!downAt) {\n return;\n }\n this.mark(true);\n moving = true;\n } else {\n this.abort();\n }\n }\n\n // it is possible that the start event caused the drag to be aborted. So we check\n // again that we are currently dragging.\n if (downAt) {\n intersectingDroppables.length = 0;\n var pos = _pl(e), dx = pos[0] - downAt[0], dy = pos[1] - downAt[1],\n z = this.params.ignoreZoom ? 1 : k.getZoom();\n if (dragEl && dragEl.parentNode)\n {\n dx += dragEl.parentNode.scrollLeft - initialScroll[0];\n dy += dragEl.parentNode.scrollTop - initialScroll[1];\n }\n dx /= z;\n dy /= z;\n this.moveBy(dx, dy, e);\n k.updateSelection(dx, dy, this);\n k.updatePosses(dx, dy, this);\n }\n }\n }.bind(this);\n\n this.upListener = function(e) {\n if (downAt) {\n downAt = null;\n this.params.unbind(document, \"mousemove\", this.moveListener);\n this.params.unbind(document, \"mouseup\", this.upListener);\n this.params.removeClass(document.body, css.noSelect);\n this.unmark(e);\n k.unmarkSelection(this, e);\n k.unmarkPosses(this, e);\n this.stop(e);\n\n //k.notifySelectionDragStop(this, e); removed in 1.1.0 under the \"leave it for one release in case it breaks\" rule.\n // it isnt necessary to fire this as the normal stop event now includes a `selection` member that has every dragged element.\n // firing this event causes consumers who use the `selection` array to process a lot more drag stop events than is necessary\n\n k.notifyPosseDragStop(this, e);\n moving = false;\n if (clone) {\n dragEl && dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n dragEl = null;\n }\n\n intersectingDroppables.length = 0;\n\n if (revertFunction && revertFunction(this.el, this.params.getPosition(this.el)) === true) {\n this.params.setPosition(this.el, posAtDown);\n _dispatch(\"revert\", this.el);\n }\n }\n }.bind(this);\n\n this.getFilters = function() { return _filters; };\n\n this.abort = function() {\n if (downAt != null) {\n this.upListener();\n }\n };\n\n /**\n * Returns the element that was last dragged. This may be some original element from the DOM, or if `clone` is\n * set, then its actually a copy of some original DOM element. In some client calls to this method, it is the\n * actual element that was dragged that is desired. In others, it is the original DOM element that the user\n * wishes to get - in which case, pass true for `retrieveOriginalElement`.\n *\n * @returns {*}\n */\n this.getDragElement = function(retrieveOriginalElement) {\n return retrieveOriginalElement ? elementToDrag || this.el : dragEl || this.el;\n };\n\n var listeners = {\"start\":[], \"drag\":[], \"stop\":[], \"over\":[], \"out\":[], \"beforeStart\":[], \"revert\":[] };\n if (params.events.start) listeners.start.push(params.events.start);\n if (params.events.beforeStart) listeners.beforeStart.push(params.events.beforeStart);\n if (params.events.stop) listeners.stop.push(params.events.stop);\n if (params.events.drag) listeners.drag.push(params.events.drag);\n if (params.events.revert) listeners.revert.push(params.events.revert);\n\n this.on = function(evt, fn) {\n if (listeners[evt]) listeners[evt].push(fn);\n };\n\n this.off = function(evt, fn) {\n if (listeners[evt]) {\n var l = [];\n for (var i = 0; i < listeners[evt].length; i++) {\n if (listeners[evt][i] !== fn) l.push(listeners[evt][i]);\n }\n listeners[evt] = l;\n }\n };\n\n var _dispatch = function(evt, value) {\n var result = null;\n if (listeners[evt]) {\n for (var i = 0; i < listeners[evt].length; i++) {\n try {\n var v = listeners[evt][i](value);\n if (v != null) {\n result = v;\n }\n }\n catch (e) { }\n }\n }\n return result;\n };\n\n this.notifyStart = function(e) {\n _dispatch(\"start\", {el:this.el, pos:this.params.getPosition(dragEl), e:e, drag:this});\n };\n\n this.stop = function(e, force) {\n if (force || moving) {\n var positions = [],\n sel = k.getSelection(),\n dPos = this.params.getPosition(dragEl);\n\n if (sel.length > 1) {\n for (var i = 0; i < sel.length; i++) {\n var p = this.params.getPosition(sel[i].el);\n positions.push([ sel[i].el, { left: p[0], top: p[1] }, sel[i] ]);\n }\n }\n else {\n positions.push([ dragEl, {left:dPos[0], top:dPos[1]}, this ]);\n }\n\n _dispatch(\"stop\", {\n el: dragEl,\n pos: ghostProxyOffsets || dPos,\n finalPos:dPos,\n e: e,\n drag: this,\n selection:positions\n });\n }\n };\n\n this.mark = function(andNotify) {\n posAtDown = this.params.getPosition(dragEl);\n pagePosAtDown = this.params.getPosition(dragEl, true);\n pageDelta = [pagePosAtDown[0] - posAtDown[0], pagePosAtDown[1] - posAtDown[1]];\n this.size = this.params.getSize(dragEl);\n matchingDroppables = k.getMatchingDroppables(this);\n _setDroppablesActive(matchingDroppables, true, false, this);\n this.params.addClass(dragEl, this.params.dragClass || css.drag);\n\n var cs;\n if (this.params.getConstrainingRectangle) {\n cs = this.params.getConstrainingRectangle(dragEl)\n } else {\n cs = this.params.getSize(dragEl.parentNode);\n }\n constrainRect = {w: cs[0], h: cs[1]};\n\n if (andNotify) {\n k.notifySelectionDragStart(this);\n }\n };\n var ghostProxyOffsets;\n this.unmark = function(e, doNotCheckDroppables) {\n _setDroppablesActive(matchingDroppables, false, true, this);\n\n if (isConstrained && useGhostProxy(elementToDrag)) {\n ghostProxyOffsets = [dragEl.offsetLeft, dragEl.offsetTop];\n elementToDrag.parentNode.removeChild(dragEl);\n dragEl = elementToDrag;\n }\n else {\n ghostProxyOffsets = null;\n }\n\n this.params.removeClass(dragEl, this.params.dragClass || css.drag);\n matchingDroppables.length = 0;\n isConstrained = false;\n if (!doNotCheckDroppables) {\n if (intersectingDroppables.length > 0 && ghostProxyOffsets) {\n params.setPosition(elementToDrag, ghostProxyOffsets);\n }\n intersectingDroppables.sort(_rankSort);\n for (var i = 0; i < intersectingDroppables.length; i++) {\n var retVal = intersectingDroppables[i].drop(this, e);\n if (retVal === true) break;\n }\n }\n };\n this.moveBy = function(dx, dy, e) {\n intersectingDroppables.length = 0;\n var desiredLoc = this.toGrid([posAtDown[0] + dx, posAtDown[1] + dy]),\n cPos = constrain(desiredLoc, dragEl, constrainRect, this.size);\n\n if (useGhostProxy(this.el)) {\n if (desiredLoc[0] !== cPos[0] || desiredLoc[1] !== cPos[1]) {\n if (!isConstrained) {\n var gp = ghostProxy(elementToDrag);\n params.addClass(gp, _classes.ghostProxy);\n elementToDrag.parentNode.appendChild(gp);\n dragEl = gp;\n isConstrained = true;\n }\n cPos = desiredLoc;\n }\n else {\n if (isConstrained) {\n elementToDrag.parentNode.removeChild(dragEl);\n dragEl = elementToDrag;\n isConstrained = false;\n }\n }\n }\n\n var rect = { x:cPos[0], y:cPos[1], w:this.size[0], h:this.size[1]},\n pageRect = { x:rect.x + pageDelta[0], y:rect.y + pageDelta[1], w:rect.w, h:rect.h},\n focusDropElement = null;\n\n this.params.setPosition(dragEl, cPos);\n for (var i = 0; i < matchingDroppables.length; i++) {\n var r2 = { x:matchingDroppables[i].pagePosition[0], y:matchingDroppables[i].pagePosition[1], w:matchingDroppables[i].size[0], h:matchingDroppables[i].size[1]};\n if (this.params.intersects(pageRect, r2) && (_multipleDrop || focusDropElement == null || focusDropElement === matchingDroppables[i].el) && matchingDroppables[i].canDrop(this)) {\n if (!focusDropElement) focusDropElement = matchingDroppables[i].el;\n intersectingDroppables.push(matchingDroppables[i]);\n matchingDroppables[i].setHover(this, true, e);\n }\n else if (matchingDroppables[i].isHover()) {\n matchingDroppables[i].setHover(this, false, e);\n }\n }\n\n _dispatch(\"drag\", {el:this.el, pos:cPos, e:e, drag:this});\n\n /* test to see if the parent needs to be scrolled (future)\n if (scroll) {\n var pnsl = dragEl.parentNode.scrollLeft, pnst = dragEl.parentNode.scrollTop;\n console.log(\"scroll!\", pnsl, pnst);\n }*/\n };\n this.destroy = function() {\n this.params.unbind(this.el, \"mousedown\", this.downListener);\n this.params.unbind(document, \"mousemove\", this.moveListener);\n this.params.unbind(document, \"mouseup\", this.upListener);\n this.downListener = null;\n this.upListener = null;\n this.moveListener = null;\n };\n\n // init:register mousedown, and perhaps set a filter\n this.params.bind(this.el, \"mousedown\", this.downListener);\n\n // if handle provded, use that. otherwise, try to set a filter.\n // note that a `handle` selector always results in filterExclude being set to false, ie.\n // the selector defines the handle element(s).\n if (this.params.handle)\n _setFilter(this.params.handle, false);\n else\n _setFilter(this.params.filter, this.params.filterExclude);\n };\n\n var Drop = function(el, params, css, scope) {\n this._class = css.droppable;\n this.params = params || {};\n this.rank = params.rank || 0;\n this._activeClass = this.params.activeClass || css.active;\n this._hoverClass = this.params.hoverClass || css.hover;\n Super.apply(this, arguments);\n var hover = false;\n this.allowLoopback = this.params.allowLoopback !== false;\n\n this.setActive = function(val) {\n this.params[val ? \"addClass\" : \"removeClass\"](this.el, this._activeClass);\n };\n\n this.updatePosition = function() {\n this.position = this.params.getPosition(this.el);\n this.pagePosition = this.params.getPosition(this.el, true);\n this.size = this.params.getSize(this.el);\n };\n\n this.canDrop = this.params.canDrop || function(drag) {\n return true;\n };\n\n this.isHover = function() { return hover; };\n\n this.setHover = function(drag, val, e) {\n // if turning off hover but this was not the drag that caused the hover, ignore.\n if (val || this.el._katavorioDragHover == null || this.el._katavorioDragHover === drag.el._katavorio) {\n this.params[val ? \"addClass\" : \"removeClass\"](this.el, this._hoverClass);\n this.el._katavorioDragHover = val ? drag.el._katavorio : null;\n if (hover !== val) {\n this.params.events[val ? \"over\" : \"out\"]({el: this.el, e: e, drag: drag, drop: this});\n }\n hover = val;\n }\n };\n\n /**\n * A drop event. `drag` is the corresponding Drag object, which may be a Drag for some specific element, or it\n * may be a Drag on some element acting as a delegate for elements contained within it.\n * @param drag\n * @param event\n * @returns {*}\n */\n this.drop = function(drag, event) {\n return this.params.events[\"drop\"]({ drag:drag, e:event, drop:this });\n };\n\n this.destroy = function() {\n this._class = null;\n this._activeClass = null;\n this._hoverClass = null;\n hover = null;\n };\n };\n\n var _uuid = function() {\n return ('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n }));\n };\n\n var _rankSort = function(a,b) {\n return a.rank < b.rank ? 1 : a.rank > b.rank ? -1 : 0;\n };\n\n var _gel = function(el) {\n if (el == null) return null;\n el = (typeof el === \"string\" || el.constructor === String) ? document.getElementById(el) : el;\n if (el == null) return null;\n el._katavorio = el._katavorio || _uuid();\n return el;\n };\n\n root.Katavorio = function(katavorioParams) {\n\n var _selection = [],\n _selectionMap = {};\n\n this._dragsByScope = {};\n this._dropsByScope = {};\n var _zoom = 1,\n _reg = function(obj, map) {\n _each(obj, function(_obj) {\n for(var i = 0; i < _obj.scopes.length; i++) {\n map[_obj.scopes[i]] = map[_obj.scopes[i]] || [];\n map[_obj.scopes[i]].push(_obj);\n }\n });\n },\n _unreg = function(obj, map) {\n var c = 0;\n _each(obj, function(_obj) {\n for(var i = 0; i < _obj.scopes.length; i++) {\n if (map[_obj.scopes[i]]) {\n var idx = katavorioParams.indexOf(map[_obj.scopes[i]], _obj);\n if (idx !== -1) {\n map[_obj.scopes[i]].splice(idx, 1);\n c++;\n }\n }\n }\n });\n\n return c > 0 ;\n },\n _getMatchingDroppables = this.getMatchingDroppables = function(drag) {\n var dd = [], _m = {};\n for (var i = 0; i < drag.scopes.length; i++) {\n var _dd = this._dropsByScope[drag.scopes[i]];\n if (_dd) {\n for (var j = 0; j < _dd.length; j++) {\n if (_dd[j].canDrop(drag) && !_m[_dd[j].uuid] && (_dd[j].allowLoopback || _dd[j].el !== drag.el)) {\n _m[_dd[j].uuid] = true;\n dd.push(_dd[j]);\n }\n }\n }\n }\n dd.sort(_rankSort);\n return dd;\n },\n _prepareParams = function(p) {\n p = p || {};\n var _p = {\n events:{}\n }, i;\n for (i in katavorioParams) _p[i] = katavorioParams[i];\n for (i in p) _p[i] = p[i];\n // events\n\n for (i = 0; i < _events.length; i++) {\n _p.events[_events[i]] = p[_events[i]] || _devNull;\n }\n _p.katavorio = this;\n return _p;\n }.bind(this),\n _mistletoe = function(existingDrag, params) {\n for (var i = 0; i < _events.length; i++) {\n if (params[_events[i]]) {\n existingDrag.on(_events[i], params[_events[i]]);\n }\n }\n }.bind(this),\n _css = {},\n overrideCss = katavorioParams.css || {},\n _scope = katavorioParams.scope || _defaultScope;\n\n // prepare map of css classes based on defaults frst, then optional overrides\n for (var i in _classes) _css[i] = _classes[i];\n for (var i in overrideCss) _css[i] = overrideCss[i];\n\n var inputFilterSelector = katavorioParams.inputFilterSelector || _defaultInputFilterSelector;\n /**\n * Gets the selector identifying which input elements to filter from drag events.\n * @method getInputFilterSelector\n * @return {String} Current input filter selector.\n */\n this.getInputFilterSelector = function() { return inputFilterSelector; };\n\n /**\n * Sets the selector identifying which input elements to filter from drag events.\n * @method setInputFilterSelector\n * @param {String} selector Input filter selector to set.\n * @return {Katavorio} Current instance; method may be chained.\n */\n this.setInputFilterSelector = function(selector) {\n inputFilterSelector = selector;\n return this;\n };\n\n /**\n * Either makes the given element draggable, or identifies it as an element inside which some identified list\n * of elements may be draggable.\n * @param el\n * @param params\n * @returns {Array}\n */\n this.draggable = function(el, params) {\n var o = [];\n _each(el, function (_el) {\n _el = _gel(_el);\n if (_el != null) {\n if (_el._katavorioDrag == null) {\n var p = _prepareParams(params);\n _el._katavorioDrag = new Drag(_el, p, _css, _scope);\n _reg(_el._katavorioDrag, this._dragsByScope);\n o.push(_el._katavorioDrag);\n katavorioParams.addClass(_el, _css.draggable);\n }\n else {\n _mistletoe(_el._katavorioDrag, params);\n }\n }\n }.bind(this));\n return o;\n };\n\n this.droppable = function(el, params) {\n var o = [];\n _each(el, function(_el) {\n _el = _gel(_el);\n if (_el != null) {\n var drop = new Drop(_el, _prepareParams(params), _css, _scope);\n _el._katavorioDrop = _el._katavorioDrop || [];\n _el._katavorioDrop.push(drop);\n _reg(drop, this._dropsByScope);\n o.push(drop);\n katavorioParams.addClass(_el, _css.droppable);\n }\n }.bind(this));\n return o;\n };\n\n /**\n * @name Katavorio#select\n * @function\n * @desc Adds an element to the current selection (for multiple node drag)\n * @param {Element|String} DOM element - or id of the element - to add.\n */\n this.select = function(el) {\n _each(el, function() {\n var _el = _gel(this);\n if (_el && _el._katavorioDrag) {\n if (!_selectionMap[_el._katavorio]) {\n _selection.push(_el._katavorioDrag);\n _selectionMap[_el._katavorio] = [ _el, _selection.length - 1 ];\n katavorioParams.addClass(_el, _css.selected);\n }\n }\n });\n return this;\n };\n\n /**\n * @name Katavorio#deselect\n * @function\n * @desc Removes an element from the current selection (for multiple node drag)\n * @param {Element|String} DOM element - or id of the element - to remove.\n */\n this.deselect = function(el) {\n _each(el, function() {\n var _el = _gel(this);\n if (_el && _el._katavorio) {\n var e = _selectionMap[_el._katavorio];\n if (e) {\n var _s = [];\n for (var i = 0; i < _selection.length; i++)\n if (_selection[i].el !== _el) _s.push(_selection[i]);\n _selection = _s;\n delete _selectionMap[_el._katavorio];\n katavorioParams.removeClass(_el, _css.selected);\n }\n }\n });\n return this;\n };\n\n this.deselectAll = function() {\n for (var i in _selectionMap) {\n var d = _selectionMap[i];\n katavorioParams.removeClass(d[0], _css.selected);\n }\n\n _selection.length = 0;\n _selectionMap = {};\n };\n\n this.markSelection = function(drag) {\n _foreach(_selection, function(e) { e.mark(); }, drag);\n };\n\n this.markPosses = function(drag) {\n if (drag.posses) {\n _each(drag.posses, function(p) {\n if (drag.posseRoles[p] && _posses[p]) {\n _foreach(_posses[p].members, function (d) {\n d.mark();\n }, drag);\n }\n })\n }\n };\n\n this.unmarkSelection = function(drag, event) {\n _foreach(_selection, function(e) { e.unmark(event); }, drag);\n };\n\n this.unmarkPosses = function(drag, event) {\n if (drag.posses) {\n _each(drag.posses, function(p) {\n if (drag.posseRoles[p] && _posses[p]) {\n _foreach(_posses[p].members, function (d) {\n d.unmark(event, true);\n }, drag);\n }\n });\n }\n };\n\n this.getSelection = function() { return _selection.slice(0); };\n\n this.updateSelection = function(dx, dy, drag) {\n _foreach(_selection, function(e) { e.moveBy(dx, dy); }, drag);\n };\n\n var _posseAction = function(fn, drag) {\n if (drag.posses) {\n _each(drag.posses, function(p) {\n if (drag.posseRoles[p] && _posses[p]) {\n _foreach(_posses[p].members, function (e) {\n fn(e);\n }, drag);\n }\n });\n }\n };\n\n this.updatePosses = function(dx, dy, drag) {\n _posseAction(function(e) { e.moveBy(dx, dy); }, drag);\n };\n\n this.notifyPosseDragStop = function(drag, evt) {\n _posseAction(function(e) { e.stop(evt, true); }, drag);\n };\n\n this.notifySelectionDragStop = function(drag, evt) {\n _foreach(_selection, function(e) { e.stop(evt, true); }, drag);\n };\n\n this.notifySelectionDragStart = function(drag, evt) {\n _foreach(_selection, function(e) { e.notifyStart(evt);}, drag);\n };\n\n this.setZoom = function(z) { _zoom = z; };\n this.getZoom = function() { return _zoom; };\n\n // does the work of changing scopes\n var _scopeManip = function(kObj, scopes, map, fn) {\n _each(kObj, function(_kObj) {\n _unreg(_kObj, map); // deregister existing scopes\n _kObj[fn](scopes); // set scopes\n _reg(_kObj, map); // register new ones\n });\n };\n\n _each([ \"set\", \"add\", \"remove\", \"toggle\"], function(v) {\n this[v + \"Scope\"] = function(el, scopes) {\n _scopeManip(el._katavorioDrag, scopes, this._dragsByScope, v + \"Scope\");\n _scopeManip(el._katavorioDrop, scopes, this._dropsByScope, v + \"Scope\");\n }.bind(this);\n this[v + \"DragScope\"] = function(el, scopes) {\n _scopeManip(el.constructor === Drag ? el : el._katavorioDrag, scopes, this._dragsByScope, v + \"Scope\");\n }.bind(this);\n this[v + \"DropScope\"] = function(el, scopes) {\n _scopeManip(el.constructor === Drop ? el : el._katavorioDrop, scopes, this._dropsByScope, v + \"Scope\");\n }.bind(this);\n }.bind(this));\n\n this.snapToGrid = function(x, y) {\n for (var s in this._dragsByScope) {\n _foreach(this._dragsByScope[s], function(d) { d.snap(x, y); });\n }\n };\n\n this.getDragsForScope = function(s) { return this._dragsByScope[s]; };\n this.getDropsForScope = function(s) { return this._dropsByScope[s]; };\n\n var _destroy = function(el, type, map) {\n el = _gel(el);\n if (el[type]) {\n\n // remove from selection, if present.\n var selIdx = _selection.indexOf(el[type]);\n if (selIdx >= 0) {\n _selection.splice(selIdx, 1);\n }\n\n if (_unreg(el[type], map)) {\n _each(el[type], function(kObj) { kObj.destroy() });\n }\n\n delete el[type];\n }\n };\n\n var _removeListener = function(el, type, evt, fn) {\n el = _gel(el);\n if (el[type]) {\n el[type].off(evt, fn);\n }\n };\n\n this.elementRemoved = function(el) {\n this.destroyDraggable(el);\n this.destroyDroppable(el);\n };\n\n /**\n * Either completely remove drag functionality from the given element, or remove a specific event handler. If you\n * call this method with a single argument - the element - all drag functionality is removed from it. Otherwise, if\n * you provide an event name and listener function, this function is de-registered (if found).\n * @param el Element to update\n * @param {string} [evt] Optional event name to unsubscribe\n * @param {Function} [fn] Optional function to unsubscribe\n */\n this.destroyDraggable = function(el, evt, fn) {\n if (arguments.length === 1) {\n _destroy(el, \"_katavorioDrag\", this._dragsByScope);\n } else {\n _removeListener(el, \"_katavorioDrag\", evt, fn);\n }\n };\n\n /**\n * Either completely remove drop functionality from the given element, or remove a specific event handler. If you\n * call this method with a single argument - the element - all drop functionality is removed from it. Otherwise, if\n * you provide an event name and listener function, this function is de-registered (if found).\n * @param el Element to update\n * @param {string} [evt] Optional event name to unsubscribe\n * @param {Function} [fn] Optional function to unsubscribe\n */\n this.destroyDroppable = function(el, evt, fn) {\n if (arguments.length === 1) {\n _destroy(el, \"_katavorioDrop\", this._dropsByScope);\n } else {\n _removeListener(el, \"_katavorioDrop\", evt, fn);\n }\n };\n\n this.reset = function() {\n this._dragsByScope = {};\n this._dropsByScope = {};\n _selection = [];\n _selectionMap = {};\n _posses = {};\n };\n\n // ----- groups\n var _posses = {};\n\n var _processOneSpec = function(el, _spec, dontAddExisting) {\n var posseId = _isString(_spec) ? _spec : _spec.id;\n var active = _isString(_spec) ? true : _spec.active !== false;\n var posse = _posses[posseId] || (function() {\n var g = {name:posseId, members:[]};\n _posses[posseId] = g;\n return g;\n })();\n _each(el, function(_el) {\n if (_el._katavorioDrag) {\n\n if (dontAddExisting && _el._katavorioDrag.posseRoles[posse.name] != null) return;\n\n _suggest(posse.members, _el._katavorioDrag);\n _suggest(_el._katavorioDrag.posses, posse.name);\n _el._katavorioDrag.posseRoles[posse.name] = active;\n }\n });\n return posse;\n };\n\n /**\n * Add the given element to the posse with the given id, creating the group if it at first does not exist.\n * @method addToPosse\n * @param {Element} el Element to add.\n * @param {String...|Object...} spec Variable args parameters. Each argument can be a either a String, indicating\n * the ID of a Posse to which the element should be added as an active participant, or an Object containing\n * `{ id:\"posseId\", active:false/true}`. In the latter case, if `active` is not provided it is assumed to be\n * true.\n * @returns {Posse|Posse[]} The Posse(s) to which the element(s) was/were added.\n */\n this.addToPosse = function(el, spec) {\n\n var posses = [];\n\n for (var i = 1; i < arguments.length; i++) {\n posses.push(_processOneSpec(el, arguments[i]));\n }\n\n return posses.length === 1 ? posses[0] : posses;\n };\n\n /**\n * Sets the posse(s) for the element with the given id, creating those that do not yet exist, and removing from\n * the element any current Posses that are not specified by this method call. This method will not change the\n * active/passive state if it is given a posse in which the element is already a member.\n * @method setPosse\n * @param {Element} el Element to set posse(s) on.\n * @param {String...|Object...} spec Variable args parameters. Each argument can be a either a String, indicating\n * the ID of a Posse to which the element should be added as an active participant, or an Object containing\n * `{ id:\"posseId\", active:false/true}`. In the latter case, if `active` is not provided it is assumed to be\n * true.\n * @returns {Posse|Posse[]} The Posse(s) to which the element(s) now belongs.\n */\n this.setPosse = function(el, spec) {\n\n var posses = [];\n\n for (var i = 1; i < arguments.length; i++) {\n posses.push(_processOneSpec(el, arguments[i], true).name);\n }\n\n _each(el, function(_el) {\n if (_el._katavorioDrag) {\n var diff = _difference(_el._katavorioDrag.posses, posses);\n var p = [];\n Array.prototype.push.apply(p, _el._katavorioDrag.posses);\n for (var i = 0; i < diff.length; i++) {\n this.removeFromPosse(_el, diff[i]);\n }\n }\n }.bind(this));\n\n return posses.length === 1 ? posses[0] : posses;\n };\n\n /**\n * Remove the given element from the given posse(s).\n * @method removeFromPosse\n * @param {Element} el Element to remove.\n * @param {String...} posseId Varargs parameter: one value for each posse to remove the element from.\n */\n this.removeFromPosse = function(el, posseId) {\n if (arguments.length < 2) throw new TypeError(\"No posse id provided for remove operation\");\n for(var i = 1; i < arguments.length; i++) {\n posseId = arguments[i];\n _each(el, function (_el) {\n if (_el._katavorioDrag && _el._katavorioDrag.posses) {\n var d = _el._katavorioDrag;\n _each(posseId, function (p) {\n _vanquish(_posses[p].members, d);\n _vanquish(d.posses, p);\n delete d.posseRoles[p];\n });\n }\n });\n }\n };\n\n /**\n * Remove the given element from all Posses to which it belongs.\n * @method removeFromAllPosses\n * @param {Element|Element[]} el Element to remove from Posses.\n */\n this.removeFromAllPosses = function(el) {\n _each(el, function(_el) {\n if (_el._katavorioDrag && _el._katavorioDrag.posses) {\n var d = _el._katavorioDrag;\n _each(d.posses, function(p) {\n _vanquish(_posses[p].members, d);\n });\n d.posses.length = 0;\n d.posseRoles = {};\n }\n });\n };\n\n /**\n * Changes the participation state for the element in the Posse with the given ID.\n * @param {Element|Element[]} el Element(s) to change state for.\n * @param {String} posseId ID of the Posse to change element state for.\n * @param {Boolean} state True to make active, false to make passive.\n */\n this.setPosseState = function(el, posseId, state) {\n var posse = _posses[posseId];\n if (posse) {\n _each(el, function(_el) {\n if (_el._katavorioDrag && _el._katavorioDrag.posses) {\n _el._katavorioDrag.posseRoles[posse.name] = state;\n }\n });\n }\n };\n\n };\n\n root.Katavorio.version = \"1.0.0\";\n\n if (typeof exports !== \"undefined\") {\n exports.Katavorio = root.Katavorio;\n }\n\n}).call(typeof window !== 'undefined' ? window : this);\n\n\n(function() {\n\n var root = this;\n root.jsPlumbUtil = root.jsPlumbUtil || {};\n var jsPlumbUtil = root.jsPlumbUtil;\n\n if (typeof exports !=='undefined') { exports.jsPlumbUtil = jsPlumbUtil;}\n\n\n function isArray(a) {\n return Object.prototype.toString.call(a) === \"[object Array]\";\n }\n jsPlumbUtil.isArray = isArray;\n function isNumber(n) {\n return Object.prototype.toString.call(n) === \"[object Number]\";\n }\n jsPlumbUtil.isNumber = isNumber;\n function isString(s) {\n return typeof s === \"string\";\n }\n jsPlumbUtil.isString = isString;\n function isBoolean(s) {\n return typeof s === \"boolean\";\n }\n jsPlumbUtil.isBoolean = isBoolean;\n function isNull(s) {\n return s == null;\n }\n jsPlumbUtil.isNull = isNull;\n function isObject(o) {\n return o == null ? false : Object.prototype.toString.call(o) === \"[object Object]\";\n }\n jsPlumbUtil.isObject = isObject;\n function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n }\n jsPlumbUtil.isDate = isDate;\n function isFunction(o) {\n return Object.prototype.toString.call(o) === \"[object Function]\";\n }\n jsPlumbUtil.isFunction = isFunction;\n function isNamedFunction(o) {\n return isFunction(o) && o.name != null && o.name.length > 0;\n }\n jsPlumbUtil.isNamedFunction = isNamedFunction;\n function isEmpty(o) {\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n return false;\n }\n }\n return true;\n }\n jsPlumbUtil.isEmpty = isEmpty;\n function clone(a) {\n if (isString(a)) {\n return \"\" + a;\n }\n else if (isBoolean(a)) {\n return !!a;\n }\n else if (isDate(a)) {\n return new Date(a.getTime());\n }\n else if (isFunction(a)) {\n return a;\n }\n else if (isArray(a)) {\n var b = [];\n for (var i = 0; i < a.length; i++) {\n b.push(clone(a[i]));\n }\n return b;\n }\n else if (isObject(a)) {\n var c = {};\n for (var j in a) {\n c[j] = clone(a[j]);\n }\n return c;\n }\n else {\n return a;\n }\n }\n jsPlumbUtil.clone = clone;\n function merge(a, b, collations, overwrites) {\n // first change the collations array - if present - into a lookup table, because its faster.\n var cMap = {}, ar, i, oMap = {};\n collations = collations || [];\n overwrites = overwrites || [];\n for (i = 0; i < collations.length; i++) {\n cMap[collations[i]] = true;\n }\n for (i = 0; i < overwrites.length; i++) {\n oMap[overwrites[i]] = true;\n }\n var c = clone(a);\n for (i in b) {\n if (c[i] == null || oMap[i]) {\n c[i] = b[i];\n }\n else if (isString(b[i]) || isBoolean(b[i])) {\n if (!cMap[i]) {\n c[i] = b[i]; // if we dont want to collate, just copy it in.\n }\n else {\n ar = [];\n // if c's object is also an array we can keep its values.\n ar.push.apply(ar, isArray(c[i]) ? c[i] : [c[i]]);\n ar.push.apply(ar, isBoolean(b[i]) ? b[i] : [b[i]]);\n c[i] = ar;\n }\n }\n else {\n if (isArray(b[i])) {\n ar = [];\n // if c's object is also an array we can keep its values.\n if (isArray(c[i])) {\n ar.push.apply(ar, c[i]);\n }\n ar.push.apply(ar, b[i]);\n c[i] = ar;\n }\n else if (isObject(b[i])) {\n // overwrite c's value with an object if it is not already one.\n if (!isObject(c[i])) {\n c[i] = {};\n }\n for (var j in b[i]) {\n c[i][j] = b[i][j];\n }\n }\n }\n }\n return c;\n }\n jsPlumbUtil.merge = merge;\n function replace(inObj, path, value) {\n if (inObj == null) {\n return;\n }\n var q = inObj, t = q;\n path.replace(/([^\\.])+/g, function (term, lc, pos, str) {\n var array = term.match(/([^\\[0-9]+){1}(\\[)([0-9+])/), last = pos + term.length >= str.length, _getArray = function () {\n return t[array[1]] || (function () {\n t[array[1]] = [];\n return t[array[1]];\n })();\n };\n if (last) {\n // set term = value on current t, creating term as array if necessary.\n if (array) {\n _getArray()[array[3]] = value;\n }\n else {\n t[term] = value;\n }\n }\n else {\n // set to current t[term], creating t[term] if necessary.\n if (array) {\n var a_1 = _getArray();\n t = a_1[array[3]] || (function () {\n a_1[array[3]] = {};\n return a_1[array[3]];\n })();\n }\n else {\n t = t[term] || (function () {\n t[term] = {};\n return t[term];\n })();\n }\n }\n return \"\";\n });\n return inObj;\n }\n jsPlumbUtil.replace = replace;\n //\n // chain a list of functions, supplied by [ object, method name, args ], and return on the first\n // one that returns the failValue. if none return the failValue, return the successValue.\n //\n function functionChain(successValue, failValue, fns) {\n for (var i = 0; i < fns.length; i++) {\n var o = fns[i][0][fns[i][1]].apply(fns[i][0], fns[i][2]);\n if (o === failValue) {\n return o;\n }\n }\n return successValue;\n }\n jsPlumbUtil.functionChain = functionChain;\n /**\n *\n * Take the given model and expand out any parameters. 'functionPrefix' is optional, and if present, helps jsplumb figure out what to do if a value is a Function.\n * if you do not provide it (and doNotExpandFunctions is null, or false), jsplumb will run the given values through any functions it finds, and use the function's\n * output as the value in the result. if you do provide the prefix, only functions that are named and have this prefix\n * will be executed; other functions will be passed as values to the output.\n *\n * @param model\n * @param values\n * @param functionPrefix\n * @param doNotExpandFunctions\n * @returns {any}\n */\n function populate(model, values, functionPrefix, doNotExpandFunctions) {\n // for a string, see if it has parameter matches, and if so, try to make the substitutions.\n var getValue = function (fromString) {\n var matches = fromString.match(/(\\${.*?})/g);\n if (matches != null) {\n for (var i = 0; i < matches.length; i++) {\n var val = values[matches[i].substring(2, matches[i].length - 1)] || \"\";\n if (val != null) {\n fromString = fromString.replace(matches[i], val);\n }\n }\n }\n return fromString;\n };\n // process one entry.\n var _one = function (d) {\n if (d != null) {\n if (isString(d)) {\n return getValue(d);\n }\n else if (isFunction(d) && !doNotExpandFunctions && (functionPrefix == null || (d.name || \"\").indexOf(functionPrefix) === 0)) {\n return d(values);\n }\n else if (isArray(d)) {\n var r = [];\n for (var i = 0; i < d.length; i++) {\n r.push(_one(d[i]));\n }\n return r;\n }\n else if (isObject(d)) {\n var s = {};\n for (var j in d) {\n s[j] = _one(d[j]);\n }\n return s;\n }\n else {\n return d;\n }\n }\n };\n return _one(model);\n }\n jsPlumbUtil.populate = populate;\n function findWithFunction(a, f) {\n if (a) {\n for (var i = 0; i < a.length; i++) {\n if (f(a[i])) {\n return i;\n }\n }\n }\n return -1;\n }\n jsPlumbUtil.findWithFunction = findWithFunction;\n function removeWithFunction(a, f) {\n var idx = findWithFunction(a, f);\n if (idx > -1) {\n a.splice(idx, 1);\n }\n return idx !== -1;\n }\n jsPlumbUtil.removeWithFunction = removeWithFunction;\n function remove(l, v) {\n var idx = l.indexOf(v);\n if (idx > -1) {\n l.splice(idx, 1);\n }\n return idx !== -1;\n }\n jsPlumbUtil.remove = remove;\n function addWithFunction(list, item, hashFunction) {\n if (findWithFunction(list, hashFunction) === -1) {\n list.push(item);\n }\n }\n jsPlumbUtil.addWithFunction = addWithFunction;\n function addToList(map, key, value, insertAtStart) {\n var l = map[key];\n if (l == null) {\n l = [];\n map[key] = l;\n }\n l[insertAtStart ? \"unshift\" : \"push\"](value);\n return l;\n }\n jsPlumbUtil.addToList = addToList;\n function suggest(list, item, insertAtHead) {\n if (list.indexOf(item) === -1) {\n if (insertAtHead) {\n list.unshift(item);\n }\n else {\n list.push(item);\n }\n return true;\n }\n return false;\n }\n jsPlumbUtil.suggest = suggest;\n //\n // extends the given obj (which can be an array) with the given constructor function, prototype functions, and\n // class members, any of which may be null.\n //\n function extend(child, parent, _protoFn) {\n var i;\n parent = isArray(parent) ? parent : [parent];\n var _copyProtoChain = function (focus) {\n var proto = focus.__proto__;\n while (proto != null) {\n if (proto.prototype != null) {\n for (var j in proto.prototype) {\n if (proto.prototype.hasOwnProperty(j) && !child.prototype.hasOwnProperty(j)) {\n child.prototype[j] = proto.prototype[j];\n }\n }\n proto = proto.prototype.__proto__;\n }\n else {\n proto = null;\n }\n }\n };\n for (i = 0; i < parent.length; i++) {\n for (var j in parent[i].prototype) {\n if (parent[i].prototype.hasOwnProperty(j) && !child.prototype.hasOwnProperty(j)) {\n child.prototype[j] = parent[i].prototype[j];\n }\n }\n _copyProtoChain(parent[i]);\n }\n var _makeFn = function (name, protoFn) {\n return function () {\n for (i = 0; i < parent.length; i++) {\n if (parent[i].prototype[name]) {\n parent[i].prototype[name].apply(this, arguments);\n }\n }\n return protoFn.apply(this, arguments);\n };\n };\n var _oneSet = function (fns) {\n for (var k in fns) {\n child.prototype[k] = _makeFn(k, fns[k]);\n }\n };\n if (arguments.length > 2) {\n for (i = 2; i < arguments.length; i++) {\n _oneSet(arguments[i]);\n }\n }\n return child;\n }\n jsPlumbUtil.extend = extend;\n function uuid() {\n return ('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n }));\n }\n jsPlumbUtil.uuid = uuid;\n function fastTrim(s) {\n if (s == null) {\n return null;\n }\n var str = s.replace(/^\\s\\s*/, ''), ws = /\\s/, i = str.length;\n while (ws.test(str.charAt(--i))) {\n }\n return str.slice(0, i + 1);\n }\n jsPlumbUtil.fastTrim = fastTrim;\n function each(obj, fn) {\n obj = obj.length == null || typeof obj === \"string\" ? [obj] : obj;\n for (var i = 0; i < obj.length; i++) {\n fn(obj[i]);\n }\n }\n jsPlumbUtil.each = each;\n function map(obj, fn) {\n var o = [];\n for (var i = 0; i < obj.length; i++) {\n o.push(fn(obj[i]));\n }\n return o;\n }\n jsPlumbUtil.map = map;\n function mergeWithParents(type, map, parentAttribute) {\n parentAttribute = parentAttribute || \"parent\";\n var _def = function (id) {\n return id ? map[id] : null;\n };\n var _parent = function (def) {\n return def ? _def(def[parentAttribute]) : null;\n };\n var _one = function (parent, def) {\n if (parent == null) {\n return def;\n }\n else {\n var d_1 = merge(parent, def);\n return _one(_parent(parent), d_1);\n }\n };\n var _getDef = function (t) {\n if (t == null) {\n return {};\n }\n if (typeof t === \"string\") {\n return _def(t);\n }\n else if (t.length) {\n var done = false, i = 0, _dd = void 0;\n while (!done && i < t.length) {\n _dd = _getDef(t[i]);\n if (_dd) {\n done = true;\n }\n else {\n i++;\n }\n }\n return _dd;\n }\n };\n var d = _getDef(type);\n if (d) {\n return _one(_parent(d), d);\n }\n else {\n return {};\n }\n }\n jsPlumbUtil.mergeWithParents = mergeWithParents;\n jsPlumbUtil.logEnabled = true;\n function log() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (jsPlumbUtil.logEnabled && typeof console !== \"undefined\") {\n try {\n var msg = arguments[arguments.length - 1];\n console.log(msg);\n }\n catch (e) {\n }\n }\n }\n jsPlumbUtil.log = log;\n /**\n * Wraps one function with another, creating a placeholder for the\n * wrapped function if it was null. this is used to wrap the various\n * drag/drop event functions - to allow jsPlumb to be notified of\n * important lifecycle events without imposing itself on the user's\n * drag/drop functionality.\n * @method jsPlumbUtil.wrap\n * @param {Function} wrappedFunction original function to wrap; may be null.\n * @param {Function} newFunction function to wrap the original with.\n * @param {Object} [returnOnThisValue] Optional. Indicates that the wrappedFunction should\n * not be executed if the newFunction returns a value matching 'returnOnThisValue'.\n * note that this is a simple comparison and only works for primitives right now.\n */\n function wrap(wrappedFunction, newFunction, returnOnThisValue) {\n return function () {\n var r = null;\n try {\n if (newFunction != null) {\n r = newFunction.apply(this, arguments);\n }\n }\n catch (e) {\n log(\"jsPlumb function failed : \" + e);\n }\n if ((wrappedFunction != null) && (returnOnThisValue == null || (r !== returnOnThisValue))) {\n try {\n r = wrappedFunction.apply(this, arguments);\n }\n catch (e) {\n log(\"wrapped function failed : \" + e);\n }\n }\n return r;\n };\n }\n jsPlumbUtil.wrap = wrap;\n var EventGenerator = /** @class */ (function () {\n function EventGenerator() {\n var _this = this;\n this._listeners = {};\n this.eventsSuspended = false;\n this.tick = false;\n // this is a list of events that should re-throw any errors that occur during their dispatch.\n this.eventsToDieOn = { \"ready\": true };\n this.queue = [];\n this.bind = function (event, listener, insertAtStart) {\n var _one = function (evt) {\n addToList(_this._listeners, evt, listener, insertAtStart);\n listener.__jsPlumb = listener.__jsPlumb || {};\n listener.__jsPlumb[uuid()] = evt;\n };\n if (typeof event === \"string\") {\n _one(event);\n }\n else if (event.length != null) {\n for (var i = 0; i < event.length; i++) {\n _one(event[i]);\n }\n }\n return _this;\n };\n this.fire = function (event, value, originalEvent) {\n if (!this.tick) {\n this.tick = true;\n if (!this.eventsSuspended && this._listeners[event]) {\n var l = this._listeners[event].length, i = 0, _gone = false, ret = null;\n if (!this.shouldFireEvent || this.shouldFireEvent(event, value, originalEvent)) {\n while (!_gone && i < l && ret !== false) {\n // doing it this way rather than catching and then possibly re-throwing means that an error propagated by this\n // method will have the whole call stack available in the debugger.\n if (this.eventsToDieOn[event]) {\n this._listeners[event][i].apply(this, [value, originalEvent]);\n }\n else {\n try {\n ret = this._listeners[event][i].apply(this, [value, originalEvent]);\n }\n catch (e) {\n log(\"jsPlumb: fire failed for event \" + event + \" : \" + e);\n }\n }\n i++;\n if (this._listeners == null || this._listeners[event] == null) {\n _gone = true;\n }\n }\n }\n }\n this.tick = false;\n this._drain();\n }\n else {\n this.queue.unshift(arguments);\n }\n return this;\n };\n this._drain = function () {\n var n = _this.queue.pop();\n if (n) {\n _this.fire.apply(_this, n);\n }\n };\n this.unbind = function (eventOrListener, listener) {\n if (arguments.length === 0) {\n this._listeners = {};\n }\n else if (arguments.length === 1) {\n if (typeof eventOrListener === \"string\") {\n delete this._listeners[eventOrListener];\n }\n else if (eventOrListener.__jsPlumb) {\n var evt = void 0;\n for (var i in eventOrListener.__jsPlumb) {\n evt = eventOrListener.__jsPlumb[i];\n remove(this._listeners[evt] || [], eventOrListener);\n }\n }\n }\n else if (arguments.length === 2) {\n remove(this._listeners[eventOrListener] || [], listener);\n }\n return this;\n };\n this.getListener = function (forEvent) {\n return _this._listeners[forEvent];\n };\n this.setSuspendEvents = function (val) {\n _this.eventsSuspended = val;\n };\n this.isSuspendEvents = function () {\n return _this.eventsSuspended;\n };\n this.silently = function (fn) {\n _this.setSuspendEvents(true);\n try {\n fn();\n }\n catch (e) {\n log(\"Cannot execute silent function \" + e);\n }\n _this.setSuspendEvents(false);\n };\n this.cleanupListeners = function () {\n for (var i in _this._listeners) {\n _this._listeners[i] = null;\n }\n };\n }\n return EventGenerator;\n }());\n jsPlumbUtil.EventGenerator = EventGenerator;\n\n}).call(typeof window !== 'undefined' ? window : this);\n/*\n * This file contains utility functions that run in browsers only.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n *\n * Dual licensed under the MIT and GPL2 licenses.\n */\n ;(function() {\n\n \"use strict\";\n\n var root = this;\n\n root.jsPlumbUtil.matchesSelector = function(el, selector, ctx) {\n ctx = ctx || el.parentNode;\n var possibles = ctx.querySelectorAll(selector);\n for (var i = 0; i < possibles.length; i++) {\n if (possibles[i] === el) {\n return true;\n }\n }\n return false;\n };\n\n root.jsPlumbUtil.consume = function(e, doNotPreventDefault) {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n else {\n e.returnValue = false;\n }\n\n if (!doNotPreventDefault && e.preventDefault){\n e.preventDefault();\n }\n };\n\n /*\n * Function: sizeElement\n * Helper to size and position an element. You would typically use\n * this when writing your own Connector or Endpoint implementation.\n *\n * Parameters:\n * x - [int] x position for the element origin\n * y - [int] y position for the element origin\n * w - [int] width of the element\n * h - [int] height of the element\n *\n */\n root.jsPlumbUtil.sizeElement = function(el, x, y, w, h) {\n if (el) {\n el.style.height = h + \"px\";\n el.height = h;\n el.style.width = w + \"px\";\n el.width = w;\n el.style.left = x + \"px\";\n el.style.top = y + \"px\";\n }\n };\n\n }).call(typeof window !== 'undefined' ? window : this);\n\n/*\n * This file contains the core code.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n *\n * Dual licensed under the MIT and GPL2 licenses.\n */\n;(function () {\n\n \"use strict\";\n\n var root = this;\n\n var _ju = root.jsPlumbUtil,\n\n /**\n * creates a timestamp, using milliseconds since 1970, but as a string.\n */\n _timestamp = function () {\n return \"\" + (new Date()).getTime();\n },\n\n // helper method to update the hover style whenever it, or paintStyle, changes.\n // we use paintStyle as the foundation and merge hoverPaintStyle over the\n // top.\n _updateHoverStyle = function (component) {\n if (component._jsPlumb.paintStyle && component._jsPlumb.hoverPaintStyle) {\n var mergedHoverStyle = {};\n jsPlumb.extend(mergedHoverStyle, component._jsPlumb.paintStyle);\n jsPlumb.extend(mergedHoverStyle, component._jsPlumb.hoverPaintStyle);\n delete component._jsPlumb.hoverPaintStyle;\n // we want the fill of paintStyle to override a gradient, if possible.\n if (mergedHoverStyle.gradient && component._jsPlumb.paintStyle.fill) {\n delete mergedHoverStyle.gradient;\n }\n component._jsPlumb.hoverPaintStyle = mergedHoverStyle;\n }\n },\n events = [\"tap\", \"dbltap\", \"click\", \"dblclick\", \"mouseover\", \"mouseout\", \"mousemove\", \"mousedown\", \"mouseup\", \"contextmenu\" ],\n eventFilters = { \"mouseout\": \"mouseleave\", \"mouseexit\": \"mouseleave\" },\n _updateAttachedElements = function (component, state, timestamp, sourceElement) {\n var affectedElements = component.getAttachedElements();\n if (affectedElements) {\n for (var i = 0, j = affectedElements.length; i < j; i++) {\n if (!sourceElement || sourceElement !== affectedElements[i]) {\n affectedElements[i].setHover(state, true, timestamp);\t\t\t// tell the attached elements not to inform their own attached elements.\n }\n }\n }\n },\n _splitType = function (t) {\n return t == null ? null : t.split(\" \");\n },\n _mapType = function(map, obj, typeId) {\n for (var i in obj) {\n map[i] = typeId;\n }\n },\n _each = function(fn, obj) {\n obj = _ju.isArray(obj) || (obj.length != null && !_ju.isString(obj)) ? obj : [ obj ];\n for (var i = 0; i < obj.length; i++) {\n try {\n fn.apply(obj[i], [ obj[i] ]);\n }\n catch (e) {\n _ju.log(\".each iteration failed : \" + e);\n }\n }\n },\n _applyTypes = function (component, params, doNotRepaint) {\n if (component.getDefaultType) {\n var td = component.getTypeDescriptor(), map = {};\n var defType = component.getDefaultType();\n var o = _ju.merge({}, defType);\n _mapType(map, defType, \"__default\");\n for (var i = 0, j = component._jsPlumb.types.length; i < j; i++) {\n var tid = component._jsPlumb.types[i];\n if (tid !== \"__default\") {\n var _t = component._jsPlumb.instance.getType(tid, td);\n if (_t != null) {\n o = _ju.merge(o, _t, [ \"cssClass\" ], [ \"connector\" ]);\n _mapType(map, _t, tid);\n }\n }\n }\n\n if (params) {\n o = _ju.populate(o, params, \"_\");\n }\n\n component.applyType(o, doNotRepaint, map);\n if (!doNotRepaint) {\n component.repaint();\n }\n }\n },\n\n// ------------------------------ BEGIN jsPlumbUIComponent --------------------------------------------\n\n jsPlumbUIComponent = root.jsPlumbUIComponent = function (params) {\n\n _ju.EventGenerator.apply(this, arguments);\n\n var self = this,\n a = arguments,\n idPrefix = self.idPrefix,\n id = idPrefix + (new Date()).getTime();\n\n this._jsPlumb = {\n instance: params._jsPlumb,\n parameters: params.parameters || {},\n paintStyle: null,\n hoverPaintStyle: null,\n paintStyleInUse: null,\n hover: false,\n beforeDetach: params.beforeDetach,\n beforeDrop: params.beforeDrop,\n overlayPlacements: [],\n hoverClass: params.hoverClass || params._jsPlumb.Defaults.HoverClass,\n types: [],\n typeCache:{}\n };\n\n this.cacheTypeItem = function(key, item, typeId) {\n this._jsPlumb.typeCache[typeId] = this._jsPlumb.typeCache[typeId] || {};\n this._jsPlumb.typeCache[typeId][key] = item;\n };\n this.getCachedTypeItem = function(key, typeId) {\n return this._jsPlumb.typeCache[typeId] ? this._jsPlumb.typeCache[typeId][key] : null;\n };\n\n this.getId = function () {\n return id;\n };\n\n// ----------------------------- default type --------------------------------------------\n\n\n var o = params.overlays || [], oo = {};\n if (this.defaultOverlayKeys) {\n for (var i = 0; i < this.defaultOverlayKeys.length; i++) {\n Array.prototype.push.apply(o, this._jsPlumb.instance.Defaults[this.defaultOverlayKeys[i]] || []);\n }\n\n for (i = 0; i < o.length; i++) {\n // if a string, convert to object representation so that we can store the typeid on it.\n // also assign an id.\n var fo = jsPlumb.convertToFullOverlaySpec(o[i]);\n oo[fo[1].id] = fo;\n }\n }\n\n var _defaultType = {\n overlays:oo,\n parameters: params.parameters || {},\n scope: params.scope || this._jsPlumb.instance.getDefaultScope()\n };\n this.getDefaultType = function() {\n return _defaultType;\n };\n this.appendToDefaultType = function(obj) {\n for (var i in obj) {\n _defaultType[i] = obj[i];\n }\n };\n\n// ----------------------------- end default type --------------------------------------------\n\n // all components can generate events\n\n if (params.events) {\n for (var evtName in params.events) {\n self.bind(evtName, params.events[evtName]);\n }\n }\n\n // all components get this clone function.\n // TODO issue 116 showed a problem with this - it seems 'a' that is in\n // the clone function's scope is shared by all invocations of it, the classic\n // JS closure problem. for now, jsPlumb does a version of this inline where\n // it used to call clone. but it would be nice to find some time to look\n // further at this.\n this.clone = function () {\n var o = Object.create(this.constructor.prototype);\n this.constructor.apply(o, a);\n return o;\n }.bind(this);\n\n // user can supply a beforeDetach callback, which will be executed before a detach\n // is performed; returning false prevents the detach.\n this.isDetachAllowed = function (connection) {\n var r = true;\n if (this._jsPlumb.beforeDetach) {\n try {\n r = this._jsPlumb.beforeDetach(connection);\n }\n catch (e) {\n _ju.log(\"jsPlumb: beforeDetach callback failed\", e);\n }\n }\n return r;\n };\n\n // user can supply a beforeDrop callback, which will be executed before a dropped\n // connection is confirmed. user can return false to reject connection.\n this.isDropAllowed = function (sourceId, targetId, scope, connection, dropEndpoint, source, target) {\n var r = this._jsPlumb.instance.checkCondition(\"beforeDrop\", {\n sourceId: sourceId,\n targetId: targetId,\n scope: scope,\n connection: connection,\n dropEndpoint: dropEndpoint,\n source: source, target: target\n });\n if (this._jsPlumb.beforeDrop) {\n try {\n r = this._jsPlumb.beforeDrop({\n sourceId: sourceId,\n targetId: targetId,\n scope: scope,\n connection: connection,\n dropEndpoint: dropEndpoint,\n source: source, target: target\n });\n }\n catch (e) {\n _ju.log(\"jsPlumb: beforeDrop callback failed\", e);\n }\n }\n return r;\n };\n\n var domListeners = [];\n\n // sets the component associated with listener events. for instance, an overlay delegates\n // its events back to a connector. but if the connector is swapped on the underlying connection,\n // then this component must be changed. This is called by setConnector in the Connection class.\n this.setListenerComponent = function (c) {\n for (var i = 0; i < domListeners.length; i++) {\n domListeners[i][3] = c;\n }\n };\n\n\n };\n\n var _removeTypeCssHelper = function (component, typeIndex) {\n var typeId = component._jsPlumb.types[typeIndex],\n type = component._jsPlumb.instance.getType(typeId, component.getTypeDescriptor());\n\n if (type != null && type.cssClass && component.canvas) {\n component._jsPlumb.instance.removeClass(component.canvas, type.cssClass);\n }\n };\n\n _ju.extend(root.jsPlumbUIComponent, _ju.EventGenerator, {\n\n getParameter: function (name) {\n return this._jsPlumb.parameters[name];\n },\n\n setParameter: function (name, value) {\n this._jsPlumb.parameters[name] = value;\n },\n\n getParameters: function () {\n return this._jsPlumb.parameters;\n },\n\n setParameters: function (p) {\n this._jsPlumb.parameters = p;\n },\n\n getClass:function() {\n return jsPlumb.getClass(this.canvas);\n },\n\n hasClass:function(clazz) {\n return jsPlumb.hasClass(this.canvas, clazz);\n },\n\n addClass: function (clazz) {\n jsPlumb.addClass(this.canvas, clazz);\n },\n\n removeClass: function (clazz) {\n jsPlumb.removeClass(this.canvas, clazz);\n },\n\n updateClasses: function (classesToAdd, classesToRemove) {\n jsPlumb.updateClasses(this.canvas, classesToAdd, classesToRemove);\n },\n\n setType: function (typeId, params, doNotRepaint) {\n this.clearTypes();\n this._jsPlumb.types = _splitType(typeId) || [];\n _applyTypes(this, params, doNotRepaint);\n },\n\n getType: function () {\n return this._jsPlumb.types;\n },\n\n reapplyTypes: function (params, doNotRepaint) {\n _applyTypes(this, params, doNotRepaint);\n },\n\n hasType: function (typeId) {\n return this._jsPlumb.types.indexOf(typeId) !== -1;\n },\n\n addType: function (typeId, params, doNotRepaint) {\n var t = _splitType(typeId), _cont = false;\n if (t != null) {\n for (var i = 0, j = t.length; i < j; i++) {\n if (!this.hasType(t[i])) {\n this._jsPlumb.types.push(t[i]);\n _cont = true;\n }\n }\n if (_cont) {\n _applyTypes(this, params, doNotRepaint);\n }\n }\n },\n\n removeType: function (typeId, params, doNotRepaint) {\n var t = _splitType(typeId), _cont = false, _one = function (tt) {\n var idx = this._jsPlumb.types.indexOf(tt);\n if (idx !== -1) {\n // remove css class if necessary\n _removeTypeCssHelper(this, idx);\n this._jsPlumb.types.splice(idx, 1);\n return true;\n }\n return false;\n }.bind(this);\n\n if (t != null) {\n for (var i = 0, j = t.length; i < j; i++) {\n _cont = _one(t[i]) || _cont;\n }\n if (_cont) {\n _applyTypes(this, params, doNotRepaint);\n }\n }\n },\n clearTypes: function (params, doNotRepaint) {\n var i = this._jsPlumb.types.length;\n for (var j = 0; j < i; j++) {\n _removeTypeCssHelper(this, 0);\n this._jsPlumb.types.splice(0, 1);\n }\n _applyTypes(this, params, doNotRepaint);\n },\n\n toggleType: function (typeId, params, doNotRepaint) {\n var t = _splitType(typeId);\n if (t != null) {\n for (var i = 0, j = t.length; i < j; i++) {\n var idx = this._jsPlumb.types.indexOf(t[i]);\n if (idx !== -1) {\n _removeTypeCssHelper(this, idx);\n this._jsPlumb.types.splice(idx, 1);\n }\n else {\n this._jsPlumb.types.push(t[i]);\n }\n }\n\n _applyTypes(this, params, doNotRepaint);\n }\n },\n applyType: function (t, doNotRepaint) {\n this.setPaintStyle(t.paintStyle, doNotRepaint);\n this.setHoverPaintStyle(t.hoverPaintStyle, doNotRepaint);\n if (t.parameters) {\n for (var i in t.parameters) {\n this.setParameter(i, t.parameters[i]);\n }\n }\n this._jsPlumb.paintStyleInUse = this.getPaintStyle();\n },\n setPaintStyle: function (style, doNotRepaint) {\n // this._jsPlumb.paintStyle = jsPlumb.extend({}, style);\n // TODO figure out if we want components to clone paintStyle so as not to share it.\n this._jsPlumb.paintStyle = style;\n this._jsPlumb.paintStyleInUse = this._jsPlumb.paintStyle;\n _updateHoverStyle(this);\n if (!doNotRepaint) {\n this.repaint();\n }\n },\n getPaintStyle: function () {\n return this._jsPlumb.paintStyle;\n },\n setHoverPaintStyle: function (style, doNotRepaint) {\n //this._jsPlumb.hoverPaintStyle = jsPlumb.extend({}, style);\n // TODO figure out if we want components to clone paintStyle so as not to share it.\n this._jsPlumb.hoverPaintStyle = style;\n _updateHoverStyle(this);\n if (!doNotRepaint) {\n this.repaint();\n }\n },\n getHoverPaintStyle: function () {\n return this._jsPlumb.hoverPaintStyle;\n },\n destroy: function (force) {\n if (force || this.typeId == null) {\n this.cleanupListeners(); // this is on EventGenerator\n this.clone = null;\n this._jsPlumb = null;\n }\n },\n\n isHover: function () {\n return this._jsPlumb.hover;\n },\n\n setHover: function (hover, ignoreAttachedElements, timestamp) {\n // while dragging, we ignore these events. this keeps the UI from flashing and\n // swishing and whatevering.\n if (this._jsPlumb && !this._jsPlumb.instance.currentlyDragging && !this._jsPlumb.instance.isHoverSuspended()) {\n\n this._jsPlumb.hover = hover;\n var method = hover ? \"addClass\" : \"removeClass\";\n\n if (this.canvas != null) {\n if (this._jsPlumb.instance.hoverClass != null) {\n this._jsPlumb.instance[method](this.canvas, this._jsPlumb.instance.hoverClass);\n }\n if (this._jsPlumb.hoverClass != null) {\n this._jsPlumb.instance[method](this.canvas, this._jsPlumb.hoverClass);\n }\n }\n if (this._jsPlumb.hoverPaintStyle != null) {\n this._jsPlumb.paintStyleInUse = hover ? this._jsPlumb.hoverPaintStyle : this._jsPlumb.paintStyle;\n if (!this._jsPlumb.instance.isSuspendDrawing()) {\n timestamp = timestamp || _timestamp();\n this.repaint({timestamp: timestamp, recalc: false});\n }\n }\n // get the list of other affected elements, if supported by this component.\n // for a connection, its the endpoints. for an endpoint, its the connections! surprise.\n if (this.getAttachedElements && !ignoreAttachedElements) {\n _updateAttachedElements(this, hover, _timestamp(), this);\n }\n }\n }\n });\n\n// ------------------------------ END jsPlumbUIComponent --------------------------------------------\n\n var _jsPlumbInstanceIndex = 0,\n getInstanceIndex = function () {\n var i = _jsPlumbInstanceIndex + 1;\n _jsPlumbInstanceIndex++;\n return i;\n };\n\n var jsPlumbInstance = root.jsPlumbInstance = function (_defaults) {\n\n this.version = \"2.9.0\";\n\n this.Defaults = {\n Anchor: \"Bottom\",\n Anchors: [ null, null ],\n ConnectionsDetachable: true,\n ConnectionOverlays: [ ],\n Connector: \"Bezier\",\n Container: null,\n DoNotThrowErrors: false,\n DragOptions: { },\n DropOptions: { },\n Endpoint: \"Dot\",\n EndpointOverlays: [ ],\n Endpoints: [ null, null ],\n EndpointStyle: { fill: \"#456\" },\n EndpointStyles: [ null, null ],\n EndpointHoverStyle: null,\n EndpointHoverStyles: [ null, null ],\n HoverPaintStyle: null,\n LabelStyle: { color: \"black\" },\n LogEnabled: false,\n Overlays: [ ],\n MaxConnections: 1,\n PaintStyle: { \"stroke-width\": 4, stroke: \"#456\" },\n ReattachConnections: false,\n RenderMode: \"svg\",\n Scope: \"jsPlumb_DefaultScope\"\n };\n\n if (_defaults) {\n jsPlumb.extend(this.Defaults, _defaults);\n }\n\n this.logEnabled = this.Defaults.LogEnabled;\n this._connectionTypes = {};\n this._endpointTypes = {};\n\n _ju.EventGenerator.apply(this);\n\n var _currentInstance = this,\n _instanceIndex = getInstanceIndex(),\n _bb = _currentInstance.bind,\n _initialDefaults = {},\n _zoom = 1,\n _info = function (el) {\n if (el == null) {\n return null;\n }\n else if (el.nodeType === 3 || el.nodeType === 8) {\n return { el:el, text:true };\n }\n else {\n var _el = _currentInstance.getElement(el);\n return { el: _el, id: (_ju.isString(el) && _el == null) ? el : _getId(_el) };\n }\n };\n\n this.getInstanceIndex = function () {\n return _instanceIndex;\n };\n\n // CONVERTED\n this.setZoom = function (z, repaintEverything) {\n _zoom = z;\n _currentInstance.fire(\"zoom\", _zoom);\n if (repaintEverything) {\n _currentInstance.repaintEverything();\n }\n return true;\n };\n // CONVERTED\n this.getZoom = function () {\n return _zoom;\n };\n\n for (var i in this.Defaults) {\n _initialDefaults[i] = this.Defaults[i];\n }\n\n var _container, _containerDelegations = [];\n this.unbindContainer = function() {\n if (_container != null && _containerDelegations.length > 0) {\n for (var i = 0; i < _containerDelegations.length; i++) {\n _currentInstance.off(_container, _containerDelegations[i][0], _containerDelegations[i][1]);\n }\n }\n };\n this.setContainer = function (c) {\n\n this.unbindContainer();\n\n // get container as dom element.\n c = this.getElement(c);\n // move existing connections and endpoints, if any.\n this.select().each(function (conn) {\n conn.moveParent(c);\n });\n this.selectEndpoints().each(function (ep) {\n ep.moveParent(c);\n });\n\n // set container.\n var previousContainer = _container;\n _container = c;\n _containerDelegations.length = 0;\n var eventAliases = {\n \"endpointclick\":\"endpointClick\",\n \"endpointdblclick\":\"endpointDblClick\"\n };\n\n var _oneDelegateHandler = function (id, e, componentType) {\n var t = e.srcElement || e.target,\n jp = (t && t.parentNode ? t.parentNode._jsPlumb : null) || (t ? t._jsPlumb : null) || (t && t.parentNode && t.parentNode.parentNode ? t.parentNode.parentNode._jsPlumb : null);\n if (jp) {\n jp.fire(id, jp, e);\n var alias = componentType ? eventAliases[componentType + id] || id : id;\n // jsplumb also fires every event coming from components/overlays. That's what the test for `jp.component` is for.\n _currentInstance.fire(alias, jp.component || jp, e);\n }\n };\n\n var _addOneDelegate = function(eventId, selector, fn) {\n _containerDelegations.push([eventId, fn]);\n _currentInstance.on(_container, eventId, selector, fn);\n };\n\n // delegate one event on the container to jsplumb elements. it might be possible to\n // abstract this out: each of endpoint, connection and overlay could register themselves with\n // jsplumb as \"component types\" or whatever, and provide a suitable selector. this would be\n // done by the renderer (although admittedly from 2.0 onwards we're not supporting vml anymore)\n var _oneDelegate = function (id) {\n // connections.\n _addOneDelegate(id, \".jtk-connector\", function (e) {\n _oneDelegateHandler(id, e);\n });\n // endpoints. note they can have an enclosing div, or not.\n _addOneDelegate(id, \".jtk-endpoint\", function (e) {\n _oneDelegateHandler(id, e, \"endpoint\");\n });\n // overlays\n _addOneDelegate(id, \".jtk-overlay\", function (e) {\n _oneDelegateHandler(id, e);\n });\n };\n\n for (var i = 0; i < events.length; i++) {\n _oneDelegate(events[i]);\n }\n\n // managed elements\n for (var elId in managedElements) {\n var el = managedElements[elId].el;\n if (el.parentNode === previousContainer) {\n previousContainer.removeChild(el);\n _container.appendChild(el);\n }\n }\n\n };\n this.getContainer = function () {\n return _container;\n };\n\n this.bind = function (event, fn) {\n if (\"ready\" === event && initialized) {\n fn();\n }\n else {\n _bb.apply(_currentInstance, [event, fn]);\n }\n };\n\n _currentInstance.importDefaults = function (d) {\n for (var i in d) {\n _currentInstance.Defaults[i] = d[i];\n }\n if (d.Container) {\n _currentInstance.setContainer(d.Container);\n }\n\n return _currentInstance;\n };\n\n _currentInstance.restoreDefaults = function () {\n _currentInstance.Defaults = jsPlumb.extend({}, _initialDefaults);\n return _currentInstance;\n };\n\n var log = null,\n initialized = false,\n // TODO remove from window scope\n connections = [],\n // map of element id -> endpoint lists. an element can have an arbitrary\n // number of endpoints on it, and not all of them have to be connected\n // to anything.\n endpointsByElement = {},\n endpointsByUUID = {},\n managedElements = {},\n offsets = {},\n offsetTimestamps = {},\n draggableStates = {},\n connectionBeingDragged = false,\n sizes = [],\n _suspendDrawing = false,\n _suspendedAt = null,\n DEFAULT_SCOPE = this.Defaults.Scope,\n _curIdStamp = 1,\n _idstamp = function () {\n return \"\" + _curIdStamp++;\n },\n\n //\n // appends an element to some other element, which is calculated as follows:\n //\n // 1. if Container exists, use that element.\n // 2. if the 'parent' parameter exists, use that.\n // 3. otherwise just use the root element.\n //\n //\n _appendElement = function (el, parent) {\n if (_container) {\n _container.appendChild(el);\n }\n else if (!parent) {\n this.appendToRoot(el);\n }\n else {\n this.getElement(parent).appendChild(el);\n }\n }.bind(this),\n\n //\n // Draws an endpoint and its connections. this is the main entry point into drawing connections as well\n // as endpoints, since jsPlumb is endpoint-centric under the hood.\n //\n // @param element element to draw (of type library specific element object)\n // @param ui UI object from current library's event system. optional.\n // @param timestamp timestamp for this paint cycle. used to speed things up a little by cutting down the amount of offset calculations we do.\n // @param clearEdits defaults to false; indicates that mouse edits for connectors should be cleared\n ///\n _draw = function (element, ui, timestamp, clearEdits) {\n\n if (!_suspendDrawing) {\n var id = _getId(element),\n repaintEls,\n dm = _currentInstance.getDragManager();\n\n if (dm) {\n repaintEls = dm.getElementsForDraggable(id);\n }\n\n if (timestamp == null) {\n timestamp = _timestamp();\n }\n\n // update the offset of everything _before_ we try to draw anything.\n var o = _updateOffset({ elId: id, offset: ui, recalc: false, timestamp: timestamp });\n\n if (repaintEls && o && o.o) {\n for (var i in repaintEls) {\n _updateOffset({\n elId: repaintEls[i].id,\n offset: {\n left: o.o.left + repaintEls[i].offset.left,\n top: o.o.top + repaintEls[i].offset.top\n },\n recalc: false,\n timestamp: timestamp\n });\n }\n }\n\n _currentInstance.anchorManager.redraw(id, ui, timestamp, null, clearEdits);\n\n if (repaintEls) {\n for (var j in repaintEls) {\n _currentInstance.anchorManager.redraw(repaintEls[j].id, ui, timestamp, repaintEls[j].offset, clearEdits, true);\n }\n }\n }\n },\n\n //\n // gets an Endpoint by uuid.\n //\n _getEndpoint = function (uuid) {\n return endpointsByUUID[uuid];\n },\n\n /**\n * inits a draggable if it's not already initialised.\n * TODO: somehow abstract this to the adapter, because the concept of \"draggable\" has no\n * place on the server.\n */\n\n\n _scopeMatch = function (e1, e2) {\n var s1 = e1.scope.split(/\\s/), s2 = e2.scope.split(/\\s/);\n for (var i = 0; i < s1.length; i++) {\n for (var j = 0; j < s2.length; j++) {\n if (s2[j] === s1[i]) {\n return true;\n }\n }\n }\n\n return false;\n },\n\n _mergeOverrides = function (def, values) {\n var m = jsPlumb.extend({}, def);\n for (var i in values) {\n if (values[i]) {\n m[i] = values[i];\n }\n }\n return m;\n },\n\n /*\n * prepares a final params object that can be passed to _newConnection, taking into account defaults, events, etc.\n */\n _prepareConnectionParams = function (params, referenceParams) {\n var _p = jsPlumb.extend({ }, params);\n if (referenceParams) {\n jsPlumb.extend(_p, referenceParams);\n }\n\n // hotwire endpoints passed as source or target to sourceEndpoint/targetEndpoint, respectively.\n if (_p.source) {\n if (_p.source.endpoint) {\n _p.sourceEndpoint = _p.source;\n }\n else {\n _p.source = _currentInstance.getElement(_p.source);\n }\n }\n if (_p.target) {\n if (_p.target.endpoint) {\n _p.targetEndpoint = _p.target;\n }\n else {\n _p.target = _currentInstance.getElement(_p.target);\n }\n }\n\n // test for endpoint uuids to connect\n if (params.uuids) {\n _p.sourceEndpoint = _getEndpoint(params.uuids[0]);\n _p.targetEndpoint = _getEndpoint(params.uuids[1]);\n }\n\n // now ensure that if we do have Endpoints already, they're not full.\n // source:\n if (_p.sourceEndpoint && _p.sourceEndpoint.isFull()) {\n _ju.log(_currentInstance, \"could not add connection; source endpoint is full\");\n return;\n }\n\n // target:\n if (_p.targetEndpoint && _p.targetEndpoint.isFull()) {\n _ju.log(_currentInstance, \"could not add connection; target endpoint is full\");\n return;\n }\n\n // if source endpoint mandates connection type and nothing specified in our params, use it.\n if (!_p.type && _p.sourceEndpoint) {\n _p.type = _p.sourceEndpoint.connectionType;\n }\n\n // copy in any connectorOverlays that were specified on the source endpoint.\n // it doesnt copy target endpoint overlays. i'm not sure if we want it to or not.\n if (_p.sourceEndpoint && _p.sourceEndpoint.connectorOverlays) {\n _p.overlays = _p.overlays || [];\n for (var i = 0, j = _p.sourceEndpoint.connectorOverlays.length; i < j; i++) {\n _p.overlays.push(_p.sourceEndpoint.connectorOverlays[i]);\n }\n }\n\n // scope\n if (_p.sourceEndpoint && _p.sourceEndpoint.scope) {\n _p.scope = _p.sourceEndpoint.scope;\n }\n\n // pointer events\n if (!_p[\"pointer-events\"] && _p.sourceEndpoint && _p.sourceEndpoint.connectorPointerEvents) {\n _p[\"pointer-events\"] = _p.sourceEndpoint.connectorPointerEvents;\n }\n\n\n var _addEndpoint = function (el, def, idx) {\n return _currentInstance.addEndpoint(el, _mergeOverrides(def, {\n anchor: _p.anchors ? _p.anchors[idx] : _p.anchor,\n endpoint: _p.endpoints ? _p.endpoints[idx] : _p.endpoint,\n paintStyle: _p.endpointStyles ? _p.endpointStyles[idx] : _p.endpointStyle,\n hoverPaintStyle: _p.endpointHoverStyles ? _p.endpointHoverStyles[idx] : _p.endpointHoverStyle\n }));\n };\n\n // check for makeSource/makeTarget specs.\n\n var _oneElementDef = function (type, idx, defs, matchType) {\n if (_p[type] && !_p[type].endpoint && !_p[type + \"Endpoint\"] && !_p.newConnection) {\n var tid = _getId(_p[type]), tep = defs[tid];\n\n tep = tep ? tep[matchType] : null;\n\n if (tep) {\n // if not enabled, return.\n if (!tep.enabled) {\n return false;\n }\n var newEndpoint = tep.endpoint != null && tep.endpoint._jsPlumb ? tep.endpoint : _addEndpoint(_p[type], tep.def, idx);\n if (newEndpoint.isFull()) {\n return false;\n }\n _p[type + \"Endpoint\"] = newEndpoint;\n if (!_p.scope && tep.def.scope) {\n _p.scope = tep.def.scope;\n } // provide scope if not already provided and endpoint def has one.\n if (tep.uniqueEndpoint) {\n if (!tep.endpoint) {\n tep.endpoint = newEndpoint;\n newEndpoint.setDeleteOnEmpty(false);\n }\n else {\n newEndpoint.finalEndpoint = tep.endpoint;\n }\n } else {\n newEndpoint.setDeleteOnEmpty(true);\n }\n\n //\n // copy in connector overlays if present on the source definition.\n //\n if (idx === 0 && tep.def.connectorOverlays) {\n _p.overlays = _p.overlays || [];\n Array.prototype.push.apply(_p.overlays, tep.def.connectorOverlays);\n }\n }\n }\n };\n\n if (_oneElementDef(\"source\", 0, this.sourceEndpointDefinitions, _p.type || \"default\") === false) {\n return;\n }\n if (_oneElementDef(\"target\", 1, this.targetEndpointDefinitions, _p.type || \"default\") === false) {\n return;\n }\n\n // last, ensure scopes match\n if (_p.sourceEndpoint && _p.targetEndpoint) {\n if (!_scopeMatch(_p.sourceEndpoint, _p.targetEndpoint)) {\n _p = null;\n }\n }\n\n return _p;\n }.bind(_currentInstance),\n\n _newConnection = function (params) {\n var connectionFunc = _currentInstance.Defaults.ConnectionType || _currentInstance.getDefaultConnectionType();\n\n params._jsPlumb = _currentInstance;\n params.newConnection = _newConnection;\n params.newEndpoint = _newEndpoint;\n params.endpointsByUUID = endpointsByUUID;\n params.endpointsByElement = endpointsByElement;\n params.finaliseConnection = _finaliseConnection;\n params.id = \"con_\" + _idstamp();\n var con = new connectionFunc(params);\n\n // if the connection is draggable, then maybe we need to tell the target endpoint to init the\n // dragging code. it won't run again if it already configured to be draggable.\n if (con.isDetachable()) {\n con.endpoints[0].initDraggable(\"_jsPlumbSource\");\n con.endpoints[1].initDraggable(\"_jsPlumbTarget\");\n }\n\n return con;\n },\n\n //\n // adds the connection to the backing model, fires an event if necessary and then redraws\n //\n _finaliseConnection = _currentInstance.finaliseConnection = function (jpc, params, originalEvent, doInformAnchorManager) {\n params = params || {};\n // add to list of connections (by scope).\n if (!jpc.suspendedEndpoint) {\n connections.push(jpc);\n }\n\n jpc.pending = null;\n\n // turn off isTemporarySource on the source endpoint (only viable on first draw)\n jpc.endpoints[0].isTemporarySource = false;\n\n // always inform the anchor manager\n // except that if jpc has a suspended endpoint it's not true to say the\n // connection is new; it has just (possibly) moved. the question is whether\n // to make that call here or in the anchor manager. i think perhaps here.\n if (doInformAnchorManager !== false) {\n _currentInstance.anchorManager.newConnection(jpc);\n }\n\n // force a paint\n _draw(jpc.source);\n\n // fire an event\n if (!params.doNotFireConnectionEvent && params.fireEvent !== false) {\n\n var eventArgs = {\n connection: jpc,\n source: jpc.source, target: jpc.target,\n sourceId: jpc.sourceId, targetId: jpc.targetId,\n sourceEndpoint: jpc.endpoints[0], targetEndpoint: jpc.endpoints[1]\n };\n\n _currentInstance.fire(\"connection\", eventArgs, originalEvent);\n }\n },\n\n /*\n factory method to prepare a new endpoint. this should always be used instead of creating Endpoints\n manually, since this method attaches event listeners and an id.\n */\n _newEndpoint = function (params, id) {\n var endpointFunc = _currentInstance.Defaults.EndpointType || jsPlumb.Endpoint;\n var _p = jsPlumb.extend({}, params);\n _p._jsPlumb = _currentInstance;\n _p.newConnection = _newConnection;\n _p.newEndpoint = _newEndpoint;\n _p.endpointsByUUID = endpointsByUUID;\n _p.endpointsByElement = endpointsByElement;\n _p.fireDetachEvent = fireDetachEvent;\n _p.elementId = id || _getId(_p.source);\n var ep = new endpointFunc(_p);\n ep.id = \"ep_\" + _idstamp();\n _manage(_p.elementId, _p.source);\n\n if (!jsPlumb.headless) {\n _currentInstance.getDragManager().endpointAdded(_p.source, id);\n }\n\n return ep;\n },\n\n /*\n * performs the given function operation on all the connections found\n * for the given element id; this means we find all the endpoints for\n * the given element, and then for each endpoint find the connectors\n * connected to it. then we pass each connection in to the given\n * function.\n */\n _operation = function (elId, func, endpointFunc) {\n var endpoints = endpointsByElement[elId];\n if (endpoints && endpoints.length) {\n for (var i = 0, ii = endpoints.length; i < ii; i++) {\n for (var j = 0, jj = endpoints[i].connections.length; j < jj; j++) {\n var retVal = func(endpoints[i].connections[j]);\n // if the function passed in returns true, we exit.\n // most functions return false.\n if (retVal) {\n return;\n }\n }\n if (endpointFunc) {\n endpointFunc(endpoints[i]);\n }\n }\n }\n },\n\n _setDraggable = function (element, draggable) {\n return jsPlumb.each(element, function (el) {\n if (_currentInstance.isDragSupported(el)) {\n draggableStates[_currentInstance.getAttribute(el, \"id\")] = draggable;\n _currentInstance.setElementDraggable(el, draggable);\n }\n });\n },\n /*\n * private method to do the business of hiding/showing.\n *\n * @param el\n * either Id of the element in question or a library specific\n * object for the element.\n * @param state\n * String specifying a value for the css 'display' property\n * ('block' or 'none').\n */\n _setVisible = function (el, state, alsoChangeEndpoints) {\n state = state === \"block\";\n var endpointFunc = null;\n if (alsoChangeEndpoints) {\n endpointFunc = function (ep) {\n ep.setVisible(state, true, true);\n };\n }\n var info = _info(el);\n _operation(info.id, function (jpc) {\n if (state && alsoChangeEndpoints) {\n // this test is necessary because this functionality is new, and i wanted to maintain backwards compatibility.\n // this block will only set a connection to be visible if the other endpoint in the connection is also visible.\n var oidx = jpc.sourceId === info.id ? 1 : 0;\n if (jpc.endpoints[oidx].isVisible()) {\n jpc.setVisible(true);\n }\n }\n else { // the default behaviour for show, and what always happens for hide, is to just set the visibility without getting clever.\n jpc.setVisible(state);\n }\n }, endpointFunc);\n },\n /**\n * private method to do the business of toggling hiding/showing.\n */\n _toggleVisible = function (elId, changeEndpoints) {\n var endpointFunc = null;\n if (changeEndpoints) {\n endpointFunc = function (ep) {\n var state = ep.isVisible();\n ep.setVisible(!state);\n };\n }\n _operation(elId, function (jpc) {\n var state = jpc.isVisible();\n jpc.setVisible(!state);\n }, endpointFunc);\n },\n\n // TODO comparison performance\n _getCachedData = function (elId) {\n var o = offsets[elId];\n if (!o) {\n return _updateOffset({elId: elId});\n }\n else {\n return {o: o, s: sizes[elId]};\n }\n },\n\n /**\n * gets an id for the given element, creating and setting one if\n * necessary. the id is of the form\n *\n * jsPlumb_<instance index>_<index in instance>\n *\n * where \"index in instance\" is a monotonically increasing integer that starts at 0,\n * for each instance. this method is used not only to assign ids to elements that do not\n * have them but also to connections and endpoints.\n */\n _getId = function (element, uuid, doNotCreateIfNotFound) {\n if (_ju.isString(element)) {\n return element;\n }\n if (element == null) {\n return null;\n }\n var id = _currentInstance.getAttribute(element, \"id\");\n if (!id || id === \"undefined\") {\n // check if fixed uuid parameter is given\n if (arguments.length === 2 && arguments[1] !== undefined) {\n id = uuid;\n }\n else if (arguments.length === 1 || (arguments.length === 3 && !arguments[2])) {\n id = \"jsPlumb_\" + _instanceIndex + \"_\" + _idstamp();\n }\n\n if (!doNotCreateIfNotFound) {\n _currentInstance.setAttribute(element, \"id\", id);\n }\n }\n return id;\n };\n\n this.setConnectionBeingDragged = function (v) {\n connectionBeingDragged = v;\n };\n this.isConnectionBeingDragged = function () {\n return connectionBeingDragged;\n };\n\n /**\n * Returns a map of all the elements this jsPlumbInstance is currently managing.\n * @returns {Object} Map of [id-> {el, endpoint[], connection, position}] information.\n */\n this.getManagedElements = function() {\n return managedElements;\n };\n\n this.connectorClass = \"jtk-connector\";\n this.connectorOutlineClass = \"jtk-connector-outline\";\n this.connectedClass = \"jtk-connected\";\n this.hoverClass = \"jtk-hover\";\n this.endpointClass = \"jtk-endpoint\";\n this.endpointConnectedClass = \"jtk-endpoint-connected\";\n this.endpointFullClass = \"jtk-endpoint-full\";\n this.endpointDropAllowedClass = \"jtk-endpoint-drop-allowed\";\n this.endpointDropForbiddenClass = \"jtk-endpoint-drop-forbidden\";\n this.overlayClass = \"jtk-overlay\";\n this.draggingClass = \"jtk-dragging\";// CONVERTED\n this.elementDraggingClass = \"jtk-element-dragging\";// CONVERTED\n this.sourceElementDraggingClass = \"jtk-source-element-dragging\"; // CONVERTED\n this.targetElementDraggingClass = \"jtk-target-element-dragging\";// CONVERTED\n this.endpointAnchorClassPrefix = \"jtk-endpoint-anchor\";\n this.hoverSourceClass = \"jtk-source-hover\";\n this.hoverTargetClass = \"jtk-target-hover\";\n this.dragSelectClass = \"jtk-drag-select\";\n\n this.Anchors = {};\n this.Connectors = { \"svg\": {} };\n this.Endpoints = { \"svg\": {} };\n this.Overlays = { \"svg\": {} } ;\n this.ConnectorRenderers = {};\n this.SVG = \"svg\";\n\n// --------------------------- jsPlumbInstance public API ---------------------------------------------------------\n\n\n this.addEndpoint = function (el, params, referenceParams) {\n referenceParams = referenceParams || {};\n var p = jsPlumb.extend({}, referenceParams);\n jsPlumb.extend(p, params);\n p.endpoint = p.endpoint || _currentInstance.Defaults.Endpoint;\n p.paintStyle = p.paintStyle || _currentInstance.Defaults.EndpointStyle;\n\n var results = [],\n inputs = (_ju.isArray(el) || (el.length != null && !_ju.isString(el))) ? el : [ el ];\n\n for (var i = 0, j = inputs.length; i < j; i++) {\n p.source = _currentInstance.getElement(inputs[i]);\n _ensureContainer(p.source);\n\n var id = _getId(p.source), e = _newEndpoint(p, id);\n\n // ensure element is managed.\n var myOffset = _manage(id, p.source).info.o;\n _ju.addToList(endpointsByElement, id, e);\n\n if (!_suspendDrawing) {\n e.paint({\n anchorLoc: e.anchor.compute({ xy: [ myOffset.left, myOffset.top ], wh: sizes[id], element: e, timestamp: _suspendedAt }),\n timestamp: _suspendedAt\n });\n }\n\n results.push(e);\n }\n\n return results.length === 1 ? results[0] : results;\n };\n\n this.addEndpoints = function (el, endpoints, referenceParams) {\n var results = [];\n for (var i = 0, j = endpoints.length; i < j; i++) {\n var e = _currentInstance.addEndpoint(el, endpoints[i], referenceParams);\n if (_ju.isArray(e)) {\n Array.prototype.push.apply(results, e);\n }\n else {\n results.push(e);\n }\n }\n return results;\n };\n\n this.animate = function (el, properties, options) {\n if (!this.animationSupported) {\n return false;\n }\n\n options = options || {};\n var del = _currentInstance.getElement(el),\n id = _getId(del),\n stepFunction = jsPlumb.animEvents.step,\n completeFunction = jsPlumb.animEvents.complete;\n\n options[stepFunction] = _ju.wrap(options[stepFunction], function () {\n _currentInstance.revalidate(id);\n });\n\n // onComplete repaints, just to make sure everything looks good at the end of the animation.\n options[completeFunction] = _ju.wrap(options[completeFunction], function () {\n _currentInstance.revalidate(id);\n });\n\n _currentInstance.doAnimate(del, properties, options);\n };\n\n /**\n * checks for a listener for the given condition, executing it if found, passing in the given value.\n * condition listeners would have been attached using \"bind\" (which is, you could argue, now overloaded, since\n * firing click events etc is a bit different to what this does). i thought about adding a \"bindCondition\"\n * or something, but decided against it, for the sake of simplicity. jsPlumb will never fire one of these\n * condition events anyway.\n */\n this.checkCondition = function (conditionName, args) {\n var l = _currentInstance.getListener(conditionName),\n r = true;\n\n if (l && l.length > 0) {\n var values = Array.prototype.slice.call(arguments, 1);\n try {\n for (var i = 0, j = l.length; i < j; i++) {\n r = r && l[i].apply(l[i], values);\n }\n }\n catch (e) {\n _ju.log(_currentInstance, \"cannot check condition [\" + conditionName + \"]\" + e);\n }\n }\n return r;\n };\n\n this.connect = function (params, referenceParams) {\n // prepare a final set of parameters to create connection with\n var _p = _prepareConnectionParams(params, referenceParams), jpc;\n // TODO probably a nicer return value if the connection was not made. _prepareConnectionParams\n // will return null (and log something) if either endpoint was full. what would be nicer is to\n // create a dedicated 'error' object.\n if (_p) {\n if (_p.source == null && _p.sourceEndpoint == null) {\n _ju.log(\"Cannot establish connection - source does not exist\");\n return;\n }\n if (_p.target == null && _p.targetEndpoint == null) {\n _ju.log(\"Cannot establish connection - target does not exist\");\n return;\n }\n _ensureContainer(_p.source);\n // create the connection. it is not yet registered\n jpc = _newConnection(_p);\n // now add it the model, fire an event, and redraw\n _finaliseConnection(jpc, _p);\n }\n return jpc;\n };\n\n var stTypes = [\n { el: \"source\", elId: \"sourceId\", epDefs: \"sourceEndpointDefinitions\" },\n { el: \"target\", elId: \"targetId\", epDefs: \"targetEndpointDefinitions\" }\n ];\n\n var _set = function (c, el, idx, doNotRepaint) {\n var ep, _st = stTypes[idx], cId = c[_st.elId], cEl = c[_st.el], sid, sep,\n oldEndpoint = c.endpoints[idx];\n\n var evtParams = {\n index: idx,\n originalSourceId: idx === 0 ? cId : c.sourceId,\n newSourceId: c.sourceId,\n originalTargetId: idx === 1 ? cId : c.targetId,\n newTargetId: c.targetId,\n connection: c\n };\n\n if (el.constructor === jsPlumb.Endpoint) {\n ep = el;\n ep.addConnection(c);\n el = ep.element;\n }\n else {\n sid = _getId(el);\n sep = this[_st.epDefs][sid];\n\n if (sid === c[_st.elId]) {\n ep = null; // dont change source/target if the element is already the one given.\n }\n else if (sep) {\n for (var t in sep) {\n if (!sep[t].enabled) {\n return;\n }\n ep = sep[t].endpoint != null && sep[t].endpoint._jsPlumb ? sep[t].endpoint : this.addEndpoint(el, sep[t].def);\n if (sep[t].uniqueEndpoint) {\n sep[t].endpoint = ep;\n }\n ep.addConnection(c);\n }\n }\n else {\n ep = c.makeEndpoint(idx === 0, el, sid);\n }\n }\n\n if (ep != null) {\n oldEndpoint.detachFromConnection(c);\n c.endpoints[idx] = ep;\n c[_st.el] = ep.element;\n c[_st.elId] = ep.elementId;\n evtParams[idx === 0 ? \"newSourceId\" : \"newTargetId\"] = ep.elementId;\n\n fireMoveEvent(evtParams);\n\n if (!doNotRepaint) {\n c.repaint();\n }\n }\n\n evtParams.element = el;\n return evtParams;\n\n }.bind(this);\n\n this.setSource = function (connection, el, doNotRepaint) {\n var p = _set(connection, el, 0, doNotRepaint);\n this.anchorManager.sourceChanged(p.originalSourceId, p.newSourceId, connection, p.el);\n };\n this.setTarget = function (connection, el, doNotRepaint) {\n var p = _set(connection, el, 1, doNotRepaint);\n this.anchorManager.updateOtherEndpoint(p.originalSourceId, p.originalTargetId, p.newTargetId, connection);\n };\n\n this.deleteEndpoint = function (object, dontUpdateHover, deleteAttachedObjects) {\n var endpoint = (typeof object === \"string\") ? endpointsByUUID[object] : object;\n if (endpoint) {\n _currentInstance.deleteObject({ endpoint: endpoint, dontUpdateHover: dontUpdateHover, deleteAttachedObjects:deleteAttachedObjects });\n }\n return _currentInstance;\n };\n\n this.deleteEveryEndpoint = function () {\n var _is = _currentInstance.setSuspendDrawing(true);\n for (var id in endpointsByElement) {\n var endpoints = endpointsByElement[id];\n if (endpoints && endpoints.length) {\n for (var i = 0, j = endpoints.length; i < j; i++) {\n _currentInstance.deleteEndpoint(endpoints[i], true);\n }\n }\n }\n endpointsByElement = {};\n managedElements = {};\n endpointsByUUID = {};\n offsets = {};\n offsetTimestamps = {};\n _currentInstance.anchorManager.reset();\n var dm = _currentInstance.getDragManager();\n if (dm) {\n dm.reset();\n }\n if (!_is) {\n _currentInstance.setSuspendDrawing(false);\n }\n return _currentInstance;\n };\n\n var fireDetachEvent = function (jpc, doFireEvent, originalEvent) {\n // may have been given a connection, or in special cases, an object\n var connType = _currentInstance.Defaults.ConnectionType || _currentInstance.getDefaultConnectionType(),\n argIsConnection = jpc.constructor === connType,\n params = argIsConnection ? {\n connection: jpc,\n source: jpc.source, target: jpc.target,\n sourceId: jpc.sourceId, targetId: jpc.targetId,\n sourceEndpoint: jpc.endpoints[0], targetEndpoint: jpc.endpoints[1]\n } : jpc;\n\n if (doFireEvent) {\n _currentInstance.fire(\"connectionDetached\", params, originalEvent);\n }\n\n // always fire this. used by internal jsplumb stuff.\n _currentInstance.fire(\"internal.connectionDetached\", params, originalEvent);\n\n _currentInstance.anchorManager.connectionDetached(params);\n };\n\n var fireMoveEvent = _currentInstance.fireMoveEvent = function (params, evt) {\n _currentInstance.fire(\"connectionMoved\", params, evt);\n };\n\n this.unregisterEndpoint = function (endpoint) {\n if (endpoint._jsPlumb.uuid) {\n endpointsByUUID[endpoint._jsPlumb.uuid] = null;\n }\n _currentInstance.anchorManager.deleteEndpoint(endpoint);\n // TODO at least replace this with a removeWithFunction call.\n for (var e in endpointsByElement) {\n var endpoints = endpointsByElement[e];\n if (endpoints) {\n var newEndpoints = [];\n for (var i = 0, j = endpoints.length; i < j; i++) {\n if (endpoints[i] !== endpoint) {\n newEndpoints.push(endpoints[i]);\n }\n }\n\n endpointsByElement[e] = newEndpoints;\n }\n if (endpointsByElement[e].length < 1) {\n delete endpointsByElement[e];\n }\n }\n };\n\n var IS_DETACH_ALLOWED = \"isDetachAllowed\";\n var BEFORE_DETACH = \"beforeDetach\";\n var CHECK_CONDITION = \"checkCondition\";\n\n /**\n * Deletes a Connection.\n * @method deleteConnection\n * @param connection Connection to delete\n * @param {Object} [params] Optional delete parameters\n * @param {Boolean} [params.doNotFireEvent=false] If true, a connection detached event will not be fired. Otherwise one will.\n * @param {Boolean} [params.force=false] If true, the connection will be deleted even if a beforeDetach interceptor tries to stop the deletion.\n * @returns {Boolean} True if the connection was deleted, false otherwise.\n */\n this.deleteConnection = function(connection, params) {\n\n if (connection != null) {\n params = params || {};\n\n if (params.force || _ju.functionChain(true, false, [\n [ connection.endpoints[0], IS_DETACH_ALLOWED, [ connection ] ],\n [ connection.endpoints[1], IS_DETACH_ALLOWED, [ connection ] ],\n [ connection, IS_DETACH_ALLOWED, [ connection ] ],\n [ _currentInstance, CHECK_CONDITION, [ BEFORE_DETACH, connection ] ]\n ])) {\n\n connection.setHover(false);\n fireDetachEvent(connection, !connection.pending && params.fireEvent !== false, params.originalEvent);\n\n connection.endpoints[0].detachFromConnection(connection);\n connection.endpoints[1].detachFromConnection(connection);\n _ju.removeWithFunction(connections, function (_c) {\n return connection.id === _c.id;\n });\n\n connection.cleanup();\n connection.destroy();\n return true;\n }\n }\n return false;\n };\n\n /**\n * Remove all Connections from all elements, but leaves Endpoints in place ((unless a connection is set to auto delete its Endpoints).\n * @method deleteEveryConnection\n * @param {Object} [params] optional params object for the call\n * @param {Boolean} [params.fireEvent=true] Whether or not to fire detach events\n * @param {Boolean} [params.forceDetach=false] If true, this call will ignore any `beforeDetach` interceptors.\n * @returns {Number} The number of connections that were deleted.\n */\n this.deleteEveryConnection = function (params) {\n params = params || {};\n var count = connections.length, deletedCount = 0;\n _currentInstance.batch(function () {\n for (var i = 0; i < count; i++) {\n deletedCount += _currentInstance.deleteConnection(connections[0], params) ? 1 : 0;\n }\n });\n return deletedCount;\n };\n\n /**\n * Removes all an element's Connections.\n * @method deleteConnectionsForElement\n * @param {Object} el Either the id of the element, or a selector for the element.\n * @param {Object} [params] Optional parameters.\n * @param {Boolean} [params.fireEvent=true] Whether or not to fire the detach event.\n * @param {Boolean} [params.forceDetach=false] If true, this call will ignore any `beforeDetach` interceptors.\n * @return {jsPlumbInstance} The current jsPlumb instance.\n */\n this.deleteConnectionsForElement = function (el, params) {\n params = params || {};\n el = _currentInstance.getElement(el);\n var id = _getId(el), endpoints = endpointsByElement[id];\n if (endpoints && endpoints.length) {\n for (var i = 0, j = endpoints.length; i < j; i++) {\n endpoints[i].deleteEveryConnection(params);\n }\n }\n return _currentInstance;\n };\n\n /// not public. but of course its exposed. how to change this.\n this.deleteObject = function (params) {\n var result = {\n endpoints: {},\n connections: {},\n endpointCount: 0,\n connectionCount: 0\n },\n deleteAttachedObjects = params.deleteAttachedObjects !== false;\n\n var unravelConnection = function (connection) {\n if (connection != null && result.connections[connection.id] == null) {\n if (!params.dontUpdateHover && connection._jsPlumb != null) {\n connection.setHover(false);\n }\n result.connections[connection.id] = connection;\n result.connectionCount++;\n }\n };\n var unravelEndpoint = function (endpoint) {\n if (endpoint != null && result.endpoints[endpoint.id] == null) {\n if (!params.dontUpdateHover && endpoint._jsPlumb != null) {\n endpoint.setHover(false);\n }\n result.endpoints[endpoint.id] = endpoint;\n result.endpointCount++;\n\n if (deleteAttachedObjects) {\n for (var i = 0; i < endpoint.connections.length; i++) {\n var c = endpoint.connections[i];\n unravelConnection(c);\n }\n }\n }\n };\n\n if (params.connection) {\n unravelConnection(params.connection);\n }\n else {\n unravelEndpoint(params.endpoint);\n }\n\n // loop through connections\n for (var i in result.connections) {\n var c = result.connections[i];\n if (c._jsPlumb) {\n _ju.removeWithFunction(connections, function (_c) {\n return c.id === _c.id;\n });\n\n fireDetachEvent(c, params.fireEvent === false ? false : !c.pending, params.originalEvent);\n var doNotCleanup = params.deleteAttachedObjects == null ? null : !params.deleteAttachedObjects;\n\n c.endpoints[0].detachFromConnection(c, null, doNotCleanup);\n c.endpoints[1].detachFromConnection(c, null, doNotCleanup);\n\n c.cleanup(true);\n c.destroy(true);\n }\n }\n\n // loop through endpoints\n for (var j in result.endpoints) {\n var e = result.endpoints[j];\n if (e._jsPlumb) {\n _currentInstance.unregisterEndpoint(e);\n // FIRE some endpoint deleted event?\n e.cleanup(true);\n e.destroy(true);\n }\n }\n\n return result;\n };\n\n\n // helpers for select/selectEndpoints\n var _setOperation = function (list, func, args, selector) {\n for (var i = 0, j = list.length; i < j; i++) {\n list[i][func].apply(list[i], args);\n }\n return selector(list);\n },\n _getOperation = function (list, func, args) {\n var out = [];\n for (var i = 0, j = list.length; i < j; i++) {\n out.push([ list[i][func].apply(list[i], args), list[i] ]);\n }\n return out;\n },\n setter = function (list, func, selector) {\n return function () {\n return _setOperation(list, func, arguments, selector);\n };\n },\n getter = function (list, func) {\n return function () {\n return _getOperation(list, func, arguments);\n };\n },\n prepareList = function (input, doNotGetIds) {\n var r = [];\n if (input) {\n if (typeof input === 'string') {\n if (input === \"*\") {\n return input;\n }\n r.push(input);\n }\n else {\n if (doNotGetIds) {\n r = input;\n }\n else {\n if (input.length) {\n for (var i = 0, j = input.length; i < j; i++) {\n r.push(_info(input[i]).id);\n }\n }\n else {\n r.push(_info(input).id);\n }\n }\n }\n }\n return r;\n },\n filterList = function (list, value, missingIsFalse) {\n if (list === \"*\") {\n return true;\n }\n return list.length > 0 ? list.indexOf(value) !== -1 : !missingIsFalse;\n };\n\n // get some connections, specifying source/target/scope\n this.getConnections = function (options, flat) {\n if (!options) {\n options = {};\n } else if (options.constructor === String) {\n options = { \"scope\": options };\n }\n var scope = options.scope || _currentInstance.getDefaultScope(),\n scopes = prepareList(scope, true),\n sources = prepareList(options.source),\n targets = prepareList(options.target),\n results = (!flat && scopes.length > 1) ? {} : [],\n _addOne = function (scope, obj) {\n if (!flat && scopes.length > 1) {\n var ss = results[scope];\n if (ss == null) {\n ss = results[scope] = [];\n }\n ss.push(obj);\n } else {\n results.push(obj);\n }\n };\n\n for (var j = 0, jj = connections.length; j < jj; j++) {\n var c = connections[j],\n sourceId = c.proxies && c.proxies[0] ? c.proxies[0].originalEp.elementId : c.sourceId,\n targetId = c.proxies && c.proxies[1] ? c.proxies[1].originalEp.elementId : c.targetId;\n\n if (filterList(scopes, c.scope) && filterList(sources, sourceId) && filterList(targets, targetId)) {\n _addOne(c.scope, c);\n }\n }\n\n return results;\n };\n\n var _curryEach = function (list, executor) {\n return function (f) {\n for (var i = 0, ii = list.length; i < ii; i++) {\n f(list[i]);\n }\n return executor(list);\n };\n },\n _curryGet = function (list) {\n return function (idx) {\n return list[idx];\n };\n };\n\n var _makeCommonSelectHandler = function (list, executor) {\n var out = {\n length: list.length,\n each: _curryEach(list, executor),\n get: _curryGet(list)\n },\n setters = [\"setHover\", \"removeAllOverlays\", \"setLabel\", \"addClass\", \"addOverlay\", \"removeOverlay\",\n \"removeOverlays\", \"showOverlay\", \"hideOverlay\", \"showOverlays\", \"hideOverlays\", \"setPaintStyle\",\n \"setHoverPaintStyle\", \"setSuspendEvents\", \"setParameter\", \"setParameters\", \"setVisible\",\n \"repaint\", \"addType\", \"toggleType\", \"removeType\", \"removeClass\", \"setType\", \"bind\", \"unbind\" ],\n\n getters = [\"getLabel\", \"getOverlay\", \"isHover\", \"getParameter\", \"getParameters\", \"getPaintStyle\",\n \"getHoverPaintStyle\", \"isVisible\", \"hasType\", \"getType\", \"isSuspendEvents\" ],\n i, ii;\n\n for (i = 0, ii = setters.length; i < ii; i++) {\n out[setters[i]] = setter(list, setters[i], executor);\n }\n\n for (i = 0, ii = getters.length; i < ii; i++) {\n out[getters[i]] = getter(list, getters[i]);\n }\n\n return out;\n };\n\n var _makeConnectionSelectHandler = function (list) {\n var common = _makeCommonSelectHandler(list, _makeConnectionSelectHandler);\n return jsPlumb.extend(common, {\n // setters\n setDetachable: setter(list, \"setDetachable\", _makeConnectionSelectHandler),\n setReattach: setter(list, \"setReattach\", _makeConnectionSelectHandler),\n setConnector: setter(list, \"setConnector\", _makeConnectionSelectHandler),\n delete: function () {\n for (var i = 0, ii = list.length; i < ii; i++) {\n _currentInstance.deleteConnection(list[i]);\n }\n },\n // getters\n isDetachable: getter(list, \"isDetachable\"),\n isReattach: getter(list, \"isReattach\")\n });\n };\n\n var _makeEndpointSelectHandler = function (list) {\n var common = _makeCommonSelectHandler(list, _makeEndpointSelectHandler);\n return jsPlumb.extend(common, {\n setEnabled: setter(list, \"setEnabled\", _makeEndpointSelectHandler),\n setAnchor: setter(list, \"setAnchor\", _makeEndpointSelectHandler),\n isEnabled: getter(list, \"isEnabled\"),\n deleteEveryConnection: function () {\n for (var i = 0, ii = list.length; i < ii; i++) {\n list[i].deleteEveryConnection();\n }\n },\n \"delete\": function () {\n for (var i = 0, ii = list.length; i < ii; i++) {\n _currentInstance.deleteEndpoint(list[i]);\n }\n }\n });\n };\n\n this.select = function (params) {\n params = params || {};\n params.scope = params.scope || \"*\";\n return _makeConnectionSelectHandler(params.connections || _currentInstance.getConnections(params, true));\n };\n\n this.selectEndpoints = function (params) {\n params = params || {};\n params.scope = params.scope || \"*\";\n var noElementFilters = !params.element && !params.source && !params.target,\n elements = noElementFilters ? \"*\" : prepareList(params.element),\n sources = noElementFilters ? \"*\" : prepareList(params.source),\n targets = noElementFilters ? \"*\" : prepareList(params.target),\n scopes = prepareList(params.scope, true);\n\n var ep = [];\n\n for (var el in endpointsByElement) {\n var either = filterList(elements, el, true),\n source = filterList(sources, el, true),\n sourceMatchExact = sources !== \"*\",\n target = filterList(targets, el, true),\n targetMatchExact = targets !== \"*\";\n\n // if they requested 'either' then just match scope. otherwise if they requested 'source' (not as a wildcard) then we have to match only endpoints that have isSource set to to true, and the same thing with isTarget.\n if (either || source || target) {\n inner:\n for (var i = 0, ii = endpointsByElement[el].length; i < ii; i++) {\n var _ep = endpointsByElement[el][i];\n if (filterList(scopes, _ep.scope, true)) {\n\n var noMatchSource = (sourceMatchExact && sources.length > 0 && !_ep.isSource),\n noMatchTarget = (targetMatchExact && targets.length > 0 && !_ep.isTarget);\n\n if (noMatchSource || noMatchTarget) {\n continue inner;\n }\n\n ep.push(_ep);\n }\n }\n }\n }\n\n return _makeEndpointSelectHandler(ep);\n };\n\n // get all connections managed by the instance of jsplumb.\n this.getAllConnections = function () {\n return connections;\n };\n this.getDefaultScope = function () {\n return DEFAULT_SCOPE;\n };\n // get an endpoint by uuid.\n this.getEndpoint = _getEndpoint;\n /**\n * Gets the list of Endpoints for a given element.\n * @method getEndpoints\n * @param {String|Element|Selector} el The element to get endpoints for.\n * @return {Endpoint[]} An array of Endpoints for the specified element.\n */\n this.getEndpoints = function (el) {\n return endpointsByElement[_info(el).id] || [];\n };\n // gets the default endpoint type. used when subclassing. see wiki.\n this.getDefaultEndpointType = function () {\n return jsPlumb.Endpoint;\n };\n // gets the default connection type. used when subclassing. see wiki.\n this.getDefaultConnectionType = function () {\n return jsPlumb.Connection;\n };\n /*\n * Gets an element's id, creating one if necessary. really only exposed\n * for the lib-specific functionality to access; would be better to pass\n * the current instance into the lib-specific code (even though this is\n * a static call. i just don't want to expose it to the public API).\n */\n this.getId = _getId;\n this.draw = _draw;\n this.info = _info;\n\n this.appendElement = _appendElement;\n\n var _hoverSuspended = false;\n this.isHoverSuspended = function () {\n return _hoverSuspended;\n };\n this.setHoverSuspended = function (s) {\n _hoverSuspended = s;\n };\n\n // set an element's connections to be hidden\n this.hide = function (el, changeEndpoints) {\n _setVisible(el, \"none\", changeEndpoints);\n return _currentInstance;\n };\n\n // exposed for other objects to use to get a unique id.\n this.idstamp = _idstamp;\n\n // ensure that, if the current container exists, it is a DOM element and not a selector.\n // if it does not exist and `candidate` is supplied, the offset parent of that element will be set as the Container.\n // this is used to do a better default behaviour for the case that the user has not set a container:\n // addEndpoint, makeSource, makeTarget and connect all call this method with the offsetParent of the\n // element in question (for connect it is the source element). So if no container is set, it is inferred\n // to be the offsetParent of the first element the user tries to connect.\n var _ensureContainer = function (candidate) {\n if (!_container && candidate) {\n var can = _currentInstance.getElement(candidate);\n if (can.offsetParent) {\n _currentInstance.setContainer(can.offsetParent);\n }\n }\n };\n\n var _getContainerFromDefaults = function () {\n if (_currentInstance.Defaults.Container) {\n _currentInstance.setContainer(_currentInstance.Defaults.Container);\n }\n };\n\n // check if a given element is managed or not. if not, add to our map. if drawing is not suspended then\n // we'll also stash its dimensions; otherwise we'll do this in a lazy way through updateOffset.\n var _manage = _currentInstance.manage = function (id, element, _transient) {\n if (!managedElements[id]) {\n managedElements[id] = {\n el: element,\n endpoints: [],\n connections: []\n };\n\n managedElements[id].info = _updateOffset({ elId: id, timestamp: _suspendedAt });\n _currentInstance.addClass(element, \"jtk-managed\");\n if (!_transient) {\n _currentInstance.fire(\"manageElement\", { id:id, info:managedElements[id].info, el:element });\n }\n }\n\n return managedElements[id];\n };\n\n var _unmanage = _currentInstance.unmanage = function(id) {\n if (managedElements[id]) {\n _currentInstance.removeClass(managedElements[id].el, \"jtk-managed\");\n delete managedElements[id];\n _currentInstance.fire(\"unmanageElement\", id);\n }\n };\n\n /**\n * updates the offset and size for a given element, and stores the\n * values. if 'offset' is not null we use that (it would have been\n * passed in from a drag call) because it's faster; but if it is null,\n * or if 'recalc' is true in order to force a recalculation, we get the current values.\n * @method updateOffset\n */\n var _updateOffset = function (params) {\n\n var timestamp = params.timestamp, recalc = params.recalc, offset = params.offset, elId = params.elId, s;\n if (_suspendDrawing && !timestamp) {\n timestamp = _suspendedAt;\n }\n if (!recalc) {\n if (timestamp && timestamp === offsetTimestamps[elId]) {\n return {o: params.offset || offsets[elId], s: sizes[elId]};\n }\n }\n if (recalc || (!offset && offsets[elId] == null)) { // if forced repaint or no offset available, we recalculate.\n\n // get the current size and offset, and store them\n s = managedElements[elId] ? managedElements[elId].el : null;\n if (s != null) {\n sizes[elId] = _currentInstance.getSize(s);\n offsets[elId] = _currentInstance.getOffset(s);\n offsetTimestamps[elId] = timestamp;\n }\n } else {\n offsets[elId] = offset || offsets[elId];\n if (sizes[elId] == null) {\n s = managedElements[elId].el;\n if (s != null) {\n sizes[elId] = _currentInstance.getSize(s);\n }\n }\n offsetTimestamps[elId] = timestamp;\n }\n\n if (offsets[elId] && !offsets[elId].right) {\n offsets[elId].right = offsets[elId].left + sizes[elId][0];\n offsets[elId].bottom = offsets[elId].top + sizes[elId][1];\n offsets[elId].width = sizes[elId][0];\n offsets[elId].height = sizes[elId][1];\n offsets[elId].centerx = offsets[elId].left + (offsets[elId].width / 2);\n offsets[elId].centery = offsets[elId].top + (offsets[elId].height / 2);\n }\n\n return {o: offsets[elId], s: sizes[elId]};\n };\n\n this.updateOffset = _updateOffset;\n\n /**\n * callback from the current library to tell us to prepare ourselves (attach\n * mouse listeners etc; can't do that until the library has provided a bind method)\n */\n this.init = function () {\n if (!initialized) {\n _getContainerFromDefaults();\n _currentInstance.anchorManager = new root.jsPlumb.AnchorManager({jsPlumbInstance: _currentInstance});\n initialized = true;\n _currentInstance.fire(\"ready\", _currentInstance);\n }\n }.bind(this);\n\n this.log = log;\n this.jsPlumbUIComponent = jsPlumbUIComponent;\n\n /*\n * Creates an anchor with the given params.\n *\n *\n * Returns: The newly created Anchor.\n * Throws: an error if a named anchor was not found.\n */\n this.makeAnchor = function () {\n var pp, _a = function (t, p) {\n if (root.jsPlumb.Anchors[t]) {\n return new root.jsPlumb.Anchors[t](p);\n }\n if (!_currentInstance.Defaults.DoNotThrowErrors) {\n throw { msg: \"jsPlumb: unknown anchor type '\" + t + \"'\" };\n }\n };\n if (arguments.length === 0) {\n return null;\n }\n var specimen = arguments[0], elementId = arguments[1], jsPlumbInstance = arguments[2], newAnchor = null;\n // if it appears to be an anchor already...\n if (specimen.compute && specimen.getOrientation) {\n return specimen;\n } //TODO hazy here about whether it should be added or is already added somehow.\n // is it the name of an anchor type?\n else if (typeof specimen === \"string\") {\n newAnchor = _a(arguments[0], {elementId: elementId, jsPlumbInstance: _currentInstance});\n }\n // is it an array? it will be one of:\n // an array of [spec, params] - this defines a single anchor, which may be dynamic, but has parameters.\n // an array of arrays - this defines some dynamic anchors\n // an array of numbers - this defines a single anchor.\n else if (_ju.isArray(specimen)) {\n if (_ju.isArray(specimen[0]) || _ju.isString(specimen[0])) {\n // if [spec, params] format\n if (specimen.length === 2 && _ju.isObject(specimen[1])) {\n // if first arg is a string, its a named anchor with params\n if (_ju.isString(specimen[0])) {\n pp = root.jsPlumb.extend({elementId: elementId, jsPlumbInstance: _currentInstance}, specimen[1]);\n newAnchor = _a(specimen[0], pp);\n }\n // otherwise first arg is array, second is params. we treat as a dynamic anchor, which is fine\n // even if the first arg has only one entry. you could argue all anchors should be implicitly dynamic in fact.\n else {\n pp = root.jsPlumb.extend({elementId: elementId, jsPlumbInstance: _currentInstance, anchors: specimen[0]}, specimen[1]);\n newAnchor = new root.jsPlumb.DynamicAnchor(pp);\n }\n }\n else {\n newAnchor = new jsPlumb.DynamicAnchor({anchors: specimen, selector: null, elementId: elementId, jsPlumbInstance: _currentInstance});\n }\n\n }\n else {\n var anchorParams = {\n x: specimen[0], y: specimen[1],\n orientation: (specimen.length >= 4) ? [ specimen[2], specimen[3] ] : [0, 0],\n offsets: (specimen.length >= 6) ? [ specimen[4], specimen[5] ] : [ 0, 0 ],\n elementId: elementId,\n jsPlumbInstance: _currentInstance,\n cssClass: specimen.length === 7 ? specimen[6] : null\n };\n newAnchor = new root.jsPlumb.Anchor(anchorParams);\n newAnchor.clone = function () {\n return new root.jsPlumb.Anchor(anchorParams);\n };\n }\n }\n\n if (!newAnchor.id) {\n newAnchor.id = \"anchor_\" + _idstamp();\n }\n return newAnchor;\n };\n\n /**\n * makes a list of anchors from the given list of types or coords, eg\n * [\"TopCenter\", \"RightMiddle\", \"BottomCenter\", [0, 1, -1, -1] ]\n */\n this.makeAnchors = function (types, elementId, jsPlumbInstance) {\n var r = [];\n for (var i = 0, ii = types.length; i < ii; i++) {\n if (typeof types[i] === \"string\") {\n r.push(root.jsPlumb.Anchors[types[i]]({elementId: elementId, jsPlumbInstance: jsPlumbInstance}));\n }\n else if (_ju.isArray(types[i])) {\n r.push(_currentInstance.makeAnchor(types[i], elementId, jsPlumbInstance));\n }\n }\n return r;\n };\n\n /**\n * Makes a dynamic anchor from the given list of anchors (which may be in shorthand notation as strings or dimension arrays, or Anchor\n * objects themselves) and the given, optional, anchorSelector function (jsPlumb uses a default if this is not provided; most people will\n * not need to provide this - i think).\n */\n this.makeDynamicAnchor = function (anchors, anchorSelector) {\n return new root.jsPlumb.DynamicAnchor({anchors: anchors, selector: anchorSelector, elementId: null, jsPlumbInstance: _currentInstance});\n };\n\n// --------------------- makeSource/makeTarget ----------------------------------------------\n\n this.targetEndpointDefinitions = {};\n this.sourceEndpointDefinitions = {};\n\n var selectorFilter = function (evt, _el, selector, _instance, negate) {\n var t = evt.target || evt.srcElement, ok = false,\n sel = _instance.getSelector(_el, selector);\n for (var j = 0; j < sel.length; j++) {\n if (sel[j] === t) {\n ok = true;\n break;\n }\n }\n return negate ? !ok : ok;\n };\n\n var _makeElementDropHandler = function (elInfo, p, dropOptions, isSource, isTarget) {\n var proxyComponent = new jsPlumbUIComponent(p);\n var _drop = p._jsPlumb.EndpointDropHandler({\n jsPlumb: _currentInstance,\n enabled: function () {\n return elInfo.def.enabled;\n },\n isFull: function () {\n var targetCount = _currentInstance.select({target: elInfo.id}).length;\n return elInfo.def.maxConnections > 0 && targetCount >= elInfo.def.maxConnections;\n },\n element: elInfo.el,\n elementId: elInfo.id,\n isSource: isSource,\n isTarget: isTarget,\n addClass: function (clazz) {\n _currentInstance.addClass(elInfo.el, clazz);\n },\n removeClass: function (clazz) {\n _currentInstance.removeClass(elInfo.el, clazz);\n },\n onDrop: function (jpc) {\n var source = jpc.endpoints[0];\n source.anchor.unlock();\n },\n isDropAllowed: function () {\n return proxyComponent.isDropAllowed.apply(proxyComponent, arguments);\n },\n isRedrop:function(jpc) {\n return (jpc.suspendedElement != null && jpc.suspendedEndpoint != null && jpc.suspendedEndpoint.element === elInfo.el);\n },\n getEndpoint: function (jpc) {\n\n // make a new Endpoint for the target, or get it from the cache if uniqueEndpoint\n // is set. if its a redrop the new endpoint will be immediately cleaned up.\n\n var newEndpoint = elInfo.def.endpoint;\n\n // if no cached endpoint, or there was one but it has been cleaned up\n // (ie. detached), create a new one\n if (newEndpoint == null || newEndpoint._jsPlumb == null) {\n var eps = _currentInstance.deriveEndpointAndAnchorSpec(jpc.getType().join(\" \"), true);\n var pp = eps.endpoints ? root.jsPlumb.extend(p, {\n endpoint:elInfo.def.def.endpoint || eps.endpoints[1]\n }) :p;\n if (eps.anchors) {\n pp = root.jsPlumb.extend(pp, {\n anchor:elInfo.def.def.anchor || eps.anchors[1]\n });\n }\n newEndpoint = _currentInstance.addEndpoint(elInfo.el, pp);\n newEndpoint._mtNew = true;\n }\n\n if (p.uniqueEndpoint) {\n elInfo.def.endpoint = newEndpoint;\n }\n\n newEndpoint.setDeleteOnEmpty(true);\n\n // if connection is detachable, init the new endpoint to be draggable, to support that happening.\n if (jpc.isDetachable()) {\n newEndpoint.initDraggable();\n }\n\n // if the anchor has a 'positionFinder' set, then delegate to that function to find\n // out where to locate the anchor.\n if (newEndpoint.anchor.positionFinder != null) {\n var dropPosition = _currentInstance.getUIPosition(arguments, _currentInstance.getZoom()),\n elPosition = _currentInstance.getOffset(elInfo.el),\n elSize = _currentInstance.getSize(elInfo.el),\n ap = dropPosition == null ? [0,0] : newEndpoint.anchor.positionFinder(dropPosition, elPosition, elSize, newEndpoint.anchor.constructorParams);\n\n newEndpoint.anchor.x = ap[0];\n newEndpoint.anchor.y = ap[1];\n // now figure an orientation for it..kind of hard to know what to do actually. probably the best thing i can do is to\n // support specifying an orientation in the anchor's spec. if one is not supplied then i will make the orientation\n // be what will cause the most natural link to the source: it will be pointing at the source, but it needs to be\n // specified in one axis only, and so how to make that choice? i think i will use whichever axis is the one in which\n // the target is furthest away from the source.\n }\n\n return newEndpoint;\n },\n maybeCleanup: function (ep) {\n if (ep._mtNew && ep.connections.length === 0) {\n _currentInstance.deleteObject({endpoint: ep});\n }\n else {\n delete ep._mtNew;\n }\n }\n });\n\n // wrap drop events as needed and initialise droppable\n var dropEvent = root.jsPlumb.dragEvents.drop;\n dropOptions.scope = dropOptions.scope || (p.scope || _currentInstance.Defaults.Scope);\n dropOptions[dropEvent] = _ju.wrap(dropOptions[dropEvent], _drop, true);\n dropOptions.rank = p.rank || 0;\n\n // if target, return true from the over event. this will cause katavorio to stop setting drops to hover\n // if multipleDrop is set to false.\n if (isTarget) {\n dropOptions[root.jsPlumb.dragEvents.over] = function () { return true; };\n }\n\n // vanilla jsplumb only\n if (p.allowLoopback === false) {\n dropOptions.canDrop = function (_drag) {\n var de = _drag.getDragElement()._jsPlumbRelatedElement;\n return de !== elInfo.el;\n };\n }\n _currentInstance.initDroppable(elInfo.el, dropOptions, \"internal\");\n\n return _drop;\n\n };\n\n // see API docs\n this.makeTarget = function (el, params, referenceParams) {\n\n // put jsplumb ref into params without altering the params passed in\n var p = root.jsPlumb.extend({_jsPlumb: this}, referenceParams);\n root.jsPlumb.extend(p, params);\n\n var maxConnections = p.maxConnections || -1,\n\n _doOne = function (el) {\n\n // get the element's id and store the endpoint definition for it. jsPlumb.connect calls will look for one of these,\n // and use the endpoint definition if found.\n // decode the info for this element (id and element)\n var elInfo = _info(el),\n elid = elInfo.id,\n dropOptions = root.jsPlumb.extend({}, p.dropOptions || {}),\n type = p.connectionType || \"default\";\n\n this.targetEndpointDefinitions[elid] = this.targetEndpointDefinitions[elid] || {};\n\n _ensureContainer(elid);\n\n // if this is a group and the user has not mandated a rank, set to -1 so that Nodes takes\n // precedence.\n if (elInfo.el._isJsPlumbGroup && dropOptions.rank == null) {\n dropOptions.rank = -1;\n }\n\n // store the definition\n var _def = {\n def: root.jsPlumb.extend({}, p),\n uniqueEndpoint: p.uniqueEndpoint,\n maxConnections: maxConnections,\n enabled: true\n };\n\n if (p.createEndpoint) {\n _def.uniqueEndpoint = true;\n _def.endpoint = _currentInstance.addEndpoint(el, _def.def);\n _def.endpoint.setDeleteOnEmpty(false);\n }\n\n elInfo.def = _def;\n this.targetEndpointDefinitions[elid][type] = _def;\n _makeElementDropHandler(elInfo, p, dropOptions, p.isSource === true, true);\n // stash the definition on the drop\n elInfo.el._katavorioDrop[elInfo.el._katavorioDrop.length - 1].targetDef = _def;\n\n }.bind(this);\n\n // make an array if only given one element\n var inputs = el.length && el.constructor !== String ? el : [ el ];\n\n // register each one in the list.\n for (var i = 0, ii = inputs.length; i < ii; i++) {\n _doOne(inputs[i]);\n }\n\n return this;\n };\n\n // see api docs\n this.unmakeTarget = function (el, doNotClearArrays) {\n var info = _info(el);\n _currentInstance.destroyDroppable(info.el, \"internal\");\n if (!doNotClearArrays) {\n delete this.targetEndpointDefinitions[info.id];\n }\n\n return this;\n };\n\n // see api docs\n this.makeSource = function (el, params, referenceParams) {\n var p = root.jsPlumb.extend({_jsPlumb: this}, referenceParams);\n root.jsPlumb.extend(p, params);\n var type = p.connectionType || \"default\";\n var aae = _currentInstance.deriveEndpointAndAnchorSpec(type);\n p.endpoint = p.endpoint || aae.endpoints[0];\n p.anchor = p.anchor || aae.anchors[0];\n var maxConnections = p.maxConnections || -1,\n onMaxConnections = p.onMaxConnections,\n _doOne = function (elInfo) {\n // get the element's id and store the endpoint definition for it. jsPlumb.connect calls will look for one of these,\n // and use the endpoint definition if found.\n var elid = elInfo.id,\n _del = this.getElement(elInfo.el);\n\n this.sourceEndpointDefinitions[elid] = this.sourceEndpointDefinitions[elid] || {};\n _ensureContainer(elid);\n\n var _def = {\n def:root.jsPlumb.extend({}, p),\n uniqueEndpoint: p.uniqueEndpoint,\n maxConnections: maxConnections,\n enabled: true\n };\n\n if (p.createEndpoint) {\n _def.uniqueEndpoint = true;\n _def.endpoint = _currentInstance.addEndpoint(el, _def.def);\n _def.endpoint.setDeleteOnEmpty(false);\n }\n\n this.sourceEndpointDefinitions[elid][type] = _def;\n elInfo.def = _def;\n\n var stopEvent = root.jsPlumb.dragEvents.stop,\n dragEvent = root.jsPlumb.dragEvents.drag,\n dragOptions = root.jsPlumb.extend({ }, p.dragOptions || {}),\n existingDrag = dragOptions.drag,\n existingStop = dragOptions.stop,\n ep = null,\n endpointAddedButNoDragYet = false;\n\n // set scope if its not set in dragOptions but was passed in in params\n dragOptions.scope = dragOptions.scope || p.scope;\n\n dragOptions[dragEvent] = _ju.wrap(dragOptions[dragEvent], function () {\n if (existingDrag) {\n existingDrag.apply(this, arguments);\n }\n endpointAddedButNoDragYet = false;\n });\n\n dragOptions[stopEvent] = _ju.wrap(dragOptions[stopEvent], function () {\n\n if (existingStop) {\n existingStop.apply(this, arguments);\n }\n this.currentlyDragging = false;\n if (ep._jsPlumb != null) { // if not cleaned up...\n\n // reset the anchor to the anchor that was initially provided. the one we were using to drag\n // the connection was just a placeholder that was located at the place the user pressed the\n // mouse button to initiate the drag.\n var anchorDef = p.anchor || this.Defaults.Anchor,\n oldAnchor = ep.anchor,\n oldConnection = ep.connections[0];\n\n var newAnchor = this.makeAnchor(anchorDef, elid, this),\n _el = ep.element;\n\n // if the anchor has a 'positionFinder' set, then delegate to that function to find\n // out where to locate the anchor. issue 117.\n if (newAnchor.positionFinder != null) {\n var elPosition = _currentInstance.getOffset(_el),\n elSize = this.getSize(_el),\n dropPosition = { left: elPosition.left + (oldAnchor.x * elSize[0]), top: elPosition.top + (oldAnchor.y * elSize[1]) },\n ap = newAnchor.positionFinder(dropPosition, elPosition, elSize, newAnchor.constructorParams);\n\n newAnchor.x = ap[0];\n newAnchor.y = ap[1];\n }\n\n ep.setAnchor(newAnchor, true);\n ep.repaint();\n this.repaint(ep.elementId);\n if (oldConnection != null) {\n this.repaint(oldConnection.targetId);\n }\n }\n }.bind(this));\n\n // when the user presses the mouse, add an Endpoint, if we are enabled.\n var mouseDownListener = function (e) {\n // on right mouse button, abort.\n if (e.which === 3 || e.button === 2) {\n return;\n }\n\n // TODO store def on element.\n var def = this.sourceEndpointDefinitions[elid][type];\n\n // if disabled, return.\n if (!def.enabled) {\n return;\n }\n\n elid = this.getId(this.getElement(elInfo.el)); // elid might have changed since this method was called to configure the element.\n\n // if a filter was given, run it, and return if it says no.\n if (p.filter) {\n var r = _ju.isString(p.filter) ? selectorFilter(e, elInfo.el, p.filter, this, p.filterExclude) : p.filter(e, elInfo.el);\n if (r === false) {\n return;\n }\n }\n\n // if maxConnections reached\n var sourceCount = this.select({source: elid}).length;\n if (def.maxConnections >= 0 && (sourceCount >= def.maxConnections)) {\n if (onMaxConnections) {\n onMaxConnections({\n element: elInfo.el,\n maxConnections: maxConnections\n }, e);\n }\n return false;\n }\n\n // find the position on the element at which the mouse was pressed; this is where the endpoint\n // will be located.\n var elxy = root.jsPlumb.getPositionOnElement(e, _del, _zoom);\n\n // we need to override the anchor in here, and force 'isSource', but we don't want to mess with\n // the params passed in, because after a connection is established we're going to reset the endpoint\n // to have the anchor we were given.\n var tempEndpointParams = {};\n root.jsPlumb.extend(tempEndpointParams, p);\n tempEndpointParams.isTemporarySource = true;\n tempEndpointParams.anchor = [ elxy[0], elxy[1] , 0, 0];\n tempEndpointParams.dragOptions = dragOptions;\n\n if (def.def.scope) {\n tempEndpointParams.scope = def.def.scope;\n }\n\n ep = this.addEndpoint(elid, tempEndpointParams);\n endpointAddedButNoDragYet = true;\n ep.setDeleteOnEmpty(true);\n\n // if unique endpoint and it's already been created, push it onto the endpoint we create. at the end\n // of a successful connection we'll switch to that endpoint.\n // TODO this is the same code as the programmatic endpoints create on line 1050 ish\n if (def.uniqueEndpoint) {\n if (!def.endpoint) {\n def.endpoint = ep;\n ep.setDeleteOnEmpty(false);\n }\n else {\n ep.finalEndpoint = def.endpoint;\n }\n }\n\n var _delTempEndpoint = function () {\n // this mouseup event is fired only if no dragging occurred, by jquery and yui, but for mootools\n // it is fired even if dragging has occurred, in which case we would blow away a perfectly\n // legitimate endpoint, were it not for this check. the flag is set after adding an\n // endpoint and cleared in a drag listener we set in the dragOptions above.\n _currentInstance.off(ep.canvas, \"mouseup\", _delTempEndpoint);\n _currentInstance.off(elInfo.el, \"mouseup\", _delTempEndpoint);\n if (endpointAddedButNoDragYet) {\n endpointAddedButNoDragYet = false;\n _currentInstance.deleteEndpoint(ep);\n }\n };\n\n _currentInstance.on(ep.canvas, \"mouseup\", _delTempEndpoint);\n _currentInstance.on(elInfo.el, \"mouseup\", _delTempEndpoint);\n\n // optionally check for attributes to extract from the source element\n var payload = {};\n if (def.def.extract) {\n for (var att in def.def.extract) {\n var v = (e.srcElement || e.target).getAttribute(att);\n if (v) {\n payload[def.def.extract[att]] = v;\n }\n }\n }\n\n // and then trigger its mousedown event, which will kick off a drag, which will start dragging\n // a new connection from this endpoint.\n _currentInstance.trigger(ep.canvas, \"mousedown\", e, payload);\n\n _ju.consume(e);\n\n }.bind(this);\n\n this.on(elInfo.el, \"mousedown\", mouseDownListener);\n _def.trigger = mouseDownListener;\n\n // if a filter was provided, set it as a dragFilter on the element,\n // to prevent the element drag function from kicking in when we want to\n // drag a new connection\n if (p.filter && (_ju.isString(p.filter) || _ju.isFunction(p.filter))) {\n _currentInstance.setDragFilter(elInfo.el, p.filter);\n }\n\n var dropOptions = root.jsPlumb.extend({}, p.dropOptions || {});\n\n _makeElementDropHandler(elInfo, p, dropOptions, true, p.isTarget === true);\n\n }.bind(this);\n\n var inputs = el.length && el.constructor !== String ? el : [ el ];\n for (var i = 0, ii = inputs.length; i < ii; i++) {\n _doOne(_info(inputs[i]));\n }\n\n return this;\n };\n\n // see api docs\n this.unmakeSource = function (el, connectionType, doNotClearArrays) {\n var info = _info(el);\n _currentInstance.destroyDroppable(info.el, \"internal\");\n var eldefs = this.sourceEndpointDefinitions[info.id];\n if (eldefs) {\n for (var def in eldefs) {\n if (connectionType == null || connectionType === def) {\n var mouseDownListener = eldefs[def].trigger;\n if (mouseDownListener) {\n _currentInstance.off(info.el, \"mousedown\", mouseDownListener);\n }\n if (!doNotClearArrays) {\n delete this.sourceEndpointDefinitions[info.id][def];\n }\n }\n }\n }\n\n return this;\n };\n\n // see api docs\n this.unmakeEverySource = function () {\n for (var i in this.sourceEndpointDefinitions) {\n _currentInstance.unmakeSource(i, null, true);\n }\n\n this.sourceEndpointDefinitions = {};\n return this;\n };\n\n var _getScope = function (el, types, connectionType) {\n types = _ju.isArray(types) ? types : [ types ];\n var id = _getId(el);\n connectionType = connectionType || \"default\";\n for (var i = 0; i < types.length; i++) {\n var eldefs = this[types[i]][id];\n if (eldefs && eldefs[connectionType]) {\n return eldefs[connectionType].def.scope || this.Defaults.Scope;\n }\n }\n }.bind(this);\n\n var _setScope = function (el, scope, types, connectionType) {\n types = _ju.isArray(types) ? types : [ types ];\n var id = _getId(el);\n connectionType = connectionType || \"default\";\n for (var i = 0; i < types.length; i++) {\n var eldefs = this[types[i]][id];\n if (eldefs && eldefs[connectionType]) {\n eldefs[connectionType].def.scope = scope;\n }\n }\n\n }.bind(this);\n\n this.getScope = function (el, scope) {\n return _getScope(el, [ \"sourceEndpointDefinitions\", \"targetEndpointDefinitions\" ]);\n };\n this.getSourceScope = function (el) {\n return _getScope(el, \"sourceEndpointDefinitions\");\n };\n this.getTargetScope = function (el) {\n return _getScope(el, \"targetEndpointDefinitions\");\n };\n this.setScope = function (el, scope, connectionType) {\n this.setSourceScope(el, scope, connectionType);\n this.setTargetScope(el, scope, connectionType);\n };\n this.setSourceScope = function (el, scope, connectionType) {\n _setScope(el, scope, \"sourceEndpointDefinitions\", connectionType);\n // we get the source scope during the mousedown event, but we also want to set this.\n this.setDragScope(el, scope);\n };\n this.setTargetScope = function (el, scope, connectionType) {\n _setScope(el, scope, \"targetEndpointDefinitions\", connectionType);\n this.setDropScope(el, scope);\n };\n\n // see api docs\n this.unmakeEveryTarget = function () {\n for (var i in this.targetEndpointDefinitions) {\n _currentInstance.unmakeTarget(i, true);\n }\n\n this.targetEndpointDefinitions = {};\n return this;\n };\n\n // does the work of setting a source enabled or disabled.\n var _setEnabled = function (type, el, state, toggle, connectionType) {\n var a = type === \"source\" ? this.sourceEndpointDefinitions : this.targetEndpointDefinitions,\n originalState, info, newState;\n\n connectionType = connectionType || \"default\";\n\n // a selector or an array\n if (el.length && !_ju.isString(el)) {\n originalState = [];\n for (var i = 0, ii = el.length; i < ii; i++) {\n info = _info(el[i]);\n if (a[info.id] && a[info.id][connectionType]) {\n originalState[i] = a[info.id][connectionType].enabled;\n newState = toggle ? !originalState[i] : state;\n a[info.id][connectionType].enabled = newState;\n _currentInstance[newState ? \"removeClass\" : \"addClass\"](info.el, \"jtk-\" + type + \"-disabled\");\n }\n }\n }\n // otherwise a DOM element or a String ID.\n else {\n info = _info(el);\n var id = info.id;\n if (a[id] && a[id][connectionType]) {\n originalState = a[id][connectionType].enabled;\n newState = toggle ? !originalState : state;\n a[id][connectionType].enabled = newState;\n _currentInstance[newState ? \"removeClass\" : \"addClass\"](info.el, \"jtk-\" + type + \"-disabled\");\n }\n }\n return originalState;\n }.bind(this);\n\n var _first = function (el, fn) {\n if (_ju.isString(el) || !el.length) {\n return fn.apply(this, [ el ]);\n }\n else if (el.length) {\n return fn.apply(this, [ el[0] ]);\n }\n\n }.bind(this);\n\n this.toggleSourceEnabled = function (el, connectionType) {\n _setEnabled(\"source\", el, null, true, connectionType);\n return this.isSourceEnabled(el, connectionType);\n };\n\n this.setSourceEnabled = function (el, state, connectionType) {\n return _setEnabled(\"source\", el, state, null, connectionType);\n };\n this.isSource = function (el, connectionType) {\n connectionType = connectionType || \"default\";\n return _first(el, function (_el) {\n var eldefs = this.sourceEndpointDefinitions[_info(_el).id];\n return eldefs != null && eldefs[connectionType] != null;\n }.bind(this));\n };\n this.isSourceEnabled = function (el, connectionType) {\n connectionType = connectionType || \"default\";\n return _first(el, function (_el) {\n var sep = this.sourceEndpointDefinitions[_info(_el).id];\n return sep && sep[connectionType] && sep[connectionType].enabled === true;\n }.bind(this));\n };\n\n this.toggleTargetEnabled = function (el, connectionType) {\n _setEnabled(\"target\", el, null, true, connectionType);\n return this.isTargetEnabled(el, connectionType);\n };\n\n this.isTarget = function (el, connectionType) {\n connectionType = connectionType || \"default\";\n return _first(el, function (_el) {\n var eldefs = this.targetEndpointDefinitions[_info(_el).id];\n return eldefs != null && eldefs[connectionType] != null;\n }.bind(this));\n };\n this.isTargetEnabled = function (el, connectionType) {\n connectionType = connectionType || \"default\";\n return _first(el, function (_el) {\n var tep = this.targetEndpointDefinitions[_info(_el).id];\n return tep && tep[connectionType] && tep[connectionType].enabled === true;\n }.bind(this));\n };\n this.setTargetEnabled = function (el, state, connectionType) {\n return _setEnabled(\"target\", el, state, null, connectionType);\n };\n\n// --------------------- end makeSource/makeTarget ----------------------------------------------\n\n this.ready = function (fn) {\n _currentInstance.bind(\"ready\", fn);\n };\n\n var _elEach = function(el, fn) {\n // support both lists...\n if (typeof el === 'object' && el.length) {\n for (var i = 0, ii = el.length; i < ii; i++) {\n fn(el[i]);\n }\n }\n else {// ...and single strings or elements.\n fn(el);\n }\n\n return _currentInstance;\n };\n\n // repaint some element's endpoints and connections\n this.repaint = function (el, ui, timestamp) {\n return _elEach(el, function(_el) {\n _draw(_el, ui, timestamp);\n });\n };\n\n this.revalidate = function (el, timestamp, isIdAlready) {\n return _elEach(el, function(_el) {\n var elId = isIdAlready ? _el : _currentInstance.getId(_el);\n _currentInstance.updateOffset({ elId: elId, recalc: true, timestamp:timestamp });\n var dm = _currentInstance.getDragManager();\n if (dm) {\n dm.updateOffsets(elId);\n }\n _currentInstance.repaint(_el);\n });\n };\n\n // repaint every endpoint and connection.\n this.repaintEverything = function () {\n // TODO this timestamp causes continuous anchors to not repaint properly.\n // fix this. do not just take out the timestamp. it runs a lot faster with\n // the timestamp included.\n var timestamp = _timestamp(), elId;\n\n for (elId in endpointsByElement) {\n _currentInstance.updateOffset({ elId: elId, recalc: true, timestamp: timestamp });\n }\n\n for (elId in endpointsByElement) {\n _draw(elId, null, timestamp);\n }\n\n return this;\n };\n\n this.removeAllEndpoints = function (el, recurse, affectedElements) {\n affectedElements = affectedElements || [];\n var _one = function (_el) {\n var info = _info(_el),\n ebe = endpointsByElement[info.id],\n i, ii;\n\n if (ebe) {\n affectedElements.push(info);\n for (i = 0, ii = ebe.length; i < ii; i++) {\n _currentInstance.deleteEndpoint(ebe[i], false);\n }\n }\n delete endpointsByElement[info.id];\n\n if (recurse) {\n if (info.el && info.el.nodeType !== 3 && info.el.nodeType !== 8) {\n for (i = 0, ii = info.el.childNodes.length; i < ii; i++) {\n _one(info.el.childNodes[i]);\n }\n }\n }\n\n };\n _one(el);\n return this;\n };\n\n var _doRemove = function(info, affectedElements) {\n _currentInstance.removeAllEndpoints(info.id, true, affectedElements);\n var dm = _currentInstance.getDragManager();\n var _one = function(_info) {\n\n if (dm) {\n dm.elementRemoved(_info.id);\n }\n _currentInstance.anchorManager.clearFor(_info.id);\n _currentInstance.anchorManager.removeFloatingConnection(_info.id);\n\n if (_currentInstance.isSource(_info.el)) {\n _currentInstance.unmakeSource(_info.el);\n }\n if (_currentInstance.isTarget(_info.el)) {\n _currentInstance.unmakeTarget(_info.el);\n }\n _currentInstance.destroyDraggable(_info.el);\n _currentInstance.destroyDroppable(_info.el);\n\n\n delete _currentInstance.floatingConnections[_info.id];\n delete managedElements[_info.id];\n delete offsets[_info.id];\n if (_info.el) {\n _currentInstance.removeElement(_info.el);\n _info.el._jsPlumb = null;\n }\n };\n\n // remove all affected child elements\n for (var ae = 1; ae < affectedElements.length; ae++) {\n _one(affectedElements[ae]);\n }\n // and always remove the requested one from the dom.\n _one(info);\n };\n\n /**\n * Remove the given element, including cleaning up all endpoints registered for it.\n * This is exposed in the public API but also used internally by jsPlumb when removing the\n * element associated with a connection drag.\n */\n this.remove = function (el, doNotRepaint) {\n var info = _info(el), affectedElements = [];\n if (info.text) {\n info.el.parentNode.removeChild(info.el);\n }\n else if (info.id) {\n _currentInstance.batch(function () {\n _doRemove(info, affectedElements);\n }, doNotRepaint === true);\n }\n return _currentInstance;\n };\n\n this.empty = function (el, doNotRepaint) {\n var affectedElements = [];\n var _one = function(el, dontRemoveFocus) {\n var info = _info(el);\n if (info.text) {\n info.el.parentNode.removeChild(info.el);\n }\n else if (info.el) {\n while(info.el.childNodes.length > 0) {\n _one(info.el.childNodes[0]);\n }\n if (!dontRemoveFocus) {\n _doRemove(info, affectedElements);\n }\n }\n };\n\n _currentInstance.batch(function() {\n _one(el, true);\n }, doNotRepaint === false);\n\n return _currentInstance;\n };\n\n this.reset = function (doNotUnbindInstanceEventListeners) {\n _currentInstance.silently(function() {\n _hoverSuspended = false;\n _currentInstance.removeAllGroups();\n _currentInstance.removeGroupManager();\n _currentInstance.deleteEveryEndpoint();\n if (!doNotUnbindInstanceEventListeners) {\n _currentInstance.unbind();\n }\n this.targetEndpointDefinitions = {};\n this.sourceEndpointDefinitions = {};\n connections.length = 0;\n if (this.doReset) {\n this.doReset();\n }\n }.bind(this));\n };\n\n var _clearObject = function (obj) {\n if (obj.canvas && obj.canvas.parentNode) {\n obj.canvas.parentNode.removeChild(obj.canvas);\n }\n obj.cleanup();\n obj.destroy();\n };\n\n this.clear = function () {\n _currentInstance.select().each(_clearObject);\n _currentInstance.selectEndpoints().each(_clearObject);\n\n endpointsByElement = {};\n endpointsByUUID = {};\n };\n\n this.setDefaultScope = function (scope) {\n DEFAULT_SCOPE = scope;\n return _currentInstance;\n };\n\n this.deriveEndpointAndAnchorSpec = function(type, dontPrependDefault) {\n var bits = ((dontPrependDefault ? \"\" : \"default \") + type).split(/[\\s]/), eps = null, ep = null, a = null, as = null;\n for (var i = 0; i < bits.length; i++) {\n var _t = _currentInstance.getType(bits[i], \"connection\");\n if (_t) {\n if (_t.endpoints) {\n eps = _t.endpoints;\n }\n if (_t.endpoint) {\n ep = _t.endpoint;\n }\n if (_t.anchors) {\n as = _t.anchors;\n }\n if (_t.anchor) {\n a = _t.anchor;\n }\n }\n }\n return { endpoints: eps ? eps : [ ep, ep ], anchors: as ? as : [a, a ]};\n };\n\n // sets the id of some element, changing whatever we need to to keep track.\n this.setId = function (el, newId, doNotSetAttribute) {\n //\n var id;\n\n if (_ju.isString(el)) {\n id = el;\n }\n else {\n el = this.getElement(el);\n id = this.getId(el);\n }\n\n var sConns = this.getConnections({source: id, scope: '*'}, true),\n tConns = this.getConnections({target: id, scope: '*'}, true);\n\n newId = \"\" + newId;\n\n if (!doNotSetAttribute) {\n el = this.getElement(id);\n this.setAttribute(el, \"id\", newId);\n }\n else {\n el = this.getElement(newId);\n }\n\n endpointsByElement[newId] = endpointsByElement[id] || [];\n for (var i = 0, ii = endpointsByElement[newId].length; i < ii; i++) {\n endpointsByElement[newId][i].setElementId(newId);\n endpointsByElement[newId][i].setReferenceElement(el);\n }\n delete endpointsByElement[id];\n\n this.sourceEndpointDefinitions[newId] = this.sourceEndpointDefinitions[id];\n delete this.sourceEndpointDefinitions[id];\n this.targetEndpointDefinitions[newId] = this.targetEndpointDefinitions[id];\n delete this.targetEndpointDefinitions[id];\n\n this.anchorManager.changeId(id, newId);\n var dm = this.getDragManager();\n if (dm) {\n dm.changeId(id, newId);\n }\n managedElements[newId] = managedElements[id];\n delete managedElements[id];\n\n var _conns = function (list, epIdx, type) {\n for (var i = 0, ii = list.length; i < ii; i++) {\n list[i].endpoints[epIdx].setElementId(newId);\n list[i].endpoints[epIdx].setReferenceElement(el);\n list[i][type + \"Id\"] = newId;\n list[i][type] = el;\n }\n };\n _conns(sConns, 0, \"source\");\n _conns(tConns, 1, \"target\");\n\n this.repaint(newId);\n };\n\n this.setDebugLog = function (debugLog) {\n log = debugLog;\n };\n\n this.setSuspendDrawing = function (val, repaintAfterwards) {\n var curVal = _suspendDrawing;\n _suspendDrawing = val;\n if (val) {\n _suspendedAt = new Date().getTime();\n } else {\n _suspendedAt = null;\n }\n if (repaintAfterwards) {\n this.repaintEverything();\n }\n return curVal;\n };\n\n // returns whether or not drawing is currently suspended.\n this.isSuspendDrawing = function () {\n return _suspendDrawing;\n };\n\n // return timestamp for when drawing was suspended.\n this.getSuspendedAt = function () {\n return _suspendedAt;\n };\n\n this.batch = function (fn, doNotRepaintAfterwards) {\n var _wasSuspended = this.isSuspendDrawing();\n if (!_wasSuspended) {\n this.setSuspendDrawing(true);\n }\n try {\n fn();\n }\n catch (e) {\n _ju.log(\"Function run while suspended failed\", e);\n }\n if (!_wasSuspended) {\n this.setSuspendDrawing(false, !doNotRepaintAfterwards);\n }\n };\n\n this.doWhileSuspended = this.batch;\n\n this.getCachedData = _getCachedData;\n this.timestamp = _timestamp;\n this.show = function (el, changeEndpoints) {\n _setVisible(el, \"block\", changeEndpoints);\n return _currentInstance;\n };\n\n // TODO: update this method to return the current state.\n this.toggleVisible = _toggleVisible;\n this.addListener = this.bind;\n\n var floatingConnections = [];\n this.registerFloatingConnection = function(info, conn, ep) {\n floatingConnections[info.id] = conn;\n // only register for the target endpoint; we will not be dragging the source at any time\n // before this connection is either discarded or made into a permanent connection.\n _ju.addToList(endpointsByElement, info.id, ep);\n };\n this.getFloatingConnectionFor = function(id) {\n return floatingConnections[id];\n };\n };\n\n _ju.extend(root.jsPlumbInstance, _ju.EventGenerator, {\n setAttribute: function (el, a, v) {\n this.setAttribute(el, a, v);\n },\n getAttribute: function (el, a) {\n return this.getAttribute(root.jsPlumb.getElement(el), a);\n },\n convertToFullOverlaySpec: function(spec) {\n if (_ju.isString(spec)) {\n spec = [ spec, { } ];\n }\n spec[1].id = spec[1].id || _ju.uuid();\n return spec;\n },\n registerConnectionType: function (id, type) {\n this._connectionTypes[id] = root.jsPlumb.extend({}, type);\n if (type.overlays) {\n var to = {};\n for (var i = 0; i < type.overlays.length; i++) {\n // if a string, convert to object representation so that we can store the typeid on it.\n // also assign an id.\n var fo = this.convertToFullOverlaySpec(type.overlays[i]);\n to[fo[1].id] = fo;\n }\n this._connectionTypes[id].overlays = to;\n }\n },\n registerConnectionTypes: function (types) {\n for (var i in types) {\n this.registerConnectionType(i, types[i]);\n }\n },\n registerEndpointType: function (id, type) {\n this._endpointTypes[id] = root.jsPlumb.extend({}, type);\n if (type.overlays) {\n var to = {};\n for (var i = 0; i < type.overlays.length; i++) {\n // if a string, convert to object representation so that we can store the typeid on it.\n // also assign an id.\n var fo = this.convertToFullOverlaySpec(type.overlays[i]);\n to[fo[1].id] = fo;\n }\n this._endpointTypes[id].overlays = to;\n }\n },\n registerEndpointTypes: function (types) {\n for (var i in types) {\n this.registerEndpointType(i, types[i]);\n }\n },\n getType: function (id, typeDescriptor) {\n return typeDescriptor === \"connection\" ? this._connectionTypes[id] : this._endpointTypes[id];\n },\n setIdChanged: function (oldId, newId) {\n this.setId(oldId, newId, true);\n },\n // set parent: change the parent for some node and update all the registrations we need to.\n setParent: function (el, newParent) {\n var _dom = this.getElement(el),\n _id = this.getId(_dom),\n _pdom = this.getElement(newParent),\n _pid = this.getId(_pdom),\n dm = this.getDragManager();\n\n _dom.parentNode.removeChild(_dom);\n _pdom.appendChild(_dom);\n if (dm) {\n dm.setParent(_dom, _id, _pdom, _pid);\n }\n },\n extend: function (o1, o2, names) {\n var i;\n if (names) {\n for (i = 0; i < names.length; i++) {\n o1[names[i]] = o2[names[i]];\n }\n }\n else {\n for (i in o2) {\n o1[i] = o2[i];\n }\n }\n\n return o1;\n },\n floatingConnections: {},\n getFloatingAnchorIndex: function (jpc) {\n return jpc.endpoints[0].isFloating() ? 0 : jpc.endpoints[1].isFloating() ? 1 : -1;\n }\n });\n\n// --------------------- static instance + module registration -------------------------------------------\n\n// create static instance and assign to window if window exists.\n var jsPlumb = new jsPlumbInstance();\n // register on 'root' (lets us run on server or browser)\n root.jsPlumb = jsPlumb;\n // add 'getInstance' method to static instance\n jsPlumb.getInstance = function (_defaults, overrideFns) {\n var j = new jsPlumbInstance(_defaults);\n if (overrideFns) {\n for (var ovf in overrideFns) {\n j[ovf] = overrideFns[ovf];\n }\n }\n j.init();\n return j;\n };\n jsPlumb.each = function (spec, fn) {\n if (spec == null) {\n return;\n }\n if (typeof spec === \"string\") {\n fn(jsPlumb.getElement(spec));\n }\n else if (spec.length != null) {\n for (var i = 0; i < spec.length; i++) {\n fn(jsPlumb.getElement(spec[i]));\n }\n }\n else {\n fn(spec);\n } // assume it's an element.\n };\n\n // CommonJS\n if (typeof exports !== 'undefined') {\n exports.jsPlumb = jsPlumb;\n }\n\n// --------------------- end static instance + AMD registration -------------------------------------------\n\n}).call(typeof window !== 'undefined' ? window : this);\n\n/*\n * 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n *\n * Dual licensed under the MIT and GPL2 licenses.\n */\n;(function() {\n\n \"use strict\";\n var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;\n\n // ------------------------------ BEGIN OverlayCapablejsPlumbUIComponent --------------------------------------------\n\n var _internalLabelOverlayId = \"__label\",\n // this is a shortcut helper method to let people add a label as\n // overlay.\n _makeLabelOverlay = function (component, params) {\n\n var _params = {\n cssClass: params.cssClass,\n labelStyle: component.labelStyle,\n id: _internalLabelOverlayId,\n component: component,\n _jsPlumb: component._jsPlumb.instance // TODO not necessary, since the instance can be accessed through the component.\n },\n mergedParams = _jp.extend(_params, params);\n\n return new _jp.Overlays[component._jsPlumb.instance.getRenderMode()].Label(mergedParams);\n },\n _processOverlay = function (component, o) {\n var _newOverlay = null;\n if (_ju.isArray(o)) {\t// this is for the shorthand [\"Arrow\", { width:50 }] syntax\n // there's also a three arg version:\n // [\"Arrow\", { width:50 }, {location:0.7}]\n // which merges the 3rd arg into the 2nd.\n var type = o[0],\n // make a copy of the object so as not to mess up anyone else's reference...\n p = _jp.extend({component: component, _jsPlumb: component._jsPlumb.instance}, o[1]);\n if (o.length === 3) {\n _jp.extend(p, o[2]);\n }\n _newOverlay = new _jp.Overlays[component._jsPlumb.instance.getRenderMode()][type](p);\n } else if (o.constructor === String) {\n _newOverlay = new _jp.Overlays[component._jsPlumb.instance.getRenderMode()][o]({component: component, _jsPlumb: component._jsPlumb.instance});\n } else {\n _newOverlay = o;\n }\n\n _newOverlay.id = _newOverlay.id || _ju.uuid();\n component.cacheTypeItem(\"overlay\", _newOverlay, _newOverlay.id);\n component._jsPlumb.overlays[_newOverlay.id] = _newOverlay;\n\n return _newOverlay;\n };\n\n _jp.OverlayCapableJsPlumbUIComponent = function (params) {\n\n root.jsPlumbUIComponent.apply(this, arguments);\n this._jsPlumb.overlays = {};\n this._jsPlumb.overlayPositions = {};\n\n if (params.label) {\n this.getDefaultType().overlays[_internalLabelOverlayId] = [\"Label\", {\n label: params.label,\n location: params.labelLocation || this.defaultLabelLocation || 0.5,\n labelStyle: params.labelStyle || this._jsPlumb.instance.Defaults.LabelStyle,\n id:_internalLabelOverlayId\n }];\n }\n\n this.setListenerComponent = function (c) {\n if (this._jsPlumb) {\n for (var i in this._jsPlumb.overlays) {\n this._jsPlumb.overlays[i].setListenerComponent(c);\n }\n }\n };\n };\n\n _jp.OverlayCapableJsPlumbUIComponent.applyType = function (component, t) {\n if (t.overlays) {\n // loop through the ones in the type. if already present on the component,\n // dont remove or re-add.\n var keep = {}, i;\n\n for (i in t.overlays) {\n\n var existing = component._jsPlumb.overlays[t.overlays[i][1].id];\n if (existing) {\n // maybe update from data, if there were parameterised values for instance.\n existing.updateFrom(t.overlays[i][1]);\n keep[t.overlays[i][1].id] = true;\n }\n else {\n var c = component.getCachedTypeItem(\"overlay\", t.overlays[i][1].id);\n if (c != null) {\n c.reattach(component._jsPlumb.instance, component);\n c.setVisible(true);\n // maybe update from data, if there were parameterised values for instance.\n c.updateFrom(t.overlays[i][1]);\n component._jsPlumb.overlays[c.id] = c;\n }\n else {\n c = component.addOverlay(t.overlays[i], true);\n }\n keep[c.id] = true;\n }\n }\n\n // now loop through the full overlays and remove those that we dont want to keep\n for (i in component._jsPlumb.overlays) {\n if (keep[component._jsPlumb.overlays[i].id] == null) {\n component.removeOverlay(component._jsPlumb.overlays[i].id, true); // remove overlay but dont clean it up.\n // that would remove event listeners etc; overlays are never discarded by the types stuff, they are\n // just detached/reattached.\n }\n }\n }\n };\n\n _ju.extend(_jp.OverlayCapableJsPlumbUIComponent, root.jsPlumbUIComponent, {\n\n setHover: function (hover, ignoreAttachedElements) {\n if (this._jsPlumb && !this._jsPlumb.instance.isConnectionBeingDragged()) {\n for (var i in this._jsPlumb.overlays) {\n this._jsPlumb.overlays[i][hover ? \"addClass\" : \"removeClass\"](this._jsPlumb.instance.hoverClass);\n }\n }\n },\n addOverlay: function (overlay, doNotRepaint) {\n var o = _processOverlay(this, overlay);\n if (!doNotRepaint) {\n this.repaint();\n }\n return o;\n },\n getOverlay: function (id) {\n return this._jsPlumb.overlays[id];\n },\n getOverlays: function () {\n return this._jsPlumb.overlays;\n },\n hideOverlay: function (id) {\n var o = this.getOverlay(id);\n if (o) {\n o.hide();\n }\n },\n hideOverlays: function () {\n for (var i in this._jsPlumb.overlays) {\n this._jsPlumb.overlays[i].hide();\n }\n },\n showOverlay: function (id) {\n var o = this.getOverlay(id);\n if (o) {\n o.show();\n }\n },\n showOverlays: function () {\n for (var i in this._jsPlumb.overlays) {\n this._jsPlumb.overlays[i].show();\n }\n },\n removeAllOverlays: function (doNotRepaint) {\n for (var i in this._jsPlumb.overlays) {\n if (this._jsPlumb.overlays[i].cleanup) {\n this._jsPlumb.overlays[i].cleanup();\n }\n }\n\n this._jsPlumb.overlays = {};\n this._jsPlumb.overlayPositions = null;\n this._jsPlumb.overlayPlacements= {};\n if (!doNotRepaint) {\n this.repaint();\n }\n },\n removeOverlay: function (overlayId, dontCleanup) {\n var o = this._jsPlumb.overlays[overlayId];\n if (o) {\n o.setVisible(false);\n if (!dontCleanup && o.cleanup) {\n o.cleanup();\n }\n delete this._jsPlumb.overlays[overlayId];\n if (this._jsPlumb.overlayPositions) {\n delete this._jsPlumb.overlayPositions[overlayId];\n }\n\n if (this._jsPlumb.overlayPlacements) {\n delete this._jsPlumb.overlayPlacements[overlayId];\n }\n }\n },\n removeOverlays: function () {\n for (var i = 0, j = arguments.length; i < j; i++) {\n this.removeOverlay(arguments[i]);\n }\n },\n moveParent: function (newParent) {\n if (this.bgCanvas) {\n this.bgCanvas.parentNode.removeChild(this.bgCanvas);\n newParent.appendChild(this.bgCanvas);\n }\n\n if (this.canvas && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n newParent.appendChild(this.canvas);\n\n for (var i in this._jsPlumb.overlays) {\n if (this._jsPlumb.overlays[i].isAppendedAtTopLevel) {\n var el = this._jsPlumb.overlays[i].getElement();\n el.parentNode.removeChild(el);\n newParent.appendChild(el);\n }\n }\n }\n },\n getLabel: function () {\n var lo = this.getOverlay(_internalLabelOverlayId);\n return lo != null ? lo.getLabel() : null;\n },\n getLabelOverlay: function () {\n return this.getOverlay(_internalLabelOverlayId);\n },\n setLabel: function (l) {\n var lo = this.getOverlay(_internalLabelOverlayId);\n if (!lo) {\n var params = l.constructor === String || l.constructor === Function ? { label: l } : l;\n lo = _makeLabelOverlay(this, params);\n this._jsPlumb.overlays[_internalLabelOverlayId] = lo;\n }\n else {\n if (l.constructor === String || l.constructor === Function) {\n lo.setLabel(l);\n }\n else {\n if (l.label) {\n lo.setLabel(l.label);\n }\n if (l.location) {\n lo.setLocation(l.location);\n }\n }\n }\n\n if (!this._jsPlumb.instance.isSuspendDrawing()) {\n this.repaint();\n }\n },\n cleanup: function (force) {\n for (var i in this._jsPlumb.overlays) {\n this._jsPlumb.overlays[i].cleanup(force);\n this._jsPlumb.overlays[i].destroy(force);\n }\n if (force) {\n this._jsPlumb.overlays = {};\n this._jsPlumb.overlayPositions = null;\n }\n },\n setVisible: function (v) {\n this[v ? \"showOverlays\" : \"hideOverlays\"]();\n },\n setAbsoluteOverlayPosition: function (overlay, xy) {\n this._jsPlumb.overlayPositions[overlay.id] = xy;\n },\n getAbsoluteOverlayPosition: function (overlay) {\n return this._jsPlumb.overlayPositions ? this._jsPlumb.overlayPositions[overlay.id] : null;\n },\n _clazzManip:function(action, clazz, dontUpdateOverlays) {\n if (!dontUpdateOverlays) {\n for (var i in this._jsPlumb.overlays) {\n this._jsPlumb.overlays[i][action + \"Class\"](clazz);\n }\n }\n },\n addClass:function(clazz, dontUpdateOverlays) {\n this._clazzManip(\"add\", clazz, dontUpdateOverlays);\n },\n removeClass:function(clazz, dontUpdateOverlays) {\n this._clazzManip(\"remove\", clazz, dontUpdateOverlays);\n }\n });\n\n// ------------------------------ END OverlayCapablejsPlumbUIComponent --------------------------------------------\n\n}).call(typeof window !== 'undefined' ? window : this);\n\n/*\n * This file contains the code for Endpoints.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n * \n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n * \n * Dual licensed under the MIT and GPL2 licenses.\n */\n;(function () {\n\n \"use strict\";\n var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;\n\n // create the drag handler for a connection\n var _makeConnectionDragHandler = function (endpoint, placeholder, _jsPlumb) {\n var stopped = false;\n return {\n drag: function () {\n if (stopped) {\n stopped = false;\n return true;\n }\n\n if (placeholder.element) {\n var _ui = _jsPlumb.getUIPosition(arguments, _jsPlumb.getZoom());\n if (_ui != null) {\n _jsPlumb.setPosition(placeholder.element, _ui);\n }\n _jsPlumb.repaint(placeholder.element, _ui);\n // always repaint the source endpoint, because only continuous/dynamic anchors cause the endpoint\n // to be repainted, so static anchors need to be told (or the endpoint gets dragged around)\n endpoint.paint({anchorPoint:endpoint.anchor.getCurrentLocation({element:endpoint})});\n }\n },\n stopDrag: function () {\n stopped = true;\n }\n };\n };\n\n // creates a placeholder div for dragging purposes, adds it, and pre-computes its offset.\n var _makeDraggablePlaceholder = function (placeholder, _jsPlumb, ipco, ips) {\n var n = _jsPlumb.createElement(\"div\", { position : \"absolute\" });\n _jsPlumb.appendElement(n);\n var id = _jsPlumb.getId(n);\n _jsPlumb.setPosition(n, ipco);\n n.style.width = ips[0] + \"px\";\n n.style.height = ips[1] + \"px\";\n _jsPlumb.manage(id, n, true); // TRANSIENT MANAGE\n // create and assign an id, and initialize the offset.\n placeholder.id = id;\n placeholder.element = n;\n };\n\n // create a floating endpoint (for drag connections)\n var _makeFloatingEndpoint = function (paintStyle, referenceAnchor, endpoint, referenceCanvas, sourceElement, _jsPlumb, _newEndpoint, scope) {\n var floatingAnchor = new _jp.FloatingAnchor({ reference: referenceAnchor, referenceCanvas: referenceCanvas, jsPlumbInstance: _jsPlumb });\n //setting the scope here should not be the way to fix that mootools issue. it should be fixed by not\n // adding the floating endpoint as a droppable. that makes more sense anyway!\n // TRANSIENT MANAGE\n return _newEndpoint({\n paintStyle: paintStyle,\n endpoint: endpoint,\n anchor: floatingAnchor,\n source: sourceElement,\n scope: scope\n });\n };\n\n var typeParameters = [ \"connectorStyle\", \"connectorHoverStyle\", \"connectorOverlays\",\n \"connector\", \"connectionType\", \"connectorClass\", \"connectorHoverClass\" ];\n\n // a helper function that tries to find a connection to the given element, and returns it if so. if elementWithPrecedence is null,\n // or no connection to it is found, we return the first connection in our list.\n var findConnectionToUseForDynamicAnchor = function (ep, elementWithPrecedence) {\n var idx = 0;\n if (elementWithPrecedence != null) {\n for (var i = 0; i < ep.connections.length; i++) {\n if (ep.connections[i].sourceId === elementWithPrecedence || ep.connections[i].targetId === elementWithPrecedence) {\n idx = i;\n break;\n }\n }\n }\n\n return ep.connections[idx];\n };\n\n _jp.Endpoint = function (params) {\n var _jsPlumb = params._jsPlumb,\n _newConnection = params.newConnection,\n _newEndpoint = params.newEndpoint;\n\n this.idPrefix = \"_jsplumb_e_\";\n this.defaultLabelLocation = [ 0.5, 0.5 ];\n this.defaultOverlayKeys = [\"Overlays\", \"EndpointOverlays\"];\n _jp.OverlayCapableJsPlumbUIComponent.apply(this, arguments);\n\n// TYPE\n\n this.appendToDefaultType({\n connectionType:params.connectionType,\n maxConnections: params.maxConnections == null ? this._jsPlumb.instance.Defaults.MaxConnections : params.maxConnections, // maximum number of connections this endpoint can be the source of.,\n paintStyle: params.endpointStyle || params.paintStyle || params.style || this._jsPlumb.instance.Defaults.EndpointStyle || _jp.Defaults.EndpointStyle,\n hoverPaintStyle: params.endpointHoverStyle || params.hoverPaintStyle || this._jsPlumb.instance.Defaults.EndpointHoverStyle || _jp.Defaults.EndpointHoverStyle,\n connectorStyle: params.connectorStyle,\n connectorHoverStyle: params.connectorHoverStyle,\n connectorClass: params.connectorClass,\n connectorHoverClass: params.connectorHoverClass,\n connectorOverlays: params.connectorOverlays,\n connector: params.connector,\n connectorTooltip: params.connectorTooltip\n });\n\n// END TYPE\n\n this._jsPlumb.enabled = !(params.enabled === false);\n this._jsPlumb.visible = true;\n this.element = _jp.getElement(params.source);\n this._jsPlumb.uuid = params.uuid;\n this._jsPlumb.floatingEndpoint = null;\n var inPlaceCopy = null;\n if (this._jsPlumb.uuid) {\n params.endpointsByUUID[this._jsPlumb.uuid] = this;\n }\n this.elementId = params.elementId;\n this.dragProxy = params.dragProxy;\n\n this._jsPlumb.connectionCost = params.connectionCost;\n this._jsPlumb.connectionsDirected = params.connectionsDirected;\n this._jsPlumb.currentAnchorClass = \"\";\n this._jsPlumb.events = {};\n\n var deleteOnEmpty = params.deleteOnEmpty === true;\n this.setDeleteOnEmpty = function(d) {\n deleteOnEmpty = d;\n };\n\n var _updateAnchorClass = function () {\n // stash old, get new\n var oldAnchorClass = _jsPlumb.endpointAnchorClassPrefix + \"-\" + this._jsPlumb.currentAnchorClass;\n this._jsPlumb.currentAnchorClass = this.anchor.getCssClass();\n var anchorClass = _jsPlumb.endpointAnchorClassPrefix + (this._jsPlumb.currentAnchorClass ? \"-\" + this._jsPlumb.currentAnchorClass : \"\");\n\n this.removeClass(oldAnchorClass);\n this.addClass(anchorClass);\n // add and remove at the same time to reduce the number of reflows.\n _jp.updateClasses(this.element, anchorClass, oldAnchorClass);\n }.bind(this);\n\n this.prepareAnchor = function(anchorParams) {\n var a = this._jsPlumb.instance.makeAnchor(anchorParams, this.elementId, _jsPlumb);\n a.bind(\"anchorChanged\", function (currentAnchor) {\n this.fire(\"anchorChanged\", {endpoint: this, anchor: currentAnchor});\n _updateAnchorClass();\n }.bind(this));\n return a;\n };\n\n this.setPreparedAnchor = function(anchor, doNotRepaint) {\n this._jsPlumb.instance.continuousAnchorFactory.clear(this.elementId);\n this.anchor = anchor;\n _updateAnchorClass();\n\n if (!doNotRepaint) {\n this._jsPlumb.instance.repaint(this.elementId);\n }\n\n return this;\n };\n\n this.setAnchor = function (anchorParams, doNotRepaint) {\n var a = this.prepareAnchor(anchorParams);\n this.setPreparedAnchor(a, doNotRepaint);\n return this;\n };\n\n var internalHover = function (state) {\n if (this.connections.length > 0) {\n for (var i = 0; i < this.connections.length; i++) {\n this.connections[i].setHover(state, false);\n }\n }\n else {\n this.setHover(state);\n }\n }.bind(this);\n\n this.bind(\"mouseover\", function () {\n internalHover(true);\n });\n this.bind(\"mouseout\", function () {\n internalHover(false);\n });\n\n // ANCHOR MANAGER\n if (!params._transient) { // in place copies, for example, are transient. they will never need to be retrieved during a paint cycle, because they dont move, and then they are deleted.\n this._jsPlumb.instance.anchorManager.add(this, this.elementId);\n }\n\n this.prepareEndpoint = function(ep, typeId) {\n var _e = function (t, p) {\n var rm = _jsPlumb.getRenderMode();\n if (_jp.Endpoints[rm][t]) {\n return new _jp.Endpoints[rm][t](p);\n }\n if (!_jsPlumb.Defaults.DoNotThrowErrors) {\n throw { msg: \"jsPlumb: unknown endpoint type '\" + t + \"'\" };\n }\n };\n\n var endpointArgs = {\n _jsPlumb: this._jsPlumb.instance,\n cssClass: params.cssClass,\n container: params.container,\n tooltip: params.tooltip,\n connectorTooltip: params.connectorTooltip,\n endpoint: this\n };\n\n var endpoint;\n\n if (_ju.isString(ep)) {\n endpoint = _e(ep, endpointArgs);\n }\n else if (_ju.isArray(ep)) {\n endpointArgs = _ju.merge(ep[1], endpointArgs);\n endpoint = _e(ep[0], endpointArgs);\n }\n else {\n endpoint = ep.clone();\n }\n\n // assign a clone function using a copy of endpointArgs. this is used when a drag starts: the endpoint that was dragged is cloned,\n // and the clone is left in its place while the original one goes off on a magical journey.\n // the copy is to get around a closure problem, in which endpointArgs ends up getting shared by\n // the whole world.\n //var argsForClone = jsPlumb.extend({}, endpointArgs);\n endpoint.clone = function () {\n // TODO this, and the code above, can be refactored to be more dry.\n if (_ju.isString(ep)) {\n return _e(ep, endpointArgs);\n }\n else if (_ju.isArray(ep)) {\n endpointArgs = _ju.merge(ep[1], endpointArgs);\n return _e(ep[0], endpointArgs);\n }\n }.bind(this);\n\n endpoint.typeId = typeId;\n return endpoint;\n };\n\n this.setEndpoint = function(ep, doNotRepaint) {\n var _ep = this.prepareEndpoint(ep);\n this.setPreparedEndpoint(_ep, true);\n };\n\n this.setPreparedEndpoint = function (ep, doNotRepaint) {\n if (this.endpoint != null) {\n this.endpoint.cleanup();\n this.endpoint.destroy();\n }\n this.endpoint = ep;\n this.type = this.endpoint.type;\n this.canvas = this.endpoint.canvas;\n };\n\n _jp.extend(this, params, typeParameters);\n\n this.isSource = params.isSource || false;\n this.isTemporarySource = params.isTemporarySource || false;\n this.isTarget = params.isTarget || false;\n\n this.connections = params.connections || [];\n this.connectorPointerEvents = params[\"connector-pointer-events\"];\n\n this.scope = params.scope || _jsPlumb.getDefaultScope();\n this.timestamp = null;\n this.reattachConnections = params.reattach || _jsPlumb.Defaults.ReattachConnections;\n this.connectionsDetachable = _jsPlumb.Defaults.ConnectionsDetachable;\n if (params.connectionsDetachable === false || params.detachable === false) {\n this.connectionsDetachable = false;\n }\n this.dragAllowedWhenFull = params.dragAllowedWhenFull !== false;\n\n if (params.onMaxConnections) {\n this.bind(\"maxConnections\", params.onMaxConnections);\n }\n\n //\n // add a connection. not part of public API.\n //\n this.addConnection = function (connection) {\n this.connections.push(connection);\n this[(this.connections.length > 0 ? \"add\" : \"remove\") + \"Class\"](_jsPlumb.endpointConnectedClass);\n this[(this.isFull() ? \"add\" : \"remove\") + \"Class\"](_jsPlumb.endpointFullClass);\n };\n\n this.detachFromConnection = function (connection, idx, doNotCleanup) {\n idx = idx == null ? this.connections.indexOf(connection) : idx;\n if (idx >= 0) {\n this.connections.splice(idx, 1);\n this[(this.connections.length > 0 ? \"add\" : \"remove\") + \"Class\"](_jsPlumb.endpointConnectedClass);\n this[(this.isFull() ? \"add\" : \"remove\") + \"Class\"](_jsPlumb.endpointFullClass);\n }\n\n if (!doNotCleanup && deleteOnEmpty && this.connections.length === 0) {\n _jsPlumb.deleteObject({\n endpoint: this,\n fireEvent: false,\n deleteAttachedObjects: doNotCleanup !== true\n });\n }\n };\n\n this.deleteEveryConnection = function(params) {\n var c = this.connections.length;\n for (var i = 0; i < c; i++) {\n _jsPlumb.deleteConnection(this.connections[0], params);\n }\n };\n\n this.detachFrom = function (targetEndpoint, fireEvent, originalEvent) {\n var c = [];\n for (var i = 0; i < this.connections.length; i++) {\n if (this.connections[i].endpoints[1] === targetEndpoint || this.connections[i].endpoints[0] === targetEndpoint) {\n c.push(this.connections[i]);\n }\n }\n for (var j = 0, count = c.length; j < count; j++) {\n _jsPlumb.deleteConnection(c[0]);\n }\n return this;\n };\n\n this.getElement = function () {\n return this.element;\n };\n\n this.setElement = function (el) {\n var parentId = this._jsPlumb.instance.getId(el),\n curId = this.elementId;\n // remove the endpoint from the list for the current endpoint's element\n _ju.removeWithFunction(params.endpointsByElement[this.elementId], function (e) {\n return e.id === this.id;\n }.bind(this));\n this.element = _jp.getElement(el);\n this.elementId = _jsPlumb.getId(this.element);\n _jsPlumb.anchorManager.rehomeEndpoint(this, curId, this.element);\n _jsPlumb.dragManager.endpointAdded(this.element);\n _ju.addToList(params.endpointsByElement, parentId, this);\n return this;\n };\n\n /**\n * private but must be exposed.\n */\n this.makeInPlaceCopy = function () {\n var loc = this.anchor.getCurrentLocation({element: this}),\n o = this.anchor.getOrientation(this),\n acc = this.anchor.getCssClass(),\n inPlaceAnchor = {\n bind: function () {\n },\n compute: function () {\n return [ loc[0], loc[1] ];\n },\n getCurrentLocation: function () {\n return [ loc[0], loc[1] ];\n },\n getOrientation: function () {\n return o;\n },\n getCssClass: function () {\n return acc;\n }\n };\n\n return _newEndpoint({\n dropOptions: params.dropOptions,\n anchor: inPlaceAnchor,\n source: this.element,\n paintStyle: this.getPaintStyle(),\n endpoint: params.hideOnDrag ? \"Blank\" : this.endpoint,\n _transient: true,\n scope: this.scope,\n reference:this\n });\n };\n\n /**\n * returns a connection from the pool; used when dragging starts. just gets the head of the array if it can.\n */\n this.connectorSelector = function () {\n return this.connections[0];\n };\n\n this.setStyle = this.setPaintStyle;\n\n this.paint = function (params) {\n params = params || {};\n var timestamp = params.timestamp, recalc = !(params.recalc === false);\n if (!timestamp || this.timestamp !== timestamp) {\n\n var info = _jsPlumb.updateOffset({ elId: this.elementId, timestamp: timestamp });\n\n var xy = params.offset ? params.offset.o : info.o;\n if (xy != null) {\n var ap = params.anchorPoint, connectorPaintStyle = params.connectorPaintStyle;\n if (ap == null) {\n var wh = params.dimensions || info.s,\n anchorParams = { xy: [ xy.left, xy.top ], wh: wh, element: this, timestamp: timestamp };\n if (recalc && this.anchor.isDynamic && this.connections.length > 0) {\n var c = findConnectionToUseForDynamicAnchor(this, params.elementWithPrecedence),\n oIdx = c.endpoints[0] === this ? 1 : 0,\n oId = oIdx === 0 ? c.sourceId : c.targetId,\n oInfo = _jsPlumb.getCachedData(oId),\n oOffset = oInfo.o, oWH = oInfo.s;\n\n anchorParams.index = oIdx === 0 ? 1 : 0;\n anchorParams.connection = c;\n anchorParams.txy = [ oOffset.left, oOffset.top ];\n anchorParams.twh = oWH;\n anchorParams.tElement = c.endpoints[oIdx];\n } else if (this.connections.length > 0) {\n anchorParams.connection = this.connections[0];\n }\n ap = this.anchor.compute(anchorParams);\n }\n\n this.endpoint.compute(ap, this.anchor.getOrientation(this), this._jsPlumb.paintStyleInUse, connectorPaintStyle || this.paintStyleInUse);\n this.endpoint.paint(this._jsPlumb.paintStyleInUse, this.anchor);\n this.timestamp = timestamp;\n\n // paint overlays\n for (var i in this._jsPlumb.overlays) {\n if (this._jsPlumb.overlays.hasOwnProperty(i)) {\n var o = this._jsPlumb.overlays[i];\n if (o.isVisible()) {\n this._jsPlumb.overlayPlacements[i] = o.draw(this.endpoint, this._jsPlumb.paintStyleInUse);\n o.paint(this._jsPlumb.overlayPlacements[i]);\n }\n }\n }\n }\n }\n };\n\n this.getTypeDescriptor = function () {\n return \"endpoint\";\n };\n this.isVisible = function () {\n return this._jsPlumb.visible;\n };\n\n this.repaint = this.paint;\n\n var draggingInitialised = false;\n this.initDraggable = function () {\n\n // is this a connection source? we make it draggable and have the\n // drag listener maintain a connection with a floating endpoint.\n if (!draggingInitialised && _jp.isDragSupported(this.element)) {\n var placeholderInfo = { id: null, element: null },\n jpc = null,\n existingJpc = false,\n existingJpcParams = null,\n _dragHandler = _makeConnectionDragHandler(this, placeholderInfo, _jsPlumb),\n dragOptions = params.dragOptions || {},\n defaultOpts = {},\n startEvent = _jp.dragEvents.start,\n stopEvent = _jp.dragEvents.stop,\n dragEvent = _jp.dragEvents.drag,\n beforeStartEvent = _jp.dragEvents.beforeStart,\n payload;\n\n // respond to beforeStart from katavorio; this will have, optionally, a payload of attribute values\n // that were placed there by the makeSource mousedown listener.\n var beforeStart = function(beforeStartParams) {\n payload = beforeStartParams.e.payload || {};\n };\n\n var start = function (startParams) {\n\n// ------------- first, get a connection to drag. this may be null, in which case we are dragging a new one.\n\n jpc = this.connectorSelector();\n\n// -------------------------------- now a bunch of tests about whether or not to proceed -------------------------\n\n var _continue = true;\n // if not enabled, return\n if (!this.isEnabled()) {\n _continue = false;\n }\n // if no connection and we're not a source - or temporarily a source, as is the case with makeSource - return.\n if (jpc == null && !this.isSource && !this.isTemporarySource) {\n _continue = false;\n }\n // otherwise if we're full and not allowed to drag, also return false.\n if (this.isSource && this.isFull() && !(jpc != null && this.dragAllowedWhenFull)) {\n _continue = false;\n }\n // if the connection was setup as not detachable or one of its endpoints\n // was setup as connectionsDetachable = false, or Defaults.ConnectionsDetachable\n // is set to false...\n if (jpc != null && !jpc.isDetachable(this)) {\n // .. and the endpoint is full\n if (this.isFull()) {\n _continue = false;\n } else {\n // otherwise, if not full, set the connection to null, and we will now proceed\n // to drag a new connection.\n jpc = null;\n }\n }\n\n var beforeDrag = _jsPlumb.checkCondition(jpc == null ? \"beforeDrag\" : \"beforeStartDetach\", {\n endpoint:this,\n source:this.element,\n sourceId:this.elementId,\n connection:jpc\n });\n if (beforeDrag === false) {\n _continue = false;\n }\n // else we might have been given some data. we'll pass it in to a new connection as 'data'.\n // here we also merge in the optional payload we were given on mousedown.\n else if (typeof beforeDrag === \"object\") {\n _jp.extend(beforeDrag, payload || {});\n }\n else {\n // or if no beforeDrag data, maybe use the payload on its own.\n beforeDrag = payload || {};\n }\n\n if (_continue === false) {\n // this is for mootools and yui. returning false from this causes jquery to stop drag.\n // the events are wrapped in both mootools and yui anyway, but i don't think returning\n // false from the start callback would stop a drag.\n if (_jsPlumb.stopDrag) {\n _jsPlumb.stopDrag(this.canvas);\n }\n _dragHandler.stopDrag();\n return false;\n }\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n // ok to proceed.\n\n // clear hover for all connections for this endpoint before continuing.\n for (var i = 0; i < this.connections.length; i++) {\n this.connections[i].setHover(false);\n }\n\n this.addClass(\"endpointDrag\");\n _jsPlumb.setConnectionBeingDragged(true);\n\n // if we're not full but there was a connection, make it null. we'll create a new one.\n if (jpc && !this.isFull() && this.isSource) {\n jpc = null;\n }\n\n _jsPlumb.updateOffset({ elId: this.elementId });\n\n// ---------------- make the element we will drag around, and position it -----------------------------\n\n var ipco = this._jsPlumb.instance.getOffset(this.canvas),\n canvasElement = this.canvas,\n ips = this._jsPlumb.instance.getSize(this.canvas);\n\n _makeDraggablePlaceholder(placeholderInfo, _jsPlumb, ipco, ips);\n\n // store the id of the dragging div and the source element. the drop function will pick these up. \n _jsPlumb.setAttributes(this.canvas, {\n \"dragId\": placeholderInfo.id,\n \"elId\": this.elementId\n });\n\n// ------------------- create an endpoint that will be our floating endpoint ------------------------------------\n\n var endpointToFloat = this.dragProxy || this.endpoint;\n if (this.dragProxy == null && this.connectionType != null) {\n var aae = this._jsPlumb.instance.deriveEndpointAndAnchorSpec(this.connectionType);\n if (aae.endpoints[1]) {\n endpointToFloat = aae.endpoints[1];\n }\n }\n var centerAnchor = this._jsPlumb.instance.makeAnchor(\"Center\");\n centerAnchor.isFloating = true;\n this._jsPlumb.floatingEndpoint = _makeFloatingEndpoint(this.getPaintStyle(), centerAnchor, endpointToFloat, this.canvas, placeholderInfo.element, _jsPlumb, _newEndpoint, this.scope);\n var _savedAnchor = this._jsPlumb.floatingEndpoint.anchor;\n\n\n if (jpc == null) {\n\n this.setHover(false, false);\n // create a connection. one end is this endpoint, the other is a floating endpoint. \n jpc = _newConnection({\n sourceEndpoint: this,\n targetEndpoint: this._jsPlumb.floatingEndpoint,\n source: this.element, // for makeSource with parent option. ensure source element is represented correctly.\n target: placeholderInfo.element,\n anchors: [ this.anchor, this._jsPlumb.floatingEndpoint.anchor ],\n paintStyle: params.connectorStyle, // this can be null. Connection will use the default.\n hoverPaintStyle: params.connectorHoverStyle,\n connector: params.connector, // this can also be null. Connection will use the default.\n overlays: params.connectorOverlays,\n type: this.connectionType,\n cssClass: this.connectorClass,\n hoverClass: this.connectorHoverClass,\n scope:params.scope,\n data:beforeDrag\n });\n jpc.pending = true;\n jpc.addClass(_jsPlumb.draggingClass);\n this._jsPlumb.floatingEndpoint.addClass(_jsPlumb.draggingClass);\n this._jsPlumb.floatingEndpoint.anchor = _savedAnchor;\n // fire an event that informs that a connection is being dragged\n _jsPlumb.fire(\"connectionDrag\", jpc);\n\n // register the new connection on the drag manager. This connection, at this point, is 'pending',\n // and has as its target a temporary element (the 'placeholder'). If the connection subsequently\n // becomes established, the anchor manager is informed that the target of the connection has\n // changed.\n\n _jsPlumb.anchorManager.newConnection(jpc);\n\n } else {\n existingJpc = true;\n jpc.setHover(false);\n // new anchor idx\n var anchorIdx = jpc.endpoints[0].id === this.id ? 0 : 1;\n this.detachFromConnection(jpc, null, true); // detach from the connection while dragging is occurring. but dont cleanup automatically.\n\n // store the original scope (issue 57)\n var dragScope = _jsPlumb.getDragScope(canvasElement);\n _jsPlumb.setAttribute(this.canvas, \"originalScope\", dragScope);\n\n // fire an event that informs that a connection is being dragged. we do this before\n // replacing the original target with the floating element info.\n _jsPlumb.fire(\"connectionDrag\", jpc);\n\n // now we replace ourselves with the temporary div we created above:\n if (anchorIdx === 0) {\n existingJpcParams = [ jpc.source, jpc.sourceId, canvasElement, dragScope ];\n _jsPlumb.anchorManager.sourceChanged(jpc.endpoints[anchorIdx].elementId, placeholderInfo.id, jpc, placeholderInfo.element);\n\n } else {\n existingJpcParams = [ jpc.target, jpc.targetId, canvasElement, dragScope ];\n jpc.target = placeholderInfo.element;\n jpc.targetId = placeholderInfo.id;\n\n _jsPlumb.anchorManager.updateOtherEndpoint(jpc.sourceId, jpc.endpoints[anchorIdx].elementId, jpc.targetId, jpc);\n }\n\n // store the original endpoint and assign the new floating endpoint for the drag.\n jpc.suspendedEndpoint = jpc.endpoints[anchorIdx];\n\n // PROVIDE THE SUSPENDED ELEMENT, BE IT A SOURCE OR TARGET (ISSUE 39)\n jpc.suspendedElement = jpc.endpoints[anchorIdx].getElement();\n jpc.suspendedElementId = jpc.endpoints[anchorIdx].elementId;\n jpc.suspendedElementType = anchorIdx === 0 ? \"source\" : \"target\";\n\n jpc.suspendedEndpoint.setHover(false);\n this._jsPlumb.floatingEndpoint.referenceEndpoint = jpc.suspendedEndpoint;\n jpc.endpoints[anchorIdx] = this._jsPlumb.floatingEndpoint;\n\n jpc.addClass(_jsPlumb.draggingClass);\n this._jsPlumb.floatingEndpoint.addClass(_jsPlumb.draggingClass);\n }\n\n _jsPlumb.registerFloatingConnection(placeholderInfo, jpc, this._jsPlumb.floatingEndpoint);\n\n // // register it and register connection on it.\n // _jsPlumb.floatingConnections[placeholderInfo.id] = jpc;\n //\n // // only register for the target endpoint; we will not be dragging the source at any time\n // // before this connection is either discarded or made into a permanent connection.\n // _ju.addToList(params.endpointsByElement, placeholderInfo.id, this._jsPlumb.floatingEndpoint);\n\n\n // tell jsplumb about it\n _jsPlumb.currentlyDragging = true;\n }.bind(this);\n\n var stop = function () {\n _jsPlumb.setConnectionBeingDragged(false);\n\n if (jpc && jpc.endpoints != null) {\n // get the actual drop event (decode from library args to stop function)\n var originalEvent = _jsPlumb.getDropEvent(arguments);\n // unlock the other endpoint (if it is dynamic, it would have been locked at drag start)\n var idx = _jsPlumb.getFloatingAnchorIndex(jpc);\n jpc.endpoints[idx === 0 ? 1 : 0].anchor.unlock();\n // TODO: Dont want to know about css classes inside jsplumb, ideally.\n jpc.removeClass(_jsPlumb.draggingClass);\n\n // if we have the floating endpoint then the connection has not been dropped\n // on another endpoint. If it is a new connection we throw it away. If it is an\n // existing connection we check to see if we should reattach it, throwing it away\n // if not.\n if (this._jsPlumb && (jpc.deleteConnectionNow || jpc.endpoints[idx] === this._jsPlumb.floatingEndpoint)) {\n // 6a. if the connection was an existing one...\n if (existingJpc && jpc.suspendedEndpoint) {\n // fix for issue35, thanks Sylvain Gizard: when firing the detach event make sure the\n // floating endpoint has been replaced.\n if (idx === 0) {\n jpc.floatingElement = jpc.source;\n jpc.floatingId = jpc.sourceId;\n jpc.floatingEndpoint = jpc.endpoints[0];\n jpc.floatingIndex = 0;\n jpc.source = existingJpcParams[0];\n jpc.sourceId = existingJpcParams[1];\n } else {\n // keep a copy of the floating element; the anchor manager will want to clean up.\n jpc.floatingElement = jpc.target;\n jpc.floatingId = jpc.targetId;\n jpc.floatingEndpoint = jpc.endpoints[1];\n jpc.floatingIndex = 1;\n jpc.target = existingJpcParams[0];\n jpc.targetId = existingJpcParams[1];\n }\n\n var fe = this._jsPlumb.floatingEndpoint; // store for later removal.\n // restore the original scope (issue 57)\n _jsPlumb.setDragScope(existingJpcParams[2], existingJpcParams[3]);\n jpc.endpoints[idx] = jpc.suspendedEndpoint;\n // if the connection should be reattached, or the other endpoint refuses detach, then\n // reset the connection to its original state\n if (jpc.isReattach() || jpc._forceReattach || jpc._forceDetach || !_jsPlumb.deleteConnection(jpc, {originalEvent: originalEvent})) {\n\n jpc.setHover(false);\n jpc._forceDetach = null;\n jpc._forceReattach = null;\n this._jsPlumb.floatingEndpoint.detachFromConnection(jpc);\n jpc.suspendedEndpoint.addConnection(jpc);\n\n // TODO this code is duplicated in lots of places...and there is nothing external\n // in the code; it all refers to the connection itself. we could add a\n // `checkSanity(connection)` method to anchorManager that did this.\n if (idx === 1) {\n _jsPlumb.anchorManager.updateOtherEndpoint(jpc.sourceId, jpc.floatingId, jpc.targetId, jpc);\n }\n else {\n _jsPlumb.anchorManager.sourceChanged(jpc.floatingId, jpc.sourceId, jpc, jpc.source);\n }\n\n _jsPlumb.repaint(existingJpcParams[1]);\n }\n else {\n _jsPlumb.deleteObject({endpoint: fe});\n }\n }\n }\n\n // makeTargets sets this flag, to tell us we have been replaced and should delete this object.\n if (this.deleteAfterDragStop) {\n _jsPlumb.deleteObject({endpoint: this});\n }\n else {\n if (this._jsPlumb) {\n this.paint({recalc: false});\n }\n }\n\n // although the connection is no longer valid, there are use cases where this is useful.\n _jsPlumb.fire(\"connectionDragStop\", jpc, originalEvent);\n // fire this event to give people more fine-grained control (connectionDragStop fires a lot)\n if (jpc.pending) {\n _jsPlumb.fire(\"connectionAborted\", jpc, originalEvent);\n }\n // tell jsplumb that dragging is finished.\n _jsPlumb.currentlyDragging = false;\n jpc.suspendedElement = null;\n jpc.suspendedEndpoint = null;\n jpc = null;\n }\n\n // if no endpoints, jpc already cleaned up. but still we want to ensure we're reset properly.\n // remove the element associated with the floating endpoint\n // (and its associated floating endpoint and visual artefacts)\n if (placeholderInfo && placeholderInfo.element) {\n _jsPlumb.remove(placeholderInfo.element, false, false);\n }\n // remove the inplace copy\n if (inPlaceCopy) {\n _jsPlumb.deleteObject({endpoint: inPlaceCopy});\n }\n\n if (this._jsPlumb) {\n // make our canvas visible (TODO: hand off to library; we should not know about DOM)\n this.canvas.style.visibility = \"visible\";\n // unlock our anchor\n this.anchor.unlock();\n // clear floating anchor.\n this._jsPlumb.floatingEndpoint = null;\n }\n\n }.bind(this);\n\n dragOptions = _jp.extend(defaultOpts, dragOptions);\n dragOptions.scope = this.scope || dragOptions.scope;\n dragOptions[beforeStartEvent] = _ju.wrap(dragOptions[beforeStartEvent], beforeStart, false);\n dragOptions[startEvent] = _ju.wrap(dragOptions[startEvent], start, false);\n // extracted drag handler function so can be used by makeSource\n dragOptions[dragEvent] = _ju.wrap(dragOptions[dragEvent], _dragHandler.drag);\n dragOptions[stopEvent] = _ju.wrap(dragOptions[stopEvent], stop);\n dragOptions.multipleDrop = false;\n\n dragOptions.canDrag = function () {\n return this.isSource || this.isTemporarySource || (this.connections.length > 0 && this.connectionsDetachable !== false);\n }.bind(this);\n\n _jsPlumb.initDraggable(this.canvas, dragOptions, \"internal\");\n\n this.canvas._jsPlumbRelatedElement = this.element;\n\n draggingInitialised = true;\n }\n };\n\n var ep = params.endpoint || this._jsPlumb.instance.Defaults.Endpoint || _jp.Defaults.Endpoint;\n this.setEndpoint(ep, true);\n var anchorParamsToUse = params.anchor ? params.anchor : params.anchors ? params.anchors : (_jsPlumb.Defaults.Anchor || \"Top\");\n this.setAnchor(anchorParamsToUse, true);\n\n // finally, set type if it was provided\n var type = [ \"default\", (params.type || \"\")].join(\" \");\n this.addType(type, params.data, true);\n this.canvas = this.endpoint.canvas;\n this.canvas._jsPlumb = this;\n\n this.initDraggable();\n\n // pulled this out into a function so we can reuse it for the inPlaceCopy canvas; you can now drop detached connections\n // back onto the endpoint you detached it from.\n var _initDropTarget = function (canvas, isTransient, endpoint, referenceEndpoint) {\n\n if (_jp.isDropSupported(this.element)) {\n var dropOptions = params.dropOptions || _jsPlumb.Defaults.DropOptions || _jp.Defaults.DropOptions;\n dropOptions = _jp.extend({}, dropOptions);\n dropOptions.scope = dropOptions.scope || this.scope;\n var dropEvent = _jp.dragEvents.drop,\n overEvent = _jp.dragEvents.over,\n outEvent = _jp.dragEvents.out,\n _ep = this,\n drop = _jsPlumb.EndpointDropHandler({\n getEndpoint: function () {\n return _ep;\n },\n jsPlumb: _jsPlumb,\n enabled: function () {\n return endpoint != null ? endpoint.isEnabled() : true;\n },\n isFull: function () {\n return endpoint.isFull();\n },\n element: this.element,\n elementId: this.elementId,\n isSource: this.isSource,\n isTarget: this.isTarget,\n addClass: function (clazz) {\n _ep.addClass(clazz);\n },\n removeClass: function (clazz) {\n _ep.removeClass(clazz);\n },\n isDropAllowed: function () {\n return _ep.isDropAllowed.apply(_ep, arguments);\n },\n reference:referenceEndpoint,\n isRedrop:function(jpc, dhParams) {\n return jpc.suspendedEndpoint && dhParams.reference && (jpc.suspendedEndpoint.id === dhParams.reference.id);\n }\n });\n\n dropOptions[dropEvent] = _ju.wrap(dropOptions[dropEvent], drop, true);\n dropOptions[overEvent] = _ju.wrap(dropOptions[overEvent], function () {\n var draggable = _jp.getDragObject(arguments),\n id = _jsPlumb.getAttribute(_jp.getElement(draggable), \"dragId\"),\n _jpc = _jsPlumb.getFloatingConnectionFor(id);//_jsPlumb.floatingConnections[id];\n\n if (_jpc != null) {\n var idx = _jsPlumb.getFloatingAnchorIndex(_jpc);\n // here we should fire the 'over' event if we are a target and this is a new connection,\n // or we are the same as the floating endpoint.\n var _cont = (this.isTarget && idx !== 0) || (_jpc.suspendedEndpoint && this.referenceEndpoint && this.referenceEndpoint.id === _jpc.suspendedEndpoint.id);\n if (_cont) {\n var bb = _jsPlumb.checkCondition(\"checkDropAllowed\", {\n sourceEndpoint: _jpc.endpoints[idx],\n targetEndpoint: this,\n connection: _jpc\n });\n this[(bb ? \"add\" : \"remove\") + \"Class\"](_jsPlumb.endpointDropAllowedClass);\n this[(bb ? \"remove\" : \"add\") + \"Class\"](_jsPlumb.endpointDropForbiddenClass);\n _jpc.endpoints[idx].anchor.over(this.anchor, this);\n }\n }\n }.bind(this));\n\n dropOptions[outEvent] = _ju.wrap(dropOptions[outEvent], function () {\n var draggable = _jp.getDragObject(arguments),\n id = draggable == null ? null : _jsPlumb.getAttribute(_jp.getElement(draggable), \"dragId\"),\n _jpc = id ? _jsPlumb.getFloatingConnectionFor(id) : null;\n\n if (_jpc != null) {\n var idx = _jsPlumb.getFloatingAnchorIndex(_jpc);\n var _cont = (this.isTarget && idx !== 0) || (_jpc.suspendedEndpoint && this.referenceEndpoint && this.referenceEndpoint.id === _jpc.suspendedEndpoint.id);\n if (_cont) {\n this.removeClass(_jsPlumb.endpointDropAllowedClass);\n this.removeClass(_jsPlumb.endpointDropForbiddenClass);\n _jpc.endpoints[idx].anchor.out();\n }\n }\n }.bind(this));\n\n _jsPlumb.initDroppable(canvas, dropOptions, \"internal\", isTransient);\n }\n }.bind(this);\n\n // Initialise the endpoint's canvas as a drop target. The drop handler will take care of the logic of whether\n // something can actually be dropped.\n if (!this.anchor.isFloating) {\n _initDropTarget(this.canvas, !(params._transient || this.anchor.isFloating), this, params.reference);\n }\n\n return this;\n };\n\n _ju.extend(_jp.Endpoint, _jp.OverlayCapableJsPlumbUIComponent, {\n\n setVisible: function (v, doNotChangeConnections, doNotNotifyOtherEndpoint) {\n this._jsPlumb.visible = v;\n if (this.canvas) {\n this.canvas.style.display = v ? \"block\" : \"none\";\n }\n this[v ? \"showOverlays\" : \"hideOverlays\"]();\n if (!doNotChangeConnections) {\n for (var i = 0; i < this.connections.length; i++) {\n this.connections[i].setVisible(v);\n if (!doNotNotifyOtherEndpoint) {\n var oIdx = this === this.connections[i].endpoints[0] ? 1 : 0;\n // only change the other endpoint if this is its only connection.\n if (this.connections[i].endpoints[oIdx].connections.length === 1) {\n this.connections[i].endpoints[oIdx].setVisible(v, true, true);\n }\n }\n }\n }\n },\n getAttachedElements: function () {\n return this.connections;\n },\n applyType: function (t, doNotRepaint) {\n this.setPaintStyle(t.endpointStyle || t.paintStyle, doNotRepaint);\n this.setHoverPaintStyle(t.endpointHoverStyle || t.hoverPaintStyle, doNotRepaint);\n if (t.maxConnections != null) {\n this._jsPlumb.maxConnections = t.maxConnections;\n }\n if (t.scope) {\n this.scope = t.scope;\n }\n _jp.extend(this, t, typeParameters);\n if (t.cssClass != null && this.canvas) {\n this._jsPlumb.instance.addClass(this.canvas, t.cssClass);\n }\n _jp.OverlayCapableJsPlumbUIComponent.applyType(this, t);\n },\n isEnabled: function () {\n return this._jsPlumb.enabled;\n },\n setEnabled: function (e) {\n this._jsPlumb.enabled = e;\n },\n cleanup: function () {\n var anchorClass = this._jsPlumb.instance.endpointAnchorClassPrefix + (this._jsPlumb.currentAnchorClass ? \"-\" + this._jsPlumb.currentAnchorClass : \"\");\n _jp.removeClass(this.element, anchorClass);\n this.anchor = null;\n this.endpoint.cleanup(true);\n this.endpoint.destroy();\n this.endpoint = null;\n // drag/drop\n this._jsPlumb.instance.destroyDraggable(this.canvas, \"internal\");\n this._jsPlumb.instance.destroyDroppable(this.canvas, \"internal\");\n },\n setHover: function (h) {\n if (this.endpoint && this._jsPlumb && !this._jsPlumb.instance.isConnectionBeingDragged()) {\n this.endpoint.setHover(h);\n }\n },\n isFull: function () {\n return this._jsPlumb.maxConnections === 0 ? true : !(this.isFloating() || this._jsPlumb.maxConnections < 0 || this.connections.length < this._jsPlumb.maxConnections);\n },\n /**\n * private but needs to be exposed.\n */\n isFloating: function () {\n return this.anchor != null && this.anchor.isFloating;\n },\n isConnectedTo: function (endpoint) {\n var found = false;\n if (endpoint) {\n for (var i = 0; i < this.connections.length; i++) {\n if (this.connections[i].endpoints[1] === endpoint || this.connections[i].endpoints[0] === endpoint) {\n found = true;\n break;\n }\n }\n }\n return found;\n },\n getConnectionCost: function () {\n return this._jsPlumb.connectionCost;\n },\n setConnectionCost: function (c) {\n this._jsPlumb.connectionCost = c;\n },\n areConnectionsDirected: function () {\n return this._jsPlumb.connectionsDirected;\n },\n setConnectionsDirected: function (b) {\n this._jsPlumb.connectionsDirected = b;\n },\n setElementId: function (_elId) {\n this.elementId = _elId;\n this.anchor.elementId = _elId;\n },\n setReferenceElement: function (_el) {\n this.element = _jp.getElement(_el);\n },\n setDragAllowedWhenFull: function (allowed) {\n this.dragAllowedWhenFull = allowed;\n },\n equals: function (endpoint) {\n return this.anchor.equals(endpoint.anchor);\n },\n getUuid: function () {\n return this._jsPlumb.uuid;\n },\n computeAnchor: function (params) {\n return this.anchor.compute(params);\n }\n });\n\n root.jsPlumbInstance.prototype.EndpointDropHandler = function (dhParams) {\n return function (e) {\n\n var _jsPlumb = dhParams.jsPlumb;\n\n // remove the classes that are added dynamically. drop is neither forbidden nor allowed now that\n // the drop is finishing.\n dhParams.removeClass(_jsPlumb.endpointDropAllowedClass);\n dhParams.removeClass(_jsPlumb.endpointDropForbiddenClass);\n\n var originalEvent = _jsPlumb.getDropEvent(arguments),\n draggable = _jsPlumb.getDragObject(arguments),\n id = _jsPlumb.getAttribute(draggable, \"dragId\"),\n elId = _jsPlumb.getAttribute(draggable, \"elId\"),\n scope = _jsPlumb.getAttribute(draggable, \"originalScope\"),\n jpc = _jsPlumb.getFloatingConnectionFor(id);\n\n // if no active connection, bail.\n if (jpc == null) {\n return;\n }\n\n // calculate if this is an existing connection.\n var existingConnection = jpc.suspendedEndpoint != null;\n\n // if suspended endpoint exists but has been cleaned up, bail. This means it's an existing connection\n // that has been detached and will shortly be discarded.\n if (existingConnection && jpc.suspendedEndpoint._jsPlumb == null) {\n return;\n }\n\n // get the drop endpoint. for a normal connection this is just the one that would replace the currently\n // floating endpoint. for a makeTarget this is a new endpoint that is created on drop. But we leave that to\n // the handler to figure out.\n var _ep = dhParams.getEndpoint(jpc);\n\n // If we're not given an endpoint to use, bail.\n if (_ep == null) {\n return;\n }\n\n // if this is a drop back where the connection came from, mark it force reattach and\n // return; the stop handler will reattach. without firing an event.\n if (dhParams.isRedrop(jpc, dhParams)) {\n jpc._forceReattach = true;\n jpc.setHover(false);\n if (dhParams.maybeCleanup) {\n dhParams.maybeCleanup(_ep);\n }\n return;\n }\n\n // ensure we dont bother trying to drop sources on non-source eps, and same for target.\n var idx = _jsPlumb.getFloatingAnchorIndex(jpc);\n if ((idx === 0 && !dhParams.isSource)|| (idx === 1 && !dhParams.isTarget)){\n if (dhParams.maybeCleanup) {\n dhParams.maybeCleanup(_ep);\n }\n return;\n }\n\n if (dhParams.onDrop) {\n dhParams.onDrop(jpc);\n }\n\n // restore the original scope if necessary (issue 57)\n if (scope) {\n _jsPlumb.setDragScope(draggable, scope);\n }\n\n // if the target of the drop is full, fire an event (we abort below)\n // makeTarget: keep.\n var isFull = dhParams.isFull(e);\n if (isFull) {\n _ep.fire(\"maxConnections\", {\n endpoint: this,\n connection: jpc,\n maxConnections: _ep._jsPlumb.maxConnections\n }, originalEvent);\n }\n //\n // if endpoint enabled, not full, and matches the index of the floating endpoint...\n if (!isFull && dhParams.enabled()) {\n var _doContinue = true;\n\n // before testing for beforeDrop, reset the connection's source/target to be the actual DOM elements\n // involved (that is, stash any temporary stuff used for dragging. but we need to keep it around in\n // order that the anchor manager can clean things up properly).\n if (idx === 0) {\n jpc.floatingElement = jpc.source;\n jpc.floatingId = jpc.sourceId;\n jpc.floatingEndpoint = jpc.endpoints[0];\n jpc.floatingIndex = 0;\n jpc.source = dhParams.element;\n jpc.sourceId = dhParams.elementId;\n } else {\n jpc.floatingElement = jpc.target;\n jpc.floatingId = jpc.targetId;\n jpc.floatingEndpoint = jpc.endpoints[1];\n jpc.floatingIndex = 1;\n jpc.target = dhParams.element;\n jpc.targetId = dhParams.elementId;\n }\n\n // if this is an existing connection and detach is not allowed we won't continue. The connection's\n // endpoints have been reinstated; everything is back to how it was.\n if (existingConnection && jpc.suspendedEndpoint.id !== _ep.id) {\n if (!jpc.isDetachAllowed(jpc) || !jpc.endpoints[idx].isDetachAllowed(jpc) || !jpc.suspendedEndpoint.isDetachAllowed(jpc) || !_jsPlumb.checkCondition(\"beforeDetach\", jpc)) {\n _doContinue = false;\n }\n }\n\n// ------------ wrap the execution path in a function so we can support asynchronous beforeDrop\n\n var continueFunction = function (optionalData) {\n // remove this jpc from the current endpoint, which is a floating endpoint that we will\n // subsequently discard.\n jpc.endpoints[idx].detachFromConnection(jpc);\n\n // if there's a suspended endpoint, detach it from the connection.\n if (jpc.suspendedEndpoint) {\n jpc.suspendedEndpoint.detachFromConnection(jpc);\n }\n\n jpc.endpoints[idx] = _ep;\n _ep.addConnection(jpc);\n\n // copy our parameters in to the connection:\n var params = _ep.getParameters();\n for (var aParam in params) {\n jpc.setParameter(aParam, params[aParam]);\n }\n\n if (!existingConnection) {\n // if not an existing connection and\n if (params.draggable) {\n _jsPlumb.initDraggable(this.element, dhParams.dragOptions, \"internal\", _jsPlumb);\n }\n }\n else {\n var suspendedElementId = jpc.suspendedEndpoint.elementId;\n _jsPlumb.fireMoveEvent({\n index: idx,\n originalSourceId: idx === 0 ? suspendedElementId : jpc.sourceId,\n newSourceId: idx === 0 ? _ep.elementId : jpc.sourceId,\n originalTargetId: idx === 1 ? suspendedElementId : jpc.targetId,\n newTargetId: idx === 1 ? _ep.elementId : jpc.targetId,\n originalSourceEndpoint: idx === 0 ? jpc.suspendedEndpoint : jpc.endpoints[0],\n newSourceEndpoint: idx === 0 ? _ep : jpc.endpoints[0],\n originalTargetEndpoint: idx === 1 ? jpc.suspendedEndpoint : jpc.endpoints[1],\n newTargetEndpoint: idx === 1 ? _ep : jpc.endpoints[1],\n connection: jpc\n }, originalEvent);\n }\n\n if (idx === 1) {\n _jsPlumb.anchorManager.updateOtherEndpoint(jpc.sourceId, jpc.floatingId, jpc.targetId, jpc);\n }\n else {\n _jsPlumb.anchorManager.sourceChanged(jpc.floatingId, jpc.sourceId, jpc, jpc.source);\n }\n\n // when makeSource has uniqueEndpoint:true, we want to create connections with new endpoints\n // that are subsequently deleted. So makeSource sets `finalEndpoint`, which is the Endpoint to\n // which the connection should be attached. The `detachFromConnection` call below results in the\n // temporary endpoint being cleaned up.\n if (jpc.endpoints[0].finalEndpoint) {\n var _toDelete = jpc.endpoints[0];\n _toDelete.detachFromConnection(jpc);\n jpc.endpoints[0] = jpc.endpoints[0].finalEndpoint;\n jpc.endpoints[0].addConnection(jpc);\n }\n\n // if optionalData was given, merge it onto the connection's data.\n if (_ju.isObject(optionalData)) {\n jpc.mergeData(optionalData);\n }\n // finalise will inform the anchor manager and also add to\n // connectionsByScope if necessary.\n _jsPlumb.finaliseConnection(jpc, null, originalEvent, false);\n jpc.setHover(false);\n\n // SP continuous anchor flush\n _jsPlumb.revalidate(jpc.endpoints[0].element);\n\n }.bind(this);\n\n var dontContinueFunction = function () {\n // otherwise just put it back on the endpoint it was on before the drag.\n if (jpc.suspendedEndpoint) {\n jpc.endpoints[idx] = jpc.suspendedEndpoint;\n jpc.setHover(false);\n jpc._forceDetach = true;\n if (idx === 0) {\n jpc.source = jpc.suspendedEndpoint.element;\n jpc.sourceId = jpc.suspendedEndpoint.elementId;\n } else {\n jpc.target = jpc.suspendedEndpoint.element;\n jpc.targetId = jpc.suspendedEndpoint.elementId;\n }\n jpc.suspendedEndpoint.addConnection(jpc);\n\n // TODO checkSanity\n if (idx === 1) {\n _jsPlumb.anchorManager.updateOtherEndpoint(jpc.sourceId, jpc.floatingId, jpc.targetId, jpc);\n }\n else {\n _jsPlumb.anchorManager.sourceChanged(jpc.floatingId, jpc.sourceId, jpc, jpc.source);\n }\n\n _jsPlumb.repaint(jpc.sourceId);\n jpc._forceDetach = false;\n }\n };\n\n// --------------------------------------\n // now check beforeDrop. this will be available only on Endpoints that are setup to\n // have a beforeDrop condition (although, secretly, under the hood all Endpoints and\n // the Connection have them, because they are on jsPlumbUIComponent. shhh!), because\n // it only makes sense to have it on a target endpoint.\n _doContinue = _doContinue && dhParams.isDropAllowed(jpc.sourceId, jpc.targetId, jpc.scope, jpc, _ep);// && jpc.pending;\n\n if (_doContinue) {\n continueFunction(_doContinue);\n return true;\n }\n else {\n dontContinueFunction();\n }\n }\n\n if (dhParams.maybeCleanup) {\n dhParams.maybeCleanup(_ep);\n }\n\n _jsPlumb.currentlyDragging = false;\n };\n };\n}).call(typeof window !== 'undefined' ? window : this);\n\n/*\n * This file contains the code for Connections.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n *\n * Dual licensed under the MIT and GPL2 licenses.\n */\n;\n(function () {\n\n \"use strict\";\n var root = this,\n _jp = root.jsPlumb,\n _ju = root.jsPlumbUtil;\n\n var makeConnector = function (_jsPlumb, renderMode, connectorName, connectorArgs, forComponent) {\n // first make sure we have a cache for the specified renderer\n _jp.Connectors[renderMode] = _jp.Connectors[renderMode] || {};\n\n // now see if the one we want exists; if not we will try to make it\n if (_jp.Connectors[renderMode][connectorName] == null) {\n\n if (_jp.Connectors[connectorName] == null) {\n if (!_jsPlumb.Defaults.DoNotThrowErrors) {\n throw new TypeError(\"jsPlumb: unknown connector type '\" + connectorName + \"'\");\n } else {\n return null;\n }\n }\n\n _jp.Connectors[renderMode][connectorName] = function() {\n _jp.Connectors[connectorName].apply(this, arguments);\n _jp.ConnectorRenderers[renderMode].apply(this, arguments);\n };\n\n _ju.extend(_jp.Connectors[renderMode][connectorName], [ _jp.Connectors[connectorName], _jp.ConnectorRenderers[renderMode]]);\n\n }\n\n return new _jp.Connectors[renderMode][connectorName](connectorArgs, forComponent);\n },\n _makeAnchor = function (anchorParams, elementId, _jsPlumb) {\n return (anchorParams) ? _jsPlumb.makeAnchor(anchorParams, elementId, _jsPlumb) : null;\n },\n _updateConnectedClass = function (conn, element, _jsPlumb, remove) {\n if (element != null) {\n element._jsPlumbConnections = element._jsPlumbConnections || {};\n if (remove) {\n delete element._jsPlumbConnections[conn.id];\n }\n else {\n element._jsPlumbConnections[conn.id] = true;\n }\n\n if (_ju.isEmpty(element._jsPlumbConnections)) {\n _jsPlumb.removeClass(element, _jsPlumb.connectedClass);\n }\n else {\n _jsPlumb.addClass(element, _jsPlumb.connectedClass);\n }\n }\n };\n\n _jp.Connection = function (params) {\n var _newEndpoint = params.newEndpoint;\n\n this.id = params.id;\n this.connector = null;\n this.idPrefix = \"_jsplumb_c_\";\n this.defaultLabelLocation = 0.5;\n this.defaultOverlayKeys = [\"Overlays\", \"ConnectionOverlays\"];\n // if a new connection is the result of moving some existing connection, params.previousConnection\n // will have that Connection in it. listeners for the jsPlumbConnection event can look for that\n // member and take action if they need to.\n this.previousConnection = params.previousConnection;\n this.source = _jp.getElement(params.source);\n this.target = _jp.getElement(params.target);\n\n\n _jp.OverlayCapableJsPlumbUIComponent.apply(this, arguments);\n\n // sourceEndpoint and targetEndpoint override source/target, if they are present. but \n // source is not overridden if the Endpoint has declared it is not the final target of a connection;\n // instead we use the source that the Endpoint declares will be the final source element.\n if (params.sourceEndpoint) {\n this.source = params.sourceEndpoint.getElement();\n this.sourceId = params.sourceEndpoint.elementId;\n } else {\n this.sourceId = this._jsPlumb.instance.getId(this.source);\n }\n\n if (params.targetEndpoint) {\n this.target = params.targetEndpoint.getElement();\n this.targetId = params.targetEndpoint.elementId;\n } else {\n this.targetId = this._jsPlumb.instance.getId(this.target);\n }\n\n\n this.scope = params.scope; // scope may have been passed in to the connect call. if it wasn't, we will pull it from the source endpoint, after having initialised the endpoints. \n this.endpoints = [];\n this.endpointStyles = [];\n\n var _jsPlumb = this._jsPlumb.instance;\n\n _jsPlumb.manage(this.sourceId, this.source);\n _jsPlumb.manage(this.targetId, this.target);\n\n this._jsPlumb.visible = true;\n\n this._jsPlumb.params = {\n cssClass: params.cssClass,\n container: params.container,\n \"pointer-events\": params[\"pointer-events\"],\n editorParams: params.editorParams,\n overlays: params.overlays\n };\n this._jsPlumb.lastPaintedAt = null;\n\n // listen to mouseover and mouseout events passed from the container delegate.\n this.bind(\"mouseover\", function () {\n this.setHover(true);\n }.bind(this));\n this.bind(\"mouseout\", function () {\n this.setHover(false);\n }.bind(this));\n\n\n// INITIALISATION CODE\n\n this.makeEndpoint = function (isSource, el, elId, ep) {\n elId = elId || this._jsPlumb.instance.getId(el);\n return this.prepareEndpoint(_jsPlumb, _newEndpoint, this, ep, isSource ? 0 : 1, params, el, elId);\n };\n\n // if type given, get the endpoint definitions mapping to that type from the jsplumb instance, and use those.\n // we apply types at the end of this constructor but endpoints are only honoured in a type definition at\n // create time.\n if (params.type) {\n params.endpoints = params.endpoints || this._jsPlumb.instance.deriveEndpointAndAnchorSpec(params.type).endpoints;\n }\n\n var eS = this.makeEndpoint(true, this.source, this.sourceId, params.sourceEndpoint),\n eT = this.makeEndpoint(false, this.target, this.targetId, params.targetEndpoint);\n\n if (eS) {\n _ju.addToList(params.endpointsByElement, this.sourceId, eS);\n }\n if (eT) {\n _ju.addToList(params.endpointsByElement, this.targetId, eT);\n }\n // if scope not set, set it to be the scope for the source endpoint.\n if (!this.scope) {\n this.scope = this.endpoints[0].scope;\n }\n\n // if explicitly told to (or not to) delete endpoints when empty, override endpoint's preferences\n if (params.deleteEndpointsOnEmpty != null) {\n this.endpoints[0].setDeleteOnEmpty(params.deleteEndpointsOnEmpty);\n this.endpoints[1].setDeleteOnEmpty(params.deleteEndpointsOnEmpty);\n }\n\n// -------------------------- DEFAULT TYPE ---------------------------------------------\n\n // DETACHABLE\n var _detachable = _jsPlumb.Defaults.ConnectionsDetachable;\n if (params.detachable === false) {\n _detachable = false;\n }\n if (this.endpoints[0].connectionsDetachable === false) {\n _detachable = false;\n }\n if (this.endpoints[1].connectionsDetachable === false) {\n _detachable = false;\n }\n // REATTACH\n var _reattach = params.reattach || this.endpoints[0].reattachConnections || this.endpoints[1].reattachConnections || _jsPlumb.Defaults.ReattachConnections;\n\n this.appendToDefaultType({\n detachable: _detachable,\n reattach: _reattach,\n paintStyle:this.endpoints[0].connectorStyle || this.endpoints[1].connectorStyle || params.paintStyle || _jsPlumb.Defaults.PaintStyle || _jp.Defaults.PaintStyle,\n hoverPaintStyle:this.endpoints[0].connectorHoverStyle || this.endpoints[1].connectorHoverStyle || params.hoverPaintStyle || _jsPlumb.Defaults.HoverPaintStyle || _jp.Defaults.HoverPaintStyle\n });\n\n var _suspendedAt = _jsPlumb.getSuspendedAt();\n if (!_jsPlumb.isSuspendDrawing()) {\n // paint the endpoints\n var myInfo = _jsPlumb.getCachedData(this.sourceId),\n myOffset = myInfo.o, myWH = myInfo.s,\n otherInfo = _jsPlumb.getCachedData(this.targetId),\n otherOffset = otherInfo.o,\n otherWH = otherInfo.s,\n initialTimestamp = _suspendedAt || _jsPlumb.timestamp(),\n anchorLoc = this.endpoints[0].anchor.compute({\n xy: [ myOffset.left, myOffset.top ], wh: myWH, element: this.endpoints[0],\n elementId: this.endpoints[0].elementId,\n txy: [ otherOffset.left, otherOffset.top ], twh: otherWH, tElement: this.endpoints[1],\n timestamp: initialTimestamp\n });\n\n this.endpoints[0].paint({ anchorLoc: anchorLoc, timestamp: initialTimestamp });\n\n anchorLoc = this.endpoints[1].anchor.compute({\n xy: [ otherOffset.left, otherOffset.top ], wh: otherWH, element: this.endpoints[1],\n elementId: this.endpoints[1].elementId,\n txy: [ myOffset.left, myOffset.top ], twh: myWH, tElement: this.endpoints[0],\n timestamp: initialTimestamp\n });\n this.endpoints[1].paint({ anchorLoc: anchorLoc, timestamp: initialTimestamp });\n }\n\n this.getTypeDescriptor = function () {\n return \"connection\";\n };\n this.getAttachedElements = function () {\n return this.endpoints;\n };\n\n this.isDetachable = function (ep) {\n return this._jsPlumb.detachable === false ? false : ep != null ? ep.connectionsDetachable === true : this._jsPlumb.detachable === true;\n };\n this.setDetachable = function (detachable) {\n this._jsPlumb.detachable = detachable === true;\n };\n this.isReattach = function () {\n return this._jsPlumb.reattach === true || this.endpoints[0].reattachConnections === true || this.endpoints[1].reattachConnections === true;\n };\n this.setReattach = function (reattach) {\n this._jsPlumb.reattach = reattach === true;\n };\n\n// END INITIALISATION CODE\n\n\n// COST + DIRECTIONALITY\n // if cost not supplied, try to inherit from source endpoint\n this._jsPlumb.cost = params.cost || this.endpoints[0].getConnectionCost();\n this._jsPlumb.directed = params.directed;\n // inherit directed flag if set no source endpoint\n if (params.directed == null) {\n this._jsPlumb.directed = this.endpoints[0].areConnectionsDirected();\n }\n// END COST + DIRECTIONALITY\n\n// PARAMETERS\n // merge all the parameters objects into the connection. parameters set\n // on the connection take precedence; then source endpoint params, then\n // finally target endpoint params.\n var _p = _jp.extend({}, this.endpoints[1].getParameters());\n _jp.extend(_p, this.endpoints[0].getParameters());\n _jp.extend(_p, this.getParameters());\n this.setParameters(_p);\n// END PARAMETERS\n\n// PAINTING\n\n this.setConnector(this.endpoints[0].connector || this.endpoints[1].connector || params.connector || _jsPlumb.Defaults.Connector || _jp.Defaults.Connector, true);\n var data = params.data == null || !_ju.isObject(params.data) ? {} : params.data;\n this.getData = function() { return data; };\n this.setData = function(d) { data = d || {}; };\n this.mergeData = function(d) { data = _jp.extend(data, d); };\n\n // the very last thing we do is apply types, if there are any.\n var _types = [ \"default\", this.endpoints[0].connectionType, this.endpoints[1].connectionType, params.type ].join(\" \");\n if (/[^\\s]/.test(_types)) {\n this.addType(_types, params.data, true);\n }\n\n this.updateConnectedClass();\n\n// END PAINTING \n };\n\n _ju.extend(_jp.Connection, _jp.OverlayCapableJsPlumbUIComponent, {\n applyType: function (t, doNotRepaint, typeMap) {\n\n var _connector = null;\n if (t.connector != null) {\n _connector = this.getCachedTypeItem(\"connector\", typeMap.connector);\n if (_connector == null) {\n _connector = this.prepareConnector(t.connector, typeMap.connector);\n this.cacheTypeItem(\"connector\", _connector, typeMap.connector);\n }\n this.setPreparedConnector(_connector);\n }\n\n // none of these things result in the creation of objects so can be ignored.\n if (t.detachable != null) {\n this.setDetachable(t.detachable);\n }\n if (t.reattach != null) {\n this.setReattach(t.reattach);\n }\n if (t.scope) {\n this.scope = t.scope;\n }\n\n if (t.cssClass != null && this.canvas) {\n this._jsPlumb.instance.addClass(this.canvas, t.cssClass);\n }\n\n var _anchors = null;\n // this also results in the creation of objects.\n if (t.anchor) {\n // note that even if the param was anchor, we store `anchors`.\n _anchors = this.getCachedTypeItem(\"anchors\", typeMap.anchor);\n if (_anchors == null) {\n _anchors = [ this._jsPlumb.instance.makeAnchor(t.anchor), this._jsPlumb.instance.makeAnchor(t.anchor) ];\n this.cacheTypeItem(\"anchors\", _anchors, typeMap.anchor);\n }\n }\n else if (t.anchors) {\n _anchors = this.getCachedTypeItem(\"anchors\", typeMap.anchors);\n if (_anchors == null) {\n _anchors = [\n this._jsPlumb.instance.makeAnchor(t.anchors[0]),\n this._jsPlumb.instance.makeAnchor(t.anchors[1])\n ];\n this.cacheTypeItem(\"anchors\", _anchors, typeMap.anchors);\n }\n }\n if (_anchors != null) {\n this.endpoints[0].anchor = _anchors[0];\n this.endpoints[1].anchor = _anchors[1];\n if (this.endpoints[1].anchor.isDynamic) {\n this._jsPlumb.instance.repaint(this.endpoints[1].elementId);\n }\n }\n\n _jp.OverlayCapableJsPlumbUIComponent.applyType(this, t);\n },\n addClass: function (c, informEndpoints) {\n if (informEndpoints) {\n this.endpoints[0].addClass(c);\n this.endpoints[1].addClass(c);\n if (this.suspendedEndpoint) {\n this.suspendedEndpoint.addClass(c);\n }\n }\n if (this.connector) {\n this.connector.addClass(c);\n }\n },\n removeClass: function (c, informEndpoints) {\n if (informEndpoints) {\n this.endpoints[0].removeClass(c);\n this.endpoints[1].removeClass(c);\n if (this.suspendedEndpoint) {\n this.suspendedEndpoint.removeClass(c);\n }\n }\n if (this.connector) {\n this.connector.removeClass(c);\n }\n },\n isVisible: function () {\n return this._jsPlumb.visible;\n },\n setVisible: function (v) {\n this._jsPlumb.visible = v;\n if (this.connector) {\n this.connector.setVisible(v);\n }\n this.repaint();\n },\n cleanup: function () {\n this.updateConnectedClass(true);\n this.endpoints = null;\n this.source = null;\n this.target = null;\n if (this.connector != null) {\n this.connector.cleanup(true);\n this.connector.destroy(true);\n }\n this.connector = null;\n },\n updateConnectedClass:function(remove) {\n if (this._jsPlumb) {\n _updateConnectedClass(this, this.source, this._jsPlumb.instance, remove);\n _updateConnectedClass(this, this.target, this._jsPlumb.instance, remove);\n }\n },\n setHover: function (state) {\n if (this.connector && this._jsPlumb && !this._jsPlumb.instance.isConnectionBeingDragged()) {\n this.connector.setHover(state);\n root.jsPlumb[state ? \"addClass\" : \"removeClass\"](this.source, this._jsPlumb.instance.hoverSourceClass);\n root.jsPlumb[state ? \"addClass\" : \"removeClass\"](this.target, this._jsPlumb.instance.hoverTargetClass);\n }\n },\n getUuids:function() {\n return [ this.endpoints[0].getUuid(), this.endpoints[1].getUuid() ];\n },\n getCost: function () {\n return this._jsPlumb ? this._jsPlumb.cost : -Infinity;\n },\n setCost: function (c) {\n this._jsPlumb.cost = c;\n },\n isDirected: function () {\n return this._jsPlumb.directed;\n },\n getConnector: function () {\n return this.connector;\n },\n prepareConnector:function(connectorSpec, typeId) {\n var connectorArgs = {\n _jsPlumb: this._jsPlumb.instance,\n cssClass: this._jsPlumb.params.cssClass,\n container: this._jsPlumb.params.container,\n \"pointer-events\": this._jsPlumb.params[\"pointer-events\"]\n },\n renderMode = this._jsPlumb.instance.getRenderMode(),\n connector;\n\n if (_ju.isString(connectorSpec)) {\n connector = makeConnector(this._jsPlumb.instance, renderMode, connectorSpec, connectorArgs, this);\n } // lets you use a string as shorthand.\n else if (_ju.isArray(connectorSpec)) {\n if (connectorSpec.length === 1) {\n connector = makeConnector(this._jsPlumb.instance, renderMode, connectorSpec[0], connectorArgs, this);\n }\n else {\n connector = makeConnector(this._jsPlumb.instance, renderMode, connectorSpec[0], _ju.merge(connectorSpec[1], connectorArgs), this);\n }\n }\n if (typeId != null) {\n connector.typeId = typeId;\n }\n return connector;\n },\n setPreparedConnector: function(connector, doNotRepaint, doNotChangeListenerComponent, typeId) {\n\n if (this.connector !== connector) {\n\n var previous, previousClasses = \"\";\n // the connector will not be cleaned up if it was set as part of a type, because `typeId` will be set on it\n // and we havent passed in `true` for \"force\" here.\n if (this.connector != null) {\n previous = this.connector;\n previousClasses = previous.getClass();\n this.connector.cleanup();\n this.connector.destroy();\n }\n\n this.connector = connector;\n if (typeId) {\n this.cacheTypeItem(\"connector\", connector, typeId);\n }\n\n this.canvas = this.connector.canvas;\n this.bgCanvas = this.connector.bgCanvas;\n\n // put classes from prior connector onto the canvas\n this.addClass(previousClasses);\n\n // new: instead of binding listeners per connector, we now just have one delegate on the container.\n // so for that handler we set the connection as the '_jsPlumb' member of the canvas element, and\n // bgCanvas, if it exists, which it does right now in the VML renderer, so it won't from v 2.0.0 onwards.\n if (this.canvas) {\n this.canvas._jsPlumb = this;\n }\n if (this.bgCanvas) {\n this.bgCanvas._jsPlumb = this;\n }\n\n if (previous != null) {\n var o = this.getOverlays();\n for (var i = 0; i < o.length; i++) {\n if (o[i].transfer) {\n o[i].transfer(this.connector);\n }\n }\n }\n\n if (!doNotChangeListenerComponent) {\n this.setListenerComponent(this.connector);\n }\n if (!doNotRepaint) {\n this.repaint();\n }\n }\n },\n setConnector: function (connectorSpec, doNotRepaint, doNotChangeListenerComponent, typeId) {\n var connector = this.prepareConnector(connectorSpec, typeId);\n this.setPreparedConnector(connector, doNotRepaint, doNotChangeListenerComponent, typeId);\n },\n paint: function (params) {\n\n if (!this._jsPlumb.instance.isSuspendDrawing() && this._jsPlumb.visible) {\n params = params || {};\n var timestamp = params.timestamp,\n // if the moving object is not the source we must transpose the two references.\n swap = false,\n tId = swap ? this.sourceId : this.targetId, sId = swap ? this.targetId : this.sourceId,\n tIdx = swap ? 0 : 1, sIdx = swap ? 1 : 0;\n\n if (timestamp == null || timestamp !== this._jsPlumb.lastPaintedAt) {\n var sourceInfo = this._jsPlumb.instance.updateOffset({elId:sId}).o,\n targetInfo = this._jsPlumb.instance.updateOffset({elId:tId}).o,\n sE = this.endpoints[sIdx], tE = this.endpoints[tIdx];\n\n var sAnchorP = sE.anchor.getCurrentLocation({xy: [sourceInfo.left, sourceInfo.top], wh: [sourceInfo.width, sourceInfo.height], element: sE, timestamp: timestamp}),\n tAnchorP = tE.anchor.getCurrentLocation({xy: [targetInfo.left, targetInfo.top], wh: [targetInfo.width, targetInfo.height], element: tE, timestamp: timestamp});\n\n this.connector.resetBounds();\n\n this.connector.compute({\n sourcePos: sAnchorP,\n targetPos: tAnchorP,\n sourceOrientation:sE.anchor.getOrientation(sE),\n targetOrientation:tE.anchor.getOrientation(tE),\n sourceEndpoint: this.endpoints[sIdx],\n targetEndpoint: this.endpoints[tIdx],\n \"stroke-width\": this._jsPlumb.paintStyleInUse.strokeWidth,\n sourceInfo: sourceInfo,\n targetInfo: targetInfo\n });\n\n var overlayExtents = { minX: Infinity, minY: Infinity, maxX: -Infinity, maxY: -Infinity };\n\n // compute overlays. we do this first so we can get their placements, and adjust the\n // container if needs be (if an overlay would be clipped)\n for (var i in this._jsPlumb.overlays) {\n if (this._jsPlumb.overlays.hasOwnProperty(i)) {\n var o = this._jsPlumb.overlays[i];\n if (o.isVisible()) {\n this._jsPlumb.overlayPlacements[i] = o.draw(this.connector, this._jsPlumb.paintStyleInUse, this.getAbsoluteOverlayPosition(o));\n overlayExtents.minX = Math.min(overlayExtents.minX, this._jsPlumb.overlayPlacements[i].minX);\n overlayExtents.maxX = Math.max(overlayExtents.maxX, this._jsPlumb.overlayPlacements[i].maxX);\n overlayExtents.minY = Math.min(overlayExtents.minY, this._jsPlumb.overlayPlacements[i].minY);\n overlayExtents.maxY = Math.max(overlayExtents.maxY, this._jsPlumb.overlayPlacements[i].maxY);\n }\n }\n }\n\n var lineWidth = parseFloat(this._jsPlumb.paintStyleInUse.strokeWidth || 1) / 2,\n outlineWidth = parseFloat(this._jsPlumb.paintStyleInUse.strokeWidth || 0),\n extents = {\n xmin: Math.min(this.connector.bounds.minX - (lineWidth + outlineWidth), overlayExtents.minX),\n ymin: Math.min(this.connector.bounds.minY - (lineWidth + outlineWidth), overlayExtents.minY),\n xmax: Math.max(this.connector.bounds.maxX + (lineWidth + outlineWidth), overlayExtents.maxX),\n ymax: Math.max(this.connector.bounds.maxY + (lineWidth + outlineWidth), overlayExtents.maxY)\n };\n // paint the connector.\n this.connector.paint(this._jsPlumb.paintStyleInUse, null, extents);\n // and then the overlays\n for (var j in this._jsPlumb.overlays) {\n if (this._jsPlumb.overlays.hasOwnProperty(j)) {\n var p = this._jsPlumb.overlays[j];\n if (p.isVisible()) {\n p.paint(this._jsPlumb.overlayPlacements[j], extents);\n }\n }\n }\n }\n this._jsPlumb.lastPaintedAt = timestamp;\n }\n },\n repaint: function (params) {\n var p = jsPlumb.extend(params || {}, {});\n p.elId = this.sourceId;\n this.paint(p);\n },\n prepareEndpoint: function (_jsPlumb, _newEndpoint, conn, existing, index, params, element, elementId) {\n var e;\n if (existing) {\n conn.endpoints[index] = existing;\n existing.addConnection(conn);\n } else {\n if (!params.endpoints) {\n params.endpoints = [ null, null ];\n }\n var ep = params.endpoints[index] || params.endpoint || _jsPlumb.Defaults.Endpoints[index] || _jp.Defaults.Endpoints[index] || _jsPlumb.Defaults.Endpoint || _jp.Defaults.Endpoint;\n if (!params.endpointStyles) {\n params.endpointStyles = [ null, null ];\n }\n if (!params.endpointHoverStyles) {\n params.endpointHoverStyles = [ null, null ];\n }\n var es = params.endpointStyles[index] || params.endpointStyle || _jsPlumb.Defaults.EndpointStyles[index] || _jp.Defaults.EndpointStyles[index] || _jsPlumb.Defaults.EndpointStyle || _jp.Defaults.EndpointStyle;\n // Endpoints derive their fill from the connector's stroke, if no fill was specified.\n if (es.fill == null && params.paintStyle != null) {\n es.fill = params.paintStyle.stroke;\n }\n\n if (es.outlineStroke == null && params.paintStyle != null) {\n es.outlineStroke = params.paintStyle.outlineStroke;\n }\n if (es.outlineWidth == null && params.paintStyle != null) {\n es.outlineWidth = params.paintStyle.outlineWidth;\n }\n\n var ehs = params.endpointHoverStyles[index] || params.endpointHoverStyle || _jsPlumb.Defaults.EndpointHoverStyles[index] || _jp.Defaults.EndpointHoverStyles[index] || _jsPlumb.Defaults.EndpointHoverStyle || _jp.Defaults.EndpointHoverStyle;\n // endpoint hover fill style is derived from connector's hover stroke style\n if (params.hoverPaintStyle != null) {\n if (ehs == null) {\n ehs = {};\n }\n if (ehs.fill == null) {\n ehs.fill = params.hoverPaintStyle.stroke;\n }\n }\n var a = params.anchors ? params.anchors[index] :\n params.anchor ? params.anchor :\n _makeAnchor(_jsPlumb.Defaults.Anchors[index], elementId, _jsPlumb) ||\n _makeAnchor(_jp.Defaults.Anchors[index], elementId, _jsPlumb) ||\n _makeAnchor(_jsPlumb.Defaults.Anchor, elementId, _jsPlumb) ||\n _makeAnchor(_jp.Defaults.Anchor, elementId, _jsPlumb),\n u = params.uuids ? params.uuids[index] : null;\n\n e = _newEndpoint({\n paintStyle: es, hoverPaintStyle: ehs, endpoint: ep, connections: [ conn ],\n uuid: u, anchor: a, source: element, scope: params.scope,\n reattach: params.reattach || _jsPlumb.Defaults.ReattachConnections,\n detachable: params.detachable || _jsPlumb.Defaults.ConnectionsDetachable\n });\n if (existing == null) {\n e.setDeleteOnEmpty(true);\n }\n conn.endpoints[index] = e;\n\n if (params.drawEndpoints === false) {\n e.setVisible(false, true, true);\n }\n\n }\n return e;\n }\n\n }); // END Connection class \n}).call(typeof window !== 'undefined' ? window : this);\n\n/*\n * This file contains the code for creating and manipulating anchors.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n *\n * Dual licensed under the MIT and GPL2 licenses.\n */\n;\n(function () {\n\n \"use strict\";\n\n var root = this,\n _ju = root.jsPlumbUtil,\n _jp = root.jsPlumb;\n\n //\n // manages anchors for all elements.\n //\n _jp.AnchorManager = function (params) {\n var _amEndpoints = {},\n continuousAnchorLocations = {},\n continuousAnchorOrientations = {},\n connectionsByElementId = {},\n self = this,\n anchorLists = {},\n jsPlumbInstance = params.jsPlumbInstance,\n floatingConnections = {},\n // used by placeAnchors function\n placeAnchorsOnLine = function (desc, elementDimensions, elementPosition, connections, horizontal, otherMultiplier, reverse) {\n var a = [], step = elementDimensions[horizontal ? 0 : 1] / (connections.length + 1);\n\n for (var i = 0; i < connections.length; i++) {\n var val = (i + 1) * step, other = otherMultiplier * elementDimensions[horizontal ? 1 : 0];\n if (reverse) {\n val = elementDimensions[horizontal ? 0 : 1] - val;\n }\n\n var dx = (horizontal ? val : other), x = elementPosition[0] + dx, xp = dx / elementDimensions[0],\n dy = (horizontal ? other : val), y = elementPosition[1] + dy, yp = dy / elementDimensions[1];\n\n a.push([ x, y, xp, yp, connections[i][1], connections[i][2] ]);\n }\n\n return a;\n },\n // used by edgeSortFunctions\n currySort = function (reverseAngles) {\n return function (a, b) {\n var r = true;\n if (reverseAngles) {\n r = a[0][0] < b[0][0];\n }\n else {\n r = a[0][0] > b[0][0];\n }\n return r === false ? -1 : 1;\n };\n },\n // used by edgeSortFunctions\n leftSort = function (a, b) {\n // first get adjusted values\n var p1 = a[0][0] < 0 ? -Math.PI - a[0][0] : Math.PI - a[0][0],\n p2 = b[0][0] < 0 ? -Math.PI - b[0][0] : Math.PI - b[0][0];\n if (p1 > p2) {\n return 1;\n }\n else {\n return -1;\n }\n },\n // used by placeAnchors\n edgeSortFunctions = {\n \"top\": function (a, b) {\n return a[0] > b[0] ? 1 : -1;\n },\n \"right\": currySort(true),\n \"bottom\": currySort(true),\n \"left\": leftSort\n },\n // used by placeAnchors\n _sortHelper = function (_array, _fn) {\n return _array.sort(_fn);\n },\n // used by AnchorManager.redraw\n placeAnchors = function (elementId, _anchorLists) {\n var cd = jsPlumbInstance.getCachedData(elementId), sS = cd.s, sO = cd.o,\n placeSomeAnchors = function (desc, elementDimensions, elementPosition, unsortedConnections, isHorizontal, otherMultiplier, orientation) {\n if (unsortedConnections.length > 0) {\n var sc = _sortHelper(unsortedConnections, edgeSortFunctions[desc]), // puts them in order based on the target element's pos on screen\n reverse = desc === \"right\" || desc === \"top\",\n anchors = placeAnchorsOnLine(desc, elementDimensions,\n elementPosition, sc,\n isHorizontal, otherMultiplier, reverse);\n\n // takes a computed anchor position and adjusts it for parent offset and scroll, then stores it.\n var _setAnchorLocation = function (endpoint, anchorPos) {\n continuousAnchorLocations[endpoint.id] = [ anchorPos[0], anchorPos[1], anchorPos[2], anchorPos[3] ];\n continuousAnchorOrientations[endpoint.id] = orientation;\n };\n\n for (var i = 0; i < anchors.length; i++) {\n var c = anchors[i][4], weAreSource = c.endpoints[0].elementId === elementId, weAreTarget = c.endpoints[1].elementId === elementId;\n if (weAreSource) {\n _setAnchorLocation(c.endpoints[0], anchors[i]);\n }\n if (weAreTarget) {\n _setAnchorLocation(c.endpoints[1], anchors[i]);\n }\n }\n }\n };\n\n placeSomeAnchors(\"bottom\", sS, [sO.left, sO.top], _anchorLists.bottom, true, 1, [0, 1]);\n placeSomeAnchors(\"top\", sS, [sO.left, sO.top], _anchorLists.top, true, 0, [0, -1]);\n placeSomeAnchors(\"left\", sS, [sO.left, sO.top], _anchorLists.left, false, 0, [-1, 0]);\n placeSomeAnchors(\"right\", sS, [sO.left, sO.top], _anchorLists.right, false, 1, [1, 0]);\n };\n\n this.reset = function () {\n _amEndpoints = {};\n connectionsByElementId = {};\n anchorLists = {};\n };\n this.addFloatingConnection = function (key, conn) {\n floatingConnections[key] = conn;\n };\n this.removeFloatingConnection = function (key) {\n delete floatingConnections[key];\n };\n this.newConnection = function (conn) {\n var sourceId = conn.sourceId, targetId = conn.targetId,\n ep = conn.endpoints,\n doRegisterTarget = true,\n registerConnection = function (otherIndex, otherEndpoint, otherAnchor, elId, c) {\n if ((sourceId === targetId) && otherAnchor.isContinuous) {\n // remove the target endpoint's canvas. we dont need it.\n conn._jsPlumb.instance.removeElement(ep[1].canvas);\n doRegisterTarget = false;\n }\n _ju.addToList(connectionsByElementId, elId, [c, otherEndpoint, otherAnchor.constructor === _jp.DynamicAnchor]);\n };\n\n registerConnection(0, ep[0], ep[0].anchor, targetId, conn);\n if (doRegisterTarget) {\n registerConnection(1, ep[1], ep[1].anchor, sourceId, conn);\n }\n };\n var removeEndpointFromAnchorLists = function (endpoint) {\n (function (list, eId) {\n if (list) { // transient anchors dont get entries in this list.\n var f = function (e) {\n return e[4] === eId;\n };\n _ju.removeWithFunction(list.top, f);\n _ju.removeWithFunction(list.left, f);\n _ju.removeWithFunction(list.bottom, f);\n _ju.removeWithFunction(list.right, f);\n }\n })(anchorLists[endpoint.elementId], endpoint.id);\n };\n this.connectionDetached = function (connInfo, doNotRedraw) {\n var connection = connInfo.connection || connInfo,\n sourceId = connInfo.sourceId,\n targetId = connInfo.targetId,\n ep = connection.endpoints,\n removeConnection = function (otherIndex, otherEndpoint, otherAnchor, elId, c) {\n _ju.removeWithFunction(connectionsByElementId[elId], function (_c) {\n return _c[0].id === c.id;\n });\n };\n\n removeConnection(1, ep[1], ep[1].anchor, sourceId, connection);\n removeConnection(0, ep[0], ep[0].anchor, targetId, connection);\n if (connection.floatingId) {\n removeConnection(connection.floatingIndex, connection.floatingEndpoint, connection.floatingEndpoint.anchor, connection.floatingId, connection);\n removeEndpointFromAnchorLists(connection.floatingEndpoint);\n }\n\n // remove from anchorLists\n removeEndpointFromAnchorLists(connection.endpoints[0]);\n removeEndpointFromAnchorLists(connection.endpoints[1]);\n\n if (!doNotRedraw) {\n self.redraw(connection.sourceId);\n if (connection.targetId !== connection.sourceId) {\n self.redraw(connection.targetId);\n }\n }\n };\n this.add = function (endpoint, elementId) {\n _ju.addToList(_amEndpoints, elementId, endpoint);\n };\n this.changeId = function (oldId, newId) {\n connectionsByElementId[newId] = connectionsByElementId[oldId];\n _amEndpoints[newId] = _amEndpoints[oldId];\n delete connectionsByElementId[oldId];\n delete _amEndpoints[oldId];\n };\n this.getConnectionsFor = function (elementId) {\n return connectionsByElementId[elementId] || [];\n };\n this.getEndpointsFor = function (elementId) {\n return _amEndpoints[elementId] || [];\n };\n this.deleteEndpoint = function (endpoint) {\n _ju.removeWithFunction(_amEndpoints[endpoint.elementId], function (e) {\n return e.id === endpoint.id;\n });\n removeEndpointFromAnchorLists(endpoint);\n };\n this.clearFor = function (elementId) {\n delete _amEndpoints[elementId];\n _amEndpoints[elementId] = [];\n };\n // updates the given anchor list by either updating an existing anchor's info, or adding it. this function\n // also removes the anchor from its previous list, if the edge it is on has changed.\n // all connections found along the way (those that are connected to one of the faces this function\n // operates on) are added to the connsToPaint list, as are their endpoints. in this way we know to repaint\n // them wthout having to calculate anything else about them.\n var _updateAnchorList = function (lists, theta, order, conn, aBoolean, otherElId, idx, reverse, edgeId, elId, connsToPaint, endpointsToPaint) {\n // first try to find the exact match, but keep track of the first index of a matching element id along the way.s\n var exactIdx = -1,\n firstMatchingElIdx = -1,\n endpoint = conn.endpoints[idx],\n endpointId = endpoint.id,\n oIdx = [1, 0][idx],\n values = [\n [ theta, order ],\n conn,\n aBoolean,\n otherElId,\n endpointId\n ],\n listToAddTo = lists[edgeId],\n listToRemoveFrom = endpoint._continuousAnchorEdge ? lists[endpoint._continuousAnchorEdge] : null,\n i,\n candidate;\n\n if (listToRemoveFrom) {\n var rIdx = _ju.findWithFunction(listToRemoveFrom, function (e) {\n return e[4] === endpointId;\n });\n if (rIdx !== -1) {\n listToRemoveFrom.splice(rIdx, 1);\n // get all connections from this list\n for (i = 0; i < listToRemoveFrom.length; i++) {\n candidate = listToRemoveFrom[i][1];\n _ju.addWithFunction(connsToPaint, candidate, function (c) {\n return c.id === candidate.id;\n });\n _ju.addWithFunction(endpointsToPaint, listToRemoveFrom[i][1].endpoints[idx], function (e) {\n return e.id === candidate.endpoints[idx].id;\n });\n _ju.addWithFunction(endpointsToPaint, listToRemoveFrom[i][1].endpoints[oIdx], function (e) {\n return e.id === candidate.endpoints[oIdx].id;\n });\n }\n }\n }\n\n for (i = 0; i < listToAddTo.length; i++) {\n candidate = listToAddTo[i][1];\n if (params.idx === 1 && listToAddTo[i][3] === otherElId && firstMatchingElIdx === -1) {\n firstMatchingElIdx = i;\n }\n _ju.addWithFunction(connsToPaint, candidate, function (c) {\n return c.id === candidate.id;\n });\n _ju.addWithFunction(endpointsToPaint, listToAddTo[i][1].endpoints[idx], function (e) {\n return e.id === candidate.endpoints[idx].id;\n });\n _ju.addWithFunction(endpointsToPaint, listToAddTo[i][1].endpoints[oIdx], function (e) {\n return e.id === candidate.endpoints[oIdx].id;\n });\n }\n if (exactIdx !== -1) {\n listToAddTo[exactIdx] = values;\n }\n else {\n var insertIdx = reverse ? firstMatchingElIdx !== -1 ? firstMatchingElIdx : 0 : listToAddTo.length; // of course we will get this from having looked through the array shortly.\n listToAddTo.splice(insertIdx, 0, values);\n }\n\n // store this for next time.\n endpoint._continuousAnchorEdge = edgeId;\n };\n\n //\n // find the entry in an endpoint's list for this connection and update its target endpoint\n // with the current target in the connection.\n // This method and sourceChanged need to be folder into one.\n //\n this.updateOtherEndpoint = function (sourceElId, oldTargetId, newTargetId, connection) {\n var sIndex = _ju.findWithFunction(connectionsByElementId[sourceElId], function (i) {\n return i[0].id === connection.id;\n }),\n tIndex = _ju.findWithFunction(connectionsByElementId[oldTargetId], function (i) {\n return i[0].id === connection.id;\n });\n\n // update or add data for source\n if (sIndex !== -1) {\n connectionsByElementId[sourceElId][sIndex][0] = connection;\n connectionsByElementId[sourceElId][sIndex][1] = connection.endpoints[1];\n connectionsByElementId[sourceElId][sIndex][2] = connection.endpoints[1].anchor.constructor === _jp.DynamicAnchor;\n }\n\n // remove entry for previous target (if there)\n if (tIndex > -1) {\n connectionsByElementId[oldTargetId].splice(tIndex, 1);\n // add entry for new target\n _ju.addToList(connectionsByElementId, newTargetId, [connection, connection.endpoints[0], connection.endpoints[0].anchor.constructor === _jp.DynamicAnchor]);\n }\n\n connection.updateConnectedClass();\n };\n\n //\n // notification that the connection given has changed source from the originalId to the newId.\n // This involves:\n // 1. removing the connection from the list of connections stored for the originalId\n // 2. updating the source information for the target of the connection\n // 3. re-registering the connection in connectionsByElementId with the newId\n //\n this.sourceChanged = function (originalId, newId, connection, newElement) {\n if (originalId !== newId) {\n\n connection.sourceId = newId;\n connection.source = newElement;\n\n // remove the entry that points from the old source to the target\n _ju.removeWithFunction(connectionsByElementId[originalId], function (info) {\n return info[0].id === connection.id;\n });\n // find entry for target and update it\n var tIdx = _ju.findWithFunction(connectionsByElementId[connection.targetId], function (i) {\n return i[0].id === connection.id;\n });\n if (tIdx > -1) {\n connectionsByElementId[connection.targetId][tIdx][0] = connection;\n connectionsByElementId[connection.targetId][tIdx][1] = connection.endpoints[0];\n connectionsByElementId[connection.targetId][tIdx][2] = connection.endpoints[0].anchor.constructor === _jp.DynamicAnchor;\n }\n // add entry for new source\n _ju.addToList(connectionsByElementId, newId, [connection, connection.endpoints[1], connection.endpoints[1].anchor.constructor === _jp.DynamicAnchor]);\n\n // TODO SP not final on this yet. when a user drags an existing connection and it turns into a self\n // loop, then this code hides the target endpoint (by removing it from the DOM) But I think this should\n // occur only if the anchor is Continuous\n if (connection.endpoints[1].anchor.isContinuous) {\n if (connection.source === connection.target) {\n connection._jsPlumb.instance.removeElement(connection.endpoints[1].canvas);\n }\n else {\n if (connection.endpoints[1].canvas.parentNode == null) {\n connection._jsPlumb.instance.appendElement(connection.endpoints[1].canvas);\n }\n }\n }\n\n connection.updateConnectedClass();\n }\n };\n\n //\n // moves the given endpoint from `currentId` to `element`.\n // This involves:\n //\n // 1. changing the key in _amEndpoints under which the endpoint is stored\n // 2. changing the source or target values in all of the endpoint's connections\n // 3. changing the array in connectionsByElementId in which the endpoint's connections\n // are stored (done by either sourceChanged or updateOtherEndpoint)\n //\n this.rehomeEndpoint = function (ep, currentId, element) {\n var eps = _amEndpoints[currentId] || [],\n elementId = jsPlumbInstance.getId(element);\n\n if (elementId !== currentId) {\n var idx = eps.indexOf(ep);\n if (idx > -1) {\n var _ep = eps.splice(idx, 1)[0];\n self.add(_ep, elementId);\n }\n }\n\n for (var i = 0; i < ep.connections.length; i++) {\n if (ep.connections[i].sourceId === currentId) {\n self.sourceChanged(currentId, ep.elementId, ep.connections[i], ep.element);\n }\n else if (ep.connections[i].targetId === currentId) {\n ep.connections[i].targetId = ep.elementId;\n ep.connections[i].target = ep.element;\n self.updateOtherEndpoint(ep.connections[i].sourceId, currentId, ep.elementId, ep.connections[i]);\n }\n }\n };\n\n this.redraw = function (elementId, ui, timestamp, offsetToUI, clearEdits, doNotRecalcEndpoint) {\n\n if (!jsPlumbInstance.isSuspendDrawing()) {\n // get all the endpoints for this element\n var ep = _amEndpoints[elementId] || [],\n endpointConnections = connectionsByElementId[elementId] || [],\n connectionsToPaint = [],\n endpointsToPaint = [],\n anchorsToUpdate = [];\n\n timestamp = timestamp || jsPlumbInstance.timestamp();\n // offsetToUI are values that would have been calculated in the dragManager when registering\n // an endpoint for an element that had a parent (somewhere in the hierarchy) that had been\n // registered as draggable.\n offsetToUI = offsetToUI || {left: 0, top: 0};\n if (ui) {\n ui = {\n left: ui.left + offsetToUI.left,\n top: ui.top + offsetToUI.top\n };\n }\n\n // valid for one paint cycle.\n var myOffset = jsPlumbInstance.updateOffset({ elId: elementId, offset: ui, recalc: false, timestamp: timestamp }),\n orientationCache = {};\n\n // actually, first we should compute the orientation of this element to all other elements to which\n // this element is connected with a continuous anchor (whether both ends of the connection have\n // a continuous anchor or just one)\n\n for (var i = 0; i < endpointConnections.length; i++) {\n var conn = endpointConnections[i][0],\n sourceId = conn.sourceId,\n targetId = conn.targetId,\n sourceContinuous = conn.endpoints[0].anchor.isContinuous,\n targetContinuous = conn.endpoints[1].anchor.isContinuous;\n\n if (sourceContinuous || targetContinuous) {\n var oKey = sourceId + \"_\" + targetId,\n o = orientationCache[oKey],\n oIdx = conn.sourceId === elementId ? 1 : 0;\n\n if (sourceContinuous && !anchorLists[sourceId]) {\n anchorLists[sourceId] = { top: [], right: [], bottom: [], left: [] };\n }\n if (targetContinuous && !anchorLists[targetId]) {\n anchorLists[targetId] = { top: [], right: [], bottom: [], left: [] };\n }\n\n if (elementId !== targetId) {\n jsPlumbInstance.updateOffset({ elId: targetId, timestamp: timestamp });\n }\n if (elementId !== sourceId) {\n jsPlumbInstance.updateOffset({ elId: sourceId, timestamp: timestamp });\n }\n\n var td = jsPlumbInstance.getCachedData(targetId),\n sd = jsPlumbInstance.getCachedData(sourceId);\n\n if (targetId === sourceId && (sourceContinuous || targetContinuous)) {\n // here we may want to improve this by somehow determining the face we'd like\n // to put the connector on. ideally, when drawing, the face should be calculated\n // by determining which face is closest to the point at which the mouse button\n // was released. for now, we're putting it on the top face.\n _updateAnchorList( anchorLists[sourceId], -Math.PI / 2, 0, conn, false, targetId, 0, false, \"top\", sourceId, connectionsToPaint, endpointsToPaint);\n _updateAnchorList( anchorLists[targetId], -Math.PI / 2, 0, conn, false, sourceId, 1, false, \"top\", targetId, connectionsToPaint, endpointsToPaint);\n }\n else {\n if (!o) {\n o = this.calculateOrientation(sourceId, targetId, sd.o, td.o, conn.endpoints[0].anchor, conn.endpoints[1].anchor, conn);\n orientationCache[oKey] = o;\n // this would be a performance enhancement, but the computed angles need to be clamped to\n //the (-PI/2 -> PI/2) range in order for the sorting to work properly.\n /* orientationCache[oKey2] = {\n orientation:o.orientation,\n a:[o.a[1], o.a[0]],\n theta:o.theta + Math.PI,\n theta2:o.theta2 + Math.PI\n };*/\n }\n if (sourceContinuous) {\n _updateAnchorList(anchorLists[sourceId], o.theta, 0, conn, false, targetId, 0, false, o.a[0], sourceId, connectionsToPaint, endpointsToPaint);\n }\n if (targetContinuous) {\n _updateAnchorList(anchorLists[targetId], o.theta2, -1, conn, true, sourceId, 1, true, o.a[1], targetId, connectionsToPaint, endpointsToPaint);\n }\n }\n\n if (sourceContinuous) {\n _ju.addWithFunction(anchorsToUpdate, sourceId, function (a) {\n return a === sourceId;\n });\n }\n if (targetContinuous) {\n _ju.addWithFunction(anchorsToUpdate, targetId, function (a) {\n return a === targetId;\n });\n }\n _ju.addWithFunction(connectionsToPaint, conn, function (c) {\n return c.id === conn.id;\n });\n if ((sourceContinuous && oIdx === 0) || (targetContinuous && oIdx === 1)) {\n _ju.addWithFunction(endpointsToPaint, conn.endpoints[oIdx], function (e) {\n return e.id === conn.endpoints[oIdx].id;\n });\n }\n }\n }\n\n // place Endpoints whose anchors are continuous but have no Connections\n for (i = 0; i < ep.length; i++) {\n if (ep[i].connections.length === 0 && ep[i].anchor.isContinuous) {\n if (!anchorLists[elementId]) {\n anchorLists[elementId] = { top: [], right: [], bottom: [], left: [] };\n }\n _updateAnchorList(anchorLists[elementId], -Math.PI / 2, 0, {endpoints: [ep[i], ep[i]], paint: function () {\n }}, false, elementId, 0, false, ep[i].anchor.getDefaultFace(), elementId, connectionsToPaint, endpointsToPaint);\n _ju.addWithFunction(anchorsToUpdate, elementId, function (a) {\n return a === elementId;\n });\n }\n }\n\n // now place all the continuous anchors we need to;\n for (i = 0; i < anchorsToUpdate.length; i++) {\n placeAnchors(anchorsToUpdate[i], anchorLists[anchorsToUpdate[i]]);\n }\n\n // now that continuous anchors have been placed, paint all the endpoints for this element\n for (i = 0; i < ep.length; i++) {\n ep[i].paint({ timestamp: timestamp, offset: myOffset, dimensions: myOffset.s, recalc: doNotRecalcEndpoint !== true });\n }\n\n // ... and any other endpoints we came across as a result of the continuous anchors.\n for (i = 0; i < endpointsToPaint.length; i++) {\n var cd = jsPlumbInstance.getCachedData(endpointsToPaint[i].elementId);\n //endpointsToPaint[i].paint({ timestamp: timestamp, offset: cd, dimensions: cd.s });\n endpointsToPaint[i].paint({ timestamp: null, offset: cd, dimensions: cd.s });\n }\n\n // paint all the standard and \"dynamic connections\", which are connections whose other anchor is\n // static and therefore does need to be recomputed; we make sure that happens only one time.\n\n // TODO we could have compiled a list of these in the first pass through connections; might save some time.\n for (i = 0; i < endpointConnections.length; i++) {\n var otherEndpoint = endpointConnections[i][1];\n if (otherEndpoint.anchor.constructor === _jp.DynamicAnchor) {\n otherEndpoint.paint({ elementWithPrecedence: elementId, timestamp: timestamp });\n _ju.addWithFunction(connectionsToPaint, endpointConnections[i][0], function (c) {\n return c.id === endpointConnections[i][0].id;\n });\n // all the connections for the other endpoint now need to be repainted\n for (var k = 0; k < otherEndpoint.connections.length; k++) {\n if (otherEndpoint.connections[k] !== endpointConnections[i][0]) {\n _ju.addWithFunction(connectionsToPaint, otherEndpoint.connections[k], function (c) {\n return c.id === otherEndpoint.connections[k].id;\n });\n }\n }\n } else {\n _ju.addWithFunction(connectionsToPaint, endpointConnections[i][0], function (c) {\n return c.id === endpointConnections[i][0].id;\n });\n }\n }\n\n // paint current floating connection for this element, if there is one.\n var fc = floatingConnections[elementId];\n if (fc) {\n fc.paint({timestamp: timestamp, recalc: false, elId: elementId});\n }\n\n // paint all the connections\n for (i = 0; i < connectionsToPaint.length; i++) {\n connectionsToPaint[i].paint({elId: elementId, timestamp: null, recalc: false, clearEdits: clearEdits});\n }\n }\n };\n\n var ContinuousAnchor = function (anchorParams) {\n _ju.EventGenerator.apply(this);\n this.type = \"Continuous\";\n this.isDynamic = true;\n this.isContinuous = true;\n var faces = anchorParams.faces || [\"top\", \"right\", \"bottom\", \"left\"],\n clockwise = !(anchorParams.clockwise === false),\n availableFaces = { },\n opposites = { \"top\": \"bottom\", \"right\": \"left\", \"left\": \"right\", \"bottom\": \"top\" },\n clockwiseOptions = { \"top\": \"right\", \"right\": \"bottom\", \"left\": \"top\", \"bottom\": \"left\" },\n antiClockwiseOptions = { \"top\": \"left\", \"right\": \"top\", \"left\": \"bottom\", \"bottom\": \"right\" },\n secondBest = clockwise ? clockwiseOptions : antiClockwiseOptions,\n lastChoice = clockwise ? antiClockwiseOptions : clockwiseOptions,\n cssClass = anchorParams.cssClass || \"\",\n _currentFace = null, _lockedFace = null, X_AXIS_FACES = [\"left\", \"right\"], Y_AXIS_FACES = [\"top\", \"bottom\"],\n _lockedAxis = null;\n\n for (var i = 0; i < faces.length; i++) {\n availableFaces[faces[i]] = true;\n }\n\n this.getDefaultFace = function () {\n return faces.length === 0 ? \"top\" : faces[0];\n };\n\n this.isRelocatable = function() { return true; };\n this.isSnapOnRelocate = function() { return true; };\n\n // if the given edge is supported, returns it. otherwise looks for a substitute that _is_\n // supported. if none supported we also return the request edge.\n this.verifyEdge = function (edge) {\n if (availableFaces[edge]) {\n return edge;\n }\n else if (availableFaces[opposites[edge]]) {\n return opposites[edge];\n }\n else if (availableFaces[secondBest[edge]]) {\n return secondBest[edge];\n }\n else if (availableFaces[lastChoice[edge]]) {\n return lastChoice[edge];\n }\n return edge; // we have to give them something.\n };\n\n this.isEdgeSupported = function (edge) {\n return _lockedAxis == null ?\n\n (_lockedFace == null ? availableFaces[edge] === true : _lockedFace === edge)\n\n : _lockedAxis.indexOf(edge) !== -1;\n };\n\n this.setCurrentFace = function(face, overrideLock) {\n _currentFace = face;\n // if currently locked, and the user wants to override, do that.\n if (overrideLock && _lockedFace != null) {\n _lockedFace = _currentFace;\n }\n };\n\n this.getCurrentFace = function() { return _currentFace; };\n this.getSupportedFaces = function() {\n var af = [];\n for (var k in availableFaces) {\n if (availableFaces[k]) {\n af.push(k);\n }\n }\n return af;\n };\n\n this.lock = function() {\n _lockedFace = _currentFace;\n };\n this.unlock = function() {\n _lockedFace = null;\n };\n this.isLocked = function() {\n return _lockedFace != null;\n };\n\n this.lockCurrentAxis = function() {\n if (_currentFace != null) {\n _lockedAxis = (_currentFace === \"left\" || _currentFace === \"right\") ? X_AXIS_FACES : Y_AXIS_FACES;\n }\n };\n\n this.unlockCurrentAxis = function() {\n _lockedAxis = null;\n };\n\n this.compute = function (params) {\n return continuousAnchorLocations[params.element.id] || [0, 0];\n };\n this.getCurrentLocation = function (params) {\n return continuousAnchorLocations[params.element.id] || [0, 0];\n };\n this.getOrientation = function (endpoint) {\n return continuousAnchorOrientations[endpoint.id] || [0, 0];\n };\n this.getCssClass = function () {\n return cssClass;\n };\n };\n\n // continuous anchors\n jsPlumbInstance.continuousAnchorFactory = {\n get: function (params) {\n return new ContinuousAnchor(params);\n },\n clear: function (elementId) {\n delete continuousAnchorLocations[elementId];\n }\n };\n };\n\n _jp.AnchorManager.prototype.calculateOrientation = function (sourceId, targetId, sd, td, sourceAnchor, targetAnchor) {\n\n var Orientation = { HORIZONTAL: \"horizontal\", VERTICAL: \"vertical\", DIAGONAL: \"diagonal\", IDENTITY: \"identity\" },\n axes = [\"left\", \"top\", \"right\", \"bottom\"];\n\n if (sourceId === targetId) {\n return {\n orientation: Orientation.IDENTITY,\n a: [\"top\", \"top\"]\n };\n }\n\n var theta = Math.atan2((td.centery - sd.centery), (td.centerx - sd.centerx)),\n theta2 = Math.atan2((sd.centery - td.centery), (sd.centerx - td.centerx));\n\n// --------------------------------------------------------------------------------------\n\n // improved face calculation. get midpoints of each face for source and target, then put in an array with all combinations of\n // source/target faces. sort this array by distance between midpoints. the entry at index 0 is our preferred option. we can\n // go through the array one by one until we find an entry in which each requested face is supported.\n var candidates = [], midpoints = { };\n (function (types, dim) {\n for (var i = 0; i < types.length; i++) {\n midpoints[types[i]] = {\n \"left\": [ dim[i].left, dim[i].centery ],\n \"right\": [ dim[i].right, dim[i].centery ],\n \"top\": [ dim[i].centerx, dim[i].top ],\n \"bottom\": [ dim[i].centerx , dim[i].bottom]\n };\n }\n })([ \"source\", \"target\" ], [ sd, td ]);\n\n for (var sf = 0; sf < axes.length; sf++) {\n for (var tf = 0; tf < axes.length; tf++) {\n candidates.push({\n source: axes[sf],\n target: axes[tf],\n dist: Biltong.lineLength(midpoints.source[axes[sf]], midpoints.target[axes[tf]])\n });\n }\n }\n\n candidates.sort(function (a, b) {\n return a.dist < b.dist ? -1 : a.dist > b.dist ? 1 : 0;\n });\n\n // now go through this list and try to get an entry that satisfies both (there will be one, unless one of the anchors\n // declares no available faces)\n var sourceEdge = candidates[0].source, targetEdge = candidates[0].target;\n for (var i = 0; i < candidates.length; i++) {\n\n if (!sourceAnchor.isContinuous || sourceAnchor.isEdgeSupported(candidates[i].source)) {\n sourceEdge = candidates[i].source;\n }\n else {\n sourceEdge = null;\n }\n\n if (!targetAnchor.isContinuous || targetAnchor.isEdgeSupported(candidates[i].target)) {\n targetEdge = candidates[i].target;\n }\n else {\n targetEdge = null;\n }\n\n if (sourceEdge != null && targetEdge != null) {\n break;\n }\n }\n\n if (sourceAnchor.isContinuous) {\n sourceAnchor.setCurrentFace(sourceEdge);\n }\n\n if (targetAnchor.isContinuous) {\n targetAnchor.setCurrentFace(targetEdge);\n }\n\n// --------------------------------------------------------------------------------------\n\n return {\n a: [ sourceEdge, targetEdge ],\n theta: theta,\n theta2: theta2\n };\n };\n\n /**\n * Anchors model a position on some element at which an Endpoint may be located. They began as a first class citizen of jsPlumb, ie. a user\n * was required to create these themselves, but over time this has been replaced by the concept of referring to them either by name (eg. \"TopMiddle\"),\n * or by an array describing their coordinates (eg. [ 0, 0.5, 0, -1 ], which is the same as \"TopMiddle\"). jsPlumb now handles all of the\n * creation of Anchors without user intervention.\n */\n _jp.Anchor = function (params) {\n this.x = params.x || 0;\n this.y = params.y || 0;\n this.elementId = params.elementId;\n this.cssClass = params.cssClass || \"\";\n this.userDefinedLocation = null;\n this.orientation = params.orientation || [ 0, 0 ];\n this.lastReturnValue = null;\n this.offsets = params.offsets || [ 0, 0 ];\n this.timestamp = null;\n\n var relocatable = params.relocatable !== false;\n this.isRelocatable = function() { return relocatable; };\n this.setRelocatable = function(_relocatable) { relocatable = _relocatable; };\n var snapOnRelocate = params.snapOnRelocate !== false;\n this.isSnapOnRelocate = function() { return snapOnRelocate; };\n\n var locked = false;\n this.lock = function() { locked = true; };\n this.unlock = function() { locked = false; };\n this.isLocked = function() { return locked; };\n\n _ju.EventGenerator.apply(this);\n\n this.compute = function (params) {\n\n var xy = params.xy, wh = params.wh, timestamp = params.timestamp;\n\n if (params.clearUserDefinedLocation) {\n this.userDefinedLocation = null;\n }\n\n if (timestamp && timestamp === this.timestamp) {\n return this.lastReturnValue;\n }\n\n if (this.userDefinedLocation != null) {\n this.lastReturnValue = this.userDefinedLocation;\n }\n else {\n this.lastReturnValue = [ xy[0] + (this.x * wh[0]) + this.offsets[0], xy[1] + (this.y * wh[1]) + this.offsets[1], this.x, this.y ];\n }\n\n this.timestamp = timestamp;\n return this.lastReturnValue;\n };\n\n this.getCurrentLocation = function (params) {\n params = params || {};\n return (this.lastReturnValue == null || (params.timestamp != null && this.timestamp !== params.timestamp)) ? this.compute(params) : this.lastReturnValue;\n };\n\n this.setPosition = function(x, y, ox, oy, overrideLock) {\n if (!locked || overrideLock) {\n this.x = x;\n this.y = y;\n this.orientation = [ ox, oy ];\n this.lastReturnValue = null;\n }\n };\n };\n _ju.extend(_jp.Anchor, _ju.EventGenerator, {\n equals: function (anchor) {\n if (!anchor) {\n return false;\n }\n var ao = anchor.getOrientation(),\n o = this.getOrientation();\n return this.x === anchor.x && this.y === anchor.y && this.offsets[0] === anchor.offsets[0] && this.offsets[1] === anchor.offsets[1] && o[0] === ao[0] && o[1] === ao[1];\n },\n getUserDefinedLocation: function () {\n return this.userDefinedLocation;\n },\n setUserDefinedLocation: function (l) {\n this.userDefinedLocation = l;\n },\n clearUserDefinedLocation: function () {\n this.userDefinedLocation = null;\n },\n getOrientation: function () {\n return this.orientation;\n },\n getCssClass: function () {\n return this.cssClass;\n }\n });\n\n /**\n * An Anchor that floats. its orientation is computed dynamically from\n * its position relative to the anchor it is floating relative to. It is used when creating\n * a connection through drag and drop.\n *\n * TODO FloatingAnchor could totally be refactored to extend Anchor just slightly.\n */\n _jp.FloatingAnchor = function (params) {\n\n _jp.Anchor.apply(this, arguments);\n\n // this is the anchor that this floating anchor is referenced to for\n // purposes of calculating the orientation.\n var ref = params.reference,\n // the canvas this refers to.\n refCanvas = params.referenceCanvas,\n size = _jp.getSize(refCanvas),\n // these are used to store the current relative position of our\n // anchor wrt the reference anchor. they only indicate\n // direction, so have a value of 1 or -1 (or, very rarely, 0). these\n // values are written by the compute method, and read\n // by the getOrientation method.\n xDir = 0, yDir = 0,\n // temporary member used to store an orientation when the floating\n // anchor is hovering over another anchor.\n orientation = null,\n _lastResult = null;\n\n // clear from parent. we want floating anchor orientation to always be computed.\n this.orientation = null;\n\n // set these to 0 each; they are used by certain types of connectors in the loopback case,\n // when the connector is trying to clear the element it is on. but for floating anchor it's not\n // very important.\n this.x = 0;\n this.y = 0;\n\n this.isFloating = true;\n\n this.compute = function (params) {\n var xy = params.xy,\n result = [ xy[0] + (size[0] / 2), xy[1] + (size[1] / 2) ]; // return origin of the element. we may wish to improve this so that any object can be the drag proxy.\n _lastResult = result;\n return result;\n };\n\n this.getOrientation = function (_endpoint) {\n if (orientation) {\n return orientation;\n }\n else {\n var o = ref.getOrientation(_endpoint);\n // here we take into account the orientation of the other\n // anchor: if it declares zero for some direction, we declare zero too. this might not be the most awesome. perhaps we can come\n // up with a better way. it's just so that the line we draw looks like it makes sense. maybe this wont make sense.\n return [ Math.abs(o[0]) * xDir * -1,\n Math.abs(o[1]) * yDir * -1 ];\n }\n };\n\n /**\n * notification the endpoint associated with this anchor is hovering\n * over another anchor; we want to assume that anchor's orientation\n * for the duration of the hover.\n */\n this.over = function (anchor, endpoint) {\n orientation = anchor.getOrientation(endpoint);\n };\n\n /**\n * notification the endpoint associated with this anchor is no\n * longer hovering over another anchor; we should resume calculating\n * orientation as we normally do.\n */\n this.out = function () {\n orientation = null;\n };\n\n this.getCurrentLocation = function (params) {\n return _lastResult == null ? this.compute(params) : _lastResult;\n };\n };\n _ju.extend(_jp.FloatingAnchor, _jp.Anchor);\n\n var _convertAnchor = function (anchor, jsPlumbInstance, elementId) {\n return anchor.constructor === _jp.Anchor ? anchor : jsPlumbInstance.makeAnchor(anchor, elementId, jsPlumbInstance);\n };\n\n /* \n * A DynamicAnchor is an Anchor that contains a list of other Anchors, which it cycles\n * through at compute time to find the one that is located closest to\n * the center of the target element, and returns that Anchor's compute\n * method result. this causes endpoints to follow each other with\n * respect to the orientation of their target elements, which is a useful\n * feature for some applications.\n * \n */\n _jp.DynamicAnchor = function (params) {\n _jp.Anchor.apply(this, arguments);\n\n this.isDynamic = true;\n this.anchors = [];\n this.elementId = params.elementId;\n this.jsPlumbInstance = params.jsPlumbInstance;\n\n for (var i = 0; i < params.anchors.length; i++) {\n this.anchors[i] = _convertAnchor(params.anchors[i], this.jsPlumbInstance, this.elementId);\n }\n\n this.getAnchors = function () {\n return this.anchors;\n };\n\n var _curAnchor = this.anchors.length > 0 ? this.anchors[0] : null,\n _lastAnchor = _curAnchor,\n self = this,\n\n // helper method to calculate the distance between the centers of the two elements.\n _distance = function (anchor, cx, cy, xy, wh) {\n var ax = xy[0] + (anchor.x * wh[0]), ay = xy[1] + (anchor.y * wh[1]),\n acx = xy[0] + (wh[0] / 2), acy = xy[1] + (wh[1] / 2);\n return (Math.sqrt(Math.pow(cx - ax, 2) + Math.pow(cy - ay, 2)) +\n Math.sqrt(Math.pow(acx - ax, 2) + Math.pow(acy - ay, 2)));\n },\n // default method uses distance between element centers. you can provide your own method in the dynamic anchor\n // constructor (and also to jsPlumb.makeDynamicAnchor). the arguments to it are four arrays:\n // xy - xy loc of the anchor's element\n // wh - anchor's element's dimensions\n // txy - xy loc of the element of the other anchor in the connection\n // twh - dimensions of the element of the other anchor in the connection.\n // anchors - the list of selectable anchors\n _anchorSelector = params.selector || function (xy, wh, txy, twh, anchors) {\n var cx = txy[0] + (twh[0] / 2), cy = txy[1] + (twh[1] / 2);\n var minIdx = -1, minDist = Infinity;\n for (var i = 0; i < anchors.length; i++) {\n var d = _distance(anchors[i], cx, cy, xy, wh);\n if (d < minDist) {\n minIdx = i + 0;\n minDist = d;\n }\n }\n return anchors[minIdx];\n };\n\n this.compute = function (params) {\n var xy = params.xy, wh = params.wh, txy = params.txy, twh = params.twh;\n\n this.timestamp = params.timestamp;\n\n var udl = self.getUserDefinedLocation();\n if (udl != null) {\n return udl;\n }\n\n // if anchor is locked or an opposite element was not given, we\n // maintain our state. anchor will be locked\n // if it is the source of a drag and drop.\n if (this.isLocked() || txy == null || twh == null) {\n return _curAnchor.compute(params);\n }\n else {\n params.timestamp = null; // otherwise clear this, i think. we want the anchor to compute.\n }\n\n _curAnchor = _anchorSelector(xy, wh, txy, twh, this.anchors);\n this.x = _curAnchor.x;\n this.y = _curAnchor.y;\n\n if (_curAnchor !== _lastAnchor) {\n this.fire(\"anchorChanged\", _curAnchor);\n }\n\n _lastAnchor = _curAnchor;\n\n return _curAnchor.compute(params);\n };\n\n this.getCurrentLocation = function (params) {\n return this.getUserDefinedLocation() || (_curAnchor != null ? _curAnchor.getCurrentLocation(params) : null);\n };\n\n this.getOrientation = function (_endpoint) {\n return _curAnchor != null ? _curAnchor.getOrientation(_endpoint) : [ 0, 0 ];\n };\n this.over = function (anchor, endpoint) {\n if (_curAnchor != null) {\n _curAnchor.over(anchor, endpoint);\n }\n };\n this.out = function () {\n if (_curAnchor != null) {\n _curAnchor.out();\n }\n };\n\n this.setAnchor = function(a) {\n _curAnchor = a;\n };\n\n this.getCssClass = function () {\n return (_curAnchor && _curAnchor.getCssClass()) || \"\";\n };\n\n /**\n * Attempt to match an anchor with the given coordinates and then set it.\n * @param coords\n * @returns true if matching anchor found, false otherwise.\n */\n this.setAnchorCoordinates = function(coords) {\n var idx = jsPlumbUtil.findWithFunction(this.anchors, function(a) {\n return a.x === coords[0] && a.y === coords[1];\n });\n if (idx !== -1) {\n this.setAnchor(this.anchors[idx]);\n return true;\n } else {\n return false;\n }\n };\n };\n _ju.extend(_jp.DynamicAnchor, _jp.Anchor);\n\n// -------- basic anchors ------------------ \n var _curryAnchor = function (x, y, ox, oy, type, fnInit) {\n _jp.Anchors[type] = function (params) {\n var a = params.jsPlumbInstance.makeAnchor([ x, y, ox, oy, 0, 0 ], params.elementId, params.jsPlumbInstance);\n a.type = type;\n if (fnInit) {\n fnInit(a, params);\n }\n return a;\n };\n };\n\n _curryAnchor(0.5, 0, 0, -1, \"TopCenter\");\n _curryAnchor(0.5, 1, 0, 1, \"BottomCenter\");\n _curryAnchor(0, 0.5, -1, 0, \"LeftMiddle\");\n _curryAnchor(1, 0.5, 1, 0, \"RightMiddle\");\n\n _curryAnchor(0.5, 0, 0, -1, \"Top\");\n _curryAnchor(0.5, 1, 0, 1, \"Bottom\");\n _curryAnchor(0, 0.5, -1, 0, \"Left\");\n _curryAnchor(1, 0.5, 1, 0, \"Right\");\n _curryAnchor(0.5, 0.5, 0, 0, \"Center\");\n _curryAnchor(1, 0, 0, -1, \"TopRight\");\n _curryAnchor(1, 1, 0, 1, \"BottomRight\");\n _curryAnchor(0, 0, 0, -1, \"TopLeft\");\n _curryAnchor(0, 1, 0, 1, \"BottomLeft\");\n\n// ------- dynamic anchors ------------------- \n\n // default dynamic anchors chooses from Top, Right, Bottom, Left\n _jp.Defaults.DynamicAnchors = function (params) {\n return params.jsPlumbInstance.makeAnchors([\"TopCenter\", \"RightMiddle\", \"BottomCenter\", \"LeftMiddle\"], params.elementId, params.jsPlumbInstance);\n };\n\n // default dynamic anchors bound to name 'AutoDefault'\n _jp.Anchors.AutoDefault = function (params) {\n var a = params.jsPlumbInstance.makeDynamicAnchor(_jp.Defaults.DynamicAnchors(params));\n a.type = \"AutoDefault\";\n return a;\n };\n\n// ------- continuous anchors ------------------- \n\n var _curryContinuousAnchor = function (type, faces) {\n _jp.Anchors[type] = function (params) {\n var a = params.jsPlumbInstance.makeAnchor([\"Continuous\", { faces: faces }], params.elementId, params.jsPlumbInstance);\n a.type = type;\n return a;\n };\n };\n\n _jp.Anchors.Continuous = function (params) {\n return params.jsPlumbInstance.continuousAnchorFactory.get(params);\n };\n\n _curryContinuousAnchor(\"ContinuousLeft\", [\"left\"]);\n _curryContinuousAnchor(\"ContinuousTop\", [\"top\"]);\n _curryContinuousAnchor(\"ContinuousBottom\", [\"bottom\"]);\n _curryContinuousAnchor(\"ContinuousRight\", [\"right\"]);\n\n// ------- position assign anchors ------------------- \n\n // this anchor type lets you assign the position at connection time.\n _curryAnchor(0, 0, 0, 0, \"Assign\", function (anchor, params) {\n // find what to use as the \"position finder\". the user may have supplied a String which represents\n // the id of a position finder in jsPlumb.AnchorPositionFinders, or the user may have supplied the\n // position finder as a function. we find out what to use and then set it on the anchor.\n var pf = params.position || \"Fixed\";\n anchor.positionFinder = pf.constructor === String ? params.jsPlumbInstance.AnchorPositionFinders[pf] : pf;\n // always set the constructor params; the position finder might need them later (the Grid one does,\n // for example)\n anchor.constructorParams = params;\n });\n\n // these are the default anchor positions finders, which are used by the makeTarget function. supplying\n // a position finder argument to that function allows you to specify where the resulting anchor will\n // be located\n root.jsPlumbInstance.prototype.AnchorPositionFinders = {\n \"Fixed\": function (dp, ep, es) {\n return [ (dp.left - ep.left) / es[0], (dp.top - ep.top) / es[1] ];\n },\n \"Grid\": function (dp, ep, es, params) {\n var dx = dp.left - ep.left, dy = dp.top - ep.top,\n gx = es[0] / (params.grid[0]), gy = es[1] / (params.grid[1]),\n mx = Math.floor(dx / gx), my = Math.floor(dy / gy);\n return [ ((mx * gx) + (gx / 2)) / es[0], ((my * gy) + (gy / 2)) / es[1] ];\n }\n };\n\n// ------- perimeter anchors ------------------- \n\n _jp.Anchors.Perimeter = function (params) {\n params = params || {};\n var anchorCount = params.anchorCount || 60,\n shape = params.shape;\n\n if (!shape) {\n throw new Error(\"no shape supplied to Perimeter Anchor type\");\n }\n\n var _circle = function () {\n var r = 0.5, step = Math.PI * 2 / anchorCount, current = 0, a = [];\n for (var i = 0; i < anchorCount; i++) {\n var x = r + (r * Math.sin(current)),\n y = r + (r * Math.cos(current));\n a.push([ x, y, 0, 0 ]);\n current += step;\n }\n return a;\n },\n _path = function (segments) {\n var anchorsPerFace = anchorCount / segments.length, a = [],\n _computeFace = function (x1, y1, x2, y2, fractionalLength) {\n anchorsPerFace = anchorCount * fractionalLength;\n var dx = (x2 - x1) / anchorsPerFace, dy = (y2 - y1) / anchorsPerFace;\n for (var i = 0; i < anchorsPerFace; i++) {\n a.push([\n x1 + (dx * i),\n y1 + (dy * i),\n 0,\n 0\n ]);\n }\n };\n\n for (var i = 0; i < segments.length; i++) {\n _computeFace.apply(null, segments[i]);\n }\n\n return a;\n },\n _shape = function (faces) {\n var s = [];\n for (var i = 0; i < faces.length; i++) {\n s.push([faces[i][0], faces[i][1], faces[i][2], faces[i][3], 1 / faces.length]);\n }\n return _path(s);\n },\n _rectangle = function () {\n return _shape([\n [ 0, 0, 1, 0 ],\n [ 1, 0, 1, 1 ],\n [ 1, 1, 0, 1 ],\n [ 0, 1, 0, 0 ]\n ]);\n };\n\n var _shapes = {\n \"Circle\": _circle,\n \"Ellipse\": _circle,\n \"Diamond\": function () {\n return _shape([\n [ 0.5, 0, 1, 0.5 ],\n [ 1, 0.5, 0.5, 1 ],\n [ 0.5, 1, 0, 0.5 ],\n [ 0, 0.5, 0.5, 0 ]\n ]);\n },\n \"Rectangle\": _rectangle,\n \"Square\": _rectangle,\n \"Triangle\": function () {\n return _shape([\n [ 0.5, 0, 1, 1 ],\n [ 1, 1, 0, 1 ],\n [ 0, 1, 0.5, 0]\n ]);\n },\n \"Path\": function (params) {\n var points = params.points, p = [], tl = 0;\n for (var i = 0; i < points.length - 1; i++) {\n var l = Math.sqrt(Math.pow(points[i][2] - points[i][0]) + Math.pow(points[i][3] - points[i][1]));\n tl += l;\n p.push([points[i][0], points[i][1], points[i + 1][0], points[i + 1][1], l]);\n }\n for (var j = 0; j < p.length; j++) {\n p[j][4] = p[j][4] / tl;\n }\n return _path(p);\n }\n },\n _rotate = function (points, amountInDegrees) {\n var o = [], theta = amountInDegrees / 180 * Math.PI;\n for (var i = 0; i < points.length; i++) {\n var _x = points[i][0] - 0.5,\n _y = points[i][1] - 0.5;\n\n o.push([\n 0.5 + ((_x * Math.cos(theta)) - (_y * Math.sin(theta))),\n 0.5 + ((_x * Math.sin(theta)) + (_y * Math.cos(theta))),\n points[i][2],\n points[i][3]\n ]);\n }\n return o;\n };\n\n if (!_shapes[shape]) {\n throw new Error(\"Shape [\" + shape + \"] is unknown by Perimeter Anchor type\");\n }\n\n var da = _shapes[shape](params);\n if (params.rotation) {\n da = _rotate(da, params.rotation);\n }\n var a = params.jsPlumbInstance.makeDynamicAnchor(da);\n a.type = \"Perimeter\";\n return a;\n };\n}).call(typeof window !== 'undefined' ? window : this);\n/*\n * This file contains the default Connectors, Endpoint and Overlay definitions.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n * \n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n * \n * Dual licensed under the MIT and GPL2 licenses.\n */\n;\n(function () {\n\n \"use strict\";\n var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil, _jg = root.Biltong;\n\n _jp.Segments = {\n\n /*\n * Class: AbstractSegment\n * A Connector is made up of 1..N Segments, each of which has a Type, such as 'Straight', 'Arc',\n * 'Bezier'. This is new from 1.4.2, and gives us a lot more flexibility when drawing connections: things such\n * as rounded corners for flowchart connectors, for example, or a straight line stub for Bezier connections, are\n * much easier to do now.\n *\n * A Segment is responsible for providing coordinates for painting it, and also must be able to report its length.\n * \n */\n AbstractSegment: function (params) {\n this.params = params;\n\n /**\n * Function: findClosestPointOnPath\n * Finds the closest point on this segment to the given [x, y],\n * returning both the x and y of the point plus its distance from\n * the supplied point, and its location along the length of the\n * path inscribed by the segment. This implementation returns\n * Infinity for distance and null values for everything else;\n * subclasses are expected to override.\n */\n this.findClosestPointOnPath = function (x, y) {\n return {\n d: Infinity,\n x: null,\n y: null,\n l: null\n };\n };\n\n this.getBounds = function () {\n return {\n minX: Math.min(params.x1, params.x2),\n minY: Math.min(params.y1, params.y2),\n maxX: Math.max(params.x1, params.x2),\n maxY: Math.max(params.y1, params.y2)\n };\n };\n\n /**\n * Computes the list of points on the segment that intersect the given line.\n * @method lineIntersection\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @returns {Array<[number, number]>}\n */\n this.lineIntersection = function(x1, y1, x2, y2) {\n return [];\n };\n\n /**\n * Computes the list of points on the segment that intersect the box with the given origin and size.\n * @method boxIntersection\n * @param {number} x1\n * @param {number} y1\n * @param {number} w\n * @param {number} h\n * @returns {Array<[number, number]>}\n */\n this.boxIntersection = function(x, y, w, h) {\n var a = [];\n a.push.apply(a, this.lineIntersection(x, y, x + w, y));\n a.push.apply(a, this.lineIntersection(x + w, y, x + w, y + h));\n a.push.apply(a, this.lineIntersection(x + w, y + h, x, y + h));\n a.push.apply(a, this.lineIntersection(x, y + h, x, y));\n return a;\n };\n\n /**\n * Computes the list of points on the segment that intersect the given bounding box, which is an object of the form { x:.., y:.., w:.., h:.. }.\n * @method lineIntersection\n * @param {BoundingRectangle} box\n * @returns {Array<[number, number]>}\n */\n this.boundingBoxIntersection = function(box) {\n return this.boxIntersection(box.x, box.y, box.w, box.y);\n };\n },\n Straight: function (params) {\n var _super = _jp.Segments.AbstractSegment.apply(this, arguments),\n length, m, m2, x1, x2, y1, y2,\n _recalc = function () {\n length = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n m = _jg.gradient({x: x1, y: y1}, {x: x2, y: y2});\n m2 = -1 / m;\n };\n\n this.type = \"Straight\";\n\n this.getLength = function () {\n return length;\n };\n this.getGradient = function () {\n return m;\n };\n\n this.getCoordinates = function () {\n return { x1: x1, y1: y1, x2: x2, y2: y2 };\n };\n this.setCoordinates = function (coords) {\n x1 = coords.x1;\n y1 = coords.y1;\n x2 = coords.x2;\n y2 = coords.y2;\n _recalc();\n };\n this.setCoordinates({x1: params.x1, y1: params.y1, x2: params.x2, y2: params.y2});\n\n this.getBounds = function () {\n return {\n minX: Math.min(x1, x2),\n minY: Math.min(y1, y2),\n maxX: Math.max(x1, x2),\n maxY: Math.max(y1, y2)\n };\n };\n\n /**\n * returns the point on the segment's path that is 'location' along the length of the path, where 'location' is a decimal from\n * 0 to 1 inclusive. for the straight line segment this is simple maths.\n */\n this.pointOnPath = function (location, absolute) {\n if (location === 0 && !absolute) {\n return { x: x1, y: y1 };\n }\n else if (location === 1 && !absolute) {\n return { x: x2, y: y2 };\n }\n else {\n var l = absolute ? location > 0 ? location : length + location : location * length;\n return _jg.pointOnLine({x: x1, y: y1}, {x: x2, y: y2}, l);\n }\n };\n\n /**\n * returns the gradient of the segment at the given point - which for us is constant.\n */\n this.gradientAtPoint = function (_) {\n return m;\n };\n\n /**\n * returns the point on the segment's path that is 'distance' along the length of the path from 'location', where\n * 'location' is a decimal from 0 to 1 inclusive, and 'distance' is a number of pixels.\n * this hands off to jsPlumbUtil to do the maths, supplying two points and the distance.\n */\n this.pointAlongPathFrom = function (location, distance, absolute) {\n var p = this.pointOnPath(location, absolute),\n farAwayPoint = distance <= 0 ? {x: x1, y: y1} : {x: x2, y: y2 };\n\n /*\n location == 1 ? {\n x:x1 + ((x2 - x1) * 10),\n y:y1 + ((y1 - y2) * 10)\n } :\n */\n\n if (distance <= 0 && Math.abs(distance) > 1) {\n distance *= -1;\n }\n\n return _jg.pointOnLine(p, farAwayPoint, distance);\n };\n\n // is c between a and b?\n var within = function (a, b, c) {\n return c >= Math.min(a, b) && c <= Math.max(a, b);\n };\n // find which of a and b is closest to c\n var closest = function (a, b, c) {\n return Math.abs(c - a) < Math.abs(c - b) ? a : b;\n };\n\n /**\n Function: findClosestPointOnPath\n Finds the closest point on this segment to [x,y]. See\n notes on this method in AbstractSegment.\n */\n this.findClosestPointOnPath = function (x, y) {\n var out = {\n d: Infinity,\n x: null,\n y: null,\n l: null,\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2\n };\n\n if (m === 0) {\n out.y = y1;\n out.x = within(x1, x2, x) ? x : closest(x1, x2, x);\n }\n else if (m === Infinity || m === -Infinity) {\n out.x = x1;\n out.y = within(y1, y2, y) ? y : closest(y1, y2, y);\n }\n else {\n // closest point lies on normal from given point to this line. \n var b = y1 - (m * x1),\n b2 = y - (m2 * x),\n // y1 = m.x1 + b and y1 = m2.x1 + b2\n // so m.x1 + b = m2.x1 + b2\n // x1(m - m2) = b2 - b\n // x1 = (b2 - b) / (m - m2)\n _x1 = (b2 - b) / (m - m2),\n _y1 = (m * _x1) + b;\n\n out.x = within(x1, x2, _x1) ? _x1 : closest(x1, x2, _x1);//_x1;\n out.y = within(y1, y2, _y1) ? _y1 : closest(y1, y2, _y1);//_y1;\n }\n\n var fractionInSegment = _jg.lineLength([ out.x, out.y ], [ x1, y1 ]);\n out.d = _jg.lineLength([x, y], [out.x, out.y]);\n out.l = fractionInSegment / length;\n return out;\n };\n\n var _pointLiesBetween = function(q, p1, p2) {\n return (p2 > p1) ? (p1 <= q && q <= p2) : (p1 >= q && q >= p2);\n }, _plb = _pointLiesBetween;\n\n /**\n * Calculates all intersections of the given line with this segment.\n * @param _x1\n * @param _y1\n * @param _x2\n * @param _y2\n * @returns {Array}\n */\n this.lineIntersection = function(_x1, _y1, _x2, _y2) {\n var m2 = Math.abs(_jg.gradient({x: _x1, y: _y1}, {x: _x2, y: _y2})),\n m1 = Math.abs(m),\n b = m1 === Infinity ? x1 : y1 - (m1 * x1),\n out = [],\n b2 = m2 === Infinity ? _x1 : _y1 - (m2 * _x1);\n\n // if lines parallel, no intersection\n if (m2 !== m1) {\n // perpendicular, segment horizontal\n if(m2 === Infinity && m1 === 0) {\n if (_plb(_x1, x1, x2) && _plb(y1, _y1, _y2)) {\n out = [ _x1, y1 ]; // we return X on the incident line and Y from the segment\n }\n } else if(m2 === 0 && m1 === Infinity) {\n // perpendicular, segment vertical\n if(_plb(_y1, y1, y2) && _plb(x1, _x1, _x2)) {\n out = [x1, _y1]; // we return X on the segment and Y from the incident line\n }\n } else {\n var X, Y;\n if (m2 === Infinity) {\n // test line is a vertical line. where does it cross the segment?\n X = _x1;\n if (_plb(X, x1, x2)) {\n Y = (m1 * _x1) + b;\n if (_plb(Y, _y1, _y2)) {\n out = [ X, Y ];\n }\n }\n } else if (m2 === 0) {\n Y = _y1;\n // test line is a horizontal line. where does it cross the segment?\n if (_plb(Y, y1, y2)) {\n X = (_y1 - b) / m1;\n if (_plb(X, _x1, _x2)) {\n out = [ X, Y ];\n }\n }\n } else {\n // mX + b = m2X + b2\n // mX - m2X = b2 - b\n // X(m - m2) = b2 - b\n // X = (b2 - b) / (m - m2)\n // Y = mX + b\n X = (b2 - b) / (m1 - m2);\n Y = (m1 * X) + b;\n if(_plb(X, x1, x2) && _plb(Y, y1, y2)) {\n out = [ X, Y];\n }\n }\n }\n }\n\n return out;\n };\n\n /**\n * Calculates all intersections of the given box with this segment. By default this method simply calls `lineIntersection` with each of the four\n * faces of the box; subclasses can override this if they think there's a faster way to compute the entire box at once.\n * @param x X position of top left corner of box\n * @param y Y position of top left corner of box\n * @param w width of box\n * @param h height of box\n * @returns {Array}\n */\n this.boxIntersection = function(x, y, w, h) {\n var a = [];\n a.push.apply(a, this.lineIntersection(x, y, x + w, y));\n a.push.apply(a, this.lineIntersection(x + w, y, x + w, y + h));\n a.push.apply(a, this.lineIntersection(x + w, y + h, x, y + h));\n a.push.apply(a, this.lineIntersection(x, y + h, x, y));\n return a;\n };\n\n /**\n * Calculates all intersections of the given bounding box with this segment. By default this method simply calls `lineIntersection` with each of the four\n * faces of the box; subclasses can override this if they think there's a faster way to compute the entire box at once.\n * @param box Bounding box, in { x:.., y:..., w:..., h:... } format.\n * @returns {Array}\n */\n this.boundingBoxIntersection = function(box) {\n return this.boxIntersection(box.x, box.y, box.w, box.h);\n };\n },\n\n /*\n Arc Segment. You need to supply:\n\n r - radius\n cx - center x for the arc\n cy - center y for the arc\n ac - whether the arc is anticlockwise or not. default is clockwise.\n\n and then either:\n\n startAngle - startAngle for the arc.\n endAngle - endAngle for the arc.\n\n or:\n\n x1 - x for start point\n y1 - y for start point\n x2 - x for end point\n y2 - y for end point\n\n */\n Arc: function (params) {\n var _super = _jp.Segments.AbstractSegment.apply(this, arguments),\n _calcAngle = function (_x, _y) {\n return _jg.theta([params.cx, params.cy], [_x, _y]);\n },\n _calcAngleForLocation = function (segment, location) {\n if (segment.anticlockwise) {\n var sa = segment.startAngle < segment.endAngle ? segment.startAngle + TWO_PI : segment.startAngle,\n s = Math.abs(sa - segment.endAngle);\n return sa - (s * location);\n }\n else {\n var ea = segment.endAngle < segment.startAngle ? segment.endAngle + TWO_PI : segment.endAngle,\n ss = Math.abs(ea - segment.startAngle);\n\n return segment.startAngle + (ss * location);\n }\n },\n TWO_PI = 2 * Math.PI;\n\n this.radius = params.r;\n this.anticlockwise = params.ac;\n this.type = \"Arc\";\n\n if (params.startAngle && params.endAngle) {\n this.startAngle = params.startAngle;\n this.endAngle = params.endAngle;\n this.x1 = params.cx + (this.radius * Math.cos(params.startAngle));\n this.y1 = params.cy + (this.radius * Math.sin(params.startAngle));\n this.x2 = params.cx + (this.radius * Math.cos(params.endAngle));\n this.y2 = params.cy + (this.radius * Math.sin(params.endAngle));\n }\n else {\n this.startAngle = _calcAngle(params.x1, params.y1);\n this.endAngle = _calcAngle(params.x2, params.y2);\n this.x1 = params.x1;\n this.y1 = params.y1;\n this.x2 = params.x2;\n this.y2 = params.y2;\n }\n\n if (this.endAngle < 0) {\n this.endAngle += TWO_PI;\n }\n if (this.startAngle < 0) {\n this.startAngle += TWO_PI;\n }\n\n // segment is used by vml \n //this.segment = _jg.quadrant([this.x1, this.y1], [this.x2, this.y2]);\n\n // we now have startAngle and endAngle as positive numbers, meaning the\n // absolute difference (|d|) between them is the sweep (s) of this arc, unless the\n // arc is 'anticlockwise' in which case 's' is given by 2PI - |d|.\n\n var ea = this.endAngle < this.startAngle ? this.endAngle + TWO_PI : this.endAngle;\n this.sweep = Math.abs(ea - this.startAngle);\n if (this.anticlockwise) {\n this.sweep = TWO_PI - this.sweep;\n }\n var circumference = 2 * Math.PI * this.radius,\n frac = this.sweep / TWO_PI,\n length = circumference * frac;\n\n this.getLength = function () {\n return length;\n };\n\n this.getBounds = function () {\n return {\n minX: params.cx - params.r,\n maxX: params.cx + params.r,\n minY: params.cy - params.r,\n maxY: params.cy + params.r\n };\n };\n\n var VERY_SMALL_VALUE = 0.0000000001,\n gentleRound = function (n) {\n var f = Math.floor(n), r = Math.ceil(n);\n if (n - f < VERY_SMALL_VALUE) {\n return f;\n }\n else if (r - n < VERY_SMALL_VALUE) {\n return r;\n }\n return n;\n };\n\n /**\n * returns the point on the segment's path that is 'location' along the length of the path, where 'location' is a decimal from\n * 0 to 1 inclusive.\n */\n this.pointOnPath = function (location, absolute) {\n\n if (location === 0) {\n return { x: this.x1, y: this.y1, theta: this.startAngle };\n }\n else if (location === 1) {\n return { x: this.x2, y: this.y2, theta: this.endAngle };\n }\n\n if (absolute) {\n location = location / length;\n }\n\n var angle = _calcAngleForLocation(this, location),\n _x = params.cx + (params.r * Math.cos(angle)),\n _y = params.cy + (params.r * Math.sin(angle));\n\n return { x: gentleRound(_x), y: gentleRound(_y), theta: angle };\n };\n\n /**\n * returns the gradient of the segment at the given point.\n */\n this.gradientAtPoint = function (location, absolute) {\n var p = this.pointOnPath(location, absolute);\n var m = _jg.normal([ params.cx, params.cy ], [p.x, p.y ]);\n if (!this.anticlockwise && (m === Infinity || m === -Infinity)) {\n m *= -1;\n }\n return m;\n };\n\n this.pointAlongPathFrom = function (location, distance, absolute) {\n var p = this.pointOnPath(location, absolute),\n arcSpan = distance / circumference * 2 * Math.PI,\n dir = this.anticlockwise ? -1 : 1,\n startAngle = p.theta + (dir * arcSpan),\n startX = params.cx + (this.radius * Math.cos(startAngle)),\n startY = params.cy + (this.radius * Math.sin(startAngle));\n\n return {x: startX, y: startY};\n };\n\n // TODO: lineIntersection\n },\n\n Bezier: function (params) {\n this.curve = [\n { x: params.x1, y: params.y1},\n { x: params.cp1x, y: params.cp1y },\n { x: params.cp2x, y: params.cp2y },\n { x: params.x2, y: params.y2 }\n ];\n\n var _super = _jp.Segments.AbstractSegment.apply(this, arguments);\n // although this is not a strictly rigorous determination of bounds\n // of a bezier curve, it works for the types of curves that this segment\n // type produces.\n this.bounds = {\n minX: Math.min(params.x1, params.x2, params.cp1x, params.cp2x),\n minY: Math.min(params.y1, params.y2, params.cp1y, params.cp2y),\n maxX: Math.max(params.x1, params.x2, params.cp1x, params.cp2x),\n maxY: Math.max(params.y1, params.y2, params.cp1y, params.cp2y)\n };\n\n this.type = \"Bezier\";\n\n var _translateLocation = function (_curve, location, absolute) {\n if (absolute) {\n location = root.jsBezier.locationAlongCurveFrom(_curve, location > 0 ? 0 : 1, location);\n }\n\n return location;\n };\n\n /**\n * returns the point on the segment's path that is 'location' along the length of the path, where 'location' is a decimal from\n * 0 to 1 inclusive.\n */\n this.pointOnPath = function (location, absolute) {\n location = _translateLocation(this.curve, location, absolute);\n return root.jsBezier.pointOnCurve(this.curve, location);\n };\n\n /**\n * returns the gradient of the segment at the given point.\n */\n this.gradientAtPoint = function (location, absolute) {\n location = _translateLocation(this.curve, location, absolute);\n return root.jsBezier.gradientAtPoint(this.curve, location);\n };\n\n this.pointAlongPathFrom = function (location, distance, absolute) {\n location = _translateLocation(this.curve, location, absolute);\n return root.jsBezier.pointAlongCurveFrom(this.curve, location, distance);\n };\n\n this.getLength = function () {\n return root.jsBezier.getLength(this.curve);\n };\n\n this.getBounds = function () {\n return this.bounds;\n };\n\n this.findClosestPointOnPath = function (x, y) {\n var p = root.jsBezier.nearestPointOnCurve({x:x,y:y}, this.curve);\n return {\n d:Math.sqrt(Math.pow(p.point.x - x, 2) + Math.pow(p.point.y - y, 2)),\n x:p.point.x,\n y:p.point.y,\n l:p.location,\n s:this\n };\n };\n\n this.lineIntersection = function(x1, y1, x2, y2) {\n return root.jsBezier.lineIntersection(x1, y1, x2, y2, this.curve);\n };\n }\n };\n\n _jp.SegmentRenderer = {\n getPath: function (segment, isFirstSegment) {\n return ({\n \"Straight\": function (isFirstSegment) {\n var d = segment.getCoordinates();\n return (isFirstSegment ? \"M \" + d.x1 + \" \" + d.y1 + \" \" : \"\") + \"L \" + d.x2 + \" \" + d.y2;\n },\n \"Bezier\": function (isFirstSegment) {\n var d = segment.params;\n return (isFirstSegment ? \"M \" + d.x2 + \" \" + d.y2 + \" \" : \"\") +\n \"C \" + d.cp2x + \" \" + d.cp2y + \" \" + d.cp1x + \" \" + d.cp1y + \" \" + d.x1 + \" \" + d.y1;\n },\n \"Arc\": function (isFirstSegment) {\n var d = segment.params,\n laf = segment.sweep > Math.PI ? 1 : 0,\n sf = segment.anticlockwise ? 0 : 1;\n\n return (isFirstSegment ? \"M\" + segment.x1 + \" \" + segment.y1 + \" \" : \"\") + \"A \" + segment.radius + \" \" + d.r + \" 0 \" + laf + \",\" + sf + \" \" + segment.x2 + \" \" + segment.y2;\n }\n })[segment.type](isFirstSegment);\n }\n };\n\n /*\n Class: UIComponent\n Superclass for Connector and AbstractEndpoint.\n */\n var AbstractComponent = function () {\n this.resetBounds = function () {\n this.bounds = { minX: Infinity, minY: Infinity, maxX: -Infinity, maxY: -Infinity };\n };\n this.resetBounds();\n };\n\n /*\n * Class: Connector\n * Superclass for all Connectors; here is where Segments are managed. This is exposed on jsPlumb just so it\n * can be accessed from other files. You should not try to instantiate one of these directly.\n *\n * When this class is asked for a pointOnPath, or gradient etc, it must first figure out which segment to dispatch\n * that request to. This is done by keeping track of the total connector length as segments are added, and also\n * their cumulative ratios to the total length. Then when the right segment is found it is a simple case of dispatching\n * the request to it (and adjusting 'location' so that it is relative to the beginning of that segment.)\n */\n _jp.Connectors.AbstractConnector = function (params) {\n\n AbstractComponent.apply(this, arguments);\n\n var segments = [],\n totalLength = 0,\n segmentProportions = [],\n segmentProportionalLengths = [],\n stub = params.stub || 0,\n sourceStub = _ju.isArray(stub) ? stub[0] : stub,\n targetStub = _ju.isArray(stub) ? stub[1] : stub,\n gap = params.gap || 0,\n sourceGap = _ju.isArray(gap) ? gap[0] : gap,\n targetGap = _ju.isArray(gap) ? gap[1] : gap,\n userProvidedSegments = null,\n paintInfo = null;\n\n this.getPathData = function() {\n var p = \"\";\n for (var i = 0; i < segments.length; i++) {\n p += _jp.SegmentRenderer.getPath(segments[i], i === 0);\n p += \" \";\n }\n return p;\n };\n\n /**\n * Function: findSegmentForPoint\n * Returns the segment that is closest to the given [x,y],\n * null if nothing found. This function returns a JS\n * object with:\n *\n * d - distance from segment\n * l - proportional location in segment\n * x - x point on the segment\n * y - y point on the segment\n * s - the segment itself.\n */\n this.findSegmentForPoint = function (x, y) {\n var out = { d: Infinity, s: null, x: null, y: null, l: null };\n for (var i = 0; i < segments.length; i++) {\n var _s = segments[i].findClosestPointOnPath(x, y);\n if (_s.d < out.d) {\n out.d = _s.d;\n out.l = _s.l;\n out.x = _s.x;\n out.y = _s.y;\n out.s = segments[i];\n out.x1 = _s.x1;\n out.x2 = _s.x2;\n out.y1 = _s.y1;\n out.y2 = _s.y2;\n out.index = i;\n }\n }\n\n return out;\n };\n\n this.lineIntersection = function(x1, y1, x2, y2) {\n var out = [];\n for (var i = 0; i < segments.length; i++) {\n out.push.apply(out, segments[i].lineIntersection(x1, y1, x2, y2));\n }\n return out;\n };\n\n this.boxIntersection = function(x, y, w, h) {\n var out = [];\n for (var i = 0; i < segments.length; i++) {\n out.push.apply(out, segments[i].boxIntersection(x, y, w, h));\n }\n return out;\n };\n\n this.boundingBoxIntersection = function(box) {\n var out = [];\n for (var i = 0; i < segments.length; i++) {\n out.push.apply(out, segments[i].boundingBoxIntersection(box));\n }\n return out;\n };\n\n var _updateSegmentProportions = function () {\n var curLoc = 0;\n for (var i = 0; i < segments.length; i++) {\n var sl = segments[i].getLength();\n segmentProportionalLengths[i] = sl / totalLength;\n segmentProportions[i] = [curLoc, (curLoc += (sl / totalLength)) ];\n }\n },\n\n /**\n * returns [segment, proportion of travel in segment, segment index] for the segment\n * that contains the point which is 'location' distance along the entire path, where\n * 'location' is a decimal between 0 and 1 inclusive. in this connector type, paths\n * are made up of a list of segments, each of which contributes some fraction to\n * the total length.\n * From 1.3.10 this also supports the 'absolute' property, which lets us specify a location\n * as the absolute distance in pixels, rather than a proportion of the total path.\n */\n _findSegmentForLocation = function (location, absolute) {\n if (absolute) {\n location = location > 0 ? location / totalLength : (totalLength + location) / totalLength;\n }\n var idx = segmentProportions.length - 1, inSegmentProportion = 1;\n for (var i = 0; i < segmentProportions.length; i++) {\n if (segmentProportions[i][1] >= location) {\n idx = i;\n // todo is this correct for all connector path types?\n inSegmentProportion = location === 1 ? 1 : location === 0 ? 0 : (location - segmentProportions[i][0]) / segmentProportionalLengths[i];\n break;\n }\n }\n return { segment: segments[idx], proportion: inSegmentProportion, index: idx };\n },\n _addSegment = function (conn, type, params) {\n if (params.x1 === params.x2 && params.y1 === params.y2) {\n return;\n }\n var s = new _jp.Segments[type](params);\n segments.push(s);\n totalLength += s.getLength();\n conn.updateBounds(s);\n },\n _clearSegments = function () {\n totalLength = segments.length = segmentProportions.length = segmentProportionalLengths.length = 0;\n };\n\n this.setSegments = function (_segs) {\n userProvidedSegments = [];\n totalLength = 0;\n for (var i = 0; i < _segs.length; i++) {\n userProvidedSegments.push(_segs[i]);\n totalLength += _segs[i].getLength();\n }\n };\n\n this.getLength = function() {\n return totalLength;\n };\n\n var _prepareCompute = function (params) {\n this.strokeWidth = params.strokeWidth;\n var segment = _jg.quadrant(params.sourcePos, params.targetPos),\n swapX = params.targetPos[0] < params.sourcePos[0],\n swapY = params.targetPos[1] < params.sourcePos[1],\n lw = params.strokeWidth || 1,\n so = params.sourceEndpoint.anchor.getOrientation(params.sourceEndpoint),\n to = params.targetEndpoint.anchor.getOrientation(params.targetEndpoint),\n x = swapX ? params.targetPos[0] : params.sourcePos[0],\n y = swapY ? params.targetPos[1] : params.sourcePos[1],\n w = Math.abs(params.targetPos[0] - params.sourcePos[0]),\n h = Math.abs(params.targetPos[1] - params.sourcePos[1]);\n\n // if either anchor does not have an orientation set, we derive one from their relative\n // positions. we fix the axis to be the one in which the two elements are further apart, and\n // point each anchor at the other element. this is also used when dragging a new connection.\n if (so[0] === 0 && so[1] === 0 || to[0] === 0 && to[1] === 0) {\n var index = w > h ? 0 : 1, oIndex = [1, 0][index];\n so = [];\n to = [];\n so[index] = params.sourcePos[index] > params.targetPos[index] ? -1 : 1;\n to[index] = params.sourcePos[index] > params.targetPos[index] ? 1 : -1;\n so[oIndex] = 0;\n to[oIndex] = 0;\n }\n\n var sx = swapX ? w + (sourceGap * so[0]) : sourceGap * so[0],\n sy = swapY ? h + (sourceGap * so[1]) : sourceGap * so[1],\n tx = swapX ? targetGap * to[0] : w + (targetGap * to[0]),\n ty = swapY ? targetGap * to[1] : h + (targetGap * to[1]),\n oProduct = ((so[0] * to[0]) + (so[1] * to[1]));\n\n var result = {\n sx: sx, sy: sy, tx: tx, ty: ty, lw: lw,\n xSpan: Math.abs(tx - sx),\n ySpan: Math.abs(ty - sy),\n mx: (sx + tx) / 2,\n my: (sy + ty) / 2,\n so: so, to: to, x: x, y: y, w: w, h: h,\n segment: segment,\n startStubX: sx + (so[0] * sourceStub),\n startStubY: sy + (so[1] * sourceStub),\n endStubX: tx + (to[0] * targetStub),\n endStubY: ty + (to[1] * targetStub),\n isXGreaterThanStubTimes2: Math.abs(sx - tx) > (sourceStub + targetStub),\n isYGreaterThanStubTimes2: Math.abs(sy - ty) > (sourceStub + targetStub),\n opposite: oProduct === -1,\n perpendicular: oProduct === 0,\n orthogonal: oProduct === 1,\n sourceAxis: so[0] === 0 ? \"y\" : \"x\",\n points: [x, y, w, h, sx, sy, tx, ty ],\n stubs:[sourceStub, targetStub]\n };\n result.anchorOrientation = result.opposite ? \"opposite\" : result.orthogonal ? \"orthogonal\" : \"perpendicular\";\n return result;\n };\n\n this.getSegments = function () {\n return segments;\n };\n\n this.updateBounds = function (segment) {\n var segBounds = segment.getBounds();\n this.bounds.minX = Math.min(this.bounds.minX, segBounds.minX);\n this.bounds.maxX = Math.max(this.bounds.maxX, segBounds.maxX);\n this.bounds.minY = Math.min(this.bounds.minY, segBounds.minY);\n this.bounds.maxY = Math.max(this.bounds.maxY, segBounds.maxY);\n };\n\n var dumpSegmentsToConsole = function () {\n console.log(\"SEGMENTS:\");\n for (var i = 0; i < segments.length; i++) {\n console.log(segments[i].type, segments[i].getLength(), segmentProportions[i]);\n }\n };\n\n this.pointOnPath = function (location, absolute) {\n var seg = _findSegmentForLocation(location, absolute);\n return seg.segment && seg.segment.pointOnPath(seg.proportion, false) || [0, 0];\n };\n\n this.gradientAtPoint = function (location, absolute) {\n var seg = _findSegmentForLocation(location, absolute);\n return seg.segment && seg.segment.gradientAtPoint(seg.proportion, false) || 0;\n };\n\n this.pointAlongPathFrom = function (location, distance, absolute) {\n var seg = _findSegmentForLocation(location, absolute);\n // TODO what happens if this crosses to the next segment?\n return seg.segment && seg.segment.pointAlongPathFrom(seg.proportion, distance, false) || [0, 0];\n };\n\n this.compute = function (params) {\n paintInfo = _prepareCompute.call(this, params);\n\n _clearSegments();\n this._compute(paintInfo, params);\n this.x = paintInfo.points[0];\n this.y = paintInfo.points[1];\n this.w = paintInfo.points[2];\n this.h = paintInfo.points[3];\n this.segment = paintInfo.segment;\n _updateSegmentProportions();\n };\n\n return {\n addSegment: _addSegment,\n prepareCompute: _prepareCompute,\n sourceStub: sourceStub,\n targetStub: targetStub,\n maxStub: Math.max(sourceStub, targetStub),\n sourceGap: sourceGap,\n targetGap: targetGap,\n maxGap: Math.max(sourceGap, targetGap)\n };\n };\n _ju.extend(_jp.Connectors.AbstractConnector, AbstractComponent);\n\n\n // ********************************* END OF CONNECTOR TYPES *******************************************************************\n\n // ********************************* ENDPOINT TYPES *******************************************************************\n\n _jp.Endpoints.AbstractEndpoint = function (params) {\n AbstractComponent.apply(this, arguments);\n var compute = this.compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {\n var out = this._compute.apply(this, arguments);\n this.x = out[0];\n this.y = out[1];\n this.w = out[2];\n this.h = out[3];\n this.bounds.minX = this.x;\n this.bounds.minY = this.y;\n this.bounds.maxX = this.x + this.w;\n this.bounds.maxY = this.y + this.h;\n return out;\n };\n return {\n compute: compute,\n cssClass: params.cssClass\n };\n };\n _ju.extend(_jp.Endpoints.AbstractEndpoint, AbstractComponent);\n\n /**\n * Class: Endpoints.Dot\n * A round endpoint, with default radius 10 pixels.\n */\n\n /**\n * Function: Constructor\n *\n * Parameters:\n *\n * radius - radius of the endpoint. defaults to 10 pixels.\n */\n _jp.Endpoints.Dot = function (params) {\n this.type = \"Dot\";\n var _super = _jp.Endpoints.AbstractEndpoint.apply(this, arguments);\n params = params || {};\n this.radius = params.radius || 10;\n this.defaultOffset = 0.5 * this.radius;\n this.defaultInnerRadius = this.radius / 3;\n\n this._compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {\n this.radius = endpointStyle.radius || this.radius;\n var x = anchorPoint[0] - this.radius,\n y = anchorPoint[1] - this.radius,\n w = this.radius * 2,\n h = this.radius * 2;\n\n if (endpointStyle.stroke) {\n var lw = endpointStyle.strokeWidth || 1;\n x -= lw;\n y -= lw;\n w += (lw * 2);\n h += (lw * 2);\n }\n return [ x, y, w, h, this.radius ];\n };\n };\n _ju.extend(_jp.Endpoints.Dot, _jp.Endpoints.AbstractEndpoint);\n\n _jp.Endpoints.Rectangle = function (params) {\n this.type = \"Rectangle\";\n var _super = _jp.Endpoints.AbstractEndpoint.apply(this, arguments);\n params = params || {};\n this.width = params.width || 20;\n this.height = params.height || 20;\n\n this._compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {\n var width = endpointStyle.width || this.width,\n height = endpointStyle.height || this.height,\n x = anchorPoint[0] - (width / 2),\n y = anchorPoint[1] - (height / 2);\n\n return [ x, y, width, height];\n };\n };\n _ju.extend(_jp.Endpoints.Rectangle, _jp.Endpoints.AbstractEndpoint);\n\n var DOMElementEndpoint = function (params) {\n _jp.jsPlumbUIComponent.apply(this, arguments);\n this._jsPlumb.displayElements = [];\n };\n _ju.extend(DOMElementEndpoint, _jp.jsPlumbUIComponent, {\n getDisplayElements: function () {\n return this._jsPlumb.displayElements;\n },\n appendDisplayElement: function (el) {\n this._jsPlumb.displayElements.push(el);\n }\n });\n\n /**\n * Class: Endpoints.Image\n * Draws an image as the Endpoint.\n */\n /**\n * Function: Constructor\n *\n * Parameters:\n *\n * src - location of the image to use.\n\n TODO: multiple references to self. not sure quite how to get rid of them entirely. perhaps self = null in the cleanup\n function will suffice\n\n TODO this class still might leak memory.\n\n */\n _jp.Endpoints.Image = function (params) {\n\n this.type = \"Image\";\n DOMElementEndpoint.apply(this, arguments);\n _jp.Endpoints.AbstractEndpoint.apply(this, arguments);\n\n var _onload = params.onload,\n src = params.src || params.url,\n clazz = params.cssClass ? \" \" + params.cssClass : \"\";\n\n this._jsPlumb.img = new Image();\n this._jsPlumb.ready = false;\n this._jsPlumb.initialized = false;\n this._jsPlumb.deleted = false;\n this._jsPlumb.widthToUse = params.width;\n this._jsPlumb.heightToUse = params.height;\n this._jsPlumb.endpoint = params.endpoint;\n\n this._jsPlumb.img.onload = function () {\n if (this._jsPlumb != null) {\n this._jsPlumb.ready = true;\n this._jsPlumb.widthToUse = this._jsPlumb.widthToUse || this._jsPlumb.img.width;\n this._jsPlumb.heightToUse = this._jsPlumb.heightToUse || this._jsPlumb.img.height;\n if (_onload) {\n _onload(this);\n }\n }\n }.bind(this);\n\n /*\n Function: setImage\n Sets the Image to use in this Endpoint.\n\n Parameters:\n img - may be a URL or an Image object\n onload - optional; a callback to execute once the image has loaded.\n */\n this._jsPlumb.endpoint.setImage = function (_img, onload) {\n var s = _img.constructor === String ? _img : _img.src;\n _onload = onload;\n this._jsPlumb.img.src = s;\n\n if (this.canvas != null) {\n this.canvas.setAttribute(\"src\", this._jsPlumb.img.src);\n }\n }.bind(this);\n\n this._jsPlumb.endpoint.setImage(src, _onload);\n this._compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {\n this.anchorPoint = anchorPoint;\n if (this._jsPlumb.ready) {\n return [anchorPoint[0] - this._jsPlumb.widthToUse / 2, anchorPoint[1] - this._jsPlumb.heightToUse / 2,\n this._jsPlumb.widthToUse, this._jsPlumb.heightToUse];\n }\n else {\n return [0, 0, 0, 0];\n }\n };\n\n this.canvas = _jp.createElement(\"img\", {\n position:\"absolute\",\n margin:0,\n padding:0,\n outline:0\n }, this._jsPlumb.instance.endpointClass + clazz);\n\n if (this._jsPlumb.widthToUse) {\n this.canvas.setAttribute(\"width\", this._jsPlumb.widthToUse);\n }\n if (this._jsPlumb.heightToUse) {\n this.canvas.setAttribute(\"height\", this._jsPlumb.heightToUse);\n }\n this._jsPlumb.instance.appendElement(this.canvas);\n\n this.actuallyPaint = function (d, style, anchor) {\n if (!this._jsPlumb.deleted) {\n if (!this._jsPlumb.initialized) {\n this.canvas.setAttribute(\"src\", this._jsPlumb.img.src);\n this.appendDisplayElement(this.canvas);\n this._jsPlumb.initialized = true;\n }\n var x = this.anchorPoint[0] - (this._jsPlumb.widthToUse / 2),\n y = this.anchorPoint[1] - (this._jsPlumb.heightToUse / 2);\n _ju.sizeElement(this.canvas, x, y, this._jsPlumb.widthToUse, this._jsPlumb.heightToUse);\n }\n };\n\n this.paint = function (style, anchor) {\n if (this._jsPlumb != null) { // may have been deleted\n if (this._jsPlumb.ready) {\n this.actuallyPaint(style, anchor);\n }\n else {\n root.setTimeout(function () {\n this.paint(style, anchor);\n }.bind(this), 200);\n }\n }\n };\n };\n _ju.extend(_jp.Endpoints.Image, [ DOMElementEndpoint, _jp.Endpoints.AbstractEndpoint ], {\n cleanup: function (force) {\n if (force) {\n this._jsPlumb.deleted = true;\n if (this.canvas) {\n this.canvas.parentNode.removeChild(this.canvas);\n }\n this.canvas = null;\n }\n }\n });\n\n /*\n * Class: Endpoints.Blank\n * An Endpoint that paints nothing (visible) on the screen. Supports cssClass and hoverClass parameters like all Endpoints.\n */\n _jp.Endpoints.Blank = function (params) {\n var _super = _jp.Endpoints.AbstractEndpoint.apply(this, arguments);\n this.type = \"Blank\";\n DOMElementEndpoint.apply(this, arguments);\n this._compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {\n return [anchorPoint[0], anchorPoint[1], 10, 0];\n };\n\n var clazz = params.cssClass ? \" \" + params.cssClass : \"\";\n\n this.canvas = _jp.createElement(\"div\", {\n display: \"block\",\n width: \"1px\",\n height: \"1px\",\n background: \"transparent\",\n position: \"absolute\"\n }, this._jsPlumb.instance.endpointClass + clazz);\n\n this._jsPlumb.instance.appendElement(this.canvas);\n\n this.paint = function (style, anchor) {\n _ju.sizeElement(this.canvas, this.x, this.y, this.w, this.h);\n };\n };\n _ju.extend(_jp.Endpoints.Blank, [_jp.Endpoints.AbstractEndpoint, DOMElementEndpoint], {\n cleanup: function () {\n if (this.canvas && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n }\n }\n });\n\n /*\n * Class: Endpoints.Triangle\n * A triangular Endpoint.\n */\n /*\n * Function: Constructor\n *\n * Parameters:\n *\n * width width of the triangle's base. defaults to 55 pixels.\n * height height of the triangle from base to apex. defaults to 55 pixels.\n */\n _jp.Endpoints.Triangle = function (params) {\n this.type = \"Triangle\";\n _jp.Endpoints.AbstractEndpoint.apply(this, arguments);\n var self = this;\n params = params || { };\n params.width = params.width || 55;\n params.height = params.height || 55;\n this.width = params.width;\n this.height = params.height;\n this._compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {\n var width = endpointStyle.width || self.width,\n height = endpointStyle.height || self.height,\n x = anchorPoint[0] - (width / 2),\n y = anchorPoint[1] - (height / 2);\n return [ x, y, width, height ];\n };\n };\n// ********************************* END OF ENDPOINT TYPES *******************************************************************\n\n\n// ********************************* OVERLAY DEFINITIONS *********************************************************************** \n\n var AbstractOverlay = _jp.Overlays.AbstractOverlay = function (params) {\n this.visible = true;\n this.isAppendedAtTopLevel = true;\n this.component = params.component;\n this.loc = params.location == null ? 0.5 : params.location;\n this.endpointLoc = params.endpointLocation == null ? [ 0.5, 0.5] : params.endpointLocation;\n this.visible = params.visible !== false;\n };\n AbstractOverlay.prototype = {\n cleanup: function (force) {\n if (force) {\n this.component = null;\n this.canvas = null;\n this.endpointLoc = null;\n }\n },\n reattach:function(instance, component) { },\n setVisible: function (val) {\n this.visible = val;\n this.component.repaint();\n },\n isVisible: function () {\n return this.visible;\n },\n hide: function () {\n this.setVisible(false);\n },\n show: function () {\n this.setVisible(true);\n },\n incrementLocation: function (amount) {\n this.loc += amount;\n this.component.repaint();\n },\n setLocation: function (l) {\n this.loc = l;\n this.component.repaint();\n },\n getLocation: function () {\n return this.loc;\n },\n updateFrom:function() { }\n };\n\n\n /*\n * Class: Overlays.Arrow\n *\n * An arrow overlay, defined by four points: the head, the two sides of the tail, and a 'foldback' point at some distance along the length\n * of the arrow that lines from each tail point converge into. The foldback point is defined using a decimal that indicates some fraction\n * of the length of the arrow and has a default value of 0.623. A foldback point value of 1 would mean that the arrow had a straight line\n * across the tail.\n */\n /*\n * @constructor\n *\n * @param {Object} params Constructor params.\n * @param {Number} [params.length] Distance in pixels from head to tail baseline. default 20.\n * @param {Number} [params.width] Width in pixels of the tail baseline. default 20.\n * @param {String} [params.fill] Style to use when filling the arrow. defaults to \"black\".\n * @param {String} [params.stroke] Style to use when stroking the arrow. defaults to null, which means the arrow is not stroked.\n * @param {Number} [params.stroke-width] Line width to use when stroking the arrow. defaults to 1, but only used if stroke is not null.\n * @param {Number} [params.foldback] Distance (as a decimal from 0 to 1 inclusive) along the length of the arrow marking the point the tail points should fold back to. defaults to 0.623.\n * @param {Number} [params.location] Distance (as a decimal from 0 to 1 inclusive) marking where the arrow should sit on the connector. defaults to 0.5.\n * @param {NUmber} [params.direction] Indicates the direction the arrow points in. valid values are -1 and 1; 1 is default.\n */\n _jp.Overlays.Arrow = function (params) {\n this.type = \"Arrow\";\n AbstractOverlay.apply(this, arguments);\n this.isAppendedAtTopLevel = false;\n params = params || {};\n var self = this;\n\n this.length = params.length || 20;\n this.width = params.width || 20;\n this.id = params.id;\n var direction = (params.direction || 1) < 0 ? -1 : 1,\n paintStyle = params.paintStyle || { \"stroke-width\": 1 },\n // how far along the arrow the lines folding back in come to. default is 62.3%.\n foldback = params.foldback || 0.623;\n\n this.computeMaxSize = function () {\n return self.width * 1.5;\n };\n\n this.elementCreated = function(p, component) {\n this.path = p;\n if (params.events) {\n for (var i in params.events) {\n _jp.on(p, i, params.events[i]);\n }\n }\n };\n\n this.draw = function (component, currentConnectionPaintStyle) {\n\n var hxy, mid, txy, tail, cxy;\n if (component.pointAlongPathFrom) {\n\n if (_ju.isString(this.loc) || this.loc > 1 || this.loc < 0) {\n var l = parseInt(this.loc, 10),\n fromLoc = this.loc < 0 ? 1 : 0;\n hxy = component.pointAlongPathFrom(fromLoc, l, false);\n mid = component.pointAlongPathFrom(fromLoc, l - (direction * this.length / 2), false);\n txy = _jg.pointOnLine(hxy, mid, this.length);\n }\n else if (this.loc === 1) {\n hxy = component.pointOnPath(this.loc);\n mid = component.pointAlongPathFrom(this.loc, -(this.length));\n txy = _jg.pointOnLine(hxy, mid, this.length);\n\n if (direction === -1) {\n var _ = txy;\n txy = hxy;\n hxy = _;\n }\n }\n else if (this.loc === 0) {\n txy = component.pointOnPath(this.loc);\n mid = component.pointAlongPathFrom(this.loc, this.length);\n hxy = _jg.pointOnLine(txy, mid, this.length);\n if (direction === -1) {\n var __ = txy;\n txy = hxy;\n hxy = __;\n }\n }\n else {\n hxy = component.pointAlongPathFrom(this.loc, direction * this.length / 2);\n mid = component.pointOnPath(this.loc);\n txy = _jg.pointOnLine(hxy, mid, this.length);\n }\n\n tail = _jg.perpendicularLineTo(hxy, txy, this.width);\n cxy = _jg.pointOnLine(hxy, txy, foldback * this.length);\n\n var d = { hxy: hxy, tail: tail, cxy: cxy },\n stroke = paintStyle.stroke || currentConnectionPaintStyle.stroke,\n fill = paintStyle.fill || currentConnectionPaintStyle.stroke,\n lineWidth = paintStyle.strokeWidth || currentConnectionPaintStyle.strokeWidth;\n\n return {\n component: component,\n d: d,\n \"stroke-width\": lineWidth,\n stroke: stroke,\n fill: fill,\n minX: Math.min(hxy.x, tail[0].x, tail[1].x),\n maxX: Math.max(hxy.x, tail[0].x, tail[1].x),\n minY: Math.min(hxy.y, tail[0].y, tail[1].y),\n maxY: Math.max(hxy.y, tail[0].y, tail[1].y)\n };\n }\n else {\n return {component: component, minX: 0, maxX: 0, minY: 0, maxY: 0};\n }\n };\n };\n _ju.extend(_jp.Overlays.Arrow, AbstractOverlay, {\n updateFrom:function(d) {\n this.length = d.length || this.length;\n this.width = d.width|| this.width;\n this.direction = d.direction != null ? d.direction : this.direction;\n this.foldback = d.foldback|| this.foldback;\n },\n cleanup:function() {\n if (this.path && this.canvas) {\n this.canvas.removeChild(this.path);\n }\n }\n });\n\n /*\n * Class: Overlays.PlainArrow\n *\n * A basic arrow. This is in fact just one instance of the more generic case in which the tail folds back on itself to some\n * point along the length of the arrow: in this case, that foldback point is the full length of the arrow. so it just does\n * a 'call' to Arrow with foldback set appropriately.\n */\n /*\n * Function: Constructor\n * See <Overlays.Arrow> for allowed parameters for this overlay.\n */\n _jp.Overlays.PlainArrow = function (params) {\n params = params || {};\n var p = _jp.extend(params, {foldback: 1});\n _jp.Overlays.Arrow.call(this, p);\n this.type = \"PlainArrow\";\n };\n _ju.extend(_jp.Overlays.PlainArrow, _jp.Overlays.Arrow);\n\n /*\n * Class: Overlays.Diamond\n * \n * A diamond. Like PlainArrow, this is a concrete case of the more generic case of the tail points converging on some point...it just\n * happens that in this case, that point is greater than the length of the the arrow.\n *\n * this could probably do with some help with positioning...due to the way it reuses the Arrow paint code, what Arrow thinks is the\n * center is actually 1/4 of the way along for this guy. but we don't have any knowledge of pixels at this point, so we're kind of\n * stuck when it comes to helping out the Arrow class. possibly we could pass in a 'transpose' parameter or something. the value\n * would be -l/4 in this case - move along one quarter of the total length.\n */\n /*\n * Function: Constructor\n * See <Overlays.Arrow> for allowed parameters for this overlay.\n */\n _jp.Overlays.Diamond = function (params) {\n params = params || {};\n var l = params.length || 40,\n p = _jp.extend(params, {length: l / 2, foldback: 2});\n _jp.Overlays.Arrow.call(this, p);\n this.type = \"Diamond\";\n };\n _ju.extend(_jp.Overlays.Diamond, _jp.Overlays.Arrow);\n\n var _getDimensions = function (component, forceRefresh) {\n if (component._jsPlumb.cachedDimensions == null || forceRefresh) {\n component._jsPlumb.cachedDimensions = component.getDimensions();\n }\n return component._jsPlumb.cachedDimensions;\n };\n\n // abstract superclass for overlays that add an element to the DOM.\n var AbstractDOMOverlay = function (params) {\n _jp.jsPlumbUIComponent.apply(this, arguments);\n AbstractOverlay.apply(this, arguments);\n\n // hand off fired events to associated component.\n var _f = this.fire;\n this.fire = function () {\n _f.apply(this, arguments);\n if (this.component) {\n this.component.fire.apply(this.component, arguments);\n }\n };\n\n this.detached=false;\n this.id = params.id;\n this._jsPlumb.div = null;\n this._jsPlumb.initialised = false;\n this._jsPlumb.component = params.component;\n this._jsPlumb.cachedDimensions = null;\n this._jsPlumb.create = params.create;\n this._jsPlumb.initiallyInvisible = params.visible === false;\n\n this.getElement = function () {\n if (this._jsPlumb.div == null) {\n var div = this._jsPlumb.div = _jp.getElement(this._jsPlumb.create(this._jsPlumb.component));\n div.style.position = \"absolute\";\n jsPlumb.addClass(div, this._jsPlumb.instance.overlayClass + \" \" +\n (this.cssClass ? this.cssClass :\n params.cssClass ? params.cssClass : \"\"));\n this._jsPlumb.instance.appendElement(div);\n this._jsPlumb.instance.getId(div);\n this.canvas = div;\n\n // in IE the top left corner is what it placed at the desired location. This will not\n // be fixed. IE8 is not going to be supported for much longer.\n var ts = \"translate(-50%, -50%)\";\n div.style.webkitTransform = ts;\n div.style.mozTransform = ts;\n div.style.msTransform = ts;\n div.style.oTransform = ts;\n div.style.transform = ts;\n\n // write the related component into the created element\n div._jsPlumb = this;\n\n if (params.visible === false) {\n div.style.display = \"none\";\n }\n }\n return this._jsPlumb.div;\n };\n\n this.draw = function (component, currentConnectionPaintStyle, absolutePosition) {\n var td = _getDimensions(this);\n if (td != null && td.length === 2) {\n var cxy = { x: 0, y: 0 };\n\n // absolutePosition would have been set by a call to connection.setAbsoluteOverlayPosition.\n if (absolutePosition) {\n cxy = { x: absolutePosition[0], y: absolutePosition[1] };\n }\n else if (component.pointOnPath) {\n var loc = this.loc, absolute = false;\n if (_ju.isString(this.loc) || this.loc < 0 || this.loc > 1) {\n loc = parseInt(this.loc, 10);\n absolute = true;\n }\n cxy = component.pointOnPath(loc, absolute); // a connection\n }\n else {\n var locToUse = this.loc.constructor === Array ? this.loc : this.endpointLoc;\n cxy = { x: locToUse[0] * component.w,\n y: locToUse[1] * component.h };\n }\n\n var minx = cxy.x - (td[0] / 2),\n miny = cxy.y - (td[1] / 2);\n\n return {\n component: component,\n d: { minx: minx, miny: miny, td: td, cxy: cxy },\n minX: minx,\n maxX: minx + td[0],\n minY: miny,\n maxY: miny + td[1]\n };\n }\n else {\n return {minX: 0, maxX: 0, minY: 0, maxY: 0};\n }\n };\n };\n _ju.extend(AbstractDOMOverlay, [_jp.jsPlumbUIComponent, AbstractOverlay], {\n getDimensions: function () {\n return [1,1];\n },\n setVisible: function (state) {\n if (this._jsPlumb.div) {\n this._jsPlumb.div.style.display = state ? \"block\" : \"none\";\n // if initially invisible, dimensions are 0,0 and never get updated\n if (state && this._jsPlumb.initiallyInvisible) {\n _getDimensions(this, true);\n this.component.repaint();\n this._jsPlumb.initiallyInvisible = false;\n }\n }\n },\n /*\n * Function: clearCachedDimensions\n * Clears the cached dimensions for the label. As a performance enhancement, label dimensions are\n * cached from 1.3.12 onwards. The cache is cleared when you change the label text, of course, but\n * there are other reasons why the text dimensions might change - if you make a change through CSS, for\n * example, you might change the font size. in that case you should explicitly call this method.\n */\n clearCachedDimensions: function () {\n this._jsPlumb.cachedDimensions = null;\n },\n cleanup: function (force) {\n if (force) {\n if (this._jsPlumb.div != null) {\n this._jsPlumb.div._jsPlumb = null;\n this._jsPlumb.instance.removeElement(this._jsPlumb.div);\n }\n }\n else {\n // if not a forced cleanup, just detach child from parent for now.\n if (this._jsPlumb && this._jsPlumb.div && this._jsPlumb.div.parentNode) {\n this._jsPlumb.div.parentNode.removeChild(this._jsPlumb.div);\n }\n this.detached = true;\n }\n\n },\n reattach:function(instance, component) {\n if (this._jsPlumb.div != null) {\n instance.getContainer().appendChild(this._jsPlumb.div);\n }\n this.detached = false;\n },\n computeMaxSize: function () {\n var td = _getDimensions(this);\n return Math.max(td[0], td[1]);\n },\n paint: function (p, containerExtents) {\n if (!this._jsPlumb.initialised) {\n this.getElement();\n p.component.appendDisplayElement(this._jsPlumb.div);\n this._jsPlumb.initialised = true;\n if (this.detached) {\n this._jsPlumb.div.parentNode.removeChild(this._jsPlumb.div);\n }\n }\n this._jsPlumb.div.style.left = (p.component.x + p.d.minx) + \"px\";\n this._jsPlumb.div.style.top = (p.component.y + p.d.miny) + \"px\";\n }\n });\n\n /*\n * Class: Overlays.Custom\n * A Custom overlay. You supply a 'create' function which returns some DOM element, and jsPlumb positions it.\n * The 'create' function is passed a Connection or Endpoint.\n */\n /*\n * Function: Constructor\n * \n * Parameters:\n * create - function for jsPlumb to call that returns a DOM element.\n * location - distance (as a decimal from 0 to 1 inclusive) marking where the label should sit on the connector. defaults to 0.5.\n * id - optional id to use for later retrieval of this overlay.\n *\n */\n _jp.Overlays.Custom = function (params) {\n this.type = \"Custom\";\n AbstractDOMOverlay.apply(this, arguments);\n };\n _ju.extend(_jp.Overlays.Custom, AbstractDOMOverlay);\n\n _jp.Overlays.GuideLines = function () {\n var self = this;\n self.length = 50;\n self.strokeWidth = 5;\n this.type = \"GuideLines\";\n AbstractOverlay.apply(this, arguments);\n _jp.jsPlumbUIComponent.apply(this, arguments);\n this.draw = function (connector, currentConnectionPaintStyle) {\n\n var head = connector.pointAlongPathFrom(self.loc, self.length / 2),\n mid = connector.pointOnPath(self.loc),\n tail = _jg.pointOnLine(head, mid, self.length),\n tailLine = _jg.perpendicularLineTo(head, tail, 40),\n headLine = _jg.perpendicularLineTo(tail, head, 20);\n\n return {\n connector: connector,\n head: head,\n tail: tail,\n headLine: headLine,\n tailLine: tailLine,\n minX: Math.min(head.x, tail.x, headLine[0].x, headLine[1].x),\n minY: Math.min(head.y, tail.y, headLine[0].y, headLine[1].y),\n maxX: Math.max(head.x, tail.x, headLine[0].x, headLine[1].x),\n maxY: Math.max(head.y, tail.y, headLine[0].y, headLine[1].y)\n };\n };\n\n // this.cleanup = function() { }; // nothing to clean up for GuideLines\n };\n\n /*\n * Class: Overlays.Label\n\n */\n /*\n * Function: Constructor\n * \n * Parameters:\n * cssClass - optional css class string to append to css class. This string is appended \"as-is\", so you can of course have multiple classes\n * defined. This parameter is preferred to using labelStyle, borderWidth and borderStyle.\n * label - the label to paint. May be a string or a function that returns a string. Nothing will be painted if your label is null or your\n * label function returns null. empty strings _will_ be painted.\n * location - distance (as a decimal from 0 to 1 inclusive) marking where the label should sit on the connector. defaults to 0.5.\n * id - optional id to use for later retrieval of this overlay.\n * \n *\n */\n _jp.Overlays.Label = function (params) {\n this.labelStyle = params.labelStyle;\n\n var labelWidth = null, labelHeight = null, labelText = null, labelPadding = null;\n this.cssClass = this.labelStyle != null ? this.labelStyle.cssClass : null;\n var p = _jp.extend({\n create: function () {\n return _jp.createElement(\"div\");\n }}, params);\n _jp.Overlays.Custom.call(this, p);\n this.type = \"Label\";\n this.label = params.label || \"\";\n this.labelText = null;\n if (this.labelStyle) {\n var el = this.getElement();\n this.labelStyle.font = this.labelStyle.font || \"12px sans-serif\";\n el.style.font = this.labelStyle.font;\n el.style.color = this.labelStyle.color || \"black\";\n if (this.labelStyle.fill) {\n el.style.background = this.labelStyle.fill;\n }\n if (this.labelStyle.borderWidth > 0) {\n var dStyle = this.labelStyle.borderStyle ? this.labelStyle.borderStyle : \"black\";\n el.style.border = this.labelStyle.borderWidth + \"px solid \" + dStyle;\n }\n if (this.labelStyle.padding) {\n el.style.padding = this.labelStyle.padding;\n }\n }\n\n };\n _ju.extend(_jp.Overlays.Label, _jp.Overlays.Custom, {\n cleanup: function (force) {\n if (force) {\n this.div = null;\n this.label = null;\n this.labelText = null;\n this.cssClass = null;\n this.labelStyle = null;\n }\n },\n getLabel: function () {\n return this.label;\n },\n /*\n * Function: setLabel\n * sets the label's, um, label. you would think i'd call this function\n * 'setText', but you can pass either a Function or a String to this, so\n * it makes more sense as 'setLabel'. This uses innerHTML on the label div, so keep\n * that in mind if you need escaped HTML.\n */\n setLabel: function (l) {\n this.label = l;\n this.labelText = null;\n this.clearCachedDimensions();\n this.update();\n this.component.repaint();\n },\n getDimensions: function () {\n this.update();\n return AbstractDOMOverlay.prototype.getDimensions.apply(this, arguments);\n },\n update: function () {\n if (typeof this.label === \"function\") {\n var lt = this.label(this);\n this.getElement().innerHTML = lt.replace(/\\r\\n/g, \"<br/>\");\n }\n else {\n if (this.labelText == null) {\n this.labelText = this.label;\n this.getElement().innerHTML = this.labelText.replace(/\\r\\n/g, \"<br/>\");\n }\n }\n },\n updateFrom:function(d) {\n if(d.label != null){\n this.setLabel(d.label);\n }\n }\n });\n\n // ********************************* END OF OVERLAY DEFINITIONS ***********************************************************************\n\n}).call(typeof window !== 'undefined' ? window : this);\n\n/*\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n *\n * Dual licensed under the MIT and GPL2 licenses.\n */\n;(function() {\n \"use strict\";\n\n var root = this,\n _ju = root.jsPlumbUtil,\n _jpi = root.jsPlumbInstance;\n\n var GROUP_COLLAPSED_CLASS = \"jtk-group-collapsed\";\n var GROUP_EXPANDED_CLASS = \"jtk-group-expanded\";\n var GROUP_CONTAINER_SELECTOR = \"[jtk-group-content]\";\n var ELEMENT_DRAGGABLE_EVENT = \"elementDraggable\";\n var STOP = \"stop\";\n var REVERT = \"revert\";\n var GROUP_MANAGER = \"_groupManager\";\n var GROUP = \"_jsPlumbGroup\";\n var GROUP_DRAG_SCOPE = \"_jsPlumbGroupDrag\";\n var EVT_CHILD_ADDED = \"group:addMember\";\n var EVT_CHILD_REMOVED = \"group:removeMember\";\n var EVT_GROUP_ADDED = \"group:add\";\n var EVT_GROUP_REMOVED = \"group:remove\";\n var EVT_EXPAND = \"group:expand\";\n var EVT_COLLAPSE = \"group:collapse\";\n var EVT_GROUP_DRAG_STOP = \"groupDragStop\";\n var EVT_CONNECTION_MOVED = \"connectionMoved\";\n var EVT_INTERNAL_CONNECTION_DETACHED = \"internal.connectionDetached\";\n\n var CMD_REMOVE_ALL = \"removeAll\";\n var CMD_ORPHAN_ALL = \"orphanAll\";\n var CMD_SHOW = \"show\";\n var CMD_HIDE = \"hide\";\n\n var GroupManager = function(_jsPlumb) {\n var _managedGroups = {}, _connectionSourceMap = {}, _connectionTargetMap = {}, self = this;\n\n _jsPlumb.bind(\"connection\", function(p) {\n if (p.source[GROUP] != null && p.target[GROUP] != null && p.source[GROUP] === p.target[GROUP]) {\n _connectionSourceMap[p.connection.id] = p.source[GROUP];\n _connectionTargetMap[p.connection.id] = p.source[GROUP];\n }\n else {\n if (p.source[GROUP] != null) {\n _ju.suggest(p.source[GROUP].connections.source, p.connection);\n _connectionSourceMap[p.connection.id] = p.source[GROUP];\n }\n if (p.target[GROUP] != null) {\n _ju.suggest(p.target[GROUP].connections.target, p.connection);\n _connectionTargetMap[p.connection.id] = p.target[GROUP];\n }\n }\n });\n\n function _cleanupDetachedConnection(conn) {\n delete conn.proxies;\n var group = _connectionSourceMap[conn.id], f;\n if (group != null) {\n f = function(c) { return c.id === conn.id; };\n _ju.removeWithFunction(group.connections.source, f);\n _ju.removeWithFunction(group.connections.target, f);\n delete _connectionSourceMap[conn.id];\n }\n\n group = _connectionTargetMap[conn.id];\n if (group != null) {\n f = function(c) { return c.id === conn.id; };\n _ju.removeWithFunction(group.connections.source, f);\n _ju.removeWithFunction(group.connections.target, f);\n delete _connectionTargetMap[conn.id];\n }\n }\n\n _jsPlumb.bind(EVT_INTERNAL_CONNECTION_DETACHED, function(p) {\n _cleanupDetachedConnection(p.connection);\n });\n\n _jsPlumb.bind(EVT_CONNECTION_MOVED, function(p) {\n var connMap = p.index === 0 ? _connectionSourceMap : _connectionTargetMap;\n var group = connMap[p.connection.id];\n if (group) {\n var list = group.connections[p.index === 0 ? \"source\" : \"target\"];\n var idx = list.indexOf(p.connection);\n if (idx !== -1) {\n list.splice(idx, 1);\n }\n }\n });\n\n this.addGroup = function(group) {\n _jsPlumb.addClass(group.getEl(), GROUP_EXPANDED_CLASS);\n _managedGroups[group.id] = group;\n group.manager = this;\n _updateConnectionsForGroup(group);\n _jsPlumb.fire(EVT_GROUP_ADDED, { group:group });\n };\n\n this.addToGroup = function(group, el, doNotFireEvent) {\n group = this.getGroup(group);\n if (group) {\n var groupEl = group.getEl();\n\n if (el._isJsPlumbGroup) {\n return;\n }\n var currentGroup = el._jsPlumbGroup;\n // if already a member of this group, do nothing\n if (currentGroup !== group) {\n var elpos = _jsPlumb.getOffset(el, true);\n var cpos = group.collapsed ? _jsPlumb.getOffset(groupEl, true) : _jsPlumb.getOffset(group.getDragArea(), true);\n\n // otherwise, transfer to this group.\n if (currentGroup != null) {\n currentGroup.remove(el, false, doNotFireEvent, false, group);\n self.updateConnectionsForGroup(currentGroup);\n }\n group.add(el, doNotFireEvent/*, currentGroup*/);\n\n var handleDroppedConnections = function (list, index) {\n var oidx = index === 0 ? 1 : 0;\n list.each(function (c) {\n c.setVisible(false);\n if (c.endpoints[oidx].element._jsPlumbGroup === group) {\n c.endpoints[oidx].setVisible(false);\n self.expandConnection(c, oidx, group);\n }\n else {\n c.endpoints[index].setVisible(false);\n self.collapseConnection(c, index, group);\n }\n });\n };\n\n if (group.collapsed) {\n handleDroppedConnections(_jsPlumb.select({source: el}), 0);\n handleDroppedConnections(_jsPlumb.select({target: el}), 1);\n }\n\n var elId = _jsPlumb.getId(el);\n _jsPlumb.dragManager.setParent(el, elId, groupEl, _jsPlumb.getId(groupEl), elpos);\n\n var newPosition = { left: elpos.left - cpos.left, top: elpos.top - cpos.top };\n\n _jsPlumb.setPosition(el, newPosition);\n\n _jsPlumb.dragManager.revalidateParent(el, elId, elpos);\n\n self.updateConnectionsForGroup(group);\n\n _jsPlumb.revalidate(elId);\n\n if (!doNotFireEvent) {\n var p = {group: group, el: el};\n if (currentGroup) {\n p.sourceGroup = currentGroup;\n }\n _jsPlumb.fire(EVT_CHILD_ADDED, p);\n }\n }\n }\n };\n\n this.removeFromGroup = function(group, el, doNotFireEvent) {\n group = this.getGroup(group);\n if (group) {\n group.remove(el, null, doNotFireEvent);\n }\n };\n\n this.getGroup = function(groupId) {\n var group = groupId;\n if (_ju.isString(groupId)) {\n group = _managedGroups[groupId];\n if (group == null) {\n throw new TypeError(\"No such group [\" + groupId + \"]\");\n }\n }\n return group;\n };\n\n this.getGroups = function() {\n var o = [];\n for (var g in _managedGroups) {\n o.push(_managedGroups[g]);\n }\n return o;\n };\n\n this.removeGroup = function(group, deleteMembers, manipulateDOM, doNotFireEvent) {\n group = this.getGroup(group);\n this.expandGroup(group, true); // this reinstates any original connections and removes all proxies, but does not fire an event.\n var newPositions = group[deleteMembers ? CMD_REMOVE_ALL : CMD_ORPHAN_ALL](manipulateDOM, doNotFireEvent);\n _jsPlumb.remove(group.getEl());\n delete _managedGroups[group.id];\n delete _jsPlumb._groups[group.id];\n _jsPlumb.fire(EVT_GROUP_REMOVED, { group:group });\n return newPositions; // this will be null in the case or remove, but be a map of {id->[x,y]} in the case of orphan\n };\n\n this.removeAllGroups = function(deleteMembers, manipulateDOM, doNotFireEvent) {\n for (var g in _managedGroups) {\n this.removeGroup(_managedGroups[g], deleteMembers, manipulateDOM, doNotFireEvent);\n }\n };\n\n function _setVisible(group, state) {\n var m = group.getMembers();\n for (var i = 0; i < m.length; i++) {\n _jsPlumb[state ? CMD_SHOW : CMD_HIDE](m[i], true);\n }\n }\n\n var _collapseConnection = this.collapseConnection = function(c, index, group) {\n\n var proxyEp, groupEl = group.getEl(), groupElId = _jsPlumb.getId(groupEl),\n originalElementId = c.endpoints[index].elementId;\n\n var otherEl = c.endpoints[index === 0 ? 1 : 0].element;\n if (otherEl[GROUP] && (!otherEl[GROUP].shouldProxy() && otherEl[GROUP].collapsed)) {\n return;\n }\n\n c.proxies = c.proxies || [];\n if(c.proxies[index]) {\n proxyEp = c.proxies[index].ep;\n }else {\n proxyEp = _jsPlumb.addEndpoint(groupEl, {\n endpoint:group.getEndpoint(c, index),\n anchor:group.getAnchor(c, index),\n parameters:{\n isProxyEndpoint:true\n }\n });\n }\n proxyEp.setDeleteOnEmpty(true);\n\n // for this index, stash proxy info: the new EP, the original EP.\n c.proxies[index] = { ep:proxyEp, originalEp: c.endpoints[index] };\n\n // and advise the anchor manager\n if (index === 0) {\n // TODO why are there two differently named methods? Why is there not one method that says \"some end of this\n // connection changed (you give the index), and here's the new element and element id.\"\n _jsPlumb.anchorManager.sourceChanged(originalElementId, groupElId, c, groupEl);\n }\n else {\n _jsPlumb.anchorManager.updateOtherEndpoint(c.endpoints[0].elementId, originalElementId, groupElId, c);\n c.target = groupEl;\n c.targetId = groupElId;\n }\n\n\n // detach the original EP from the connection.\n c.proxies[index].originalEp.detachFromConnection(c, null, true);\n\n // set the proxy as the new ep\n proxyEp.connections = [ c ];\n c.endpoints[index] = proxyEp;\n\n c.setVisible(true);\n };\n\n this.collapseGroup = function(group) {\n group = this.getGroup(group);\n if (group == null || group.collapsed) {\n return;\n }\n var groupEl = group.getEl();\n\n // todo remove old proxy endpoints first, just in case?\n //group.proxies.length = 0;\n\n // hide all connections\n _setVisible(group, false);\n\n if (group.shouldProxy()) {\n // collapses all connections in a group.\n var _collapseSet = function (conns, index) {\n for (var i = 0; i < conns.length; i++) {\n var c = conns[i];\n _collapseConnection(c, index, group);\n }\n };\n\n // setup proxies for sources and targets\n _collapseSet(group.connections.source, 0);\n _collapseSet(group.connections.target, 1);\n }\n\n group.collapsed = true;\n _jsPlumb.removeClass(groupEl, GROUP_EXPANDED_CLASS);\n _jsPlumb.addClass(groupEl, GROUP_COLLAPSED_CLASS);\n _jsPlumb.revalidate(groupEl);\n _jsPlumb.fire(EVT_COLLAPSE, { group:group });\n };\n\n var _expandConnection = this.expandConnection = function(c, index, group) {\n\n // if no proxies or none for this end of the connection, abort.\n if (c.proxies == null || c.proxies[index] == null) {\n return;\n }\n\n var groupElId = _jsPlumb.getId(group.getEl()),\n originalElement = c.proxies[index].originalEp.element,\n originalElementId = c.proxies[index].originalEp.elementId;\n\n c.endpoints[index] = c.proxies[index].originalEp;\n // and advise the anchor manager\n if (index === 0) {\n // TODO why are there two differently named methods? Why is there not one method that says \"some end of this\n // connection changed (you give the index), and here's the new element and element id.\"\n _jsPlumb.anchorManager.sourceChanged(groupElId, originalElementId, c, originalElement);\n }\n else {\n _jsPlumb.anchorManager.updateOtherEndpoint(c.endpoints[0].elementId, groupElId, originalElementId, c);\n c.target = originalElement;\n c.targetId = originalElementId;\n }\n\n // detach the proxy EP from the connection (which will cause it to be removed as we no longer need it)\n c.proxies[index].ep.detachFromConnection(c, null);\n\n c.proxies[index].originalEp.addConnection(c);\n\n // cleanup\n delete c.proxies[index];\n };\n\n this.expandGroup = function(group, doNotFireEvent) {\n\n group = this.getGroup(group);\n\n if (group == null || !group.collapsed) {\n return;\n }\n var groupEl = group.getEl();\n\n _setVisible(group, true);\n\n if (group.shouldProxy()) {\n // collapses all connections in a group.\n var _expandSet = function (conns, index) {\n for (var i = 0; i < conns.length; i++) {\n var c = conns[i];\n _expandConnection(c, index, group);\n }\n };\n\n // setup proxies for sources and targets\n _expandSet(group.connections.source, 0);\n _expandSet(group.connections.target, 1);\n }\n\n group.collapsed = false;\n _jsPlumb.addClass(groupEl, GROUP_EXPANDED_CLASS);\n _jsPlumb.removeClass(groupEl, GROUP_COLLAPSED_CLASS);\n _jsPlumb.revalidate(groupEl);\n this.repaintGroup(group);\n if (!doNotFireEvent) {\n _jsPlumb.fire(EVT_EXPAND, { group: group});\n }\n };\n\n this.repaintGroup = function(group) {\n group = this.getGroup(group);\n var m = group.getMembers();\n for (var i = 0; i < m.length; i++) {\n _jsPlumb.revalidate(m[i]);\n }\n };\n\n // TODO refactor this with the code that responds to `connection` events.\n function _updateConnectionsForGroup(group) {\n var members = group.getMembers();\n var c1 = _jsPlumb.getConnections({source:members, scope:\"*\"}, true);\n var c2 = _jsPlumb.getConnections({target:members, scope:\"*\"}, true);\n var processed = {};\n group.connections.source.length = 0;\n group.connections.target.length = 0;\n var oneSet = function(c) {\n for (var i = 0; i < c.length; i++) {\n if (processed[c[i].id]) {\n continue;\n }\n processed[c[i].id] = true;\n if (c[i].source._jsPlumbGroup === group) {\n if (c[i].target._jsPlumbGroup !== group) {\n group.connections.source.push(c[i]);\n }\n _connectionSourceMap[c[i].id] = group;\n }\n else if (c[i].target._jsPlumbGroup === group) {\n group.connections.target.push(c[i]);\n _connectionTargetMap[c[i].id] = group;\n }\n }\n };\n oneSet(c1); oneSet(c2);\n }\n\n this.updateConnectionsForGroup = _updateConnectionsForGroup;\n this.refreshAllGroups = function() {\n for (var g in _managedGroups) {\n _updateConnectionsForGroup(_managedGroups[g]);\n _jsPlumb.dragManager.updateOffsets(_jsPlumb.getId(_managedGroups[g].getEl()));\n }\n };\n };\n\n /**\n *\n * @param {jsPlumbInstance} _jsPlumb Associated jsPlumb instance.\n * @param {Object} params\n * @param {Element} params.el The DOM element representing the Group.\n * @param {String} [params.id] Optional ID for the Group. A UUID will be assigned as the Group's ID if you do not provide one.\n * @param {Boolean} [params.constrain=false] If true, child elements will not be able to be dragged outside of the Group container.\n * @param {Boolean} [params.revert=true] By default, child elements revert to the container if dragged outside. You can change this by setting `revert:false`. This behaviour is also overridden if you set `orphan` or `prune`.\n * @param {Boolean} [params.orphan=false] If true, child elements dropped outside of the Group container will be removed from the Group (but not from the DOM).\n * @param {Boolean} [params.prune=false] If true, child elements dropped outside of the Group container will be removed from the Group and also from the DOM.\n * @param {Boolean} [params.dropOverride=false] If true, a child element that has been dropped onto some other Group will not be subject to the controls imposed by `prune`, `revert` or `orphan`.\n * @constructor\n */\n var Group = function(_jsPlumb, params) {\n var self = this;\n var el = params.el;\n this.getEl = function() { return el; };\n this.id = params.id || _ju.uuid();\n el._isJsPlumbGroup = true;\n\n var getDragArea = this.getDragArea = function() {\n var da = _jsPlumb.getSelector(el, GROUP_CONTAINER_SELECTOR);\n return da && da.length > 0 ? da[0] : el;\n };\n\n var ghost = params.ghost === true;\n var constrain = ghost || (params.constrain === true);\n var revert = params.revert !== false;\n var orphan = params.orphan === true;\n var prune = params.prune === true;\n var dropOverride = params.dropOverride === true;\n var proxied = params.proxied !== false;\n var elements = [];\n this.connections = { source:[], target:[], internal:[] };\n\n // this function, and getEndpoint below, are stubs for a future setup in which we can choose endpoint\n // and anchor based upon the connection and the index (source/target) of the endpoint to be proxied.\n this.getAnchor = function(conn, endpointIndex) {\n return params.anchor || \"Continuous\";\n };\n\n this.getEndpoint = function(conn, endpointIndex) {\n return params.endpoint || [ \"Dot\", { radius:10 }];\n };\n\n this.collapsed = false;\n if (params.draggable !== false) {\n var opts = {\n stop:function(params) {\n _jsPlumb.fire(EVT_GROUP_DRAG_STOP, jsPlumb.extend(params, {group:self}));\n },\n scope:GROUP_DRAG_SCOPE\n };\n if (params.dragOptions) {\n root.jsPlumb.extend(opts, params.dragOptions);\n }\n _jsPlumb.draggable(params.el, opts);\n }\n if (params.droppable !== false) {\n _jsPlumb.droppable(params.el, {\n drop:function(p) {\n var el = p.drag.el;\n if (el._isJsPlumbGroup) {\n return;\n }\n var currentGroup = el._jsPlumbGroup;\n if (currentGroup !== self) {\n if (currentGroup != null) {\n if (currentGroup.overrideDrop(el, self)) {\n return;\n }\n }\n _jsPlumb.getGroupManager().addToGroup(self, el, false);\n }\n\n }\n });\n }\n var _each = function(_el, fn) {\n var els = _el.nodeType == null ? _el : [ _el ];\n for (var i = 0; i < els.length; i++) {\n fn(els[i]);\n }\n };\n\n this.overrideDrop = function(_el, targetGroup) {\n return dropOverride && (revert || prune || orphan);\n };\n\n this.add = function(_el, doNotFireEvent/*, sourceGroup*/) {\n var dragArea = getDragArea();\n _each(_el, function(__el) {\n\n if (__el._jsPlumbGroup != null) {\n if (__el._jsPlumbGroup === self) {\n return;\n } else {\n __el._jsPlumbGroup.remove(__el, true, doNotFireEvent, false);\n }\n }\n\n __el._jsPlumbGroup = self;\n elements.push(__el);\n // test if draggable and add handlers if so.\n if (_jsPlumb.isAlreadyDraggable(__el)) {\n _bindDragHandlers(__el);\n }\n\n if (__el.parentNode !== dragArea) {\n dragArea.appendChild(__el);\n }\n\n // if (!doNotFireEvent) {\n // var p = {group: self, el: __el};\n // if (sourceGroup) {\n // p.sourceGroup = sourceGroup;\n // }\n // //_jsPlumb.fire(EVT_CHILD_ADDED, p);\n // }\n });\n\n _jsPlumb.getGroupManager().updateConnectionsForGroup(self);\n };\n\n this.remove = function(el, manipulateDOM, doNotFireEvent, doNotUpdateConnections, targetGroup) {\n\n _each(el, function(__el) {\n delete __el._jsPlumbGroup;\n _ju.removeWithFunction(elements, function(e) {\n return e === __el;\n });\n\n if (manipulateDOM) {\n try { self.getDragArea().removeChild(__el); }\n catch (e) {\n jsPlumbUtil.log(\"Could not remove element from Group \" + e);\n }\n }\n _unbindDragHandlers(__el);\n if (!doNotFireEvent) {\n var p = {group: self, el: __el};\n if (targetGroup) {\n p.targetGroup = targetGroup;\n }\n _jsPlumb.fire(EVT_CHILD_REMOVED, p);\n }\n });\n if (!doNotUpdateConnections) {\n _jsPlumb.getGroupManager().updateConnectionsForGroup(self);\n }\n };\n this.removeAll = function(manipulateDOM, doNotFireEvent) {\n for (var i = 0, l = elements.length; i < l; i++) {\n var el = elements[0];\n self.remove(el, manipulateDOM, doNotFireEvent, true);\n _jsPlumb.remove(el, true);\n }\n elements.length = 0;\n _jsPlumb.getGroupManager().updateConnectionsForGroup(self);\n };\n this.orphanAll = function() {\n var orphanedPositions = {};\n for (var i = 0; i < elements.length; i++) {\n var newPosition = _orphan(elements[i]);\n orphanedPositions[newPosition[0]] = newPosition[1];\n }\n elements.length = 0;\n\n return orphanedPositions;\n };\n this.getMembers = function() { return elements; };\n\n el[GROUP] = this;\n\n _jsPlumb.bind(ELEMENT_DRAGGABLE_EVENT, function(dragParams) {\n // if its for the current group,\n if (dragParams.el._jsPlumbGroup === this) {\n _bindDragHandlers(dragParams.el);\n }\n }.bind(this));\n\n function _findParent(_el) {\n return _el.offsetParent;\n }\n\n function _isInsideParent(_el, pos) {\n var p = _findParent(_el),\n s = _jsPlumb.getSize(p),\n ss = _jsPlumb.getSize(_el),\n leftEdge = pos[0],\n rightEdge = leftEdge + ss[0],\n topEdge = pos[1],\n bottomEdge = topEdge + ss[1];\n\n return rightEdge > 0 && leftEdge < s[0] && bottomEdge > 0 && topEdge < s[1];\n }\n\n //\n // orphaning an element means taking it out of the group and adding it to the main jsplumb container.\n // we return the new calculated position from this method and the element's id.\n //\n function _orphan(_el) {\n var id = _jsPlumb.getId(_el);\n var pos = _jsPlumb.getOffset(_el);\n _el.parentNode.removeChild(_el);\n _jsPlumb.getContainer().appendChild(_el);\n _jsPlumb.setPosition(_el, pos);\n delete _el._jsPlumbGroup;\n _unbindDragHandlers(_el);\n _jsPlumb.dragManager.clearParent(_el, id);\n return [id, pos];\n }\n\n //\n // remove an element from the group, then either prune it from the jsplumb instance, or just orphan it.\n //\n function _pruneOrOrphan(p) {\n var orphanedPosition = null;\n if (!_isInsideParent(p.el, p.pos)) {\n var group = p.el._jsPlumbGroup;\n if (prune) {\n _jsPlumb.remove(p.el);\n } else {\n orphanedPosition = _orphan(p.el);\n }\n\n group.remove(p.el);\n }\n\n return orphanedPosition;\n }\n\n //\n // redraws the element\n //\n function _revalidate(_el) {\n var id = _jsPlumb.getId(_el);\n _jsPlumb.revalidate(_el);\n _jsPlumb.dragManager.revalidateParent(_el, id);\n }\n\n //\n // unbind the group specific drag/revert handlers.\n //\n function _unbindDragHandlers(_el) {\n if (!_el._katavorioDrag) {\n return;\n }\n if (prune || orphan) {\n _el._katavorioDrag.off(STOP, _pruneOrOrphan);\n }\n if (!prune && !orphan && revert) {\n _el._katavorioDrag.off(REVERT, _revalidate);\n _el._katavorioDrag.setRevert(null);\n }\n }\n\n function _bindDragHandlers(_el) {\n if (!_el._katavorioDrag) {\n return;\n }\n if (prune || orphan) {\n _el._katavorioDrag.on(STOP, _pruneOrOrphan);\n }\n\n if (constrain) {\n _el._katavorioDrag.setConstrain(true);\n }\n\n if (ghost) {\n _el._katavorioDrag.setUseGhostProxy(true);\n }\n\n if (!prune && !orphan && revert) {\n _el._katavorioDrag.on(REVERT, _revalidate);\n _el._katavorioDrag.setRevert(function(__el, pos) {\n return !_isInsideParent(__el, pos);\n });\n }\n }\n\n this.shouldProxy = function() {\n return proxied;\n };\n\n _jsPlumb.getGroupManager().addGroup(this);\n };\n\n /**\n * Adds a group to the jsPlumb instance.\n * @method addGroup\n * @param {Object} params\n * @return {Group} The newly created Group.\n */\n _jpi.prototype.addGroup = function(params) {\n var j = this;\n j._groups = j._groups || {};\n if (j._groups[params.id] != null) {\n throw new TypeError(\"cannot create Group [\" + params.id + \"]; a Group with that ID exists\");\n }\n if (params.el[GROUP] != null) {\n throw new TypeError(\"cannot create Group [\" + params.id + \"]; the given element is already a Group\");\n }\n var group = new Group(j, params);\n j._groups[group.id] = group;\n if (params.collapsed) {\n this.collapseGroup(group);\n }\n return group;\n };\n\n /**\n * Add an element to a group.\n * @method addToGroup\n * @param {String} group Group, or ID of the group, to add the element to.\n * @param {Element} el Element to add to the group.\n */\n _jpi.prototype.addToGroup = function(group, el, doNotFireEvent) {\n\n var _one = function(_el) {\n var id = this.getId(_el);\n this.manage(id, _el);\n this.getGroupManager().addToGroup(group, _el, doNotFireEvent);\n }.bind(this);\n\n if (Array.isArray(el)) {\n for (var i = 0; i < el.length; i++) {\n _one(el[i]);\n }\n } else {\n _one(el);\n }\n };\n\n /**\n * Remove an element from a group.\n * @method removeFromGroup\n * @param {String} group Group, or ID of the group, to remove the element from.\n * @param {Element} el Element to add to the group.\n */\n _jpi.prototype.removeFromGroup = function(group, el, doNotFireEvent) {\n this.getGroupManager().removeFromGroup(group, el, doNotFireEvent);\n };\n\n /**\n * Remove a group, and optionally remove its members from the jsPlumb instance.\n * @method removeGroup\n * @param {String|Group} group Group to delete, or ID of Group to delete.\n * @param {Boolean} [deleteMembers=false] If true, group members will be removed along with the group. Otherwise they will\n * just be 'orphaned' (returned to the main container).\n * @returns {Map[String, Position}} When deleteMembers is false, this method returns a map of {id->position}\n */\n _jpi.prototype.removeGroup = function(group, deleteMembers, manipulateDOM, doNotFireEvent) {\n return this.getGroupManager().removeGroup(group, deleteMembers, manipulateDOM, doNotFireEvent);\n };\n\n /**\n * Remove all groups, and optionally remove their members from the jsPlumb instance.\n * @method removeAllGroup\n * @param {Boolean} [deleteMembers=false] If true, group members will be removed along with the groups. Otherwise they will\n * just be 'orphaned' (returned to the main container).\n */\n _jpi.prototype.removeAllGroups = function(deleteMembers, manipulateDOM, doNotFireEvent) {\n this.getGroupManager().removeAllGroups(deleteMembers, manipulateDOM, doNotFireEvent);\n };\n\n /**\n * Get a Group\n * @method getGroup\n * @param {String} groupId ID of the group to get\n * @return {Group} Group with the given ID, null if not found.\n */\n _jpi.prototype.getGroup = function(groupId) {\n return this.getGroupManager().getGroup(groupId);\n };\n\n /**\n * Gets all the Groups managed by the jsPlumb instance.\n * @returns {Group[]} List of Groups. Empty if none.\n */\n _jpi.prototype.getGroups = function() {\n return this.getGroupManager().getGroups();\n };\n\n /**\n * Expands a group element. jsPlumb doesn't do \"everything\" for you here, because what it means to expand a Group\n * will vary from application to application. jsPlumb does these things:\n *\n * - Hides any connections that are internal to the group (connections between members, and connections from member of\n * the group to the group itself)\n * - Proxies all connections for which the source or target is a member of the group.\n * - Hides the proxied connections.\n * - Adds the jtk-group-expanded class to the group's element\n * - Removes the jtk-group-collapsed class from the group's element.\n *\n * @method expandGroup\n * @param {String|Group} group Group to expand, or ID of Group to expand.\n */\n _jpi.prototype.expandGroup = function(group) {\n this.getGroupManager().expandGroup(group);\n };\n\n /**\n * Collapses a group element. jsPlumb doesn't do \"everything\" for you here, because what it means to collapse a Group\n * will vary from application to application. jsPlumb does these things:\n *\n * - Shows any connections that are internal to the group (connections between members, and connections from member of\n * the group to the group itself)\n * - Removes proxies for all connections for which the source or target is a member of the group.\n * - Shows the previously proxied connections.\n * - Adds the jtk-group-collapsed class to the group's element\n * - Removes the jtk-group-expanded class from the group's element.\n *\n * @method expandGroup\n * @param {String|Group} group Group to expand, or ID of Group to expand.\n */\n _jpi.prototype.collapseGroup = function(groupId) {\n this.getGroupManager().collapseGroup(groupId);\n };\n\n\n _jpi.prototype.repaintGroup = function(group) {\n this.getGroupManager().repaintGroup(group);\n };\n\n /**\n * Collapses or expands a group element depending on its current state. See notes in the collapseGroup and expandGroup method.\n *\n * @method toggleGroup\n * @param {String|Group} group Group to expand/collapse, or ID of Group to expand/collapse.\n */\n _jpi.prototype.toggleGroup = function(group) {\n group = this.getGroupManager().getGroup(group);\n if (group != null) {\n this.getGroupManager()[group.collapsed ? \"expandGroup\" : \"collapseGroup\"](group);\n }\n };\n\n //\n // lazy init a group manager for the given jsplumb instance.\n //\n _jpi.prototype.getGroupManager = function() {\n var mgr = this[GROUP_MANAGER];\n if (mgr == null) {\n mgr = this[GROUP_MANAGER] = new GroupManager(this);\n }\n return mgr;\n };\n\n _jpi.prototype.removeGroupManager = function() {\n delete this[GROUP_MANAGER];\n };\n\n /**\n * Gets the Group that the given element belongs to, null if none.\n * @method getGroupFor\n * @param {String|Element} el Element, or element ID.\n * @returns {Group} A Group, if found, or null.\n */\n _jpi.prototype.getGroupFor = function(el) {\n el = this.getElement(el);\n if (el) {\n return el[GROUP];\n }\n };\n\n}).call(typeof window !== 'undefined' ? window : this);\n\n\n/*\n * This file contains the 'flowchart' connectors, consisting of vertical and horizontal line segments.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n *\n * Dual licensed under the MIT and GPL2 licenses.\n */\n;\n(function () {\n\n \"use strict\";\n var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;\n var STRAIGHT = \"Straight\";\n var ARC = \"Arc\";\n\n var Flowchart = function (params) {\n this.type = \"Flowchart\";\n params = params || {};\n params.stub = params.stub == null ? 30 : params.stub;\n var segments,\n _super = _jp.Connectors.AbstractConnector.apply(this, arguments),\n midpoint = params.midpoint == null ? 0.5 : params.midpoint,\n alwaysRespectStubs = params.alwaysRespectStubs === true,\n lastx = null, lasty = null, lastOrientation,\n cornerRadius = params.cornerRadius != null ? params.cornerRadius : 0,\n\n // TODO now common between this and AbstractBezierEditor; refactor into superclass?\n loopbackRadius = params.loopbackRadius || 25,\n isLoopbackCurrently = false,\n\n sgn = function (n) {\n return n < 0 ? -1 : n === 0 ? 0 : 1;\n },\n segmentDirections = function(segment) {\n return [\n sgn( segment[2] - segment[0] ),\n sgn( segment[3] - segment[1] )\n ];\n },\n /**\n * helper method to add a segment.\n */\n addSegment = function (segments, x, y, paintInfo) {\n if (lastx === x && lasty === y) {\n return;\n }\n var lx = lastx == null ? paintInfo.sx : lastx,\n ly = lasty == null ? paintInfo.sy : lasty,\n o = lx === x ? \"v\" : \"h\";\n\n lastx = x;\n lasty = y;\n segments.push([ lx, ly, x, y, o ]);\n },\n segLength = function (s) {\n return Math.sqrt(Math.pow(s[0] - s[2], 2) + Math.pow(s[1] - s[3], 2));\n },\n _cloneArray = function (a) {\n var _a = [];\n _a.push.apply(_a, a);\n return _a;\n },\n writeSegments = function (conn, segments, paintInfo) {\n var current = null, next, currentDirection, nextDirection;\n for (var i = 0; i < segments.length - 1; i++) {\n\n current = current || _cloneArray(segments[i]);\n next = _cloneArray(segments[i + 1]);\n\n currentDirection = segmentDirections(current);\n nextDirection = segmentDirections(next);\n\n if (cornerRadius > 0 && current[4] !== next[4]) {\n\n var minSegLength = Math.min(segLength(current), segLength(next));\n var radiusToUse = Math.min(cornerRadius, minSegLength / 2);\n\n current[2] -= currentDirection[0] * radiusToUse;\n current[3] -= currentDirection[1] * radiusToUse;\n next[0] += nextDirection[0] * radiusToUse;\n next[1] += nextDirection[1] * radiusToUse;\n\n var ac = (currentDirection[1] === nextDirection[0] && nextDirection[0] === 1) ||\n ((currentDirection[1] === nextDirection[0] && nextDirection[0] === 0) && currentDirection[0] !== nextDirection[1]) ||\n (currentDirection[1] === nextDirection[0] && nextDirection[0] === -1),\n sgny = next[1] > current[3] ? 1 : -1,\n sgnx = next[0] > current[2] ? 1 : -1,\n sgnEqual = sgny === sgnx,\n cx = (sgnEqual && ac || (!sgnEqual && !ac)) ? next[0] : current[2],\n cy = (sgnEqual && ac || (!sgnEqual && !ac)) ? current[3] : next[1];\n\n _super.addSegment(conn, STRAIGHT, {\n x1: current[0], y1: current[1], x2: current[2], y2: current[3]\n });\n\n _super.addSegment(conn, ARC, {\n r: radiusToUse,\n x1: current[2],\n y1: current[3],\n x2: next[0],\n y2: next[1],\n cx: cx,\n cy: cy,\n ac: ac\n });\n }\n else {\n // dx + dy are used to adjust for line width.\n var dx = (current[2] === current[0]) ? 0 : (current[2] > current[0]) ? (paintInfo.lw / 2) : -(paintInfo.lw / 2),\n dy = (current[3] === current[1]) ? 0 : (current[3] > current[1]) ? (paintInfo.lw / 2) : -(paintInfo.lw / 2);\n\n _super.addSegment(conn, STRAIGHT, {\n x1: current[0] - dx, y1: current[1] - dy, x2: current[2] + dx, y2: current[3] + dy\n });\n }\n current = next;\n }\n if (next != null) {\n // last segment\n _super.addSegment(conn, STRAIGHT, {\n x1: next[0], y1: next[1], x2: next[2], y2: next[3]\n });\n }\n };\n\n this._compute = function (paintInfo, params) {\n\n segments = [];\n lastx = null;\n lasty = null;\n lastOrientation = null;\n\n var commonStubCalculator = function () {\n return [paintInfo.startStubX, paintInfo.startStubY, paintInfo.endStubX, paintInfo.endStubY];\n },\n stubCalculators = {\n perpendicular: commonStubCalculator,\n orthogonal: commonStubCalculator,\n opposite: function (axis) {\n var pi = paintInfo,\n idx = axis === \"x\" ? 0 : 1,\n areInProximity = {\n \"x\": function () {\n return ( (pi.so[idx] === 1 && (\n ( (pi.startStubX > pi.endStubX) && (pi.tx > pi.startStubX) ) ||\n ( (pi.sx > pi.endStubX) && (pi.tx > pi.sx))))) ||\n\n ( (pi.so[idx] === -1 && (\n ( (pi.startStubX < pi.endStubX) && (pi.tx < pi.startStubX) ) ||\n ( (pi.sx < pi.endStubX) && (pi.tx < pi.sx)))));\n },\n \"y\": function () {\n return ( (pi.so[idx] === 1 && (\n ( (pi.startStubY > pi.endStubY) && (pi.ty > pi.startStubY) ) ||\n ( (pi.sy > pi.endStubY) && (pi.ty > pi.sy))))) ||\n\n ( (pi.so[idx] === -1 && (\n ( (pi.startStubY < pi.endStubY) && (pi.ty < pi.startStubY) ) ||\n ( (pi.sy < pi.endStubY) && (pi.ty < pi.sy)))));\n }\n };\n\n if (!alwaysRespectStubs && areInProximity[axis]()) {\n return {\n \"x\": [(paintInfo.sx + paintInfo.tx) / 2, paintInfo.startStubY, (paintInfo.sx + paintInfo.tx) / 2, paintInfo.endStubY],\n \"y\": [paintInfo.startStubX, (paintInfo.sy + paintInfo.ty) / 2, paintInfo.endStubX, (paintInfo.sy + paintInfo.ty) / 2]\n }[axis];\n }\n else {\n return [paintInfo.startStubX, paintInfo.startStubY, paintInfo.endStubX, paintInfo.endStubY];\n }\n }\n };\n\n // calculate Stubs.\n var stubs = stubCalculators[paintInfo.anchorOrientation](paintInfo.sourceAxis),\n idx = paintInfo.sourceAxis === \"x\" ? 0 : 1,\n oidx = paintInfo.sourceAxis === \"x\" ? 1 : 0,\n ss = stubs[idx],\n oss = stubs[oidx],\n es = stubs[idx + 2],\n oes = stubs[oidx + 2];\n\n // add the start stub segment. use stubs for loopback as it will look better, with the loop spaced\n // away from the element.\n addSegment(segments, stubs[0], stubs[1], paintInfo);\n\n // if its a loopback and we should treat it differently.\n // if (false && params.sourcePos[0] === params.targetPos[0] && params.sourcePos[1] === params.targetPos[1]) {\n //\n // // we use loopbackRadius here, as statemachine connectors do.\n // // so we go radius to the left from stubs[0], then upwards by 2*radius, to the right by 2*radius,\n // // down by 2*radius, left by radius.\n // addSegment(segments, stubs[0] - loopbackRadius, stubs[1], paintInfo);\n // addSegment(segments, stubs[0] - loopbackRadius, stubs[1] - (2 * loopbackRadius), paintInfo);\n // addSegment(segments, stubs[0] + loopbackRadius, stubs[1] - (2 * loopbackRadius), paintInfo);\n // addSegment(segments, stubs[0] + loopbackRadius, stubs[1], paintInfo);\n // addSegment(segments, stubs[0], stubs[1], paintInfo);\n //\n // }\n // else {\n\n\n var midx = paintInfo.startStubX + ((paintInfo.endStubX - paintInfo.startStubX) * midpoint),\n midy = paintInfo.startStubY + ((paintInfo.endStubY - paintInfo.startStubY) * midpoint);\n\n var orientations = {x: [0, 1], y: [1, 0]},\n lineCalculators = {\n perpendicular: function (axis) {\n var pi = paintInfo,\n sis = {\n x: [\n [[1, 2, 3, 4], null, [2, 1, 4, 3]],\n null,\n [[4, 3, 2, 1], null, [3, 4, 1, 2]]\n ],\n y: [\n [[3, 2, 1, 4], null, [2, 3, 4, 1]],\n null,\n [[4, 1, 2, 3], null, [1, 4, 3, 2]]\n ]\n },\n stubs = {\n x: [[pi.startStubX, pi.endStubX], null, [pi.endStubX, pi.startStubX]],\n y: [[pi.startStubY, pi.endStubY], null, [pi.endStubY, pi.startStubY]]\n },\n midLines = {\n x: [[midx, pi.startStubY], [midx, pi.endStubY]],\n y: [[pi.startStubX, midy], [pi.endStubX, midy]]\n },\n linesToEnd = {\n x: [[pi.endStubX, pi.startStubY]],\n y: [[pi.startStubX, pi.endStubY]]\n },\n startToEnd = {\n x: [[pi.startStubX, pi.endStubY], [pi.endStubX, pi.endStubY]],\n y: [[pi.endStubX, pi.startStubY], [pi.endStubX, pi.endStubY]]\n },\n startToMidToEnd = {\n x: [[pi.startStubX, midy], [pi.endStubX, midy], [pi.endStubX, pi.endStubY]],\n y: [[midx, pi.startStubY], [midx, pi.endStubY], [pi.endStubX, pi.endStubY]]\n },\n otherStubs = {\n x: [pi.startStubY, pi.endStubY],\n y: [pi.startStubX, pi.endStubX]\n },\n soIdx = orientations[axis][0], toIdx = orientations[axis][1],\n _so = pi.so[soIdx] + 1,\n _to = pi.to[toIdx] + 1,\n otherFlipped = (pi.to[toIdx] === -1 && (otherStubs[axis][1] < otherStubs[axis][0])) || (pi.to[toIdx] === 1 && (otherStubs[axis][1] > otherStubs[axis][0])),\n stub1 = stubs[axis][_so][0],\n stub2 = stubs[axis][_so][1],\n segmentIndexes = sis[axis][_so][_to];\n\n if (pi.segment === segmentIndexes[3] || (pi.segment === segmentIndexes[2] && otherFlipped)) {\n return midLines[axis];\n }\n else if (pi.segment === segmentIndexes[2] && stub2 < stub1) {\n return linesToEnd[axis];\n }\n else if ((pi.segment === segmentIndexes[2] && stub2 >= stub1) || (pi.segment === segmentIndexes[1] && !otherFlipped)) {\n return startToMidToEnd[axis];\n }\n else if (pi.segment === segmentIndexes[0] || (pi.segment === segmentIndexes[1] && otherFlipped)) {\n return startToEnd[axis];\n }\n },\n orthogonal: function (axis, startStub, otherStartStub, endStub, otherEndStub) {\n var pi = paintInfo,\n extent = {\n \"x\": pi.so[0] === -1 ? Math.min(startStub, endStub) : Math.max(startStub, endStub),\n \"y\": pi.so[1] === -1 ? Math.min(startStub, endStub) : Math.max(startStub, endStub)\n }[axis];\n\n return {\n \"x\": [\n [extent, otherStartStub],\n [extent, otherEndStub],\n [endStub, otherEndStub]\n ],\n \"y\": [\n [otherStartStub, extent],\n [otherEndStub, extent],\n [otherEndStub, endStub]\n ]\n }[axis];\n },\n opposite: function (axis, ss, oss, es) {\n var pi = paintInfo,\n otherAxis = {\"x\": \"y\", \"y\": \"x\"}[axis],\n dim = {\"x\": \"height\", \"y\": \"width\"}[axis],\n comparator = pi[\"is\" + axis.toUpperCase() + \"GreaterThanStubTimes2\"];\n\n if (params.sourceEndpoint.elementId === params.targetEndpoint.elementId) {\n var _val = oss + ((1 - params.sourceEndpoint.anchor[otherAxis]) * params.sourceInfo[dim]) + _super.maxStub;\n return {\n \"x\": [\n [ss, _val],\n [es, _val]\n ],\n \"y\": [\n [_val, ss],\n [_val, es]\n ]\n }[axis];\n\n }\n else if (!comparator || (pi.so[idx] === 1 && ss > es) || (pi.so[idx] === -1 && ss < es)) {\n return {\n \"x\": [\n [ss, midy],\n [es, midy]\n ],\n \"y\": [\n [midx, ss],\n [midx, es]\n ]\n }[axis];\n }\n else if ((pi.so[idx] === 1 && ss < es) || (pi.so[idx] === -1 && ss > es)) {\n return {\n \"x\": [\n [midx, pi.sy],\n [midx, pi.ty]\n ],\n \"y\": [\n [pi.sx, midy],\n [pi.tx, midy]\n ]\n }[axis];\n }\n }\n };\n\n // compute the rest of the line\n var p = lineCalculators[paintInfo.anchorOrientation](paintInfo.sourceAxis, ss, oss, es, oes);\n if (p) {\n for (var i = 0; i < p.length; i++) {\n addSegment(segments, p[i][0], p[i][1], paintInfo);\n }\n }\n\n // line to end stub\n addSegment(segments, stubs[2], stubs[3], paintInfo);\n\n //}\n\n // end stub to end (common)\n addSegment(segments, paintInfo.tx, paintInfo.ty, paintInfo);\n\n\n\n // write out the segments.\n writeSegments(this, segments, paintInfo);\n\n };\n };\n\n _jp.Connectors.Flowchart = Flowchart;\n _ju.extend(_jp.Connectors.Flowchart, _jp.Connectors.AbstractConnector);\n\n}).call(typeof window !== 'undefined' ? window : this);\n/*\n * This file contains the code for the Bezier connector type.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n *\n * Dual licensed under the MIT and GPL2 licenses.\n */\n;\n(function () {\n\n \"use strict\";\n var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;\n\n _jp.Connectors.AbstractBezierConnector = function(params) {\n params = params || {};\n var showLoopback = params.showLoopback !== false,\n curviness = params.curviness || 10,\n margin = params.margin || 5,\n proximityLimit = params.proximityLimit || 80,\n clockwise = params.orientation && params.orientation === \"clockwise\",\n loopbackRadius = params.loopbackRadius || 25,\n isLoopbackCurrently = false,\n _super;\n\n this._compute = function (paintInfo, p) {\n\n var sp = p.sourcePos,\n tp = p.targetPos,\n _w = Math.abs(sp[0] - tp[0]),\n _h = Math.abs(sp[1] - tp[1]);\n\n if (!showLoopback || (p.sourceEndpoint.elementId !== p.targetEndpoint.elementId)) {\n isLoopbackCurrently = false;\n this._computeBezier(paintInfo, p, sp, tp, _w, _h);\n } else {\n isLoopbackCurrently = true;\n // a loopback connector. draw an arc from one anchor to the other.\n var x1 = p.sourcePos[0], y1 = p.sourcePos[1] - margin,\n cx = x1, cy = y1 - loopbackRadius,\n // canvas sizing stuff, to ensure the whole painted area is visible.\n _x = cx - loopbackRadius,\n _y = cy - loopbackRadius;\n\n _w = 2 * loopbackRadius;\n _h = 2 * loopbackRadius;\n\n paintInfo.points[0] = _x;\n paintInfo.points[1] = _y;\n paintInfo.points[2] = _w;\n paintInfo.points[3] = _h;\n\n // ADD AN ARC SEGMENT.\n _super.addSegment(this, \"Arc\", {\n loopback: true,\n x1: (x1 - _x) + 4,\n y1: y1 - _y,\n startAngle: 0,\n endAngle: 2 * Math.PI,\n r: loopbackRadius,\n ac: !clockwise,\n x2: (x1 - _x) - 4,\n y2: y1 - _y,\n cx: cx - _x,\n cy: cy - _y\n });\n }\n };\n\n _super = _jp.Connectors.AbstractConnector.apply(this, arguments);\n return _super;\n };\n _ju.extend(_jp.Connectors.AbstractBezierConnector, _jp.Connectors.AbstractConnector);\n\n var Bezier = function (params) {\n params = params || {};\n this.type = \"Bezier\";\n\n var _super = _jp.Connectors.AbstractBezierConnector.apply(this, arguments),\n majorAnchor = params.curviness || 150,\n minorAnchor = 10;\n\n this.getCurviness = function () {\n return majorAnchor;\n };\n\n this._findControlPoint = function (point, sourceAnchorPosition, targetAnchorPosition, sourceEndpoint, targetEndpoint, soo, too) {\n // determine if the two anchors are perpendicular to each other in their orientation. we swap the control\n // points around if so (code could be tightened up)\n var perpendicular = soo[0] !== too[0] || soo[1] === too[1],\n p = [];\n\n if (!perpendicular) {\n if (soo[0] === 0) {\n p.push(sourceAnchorPosition[0] < targetAnchorPosition[0] ? point[0] + minorAnchor : point[0] - minorAnchor);\n }\n else {\n p.push(point[0] - (majorAnchor * soo[0]));\n }\n\n if (soo[1] === 0) {\n p.push(sourceAnchorPosition[1] < targetAnchorPosition[1] ? point[1] + minorAnchor : point[1] - minorAnchor);\n }\n else {\n p.push(point[1] + (majorAnchor * too[1]));\n }\n }\n else {\n if (too[0] === 0) {\n p.push(targetAnchorPosition[0] < sourceAnchorPosition[0] ? point[0] + minorAnchor : point[0] - minorAnchor);\n }\n else {\n p.push(point[0] + (majorAnchor * too[0]));\n }\n\n if (too[1] === 0) {\n p.push(targetAnchorPosition[1] < sourceAnchorPosition[1] ? point[1] + minorAnchor : point[1] - minorAnchor);\n }\n else {\n p.push(point[1] + (majorAnchor * soo[1]));\n }\n }\n\n return p;\n };\n\n this._computeBezier = function (paintInfo, p, sp, tp, _w, _h) {\n\n var _CP, _CP2,\n _sx = sp[0] < tp[0] ? _w : 0,\n _sy = sp[1] < tp[1] ? _h : 0,\n _tx = sp[0] < tp[0] ? 0 : _w,\n _ty = sp[1] < tp[1] ? 0 : _h;\n\n _CP = this._findControlPoint([_sx, _sy], sp, tp, p.sourceEndpoint, p.targetEndpoint, paintInfo.so, paintInfo.to);\n _CP2 = this._findControlPoint([_tx, _ty], tp, sp, p.targetEndpoint, p.sourceEndpoint, paintInfo.to, paintInfo.so);\n\n\n _super.addSegment(this, \"Bezier\", {\n x1: _sx, y1: _sy, x2: _tx, y2: _ty,\n cp1x: _CP[0], cp1y: _CP[1], cp2x: _CP2[0], cp2y: _CP2[1]\n });\n };\n\n\n };\n\n _jp.Connectors.Bezier = Bezier;\n _ju.extend(Bezier, _jp.Connectors.AbstractBezierConnector);\n\n}).call(typeof window !== 'undefined' ? window : this);\n/*\n * This file contains the state machine connectors, which extend AbstractBezierConnector.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n * \n * Dual licensed under the MIT and GPL2 licenses.\n */\n;\n(function () {\n\n \"use strict\";\n var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;\n\n var _segment = function (x1, y1, x2, y2) {\n if (x1 <= x2 && y2 <= y1) {\n return 1;\n }\n else if (x1 <= x2 && y1 <= y2) {\n return 2;\n }\n else if (x2 <= x1 && y2 >= y1) {\n return 3;\n }\n return 4;\n },\n\n // the control point we will use depends on the faces to which each end of the connection is assigned, specifically whether or not the\n // two faces are parallel or perpendicular. if they are parallel then the control point lies on the midpoint of the axis in which they\n // are parellel and varies only in the other axis; this variation is proportional to the distance that the anchor points lie from the\n // center of that face. if the two faces are perpendicular then the control point is at some distance from both the midpoints; the amount and\n // direction are dependent on the orientation of the two elements. 'seg', passed in to this method, tells you which segment the target element\n // lies in with respect to the source: 1 is top right, 2 is bottom right, 3 is bottom left, 4 is top left.\n //\n // sourcePos and targetPos are arrays of info about where on the source and target each anchor is located. their contents are:\n //\n // 0 - absolute x\n // 1 - absolute y\n // 2 - proportional x in element (0 is left edge, 1 is right edge)\n // 3 - proportional y in element (0 is top edge, 1 is bottom edge)\n //\n _findControlPoint = function (midx, midy, segment, sourceEdge, targetEdge, dx, dy, distance, proximityLimit) {\n // TODO (maybe)\n // - if anchor pos is 0.5, make the control point take into account the relative position of the elements.\n if (distance <= proximityLimit) {\n return [midx, midy];\n }\n\n if (segment === 1) {\n if (sourceEdge[3] <= 0 && targetEdge[3] >= 1) {\n return [ midx + (sourceEdge[2] < 0.5 ? -1 * dx : dx), midy ];\n }\n else if (sourceEdge[2] >= 1 && targetEdge[2] <= 0) {\n return [ midx, midy + (sourceEdge[3] < 0.5 ? -1 * dy : dy) ];\n }\n else {\n return [ midx + (-1 * dx) , midy + (-1 * dy) ];\n }\n }\n else if (segment === 2) {\n if (sourceEdge[3] >= 1 && targetEdge[3] <= 0) {\n return [ midx + (sourceEdge[2] < 0.5 ? -1 * dx : dx), midy ];\n }\n else if (sourceEdge[2] >= 1 && targetEdge[2] <= 0) {\n return [ midx, midy + (sourceEdge[3] < 0.5 ? -1 * dy : dy) ];\n }\n else {\n return [ midx + dx, midy + (-1 * dy) ];\n }\n }\n else if (segment === 3) {\n if (sourceEdge[3] >= 1 && targetEdge[3] <= 0) {\n return [ midx + (sourceEdge[2] < 0.5 ? -1 * dx : dx), midy ];\n }\n else if (sourceEdge[2] <= 0 && targetEdge[2] >= 1) {\n return [ midx, midy + (sourceEdge[3] < 0.5 ? -1 * dy : dy) ];\n }\n else {\n return [ midx + (-1 * dx) , midy + (-1 * dy) ];\n }\n }\n else if (segment === 4) {\n if (sourceEdge[3] <= 0 && targetEdge[3] >= 1) {\n return [ midx + (sourceEdge[2] < 0.5 ? -1 * dx : dx), midy ];\n }\n else if (sourceEdge[2] <= 0 && targetEdge[2] >= 1) {\n return [ midx, midy + (sourceEdge[3] < 0.5 ? -1 * dy : dy) ];\n }\n else {\n return [ midx + dx , midy + (-1 * dy) ];\n }\n }\n\n };\n\n var StateMachine = function (params) {\n params = params || {};\n this.type = \"StateMachine\";\n\n var _super = _jp.Connectors.AbstractBezierConnector.apply(this, arguments),\n curviness = params.curviness || 10,\n margin = params.margin || 5,\n proximityLimit = params.proximityLimit || 80,\n clockwise = params.orientation && params.orientation === \"clockwise\",\n _controlPoint;\n\n this._computeBezier = function(paintInfo, params, sp, tp, w, h) {\n var _sx = params.sourcePos[0] < params.targetPos[0] ? 0 : w,\n _sy = params.sourcePos[1] < params.targetPos[1] ? 0 : h,\n _tx = params.sourcePos[0] < params.targetPos[0] ? w : 0,\n _ty = params.sourcePos[1] < params.targetPos[1] ? h : 0;\n\n // now adjust for the margin\n if (params.sourcePos[2] === 0) {\n _sx -= margin;\n }\n if (params.sourcePos[2] === 1) {\n _sx += margin;\n }\n if (params.sourcePos[3] === 0) {\n _sy -= margin;\n }\n if (params.sourcePos[3] === 1) {\n _sy += margin;\n }\n if (params.targetPos[2] === 0) {\n _tx -= margin;\n }\n if (params.targetPos[2] === 1) {\n _tx += margin;\n }\n if (params.targetPos[3] === 0) {\n _ty -= margin;\n }\n if (params.targetPos[3] === 1) {\n _ty += margin;\n }\n\n //\n // these connectors are quadratic bezier curves, having a single control point. if both anchors\n // are located at 0.5 on their respective faces, the control point is set to the midpoint and you\n // get a straight line. this is also the case if the two anchors are within 'proximityLimit', since\n // it seems to make good aesthetic sense to do that. outside of that, the control point is positioned\n // at 'curviness' pixels away along the normal to the straight line connecting the two anchors.\n //\n // there may be two improvements to this. firstly, we might actually support the notion of avoiding nodes\n // in the UI, or at least making a good effort at doing so. if a connection would pass underneath some node,\n // for example, we might increase the distance the control point is away from the midpoint in a bid to\n // steer it around that node. this will work within limits, but i think those limits would also be the likely\n // limits for, once again, aesthetic good sense in the layout of a chart using these connectors.\n //\n // the second possible change is actually two possible changes: firstly, it is possible we should gradually\n // decrease the 'curviness' as the distance between the anchors decreases; start tailing it off to 0 at some\n // point (which should be configurable). secondly, we might slightly increase the 'curviness' for connectors\n // with respect to how far their anchor is from the center of its respective face. this could either look cool,\n // or stupid, and may indeed work only in a way that is so subtle as to have been a waste of time.\n //\n\n var _midx = (_sx + _tx) / 2,\n _midy = (_sy + _ty) / 2,\n segment = _segment(_sx, _sy, _tx, _ty),\n distance = Math.sqrt(Math.pow(_tx - _sx, 2) + Math.pow(_ty - _sy, 2)),\n cp1x, cp2x, cp1y, cp2y;\n\n\n // calculate the control point. this code will be where we'll put in a rudimentary element avoidance scheme; it\n // will work by extending the control point to force the curve to be, um, curvier.\n _controlPoint = _findControlPoint(_midx,\n _midy,\n segment,\n params.sourcePos,\n params.targetPos,\n curviness, curviness,\n distance,\n proximityLimit);\n\n cp1x = _controlPoint[0];\n cp2x = _controlPoint[0];\n cp1y = _controlPoint[1];\n cp2y = _controlPoint[1];\n\n _super.addSegment(this, \"Bezier\", {\n x1: _tx, y1: _ty, x2: _sx, y2: _sy,\n cp1x: cp1x, cp1y: cp1y,\n cp2x: cp2x, cp2y: cp2y\n });\n };\n };\n\n _jp.Connectors.StateMachine = StateMachine;\n _ju.extend(StateMachine, _jp.Connectors.AbstractBezierConnector);\n\n}).call(typeof window !== 'undefined' ? window : this);\n/*\n * This file contains the 'flowchart' connectors, consisting of vertical and horizontal line segments.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n *\n * Dual licensed under the MIT and GPL2 licenses.\n */\n;\n(function () {\n\n \"use strict\";\n var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;\n var STRAIGHT = \"Straight\";\n\n var Straight = function (params) {\n this.type = STRAIGHT;\n var _super = _jp.Connectors.AbstractConnector.apply(this, arguments);\n\n this._compute = function (paintInfo, _) {\n _super.addSegment(this, STRAIGHT, {x1: paintInfo.sx, y1: paintInfo.sy, x2: paintInfo.startStubX, y2: paintInfo.startStubY});\n _super.addSegment(this, STRAIGHT, {x1: paintInfo.startStubX, y1: paintInfo.startStubY, x2: paintInfo.endStubX, y2: paintInfo.endStubY});\n _super.addSegment(this, STRAIGHT, {x1: paintInfo.endStubX, y1: paintInfo.endStubY, x2: paintInfo.tx, y2: paintInfo.ty});\n };\n };\n\n _jp.Connectors.Straight = Straight;\n _ju.extend(Straight, _jp.Connectors.AbstractConnector);\n\n}).call(typeof window !== 'undefined' ? window : this);\n/*\n * This file contains the SVG renderers.\n *\n * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)\n * \n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n * \n * Dual licensed under the MIT and GPL2 licenses.\n */\n;\n(function () {\n\n// ************************** SVG utility methods ********************************************\t\n\n \"use strict\";\n var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;\n\n var svgAttributeMap = {\n \"stroke-linejoin\": \"stroke-linejoin\",\n \"stroke-dashoffset\": \"stroke-dashoffset\",\n \"stroke-linecap\": \"stroke-linecap\"\n },\n STROKE_DASHARRAY = \"stroke-dasharray\",\n DASHSTYLE = \"dashstyle\",\n LINEAR_GRADIENT = \"linearGradient\",\n RADIAL_GRADIENT = \"radialGradient\",\n DEFS = \"defs\",\n FILL = \"fill\",\n STOP = \"stop\",\n STROKE = \"stroke\",\n STROKE_WIDTH = \"stroke-width\",\n STYLE = \"style\",\n NONE = \"none\",\n JSPLUMB_GRADIENT = \"jsplumb_gradient_\",\n LINE_WIDTH = \"strokeWidth\",\n ns = {\n svg: \"http://www.w3.org/2000/svg\"\n },\n _attr = function (node, attributes) {\n for (var i in attributes) {\n node.setAttribute(i, \"\" + attributes[i]);\n }\n },\n _node = function (name, attributes) {\n attributes = attributes || {};\n attributes.version = \"1.1\";\n attributes.xmlns = ns.svg;\n return _jp.createElementNS(ns.svg, name, null, null, attributes);\n },\n _pos = function (d) {\n return \"position:absolute;left:\" + d[0] + \"px;top:\" + d[1] + \"px\";\n },\n _clearGradient = function (parent) {\n var els = parent.querySelectorAll(\" defs,linearGradient,radialGradient\");\n for (var i = 0; i < els.length; i++) {\n els[i].parentNode.removeChild(els[i]);\n }\n },\n _updateGradient = function (parent, node, style, dimensions, uiComponent) {\n var id = JSPLUMB_GRADIENT + uiComponent._jsPlumb.instance.idstamp();\n // first clear out any existing gradient\n _clearGradient(parent);\n // this checks for an 'offset' property in the gradient, and in the absence of it, assumes\n // we want a linear gradient. if it's there, we create a radial gradient.\n // it is possible that a more explicit means of defining the gradient type would be\n // better. relying on 'offset' means that we can never have a radial gradient that uses\n // some default offset, for instance.\n // issue 244 suggested the 'gradientUnits' attribute; without this, straight/flowchart connectors with gradients would\n // not show gradients when the line was perfectly horizontal or vertical.\n var g;\n if (!style.gradient.offset) {\n g = _node(LINEAR_GRADIENT, {id: id, gradientUnits: \"userSpaceOnUse\"});\n }\n else {\n g = _node(RADIAL_GRADIENT, { id: id });\n }\n\n var defs = _node(DEFS);\n parent.appendChild(defs);\n defs.appendChild(g);\n\n // the svg radial gradient seems to treat stops in the reverse\n // order to how canvas does it. so we want to keep all the maths the same, but\n // iterate the actual style declarations in reverse order, if the x indexes are not in order.\n for (var i = 0; i < style.gradient.stops.length; i++) {\n var styleToUse = uiComponent.segment === 1 || uiComponent.segment === 2 ? i : style.gradient.stops.length - 1 - i,\n stopColor = style.gradient.stops[styleToUse][1],\n s = _node(STOP, {\"offset\": Math.floor(style.gradient.stops[i][0] * 100) + \"%\", \"stop-color\": stopColor});\n\n g.appendChild(s);\n }\n var applyGradientTo = style.stroke ? STROKE : FILL;\n node.setAttribute(applyGradientTo, \"url(#\" + id + \")\");\n },\n _applyStyles = function (parent, node, style, dimensions, uiComponent) {\n\n node.setAttribute(FILL, style.fill ? style.fill : NONE);\n node.setAttribute(STROKE, style.stroke ? style.stroke : NONE);\n\n if (style.gradient) {\n _updateGradient(parent, node, style, dimensions, uiComponent);\n }\n else {\n // make sure we clear any existing gradient\n _clearGradient(parent);\n node.setAttribute(STYLE, \"\");\n }\n\n if (style.strokeWidth) {\n node.setAttribute(STROKE_WIDTH, style.strokeWidth);\n }\n\n // in SVG there is a stroke-dasharray attribute we can set, and its syntax looks like\n // the syntax in VML but is actually kind of nasty: values are given in the pixel\n // coordinate space, whereas in VML they are multiples of the width of the stroked\n // line, which makes a lot more sense. for that reason, jsPlumb is supporting both\n // the native svg 'stroke-dasharray' attribute, and also the 'dashstyle' concept from\n // VML, which will be the preferred method. the code below this converts a dashstyle\n // attribute given in terms of stroke width into a pixel representation, by using the\n // stroke's lineWidth.\n if (style[DASHSTYLE] && style[LINE_WIDTH] && !style[STROKE_DASHARRAY]) {\n var sep = style[DASHSTYLE].indexOf(\",\") === -1 ? \" \" : \",\",\n parts = style[DASHSTYLE].split(sep),\n styleToUse = \"\";\n parts.forEach(function (p) {\n styleToUse += (Math.floor(p * style.strokeWidth) + sep);\n });\n node.setAttribute(STROKE_DASHARRAY, styleToUse);\n }\n else if (style[STROKE_DASHARRAY]) {\n node.setAttribute(STROKE_DASHARRAY, style[STROKE_DASHARRAY]);\n }\n\n // extra attributes such as join type, dash offset.\n for (var i in svgAttributeMap) {\n if (style[i]) {\n node.setAttribute(svgAttributeMap[i], style[i]);\n }\n }\n },\n _appendAtIndex = function (svg, path, idx) {\n if (svg.childNodes.length > idx) {\n svg.insertBefore(path, svg.childNodes[idx]);\n }\n else {\n svg.appendChild(path);\n }\n };\n\n /**\n utility methods for other objects to use.\n */\n _ju.svg = {\n node: _node,\n attr: _attr,\n pos: _pos\n };\n\n // ************************** / SVG utility methods ********************************************\n\n /*\n * Base class for SVG components.\n */\n var SvgComponent = function (params) {\n var pointerEventsSpec = params.pointerEventsSpec || \"all\", renderer = {};\n\n _jp.jsPlumbUIComponent.apply(this, params.originalArgs);\n this.canvas = null;\n this.path = null;\n this.svg = null;\n this.bgCanvas = null;\n\n var clazz = params.cssClass + \" \" + (params.originalArgs[0].cssClass || \"\"),\n svgParams = {\n \"style\": \"\",\n \"width\": 0,\n \"height\": 0,\n \"pointer-events\": pointerEventsSpec,\n \"position\": \"absolute\"\n };\n\n this.svg = _node(\"svg\", svgParams);\n\n if (params.useDivWrapper) {\n this.canvas = _jp.createElement(\"div\", { position : \"absolute\" });\n _ju.sizeElement(this.canvas, 0, 0, 1, 1);\n this.canvas.className = clazz;\n }\n else {\n _attr(this.svg, { \"class\": clazz });\n this.canvas = this.svg;\n }\n\n params._jsPlumb.appendElement(this.canvas, params.originalArgs[0].parent);\n if (params.useDivWrapper) {\n this.canvas.appendChild(this.svg);\n }\n\n var displayElements = [ this.canvas ];\n this.getDisplayElements = function () {\n return displayElements;\n };\n\n this.appendDisplayElement = function (el) {\n displayElements.push(el);\n };\n\n this.paint = function (style, anchor, extents) {\n if (style != null) {\n\n var xy = [ this.x, this.y ], wh = [ this.w, this.h ], p;\n if (extents != null) {\n if (extents.xmin < 0) {\n xy[0] += extents.xmin;\n }\n if (extents.ymin < 0) {\n xy[1] += extents.ymin;\n }\n wh[0] = extents.xmax + ((extents.xmin < 0) ? -extents.xmin : 0);\n wh[1] = extents.ymax + ((extents.ymin < 0) ? -extents.ymin : 0);\n }\n\n if (params.useDivWrapper) {\n _ju.sizeElement(this.canvas, xy[0], xy[1], wh[0], wh[1]);\n xy[0] = 0;\n xy[1] = 0;\n p = _pos([ 0, 0 ]);\n }\n else {\n p = _pos([ xy[0], xy[1] ]);\n }\n\n renderer.paint.apply(this, arguments);\n\n _attr(this.svg, {\n \"style\": p,\n \"width\": wh[0] || 0,\n \"height\": wh[1] || 0\n });\n }\n };\n\n return {\n renderer: renderer\n };\n };\n\n _ju.extend(SvgComponent, _jp.jsPlumbUIComponent, {\n cleanup: function (force) {\n if (force || this.typeId == null) {\n if (this.canvas) {\n this.canvas._jsPlumb = null;\n }\n if (this.svg) {\n this.svg._jsPlumb = null;\n }\n if (this.bgCanvas) {\n this.bgCanvas._jsPlumb = null;\n }\n\n if (this.canvas && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n }\n if (this.bgCanvas && this.bgCanvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n }\n\n this.svg = null;\n this.canvas = null;\n this.path = null;\n this.group = null;\n }\n else {\n // if not a forced cleanup, just detach from DOM for now.\n if (this.canvas && this.canvas.parentNode) {\n this.canvas.parentNode.removeChild(this.canvas);\n }\n if (this.bgCanvas && this.bgCanvas.parentNode) {\n this.bgCanvas.parentNode.removeChild(this.bgCanvas);\n }\n }\n },\n reattach:function(instance) {\n var c = instance.getContainer();\n if (this.canvas && this.canvas.parentNode == null) {\n c.appendChild(this.canvas);\n }\n if (this.bgCanvas && this.bgCanvas.parentNode == null) {\n c.appendChild(this.bgCanvas);\n }\n },\n setVisible: function (v) {\n if (this.canvas) {\n this.canvas.style.display = v ? \"block\" : \"none\";\n }\n }\n });\n\n /*\n * Base class for SVG connectors.\n */\n _jp.ConnectorRenderers.svg = function (params) {\n var self = this,\n _super = SvgComponent.apply(this, [\n {\n cssClass: params._jsPlumb.connectorClass,\n originalArgs: arguments,\n pointerEventsSpec: \"none\",\n _jsPlumb: params._jsPlumb\n }\n ]);\n\n _super.renderer.paint = function (style, anchor, extents) {\n\n var segments = self.getSegments(), p = \"\", offset = [0, 0];\n if (extents.xmin < 0) {\n offset[0] = -extents.xmin;\n }\n if (extents.ymin < 0) {\n offset[1] = -extents.ymin;\n }\n\n if (segments.length > 0) {\n\n p = self.getPathData();\n\n var a = {\n d: p,\n transform: \"translate(\" + offset[0] + \",\" + offset[1] + \")\",\n \"pointer-events\": params[\"pointer-events\"] || \"visibleStroke\"\n },\n outlineStyle = null,\n d = [self.x, self.y, self.w, self.h];\n\n // outline style. actually means drawing an svg object underneath the main one.\n if (style.outlineStroke) {\n var outlineWidth = style.outlineWidth || 1,\n outlineStrokeWidth = style.strokeWidth + (2 * outlineWidth);\n outlineStyle = _jp.extend({}, style);\n delete outlineStyle.gradient;\n outlineStyle.stroke = style.outlineStroke;\n outlineStyle.strokeWidth = outlineStrokeWidth;\n\n if (self.bgPath == null) {\n self.bgPath = _node(\"path\", a);\n _jp.addClass(self.bgPath, _jp.connectorOutlineClass);\n _appendAtIndex(self.svg, self.bgPath, 0);\n }\n else {\n _attr(self.bgPath, a);\n }\n\n _applyStyles(self.svg, self.bgPath, outlineStyle, d, self);\n }\n\n if (self.path == null) {\n self.path = _node(\"path\", a);\n _appendAtIndex(self.svg, self.path, style.outlineStroke ? 1 : 0);\n }\n else {\n _attr(self.path, a);\n }\n\n _applyStyles(self.svg, self.path, style, d, self);\n }\n };\n };\n _ju.extend(_jp.ConnectorRenderers.svg, SvgComponent);\n\n// ******************************* svg segment renderer *****************************************************\t\n\n\n// ******************************* /svg segments *****************************************************\n\n /*\n * Base class for SVG endpoints.\n */\n var SvgEndpoint = _jp.SvgEndpoint = function (params) {\n var _super = SvgComponent.apply(this, [\n {\n cssClass: params._jsPlumb.endpointClass,\n originalArgs: arguments,\n pointerEventsSpec: \"all\",\n useDivWrapper: true,\n _jsPlumb: params._jsPlumb\n }\n ]);\n\n _super.renderer.paint = function (style) {\n var s = _jp.extend({}, style);\n if (s.outlineStroke) {\n s.stroke = s.outlineStroke;\n }\n\n if (this.node == null) {\n this.node = this.makeNode(s);\n this.svg.appendChild(this.node);\n }\n else if (this.updateNode != null) {\n this.updateNode(this.node);\n }\n _applyStyles(this.svg, this.node, s, [ this.x, this.y, this.w, this.h ], this);\n _pos(this.node, [ this.x, this.y ]);\n }.bind(this);\n\n };\n _ju.extend(SvgEndpoint, SvgComponent);\n\n /*\n * SVG Dot Endpoint\n */\n _jp.Endpoints.svg.Dot = function () {\n _jp.Endpoints.Dot.apply(this, arguments);\n SvgEndpoint.apply(this, arguments);\n this.makeNode = function (style) {\n return _node(\"circle\", {\n \"cx\": this.w / 2,\n \"cy\": this.h / 2,\n \"r\": this.radius\n });\n };\n this.updateNode = function (node) {\n _attr(node, {\n \"cx\": this.w / 2,\n \"cy\": this.h / 2,\n \"r\": this.radius\n });\n };\n };\n _ju.extend(_jp.Endpoints.svg.Dot, [_jp.Endpoints.Dot, SvgEndpoint]);\n\n /*\n * SVG Rectangle Endpoint\n */\n _jp.Endpoints.svg.Rectangle = function () {\n _jp.Endpoints.Rectangle.apply(this, arguments);\n SvgEndpoint.apply(this, arguments);\n this.makeNode = function (style) {\n return _node(\"rect\", {\n \"width\": this.w,\n \"height\": this.h\n });\n };\n this.updateNode = function (node) {\n _attr(node, {\n \"width\": this.w,\n \"height\": this.h\n });\n };\n };\n _ju.extend(_jp.Endpoints.svg.Rectangle, [_jp.Endpoints.Rectangle, SvgEndpoint]);\n\n /*\n * SVG Image Endpoint is the default image endpoint.\n */\n _jp.Endpoints.svg.Image = _jp.Endpoints.Image;\n /*\n * Blank endpoint in svg renderer is the default Blank endpoint.\n */\n _jp.Endpoints.svg.Blank = _jp.Endpoints.Blank;\n /*\n * Label overlay in svg renderer is the default Label overlay.\n */\n _jp.Overlays.svg.Label = _jp.Overlays.Label;\n /*\n * Custom overlay in svg renderer is the default Custom overlay.\n */\n _jp.Overlays.svg.Custom = _jp.Overlays.Custom;\n\n var AbstractSvgArrowOverlay = function (superclass, originalArgs) {\n superclass.apply(this, originalArgs);\n _jp.jsPlumbUIComponent.apply(this, originalArgs);\n this.isAppendedAtTopLevel = false;\n var self = this;\n this.path = null;\n this.paint = function (params, containerExtents) {\n // only draws on connections, not endpoints.\n if (params.component.svg && containerExtents) {\n if (this.path == null) {\n this.path = _node(\"path\", {\n \"pointer-events\": \"all\"\n });\n params.component.svg.appendChild(this.path);\n if (this.elementCreated) {\n this.elementCreated(this.path, params.component);\n }\n\n this.canvas = params.component.svg; // for the sake of completeness; this behaves the same as other overlays\n }\n var clazz = originalArgs && (originalArgs.length === 1) ? (originalArgs[0].cssClass || \"\") : \"\",\n offset = [0, 0];\n\n if (containerExtents.xmin < 0) {\n offset[0] = -containerExtents.xmin;\n }\n if (containerExtents.ymin < 0) {\n offset[1] = -containerExtents.ymin;\n }\n\n _attr(this.path, {\n \"d\": makePath(params.d),\n \"class\": clazz,\n stroke: params.stroke ? params.stroke : null,\n fill: params.fill ? params.fill : null,\n transform: \"translate(\" + offset[0] + \",\" + offset[1] + \")\"\n });\n }\n };\n var makePath = function (d) {\n return (isNaN(d.cxy.x) || isNaN(d.cxy.y)) ? \"\" : \"M\" + d.hxy.x + \",\" + d.hxy.y +\n \" L\" + d.tail[0].x + \",\" + d.tail[0].y +\n \" L\" + d.cxy.x + \",\" + d.cxy.y +\n \" L\" + d.tail[1].x + \",\" + d.tail[1].y +\n \" L\" + d.hxy.x + \",\" + d.hxy.y;\n };\n this.transfer = function(target) {\n if (target.canvas && this.path && this.path.parentNode) {\n this.path.parentNode.removeChild(this.path);\n target.canvas.appendChild(this.path);\n }\n };\n };\n _ju.extend(AbstractSvgArrowOverlay, [_jp.jsPlumbUIComponent, _jp.Overlays.AbstractOverlay], {\n cleanup: function (force) {\n if (this.path != null) {\n if (force) {\n this._jsPlumb.instance.removeElement(this.path);\n }\n else {\n if (this.path.parentNode) {\n this.path.parentNode.removeChild(this.path);\n }\n }\n }\n },\n reattach:function(instance, component) {\n if (this.path && component.canvas) {\n component.canvas.appendChild(this.path);\n }\n },\n setVisible: function (v) {\n if (this.path != null) {\n (this.path.style.display = (v ? \"block\" : \"none\"));\n }\n }\n });\n\n _jp.Overlays.svg.Arrow = function () {\n AbstractSvgArrowOverlay.apply(this, [_jp.Overlays.Arrow, arguments]);\n };\n _ju.extend(_jp.Overlays.svg.Arrow, [ _jp.Overlays.Arrow, AbstractSvgArrowOverlay ]);\n\n _jp.Overlays.svg.PlainArrow = function () {\n AbstractSvgArrowOverlay.apply(this, [_jp.Overlays.PlainArrow, arguments]);\n };\n _ju.extend(_jp.Overlays.svg.PlainArrow, [ _jp.Overlays.PlainArrow, AbstractSvgArrowOverlay ]);\n\n _jp.Overlays.svg.Diamond = function () {\n AbstractSvgArrowOverlay.apply(this, [_jp.Overlays.Diamond, arguments]);\n };\n _ju.extend(_jp.Overlays.svg.Diamond, [ _jp.Overlays.Diamond, AbstractSvgArrowOverlay ]);\n\n // a test\n _jp.Overlays.svg.GuideLines = function () {\n var path = null, self = this, p1_1, p1_2;\n _jp.Overlays.GuideLines.apply(this, arguments);\n this.paint = function (params, containerExtents) {\n if (path == null) {\n path = _node(\"path\");\n params.connector.svg.appendChild(path);\n self.attachListeners(path, params.connector);\n self.attachListeners(path, self);\n\n p1_1 = _node(\"path\");\n params.connector.svg.appendChild(p1_1);\n self.attachListeners(p1_1, params.connector);\n self.attachListeners(p1_1, self);\n\n p1_2 = _node(\"path\");\n params.connector.svg.appendChild(p1_2);\n self.attachListeners(p1_2, params.connector);\n self.attachListeners(p1_2, self);\n }\n\n var offset = [0, 0];\n if (containerExtents.xmin < 0) {\n offset[0] = -containerExtents.xmin;\n }\n if (containerExtents.ymin < 0) {\n offset[1] = -containerExtents.ymin;\n }\n\n _attr(path, {\n \"d\": makePath(params.head, params.tail),\n stroke: \"red\",\n fill: null,\n transform: \"translate(\" + offset[0] + \",\" + offset[1] + \")\"\n });\n\n _attr(p1_1, {\n \"d\": makePath(params.tailLine[0], params.tailLine[1]),\n stroke: \"blue\",\n fill: null,\n transform: \"translate(\" + offset[0] + \",\" + offset[1] + \")\"\n });\n\n _attr(p1_2, {\n \"d\": makePath(params.headLine[0], params.headLine[1]),\n stroke: \"green\",\n fill: null,\n transform: \"translate(\" + offset[0] + \",\" + offset[1] + \")\"\n });\n };\n\n var makePath = function (d1, d2) {\n return \"M \" + d1.x + \",\" + d1.y +\n \" L\" + d2.x + \",\" + d2.y;\n };\n };\n _ju.extend(_jp.Overlays.svg.GuideLines, _jp.Overlays.GuideLines);\n}).call(typeof window !== 'undefined' ? window : this);\n\n/*\n * This file contains code used when jsPlumb is being rendered in a DOM.\n *\n * Copyright (c) 2010 - 2019 jsPlumb (hello@jsplumbtoolkit.com)\n *\n * https://jsplumbtoolkit.com\n * https://github.com/jsplumb/jsplumb\n *\n * Dual licensed under the MIT and GPL2 licenses.\n */\n;\n(function () {\n\n \"use strict\";\n\n var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil,\n _jk = root.Katavorio, _jg = root.Biltong;\n\n var _getEventManager = function(instance) {\n var e = instance._mottle;\n if (!e) {\n e = instance._mottle = new root.Mottle();\n }\n return e;\n };\n\n var _getDragManager = function (instance, category) {\n\n category = category || \"main\";\n var key = \"_katavorio_\" + category;\n var k = instance[key],\n e = instance.getEventManager();\n\n if (!k) {\n k = new _jk({\n bind: e.on,\n unbind: e.off,\n getSize: _jp.getSize,\n getConstrainingRectangle:function(el) {\n return [ el.parentNode.scrollWidth, el.parentNode.scrollHeight ];\n },\n getPosition: function (el, relativeToRoot) {\n // if this is a nested draggable then compute the offset against its own offsetParent, otherwise\n // compute against the Container's origin. see also the getUIPosition method below.\n var o = instance.getOffset(el, relativeToRoot, el._katavorioDrag ? el.offsetParent : null);\n return [o.left, o.top];\n },\n setPosition: function (el, xy) {\n el.style.left = xy[0] + \"px\";\n el.style.top = xy[1] + \"px\";\n },\n addClass: _jp.addClass,\n removeClass: _jp.removeClass,\n intersects: _jg.intersects,\n indexOf: function(l, i) { return l.indexOf(i); },\n scope:instance.getDefaultScope(),\n css: {\n noSelect: instance.dragSelectClass,\n droppable: \"jtk-droppable\",\n draggable: \"jtk-draggable\",\n drag: \"jtk-drag\",\n selected: \"jtk-drag-selected\",\n active: \"jtk-drag-active\",\n hover: \"jtk-drag-hover\",\n ghostProxy:\"jtk-ghost-proxy\"\n }\n });\n k.setZoom(instance.getZoom());\n instance[key] = k;\n instance.bind(\"zoom\", k.setZoom);\n }\n return k;\n };\n\n var _dragStart=function(params) {\n var options = params.el._jsPlumbDragOptions;\n var cont = true;\n if (options.canDrag) {\n cont = options.canDrag();\n }\n if (cont) {\n this.setHoverSuspended(true);\n this.select({source: params.el}).addClass(this.elementDraggingClass + \" \" + this.sourceElementDraggingClass, true);\n this.select({target: params.el}).addClass(this.elementDraggingClass + \" \" + this.targetElementDraggingClass, true);\n this.setConnectionBeingDragged(true);\n }\n return cont;\n };\n var _dragMove=function(params) {\n var ui = this.getUIPosition(arguments, this.getZoom());\n if (ui != null) {\n var o = params.el._jsPlumbDragOptions;\n this.draw(params.el, ui, null, true);\n if (o._dragging) {\n this.addClass(params.el, \"jtk-dragged\");\n }\n o._dragging = true;\n }\n };\n var _dragStop=function(params) {\n var elements = params.selection, uip;\n\n var _one = function (_e) {\n if (_e[1] != null) {\n // run the reported offset through the code that takes parent containers\n // into account, to adjust if necessary (issue 554)\n uip = this.getUIPosition([{\n el:_e[2].el,\n pos:[_e[1].left, _e[1].top]\n }]);\n this.draw(_e[2].el, uip);\n }\n\n delete _e[0]._jsPlumbDragOptions._dragging;\n\n this.removeClass(_e[0], \"jtk-dragged\");\n this.select({source: _e[2].el}).removeClass(this.elementDraggingClass + \" \" + this.sourceElementDraggingClass, true);\n this.select({target: _e[2].el}).removeClass(this.elementDraggingClass + \" \" + this.targetElementDraggingClass, true);\n this.getDragManager().dragEnded(_e[2].el);\n }.bind(this);\n\n for (var i = 0; i < elements.length; i++) {\n _one(elements[i]);\n }\n\n this.setHoverSuspended(false);\n this.setConnectionBeingDragged(false);\n };\n\n var _animProps = function (o, p) {\n var _one = function (pName) {\n if (p[pName] != null) {\n if (_ju.isString(p[pName])) {\n var m = p[pName].match(/-=/) ? -1 : 1,\n v = p[pName].substring(2);\n return o[pName] + (m * v);\n }\n else {\n return p[pName];\n }\n }\n else {\n return o[pName];\n }\n };\n return [ _one(\"left\"), _one(\"top\") ];\n };\n\n var _genLoc = function (prefix, e) {\n if (e == null) {\n return [ 0, 0 ];\n }\n var ts = _touches(e), t = _getTouch(ts, 0);\n return [t[prefix + \"X\"], t[prefix + \"Y\"]];\n },\n _pageLocation = _genLoc.bind(this, \"page\"),\n _screenLocation = _genLoc.bind(this, \"screen\"),\n _clientLocation = _genLoc.bind(this, \"client\"),\n _getTouch = function (touches, idx) {\n return touches.item ? touches.item(idx) : touches[idx];\n },\n _touches = function (e) {\n return e.touches && e.touches.length > 0 ? e.touches :\n e.changedTouches && e.changedTouches.length > 0 ? e.changedTouches :\n e.targetTouches && e.targetTouches.length > 0 ? e.targetTouches :\n [ e ];\n };\n\n /**\n Manages dragging for some instance of jsPlumb.\n\n TODO instead of this being accessed directly, it should subscribe to events on the jsPlumb instance: every method\n in here is called directly by jsPlumb. But what should happen is that we have unpublished events that this listens\n to. The only trick is getting one of these instantiated with every jsPlumb instance: it needs to have a hook somehow.\n Basically the general idea is to pull ALL the drag code out (prototype method registrations plus this) into a\n dedicated drag script), that does not necessarily need to be included.\n\n\n */\n var DragManager = function (_currentInstance) {\n var _draggables = {}, _dlist = [], _delements = {}, _elementsWithEndpoints = {},\n // elementids mapped to the draggable to which they belong.\n _draggablesForElements = {};\n\n /**\n register some element as draggable. right now the drag init stuff is done elsewhere, and it is\n possible that will continue to be the case.\n */\n this.register = function (el) {\n var id = _currentInstance.getId(el),\n parentOffset;\n\n if (!_draggables[id]) {\n _draggables[id] = el;\n _dlist.push(el);\n _delements[id] = {};\n }\n\n // look for child elements that have endpoints and register them against this draggable.\n var _oneLevel = function (p) {\n if (p) {\n for (var i = 0; i < p.childNodes.length; i++) {\n if (p.childNodes[i].nodeType !== 3 && p.childNodes[i].nodeType !== 8) {\n var cEl = jsPlumb.getElement(p.childNodes[i]),\n cid = _currentInstance.getId(p.childNodes[i], null, true);\n if (cid && _elementsWithEndpoints[cid] && _elementsWithEndpoints[cid] > 0) {\n if (!parentOffset) {\n parentOffset = _currentInstance.getOffset(el);\n }\n var cOff = _currentInstance.getOffset(cEl);\n _delements[id][cid] = {\n id: cid,\n offset: {\n left: cOff.left - parentOffset.left,\n top: cOff.top - parentOffset.top\n }\n };\n _draggablesForElements[cid] = id;\n }\n _oneLevel(p.childNodes[i]);\n }\n }\n }\n };\n\n _oneLevel(el);\n };\n\n // refresh the offsets for child elements of this element.\n this.updateOffsets = function (elId, childOffsetOverrides) {\n if (elId != null) {\n childOffsetOverrides = childOffsetOverrides || {};\n var domEl = jsPlumb.getElement(elId),\n id = _currentInstance.getId(domEl),\n children = _delements[id],\n parentOffset;\n\n if (children) {\n for (var i in children) {\n if (children.hasOwnProperty(i)) {\n var cel = jsPlumb.getElement(i),\n cOff = childOffsetOverrides[i] || _currentInstance.getOffset(cel);\n\n // do not update if we have a value already and we'd just be writing 0,0\n if (cel.offsetParent == null && _delements[id][i] != null) {\n continue;\n }\n\n if (!parentOffset) {\n parentOffset = _currentInstance.getOffset(domEl);\n }\n\n _delements[id][i] = {\n id: i,\n offset: {\n left: cOff.left - parentOffset.left,\n top: cOff.top - parentOffset.top\n }\n };\n _draggablesForElements[i] = id;\n }\n }\n }\n }\n };\n\n /**\n notification that an endpoint was added to the given el. we go up from that el's parent\n node, looking for a parent that has been registered as a draggable. if we find one, we add this\n el to that parent's list of elements to update on drag (if it is not there already)\n */\n this.endpointAdded = function (el, id) {\n\n id = id || _currentInstance.getId(el);\n\n var b = document.body,\n p = el.parentNode;\n\n _elementsWithEndpoints[id] = _elementsWithEndpoints[id] ? _elementsWithEndpoints[id] + 1 : 1;\n\n while (p != null && p !== b) {\n var pid = _currentInstance.getId(p, null, true);\n if (pid && _draggables[pid]) {\n var pLoc = _currentInstance.getOffset(p);\n\n if (_delements[pid][id] == null) {\n var cLoc = _currentInstance.getOffset(el);\n _delements[pid][id] = {\n id: id,\n offset: {\n left: cLoc.left - pLoc.left,\n top: cLoc.top - pLoc.top\n }\n };\n _draggablesForElements[id] = pid;\n }\n break;\n }\n p = p.parentNode;\n }\n };\n\n this.endpointDeleted = function (endpoint) {\n if (_elementsWithEndpoints[endpoint.elementId]) {\n _elementsWithEndpoints[endpoint.elementId]--;\n if (_elementsWithEndpoints[endpoint.elementId] <= 0) {\n for (var i in _delements) {\n if (_delements.hasOwnProperty(i) && _delements[i]) {\n delete _delements[i][endpoint.elementId];\n delete _draggablesForElements[endpoint.elementId];\n }\n }\n }\n }\n };\n\n this.changeId = function (oldId, newId) {\n _delements[newId] = _delements[oldId];\n _delements[oldId] = {};\n _draggablesForElements[newId] = _draggablesForElements[oldId];\n _draggablesForElements[oldId] = null;\n };\n\n this.getElementsForDraggable = function (id) {\n return _delements[id];\n };\n\n this.elementRemoved = function (elementId) {\n var elId = _draggablesForElements[elementId];\n if (elId) {\n delete _delements[elId][elementId];\n delete _draggablesForElements[elementId];\n }\n };\n\n this.reset = function () {\n _draggables = {};\n _dlist = [];\n _delements = {};\n _elementsWithEndpoints = {};\n };\n\n //\n // notification drag ended. We check automatically if need to update some\n // ancestor's offsets.\n //\n this.dragEnded = function (el) {\n if (el.offsetParent != null) {\n var id = _currentInstance.getId(el),\n ancestor = _draggablesForElements[id];\n\n if (ancestor) {\n this.updateOffsets(ancestor);\n }\n }\n };\n\n this.setParent = function (el, elId, p, pId, currentChildLocation) {\n var current = _draggablesForElements[elId];\n if (!_delements[pId]) {\n _delements[pId] = {};\n }\n var pLoc = _currentInstance.getOffset(p),\n cLoc = currentChildLocation || _currentInstance.getOffset(el);\n\n if (current && _delements[current]) {\n delete _delements[current][elId];\n }\n\n _delements[pId][elId] = {\n id:elId,\n offset : {\n left: cLoc.left - pLoc.left,\n top: cLoc.top - pLoc.top\n }\n };\n _draggablesForElements[elId] = pId;\n };\n\n this.clearParent = function(el, elId) {\n var current = _draggablesForElements[elId];\n if (current) {\n delete _delements[current][elId];\n delete _draggablesForElements[elId];\n }\n };\n\n this.revalidateParent = function(el, elId, childOffset) {\n var current = _draggablesForElements[elId];\n if (current) {\n var co = {};\n co[elId] = childOffset;\n this.updateOffsets(current, co);\n _currentInstance.revalidate(current);\n }\n };\n\n this.getDragAncestor = function (el) {\n var de = jsPlumb.getElement(el),\n id = _currentInstance.getId(de),\n aid = _draggablesForElements[id];\n\n if (aid) {\n return jsPlumb.getElement(aid);\n }\n else {\n return null;\n }\n };\n\n };\n\n var _setClassName = function (el, cn, classList) {\n cn = _ju.fastTrim(cn);\n if (typeof el.className.baseVal !== \"undefined\") {\n el.className.baseVal = cn;\n }\n else {\n el.className = cn;\n }\n\n // recent (i currently have 61.0.3163.100) version of chrome do not update classList when you set the base val\n // of an svg element's className. in the long run we'd like to move to just using classList anyway\n try {\n var cl = el.classList;\n if (cl != null) {\n while (cl.length > 0) {\n cl.remove(cl.item(0));\n }\n for (var i = 0; i < classList.length; i++) {\n if (classList[i]) {\n cl.add(classList[i]);\n }\n }\n }\n }\n catch(e) {\n // not fatal\n _ju.log(\"JSPLUMB: cannot set class list\", e);\n }\n },\n _getClassName = function (el) {\n return (typeof el.className.baseVal === \"undefined\") ? el.className : el.className.baseVal;\n },\n _classManip = function (el, classesToAdd, classesToRemove) {\n classesToAdd = classesToAdd == null ? [] : _ju.isArray(classesToAdd) ? classesToAdd : classesToAdd.split(/\\s+/);\n classesToRemove = classesToRemove == null ? [] : _ju.isArray(classesToRemove) ? classesToRemove : classesToRemove.split(/\\s+/);\n\n var className = _getClassName(el),\n curClasses = className.split(/\\s+/);\n\n var _oneSet = function (add, classes) {\n for (var i = 0; i < classes.length; i++) {\n if (add) {\n if (curClasses.indexOf(classes[i]) === -1) {\n curClasses.push(classes[i]);\n }\n }\n else {\n var idx = curClasses.indexOf(classes[i]);\n if (idx !== -1) {\n curClasses.splice(idx, 1);\n }\n }\n }\n };\n\n _oneSet(true, classesToAdd);\n _oneSet(false, classesToRemove);\n\n _setClassName(el, curClasses.join(\" \"), curClasses);\n };\n\n root.jsPlumb.extend(root.jsPlumbInstance.prototype, {\n\n headless: false,\n\n pageLocation: _pageLocation,\n screenLocation: _screenLocation,\n clientLocation: _clientLocation,\n\n getDragManager:function() {\n if (this.dragManager == null) {\n this.dragManager = new DragManager(this);\n }\n\n return this.dragManager;\n },\n\n recalculateOffsets:function(elId) {\n this.getDragManager().updateOffsets(elId);\n },\n\n createElement:function(tag, style, clazz, atts) {\n return this.createElementNS(null, tag, style, clazz, atts);\n },\n\n createElementNS:function(ns, tag, style, clazz, atts) {\n var e = ns == null ? document.createElement(tag) : document.createElementNS(ns, tag);\n var i;\n style = style || {};\n for (i in style) {\n e.style[i] = style[i];\n }\n\n if (clazz) {\n e.className = clazz;\n }\n\n atts = atts || {};\n for (i in atts) {\n e.setAttribute(i, \"\" + atts[i]);\n }\n\n return e;\n },\n\n getAttribute: function (el, attName) {\n return el.getAttribute != null ? el.getAttribute(attName) : null;\n },\n\n setAttribute: function (el, a, v) {\n if (el.setAttribute != null) {\n el.setAttribute(a, v);\n }\n },\n\n setAttributes: function (el, atts) {\n for (var i in atts) {\n if (atts.hasOwnProperty(i)) {\n el.setAttribute(i, atts[i]);\n }\n }\n },\n appendToRoot: function (node) {\n document.body.appendChild(node);\n },\n getRenderModes: function () {\n return [ \"svg\" ];\n },\n getClass:_getClassName,\n addClass: function (el, clazz) {\n jsPlumb.each(el, function (e) {\n _classManip(e, clazz);\n });\n },\n hasClass: function (el, clazz) {\n el = jsPlumb.getElement(el);\n if (el.classList) {\n return el.classList.contains(clazz);\n }\n else {\n return _getClassName(el).indexOf(clazz) !== -1;\n }\n },\n removeClass: function (el, clazz) {\n jsPlumb.each(el, function (e) {\n _classManip(e, null, clazz);\n });\n },\n toggleClass:function(el, clazz) {\n if (jsPlumb.hasClass(el, clazz)) {\n jsPlumb.removeClass(el, clazz);\n } else {\n jsPlumb.addClass(el, clazz);\n }\n },\n updateClasses: function (el, toAdd, toRemove) {\n jsPlumb.each(el, function (e) {\n _classManip(e, toAdd, toRemove);\n });\n },\n setClass: function (el, clazz) {\n if (clazz != null) {\n jsPlumb.each(el, function (e) {\n _setClassName(e, clazz, clazz.split(/\\s+/));\n });\n }\n },\n setPosition: function (el, p) {\n el.style.left = p.left + \"px\";\n el.style.top = p.top + \"px\";\n },\n getPosition: function (el) {\n var _one = function (prop) {\n var v = el.style[prop];\n return v ? v.substring(0, v.length - 2) : 0;\n };\n return {\n left: _one(\"left\"),\n top: _one(\"top\")\n };\n },\n getStyle:function(el, prop) {\n if (typeof window.getComputedStyle !== 'undefined') {\n return getComputedStyle(el, null).getPropertyValue(prop);\n } else {\n return el.currentStyle[prop];\n }\n },\n getSelector: function (ctx, spec) {\n var sel = null;\n if (arguments.length === 1) {\n sel = ctx.nodeType != null ? ctx : document.querySelectorAll(ctx);\n }\n else {\n sel = ctx.querySelectorAll(spec);\n }\n\n return sel;\n },\n getOffset:function(el, relativeToRoot, container) {\n el = jsPlumb.getElement(el);\n container = container || this.getContainer();\n var out = {\n left: el.offsetLeft,\n top: el.offsetTop\n },\n op = (relativeToRoot || (container != null && (el !== container && el.offsetParent !== container))) ? el.offsetParent : null,\n _maybeAdjustScroll = function(offsetParent) {\n if (offsetParent != null && offsetParent !== document.body && (offsetParent.scrollTop > 0 || offsetParent.scrollLeft > 0)) {\n out.left -= offsetParent.scrollLeft;\n out.top -= offsetParent.scrollTop;\n }\n }.bind(this);\n\n while (op != null) {\n out.left += op.offsetLeft;\n out.top += op.offsetTop;\n _maybeAdjustScroll(op);\n op = relativeToRoot ? op.offsetParent :\n op.offsetParent === container ? null : op.offsetParent;\n }\n\n // if container is scrolled and the element (or its offset parent) is not absolute or fixed, adjust accordingly.\n if (container != null && !relativeToRoot && (container.scrollTop > 0 || container.scrollLeft > 0)) {\n var pp = el.offsetParent != null ? this.getStyle(el.offsetParent, \"position\") : \"static\",\n p = this.getStyle(el, \"position\");\n if (p !== \"absolute\" && p !== \"fixed\" && pp !== \"absolute\" && pp !== \"fixed\") {\n out.left -= container.scrollLeft;\n out.top -= container.scrollTop;\n }\n }\n return out;\n },\n //\n // return x+y proportion of the given element's size corresponding to the location of the given event.\n //\n getPositionOnElement: function (evt, el, zoom) {\n var box = typeof el.getBoundingClientRect !== \"undefined\" ? el.getBoundingClientRect() : { left: 0, top: 0, width: 0, height: 0 },\n body = document.body,\n docElem = document.documentElement,\n scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop,\n scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft,\n clientTop = docElem.clientTop || body.clientTop || 0,\n clientLeft = docElem.clientLeft || body.clientLeft || 0,\n pst = 0,\n psl = 0,\n top = box.top + scrollTop - clientTop + (pst * zoom),\n left = box.left + scrollLeft - clientLeft + (psl * zoom),\n cl = jsPlumb.pageLocation(evt),\n w = box.width || (el.offsetWidth * zoom),\n h = box.height || (el.offsetHeight * zoom),\n x = (cl[0] - left) / w,\n y = (cl[1] - top) / h;\n\n return [ x, y ];\n },\n\n /**\n * Gets the absolute position of some element as read from the left/top properties in its style.\n * @method getAbsolutePosition\n * @param {Element} el The element to retrieve the absolute coordinates from. **Note** this is a DOM element, not a selector from the underlying library.\n * @return {Number[]} [left, top] pixel values.\n */\n getAbsolutePosition: function (el) {\n var _one = function (s) {\n var ss = el.style[s];\n if (ss) {\n return parseFloat(ss.substring(0, ss.length - 2));\n }\n };\n return [ _one(\"left\"), _one(\"top\") ];\n },\n\n /**\n * Sets the absolute position of some element by setting the left/top properties in its style.\n * @method setAbsolutePosition\n * @param {Element} el The element to set the absolute coordinates on. **Note** this is a DOM element, not a selector from the underlying library.\n * @param {Number[]} xy x and y coordinates\n * @param {Number[]} [animateFrom] Optional previous xy to animate from.\n * @param {Object} [animateOptions] Options for the animation.\n */\n setAbsolutePosition: function (el, xy, animateFrom, animateOptions) {\n if (animateFrom) {\n this.animate(el, {\n left: \"+=\" + (xy[0] - animateFrom[0]),\n top: \"+=\" + (xy[1] - animateFrom[1])\n }, animateOptions);\n }\n else {\n el.style.left = xy[0] + \"px\";\n el.style.top = xy[1] + \"px\";\n }\n },\n /**\n * gets the size for the element, in an array : [ width, height ].\n */\n getSize: function (el) {\n return [ el.offsetWidth, el.offsetHeight ];\n },\n getWidth: function (el) {\n return el.offsetWidth;\n },\n getHeight: function (el) {\n return el.offsetHeight;\n },\n getRenderMode : function() { return \"svg\"; },\n draggable : function (el, options) {\n var info;\n el = _ju.isArray(el) || (el.length != null && !_ju.isString(el)) ? el: [ el ];\n Array.prototype.slice.call(el).forEach(function(_el) {\n info = this.info(_el);\n if (info.el) {\n this._initDraggableIfNecessary(info.el, true, options, info.id, true);\n }\n }.bind(this));\n return this;\n },\n initDraggable: function (el, options, category) {\n _getDragManager(this, category).draggable(el, options);\n el._jsPlumbDragOptions = options;\n },\n destroyDraggable: function (el, category) {\n _getDragManager(this, category).destroyDraggable(el);\n delete el._jsPlumbDragOptions;\n },\n unbindDraggable: function (el, evt, fn, category) {\n _getDragManager(this, category).destroyDraggable(el, evt, fn);\n },\n setDraggable : function (element, draggable) {\n return jsPlumb.each(element, function (el) {\n if (this.isDragSupported(el)) {\n this._draggableStates[this.getAttribute(el, \"id\")] = draggable;\n this.setElementDraggable(el, draggable);\n }\n }.bind(this));\n },\n _draggableStates : {},\n /*\n * toggles the draggable state of the given element(s).\n * el is either an id, or an element object, or a list of ids/element objects.\n */\n toggleDraggable : function (el) {\n var state;\n jsPlumb.each(el, function (el) {\n var elId = this.getAttribute(el, \"id\");\n state = this._draggableStates[elId] == null ? false : this._draggableStates[elId];\n state = !state;\n this._draggableStates[elId] = state;\n this.setDraggable(el, state);\n return state;\n }.bind(this));\n return state;\n },\n _initDraggableIfNecessary : function (element, isDraggable, dragOptions, id, fireEvent) {\n // TODO FIRST: move to DragManager. including as much of the decision to init dragging as possible.\n if (!jsPlumb.headless) {\n var _draggable = isDraggable == null ? false : isDraggable;\n if (_draggable) {\n if (jsPlumb.isDragSupported(element, this)) {\n var options = dragOptions || this.Defaults.DragOptions;\n options = jsPlumb.extend({}, options); // make a copy.\n if (!jsPlumb.isAlreadyDraggable(element, this)) {\n var dragEvent = jsPlumb.dragEvents.drag,\n stopEvent = jsPlumb.dragEvents.stop,\n startEvent = jsPlumb.dragEvents.start;\n\n this.manage(id, element);\n\n options[startEvent] = _ju.wrap(options[startEvent], _dragStart.bind(this));\n\n options[dragEvent] = _ju.wrap(options[dragEvent], _dragMove.bind(this));\n\n options[stopEvent] = _ju.wrap(options[stopEvent], _dragStop.bind(this));\n\n var elId = this.getId(element); // need ID\n\n this._draggableStates[elId] = true;\n var draggable = this._draggableStates[elId];\n\n options.disabled = draggable == null ? false : !draggable;\n this.initDraggable(element, options);\n this.getDragManager().register(element);\n if (fireEvent) {\n this.fire(\"elementDraggable\", {el:element, options:options});\n }\n }\n else {\n // already draggable. attach any start, drag or stop listeners to the current Drag.\n if (dragOptions.force) {\n this.initDraggable(element, options);\n }\n }\n }\n }\n }\n },\n animationSupported:true,\n getElement: function (el) {\n if (el == null) {\n return null;\n }\n // here we pluck the first entry if el was a list of entries.\n // this is not my favourite thing to do, but previous versions of\n // jsplumb supported jquery selectors, and it is possible a selector\n // will be passed in here.\n el = typeof el === \"string\" ? el : el.length != null && el.enctype == null ? el[0] : el;\n return typeof el === \"string\" ? document.getElementById(el) : el;\n },\n removeElement: function (element) {\n _getDragManager(this).elementRemoved(element);\n this.getEventManager().remove(element);\n },\n //\n // this adapter supports a rudimentary animation function. no easing is supported. only\n // left/top properties are supported. property delta args are expected to be in the form\n //\n // +=x.xxxx\n //\n // or\n //\n // -=x.xxxx\n //\n doAnimate: function (el, properties, options) {\n options = options || {};\n var o = this.getOffset(el),\n ap = _animProps(o, properties),\n ldist = ap[0] - o.left,\n tdist = ap[1] - o.top,\n d = options.duration || 250,\n step = 15, steps = d / step,\n linc = (step / d) * ldist,\n tinc = (step / d) * tdist,\n idx = 0,\n _int = setInterval(function () {\n _jp.setPosition(el, {\n left: o.left + (linc * (idx + 1)),\n top: o.top + (tinc * (idx + 1))\n });\n if (options.step != null) {\n options.step(idx, Math.ceil(steps));\n }\n idx++;\n if (idx >= steps) {\n window.clearInterval(_int);\n if (options.complete != null) {\n options.complete();\n }\n }\n }, step);\n },\n // DRAG/DROP\n\n\n destroyDroppable: function (el, category) {\n _getDragManager(this, category).destroyDroppable(el);\n },\n unbindDroppable: function (el, evt, fn, category) {\n _getDragManager(this, category).destroyDroppable(el, evt, fn);\n },\n\n droppable :function(el, options) {\n el = _ju.isArray(el) || (el.length != null && !_ju.isString(el)) ? el: [ el ];\n var info;\n options = options || {};\n options.allowLoopback = false;\n Array.prototype.slice.call(el).forEach(function(_el) {\n info = this.info(_el);\n if (info.el) {\n this.initDroppable(info.el, options);\n }\n }.bind(this));\n return this;\n },\n\n initDroppable: function (el, options, category) {\n _getDragManager(this, category).droppable(el, options);\n },\n isAlreadyDraggable: function (el) {\n return el._katavorioDrag != null;\n },\n isDragSupported: function (el, options) {\n return true;\n },\n isDropSupported: function (el, options) {\n return true;\n },\n isElementDraggable: function (el) {\n el = _jp.getElement(el);\n return el._katavorioDrag && el._katavorioDrag.isEnabled();\n },\n getDragObject: function (eventArgs) {\n return eventArgs[0].drag.getDragElement();\n },\n getDragScope: function (el) {\n return el._katavorioDrag && el._katavorioDrag.scopes.join(\" \") || \"\";\n },\n getDropEvent: function (args) {\n return args[0].e;\n },\n getUIPosition: function (eventArgs, zoom) {\n // here the position reported to us by Katavorio is relative to the element's offsetParent. For top\n // level nodes that is fine, but if we have a nested draggable then its offsetParent is actually\n // not going to be the jsplumb container; it's going to be some child of that element. In that case\n // we want to adjust the UI position to account for the offsetParent's position relative to the Container\n // origin.\n var el = eventArgs[0].el;\n if (el.offsetParent == null) {\n return null;\n }\n var finalPos = eventArgs[0].finalPos || eventArgs[0].pos;\n var p = { left:finalPos[0], top:finalPos[1] };\n if (el._katavorioDrag && el.offsetParent !== this.getContainer()) {\n var oc = this.getOffset(el.offsetParent);\n p.left += oc.left;\n p.top += oc.top;\n }\n return p;\n },\n setDragFilter: function (el, filter, _exclude) {\n if (el._katavorioDrag) {\n el._katavorioDrag.setFilter(filter, _exclude);\n }\n },\n setElementDraggable: function (el, draggable) {\n el = _jp.getElement(el);\n if (el._katavorioDrag) {\n el._katavorioDrag.setEnabled(draggable);\n }\n },\n setDragScope: function (el, scope) {\n if (el._katavorioDrag) {\n el._katavorioDrag.k.setDragScope(el, scope);\n }\n },\n setDropScope:function(el, scope) {\n if (el._katavorioDrop && el._katavorioDrop.length > 0) {\n el._katavorioDrop[0].k.setDropScope(el, scope);\n }\n },\n addToPosse:function(el, spec) {\n var specs = Array.prototype.slice.call(arguments, 1);\n var dm = _getDragManager(this);\n _jp.each(el, function(_el) {\n _el = [ _jp.getElement(_el) ];\n _el.push.apply(_el, specs );\n dm.addToPosse.apply(dm, _el);\n });\n },\n setPosse:function(el, spec) {\n var specs = Array.prototype.slice.call(arguments, 1);\n var dm = _getDragManager(this);\n _jp.each(el, function(_el) {\n _el = [ _jp.getElement(_el) ];\n _el.push.apply(_el, specs );\n dm.setPosse.apply(dm, _el);\n });\n },\n removeFromPosse:function(el, posseId) {\n var specs = Array.prototype.slice.call(arguments, 1);\n var dm = _getDragManager(this);\n _jp.each(el, function(_el) {\n _el = [ _jp.getElement(_el) ];\n _el.push.apply(_el, specs );\n dm.removeFromPosse.apply(dm, _el);\n });\n },\n removeFromAllPosses:function(el) {\n var dm = _getDragManager(this);\n _jp.each(el, function(_el) { dm.removeFromAllPosses(_jp.getElement(_el)); });\n },\n setPosseState:function(el, posseId, state) {\n var dm = _getDragManager(this);\n _jp.each(el, function(_el) { dm.setPosseState(_jp.getElement(_el), posseId, state); });\n },\n dragEvents: {\n 'start': 'start', 'stop': 'stop', 'drag': 'drag', 'step': 'step',\n 'over': 'over', 'out': 'out', 'drop': 'drop', 'complete': 'complete',\n 'beforeStart':'beforeStart'\n },\n animEvents: {\n 'step': \"step\", 'complete': 'complete'\n },\n stopDrag: function (el) {\n if (el._katavorioDrag) {\n el._katavorioDrag.abort();\n }\n },\n addToDragSelection: function (spec) {\n _getDragManager(this).select(spec);\n },\n removeFromDragSelection: function (spec) {\n _getDragManager(this).deselect(spec);\n },\n clearDragSelection: function () {\n _getDragManager(this).deselectAll();\n },\n trigger: function (el, event, originalEvent, payload) {\n this.getEventManager().trigger(el, event, originalEvent, payload);\n },\n doReset:function() {\n // look for katavorio instances and reset each one if found.\n for (var key in this) {\n if (key.indexOf(\"_katavorio_\") === 0) {\n this[key].reset();\n }\n }\n },\n getEventManager:function() {\n return _getEventManager(this);\n },\n on : function(el, event, callback) {\n // TODO: here we would like to map the tap event if we know its\n // an internal bind to a click. we have to know its internal because only\n // then can we be sure that the UP event wont be consumed (tap is a synthesized\n // event from a mousedown followed by a mouseup).\n //event = { \"click\":\"tap\", \"dblclick\":\"dbltap\"}[event] || event;\n this.getEventManager().on.apply(this, arguments);\n return this;\n },\n off : function(el, event, callback) {\n this.getEventManager().off.apply(this, arguments);\n return this;\n }\n\n });\n\n var ready = function (f) {\n var _do = function () {\n if (/complete|loaded|interactive/.test(document.readyState) && typeof(document.body) !== \"undefined\" && document.body != null) {\n f();\n }\n else {\n setTimeout(_do, 9);\n }\n };\n\n _do();\n };\n ready(_jp.init);\n\n}).call(typeof window !== 'undefined' ? window : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jsplumb/dist/js/jsplumb.js\n// module id = 721\n// module chunks = 3 4 5","\nimport i18n from '@/module/i18n'\n\n/**\n * cycle\n */\nconst cycleList = [\n {\n value: 'month',\n label: `${i18n.$t('月')}`\n },\n {\n value: 'week',\n label: `${i18n.$t('周')}`\n },\n {\n value: 'day',\n label: `${i18n.$t('日')}`\n },\n {\n value: 'hour',\n label: `${i18n.$t('时')}`\n }\n]\n\n/**\n * cycle value\n */\nconst dateValueList = {\n 'hour': [\n {\n value: 'last1Hour',\n label: `${i18n.$t('前1小时')}`\n },\n {\n value: 'last2Hours',\n label: `${i18n.$t('前2小时')}`\n },\n {\n value: 'last3Hours',\n label: `${i18n.$t('前3小时')}`\n }\n ],\n 'day': [\n {\n value: 'last1Days',\n label: `${i18n.$t('昨天')}`\n },\n {\n value: 'last2Days',\n label: `${i18n.$t('前两天')}`\n },\n {\n value: 'last3Days',\n label: `${i18n.$t('前三天')}`\n },\n {\n value: 'last7Days',\n label: `${i18n.$t('前七天')}`\n }\n ],\n 'week': [\n {\n value: 'lastWeek',\n label: `${i18n.$t('上周')}`\n },\n {\n value: 'lastMonday',\n label: `${i18n.$t('上周一')}`\n },\n {\n value: 'lastTuesday',\n label: `${i18n.$t('上周二')}`\n },\n {\n value: 'lastWednesday',\n label: `${i18n.$t('上周三')}`\n },\n {\n value: 'lastThursday',\n label: `${i18n.$t('上周四')}`\n },\n {\n value: 'lastFriday',\n label: `${i18n.$t('上周五')}`\n },\n {\n value: 'lastSaturday',\n label: `${i18n.$t('上周六')}`\n },\n {\n value: 'lastSunday',\n label: `${i18n.$t('上周日')}`\n }\n ],\n 'month': [\n {\n value: 'lastMonth',\n label: `${i18n.$t('上月')}`\n },\n {\n value: 'lastMonthBegin',\n label: `${i18n.$t('上月初')}`\n },\n {\n value: 'lastMonthEnd',\n label: `${i18n.$t('上月末')}`\n }\n ]\n}\n\n/**\n * direct\n */\nconst directList = [\n {\n id: 1,\n code: 'IN',\n disabled: false\n },\n {\n id: 2,\n code: 'OUT',\n disabled: false\n }\n]\n\n/**\n * type\n */\nconst typeList = [\n {\n id: 1,\n code: 'VARCHAR',\n disabled: false\n },\n {\n id: 2,\n code: 'INTEGER',\n disabled: false\n },\n {\n id: 3,\n code: 'LONG',\n disabled: false\n },\n {\n id: 4,\n code: 'FLOAT',\n disabled: false\n },\n {\n id: 5,\n code: 'DOUBLE',\n disabled: false\n },\n {\n id: 6,\n code: 'DATE',\n disabled: false\n },\n {\n id: 7,\n code: 'TIME',\n disabled: false\n },\n {\n id: 8,\n code: 'TIMESTAMP',\n disabled: false\n },\n {\n id: 9,\n code: 'BOOLEAN',\n disabled: false\n }\n]\n\n/**\n * sqlType\n */\nconst sqlTypeList = [\n {\n id: 0,\n code: `${i18n.$t('查询')}`\n },\n {\n id: 1,\n code: `${i18n.$t('非查询')}`\n }\n]\n\nexport {\n cycleList,\n dateValueList,\n typeList,\n directList,\n sqlTypeList\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/commcon.js","<template>\n <span class=\"log-model\">\n <span v-if=\"stateId && item.type !== 'SUB_PROCESS'\">\n <slot name=\"history\"></slot>\n <span @click=\"_ckLog\">\n <slot name=\"log\" ></slot>\n </span>\n </span>\n <transition name=\"fade\">\n <div v-show=\"isLog || source === 'list'\" class=\"log-pop\">\n <div class=\"log-box\" >\n <div class=\"title\">\n <span>{{$t('查看日志')}}</span>\n <div class=\"full-screen\">\n <a href=\"javascript:\" @click=\"_downloadLog\" data-container=\"body\" data-toggle=\"tooltip\" :title=\"$t('下载日志')\">\n <i class=\"iconfont\" style=\"font-size: 20px\">&#xe610;</i>\n </a>\n <a href=\"javascript:\" class=\"refresh-log\" :class=\"loading ? 'active' :''\" @click=\"!loading && _refreshLog()\" data-container=\"body\" data-toggle=\"tooltip\" :title=\"$t('刷新日志')\">\n <i class=\"fa iconfont\">&#xe602;</i>\n </a>\n <a href=\"javascript:\" @click=\"_screenOpen\" v-show=\"!isScreen\" data-container=\"body\" data-toggle=\"tooltip\" :title=\"$t('进入全屏')\">\n <i class=\"iconfont\">&#xe6e0;</i>\n </a>\n <a href=\"javascript:\" @click=\"_screenClose\" v-show=\"isScreen\" data-container=\"body\" data-toggle=\"tooltip\" :title=\"$t('取消全屏')\">\n <i class=\"iconfont\">&#xe660;</i>\n </a>\n </div>\n </div>\n <div class=\"content\">\n <div class=\"content-log-box\" >\n <textarea class=\"textarea-ft\" id=\"textarea-log\" style=\"width: 100%\" spellcheck=\"false\" ></textarea>\n </div>\n </div>\n <div class=\"operation\">\n <x-button type=\"primary\" shape=\"circle\" @click=\"close\"> {{$t('关闭')}} </x-button>\n </div>\n </div>\n </div>\n </transition>\n </span>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import store from '@/conf/home/store'\n import router from '@/conf/home/router'\n import { downloadFile } from '@/module/download'\n\n /**\n * Calculate text size\n */\n const handerTextareaSize = (isH = 0) => {\n $('body').find('.tooltip.fade.top.in').remove()\n return $('.textarea-ft').css({ 'height': `${$('.content-log-box').height() - isH}px` })\n }\n\n let content = ''\n\n export default {\n name: 'log',\n data () {\n return {\n store,\n router,\n isLog: false,\n stateId: $(`#${this.item.id}`).attr('data-state-id') || null,\n isScreen: false,\n loadingIndex: 0,\n isData: true,\n loading: false\n }\n },\n props: {\n item: {\n type: Object,\n default: {}\n },\n source: {\n type: String,\n default: 'from'\n },\n logId: Number\n },\n methods: {\n _refreshLog () {\n this.loading = true\n this.store.dispatch('dag/getLog', this._rtParam).then(res => {\n setTimeout(() => {\n this.loading = false\n if (res.data) {\n this.$message.success(`${i18n.$t('更新日志成功')}`)\n } else {\n this.$message.warning(`${i18n.$t('暂无更多日志')}`)\n }\n }, 1500)\n // Handling text field size\n handerTextareaSize().html('').text(res.data || `${i18n.$t('暂无日志')}`)\n }).catch(e => {\n this.$message.error(e.msg || '')\n this.loading = false\n })\n },\n _ckLog () {\n this.isLog = true\n this.store.dispatch('dag/getLog', this._rtParam).then(res => {\n this.$message.destroy()\n\n if (!res.data) {\n this.isData = false\n setTimeout(() => {\n this.$message.warning(`${i18n.$t('暂无更多日志')}`)\n }, 1000)\n // Handling text field size\n handerTextareaSize().html('').text(content || `${i18n.$t('暂无日志')}`)\n } else {\n this.isData = true\n content = res.data\n // Handling text field size\n handerTextareaSize().html('').text(content || `${i18n.$t('暂无日志')}`)\n\n setTimeout(() => {\n $('#textarea').scrollTop(2)\n }, 800)\n }\n }).catch(e => {\n this.$message.error(e.msg || '')\n this.$message.destroy()\n })\n },\n _screenOpen () {\n this.isScreen = true\n let $logBox = $('.log-box')\n let winW = $(window).width() - 40\n let winH = $(window).height() - 40\n $logBox.css({\n width: winW,\n height: winH,\n marginLeft: `-${parseInt(winW / 2)}px`,\n marginTop: `-${parseInt(winH / 2)}px`\n })\n $logBox.find('.content').animate({ scrollTop: 0 }, 0)\n // Handling text field size\n handerTextareaSize().html('').text(content)\n },\n _screenClose () {\n this.isScreen = false\n let $logBox = $('.log-box')\n $logBox.attr('style', '')\n $logBox.find('.content').animate({ scrollTop: 0 }, 0)\n // Handling text field size\n handerTextareaSize().html('').text(content)\n },\n /**\n * Download log\n */\n _downloadLog () {\n downloadFile('/escheduler/log/download-log', {\n taskInstId: this.stateId || this.logId\n })\n },\n /**\n * up\n */\n _onUp: _.debounce(function () {\n this.loadingIndex = this.loadingIndex - 1\n this._ckLog()\n }, 1000, {\n 'leading': false,\n 'trailing': true\n }),\n /**\n * down\n */\n _onDown: _.debounce(function () {\n this.loadingIndex = this.loadingIndex + 1\n this._ckLog()\n }, 1000, {\n 'leading': false,\n 'trailing': true\n }),\n /**\n * Monitor scroll bar\n */\n _onTextareaScroll () {\n let self = this\n $('#textarea-log').scroll(function () {\n let $this = $(this)\n // Listen for scrollbar events\n if (($this.scrollTop() + $this.height()) === $this.height()) {\n if (self.loadingIndex > 0) {\n self.$message.loading({\n content: `${i18n.$t('正在努力请求日志中...')}`,\n duration: 0,\n closable: false\n })\n self._onUp()\n }\n }\n // Listen for scrollbar events\n if ($this.get(0).scrollHeight === ($this.height() + $this.scrollTop())) {\n // No data is not requested\n if (self.isData) {\n self.$message.loading({\n content: `${i18n.$t('正在努力请求日志中...')}`,\n duration: 0,\n closable: false\n })\n self._onDown()\n }\n }\n })\n },\n /**\n * close\n */\n close () {\n $('body').find('.tooltip.fade.top.in').remove()\n this.isScreen = false\n this.isLog = false\n content = ''\n this.$emit('close')\n }\n },\n watch: {},\n created () {\n // Source is a task instance\n if (this.source === 'list') {\n this.$message.loading({\n content: `${i18n.$t('正在努力请求日志中...')}`,\n duration: 0,\n closable: false\n })\n this._ckLog()\n }\n },\n mounted () {\n this._onTextareaScroll()\n },\n updated () {\n },\n computed: {\n _rtParam () {\n return {\n taskInstId: this.stateId || this.logId,\n skipLineNum: parseInt(`${this.loadingIndex ? this.loadingIndex + '0000' : 0}`),\n limit: parseInt(`${this.loadingIndex ? this.loadingIndex + 1 : 1}0000`)\n }\n }\n },\n components: { }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .log-pop {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0,0,0,.4);\n z-index: 10;\n .log-box {\n width: 660px;\n height: 520px;\n background: #fff;\n border-radius: 3px;\n position: absolute;\n left:50%;\n top: 50%;\n margin-left: -340px;\n margin-top: -250px;\n .title {\n height: 50px;\n border-bottom: 1px solid #dcdedc;\n span {\n font-size: 16px;\n color: #333;\n padding-left: 20px;\n display: inline-block;\n padding-top: 16px;\n }\n .full-screen {\n position: absolute;\n right: 20px;\n top: 12px;\n a{\n color: #0097e0;\n font-size: 12px;\n margin-left: 10px;\n i {\n vertical-align: middle;\n }\n }\n .clock {\n >i {\n font-size: 20px;\n vertical-align: middle;\n transform: scale(1);\n }\n }\n .refresh-log {\n >i {\n font-size: 24px;\n vertical-align: middle;\n transform: scale(1);\n }\n &.active {\n >i {\n -webkit-transition-property: -webkit-transform;\n -webkit-transition-duration: 1s;\n -moz-transition-property: -moz-transform;\n -moz-transition-duration: 1s;\n -webkit-animation: rotateloading .4s linear infinite;\n -moz-animation: rotateloading .4s linear infinite;\n -o-animation: rotateloading .4s linear infinite;\n animation: rotateloading .4s linear infinite;\n transform: scale(.4);\n color: #999;\n }\n }\n }\n }\n }\n .content {\n height: calc(100% - 100px);\n background: #002A35;\n padding:6px 2px;\n .content-log-box {\n width: 100%;\n height: 100%;\n word-break:break-all;\n textarea {\n background: none;\n color: #9CABAF;\n border: 0;\n font-family: 'Microsoft Yahei,Arial,Hiragino Sans GB,tahoma,SimSun,sans-serif';\n font-weight: bold;\n resize:none;\n line-height: 1.6;\n padding: 6px;\n }\n }\n }\n .operation {\n text-align: right;\n height: 50px;\n line-height: 44px;\n border-top: 1px solid #dcdedc;\n padding-right: 20px;\n background: #fff;\n position: relative;\n }\n }\n }\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/log.vue","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n this.cm.off(\"cursorActivity\", this.activityFunc);\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i];\n if (completion.hint) completion.hint(this.cm, data, completion);\n else this.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n this.close();\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < this.startPos.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n hints.style.left = left + \"px\";\n hints.style.top = top + \"px\";\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n (completion.options.container || ownerDocument.body).appendChild(hints);\n var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;\n var scrolls = hints.scrollHeight > hints.clientHeight + 1\n var startScroll = cm.getScrollInfo();\n\n if (overlapY > 0) {\n var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n if (curTop - height > 0) { // Fits above cursor\n hints.style.top = (top = pos.top - height) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = (winH - 5) + \"px\";\n hints.style.top = (top = pos.bottom - box.top) + \"px\";\n var cursor = cm.getCursor();\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n var overlapX = box.right - winW;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = pos.left - overlapX) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n if (node.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node.offsetTop - 3;\n else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3;\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnUnfocus: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/addon/hint/show-hint.js\n// module id = 725\n// module chunks = 3 4 5 7 8 14","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../../mode/sql/sql\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../mode/sql/sql\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var tables;\n var defaultTable;\n var keywords;\n var identifierQuote;\n var CONS = {\n QUERY_DIV: \";\",\n ALIAS_KEYWORD: \"AS\"\n };\n var Pos = CodeMirror.Pos, cmpPos = CodeMirror.cmpPos;\n\n function isArray(val) { return Object.prototype.toString.call(val) == \"[object Array]\" }\n\n function getKeywords(editor) {\n var mode = editor.doc.modeOption;\n if (mode === \"sql\") mode = \"text/x-sql\";\n return CodeMirror.resolveMode(mode).keywords;\n }\n\n function getIdentifierQuote(editor) {\n var mode = editor.doc.modeOption;\n if (mode === \"sql\") mode = \"text/x-sql\";\n return CodeMirror.resolveMode(mode).identifierQuote || \"`\";\n }\n\n function getText(item) {\n return typeof item == \"string\" ? item : item.text;\n }\n\n function wrapTable(name, value) {\n if (isArray(value)) value = {columns: value}\n if (!value.text) value.text = name\n return value\n }\n\n function parseTables(input) {\n var result = {}\n if (isArray(input)) {\n for (var i = input.length - 1; i >= 0; i--) {\n var item = input[i]\n result[getText(item).toUpperCase()] = wrapTable(getText(item), item)\n }\n } else if (input) {\n for (var name in input)\n result[name.toUpperCase()] = wrapTable(name, input[name])\n }\n return result\n }\n\n function getTable(name) {\n return tables[name.toUpperCase()]\n }\n\n function shallowClone(object) {\n var result = {};\n for (var key in object) if (object.hasOwnProperty(key))\n result[key] = object[key];\n return result;\n }\n\n function match(string, word) {\n var len = string.length;\n var sub = getText(word).substr(0, len);\n return string.toUpperCase() === sub.toUpperCase();\n }\n\n function addMatches(result, search, wordlist, formatter) {\n if (isArray(wordlist)) {\n for (var i = 0; i < wordlist.length; i++)\n if (match(search, wordlist[i])) result.push(formatter(wordlist[i]))\n } else {\n for (var word in wordlist) if (wordlist.hasOwnProperty(word)) {\n var val = wordlist[word]\n if (!val || val === true)\n val = word\n else\n val = val.displayText ? {text: val.text, displayText: val.displayText} : val.text\n if (match(search, val)) result.push(formatter(val))\n }\n }\n }\n\n function cleanName(name) {\n // Get rid name from identifierQuote and preceding dot(.)\n if (name.charAt(0) == \".\") {\n name = name.substr(1);\n }\n // replace doublicated identifierQuotes with single identifierQuotes\n // and remove single identifierQuotes\n var nameParts = name.split(identifierQuote+identifierQuote);\n for (var i = 0; i < nameParts.length; i++)\n nameParts[i] = nameParts[i].replace(new RegExp(identifierQuote,\"g\"), \"\");\n return nameParts.join(identifierQuote);\n }\n\n function insertIdentifierQuotes(name) {\n var nameParts = getText(name).split(\".\");\n for (var i = 0; i < nameParts.length; i++)\n nameParts[i] = identifierQuote +\n // doublicate identifierQuotes\n nameParts[i].replace(new RegExp(identifierQuote,\"g\"), identifierQuote+identifierQuote) +\n identifierQuote;\n var escaped = nameParts.join(\".\");\n if (typeof name == \"string\") return escaped;\n name = shallowClone(name);\n name.text = escaped;\n return name;\n }\n\n function nameCompletion(cur, token, result, editor) {\n // Try to complete table, column names and return start position of completion\n var useIdentifierQuotes = false;\n var nameParts = [];\n var start = token.start;\n var cont = true;\n while (cont) {\n cont = (token.string.charAt(0) == \".\");\n useIdentifierQuotes = useIdentifierQuotes || (token.string.charAt(0) == identifierQuote);\n\n start = token.start;\n nameParts.unshift(cleanName(token.string));\n\n token = editor.getTokenAt(Pos(cur.line, token.start));\n if (token.string == \".\") {\n cont = true;\n token = editor.getTokenAt(Pos(cur.line, token.start));\n }\n }\n\n // Try to complete table names\n var string = nameParts.join(\".\");\n addMatches(result, string, tables, function(w) {\n return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n });\n\n // Try to complete columns from defaultTable\n addMatches(result, string, defaultTable, function(w) {\n return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n });\n\n // Try to complete columns\n string = nameParts.pop();\n var table = nameParts.join(\".\");\n\n var alias = false;\n var aliasTable = table;\n // Check if table is available. If not, find table by Alias\n if (!getTable(table)) {\n var oldTable = table;\n table = findTableByAlias(table, editor);\n if (table !== oldTable) alias = true;\n }\n\n var columns = getTable(table);\n if (columns && columns.columns)\n columns = columns.columns;\n\n if (columns) {\n addMatches(result, string, columns, function(w) {\n var tableInsert = table;\n if (alias == true) tableInsert = aliasTable;\n if (typeof w == \"string\") {\n w = tableInsert + \".\" + w;\n } else {\n w = shallowClone(w);\n w.text = tableInsert + \".\" + w.text;\n }\n return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n });\n }\n\n return start;\n }\n\n function eachWord(lineText, f) {\n var words = lineText.split(/\\s+/)\n for (var i = 0; i < words.length; i++)\n if (words[i]) f(words[i].replace(/[,;]/g, ''))\n }\n\n function findTableByAlias(alias, editor) {\n var doc = editor.doc;\n var fullQuery = doc.getValue();\n var aliasUpperCase = alias.toUpperCase();\n var previousWord = \"\";\n var table = \"\";\n var separator = [];\n var validRange = {\n start: Pos(0, 0),\n end: Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).length)\n };\n\n //add separator\n var indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV);\n while(indexOfSeparator != -1) {\n separator.push(doc.posFromIndex(indexOfSeparator));\n indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV, indexOfSeparator+1);\n }\n separator.unshift(Pos(0, 0));\n separator.push(Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).text.length));\n\n //find valid range\n var prevItem = null;\n var current = editor.getCursor()\n for (var i = 0; i < separator.length; i++) {\n if ((prevItem == null || cmpPos(current, prevItem) > 0) && cmpPos(current, separator[i]) <= 0) {\n validRange = {start: prevItem, end: separator[i]};\n break;\n }\n prevItem = separator[i];\n }\n\n if (validRange.start) {\n var query = doc.getRange(validRange.start, validRange.end, false);\n\n for (var i = 0; i < query.length; i++) {\n var lineText = query[i];\n eachWord(lineText, function(word) {\n var wordUpperCase = word.toUpperCase();\n if (wordUpperCase === aliasUpperCase && getTable(previousWord))\n table = previousWord;\n if (wordUpperCase !== CONS.ALIAS_KEYWORD)\n previousWord = word;\n });\n if (table) break;\n }\n }\n return table;\n }\n\n CodeMirror.registerHelper(\"hint\", \"sql\", function(editor, options) {\n tables = parseTables(options && options.tables)\n var defaultTableName = options && options.defaultTable;\n var disableKeywords = options && options.disableKeywords;\n defaultTable = defaultTableName && getTable(defaultTableName);\n keywords = getKeywords(editor);\n identifierQuote = getIdentifierQuote(editor);\n\n if (defaultTableName && !defaultTable)\n defaultTable = findTableByAlias(defaultTableName, editor);\n\n defaultTable = defaultTable || [];\n\n if (defaultTable.columns)\n defaultTable = defaultTable.columns;\n\n var cur = editor.getCursor();\n var result = [];\n var token = editor.getTokenAt(cur), start, end, search;\n if (token.end > cur.ch) {\n token.end = cur.ch;\n token.string = token.string.slice(0, cur.ch - token.start);\n }\n\n if (token.string.match(/^[.`\"\\w@]\\w*$/)) {\n search = token.string;\n start = token.start;\n end = token.end;\n } else {\n start = end = cur.ch;\n search = \"\";\n }\n if (search.charAt(0) == \".\" || search.charAt(0) == identifierQuote) {\n start = nameCompletion(cur, token, result, editor);\n } else {\n var objectOrClass = function(w, className) {\n if (typeof w === \"object\") {\n w.className = className;\n } else {\n w = { text: w, className: className };\n }\n return w;\n };\n addMatches(result, search, defaultTable, function(w) {\n return objectOrClass(w, \"CodeMirror-hint-table CodeMirror-hint-default-table\");\n });\n addMatches(\n result,\n search,\n tables, function(w) {\n return objectOrClass(w, \"CodeMirror-hint-table\");\n }\n );\n if (!disableKeywords)\n addMatches(result, search, keywords, function(w) {\n return objectOrClass(w.toUpperCase(), \"CodeMirror-hint-keyword\");\n });\n }\n\n return {list: result, from: Pos(cur.line, start), to: Pos(cur.line, end)};\n });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/addon/hint/sql-hint.js\n// module id = 726\n// module chunks = 3 4 5 7 8 14","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var Pos = CodeMirror.Pos;\n\n function matches(hint, typed, matchInMiddle) {\n if (matchInMiddle) return hint.indexOf(typed) >= 0;\n else return hint.lastIndexOf(typed, 0) == 0;\n }\n\n function getHints(cm, options) {\n var tags = options && options.schemaInfo;\n var quote = (options && options.quoteChar) || '\"';\n var matchInMiddle = options && options.matchInMiddle;\n if (!tags) return;\n var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n if (token.end > cur.ch) {\n token.end = cur.ch;\n token.string = token.string.slice(0, cur.ch - token.start);\n }\n var inner = CodeMirror.innerMode(cm.getMode(), token.state);\n if (inner.mode.name != \"xml\") return;\n var result = [], replaceToken = false, prefix;\n var tag = /\\btag\\b/.test(token.type) && !/>$/.test(token.string);\n var tagName = tag && /^\\w/.test(token.string), tagStart;\n\n if (tagName) {\n var before = cm.getLine(cur.line).slice(Math.max(0, token.start - 2), token.start);\n var tagType = /<\\/$/.test(before) ? \"close\" : /<$/.test(before) ? \"open\" : null;\n if (tagType) tagStart = token.start - (tagType == \"close\" ? 2 : 1);\n } else if (tag && token.string == \"<\") {\n tagType = \"open\";\n } else if (tag && token.string == \"</\") {\n tagType = \"close\";\n }\n\n if (!tag && !inner.state.tagName || tagType) {\n if (tagName)\n prefix = token.string;\n replaceToken = tagType;\n var cx = inner.state.context, curTag = cx && tags[cx.tagName];\n var childList = cx ? curTag && curTag.children : tags[\"!top\"];\n if (childList && tagType != \"close\") {\n for (var i = 0; i < childList.length; ++i) if (!prefix || matches(childList[i], prefix, matchInMiddle))\n result.push(\"<\" + childList[i]);\n } else if (tagType != \"close\") {\n for (var name in tags)\n if (tags.hasOwnProperty(name) && name != \"!top\" && name != \"!attrs\" && (!prefix || matches(name, prefix, matchInMiddle)))\n result.push(\"<\" + name);\n }\n if (cx && (!prefix || tagType == \"close\" && matches(cx.tagName, prefix, matchInMiddle)))\n result.push(\"</\" + cx.tagName + \">\");\n } else {\n // Attribute completion\n var curTag = tags[inner.state.tagName], attrs = curTag && curTag.attrs;\n var globalAttrs = tags[\"!attrs\"];\n if (!attrs && !globalAttrs) return;\n if (!attrs) {\n attrs = globalAttrs;\n } else if (globalAttrs) { // Combine tag-local and global attributes\n var set = {};\n for (var nm in globalAttrs) if (globalAttrs.hasOwnProperty(nm)) set[nm] = globalAttrs[nm];\n for (var nm in attrs) if (attrs.hasOwnProperty(nm)) set[nm] = attrs[nm];\n attrs = set;\n }\n if (token.type == \"string\" || token.string == \"=\") { // A value\n var before = cm.getRange(Pos(cur.line, Math.max(0, cur.ch - 60)),\n Pos(cur.line, token.type == \"string\" ? token.start : token.end));\n var atName = before.match(/([^\\s\\u00a0=<>\\\"\\']+)=$/), atValues;\n if (!atName || !attrs.hasOwnProperty(atName[1]) || !(atValues = attrs[atName[1]])) return;\n if (typeof atValues == 'function') atValues = atValues.call(this, cm); // Functions can be used to supply values for autocomplete widget\n if (token.type == \"string\") {\n prefix = token.string;\n var n = 0;\n if (/['\"]/.test(token.string.charAt(0))) {\n quote = token.string.charAt(0);\n prefix = token.string.slice(1);\n n++;\n }\n var len = token.string.length;\n if (/['\"]/.test(token.string.charAt(len - 1))) {\n quote = token.string.charAt(len - 1);\n prefix = token.string.substr(n, len - 2);\n }\n replaceToken = true;\n }\n for (var i = 0; i < atValues.length; ++i) if (!prefix || matches(atValues[i], prefix, matchInMiddle))\n result.push(quote + atValues[i] + quote);\n } else { // An attribute name\n if (token.type == \"attribute\") {\n prefix = token.string;\n replaceToken = true;\n }\n for (var attr in attrs) if (attrs.hasOwnProperty(attr) && (!prefix || matches(attr, prefix, matchInMiddle)))\n result.push(attr);\n }\n }\n return {\n list: result,\n from: replaceToken ? Pos(cur.line, tagStart == null ? token.start : tagStart) : cur,\n to: replaceToken ? Pos(cur.line, token.end) : cur\n };\n }\n\n CodeMirror.registerHelper(\"hint\", \"xml\", getHints);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/addon/hint/xml-hint.js\n// module id = 727\n// module chunks = 3 4 5 7 8 14","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n function wordRegexp(words) {\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n var wordOperators = wordRegexp([\"and\", \"or\", \"not\", \"is\"]);\n var commonKeywords = [\"as\", \"assert\", \"break\", \"class\", \"continue\",\n \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\",\n \"for\", \"from\", \"global\", \"if\", \"import\",\n \"lambda\", \"pass\", \"raise\", \"return\",\n \"try\", \"while\", \"with\", \"yield\", \"in\"];\n var commonBuiltins = [\"abs\", \"all\", \"any\", \"bin\", \"bool\", \"bytearray\", \"callable\", \"chr\",\n \"classmethod\", \"compile\", \"complex\", \"delattr\", \"dict\", \"dir\", \"divmod\",\n \"enumerate\", \"eval\", \"filter\", \"float\", \"format\", \"frozenset\",\n \"getattr\", \"globals\", \"hasattr\", \"hash\", \"help\", \"hex\", \"id\",\n \"input\", \"int\", \"isinstance\", \"issubclass\", \"iter\", \"len\",\n \"list\", \"locals\", \"map\", \"max\", \"memoryview\", \"min\", \"next\",\n \"object\", \"oct\", \"open\", \"ord\", \"pow\", \"property\", \"range\",\n \"repr\", \"reversed\", \"round\", \"set\", \"setattr\", \"slice\",\n \"sorted\", \"staticmethod\", \"str\", \"sum\", \"super\", \"tuple\",\n \"type\", \"vars\", \"zip\", \"__import__\", \"NotImplemented\",\n \"Ellipsis\", \"__debug__\"];\n CodeMirror.registerHelper(\"hintWords\", \"python\", commonKeywords.concat(commonBuiltins));\n\n function top(state) {\n return state.scopes[state.scopes.length - 1];\n }\n\n CodeMirror.defineMode(\"python\", function(conf, parserConf) {\n var ERRORCLASS = \"error\";\n\n var delimiters = parserConf.delimiters || parserConf.singleDelimiters || /^[\\(\\)\\[\\]\\{\\}@,:`=;\\.\\\\]/;\n // (Backwards-compatiblity with old, cumbersome config system)\n var operators = [parserConf.singleOperators, parserConf.doubleOperators, parserConf.doubleDelimiters, parserConf.tripleDelimiters,\n parserConf.operators || /^([-+*/%\\/&|^]=?|[<>=]+|\\/\\/=?|\\*\\*=?|!=|[~!@])/]\n for (var i = 0; i < operators.length; i++) if (!operators[i]) operators.splice(i--, 1)\n\n var hangingIndent = parserConf.hangingIndent || conf.indentUnit;\n\n var myKeywords = commonKeywords, myBuiltins = commonBuiltins;\n if (parserConf.extra_keywords != undefined)\n myKeywords = myKeywords.concat(parserConf.extra_keywords);\n\n if (parserConf.extra_builtins != undefined)\n myBuiltins = myBuiltins.concat(parserConf.extra_builtins);\n\n var py3 = !(parserConf.version && Number(parserConf.version) < 3)\n if (py3) {\n // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator\n var identifiers = parserConf.identifiers|| /^[_A-Za-z\\u00A1-\\uFFFF][_A-Za-z0-9\\u00A1-\\uFFFF]*/;\n myKeywords = myKeywords.concat([\"nonlocal\", \"False\", \"True\", \"None\", \"async\", \"await\"]);\n myBuiltins = myBuiltins.concat([\"ascii\", \"bytes\", \"exec\", \"print\"]);\n var stringPrefixes = new RegExp(\"^(([rbuf]|(br)|(fr))?('{3}|\\\"{3}|['\\\"]))\", \"i\");\n } else {\n var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/;\n myKeywords = myKeywords.concat([\"exec\", \"print\"]);\n myBuiltins = myBuiltins.concat([\"apply\", \"basestring\", \"buffer\", \"cmp\", \"coerce\", \"execfile\",\n \"file\", \"intern\", \"long\", \"raw_input\", \"reduce\", \"reload\",\n \"unichr\", \"unicode\", \"xrange\", \"False\", \"True\", \"None\"]);\n var stringPrefixes = new RegExp(\"^(([rubf]|(ur)|(br))?('{3}|\\\"{3}|['\\\"]))\", \"i\");\n }\n var keywords = wordRegexp(myKeywords);\n var builtins = wordRegexp(myBuiltins);\n\n // tokenizers\n function tokenBase(stream, state) {\n var sol = stream.sol() && state.lastToken != \"\\\\\"\n if (sol) state.indent = stream.indentation()\n // Handle scope changes\n if (sol && top(state).type == \"py\") {\n var scopeOffset = top(state).offset;\n if (stream.eatSpace()) {\n var lineOffset = stream.indentation();\n if (lineOffset > scopeOffset)\n pushPyScope(state);\n else if (lineOffset < scopeOffset && dedent(stream, state) && stream.peek() != \"#\")\n state.errorToken = true;\n return null;\n } else {\n var style = tokenBaseInner(stream, state);\n if (scopeOffset > 0 && dedent(stream, state))\n style += \" \" + ERRORCLASS;\n return style;\n }\n }\n return tokenBaseInner(stream, state);\n }\n\n function tokenBaseInner(stream, state) {\n if (stream.eatSpace()) return null;\n\n // Handle Comments\n if (stream.match(/^#.*/)) return \"comment\";\n\n // Handle Number Literals\n if (stream.match(/^[0-9\\.]/, false)) {\n var floatLiteral = false;\n // Floats\n if (stream.match(/^[\\d_]*\\.\\d+(e[\\+\\-]?\\d+)?/i)) { floatLiteral = true; }\n if (stream.match(/^[\\d_]+\\.\\d*/)) { floatLiteral = true; }\n if (stream.match(/^\\.\\d+/)) { floatLiteral = true; }\n if (floatLiteral) {\n // Float literals may be \"imaginary\"\n stream.eat(/J/i);\n return \"number\";\n }\n // Integers\n var intLiteral = false;\n // Hex\n if (stream.match(/^0x[0-9a-f_]+/i)) intLiteral = true;\n // Binary\n if (stream.match(/^0b[01_]+/i)) intLiteral = true;\n // Octal\n if (stream.match(/^0o[0-7_]+/i)) intLiteral = true;\n // Decimal\n if (stream.match(/^[1-9][\\d_]*(e[\\+\\-]?[\\d_]+)?/)) {\n // Decimal literals may be \"imaginary\"\n stream.eat(/J/i);\n // TODO - Can you have imaginary longs?\n intLiteral = true;\n }\n // Zero by itself with no other piece of number.\n if (stream.match(/^0(?![\\dx])/i)) intLiteral = true;\n if (intLiteral) {\n // Integer literals may be \"long\"\n stream.eat(/L/i);\n return \"number\";\n }\n }\n\n // Handle Strings\n if (stream.match(stringPrefixes)) {\n var isFmtString = stream.current().toLowerCase().indexOf('f') !== -1;\n if (!isFmtString) {\n state.tokenize = tokenStringFactory(stream.current(), state.tokenize);\n return state.tokenize(stream, state);\n } else {\n state.tokenize = formatStringFactory(stream.current(), state.tokenize);\n return state.tokenize(stream, state);\n }\n }\n\n for (var i = 0; i < operators.length; i++)\n if (stream.match(operators[i])) return \"operator\"\n\n if (stream.match(delimiters)) return \"punctuation\";\n\n if (state.lastToken == \".\" && stream.match(identifiers))\n return \"property\";\n\n if (stream.match(keywords) || stream.match(wordOperators))\n return \"keyword\";\n\n if (stream.match(builtins))\n return \"builtin\";\n\n if (stream.match(/^(self|cls)\\b/))\n return \"variable-2\";\n\n if (stream.match(identifiers)) {\n if (state.lastToken == \"def\" || state.lastToken == \"class\")\n return \"def\";\n return \"variable\";\n }\n\n // Handle non-detected items\n stream.next();\n return ERRORCLASS;\n }\n\n function formatStringFactory(delimiter, tokenOuter) {\n while (\"rubf\".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)\n delimiter = delimiter.substr(1);\n\n var singleline = delimiter.length == 1;\n var OUTCLASS = \"string\";\n\n function tokenNestedExpr(depth) {\n return function(stream, state) {\n var inner = tokenBaseInner(stream, state)\n if (inner == \"punctuation\") {\n if (stream.current() == \"{\") {\n state.tokenize = tokenNestedExpr(depth + 1)\n } else if (stream.current() == \"}\") {\n if (depth > 1) state.tokenize = tokenNestedExpr(depth - 1)\n else state.tokenize = tokenString\n }\n }\n return inner\n }\n }\n\n function tokenString(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\{\\}\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol())\n return OUTCLASS;\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenOuter;\n return OUTCLASS;\n } else if (stream.match('{{')) {\n // ignore {{ in f-str\n return OUTCLASS;\n } else if (stream.match('{', false)) {\n // switch to nested mode\n state.tokenize = tokenNestedExpr(0)\n if (stream.current()) return OUTCLASS;\n else return state.tokenize(stream, state)\n } else if (stream.match('}}')) {\n return OUTCLASS;\n } else if (stream.match('}')) {\n // single } in f-string is an error\n return ERRORCLASS;\n } else {\n stream.eat(/['\"]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors)\n return ERRORCLASS;\n else\n state.tokenize = tokenOuter;\n }\n return OUTCLASS;\n }\n tokenString.isString = true;\n return tokenString;\n }\n\n function tokenStringFactory(delimiter, tokenOuter) {\n while (\"rubf\".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)\n delimiter = delimiter.substr(1);\n\n var singleline = delimiter.length == 1;\n var OUTCLASS = \"string\";\n\n function tokenString(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol())\n return OUTCLASS;\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenOuter;\n return OUTCLASS;\n } else {\n stream.eat(/['\"]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors)\n return ERRORCLASS;\n else\n state.tokenize = tokenOuter;\n }\n return OUTCLASS;\n }\n tokenString.isString = true;\n return tokenString;\n }\n\n function pushPyScope(state) {\n while (top(state).type != \"py\") state.scopes.pop()\n state.scopes.push({offset: top(state).offset + conf.indentUnit,\n type: \"py\",\n align: null})\n }\n\n function pushBracketScope(stream, state, type) {\n var align = stream.match(/^([\\s\\[\\{\\(]|#.*)*$/, false) ? null : stream.column() + 1\n state.scopes.push({offset: state.indent + hangingIndent,\n type: type,\n align: align})\n }\n\n function dedent(stream, state) {\n var indented = stream.indentation();\n while (state.scopes.length > 1 && top(state).offset > indented) {\n if (top(state).type != \"py\") return true;\n state.scopes.pop();\n }\n return top(state).offset != indented;\n }\n\n function tokenLexer(stream, state) {\n if (stream.sol()) state.beginningOfLine = true;\n\n var style = state.tokenize(stream, state);\n var current = stream.current();\n\n // Handle decorators\n if (state.beginningOfLine && current == \"@\")\n return stream.match(identifiers, false) ? \"meta\" : py3 ? \"operator\" : ERRORCLASS;\n\n if (/\\S/.test(current)) state.beginningOfLine = false;\n\n if ((style == \"variable\" || style == \"builtin\")\n && state.lastToken == \"meta\")\n style = \"meta\";\n\n // Handle scope changes.\n if (current == \"pass\" || current == \"return\")\n state.dedent += 1;\n\n if (current == \"lambda\") state.lambda = true;\n if (current == \":\" && !state.lambda && top(state).type == \"py\")\n pushPyScope(state);\n\n if (current.length == 1 && !/string|comment/.test(style)) {\n var delimiter_index = \"[({\".indexOf(current);\n if (delimiter_index != -1)\n pushBracketScope(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n\n delimiter_index = \"])}\".indexOf(current);\n if (delimiter_index != -1) {\n if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent\n else return ERRORCLASS;\n }\n }\n if (state.dedent > 0 && stream.eol() && top(state).type == \"py\") {\n if (state.scopes.length > 1) state.scopes.pop();\n state.dedent -= 1;\n }\n\n return style;\n }\n\n var external = {\n startState: function(basecolumn) {\n return {\n tokenize: tokenBase,\n scopes: [{offset: basecolumn || 0, type: \"py\", align: null}],\n indent: basecolumn || 0,\n lastToken: null,\n lambda: false,\n dedent: 0\n };\n },\n\n token: function(stream, state) {\n var addErr = state.errorToken;\n if (addErr) state.errorToken = false;\n var style = tokenLexer(stream, state);\n\n if (style && style != \"comment\")\n state.lastToken = (style == \"keyword\" || style == \"punctuation\") ? stream.current() : style;\n if (style == \"punctuation\") style = null;\n\n if (stream.eol() && state.lambda)\n state.lambda = false;\n return addErr ? style + \" \" + ERRORCLASS : style;\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize != tokenBase)\n return state.tokenize.isString ? CodeMirror.Pass : 0;\n\n var scope = top(state), closing = scope.type == textAfter.charAt(0)\n if (scope.align != null)\n return scope.align - (closing ? 1 : 0)\n else\n return scope.offset - (closing ? hangingIndent : 0)\n },\n\n electricInput: /^\\s*[\\}\\]\\)]$/,\n closeBrackets: {triples: \"'\\\"\"},\n lineComment: \"#\",\n fold: \"indent\"\n };\n return external;\n });\n\n CodeMirror.defineMIME(\"text/x-python\", \"python\");\n\n var words = function(str) { return str.split(\" \"); };\n\n CodeMirror.defineMIME(\"text/x-cython\", {\n name: \"python\",\n extra_keywords: words(\"by cdef cimport cpdef ctypedef enum except \"+\n \"extern gil include nogil property public \"+\n \"readonly struct union DEF IF ELIF ELSE\")\n });\n\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/mode/python/python.js\n// module id = 728\n// module chunks = 3 4 5 7 8 14","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName;\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||\n !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(state.context.tagName))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(tagName)) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /<!\\[CDATA\\[/.test(textAfter)) return 0;\n var tagAfter = textAfter && /^<(\\/)?([\\w_:\\.-]*)/.exec(textAfter);\n if (tagAfter && tagAfter[1]) { // Closing tag spotted\n while (context) {\n if (context.tagName == tagAfter[2]) {\n context = context.prev;\n break;\n } else if (config.implicitlyClosed.hasOwnProperty(context.tagName)) {\n context = context.prev;\n } else {\n break;\n }\n }\n } else if (tagAfter) { // Opening tag spotted\n while (context) {\n var grabbers = config.contextGrabbers[context.tagName];\n if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))\n context = context.prev;\n else\n break;\n }\n }\n while (context && context.prev && !context.startOfLine)\n context = context.prev;\n if (context) return context.indent + indentUnit;\n else return state.baseIndent || 0;\n },\n\n electricInput: /<\\/[\\s\\w:]+>$/,\n blockCommentStart: \"<!--\",\n blockCommentEnd: \"-->\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/mode/xml/xml.js\n// module id = 729\n// module chunks = 3 4 5 7 8 14","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") { // CommonJS\n mod(require(\"../../lib/codemirror\"));\n } else if (typeof define == \"function\" && define.amd) { // AMD\n define([\"../../lib/codemirror\"], mod);\n } else { // Plain browser env\n mod(CodeMirror);\n }\n})(function(CodeMirror) {\n \"use strict\";\n\n var TOKEN_STYLES = {\n addition: \"positive\",\n attributes: \"attribute\",\n bold: \"strong\",\n cite: \"keyword\",\n code: \"atom\",\n definitionList: \"number\",\n deletion: \"negative\",\n div: \"punctuation\",\n em: \"em\",\n footnote: \"variable\",\n footCite: \"qualifier\",\n header: \"header\",\n html: \"comment\",\n image: \"string\",\n italic: \"em\",\n link: \"link\",\n linkDefinition: \"link\",\n list1: \"variable-2\",\n list2: \"variable-3\",\n list3: \"keyword\",\n notextile: \"string-2\",\n pre: \"operator\",\n p: \"property\",\n quote: \"bracket\",\n span: \"quote\",\n specialChar: \"tag\",\n strong: \"strong\",\n sub: \"builtin\",\n sup: \"builtin\",\n table: \"variable-3\",\n tableHeading: \"operator\"\n };\n\n function startNewLine(stream, state) {\n state.mode = Modes.newLayout;\n state.tableHeading = false;\n\n if (state.layoutType === \"definitionList\" && state.spanningLayout &&\n stream.match(RE(\"definitionListEnd\"), false))\n state.spanningLayout = false;\n }\n\n function handlePhraseModifier(stream, state, ch) {\n if (ch === \"_\") {\n if (stream.eat(\"_\"))\n return togglePhraseModifier(stream, state, \"italic\", /__/, 2);\n else\n return togglePhraseModifier(stream, state, \"em\", /_/, 1);\n }\n\n if (ch === \"*\") {\n if (stream.eat(\"*\")) {\n return togglePhraseModifier(stream, state, \"bold\", /\\*\\*/, 2);\n }\n return togglePhraseModifier(stream, state, \"strong\", /\\*/, 1);\n }\n\n if (ch === \"[\") {\n if (stream.match(/\\d+\\]/)) state.footCite = true;\n return tokenStyles(state);\n }\n\n if (ch === \"(\") {\n var spec = stream.match(/^(r|tm|c)\\)/);\n if (spec)\n return tokenStylesWith(state, TOKEN_STYLES.specialChar);\n }\n\n if (ch === \"<\" && stream.match(/(\\w+)[^>]+>[^<]+<\\/\\1>/))\n return tokenStylesWith(state, TOKEN_STYLES.html);\n\n if (ch === \"?\" && stream.eat(\"?\"))\n return togglePhraseModifier(stream, state, \"cite\", /\\?\\?/, 2);\n\n if (ch === \"=\" && stream.eat(\"=\"))\n return togglePhraseModifier(stream, state, \"notextile\", /==/, 2);\n\n if (ch === \"-\" && !stream.eat(\"-\"))\n return togglePhraseModifier(stream, state, \"deletion\", /-/, 1);\n\n if (ch === \"+\")\n return togglePhraseModifier(stream, state, \"addition\", /\\+/, 1);\n\n if (ch === \"~\")\n return togglePhraseModifier(stream, state, \"sub\", /~/, 1);\n\n if (ch === \"^\")\n return togglePhraseModifier(stream, state, \"sup\", /\\^/, 1);\n\n if (ch === \"%\")\n return togglePhraseModifier(stream, state, \"span\", /%/, 1);\n\n if (ch === \"@\")\n return togglePhraseModifier(stream, state, \"code\", /@/, 1);\n\n if (ch === \"!\") {\n var type = togglePhraseModifier(stream, state, \"image\", /(?:\\([^\\)]+\\))?!/, 1);\n stream.match(/^:\\S+/); // optional Url portion\n return type;\n }\n return tokenStyles(state);\n }\n\n function togglePhraseModifier(stream, state, phraseModifier, closeRE, openSize) {\n var charBefore = stream.pos > openSize ? stream.string.charAt(stream.pos - openSize - 1) : null;\n var charAfter = stream.peek();\n if (state[phraseModifier]) {\n if ((!charAfter || /\\W/.test(charAfter)) && charBefore && /\\S/.test(charBefore)) {\n var type = tokenStyles(state);\n state[phraseModifier] = false;\n return type;\n }\n } else if ((!charBefore || /\\W/.test(charBefore)) && charAfter && /\\S/.test(charAfter) &&\n stream.match(new RegExp(\"^.*\\\\S\" + closeRE.source + \"(?:\\\\W|$)\"), false)) {\n state[phraseModifier] = true;\n state.mode = Modes.attributes;\n }\n return tokenStyles(state);\n };\n\n function tokenStyles(state) {\n var disabled = textileDisabled(state);\n if (disabled) return disabled;\n\n var styles = [];\n if (state.layoutType) styles.push(TOKEN_STYLES[state.layoutType]);\n\n styles = styles.concat(activeStyles(\n state, \"addition\", \"bold\", \"cite\", \"code\", \"deletion\", \"em\", \"footCite\",\n \"image\", \"italic\", \"link\", \"span\", \"strong\", \"sub\", \"sup\", \"table\", \"tableHeading\"));\n\n if (state.layoutType === \"header\")\n styles.push(TOKEN_STYLES.header + \"-\" + state.header);\n\n return styles.length ? styles.join(\" \") : null;\n }\n\n function textileDisabled(state) {\n var type = state.layoutType;\n\n switch(type) {\n case \"notextile\":\n case \"code\":\n case \"pre\":\n return TOKEN_STYLES[type];\n default:\n if (state.notextile)\n return TOKEN_STYLES.notextile + (type ? (\" \" + TOKEN_STYLES[type]) : \"\");\n return null;\n }\n }\n\n function tokenStylesWith(state, extraStyles) {\n var disabled = textileDisabled(state);\n if (disabled) return disabled;\n\n var type = tokenStyles(state);\n if (extraStyles)\n return type ? (type + \" \" + extraStyles) : extraStyles;\n else\n return type;\n }\n\n function activeStyles(state) {\n var styles = [];\n for (var i = 1; i < arguments.length; ++i) {\n if (state[arguments[i]])\n styles.push(TOKEN_STYLES[arguments[i]]);\n }\n return styles;\n }\n\n function blankLine(state) {\n var spanningLayout = state.spanningLayout, type = state.layoutType;\n\n for (var key in state) if (state.hasOwnProperty(key))\n delete state[key];\n\n state.mode = Modes.newLayout;\n if (spanningLayout) {\n state.layoutType = type;\n state.spanningLayout = true;\n }\n }\n\n var REs = {\n cache: {},\n single: {\n bc: \"bc\",\n bq: \"bq\",\n definitionList: /- .*?:=+/,\n definitionListEnd: /.*=:\\s*$/,\n div: \"div\",\n drawTable: /\\|.*\\|/,\n foot: /fn\\d+/,\n header: /h[1-6]/,\n html: /\\s*<(?:\\/)?(\\w+)(?:[^>]+)?>(?:[^<]+<\\/\\1>)?/,\n link: /[^\"]+\":\\S/,\n linkDefinition: /\\[[^\\s\\]]+\\]\\S+/,\n list: /(?:#+|\\*+)/,\n notextile: \"notextile\",\n para: \"p\",\n pre: \"pre\",\n table: \"table\",\n tableCellAttributes: /[\\/\\\\]\\d+/,\n tableHeading: /\\|_\\./,\n tableText: /[^\"_\\*\\[\\(\\?\\+~\\^%@|-]+/,\n text: /[^!\"_=\\*\\[\\(<\\?\\+~\\^%@-]+/\n },\n attributes: {\n align: /(?:<>|<|>|=)/,\n selector: /\\([^\\(][^\\)]+\\)/,\n lang: /\\[[^\\[\\]]+\\]/,\n pad: /(?:\\(+|\\)+){1,2}/,\n css: /\\{[^\\}]+\\}/\n },\n createRe: function(name) {\n switch (name) {\n case \"drawTable\":\n return REs.makeRe(\"^\", REs.single.drawTable, \"$\");\n case \"html\":\n return REs.makeRe(\"^\", REs.single.html, \"(?:\", REs.single.html, \")*\", \"$\");\n case \"linkDefinition\":\n return REs.makeRe(\"^\", REs.single.linkDefinition, \"$\");\n case \"listLayout\":\n return REs.makeRe(\"^\", REs.single.list, RE(\"allAttributes\"), \"*\\\\s+\");\n case \"tableCellAttributes\":\n return REs.makeRe(\"^\", REs.choiceRe(REs.single.tableCellAttributes,\n RE(\"allAttributes\")), \"+\\\\.\");\n case \"type\":\n return REs.makeRe(\"^\", RE(\"allTypes\"));\n case \"typeLayout\":\n return REs.makeRe(\"^\", RE(\"allTypes\"), RE(\"allAttributes\"),\n \"*\\\\.\\\\.?\", \"(\\\\s+|$)\");\n case \"attributes\":\n return REs.makeRe(\"^\", RE(\"allAttributes\"), \"+\");\n\n case \"allTypes\":\n return REs.choiceRe(REs.single.div, REs.single.foot,\n REs.single.header, REs.single.bc, REs.single.bq,\n REs.single.notextile, REs.single.pre, REs.single.table,\n REs.single.para);\n\n case \"allAttributes\":\n return REs.choiceRe(REs.attributes.selector, REs.attributes.css,\n REs.attributes.lang, REs.attributes.align, REs.attributes.pad);\n\n default:\n return REs.makeRe(\"^\", REs.single[name]);\n }\n },\n makeRe: function() {\n var pattern = \"\";\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n pattern += (typeof arg === \"string\") ? arg : arg.source;\n }\n return new RegExp(pattern);\n },\n choiceRe: function() {\n var parts = [arguments[0]];\n for (var i = 1; i < arguments.length; ++i) {\n parts[i * 2 - 1] = \"|\";\n parts[i * 2] = arguments[i];\n }\n\n parts.unshift(\"(?:\");\n parts.push(\")\");\n return REs.makeRe.apply(null, parts);\n }\n };\n\n function RE(name) {\n return (REs.cache[name] || (REs.cache[name] = REs.createRe(name)));\n }\n\n var Modes = {\n newLayout: function(stream, state) {\n if (stream.match(RE(\"typeLayout\"), false)) {\n state.spanningLayout = false;\n return (state.mode = Modes.blockType)(stream, state);\n }\n var newMode;\n if (!textileDisabled(state)) {\n if (stream.match(RE(\"listLayout\"), false))\n newMode = Modes.list;\n else if (stream.match(RE(\"drawTable\"), false))\n newMode = Modes.table;\n else if (stream.match(RE(\"linkDefinition\"), false))\n newMode = Modes.linkDefinition;\n else if (stream.match(RE(\"definitionList\")))\n newMode = Modes.definitionList;\n else if (stream.match(RE(\"html\"), false))\n newMode = Modes.html;\n }\n return (state.mode = (newMode || Modes.text))(stream, state);\n },\n\n blockType: function(stream, state) {\n var match, type;\n state.layoutType = null;\n\n if (match = stream.match(RE(\"type\")))\n type = match[0];\n else\n return (state.mode = Modes.text)(stream, state);\n\n if (match = type.match(RE(\"header\"))) {\n state.layoutType = \"header\";\n state.header = parseInt(match[0][1]);\n } else if (type.match(RE(\"bq\"))) {\n state.layoutType = \"quote\";\n } else if (type.match(RE(\"bc\"))) {\n state.layoutType = \"code\";\n } else if (type.match(RE(\"foot\"))) {\n state.layoutType = \"footnote\";\n } else if (type.match(RE(\"notextile\"))) {\n state.layoutType = \"notextile\";\n } else if (type.match(RE(\"pre\"))) {\n state.layoutType = \"pre\";\n } else if (type.match(RE(\"div\"))) {\n state.layoutType = \"div\";\n } else if (type.match(RE(\"table\"))) {\n state.layoutType = \"table\";\n }\n\n state.mode = Modes.attributes;\n return tokenStyles(state);\n },\n\n text: function(stream, state) {\n if (stream.match(RE(\"text\"))) return tokenStyles(state);\n\n var ch = stream.next();\n if (ch === '\"')\n return (state.mode = Modes.link)(stream, state);\n return handlePhraseModifier(stream, state, ch);\n },\n\n attributes: function(stream, state) {\n state.mode = Modes.layoutLength;\n\n if (stream.match(RE(\"attributes\")))\n return tokenStylesWith(state, TOKEN_STYLES.attributes);\n else\n return tokenStyles(state);\n },\n\n layoutLength: function(stream, state) {\n if (stream.eat(\".\") && stream.eat(\".\"))\n state.spanningLayout = true;\n\n state.mode = Modes.text;\n return tokenStyles(state);\n },\n\n list: function(stream, state) {\n var match = stream.match(RE(\"list\"));\n state.listDepth = match[0].length;\n var listMod = (state.listDepth - 1) % 3;\n if (!listMod)\n state.layoutType = \"list1\";\n else if (listMod === 1)\n state.layoutType = \"list2\";\n else\n state.layoutType = \"list3\";\n\n state.mode = Modes.attributes;\n return tokenStyles(state);\n },\n\n link: function(stream, state) {\n state.mode = Modes.text;\n if (stream.match(RE(\"link\"))) {\n stream.match(/\\S+/);\n return tokenStylesWith(state, TOKEN_STYLES.link);\n }\n return tokenStyles(state);\n },\n\n linkDefinition: function(stream, state) {\n stream.skipToEnd();\n return tokenStylesWith(state, TOKEN_STYLES.linkDefinition);\n },\n\n definitionList: function(stream, state) {\n stream.match(RE(\"definitionList\"));\n\n state.layoutType = \"definitionList\";\n\n if (stream.match(/\\s*$/))\n state.spanningLayout = true;\n else\n state.mode = Modes.attributes;\n\n return tokenStyles(state);\n },\n\n html: function(stream, state) {\n stream.skipToEnd();\n return tokenStylesWith(state, TOKEN_STYLES.html);\n },\n\n table: function(stream, state) {\n state.layoutType = \"table\";\n return (state.mode = Modes.tableCell)(stream, state);\n },\n\n tableCell: function(stream, state) {\n if (stream.match(RE(\"tableHeading\")))\n state.tableHeading = true;\n else\n stream.eat(\"|\");\n\n state.mode = Modes.tableCellAttributes;\n return tokenStyles(state);\n },\n\n tableCellAttributes: function(stream, state) {\n state.mode = Modes.tableText;\n\n if (stream.match(RE(\"tableCellAttributes\")))\n return tokenStylesWith(state, TOKEN_STYLES.attributes);\n else\n return tokenStyles(state);\n },\n\n tableText: function(stream, state) {\n if (stream.match(RE(\"tableText\")))\n return tokenStyles(state);\n\n if (stream.peek() === \"|\") { // end of cell\n state.mode = Modes.tableCell;\n return tokenStyles(state);\n }\n return handlePhraseModifier(stream, state, stream.next());\n }\n };\n\n CodeMirror.defineMode(\"textile\", function() {\n return {\n startState: function() {\n return { mode: Modes.newLayout };\n },\n token: function(stream, state) {\n if (stream.sol()) startNewLine(stream, state);\n return state.mode(stream, state);\n },\n blankLine: blankLine\n };\n });\n\n CodeMirror.defineMIME(\"text/x-textile\", \"textile\");\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/mode/textile/textile.js\n// module id = 730\n// module chunks = 3 4 5 7 8 14","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode('shell', function() {\n\n var words = {};\n function define(style, dict) {\n for(var i = 0; i < dict.length; i++) {\n words[dict[i]] = style;\n }\n };\n\n var commonAtoms = [\"true\", \"false\"];\n var commonKeywords = [\"if\", \"then\", \"do\", \"else\", \"elif\", \"while\", \"until\", \"for\", \"in\", \"esac\", \"fi\",\n \"fin\", \"fil\", \"done\", \"exit\", \"set\", \"unset\", \"export\", \"function\"];\n var commonCommands = [\"ab\", \"awk\", \"bash\", \"beep\", \"cat\", \"cc\", \"cd\", \"chown\", \"chmod\", \"chroot\", \"clear\",\n \"cp\", \"curl\", \"cut\", \"diff\", \"echo\", \"find\", \"gawk\", \"gcc\", \"get\", \"git\", \"grep\", \"hg\", \"kill\", \"killall\",\n \"ln\", \"ls\", \"make\", \"mkdir\", \"openssl\", \"mv\", \"nc\", \"nl\", \"node\", \"npm\", \"ping\", \"ps\", \"restart\", \"rm\",\n \"rmdir\", \"sed\", \"service\", \"sh\", \"shopt\", \"shred\", \"source\", \"sort\", \"sleep\", \"ssh\", \"start\", \"stop\",\n \"su\", \"sudo\", \"svn\", \"tee\", \"telnet\", \"top\", \"touch\", \"vi\", \"vim\", \"wall\", \"wc\", \"wget\", \"who\", \"write\",\n \"yes\", \"zsh\"];\n\n CodeMirror.registerHelper(\"hintWords\", \"shell\", commonAtoms.concat(commonKeywords, commonCommands));\n\n define('atom', commonAtoms);\n define('keyword', commonKeywords);\n define('builtin', commonCommands);\n\n function tokenBase(stream, state) {\n if (stream.eatSpace()) return null;\n\n var sol = stream.sol();\n var ch = stream.next();\n\n if (ch === '\\\\') {\n stream.next();\n return null;\n }\n if (ch === '\\'' || ch === '\"' || ch === '`') {\n state.tokens.unshift(tokenString(ch, ch === \"`\" ? \"quote\" : \"string\"));\n return tokenize(stream, state);\n }\n if (ch === '#') {\n if (sol && stream.eat('!')) {\n stream.skipToEnd();\n return 'meta'; // 'comment'?\n }\n stream.skipToEnd();\n return 'comment';\n }\n if (ch === '$') {\n state.tokens.unshift(tokenDollar);\n return tokenize(stream, state);\n }\n if (ch === '+' || ch === '=') {\n return 'operator';\n }\n if (ch === '-') {\n stream.eat('-');\n stream.eatWhile(/\\w/);\n return 'attribute';\n }\n if (/\\d/.test(ch)) {\n stream.eatWhile(/\\d/);\n if(stream.eol() || !/\\w/.test(stream.peek())) {\n return 'number';\n }\n }\n stream.eatWhile(/[\\w-]/);\n var cur = stream.current();\n if (stream.peek() === '=' && /\\w+/.test(cur)) return 'def';\n return words.hasOwnProperty(cur) ? words[cur] : null;\n }\n\n function tokenString(quote, style) {\n var close = quote == \"(\" ? \")\" : quote == \"{\" ? \"}\" : quote\n return function(stream, state) {\n var next, escaped = false;\n while ((next = stream.next()) != null) {\n if (next === close && !escaped) {\n state.tokens.shift();\n break;\n } else if (next === '$' && !escaped && quote !== \"'\" && stream.peek() != close) {\n escaped = true;\n stream.backUp(1);\n state.tokens.unshift(tokenDollar);\n break;\n } else if (!escaped && quote !== close && next === quote) {\n state.tokens.unshift(tokenString(quote, style))\n return tokenize(stream, state)\n } else if (!escaped && /['\"]/.test(next) && !/['\"]/.test(quote)) {\n state.tokens.unshift(tokenStringStart(next, \"string\"));\n stream.backUp(1);\n break;\n }\n escaped = !escaped && next === '\\\\';\n }\n return style;\n };\n };\n\n function tokenStringStart(quote, style) {\n return function(stream, state) {\n state.tokens[0] = tokenString(quote, style)\n stream.next()\n return tokenize(stream, state)\n }\n }\n\n var tokenDollar = function(stream, state) {\n if (state.tokens.length > 1) stream.eat('$');\n var ch = stream.next()\n if (/['\"({]/.test(ch)) {\n state.tokens[0] = tokenString(ch, ch == \"(\" ? \"quote\" : ch == \"{\" ? \"def\" : \"string\");\n return tokenize(stream, state);\n }\n if (!/\\d/.test(ch)) stream.eatWhile(/\\w/);\n state.tokens.shift();\n return 'def';\n };\n\n function tokenize(stream, state) {\n return (state.tokens[0] || tokenBase) (stream, state);\n };\n\n return {\n startState: function() {return {tokens:[]};},\n token: function(stream, state) {\n return tokenize(stream, state);\n },\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n lineComment: '#',\n fold: \"brace\"\n };\n});\n\nCodeMirror.defineMIME('text/x-sh', 'shell');\n// Apache uses a slightly different Media Type for Shell scripts\n// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types\nCodeMirror.defineMIME('application/x-sh', 'shell');\n\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/mode/shell/shell.js\n// module id = 731\n// module chunks = 3 4 5 7 8 14","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-17a2306c\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./email.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./email.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./email.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-17a2306c\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./email.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue\n// module id = 734\n// module chunks = 0 3 4 5 6","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-17a2306c\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./email.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"76c18d50\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-17a2306c\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue\n// module id = 736\n// module chunks = 0 3 4 5 6","exports = module.exports = require(\"../../../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".email-model{width:688px}.email-model .input-element{min-height:32px;padding:1px 8px}.email-model .input-element .tag-wrapper{display:inline-block;height:22px;margin:3px 8px 3px 0;padding:0 10px;background:#ebf8ff;border-radius:2px;cursor:default}.email-model .input-element .tag-wrapper.active{background:#e2eff9}.email-model .input-element .tag-wrapper .tag-text{margin-right:8px;font-size:12px;line-height:22px;color:#666;cursor:text}.email-model .input-element .tag-wrapper .remove-tag{font-size:12px;-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8);color:#666;cursor:pointer}.email-model .input-element .tag-wrapper .remove-tag:hover{color:#000}.email-model .input-element .label-wrapper{margin-left:-6px}.email-model .input-element .label-wrapper input{height:29px;line-height:29px;border:0;padding-left:4px}.email-list-model{margin:-10px -13px}.email-list-model .ans-scroller{width:230px;overflow-y:scroll}.email-list-model .ans-scroller .default-option-class{width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.email-list-model .ans-option .default-option-class.active{background:#ebf8ff}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-17a2306c\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue\n// module id = 737\n// module chunks = 0 3 4 5 6","export default [\"test@analysys.com.cn\"]\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/localData/email.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ans-input email-model\"},[_c('div',{staticClass:\"clearfix input-element\"},[_vm._l((_vm.activeList),function(item,$index){return _c('span',{staticClass:\"tag-wrapper\",class:_vm.activeIndex === $index ? 'active' : ''},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(item))]),_vm._v(\" \"),_c('i',{staticClass:\"remove-tag ans-icon-close\",on:{\"click\":function($event){return _vm._del($index)}}})])}),_vm._v(\" \"),_c('x-poptip',{attrs:{\"placement\":\"bottom-start\",\"append-to-body\":true,\"visible-arrow\":false,\"trigger\":\"manual\"},model:{value:(_vm.isEmail),callback:function ($$v) {_vm.isEmail=$$v},expression:\"isEmail\"}},[_c('div',{staticClass:\"email-list-model\"},[_c('div',{staticClass:\"ans-scroller\",staticStyle:{\"max-height\":\"300px\"}},[_c('div',{staticClass:\"scroll-area-wrapper scroll-transition\"},[_c('ul',{staticClass:\"dropdown-container\"},_vm._l((_vm.emailList),function(item,$index){return _c('li',{staticClass:\"ans-option\",on:{\"click\":function($event){return _vm._selectEmail($index + 1)}}},[_c('span',{staticClass:\"default-option-class\",class:_vm.index === ($index + 1) ? 'active' : ''},[_vm._v(_vm._s(item))])])}),0)])])]),_vm._v(\" \"),_c('span',{staticClass:\"label-wrapper\",attrs:{\"slot\":\"reference\"},slot:\"reference\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.email),expression:\"email\"}],ref:\"emailInput\",staticClass:\"email-input\",style:({width:_vm.emailWidth + 'px'}),attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('请输入邮箱')},domProps:{\"value\":(_vm.email)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm._emailTab($event)},\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"delete\",[8,46],$event.key,[\"Backspace\",\"Delete\",\"Del\"])){ return null; }return _vm._emailDelete($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm._emailEnter($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }return _vm._emailKeyup('up')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }return _vm._emailKeyup('down')}],\"input\":function($event){if($event.target.composing){ return; }_vm.email=$event.target.value}}})])])],2)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-17a2306c\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue\n// module id = 739\n// module chunks = 0 3 4 5 6","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6a4fc01c\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../node_modules/sass-loader/lib/loader.js!../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./priority.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"d5e83532\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-6a4fc01c\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/module/components/priority/priority.vue\n// module id = 740\n// module chunks = 0 3 4 5 6","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".priority-model .ans-option-listp>span{font-weight:400}.priority-model .ans-option-listp>span>.iconfont{padding-right:2px}.priority-model .ans-input .input-element{cursor:pointer;height:32px;line-height:30px;position:relative;font-weight:400}.priority-model .ans-input .input-element .ans-icon-arrow-down{position:absolute;right:8px;top:0;font-size:12px;color:#888;cursor:pointer}.priority-model .ans-input .input-element span{vertical-align:middle}.priority-model .ans-input .input-element span.label-p{margin-top:-4px;display:inline-block}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-6a4fc01c\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/module/components/priority/priority.vue\n// module id = 741\n// module chunks = 0 3 4 5 6","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"priority-model\"},[_c('x-select',{staticStyle:{\"width\":\"130px\"},attrs:{\"disabled\":_vm.isDetails},on:{\"on-change\":_vm._onChange},scopedSlots:_vm._u([{key:\"trigger\",fn:function(ref){\nvar selectedModel = ref.selectedModel;\nreturn _c('div',{staticClass:\"ans-input\"},[_c('div',{staticClass:\"input-element\",class:_vm.isDetails?'disabled' : ''},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm._rtUnicode(selectedModel ? selectedModel.label : 'MEDIUM'))}}),_vm._v(\" \"),_c('span',{staticClass:\"label-p\"},[_vm._v(_vm._s(selectedModel ? selectedModel.label : 'MEDIUM'))]),_vm._v(\" \"),_c('i',{staticClass:\"ans-icon-arrow-down\"})])])}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_vm._v(\" \"),_vm._l((_vm.priorityList),function(item){return _c('x-option',{key:item.code,attrs:{\"value\":item.code,\"label\":item.code}},[_c('li',{staticClass:\"ans-option ans-option-listp\"},[_c('span',{staticClass:\"default-option-class\"},[_c('i',{staticClass:\"iconfont\",style:({color:item.color}),domProps:{\"innerHTML\":_vm._s(item.unicode)}}),_vm._v(\"\\n \"+_vm._s(item.code)+\"\\n \")])])])})],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6a4fc01c\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/module/components/priority/priority.vue\n// module id = 742\n// module chunks = 0 3 4 5 6","<template>\n <div class=\"clearfix dag-model\" >\n <div class=\"toolbar\">\n <div class=\"title\"><span>{{$t('工具栏')}}</span></div>\n <div class=\"toolbar-btn\">\n <div class=\"bar-box roundedRect jtk-draggable jtk-droppable jtk-endpoint-anchor jtk-connected\"\n :class=\"v === dagBarId ? 'active' : ''\"\n :id=\"v\"\n v-for=\"(item,v) in tasksTypeList\"\n @mousedown=\"_getDagId(v)\">\n <div data-toggle=\"tooltip\" :title=\"item.desc\" :class=\"_isDetails\">\n <div class=\"icos\" :class=\"'icos-' + v\" ></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"dag-contect\">\n <div class=\"dag-toolbar\">\n <div class=\"assist-btn\">\n <x-button\n style=\"vertical-align: middle;\"\n data-toggle=\"tooltip\"\n :title=\"$t('查看变量')\"\n data-container=\"body\"\n type=\"primary\"\n size=\"xsmall\"\n :disabled=\"$route.name !== 'projects-instance-details'\"\n @click=\"_toggleView\"\n icon=\"fa fa-code\">\n </x-button>\n <span class=\"name\">{{name}}</span>\n </div>\n <div class=\"save-btn\">\n <div class=\"operation\" style=\"vertical-align: middle;\">\n <a href=\"javascript:\"\n v-for=\"(item,$index) in toolOperList\"\n :class=\"_operationClass(item)\"\n :id=\"item.code\"\n @click=\"_ckOperation(item,$event)\">\n <i class=\"iconfont\" v-html=\"item.icon\" data-toggle=\"tooltip\" :title=\"item.desc\" ></i>\n </a>\n </div>\n <x-button\n data-toggle=\"tooltip\"\n :title=\"$t('刷新DAG状态')\"\n data-container=\"body\"\n style=\"vertical-align: middle;\"\n icon=\"fa fa-refresh\"\n type=\"primary\"\n :loading=\"isRefresh\"\n v-if=\"type === 'instance'\"\n @click=\"!isRefresh && _refresh()\"\n size=\"xsmall\" >\n </x-button>\n <x-button\n v-if=\"isRtTasks\"\n style=\"vertical-align: middle;\"\n type=\"primary\"\n size=\"xsmall\"\n icon=\"fa fa-reply\"\n @click=\"_rtNodesDag\" >\n {{$t('返回上一节点')}}\n </x-button>\n <x-button\n style=\"vertical-align: middle;\"\n type=\"primary\"\n size=\"xsmall\"\n :loading=\"spinnerLoading\"\n v-ps=\"['GENERAL_USER']\"\n @click=\"_saveChart\"\n icon=\"fa fa-save\"\n :disabled=\"isDetails\">\n {{spinnerLoading ? 'Loading...' : $t('保存')}}\n </x-button>\n </div>\n </div>\n <div class=\"scrollbar dag-container\">\n <div class=\"jtk-demo\" id=\"jtk-demo\">\n <div class=\"jtk-demo-canvas canvas-wide statemachine-demo jtk-surface jtk-surface-nopan jtk-draggable\" id=\"canvas\" ></div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import Dag from './dag'\n import mUdp from './udp/udp'\n import i18n from '@/module/i18n'\n import { jsPlumb } from 'jsplumb'\n import { allNodesId } from './plugIn/util'\n import { toolOper, tasksType } from './config'\n import mFormModel from './formModel/formModel'\n import { formatDate } from '@/module/filter/filter'\n import { findComponentDownward } from '@/module/util/'\n import disabledState from '@/module/mixin/disabledState'\n import { mapActions, mapState, mapMutations } from 'vuex'\n\n let eventModel\n\n export default {\n name: 'dag-chart',\n data () {\n return {\n tasksTypeList: tasksType,\n toolOperList: toolOper(this),\n dagBarId: null,\n toolOperCode: '',\n spinnerLoading: false,\n urlParam: {\n id: this.$route.params.id || null\n },\n isRtTasks: false,\n isRefresh: false,\n isLoading: false,\n taskId: null\n }\n },\n mixins: [disabledState],\n props: {\n type: String,\n releaseState: String\n },\n methods: {\n ...mapActions('dag', ['saveDAGchart', 'updateInstance', 'updateDefinition', 'getTaskState']),\n ...mapMutations('dag', ['addTasks', 'resetParams', 'setIsEditDag', 'setName']),\n init () {\n if (this.tasks.length) {\n Dag.backfill()\n // Process instances can view status\n if (this.type === 'instance') {\n this._getTaskState(false).then(res => {})\n // Round robin acquisition status\n this.setIntervalP = setInterval(() => {\n this._getTaskState(true).then(res => {})\n }, 90000)\n }\n } else {\n Dag.create()\n }\n },\n /**\n * Get state interface\n * @param isReset Whether to manually refresh\n */\n _getTaskState (isReset) {\n return new Promise((resolve, reject) => {\n this.getTaskState(this.urlParam.id).then(res => {\n let data = res.list\n let state = res.processInstanceState\n let taskList = res.taskList\n let idArr = allNodesId()\n const titleTpl = (item, desc) => {\n let $item = _.filter(taskList, v => v.name === item.name)[0]\n return `<div style=\"text-align: left\">${i18n.$t('名称')}:${$item.name}</br>${i18n.$t('状态')}:${desc}</br>${i18n.$t('类型')}:${$item.taskType}</br>${i18n.$t('host')}:${$item.host || '-'}</br>${i18n.$t('重试次数')}:${$item.retryTimes}</br>${i18n.$t('提交时间')}:${formatDate($item.submitTime)}</br>${i18n.$t('开始时间')}:${formatDate($item.startTime)}</br>${i18n.$t('结束时间')}:${$item.endTime ? formatDate($item.endTime) : '-'}</br></div>`\n }\n data.forEach(v1 => {\n idArr.forEach(v2 => {\n if (v2.name === v1.name) {\n let dom = $(`#${v2.id}`)\n let state = dom.find('.state-p')\n dom.attr('data-state-id', v1.stateId)\n dom.attr('data-dependent-result', v1.dependentResult || '')\n state.html('')\n state.append(`<b class=\"iconfont ${v1.isSpin ? 'fa fa-spin' : ''}\" style=\"color:${v1.color}\" data-toggle=\"tooltip\" data-html=\"true\" data-container=\"body\">${v1.icoUnicode}</b>`)\n state.find('b').attr('title', titleTpl(v2, v1.desc))\n }\n })\n })\n if (state === 'PAUSE' || state === 'STOP' || state === 'FAILURE' || this.state === 'SUCCESS') {\n // Manual refresh does not regain large json\n if (isReset) {\n findComponentDownward(this.$root, `${this.type}-details`)._reset()\n }\n }\n resolve()\n })\n })\n },\n /**\n * Get the action bar id\n * @param item\n */\n _getDagId (v) {\n if (this.isDetails) {\n return\n }\n this.dagBarId = v\n },\n /**\n * operating\n */\n _ckOperation (item) {\n let is = true\n let code = ''\n\n if (!item.disable) {\n return\n }\n\n if (this.toolOperCode === item.code) {\n this.toolOperCode = ''\n code = item.code\n is = false\n } else {\n this.toolOperCode = item.code\n code = this.toolOperCode\n is = true\n }\n\n // event type\n Dag.toolbarEvent({\n item: item,\n code: code,\n is: is\n })\n },\n _operationClass (item) {\n if (item.disable) {\n return this.toolOperCode === item.code ? 'active' : ''\n } else {\n return 'disable'\n }\n },\n /**\n * Storage interface\n */\n _save (sourceType) {\n return new Promise((resolve, reject) => {\n this.spinnerLoading = true\n // Storage store\n Dag.saveStore().then(res => {\n if (this.urlParam.id) {\n /**\n * 编辑\n * @param saveInstanceEditDAGChart => Process instance editing\n * @param saveEditDAGChart => Process definition editing\n */\n this[this.type === 'instance' ? 'updateInstance' : 'updateDefinition'](this.urlParam.id).then(res => {\n this.$message.success(res.msg)\n this.spinnerLoading = false\n resolve()\n }).catch(e => {\n this.$message.error(e.msg || '')\n this.spinnerLoading = false\n reject(e)\n })\n } else {\n // New\n this.saveDAGchart().then(res => {\n this.$message.success(res.msg)\n this.spinnerLoading = false\n // source @/conf/home/pages/dag/_source/editAffirmModel/index.js\n if (sourceType !== 'affirm') {\n // Jump process definition\n this.$router.push({ name: 'projects-definition-list' })\n }\n resolve()\n }).catch(e => {\n this.$message.error(e.msg || '')\n this.setName('')\n this.spinnerLoading = false\n reject(e)\n })\n }\n })\n })\n },\n /**\n * Global parameter\n * @param Promise\n */\n _udpTopFloorPop () {\n return new Promise((resolve, reject) => {\n let modal = this.$modal.dialog({\n closable: false,\n showMask: true,\n escClose: true,\n className: 'v-modal-custom',\n transitionName: 'opacityp',\n render (h) {\n return h(mUdp, {\n on: {\n onUdp () {\n modal.remove()\n resolve()\n },\n close () {\n modal.remove()\n }\n }\n })\n }\n })\n })\n },\n /**\n * Save chart\n */\n _saveChart () {\n // Verify node\n if (!this.tasks.length) {\n this.$message.warning(`${i18n.$t('未创建节点保存失败')}`)\n return\n }\n\n // Global parameters (optional)\n this._udpTopFloorPop().then(() => {\n return this._save()\n })\n },\n /**\n * Return to the previous child node\n */\n _rtNodesDag () {\n let getIds = this.$route.query.subProcessIds\n let idsArr = getIds.split(',')\n let ids = idsArr.slice(0, idsArr.length - 1)\n let id = idsArr[idsArr.length - 1]\n let query = {}\n\n if (id !== idsArr[0]) {\n query = { subProcessIds: ids.join(',') }\n }\n let $name = this.$route.name.split('-')\n this.$router.push({ path: `/${$name[0]}/${$name[1]}/list/${id}`, query: query })\n },\n /**\n * Subprocess processing\n * @param subProcessId Subprocess ID\n */\n _subProcessHandle (subProcessId) {\n let subProcessIds = []\n let getIds = this.$route.query.subProcessIds\n if (getIds) {\n let newId = getIds.split(',')\n newId.push(this.urlParam.id)\n subProcessIds = newId\n } else {\n subProcessIds.push(this.urlParam.id)\n }\n let $name = this.$route.name.split('-')\n this.$router.push({ path: `/${$name[0]}/${$name[1]}/list/${subProcessId}`, query: { subProcessIds: subProcessIds.join(',') } })\n },\n /**\n * Refresh data\n */\n _refresh () {\n this.isRefresh = true\n this._getTaskState(false).then(res => {\n setTimeout(() => {\n this.isRefresh = false\n this.$message.success(`${i18n.$t('刷新状态成功')}`)\n }, 2200)\n })\n },\n /**\n * View variables\n */\n _toggleView () {\n findComponentDownward(this.$root, `assist-dag-index`)._toggleView()\n },\n /**\n * Create a node popup layer\n * @param Object id\n */\n _createNodes ({ id, type }) {\n let self = this\n\n if (eventModel) {\n eventModel.remove()\n }\n\n const removeNodesEvent = (fromThis) => {\n // Manually destroy events inside the component\n fromThis.$destroy()\n // Close the popup\n eventModel.remove()\n }\n\n this.taskId = id\n\n eventModel = this.$drawer({\n closable: false,\n direction: 'right',\n escClose: true,\n render: h => h(mFormModel, {\n on: {\n addTaskInfo ({ item, fromThis }) {\n self.addTasks(item)\n setTimeout(() => {\n removeNodesEvent(fromThis)\n }, 100)\n },\n close ({ flag, fromThis }) {\n // Edit status does not allow deletion of nodes\n if (flag) {\n jsPlumb.remove(id)\n }\n\n removeNodesEvent(fromThis)\n },\n onSubProcess ({ subProcessId, fromThis }) {\n removeNodesEvent(fromThis)\n self._subProcessHandle(subProcessId)\n }\n },\n props: {\n id: id,\n taskType: type || self.dagBarId,\n self: self\n }\n })\n })\n }\n },\n watch: {\n 'tasks': {\n deep: true,\n handler () {\n console.log('+++++ save dag params +++++')\n // Edit state does not allow deletion of node a...\n this.setIsEditDag(true)\n }\n }\n },\n created () {\n // Edit state does not allow deletion of node a...\n this.setIsEditDag(false)\n\n if (this.$route.query.subProcessIds) {\n this.isRtTasks = true\n }\n\n Dag.init({\n dag: this,\n instance: jsPlumb.getInstance({\n Endpoint: [\n 'Dot', { radius: 1, cssClass: 'dot-style' }\n ],\n Connector: 'Straight',\n PaintStyle: { lineWidth: 2, stroke: '#456' }, // Connection style\n ConnectionOverlays: [\n [\n 'Arrow',\n {\n location: 1,\n id: 'arrow',\n length: 12,\n foldback: 0.8\n }\n ]\n ],\n Container: 'canvas'\n })\n })\n },\n mounted () {\n this.init()\n },\n beforeDestroy () {\n this.resetParams()\n\n // Destroy round robin\n clearInterval(this.setIntervalP)\n },\n destroyed () {\n },\n computed: {\n ...mapState('dag', ['tasks', 'locations', 'connects', 'isEditDag', 'name'])\n },\n components: {}\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n @import \"dag\";\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/dag.vue","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nimport Vue from 'vue'\nimport $ from 'jquery'\nimport _ from 'lodash'\nimport i18n from '@/module/i18n'\nimport { jsPlumb } from 'jsplumb'\nimport DragZoom from './dragZoom'\nimport store from '@/conf/home/store'\nimport router from '@/conf/home/router'\nimport Permissions from '@/module/permissions'\nimport { uuid, findComponentDownward } from '@/module/util/'\nimport {\n tasksAll,\n rtTasksTpl,\n setSvgColor,\n saveTargetarr,\n rtTargetarrArr } from './util'\nimport mStart from '@/conf/home/pages/projects/pages/definition/pages/list/_source/start'\n\nlet JSP = function () {\n this.dag = {}\n this.selectedElement = {}\n\n this.config = {\n // Whether to drag\n isDrag: true,\n // Whether to allow connection\n isAttachment: false,\n // Whether to drag a new node\n isNewNodes: true,\n // Whether to support double-click node events\n isDblclick: true,\n // Whether to support right-click menu events\n isContextmenu: true,\n // Whether to allow click events\n isClick: false\n }\n}\n\n/**\n * dag init\n */\nJSP.prototype.init = function ({ dag, instance }) {\n // Get the dag component instance\n this.dag = dag\n // Get jsplumb instance\n this.JspInstance = instance\n // Register jsplumb connection type and configuration\n this.JspInstance.registerConnectionType('basic', {\n anchor: 'Continuous',\n connector: 'Straight' // Line type\n })\n\n // Initial configuration\n this.setConfig({\n isDrag: !store.state.dag.isDetails,\n isAttachment: false,\n isNewNodes: Permissions.getAuth() === false ? false : !store.state.dag.isDetails,\n isDblclick: true,\n isContextmenu: true,\n isClick: false\n })\n\n // Monitor line click\n this.JspInstance.bind('click', e => {\n if (this.config.isClick) {\n this.connectClick(e)\n }\n })\n\n // Drag and drop\n if (this.config.isNewNodes) {\n DragZoom.init()\n }\n}\n\n/**\n * set config attribute\n */\nJSP.prototype.setConfig = function (o) {\n this.config = Object.assign(this.config, {}, o)\n}\n\n/**\n * Node binding event\n */\nJSP.prototype.tasksEvent = function (selfId) {\n let tasks = $(`#${selfId}`)\n // Bind right event\n tasks.on('contextmenu', e => {\n this.tasksContextmenu(e)\n return false\n })\n\n // Binding double click event\n tasks.find('.icos').bind('dblclick', e => {\n this.tasksDblclick(e)\n })\n\n // Binding click event\n tasks.on('click', e => {\n this.tasksClick(e)\n })\n}\n\n/**\n * Dag node drag and drop processing\n */\nJSP.prototype.draggable = function () {\n if (this.config.isNewNodes) {\n let selfId\n let self = this\n $('.toolbar-btn .roundedRect').draggable({\n scope: 'plant',\n helper: 'clone',\n containment: $('.dag-model'),\n stop: function (e, ui) {\n self.tasksEvent(selfId)\n\n // Dom structure is not generated without pop-up form form\n if ($(`#${selfId}`).html()) {\n // dag event\n findComponentDownward(self.dag.$root, 'dag-chart')._createNodes({\n id: selfId\n })\n }\n },\n drag: function () {\n $('body').find('.tooltip.fade.top.in').remove()\n }\n })\n\n $('#canvas').droppable({\n scope: 'plant',\n drop: function (ev, ui) {\n let id = 'tasks-' + Math.ceil(Math.random() * 100000) // eslint-disable-line\n // Get mouse coordinates\n let left = parseInt(ui.offset.left - $(this).offset().left)\n let top = parseInt(ui.offset.top - $(this).offset().top) - 10\n if (top < 25) {\n top = 25\n }\n // Generate template node\n $('#canvas').append(rtTasksTpl({\n id: id,\n name: id,\n x: left,\n y: top,\n isAttachment: self.config.isAttachment,\n taskType: findComponentDownward(self.dag.$root, 'dag-chart').dagBarId\n }))\n\n // Get the generated node\n let thisDom = jsPlumb.getSelector('.statemachine-demo .w')\n\n // Generating a connection node\n self.JspInstance.batch(() => {\n self.initNode(thisDom[thisDom.length - 1])\n })\n selfId = id\n }\n })\n }\n}\n\n/**\n * Echo json processing and old data structure processing\n */\nJSP.prototype.jsonHandle = function ({ largeJson, locations }) {\n _.map(largeJson, v => {\n // Generate template\n $('#canvas').append(rtTasksTpl({\n id: v.id,\n name: v.name,\n x: locations[v.id]['x'],\n y: locations[v.id]['y'],\n targetarr: locations[v.id]['targetarr'],\n isAttachment: this.config.isAttachment,\n taskType: v.type,\n runFlag:v.runFlag\n }))\n\n // contextmenu event\n $(`#${v.id}`).on('contextmenu', e => {\n this.tasksContextmenu(e)\n return false\n })\n\n // dblclick event\n $(`#${v.id}`).find('.icos').bind('dblclick', e => {\n this.tasksDblclick(e)\n })\n\n // click event\n $(`#${v.id}`).bind('click', e => {\n this.tasksClick(e)\n })\n })\n}\n\n/**\n * Initialize a single node\n */\nJSP.prototype.initNode = function (el) {\n // Whether to drag\n if (this.config.isDrag) {\n this.JspInstance.draggable(el, {\n containment: 'dag-container'\n })\n }\n\n // Node attribute configuration\n this.JspInstance.makeSource(el, {\n filter: '.ep',\n anchor: 'Continuous',\n connectorStyle: {\n stroke: '#555',\n strokeWidth: 2,\n outlineStroke: 'transparent',\n outlineWidth: 4\n },\n // This place is leaking\n // connectionType: \"basic\",\n extract: {\n action: 'the-action'\n },\n maxConnections: -1\n })\n\n // Node connection property configuration\n this.JspInstance.makeTarget(el, {\n dropOptions: { hoverClass: 'dragHover' },\n anchor: 'Continuous',\n allowLoopback: false // Forbid yourself to connect yourself\n })\n this.JspInstance.fire('jsPlumbDemoNodeAdded', el)\n}\n\n/**\n * Node right click menu\n */\nJSP.prototype.tasksContextmenu = function (event) {\n if (this.config.isContextmenu) {\n let routerName = router.history.current.name\n // state\n let isOne = routerName === 'projects-definition-details' && this.dag.releaseState !== 'NOT_RELEASE'\n // hide\n let isTwo = store.state.dag.isDetails\n\n let html = [\n `<a href=\"javascript:\" id=\"startRunning\" class=\"${isOne ? '' : 'disbled'}\"><i class=\"iconfont\">&#xe60b;</i><span>${i18n.$t('开始运行')}</span></a>`,\n `<a href=\"javascript:\" id=\"editNodes\" class=\"${isTwo ? 'disbled' : ''}\"><i class=\"iconfont\">&#xe601;</i><span>${i18n.$t('编辑节点')}</span></a>`,\n `<a href=\"javascript:\" id=\"copyNodes\" class=\"${isTwo ? 'disbled' : ''}\"><i class=\"iconfont\">&#xe61e;</i><span>${i18n.$t('复制节点')}</span></a>`,\n `<a href=\"javascript:\" id=\"removeNodes\" class=\"${isTwo ? 'disbled' : ''}\"><i class=\"iconfont\">&#xe611;</i><span>${i18n.$t('删除节点')}</span></a>`\n ]\n\n let operationHtml = () => {\n return html.splice(',')\n }\n\n let e = event\n let $id = e.currentTarget.id\n let $contextmenu = $('#contextmenu')\n let $name = $(`#${$id}`).find('.name-p').text()\n let $left = e.pageX + document.body.scrollLeft - 5\n let $top = e.pageY + document.body.scrollTop - 5\n $contextmenu.css({\n left: $left,\n top: $top,\n visibility: 'visible'\n })\n // Action bar\n $contextmenu.html('').append(operationHtml)\n\n if (isOne) {\n // start run\n $('#startRunning').on('click', () => {\n let id = router.history.current.params.id\n store.dispatch('dag/getStartCheck', { processDefinitionId: id }).then(res => {\n let modal = Vue.$modal.dialog({\n closable: false,\n showMask: true,\n escClose: true,\n className: 'v-modal-custom',\n transitionName: 'opacityp',\n render (h) {\n return h(mStart, {\n on: {\n onUpdate () {\n modal.remove()\n },\n close () {\n modal.remove()\n }\n },\n props: {\n item: {\n id: id\n },\n startNodeList: $name,\n sourceType: 'contextmenu'\n }\n })\n }\n })\n }).catch(e => {\n Vue.$message.error(e.msg || '')\n })\n })\n }\n if (!isTwo) {\n // edit node\n $(`#editNodes`).click(ev => {\n findComponentDownward(this.dag.$root, 'dag-chart')._createNodes({\n id: $id,\n type: $(`#${$id}`).attr('data-tasks-type')\n })\n })\n // delete node\n $('#removeNodes').click(ev => {\n this.removeNodes($id)\n })\n\n // copy node\n $('#copyNodes').click(res => {\n this.copyNodes($id)\n })\n }\n }\n}\n\n/**\n * Node double click event\n */\nJSP.prototype.tasksDblclick = function (e) {\n // Untie event\n if (this.config.isDblclick) {\n let id = $(e.currentTarget.offsetParent).attr('id')\n\n findComponentDownward(this.dag.$root, 'dag-chart')._createNodes({\n id: id,\n type: $(`#${id}`).attr('data-tasks-type')\n })\n }\n}\n\n/**\n * Node click event\n */\nJSP.prototype.tasksClick = function (e) {\n let $id\n let self = this\n let $body = $(`body`)\n if (this.config.isClick) {\n let $connect = this.selectedElement.connect\n $('.w').removeClass('jtk-tasks-active')\n $(e.currentTarget).addClass('jtk-tasks-active')\n if ($connect) {\n setSvgColor($connect, '#555')\n this.selectedElement.connect = null\n }\n this.selectedElement.id = $(e.currentTarget).attr('id')\n\n // Unbind copy and paste events\n $body.unbind('copy').unbind('paste')\n // Copy binding id\n $id = self.selectedElement.id\n\n $body.bind({\n copy: function () {\n $id = self.selectedElement.id\n },\n paste: function () {\n $id && self.copyNodes($id)\n }\n })\n }\n}\n\n/**\n * Remove binding events\n * paste\n */\nJSP.prototype.removePaste = function () {\n let $body = $(`body`)\n // Unbind copy and paste events\n $body.unbind('copy').unbind('paste')\n // Remove selected node parameters\n this.selectedElement.id = null\n // Remove node selection effect\n $('.w').removeClass('jtk-tasks-active')\n}\n\n/**\n * Line click event\n */\nJSP.prototype.connectClick = function (e) {\n // Set svg color\n setSvgColor(e, '#0097e0')\n let $id = this.selectedElement.id\n if ($id) {\n $(`#${$id}`).removeClass('jtk-tasks-active')\n this.selectedElement.id = null\n }\n this.selectedElement.connect = e\n}\n\n/**\n * toolbarEvent\n * @param {Pointer}\n */\nJSP.prototype.handleEventPointer = function (is) {\n let wDom = $('.w')\n this.setConfig({\n isClick: is,\n isAttachment: false\n })\n wDom.removeClass('jtk-ep')\n if (!is) {\n wDom.removeClass('jtk-tasks-active')\n this.selectedElement = {}\n _.map($('#canvas svg'), v => {\n if ($(v).attr('class')) {\n _.map($(v).find('path'), v1 => {\n $(v1).attr('fill', '#555')\n $(v1).attr('stroke', '#555')\n })\n }\n })\n }\n}\n\n/**\n * toolbarEvent\n * @param {Line}\n */\nJSP.prototype.handleEventLine = function (is) {\n let wDom = $('.w')\n this.setConfig({\n isAttachment: is\n })\n is ? wDom.addClass('jtk-ep') : wDom.removeClass('jtk-ep')\n}\n\n/**\n * toolbarEvent\n * @param {Remove}\n */\nJSP.prototype.handleEventRemove = function () {\n let $id = this.selectedElement.id || null\n let $connect = this.selectedElement.connect || null\n if ($id) {\n this.removeNodes(this.selectedElement.id)\n } else {\n this.removeConnect($connect)\n }\n\n // Monitor whether to edit DAG\n store.commit('dag/setIsEditDag', true)\n}\n\n/**\n * Delete node\n */\nJSP.prototype.removeNodes = function ($id) {\n // Delete node processing(data-targetarr)\n _.map(tasksAll(), v => {\n let targetarr = v.targetarr.split(',')\n if (targetarr.length) {\n let newArr = _.filter(targetarr, v1 => v1 !== $id)\n $(`#${v.id}`).attr('data-targetarr', newArr.toString())\n }\n })\n // delete node\n this.JspInstance.remove($id)\n}\n\n/**\n * Delete connection\n */\nJSP.prototype.removeConnect = function ($connect) {\n if (!$connect) {\n return\n }\n // Remove connections and remove node and node dependencies\n let targetId = $connect.targetId\n let sourceId = $connect.sourceId\n let targetarr = rtTargetarrArr(targetId)\n if (targetarr.length) {\n targetarr = _.filter(targetarr, v => v !== sourceId)\n $(`#${targetId}`).attr('data-targetarr', targetarr.toString())\n }\n this.JspInstance.deleteConnection($connect)\n\n this.selectedElement = {}\n}\n\n/**\n * Copy node\n */\nJSP.prototype.copyNodes = function ($id) {\n let newNodeInfo = _.cloneDeep(_.find(store.state.dag.tasks, v => v.id === $id))\n let newNodePors = store.state.dag.locations[$id]\n // Unstored nodes do not allow replication\n if (!newNodePors) {\n return\n }\n // Generate random id\n let newUuId = `${uuid() + uuid()}`\n let id = newNodeInfo.id.length > 8 ? newNodeInfo.id.substr(0, 7) : newNodeInfo.id\n let name = newNodeInfo.name.length > 8 ? newNodeInfo.name.substr(0, 7) : newNodeInfo.name\n\n // new id\n let newId = `${id || ''}-${newUuId}`\n // new name\n let newName = `${name || ''}-${newUuId}`\n // coordinate x\n let newX = newNodePors.x + 100\n // coordinate y\n let newY = newNodePors.y + 40\n\n // Generate template node\n $('#canvas').append(rtTasksTpl({\n id: newId,\n name: newName,\n x: newX,\n y: newY,\n isAttachment: this.config.isAttachment,\n taskType: newNodeInfo.type\n }))\n\n // Get the generated node\n let thisDom = jsPlumb.getSelector('.statemachine-demo .w')\n\n // Copy node information\n newNodeInfo = Object.assign(newNodeInfo, {\n id: newId,\n name: newName\n })\n\n // Add new node\n store.commit('dag/addTasks', newNodeInfo)\n // Add node location information\n store.commit('dag/setLocations', {\n [newId]: {\n name: newName,\n targetarr: '',\n x: newX,\n y: newY\n }\n })\n\n // Generating a connection node\n this.JspInstance.batch(() => {\n this.initNode(thisDom[thisDom.length - 1])\n // Add events to nodes\n this.tasksEvent(newId)\n })\n}\n/**\n * toolbarEvent\n * @param {Screen}\n */\nJSP.prototype.handleEventScreen = function ({ item, is }) {\n let screenOpen = true\n if (is) {\n item.icon = '&#xe660;'\n screenOpen = true\n } else {\n item.icon = '&#xe6e0;'\n screenOpen = false\n }\n let $mainLayoutModel = $('.main-layout-model')\n if (screenOpen) {\n $mainLayoutModel.addClass('dag-screen')\n } else {\n $mainLayoutModel.removeClass('dag-screen')\n }\n}\n/**\n * save task\n * @param tasks\n * @param locations\n * @param connects\n */\nJSP.prototype.saveStore = function () {\n return new Promise((resolve, reject) => {\n let connects = []\n let locations = {}\n let tasks = []\n\n let is = (id) => {\n return !!_.filter(tasksAll(), v => v.id === id).length\n }\n\n // task\n _.map(_.cloneDeep(store.state.dag.tasks), v => {\n if (is(v.id)) {\n let preTasks = []\n let id = $(`#${v.id}`)\n let tar = id.attr('data-targetarr')\n let idDep = tar ? id.attr('data-targetarr').split(',') : []\n if (idDep.length) {\n _.map(idDep, v1 => {\n preTasks.push($(`#${v1}`).find('.name-p').text())\n })\n }\n\n let tasksParam = _.assign(v, {\n preTasks: preTasks\n })\n\n // Sub-workflow has no retries and interval\n if (v.type === 'SUB_PROCESS') {\n tasksParam = _.omit(tasksParam, ['maxRetryTimes', 'retryInterval'])\n }\n\n tasks.push(tasksParam)\n }\n })\n\n _.map(this.JspInstance.getConnections(), v => {\n connects.push({\n 'endPointSourceId': v.sourceId,\n 'endPointTargetId': v.targetId\n })\n })\n\n _.map(tasksAll(), v => {\n locations[v.id] = {\n name: v.name,\n targetarr: v.targetarr,\n x: v.x,\n y: v.y\n }\n })\n\n // Storage node\n store.commit('dag/setTasks', tasks)\n // Store coordinate information\n store.commit('dag/setLocations', locations)\n // Storage line dependence\n store.commit('dag/setConnects', connects)\n\n resolve({\n connects: connects,\n tasks: tasks,\n locations: locations\n })\n })\n}\n/**\n * Event processing\n */\nJSP.prototype.handleEvent = function () {\n this.JspInstance.bind('beforeDrop', function (info) {\n let sourceId = info['sourceId']// 出\n let targetId = info['targetId']// 入\n\n /**\n * Recursive search for nodes\n */\n let recursiveVal\n const recursiveTargetarr = (arr, targetId) => {\n for (var i in arr) {\n if (arr[i] === targetId) {\n recursiveVal = targetId\n } else {\n let recTargetarrArr = rtTargetarrArr(arr[i])\n if (recTargetarrArr.length) {\n recursiveTargetarr(recTargetarrArr, targetId)\n } else {\n return recursiveTargetarr(targetId)\n }\n }\n }\n return recursiveVal\n }\n\n // Connection to connected nodes is not allowed\n if (_.findIndex(rtTargetarrArr(targetId), v => v === sourceId) !== -1) {\n return false\n }\n\n // Recursive form to find if the target Targetarr has a sourceId\n if (recursiveTargetarr(rtTargetarrArr(sourceId), targetId)) {\n // setRecursiveVal(null)\n return false\n }\n\n // Storage node dependency information\n saveTargetarr(sourceId, targetId)\n\n // Monitor whether to edit DAG\n store.commit('dag/setIsEditDag', true)\n\n return true\n })\n}\n/**\n * Backfill data processing\n */\nJSP.prototype.jspBackfill = function ({ connects, locations, largeJson }) {\n // Backfill nodes\n this.jsonHandle({\n largeJson: largeJson,\n locations: locations\n })\n\n let wNodes = jsPlumb.getSelector('.statemachine-demo .w')\n\n // Backfill line\n this.JspInstance.batch(() => {\n for (let i = 0; i < wNodes.length; i++) {\n this.initNode(wNodes[i])\n }\n _.map(connects, v => {\n let sourceId = v.endPointSourceId.split('-')\n let targetId = v.endPointTargetId.split('-')\n if (sourceId.length === 4 && targetId.length === 4) {\n sourceId = `${sourceId[0]}-${sourceId[1]}-${sourceId[2]}`\n targetId = `${targetId[0]}-${targetId[1]}-${targetId[2]}`\n } else {\n sourceId = v.endPointSourceId\n targetId = v.endPointTargetId\n }\n\n this.JspInstance.connect({\n source: sourceId,\n target: targetId,\n type: 'basic',\n paintStyle: { strokeWidth: 2, stroke: '#555' }\n })\n })\n })\n\n jsPlumb.fire('jsPlumbDemoLoaded', this.JspInstance)\n\n // Connection monitoring\n this.handleEvent()\n\n // Drag and drop new nodes\n this.draggable()\n}\n\nexport default new JSP()\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/conf/home/pages/dag/_source/plugIn/jsPlumbHandle.js","<template>\n <div class=\"udp-model\">\n <div class=\"scrollbar contpi-boxt\">\n <div class=\"title\">\n <span>{{$t('设置DAG图名称')}}</span>\n </div>\n <div>\n <x-input\n type=\"text\"\n v-model=\"name\"\n :disabled=\"router.history.current.name === 'projects-instance-details'\"\n :placeholder=\"$t('请输入name(必填)')\">\n </x-input>\n </div>\n <template v-if=\"router.history.current.name !== 'projects-instance-details'\">\n <div style=\"padding-top: 12px;\">\n <x-input\n type=\"textarea\"\n v-model=\"desc\"\n :autosize=\"{minRows:2}\"\n :placeholder=\"$t('请输入desc(选填)')\"\n autocomplete=\"off\">\n </x-input>\n </div>\n </template>\n <div class=\"title\" style=\"padding-top: 6px;\">\n <span>{{$t('设置全局')}}</span>\n </div>\n <div class=\"content\">\n <div>\n <m-local-params\n ref=\"refLocalParams\"\n @on-local-params=\"_onLocalParams\"\n :udp-list=\"udpList\"\n :hide=\"false\">\n </m-local-params>\n </div>\n </div>\n </div>\n <div class=\"bottom\">\n <div class=\"submit\">\n <template v-if=\"router.history.current.name === 'projects-instance-details'\">\n <div class=\"lint-pt\">\n <x-checkbox v-model=\"syncDefine\">{{$t('是否更新流程定义')}}</x-checkbox>\n </div>\n </template>\n <x-button type=\"text\" @click=\"close()\"> {{$t('取消')}} </x-button>\n <x-button type=\"primary\" shape=\"circle\" @click=\"ok()\" v-ps=\"['GENERAL_USER']\" >{{$t('添加')}}</x-button>\n </div>\n </div>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import mLocalParams from '../formModel/tasks/_source/localParams'\n import disabledState from '@/module/mixin/disabledState'\n import Affirm from '../jumpAffirm'\n\n export default {\n name: 'udp',\n data () {\n return {\n // dag name\n name: '',\n // dag desc\n desc: '',\n // Global custom parameters\n udpList: [],\n // Whether to update the process definition\n syncDefine: true\n }\n },\n mixins: [disabledState],\n props: {\n },\n methods: {\n /**\n * udp data\n */\n _onLocalParams (a) {\n this.udpList = a\n },\n /**\n * submit\n */\n ok () {\n if (!this.name) {\n this.$message.warning(`${i18n.$t('DAG图名称不能为空')}`)\n return\n }\n\n let _verif = () => {\n // verification udf\n if (!this.$refs.refLocalParams._verifProp()) {\n return\n }\n // Storage global globalParams\n this.store.commit('dag/setGlobalParams', _.cloneDeep(this.udpList))\n this.store.commit('dag/setName', _.cloneDeep(this.name))\n this.store.commit('dag/setDesc', _.cloneDeep(this.desc))\n this.store.commit('dag/setSyncDefine', this.syncDefine)\n Affirm.setIsPop(false)\n this.$emit('onUdp')\n }\n\n // Edit => direct storage\n if (this.store.state.dag.name) {\n _verif()\n } else {\n // New First verify that the name exists\n this.store.dispatch('dag/verifDAGName', this.name).then(res => {\n _verif()\n }).catch(e => {\n this.$message.error(e.msg || '')\n })\n }\n },\n /**\n * Close the popup\n */\n close () {\n this.$emit('close')\n }\n },\n watch: {\n },\n created () {\n this.udpList = this.store.state.dag.globalParams\n this.name = this.store.state.dag.name\n this.desc = this.store.state.dag.desc\n this.syncDefine = this.store.state.dag.syncDefine\n },\n mounted () {},\n components: { mLocalParams }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .udp-model {\n width: 616px;\n min-height: 326px;\n background: #fff;\n border-radius: 3px;\n padding:20px 0 ;\n position: relative;\n .contpi-boxt {\n max-height: 600px;\n overflow-y: scroll;\n padding:0 20px;\n }\n .title {\n line-height: 36px;\n padding-bottom: 10px;\n span {\n font-size: 16px;\n color: #333;\n }\n }\n .bottom{\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n text-align: right;\n height: 56px;\n line-height: 56px;\n border-top: 1px solid #DCDEDC;\n background: #fff;\n .submit {\n padding-right: 20px;\n margin-top: -4px;\n }\n .lint-pt {\n position: absolute;\n left: 20px;\n top: -2px;\n >label {\n font-weight: normal;\n }\n }\n }\n .content {\n padding-bottom: 50px;\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/udp/udp.vue","<template>\n <div class=\"user-def-params-model\">\n <div class=\"select-listpp\"\n v-for=\"(item,$index) in localParamsList\"\n :key=\"item.id\"\n @click=\"_getIndex($index)\">\n <x-input\n :disabled=\"isDetails\"\n type=\"text\"\n v-model=\"localParamsList[$index].prop\"\n :placeholder=\"$t('prop(必填)')\"\n maxlength=\"64\"\n @on-blur=\"_verifProp()\"\n style=\"width: 164px;\">\n </x-input>\n <x-select\n style=\"width: 80px;\"\n @change=\"_handleDirectChanged\"\n v-model=\"localParamsList[$index].direct\"\n :disabled=\"isDetails || !hide\">\n <x-option\n v-for=\"city in directList\"\n :key=\"city.code\"\n :value=\"city.code\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n <x-select\n style=\"width: 118px;\"\n @change=\"_handleTypeChanged\"\n v-model=\"localParamsList[$index].type\"\n :disabled=\"isDetails || !hide\">\n <x-option\n v-for=\"city in typeList\"\n :key=\"city.code\"\n :value=\"city.code\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n <x-input\n :disabled=\"isDetails\"\n type=\"text\"\n v-model=\"localParamsList[$index].value\"\n :placeholder=\"$t('value(选填)')\"\n maxlength=\"64\"\n @on-blur=\"_handleValue()\"\n style=\"width: 150px;position: relative;margin-bottom: -2px;\">\n </x-input>\n <span class=\"lt-add\">\n <a href=\"javascript:\" style=\"color:red;\" @click=\"!isDetails && _removeUdp($index)\" >\n <i class=\"iconfont\" :class=\"_isDetails\" data-toggle=\"tooltip\" :title=\"$t('删除')\" >&#xe611;</i>\n </a>\n </span>\n <span class=\"add\" v-if=\"$index === (localParamsList.length - 1)\">\n <a href=\"javascript:\" @click=\"!isDetails && _addUdp()\" >\n <i class=\"iconfont\" :class=\"_isDetails\" data-toggle=\"tooltip\" :title=\"$t('添加')\">&#xe636;</i>\n </a>\n </span>\n </div>\n <span class=\"add\" v-if=\"!localParamsList.length\">\n <a href=\"javascript:\" @click=\"!isDetails && _addUdp()\" >\n <i class=\"iconfont\" :class=\"_isDetails\" data-toggle=\"tooltip\" :title=\"$t('添加')\">&#xe636;</i>\n </a>\n </span>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import { directList, typeList } from './commcon'\n import disabledState from '@/module/mixin/disabledState'\n export default {\n name: 'user-def-params',\n data () {\n return {\n // Direct data Custom parameter type support IN\n directList: directList,\n // Type data Custom parameter type support OUT\n typeList: typeList,\n // Increased data\n localParamsList: [],\n // Current execution index\n localParamsIndex: null\n }\n },\n mixins: [disabledState],\n props: {\n udpList: Array,\n // hide direct/type\n hide: {\n type: Boolean,\n default: true\n }\n },\n methods: {\n /**\n * Current index\n */\n _getIndex (index) {\n this.localParamsIndex = index\n },\n /**\n * handle direct\n */\n _handleDirectChanged () {\n this._verifProp('value')\n },\n /**\n * handle type\n */\n _handleTypeChanged () {\n this._verifProp('value')\n },\n /**\n * delete item\n */\n _removeUdp (index) {\n this.localParamsList.splice(index, 1)\n this._verifProp('value')\n },\n /**\n * add\n */\n _addUdp () {\n this.localParamsList.push({\n prop: '',\n direct: 'IN',\n type: 'VARCHAR',\n value: ''\n })\n },\n /**\n * blur verification\n */\n _handleValue () {\n this._verifProp('value')\n },\n /**\n * Verify that the value exists or is empty\n */\n _verifProp (type) {\n let arr = []\n let flag = true\n _.map(this.localParamsList, v => {\n arr.push(v.prop)\n if (!v.prop) {\n flag = false\n }\n })\n if (!flag) {\n if (!type) {\n this.$message.warning(`${i18n.$t('prop不能为空')}`)\n }\n return false\n }\n let newArr = _.cloneDeep(_.uniqWith(arr, _.isEqual))\n if (newArr.length !== arr.length) {\n if (!type) {\n this.$message.warning(`${i18n.$t('prop中有重复')}`)\n }\n return false\n }\n this.$emit('on-local-params', _.cloneDeep(this.localParamsList))\n return true\n }\n },\n watch: {\n // Monitor data changes\n udpList () {\n this.localParamsList = this.udpList\n }\n },\n created () {\n this.localParamsList = this.udpList\n },\n mounted () {\n },\n components: { }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .user-def-params-model {\n .select-listpp {\n margin-bottom: 6px;\n .lt-add {\n padding-left: 4px;\n a {\n .iconfont {\n font-size: 18px;\n vertical-align: middle;\n margin-bottom: -2px;\n display: inline-block;\n }\n }\n }\n }\n .add {\n a {\n .iconfont {\n font-size: 18px;\n vertical-align: middle;\n display: inline-block;\n margin-top: 1px;\n }\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue","\nimport Vue from 'vue'\nimport mAffirm from './jumpAffirm'\nimport store from '@/conf/home/store'\nimport router from '@/conf/home/router'\nimport { uuid, findComponentDownward } from '@/module/util/'\n\nlet Affirm = {}\nlet $root = {}\nlet $routerType = ''\nlet $isPop = true\n\n/**\n * Listen for route changes\n */\nrouter.beforeEach((to, from, next) => {\n if (from.name === 'projects-definition-details' || from.name === 'projects-instance-details' || from.name === 'definition-create') {\n if (!Affirm.paramVerification(from.name)) {\n Affirm.isPop(() => {\n next()\n })\n } else {\n next()\n }\n } else {\n next()\n }\n})\n\n/**\n * Get judgment initialization data\n */\nAffirm.init = (root) => {\n $isPop = true\n $root = root\n $routerType = router.history.current.name\n}\n\n/**\n * Parameter verification\n */\nAffirm.paramVerification = (name) => {\n if (!$isPop) {\n return true\n }\n let dagStore = store.state.dag\n let flag = false\n if ($routerType === 'definition-create') {\n // No nodes jump out directly\n if (dagStore.tasks.length) {\n if (!dagStore.name) {\n store.commit('dag/setName', `${uuid('dag_')}${uuid() + uuid()}`)\n }\n flag = false\n } else {\n flag = true\n }\n } else {\n // View history direct jump\n flag = name === 'projects-instance-details' ? true : !dagStore.isEditDag\n }\n return flag\n}\n\n/**\n * Pop-up judgment\n */\nAffirm.isPop = (fn) => {\n Vue.$modal.dialog({\n closable: false,\n showMask: true,\n escClose: true,\n className: 'v-modal-custom',\n transitionName: 'opacityp',\n render (h) {\n return h(mAffirm, {\n on: {\n ok () {\n // save\n findComponentDownward($root, 'dag-chart')._save('affirm').then(() => {\n fn()\n Vue.$modal.destroy()\n }).catch(() => {\n fn()\n Vue.$modal.destroy()\n })\n },\n close () {\n fn()\n Vue.$modal.destroy()\n }\n },\n props: {\n }\n })\n }\n })\n}\n\n/**\n * Whether the external setting pops up\n */\nAffirm.setIsPop = (is) => {\n $isPop = is\n}\n\nexport default Affirm\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/conf/home/pages/dag/_source/jumpAffirm/index.js","<template>\n <div class=\"affirm-model\">\n <m-popup :ok-text=\"$t('确认保存')\"\n :nameText=\"$t('是否保存DAG图')\"\n @close=\"_close\"\n @ok=\"_ok\">\n </m-popup>\n </div>\n</template>\n<script>\n import mPopup from '@/module/components/popup/popup'\n\n export default {\n name: 'affirm',\n methods: {\n _ok () {\n this.$emit('ok')\n },\n _close () {\n this.$emit('close')\n }\n },\n components: { mPopup }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .affirm-model {\n .popup-model {\n .top-p {\n height: 50px;\n }\n .content-p {\n min-height: 0px;\n min-width: 250px;\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/jumpAffirm/jumpAffirm.vue","<template>\n <div class=\"form-model-model\" v-clickoutside=\"_handleClose\">\n <div class=\"title-box\">\n <span class=\"name\">{{$t('当前节点设置')}}</span>\n <span class=\"go-subtask\">\n <!-- Component can't pop up box to do component processing -->\n <m-log :item=\"backfillItem\">\n <template slot=\"history\"><a href=\"javascript:\" @click=\"_seeHistory\" ><i class=\"iconfont\">&#xe6ee;</i><em>{{$t('查看历史')}}</em></a></template>\n <template slot=\"log\"><a href=\"javascript:\"><i class=\"iconfont\">&#xe691;</i><em>{{$t('查看日志')}}</em></a></template>\n </m-log>\n <a href=\"javascript:\" @click=\"_goSubProcess\" v-if=\"_isGoSubProcess\"><i class=\"iconfont\">&#xe600;</i><em>{{$t('进入该子节点')}}</em></a>\n </span>\n </div>\n <div class=\"content-box\" v-if=\"isContentBox\">\n <div class=\"from-model\">\n\n <!-- Node name -->\n <div class=\"clearfix list\">\n <div class=\"text-box\"><span>{{$t('节点名称')}}</span></div>\n <div class=\"cont-box\">\n <label class=\"label-box\">\n <x-input\n type=\"text\"\n v-model=\"name\"\n :disabled=\"isDetails\"\n :placeholder=\"$t('请输入name(必填)')\"\n maxlength=\"100\"\n @on-blur=\"_verifName()\"\n autocomplete=\"off\">\n </x-input>\n </label>\n </div>\n </div>\n\n <!-- Running sign -->\n <div class=\"clearfix list\">\n <div class=\"text-box\"><span>{{$t('运行标志')}}</span></div>\n <div class=\"cont-box\">\n <label class=\"label-box\">\n <x-radio-group v-model=\"runFlag\" >\n <x-radio :label=\"'NORMAL'\" :disabled=\"isDetails\">{{$t('正常')}}</x-radio>\n <x-radio :label=\"'FORBIDDEN'\" :disabled=\"isDetails\">{{$t('禁止执行')}}</x-radio>\n </x-radio-group>\n </label>\n </div>\n </div>\n\n <!-- desc -->\n <div class=\"clearfix list\">\n <div class=\"text-box\">\n <span>{{$t('描述')}}</span>\n </div>\n <div class=\"cont-box\">\n\n <label class=\"label-box\">\n <x-input\n resize\n :autosize=\"{minRows:2}\"\n type=\"textarea\"\n :disabled=\"isDetails\"\n v-model=\"desc\"\n :placeholder=\"$t('请输入desc')\"\n autocomplete=\"off\">\n </x-input>\n </label>\n </div>\n </div>\n\n <!-- Task priority -->\n <div class=\"clearfix list\">\n <div class=\"text-box\">\n <span>{{$t('任务优先级')}}</span>\n </div>\n <div class=\"cont-box\">\n <label class=\"label-box\">\n <m-priority v-model=\"taskInstancePriority\" style=\"width: 180px;\"></m-priority>\n </label>\n </div>\n </div>\n\n <!-- Number of failed retries -->\n <div class=\"clearfix list\" v-if=\"taskType !== 'SUB_PROCESS'\">\n <div class=\"text-box\">\n <span>{{$t('失败重试次数')}}</span>\n </div>\n <div class=\"cont-box\">\n <m-select-input v-model=\"maxRetryTimes\" :list=\"[0,1,2,3,4]\">\n </m-select-input>\n <span>({{$t('次')}})</span>\n <span class=\"text-b\">{{$t('失败重试间隔')}}</span>\n <m-select-input v-model=\"retryInterval\" :list=\"[1,10,30,60,120]\">\n </m-select-input>\n <span>({{$t('分')}})</span>\n </div>\n </div>\n\n <!-- Task timeout alarm -->\n <m-timeout-alarm\n ref=\"timeout\"\n :backfill-item=\"backfillItem\"\n @on-timeout=\"_onTimeout\">\n </m-timeout-alarm>\n\n <!-- shell node -->\n <m-shell\n v-if=\"taskType === 'SHELL'\"\n @on-params=\"_onParams\"\n ref=\"SHELL\"\n :backfill-item=\"backfillItem\">\n </m-shell>\n <!-- sub_process node -->\n <m-sub-process\n v-if=\"taskType === 'SUB_PROCESS'\"\n @on-params=\"_onParams\"\n @on-set-process-name=\"_onSetProcessName\"\n ref=\"SUB_PROCESS\"\n :backfill-item=\"backfillItem\">\n </m-sub-process>\n <!-- procedure node -->\n <m-procedure\n v-if=\"taskType === 'PROCEDURE'\"\n @on-params=\"_onParams\"\n ref=\"PROCEDURE\"\n :backfill-item=\"backfillItem\">\n </m-procedure>\n <!-- sql node -->\n <m-sql\n v-if=\"taskType === 'SQL'\"\n @on-params=\"_onParams\"\n ref=\"SQL\"\n :backfill-item=\"backfillItem\">\n </m-sql>\n <!-- spark node -->\n <m-spark\n v-if=\"taskType === 'SPARK'\"\n @on-params=\"_onParams\"\n ref=\"SPARK\"\n :backfill-item=\"backfillItem\">\n </m-spark>\n <!-- mr node -->\n <m-mr\n v-if=\"taskType === 'MR'\"\n @on-params=\"_onParams\"\n ref=\"MR\"\n :backfill-item=\"backfillItem\">\n </m-mr>\n <!-- python node -->\n <m-python\n v-if=\"taskType === 'PYTHON'\"\n @on-params=\"_onParams\"\n ref=\"PYTHON\"\n :backfill-item=\"backfillItem\">\n </m-python>\n <!-- dependent node -->\n <m-dependent\n v-if=\"taskType === 'DEPENDENT'\"\n @on-dependent=\"_onDependent\"\n ref=\"DEPENDENT\"\n :backfill-item=\"backfillItem\">\n </m-dependent>\n\n </div>\n </div>\n <div class=\"bottom-box\">\n <div class=\"submit\" style=\"background: #fff;\">\n <x-button type=\"text\" @click=\"close()\"> {{$t('取消')}} </x-button>\n <x-button type=\"primary\" shape=\"circle\" :loading=\"spinnerLoading\" @click=\"ok()\" :disabled=\"isDetails\" v-ps=\"['GENERAL_USER']\">{{spinnerLoading ? 'Loading...' : $t('确认添加')}} </x-button>\n </div>\n </div>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import mLog from './log'\n import mMr from './tasks/mr'\n import mSql from './tasks/sql'\n import i18n from '@/module/i18n'\n import mShell from './tasks/shell'\n import mSpark from './tasks/spark'\n import mPython from './tasks/python'\n import { isNameExDag,rtBantpl } from './../plugIn/util'\n import JSP from './../plugIn/jsPlumbHandle'\n import mProcedure from './tasks/procedure'\n import mDependent from './tasks/dependent'\n import mSubProcess from './tasks/sub_process'\n import mSelectInput from './_source/selectInput'\n import mTimeoutAlarm from './_source/timeoutAlarm'\n import clickoutside from '@/module/util/clickoutside'\n import disabledState from '@/module/mixin/disabledState'\n import mPriority from '@/module/components/priority/priority'\n\n export default {\n name: 'form-model',\n data () {\n return {\n // loading\n spinnerLoading: false,\n // node name\n name: ``,\n // desc\n desc: '',\n // Node echo data\n backfillItem: {},\n // Resource(list)\n resourcesList: [],\n // dependence\n dependence: {},\n // Current node params data\n params: {},\n // Running sign\n runFlag: 'NORMAL',\n // The second echo problem caused by the node data is specifically which node hook caused the unfinished special treatment\n isContentBox: false,\n // Number of failed retries\n maxRetryTimes: '0',\n // Failure retry interval\n retryInterval: '1',\n // Task timeout alarm\n timeout: {},\n // Task priority\n taskInstancePriority: 'MEDIUM'\n }\n },\n /**\n * Click on events that are not generated internally by the component\n */\n directives: { clickoutside },\n mixins: [disabledState],\n props: {\n id: Number,\n taskType: String,\n self: Object\n },\n methods: {\n /**\n * depend\n */\n _onDependent (o) {\n this.dependence = Object.assign(this.dependence, {}, o)\n },\n /**\n * Task timeout alarm\n */\n _onTimeout (o) {\n this.timeout = Object.assign(this.timeout, {}, o)\n },\n /**\n * Click external to close the current component\n */\n _handleClose () {\n this.close()\n },\n /**\n * Jump to task instance\n */\n _seeHistory () {\n this.self.$router.push({\n name: 'task-instance-list',\n query: {\n processInstanceId: this.self.$route.params.id,\n taskName: this.backfillItem.name\n }\n })\n this.$modal.destroy()\n },\n /**\n * Enter the child node to judge the process instance or the process definition\n * @param type = instance\n */\n _goSubProcess () {\n if (_.isEmpty(this.backfillItem)) {\n this.$message.warning(`${i18n.$t('新创建子工作流还未执行,不能进入子工作流')}`)\n return\n }\n if (this.router.history.current.name === 'projects-instance-details') {\n let stateId = $(`#${this.id}`).attr('data-state-id') || null\n if (!stateId) {\n this.$message.warning(`${i18n.$t('该任务还未执行,不能进入子工作流')}`)\n return\n }\n this.store.dispatch('dag/getSubProcessId', { taskId: stateId }).then(res => {\n this.$emit('onSubProcess', {\n subProcessId: res.data.subProcessInstanceId,\n fromThis: this\n })\n }).catch(e => {\n this.$message.error(e.msg || '')\n })\n } else {\n this.$emit('onSubProcess', {\n subProcessId: this.backfillItem.params.processDefinitionId,\n fromThis: this\n })\n }\n },\n /**\n * return params\n */\n _onParams (o) {\n this.params = Object.assign(this.params, {}, o)\n },\n /**\n * verification name\n */\n _verifName () {\n if (!_.trim(this.name)) {\n this.$message.warning(`${i18n.$t('请输入名称(必填)')}`)\n return false\n }\n if (this.name === this.backfillItem.name) {\n return true\n }\n // Name repeat depends on dom backfill dependent store\n if (isNameExDag(this.name, _.isEmpty(this.backfillItem) ? 'dom' : 'backfill')) {\n this.$message.warning(`${i18n.$t('名称已存在请重新输入')}`)\n return false\n }\n return true\n },\n /**\n * Global verification procedure\n */\n _verification () {\n // Verify name\n if (!this._verifName()) {\n return\n }\n // Verify task alarm parameters\n if (!this.$refs['timeout']._verification()) {\n return\n }\n // Verify node parameters\n if (!this.$refs[this.taskType]._verification()) {\n return\n }\n\n $(`#${this.id}`).find('span').text(this.name)\n\n // Store the corresponding node data structure\n this.$emit('addTaskInfo', {\n item: {\n type: this.taskType,\n id: this.id,\n name: this.name,\n params: this.params,\n desc: this.desc,\n runFlag: this.runFlag,\n dependence: this.dependence,\n maxRetryTimes: this.maxRetryTimes,\n retryInterval: this.retryInterval,\n timeout: this.timeout,\n taskInstancePriority: this.taskInstancePriority\n },\n fromThis: this\n })\n },\n /**\n * Sub-workflow selected node echo name\n */\n _onSetProcessName (name) {\n this.name = name\n },\n /**\n * Submit verification\n */\n ok () {\n this._verification()\n },\n /**\n * Close and destroy component and component internal events\n */\n close () {\n let flag = false\n // Delete node without storage\n if (!this.backfillItem.name) {\n flag = true\n }\n this.isContentBox = false\n // flag Whether to delete a node this.$destroy()\n this.$emit('close', {\n flag: flag,\n fromThis: this\n })\n }\n },\n watch: {\n runFlag(val){\n let dom = $(`#${this.id}`).find('.ban-p')\n dom.html('')\n if (val === 'FORBIDDEN') {\n dom.append(rtBantpl())\n }\n }\n },\n created () {\n // Unbind copy and paste events\n JSP.removePaste()\n // Backfill data\n let taskList = this.store.state.dag.tasks\n let o = {}\n if (taskList.length) {\n taskList.forEach(v => {\n if (v.id === this.id) {\n o = v\n this.backfillItem = v\n }\n })\n // Non-null objects represent backfill\n if (!_.isEmpty(o)) {\n this.name = o.name\n this.taskInstancePriority = o.taskInstancePriority\n this.runFlag = o.runFlag || 'NORMAL'\n this.desc = o.desc\n this.maxRetryTimes = o.maxRetryTimes\n this.retryInterval = o.retryInterval\n }\n }\n this.isContentBox = true\n },\n mounted () {},\n updated () {\n },\n beforeDestroy () {\n },\n destroyed () {\n },\n computed: {\n /**\n * Child workflow entry show/hide\n */\n _isGoSubProcess () {\n return this.taskType === 'SUB_PROCESS' && this.name\n }\n },\n components: {\n mMr,\n mShell,\n mSubProcess,\n mProcedure,\n mSql,\n mLog,\n mSpark,\n mPython,\n mDependent,\n mSelectInput,\n mTimeoutAlarm,\n mPriority\n }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .form-model-model {\n width: 720px;\n position: relative;\n .title-box {\n height: 61px;\n border-bottom: 1px solid #DCDEDC;\n position: relative;\n .name {\n position: absolute;\n left: 24px;\n top: 18px;\n font-size: 16px;\n }\n .go-subtask {\n position: absolute;\n right: 30px;\n top: 17px;\n a {\n font-size: 14px;\n color: #0097e0;\n margin-left: 10px;\n i.iconfont {\n font-size: 18px;\n vertical-align: middle;\n }\n em {\n color: #333;\n vertical-align: middle;\n font-style: normal;\n vertical-align: middle;\n padding-left: 2px;\n }\n &:hover {\n em {\n text-decoration: underline;\n }\n }\n }\n }\n }\n .bottom-box {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n text-align: right;\n height: 60px;\n line-height: 60px;\n border-top: 1px solid #DCDEDC;\n background: #fff;\n .submit {\n padding-right: 20px;\n position: relative;\n z-index: 9;\n }\n }\n .content-box {\n overflow-y: scroll;\n height: calc(100vh - 61px);\n padding-bottom: 60px;\n }\n }\n .from-model {\n padding-top: 26px;\n >div {\n clear: both;\n }\n .list {\n position: relative;\n margin-bottom: 10px;\n .text-box {\n width: 110px;\n float: left;\n text-align: right;\n margin-right: 10px;\n >span {\n font-size: 14px;\n color: #777;\n display: inline-block;\n padding-top: 6px;\n }\n }\n .cont-box {\n width: 580px;\n float: left;\n .label-box {\n width: 100%;\n }\n .text-b {\n font-size: 14px;\n color: #777;\n display: inline-block;\n padding:0 6px 0 20px;\n }\n }\n .add {\n line-height: 32px;\n a {\n color: #0097e0;\n }\n }\n &:hover {\n }\n .list-t {\n width: 50%;\n float: left;\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/formModel.vue","<template>\n <div class=\"spark-model\">\n <m-list-box>\n <div slot=\"text\">{{$t('程序类型')}}</div>\n <div slot=\"content\">\n <x-select v-model=\"programType\" :disabled=\"isDetails\" style=\"width: 100px;\">\n <x-option\n v-for=\"city in programTypeList\"\n :key=\"city.code\"\n :value=\"city.code\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n </m-list-box>\n <m-list-box v-if=\"programType !== 'PYTHON'\">\n <div slot=\"text\">{{$t('主函数的class')}}</div>\n <div slot=\"content\">\n <x-input\n :disabled=\"isDetails\"\n type=\"input\"\n v-model=\"mainClass\"\n :placeholder=\"$t('请输入mainClass')\"\n autocomplete=\"off\">\n </x-input>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('主jar包')}}</div>\n <div slot=\"content\">\n <x-select\n style=\"width: 100%;\"\n :placeholder=\"$t('请选择主jar包')\"\n v-model=\"mainJar\"\n filterable\n :disabled=\"isDetails\">\n <x-option\n v-for=\"city in mainJarList\"\n :key=\"city.code\"\n :value=\"city.code\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('命令行参数')}}</div>\n <div slot=\"content\">\n <x-input\n :autosize=\"{minRows:2}\"\n :disabled=\"isDetails\"\n type=\"textarea\"\n v-model=\"mainArgs\"\n :placeholder=\"$t('请输入命令行参数')\"\n autocomplete=\"off\">\n </x-input>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('其他参数')}}</div>\n <div slot=\"content\">\n <x-input\n :disabled=\"isDetails\"\n :autosize=\"{minRows:2}\"\n type=\"textarea\"\n v-model=\"others\"\n :placeholder=\"$t('请输入其他参数')\"\n autocomplete=\"off\">\n </x-input>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('资源')}}</div>\n <div slot=\"content\">\n <m-resources\n ref=\"refResources\"\n @on-resourcesData=\"_onResourcesData\"\n :resource-list=\"resourceList\">\n </m-resources>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('自定义参数')}}</div>\n <div slot=\"content\">\n <m-local-params\n ref=\"refLocalParams\"\n @on-local-params=\"_onLocalParams\"\n :udp-list=\"localParams\"\n :hide=\"false\">\n </m-local-params>\n </div>\n </m-list-box>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import mListBox from './_source/listBox'\n import mResources from './_source/resources'\n import mLocalParams from './_source/localParams'\n import disabledState from '@/module/mixin/disabledState'\n export default {\n name: 'mr',\n data () {\n return {\n // Main function class\n mainClass: '',\n // Master jar package\n mainJar: null,\n // Main jar package (List)\n mainJarList: [],\n // Resource(list)\n resourceList: [],\n // Custom parameter\n localParams: [],\n // Command line argument\n mainArgs: '',\n // Other parameters\n others: '',\n // Program type\n programType: 'JAVA',\n // Program type(List)\n programTypeList: [{ code: 'JAVA' }, { code: 'PYTHON' }]\n }\n },\n props: {\n backfillItem: Object\n },\n mixins: [disabledState],\n methods: {\n /**\n * return localParams\n */\n _onLocalParams (a) {\n this.localParams = a\n },\n /**\n * return resourceList\n */\n _onResourcesData (a) {\n this.resourceList = a\n },\n /**\n * verification\n */\n _verification () {\n if (this.programType !== 'PYTHON' && !this.mainClass) {\n this.$message.warning(`${i18n.$t('请填写主函数的class')}`)\n return false\n }\n\n if (!this.mainJar) {\n this.$message.warning(`${i18n.$t('请选择主jar包')}`)\n return false\n }\n\n if (!this.$refs.refResources._verifResources()) {\n return false\n }\n\n // localParams Subcomponent verification\n if (!this.$refs.refLocalParams._verifProp()) {\n return false\n }\n\n // storage\n this.$emit('on-params', {\n mainClass: this.mainClass,\n mainJar: {\n res: this.mainJar\n },\n resourceList: this.resourceList,\n localParams: this.localParams,\n mainArgs: this.mainArgs,\n others: this.others,\n programType: this.programType\n })\n return true\n },\n /**\n * Get resource data\n */\n _getResourcesList () {\n return new Promise((resolve, reject) => {\n let isJar = (alias) => {\n return alias.substring(alias.lastIndexOf('.') + 1, alias.length) !== 'jar'\n }\n this.mainJarList = _.map(_.cloneDeep(this.store.state.dag.resourcesListS), v => {\n return {\n id: v.id,\n code: v.alias,\n disabled: isJar(v.alias)\n }\n })\n resolve()\n })\n }\n },\n watch: {\n /**\n * monitor\n */\n programType (type) {\n if (type === 'PYTHON') {\n this.mainClass = ''\n }\n }\n },\n created () {\n this._getResourcesList().then(() => {\n let o = this.backfillItem\n\n // Non-null objects represent backfill\n if (!_.isEmpty(o)) {\n this.mainClass = o.params.mainClass || ''\n this.mainJar = o.params.mainJar.res || ''\n this.mainArgs = o.params.mainArgs || ''\n this.others = o.params.others\n this.programType = o.params.programType || 'JAVA'\n\n // backfill resourceList\n let resourceList = o.params.resourceList || []\n if (resourceList.length) {\n this.resourceList = resourceList\n }\n\n // backfill localParams\n let localParams = o.params.localParams || []\n if (localParams.length) {\n this.localParams = localParams\n }\n }\n })\n },\n mounted () {\n\n },\n components: { mLocalParams, mListBox, mResources }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .spark-model {\n .list-box-4p {\n .list {\n margin-bottom: 14px;\n .sp1 {\n float: left;\n width: 112px;\n text-align: right;\n margin-right: 10px;\n font-size: 14px;\n color: #777;\n display: inline-block;\n padding-top: 6px;\n }\n .sp2 {\n float: left;\n margin-right: 4px;\n }\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue","<template>\n <div class=\"clearfix list\">\n <div class=\"text-box\">\n <span><slot name=\"text\"></slot></span>\n </div>\n <div class=\"cont-box\">\n <div class=\"label-box\">\n <slot name=\"content\"></slot>\n </div>\n </div>\n </div>\n</template>\n<script>\n export default {\n name: 'list-box'\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .cont-box {\n .label-box {\n .ans-radio-group {\n margin-top: 7px;\n }\n }\n }\n\n .v-checkbox-wrapper {\n &.v-checkbox-wrapper-disabled {\n color: #999 ;\n .v-checkbox {\n .v-checkbox-inner{\n border-color:#dddee1;\n background: #f7f7f7;\n color: #bbbec4 ;\n &:after{\n border: 2px solid #ddd;\n border-top: 0;\n border-left: 0;\n }\n }\n }\n }\n }\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/_source/listBox.vue","<template>\n <div class=\"resource-list-model\">\n <x-select multiple\n v-model=\"value\"\n filterable\n :disabled=\"isDetails\"\n :placeholder=\"$t('请选择资源')\"\n style=\"width: 100%;\">\n <x-option\n v-for=\"city in resList\"\n :key=\"city.code\"\n :value=\"city.code\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import disabledState from '@/module/mixin/disabledState'\n\n export default {\n name: 'resourceList',\n data () {\n return {\n // Resource(List)\n resList: [],\n // Resource\n value: []\n }\n },\n mixins: [disabledState],\n props: {\n resourceList: Array\n },\n methods: {\n /**\n * Verify data source\n */\n _verifResources () {\n this.$emit('on-resourcesData', _.map(this.value, v => {\n return {\n res: v\n }\n }))\n return true\n }\n },\n watch: {\n // Listening data source\n resourceList (a) {\n this.value = _.map(_.cloneDeep(a), v => v.res)\n }\n },\n created () {\n this.resList = _.map(_.cloneDeep(this.store.state.dag.resourcesListS), v => {\n return {\n code: v.alias\n }\n })\n\n if (this.resourceList.length) {\n this.value = _.map(_.cloneDeep(this.resourceList), v => v.res)\n }\n },\n mounted () {\n\n },\n components: { }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .resource-list-model {\n .select-listpp {\n margin-bottom: 6px;\n .lt-add {\n padding-left: 4px;\n a {\n .iconfont {\n font-size: 18px;\n vertical-align: middle;\n margin-bottom: -2px;\n display: inline-block;\n }\n }\n }\n }\n >.add {\n a {\n .iconfont {\n font-size: 18px;\n vertical-align: middle;\n display: inline-block;\n margin-top: 1px;\n }\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue","<template>\n <div class=\"sql-model\">\n <m-list-box>\n <div slot=\"text\">{{$t('数据源')}}</div>\n <div slot=\"content\">\n <m-datasource\n ref=\"refDs\"\n @on-dsData=\"_onDsData\"\n :data=\"{ type:type,datasource:datasource }\">\n </m-datasource>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('sql类型')}}</div>\n <div slot=\"content\">\n <div style=\"display: inline-block;\">\n <m-sql-type\n @on-sqlType=\"_onSqlType\"\n :sql-type=\"sqlType\">\n </m-sql-type>\n </div>\n <div v-if=\"!sqlType\" style=\"display: inline-block;padding-left: 10px;margin-top: 2px;\">\n <x-checkbox-group v-model=\"showType\">\n <x-checkbox :label=\"'TABLE'\" :disabled=\"isDetails\">{{$t('表格')}}</x-checkbox>\n <x-checkbox :label=\"'ATTACHMENT'\" :disabled=\"isDetails\">{{$t('附件')}}</x-checkbox>\n </x-checkbox-group>\n </div>\n </div>\n </m-list-box>\n <m-list-box v-show=\"type === 'HIVE'\">\n <div slot=\"text\">{{$t('sql参数')}}</div>\n <div slot=\"content\">\n <x-input\n :disabled=\"isDetails\"\n type=\"input\"\n v-model=\"connParams\"\n :placeholder=\"$t('请输入格式为') + ' key1=value1;key2=value2...'\"\n autocomplete=\"off\">\n </x-input>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('sql语句')}}</div>\n <div slot=\"content\">\n <div class=\"from-mirror\">\n <textarea\n id=\"code-sql-mirror\"\n name=\"code-sql-mirror\"\n style=\"opacity: 0;\">\n </textarea>\n </div>\n </div>\n </m-list-box>\n <m-list-box v-if=\"type === 'HIVE'\">\n <div slot=\"text\">{{$t('UDF函数')}}</div>\n <div slot=\"content\">\n <m-udfs\n ref=\"refUdfs\"\n @on-udfsData=\"_onUdfsData\"\n :udfs=\"udfs\"\n :type=\"type\">\n </m-udfs>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('自定义参数')}}</div>\n <div slot=\"content\">\n <m-local-params\n ref=\"refLocalParams\"\n @on-udpData=\"_onUdpData\"\n :udp-list=\"localParams\">\n </m-local-params>\n </div>\n </m-list-box>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import mUdfs from './_source/udfs'\n import mListBox from './_source/listBox'\n import mSqlType from './_source/sqlType'\n import mDatasource from './_source/datasource'\n import mLocalParams from './_source/localParams'\n import disabledState from '@/module/mixin/disabledState'\n import codemirror from '@/conf/home/pages/resource/pages/file/pages/_source/codemirror'\n\n let editor\n\n export default {\n name: 'sql',\n data () {\n return {\n // Data source type\n type: '',\n // data source\n datasource: '',\n // Return to the selected data source\n rtDatasource: '',\n // Sql statement\n sql: '',\n // Custom parameter\n localParams: [],\n // UDF function\n udfs: '',\n // Sql type\n sqlType: 0,\n // Form/attachment\n showType: ['TABLE'],\n // Sql parameter\n connParams: ''\n }\n },\n mixins: [disabledState],\n props: {\n backfillItem: Object\n },\n methods: {\n /**\n * return sqlType\n */\n _onSqlType (a) {\n this.sqlType = a\n },\n /**\n * return udfs\n */\n _onUdfsData (a) {\n this.udfs = a\n },\n /**\n * return Custom parameter\n */\n _onUdpData (a) {\n this.localParams = a\n },\n /**\n * return data source\n */\n _onDsData (o) {\n this.type = o.type\n this.rtDatasource = o.datasource\n },\n /**\n * verification\n */\n _verification () {\n if (!editor.getValue()) {\n this.$message.warning(`${i18n.$t('请输入sql语句(必填)')}`)\n return false\n }\n\n // datasource Subcomponent verification\n if (!this.$refs.refDs._verifDatasource()) {\n return false\n }\n\n // udfs Subcomponent verification Verification only if the data type is HIVE\n if (this.type === 'HIVE') {\n if (!this.$refs.refUdfs._verifUdfs()) {\n return false\n }\n }\n\n // localParams Subcomponent verification\n if (!this.$refs.refLocalParams._verifProp()) {\n return false\n }\n\n // storage\n this.$emit('on-params', {\n type: this.type,\n datasource: this.rtDatasource,\n sql: editor.getValue(),\n udfs: this.udfs,\n sqlType: this.sqlType,\n showType: (() => {\n /**\n * Special processing return order TABLE,ATTACHMENT\n * Handling checkout sequence\n */\n let showType = this.showType\n if (showType.length === 2 && showType[0] === 'ATTACHMENT') {\n return [showType[1], showType[0]].join(',')\n } else {\n return showType.join(',')\n }\n })(),\n localParams: this.localParams,\n connParams: this.connParams\n })\n return true\n },\n /**\n * Processing code highlighting\n */\n _handlerEditor () {\n // editor\n editor = codemirror('code-sql-mirror', {\n mode: 'sql',\n readOnly: this.isDetails\n })\n\n this.keypress = () => {\n if (!editor.getOption('readOnly')) {\n editor.showHint({\n completeSingle: false\n })\n }\n }\n\n // Monitor keyboard\n editor.on('keypress', this.keypress)\n\n editor.setValue(this.sql)\n\n return editor\n }\n },\n watch: {\n // Listening to sqlType\n sqlType (val) {\n if (val) {\n this.showType = []\n }\n },\n // Listening data source\n type (val) {\n if (val !== 'HIVE') {\n this.connParams = ''\n }\n }\n },\n created () {\n let o = this.backfillItem\n\n // Non-null objects represent backfill\n if (!_.isEmpty(o)) {\n // backfill\n this.type = o.params.type || ''\n this.datasource = o.params.datasource || ''\n this.sql = o.params.sql || ''\n this.udfs = o.params.udfs || ''\n this.sqlType = o.params.sqlType\n this.connParams = o.params.connParams || ''\n this.localParams = o.params.localParams || []\n this.showType = o.params.showType.split(',') || []\n }\n },\n mounted () {\n setTimeout(() => {\n this._handlerEditor()\n }, 200)\n },\n destroyed () {\n /**\n * Destroy the editor instance\n */\n if (editor) {\n editor.toTextArea() // Uninstall\n editor.off($('.code-sql-mirror'), 'keypress', this.keypress)\n }\n },\n computed: {},\n components: { mListBox, mDatasource, mLocalParams, mUdfs, mSqlType }\n }\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue","<template>\n <div class=\"udfs-model\">\n <x-select multiple\n v-model=\"udfsStr\"\n :disabled=\"isDetails\"\n style=\"width: 100%;\">\n <x-option\n v-for=\"city in udfsList\"\n :key=\"city.id\"\n :value=\"city\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import disabledState from '@/module/mixin/disabledState'\n\n export default {\n name: 'udfs',\n data () {\n return {\n // UDFS Function\n udfsStr: [],\n // UDFS Function(List)\n udfsList: []\n }\n },\n mixins: [disabledState],\n props: {\n udfs: String,\n type: String\n },\n methods: {\n /**\n * verification\n */\n _verifUdfs () {\n this.$emit('on-udfsData', _.map(this.udfsStr, v => v.id).join(','))\n return true\n },\n /**\n * Get UDFS function data\n */\n _getUdfList () {\n this.udfsList = []\n this.store.dispatch('dag/getUdfList', { type: this.type }).then(res => {\n this.udfsList = _.map(res.data, v => {\n return {\n id: v.id,\n code: v.funcName\n }\n })\n\n let udfs = _.cloneDeep(this.udfs.split(','))\n if (udfs.length) {\n let arr = []\n _.map(udfs, v => {\n _.map(this.udfsList, v1 => {\n if (parseInt(v) === v1.id) {\n arr.push(v1)\n }\n })\n })\n this.$nextTick(() => {\n this.udfsStr = arr\n })\n }\n })\n }\n },\n watch: {\n type (a) {\n // The props parameter needs to be changed due to the scene.\n this.udfs = ''\n if (a === 'HIVE') {\n this._getUdfList()\n } else {\n this.udfsList = []\n }\n }\n },\n created () {\n this._getUdfList()\n },\n mounted () {\n }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .udfs-model {\n .add-udfs {\n color: #0097e0;\n }\n .t-list {\n margin-bottom: 14px;\n .v-btn {\n width: 208px;\n }\n &:hover {\n }\n .delect-btn {\n display: inline-block;\n width: 54px !important;\n vertical-align: middle;\n background: #ff0000;\n border-color: #ff0000;\n span {\n vertical-align: middle !important;\n }\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue","<template>\n <div class=\"sql-type-model\">\n <x-select\n v-model=\"sqlTypeId\"\n :disabled=\"isDetails\"\n @on-change=\"_handleSqlTypeChanged\"\n style=\"width: 90px;\">\n <x-option\n v-for=\"city in sqlTypeList\"\n :key=\"city.id\"\n :value=\"city\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import { sqlTypeList } from './commcon'\n import disabledState from '@/module/mixin/disabledState'\n export default {\n name: 'sql-type',\n data () {\n return {\n // sql(List)\n sqlTypeList: sqlTypeList,\n // sql\n sqlTypeId: {}\n }\n },\n mixins: [disabledState],\n props: {\n sqlType: Number\n },\n methods: {\n /**\n * return sqlType\n */\n _handleSqlTypeChanged (val) {\n this.$emit('on-sqlType', val.value.id)\n }\n },\n watch: {\n },\n created () {\n this.$nextTick(() => {\n if (this.sqlType !== null) {\n this.sqlTypeId = _.filter(this.sqlTypeList, v => v.id === this.sqlType)[0]\n } else {\n this.sqlTypeId = this.sqlTypeList[0]\n }\n })\n },\n mounted () {\n }\n }\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/_source/sqlType.vue","var normalizeComponent = require(\"!../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./datasource.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./datasource.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-62aa87e3\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./datasource.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/datasource.vue\n// module id = 786\n// module chunks = 3 4 5","<template>\n <div class=\"datasource-model\">\n <div class=\"select-listpp\">\n <x-select v-model=\"type\"\n style=\"width: 160px;\"\n @on-change=\"_handleTypeChanged\"\n :disabled=\"isDetails\">\n <x-option\n v-for=\"city in typeList\"\n :key=\"city.code\"\n :value=\"city.code\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n <x-select :placeholder=\"$t('请选择数据源')\"\n v-model=\"datasource\"\n style=\"width: 288px;\"\n :disabled=\"isDetails\">\n <x-option\n v-for=\"city in datasourceList\"\n :key=\"city.id\"\n :value=\"city\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import disabledState from '@/module/mixin/disabledState'\n\n export default {\n name: 'datasource',\n data () {\n return {\n // Data source type\n type: '',\n // Data source type(List)\n typeList: [],\n // data source\n datasource: {},\n // data source(List)\n datasourceList: []\n }\n },\n mixins: [disabledState],\n props: {\n data: Object,\n supportType: Array\n },\n methods: {\n /**\n * Verify data source\n */\n _verifDatasource () {\n if (!this.datasource) {\n this.$message.warning(`${i18n.$t('请选择数据源')}`)\n return false\n }\n this.$emit('on-dsData', {\n type: this.type,\n datasource: this.datasource.id\n })\n return true\n },\n /**\n * Get the corresponding datasource data according to type\n */\n _getDatasourceData () {\n return new Promise((resolve, reject) => {\n this.store.dispatch('dag/getDatasourceList', this.type).then(res => {\n this.datasourceList = _.map(res.data, v => {\n return {\n id: v.id,\n code: v.name,\n disabled: false\n }\n })\n resolve()\n })\n })\n },\n /**\n * Brush type\n */\n _handleTypeChanged ({ value }) {\n this.type = value\n this._getDatasourceData().then(res => {\n this.datasource = this.datasourceList.length && this.datasourceList[0] || {}\n this.$emit('on-dsData', {\n type: this.type,\n datasource: this.datasource.id\n })\n })\n }\n },\n watch: {},\n created () {\n let supportType = this.supportType || []\n this.typeList = _.cloneDeep(this.store.state.dag.dsTypeListS)\n // Have a specified data source\n if (supportType.length) {\n let is = (type) => {\n return !!_.filter(supportType, v => v === type).length\n }\n this.typeList = _.filter(this.typeList, v => is(v.code))\n }\n\n this.type = _.cloneDeep(this.data.type) || this.typeList[0].code\n // init data\n this._getDatasourceData().then(res => {\n if (_.isEmpty(this.data)) {\n this.$nextTick(() => {\n this.datasource = this.datasourceList[0]\n })\n } else {\n this.$nextTick(() => {\n this.datasource = _.filter(this.datasourceList, v => v.id === this.data.datasource)[0]\n })\n }\n this.$emit('on-dsData', {\n type: this.type\n })\n })\n },\n mounted () {\n\n },\n components: { }\n }\n</script>\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/_source/datasource.vue","<template>\n <div class=\"shell-model\">\n <m-list-box>\n <div slot=\"text\">{{$t('脚本')}}</div>\n <div slot=\"content\">\n <div class=\"from-mirror\">\n <textarea\n id=\"code-shell-mirror\"\n name=\"code-shell-mirror\"\n style=\"opacity: 0\">\n </textarea>\n </div>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('资源')}}</div>\n <div slot=\"content\">\n <m-resources\n ref=\"refResources\"\n @on-resourcesData=\"_onResourcesData\"\n :resource-list=\"resourceList\">\n </m-resources>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('自定义参数')}}</div>\n <div slot=\"content\">\n <m-local-params\n ref=\"refLocalParams\"\n @on-local-params=\"_onLocalParams\"\n :udp-list=\"localParams\"\n :hide=\"false\">\n </m-local-params>\n </div>\n </m-list-box>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import mListBox from './_source/listBox'\n import mResources from './_source/resources'\n import mLocalParams from './_source/localParams'\n import disabledState from '@/module/mixin/disabledState'\n import codemirror from '@/conf/home/pages/resource/pages/file/pages/_source/codemirror'\n\n let editor\n\n export default {\n name: 'shell',\n data () {\n return {\n // script\n rawScript: '',\n // Custom parameter\n localParams: [],\n // resource(list)\n resourceList: []\n }\n },\n mixins: [disabledState],\n props: {\n backfillItem: Object\n },\n methods: {\n /**\n * return localParams\n */\n _onLocalParams (a) {\n this.localParams = a\n },\n /**\n * return resourceList\n */\n _onResourcesData (a) {\n this.resourceList = a\n },\n /**\n * verification\n */\n _verification () {\n // rawScript verification\n if (!editor.getValue()) {\n this.$message.warning(`${i18n.$t('请输入rawScript(必填)')}`)\n return false\n }\n\n if (!this.$refs.refResources._verifResources()) {\n return false\n }\n\n // localParams Subcomponent verification\n if (!this.$refs.refLocalParams._verifProp()) {\n return false\n }\n\n // storage\n this.$emit('on-params', {\n resourceList: this.resourceList,\n localParams: this.localParams,\n rawScript: editor.getValue()\n })\n return true\n },\n /**\n * Processing code highlighting\n */\n _handlerEditor () {\n // editor\n editor = codemirror('code-shell-mirror', {\n mode: 'shell',\n readOnly: this.isDetails\n })\n\n this.keypress = () => {\n if (!editor.getOption('readOnly')) {\n editor.showHint({\n completeSingle: false\n })\n }\n }\n\n // Monitor keyboard\n editor.on('keypress', this.keypress)\n\n editor.setValue(this.rawScript)\n\n return editor\n }\n },\n watch: {},\n created () {\n let o = this.backfillItem\n\n // Non-null objects represent backfill\n if (!_.isEmpty(o)) {\n this.rawScript = o.params.rawScript\n\n // backfill resourceList\n let resourceList = o.params.resourceList || []\n if (resourceList.length) {\n this.resourceList = resourceList\n }\n\n // backfill localParams\n let localParams = o.params.localParams || []\n if (localParams.length) {\n this.localParams = localParams\n }\n }\n },\n mounted () {\n setTimeout(() => {\n this._handlerEditor()\n }, 200)\n },\n destroyed () {\n if (editor) {\n editor.toTextArea() // Uninstall\n editor.off($('.code-shell-mirror'), 'keypress', this.keypress)\n }\n },\n components: { mLocalParams, mListBox, mResources }\n }\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue","<template>\n <div class=\"spark-model\">\n <m-list-box>\n <div slot=\"text\">{{$t('程序类型')}}</div>\n <div slot=\"content\">\n <x-select\n style=\"width: 130px;\"\n v-model=\"programType\"\n :disabled=\"isDetails\">\n <x-option\n v-for=\"city in programTypeList\"\n :key=\"city.code\"\n :value=\"city.code\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n </m-list-box>\n <m-list-box v-if=\"programType !== 'PYTHON'\">\n <div slot=\"text\">{{$t('主函数的class')}}</div>\n <div slot=\"content\">\n <x-input\n :disabled=\"isDetails\"\n type=\"input\"\n v-model=\"mainClass\"\n :placeholder=\"$t('请输入mainClass')\"\n autocomplete=\"off\">\n </x-input>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('主jar包')}}</div>\n <div slot=\"content\">\n <x-select\n style=\"width: 100%;\"\n :placeholder=\"$t('请选择主jar包')\"\n v-model=\"mainJar\"\n filterable\n :disabled=\"isDetails\">\n <x-option\n v-for=\"city in mainJarList\"\n :key=\"city.code\"\n :value=\"city.code\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('部署方式')}}</div>\n <div slot=\"content\">\n <x-radio-group v-model=\"deployMode\">\n <x-radio :label=\"'cluster'\" :disabled=\"isDetails\"></x-radio>\n <x-radio :label=\"'client'\" :disabled=\"isDetails\"></x-radio>\n <x-radio :label=\"'local'\" :disabled=\"isDetails\"></x-radio>\n </x-radio-group>\n </div>\n </m-list-box>\n <div class=\"list-box-4p\">\n <div class=\"clearfix list\">\n <span class=\"sp1\">{{$t('Driver内核数')}}</span>\n <span class=\"sp2\">\n <x-input\n :disabled=\"isDetails\"\n type=\"input\"\n v-model=\"driverCores\"\n :placeholder=\"$t('请输入Driver内核数')\"\n style=\"width: 200px;\"\n autocomplete=\"off\">\n </x-input>\n </span>\n <span class=\"sp1 sp3\">{{$t('Driver内存数')}}</span>\n <span class=\"sp2\">\n <x-input\n :disabled=\"isDetails\"\n type=\"input\"\n v-model=\"driverMemory\"\n :placeholder=\"$t('请输入Driver内存数')\"\n style=\"width: 186px;\"\n autocomplete=\"off\">\n </x-input>\n </span>\n </div>\n <div class=\"clearfix list\">\n <span class=\"sp1\">{{$t('Executor数量')}}</span>\n <span class=\"sp2\">\n <x-input\n :disabled=\"isDetails\"\n type=\"input\"\n v-model=\"numExecutors\"\n :placeholder=\"$t('请输入Executor数量')\"\n style=\"width: 200px;\"\n autocomplete=\"off\">\n </x-input>\n </span>\n <span class=\"sp1 sp3\">{{$t('Executor内存数')}}</span>\n <span class=\"sp2\">\n <x-input\n :disabled=\"isDetails\"\n type=\"input\"\n v-model=\"executorMemory\"\n :placeholder=\"$t('请输入Executor内存数')\"\n style=\"width: 186px;\"\n autocomplete=\"off\">\n </x-input>\n </span>\n </div>\n <div class=\"clearfix list\">\n <span class=\"sp1\">{{$t('Executor内核数')}}</span>\n <span class=\"sp2\">\n <x-input\n :disabled=\"isDetails\"\n type=\"input\"\n v-model=\"executorCores\"\n :placeholder=\"$t('请输入Executor内核数')\"\n style=\"width: 200px;\"\n autocomplete=\"off\">\n </x-input>\n </span>\n </div>\n </div>\n <m-list-box>\n <div slot=\"text\">{{$t('命令行参数')}}</div>\n <div slot=\"content\">\n <x-input\n :autosize=\"{minRows:2}\"\n :disabled=\"isDetails\"\n type=\"textarea\"\n v-model=\"mainArgs\"\n :placeholder=\"$t('请输入命令行参数')\"\n autocomplete=\"off\">\n </x-input>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('其他参数')}}</div>\n <div slot=\"content\">\n <x-input\n :disabled=\"isDetails\"\n :autosize=\"{minRows:2}\"\n type=\"textarea\"\n v-model=\"others\"\n :placeholder=\"$t('请输入其他参数')\">\n </x-input>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('资源')}}</div>\n <div slot=\"content\">\n <m-resources\n ref=\"refResources\"\n @on-resourcesData=\"_onResourcesData\"\n :resource-list=\"resourceList\">\n </m-resources>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('自定义参数')}}</div>\n <div slot=\"content\">\n <m-local-params\n ref=\"refLocalParams\"\n @on-local-params=\"_onLocalParams\"\n :udp-list=\"localParams\"\n :hide=\"false\">\n </m-local-params>\n </div>\n </m-list-box>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import mLocalParams from './_source/localParams'\n import mListBox from './_source/listBox'\n import mResources from './_source/resources'\n import disabledState from '@/module/mixin/disabledState'\n\n export default {\n name: 'spark',\n data () {\n return {\n // Main function class\n mainClass: '',\n // Master jar package\n mainJar: null,\n // Master jar package(List)\n mainJarList: [],\n // Deployment method\n deployMode: 'cluster',\n // Resource(list)\n resourceList: [],\n // Custom function\n localParams: [],\n // Driver Number of cores\n driverCores: 1,\n // Driver Number of memory\n driverMemory: '512M',\n // Executor Number\n numExecutors: 2,\n // Executor Number of memory\n executorMemory: '2G',\n // Executor Number of cores\n executorCores: 2,\n // Command line argument\n mainArgs: '',\n // Other parameters\n others: '',\n // Program type\n programType: 'SCALA',\n // Program type(List)\n programTypeList: [{ code: 'JAVA' }, { code: 'SCALA' }, { code: 'PYTHON' }]\n }\n },\n props: {\n backfillItem: Object\n },\n mixins: [disabledState],\n methods: {\n /**\n * return localParams\n */\n _onLocalParams (a) {\n this.localParams = a\n },\n /**\n * return resourceList\n */\n _onResourcesData (a) {\n this.resourceList = a\n },\n /**\n * verification\n */\n _verification () {\n if (this.programType !== 'PYTHON' && !this.mainClass) {\n this.$message.warning(`${i18n.$t('请填写主函数的class')}`)\n return false\n }\n\n if (!this.mainJar) {\n this.$message.warning(`${i18n.$t('请选择主jar包')}`)\n return false\n }\n\n if (!this.numExecutors) {\n this.$message.warning(`${i18n.$t('请填写Executor数量')}`)\n return false\n }\n\n if (!Number.isInteger(parseInt(this.numExecutors))) {\n this.$message.warning(`${i18n.$t('Executor数量为正整数')}`)\n return false\n }\n\n if (!this.executorMemory) {\n this.$message.warning(`${i18n.$t('请填写Executor内存数')}`)\n return false\n }\n\n if (!this.executorMemory) {\n this.$message.warning(`${i18n.$t('请填写Executor内存数')}`)\n return false\n }\n\n if (!_.isNumber(parseInt(this.executorMemory))) {\n this.$message.warning(`${i18n.$t('内存数为数字')}`)\n return false\n }\n\n if (!this.executorCores) {\n this.$message.warning(`${i18n.$t('请填写Executor内核数')}`)\n return false\n }\n\n if (!Number.isInteger(parseInt(this.executorCores))) {\n this.$message.warning(`${i18n.$t('内核数为正整数')}`)\n return false\n }\n\n if (!this.$refs.refResources._verifResources()) {\n return false\n }\n\n // localParams Subcomponent verification\n if (!this.$refs.refLocalParams._verifProp()) {\n return false\n }\n\n // storage\n this.$emit('on-params', {\n mainClass: this.mainClass,\n mainJar: {\n res: this.mainJar\n },\n deployMode: this.deployMode,\n resourceList: this.resourceList,\n localParams: this.localParams,\n driverCores: this.driverCores,\n driverMemory: this.driverMemory,\n numExecutors: this.numExecutors,\n executorMemory: this.executorMemory,\n executorCores: this.executorCores,\n mainArgs: this.mainArgs,\n others: this.others,\n programType: this.programType\n })\n return true\n },\n /**\n * get resources list\n */\n _getResourcesList () {\n return new Promise((resolve, reject) => {\n let isJar = (alias) => {\n return alias.substring(alias.lastIndexOf('.') + 1, alias.length) !== 'jar'\n }\n this.mainJarList = _.map(_.cloneDeep(this.store.state.dag.resourcesListS), v => {\n return {\n id: v.id,\n code: v.alias,\n disabled: isJar(v.alias)\n }\n })\n resolve()\n })\n }\n },\n watch: {\n // Listening type\n programType (type) {\n if (type === 'PYTHON') {\n this.mainClass = ''\n }\n }\n },\n created () {\n this._getResourcesList().then(() => {\n let o = this.backfillItem\n\n // Non-null objects represent backfill\n if (!_.isEmpty(o)) {\n this.mainClass = o.params.mainClass || ''\n this.mainJar = o.params.mainJar.res || ''\n this.deployMode = o.params.deployMode || ''\n this.driverCores = o.params.driverCores || 1\n this.driverMemory = o.params.driverMemory || '512M'\n this.numExecutors = o.params.numExecutors || 2\n this.executorMemory = o.params.executorMemory || '2G'\n this.executorCores = o.params.executorCores || 2\n this.mainArgs = o.params.mainArgs || ''\n this.others = o.params.others\n this.programType = o.params.programType || 'SCALA'\n\n // backfill resourceList\n let resourceList = o.params.resourceList || []\n if (resourceList.length) {\n this.resourceList = resourceList\n }\n\n // backfill localParams\n let localParams = o.params.localParams || []\n if (localParams.length) {\n this.localParams = localParams\n }\n }\n })\n },\n mounted () {\n\n },\n components: { mLocalParams, mListBox, mResources }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .spark-model {\n .list-box-4p {\n .list {\n margin-bottom: 14px;\n .sp1 {\n float: left;\n width: 112px;\n text-align: right;\n margin-right: 10px;\n font-size: 14px;\n color: #777;\n display: inline-block;\n padding-top: 6px;\n }\n .sp2 {\n float: left;\n margin-right: 4px;\n }\n .sp3 {\n width: 176px;\n }\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue","<template>\n <div class=\"shell-model\">\n <m-list-box>\n <div slot=\"text\">{{$t('脚本')}}</div>\n <div slot=\"content\">\n <div class=\"from-mirror\">\n <textarea id=\"code-python-mirror\" name=\"code-python-mirror\" style=\"opacity: 0;\">\n </textarea>\n </div>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('资源')}}</div>\n <div slot=\"content\">\n <m-resources\n ref=\"refResources\"\n @on-resourcesData=\"_onResourcesData\"\n :resource-list=\"resourceList\">\n </m-resources>\n </div>\n </m-list-box>\n\n <m-list-box>\n <div slot=\"text\">{{$t('自定义参数')}}</div>\n <div slot=\"content\">\n <m-local-params\n ref=\"refLocalParams\"\n @on-local-params=\"_onLocalParams\"\n :udp-list=\"localParams\"\n :hide=\"false\">\n </m-local-params>\n </div>\n </m-list-box>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import mListBox from './_source/listBox'\n import mResources from './_source/resources'\n import mLocalParams from './_source/localParams'\n import disabledState from '@/module/mixin/disabledState'\n import codemirror from '@/conf/home/pages/resource/pages/file/pages/_source/codemirror'\n\n let editor\n\n export default {\n name: 'python',\n data () {\n return {\n // script\n rawScript: '',\n // Custom parameter\n localParams: [],\n // resource(list)\n resourceList: []\n }\n },\n mixins: [disabledState],\n props: {\n backfillItem: Object\n },\n methods: {\n /**\n * return localParams\n */\n _onLocalParams (a) {\n this.localParams = a\n },\n /**\n * return resourceList\n */\n _onResourcesData (a) {\n this.resourceList = a\n },\n /**\n * verification\n */\n _verification () {\n // rawScript 验证\n if (!editor.getValue()) {\n this.$message.warning(`${i18n.$t('请输入rawScript(必填)')}`)\n return false\n }\n\n if (!this.$refs.refResources._verifResources()) {\n return false\n }\n\n // localParams Subcomponent verification\n if (!this.$refs.refLocalParams._verifProp()) {\n return false\n }\n\n // storage\n this.$emit('on-params', {\n resourceList: this.resourceList,\n localParams: this.localParams,\n rawScript: editor.getValue()\n })\n return true\n },\n /**\n * Processing code highlighting\n */\n _handlerEditor () {\n // editor\n editor = codemirror('code-python-mirror', {\n mode: 'python',\n readOnly: this.isDetails\n })\n\n this.keypress = () => {\n if (!editor.getOption('readOnly')) {\n editor.showHint({\n completeSingle: false\n })\n }\n }\n\n // Monitor keyboard\n editor.on('keypress', this.keypress)\n\n editor.setValue(this.rawScript)\n\n return editor\n }\n },\n watch: {},\n created () {\n let o = this.backfillItem\n\n // Non-null objects represent backfill\n if (!_.isEmpty(o)) {\n this.rawScript = o.params.rawScript\n\n // backfill resourceList\n let resourceList = o.params.resourceList || []\n if (resourceList.length) {\n this.resourceList = resourceList\n }\n\n // backfill localParams\n let localParams = o.params.localParams || []\n if (localParams.length) {\n this.localParams = localParams\n }\n }\n },\n mounted () {\n setTimeout(() => {\n this._handlerEditor()\n }, 200)\n },\n destroyed () {\n editor.toTextArea() // Uninstall\n editor.off($('.code-python-mirror'), 'keypress', this.keypress)\n },\n components: { mLocalParams, mListBox, mResources }\n }\n</script>\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue","<template>\n <div class=\"procedure-model\">\n <m-list-box>\n <div slot=\"text\">{{$t('数据源')}}</div>\n <div slot=\"content\">\n <m-datasource\n ref=\"refDs\"\n @on-dsData=\"_onDsData\"\n :supportType=\"['MYSQL','POSTGRESQL']\"\n :data=\"{ type:type,datasource:datasource }\">\n </m-datasource>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('方法')}}</div>\n <div slot=\"content\">\n <x-input\n type=\"input\"\n :disabled=\"isDetails\"\n v-model=\"method\"\n :placeholder=\"$t('请输入method(选填)')\"\n autocomplete=\"off\">\n </x-input>\n </div>\n </m-list-box>\n <m-list-box>\n <div slot=\"text\">{{$t('自定义参数')}}</div>\n <div slot=\"content\">\n <m-local-params\n ref=\"refLocalParams\"\n @on-local-params=\"_onLocalParams\"\n :udp-list=\"localParams\">\n </m-local-params>\n </div>\n </m-list-box>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import mListBox from './_source/listBox'\n import mDatasource from './_source/datasource'\n import mLocalParams from './_source/localParams'\n import disabledState from '@/module/mixin/disabledState'\n\n export default {\n name: 'procedure',\n data () {\n return {\n // method\n method: '',\n // Custom parameter\n localParams: [],\n // Data source type\n type: '',\n // data source\n datasource: ''\n }\n },\n mixins: [disabledState],\n props: {\n backfillItem: Object\n },\n methods: {\n /**\n * return type or datasource\n */\n _onDsData (o) {\n this.type = o.type\n this.datasource = o.datasource\n },\n /**\n * return udp\n */\n _onLocalParams (a) {\n },\n /**\n * verification\n */\n _verification () {\n // datasource Subcomponent verification\n if (!this.$refs.refDs._verifDatasource()) {\n return false\n }\n\n // Verification function\n if (!this.method) {\n this.$message.warning(`${i18n.$t('请输入方法')}`)\n return false\n }\n\n // localParams Subcomponent verification\n if (!this.$refs.refLocalParams._verifProp()) {\n return false\n }\n // storage\n this.$emit('on-params', {\n type: this.type,\n datasource: this.datasource,\n method: this.method,\n localParams: this.localParams\n })\n return true\n }\n },\n watch: {},\n created () {\n let o = this.backfillItem\n\n // Non-null objects represent backfill\n if (!_.isEmpty(o)) {\n this.name = o.name\n this.desc = o.desc\n\n // backfill\n this.type = o.params.type || ''\n this.datasource = o.params.datasource || ''\n this.method = o.params.method || ''\n\n // backfill localParams\n let localParams = o.params.localParams || []\n if (localParams.length) {\n this.localParams = localParams\n }\n }\n },\n mounted () {\n },\n components: { mListBox, mDatasource, mLocalParams }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue","<template>\n <div class=\"dependence-model\">\n <m-list-box>\n <div slot=\"text\">{{$t('添加依赖')}}</div>\n <div slot=\"content\">\n <div class=\"dep-opt\">\n <a href=\"javascript:\"\n @click=\"!isDetails && _addDep()\"\n class=\"add-dep\">\n <i v-if=\"!isLoading\" class=\"iconfont\" :class=\"_isDetails\" data-toggle=\"tooltip\" :title=\"$t('添加')\">\n &#xe636;\n </i>\n <i v-if=\"isLoading\" class=\"iconfont fa fa-spin\" data-toggle=\"tooltip\" :title=\"$t('添加')\">\n &#xe6af;\n </i>\n </a>\n </div>\n <div class=\"dep-box\">\n <span\n class=\"dep-relation\"\n @click=\"!isDetails && _setGlobalRelation()\"\n v-if=\"dependTaskList.length\">\n {{relation === 'AND' ? $t('且') : $t('或')}}\n </span>\n <div class=\"dep-list\" v-for=\"(el,$index) in dependTaskList\">\n <span class=\"dep-line-pie\"\n v-if=\"el.dependItemList.length\"\n @click=\"!isDetails && _setRelation($index)\">\n {{el.relation === 'AND' ? $t('且') : $t('或')}}\n </span>\n <i class=\"iconfont dep-delete\"\n data-toggle=\"tooltip\"\n data-container=\"body\"\n :class=\"_isDetails\"\n @click=\"!isDetails && _deleteDep($index)\"\n :title=\"$t('删除')\" >\n &#xe611;\n </i>\n <m-depend-item-list\n v-model=\"el.dependItemList\"\n @on-delete-all=\"_onDeleteAll\"\n :index=\"$index\">\n </m-depend-item-list>\n </div>\n </div>\n </div>\n </m-list-box>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import mListBox from './_source/listBox'\n import mDependItemList from './_source/dependItemList'\n import disabledState from '@/module/mixin/disabledState'\n\n export default {\n name: 'dependence',\n data () {\n return {\n relation: 'AND',\n dependTaskList: [],\n isLoading: false\n }\n },\n mixins: [disabledState],\n props: {\n backfillItem: Object\n },\n methods: {\n _addDep () {\n if (!this.isLoading) {\n this.isLoading = true\n this.dependTaskList.push({\n dependItemList: [],\n relation: 'AND'\n })\n }\n },\n _deleteDep (i) {\n // remove index dependent\n this.dependTaskList.splice(i, 1)\n\n // remove tootip\n $('body').find('.tooltip.fade.top.in').remove()\n },\n _onDeleteAll (i) {\n this._deleteDep(i)\n },\n _setGlobalRelation () {\n this.relation = this.relation === 'AND' ? 'OR' : 'AND'\n },\n _setRelation (i) {\n this.dependTaskList[i].relation = this.dependTaskList[i].relation === 'AND' ? 'OR' : 'AND'\n },\n _verification () {\n this.$emit('on-dependent', {\n relation: this.relation,\n dependTaskList: _.map(this.dependTaskList, v => {\n return {\n relation: v.relation,\n dependItemList: _.map(v.dependItemList, v1 => _.omit(v1, ['depTasksList', 'state', 'dateValueList']))\n }\n })\n })\n return true\n }\n },\n watch: {\n dependTaskList () {\n setTimeout(() => {\n this.isLoading = false\n }, 600)\n }\n },\n beforeCreate () {\n },\n created () {\n let o = this.backfillItem\n let dependentResult = $(`#${o.id}`).data('dependent-result') || {}\n // Does not represent an empty object backfill\n if (!_.isEmpty(o)) {\n this.relation = _.cloneDeep(o.dependence.relation) || 'AND'\n this.dependTaskList = _.cloneDeep(o.dependence.dependTaskList) || []\n let defaultState = this.isDetails ? 'WAITING' : ''\n // Process instance return status display matches by key\n _.map(this.dependTaskList, v => _.map(v.dependItemList, v1 => v1.state = dependentResult[`${v1.definitionId}-${v1.depTasks}-${v1.cycle}-${v1.dateValue}`] || defaultState))\n }\n },\n mounted () {\n },\n destroyed () {\n },\n computed: {},\n components: { mListBox, mDependItemList }\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .dependence-model {\n margin-top: -10px;\n .dep-opt {\n margin-bottom: 10px;\n padding-top: 3px;\n line-height: 24px;\n .add-dep {\n color: #0097e0;\n margin-right: 10px;\n i {\n font-size: 18px;\n vertical-align: middle;\n }\n }\n }\n .dep-list {\n margin-bottom: 16px;\n position: relative;\n border-left: 1px solid #eee;\n padding-left: 16px;\n margin-left: -16px;\n transition: all 0.2s ease-out;\n padding-bottom: 20px;\n &:hover{\n border-left: 1px solid #0097e0;\n transition: all 0.2s ease-out;\n .dep-line-pie {\n transition: all 0.2s ease-out;\n border: 1px solid #0097e0;\n background: #0097e0;\n color: #fff;\n }\n }\n .dep-line-pie {\n transition: all 0.2s ease-out;\n position: absolute;\n width: 20px;\n height: 20px;\n border: 1px solid #e2e2e2;\n text-align: center;\n top: 50%;\n margin-top: -20px;\n z-index: 1;\n left: -10px;\n border-radius: 10px;\n background: #fff;\n font-size: 12px;\n cursor: pointer;\n &::selection {\n background:transparent;\n }\n &::-moz-selection {\n background:transparent;\n }\n &::-webkit-selection {\n background:transparent;\n }\n }\n .dep-delete {\n position: absolute;\n bottom: -6px;\n left: 14px;\n font-size: 18px;\n color: #ff0000;\n cursor: pointer;\n }\n }\n .dep-box {\n border-left: 4px solid #eee;\n margin-left: -46px;\n padding-left: 42px;\n position: relative;\n .dep-relation {\n position: absolute;\n width: 20px;\n height: 20px;\n border: 1px solid #e2e2e2;\n text-align: center;\n top: 50%;\n margin-top: -10px;\n z-index: 1;\n left: -12px;\n border-radius: 10px;\n background: #fff;\n font-size: 12px;\n cursor: pointer;\n &::selection {\n background:transparent;\n }\n &::-moz-selection {\n background:transparent;\n }\n &::-webkit-selection {\n background:transparent;\n }\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue","<template>\n <div class=\"dep-list-model\">\n <div v-for=\"(el,$index) in dependItemList\" class=\"list\" @click=\"itemIndex = $index\">\n <x-select filterable :style=\"{width:isInstance ? '140px' : '162px'}\" :disabled=\"isDetails\" v-model=\"el.definitionId\" @on-change=\"_onChangeDefinitionId\">\n <x-option v-for=\"item in definitionList\" :key=\"item.value\" :value=\"item.value\" :label=\"item.label\">\n </x-option>\n </x-select>\n <x-select filterable :style=\"{width:isInstance ? '144px' : '156px'}\" :disabled=\"isDetails\" v-model=\"el.depTasks\">\n <x-option v-for=\"item in el.depTasksList || []\" :key=\"item\" :value=\"item\" :label=\"item\">\n </x-option>\n </x-select>\n <x-select style=\"width: 80px;\" v-model=\"el.cycle\" :disabled=\"isDetails\" @on-change=\"_onChangeCycle\">\n <x-option v-for=\"item in cycleList\" :key=\"item.value\" :value=\"item.value\" :label=\"item.label\">\n </x-option>\n </x-select>\n <x-select style=\"width: 116px;\" v-model=\"el.dateValue\" :disabled=\"isDetails\">\n <x-option v-for=\"item in el.dateValueList || []\" :key=\"item.value\" :value=\"item.value\" :label=\"item.label\">\n </x-option>\n </x-select>\n <template v-if=\"isInstance\">\n <span class=\"instance-state\">\n <i class=\"iconfont\" :class=\"'icon-' + el.state\" v-if=\"el.state === 'SUCCESS'\" data-toggle=\"tooltip\" data-container=\"body\" :title=\"$t('成功')\">&#xe607;</i>\n <i class=\"iconfont\" :class=\"'icon-' + el.state\" v-if=\"el.state === 'WAITING'\" data-toggle=\"tooltip\" data-container=\"body\" :title=\"$t('等待')\">&#xe62a;</i>\n <i class=\"iconfont\" :class=\"'icon-' + el.state\" v-if=\"el.state === 'FAILED'\" data-toggle=\"tooltip\" data-container=\"body\" :title=\"$t('失败')\">&#xe626;</i>\n </span>\n </template>\n <span class=\"operation\">\n <a href=\"javascript:\" class=\"delete\" @click=\"!isDetails && _remove($index)\">\n <i class=\"iconfont\" :class=\"_isDetails\" data-toggle=\"tooltip\" data-container=\"body\" :title=\"$t('删除')\" >&#xe611;</i>\n </a>\n <a href=\"javascript:\" class=\"add\" @click=\"!isDetails && _add()\" v-if=\"$index === (dependItemList.length - 1)\">\n <i class=\"iconfont\" :class=\"_isDetails\" data-toggle=\"tooltip\" data-container=\"body\" :title=\"$t('添加')\">&#xe636;</i>\n </a>\n </span>\n </div>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import { cycleList, dateValueList } from './commcon'\n import disabledState from '@/module/mixin/disabledState'\n export default {\n name: 'dep-list',\n data () {\n return {\n list: [],\n definitionList: [],\n cycleList: cycleList,\n isInstance: false,\n itemIndex: null\n }\n },\n mixins: [disabledState],\n props: {\n dependItemList: Array,\n index: Number\n },\n model: {\n prop: 'dependItemList',\n event: 'dependItemListEvent'\n },\n methods: {\n /**\n * add task\n */\n _add () {\n // btn loading\n this.isLoading = true\n // dependItemList index\n let is = (value) => _.some(this.dependItemList, { definitionId: value })\n let noArr = _.filter(this.definitionList, v => !is(v.value))\n let value = noArr[0] && noArr[0].value || null\n let val = value || this.definitionList[0].value\n // add task list\n this._getDependItemList(val).then(depTasksList => {\n this.$nextTick(() => {\n this.$emit('dependItemListEvent', _.concat(this.dependItemList, this._rtNewParams(val, depTasksList)))\n })\n })\n // remove tooltip\n this._removeTip()\n },\n /**\n * remove task\n */\n _remove (i) {\n this.dependItemList.splice(i, 1)\n this._removeTip()\n\n if (!this.dependItemList.length) {\n this.$emit('on-delete-all', {\n index: this.index\n })\n }\n },\n /**\n * get processlist\n */\n _getProcessList () {\n return new Promise((resolve, reject) => {\n this.definitionList = _.map(_.cloneDeep(this.store.state.dag.processListS), v => {\n return {\n value: v.id,\n label: v.name\n }\n })\n resolve()\n })\n },\n /**\n * get dependItemList\n */\n _getDependItemList (ids, is = true) {\n return new Promise((resolve, reject) => {\n if (is) {\n this.store.dispatch('dag/getProcessTasksList', { processDefinitionId: ids }).then(res => {\n resolve(['ALL'].concat(_.map(res, v => v.name)))\n })\n } else {\n this.store.dispatch('dag/getTaskListDefIdAll', { processDefinitionIdList: ids }).then(res => {\n resolve(res)\n })\n }\n })\n },\n /**\n * change process get dependItemList\n */\n _onChangeDefinitionId ({ value }) {\n // get depItem list data\n this._getDependItemList(value).then(depTasksList => {\n let item = this.dependItemList[this.itemIndex]\n // init set depTasks All\n item.depTasks = 'ALL'\n // set dependItemList item data\n this.$set(this.dependItemList, this.itemIndex, this._rtOldParams(value, depTasksList, item))\n })\n },\n _onChangeCycle ({ value }) {\n let list = _.cloneDeep(dateValueList[value])\n this.$set(this.dependItemList[this.itemIndex], 'dateValue', list[0].value)\n this.$set(this.dependItemList[this.itemIndex], 'dateValueList', list)\n },\n _rtNewParams (value, depTasksList) {\n return {\n definitionId: value,\n depTasks: 'ALL',\n depTasksList: depTasksList,\n cycle: 'day',\n dateValue: 'last1Days',\n dateValueList: _.cloneDeep(dateValueList['day']),\n state: ''\n }\n },\n _rtOldParams (value, depTasksList, item) {\n return {\n definitionId: value,\n depTasks: item.depTasks || 'ALL',\n depTasksList: depTasksList,\n cycle: item.cycle,\n dateValue: item.dateValue,\n dateValueList: _.cloneDeep(dateValueList[item.cycle]),\n state: item.state\n }\n },\n /**\n * remove tip\n */\n _removeTip () {\n $('body').find('.tooltip.fade.top.in').remove()\n }\n },\n watch: {\n },\n beforeCreate () {\n },\n created () {\n // is type projects-instance-details\n this.isInstance = this.router.history.current.name === 'projects-instance-details'\n // get processlist\n this._getProcessList().then(() => {\n if (!this.dependItemList.length) {\n let value = this.definitionList[0].value\n this._getDependItemList(value).then(depTasksList => {\n this.$emit('dependItemListEvent', _.concat(this.dependItemList, this._rtNewParams(value, depTasksList)))\n })\n } else {\n // get definitionId ids\n let ids = _.map(this.dependItemList, v => v.definitionId).join(',')\n // get item list\n this._getDependItemList(ids, false).then(res => {\n _.map(this.dependItemList, (v, i) => {\n this.$set(this.dependItemList, i, this._rtOldParams(v.definitionId, ['ALL'].concat(_.map(res[v.definitionId] || [], v => v.name)), v))\n })\n })\n }\n })\n },\n mounted () {\n },\n components: {}\n }\n</script>\n\n<style lang=\"scss\" rel=\"stylesheet/scss\">\n .dep-list-model {\n position: relative;\n min-height: 32px;\n .list {\n margin-bottom: 6px;\n .operation {\n padding-left: 4px;\n a {\n i {\n font-size: 18px;\n vertical-align: middle;\n }\n }\n .delete {\n color: #ff0000;\n }\n .add {\n color: #0097e0;\n }\n }\n }\n .instance-state {\n display: inline-block;\n width: 24px;\n .iconfont {\n font-size: 20px;\n vertical-align: middle;\n cursor: pointer;\n margin-left: 6px;\n &.icon-SUCCESS {\n color: #33cc00;\n }\n &.icon-WAITING {\n color: #888888;\n }\n &.icon-FAILED {\n color: #F31322;\n }\n }\n }\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue","<template>\n <div class=\"sub_process-model\">\n <div class=\"clearfix list\">\n <div class=\"text-box\">\n <span>{{$t('子节点')}}</span>\n </div>\n <div class=\"cont-box\">\n <div class=\"label-box\">\n <x-select\n style=\"width: 100%;\"\n filterable\n v-model=\"wdiCurr\"\n :disabled=\"isDetails\"\n @on-change=\"_handleWdiChanged\">\n <x-option\n v-for=\"city in processDefinitionList\"\n :key=\"city.code\"\n :value=\"city.id\"\n :label=\"city.code\">\n </x-option>\n </x-select>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import disabledState from '@/module/mixin/disabledState'\n\n export default {\n name: 'sub_process',\n data () {\n return {\n // Process definition(List)\n processDefinitionList: [],\n // Process definition\n wdiCurr: null\n }\n },\n mixins: [disabledState],\n props: {\n backfillItem: Object\n },\n methods: {\n /**\n * Node unified authentication parameters\n */\n _verification () {\n if (!this.wdiCurr) {\n this.$message.warning(`${i18n.$t('请选择子工作流')}`)\n return false\n }\n this.$emit('on-params', {\n processDefinitionId: this.wdiCurr\n })\n return true\n },\n /**\n * The selected process defines the upper component name padding\n */\n _handleWdiChanged (o) {\n this.$emit('on-set-process-name', this._handleName(o.value))\n },\n /**\n * Return the name according to the process definition id\n */\n _handleName (id) {\n return _.filter(this.processDefinitionList, v => id === v.id)[0].code\n }\n },\n watch: {},\n created () {\n let processListS = _.cloneDeep(this.store.state.dag.processListS)\n let id = this.router.history.current.params.id || null\n this.processDefinitionList = (() => {\n let a = _.map(processListS, v => {\n return {\n id: v.id,\n code: v.name,\n disabled: false\n }\n })\n return _.filter(a, v => +v.id !== +id)\n })()\n\n let o = this.backfillItem\n // Non-null objects represent backfill\n if (!_.isEmpty(o)) {\n this.wdiCurr = o.params.processDefinitionId\n } else {\n if (this.processDefinitionList.length) {\n this.wdiCurr = this.processDefinitionList[0]['id']\n this.$emit('on-set-process-name', this._handleName(this.wdiCurr))\n }\n }\n },\n mounted () {\n }\n }\n</script>\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue","<template>\n <x-select\n style=\"width: 170px;\"\n :disabled=\"isDetails\"\n @on-change=\"_onChange\"\n v-model=\"value\">\n <x-input\n ref=\"input\"\n slot=\"trigger\"\n v-if=\"isInput\"\n :disabled=\"isDetails\"\n slot-scope=\"{ selectedModel }\"\n maxlength=\"4\"\n @on-blur=\"_onBlur\"\n :placeholder=\"$t('请选择')\"\n :value=\"selectedModel === null ? '0' : selectedModel.value\"\n style=\"width: 100%;\"\n @on-click-icon.stop=\"_ckIcon\">\n <i slot=\"suffix\" class=\"fa fa-times-circle\" style=\"font-size: 15px;cursor: pointer;\" v-show=\"!isIconState\"></i>\n <i slot=\"suffix\" class=\"ans-icon-arrow-down\" style=\"font-size: 12px;\" v-show=\"isIconState\"></i>\n </x-input>\n <x-option\n v-for=\"city in list\"\n :key=\"city\"\n :value=\"city\"\n :label=\"city\">\n </x-option>\n </x-select>\n</template>\n<script>\n import _ from 'lodash'\n import i18n from '@/module/i18n'\n import disabledState from '@/module/mixin/disabledState'\n\n export default {\n name: 'select-input',\n data () {\n return {\n isIconState: false,\n isInput: true\n }\n },\n mixins: [disabledState],\n props: {\n value: String,\n list: Array\n },\n model: {\n prop: 'value',\n event: 'valueEvent'\n },\n methods: {\n _onChange (o) {\n this.$emit('valueEvent', +o.value)\n this._setIconState(+o.value)\n },\n _setIconState (value) {\n // Whether there is a list\n this.isIconState = _.includes(this.list, parseInt(value))\n },\n _ckIcon () {\n if (this.isDetails) {\n return\n }\n this.isInput = false\n this.$emit('valueEvent', +this.list[0])\n this.isIconState = true\n // Refresh instance\n setTimeout(() => {\n this.isInput = true\n }, 1)\n },\n _onBlur () {\n let val = $(this.$refs['input'].$el).find('input')[0].value\n if (this._validation(val)) {\n this.$emit('valueEvent', val)\n this._setIconState(val)\n }\n },\n _validation (val) {\n if (val === '0') return true\n\n if (!(/(^[0-9]*[1-9][0-9]*$)/.test(val))) {\n this.$message.warning(`${i18n.$t('请输入正整数')}`)\n // init\n this._ckIcon()\n return false\n }\n return true\n }\n },\n watch: {\n },\n created () {\n this._setIconState(this.value)\n },\n mounted () {\n },\n components: {}\n }\n</script>\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/_source/selectInput.vue","<template>\n <div class=\"timeout-alarm-model\">\n <div class=\"clearfix list\">\n <div class=\"text-box\">\n <span>{{$t('任务超时告警')}}</span>\n </div>\n <div class=\"cont-box\">\n <label class=\"label-box\">\n <div style=\"padding-top: 5px;\">\n <x-switch v-model=\"enable\" @on-click=\"_onSwitch\" :disabled=\"isDetails\"></x-switch>\n </div>\n </label>\n </div>\n </div>\n <div class=\"clearfix list\" v-if=\"enable\">\n <div class=\"text-box\">\n <span>{{$t('超时策略')}}</span>\n </div>\n <div class=\"cont-box\">\n <label class=\"label-box\">\n <div style=\"padding-top: 6px;\">\n <x-checkbox-group v-model=\"strategy\">\n <x-checkbox label=\"WARN\" :disabled=\"isDetails\">{{$t('超时告警')}}</x-checkbox>\n <x-checkbox label=\"FAILED\" :disabled=\"isDetails\">{{$t('超时失败')}}</x-checkbox>\n </x-checkbox-group>\n </div>\n </label>\n </div>\n </div>\n <div class=\"clearfix list\" v-if=\"enable\">\n <div class=\"text-box\">\n <span>{{$t('超时时长')}}</span>\n </div>\n <div class=\"cont-box\">\n <label class=\"label-box\">\n <x-input v-model=\"interval\" style=\"width: 128px;\" :disabled=\"isDetails\">\n <span slot=\"append\">{{$t('分')}}</span>\n </x-input>\n </label>\n </div>\n </div>\n </div>\n</template>\n<script>\n import _ from 'lodash'\n import disabledState from '@/module/mixin/disabledState'\n\n export default {\n name: 'timeout-alarm',\n data () {\n return {\n // Timeout display hiding\n enable: false,\n // Timeout strategy\n strategy: [],\n // Timeout period\n interval: null\n }\n },\n mixins: [disabledState],\n props: {\n backfillItem: Object\n },\n methods: {\n _onSwitch (is) {\n // Timeout strategy\n this.strategy = is ? ['WARN'] : []\n // Timeout period\n this.interval = is ? 30 : null\n },\n _verification () {\n // Verification timeout policy\n if (this.enable && !this.strategy.length) {\n this.$message.warning(`${this.$t('超时策略必须选一个')}`)\n return false\n }\n // Verify timeout duration Non 0 positive integer\n if (this.enable && !parseInt(this.interval) && !_.isInteger(this.interval)) {\n this.$message.warning(`${this.$t('超时时长必须为正整数')}`)\n return false\n }\n this.$emit('on-timeout', {\n strategy: (() => {\n // Handling checkout sequence\n let strategy = this.strategy\n if (strategy.length === 2 && strategy[0] === 'FAILED') {\n return [strategy[1], strategy[0]].join(',')\n } else {\n return strategy.join(',')\n }\n })(),\n interval: parseInt(this.interval),\n enable: this.enable\n })\n return true\n }\n },\n watch: {\n },\n created () {\n let o = this.backfillItem\n // Non-null objects represent backfill\n if (!_.isEmpty(o) && o.timeout) {\n this.enable = o.timeout.enable || false\n this.strategy = _.split(o.timeout.strategy, ',') || ['WARN']\n this.interval = o.timeout.interval || null\n }\n },\n mounted () {\n },\n components: {}\n }\n</script>\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/dag/_source/formModel/_source/timeoutAlarm.vue","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2175c153\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./start.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./start.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./start.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2175c153\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./start.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue\n// module id = 798\n// module chunks = 0 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2175c153\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./start.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"57207148\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-2175c153\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue\n// module id = 799\n// module chunks = 0 3 4 5","exports = module.exports = require(\"../../../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".start-process-model{width:860px;min-height:300px;background:#fff;border-radius:3px}.start-process-model .title-box{margin-bottom:18px}.start-process-model .title-box span{padding-left:30px;font-size:16px;padding-top:29px;display:block}.start-process-model .list{margin-bottom:14px}.start-process-model .list .text{width:140px;float:left;text-align:right;line-height:32px;padding-right:8px}.start-process-model .list .cont{width:350px;float:left}.start-process-model .list .cont .add-email-model{padding:20px}.start-process-model .submit{text-align:right;padding-right:30px;padding-top:10px;padding-bottom:30px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-2175c153\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue\n// module id = 800\n// module chunks = 0 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"start-process-model\"},[_c('div',{staticClass:\"title-box\"},[_c('span',[_vm._v(_vm._s(_vm.$t('启动前请先设置参数')))])]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('失败策略'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"cont\"},[_c('x-radio-group',{staticStyle:{\"margin-top\":\"7px\"},model:{value:(_vm.failureStrategy),callback:function ($$v) {_vm.failureStrategy=$$v},expression:\"failureStrategy\"}},[_c('x-radio',{attrs:{\"label\":'CONTINUE'}},[_vm._v(_vm._s(_vm.$t('继续')))]),_vm._v(\" \"),_c('x-radio',{attrs:{\"label\":'END'}},[_vm._v(_vm._s(_vm.$t('结束')))])],1)],1)]),_vm._v(\" \"),(_vm.sourceType === 'contextmenu')?_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('节点执行'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"cont\"},[_c('x-radio-group',{model:{value:(_vm.taskDependType),callback:function ($$v) {_vm.taskDependType=$$v},expression:\"taskDependType\"}},[_c('x-radio',{attrs:{\"label\":'TASK_POST'}},[_vm._v(_vm._s(_vm.$t('向后执行')))]),_vm._v(\" \"),_c('x-radio',{attrs:{\"label\":'TASK_PRE'}},[_vm._v(_vm._s(_vm.$t('向前执行')))]),_vm._v(\" \"),_c('x-radio',{attrs:{\"label\":'TASK_ONLY'}},[_vm._v(_vm._s(_vm.$t('仅执行当前节点')))])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('通知策略'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"cont\"},[_c('x-select',{staticStyle:{\"width\":\"200px\"},model:{value:(_vm.warningType),callback:function ($$v) {_vm.warningType=$$v},expression:\"warningType\"}},_vm._l((_vm.warningTypeList),function(city){return _c('x-option',{key:city.id,attrs:{\"value\":city,\"label\":city.code}})}),1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('流程优先级'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"cont\"},[_c('m-priority',{model:{value:(_vm.processInstancePriority),callback:function ($$v) {_vm.processInstancePriority=$$v},expression:\"processInstancePriority\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('通知组'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"cont\"},[_c('x-select',{staticStyle:{\"width\":\"200px\"},attrs:{\"disabled\":!_vm.notifyGroupList.length},scopedSlots:_vm._u([{key:\"trigger\",fn:function(ref){\nvar selectedModel = ref.selectedModel;\nreturn _c('x-input',{staticStyle:{\"width\":\"200px\"},attrs:{\"readonly\":\"\",\"placeholder\":_vm.$t('请选择通知组'),\"value\":selectedModel ? selectedModel.label : ''},on:{\"on-click-icon\":function($event){$event.stopPropagation();_vm.warningGroupId = {}}}},[_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.warningGroupId.id),expression:\"warningGroupId.id\"}],staticClass:\"fa fa-times-circle\",staticStyle:{\"font-size\":\"15px\",\"cursor\":\"pointer\"},attrs:{\"slot\":\"suffix\"},slot:\"suffix\"}),_vm._v(\" \"),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.warningGroupId.id),expression:\"!warningGroupId.id\"}],staticClass:\"ans-icon-arrow-down\",staticStyle:{\"font-size\":\"12px\"},attrs:{\"slot\":\"suffix\"},slot:\"suffix\"})])}}]),model:{value:(_vm.warningGroupId),callback:function ($$v) {_vm.warningGroupId=$$v},expression:\"warningGroupId\"}},[_vm._v(\" \"),_vm._l((_vm.notifyGroupList),function(city){return _c('x-option',{key:city.id,attrs:{\"value\":city,\"label\":city.code}})})],2)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('收件人'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"cont\"},[_c('m-email',{attrs:{\"repeat-data\":_vm.receiversCc},model:{value:(_vm.receivers),callback:function ($$v) {_vm.receivers=$$v},expression:\"receivers\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('抄送人'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"cont\"},[_c('m-email',{attrs:{\"repeat-data\":_vm.receivers},model:{value:(_vm.receiversCc),callback:function ($$v) {_vm.receiversCc=$$v},expression:\"receiversCc\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('补数'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"cont\"},[_c('div',{staticStyle:{\"padding-top\":\"6px\"}},[_c('x-checkbox',{model:{value:(_vm.execType),callback:function ($$v) {_vm.execType=$$v},expression:\"execType\"}},[_vm._v(_vm._s(_vm.$t('是否补数')))])],1)])]),_vm._v(\" \"),(_vm.execType)?[_c('div',{staticClass:\"clearfix list\",staticStyle:{\"margin\":\"-6px 0 16px 0\"}},[_c('div',{staticClass:\"text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('执行方式'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"cont\"},[_c('x-radio-group',{staticStyle:{\"margin-top\":\"7px\"},model:{value:(_vm.runMode),callback:function ($$v) {_vm.runMode=$$v},expression:\"runMode\"}},[_c('x-radio',{attrs:{\"label\":'RUN_MODE_SERIAL'}},[_vm._v(_vm._s(_vm.$t('串行执行')))]),_vm._v(\" \"),_c('x-radio',{attrs:{\"label\":'RUN_MODE_PARALLEL'}},[_vm._v(_vm._s(_vm.$t('并行执行')))])],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('时间'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"cont\"},[_c('x-datepicker',{staticStyle:{\"width\":\"360px\"},attrs:{\"panel-num\":2,\"placement\":\"bottom-start\",\"value\":_vm.scheduleTime,\"type\":\"daterange\",\"placeholder\":_vm.$t('选择日期区间'),\"format\":\"YYYY-MM-DD HH:mm:ss\"},on:{\"on-change\":_vm._datepicker}})],1)])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit\"},[_c('x-button',{attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\" \"+_vm._s(_vm.$t('取消'))+\" \")]),_vm._v(\" \"),_c('x-button',{directives:[{name:\"ps\",rawName:\"v-ps\",value:(['GENERAL_USER']),expression:\"['GENERAL_USER']\"}],attrs:{\"type\":\"primary\",\"shape\":\"circle\",\"loading\":_vm.spinnerLoading},on:{\"click\":function($event){return _vm.ok()}}},[_vm._v(_vm._s(_vm.spinnerLoading ? 'Loading...' : _vm.$t('启动'))+\" \")])],1)],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2175c153\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue\n// module id = 801\n// module chunks = 0 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2c0a3d2b\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./log.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./log.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./log.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2c0a3d2b\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./log.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/log.vue\n// module id = 803\n// module chunks = 1 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2c0a3d2b\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./log.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"2edcb0af\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-2c0a3d2b\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/log.vue\n// module id = 804\n// module chunks = 1 3 4 5","exports = module.exports = require(\"../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".log-pop{position:fixed;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:10}.log-pop .log-box{width:660px;height:520px;background:#fff;border-radius:3px;position:absolute;left:50%;top:50%;margin-left:-340px;margin-top:-250px}.log-pop .log-box .title{height:50px;border-bottom:1px solid #dcdedc}.log-pop .log-box .title span{font-size:16px;color:#333;padding-left:20px;display:inline-block;padding-top:16px}.log-pop .log-box .title .full-screen{position:absolute;right:20px;top:12px}.log-pop .log-box .title .full-screen a{color:#0097e0;font-size:12px;margin-left:10px}.log-pop .log-box .title .full-screen a i{vertical-align:middle}.log-pop .log-box .title .full-screen .clock>i{font-size:20px;vertical-align:middle;transform:scale(1)}.log-pop .log-box .title .full-screen .refresh-log>i{font-size:24px;vertical-align:middle;transform:scale(1)}.log-pop .log-box .title .full-screen .refresh-log.active>i{-webkit-transition-property:-webkit-transform;-webkit-transition-duration:1s;-moz-transition-property:-moz-transform;-moz-transition-duration:1s;-webkit-animation:rotateloading .4s linear infinite;-moz-animation:rotateloading .4s linear infinite;-o-animation:rotateloading .4s linear infinite;animation:rotateloading .4s linear infinite;transform:scale(.4);color:#999}.log-pop .log-box .content{height:calc(100% - 100px);background:#002a35;padding:6px 2px}.log-pop .log-box .content .content-log-box{width:100%;height:100%;word-break:break-all}.log-pop .log-box .content .content-log-box textarea{background:none;color:#9cabaf;border:0;font-family:\\\"Microsoft Yahei,Arial,Hiragino Sans GB,tahoma,SimSun,sans-serif\\\";font-weight:700;resize:none;line-height:1.6;padding:6px}.log-pop .log-box .operation{text-align:right;height:50px;line-height:44px;border-top:1px solid #dcdedc;padding-right:20px;background:#fff;position:relative}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-2c0a3d2b\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/log.vue\n// module id = 805\n// module chunks = 1 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"log-model\"},[(_vm.stateId && _vm.item.type !== 'SUB_PROCESS')?_c('span',[_vm._t(\"history\"),_vm._v(\" \"),_c('span',{on:{\"click\":_vm._ckLog}},[_vm._t(\"log\")],2)],2):_vm._e(),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLog || _vm.source === 'list'),expression:\"isLog || source === 'list'\"}],staticClass:\"log-pop\"},[_c('div',{staticClass:\"log-box\"},[_c('div',{staticClass:\"title\"},[_c('span',[_vm._v(_vm._s(_vm.$t('查看日志')))]),_vm._v(\" \"),_c('div',{staticClass:\"full-screen\"},[_c('a',{attrs:{\"href\":\"javascript:\",\"data-container\":\"body\",\"data-toggle\":\"tooltip\",\"title\":_vm.$t('下载日志')},on:{\"click\":_vm._downloadLog}},[_c('i',{staticClass:\"iconfont\",staticStyle:{\"font-size\":\"20px\"}},[_vm._v(\"\")])]),_vm._v(\" \"),_c('a',{staticClass:\"refresh-log\",class:_vm.loading ? 'active' :'',attrs:{\"href\":\"javascript:\",\"data-container\":\"body\",\"data-toggle\":\"tooltip\",\"title\":_vm.$t('刷新日志')},on:{\"click\":function($event){!_vm.loading && _vm._refreshLog()}}},[_c('i',{staticClass:\"fa iconfont\"},[_vm._v(\"\")])]),_vm._v(\" \"),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isScreen),expression:\"!isScreen\"}],attrs:{\"href\":\"javascript:\",\"data-container\":\"body\",\"data-toggle\":\"tooltip\",\"title\":_vm.$t('进入全屏')},on:{\"click\":_vm._screenOpen}},[_c('i',{staticClass:\"iconfont\"},[_vm._v(\"\")])]),_vm._v(\" \"),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isScreen),expression:\"isScreen\"}],attrs:{\"href\":\"javascript:\",\"data-container\":\"body\",\"data-toggle\":\"tooltip\",\"title\":_vm.$t('取消全屏')},on:{\"click\":_vm._screenClose}},[_c('i',{staticClass:\"iconfont\"},[_vm._v(\"\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"content-log-box\"},[_c('textarea',{staticClass:\"textarea-ft\",staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"textarea-log\",\"spellcheck\":\"false\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"operation\"},[_c('x-button',{attrs:{\"type\":\"primary\",\"shape\":\"circle\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('关闭'))+\" \")])],1)])])])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2c0a3d2b\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/log.vue\n// module id = 806\n// module chunks = 1 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6010fed6\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./dag.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./dag.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./dag.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6010fed6\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dag.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/dag.vue\n// module id = 905\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6010fed6\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./dag.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"4e643ae0\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-6010fed6\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/dag.vue\n// module id = 906\n// module chunks = 3 4 5","var escape = require(\"../../../../../../../node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".dag-model{background:url(\" + escape(require(\"../img/dag_bg.png\")) + \");height:calc(100vh - 100px)}.dag-model ::selection{background:transparent}.dag-model ::-moz-selection{background:transparent}.dag-model ::-webkit-selection{background:transparent}.dag-model .jsplumb-connector{z-index:1}.dag-model .endpoint-tasks{margin-top:22px}.dag-model .draggable>span{text-align:center;display:block;margin-top:-4px;padding:0 4px;width:200px;margin-left:-81px;position:absolute;left:0;bottom:-12px}.dag-model .draggable .fa{position:absolute;right:-8px;top:-8px;z-index:2}.dag-model .draggable .fa,.dag-model .draggable .icos{display:inline-block;cursor:pointer}.dag-model .draggable.active-tasks span{color:#0296df}.dag-model .icos{width:32px;height:32px;margin:2px;border-radius:3px;position:relative;z-index:9}.dag-model .icos-SHELL{background:url(\" + escape(require(\"../img/toolbar_SHELL.png\")) + \") no-repeat 50% 50%}.dag-model .icos-SUB_PROCESS{background:url(\" + escape(require(\"../img/toolbar_SUB_PROCESS.png\")) + \") no-repeat 50% 50%}.dag-model .icos-PROCEDURE{background:url(\" + escape(require(\"../img/toolbar_PROCEDURE.png\")) + \") no-repeat 50% 50%}.dag-model .icos-SQL{background:url(\" + escape(require(\"../img/toolbar_SQL.png\")) + \") no-repeat 50% 50%}.dag-model .icos-SPARK{background:url(\" + escape(require(\"../img/toolbar_SPARK.png\")) + \") no-repeat 50% 50%}.dag-model .icos-MR{background:url(\" + escape(require(\"../img/toolbar_MR.png\")) + \") no-repeat 50% 50%}.dag-model .icos-PYTHON{background:url(\" + escape(require(\"../img/toolbar_PYTHON.png\")) + \") no-repeat 50% 50%}.dag-model .icos-DEPENDENT{background:url(\" + escape(require(\"../img/toolbar_DEPENDENT.png\")) + \") no-repeat 50% 50%}.dag-model .toolbar{width:60px;height:100%;background:#f2f3f7;float:left;border-radius:0 0 0 3px}.dag-model .toolbar .title{height:40px;line-height:40px;background:#40434c;text-align:center;border-radius:3px 0 0 0}.dag-model .toolbar .title span{font-size:14px;color:#fff;font-weight:700}.dag-model .toolbar .toolbar-btn{overflow:hidden;padding:11px 11px 0}.dag-model .toolbar .toolbar-btn .bar-box{width:36px;height:36px;float:left;margin-bottom:11px;border-radius:3px}.dag-model .toolbar .toolbar-btn .bar-box .disabled .icos{opacity:.6;-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%);filter:gray}.dag-model .toolbar .toolbar-btn .bar-box:nth-child(odd){margin-right:6px}.dag-model .toolbar .toolbar-btn .bar-box.active{background:#e1e2e3}.dag-model .dag-contect{float:left;width:calc(100% - 60px);height:100%}.dag-model .dag-contect .dag-toolbar{height:40px;background:#f2f3f7;position:relative;border-radius:0 3px 0 0}.dag-model .dag-contect .dag-toolbar .assist-btn{position:absolute;left:10px;top:8px}.dag-model .dag-contect .dag-toolbar .assist-btn>.name{padding-left:6px;vertical-align:middle}.dag-model .dag-contect .dag-toolbar .save-btn{position:absolute;right:8px;top:6px}.dag-model .dag-contect .dag-toolbar .save-btn .operation{overflow:hidden;display:inline-block;margin-right:10px}.dag-model .dag-contect .dag-toolbar .save-btn .operation a{float:left;width:28px;height:28px;text-align:center;line-height:28px;margin-left:6px;border-radius:3px;vertical-align:middle}.dag-model .dag-contect .dag-toolbar .save-btn .operation a i{color:#333}.dag-model .dag-contect .dag-toolbar .save-btn .operation a.active{background:#e1e2e3}.dag-model .dag-contect .dag-toolbar .save-btn .operation a.active i{color:#2d8cf0}.dag-model .dag-contect .dag-toolbar .save-btn .operation a.disable i{color:#bbb}.dag-model .dag-contect .dag-container{height:calc(100% - 40px);overflow-x:auto}.dag-model .dag-contect .dag-container::-webkit-scrollbar{width:9px}.dag-model .tools-model{height:60px;background:#f4f5f4;border-radius:3px 3px 0 0}.v-modal-custom-log{z-index:101}svg path:hover{cursor:pointer}#chart-container .ui-selected span,#chart-container .ui-selecting span{color:#0296df}.contextmenu{position:fixed;width:90px;background:#fff;border-radius:3px;box-shadow:0 2px 4px 1px rgba(0,0,0,.1);padding:4px 0;visibility:hidden}.contextmenu a{height:30px;line-height:28px;display:block}.contextmenu a i{font-size:16px;vertical-align:middle;margin-left:10px}.contextmenu a span{vertical-align:middle;font-size:12px;color:#666;padding-left:2px}.contextmenu a:hover{background:#f6faff}.contextmenu a#startRunning i{color:#35cd75}.contextmenu a#editNodes i{color:#0097e0}.contextmenu a#removeNodes i{color:#f04d4e}.contextmenu a#copyNodes i{color:#fabc05}.contextmenu a.disbled i,.contextmenu a.disbled span{color:#aaa!important}.jtk-demo{width:8000px;height:5000px;position:relative}.jtk-demo svg:not(:root){z-index:11}.jtk-demo-canvas{height:100%}.jtk-bootstrap{min-height:100vh;display:flex;flex-direction:column}.jtk-bootstrap .jtk-page-container{display:flex;width:100vw;justify-content:center;flex:1}.jtk-bootstrap .jtk-container{width:60%;max-width:800px}.jtk-bootstrap-wide .jtk-container{width:80%;max-width:1187px}.jtk-demo-main{position:relative;margin-top:98px}.jtk-demo-main .description{font-size:13px;margin-top:25px;padding:13px;margin-bottom:22px;background-color:#f4f5ef}.jtk-demo-main .description li{list-style-type:disc!important}.jtk-demo-canvas{display:flex}.canvas-wide{padding-top:10px;margin-left:0;-ms-transition:all .1s ease-out;-moz-transition:all .1s ease-out;-webkit-transition:all .1s ease-out;-o-transition:all .1s ease-out}.jtk-demo-dataset{text-align:left;max-height:600px;overflow:auto}.demo-title{float:left;font-size:18px}.controls{top:25px;color:#fff;margin-right:10px;position:absolute;left:25px;z-index:1}.controls i{background-color:#3e7e9c;border-radius:4px;cursor:pointer;margin-right:0;padding:4px}.w{position:absolute;z-index:4;font-size:11px;-webkit-transition:background-color .25s ease-in;-moz-transition:background-color .25s ease-in;transition:background-color .25s ease-in;border:7px solid transparent;border-bottom:30px solid transparent}.w .icos{width:50px;height:50px;box-shadow:2px 2px 19px #e0e0e0;-o-box-shadow:2px 2px 19px #e0e0e0;-webkit-box-shadow:2px 2px 19px #e0e0e0;-moz-box-shadow:2px 2px 19px #e0e0e0;-moz-border-radius:8px;border-radius:8px;opacity:.8;cursor:move;background-color:#fff}.w .name-p{position:absolute;left:50%;bottom:-24px;width:200px;text-align:center;margin-left:-100px}.w .ban-p{position:absolute;left:-4px;top:36px;z-index:21}.w .ban-p i{font-size:18px;color:red;cursor:pointer}.w .state-p{width:20px;height:20px;position:absolute;top:-20px;left:18px;text-align:center;cursor:pointer}.w .state-p b{font-weight:400}.aLabel{-webkit-transition:background-color .25s ease-in;-moz-transition:background-color .25s ease-in;transition:background-color .25s ease-in}.aLabel.jtk-hover .icos,.jtk-source-hover .icos,.jtk-target-hover .icos{background-color:#333;color:#333}.aLabel.jtk-hover .icos,.jtk-source-hover .icos,.jtk-target-hover .icos,.jtk-tasks-active .icos{-ms-transition:all .6s ease-out;-moz-transition:all .6s ease-out;-webkit-transition:all .6s ease-out;-o-transition:all .6s ease-out}.jtk-tasks-active .icos{background-color:#2db7f5;color:#0097e0}.aLabel{background-color:#fff;opacity:.8;padding:.3em;border-radius:.5em;border:1px solid #346789;cursor:pointer}.jtk-ep .ep{display:block}.ep{position:absolute;top:-4%;right:-1px;width:1em;height:1em;z-index:12;background-color:orange;cursor:pointer;box-shadow:0 0 2px #000;-webkit-transition:-webkit-box-shadow .25s ease-in;-moz-transition:-moz-box-shadow .25s ease-in;transition:box-shadow .25s ease-in;border-radius:100%;display:none}.ep:hover{box-shadow:0 0 6px #000}.statemachine-demo .jtk-endpoint{z-index:3}#canvas .dot-style{opacity:0}.from-mirror{width:100%;position:relative;z-index:0}.from-mirror .CodeMirror{height:auto;min-height:72px}.from-mirror .CodeMirror-scroll{height:auto;min-height:72px;overflow-y:hidden;overflow-x:auto}.ans-drawer.ans-drawer-right{width:628px;left:auto}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-6010fed6\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/dag.vue\n// module id = 907\n// module chunks = 3 4 5","module.exports = __webpack_public_path__ + \"images/dag_bg.png?6a0c3839385c7d50f21acf06989addf4\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/img/dag_bg.png\n// module id = 908\n// module chunks = 3 4 5","module.exports = __webpack_public_path__ + \"images/toolbar_SHELL.png?249b36a2f0687b942c0dc26e85bf5c5d\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/img/toolbar_SHELL.png\n// module id = 909\n// module chunks = 3 4 5","module.exports = __webpack_public_path__ + \"images/toolbar_SUB_PROCESS.png?a5d6b24489e0142c643821cb30f0fa16\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/img/toolbar_SUB_PROCESS.png\n// module id = 910\n// module chunks = 3 4 5","module.exports = __webpack_public_path__ + \"images/toolbar_PROCEDURE.png?9418236aaa8d10bda2ba72ff70b4cd94\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/img/toolbar_PROCEDURE.png\n// module id = 911\n// module chunks = 3 4 5","module.exports = __webpack_public_path__ + \"images/toolbar_SQL.png?ffd333b2d8f16967463a90dc431ce604\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/img/toolbar_SQL.png\n// module id = 912\n// module chunks = 3 4 5","module.exports = __webpack_public_path__ + \"images/toolbar_SPARK.png?4fb1f1c7acb1fcbe5ffd39bf99cf2453\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/img/toolbar_SPARK.png\n// module id = 913\n// module chunks = 3 4 5","module.exports = __webpack_public_path__ + \"images/toolbar_MR.png?835bcf5a478ab55c8fe7510ad6c4ee7e\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/img/toolbar_MR.png\n// module id = 914\n// module chunks = 3 4 5","module.exports = __webpack_public_path__ + \"images/toolbar_PYTHON.png?b2f3d6aa01059c43b4d6dff6a37f8bc4\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/img/toolbar_PYTHON.png\n// module id = 915\n// module chunks = 3 4 5","module.exports = __webpack_public_path__ + \"images/toolbar_DEPENDENT.png?392311ad751588b7dd0e5f842d217254\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/img/toolbar_DEPENDENT.png\n// module id = 916\n// module chunks = 3 4 5","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nimport _ from 'lodash'\nimport { jsPlumb } from 'jsplumb'\nimport JSP from './plugIn/jsPlumbHandle'\nimport DownChart from './plugIn/downChart'\nimport store from '@/conf/home/store'\n\n/**\n * Prototype method\n */\nlet Dag = function () {\n this.dag = {}\n this.instance = {}\n}\n\n/**\n * init\n * @dag dag vue instance\n */\nDag.prototype.init = function ({ dag, instance }) {\n this.dag = dag\n this.instance = instance\n}\n\n/**\n * set init config\n */\nDag.prototype.setConfig = function (o) {\n JSP.setConfig(o)\n}\n\n/**\n * create dag\n */\nDag.prototype.create = function () {\n jsPlumb.ready(() => {\n JSP.init({\n dag: this.dag,\n instance: this.instance\n })\n\n // init event\n JSP.handleEvent()\n\n // init draggable\n JSP.draggable()\n })\n}\n\n/**\n * Action event on the right side of the toolbar\n */\nDag.prototype.toolbarEvent = function ({ item, code, is }) {\n switch (code) {\n case 'pointer':\n JSP.handleEventPointer(is)\n break\n case 'line':\n JSP.handleEventLine(is)\n break\n case 'remove':\n JSP.handleEventRemove()\n break\n case 'screen':\n JSP.handleEventScreen({ item, is })\n break\n case 'download':\n DownChart.download({\n dagThis: this.dag\n })\n break\n }\n}\n\n/**\n * Echo data display\n */\nDag.prototype.backfill = function () {\n jsPlumb.ready(() => {\n JSP.init({\n dag: this.dag,\n instance: this.instance\n })\n // Backfill\n JSP.jspBackfill({\n // connects\n connects: _.cloneDeep(store.state.dag.connects),\n // Node location information\n locations: _.cloneDeep(store.state.dag.locations),\n // Node data\n largeJson: _.cloneDeep(store.state.dag.tasks)\n })\n })\n}\n\n/**\n * Get dag storage format data\n */\nDag.prototype.saveStore = function () {\n return JSP.saveStore()\n}\n\nexport default new Dag()\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/conf/home/pages/dag/_source/dag.js","import $ from 'jquery'\nimport d3 from 'd3'\n/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nconst DragZoom = function () {\n this.element = {}\n this.zoom = {}\n this.scale = 1\n}\n\nDragZoom.prototype.init = function () {\n let $canvas = $('#canvas')\n this.element = d3.select('#canvas')\n this.zoom = d3.behavior.zoom()\n .scaleExtent([0.5, 2])\n .on('zoom', () => {\n this.scale = d3.event.scale\n $canvas.css('transform', 'translate(' + d3.event.translate[0] + 'px,' + d3.event.translate[1] + 'px) scale(' + this.scale + ')')\n $canvas.css('transform-origin', '0 0')\n })\n this.element.call(this.zoom).on('dblclick.zoom', null)\n}\n\n\nexport default new DragZoom()\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/conf/home/pages/dag/_source/plugIn/dragZoom.js","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. 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\nimport _ from 'lodash'\nimport canvg from 'canvg'\nimport { tasksAll } from './util'\nimport html2canvas from 'html2canvas'\nimport { findComponentDownward } from '@/module/util/'\n\nlet DownChart = function () {\n this.dag = {}\n}\n\n/**\n * Get interception location information\n */\nDownChart.prototype.maxVal = function () {\n return new Promise((resolve, reject) => {\n // All nodes\n let tasksAllList = tasksAll()\n let dom = $('.dag-container')\n let y = parseInt(_.maxBy(tasksAllList, 'y').y + 60)\n let x = parseInt(_.maxBy(tasksAllList, 'x').x + 100)\n\n resolve({\n width: x > 600 ? x : dom.width(),\n height: (y > 500 ? y : dom.height()) + 100\n })\n })\n}\n\n/**\n * Download to image\n */\nDownChart.prototype.download = function ({ dagThis }) {\n this.dag = dagThis\n\n this.maxVal().then(({ width, height }) => {\n // Dom to save\n const copyDom = $('#canvas')\n // gain\n const scale = 1\n // svg handle\n const nodesToRecover = []\n const nodesToRemove = []\n // divReport is the id of the dom that needs to be intercepted into a picture\n const svgElem = copyDom.find('svg')\n svgElem.each((index, node) => {\n let parentNode = node.parentNode\n let svg = node.outerHTML.trim()\n let canvas = document.createElement('canvas')\n canvg(canvas, svg)\n if (node.style.position) {\n canvas.style.position += node.style.position\n canvas.style.left += node.style.left\n canvas.style.top += node.style.top\n }\n nodesToRecover.push({\n parent: parentNode,\n child: node\n })\n parentNode.removeChild(node)\n nodesToRemove.push({\n parent: parentNode,\n child: canvas\n })\n parentNode.appendChild(canvas)\n })\n\n const canvas = document.createElement('canvas')\n // canvas width\n canvas.width = width * scale\n // canvas height\n canvas.height = height * scale\n\n const content = canvas.getContext('2d')\n content.scale(scale, scale)\n // Get the offset of the element relative to the inspection\n const rect = copyDom.get(0).getBoundingClientRect()\n // Set the context position, the value is a negative value relative to the window offset, let the picture reset\n content.translate(-rect.left, -rect.top)\n\n html2canvas(copyDom[0], {\n dpi: window.devicePixelRatio * 2,\n scale: scale,\n width: width,\n canvas: canvas,\n heigth: height,\n useCORS: true // Enable cross-domain configuration\n }).then((canvas) => {\n let name = `${this.dag.name}.png`\n let url = canvas.toDataURL('image/png', 1)\n setTimeout(() => {\n let triggerDownload = $('<a>').attr('href', url).attr('download', name).appendTo('body')\n triggerDownload[0].click()\n triggerDownload.remove()\n }, 100)\n\n // To refresh the dag instance, otherwise you can't re-plot\n setTimeout(() => {\n // Refresh current dag\n findComponentDownward(this.dag.$root, `${this.dag.type}-details`).init()\n }, 500)\n })\n })\n}\n\nexport default new DownChart()\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/conf/home/pages/dag/_source/plugIn/downChart.js","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0da27219\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./udp.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./udp.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./udp.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0da27219\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./udp.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/udp/udp.vue\n// module id = 920\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0da27219\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./udp.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"943b2760\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0da27219\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/udp/udp.vue\n// module id = 921\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".udp-model{width:616px;min-height:326px;background:#fff;border-radius:3px;padding:20px 0;position:relative}.udp-model .contpi-boxt{max-height:600px;overflow-y:scroll;padding:0 20px}.udp-model .title{line-height:36px;padding-bottom:10px}.udp-model .title span{font-size:16px;color:#333}.udp-model .bottom{position:absolute;bottom:0;left:0;width:100%;text-align:right;height:56px;line-height:56px;border-top:1px solid #dcdedc;background:#fff}.udp-model .bottom .submit{padding-right:20px;margin-top:-4px}.udp-model .bottom .lint-pt{position:absolute;left:20px;top:-2px}.udp-model .bottom .lint-pt>label{font-weight:400}.udp-model .content{padding-bottom:50px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0da27219\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/udp/udp.vue\n// module id = 922\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1c93b12e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./localParams.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"65e782c4\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1c93b12e\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue\n// module id = 923\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-def-params-model .select-listpp{margin-bottom:6px}.user-def-params-model .select-listpp .lt-add{padding-left:4px}.user-def-params-model .select-listpp .lt-add a .iconfont{font-size:18px;vertical-align:middle;margin-bottom:-2px;display:inline-block}.user-def-params-model .add a .iconfont{font-size:18px;vertical-align:middle;display:inline-block;margin-top:1px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1c93b12e\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue\n// module id = 924\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-def-params-model\"},[_vm._l((_vm.localParamsList),function(item,$index){return _c('div',{key:item.id,staticClass:\"select-listpp\",on:{\"click\":function($event){return _vm._getIndex($index)}}},[_c('x-input',{staticStyle:{\"width\":\"164px\"},attrs:{\"disabled\":_vm.isDetails,\"type\":\"text\",\"placeholder\":_vm.$t('prop(必填)'),\"maxlength\":\"64\"},on:{\"on-blur\":function($event){return _vm._verifProp()}},model:{value:(_vm.localParamsList[$index].prop),callback:function ($$v) {_vm.$set(_vm.localParamsList[$index], \"prop\", $$v)},expression:\"localParamsList[$index].prop\"}}),_vm._v(\" \"),_c('x-select',{staticStyle:{\"width\":\"80px\"},attrs:{\"disabled\":_vm.isDetails || !_vm.hide},on:{\"change\":_vm._handleDirectChanged},model:{value:(_vm.localParamsList[$index].direct),callback:function ($$v) {_vm.$set(_vm.localParamsList[$index], \"direct\", $$v)},expression:\"localParamsList[$index].direct\"}},_vm._l((_vm.directList),function(city){return _c('x-option',{key:city.code,attrs:{\"value\":city.code,\"label\":city.code}})}),1),_vm._v(\" \"),_c('x-select',{staticStyle:{\"width\":\"118px\"},attrs:{\"disabled\":_vm.isDetails || !_vm.hide},on:{\"change\":_vm._handleTypeChanged},model:{value:(_vm.localParamsList[$index].type),callback:function ($$v) {_vm.$set(_vm.localParamsList[$index], \"type\", $$v)},expression:\"localParamsList[$index].type\"}},_vm._l((_vm.typeList),function(city){return _c('x-option',{key:city.code,attrs:{\"value\":city.code,\"label\":city.code}})}),1),_vm._v(\" \"),_c('x-input',{staticStyle:{\"width\":\"150px\",\"position\":\"relative\",\"margin-bottom\":\"-2px\"},attrs:{\"disabled\":_vm.isDetails,\"type\":\"text\",\"placeholder\":_vm.$t('value(选填)'),\"maxlength\":\"64\"},on:{\"on-blur\":function($event){return _vm._handleValue()}},model:{value:(_vm.localParamsList[$index].value),callback:function ($$v) {_vm.$set(_vm.localParamsList[$index], \"value\", $$v)},expression:\"localParamsList[$index].value\"}}),_vm._v(\" \"),_c('span',{staticClass:\"lt-add\"},[_c('a',{staticStyle:{\"color\":\"red\"},attrs:{\"href\":\"javascript:\"},on:{\"click\":function($event){!_vm.isDetails && _vm._removeUdp($index)}}},[_c('i',{staticClass:\"iconfont\",class:_vm._isDetails,attrs:{\"data-toggle\":\"tooltip\",\"title\":_vm.$t('删除')}},[_vm._v(\"\")])])]),_vm._v(\" \"),($index === (_vm.localParamsList.length - 1))?_c('span',{staticClass:\"add\"},[_c('a',{attrs:{\"href\":\"javascript:\"},on:{\"click\":function($event){!_vm.isDetails && _vm._addUdp()}}},[_c('i',{staticClass:\"iconfont\",class:_vm._isDetails,attrs:{\"data-toggle\":\"tooltip\",\"title\":_vm.$t('添加')}},[_vm._v(\"\")])])]):_vm._e()],1)}),_vm._v(\" \"),(!_vm.localParamsList.length)?_c('span',{staticClass:\"add\"},[_c('a',{attrs:{\"href\":\"javascript:\"},on:{\"click\":function($event){!_vm.isDetails && _vm._addUdp()}}},[_c('i',{staticClass:\"iconfont\",class:_vm._isDetails,attrs:{\"data-toggle\":\"tooltip\",\"title\":_vm.$t('添加')}},[_vm._v(\"\")])])]):_vm._e()],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1c93b12e\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue\n// module id = 925\n// module chunks = 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4ebc9f24\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./jumpAffirm.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./jumpAffirm.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./jumpAffirm.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4ebc9f24\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./jumpAffirm.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/jumpAffirm/jumpAffirm.vue\n// module id = 926\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4ebc9f24\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./jumpAffirm.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"6b10ab61\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-4ebc9f24\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/jumpAffirm/jumpAffirm.vue\n// module id = 927\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".affirm-model .popup-model .top-p{height:50px}.affirm-model .popup-model .content-p{min-height:0;min-width:250px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-4ebc9f24\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/jumpAffirm/jumpAffirm.vue\n// module id = 928\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"affirm-model\"},[_c('m-popup',{attrs:{\"ok-text\":_vm.$t('确认保存'),\"nameText\":_vm.$t('是否保存DAG图')},on:{\"close\":_vm._close,\"ok\":_vm._ok}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4ebc9f24\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/jumpAffirm/jumpAffirm.vue\n// module id = 929\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"udp-model\"},[_c('div',{staticClass:\"scrollbar contpi-boxt\"},[_c('div',{staticClass:\"title\"},[_c('span',[_vm._v(_vm._s(_vm.$t('设置DAG图名称')))])]),_vm._v(\" \"),_c('div',[_c('x-input',{attrs:{\"type\":\"text\",\"disabled\":_vm.router.history.current.name === 'projects-instance-details',\"placeholder\":_vm.$t('请输入name(必填)')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1),_vm._v(\" \"),(_vm.router.history.current.name !== 'projects-instance-details')?[_c('div',{staticStyle:{\"padding-top\":\"12px\"}},[_c('x-input',{attrs:{\"type\":\"textarea\",\"autosize\":{minRows:2},\"placeholder\":_vm.$t('请输入desc(选填)'),\"autocomplete\":\"off\"},model:{value:(_vm.desc),callback:function ($$v) {_vm.desc=$$v},expression:\"desc\"}})],1)]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"title\",staticStyle:{\"padding-top\":\"6px\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('设置全局')))])]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',[_c('m-local-params',{ref:\"refLocalParams\",attrs:{\"udp-list\":_vm.udpList,\"hide\":false},on:{\"on-local-params\":_vm._onLocalParams}})],1)])],2),_vm._v(\" \"),_c('div',{staticClass:\"bottom\"},[_c('div',{staticClass:\"submit\"},[(_vm.router.history.current.name === 'projects-instance-details')?[_c('div',{staticClass:\"lint-pt\"},[_c('x-checkbox',{model:{value:(_vm.syncDefine),callback:function ($$v) {_vm.syncDefine=$$v},expression:\"syncDefine\"}},[_vm._v(_vm._s(_vm.$t('是否更新流程定义')))])],1)]:_vm._e(),_vm._v(\" \"),_c('x-button',{attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\" \"+_vm._s(_vm.$t('取消'))+\" \")]),_vm._v(\" \"),_c('x-button',{directives:[{name:\"ps\",rawName:\"v-ps\",value:(['GENERAL_USER']),expression:\"['GENERAL_USER']\"}],attrs:{\"type\":\"primary\",\"shape\":\"circle\"},on:{\"click\":function($event){return _vm.ok()}}},[_vm._v(_vm._s(_vm.$t('添加')))])],2)])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0da27219\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/udp/udp.vue\n// module id = 930\n// module chunks = 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-91cb951e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./formModel.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./formModel.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./formModel.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-91cb951e\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./formModel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/formModel.vue\n// module id = 931\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-91cb951e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./formModel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"12da3a93\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-91cb951e\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/formModel.vue\n// module id = 932\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".form-model-model{width:720px;position:relative}.form-model-model .title-box{height:61px;border-bottom:1px solid #dcdedc;position:relative}.form-model-model .title-box .name{position:absolute;left:24px;top:18px;font-size:16px}.form-model-model .title-box .go-subtask{position:absolute;right:30px;top:17px}.form-model-model .title-box .go-subtask a{font-size:14px;color:#0097e0;margin-left:10px}.form-model-model .title-box .go-subtask a i.iconfont{font-size:18px;vertical-align:middle}.form-model-model .title-box .go-subtask a em{color:#333;font-style:normal;vertical-align:middle;padding-left:2px}.form-model-model .title-box .go-subtask a:hover em{text-decoration:underline}.form-model-model .bottom-box{position:absolute;bottom:0;left:0;width:100%;text-align:right;height:60px;line-height:60px;border-top:1px solid #dcdedc;background:#fff}.form-model-model .bottom-box .submit{padding-right:20px;position:relative;z-index:9}.form-model-model .content-box{overflow-y:scroll;height:calc(100vh - 61px);padding-bottom:60px}.from-model{padding-top:26px}.from-model>div{clear:both}.from-model .list{position:relative;margin-bottom:10px}.from-model .list .text-box{width:110px;float:left;text-align:right;margin-right:10px}.from-model .list .text-box>span{font-size:14px;color:#777;display:inline-block;padding-top:6px}.from-model .list .cont-box{width:580px;float:left}.from-model .list .cont-box .label-box{width:100%}.from-model .list .cont-box .text-b{font-size:14px;color:#777;display:inline-block;padding:0 6px 0 20px}.from-model .list .add{line-height:32px}.from-model .list .add a{color:#0097e0}.from-model .list .list-t{width:50%;float:left}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-91cb951e\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/formModel.vue\n// module id = 933\n// module chunks = 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-392d9caa\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mr.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./mr.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./mr.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-392d9caa\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mr.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue\n// module id = 934\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-392d9caa\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mr.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"0e2ba7fa\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-392d9caa\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue\n// module id = 935\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".spark-model .list-box-4p .list{margin-bottom:14px}.spark-model .list-box-4p .list .sp1{float:left;width:112px;text-align:right;margin-right:10px;font-size:14px;color:#777;display:inline-block;padding-top:6px}.spark-model .list-box-4p .list .sp2{float:left;margin-right:4px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-392d9caa\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue\n// module id = 936\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1a083a16\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./listBox.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"5fa6a761\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1a083a16\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/listBox.vue\n// module id = 937\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".cont-box .label-box .ans-radio-group{margin-top:7px}.v-checkbox-wrapper.v-checkbox-wrapper-disabled{color:#999}.v-checkbox-wrapper.v-checkbox-wrapper-disabled .v-checkbox .v-checkbox-inner{border-color:#dddee1;background:#f7f7f7;color:#bbbec4}.v-checkbox-wrapper.v-checkbox-wrapper-disabled .v-checkbox .v-checkbox-inner:after{border:2px solid #ddd;border-top:0;border-left:0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1a083a16\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/listBox.vue\n// module id = 938\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text-box\"},[_c('span',[_vm._t(\"text\")],2)]),_vm._v(\" \"),_c('div',{staticClass:\"cont-box\"},[_c('div',{staticClass:\"label-box\"},[_vm._t(\"content\")],2)])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1a083a16\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/listBox.vue\n// module id = 939\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5b25ea8f\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./resources.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"5e8391b0\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-5b25ea8f\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue\n// module id = 940\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".resource-list-model .select-listpp{margin-bottom:6px}.resource-list-model .select-listpp .lt-add{padding-left:4px}.resource-list-model .select-listpp .lt-add a .iconfont{font-size:18px;vertical-align:middle;margin-bottom:-2px;display:inline-block}.resource-list-model>.add a .iconfont{font-size:18px;vertical-align:middle;display:inline-block;margin-top:1px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-5b25ea8f\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue\n// module id = 941\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"resource-list-model\"},[_c('x-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"multiple\":\"\",\"filterable\":\"\",\"disabled\":_vm.isDetails,\"placeholder\":_vm.$t('请选择资源')},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},_vm._l((_vm.resList),function(city){return _c('x-option',{key:city.code,attrs:{\"value\":city.code,\"label\":city.code}})}),1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5b25ea8f\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue\n// module id = 942\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spark-model\"},[_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('程序类型')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-select',{staticStyle:{\"width\":\"100px\"},attrs:{\"disabled\":_vm.isDetails},model:{value:(_vm.programType),callback:function ($$v) {_vm.programType=$$v},expression:\"programType\"}},_vm._l((_vm.programTypeList),function(city){return _c('x-option',{key:city.code,attrs:{\"value\":city.code,\"label\":city.code}})}),1)],1)]),_vm._v(\" \"),(_vm.programType !== 'PYTHON')?_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('主函数的class')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-input',{attrs:{\"disabled\":_vm.isDetails,\"type\":\"input\",\"placeholder\":_vm.$t('请输入mainClass'),\"autocomplete\":\"off\"},model:{value:(_vm.mainClass),callback:function ($$v) {_vm.mainClass=$$v},expression:\"mainClass\"}})],1)]):_vm._e(),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('主jar包')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":_vm.$t('请选择主jar包'),\"filterable\":\"\",\"disabled\":_vm.isDetails},model:{value:(_vm.mainJar),callback:function ($$v) {_vm.mainJar=$$v},expression:\"mainJar\"}},_vm._l((_vm.mainJarList),function(city){return _c('x-option',{key:city.code,attrs:{\"value\":city.code,\"label\":city.code}})}),1)],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('命令行参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-input',{attrs:{\"autosize\":{minRows:2},\"disabled\":_vm.isDetails,\"type\":\"textarea\",\"placeholder\":_vm.$t('请输入命令行参数'),\"autocomplete\":\"off\"},model:{value:(_vm.mainArgs),callback:function ($$v) {_vm.mainArgs=$$v},expression:\"mainArgs\"}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('其他参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-input',{attrs:{\"disabled\":_vm.isDetails,\"autosize\":{minRows:2},\"type\":\"textarea\",\"placeholder\":_vm.$t('请输入其他参数'),\"autocomplete\":\"off\"},model:{value:(_vm.others),callback:function ($$v) {_vm.others=$$v},expression:\"others\"}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('资源')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-resources',{ref:\"refResources\",attrs:{\"resource-list\":_vm.resourceList},on:{\"on-resourcesData\":_vm._onResourcesData}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('自定义参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-local-params',{ref:\"refLocalParams\",attrs:{\"udp-list\":_vm.localParams,\"hide\":false},on:{\"on-local-params\":_vm._onLocalParams}})],1)])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-392d9caa\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue\n// module id = 943\n// module chunks = 3 4 5","var normalizeComponent = require(\"!../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./sql.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./sql.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2d2fa5ab\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./sql.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue\n// module id = 944\n// module chunks = 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4df7487c\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./udfs.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./udfs.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./udfs.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4df7487c\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./udfs.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue\n// module id = 945\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4df7487c\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./udfs.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"323d7c56\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-4df7487c\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue\n// module id = 946\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".udfs-model .add-udfs{color:#0097e0}.udfs-model .t-list{margin-bottom:14px}.udfs-model .t-list .v-btn{width:208px}.udfs-model .t-list .delect-btn{display:inline-block;width:54px!important;vertical-align:middle;background:red;border-color:red}.udfs-model .t-list .delect-btn span{vertical-align:middle!important}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-4df7487c\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue\n// module id = 947\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"udfs-model\"},[_c('x-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"multiple\":\"\",\"disabled\":_vm.isDetails},model:{value:(_vm.udfsStr),callback:function ($$v) {_vm.udfsStr=$$v},expression:\"udfsStr\"}},_vm._l((_vm.udfsList),function(city){return _c('x-option',{key:city.id,attrs:{\"value\":city,\"label\":city.code}})}),1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4df7487c\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue\n// module id = 948\n// module chunks = 3 4 5","var normalizeComponent = require(\"!../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./sqlType.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./sqlType.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4ee4d39a\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./sqlType.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/sqlType.vue\n// module id = 949\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sql-type-model\"},[_c('x-select',{staticStyle:{\"width\":\"90px\"},attrs:{\"disabled\":_vm.isDetails},on:{\"on-change\":_vm._handleSqlTypeChanged},model:{value:(_vm.sqlTypeId),callback:function ($$v) {_vm.sqlTypeId=$$v},expression:\"sqlTypeId\"}},_vm._l((_vm.sqlTypeList),function(city){return _c('x-option',{key:city.id,attrs:{\"value\":city,\"label\":city.code}})}),1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4ee4d39a\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/sqlType.vue\n// module id = 950\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"datasource-model\"},[_c('div',{staticClass:\"select-listpp\"},[_c('x-select',{staticStyle:{\"width\":\"160px\"},attrs:{\"disabled\":_vm.isDetails},on:{\"on-change\":_vm._handleTypeChanged},model:{value:(_vm.type),callback:function ($$v) {_vm.type=$$v},expression:\"type\"}},_vm._l((_vm.typeList),function(city){return _c('x-option',{key:city.code,attrs:{\"value\":city.code,\"label\":city.code}})}),1),_vm._v(\" \"),_c('x-select',{staticStyle:{\"width\":\"288px\"},attrs:{\"placeholder\":_vm.$t('请选择数据源'),\"disabled\":_vm.isDetails},model:{value:(_vm.datasource),callback:function ($$v) {_vm.datasource=$$v},expression:\"datasource\"}},_vm._l((_vm.datasourceList),function(city){return _c('x-option',{key:city.id,attrs:{\"value\":city,\"label\":city.code}})}),1)],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-62aa87e3\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/datasource.vue\n// module id = 951\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sql-model\"},[_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('数据源')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-datasource',{ref:\"refDs\",attrs:{\"data\":{ type:_vm.type,datasource:_vm.datasource }},on:{\"on-dsData\":_vm._onDsData}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('sql类型')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('m-sql-type',{attrs:{\"sql-type\":_vm.sqlType},on:{\"on-sqlType\":_vm._onSqlType}})],1),_vm._v(\" \"),(!_vm.sqlType)?_c('div',{staticStyle:{\"display\":\"inline-block\",\"padding-left\":\"10px\",\"margin-top\":\"2px\"}},[_c('x-checkbox-group',{model:{value:(_vm.showType),callback:function ($$v) {_vm.showType=$$v},expression:\"showType\"}},[_c('x-checkbox',{attrs:{\"label\":'TABLE',\"disabled\":_vm.isDetails}},[_vm._v(_vm._s(_vm.$t('表格')))]),_vm._v(\" \"),_c('x-checkbox',{attrs:{\"label\":'ATTACHMENT',\"disabled\":_vm.isDetails}},[_vm._v(_vm._s(_vm.$t('附件')))])],1)],1):_vm._e()])]),_vm._v(\" \"),_c('m-list-box',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.type === 'HIVE'),expression:\"type === 'HIVE'\"}]},[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('sql参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-input',{attrs:{\"disabled\":_vm.isDetails,\"type\":\"input\",\"placeholder\":_vm.$t('请输入格式为') + ' key1=value1;key2=value2...',\"autocomplete\":\"off\"},model:{value:(_vm.connParams),callback:function ($$v) {_vm.connParams=$$v},expression:\"connParams\"}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('sql语句')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"from-mirror\"},[_c('textarea',{staticStyle:{\"opacity\":\"0\"},attrs:{\"id\":\"code-sql-mirror\",\"name\":\"code-sql-mirror\"}})])])]),_vm._v(\" \"),(_vm.type === 'HIVE')?_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('UDF函数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-udfs',{ref:\"refUdfs\",attrs:{\"udfs\":_vm.udfs,\"type\":_vm.type},on:{\"on-udfsData\":_vm._onUdfsData}})],1)]):_vm._e(),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('自定义参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-local-params',{ref:\"refLocalParams\",attrs:{\"udp-list\":_vm.localParams},on:{\"on-udpData\":_vm._onUdpData}})],1)])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2d2fa5ab\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue\n// module id = 952\n// module chunks = 3 4 5","var normalizeComponent = require(\"!../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./shell.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./shell.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1342a312\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./shell.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue\n// module id = 953\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"shell-model\"},[_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('脚本')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"from-mirror\"},[_c('textarea',{staticStyle:{\"opacity\":\"0\"},attrs:{\"id\":\"code-shell-mirror\",\"name\":\"code-shell-mirror\"}})])])]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('资源')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-resources',{ref:\"refResources\",attrs:{\"resource-list\":_vm.resourceList},on:{\"on-resourcesData\":_vm._onResourcesData}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('自定义参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-local-params',{ref:\"refLocalParams\",attrs:{\"udp-list\":_vm.localParams,\"hide\":false},on:{\"on-local-params\":_vm._onLocalParams}})],1)])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1342a312\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue\n// module id = 954\n// module chunks = 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6bd3ca6b\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./spark.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./spark.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./spark.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6bd3ca6b\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./spark.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue\n// module id = 955\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6bd3ca6b\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./spark.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"0c78d5d0\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-6bd3ca6b\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue\n// module id = 956\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".spark-model .list-box-4p .list{margin-bottom:14px}.spark-model .list-box-4p .list .sp1{float:left;width:112px;text-align:right;margin-right:10px;font-size:14px;color:#777;display:inline-block;padding-top:6px}.spark-model .list-box-4p .list .sp2{float:left;margin-right:4px}.spark-model .list-box-4p .list .sp3{width:176px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-6bd3ca6b\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue\n// module id = 957\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spark-model\"},[_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('程序类型')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-select',{staticStyle:{\"width\":\"130px\"},attrs:{\"disabled\":_vm.isDetails},model:{value:(_vm.programType),callback:function ($$v) {_vm.programType=$$v},expression:\"programType\"}},_vm._l((_vm.programTypeList),function(city){return _c('x-option',{key:city.code,attrs:{\"value\":city.code,\"label\":city.code}})}),1)],1)]),_vm._v(\" \"),(_vm.programType !== 'PYTHON')?_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('主函数的class')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-input',{attrs:{\"disabled\":_vm.isDetails,\"type\":\"input\",\"placeholder\":_vm.$t('请输入mainClass'),\"autocomplete\":\"off\"},model:{value:(_vm.mainClass),callback:function ($$v) {_vm.mainClass=$$v},expression:\"mainClass\"}})],1)]):_vm._e(),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('主jar包')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":_vm.$t('请选择主jar包'),\"filterable\":\"\",\"disabled\":_vm.isDetails},model:{value:(_vm.mainJar),callback:function ($$v) {_vm.mainJar=$$v},expression:\"mainJar\"}},_vm._l((_vm.mainJarList),function(city){return _c('x-option',{key:city.code,attrs:{\"value\":city.code,\"label\":city.code}})}),1)],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('部署方式')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-radio-group',{model:{value:(_vm.deployMode),callback:function ($$v) {_vm.deployMode=$$v},expression:\"deployMode\"}},[_c('x-radio',{attrs:{\"label\":'cluster',\"disabled\":_vm.isDetails}}),_vm._v(\" \"),_c('x-radio',{attrs:{\"label\":'client',\"disabled\":_vm.isDetails}}),_vm._v(\" \"),_c('x-radio',{attrs:{\"label\":'local',\"disabled\":_vm.isDetails}})],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"list-box-4p\"},[_c('div',{staticClass:\"clearfix list\"},[_c('span',{staticClass:\"sp1\"},[_vm._v(_vm._s(_vm.$t('Driver内核数')))]),_vm._v(\" \"),_c('span',{staticClass:\"sp2\"},[_c('x-input',{staticStyle:{\"width\":\"200px\"},attrs:{\"disabled\":_vm.isDetails,\"type\":\"input\",\"placeholder\":_vm.$t('请输入Driver内核数'),\"autocomplete\":\"off\"},model:{value:(_vm.driverCores),callback:function ($$v) {_vm.driverCores=$$v},expression:\"driverCores\"}})],1),_vm._v(\" \"),_c('span',{staticClass:\"sp1 sp3\"},[_vm._v(_vm._s(_vm.$t('Driver内存数')))]),_vm._v(\" \"),_c('span',{staticClass:\"sp2\"},[_c('x-input',{staticStyle:{\"width\":\"186px\"},attrs:{\"disabled\":_vm.isDetails,\"type\":\"input\",\"placeholder\":_vm.$t('请输入Driver内存数'),\"autocomplete\":\"off\"},model:{value:(_vm.driverMemory),callback:function ($$v) {_vm.driverMemory=$$v},expression:\"driverMemory\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('span',{staticClass:\"sp1\"},[_vm._v(_vm._s(_vm.$t('Executor数量')))]),_vm._v(\" \"),_c('span',{staticClass:\"sp2\"},[_c('x-input',{staticStyle:{\"width\":\"200px\"},attrs:{\"disabled\":_vm.isDetails,\"type\":\"input\",\"placeholder\":_vm.$t('请输入Executor数量'),\"autocomplete\":\"off\"},model:{value:(_vm.numExecutors),callback:function ($$v) {_vm.numExecutors=$$v},expression:\"numExecutors\"}})],1),_vm._v(\" \"),_c('span',{staticClass:\"sp1 sp3\"},[_vm._v(_vm._s(_vm.$t('Executor内存数')))]),_vm._v(\" \"),_c('span',{staticClass:\"sp2\"},[_c('x-input',{staticStyle:{\"width\":\"186px\"},attrs:{\"disabled\":_vm.isDetails,\"type\":\"input\",\"placeholder\":_vm.$t('请输入Executor内存数'),\"autocomplete\":\"off\"},model:{value:(_vm.executorMemory),callback:function ($$v) {_vm.executorMemory=$$v},expression:\"executorMemory\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('span',{staticClass:\"sp1\"},[_vm._v(_vm._s(_vm.$t('Executor内核数')))]),_vm._v(\" \"),_c('span',{staticClass:\"sp2\"},[_c('x-input',{staticStyle:{\"width\":\"200px\"},attrs:{\"disabled\":_vm.isDetails,\"type\":\"input\",\"placeholder\":_vm.$t('请输入Executor内核数'),\"autocomplete\":\"off\"},model:{value:(_vm.executorCores),callback:function ($$v) {_vm.executorCores=$$v},expression:\"executorCores\"}})],1)])]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('命令行参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-input',{attrs:{\"autosize\":{minRows:2},\"disabled\":_vm.isDetails,\"type\":\"textarea\",\"placeholder\":_vm.$t('请输入命令行参数'),\"autocomplete\":\"off\"},model:{value:(_vm.mainArgs),callback:function ($$v) {_vm.mainArgs=$$v},expression:\"mainArgs\"}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('其他参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-input',{attrs:{\"disabled\":_vm.isDetails,\"autosize\":{minRows:2},\"type\":\"textarea\",\"placeholder\":_vm.$t('请输入其他参数')},model:{value:(_vm.others),callback:function ($$v) {_vm.others=$$v},expression:\"others\"}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('资源')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-resources',{ref:\"refResources\",attrs:{\"resource-list\":_vm.resourceList},on:{\"on-resourcesData\":_vm._onResourcesData}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('自定义参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-local-params',{ref:\"refLocalParams\",attrs:{\"udp-list\":_vm.localParams,\"hide\":false},on:{\"on-local-params\":_vm._onLocalParams}})],1)])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6bd3ca6b\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue\n// module id = 958\n// module chunks = 3 4 5","var normalizeComponent = require(\"!../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./python.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./python.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1e41f351\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./python.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue\n// module id = 959\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"shell-model\"},[_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('脚本')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"from-mirror\"},[_c('textarea',{staticStyle:{\"opacity\":\"0\"},attrs:{\"id\":\"code-python-mirror\",\"name\":\"code-python-mirror\"}})])])]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('资源')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-resources',{ref:\"refResources\",attrs:{\"resource-list\":_vm.resourceList},on:{\"on-resourcesData\":_vm._onResourcesData}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('自定义参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-local-params',{ref:\"refLocalParams\",attrs:{\"udp-list\":_vm.localParams,\"hide\":false},on:{\"on-local-params\":_vm._onLocalParams}})],1)])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1e41f351\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue\n// module id = 960\n// module chunks = 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-378b770a\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./procedure.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./procedure.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./procedure.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-378b770a\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./procedure.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue\n// module id = 961\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-378b770a\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./procedure.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"2f56b82a\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-378b770a\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue\n// module id = 962\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-378b770a\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue\n// module id = 963\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"procedure-model\"},[_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('数据源')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-datasource',{ref:\"refDs\",attrs:{\"supportType\":['MYSQL','POSTGRESQL'],\"data\":{ type:_vm.type,datasource:_vm.datasource }},on:{\"on-dsData\":_vm._onDsData}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('方法')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('x-input',{attrs:{\"type\":\"input\",\"disabled\":_vm.isDetails,\"placeholder\":_vm.$t('请输入method(选填)'),\"autocomplete\":\"off\"},model:{value:(_vm.method),callback:function ($$v) {_vm.method=$$v},expression:\"method\"}})],1)]),_vm._v(\" \"),_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('自定义参数')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('m-local-params',{ref:\"refLocalParams\",attrs:{\"udp-list\":_vm.localParams},on:{\"on-local-params\":_vm._onLocalParams}})],1)])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-378b770a\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue\n// module id = 964\n// module chunks = 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0cc53381\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./dependent.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./dependent.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./dependent.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0cc53381\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dependent.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue\n// module id = 965\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0cc53381\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./dependent.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"cd1033ee\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0cc53381\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue\n// module id = 966\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".dependence-model{margin-top:-10px}.dependence-model .dep-opt{margin-bottom:10px;padding-top:3px;line-height:24px}.dependence-model .dep-opt .add-dep{color:#0097e0;margin-right:10px}.dependence-model .dep-opt .add-dep i{font-size:18px;vertical-align:middle}.dependence-model .dep-list{margin-bottom:16px;position:relative;border-left:1px solid #eee;padding-left:16px;margin-left:-16px;transition:all .2s ease-out;padding-bottom:20px}.dependence-model .dep-list:hover{border-left:1px solid #0097e0;transition:all .2s ease-out}.dependence-model .dep-list:hover .dep-line-pie{transition:all .2s ease-out;border:1px solid #0097e0;background:#0097e0;color:#fff}.dependence-model .dep-list .dep-line-pie{transition:all .2s ease-out;position:absolute;width:20px;height:20px;border:1px solid #e2e2e2;text-align:center;top:50%;margin-top:-20px;z-index:1;left:-10px;border-radius:10px;background:#fff;font-size:12px;cursor:pointer}.dependence-model .dep-list .dep-line-pie::selection{background:transparent}.dependence-model .dep-list .dep-line-pie::-moz-selection{background:transparent}.dependence-model .dep-list .dep-line-pie::-webkit-selection{background:transparent}.dependence-model .dep-list .dep-delete{position:absolute;bottom:-6px;left:14px;font-size:18px;color:red;cursor:pointer}.dependence-model .dep-box{border-left:4px solid #eee;margin-left:-46px;padding-left:42px;position:relative}.dependence-model .dep-box .dep-relation{position:absolute;width:20px;height:20px;border:1px solid #e2e2e2;text-align:center;top:50%;margin-top:-10px;z-index:1;left:-12px;border-radius:10px;background:#fff;font-size:12px;cursor:pointer}.dependence-model .dep-box .dep-relation::selection{background:transparent}.dependence-model .dep-box .dep-relation::-moz-selection{background:transparent}.dependence-model .dep-box .dep-relation::-webkit-selection{background:transparent}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0cc53381\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue\n// module id = 967\n// module chunks = 3 4 5","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0312320a\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./dependItemList.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./dependItemList.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./dependItemList.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0312320a\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dependItemList.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue\n// module id = 968\n// module chunks = 3 4 5","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../../../../node_modules/css-loader/index.js?minimize!../../../../../../../../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0312320a\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../../../../../../../../../node_modules/sass-loader/lib/loader.js!../../../../../../../../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./dependItemList.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../../../../../../../../../node_modules/vue-loader/node_modules/vue-style-loader/lib/addStylesClient.js\")(\"3fb67eba\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0312320a\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue\n// module id = 969\n// module chunks = 3 4 5","exports = module.exports = require(\"../../../../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".dep-list-model{position:relative;min-height:32px}.dep-list-model .list{margin-bottom:6px}.dep-list-model .list .operation{padding-left:4px}.dep-list-model .list .operation a i{font-size:18px;vertical-align:middle}.dep-list-model .list .operation .delete{color:red}.dep-list-model .list .operation .add{color:#0097e0}.dep-list-model .instance-state{display:inline-block;width:24px}.dep-list-model .instance-state .iconfont{font-size:20px;vertical-align:middle;cursor:pointer;margin-left:6px}.dep-list-model .instance-state .iconfont.icon-SUCCESS{color:#3c0}.dep-list-model .instance-state .iconfont.icon-WAITING{color:#888}.dep-list-model .instance-state .iconfont.icon-FAILED{color:#f31322}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0312320a\",\"scoped\":false,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue\n// module id = 970\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"dep-list-model\"},_vm._l((_vm.dependItemList),function(el,$index){return _c('div',{staticClass:\"list\",on:{\"click\":function($event){_vm.itemIndex = $index}}},[_c('x-select',{style:({width:_vm.isInstance ? '140px' : '162px'}),attrs:{\"filterable\":\"\",\"disabled\":_vm.isDetails},on:{\"on-change\":_vm._onChangeDefinitionId},model:{value:(el.definitionId),callback:function ($$v) {_vm.$set(el, \"definitionId\", $$v)},expression:\"el.definitionId\"}},_vm._l((_vm.definitionList),function(item){return _c('x-option',{key:item.value,attrs:{\"value\":item.value,\"label\":item.label}})}),1),_vm._v(\" \"),_c('x-select',{style:({width:_vm.isInstance ? '144px' : '156px'}),attrs:{\"filterable\":\"\",\"disabled\":_vm.isDetails},model:{value:(el.depTasks),callback:function ($$v) {_vm.$set(el, \"depTasks\", $$v)},expression:\"el.depTasks\"}},_vm._l((el.depTasksList || []),function(item){return _c('x-option',{key:item,attrs:{\"value\":item,\"label\":item}})}),1),_vm._v(\" \"),_c('x-select',{staticStyle:{\"width\":\"80px\"},attrs:{\"disabled\":_vm.isDetails},on:{\"on-change\":_vm._onChangeCycle},model:{value:(el.cycle),callback:function ($$v) {_vm.$set(el, \"cycle\", $$v)},expression:\"el.cycle\"}},_vm._l((_vm.cycleList),function(item){return _c('x-option',{key:item.value,attrs:{\"value\":item.value,\"label\":item.label}})}),1),_vm._v(\" \"),_c('x-select',{staticStyle:{\"width\":\"116px\"},attrs:{\"disabled\":_vm.isDetails},model:{value:(el.dateValue),callback:function ($$v) {_vm.$set(el, \"dateValue\", $$v)},expression:\"el.dateValue\"}},_vm._l((el.dateValueList || []),function(item){return _c('x-option',{key:item.value,attrs:{\"value\":item.value,\"label\":item.label}})}),1),_vm._v(\" \"),(_vm.isInstance)?[_c('span',{staticClass:\"instance-state\"},[(el.state === 'SUCCESS')?_c('i',{staticClass:\"iconfont\",class:'icon-' + el.state,attrs:{\"data-toggle\":\"tooltip\",\"data-container\":\"body\",\"title\":_vm.$t('成功')}},[_vm._v(\"\")]):_vm._e(),_vm._v(\" \"),(el.state === 'WAITING')?_c('i',{staticClass:\"iconfont\",class:'icon-' + el.state,attrs:{\"data-toggle\":\"tooltip\",\"data-container\":\"body\",\"title\":_vm.$t('等待')}},[_vm._v(\"\")]):_vm._e(),_vm._v(\" \"),(el.state === 'FAILED')?_c('i',{staticClass:\"iconfont\",class:'icon-' + el.state,attrs:{\"data-toggle\":\"tooltip\",\"data-container\":\"body\",\"title\":_vm.$t('失败')}},[_vm._v(\"\")]):_vm._e()])]:_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"operation\"},[_c('a',{staticClass:\"delete\",attrs:{\"href\":\"javascript:\"},on:{\"click\":function($event){!_vm.isDetails && _vm._remove($index)}}},[_c('i',{staticClass:\"iconfont\",class:_vm._isDetails,attrs:{\"data-toggle\":\"tooltip\",\"data-container\":\"body\",\"title\":_vm.$t('删除')}},[_vm._v(\"\")])]),_vm._v(\" \"),($index === (_vm.dependItemList.length - 1))?_c('a',{staticClass:\"add\",attrs:{\"href\":\"javascript:\"},on:{\"click\":function($event){!_vm.isDetails && _vm._add()}}},[_c('i',{staticClass:\"iconfont\",class:_vm._isDetails,attrs:{\"data-toggle\":\"tooltip\",\"data-container\":\"body\",\"title\":_vm.$t('添加')}},[_vm._v(\"\")])]):_vm._e()])],2)}),0)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0312320a\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue\n// module id = 971\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"dependence-model\"},[_c('m-list-box',[_c('div',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(_vm.$t('添加依赖')))]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"dep-opt\"},[_c('a',{staticClass:\"add-dep\",attrs:{\"href\":\"javascript:\"},on:{\"click\":function($event){!_vm.isDetails && _vm._addDep()}}},[(!_vm.isLoading)?_c('i',{staticClass:\"iconfont\",class:_vm._isDetails,attrs:{\"data-toggle\":\"tooltip\",\"title\":_vm.$t('添加')}},[_vm._v(\"\\n \\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isLoading)?_c('i',{staticClass:\"iconfont fa fa-spin\",attrs:{\"data-toggle\":\"tooltip\",\"title\":_vm.$t('添加')}},[_vm._v(\"\\n \\n \")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"dep-box\"},[(_vm.dependTaskList.length)?_c('span',{staticClass:\"dep-relation\",on:{\"click\":function($event){!_vm.isDetails && _vm._setGlobalRelation()}}},[_vm._v(\"\\n \"+_vm._s(_vm.relation === 'AND' ? _vm.$t('且') : _vm.$t('或'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.dependTaskList),function(el,$index){return _c('div',{staticClass:\"dep-list\"},[(el.dependItemList.length)?_c('span',{staticClass:\"dep-line-pie\",on:{\"click\":function($event){!_vm.isDetails && _vm._setRelation($index)}}},[_vm._v(\"\\n \"+_vm._s(el.relation === 'AND' ? _vm.$t('且') : _vm.$t('或'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('i',{staticClass:\"iconfont dep-delete\",class:_vm._isDetails,attrs:{\"data-toggle\":\"tooltip\",\"data-container\":\"body\",\"title\":_vm.$t('删除')},on:{\"click\":function($event){!_vm.isDetails && _vm._deleteDep($index)}}},[_vm._v(\"\\n \\n \")]),_vm._v(\" \"),_c('m-depend-item-list',{attrs:{\"index\":$index},on:{\"on-delete-all\":_vm._onDeleteAll},model:{value:(el.dependItemList),callback:function ($$v) {_vm.$set(el, \"dependItemList\", $$v)},expression:\"el.dependItemList\"}})],1)})],2)])])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0cc53381\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue\n// module id = 972\n// module chunks = 3 4 5","var normalizeComponent = require(\"!../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./sub_process.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./sub_process.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-53f16ddc\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./sub_process.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue\n// module id = 973\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sub_process-model\"},[_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text-box\"},[_c('span',[_vm._v(_vm._s(_vm.$t('子节点')))])]),_vm._v(\" \"),_c('div',{staticClass:\"cont-box\"},[_c('div',{staticClass:\"label-box\"},[_c('x-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"filterable\":\"\",\"disabled\":_vm.isDetails},on:{\"on-change\":_vm._handleWdiChanged},model:{value:(_vm.wdiCurr),callback:function ($$v) {_vm.wdiCurr=$$v},expression:\"wdiCurr\"}},_vm._l((_vm.processDefinitionList),function(city){return _c('x-option',{key:city.code,attrs:{\"value\":city.id,\"label\":city.code}})}),1)],1)])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-53f16ddc\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue\n// module id = 974\n// module chunks = 3 4 5","var normalizeComponent = require(\"!../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./selectInput.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./selectInput.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7911c305\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./selectInput.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/_source/selectInput.vue\n// module id = 975\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('x-select',{staticStyle:{\"width\":\"170px\"},attrs:{\"disabled\":_vm.isDetails},on:{\"on-change\":_vm._onChange},scopedSlots:_vm._u([{key:\"trigger\",fn:function(ref){\nvar selectedModel = ref.selectedModel;\nreturn (_vm.isInput)?_c('x-input',{ref:\"input\",staticStyle:{\"width\":\"100%\"},attrs:{\"disabled\":_vm.isDetails,\"maxlength\":\"4\",\"placeholder\":_vm.$t('请选择'),\"value\":selectedModel === null ? '0' : selectedModel.value},on:{\"on-blur\":_vm._onBlur,\"on-click-icon\":function($event){$event.stopPropagation();return _vm._ckIcon($event)}}},[_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isIconState),expression:\"!isIconState\"}],staticClass:\"fa fa-times-circle\",staticStyle:{\"font-size\":\"15px\",\"cursor\":\"pointer\"},attrs:{\"slot\":\"suffix\"},slot:\"suffix\"}),_vm._v(\" \"),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isIconState),expression:\"isIconState\"}],staticClass:\"ans-icon-arrow-down\",staticStyle:{\"font-size\":\"12px\"},attrs:{\"slot\":\"suffix\"},slot:\"suffix\"})]):_vm._e()}}],null,true),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_vm._v(\" \"),_vm._l((_vm.list),function(city){return _c('x-option',{key:city,attrs:{\"value\":city,\"label\":city}})})],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7911c305\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/_source/selectInput.vue\n// module id = 976\n// module chunks = 3 4 5","var normalizeComponent = require(\"!../../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeoutAlarm.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeoutAlarm.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0f1c5934\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeoutAlarm.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/conf/home/pages/dag/_source/formModel/_source/timeoutAlarm.vue\n// module id = 977\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"timeout-alarm-model\"},[_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text-box\"},[_c('span',[_vm._v(_vm._s(_vm.$t('任务超时告警')))])]),_vm._v(\" \"),_c('div',{staticClass:\"cont-box\"},[_c('label',{staticClass:\"label-box\"},[_c('div',{staticStyle:{\"padding-top\":\"5px\"}},[_c('x-switch',{attrs:{\"disabled\":_vm.isDetails},on:{\"on-click\":_vm._onSwitch},model:{value:(_vm.enable),callback:function ($$v) {_vm.enable=$$v},expression:\"enable\"}})],1)])])]),_vm._v(\" \"),(_vm.enable)?_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text-box\"},[_c('span',[_vm._v(_vm._s(_vm.$t('超时策略')))])]),_vm._v(\" \"),_c('div',{staticClass:\"cont-box\"},[_c('label',{staticClass:\"label-box\"},[_c('div',{staticStyle:{\"padding-top\":\"6px\"}},[_c('x-checkbox-group',{model:{value:(_vm.strategy),callback:function ($$v) {_vm.strategy=$$v},expression:\"strategy\"}},[_c('x-checkbox',{attrs:{\"label\":\"WARN\",\"disabled\":_vm.isDetails}},[_vm._v(_vm._s(_vm.$t('超时告警')))]),_vm._v(\" \"),_c('x-checkbox',{attrs:{\"label\":\"FAILED\",\"disabled\":_vm.isDetails}},[_vm._v(_vm._s(_vm.$t('超时失败')))])],1)],1)])])]):_vm._e(),_vm._v(\" \"),(_vm.enable)?_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text-box\"},[_c('span',[_vm._v(_vm._s(_vm.$t('超时时长')))])]),_vm._v(\" \"),_c('div',{staticClass:\"cont-box\"},[_c('label',{staticClass:\"label-box\"},[_c('x-input',{staticStyle:{\"width\":\"128px\"},attrs:{\"disabled\":_vm.isDetails},model:{value:(_vm.interval),callback:function ($$v) {_vm.interval=$$v},expression:\"interval\"}},[_c('span',{attrs:{\"slot\":\"append\"},slot:\"append\"},[_vm._v(_vm._s(_vm.$t('分')))])])],1)])]):_vm._e()])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0f1c5934\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/_source/timeoutAlarm.vue\n// module id = 978\n// module chunks = 3 4 5","const clickoutsideContext = '@@clickoutsideContext'\n\nexport default {\n bind (el, binding, vnode) {\n const documentHandler = function (e) {\n if (!vnode.context || el.contains(e.target)) {\n return false\n }\n if (binding.expression) {\n vnode.context[el[clickoutsideContext].methodName](e)\n } else {\n el[clickoutsideContext].bindingFn(e)\n }\n }\n el[clickoutsideContext] = {\n documentHandler,\n methodName: binding.expression,\n bindingFn: binding.value\n }\n setTimeout(() => {\n document.addEventListener('click', documentHandler)\n }, 0)\n },\n update (el, binding) {\n el[clickoutsideContext].methodName = binding.expression\n el[clickoutsideContext].bindingFn = binding.value\n },\n unbind (el) {\n document.removeEventListener('click', el[clickoutsideContext].documentHandler)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/module/util/clickoutside.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm._handleClose),expression:\"_handleClose\"}],staticClass:\"form-model-model\"},[_c('div',{staticClass:\"title-box\"},[_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.$t('当前节点设置')))]),_vm._v(\" \"),_c('span',{staticClass:\"go-subtask\"},[_c('m-log',{attrs:{\"item\":_vm.backfillItem}},[_c('template',{slot:\"history\"},[_c('a',{attrs:{\"href\":\"javascript:\"},on:{\"click\":_vm._seeHistory}},[_c('i',{staticClass:\"iconfont\"},[_vm._v(\"\")]),_c('em',[_vm._v(_vm._s(_vm.$t('查看历史')))])])]),_vm._v(\" \"),_c('template',{slot:\"log\"},[_c('a',{attrs:{\"href\":\"javascript:\"}},[_c('i',{staticClass:\"iconfont\"},[_vm._v(\"\")]),_c('em',[_vm._v(_vm._s(_vm.$t('查看日志')))])])])],2),_vm._v(\" \"),(_vm._isGoSubProcess)?_c('a',{attrs:{\"href\":\"javascript:\"},on:{\"click\":_vm._goSubProcess}},[_c('i',{staticClass:\"iconfont\"},[_vm._v(\"\")]),_c('em',[_vm._v(_vm._s(_vm.$t('进入该子节点')))])]):_vm._e()],1)]),_vm._v(\" \"),(_vm.isContentBox)?_c('div',{staticClass:\"content-box\"},[_c('div',{staticClass:\"from-model\"},[_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text-box\"},[_c('span',[_vm._v(_vm._s(_vm.$t('节点名称')))])]),_vm._v(\" \"),_c('div',{staticClass:\"cont-box\"},[_c('label',{staticClass:\"label-box\"},[_c('x-input',{attrs:{\"type\":\"text\",\"disabled\":_vm.isDetails,\"placeholder\":_vm.$t('请输入name(必填)'),\"maxlength\":\"100\",\"autocomplete\":\"off\"},on:{\"on-blur\":function($event){return _vm._verifName()}},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text-box\"},[_c('span',[_vm._v(_vm._s(_vm.$t('运行标志')))])]),_vm._v(\" \"),_c('div',{staticClass:\"cont-box\"},[_c('label',{staticClass:\"label-box\"},[_c('x-radio-group',{model:{value:(_vm.runFlag),callback:function ($$v) {_vm.runFlag=$$v},expression:\"runFlag\"}},[_c('x-radio',{attrs:{\"label\":'NORMAL',\"disabled\":_vm.isDetails}},[_vm._v(_vm._s(_vm.$t('正常')))]),_vm._v(\" \"),_c('x-radio',{attrs:{\"label\":'FORBIDDEN',\"disabled\":_vm.isDetails}},[_vm._v(_vm._s(_vm.$t('禁止执行')))])],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text-box\"},[_c('span',[_vm._v(_vm._s(_vm.$t('描述')))])]),_vm._v(\" \"),_c('div',{staticClass:\"cont-box\"},[_c('label',{staticClass:\"label-box\"},[_c('x-input',{attrs:{\"resize\":\"\",\"autosize\":{minRows:2},\"type\":\"textarea\",\"disabled\":_vm.isDetails,\"placeholder\":_vm.$t('请输入desc'),\"autocomplete\":\"off\"},model:{value:(_vm.desc),callback:function ($$v) {_vm.desc=$$v},expression:\"desc\"}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text-box\"},[_c('span',[_vm._v(_vm._s(_vm.$t('任务优先级')))])]),_vm._v(\" \"),_c('div',{staticClass:\"cont-box\"},[_c('label',{staticClass:\"label-box\"},[_c('m-priority',{staticStyle:{\"width\":\"180px\"},model:{value:(_vm.taskInstancePriority),callback:function ($$v) {_vm.taskInstancePriority=$$v},expression:\"taskInstancePriority\"}})],1)])]),_vm._v(\" \"),(_vm.taskType !== 'SUB_PROCESS')?_c('div',{staticClass:\"clearfix list\"},[_c('div',{staticClass:\"text-box\"},[_c('span',[_vm._v(_vm._s(_vm.$t('失败重试次数')))])]),_vm._v(\" \"),_c('div',{staticClass:\"cont-box\"},[_c('m-select-input',{attrs:{\"list\":[0,1,2,3,4]},model:{value:(_vm.maxRetryTimes),callback:function ($$v) {_vm.maxRetryTimes=$$v},expression:\"maxRetryTimes\"}}),_vm._v(\" \"),_c('span',[_vm._v(\"(\"+_vm._s(_vm.$t('次'))+\")\")]),_vm._v(\" \"),_c('span',{staticClass:\"text-b\"},[_vm._v(_vm._s(_vm.$t('失败重试间隔')))]),_vm._v(\" \"),_c('m-select-input',{attrs:{\"list\":[1,10,30,60,120]},model:{value:(_vm.retryInterval),callback:function ($$v) {_vm.retryInterval=$$v},expression:\"retryInterval\"}}),_vm._v(\" \"),_c('span',[_vm._v(\"(\"+_vm._s(_vm.$t('分'))+\")\")])],1)]):_vm._e(),_vm._v(\" \"),_c('m-timeout-alarm',{ref:\"timeout\",attrs:{\"backfill-item\":_vm.backfillItem},on:{\"on-timeout\":_vm._onTimeout}}),_vm._v(\" \"),(_vm.taskType === 'SHELL')?_c('m-shell',{ref:\"SHELL\",attrs:{\"backfill-item\":_vm.backfillItem},on:{\"on-params\":_vm._onParams}}):_vm._e(),_vm._v(\" \"),(_vm.taskType === 'SUB_PROCESS')?_c('m-sub-process',{ref:\"SUB_PROCESS\",attrs:{\"backfill-item\":_vm.backfillItem},on:{\"on-params\":_vm._onParams,\"on-set-process-name\":_vm._onSetProcessName}}):_vm._e(),_vm._v(\" \"),(_vm.taskType === 'PROCEDURE')?_c('m-procedure',{ref:\"PROCEDURE\",attrs:{\"backfill-item\":_vm.backfillItem},on:{\"on-params\":_vm._onParams}}):_vm._e(),_vm._v(\" \"),(_vm.taskType === 'SQL')?_c('m-sql',{ref:\"SQL\",attrs:{\"backfill-item\":_vm.backfillItem},on:{\"on-params\":_vm._onParams}}):_vm._e(),_vm._v(\" \"),(_vm.taskType === 'SPARK')?_c('m-spark',{ref:\"SPARK\",attrs:{\"backfill-item\":_vm.backfillItem},on:{\"on-params\":_vm._onParams}}):_vm._e(),_vm._v(\" \"),(_vm.taskType === 'MR')?_c('m-mr',{ref:\"MR\",attrs:{\"backfill-item\":_vm.backfillItem},on:{\"on-params\":_vm._onParams}}):_vm._e(),_vm._v(\" \"),(_vm.taskType === 'PYTHON')?_c('m-python',{ref:\"PYTHON\",attrs:{\"backfill-item\":_vm.backfillItem},on:{\"on-params\":_vm._onParams}}):_vm._e(),_vm._v(\" \"),(_vm.taskType === 'DEPENDENT')?_c('m-dependent',{ref:\"DEPENDENT\",attrs:{\"backfill-item\":_vm.backfillItem},on:{\"on-dependent\":_vm._onDependent}}):_vm._e()],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"bottom-box\"},[_c('div',{staticClass:\"submit\",staticStyle:{\"background\":\"#fff\"}},[_c('x-button',{attrs:{\"type\":\"text\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\" \"+_vm._s(_vm.$t('取消'))+\" \")]),_vm._v(\" \"),_c('x-button',{directives:[{name:\"ps\",rawName:\"v-ps\",value:(['GENERAL_USER']),expression:\"['GENERAL_USER']\"}],attrs:{\"type\":\"primary\",\"shape\":\"circle\",\"loading\":_vm.spinnerLoading,\"disabled\":_vm.isDetails},on:{\"click\":function($event){return _vm.ok()}}},[_vm._v(_vm._s(_vm.spinnerLoading ? 'Loading...' : _vm.$t('确认添加'))+\" \")])],1)])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-91cb951e\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/formModel/formModel.vue\n// module id = 980\n// module chunks = 3 4 5","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"clearfix dag-model\"},[_c('div',{staticClass:\"toolbar\"},[_c('div',{staticClass:\"title\"},[_c('span',[_vm._v(_vm._s(_vm.$t('工具栏')))])]),_vm._v(\" \"),_c('div',{staticClass:\"toolbar-btn\"},_vm._l((_vm.tasksTypeList),function(item,v){return _c('div',{staticClass:\"bar-box roundedRect jtk-draggable jtk-droppable jtk-endpoint-anchor jtk-connected\",class:v === _vm.dagBarId ? 'active' : '',attrs:{\"id\":v},on:{\"mousedown\":function($event){return _vm._getDagId(v)}}},[_c('div',{class:_vm._isDetails,attrs:{\"data-toggle\":\"tooltip\",\"title\":item.desc}},[_c('div',{staticClass:\"icos\",class:'icos-' + v})])])}),0)]),_vm._v(\" \"),_c('div',{staticClass:\"dag-contect\"},[_c('div',{staticClass:\"dag-toolbar\"},[_c('div',{staticClass:\"assist-btn\"},[_c('x-button',{staticStyle:{\"vertical-align\":\"middle\"},attrs:{\"data-toggle\":\"tooltip\",\"title\":_vm.$t('查看变量'),\"data-container\":\"body\",\"type\":\"primary\",\"size\":\"xsmall\",\"disabled\":_vm.$route.name !== 'projects-instance-details',\"icon\":\"fa fa-code\"},on:{\"click\":_vm._toggleView}}),_vm._v(\" \"),_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.name))])],1),_vm._v(\" \"),_c('div',{staticClass:\"save-btn\"},[_c('div',{staticClass:\"operation\",staticStyle:{\"vertical-align\":\"middle\"}},_vm._l((_vm.toolOperList),function(item,$index){return _c('a',{class:_vm._operationClass(item),attrs:{\"href\":\"javascript:\",\"id\":item.code},on:{\"click\":function($event){return _vm._ckOperation(item,$event)}}},[_c('i',{staticClass:\"iconfont\",attrs:{\"data-toggle\":\"tooltip\",\"title\":item.desc},domProps:{\"innerHTML\":_vm._s(item.icon)}})])}),0),_vm._v(\" \"),(_vm.type === 'instance')?_c('x-button',{staticStyle:{\"vertical-align\":\"middle\"},attrs:{\"data-toggle\":\"tooltip\",\"title\":_vm.$t('刷新DAG状态'),\"data-container\":\"body\",\"icon\":\"fa fa-refresh\",\"type\":\"primary\",\"loading\":_vm.isRefresh,\"size\":\"xsmall\"},on:{\"click\":function($event){!_vm.isRefresh && _vm._refresh()}}}):_vm._e(),_vm._v(\" \"),(_vm.isRtTasks)?_c('x-button',{staticStyle:{\"vertical-align\":\"middle\"},attrs:{\"type\":\"primary\",\"size\":\"xsmall\",\"icon\":\"fa fa-reply\"},on:{\"click\":_vm._rtNodesDag}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('返回上一节点'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('x-button',{directives:[{name:\"ps\",rawName:\"v-ps\",value:(['GENERAL_USER']),expression:\"['GENERAL_USER']\"}],staticStyle:{\"vertical-align\":\"middle\"},attrs:{\"type\":\"primary\",\"size\":\"xsmall\",\"loading\":_vm.spinnerLoading,\"icon\":\"fa fa-save\",\"disabled\":_vm.isDetails},on:{\"click\":_vm._saveChart}},[_vm._v(\"\\n \"+_vm._s(_vm.spinnerLoading ? 'Loading...' : _vm.$t('保存'))+\"\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"scrollbar dag-container\"},[_c('div',{staticClass:\"jtk-demo\",attrs:{\"id\":\"jtk-demo\"}},[_c('div',{staticClass:\"jtk-demo-canvas canvas-wide statemachine-demo jtk-surface jtk-surface-nopan jtk-draggable\",attrs:{\"id\":\"canvas\"}})])])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6010fed6\",\"hasScoped\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/js/conf/home/pages/dag/_source/dag.vue\n// module id = 981\n// module chunks = 3 4 5"],"sourceRoot":""}