PageSourceSearch

https://radio-osttirol.at/media/com_jce/editor/js/editor.min.js?2239ec38e37baa7a49c1f8c83bd77e85

js radio-osttirol.at collected 2026-10-06 16:52:47 UTC 31,592 bytes, 522 lines download raw bytes

1/* jce - 2.9.99.10 | 2026-07-29 | https://www.joomlacontenteditor.net | Source: https://github.com/widgetfactory/jce | Copyright (C) 2006 - 2026 Ryan Demmer. All rights reserved | GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html; see LICENSE.txt */
2function IeCursorFix() {
3    return !0;
4}
5
6function jInsertEditorText(text, editor) {
7    try {
8        WfEditor.insert(editor, text);
9    } catch (e) {}
10}
11
12!function() {
13    var each = tinymce.each, extend = tinymce.extend, DOM = tinymce.DOM, Event = tinymce.dom.Event, Dispatcher = tinymce.util.Dispatcher, corePlugins = [ "core", "help", "autolink", "cleanup", "code", "format", "importcss", "colorpicker", "upload", "blobupload", "figure", "ui", "noneditable", "branding" ];
14    function isHidden(el) {
15        return (el = "string" == typeof el ? document.getElementById(el) : el) && "none" === el.style.display;
16    }
17    function getRefocusBookmarkId(ed) {
18        var prefix = "wf-bookmark-{path}{query}-{id}-";
19        return prefix = (prefix = (prefix = (prefix = prefix.replace(/\{path\}/g, document.location.pathname)).replace(/\{query\}/g, document.location.search)).replace(/\{id\}/g, ed.id)).replace(/\W/g, "_").replace(/_+/g, "_").replace(/^_+|_+$/g, "");
20    }
21    function getScriptOptions(key) {
22        if (!Joomla.optionsStorage) {
23            Joomla.optionsStorage = {};
24            var scripts = document.querySelectorAll("script.joomla-script-options.new");
25            if (!scripts) throw new Error("No Joomla options found");
26            scripts.forEach(element => {
27                element = element.text || element.textContent;
28                try {
29                    var data = JSON.parse(element);
30                    data && (Joomla.optionsStorage = data);
31                } catch (e) {}
32            });
33        }
34        scripts = Joomla.getOptions ? Joomla.getOptions("plg_editor_jce", {}) : Joomla.optionsStorage.plg_editor_jce || {};
35        return scripts && scripts[key] ? (scripts = scripts[key], Array.isArray(scripts) ? scripts[0] : scripts) : null;
36    }
37    var PlatformEditor_register = function(editor) {
38        var instance = {
39            getValue: function() {
40                return WfEditor.getContent(editor.id);
41            },
42            setValue: function(value) {
43                WfEditor.setContent(editor.id, value);
44            },
45            getSelection: function() {
46                return WfEditor.getSelection(editor.id, {
47                    format: "text"
48                });
49            },
50            replaceSelection: function(value) {
51                return WfEditor.insert(editor.id, value);
52            },
53            disable: function(disabled) {
54                return editor.setMode(disabled ? "readonly" : "design");
55            },
56            id: editor.id,
57            instance: editor,
58            onSave: function() {}
59        };
60        if ("undefined" != typeof JceDecorator) return !0;
61        Joomla.editors && (Joomla.editors.instances[editor.id] = instance);
62    }, PlatformEditor_unregister = function(editor) {
63        var instance, editor = editor.getElement();
64        if ("undefined" != typeof JceDecorator) return !((instance = JoomlaEditor.get(editor.id)) && instance instanceof JceDecorator) || JoomlaEditor.unregister(instance);
65        Joomla.editors && delete Joomla.editors.instances[editor.id];
66    }, WfEditor = {
67        settings: null,
68        bookmark: null,
69        options: {},
70        getSite: function(base) {
71            var u = document.location.href, host = -1 !== base.indexOf("http") ? (host = base.substr(base.indexOf("://") + 3)).substr(host.indexOf("/")) : u.substr(0, u.indexOf(base) + base.length);
72            return -1 !== u.indexOf("/administrator/") && (host += "administrator/"), 
73            host;
74        },
75        init: function(settings) {
76            if (!(settings = settings || getScriptOptions("editor"))) throw new Error("Unable to initialize editor. No settings found");
77            var base = settings.base_url, site = this.getSite(base), indent = (/https:\/\//.test(document.location.href) && (base = base.replace(/http:/, "https:")), 
78            window.tinyMCEPreInit = {}, settings.query = function http_build_query(params, prefix) {
79                var value, fullKey, queryStringParts = [];
80                for (const key in params) params.hasOwnProperty(key) && (value = params[key], 
81                fullKey = prefix ? `${prefix}[${key}]` : key, queryStringParts.push("object" == typeof value && null !== value ? http_build_query(value, fullKey) : encodeURIComponent(fullKey) + "=" + encodeURIComponent(value)));
82                return queryStringParts.join("&");
83            }(settings.query), extend(tinymce, {
84                baseURL: base + "media/com_jce/editor/tinymce",
85                suffix: "",
86                query: settings.query
87            }), "p,h1,h2,h3,h4,h5,h6,blockquote,div,title,pre,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,f
87igure,object,video,audio");
88            if (this.settings = this.settings || extend({
89                document_base_url: base,
90                site_url: site,
91                schema: "mixed",
92                convert_urls: !0,
93                relative_urls: !0,
94                mode: "textareas",
95                entity_encoding: "raw",
96                editor_selector: "wf-editor",
97                editor_deselector: "wf-no-editor",
98                urlconverter_callback: "WFEditor.convertURL",
99                popup_css: !1,
100                add_form_submit_trigger: !1,
101                submit_patch: !1,
102                theme: "none",
103                skin_directionality: "ltr",
104                invalid_elements: "applet,iframe,object,embed,script,style,body,bgsound,base,basefont,frame,frameset,head,html,id,ilayer,layer,link,meta,name,title,xml",
105                plugins: "",
106                external_plugins: {},
107                whitespace_elements: "pre,script,style,textarea,code",
108                allow_conditional_comments: !0,
109                allow_event_attributes: !1,
110                fix_list_elements: !0,
111                indent_before: indent,
112                indent_after: indent,
113                update_styles: !0,
114                constrain_menus: !1,
115                compress: {
116                    css: !1,
117                    javascript: !1
118                },
119                language_load: !1
120            }, settings), this.settings) try {
121                this.settings.compress.css && extend(this.settings, {
122                    content_css: !1,
123                    editor_css: !1
124                }), this.markLoaded(), WFEditor.load();
125            } catch (e) {
126                console.debug(e);
127            }
128        },
129        markLoaded: function() {
130            var s = this.settings, each = tinymce.each, suffix = s.suffix || "";
131            function load(u) {
132                tinymce.ScriptLoader.markDone(tinyMCE.baseURL + "/" + u);
133            }
134            1 == s.compress.javascript && (each(s.external_plugins, function(url, name) {
135                load(url);
136            }), each(s.plugins.split(","), function(n) {
137                n && load("plugins/" + n + "/plugin" + suffix + ".js");
138            })), each(corePlugins, function(n) {
139                load("plugins/" + n + "/plugin" + suffix + ".js");
140            });
141        },
142        setBookmark: function(ed) {
143            DOM.bind(document.body, "mousedown", function(e) {
144                !function(el) {
145                    return DOM.getParent(el, "div.mceEditor, div.mceSplitButtonMenu, div.mceListBoxMenu, div.mceDropDown");
146                }(e.target) && !function(ed) {
147                    return ed.isHidden() || "hidden" == DOM.getStyle(ed.id + "_ifr", "visibility");
148                }(ed) && ed.selection && (e = ed.selection.getNode(), DOM.getParent(e, "body#tinymce")) && (ed.lastSelectionBookmark = ed.selection.getBookmark(1));
149            });
150        },
151        load: function() {
152            var loaded, self = this;
153            function _load() {
154                loaded || (loaded = !0, self.preinit());
155            }
156            tinymce.settings = this.settings, tinyMCE.onAddEditor.add(function(mgr, ed) {
157                var options, btns, el = ed.getElement();
158                "advanced" === ed.settings.theme && (window.Joomla && (Joomla.getOptions && (options = getScriptOptions("joomla_xtd_buttons"), 
159                btns = ed.settings.joomla_xtd_buttons || {}, options) && tinymce.is(options, "object") && (each(options, function(value, key) {
160                    value && value.length && (btns[key] = value);
161                }), ed.settings.joomla_xtd_buttons = btns), PlatformEditor_register(ed)), 
162                self.settings.compress.css && ed.onPreInit.add(function() {
163                    ed.dom.loadCSS(self.settings.site_url + "index.php?option=com_jce&task=editor.pack&type=css&slot=content");
164                }), self.createToggle(el), self.setBookmark(ed), ed.onPreInit.add(function() {
165                    self.createTabs(ed);
166                }), ed.onInit.add(function() {
167                    ed.onSubmit.addToTop(function() {
168                        ed.initialized && ed.getElement() && (ed.setDirty(!1), self.getContent(ed.id));
169                    }), ed.settings.refocus && window.setTimeout(function() {
170                        var bookmark = function(ed) {
171                            var bookmarkStore = sessionStorage.getItem("wf_refocus_bookmark"), bookmarkData = {}, bookmark = 0;
172                            if (bookmarkStore) try {
173                                bookmarkData = JSON.parse(bookmarkStore);
174                            } catch (e) {}
175                            return (bookmark = bookmarkData[getRefocusBookmarkId(ed)] || 0) && (sessionStorage.removeItem("wf_refocus_bookmark"), 
176                            bookmark = parseInt(bookmark)), bookmark;
177                        }(ed);
178                        bookmark && self.setActiveLine(ed, bookmark);
179                    }, 100);
180                }), ed.onBeforeRenderUI.add(function() {
181                    var n = ed.getElement().form;
182                    !n || n._mceOldSubmit || n.submit.nodeType || n.submit.length || ((ed.formElement = n)._mceOldSubmit = n.submit, 
183                    n.submit = function() {
184                        return tinymce.each(tinymce.editors, function(e) {
185                            e.initialized && e.getElement() && (e.setDirty(!1), 
186                            self.getContent(e.id));
187                        }), ed.formElement._mceOldSubmit(ed.formElement);
188                    });
189                }), ed.onPostRender.add(function() {
190                    var el = ed.getElement(), el = self.getEditorState(el), toggle = tinymce.is(ed.settings.toggle) ? parseInt(ed.settings.toggle, 10) : 0;
191                    !el && toggle && (ed.hide(), ed.plugins.source && ed.plugins.source.hide(), 
192                    ed.plugins.preview) && ed.plugins.preview.hide();
193                }), ed.onWfEditorChange = new Dispatcher(), ed.onWfEditorChange.add(function(ed, o) {
194                    tinymce.is(o.content) && (ed.setContent(o.content, o), ed.onChange.dispatch());
195                }), ed.onSaveContent.add(function() {
196                    var bookmark;
197                    ed === tinymce.activeEditor && (bookmark = self.getActiveLine(ed), 
198                    function(ed, bookmark) {
199                        var bookmarkData;
200                        bookmark && ((bookmarkData = {})[getRefocusBookmarkId(ed)] = bookmark, 
201                        sessionStorage.setItem("wf_refocus_bookmark", JSON.stringify(bookmarkData)));
202                    }(ed, bookmark));
203                }), ed.onRemove.add(function() {
204                    var nodes, container = DOM.getParent(ed.getElement(), "div.wf-editor-container");
205                    container && (nodes = tinymce.grep(DOM.select("div", container), function(node) {
206                        return node !== ed.getElement() && node !== ed.getContainer();
207                    }), DOM.remove(nodes), DOM.remove(container, 1));
208                }));
209            }), Event.bind(window, "load", function() {
210                _load(), self.initSubformEvents();
211            }), Event.bind(window, "ready", function() {
212                window.setTimeout(function() {
213                    _load();
214                }, 1e3);
215            });
216        },
217        initSubformEvents: function() {
218            var self = this, settings = this.settings;
219            function removeEditor(el) {
220                el = tinymce.EditorManager.get(el.id);
221                el && (el.remove(), el.destroy(!0), PlatformEditor_unregister(el));
222            }
223            function createEditor(el) {
224                var ed = tinymce.EditorManager.get(el.id);
225                ed || (self.createInstance(el), ed = new tinymce.Editor(el.id, settings)), 
226                ed.render();
227            }
228            function rebuildEditor(row) {
229                row = DOM.select(".wf-editor-container > textarea[id]", row);
230                each(row, function(el) {
231                    removeEditor(el), createEditor(el);
232                });
233            }
234            window.jQuery && (jQuery("div.subform-repeatable").on("subform-row-add", function(event, row) {
235                row = DOM.select(".wf-editor", row);
236                each(row, function(el) {
237                    createEditor(el);
238                });
239            }).on("subform-row-remove", function(event, row) {
240                row = DOM.select(".wf-editor", row);
241                each(row, function(el) {
242                    removeEditor(el);
243                });
244            }), jQuery(document).on("editor-reinit", function(e, row) {
245                rebuildEditor(row);
246            }), jQuery(document).on("sortstop", function(e, ui) {
247                ui.item[0] && rebuildEditor(ui.item[0]);
248            })), DOM.bind(document, "subform-row-add", function(e) {
249                var e = e.detail ? e.detail.row : null;
250                e && (e = DOM.select(".wf-editor", e), each(e, function(el) {
251                    createEditor(el);
252                }));
253            }), DOM.bind(document, "subform-row-remove", function(e) {
254                var e = e.detail ? e.detail.row : null;
255                e && (e = DOM.select(".wf-editor", e), each(e, function(el) {
256                    removeEditor(el);
257                }));
258            }), DOM.bind(document, "sortstop", function(e) {
259                e = e.detail ? e.detail.row : null;
260                e && rebuildEditor(e);
261            }), DOM.bind(DOM.select("joomla-field-subform.subform-repeatable"), "dragend", function(e) {
262                rebuildEditor(e.target);
263            });
264        },
265        isEditorActive: function(elm) {
266            return 0 == DOM.hasClass(elm, "wf-no-editor");
267        },
268        canToggle: function() {
269            var settings = this.settings;
270            return tinymce.is(settings.toggle) ? parseInt(settings.toggle, 10) : 0;
271        },
272        getEditorState: function(el) {
273            var state, s = this.settings;
274            return null == (state = !1 !== s.use_state_cookies ? tinymce.util.Storage.get("wf_editor_state_" + el.id) : state) && (state = tinymce.is(s.toggle_state) ? s.toggle_state : 1), 
275            state = parseInt(state, 10);
276        },
277        createInstance: function(el) {
278            var s = this.settings;
279            if (el = "string" == typeof el ? DOM.get(el) : el) {
280                s.width && DOM.setStyle(el, "width", s.width), s.height && DOM.setStyle(el, "height", s.height);
281                s = this.getEditorState(el);
282                if (this.canToggle()) {
283                    this.createToggle(el);
284                    var header = DOM.getPrev(el, ".wf-editor-header");
285                    if (!s) return DOM.addClass(el, "wf-no-editor"), DOM.hide(DOM.select(".wf-editor-tabs", header)), 
286                    DOM.addClass(el.parentNode, "wf-editor-toggle-off"), !1;
287                }
288                return !0;
289            }
290        },
291        create: function(elements) {
292            var ed;
293            return "string" == typeof elements && ((ed = tinymce.get(elements)) && tinymce.remove(ed), 
294            elements = [ elements ]), this.preinit(elements);
295        },
296        preinit: function(elements) {
297            var self = this, settings = this.settings;
298            try {
299                elements = elements || DOM.select(".wf-editor"), each(elements, function(elm) {
300                    var editorId;
301                    return !(elm = DOM.get(elm)) || (editorId = function(elm) {
302                        var id = elm.id;
303                        return id || (id = (id = elm.name) && !DOM.get(id) ? elm.name : DOM.uniqueId(), 
304                        elm.setAttribute("id", id)), id;
305                    }(elm), !!tinymce.get(editorId)) || (DOM.show(elm), "advanced" == settings.theme && self.createInstance(elm), 
306                    void new tinymce.Editor(editorId, settings, tinymce.EditorManager).render());
307                });
308            } catch (e) {
309                console.debug(e);
310            }
311        },
312        toggleEditor: function(el) {
313            var activeTab, height, ed = tinymce.get(el.id);
314            if (ed) if (DOM.hasClass(el, "wf-no-editor")) switch (DOM.removeClass(el, "wf-no-editor"), 
315            DOM.setStyle(DOM.select(".wf-editor-tabs", el.parentNode), "display", ""), 
316            DOM.removeClass(el.parentNode, "wf-editor-toggle-off"), !1 !== this.settings.use_state_cookies && tinymce.util.Storage.set("wf_editor_state_" + el.id, 1), 
317            (activeTab = !1 !== this.settings.use_state_cookies ? sessionStorage.getItem("wf-editor-tabs-" + ed.id) : activeTab) || ed.settings.active_tab, 
318            DOM.hide(ed.getElement()), activeTab) {
319              default:
320              case "wf-editor-wysiwyg":
321                ed.show();
322                break;
323
324              case "wf-editor-source":
325                ed.plugins.source.toggle();
326                break;
327
328              case "wf-editor-preview":
329                ed.plugins.preview.toggle();
330            } else DOM.addClass(el, "wf-no-editor"), DOM.hide(DOM.select(".wf-editor-tabs", el.parentNode)), 
331            DOM.addClass(el.parentNode, "wf-editor-toggle-off"), (height = !1 !== this.settings.use_state_cookies ? sessionStorage.getItem("wf-editor-container-height") : height) && !ed.getParam("fullscreen_enabled") && DOM.setStyle(ed.getElement(), "height", height), 
332            !1 !== this.settings.use_state_cookies && tinymce.util.Storage.set("wf_editor_state_" + el.id, 0), 
333            ed.hide(), this.getContent(ed.id), ed.plugins.source && ed.plugins.source.hide(), 
334            ed.plugins.preview && ed.plugins.preview.hide(), DOM.setStyle(ed.getElement(), "display", ""); else DOM.addClass(el.parentNode, "mce-loading"), 
335            DOM.removeClass(el, "wf-no-editor"), DOM.removeClass(el.parentNode, "wf-editor-toggle-off"), 
336            !1 !== this.settings.use_state_cookies && tinymce.util.Storage.set("wf_editor_state_" + el.id, 1), 
337            tinymce.execCommand("mceToggleEditor", !1, el.id), setTimeout(function() {
338                DOM.removeClass(el.parentNode, "mce-loading");
339            }, 1e3);
340        },
341        getActiveTab: function(ed) {
342            var ed = ed.getElement().parentNode.querySelector(".wf-editor-tabs > button.active");
343            return (ed = ed && ed.getAttribute("aria-controls")) ? ed.substring(10) : "wysiwyg";
344        },
345        getEditor: function(el) {
346            var ed, win = window;
347            return !win.tinymce && window.parent.tinymce && (win = window.parent), 
348            !(!(ed = (ed = (el = el && ("string" == typeof el ? document.getElementById(el) : el)) && el.id ? win.tinymce.get(el.id) : ed) || win.tinymce.activeEditor) || !ed.getElement() || DOM.hasClass(ed.getElement(), "wf-no-editor")) && ("wysiwyg" == (el = this.getActiveTab(ed)) ? ed : "source" == el && ed.plugins.source);
349        },
350        loadContent: function(ed) {
351            var code, el = ed.getElement();
352            isHidden(ed.id + "_parent") && ed.plugins.source && null !== (code = ed.plugins.source.getContent()) && (/TEXTAREA|INPUT/i.test(el.nodeName) ? el.value = code : el.innerHTML = code, 
353            ed.load());
354        },
355        createToggle: function(el) {
356            var self = this, s = this.settings, header = DOM.getPrev(el, ".wf-editor-header") || this.createHeader(el);
357            self.canToggle() && 0 === DOM.select("button.wf-editor-toggle", header).length && (header = DOM.add(header, "button", {
358                class: "wf-editor-toggle btn btn-link",
359                tabindex: "-1"
360            }, '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 448 448"><title></title><g id="wf-toggle-icon" stroke="none" stroke-width="1"></g><path d="M280 64.132v59.482c15.84 6.914 30.406 16.803 42.995 29.391 26.443 26.442 41.005 61.6 41.005 98.995s-14.563 72.552-41.005 98.995c-26.442 26.442-61.599 41.005-98.995 41.005s-72.552-14.563-98.995-41.005c-26.442-26.442-41.005-61.6-41.005-98.995s14.563-72.552 41.005-98.995c12.589-12.589 27.155-22.478 42.995-29.392v-59.481c-80.959 24.097-140 99.082-140 187.868 0 108.248 87.753 196 196 196s196-87.752 196-196c0-88.786-59.041-163.77-140-187.868zM196 0h56v224h-56z"></path></svg>' + (s.toggle_label || "")), 
361            DOM.bind(header, "click", function(e) {
362                e.preventDefault(), self.toggleEditor(el);
363            }));
364        },
365        setActiveLine: function(ed, pos, fromCharacterIndex) {
366            var blocks = [], doc = ed.getDoc(), body = ed.getBody();
367            !(pos = parseInt(pos)) || pos < 0 || (fromCharacterIndex = fromCharacterIndex ? function(position) {
368                var walker = doc.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, !1);
369                let currentPos = 0;
370                for (;walker.nextNode(); ) {
371                    var node = walker.currentNode, nodeLength = node.length;
372                    if (currentPos + nodeLength >= position) return node.parentNode;
373                    currentPos += nodeLength;
374                }
375                return null;
376            }(pos) : (each(ed.schema.getBlockElements(), function(value, name) {
377                if (/\W/.test(name)) return !0;
378                blocks.push(name.toLowerCase());
379            }), ed.dom.select(blocks.join(","))[pos] || null)) && (ed.focus(), pos = fromCharacterIndex.childNodes.length, 
380            ed.selection.setCursorLocation(fromCharacterIndex, pos), ed.selection.scrollIntoView(fromCharacterIndex));
381        },
382        getActiveLine: function(ed) {
383            var blocks = [], line = 0, node = (tinymce.each(ed.schema.getBlockElements(), function(value, name) {
384                if (/\W/.test(name)) return !0;
385                blocks.push(name.toLowerCase());
386            }), ed.selection.getNode()), nodes = ed.dom.select(blocks.join(","));
387            if (node) {
388                1 === node.nodeType && "bookmark" !== node.getAttribute("data-mce-type") || (node = node.parentNode);
389                for (var i = 0, len = nodes.length; i < len; i++) if (nodes[i] === node) {
390                    line = i;
391                    break;
392                }
393            }
394            return line;
395        },
396        toggleTab: function(ed, tab) {
397            var h, ca, p, self = this, el = ed.getElement();
398            return DOM.addClass(el.parentNode, "mce-loading"), isHidden(ed.id + "_parent") || DOM.hasClass(el.parentNode, "mce-fullscreen") || (ed.settings.container_height = ed.getContainer().offsetHeight, 
399            !1 !== this.settings.use_state_cookies && sessionStorage.setItem("wf-editor-container-height", ed.settings.container_height), 
400            ed.settings.container_width = ed.getContainer().offsetWidth, !1 !== this.settings.use_state_cookies && sessionStorage.setItem("wf-editor-container-width", ed.settings.container_width), 
401            ed.settings.interface_height = (h = 0, ca = ed.getContentAreaContainer(), 
402            p = ca.parentNode, tinymce.each(p.childNodes, function(n) {
403                n !== ca && (h += n.offsetHeight);
404            }), h), !1 !== this.settings.use_state_cookies && sessionStorage.setItem("wf-editor-interface-height", ed.settings.interface_height)), 
405            "wf-editor-source" === tab ? (ed.hide(), DOM.hide(el), ed.plugins.preview && ed.plugins.preview.hide(), 
406            ed.plugins.source.toggle()) : "wf-editor-preview" === tab ? (self.loadContent(ed), 
407            ed.hide(), DOM.hide(el), ed.plugins.source && ed.plugins.source.hide(), 
408            ed.onToggleTab.dispatch(ed, tab), ed.plugins.preview.toggle()) : (self.loadContent(ed), 
409            ed.plugins.source && ((p = ed.plugins.source.getCursorPos()) && (ed.activeLine = p), 
410            ed.plugins.source.hide()), ed.plugins.preview && ed.plugins.preview.hide(), 
411            DOM.setStyle(ed.id + "_ifr", "max-width", DOM.getStyle(el.parentNode, "max-width")), 
412            ed.show(), ed.activeLine && window.setTimeout(function() {
413                self.setActiveLine(ed, ed.activeLine, !0);
414            }, 100), void DOM.removeClass(el.parentNode, "mce-loading"));
415        },
416        createHeader: function(element) {
417            var container = DOM.create("div", {
418                class: "editor wf-editor-container"
419            }, '<div class="wf-editor-header"></div>');
420            return element.parentNode.insertBefore(container, element), DOM.add(container, element), 
421            container.firstChild;
422        },
423        createTabs: function(ed) {
424            var tablist, activeTab, self = this, settings = this.settings, el = ed.getElement(), header = DOM.getPrev(el, ".wf-editor-header") || this.createHeader(el);
425            if (!ed.plugins.source && !ed.plugins.preview) return !1;
426            function makeTabActive(tab) {
427                DOM.removeClass(DOM.select("button", tablist), "active"), DOM.setAttrib(DOM.select("button", tablist), "aria-expanded", "false"), 
428                DOM.addClass(tab, "active"), DOM.setAttrib(tab, "aria-expanded", "true");
429            }
430            DOM.select(".wf-editor-tabs", header).length || (ed.onToggleTab = new tinymce.util.Dispatcher(ed), 
431            tablist = DOM.add(header, "div", {
432                role: "tablist",
433                class: "wf-editor-tabs nav nav-tabs"
434            }), activeTab = (activeTab = !1 !== settings.use_state_cookies ? sessionStorage.getItem("wf-editor-tabs-" + ed.id) : activeTab) || ed.settings.active_tab || "wf-editor-wysiwyg", 
435            ed.settings.active_tab = activeTab, makeTabActive(DOM.add(tablist, "button", {
436                type: "button",
437                class: "nav-item",
438                "aria-controls": "wf-editor-wysiwyg"
439            }, ed.getLang("tab.wysiwyg", "Editor"))), ed.plugins.source && (header = DOM.add(tablist, "button", {
440                type: "button",
441                class: "nav-item",
442                "aria-controls": "wf-editor-source"
443            }, ed.getLang("tab.code", "Code")), "wf-editor-source" === activeTab) && makeTabActive(header), 
444            ed.plugins.preview && (header = DOM.add(tablist, "button", {
445                type: "button",
446                class: "nav-item",
447                "aria-controls": "wf-editor-preview"
448            }, ed.getLang("tab.preview", "Preview")), "wf-editor-preview" === activeTab) && makeTabActive(header), 
449            DOM.bind(tablist, "click", function(e) {
450                e.preventDefault();
451                var e = DOM.getParent(e.target, "button");
452                e && !DOM.hasClass(e, "active") && (makeTabActive(e), e = DOM.getAttrib(e, "aria-controls"), 
453                !1 !== settings.use_state_cookies && sessionStorage.setItem("wf-editor-tabs-" + ed.id, e), 
454                self.toggleTab(ed, e));
455            }), activeTab = this.getEditorState(el), header = tinymce.is(settings.toggle) ? parseInt(settings.toggle, 10) : 0, 
456            !activeTab && header && DOM.hide(DOM.select(".wf-editor-tabs", el.parentNode)));
457        },
458        textareaResize: function(el) {
459            var container = DOM.getPrev(el, ".wf-editor-header").parentNode;
460            DOM.bind(el, "mousedown", function(e) {
461                var mm = DOM.bind(el, "mousemove", function(e) {
462                    container.style.maxWidth = el.offsetWidth + "px";
463                }), mu = DOM.bind(el, "mouseup", function(e) {
464                    Event.remove(el, "mousemove", mm), Event.remove(el, "mouseup", mu), 
465                    container.style.maxWidth = el.offsetWidth + "px";
466                });
467            });
468        },
469        wrapText: function(el, s) {
470            s ? el.setAttribute("wrap", "soft") : el.removeAttribute("wrap");
471        },
472        setContent: function(id, html) {
473            var ed = this.getEditor(id);
474            ed ? ed.setContent(html) : (ed = document.getElementById(id)) && (ed.value = html);
475        },
476        getContent: function(id) {
477            var state, ed = this.getEditor(id);
478            return ed ? (id = document.getElementById(id), state = this.isEditorActive(id), 
479            ed && state ? ed.save() : id ? id.value : "") : "";
480        },
481        getSelection: function(id, args) {
482            id = this.getEditor(id);
483            return id && id.getSelection ? id.getSelection(args || {}) : document.getSelection().toString();
484        },
485        insert: function(el, v) {
486            var ed = this.getEditor(el);
487            return ed ? ed.execCommand ? isHidden(ed.getElement()) ? (ed.lastSelectionBookmark && ed.selection.moveToBookmark(ed.lastSelectionBookmark), 
488            ed.execCommand("mceInsertContent", !1, v)) : this.insertIntoTextarea(ed.getElement(), v) : ed.insertContent(v) : (el = "string" == typeof el ? document.getElementById(el) : el) && !isHidden(el) && this.insertIntoTextarea(el, v), 
489            !0;
490        },
491        insertIntoTextarea: function(el, v) {
492            el.focus(), document.selection ? document.selection.createRange().text = v : el.setRangeText(v, el.selectionStart, el.selectionEnd, "end");
493        },
494        convertURL: function(url, elm, save, name) {
495            if (url) {
496                var ed = tinymce.EditorManager.activeEditor;
497                if (ed) {
498                    var settings = ed.settings, base = settings.document_base_url;
499                    if (settings.convert_urls && (!elm || "LINK" !== elm.nodeName) && 0 !== url.indexOf("file:") && url !== base && url !== base.substring(0, base.length - 1) && "/" !== url.charAt(0)) {
500                        if (!settings.mixed_urls) {
501                            if (settings.relative_urls) return 0 === url.indexOf(base) ? ed.documentBaseURI.toRelative(url) : url;
502                            url = ed.documentBaseURI.toAbsolute(url, settings.remove_script_host);
503                        }
504                        settings.protocol_relative && (url = url.replace(/(http|https|ftp|ftps):\/\//, "//"));
505                    }
506                }
507            }
508            return url;
509        },
510        indent: function(h) {
511            return h = h.replace(/\n+/g, "\n"), tinymce.trim(h);
512        }
513    };
514    document.addEventListener("DOMContentLoaded", function handler() {
515        WfEditor.init(), this.removeEventListener("DOMContentLoaded", handler), 
516        Joomla.JoomlaTinyMCE = {
517            setupEditors: function(form) {
518                DOM.get(form) && DOM.select(".wf-editor", form).length && WfEditor.init();
519            }
520        };
521    }), window.WfEditor = window.WFEditor = WfEditor;
522}();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.