Monotone-Parent: 5f9c08dd6b5b34d815ddb2108abbf4055e846934 Monotone-Revision: b2cf7eda0ef8f15fb6e78f8c38a7406a47bcdd2f Monotone-Author: crobert@inverse.ca Monotone-Date: 2009-08-26T14:03:12 Monotone-Branch: ca.inverse.sogo
11 lines
11 KiB
JavaScript
11 lines
11 KiB
JavaScript
/*
|
|
Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
|
|
For licensing, see LICENSE.html or http://ckeditor.com/license
|
|
*/
|
|
|
|
CKEDITOR.plugins.add('styles',{requires:['selection']});CKEDITOR.editor.prototype.attachStyleStateChange=function(a,b){var c=this._.styleStateChangeCallbacks;if(!c){c=this._.styleStateChangeCallbacks=[];this.on('selectionChange',function(d){for(var e=0;e<c.length;e++){var f=c[e],g=f.style.checkActive(d.data.path)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;if(f.state!==g){f.fn.call(this,g);f.state!==g;}}});}c.push({style:a,fn:b});};CKEDITOR.STYLE_BLOCK=1;CKEDITOR.STYLE_INLINE=2;CKEDITOR.STYLE_OBJECT=3;(function(){var a={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1},b={a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,ul:1},c=/\s*(?:;\s*|$)/;CKEDITOR.style=function(A,B){if(B){A=CKEDITOR.tools.clone(A);v(A.attributes,B);v(A.styles,B);}var C=this.element=(A.element||'*').toLowerCase();this.type=C=='#'||a[C]?CKEDITOR.STYLE_BLOCK:b[C]?CKEDITOR.STYLE_OBJECT:CKEDITOR.STYLE_INLINE;this._={definition:A};};CKEDITOR.style.prototype={apply:function(A){z.call(this,A,false);},remove:function(A){z.call(this,A,true);},applyToRange:function(A){var B=this;return(B.applyToRange=B.type==CKEDITOR.STYLE_INLINE?d:B.type==CKEDITOR.STYLE_BLOCK?f:null).call(B,A);},removeFromRange:function(A){return(this.removeFromRange=this.type==CKEDITOR.STYLE_INLINE?e:null).call(this,A);},applyToObject:function(A){t(A,this);},checkActive:function(A){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(A.block||A.blockLimit,true);case CKEDITOR.STYLE_INLINE:var B=A.elements;for(var C=0,D;C<B.length;C++){D=B[C];if(D==A.block||D==A.blockLimit)continue;if(this.checkElementRemovable(D,true))return true;}}return false;},checkElementRemovable:function(A,B){if(!A)return false;var C=this._.definition,D;if(A.getName()==this.element){if(!B&&!A.hasAttributes())return true;D=w(C);if(D._length){for(var E in D){if(E=='_length')continue;var F=A.getAttribute(E);if(D[E]==(E=='style'?y(F,false):F)){if(!B)return true;}else if(B)return false;}if(B)return true;}else return true;}var G=x(this)[A.getName()];if(G){if(!(D=G.attributes))return true;for(var H=0;H<D.length;H++){E=D[H][0];var I=A.getAttribute(E);if(I){var J=D[H][1];if(J===null||typeof J=='string'&&I==J||J.test(I))return true;}}}return false;}};CKEDITOR.style.getStyleText=function(A){var B=A._ST;if(B)return B;B=A.styles;var C=A.attributes&&A.attributes.style||'';if(C.length)C=C.replace(c,';');for(var D in B)C+=D+':'+B[D]+';';if(C.length)C=y(C);return A._ST=C;};function d(A){var aa=this;var B=A.document;if(A.collapsed){var C=s(aa,B);
|
|
A.insertNode(C);A.moveToPosition(C,CKEDITOR.POSITION_BEFORE_END);return;}var D=aa.element,E=aa._.definition,F,G=CKEDITOR.dtd[D]||(F=true,CKEDITOR.dtd.span),H=A.createBookmark();A.enlarge(CKEDITOR.ENLARGE_ELEMENT);A.trim();var I=A.getBoundaryNodes(),J=I.startNode,K=I.endNode.getNextSourceNode(true);if(!K){var L;K=L=B.createText('');K.insertAfter(A.endContainer);}var M=K.getParent();if(M&&M.getAttribute('_fck_bookmark'))K=M;if(K.equals(J)){K=K.getNextSourceNode(true);if(!K){K=L=B.createText('');K.insertAfter(J);}}var N=J,O,P;while(N){var Q=false;if(N.equals(K)){N=null;Q=true;}else{var R=N.type,S=R==CKEDITOR.NODE_ELEMENT?N.getName():null;if(S&&N.getAttribute('_fck_bookmark')){N=N.getNextSourceNode(true);continue;}if(!S||G[S]&&(N.getPosition(K)|CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED)==(CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED)){var T=N.getParent();if(T&&((T.getDtd()||CKEDITOR.dtd.span)[D]||F)){if(!O&&(!S||!CKEDITOR.dtd.$removeEmpty[S]||(N.getPosition(K)|CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED)==(CKEDITOR.POSITION_PRECEDING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED))){O=new CKEDITOR.dom.range(B);O.setStartBefore(N);}if(R==CKEDITOR.NODE_TEXT||R==CKEDITOR.NODE_ELEMENT&&!N.getChildCount()){var U=N,V;while(!U.$.nextSibling&&(V=U.getParent(),G[V.getName()])&&((V.getPosition(J)|CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED)==(CKEDITOR.POSITION_FOLLOWING+CKEDITOR.POSITION_IDENTICAL+CKEDITOR.POSITION_IS_CONTAINED)))U=V;O.setEndAfter(U);if(!U.$.nextSibling)Q=true;if(!P)P=R!=CKEDITOR.NODE_TEXT||/[^\s\ufeff]/.test(N.getText());}}else Q=true;}else Q=true;N=N.getNextSourceNode();}if(Q&&P&&O&&!O.collapsed){var W=s(aa,B),X=O.getCommonAncestor();while(W&&X){if(X.getName()==D){for(var Y in E.attributes)if(W.getAttribute(Y)==X.getAttribute(Y))W.removeAttribute(Y);for(var Z in E.styles)if(W.getStyle(Z)==X.getStyle(Z))W.removeStyle(Z);if(!W.hasAttributes()){W=null;break;}}X=X.getParent();}if(W){O.extractContents().appendTo(W);n(aa,W);O.insertNode(W);q(W);if(!CKEDITOR.env.ie)W.$.normalize();}O=null;}}L&&L.remove();A.moveToBookmark(H);};function e(A){A.enlarge(CKEDITOR.ENLARGE_ELEMENT);var B=A.createBookmark(),C=B.startNode;if(A.collapsed){var D=new CKEDITOR.dom.elementPath(C.getParent()),E;for(var F=0,G;F<D.elements.length&&(G=D.elements[F]);F++){if(G==D.block||G==D.blockLimit)break;if(this.checkElementRemovable(G)){var H=A.checkBoundaryOfElement(G,CKEDITOR.END),I=!H&&A.checkBoundaryOfElement(G,CKEDITOR.START);
|
|
if(I||H){E=G;E.match=I?'start':'end';}else{q(G);m(this,G);}}}if(E){var J=C;for(F=0;true;F++){var K=D.elements[F];if(K.equals(E))break;else if(K.match)continue;else K=K.clone();K.append(J);J=K;}J[E.match=='start'?'insertBefore':'insertAfter'](E);}}else{var L=B.endNode,M=this;function N(){var Q=new CKEDITOR.dom.elementPath(C.getParent()),R=new CKEDITOR.dom.elementPath(L.getParent()),S=null,T=null;for(var U=0;U<Q.elements.length;U++){var V=Q.elements[U];if(V==Q.block||V==Q.blockLimit)break;if(M.checkElementRemovable(V))S=V;}for(U=0;U<R.elements.length;U++){V=R.elements[U];if(V==R.block||V==R.blockLimit)break;if(M.checkElementRemovable(V))T=V;}if(T)L.breakParent(T);if(S)C.breakParent(S);};N();var O=C.getNext();while(!O.equals(L)){var P=O.getNextSourceNode();if(O.type==CKEDITOR.NODE_ELEMENT&&this.checkElementRemovable(O)){if(O.getName()==this.element)m(this,O);else o(O,x(this)[O.getName()]);if(P.type==CKEDITOR.NODE_ELEMENT&&P.contains(C)){N();P=C.getNext();}}O=P;}}A.moveToBookmark(B);};function f(A){var B=A.createBookmark(true),C=A.createIterator();C.enforceRealBlocks=true;var D,E=A.document,F;while(D=C.getNextParagraph()){var G=s(this,E);g(D,G);}A.moveToBookmark(B);};function g(A,B){var C=B.is('pre'),D=A.is('pre'),E=C&&!D,F=!C&&D;if(E)B=l(A,B);else if(F)B=k(i(A),B);else A.moveChildren(B);B.replace(A);if(C)h(B);};function h(A){var B;if(!((B=A.getPreviousSourceNode(true,CKEDITOR.NODE_ELEMENT))&&(B.is&&B.is('pre'))))return;var C=j(B.getHtml(),/\n$/,'')+'\n\n'+j(A.getHtml(),/^\n/,'');if(CKEDITOR.env.ie)A.$.outerHTML='<pre>'+C+'</pre>';else A.setHtml(C);B.remove();};function i(A){var B=/(\S\s*)\n(?:\s|(<span[^>]+_fck_bookmark.*?\/span>))*\n(?!$)/gi,C=A.getName(),D=j(A.getOuterHtml(),B,function(F,G,H){return G+'</pre>'+H+'<pre>';}),E=[];D.replace(/<pre>([\s\S]*?)<\/pre>/gi,function(F,G){E.push(G);});return E;};function j(A,B,C){var D='',E='';A=A.replace(/(^<span[^>]+_fck_bookmark.*?\/span>)|(<span[^>]+_fck_bookmark.*?\/span>$)/gi,function(F,G,H){G&&(D=G);H&&(E=H);return '';});return D+A.replace(B,C)+E;};function k(A,B){var C=new CKEDITOR.dom.documentFragment(B.getDocument());for(var D=0;D<A.length;D++){var E=A[D];E=E.replace(/(\r\n|\r)/g,'\n');E=j(E,/^[ \t]*\n/,'');E=j(E,/\n$/,'');E=j(E,/^[ \t]+|[ \t]+$/g,function(G,H,I){if(G.length==1)return ' ';else if(!H)return CKEDITOR.tools.repeat(' ',G.length-1)+' ';else return ' '+CKEDITOR.tools.repeat(' ',G.length-1);});E=E.replace(/\n/g,'<br>');E=E.replace(/[ \t]{2,}/g,function(G){return CKEDITOR.tools.repeat(' ',G.length-1)+' ';
|
|
});var F=B.clone();F.setHtml(E);C.append(F);}return C;};function l(A,B){var C=A.getHtml();C=j(C,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,'');C=C.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'$1');C=C.replace(/([ \t\n\r]+| )/g,' ');C=C.replace(/<br\b[^>]*>/gi,'\n');if(CKEDITOR.env.ie){var D=A.getDocument().createElement('div');D.append(B);B.$.outerHTML='<pre>'+C+'</pre>';B=D.getFirst().remove();}else B.setHtml(C);return B;};function m(A,B){var C=A._.definition,D=C.attributes,E=C.styles,F=x(A);function G(){for(var I in D){if(I=='class'&&B.getAttribute(I)!=D[I])continue;B.removeAttribute(I);}};G();for(var H in E)B.removeStyle(H);D=F[B.getName()];if(D)G();p(B);};function n(A,B){var C=A._.definition,D=C.attributes,E=C.styles,F=x(A),G=B.getElementsByTag(A.element);for(var H=G.count();--H>=0;)m(A,G.getItem(H));for(var I in F)if(I!=A.element){G=B.getElementsByTag(I);for(H=G.count()-1;H>=0;H--){var J=G.getItem(H);o(J,F[I]);}}};function o(A,B){var C=B&&B.attributes;if(C)for(var D=0;D<C.length;D++){var E=C[D][0],F;if(F=A.getAttribute(E)){var G=C[D][1];if(G===null||G.test&&G.test(F)||typeof G=='string'&&F==G)A.removeAttribute(E);}}p(A);};function p(A){if(!A.hasAttributes()){var B=A.getFirst(),C=A.getLast();A.remove(true);if(B){q(B);if(C&&!B.equals(C))q(C);}}};function q(A){if(!A||A.type!=CKEDITOR.NODE_ELEMENT||!CKEDITOR.dtd.$removeEmpty[A.getName()])return;r(A,A.getNext(),true);r(A,A.getPrevious());};function r(A,B,C){if(B&&B.type==CKEDITOR.NODE_ELEMENT){var D=B.getAttribute('_fck_bookmark');if(D)B=C?B.getNext():B.getPrevious();if(B&&B.type==CKEDITOR.NODE_ELEMENT&&A.isIdentical(B)){var E=C?A.getLast():A.getFirst();if(D)(C?B.getPrevious():B.getNext()).move(A,!C);B.moveChildren(A,!C);B.remove();if(E)q(E);}}};function s(A,B){var C,D=A._.definition,E=A.element;if(E=='*')E='span';C=new CKEDITOR.dom.element(E,B);return t(C,A);};function t(A,B){var C=B._.definition,D=C.attributes,E=CKEDITOR.style.getStyleText(C);if(D)for(var F in D)A.setAttribute(F,D[F]);if(E)A.setAttribute('style',E);return A;};var u=/#\((.+?)\)/g;function v(A,B){for(var C in A)A[C]=A[C].replace(u,function(D,E){return B[E];});};function w(A){var B=A._AC;if(B)return B;B={};var C=0,D=A.attributes;if(D)for(var E in D){C++;B[E]=D[E];}var F=CKEDITOR.style.getStyleText(A);if(F){if(!B.style)C++;B.style=F;}B._length=C;return A._AC=B;};function x(A){if(A._.overrides)return A._.overrides;var B=A._.overrides={},C=A._.definition.overrides;if(C){if(!CKEDITOR.tools.isArray(C))C=[C];for(var D=0;D<C.length;D++){var E=C[D],F,G,H;
|
|
if(typeof E=='string')F=E.toLowerCase();else{F=E.element?E.element.toLowerCase():A.element;H=E.attributes;}G=B[F]||(B[F]={});if(H){var I=G.attributes=G.attributes||[];for(var J in H)I.push([J.toLowerCase(),H[J]]);}}}return B;};function y(A,B){var C;if(B!==false){var D=new CKEDITOR.dom.element('span');D.setAttribute('style',A);C=D.getAttribute('style');}else C=A;return C.replace(/\s*([;:])\s*/,'$1').replace(/([^\s;])$/,'$1;').toLowerCase();};function z(A,B){var C=A.getSelection(),D=C.getRanges(),E=B?this.removeFromRange:this.applyToRange;for(var F=0;F<D.length;F++)E.call(this,D[F]);C.selectRanges(D);};})();CKEDITOR.styleCommand=function(a){this.style=a;};CKEDITOR.styleCommand.prototype.exec=function(a){var c=this;a.focus();var b=a.document;if(b)if(c.state==CKEDITOR.TRISTATE_OFF)c.style.apply(b);else if(c.state==CKEDITOR.TRISTATE_ON)c.style.remove(b);return!!b;};
|