(function(f){"object"==typeof exports&&"object"==typeof module?f(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],f):f(CodeMirror)})(function(f){function m(a,b){this.cm=a;this.options=this.buildOptions(b);this.widget=null;this.tick=this.debounce=0;this.startPos=this.cm.getCursor();this.startLen=this.cm.getLine(this.startPos.line).length;var c=this;a.on("cursorActivity",this.activityFunc=function(){c.cursorActivity()})}function t(a,b){function c(a, c){var d;d="string"!=typeof c?function(a){return c(a,b)}:e.hasOwnProperty(c)?e[c]:c;f[a]=d}var e={Up:function(){b.moveFocus(-1)},Down:function(){b.moveFocus(1)},PageUp:function(){b.moveFocus(-b.menuSize()+1,!0)},PageDown:function(){b.moveFocus(b.menuSize()-1,!0)},Home:function(){b.setFocus(0)},End:function(){b.setFocus(b.length-1)},Enter:b.pick,Tab:b.pick,Esc:b.close},d=a.options.customKeys,f=d?{}:e;if(d)for(var g in d)d.hasOwnProperty(g)&&c(g,d[g]);if(d=a.options.extraKeys)for(g in d)d.hasOwnProperty(g)&& c(g,d[g]);return f}function s(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.parentNode==a)return b;b=b.parentNode}}function l(a,b){this.completion=a;this.data=b;this.picked=!1;var c=this,e=a.cm,d=this.hints=document.createElement("ul");d.className="CodeMirror-hints";this.selectedHint=b.selectedHint||0;for(var k=b.list,g=0;gi&&(d.style.height=i-5+"px",d.style.top=(p=g.bottom-h.top)+"px",i=e.getCursor(),b.from.ch!=i.ch&&(g=e.cursorCoords(i),d.style.left=(o=g.left)+"px",h=d.getBoundingClientRect()))}i=h.right-j;0j&&(d.style.width=j-5+"px",i-=h.right-h.left-j),d.style.left=(o=g.left-i)+"px");e.addKeyMap(this.keyMap=t(a,{moveFocus:function(a,b){c.changeActive(c.selectedHint+a,b)},setFocus:function(a){c.changeActive(a)}, menuSize:function(){return c.screenAmount()},length:k.length,close:function(){a.close()},pick:function(){c.pick()},data:b}));if(a.options.closeOnUnfocus){var m;e.on("blur",this.onBlur=function(){m=setTimeout(function(){a.close()},100)});e.on("focus",this.onFocus=function(){clearTimeout(m)})}var n=e.getScrollInfo();e.on("scroll",this.onScroll=function(){var c=e.getScrollInfo(),b=e.getWrapperElement().getBoundingClientRect(),f=p+n.top-c.top,g=f-(window.pageYOffset||(document.documentElement||document.body).scrollTop); l||(g=g+d.offsetHeight);if(g<=b.top||g>=b.bottom)return a.close();d.style.top=f+"px";d.style.left=o+n.left-c.left+"px"});f.on(d,"dblclick",function(a){if((a=s(d,a.target||a.srcElement))&&a.hintId!=null){c.changeActive(a.hintId);c.pick()}});f.on(d,"click",function(b){if((b=s(d,b.target||b.srcElement))&&b.hintId!=null){c.changeActive(b.hintId);a.options.completeOnSingleClick&&c.pick()}});f.on(d,"mousedown",function(){setTimeout(function(){e.focus()},20)});f.signal(b,"select",k[0],d.firstChild);return!0} var u="CodeMirror-hint",q="CodeMirror-hint-active";f.showHint=function(a,b,c){if(!b)return a.showHint(c);c&&c.async&&(b.async=!0);b={hint:b};if(c)for(var e in c)b[e]=c[e];return a.showHint(b)};f.defineExtension("showHint",function(a){1=this.data.list.length?a=b?this.data.list.length-1:0:0>a&&(a=b?0:this.data.list.length-1); if(this.selectedHint!=a){var c=this.hints.childNodes[this.selectedHint];c.className=c.className.replace(" "+q,"");c=this.hints.childNodes[this.selectedHint=a];c.className+=" "+q;c.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=c.offsetTop+c.offsetHeight-this.hints.clientHeight+3);f.signal(this.data,"select",this.data.list[this.selectedHint],c)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/ this.hints.firstChild.offsetHeight)||1}};f.registerHelper("hint","auto",function(a,b){var c=a.getHelpers(a.getCursor(),"hint");if(c.length)for(var e=0;e,]/,closeOnUnfocus:!0,completeOnSingleClick:!1,container:null,customKeys:null,extraKeys:null};f.defineOption("hintOptions",null)});