mirror of https://github.com/midoks/mdserver-web
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 line
9.0 KiB
1 line
9.0 KiB
7 years ago
|
(function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],a)}else{a(CodeMirror)}}})(function(e){var i="CodeMirror-hint";var h="CodeMirror-hint-active";e.showHint=function(q,r,s){if(!r){return q.showHint(s)}if(s&&s.async){r.async=true}var t={hint:r};if(s){for(var u in s){t[u]=s[u]}}return q.showHint(t)};e.defineExtension("showHint",function(r){r=o(this,this.getCursor("start"),r);var t=this.listSelections();if(t.length>1){return}if(this.somethingSelected()){if(!r.hint.supportsSelection){return}for(var s=0;s<t.length;s++){if(t[s].head.line!=t[s].anchor.line){return}}}if(this.state.completionActive){this.state.completionActive.close()}var q=this.state.completionActive=new b(this,r);if(!q.options.hint){return}e.signal(this,"startCompletion",this);q.update(true)});function b(q,s){this.cm=q;this.options=s;this.widget=null;this.debounce=0;this.tick=0;this.startPos=this.cm.getCursor("start");this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var r=this;q.on("cursorActivity",this.activityFunc=function(){r.cursorActivity()})}var l=window.requestAnimationFrame||function(q){return setTimeout(q,1000/60)};var g=window.cancelAnimationFrame||clearTimeout;b.prototype={close:function(){if(!this.active()){return}this.cm.state.completionActive=null;this.tick=null;this.cm.off("cursorActivity",this.activityFunc);if(this.widget&&this.data){e.signal(this.data,"close")}if(this.widget){this.widget.close()}e.signal(this.cm,"endCompletion",this.cm)},active:function(){return this.cm.state.completionActive==this},pick:function(s,r){var q=s.list[r];if(q.hint){q.hint(this.cm,s,q)}else{this.cm.replaceRange(p(q),q.from||s.from,q.to||s.to,"complete")}e.signal(s,"pick",q);this.close()},cursorActivity:function(){if(this.debounce){g(this.debounce);this.debounce=0}var s=this.cm.getCursor(),q=this.cm.getLine(s.line);if(s.line!=this.startPos.line||q.length-s.ch!=this.startLen-this.startPos.ch||s.ch<this.startPos.ch||this.cm.somethingSelected()||(s.ch&&this.options.closeCharacters.test(q.charAt(s.ch-1)))){this.close()}else{var r=this;this.debounce=l(function(){r.update()});if(this.widget){this.widget.disable()}}},update:function(s){if(this.tick==null){return}var q=this,r=++this.tick;f(this.options.hint,this.cm,this.options,function(t){if(q.tick==r){q.finishUpdate(t,s)}})},finishUpdate:function(r,s){if(this.data){e.signal(this.data,"update")}var q=(this.widget&&this.widget.picked)||(s&&this.options.completeSingle);if(this.widget){this.widget.close()}if(r&&this.data&&j(this.data,r)){return}this.data=r;if(r&&r.list.length){if(q&&r.list.length==1){this.pick(r,0)}else{this.widget=new n(this,r);e.signal(r,"shown")}}}};function j(r,q){var s=e.cmpPos(q.from,r.from);return s>0&&r.to.ch-r.from.ch!=q.to.ch-q.from.ch}function o(q,v,s){var t=q.options.hintOptions;var r={};for(var u in c){r[u]=c[u]}if(t){for(var u in t){if(t[u]!==undefined){r[u]=t[u]}}}if(s){for(var u in s){if(s[u]!==undefined){r[u]=s[u]}}}if(r.hint.resolve){r.hint=r.hint.resolve(q,v)}return r}function p(q){if(typeof q=="string"){return q}else{return q.text}}function d(u,x){var r={Up:function(){x.moveFocus(-1)},Down:function(){x.moveFocus(1)},PageUp:function(){x.moveFocus(-x.menuSize()+1,true)},PageDown:function(){x.moveFocus(x.menuSize()-1,true)},Home:function(){x.setFocus(0)},End:function(){x.setFocus(x.length-1)},Enter:x.pick,Tab:x.pick,Esc:x.close};var w=u.options.customKeys;var t=w?{}:r;function s(y,A){var z;if(typeof A!="string"){z=function(B){return A(B,x)}}else{if(r.hasOwnProperty(A)){z=r[A]}else{z=A}}t[y]=z}if(w){for(var v in w){if(w.hasOwnProperty(v)){s(v,w[v])}}}var q=u.options.extraKeys;if(q){for(var v in q){if(q.hasOwnProperty(v)){s(v,q[v])}}}return t}function m(r,q){while(q&&q!=r){if(q.nodeName.toUpperCase()==="LI"&&q.parentNode==r){return q}q=q.parentNode}}function n(E,P){this.completion=E;this.data=P;this.picked=false;var v=this,A=E.cm;var M=this.hints=document.createElement("ul");M.className="CodeMirror-hints";this.selectedHint=P.select
|