(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 p(a,b){this.cm=a;this.options=b;this.widget=null;this.tick=this.debounce=0;this.startPos=this.cm.getCursor("start");this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var c=this;a.on("cursorActivity",this.activityFunc=function(){c.cursorActivity()})}function z(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 t(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.parentNode==a)return b;b=b.parentNode}}function u(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 l=b.list,g=0;gk&&(d.style.height=k-5+"px",d.style.top=(r=g.bottom-h.top)+"px",k=e.getCursor(),b.from.ch!=k.ch&&(g=e.cursorCoords(k),d.style.left=(q=g.left)+"px",h=d.getBoundingClientRect()))}k=h.right-m;0m&&(d.style.width=m-5+"px",k-=h.right-h.left-m),d.style.left=(q=g.left-k)+"px");e.addKeyMap(this.keyMap=z(a,{moveFocus:function(a,b){c.changeActive(c.selectedHint+ a,b)},setFocus:function(a){c.changeActive(a)},menuSize:function(){return c.screenAmount()},length:l.length,close:function(){a.close()},pick:function(){c.pick()},data:b}));if(a.options.closeOnUnfocus){var w;e.on("blur",this.onBlur=function(){w=setTimeout(function(){a.close()},100)});e.on("focus",this.onFocus=function(){clearTimeout(w)})}var p=e.getScrollInfo();e.on("scroll",this.onScroll=function(){var c=e.getScrollInfo(),b=e.getWrapperElement().getBoundingClientRect(),g=r+p.top-c.top,f=g-(window.pageYOffset|| (document.documentElement||document.body).scrollTop);v||(f+=d.offsetHeight);if(f<=b.top||f>=b.bottom)return a.close();d.style.top=g+"px";d.style.left=q+p.left-c.left+"px"});f.on(d,"dblclick",function(a){(a=t(d,a.target||a.srcElement))&&null!=a.hintId&&(c.changeActive(a.hintId),c.pick())});f.on(d,"click",function(b){(b=t(d,b.target||b.srcElement))&&null!=b.hintId&&(c.changeActive(b.hintId),a.options.completeOnSingleClick&&c.pick())});f.on(d,"mousedown",function(){setTimeout(function(){e.focus()},20)}); f.signal(b,"select",l[0],d.firstChild);return!0}function x(a,b){if(!a.somethingSelected())return b;for(var c=[],e=0;e=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(" CodeMirror-hint-active","");c=this.hints.childNodes[this.selectedHint=a];c.className+=" CodeMirror-hint-active";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",{resolve:function(a,b){var c=a.getHelpers(b,"hint"),e;if(c.length){for(var d=!1,l=0;l,]/,closeOnUnfocus:!0,completeOnSingleClick:!1,container:null,customKeys:null, extraKeys:null};f.defineOption("hintOptions",null)});