2023-01-10 16:29:32 +00:00
( function ( ) { function d ( a , b ) { l . call ( this , a , b ) ; this . actualConfig = this . originalConfig = this . removedButtons = null ; this . emptyVisible = ! 1 ; this . state = "edit" ; this . toolbarButtons = [ { text : { active : "Hide empty toolbar groups" , inactive : "Show empty toolbar groups" } , group : "edit" , position : "left" , cssClass : "button-a-soft" , clickCallback : function ( a , b ) { a [ a . hasClass ( "button-a-background" ) ? "removeClass" : "addClass" ] ( "button-a-background" ) ; this . _toggleVisibilityEmptyElements ( ) ; this . emptyVisible ? a . setText ( b . text . active ) : a . setText ( b . text . inactive ) } } ,
2023-04-08 15:14:19 +00:00
{ text : "Add row separator" , group : "edit" , position : "left" , cssClass : "button-a-soft" , clickCallback : function ( ) { this . _addSeparator ( ) } } , { text : "Select config" , group : "config" , position : "left" , cssClass : "button-a-soft" , clickCallback : function ( ) { this . configContainer . findOne ( "textarea" ) . $ . select ( ) } } , { text : "Back to configurator" , group : "config" , position : "right" , cssClass : "button-a-background" , clickCallback : function ( ) { if ( "paste" == this . state ) { var a = this . configContainer . findOne ( "textarea" ) . getValue ( ) ; ( a = d . evaluateToolbarGroupsConfig ( a ) ) ?
2022-12-19 20:22:19 +00:00
this . setConfig ( a ) : alert ( "Your pasted config is wrong." ) } this . state = "edit" ; this . _showConfigurationTool ( ) ; this . showToolbarBtnsByGroupName ( this . state ) } } , { text : 'Get toolbar \x3cspan class\x3d"highlight"\x3econfig\x3c/span\x3e' , group : "edit" , position : "right" , cssClass : "button-a-background icon-pos-left icon-download" , clickCallback : function ( ) { this . state = "config" ; this . _showConfig ( ) ; this . showToolbarBtnsByGroupName ( this . state ) } } ] ; this . cachedActiveElement = null } var l = ToolbarConfigurator . AbstractToolbarModifier ;
2023-04-08 15:14:19 +00:00
ToolbarConfigurator . ToolbarModifier = d ; d . prototype = Object . create ( ToolbarConfigurator . AbstractToolbarModifier . prototype ) ; d . prototype . getActualConfig = function ( ) { var a = l . prototype . getActualConfig . call ( this ) ; if ( a . toolbarGroups ) for ( var b = a . toolbarGroups . length , c = 0 ; c < b ; c += 1 ) a . toolbarGroups [ c ] = d . parseGroupToConfigValue ( a . toolbarGroups [ c ] ) ; return a } ; d . prototype . _onInit = function ( a , b , c ) { c = ! 0 == c ; l . prototype . _onInit . call ( this , void 0 , b ) ; this . removedButtons = [ ] ; c ? this . removedButtons = this . actualConfig . removeButtons ?
2022-12-19 20:22:19 +00:00
this . actualConfig . removeButtons . split ( "," ) : [ ] : "removeButtons" in this . originalConfig ? this . removedButtons = this . originalConfig . removeButtons ? this . originalConfig . removeButtons . split ( "," ) : [ ] : ( this . originalConfig . removeButtons = "" , this . removedButtons = [ ] ) ; this . actualConfig . toolbarGroups || ( this . actualConfig . toolbarGroups = this . fullToolbarEditor . getFullToolbarGroupsConfig ( ) ) ; this . _fixGroups ( this . actualConfig ) ; this . _calculateTotalBtns ( ) ; this . _createModifier ( ) ; this . _refreshMoveBtnsAvalibility ( ) ; this . _refreshBtnTabIndexes ( ) ;
2023-04-08 15:14:19 +00:00
"function" == typeof a && a ( this . mainContainer ) } ; d . prototype . _showConfigurationTool = function ( ) { this . configContainer . addClass ( "hidden" ) ; this . modifyContainer . removeClass ( "hidden" ) } ; d . prototype . _showConfig = function ( ) { var a = this . getActualConfig ( ) , b , c ; if ( a . toolbarGroups ) { b = a . toolbarGroups ; for ( var e = this . cfg . trimEmptyGroups , f = [ ] , g = b . length , m = 0 ; m < g ; m ++ ) { var h = b [ m ] ; if ( "/" == h ) f . push ( "'/'" ) ; else { if ( e ) for ( var k = h . groups . length ; k -- ; ) 0 == d . getTotalSubGroupButtonsNumber ( h . groups [ k ] , this . fullToolbarEditor ) && h . groups . splice ( k ,
1 ) ; e && 0 == h . groups . length || f . push ( l . stringifyJSONintoOneLine ( h , { addSpaces : ! 0 , noQuotesOnKey : ! 0 , singleQuotes : ! 0 } ) ) } } b = "\n\t\t" + f . join ( ",\n\t\t" ) } a . removeButtons && ( c = a . removeButtons ) ; a = [ '\x3ctextarea class\x3d"configCode" readonly\x3eCKEDITOR.editorConfig \x3d function( config ) {\n' , b ? "\tconfig.toolbarGroups \x3d [" + b + "\n\t];" : "" , c ? "\n\n" : "" , c ? "\tconfig.removeButtons \x3d '" + c + "';" : "" , "\n};\x3c/textarea\x3e" ] . join ( "" ) ; this . modifyContainer . addClass ( "hidden" ) ; this . configContainer . removeClass ( "hidden" ) ;
2022-12-19 20:22:19 +00:00
this . configContainer . setHtml ( a ) } ; d . prototype . _toggleVisibilityEmptyElements = function ( ) { this . modifyContainer . hasClass ( "empty-visible" ) ? ( this . modifyContainer . removeClass ( "empty-visible" ) , this . emptyVisible = ! 1 ) : ( this . modifyContainer . addClass ( "empty-visible" ) , this . emptyVisible = ! 0 ) ; this . _refreshMoveBtnsAvalibility ( ) } ; d . prototype . _createModifier = function ( ) { function a ( ) { b . _highlightGroup ( this . data ( "name" ) ) } var b = this ; l . prototype . _createModifier . call ( this ) ; this . modifyContainer . setHtml ( this . _toolbarConfigToListString ( ) ) ;
2023-04-08 15:14:19 +00:00
var c = this . modifyContainer . find ( 'li[data-type\x3d"group"]' ) ; this . modifyContainer . on ( "mouseleave" , function ( ) { this . _dehighlightActiveToolGroup ( ) } , this ) ; for ( var e = c . count ( ) , f = 0 ; f < e ; f += 1 ) c . getItem ( f ) . on ( "mouseenter" , a ) ; CKEDITOR . document . on ( "keypress" , function ( a ) { a = a . data . $ . keyCode ; a = 32 == a || 13 == a ; var c = new CKEDITOR . dom . element ( CKEDITOR . document . $ . activeElement ) ; c . getAscendant ( function ( a ) { return a . $ == b . mainContainer . $ } ) && a && "button" == c . data ( "type" ) && c . findOne ( "input" ) . $ . click ( ) } ) ; this . modifyContainer . on ( "click" ,
2022-12-19 20:22:19 +00:00
function ( a ) { var c = a . data . $ , e = new CKEDITOR . dom . element ( c . target || c . srcElement ) ; if ( a = d . getGroupOrSeparatorLiAncestor ( e ) ) { b . cachedActiveElement = document . activeElement ; if ( e . $ instanceof HTMLInputElement ) b . _handleCheckboxClicked ( e ) ; else if ( e . $ instanceof HTMLButtonElement && ( c . preventDefault ? c . preventDefault ( ) : c . returnValue = ! 1 , ( c = b . _handleAnchorClicked ( e . $ ) ) && "remove" == c . action ) ) return ; c = a . data ( "type" ) ; a = a . data ( "name" ) ; b . _setActiveElement ( c , a ) ; b . cachedActiveElement && b . cachedActiveElement . focus ( ) } } ) ; this . toolbarContainer ||
( this . _createToolbar ( ) , this . toolbarContainer . insertBefore ( this . mainContainer . getChildren ( ) . getItem ( 0 ) ) ) ; this . showToolbarBtnsByGroupName ( "edit" ) ; this . configContainer || ( this . configContainer = new CKEDITOR . dom . element ( "div" ) , this . configContainer . addClass ( "configContainer" ) , this . configContainer . addClass ( "hidden" ) , this . mainContainer . append ( this . configContainer ) ) ; return this . mainContainer } ; d . prototype . showToolbarBtnsByGroupName = function ( a ) { if ( this . toolbarContainer ) for ( var b = this . toolbarContainer . find ( "button" ) ,
c = b . count ( ) , e = 0 ; e < c ; e += 1 ) { var d = b . getItem ( e ) ; d . data ( "group" ) == a ? d . removeClass ( "hidden" ) : d . addClass ( "hidden" ) } } ; d . parseGroupToConfigValue = function ( a ) { if ( "separator" == a . type ) return "/" ; var b = a . groups , c = b . length ; delete a . totalBtns ; for ( var e = 0 ; e < c ; e += 1 ) b [ e ] = b [ e ] . name ; return a } ; d . getGroupOrSeparatorLiAncestor = function ( a ) { return a . $ instanceof HTMLLIElement && "group" == a . data ( "type" ) ? a : d . getFirstAncestor ( a , function ( a ) { a = a . data ( "type" ) ; return "group" == a || "separator" == a } ) } ; d . prototype . _setActiveElement = function ( a ,
2023-04-08 15:14:19 +00:00
b ) { this . currentActive && this . currentActive . elem . removeClass ( "active" ) ; if ( null == a ) this . _dehighlightActiveToolGroup ( ) , this . currentActive = null ; else { var c = this . mainContainer . findOne ( 'ul[data-type\x3dtable-body] li[data-type\x3d"' + a + '"][data-name\x3d"' + b + '"]' ) ; c . addClass ( "active" ) ; this . currentActive = { type : a , name : b , elem : c } ; "group" == a && this . _highlightGroup ( b ) ; "separator" == a && this . _dehighlightActiveToolGroup ( ) } } ; d . prototype . getActiveToolGroup = function ( ) { return this . editorInstance . container ? this . editorInstance . container . findOne ( ".cke_toolgroup.active, .cke_toolbar.active" ) :
2022-12-19 20:22:19 +00:00
null } ; d . prototype . _dehighlightActiveToolGroup = function ( ) { var a = this . getActiveToolGroup ( ) ; a && a . removeClass ( "active" ) ; this . editorInstance . container && this . editorInstance . container . removeClass ( "some-toolbar-active" ) } ; d . prototype . _highlightGroup = function ( a ) { this . editorInstance . container && ( a = this . getFirstEnabledButtonInGroup ( a ) , a = this . editorInstance . container . findOne ( ".cke_button__" + a + ", .cke_combo__" + a ) , this . _dehighlightActiveToolGroup ( ) , this . editorInstance . container && this . editorInstance . container . addClass ( "some-toolbar-active" ) ,
2023-04-08 15:14:19 +00:00
a && ( a = d . getFirstAncestor ( a , function ( a ) { return a . hasClass ( "cke_toolbar" ) } ) ) && a . addClass ( "active" ) ) } ; d . prototype . getFirstEnabledButtonInGroup = function ( a ) { var b = this . actualConfig . toolbarGroups ; a = this . getGroupIndex ( a ) ; b = b [ a ] ; if ( - 1 == a ) return null ; a = b . groups ? b . groups . length : 0 ; for ( var c = 0 ; c < a ; c += 1 ) { var e = this . getFirstEnabledButtonInSubgroup ( b . groups [ c ] . name ) ; if ( e ) return e } return null } ; d . prototype . getFirstEnabledButtonInSubgroup = function ( a ) { for ( var b = ( a = this . fullToolbarEditor . buttonsByGroup [ a ] ) ? a . length :
0 , c = 0 ; c < b ; c += 1 ) { var e = a [ c ] . name ; if ( ! this . isButtonRemoved ( e ) ) return e } return null } ; d . prototype . _handleCheckboxClicked = function ( a ) { var b = a . getAscendant ( "li" ) . data ( "name" ) ; a . $ . checked ? this . _removeButtonFromRemoved ( b ) : this . _addButtonToRemoved ( b ) } ; d . prototype . _handleAnchorClicked = function ( a ) { a = new CKEDITOR . dom . element ( a ) ; var b = a . getAscendant ( "li" ) , c = b . getAscendant ( "ul" ) , e = b . data ( "type" ) , d = b . data ( "name" ) , g = a . data ( "direction" ) , m = "up" == g ? b . getPrevious ( ) : b . getNext ( ) , h ; if ( a . hasClass ( "disabled" ) ) return null ;
if ( a . hasClass ( "remove" ) ) return b . remove ( ) , this . _removeSeparator ( b . data ( "name" ) ) , this . _setActiveElement ( null ) , { action : "remove" } ; if ( ! a . hasClass ( "move" ) || ! m ) return { action : null } ; if ( "group" == e || "separator" == e ) h = this . _moveGroup ( g , d ) ; "subgroup" == e && ( h = b . getAscendant ( "li" ) . data ( "name" ) , h = this . _moveSubgroup ( g , h , d ) ) ; "up" == g && b . insertBefore ( c . getChild ( h ) ) ; "down" == g && b . insertAfter ( c . getChild ( h ) ) ; for ( var k ; b = "up" == g ? b . getPrevious ( ) : b . getNext ( ) ; ) if ( this . emptyVisible || ! b . hasClass ( "empty" ) ) { k = b ; break } k || ( k =
'[data-direction\x3d"' + ( "up" == g ? "down" : "up" ) + '"]' , this . cachedActiveElement = a . getParent ( ) . findOne ( k ) ) ; this . _refreshMoveBtnsAvalibility ( ) ; this . _refreshBtnTabIndexes ( ) ; return { action : "move" } } ; d . prototype . _refreshMoveBtnsAvalibility = function ( ) { function a ( a ) { var c = a . count ( ) ; for ( d = 0 ; d < c ; d += 1 ) b . _disableElementsInList ( a . getItem ( d ) ) } for ( var b = this , c = this . mainContainer . find ( "ul[data-type\x3dtable-body] li \x3e p \x3e span \x3e button.move.disabled" ) , e = c . count ( ) , d = 0 ; d < e ; d += 1 ) c . getItem ( d ) . removeClass ( "disabled" ) ;
2022-12-19 20:22:19 +00:00
a ( this . mainContainer . find ( "ul[data-type\x3dtable-body]" ) ) ; a ( this . mainContainer . find ( "ul[data-type\x3dtable-body] \x3e li \x3e ul" ) ) } ; d . prototype . _refreshBtnTabIndexes = function ( ) { for ( var a = this . mainContainer . find ( '[data-tab\x3d"true"]' ) , b = a . count ( ) , c = 0 ; c < b ; c ++ ) { var e = a . getItem ( c ) , d = e . hasClass ( "disabled" ) ; e . setAttribute ( "tabindex" , d ? - 1 : c ) } } ; d . prototype . _disableElementsInList = function ( a ) { function b ( a ) { return ! a . hasClass ( "empty" ) } if ( a . getChildren ( ) . count ( ) ) { var c ; this . emptyVisible ? ( c = a . getFirst ( ) , a = a . getLast ( ) ) :
2023-04-08 15:14:19 +00:00
( c = a . getFirst ( b ) , a = a . getLast ( b ) ) ; if ( c ) var e = c . findOne ( 'p button[data-direction\x3d"up"]' ) ; if ( a ) var d = a . findOne ( 'p button[data-direction\x3d"down"]' ) ; e && ( e . addClass ( "disabled" ) , e . setAttribute ( "tabindex" , "-1" ) ) ; d && ( d . addClass ( "disabled" ) , d . setAttribute ( "tabindex" , "-1" ) ) } } ; d . prototype . getGroupIndex = function ( a ) { for ( var b = this . actualConfig . toolbarGroups , c = b . length , d = 0 ; d < c ; d += 1 ) if ( b [ d ] . name == a ) return d ; return - 1 } ; d . prototype . _addSeparator = function ( ) { var a = this . _determineSeparatorToAddIndex ( ) , b = d . createSeparatorLiteral ( ) ,
2022-12-19 20:22:19 +00:00
c = CKEDITOR . dom . element . createFromHtml ( d . getToolbarSeparatorString ( b ) ) ; this . actualConfig . toolbarGroups . splice ( a , 0 , b ) ; c . insertBefore ( this . modifyContainer . findOne ( "ul[data-type\x3dtable-body]" ) . getChild ( a ) ) ; this . _setActiveElement ( "separator" , b . name ) ; this . _refreshMoveBtnsAvalibility ( ) ; this . _refreshBtnTabIndexes ( ) ; this . _refreshEditor ( ) } ; d . prototype . _removeSeparator = function ( a ) { var b = CKEDITOR . tools . indexOf ( this . actualConfig . toolbarGroups , function ( b ) { return "separator" == b . type && b . name == a } ) ; this . actualConfig . toolbarGroups . splice ( b ,
1 ) ; this . _refreshMoveBtnsAvalibility ( ) ; this . _refreshBtnTabIndexes ( ) ; this . _refreshEditor ( ) } ; d . prototype . _determineSeparatorToAddIndex = function ( ) { return this . currentActive ? ( "group" == this . currentActive . elem . data ( "type" ) || "separator" == this . currentActive . elem . data ( "type" ) ? this . currentActive . elem : this . currentActive . elem . getAscendant ( "li" ) ) . getIndex ( ) : 0 } ; d . prototype . _moveElement = function ( a , b , c ) { function e ( a ) { return a . totalBtns || "separator" == a . type } c = this . emptyVisible ? "down" == c ? b + 1 : b - 1 : d . getFirstElementIndexWith ( a ,
b , c , e ) ; return d . moveTo ( c - b , a , b ) } ; d . prototype . _moveGroup = function ( a , b ) { var c = this . getGroupIndex ( b ) , c = this . _moveElement ( this . actualConfig . toolbarGroups , c , a ) ; this . _refreshMoveBtnsAvalibility ( ) ; this . _refreshBtnTabIndexes ( ) ; this . _refreshEditor ( ) ; return c } ; d . prototype . _moveSubgroup = function ( a , b , c ) { b = this . getGroupIndex ( b ) ; b = this . actualConfig . toolbarGroups [ b ] ; var d = CKEDITOR . tools . indexOf ( b . groups , function ( a ) { return a . name == c } ) ; a = this . _moveElement ( b . groups , d , a ) ; this . _refreshEditor ( ) ; return a } ; d . prototype . _calculateTotalBtns =
function ( ) { for ( var a = this . actualConfig . toolbarGroups , b = a . length ; b -- ; ) { var c = a [ b ] , e = d . getTotalGroupButtonsNumber ( c , this . fullToolbarEditor ) ; "separator" != c . type && ( c . totalBtns = e ) } } ; d . prototype . _addButtonToRemoved = function ( a ) { if ( - 1 != CKEDITOR . tools . indexOf ( this . removedButtons , a ) ) throw "Button already added to removed" ; this . removedButtons . push ( a ) ; this . actualConfig . removeButtons = this . removedButtons . join ( "," ) ; this . _refreshEditor ( ) } ; d . prototype . _removeButtonFromRemoved = function ( a ) { a = CKEDITOR . tools . indexOf ( this . removedButtons ,
2023-04-08 15:14:19 +00:00
a ) ; if ( - 1 == a ) throw "Trying to remove button from removed, but not found" ; this . removedButtons . splice ( a , 1 ) ; this . actualConfig . removeButtons = this . removedButtons . join ( "," ) ; this . _refreshEditor ( ) } ; d . parseGroupToConfigValue = function ( a ) { if ( "separator" == a . type ) return "/" ; var b = a . groups , c = b . length ; delete a . totalBtns ; for ( var d = 0 ; d < c ; d += 1 ) b [ d ] = b [ d ] . name ; return a } ; d . getGroupOrSeparatorLiAncestor = function ( a ) { return a . $ instanceof HTMLLIElement && "group" == a . data ( "type" ) ? a : d . getFirstAncestor ( a , function ( a ) { a = a . data ( "type" ) ;
return "group" == a || "separator" == a } ) } ; d . createSeparatorLiteral = function ( ) { return { type : "separator" , name : "separator" + CKEDITOR . tools . getNextNumber ( ) } } ; d . prototype . _toolbarConfigToListString = function ( ) { for ( var a = this . actualConfig . toolbarGroups || [ ] , b = '\x3cul data-type\x3d"table-body"\x3e' , c = a . length , e = 0 ; e < c ; e += 1 ) var f = a [ e ] , b = "separator" == f . type ? b + d . getToolbarSeparatorString ( f ) : b + this . _getToolbarGroupString ( f ) ; b += "\x3c/ul\x3e" ; return d . getToolbarHeaderString ( ) + b } ; d . prototype . _getToolbarGroupString = function ( a ) { var b =
2022-12-19 20:22:19 +00:00
a . groups , c ; c = "" + [ '\x3cli data-type\x3d"group" data-name\x3d"' , a . name , '" ' , a . totalBtns ? "" : 'class\x3d"empty"' , "\x3e" ] . join ( "" ) ; c += d . getToolbarElementPreString ( a ) + "\x3cul\x3e" ; a = b . length ; for ( var e = 0 ; e < a ; e += 1 ) { var f = b [ e ] ; c += this . _getToolbarSubgroupString ( f , this . fullToolbarEditor . buttonsByGroup [ f . name ] ) } return c + "\x3c/ul\x3e\x3c/li\x3e" } ; d . getToolbarSeparatorString = function ( a ) { return [ '\x3cli data-type\x3d"' , a . type , '" data-name\x3d"' , a . name , '"\x3e' , d . getToolbarElementPreString ( "row separator" ) , "\x3c/li\x3e" ] . join ( "" ) } ;
2023-04-08 15:14:19 +00:00
d . getToolbarHeaderString = function ( ) { return '\x3cul data-type\x3d"table-header"\x3e\x3cli data-type\x3d"header"\x3e\x3cp\x3eToolbars\x3c/p\x3e\x3cul\x3e\x3cli\x3e\x3cp\x3eToolbar groups\x3c/p\x3e\x3cp\x3eToolbar group items\x3c/p\x3e\x3c/li\x3e\x3c/ul\x3e\x3c/li\x3e\x3c/ul\x3e' } ; d . getFirstAncestor = function ( a , b ) { for ( var c = a . getParents ( ) , d = c . length ; d -- ; ) if ( b ( c [ d ] ) ) return c [ d ] ; return null } ; d . getFirstElementIndexWith = function ( a , b , c , d ) { for ( ; "up" == c ? b -- : ++ b < a . length ; ) if ( d ( a [ b ] ) ) return b ; return - 1 } ; d . moveTo =
function ( a , b , c ) { var d ; - 1 != c && ( d = b . splice ( c , 1 ) [ 0 ] ) ; a = c + a ; b . splice ( a , 0 , d ) ; return a } ; d . getTotalSubGroupButtonsNumber = function ( a , b ) { var c = b . buttonsByGroup [ "string" == typeof a ? a : a . name ] ; return c ? c . length : 0 } ; d . getTotalGroupButtonsNumber = function ( a , b ) { for ( var c = 0 , e = a . groups , f = e ? e . length : 0 , g = 0 ; g < f ; g += 1 ) c += d . getTotalSubGroupButtonsNumber ( e [ g ] , b ) ; return c } ; d . prototype . _getToolbarSubgroupString = function ( a , b ) { var c ; c = "" + [ '\x3cli data-type\x3d"subgroup" data-name\x3d"' , a . name , '" ' , a . totalBtns ? "" : 'class\x3d"empty" ' ,
2022-12-19 20:22:19 +00:00
"\x3e" ] . join ( "" ) ; c += d . getToolbarElementPreString ( a . name ) ; c += "\x3cul\x3e" ; for ( var e = b ? b . length : 0 , f = 0 ; f < e ; f += 1 ) c += this . getButtonString ( b [ f ] ) ; return c += "\x3c/ul\x3e\x3c/li\x3e" } ; d . prototype . _getConfigButtonName = function ( a ) { var b = this . fullToolbarEditor . editorInstance . ui . items , c ; for ( c in b ) if ( b [ c ] . name == a ) return c ; return null } ; d . prototype . isButtonRemoved = function ( a ) { return - 1 != CKEDITOR . tools . indexOf ( this . removedButtons , this . _getConfigButtonName ( a ) ) } ; d . prototype . getButtonString = function ( a ) { var b = this . isButtonRemoved ( a . name ) ?
"" : 'checked\x3d"checked"' ; return [ '\x3cli data-tab\x3d"true" data-type\x3d"button" data-name\x3d"' , this . _getConfigButtonName ( a . name ) , '"\x3e\x3clabel title\x3d"' , a . label , '" \x3e\x3cinput tabindex\x3d"-1"type\x3d"checkbox"' , b , "/\x3e" , a . $ . getOuterHtml ( ) , "\x3c/label\x3e\x3c/li\x3e" ] . join ( "" ) } ; d . getToolbarElementPreString = function ( a ) { a = a . name ? a . name : a ; return [ '\x3cp\x3e\x3cspan\x3e\x3cbutton title\x3d"Move element upward" data-tab\x3d"true" data-direction\x3d"up" class\x3d"move icon-up-big"\x3e\x3c/button\x3e\x3cbutton title\x3d"Move element downward" data-tab\x3d"true" data-direction\x3d"down" class\x3d"move icon-down-big"\x3e\x3c/button\x3e' ,
2023-04-08 15:14:19 +00:00
"row separator" == a ? '\x3cbutton title\x3d"Remove element" data-tab\x3d"true" class\x3d"remove icon-trash"\x3e\x3c/button\x3e' : "" , a , "\x3c/span\x3e\x3c/p\x3e" ] . join ( "" ) } ; d . evaluateToolbarGroupsConfig = function ( a ) { return a = function ( a ) { var c = { } , d ; try { d = eval ( "(" + a + ")" ) } catch ( f ) { try { d = eval ( a ) } catch ( g ) { return null } } return c . toolbarGroups && "number" == typeof c . toolbarGroups . length ? JSON . stringify ( c ) : d && "number" == typeof d . length ? JSON . stringify ( { toolbarGroups : d } ) : d && d . toolbarGroups ? JSON . stringify ( d ) : null } ( a ) } ;
2022-12-19 20:22:19 +00:00
return d } ) ( ) ;