// WoltLabCaret.js
$.Redactor.prototype.WoltLabCaret=function(){"use strict";return{init:function(){var e=this.caret.after;this.caret.after=function(t){t=this.caret.prepare(t),this.utils.isBlockTag(t.tagName)&&this.WoltLabCaret._addParagraphAfterBlock(t),e.call(this,t)}.bind(this);var t=this.caret.end;this.caret.end=function(e){if(e=this.caret.prepare(e),e.nodeType===Node.ELEMENT_NODE&&e.lastChild&&"P"===e.lastChild.nodeName){var n=window.getSelection(),i=document.createRange();return i.selectNodeContents(e.lastChild),i.collapse(!1),n.removeAllRanges(),void n.addRange(i)}return t.call(this,e)}.bind(this),this.$editor[0].addEventListener(WCF_CLICK_EVENT,this.WoltLabCaret._handleEditorClick.bind(this)),this.WoltLabCaret._initInternalRange(),require(["Environment"],function(e){"chrome"===e.browser()&&"android"===e.platform()&&elAttr(this.$editor[0],"autocomplete","off")}.bind(this))},paragraphAfterBlock:function(e){var t=e.nextElementSibling;t&&"P"!==t.nodeName&&(t=elCreate("p"),t.textContent="",e.parentNode.insertBefore(t,e.nextSibling)),this.caret.after(e)},endOfEditor:function(){var e=this.core.editor()[0];document.activeElement!==e&&e.focus();var t=e.lastElementChild;"P"===t.nodeName?this.caret.end(t):this.caret.after(t)},_initInternalRange:function(){var e=this.core.editor()[0],t=null,n=window.getSelection(),i=function(){t=n.rangeCount?n.getRangeAt(0).cloneRange():null},r=function(){if(null!==t){if(document.activeElement===e){var i=n.getRangeAt(0);if(0!==i.startOffset)return;for(var r=i.startContainer;r;){if(r.parentNode===e){if(r.previousSibling)return;break}if(r.previousSibling)return;r=r.parentNode}if(!r)return}e.focus(),n.removeAllRanges(),n.addRange(t),t=null}};e.addEventListener("keyup",i),e.addEventListener("mouseup",function(){n.rangeCount&&i()});var o=this.selection.save;this.selection.save=function(){t=null,o.call(this)}.bind(this);var a=this.selection.restore;this.selection.restore=function(){t&&null===elBySel(".redactor-selection-marker",this.$editor[0])&&(r(),n.rangeCount&&this.utils.isRedactorParent(n.getRangeAt(0).commonAncestorContainer))||a.call(this)}.bind(this);var s=this.buffer.set;this.buffer.set=function(t){document.activeElement!==e&&r(),s.call(this,t),i()}.bind(this);var l=this.insert.html;this.insert.html=function(e,t){var n=elBySel(".redactor-selection-marker",this.$editor[0]);l.call(this,e,t),(n||null===elBySel(".redactor-selection-marker",this.$editor[0]))&&i()}.bind(this),require(["Environment"],function(t){"ios"===t.platform()&&(e.addEventListener("focus",function(){document.addEventListener("selectionchange",i)}),e.addEventListener("blur",function(){document.removeEventListener("selectionchange",i)}))}.bind(this))},_handleEditorClick:function(e){if(this.selection.get().isCollapsed){var t=this.selection.block();if(t===!1){if(this.selection.current()===this.$editor[0]){var n=this.$editor[0].childNodes[this.selection.get().anchorOffset];n.nodeType===Node.ELEMENT_NODE&&"TABLE"===n.nodeName&&(t=n)}if(t===!1)return}for(var i=e.target;i&&!this.utils.isBlockTag(i.nodeName);)i=i.parentNode;if(i&&i!==t&&("P"!==t.nodeName||(t=t.parentNode,t!==this.$editor[0]&&this.utils.isBlockTag(t.nodeName)))){if("TD"===t.nodeName)for(;"TABLE"!==t.nodeName;)t=t.parentNode;if(!t.nodeName.match(/^H\d$/)&&!$(t).closest("ol, ul",this.$editor[0]).length){for(var r,o,a=t;a;){if(o=a.getBoundingClientRect(),e.clientY<o.top)r=!0,t=a;else{if(!(e.clientY>o.bottom))break;r=!1,t=a}if(!a.parentNode||a.parentNode===this.$editor[0])break;a=a.parentNode}var s=t[(r?"previous":"next")+"ElementSibling"];if(s&&"P"===s.nodeName)return void this.caret.end(s);this.buffer.set();var l=elCreate("p");l.textContent="",t.parentNode.insertBefore(l,r?t:t.nextSibling),this.caret.end(l)}}}},_addParagraphAfterBlock:function(e){var t=e.nextElementSibling;(!t||"P"!==t.nodeName&&!this.utils.isBlockTag(t.nodeName))&&(t=elCreate("p"),t.textContent="",e.parentNode.insertBefore(t,e.nextSibling))}}};
// WoltLabClean.js
-$.Redactor.prototype.WoltLabClean=function(){"use strict";return{init:function(){this.opts.pasteInlineTags=this.opts.pasteInlineTags.filter(function(e){return"span"!==e});var e=this.clean.onSet;this.clean.onSet=function(t){t=t.replace(/\u200B/g,""),t=t.replace(/&/g,"@@@WCF_AMPERSAND@@@"),t=e.call(this,t),t=t.replace(/@@@WCF_AMPERSAND@@@/g,"&");var n=elCreate("div");return n.innerHTML=t,elBySelAll("iframe",n,elRemove),t=n.innerHTML}.bind(this);var t=this.clean.onSync;this.clean.onSync=function(e){var n=elCreate("div"),r={};return e=e.replace(/&/g,"@@@WCF_AMPERSAND@@@"),-1!==e.indexOf("<pre")&&(n.innerHTML=e,elBySelAll("pre",n,function(e){var t=WCF.getUUID();r[t]=e.textContent,e.textContent=t}),e=n.innerHTML),e=e.replace(/<p>\u200B<\/p>/g,"<p><br></p>"),e=t.call(this,e),e=e.replace(/@@@WCF_AMPERSAND@@@/g,"&"),n.innerHTML=e,elBySelAll("span",n,function(e){e.outerHTML=e.innerHTML}),elBySelAll("pre",n,function(e){r.hasOwnProperty(e.textContent)&&(e.textContent=r[e.textContent])}),e=n.innerHTML}.bind(this);var n=this.clean.savePreFormatting;this.clean.savePreFormatting=function(e){var t=this.clean.encodeEntities;return this.clean.encodeEntities=function(e){return WCF.String.escapeHTML(e)},e=n.call(this,e),this.clean.encodeEntities=t,e}.bind(this);var r=this.clean.stripTags;this.clean.stripTags=function(e,t){return Array.isArray(t)&&t.push("span"),r.call(this,e,t)}.bind(this);var a=this.clean.onPaste;this.clean.onPaste=function(e,t,n){if(t.pre)return a.call(this,e,t,n);var r=elCreate("div");r.innerHTML=e;for(var i,l,s,o=elBySelAll("[style]",r),c=0,h=o.length;h>c;c++){i=o[c],s=[];for(var u=0,p=i.style.length;p>u;u++)l=i.style[u],this.WoltLabClean._applyInlineStyle(i,l,i.style.getPropertyValue(l))&&s.push(l);s.forEach(function(e){i.style.removeProperty(e)})}return a.call(this,r.innerHTML,t,n)}.bind(this);var i=[],l=function(e,t){for(var n={},r=0,a=t.length;a>r;r++)n[t[r]]=elAttr(e,t[r]);i.push({element:e,attributes:n})},s=this.clean.convertTags;this.clean.convertTags=function(e,t){var n=elCreate("div");return n.innerHTML=e,i=[],WCF.System.Event.fireEvent("com.woltlab.wcf.redactor2","convertTags_"+this.$element[0].id,{addToStorage:l,div:n}),i.forEach(function(e,t){e.element.outerHTML="###custom"+t+"###"+e.element.innerHTML+"###/custom"+t+"###"}),s.call(this,n.innerHTML,t)}.bind(this);var o=this.clean.reconvertTags;this.clean.reconvertTags=function(e,t){if(i.length){e=e.replace(/###(\/?)custom(\d+)###/g,'<$1woltlab-custom-tag data-index="$2">');var n=elCreate("div");n.innerHTML=e,elBySelAll("woltlab-custom-tag",n,function(e){var t=~~elData(e,"index");if(i[t]){var n=i[t],r=elCreate(n.element.nodeName);for(var a in n.attributes)n.attributes.hasOwnProperty(a)&&elAttr(r,a,n.attributes[a]);for(e.parentNode.insertBefore(r,e);e.childNodes.length;)r.appendChild(e.childNodes[0])}elRemove(e)}),e=n.innerHTML}return o.call(this,e,t)}.bind(this)},_applyInlineStyle:function(e,t,n){var r="",a="";switch(t){case"font-weight":600==n&&null===e.closest("strong")&&(a="strong")}if(a){var i=elCreate(a);return r&&(i.className=r),e.parentNode.insertBefore(i,e),i.appendChild(e),!0}return!1}}};
+$.Redactor.prototype.WoltLabClean=function(){"use strict";return{init:function(){this.opts.pasteInlineTags=this.opts.pasteInlineTags.filter(function(e){return"span"!==e});var e=this.clean.onSet;this.clean.onSet=function(t){t=t.replace(/\u200B/g,""),t=t.replace(/&/g,"@@@WCF_AMPERSAND@@@"),t=e.call(this,t),t=t.replace(/@@@WCF_AMPERSAND@@@/g,"&");var n=elCreate("div");return n.innerHTML=t,elBySelAll("iframe",n,elRemove),t=n.innerHTML}.bind(this);var t=this.clean.onSync;this.clean.onSync=function(e){var n=elCreate("div"),r={};return-1!==e.indexOf("<pre")&&(n.innerHTML=e,elBySelAll("pre",n,function(e){var t=WCF.getUUID();r[t]=e.textContent,e.textContent=t}),e=n.innerHTML),e=e.replace(/<p>\u200B<\/p>/g,"<p><br></p>"),e=e.replace(/&/g,"@@@WCF_AMPERSAND@@@"),e=t.call(this,e),e=e.replace(/@@@WCF_AMPERSAND@@@/g,"&"),n.innerHTML=e,elBySelAll("span",n,function(e){e.outerHTML=e.innerHTML}),elBySelAll("pre",n,function(e){r.hasOwnProperty(e.textContent)&&(e.textContent=r[e.textContent])}),e=n.innerHTML}.bind(this);var n=this.clean.savePreFormatting;this.clean.savePreFormatting=function(e){var t=this.clean.encodeEntities;return this.clean.encodeEntities=function(e){return WCF.String.escapeHTML(e)},e=n.call(this,e),this.clean.encodeEntities=t,e}.bind(this);var r=this.clean.stripTags;this.clean.stripTags=function(e,t){return Array.isArray(t)&&t.push("span"),r.call(this,e,t)}.bind(this);var a=this.clean.onPaste;this.clean.onPaste=function(e,t,n){if(t.pre)return a.call(this,e,t,n);var r=elCreate("div");r.innerHTML=e;for(var i,l,s,o=elBySelAll("[style]",r),c=0,h=o.length;h>c;c++){i=o[c],s=[];for(var u=0,p=i.style.length;p>u;u++)l=i.style[u],this.WoltLabClean._applyInlineStyle(i,l,i.style.getPropertyValue(l))&&s.push(l);s.forEach(function(e){i.style.removeProperty(e)})}return a.call(this,r.innerHTML,t,n)}.bind(this);var i=[],l=function(e,t){for(var n={},r=0,a=t.length;a>r;r++)n[t[r]]=elAttr(e,t[r]);i.push({element:e,attributes:n})},s=this.clean.convertTags;this.clean.convertTags=function(e,t){var n=elCreate("div");return n.innerHTML=e,i=[],WCF.System.Event.fireEvent("com.woltlab.wcf.redactor2","convertTags_"+this.$element[0].id,{addToStorage:l,div:n}),i.forEach(function(e,t){e.element.outerHTML="###custom"+t+"###"+e.element.innerHTML+"###/custom"+t+"###"}),s.call(this,n.innerHTML,t)}.bind(this);var o=this.clean.reconvertTags;this.clean.reconvertTags=function(e,t){if(i.length){e=e.replace(/###(\/?)custom(\d+)###/g,'<$1woltlab-custom-tag data-index="$2">');var n=elCreate("div");n.innerHTML=e,elBySelAll("woltlab-custom-tag",n,function(e){var t=~~elData(e,"index");if(i[t]){var n=i[t],r=elCreate(n.element.nodeName);for(var a in n.attributes)n.attributes.hasOwnProperty(a)&&elAttr(r,a,n.attributes[a]);for(e.parentNode.insertBefore(r,e);e.childNodes.length;)r.appendChild(e.childNodes[0])}elRemove(e)}),e=n.innerHTML}return o.call(this,e,t)}.bind(this)},_applyInlineStyle:function(e,t,n){var r="",a="";switch(t){case"font-weight":600==n&&null===e.closest("strong")&&(a="strong")}if(a){var i=elCreate(a);return r&&(i.className=r),e.parentNode.insertBefore(i,e),i.appendChild(e),!0}return!1}}};
// WoltLabCode.js
$.Redactor.prototype.WoltLabCode=function(){"use strict";return{init:function(){require(["WoltLabSuite/Core/Ui/Redactor/Code"],function(t){new t(this)}.bind(this));var t=this.code.start;this.code.start=function(e){t.call(this,e),WCF.System.Event.fireEvent("com.woltlab.wcf.redactor2","codeStart_"+this.$element[0].id)}.bind(this)}}};
// WoltLabColor.js