editor-base-min.js revision ec5f0d99bc09c6dc62c85fbb741b2fa0dca0ddd0
YUI.add("editor-base",function(B){var A=function(){A.superclass.constructor.apply(this,arguments);};B.extend(A,B.Base,{frame:null,initializer:function(){var C=new B.Frame({designMode:true,title:A.STRINGS.title,use:A.USE,dir:this.get("dir"),extracss:this.get("extracss"),linkedcss:this.get("linkedcss"),defaultblock:this.get("defaultblock"),host:this}).plug(B.Plugin.ExecCommand);C.after("ready",B.bind(this._afterFrameReady,this));C.addTarget(this);this.frame=C;this.publish("nodeChange",{emitFacade:true,bubbles:true,defaultFn:this._defNodeChangeFn});this.plug(B.Plugin.EditorPara);},destructor:function(){this.frame.destroy();this.detachAll();},copyStyles:function(F,E){if(F.test("a")){return;}var C=["color","fontSize","fontFamily","backgroundColor","fontStyle"],D={};B.each(C,function(G){D[G]=F.getStyle(G);});if(F.ancestor("b,strong")){D.fontWeight="bold";}if(F.ancestor("u")){if(!D.textDecoration){D.textDecoration="underline";}}E.setStyles(D);},_lastBookmark:null,_defNodeChangeFn:function(U){var M=(new Date()).getTime();var E=this.getInstance(),S,D,N=E.Selection.DEFAULT_BLOCK_TAG;if(B.UA.ie){S=E.config.doc.selection.createRange();if(S.getBookmark){this._lastBookmark=S.getBookmark();}}switch(U.changedType){case"keydown":E.later(100,E,E.Selection.cleanCursor);break;case"tab":if(!U.changedNode.test("li, li *")&&!U.changedEvent.shiftKey){U.changedEvent.frameEvent.preventDefault();if(B.UA.webkit){this.execCommand("inserttext","\t");}else{S=new E.Selection();S.setCursor();D=S.getCursor();D.insert(A.TABKEY,"before");S.focusCursor();}}break;case"enter-up":var C=((this._lastPara)?this._lastPara:U.changedNode),W=C.one("br.yui-cursor");if(this._lastPara){delete this._lastPara;}if(W){if(W.previous()||W.next()){W.remove();}}if(!C.test(N)){var L=C.ancestor(N);if(L){C=L;L=null;}}if(C.test(N)){var O=C.previous(),R,H,J=false;if(O){R=O.one(":last-child");while(!J){if(R){H=R.one(":last-child");if(H){R=H;}else{J=true;}}else{J=true;}}if(R){this.copyStyles(R,C);}}}break;}if(B.UA.gecko){if(U.changedNode&&!U.changedNode.test(N)){var P=U.changedNode.ancestor(N);if(P){this._lastPara=P;}}}var G=this.getDomPath(U.changedNode,false),Q={},T,K,V=[],I="",X="";if(U.commands){Q=U.commands;}B.each(G,function(d){var Z=d.tagName.toLowerCase(),e=A.TAG2CMD[Z];if(e){Q[e]=1;}var c=d.currentStyle||d.style;if((""+c.fontWeight)=="bold"){Q.bold=1;}if(c.fontStyle=="italic"){Q.italic=1;}if(c.textDecoration=="underline"){Q.underline=1;}if(c.textDecoration=="line-through"){Q.strikethrough=1;}var f=E.one(d);if(f.getStyle("fontFamily")){var b=f.getStyle("fontFamily").split(",")[0].toLowerCase();if(b){T=b;}if(T){T=T.replace(/'/g,"").replace(/"/g,"");}}K=A.NORMALIZE_FONTSIZE(f);var a=d.className.split(" ");B.each(a,function(g){if(g!==""&&(g.substr(0,4)!=="yui_")){V.push(g);}});I=A.FILTER_RGB(f.getStyle("color"));var Y=A.FILTER_RGB(c.backgroundColor);if(Y!=="transparent"){if(Y!==""){X=Y;}}});U.dompath=E.all(G);U.classNames=V;U.commands=Q;if(!U.fontFamily){U.fontFamily=T;}if(!U.fontSize){U.fontSize=K;}if(!U.fontColor){U.fontColor=I;}if(!U.backgroundColor){U.backgroundColor=X;}var F=(new Date()).getTime();},getDomPath:function(E,C){var G=[],D,F=this.frame.getInstance();D=F.Node.getDOMNode(E);while(D!==null){if((D===F.config.doc.documentElement)||(D===F.config.doc)||!D.tagName){D=null;break;}if(!F.DOM.inDoc(D)){D=null;break;}if(D.nodeName&&D.nodeType&&(D.nodeType==1)){G.push(D);}if(D==F.config.doc.body){D=null;break;}D=D.parentNode;}if(G.length===0){G[0]=F.config.doc.body;}if(C){return F.all(G.reverse());}else{return G.reverse();}},_afterFrameReady:function(){var C=this.frame.getInstance();this.frame.on("dom:mouseup",B.bind(this._onFrameMouseUp,this));this.frame.on("dom:mousedown",B.bind(this._onFrameMouseDown,this));this.frame.on("dom:keydown",B.bind(this._onFrameKeyDown,this));if(B.UA.ie){this.frame.on("dom:activate",B.bind(this._onFrameActivate,this));this.frame.on("dom:keyup",B.throttle(B.bind(this._onFrameKeyUp,this),800));this.frame.on("dom:keypress",B.throttle(B.bind(this._onFrameKeyPress,this),800));}else{this.frame.on("dom:keyup",B.bind(this._onFrameKeyUp,this));this.frame.on("dom:keypress",B.bind(this._onFrameKeyPress,this));}C.Selection.filter();this.fire("ready");},_onFrameActivate:function(){if(this._lastBookmark){try{var E=this.getInstance(),D=E.config.doc.selection.createRange(),C=D.moveToBookmark(this._lastBookmark);D.select();this._lastBookmark=null;}catch(F){}}},_onFrameMouseUp:function(C){this.fire("nodeChange",{changedNode:C.frameTarget,changedType:"mouseup",changedEvent:C.frameEvent});},_onFrameMouseDown:function(C){this.fire("nodeChange",{changedNode:C.frameTarget,changedType:"mousedown",changedEvent:C.frameEvent});},_currentSelection:null,_currentSelectionTimer:null,_currentSelectionClear:null,_onFrameKeyDown:function(E){var D,C;if(!this._currentSelection){if(this._currentSelectionTimer){this._currentSelectionTimer.cancel();}this._currentSelectionTimer=B.later(850,this,function(){this._currentSelectionClear=true;});D=this.frame.getInstance();C=new D.Selection(E);this._currentSelection=C;}else{C=this._currentSelection;}D=this.frame.getInstance();C=new D.Selection();this._currentSelection=C;if(C&&C.anchorNode){this.fire("nodeChange",{changedNode:C.anchorNode,changedType:"keydown",changedEvent:E.frameEvent});if(A.NC_KEYS[E.keyCode]){this.fire("nodeChange",{changedNode:C.anchorNode,changedType:A.NC_KEYS[E.keyCode],changedEvent:E.frameEvent});this.fire("nodeChange",{changedNode:C.anchorNode,changedType:A.NC_KEYS[E.keyCode]+"-down",changedEvent:E.frameEvent});}}},_onFrameKeyPress:function(D){var C=this._currentSelection;if(C&&C.anchorNode){this.fire("nodeChange",{changedNode:C.anchorNode,changedType:"keypress",changedEvent:D.frameEvent});if(A.NC_KEYS[D.keyCode]){this.fire("nodeChange",{changedNode:C.anchorNode,changedType:A.NC_KEYS[D.keyCode]+"-press",changedEvent:D.frameEvent});}}},_onFrameKeyUp:function(D){var C=this._currentSelection;if(C&&C.anchorNode){this.fire("nodeChange",{changedNode:C.anchorNode,changedType:"keyup",selection:C,changedEvent:D.frameEvent});
if(A.NC_KEYS[D.keyCode]){this.fire("nodeChange",{changedNode:C.anchorNode,changedType:A.NC_KEYS[D.keyCode]+"-up",selection:C,changedEvent:D.frameEvent});}}if(this._currentSelectionClear){this._currentSelectionClear=this._currentSelection=null;}},execCommand:function(G,I){var D=this.frame.execCommand(G,I),F=this.frame.getInstance(),E=new F.Selection(),C={},H={changedNode:E.anchorNode,changedType:"execcommand",nodes:D};switch(G){case"forecolor":H.fontColor=I;break;case"backcolor":H.backgroundColor=I;break;case"fontsize":H.fontSize=I;break;case"fontname":H.fontFamily=I;break;}C[G]=1;H.commands=C;this.fire("nodeChange",H);return D;},getInstance:function(){return this.frame.getInstance();},render:function(C){this.frame.set("content",this.get("content"));this.frame.render(C);return this;},focus:function(C){this.frame.focus(C);return this;},show:function(){this.frame.show();return this;},hide:function(){this.frame.hide();return this;},getContent:function(){var C="",D=this.getInstance();if(D&&D.Selection){C=D.Selection.unfilter();}C=C.replace(/ _yuid="([^>]*)"/g,"");return C;}},{NORMALIZE_FONTSIZE:function(E){var C=E.getStyle("fontSize"),D=C;switch(C){case"-webkit-xxx-large":C="48px";break;case"xx-large":C="32px";break;case"x-large":C="24px";break;case"large":C="18px";break;case"medium":C="16px";break;case"small":C="13px";break;case"x-small":C="10px";break;}if(D!==C){E.setStyle("fontSize",C);}return C;},TABKEY:'<span class="tab">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>',FILTER_RGB:function(E){if(E.toLowerCase().indexOf("rgb")!=-1){var H=new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)","gi");var D=E.replace(H,"$1,$2,$3,$4,$5").split(",");if(D.length==5){var G=parseInt(D[1],10).toString(16);var F=parseInt(D[2],10).toString(16);var C=parseInt(D[3],10).toString(16);G=G.length==1?"0"+G:G;F=F.length==1?"0"+F:F;C=C.length==1?"0"+C:C;E="#"+G+F+C;}}return E;},TAG2CMD:{"b":"bold","strong":"bold","i":"italic","em":"italic","u":"underline","sup":"superscript","sub":"subscript","img":"insertimage","a":"createlink","ul":"insertunorderedlist","ol":"insertorderedlist"},NC_KEYS:{8:"backspace",9:"tab",13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",46:"delete"},USE:["substitute","node","selector-css3","selection","stylesheet"],NAME:"editorBase",STRINGS:{title:"Rich Text Editor"},ATTRS:{content:{value:"<br>",setter:function(C){if(C.substr(0,1)==="\n"){C=C.substr(1);}if(C===""){C="<br>";}return this.frame.set("content",C);},getter:function(){return this.frame.get("content");}},dir:{writeOnce:true,value:"ltr"},linkedcss:{value:"",setter:function(C){if(this.frame){this.frame.set("linkedcss",C);}return C;}},extracss:{value:false,setter:function(C){if(this.frame){this.frame.set("extracss",C);}return C;}},defaultblock:{value:"p"}}});B.EditorBase=A;},"@VERSION@",{requires:["base","frame","node","exec-command"],skinnable:false});