Seditio Source
Root |
./othercms/xenForo 2.2.8/js/xf/editor.min.js
'use strict';!function(f,z,D,H){f.FE=FroalaEditor;XF.isEditorEnabled=function(){return XF.LocalStorage.get("editorDisabled")?!1:!0};XF.setIsEditorEnabled=function(b){b?XF.LocalStorage.remove("editorDisabled"):XF.LocalStorage.set("editorDisabled","1",!0)};XF.Editor=XF.Element.newHandler({options:{maxHeight:.7,minHeight:250,buttonsRemove:"",attachmentTarget:!0,deferred:!1,attachmentUploader:".js-attachmentUpload",attachmentContextInput:"attachment_hash_combined"},edMinHeight:63,$form:null,buttonManager:null,
ed:null,mentioner:null,emojiCompleter:null,uploadUrl:null,init:function(){this.$target.is("textarea")?(this.options.minHeight=Math.max(this.edMinHeight,this.options.minHeight),this.$target.trigger("editor:start",[this]),this.$form=this.$target.closest("form"),this.$form.length||(this.$form=null),this.options.attachmentTarget&&(this.uploadUrl=this.$target.closest("[data-xf-init~=attachment-manager]").find(this.options.attachmentUploader).attr("href")),this.options.deferred||this.startInit()):console.error("Editor can only be initialized on a textarea")},
startInit:function(b){var a=this,e=b&&b.beforeInit,c=b&&b.afterInit;this.$target.css("visibility","");this.ed=new FroalaEditor(this.$target[0],this.getEditorConfig(),function(){var d=a.ed;e&&e(a,d);a.editorInit();c&&c(a,d)})},reInit:function(b){this.ed&&(this.ed.destroy(),this.startInit(b))},getEditorConfig:function(){var b=this.getHeightLimits(),a="font_awesome_5";"s"!==XF.config.fontAwesomeWeight&&(a+=XF.config.fontAwesomeWeight);b={attribution:!1,direction:FroalaEditor.LANGUAGE.xf.direction,editorClass:"bbWrapper",
fileUpload:!1,fileMaxSize:4294967296,fileUploadParam:"upload",fileUploadURL:!1,fontFamily:{arial:"Arial","'book antiqua'":"Book Antiqua","'courier new'":"Courier New",georgia:"Georgia",tahoma:"Tahoma","'times new roman'":"Times New Roman","'trebuchet ms'":"Trebuchet MS",verdana:"Verdana"},fontSize:"9 10 12 15 18 22 26".split(" "),heightMin:b[0],heightMax:b[1],htmlAllowedTags:"a audio b bdi bdo blockquote br cite code dfn div em h1 h2 h3 h4 h5 h6 hr i img li mark ol p pre s small span strike strong sub sup table tbody td tfoot th thead time tr u ul var video wbr".split(" "),
key:"ZOD3gA8B10A6C5A2G3C-8TMIBDIa1NTMNZFFPFZc1d1Ib2a1E1fA4A3G3F3F2B6C4C4C3G3==",htmlAllowComments:!1,iconsTemplate:a,imageUpload:!1,imageCORSProxy:null,imageDefaultDisplay:"inline",imageDefaultWidth:0,imageEditButtons:"imageAlign imageSize imageAlt | imageReplace imageRemove | imageLink linkOpen linkEdit linkRemove".split(" "),imageManagerLoadURL:!1,imageMaxSize:4294967296,imagePaste:!1,imageResize:!0,imageUploadParam:"upload",imageUploadRemoteUrls:!1,imageUploadURL:!1,language:"xf",linkAlwaysBlank:!0,
linkEditButtons:["linkOpen","linkEdit","linkRemove"],linkInsertButtons:["linkBack"],listAdvancedTypes:!1,paragraphFormat:{N:"Normal",H2:"Heading 1",H3:"Heading 2",H4:"Heading 3"},placeholderText:"",tableResizer:!1,tableEditButtons:["tableHeader","tableRemove","|","tableRows","tableColumns"],toolbarSticky:!1,toolbarStickyOffset:36,tableInsertHelper:!1,videoAllowedTypes:["mp4","quicktime","ogg","webm"],videoAllowedProviders:[],videoDefaultAlign:"center",videoDefaultDisplay:"inline",videoDefaultWidth:500,
videoEditButtons:["videoReplace","videoRemove","|","videoAlign","videoSize"],videoInsertButtons:["videoBack","|","videoUpload"],videoMaxSize:4294967296,videoMove:!0,videoUpload:!1,videoUploadParam:"upload",videoUploadURL:!1,zIndex:XF.getElEffectiveZIndex(this.$target)+1,xfBbCodeAttachmentContextInput:this.options.attachmentContextInput};FroalaEditor.DefineIcon("insertVideo",{FA5NAME:"video-plus"});this.uploadUrl?(a={_xfToken:XF.config.csrf,_xfResponseType:"json",_xfWithData:1},b.fileUpload=!0,b.fileUploadParams=
a,b.fileUploadURL=this.uploadUrl,b.imageUpload=!0,b.imageUploadParams=a,b.imageUploadURL=this.uploadUrl,b.imagePaste=!0,b.videoUpload=!0,b.videoUploadParams=a,b.videoUploadURL=this.uploadUrl):b.imageInsertButtons=["imageByURL"];a=this.getButtonConfig();b=f.extend({},b,a);this.$target.trigger("editor:config",[b,this]);return b},getButtonConfig:function(){try{var b=f.parseJSON(f(".js-editorToolbars").first().html())||{}}catch(d){console.error("Editor buttons data not valid: ",d);return}var a={};try{var e=
f.parseJSON(f(".js-editorDropdowns").first().html())||{},c;for(c in e)e.hasOwnProperty(c)&&e[c].buttons&&(a[c]=e[c].buttons)}catch(d){console.error("Editor dropdowns data not valid: ",d)}this.buttonManager=b=new XF.EditorButtons(this,b,a);XF.isElementWithinDraftForm(this.$target)||b.addRemovedButton("xfDraft");(a=this.getAttachmentManager())&&a.supportsVideoAudioUploads||b.addRemovedButton("insertVideo");this.options.buttonsRemove&&b.addRemovedButtons(this.options.buttonsRemove.split(","));this.$target.trigger("editor:toolbar-buttons",
[{buttonManager:b},this]);return b.getToolbars()},editorInit:function(){var b=this,a=this.ed;this.watchEditorHeight();if(this.$form&&(this.$form.on("ajax-submit:before draft:beforesync",function(){XF.EditorHelpers.sync(a)}),this.$form.on("draft:complete",function(d,g){if(a.$tb.length&&!0===g.draft.saved&&(d=a.$tb.find(".fr-command.fr-btn[data-cmd=xfDraft]"),d.length)){var l=d.find(".editorDraftIndicator");l.length||(l=f('<b class="editorDraftIndicator" />').appendTo(d));setTimeout(function(){l.addClass("is-active")},
50);setTimeout(function(){l.removeClass("is-active")},2500)}}),this.$form.on("ajax-submit:before",function(d,g){0<a.$el.find(".fr-uploading").length&&!confirm(XF.phrase("files_being_uploaded_are_you_sure"))&&(g.preventSubmit=!0)}),a.events.on("keydown",function(d){if("Enter"==d.key&&(XF.isMac()?d.metaKey:d.ctrlKey))return d.preventDefault(),b.$form.submit(),!1},!0),XF.isElementWithinDraftForm(this.$form))){var e=f(a.$el[0]);XF.Element.applyHandler(e,"draft-trigger")}a.events.on("image.inserted",function(d){d.removeClass("fr-dib").addClass("fr-dii")});
a.events.on("image.loaded",function(d){b.replaceBase64ImageWithUpload(d)});a.events.on("image.beforePasteUpload",function(d){if("data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="==d.src)return!1});var c=!1;a.events.on("cut copy",function(d){if((d=a.selection.ranges(0))&&d.commonAncestorContainer){var g=d.commonAncestorContainer;if(g.nodeType==Node.TEXT_NODE)if(0==d.startOffset&&d.endOffset==g.length&&g.parentNode!=a.$el[0]){for(g=g.parentNode;g.parentNode!=a.$el[0]&&!g.previousSibling&&
!g.nextSibling;)g=g.parentNode;d.selectNode(g)}else g=g.parentNode;var l=f(g).find("p");l.attr("data-xf-p","1");setTimeout(function(){l.removeAttr("data-xf-p")},0)}});a.events.on("paste.before",function(d){c=!1;if(d&&d.clipboardData&&d.clipboardData.getData){var g="";d=d.clipboardData.types;if(a.helpers.isArray(d))for(var l=0;l<d.length;l++)g+=d[l]+";";else g=d;!/text\/plain/.test(g)||a.browser.mozilla||/text\/html/.test(g)||/text\/rtf/.test(g)&&a.browser.safari||(c=!0)}});a.events.on("paste.beforeCleanup",
function(d){c&&(d=d.replace(/\t/g,"    ").replace(/  /g,"&nbsp; ").replace(/  /g,"&nbsp; ").replace(/> /g,">&nbsp;"));d=d.replace(/(<pre[^>]*>)([\s\S]+?)(<\/pre>)/g,function(t,p,h,m){h=h.replace(/\r?\n/g,"<br>");return p+h+m});d=d.replace(/<p([^>]+)margin-top:\s*0[a-z]*;\s*margin-bottom:\s*0[a-z]*;([^>]*)>([\s\S]*?)<\/p>/g,function(t,p,h,m){return"<p"+p+h+' data-xf-p="1">'+m+"</p>"});d=d.replace(/<div(?=\s|>)/g,function(t){return t+' data-xf-p="1"'});var g;(g=d.match(/^(?:<meta[^>]*>)?<a href=(?:'|")([^'"]*)\/?(?:'|")>\1<\/a>$/))&&
(d=f.trim(g[1]));(g=d.match(/\x3c!--StartFragment--\x3e<a href=(?:'|")([^'"]*)\/?(?:'|")>[^<]+<\/a>\x3c!--EndFragment--\x3e/))&&(d=f.trim(g[1]));d=XF.adjustHtmlForRte(d);d=f.parseHTML(d);var l=function(t){var p,h;for(p=0;p<t.length;p++){var m=t[p];if(m instanceof Element){if(m.hasAttributes()){var q=m.attributes;for(h=q.length-1;0<=h;h--){var u=q[h];"on"!=u.name.toLowerCase().substr(0,2)&&"style"!=u.name.toLowerCase()||m.removeAttribute(u.name)}}l(m.children)}}};l(d);d=f("<div />").html(d).html();
return f.trim(d)});a.events.on("paste.afterCleanup",function(d){return b.normalizePaste(d)});a.events.on("paste.after",function(){var d=a.selection.ranges(0);if(d&&d.getBoundingClientRect){d=d.getBoundingClientRect();var g=a.$wp[0].getBoundingClientRect();(0>d.top||0>d.left||d.bottom>f(z).height()||d.right>f(z).width()||d.bottom>g.bottom)&&setTimeout(function(){b.scrollToCursor()},100);XF.EditorHelpers.normalizeBrForEditor(a.$el)}});e={url:XF.getAutoCompleteUrl()};this.mentioner=new XF.AutoCompleter(f(a.$el),
e,a);XF.config.shortcodeToEmoji&&(e={url:XF.canonicalizeUrl("index.php?misc/find-emoji"),at:":",keepAt:!1,insertMode:"html",displayTemplate:'<div class="contentRow"><div class="contentRow-figure contentRow-figure--emoji">{{{icon}}}</div><div class="contentRow-main contentRow-main--close">{{{text}}}<div class="contentRow-minor contentRow-minor--smaller">{{{desc}}}</div></div></div>',beforeInsert:function(d,g){XF.logRecentEmojiUsage(f(g).find("img.smilie").data("shortname"));return d}},this.emojiCompleter=
new XF.AutoCompleter(f(a.$el),e,a));this.setupUploads();XF.isEditorEnabled()||(e=this.$target.next("input[data-bb-code]"),e.length?a.bbCode.toBbCode(e.val(),!0):a.bbCode.toBbCode(null,!0));XF.EditorHelpers.setupBlurSelectionWatcher(a);this.$target.on("control:enabled",function(){a.edit.on()});this.$target.on("control:disabled",function(){a.edit.off()});this.$target.on("control:enabled",function(){a.edit.on();a.bbCode&&a.bbCode.isBbCodeView()?a.$tb.find(".fr-command[data-cmd=xfBbCode]").removeClass("fr-disabled"):
a.toolbar.enable()});this.$target.on("control:disabled",function(){a.edit.off();a.toolbar.disable();a.$tb.find(" > .fr-command").addClass("fr-disabled")});this.$target.trigger("editor:init",[a,this]);XF.layoutChange()},focus:function(){XF.EditorHelpers.focus(this.ed)},blur:function(){XF.EditorHelpers.blur(this.ed)},normalizePaste:function(b){b=b.replace(/(<(ul|li|p|div)>)\s+/ig,"$1");b=b.replace(/\s+(<\/(ul|li|p|div)>)/ig,"$1");b=b.replace(/<span>&nbsp;<\/span>/ig," ").replace(/(<\/li>)\s+(<li)/ig,
"$1$2");var a=this.ed,e=f.parseHTML(b),c=f("<div />").html(e);c.find("table").each(function(h,m){h=f(m).width("100%");h.wrap('<div class="bbTable"></div>');h.find("[colspan], [rowspan]").removeAttr("colspan rowspan");var q=0;h.find("> tbody > tr").each(function(){var u=f(this).find("> td, > th").length;q=Math.max(q,u)}).each(function(){var u=f(this).find("> td, > th"),v=u.length;if(v<q){var y="<td />";for(v&&"TH"===u[0].tagName&&(y="<th />");v<q;v++)f(this).append(y)}})});c.find("code, del, ins, sub, sup").replaceWith(function(){return this.innerHTML});
var d=!1;c.find("h1").replaceWith(function(){d=!0;return f("<h2>").append(f(this).contents())});var g={H2:d?"H3":"H2",H3:d?"H4":"H3",H4:"H4",H5:"H4",H6:"H4"};c.find("h2, h3, h4, h5, h6").replaceWith(function(){return f("<"+g[this.tagName]+">").append(f(this).contents())});c.find("pre").replaceWith(function(){var h=this.innerHTML;h=h.replace(/\r?\n/g,"<br>").replace(/\t/g,"    ").replace(/  /g,"&nbsp; ").replace(/  /g,"&nbsp; ").replace(/> /g,">&nbsp;").replace(/<br> /g,"<br>&nbsp;");return h+"<br>"});
a.opts.imagePaste||c.find("img[data-fr-image-pasted]").each(function(){var h=f(this);h.attr("src").match(/https?:\/\//i)&&h.removeAttr("data-fr-image-pasted")});c.find("br").each(function(h,m){var q=f(m).parents().not(c);if(q.length&&!q.filter(function(C,k){return a.node.isBlock(k)}).length){h=f([]);var u=!1,v=m,y=q.last();do{for(;v.nextSibling;)q=f(v.nextSibling).clone(),u?h.append(q):h=h.add(q),f(v.nextSibling).remove();v=v.parentNode;if(!v||c.is(v))break;q=f(v).clone().empty();q.html(h);h=q;u=
!0}while(v.parentNode&&!c.is(v.parentNode));f(m).remove();y.after(h);y.after("<br />")}});b="";e=c[0].textContent.replace(/\s/g,"");try{b=(a.win.localStorage.getItem("fr-copied-text")||"").replace(/\s/g,"")}catch(h){}b!==e&&c.find("> p:not([data-xf-p])").each(function(){this.nextSibling&&f(this).after("<p />")});c.find("p").removeAttr("data-xf-p");e=c.contents();b=f("<div />");for(var l=null,t=0;t<e.length;t++){var p=e[t];p.nodeType==Node.ELEMENT_NODE&&a.node.isBlock(p)?(b.append(p),l=null):p.nodeType==
Node.ELEMENT_NODE&&"BR"==p.tagName?(l||b.append("<p />"),l=null):(l||(l=f("<p />"),b.append(l)),l.append(p))}e=b.children();1==e.length&&e.is("p, div")&&(b=e);return XF.EditorHelpers.normalizeBrForEditor(b.html())},watchEditorHeight:function(){var b=this.ed,a=this;f(z).onPassive("resize",function(){var d=a.getHeightLimits();b.opts.heightMin=d[0];b.opts.heightMax=d[1];b.size.refresh();XF.layoutChange()});b.events.on("focus",function(){a.scrollToCursorAfterPendingResize()});var e=b.$wp.height(),c=function(){var d=
b.$wp.height();e!=d&&(e=d,XF.layoutChange())};b.events.on("keyup",c);b.events.on("commands.after",c);b.events.on("html.set",c);b.events.on("init",c);b.events.on("initialized",c)},getHeightLimits:function(){var b=this.options.maxHeight,a=this.options.minHeight,e=null,c=null;this.$target.closest(".overlay").length&&(b=.1);b&&(e=f(z).height(),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(e-=250),e=Math.floor(0<b?1>=b?e*b:b:e+b),e=Math.max(e,150));a&&e&&(c=Math.min(a,e),c==e&&--c);return[c,e]},setupUploads:function(){var b=
this,a=this.ed;a.events.on("file.uploaded",function(c){this.popups.hide("file.insert");this.events.focus();return b.handleUploadSuccess(c)});a.events.on("file.error",function(c,d){this.popups.hide("file.insert");b.handleUploadError(c,d);this.events.focus();return!1});this.uploadUrl||(a.events.on("image.beforeUpload",function(){return!1}),a.events.on("file.beforeUpload",function(){return!1}),a.events.on("video.beforeUpload",function(){return!1}));a.events.on("image.error",function(c,d){if(d)return this.popups.hide("image.insert"),
b.handleUploadError(c,d),!1});a.events.on("video.error",function(c,d){if(d)return this.popups.hide("video.insert"),b.handleUploadError(c,d),!1});a.events.on("image.uploaded",function(c){return b.handleUploadSuccess(c,function(){a.image.remove();a.popups.hide("image.insert");a.events.focus();return!1},function(){return!0})});a.events.on("video.uploaded",function(c){return b.handleUploadSuccess(c,function(){a.video.remove();a.popups.hide("video.insert");a.events.focus();return!1},function(){return!0})});
var e=function(c,d){if(d){try{var g=f.parseJSON(d)}catch(p){return}c.hasClass("fr-video")&&(c=c.find("video"),c.attr("data-xf-init","video-init").attr("style","").empty());if(g.attachment){g=g.attachment.attachment_id;d=c[0].attributes;for(var l=/^data-(?!xf-init)/,t=d.length-1;0<=t;t--)l.test(d[t].nodeName)&&c.removeAttr(d[t].nodeName);c.attr("data-attachment","full:"+g)}}};a.events.on("image.inserted video.inserted",e);a.events.on("image.replaced video.replaced",e);a.events.on("image.loaded",function(c){if(a.popups.isVisible("image.edit")){var d=
a.image.get();d&&d[0]==c[0]&&(a.image.exitEdit(!0),d=a.selection.ranges(0),d.setStartAfter(c[0]),d.collapse(!0),c=a.selection.get(),c.removeAllRanges(),c.addRange(d),a.events.focus(),b.scrollToCursor())}});a.events.on("video.loaded",function(c){if(a.popups.isVisible("video.edit")){var d=a.video.get();d&&d[0]==c[0]&&(a.events.trigger("video.hideResizer"),a.popups.hide("video.edit"),d=a.selection.ranges(0),d.setStartAfter(c[0]),d.collapse(!0),c=a.selection.get(),c.removeAllRanges(),c.addRange(d),a.events.focus(),
b.scrollToCursor())}});a.events.on("popups.show.image.edit",function(){var c=a.image.get();c.length&&c.hasClass("smilie")&&(a.image.exitEdit(!0),a.selection.save(),setTimeout(function(){a.selection.restore()},0))})},handleUploadSuccess:function(b,a,e){try{var c=f.parseJSON(b)}catch(d){c={status:"error",errors:[XF.phrase("oops_we_ran_into_some_problems")]}}return c.status&&"error"==c.status?(XF.alert(c.errors[0]),a?a(c):!1):(b=this.getAttachmentManager())&&c.attachment?(b.insertUploadedRow(c.attachment),
e?e(c,b):!1):!1},handleUploadError:function(b,a){try{var e=f.parseJSON(a)}catch(c){e=null}e&&e.errors||(e={status:"error",errors:[XF.phrase("oops_we_ran_into_some_problems")]});XF.alert(e.errors[0])},getAttachmentManager:function(){var b=this.$target.closest("[data-xf-init~=attachment-manager]");return b&&b.length?XF.Element.getHandler(b,"attachment-manager"):null},isBbCodeView:function(){return this.ed.bbCode&&this.ed.bbCode.isBbCodeView?this.ed.bbCode.isBbCodeView():!1},insertContent:function(b,
a){var e=this.ed;this.isBbCodeView()?"undefined"!==typeof a&&e.bbCode.insertBbCode(a):(this.focus(),e.undo.saveStep(),e.html.insert(b),e.undo.saveStep(),XF.Element.initialize(e.$el),XF.EditorHelpers.normalizeAfterInsert(e));this.scrollToCursor();this.scrollToCursorAfterPendingResize()},replaceContent:function(b,a){var e=this.ed;this.isBbCodeView()?"undefined"!==typeof a&&e.bbCode.replaceBbCode(a):e.html.set(b)},scrollToCursor:function(){var b=this.ed;if(this.isBbCodeView())b.bbCode.getTextArea().autofocus(),
b.$box[0].scrollIntoView(!0);else{this.focus();var a=b.$box,e=b.$wp,c=b.selection.endElement(),d=c.getBoundingClientRect().bottom,g=!0,l=XF.windowHeight();XF.browser.ios&&(l-=250);if(0>d||d>=l)g=!1;if(e&&g){var t=e[0].getBoundingClientRect();if(d>t.bottom||d<t.top)g=!1}if(!g){d=a[0].getBoundingClientRect();if(0>d.top||d.bottom>=l)XF.browser.ios||a.addClass("is-scrolling-to"),a[0].scrollIntoView(!0),a.removeClass("is-scrolling-to");e?(a=b.position.getBoundingRect().top,a>e.offset().top-b.helpers.scrollTop()+
e.height()-50&&e.scrollTop(a+e.scrollTop()-(e.height()+e.offset().top)+b.helpers.scrollTop()+l/2)):c.scrollIntoView()}}},scrollToCursorAfterPendingResize:function(b){var a=this,e=this.ed,c,d=function(){f(z).off("resize",d);f(z).on("scroll",g);c&&clearTimeout(c);c=setTimeout(l,500)},g=function(){c&&clearTimeout(c);c=setTimeout(l,100)},l=function(){f(z).off("scroll",g);e.core.hasFocus()&&a.scrollToCursor()};f(z).on("resize",d);setTimeout(function(){f(z).off("resize",d)},2E3);b&&(c=setTimeout(l,1E3))},
base64ToBytes:function(b,a){a=a||512;b=atob(b);for(var e=[],c=0;c<b.length;c+=a){for(var d=b.slice(c,c+a),g=Array(d.length),l=0;l<d.length;l++)g[l]=d.charCodeAt(l);d=new Uint8Array(g);e.push(d)}return e},editorSupportsUploads:function(){return-1!==this.ed.opts.imageInsertButtons.indexOf("imageUpload")},imageMatchesBase64Encoding:function(b){return b.attr("src").match(/^data:(image\/([a-z0-9]+));base64,(.*)$/)},replaceBase64ImageWithUpload:function(b){if(!b.hasClass("smilie")){var a;if(a=this.imageMatchesBase64Encoding(b)){var e=
a[1];var c=a[2];a=a[3];-1===this.ed.opts.imageAllowedTypes.indexOf(c)?b[0].remove():this.editorSupportsUploads()?(b=new Blob(this.base64ToBytes(a),{type:e}),1024<b.size&&this.ed.image.upload([b])):b[0].remove()}}},isInitialized:function(){return this.ed?!0:!1}});XF.EditorButtons=XF.create({xfEd:null,buttonClasses:null,toolbars:{},dropdowns:{},removeButtons:null,recalculateNeeded:!0,__construct:function(b,a,e){this.xfEd=b;this.removeButtons=[];a&&(this.toolbars=a);e&&(this.dropdowns=e)},addToolbar:function(b,
a){this.toolbars[b]=a;this.recalculateNeeded=!0},adjustToolbar:function(b,a){var e=this.toolbars[b];return e?(this.toolbars[b]=a(e,b,this),this.recalculateNeeded=!0):!1},adjustToolbars:function(b){for(var a in this.toolbars)this.toolbars.hasOwnProperty(a)&&this.adjustToolbar(a,b)},getToolbar:function(b){return this.getToolbars()[b]},getToolbars:function(){this.recalculateIfNeeded();if(XF.EditorHelpers.isPreviewAvailable(this.xfEd.$target))for(var b in this.toolbars)this.toolbars.hasOwnProperty(b)&&
(this.toolbars[b].preview={buttons:["xfPreview"],align:"right"});return this.toolbars},addDropdown:function(b,a){this.dropdowns[b]=a;this.recalculateNeeded=!0},adjustDropdown:function(b,a){var e=this.dropdowns[b];return e?(this.dropdowns[b]=a(e,b,this),this.recalculateNeeded=!0):!1},adjustDropdowns:function(b){for(var a in this.dropdowns)this.dropdowns.hasOwnProperty(a)&&this.adjustDropdown(a,b)},getDropdown:function(b){return this.getDropdowns()[b]},getDropdowns:function(){this.recalculateIfNeeded();
return this.dropdowns},addRemovedButton:function(b){this.removeButtons.push(b);this.recalculateNeeded=!0},addRemovedButtons:function(b){for(var a=0;a<b.length;a++)this.removeButtons.push(b[a]);this.recalculateNeeded=!0},recalculateIfNeeded:function(){this.recalculateNeeded&&this.recalculate()},recalculate:function(){function b(p,h){if(!p.filter)return[];"string"==typeof h&&e[h]&&(h=e[h]);"string"==typeof h&&(h=h.split("|"));return p.filter(function(m){return!(0<=h.indexOf(m))})}var a=this.removeButtons,
e=this.getButtonClasses(),c,d,g,l;for(l=0;l<a.length;l++){var t=a[l];for(c in this.toolbars)if(this.toolbars.hasOwnProperty(c))for(g in this.toolbars[c])this.toolbars[c].hasOwnProperty(g)&&(this.toolbars[c][g].buttons=b(this.toolbars[c][g].buttons,t));for(d in this.dropdowns)this.dropdowns.hasOwnProperty(d)&&(this.dropdowns[d]=b(this.dropdowns[d],t))}for(d in this.dropdowns)if(this.dropdowns.hasOwnProperty(d)&&!this.dropdowns[d].length)for(c in this.toolbars)if(this.toolbars.hasOwnProperty(c))for(g in this.toolbars[c])this.toolbars[c].hasOwnProperty(g)&&
(this.toolbars[c][g].buttons=b(this.toolbars[c][g].buttons,d));this.recalculateNeeded=!1},getButtonClasses:function(){this.buttonClasses||(this.buttonClasses={_basic:["bold","italic","underline","strikeThrough"],_extended:["textColor","fontFamily","fontSize","xfInlineCode","paragraphFormat"],_link:["insertLink"],_align:["align","alignLeft","alignCenter","alignRight","alignJustify"],_list:["formatOL","formatUL","outdent","indent"],_indent:["outdent","indent"],_smilies:["xfSmilie"],_image:["insertImage",
"xfInsertGif"],_media:["insertVideo","xfMedia"],_block:"xfQuote xfCode xfSpoiler xfInlineSpoiler insertTable insertHR".split(" ")});return this.buttonClasses}});XF.EditorHelpers={toolbarSizes:{SM:420,MD:550,LG:800},setupBlurSelectionWatcher:function(b){var a=b.$el,e=!1,c;f(D).on("mousedown keydown",function(d){e&&(b.$el[0]==d.target||f.contains(b.$el[0],d.target)||b.selection.inEditor()&&(c=b.selection.ranges(0)))});b.events.on("blur",function(){b.$box.removeClass("is-focused");c?a.data("xf-ed-blur-sel",
c):a.removeData("xf-ed-blur-sel");e=!1;c=null},!0);b.events.on("focus",function(){b.$box.addClass("is-focused");e=!0;c=null;setTimeout(function(){a.removeData("xf-ed-blur-sel")},0)});b.events.on("commands.before",function(d){(d=FroalaEditor.COMMANDS[d])&&("undefined"==typeof d.focus||d.focus)&&XF.EditorHelpers.restoreMaintainedSelection(b)})},restoreMaintainedSelection:function(b){var a=b.$el.data("xf-ed-blur-sel");b.selection.inEditor()||(a?(b.markers.remove(),b.markers.place(a,!0,0),b.markers.place(a,
!1,0)):b.selection.setAtEnd(b.el),b.selection.restore())},focus:function(b){XF.EditorHelpers.restoreMaintainedSelection(b);b.$tb.addClass("is-focused");b.events.focus()},blur:function(b){b.$el[0].blur();b.$tb.removeClass("is-focused");b.selection.clear()},sync:function(b){b.$oel.val(b.html.get())},wrapSelectionText:function(b,a,e,c){c&&b.selection.save();b.undo.saveStep();c=b.$el.find(".fr-marker");c.first().before(XF.htmlspecialchars(a));c.last().after(XF.htmlspecialchars(e));b.selection.restore();
b.placeholder.hide();b.undo.saveStep();XF.EditorHelpers.normalizeAfterInsert(b)},insertCode:function(b,a,e){switch(a.toLowerCase()){case "":var c="CODE";a="";break;default:c="CODE",a=a.toLowerCase()}e=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/\t/g,"    ").replace(/\n /g,"\n&nbsp;").replace(/  /g,"&nbsp; ").replace(/  /g," &nbsp;").replace(/\n/g,"</p><p>");e="["+c+(a?"="+a:"")+"]"+e+"[/"+c+"]";e.match(/<\/p>/i)&&(e=("<p>"+e+"</p>").replace(/<p><\/p>/g,
"<p><br></p>"));b.undo.saveStep();b.html.insert(e);b.undo.saveStep();XF.EditorHelpers.normalizeAfterInsert(b)},insertSpoiler:function(b,a){XF.EditorHelpers.wrapSelectionText(b,a?'[SPOILER="'+a+'"]':"[SPOILER]","[/SPOILER]",!0)},normalizeBrForEditor:function(b){var a="string"===typeof b;b=a?f("<div />").html(b):b;var e=function(c,d){var g=c.get(0);return c.is(d)&&""===g.className&&!g.hasAttribute("id")&&!g.hasAttribute("style")};b.children("p").each(function(){if(1===this.childNodes.length){var c=
f(this.childNodes[0]);e(c,"span")&&f(this).html(c.html())}});b.children("p").each(function(){if(!(1>=this.childNodes.length)){var c=f(this.childNodes[0]);e(c,"br")&&f(this).before(f("<p>").append(c))}});b.children("p").each(function(){if(!(1>=this.childNodes.length)){var c=f(this.childNodes[this.childNodes.length-1]);e(c,"br")&&c.remove()}});return a?b.html():b},normalizeAfterInsert:function(b){var a=b.html.getSelected();/<br>\s*<\/p>/.test(a)&&(XF.EditorHelpers.normalizeBrForEditor(b.$el),b.undo_index--,
b.undo_stack.pop(),b.undo.saveStep())},isPreviewAvailable:function(b){return!b.data("preview-url")&&!b.closest("form").data("preview-url")||!1===b.data("preview")?!1:!0},dialogs:{},loadDialog:function(b,a){var e=XF.EditorHelpers.dialogs;e[a]?e[a].show(b):console.error("Unknown dialog '"+a+"'")}};XF.EditorDialog=XF.create({ed:null,overlay:null,dialog:null,cache:!0,__construct:function(b){this.dialog=b},show:function(b){this.ed=b;b.selection.save();XF.loadOverlay(XF.canonicalizeUrl("index.php?editor/dialog&dialog="+
this.dialog),{beforeShow:XF.proxy(this,"beforeShow"),afterShow:XF.proxy(this,"afterShow"),init:XF.proxy(this,"init"),cache:this.cache})},init:function(b){var a=this;b.on("overlay:hidden",function(){a.ed&&a.ed.markers.remove()});this._init(b)},_init:function(b){},beforeShow:function(b){this.overlay=b;this._beforeShow(b)},_beforeShow:function(b){},afterShow:function(b){this._afterShow(b);b.$overlay.find("textarea, input").first().focus()},_afterShow:function(b){}});XF.EditorDialogMedia=XF.extend(XF.EditorDialog,
{_beforeShow:function(b){f("#editor_media_url").val("")},_init:function(b){f("#editor_media_form").submit(XF.proxy(this,"submit"))},submit:function(b){b.preventDefault();var a=this.ed,e=this.overlay;XF.ajax("POST",XF.canonicalizeUrl("index.php?editor/media"),{url:f("#editor_media_url").val()},function(c){c.matchBbCode?(a.selection.restore(),a.undo.saveStep(),a.html.insert(XF.htmlspecialchars(c.matchBbCode)),a.undo.saveStep(),XF.EditorHelpers.normalizeAfterInsert(a),e.hide()):c.noMatch?XF.alert(c.noMatch):
(a.selection.restore(),e.hide())})}});XF.EditorDialogSpoiler=XF.extend(XF.EditorDialog,{_beforeShow:function(b){f("#editor_spoiler_title").val("")},_init:function(b){f("#editor_spoiler_form").submit(XF.proxy(this,"submit"))},submit:function(b){b.preventDefault();b=this.ed;var a=this.overlay;b.selection.restore();XF.EditorHelpers.insertSpoiler(b,f("#editor_spoiler_title").val());a.hide()}});XF.EditorDialogCode=XF.extend(XF.EditorDialog,{_beforeShow:function(b){this.ed.$el.blur()},_afterShow:function(b){b=
b.$container;var a=b.find(".CodeMirror"),e=this.ed;b.find('[data-xf-init~="code-editor-switcher-container"]').trigger("code-editor:reinit");if(a.length)var c=a[0].CodeMirror;e.selection.isCollapsed()?a="":(a=e.html.getSelected().replace(/&nbsp;/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=f("<div>").html(f.parseHTML(a)).text().trim());e.selection.save();c?(c.getDoc().setValue(a),
c.focus()):b.find(".js-codeEditor").val(a).focus()},_init:function(b){f("#editor_code_form").submit(XF.proxy(this,"submit"))},submit:function(b){b.preventDefault();b=this.ed;var a=this.overlay,e=a.$container.find(".CodeMirror");if(e.length){e=e[0].CodeMirror;var c=e.getDoc();e.save();c.setValue("");e.setOption("mode","")}e=f("#editor_code_type");c=f("#editor_code_code");b.selection.restore();XF.EditorHelpers.insertCode(b,e.val(),c.val());a.hide();c.val("");e.val("")}});XF.editorStart={started:!1,
custom:[],startAll:function(){XF.editorStart.started||(XF.editorStart.setupLanguage(),XF.editorStart.registerOverrides(),XF.editorStart.registerToolbarSizes(),XF.editorStart.registerCommands(),XF.editorStart.registerCustomCommands(),XF.editorStart.registerEditorDropdowns(),XF.editorStart.registerDialogs(),f(D).trigger("editor:first-start"),XF.editorStart.started=!0)},setupLanguage:function(){var b=f("html").attr("dir");try{var a=f.parseJSON(f(".js-editorLanguage").first().html())||{}}catch(e){console.error(e),
a={}}FroalaEditor.LANGUAGE.xf={translation:a,direction:b?b.toLowerCase():"ltr"}},registerOverrides:function(){var b=FroalaEditor.MODULES.helpers;FroalaEditor.MODULES.helpers=function(a){var e=b.apply(this,arguments),c=e.sanitizeURL;e.sanitizeURL=function(d){return c(d).replace(/["]/g,"%22").replace(/[']/g,"%27")};e.screenSize=function(){function d(h,m){a.$box.data("size",m);return FroalaEditor[FroalaEditor.hasOwnProperty(m)?m:"LG"]}try{var g=a.$box.width(),l=XF.EditorHelpers.toolbarSizes;if(0>=g)for(var t=
a.$box[0];t=t.parentNode;)if(g=t.clientWidth,0<g){var p=z.getComputedStyle(t);g-=parseInt(p.paddingLeft,10)+parseInt(p.paddingRight,10);if(0<g)break}return g<l.SM?d(g,"XS"):g<l.MD?d(g,"SM"):g<l.LG?d(g,"MD"):g<l.LG+50?d(g,"LG"):d(g,"XL")}catch(h){return d(g,"XS")}};return e}},registerToolbarSizes:function(){try{var b=f.parseJSON(f(".js-editorToolbarSizes").first().html())||{}}catch(a){console.error("Toolbar sizes data not valid: ",a);return}XF.EditorHelpers.toolbarSizes=b},commands:{xfQuote:["quote-right",
{title:"Quote",icon:"xfQuote",undo:!0,focus:!0,callback:function(){this.selection.save();this.html.wrap(!0,!0,!0,!0);this.selection.restore();var b=this.selection.blocks(),a=[],e=!0,c,d;1==b.length&&f(b[0]).is(".fr-temp-div")&&(b=[f(this.el).find("p").get(0)]);for(c=0;c<b.length;c++){var g=d=b[c],l=null;for("BLOCKQUOTE"==d.tagName&&(l=d);d.parentNode&&d.parentNode!==this.el;)d=d.parentNode,l||"BLOCKQUOTE"!=d.tagName||(l=d);d={original:g,quote:l,root:d};d.quote&&(e=!1);a.push(d)}this.selection.save();
if(e)for(b=f(D.createElement("blockquote")),b.insertBefore(a[0].root),c=0;c<a.length;c++)b.append(a[c].root);else for(c=0;c<a.length;c++)(b=a[c].quote)&&f(b).replaceWith(b.innerHTML);this.html.unwrap();this.selection.restore()}}],xfCode:["code",{title:"Code",icon:"xfCode",undo:!0,focus:!0,callback:function(){XF.EditorHelpers.loadDialog(this,"code")}}],xfInlineCode:["terminal",{title:"Inline Code",icon:"xfInlineCode",undo:!0,focus:!0,callback:function(){XF.EditorHelpers.wrapSelectionText(this,"[ICODE]",
"[/ICODE]",!0)}}],xfMedia:["photo-video",{title:"Media",icon:"xfMedia",undo:!0,focus:!0,callback:function(){XF.EditorHelpers.loadDialog(this,"media")}}],xfSpoiler:["eye-slash",{title:"Spoiler",icon:"xfSpoiler",undo:!0,focus:!0,callback:function(){XF.EditorHelpers.loadDialog(this,"spoiler")}}],xfInlineSpoiler:["mask",{title:"Inline Spoiler",icon:"xfInlineSpoiler",undo:!0,focus:!0,callback:function(){XF.EditorHelpers.wrapSelectionText(this,"[ISPOILER]","[/ISPOILER]",!0)}}],xfSmilie:["smile",{title:"Smilies",
icon:"xfSmilie",undo:!1,focus:!1,refreshOnCallback:!1,callback:function(){var b=this;setTimeout(function(){b.xfSmilie.showMenu()},0)}}],xfInsertGif:["xfInsertGif",{title:"Insert GIF",icon:"xfInsertGif",undo:!1,focus:!1,refreshOnCallback:!1,callback:function(){var b=this;setTimeout(function(){b.xfInsertGif.showMenu()},0)}}],xfDraft:["save",{type:"dropdown",title:"Drafts",focus:!0,undo:!1,options:{xfDraftSave:"Save Draft",xfDraftDelete:"Delete Draft"},html:function(){var b={xfDraftSave:"Save Draft",
xfDraftDelete:"Delete Draft"},a='<ul class="fr-dropdown-list">',e;for(e in b)a+='<li><a class="fr-command" data-cmd="xfDraft" data-param1="'+e+'">'+this.language.translate(b[e])+"</a></li>";return a+"</ul>"},callback:function(b,a){b=f(this.$el.closest("form"));b.length?(b=XF.Element.getHandler(b,"draft"))?"xfDraftSave"==a?b.triggerSave():"xfDraftDelete"==a&&b.triggerDelete():console.error("No draft handler on parent form"):console.error("No parent form to find draft handler")}}],xfBbCode:["brackets",
{title:"Toggle BB Code",icon:"xfBbCode",undo:!1,focus:!1,forcedRefresh:!0,callback:function(){this.bbCode.toggle()}}],xfPreview:["file-search",{title:"Preview",icon:"xfPreview",undo:!1,focus:!1,forcedRefresh:!0,callback:function(){this.contentPreview.toggle()}}]},registerCommands:function(){var b;FroalaEditor.PLUGINS.xfInsertGif=function(a){function e(){if(z.IntersectionObserver){var k=new IntersectionObserver(d,{root:v[0],rootMargin:"0px 0px 100px 0px"});v.find(".js-gif img:not(.js-observed)").each(function(){f(this).addClass("js-observed");
k.observe(this)});var r=new IntersectionObserver(g,{root:v[0],rootMargin:"0px 0px 50px 0px"});v.find(".js-gifLoadMore").each(function(){r.observe(this)})}else v.onPassive("scroll",l);v.find(".js-gif").on("click",c)}function c(k){k=f(k.currentTarget).find("img");var r=k.parent();if(!r.hasClass("is-loading")){r.addClass("is-loading");var n=k.data("insert"),w=f("<img />").attr("src",n).attr("class","fr-fic fr-dii fr-draggable").attr("alt",k.attr("alt"));k=function(){a.selection.restore();XF.EditorHelpers.focus(a);
a.undo.saveStep();a.html.insert(w.prop("outerHTML"));a.undo.saveStep();a.selection.save();XF.EditorHelpers.blur(a);XF.EditorHelpers.normalizeAfterInsert(a);u&&u.find(".js-gifCloser").click();r.removeClass("is-loading")};if(w.prop("complete"))k();else w.on("load",k)}}function d(k,r){for(r=0;r<k.length;r++){var n=k[r];var w=f(n.target);if(n.isIntersecting)p(w);else if(n=w,n.data("loaded")){w=n.attr("data-src");var x=n.attr("src");n.attr("src",w);n.attr("data-src",x);n.data("loaded",!1)}}}function g(k,
r){for(var n,w,x=0;x<k.length;x++)n=k[x],n.isIntersecting&&(w=f(n.target),t(w),r.unobserve(n.target))}function l(k){var r=k;k instanceof Event&&(r=f(k.currentTarget));if(r.is(":visible")){var n=r[0].getBoundingClientRect(),w=n.bottom+100;r.children().each(function(){var x=f(this),A=this.getBoundingClientRect();if(!(A.bottom<n.top)){if(A.top>w)return!1;x.find(".js-gif img").each(function(){var B=f(this);this.getBoundingClientRect().top<=w&&p(B)})}})}}function t(k){k.data("loading")||(k.data("loading",
!0),XF.ajax("GET",k.data("href"),function(r){r.html&&XF.setupHtmlInsert(r.html,function(n){(n.is(".js-gifContainer")?f(n.html()):f(n.find(".js-gifContainer").html())).insertAfter(k);k.remove();e()})}))}function p(k){if(!k.data("loaded")){var r=k.attr("data-src"),n=k.attr("src");k.attr("src",r);k.attr("data-src",n);k.data("loaded",!0)}}function h(){var k=f(this),r=u.find(".js-gifFullRow"),n=u.find(".js-gifSearchRow");clearTimeout(C);C=setTimeout(function(){var w=k.val();if(!w||2>w.length)n.hide(),
r.show(),l(r);else{var x=XF.canonicalizeUrl("index.php?editor/insert-gif/search");XF.ajax("GET",x,{q:w},function(A){A.html&&XF.setupHtmlInsert(A.html,function(B){r.hide();n.html(B);n.show();v.scrollTop(0);e()})})}},300)}var m=!1,q=!1,u,v,y=0,C;return{showMenu:function(){a.selection.save();XF.EditorHelpers.blur(a);var k=f(a.$tb.find('.fr-command[data-cmd="xfInsertGif"]')).first();if(!m){m=!0;var r=f.trim(f(".js-xfEditorMenu").first().html());u=f(f.parseHTML(Mustache.render(r,{href:XF.canonicalizeUrl("index.php?editor/insert-gif")})));
u.addClass("menu--gif");u.insertAfter(k);k.data("xf-click","menu");var n=XF.Event.getElementHandler(k,"menu","click");u.on("menu:complete",function(){v=u.find(".menu-scroller");q||(q=!0,e(),u.find(".js-gifSearch").on("input",h),u.find(".js-gifCloser").on("click",function(){XF.EditorHelpers.focus(a)}),a.events.on("commands.mousedown",function(w){"xfInsertGif"!=w.data("cmd")&&n.close()}),u.on("menu:closed",function(){y=v.scrollTop()}));v.scrollTop(y);z.IntersectionObserver||l(v)});u.on("menu:closed",
function(){setTimeout(function(){a.markers.remove()},50)})}(k=k.data("xfClickHandlers"))&&k.menu&&k.menu.toggle()}}};FroalaEditor.PLUGINS.xfSmilie=function(a){function e(k){var r=f(k.currentTarget);k=r.html();if(!f(k).hasClass("smilie--lazyLoad")){a.selection.restore();XF.EditorHelpers.focus(a);a.undo.saveStep();a.html.insert(k);a.undo.saveStep();a.selection.save();XF.EditorHelpers.blur(a);XF.EditorHelpers.normalizeAfterInsert(a);if(m){var n=m.find(".js-emojiInsertedRow");n.find(".js-emojiInsert").html(k);
n.addClassTransitioned("is-active");clearTimeout(v);v=setTimeout(function(){n.removeClassTransitioned("is-active")},1500)}clearTimeout(y);y=setTimeout(function(){XF.logRecentEmojiUsage(r.data("shortname"))},1500)}}function c(k,r){for(var n,w,x=0;x<k.length;x++)n=k[x],n.isIntersecting&&(w=f(n.target),g(w),r.unobserve(n.target))}function d(k,r){var n=k;k instanceof Event&&(n=f(k.currentTarget));if(r||n.is(":visible")){var w=n[0].getBoundingClientRect(),x=w.bottom+100;n.children().each(function(){var A=
f(this),B=this.getBoundingClientRect();if(!(B.bottom<w.top)){if(B.top>x)return!1;A.find("span.smilie--lazyLoad").each(function(){var E=f(this);this.getBoundingClientRect().top<=x&&g(E)})}})}}function g(k){var r=f("<img />").attr({"class":k.attr("class").replace(/(\s|^)smilie--lazyLoad(\s|$)/," "),alt:k.attr("data-alt"),title:k.attr("title"),src:k.attr("data-src"),"data-shortname":k.attr("data-shortname")}),n=function(){var w=function(){k.replaceWith(r)};z.requestAnimationFrame?z.requestAnimationFrame(w):
w()};if(r.prop("complete"))n();else r.on("load",n)}function l(){var k=f(this),r=m.find(".js-emojiFullList"),n=m.find(".js-emojiSearchResults");clearTimeout(C);C=setTimeout(function(){var w=k.val();if(!w||2>w.length)n.hide(),r.show(),d(r);else{var x=XF.canonicalizeUrl("index.php?editor/smilies-emoji/search");XF.ajax("GET",x,{q:w},function(A){A.html&&XF.setupHtmlInsert(A.html,function(B){B.find(".js-emoji").on("click",e);r.hide();n.replaceWith(B)})})}},300)}function t(){var k=XF.getRecentEmojiUsage(),
r=q.find(".js-recentHeader"),n=q.find(".js-recentBlock"),w=n.find(".js-recentList"),x=q.find(".js-emojiList");if(k){var A=w.clone(),B=[];A.empty();for(var E in k){var G=k[E],F;x.each(function(){F=f(this).find('.js-emoji[data-shortname="'+G+'"]').closest("li").clone();if(F.length)return F.find(".js-emoji").on("click",e),B.push(F),!1})}for(E in B)B[E].appendTo(A);w.replaceWith(A);n.hasClass("is-hidden")&&(n.hide(),n.removeClass("is-hidden"),r.removeClass("is-hidden"),n.xfFadeDown(XF.config.speed.fast));
d(A,!0)}}var p=!1,h=!1,m,q,u=0,v,y,C;return{showMenu:function(){a.selection.save();XF.EditorHelpers.blur(a);var k=f(a.$tb.find('.fr-command[data-cmd="xfSmilie"]')).first();if(!p){p=!0;var r=f.trim(f(".js-xfEditorMenu").first().html());m=f(f.parseHTML(Mustache.render(r,{href:XF.canonicalizeUrl("index.php?editor/smilies-emoji")})));m.addClass("menu--emoji");m.insertAfter(k);k.data("xf-click","menu");var n=XF.Event.getElementHandler(k,"menu","click");m.on("menu:complete",function(){q=m.find(".menu-scroller");
if(!h){h=!0;if(z.IntersectionObserver){var w=new IntersectionObserver(c,{root:q[0],rootMargin:"0px 0px 100px 0px"});q.find("span.smilie--lazyLoad").each(function(){w.observe(this)})}else q.onPassive("scroll",d);q.find(".js-emoji").on("click",e);m.find(".js-emojiSearch").on("input",l);m.find(".js-emojiCloser").on("click",function(){XF.EditorHelpers.focus(a)});f(D).on("recent-emoji:logged",t);a.events.on("commands.mousedown",function(x){"xfSmilie"!=x.data("cmd")&&n.close()});m.on("menu:closed",function(){u=
q.scrollTop()})}q.scrollTop(u);z.IntersectionObserver||d(q)});m.on("menu:closed",function(){setTimeout(function(){a.markers.remove()},50)})}(k=k.data("xfClickHandlers"))&&k.menu&&k.menu.toggle()}}};f.extend(FroalaEditor.DEFAULTS,{xfBbCodeAttachmentContextInput:"attachment_hash_combined"});FroalaEditor.PLUGINS.bbCode=function(a){function e(){return a.$tb.find(".fr-command[data-cmd=xfBbCode]")}function c(){var p=a.$oel,h=p.data("xfBbCodeBox");if(!h){var m=parseInt(a.$wp.css("border-bottom-width"),10)+
parseInt(a.$wp.css("border-top-width"),10);h=f('<textarea class="input" style="display: none" />');h.attr("aria-label",XF.htmlspecialchars(XF.phrase("rich_text_box")));h.css({minHeight:a.opts.heightMin?a.opts.heightMin+m+"px":null,maxHeight:a.opts.heightMax?a.opts.heightMax+"px":null,height:a.opts.height?a.opts.height+m+"px":null,padding:a.$el.css("padding")});h.attr("name",p.data("original-name"));p.data("xfBbCodeBox",h);a.$wp.after(h[0]);h.on("focus blur",function(q){switch(q.type){case "focus":a.$box.addClass("is-focused");
break;case "blur":a.$box.removeClass("is-focused")}});XF.Element.applyHandler(h,"textarea-handler");XF.Element.applyHandler(h,"user-mentioner");XF.Element.applyHandler(h,"emoji-completer");XF.isElementWithinDraftForm(h)&&XF.Element.applyHandler(h,"draft-trigger")}return h}function d(p){return a.$tb.find("> .fr-btn-grp .fr-command, > .fr-more-toolbar .fr-command").not(p).not('[data-cmd^="more"]').not("[data-cmd=xfPreview]")}function g(p,h){var m=c(),q=function(u,v){t=!0;a.undo.saveStep();a.$el.blur();
var y=e();d(y).addClass("fr-disabled");y.addClass("fr-active");a.$wp.css("display","none");a.$oel.attr("disabled","disabled");m.val(u).css("display","").prop("disabled",!1).trigger("autosize");v||m.autofocus();XF.setIsEditorEnabled(!1)};"string"==typeof p?q(p,h):XF.ajax("POST",XF.canonicalizeUrl("index.php?editor/to-bb-code"),{html:a.html.get()},function(u){q(u.bbCode,h)})}function l(p){var h=c(),m=function(u){t=!1;var v=e();d(v).removeClass("fr-disabled");v.removeClass("fr-active");a.$oel.removeAttr("disabled");
a.html.set(u);h.css("display","none").prop("disabled",!0);a.$wp.css("display","");a.events.focus();a.undo.saveStep();a.size.refresh();XF.setIsEditorEnabled(!0);XF.layoutChange()};if("string"==typeof p)m(p);else{p={bb_code:h.val()};var q=a.$el.closest("form");q.length&&q[0][a.opts.xfBbCodeAttachmentContextInput]&&(p.attachment_hash_combined=f(q[0][a.opts.xfBbCodeAttachmentContextInput]).val());XF.ajax("POST",XF.canonicalizeUrl("index.php?editor/to-html"),p,function(u){m(u.editorHtml)})}}var t=!1;return{_init:function(){a.events.on("buttons.refresh",
function(){return!t})},getBbCodeBox:c,toBbCode:g,isBbCodeView:function(){return t},getTextArea:function(){return t?c():null},insertBbCode:function(p){if(t){var h=c();XF.insertIntoTextBox(h,p)}},replaceBbCode:function(p){if(t){var h=c();XF.replaceIntoTextBox(h,p)}},toHtml:l,toggle:function(){t?l():g()},getToggleableButtons:function(){return d(e())}}};FroalaEditor.PLUGINS.contentPreview=function(a){function e(){return a.$tb.find(".fr-command[data-cmd=xfPreview]")}function c(){var m=a.$oel,q=m.data("xfPreviewBox");
if(!q){var u=f(a.$el[0]).css(["padding-top","padding-right","padding-bottom","padding-left"]);u.minHeight=a.opts.heightMin?a.opts.heightMin+"px":null;q=f('<div class="xfPreview" style="display:none" />');q.css(u);m.data("xfPreviewBox",q);a.$wp.after(q[0])}return q}function d(m){return a.$tb.find("> .fr-btn-grp .fr-command").not(m)}function g(m){var q=c(),u=function(y){h=!0;a.undo.saveStep();a.$el.blur();a.$tb.find('.fr-command.fr-open[data-cmd^="more"]').each(function(){a.commands.exec(f(this).attr("data-cmd"))});
var C=e();d(C).addClass("fr-disabled fr-invisible");C.addClass("fr-active");a.$tb.find(".fr-btn-grp").addClass("rte-tab--inactive").filter(".rte-tab--preview").removeClass("rte-tab--inactive");a.$box.addClass("is-preview");a.bbCode.isBbCodeView()?a.bbCode.getBbCodeBox().css("display","none"):a.$wp.css("display","none");q.html(y.find(".bbWrapper")).css("display","")};if("string"==typeof m)u(f(f.parseHTML(m)));else{a.events.trigger("form.submit");var v=a.$oel.closest("form");m=a.$oel.data("preview-url")?
a.$oel.data("preview-url"):v.data("preview-url");v=XF.getDefaultFormData(v);XF.ajax("POST",XF.canonicalizeUrl(m),v,function(y){XF.setupHtmlInsert(y.html,function(C){XF.activate(C);u(C)})})}}function l(m){var q=c(),u=e(),v=a.bbCode.isBbCodeView();h=!1;d(u).removeClass("fr-disabled fr-invisible");u.removeClass("fr-active");v&&a.bbCode.getToggleableButtons().addClass("fr-disabled");a.$tb.find(".fr-btn-grp").removeClass("rte-tab--inactive").filter(".rte-tab--preview").addClass("rte-tab--inactive");a.$oel.removeAttr("disabled");
q.css("display","none");a.$box.removeClass("is-preview");v?a.bbCode.getBbCodeBox().css("display",""):a.$wp.css("display","");m||a.events.focus();XF.layoutChange()}function t(){var m=f(a.$oel);XF.EditorHelpers.isPreviewAvailable(m)&&(h?l():(XF.EditorHelpers.sync(a),(a.bbCode&&a.bbCode.isBbCodeView()?a.bbCode.getBbCodeBox().val():m.val())&&g()))}function p(){var m=a.$tb.find(".fr-btn-grp");XF.EditorHelpers.isPreviewAvailable(f(a.$oel))?(m.slice(m.length-1).addClass("rte-tab--inactive rte-tab--preview"),
m.slice(m.length-2,m.length-1).addClass("rte-tab--beforePreview")):m.slice(m.length-1).addClass("rte-tab--beforePreview")}var h=!1;return{_init:function(){a.events.on("buttons.refresh",function(){return!h});p();a.events.on("codeView.toggle",function(){p()});a.$tb.on("click",function(m){h&&(f(m.target).closest(".rte-tab--preview").length||t())});f(a.$tb.closest("form")).on("preview:hide",function(){l(!0)})},toPreview:g,isPreview:function(){return h},toHtml:l,toggle:t}};for(b in this.commands)this.commands.hasOwnProperty(b)&&
(FroalaEditor.DefineIcon(b,{NAME:this.commands[b][0]}),FroalaEditor.RegisterCommand(b,this.commands[b][1]))},registerCustomCommands:function(){try{var b=f.parseJSON(f(".js-editorCustom").first().html())||{}}catch(e){console.error(e),b={}}for(var a in b)b.hasOwnProperty(a)&&function(e,c){var d="xfCustom_"+e,g=e.toUpperCase();e={};"fa"==c.type?e=(e=c.value.match(/^fa([slrb]) fa-(.+)$/))?{FA5NAME:e[2],template:"font_awesome_5"+("s"===e[1]?"":e[1])}:{NAME:c.value}:"svg"==c.type?e={template:"svg",PATH:c.value}:
"image"==c.type&&(e={template:"image",SRC:'"'+XF.canonicalizeUrl(c.value)+'"',ALT:'"'+c.title+'"'});var l={title:c.title,icon:d,undo:!0,focus:!0,callback:function(){XF.EditorHelpers.wrapSelectionText(this,"yes"==c.option?"["+g+"=]":"["+g+"]","[/"+g+"]",!0)}};FroalaEditor.DefineIcon(d,e);FroalaEditor.RegisterCommand(d,l);XF.editorStart.custom.push(d)}(a,b[a]);FroalaEditor.DefineIcon("xfInsertGif",{template:"svg",PATH:"M11.5 9H13v6h-1.5zM9 9H6c-.6 0-1 .5-1 1v4c0 .5.4 1 1 1h3c.6 0 1-.5 1-1v-2H8.5v1.5h-2v-3H10V10c0-.5-.4-1-1-1zm10 1.5V9h-4.5v6H16v-2h2v-1.5h-2v-1z"});
FroalaEditor.DefineIcon("textColor",{NAME:"palette"});FroalaEditor.DefineIcon("fontFamily",{NAME:"font"});FroalaEditor.DefineIcon("fontSize",{NAME:"text-size"})},registerEditorDropdowns:function(){try{var b=f.parseJSON(f(".js-editorDropdowns").first().html())||{}}catch(e){console.error("Editor dropdowns data not valid: ",e),b={}}for(var a in b)b.hasOwnProperty(a)&&function(e,c){c.icon=c.icon.substr(3);FroalaEditor.DefineIcon(e,{NAME:c.icon});FroalaEditor.RegisterCommand(e,{type:"dropdown",title:c.title,
icon:e,undo:!1,focus:!1,html:function(){var d='<ul class="fr-dropdown-list">',g=c.buttons,l,t;(l=XF.getEditorInContainer(f(this.$oel)))&&l.buttonManager&&(g=l.buttonManager.getDropdown(e));for(var p in g)l=g[p],(t=FroalaEditor.COMMANDS[l])&&(d+='<li><a class="fr-command" data-cmd="'+l+'">'+this.icon.create(t.icon||l)+"&nbsp;&nbsp;"+this.language.translate(t.title)+"</a></li>");return d+"</ul>"}})}(a,b[a])},registerDialogs:function(){XF.EditorHelpers.dialogs.media=new XF.EditorDialogMedia("media");
XF.EditorHelpers.dialogs.spoiler=new XF.EditorDialogSpoiler("spoiler");XF.EditorHelpers.dialogs.code=new XF.EditorDialogCode("code")}};f(D).one("editor:start",XF.editorStart.startAll);XF.EditorPlaceholderClick=XF.Event.newHandler({eventNameSpace:"XFEditorPlaceholderClick",options:{},edInitialized:!1,init:function(){},click:function(b){b=this.$target;var a=this;b.find(".editorPlaceholder-editor").removeClass("is-hidden");b.find(".editorPlaceholder-placeholder").addClass("is-hidden");b=XF.getEditorInContainer(b);
b instanceof XF.Editor?this.edInitialized||b.startInit({beforeInit:function(){a.edInitialized=!0},afterInit:function(e,c){c.events.focus(!0);XF.isIOS()&&(e.scrollToCursor(),e.scrollToCursorAfterPendingResize());c.opts.tooltips&&setTimeout(function(){c.tooltip.hide()},30)}}):(displayEditor(),b instanceof f&&b.focus())}});XF.Event.register("click","editor-placeholder","XF.EditorPlaceholderClick");XF.Element.register("editor","XF.Editor")}(jQuery,window,document);