Seditio Source
Root |
./othercms/xenForo 2.2.8/js/xf/editor_manager.min.js
'use strict';!function(d,m,k,n){XF.EditorManager=XF.Element.newHandler({options:{dragListClass:".js-dragList",commandTrayClass:".js-dragList-commandTray"},$lists:null,trayElements:[],listElements:[],isScrollable:!0,dragula:null,$cache:null,xfEditor:null,init:function(){this.$lists=this.$target.find(this.options.dragListClass);this.$lists.each(XF.proxy(this,"prepareList"));this.$cache=this.$target.find(".js-dragListValue");this.initDragula();var a=XF.Element.getHandler(d("textarea[name=button_layout_preview_html]").first(),
"editor");a?(this.xfEditor=a,a.$target.on("editor:init",XF.proxy(this,"rebuildValueCache"))):this.rebuildValueCache()},prepareList:function(a,b){if(d(b).is(this.options.commandTrayClass))this.trayElements.push(b);else{this.listElements[this.listElements.length]=b;var c=this;a=this.getListId(b);this.getListOptions(a).on("change",function(){c.updateList(b,!0)})}this.updateList(b)},initDragula:function(){var a=this;k.addEventListener("touchmove",function(e){a.isScrollable||e.preventDefault()},{passive:!1});
var b=this.listElements,c;for(c in this.trayElements)b.unshift(this.trayElements[c]);this.dragula=dragula(b,{direction:"horizontal",removeOnSpill:!0,copy:function(e,f){return a.isTrayElement(f)},accepts:function(e,f){return!a.isTrayElement(f)},moves:function(e,f,h,g){return!d(e).hasClass("toolbar-addDropdown")&&!d(e).hasClass("fr-separator")}});this.dragula.on("drag",XF.proxy(this,"drag"));this.dragula.on("dragend",XF.proxy(this,"dragend"));this.dragula.on("drop",XF.proxy(this,"drop"));this.dragula.on("cancel",
XF.proxy(this,"cancel"));this.dragula.on("remove",XF.proxy(this,"remove"));this.dragula.on("over",XF.proxy(this,"over"));this.dragula.on("out",XF.proxy(this,"out"))},drag:function(a,b){this.isScrollable=!1;a=d(a);b=d(b);a.hasClass("toolbar-separator")&&!b.hasClass("js-dragList-commandTray")&&a.next(".fr-separator").remove()},dragend:function(a){this.isScrollable=!0;d(".js-dropTarget").remove()},drop:function(a,b,c,e){a=d(a);d(b);a.data("cmd");a.hasClass("toolbar-separator")?this.appendSeparator(a):
a.next().is(".fr-separator")&&a.insertAfter(a.next());"menu"===a.attr("data-xf-click")&&a.attr("data-xf-click",null);this.isTrayElement(c)||this.updateList(c);this.isTrayElement(b)||this.updateList(b);this.rebuildValueCache()},cancel:function(a,b,c){a=d(a);c=d(c);a.hasClass("toolbar-separator")&&!c.hasClass("js-dragList-commandTray")&&this.appendSeparator(a)},remove:function(a,b,c){this.isTrayElement(c)||(XF.flashMessage(XF.phrase("button_removed"),1500),this.updateList(c,!0))},over:function(a,b,
c){},out:function(a,b,c){},getListId:function(a){return a.id.substr(12)},getListOptions:function(a){return d("#js-toolbar-menu--"+a).find("input, select")},getListOptionValues:function(a){var b={buttons:[]};this.getListOptions(a).each(function(c,e){b[e.name]=d(e).val()});return b},updateList:function(a,b){var c=this.getListId(a);c=this.getListOptionValues(c);d(a).removeClass(function(e,f){return(f.match(/toolbar-option--[^\s$]+/g)||[]).join(" ")}).addClass("toolbar-option--buttonsVisible-"+c.buttonsVisible).addClass("toolbar-option--align-"+
c.align);b&&this.rebuildValueCache()},rebuildValueCache:function(a){var b={},c=this;this.$cache.length&&(this.$lists.not(this.options.commandTrayClass).each(function(e,f){e=c.getListId(f);var h=c.getListOptionValues(e);d(f).children().each(function(g,l){g=d(l);g.data("cmd")&&h.buttons.push(g.data("cmd"))});b[e]=h}),this.$cache.val(JSON.stringify(b)),a&&"editor:init"===a.type||this.updateEditorPreview(b))},updateEditorPreview:function(a){var b=this.xfEditor,c=d(".js-editorToolbars").first();if(b&&
c.length)if(c.html(JSON.stringify({toolbarButtons:a})),b.ed.$tb.hasClass("fr-toolbar-open")){var e=b.ed.$tb.find(".fr-btn.fr-open").first().data("cmd");b.reInit({afterInit:function(){b.ed.commands[e]()}})}else b.reInit()},appendSeparator:function(a){d("<div />").addClass("fr-separator").addClass("fr"+a.data("cmd")).insertAfter(a)},isTrayElement:function(a){return-1!==this.trayElements.indexOf(a)}});XF.Element.register("editor-manager","XF.EditorManager")}(jQuery,window,document);