Files
liceo-ariosto/media/plg_editors_tinymce/js/tinymce.min.js
2025-06-17 11:53:18 +02:00

1 line
2.3 KiB
JavaScript

import{JoomlaEditor,JoomlaEditorDecorator}from"editor-api";const reInitQueue={},debounceReInit=(e,t,o)=>{reInitQueue[t.id]&&clearTimeout(reInitQueue[t.id]),reInitQueue[t.id]=setTimeout((()=>{e.remove(),JoomlaEditor.unregister(t.id),Joomla.JoomlaTinyMCE.setupEditor(t,o)}),500)};class TinyMCEDecorator extends JoomlaEditorDecorator{getValue(){return this.instance.getContent()}setValue(e){return this.instance.setContent(e),this}getSelection(){return this.instance.selection.getContent({format:"text"})}replaceSelection(e){return this.instance.execCommand("mceInsertContent",!1,e),this}disable(e){return this.instance.setMode(e?"design":"readonly"),this}toggle(e){let t=!1;return e||this.instance.isHidden()?(this.instance.show(),t=!0):this.instance.hide(),t}}Joomla.JoomlaTinyMCE={setupEditors:e=>{const t=e||document,o=Joomla.getOptions("plg_editor_tinymce",{});t.querySelectorAll(".js-editor-tinymce").forEach((e=>{const t=e.querySelector("textarea"),n=e.querySelector(".js-tiny-toggler-button"),i=n.querySelector(".icon-eye");Joomla.JoomlaTinyMCE.setupEditor(t,o),n&&n.removeAttribute("disabled"),e.addEventListener("click",(e=>{JoomlaEditor.setActive(t.id);const o=e.target.closest(".js-tiny-toggler-button"),n=JoomlaEditor.getActive();if(o&&n){const e=n.toggle();i&&i.setAttribute("class",e?"icon-eye":"icon-eye-slash")}}))}))},setupEditor:(e,t)=>{if(JoomlaEditor.get(e.id))return;const o=e?e.getAttribute("name").replace(/\[\]|\]/g,"").split("[").pop():"default",n=t&&t.tinyMCE||{},i=n.default||{};let r=n[o]?n[o]:i;r=r.joomlaMergeDefaults?Joomla.extend(Joomla.extend({},i),r):Joomla.extend({},r),e&&(r.selector=null,r.target=e);let s=!1;e&&(s=e.readOnly),r.setup=e=>{e.mode.set(s?"readonly":"design")},r.init_instance_callback=e=>{e.on("submit",(()=>{e.isHidden()&&e.show()}),!0)};const a=new tinyMCE.Editor(e.id,r,tinymce.EditorManager),d=new TinyMCEDecorator(a,"tinymce",e.id);if(!a.inline){let o=!1,n=!1;const i=()=>{a.getContentAreaContainer().querySelector("iframe").addEventListener("load",(()=>{debounceReInit(a,e,t)}))};a.on("load",(()=>{o=!0,n&&i()})),a.on("PostRender",(()=>{n=!0,o&&i()}))}a.on("focus",(()=>{JoomlaEditor.setActive(d)})),a.render(),JoomlaEditor.register(d)}},document.addEventListener("DOMContentLoaded",(()=>{Joomla.JoomlaTinyMCE.setupEditors(document)})),document.addEventListener("joomla:updated",(({target:e})=>Joomla.JoomlaTinyMCE.setupEditors(e)));