2017-07-01 20:16:47 +00:00
/ *
2019-02-18 12:28:41 +00:00
Copyright ( c ) 2003 - 2019 , CKSource - Frederico Knabben . All rights reserved .
2018-02-04 12:51:11 +00:00
For licensing , see LICENSE . md or https : //ckeditor.com/legal/ckeditor-oss-license
2017-07-01 20:16:47 +00:00
* /
( function ( ) { function q ( a , f , d , b ) { if ( ! a . isReadOnly ( ) && ! a . equals ( d . editable ( ) ) ) { CKEDITOR . dom . element . setMarker ( b , a , "bidi_processed" , 1 ) ; b = a ; for ( var c = d . editable ( ) ; ( b = b . getParent ( ) ) && ! b . equals ( c ) ; ) if ( b . getCustomData ( "bidi_processed" ) ) { a . removeStyle ( "direction" ) ; a . removeAttribute ( "dir" ) ; return } b = "useComputedState" in d . config ? d . config . useComputedState : 1 ; ( b ? a . getComputedStyle ( "direction" ) : a . getStyle ( "direction" ) || a . hasAttribute ( "dir" ) ) != f && ( a . removeStyle ( "direction" ) , b ? ( a . removeAttribute ( "dir" ) , f != a . getComputedStyle ( "direction" ) &&
a . setAttribute ( "dir" , f ) ) : a . setAttribute ( "dir" , f ) , d . forceNextSelectionCheck ( ) ) } } function v ( a , f , d ) { var b = a . getCommonAncestor ( ! 1 , ! 0 ) ; a = a . clone ( ) ; a . enlarge ( d == CKEDITOR . ENTER _BR ? CKEDITOR . ENLARGE _LIST _ITEM _CONTENTS : CKEDITOR . ENLARGE _BLOCK _CONTENTS ) ; if ( a . checkBoundaryOfElement ( b , CKEDITOR . START ) && a . checkBoundaryOfElement ( b , CKEDITOR . END ) ) { for ( var c ; b && b . type == CKEDITOR . NODE _ELEMENT && ( c = b . getParent ( ) ) && 1 == c . getChildCount ( ) && ! ( b . getName ( ) in f ) ; ) b = c ; return b . type == CKEDITOR . NODE _ELEMENT && b . getName ( ) in f && b } } function p ( a ) { return { context : "p" ,
allowedContent : { "h1 h2 h3 h4 h5 h6 table ul ol blockquote div tr p div li td" : { propertiesOnly : ! 0 , attributes : "dir" } } , requiredContent : "p[dir]" , refresh : function ( a , d ) { var b = a . config . useComputedState , c , b = void 0 === b || b ; if ( ! b ) { c = d . lastElement ; for ( var h = a . editable ( ) ; c && ! ( c . getName ( ) in u || c . equals ( h ) ) ; ) { var e = c . getParent ( ) ; if ( ! e ) break ; c = e } } c = c || d . block || d . blockLimit ; c . equals ( a . editable ( ) ) && ( h = a . getSelection ( ) . getRanges ( ) [ 0 ] . getEnclosedNode ( ) ) && h . type == CKEDITOR . NODE _ELEMENT && ( c = h ) ; c && ( b = b ? c . getComputedStyle ( "direction" ) :
c . getStyle ( "direction" ) || c . getAttribute ( "dir" ) , a . getCommand ( "bidirtl" ) . setState ( "rtl" == b ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) , a . getCommand ( "bidiltr" ) . setState ( "ltr" == b ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) ) ; b = ( d . block || d . blockLimit || a . editable ( ) ) . getDirection ( 1 ) ; b != ( a . _ . selDir || a . lang . dir ) && ( a . _ . selDir = b , a . fire ( "contentDirChanged" , b ) ) } , exec : function ( f ) { var d = f . getSelection ( ) , b = f . config . enterMode , c = d . getRanges ( ) ; if ( c && c . length ) { for ( var h = { } , e = d . createBookmarks ( ) , c = c . createIterator ( ) , g ,
l = 0 ; g = c . getNextRange ( 1 ) ; ) { var k = g . getEnclosedNode ( ) ; k && ( ! k || k . type == CKEDITOR . NODE _ELEMENT && k . getName ( ) in r ) || ( k = v ( g , t , b ) ) ; k && q ( k , a , f , h ) ; var m = new CKEDITOR . dom . walker ( g ) , n = e [ l ] . startNode , p = e [ l ++ ] . endNode ; m . evaluator = function ( a ) { var c = b == CKEDITOR . ENTER _P ? "p" : "div" , d ; if ( d = ( a ? a . type == CKEDITOR . NODE _ELEMENT : ! 1 ) && a . getName ( ) in t ) { if ( c = a . is ( c ) ) c = ( c = a . getParent ( ) ) ? c . type == CKEDITOR . NODE _ELEMENT : ! 1 ; d = ! ( c && a . getParent ( ) . is ( "blockquote" ) ) } return ! ! ( d && a . getPosition ( n ) & CKEDITOR . POSITION _FOLLOWING && ( a . getPosition ( p ) &
CKEDITOR . POSITION _PRECEDING + CKEDITOR . POSITION _CONTAINS ) == CKEDITOR . POSITION _PRECEDING ) } ; for ( ; k = m . next ( ) ; ) q ( k , a , f , h ) ; g = g . createIterator ( ) ; for ( g . enlargeBr = b != CKEDITOR . ENTER _BR ; k = g . getNextParagraph ( b == CKEDITOR . ENTER _P ? "p" : "div" ) ; ) q ( k , a , f , h ) } CKEDITOR . dom . element . clearAllMarkers ( h ) ; f . forceNextSelectionCheck ( ) ; d . selectBookmarks ( e ) ; f . focus ( ) } } } } function w ( a ) { var f = a == l . setAttribute , d = a == l . removeAttribute , b = /\bdirection\s*:\s*(.*?)\s*(:?$|;)/ ; return function ( c , h ) { if ( ! this . isReadOnly ( ) ) { var e ; if ( e = c == ( f || d ?
2017-07-01 20:49:59 +00:00
"dir" : "direction" ) || "style" == c && ( d || b . test ( h ) ) ) { a : { e = this ; for ( var g = e . getDocument ( ) . getBody ( ) . getParent ( ) ; e ; ) { if ( e . equals ( g ) ) { e = ! 1 ; break a } e = e . getParent ( ) } e = ! 0 } e = ! e } if ( e && ( e = this . getDirection ( 1 ) , g = a . apply ( this , arguments ) , e != this . getDirection ( 1 ) ) ) return this . getDocument ( ) . fire ( "dirChanged" , this ) , g } return a . apply ( this , arguments ) } } var t = { table : 1 , ul : 1 , ol : 1 , blockquote : 1 , div : 1 } , r = { } , u = { } ; CKEDITOR . tools . extend ( r , t , { tr : 1 , p : 1 , div : 1 , li : 1 } ) ; CKEDITOR . tools . extend ( u , r , { td : 1 } ) ; CKEDITOR . plugins . add ( "bidi" , { lang : "af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn" ,
2017-07-01 20:16:47 +00:00
icons : "bidiltr,bidirtl" , hidpi : ! 0 , init : function ( a ) { function f ( b , c , d , e , f ) { a . addCommand ( d , new CKEDITOR . command ( a , e ) ) ; a . ui . addButton && a . ui . addButton ( b , { label : c , command : d , toolbar : "bidi," + f } ) } if ( ! a . blockless ) { var d = a . lang . bidi ; f ( "BidiLtr" , d . ltr , "bidiltr" , p ( "ltr" ) , 10 ) ; f ( "BidiRtl" , d . rtl , "bidirtl" , p ( "rtl" ) , 20 ) ; a . on ( "contentDom" , function ( ) { a . document . on ( "dirChanged" , function ( b ) { a . fire ( "dirChanged" , { node : b . data , dir : b . data . getDirection ( 1 ) } ) } ) } ) ; a . on ( "contentDirChanged" , function ( b ) { b = ( a . lang . dir != b . data ? "add" :
"remove" ) + "Class" ; var c = a . ui . space ( a . config . toolbarLocation ) ; if ( c ) c [ b ] ( "cke_mixed_dir_content" ) } ) } } } ) ; for ( var l = CKEDITOR . dom . element . prototype , n = [ "setStyle" , "removeStyle" , "setAttribute" , "removeAttribute" ] , m = 0 ; m < n . length ; m ++ ) l [ n [ m ] ] = CKEDITOR . tools . override ( l [ n [ m ] ] , w ) } ) ( ) ;