!function() { let e = null; tinymce.PluginManager.add("supercode", function(o) { let t, n, r, a = 0, d = false; const c = { theme: "chrome", fontSize: 14, wrap: true, icon: void 0, iconName: "sourcecode", autocomplete: false, language: "html", renderer: null, parser: null, shortcut: true, aceCss: null, fontFamily: null, fallbackModal: false, modalPrimaryColor: "#ffffff", modalSecondaryColor: "#222f3e", dark: false, debug: true }, s = () => { const e2 = {}; c.autocomplete && (e2.enableLiveAutocompletion = true), c.fontFamily && (e2.fontFamily = c.fontFamily), r.setOptions(e2), r.setTheme(`ace/theme/${c.theme}`), r.setFontSize(c.fontSize), r.setShowPrintMargin(false); }, l = (e2, o2) => { const t2 = o2.cloneNode(true); t2.style.position = "relative"; const n2 = t2.querySelector(".tox-menubar"); n2 && (n2.innerHTML = "Source Code Editor"); let r2 = null, a2 = false; t2.querySelectorAll(".tox-tbtn, .tox-split-button").forEach((e3) => { "supercode" != e3.getAttribute("data-mce-name") ? ("overflow-button" === e3.getAttribute("data-mce-name") && (r2 = e3), e3.classList.remove("tox-tbtn--enabled"), e3.classList.add("tox-tbtn--disabled"), e3.removeAttribute("data-mce-name")) : (a2 = true, e3.setAttribute("data-mce-name", "supercode-toggle"), e3.classList.add("tox-tbtn--enabled"), e3.onclick = b); }), !a2 && r2 && (r2.classList = "tox-tbtn tox-tbtn--enabled", r2.innerHTML = `${c.icon}`, r2.onclick = b), e2.innerHTML = "", e2.append(t2); }, i = (e2, o2) => { e2.style.width = o2 + "px", e2.style.height = "100%", e2.style.position = "relative", ((e3) => { if (e3.attachShadow({ mode: "open" }), c.aceCss) { const o4 = new CSSStyleSheet(); o4.replaceSync(c.aceCss), e3.shadowRoot.adoptedStyleSheets.push(o4); } e3.shadowRoot.innerHTML = '
'; const o3 = e3.shadowRoot.querySelector(".supercode-editor"); o3.style.width = "100%", o3.style.height = "100%", r = ace.edit(o3), r.renderer.attachToShadowRoot(), s(); })(e2); }; ((e2) => { var _a, _b, _c; const o2 = e2.getParam("supercode"); if (o2 && "object" == typeof o2) { for (const e3 in o2) if (o2.hasOwnProperty(e3)) { const t3 = o2[e3]; switch (e3) { case "theme": case "language": case "iconName": case "aceCss": case "fontFamily": case "modalPrimaryColor": case "modalSecondaryColor": "string" == typeof t3 && (c[e3] = t3); break; case "fontSize": "number" == typeof t3 && t3 > 0 && (c.fontSize = parseInt(t3)); break; case "wrap": case "autocomplete": case "shortcut": case "fallbackModal": case "dark": case "debug": "boolean" == typeof t3 && (c[e3] = t3); break; case "parser": case "renderer": "function" == typeof t3 && (c[e3] = t3); } } } var t2; c.icon = (_c = (_b = (_a = e2.ui.registry).getAll) == null ? void 0 : _b.call(_a).icons) == null ? void 0 : _c[c.iconName], c.icon || (c.icon = '', t2 = "Supercode Icon name is invalid or you are using older versions of tinyMCE. The icon is set to default fallback code icon.", c.debug && console.warn(`${t2} Use debug:false option to disable this warning`)), c.fallbackModal || (true === e2.getParam("inline") || tinymce.majorVersion <= 5) && (c.fallbackModal = true); })(o), ((e2) => { const o2 = { "ace-default": { url: "https://cdnjs.cloudflare.com/ajax/libs/ace/1.9.6/ace.js", loaded: false, required: true }, "beautify-html": { url: "https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.15.1/beautify-html.min.js", loaded: false, required: true }, "ace-autocomplete": { url: "https://cdnjs.cloudflare.com/ajax/libs/ace/1.9.6/ext-language_tools.min.js", loaded: false, required: false } }; e2.autocomplete && (o2["ace-autocomplete"].required = true), Object.values(o2).forEach((e3) => { if (e3.loaded) return; let o3 = document.createElement("script"); o3.src = e3.url, o3.type = "text/javascript", document.body.appendChild(o3); }); })(c); const u = (e2) => { "Escape" === e2.key && m(); }, p = () => { var _a, _b, _c; if (!e) { const o2 = document.createElement("div"); o2.id = "supercode-modal-container", o2.innerHTML = '\n
\n
\n
\n

Source Code Editor

\n \n
\n
\n \n
\n', ((e2) => { const o3 = document.createElement("style"); o3.innerHTML = e2, document.head.append(o3); })("\n\n :root{\n --supercode-modal-primary: #ffffff;\n --supercode-modal-secondary: #222f3e;\n --supercode-modal-border: rgba(0, 0, 0, 0.1);\n }\n\n /* Media query for mobile devices */\n @media only screen and (max-width: 767px) {\n #supercode-modal {\n width: 100% !important;\n height: 100% !important;\n border-radius: 0 !important;\n }\n }\n .disable-scroll {\n overflow: hidden;\n }\n #supercode-modal-container {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 990;\n display: none;\n opacity: 0;\n transition: opacity 0.1s linear;\n }\n #supercode-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n background: black;\n opacity: 0.7;\n width: 100%;\n height: 100%;\n z-index: 1;\n }\n #supercode-modal {\n width: 90%;\n height: 80%;\n max-width: 1200px;\n z-index: 2;\n overflow: hidden;\n border-radius: 10px;\n display: flex;\n flex-direction: column;\n background: var(--supercode-modal-primary);\n }\n #supercode-header {\n display: flex;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid var(--supercode-modal-border);\n color: var(--supercode-modal-secondary);\n }\n #supercode-modal h1 {\n flex-grow: 1;\n margin: auto;\n font-size: 14px;\n }\n #supercode-close-btn {\n background: none;\n border: none;\n padding: 0;\n height: 100%;\n cursor: pointer;\n fill: var(--supercode-modal-secondary);\n }\n #supercode-editor {\n width: 100%;\n height: 100%;\n position: relative;\n }\n #supercode-footer {\n padding: 0.5rem 1rem;\n display: flex;\n justify-content: end;\n gap: 1rem;\n border-top: 1px solid var(--supercode-modal-border);\n }\n #supercode-footer button {\n padding: 0.5rem 1rem;\n border-radius: 5px;\n font-weight: bold;\n border: none;\n cursor: pointer;\n min-width: 5rem;\n transition: opacity 0.1s linear;\n }\n #supercode-footer button:hover {\n opacity: 0.8;\n }\n #supercode-cancel-btn {\n background: transparent;\n color: var(--supercode-modal-secondary);\n }\n #supercode-save-btn {\n background: var(--supercode-modal-secondary);\n color: var(--supercode-modal-primary);\n }\n "), document.body.append(o2), e = { element: o2, editor: ace.edit(o2.querySelector("#supercode-editor")) }; } r = e.editor, s(), e.element.querySelector("#supercode-backdrop").onclick = m, e.element.querySelector("#supercode-close-btn").onclick = m, e.element.querySelector("#supercode-cancel-btn").onclick = m, e.element.querySelector("#supercode-save-btn").onclick = () => { b(), m(); }, c.shortcut && e.element.querySelector("#supercode-editor").addEventListener("keydown", u), document.querySelector("body").classList.add("disable-scroll"), document.body.style.setProperty("--supercode-modal-primary", c.modalPrimaryColor), document.body.style.setProperty("--supercode-modal-secondary", c.modalSecondaryColor), c.dark && document.body.style.setProperty("--supercode-modal-border", "rgba(255, 255, 255, 0.1)"), e.element.querySelector("#supercode-close-btn").innerHTML = ((_c = (_b = (_a = o.ui.registry).getAll) == null ? void 0 : _b.call(_a).icons) == null ? void 0 : _c.close) ?? '', e.element.style.display = "flex", setTimeout(() => { e.element.style.opacity = 1; }, 10), f(); }, m = () => { c.shortcut && removeEventListener("keydown", u), document.querySelector("body").classList.remove("disable-scroll"), e.element.style.opacity = 0, o.focus(), setTimeout(() => { e.element.style.display = "none"; }, 10); }, y = () => { o.undoManager.transact(function() { let e2 = r.getValue(); c.renderer && (e2 = c.renderer(e2)), o.setContent(e2); }), o.nodeChanged(); }, b = () => { o.focus(), c.fallbackModal && (o.undoManager.transact(function() { let e2 = r.getValue(); c.renderer && (e2 = c.renderer(e2)), o.setContent(e2); }), o.selection.setCursorLocation(), o.nodeChanged()), o.execCommand("ToggleView", false, "supercode"); }, h = (e2) => { (" " === e2.key && e2.ctrlKey || "Escape" === e2.key) && b(); }, f = () => { let e2 = (t2 = o.getContent(), c.parser ? c.parser(t2) : html_beautify(t2)); var t2; if (!n && (n = ace.createEditSession(e2, `ace/mode/${c.language}`), n.setUseWrapMode(c.wrap), !c.fallbackModal)) { const e3 = /* @__PURE__ */ ((e4, o2) => { let t3; return (...n2) => { clearTimeout(t3), t3 = setTimeout(() => e4.apply(null, n2), o2); }; })(y, 300); n.on("change", e3); } r.setSession(n), n.setValue(e2), r.gotoLine(1 / 0), r.focus(); }, g = function() { if (c.fallbackModal) p(); else { const e2 = o.getContainer(); a && (d = a != e2.clientWidth), a = e2.clientWidth, !d && t || (t = e2.querySelector(".tox-editor-header")), o.execCommand("ToggleView", false, "supercode"); } }; if (!c.fallbackModal) { const e2 = { onShow: (e3) => { const o2 = e3.getContainer(); d && (l(o2.querySelector(".supercode-header"), t), o2.querySelector(".supercode-body ").style.width = a + "px", r.resize()), 0 === o2.childElementCount && (o2.style.padding = 0, o2.style.display = "flex", o2.style.flexDirection = "column", o2.innerHTML = '
', c.shortcut && o2.addEventListener("keydown", h), l(o2.querySelector(".supercode-header"), t), i(o2.querySelector(".supercode-body "), a)), f(); }, onHide: () => { c.shortcut && removeEventListener("keydown", h); } }; o.ui.registry.addView("supercode", e2); } return o.ui.registry.addButton("supercode", { icon: c.iconName, tooltip: "Source Code Editor (Ctrl + space)", onAction: g }), o.ui.registry.addMenuItem("supercode", { icon: c.iconName, text: "Source Code", onAction: g }), o.ui.registry.addContextMenu("supercode", { update: (e2) => "supercode" }), c.shortcut && o.shortcuts.add("ctrl+32", "Toggles Source Code Editing Mode", g), { getMetadata: function() { return { name: "Supercode", url: "https://github.com/prathamVaidya/supercode-tinymce-plugin" }; } }; }); }();