View file MMO-Hide-2.3.4/upload/js/MMO/Hide/editor.min.js

File size: 4.07Kb
window.MMO=window.MMO||{};window.MMO.Hide=window.MMO.Hide||{};
((l,d)=>{MMO.Hide.editorConfig={dialog:[],disabledDialog:[]};MMO.Hide.EditorButtons={init(){const b=d.querySelector(".js-mhHideEditorConfig");b&&MMO.Hide.EditorButtons.setupButtonConfig(b);MMO.Hide.EditorButtons.registerCommands()},setupButtonConfig(b){try{const a=JSON.parse(b.innerHTML);MMO.Hide.editorConfig.dialog=a.buttons||[];MMO.Hide.editorConfig.disabledDialog=a.disabledDialog||[]}catch(a){console.error("Editor buttons data not valid: ",a)}},registerCommands(){Array.isArray(MMO.Hide.editorConfig.dialog)&&
MMO.Hide.editorConfig.dialog.forEach(b=>{MMO.Hide[b]=MMO.Hide[b]||{};MMO.Hide[b].editorButton||(MMO.Hide[b].editorButton={init(){MMO.Hide[b].EditorDialog=XF.extend(XF.EditorDialog,{cache:!1,container:null,_beforeShow(a){this.ed.$el.blur()},_init(a){XF.on(a.overlay.querySelector("form"),"submit",this.submit.bind(this))},_afterShow(a){if(a=a.container.querySelector("#editor_hide_text"))a.value=MMO.Hide.EditorButtons.getSelectionContainer(this.ed),a.focus()},submit(a){a.preventDefault();a=this.ed;const c=
d.querySelector("#editor_hide_count"),e=d.querySelectorAll("#editor_hide_id_count input:checked"),g=d.querySelector("#editor_hide_text"),h=[];e.forEach(f=>h.push(f.value));const k=Array.from(e).map(f=>f.value).join(",");a.selection.restore();MMO.Hide.EditorButtons.insertHide(a,b.toString().toUpperCase(),e.length?k:c?c.value:"",g.value);this.overlay.hide();g.value="";c&&(c.value="")}})},callback(){if(MMO.Hide.editorConfig.disabledDialog.includes(b)){const c=MMO.Hide.EditorButtons;var a=JSON.parse(d.querySelector(".js-editorCustom").innerHTML);
a=!(a.hasOwnProperty(b)&&"yes"===a[b].option);c.insertHide(this,b.toString().toUpperCase(),a?0:1,c.getSelectionContainer(this))}else XF.EditorHelpers.loadDialog(this,b)}});MMO.Hide[b].editorButton.init();XF.EditorHelpers.dialogs[b]=new MMO.Hide[b].EditorDialog(b);FroalaEditor.COMMANDS["xfCustom_"+b]&&(FroalaEditor.COMMANDS["xfCustom_"+b].callback=MMO.Hide[b].editorButton.callback)})},getSelectionContainer(b){if(b.selection.isCollapsed())var a="";else a=b.html.getSelected().replace(/ /gmi," ").replace(/\u200B/g,
"").replace(/(<\/(p|div|pre|blockquote|h[1-6]|tr|th|ul|ol|li)>)\s*/gi,"$1\n").replace(/<(li|p)><br><\/\1>\s*/gi,"\n").replace(/<br>\s*/gi,"\n"),a=d.createRange().createContextualFragment(a).textContent.trim();b.selection.save();return a},insertHide(b,a,c,e){e=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/\t/g,"    ").replace(/\n /g,"\n&nbsp;").replace(/ {2}/g,"&nbsp; ").replace(/ {2}/g," &nbsp;").replace(/\n/g,"</p><p>");a="["+a+(c?"="+c:"")+"]"+
e+"[/"+a+"]";a.match(/<\/p>/i)&&(a=("<p>"+a+"</p>").replace(/<p><\/p>/g,"<p><br></p>"));b.html.insert(a);XF.EditorHelpers.normalizeAfterInsert(b)}};MMO.Hide.Reaction=XF.extend(XF.Reaction,{__backup:{actionComplete:"__mhHide_actionComplete"},actionComplete(b){this.__mhHide_actionComplete(b);"< .js-post | .js-reactionsList"===this.options.reactionList&&this.target.closest(".message").querySelector(".message-body")&&setTimeout(()=>this.reloadPost(),100)},reloadPost(){XF.ajax("get",this.target.getAttribute("href").replace("react",
"show"),{},this.postUpdate.bind(this),{skipDefaultSuccessError:!0})},postUpdate(b){b.errors||b.exception||XF.setupHtmlInsert(b.html,(a,c)=>{a=a.querySelector(".message-body");this.target.closest(".message-cell--main").querySelector(".message-body").outerHTML=a.outerHTML;XF.activate(a);XF.layoutChange()})}});XF.SelectToQuote&&(MMO.Hide.SelectToQuote=XF.extend(XF.SelectToQuote,{__backup:{getValidSelectionContainer:"__mhHide_getValidSelectionContainer"},getValidSelectionContainer(b){if(b.isCollapsed||
!b.rangeCount)return null;const a=b.getRangeAt(0),c=a.endContainer.parentElement;return a.startContainer.parentElement.closest(".bbCodeBlock--hide, .js-noSelectToQuote")||c.closest(".bbCodeBlock--hide, .js-noSelectToQuote")?null:this.__mhHide_getValidSelectionContainer(b)}}),XF.Element.register("select-to-quote","MMO.Hide.SelectToQuote"));XF.on(d,"editor:first-start",MMO.Hide.EditorButtons.init);XF.Element.register("reaction","MMO.Hide.Reaction")})(window,document);