[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/plg_editors_codemirror/js/ -> joomla-editor-codemirror.min.js (source)

   1  class CodemirrorEditor extends HTMLElement{constructor(){super(),this.instance="",this.host=window.location.origin,this.element=this.querySelector("textarea"),this.refresh=this.refresh.bind(this),this.intersectionObserver=new IntersectionObserver((e=>{e[0].isIntersecting&&this.instance&&this.instance.refresh()}),{threshold:0})}static get observedAttributes(){return["options"]}get options(){return JSON.parse(this.getAttribute("options"))}set options(e){this.setAttribute("options",e)}attributeChangedCallback(e,t,i){switch(e){case"options":t&&i!==t&&this.refresh(this.element)}}async connectedCallback(){const e=this.getAttribute("editor"),t=this.getAttribute("addons");await import(`$this.host}/$e}`),this.options.keyMapUrl&&await import(`$this.host}/$this.options.keyMapUrl}`),await import(`$this.host}/$t}`);const i=this;window.CodeMirror.modeURL=this.getAttribute("mod-path"),window.CodeMirror.defineInitHook((e=>{const t=window.CodeMirror.findModeByName(e.options.mode||"")||window.CodeMirror.findModeByExtension(e.options.mode||"");window.CodeMirror.autoLoadMode(e,"object"==typeof t?t.mode:e.options.mode),t&&t.mime&&(["text/x-php","application/x-httpd-php","application/x-httpd-php-open"].includes(t.mime)?e.setOption("mode","php"):e.setOption("mode",t.mime));const o=()=>{i.instance.setOption("fullScreen",!i.instance.getOption("fullScreen"));const e=document.getElementById("subhead");if(e){document.getElementById("header").classList.toggle("hidden"),e.classList.toggle("hidden"),i.instance.display.wrapper.style.top=`$e.getBoundingClientRect().height}px`}},s={"Ctrl-Q":o,[i.getAttribute("fs-combo")]:o,Esc:()=>{if(i.instance.getOption("fullScreen"),i.instance.setOption("fullScreen",!1),!i.instance.getOption("fullScreen")){const e=document.getElementById("subhead");if(e){const t=document.getElementById("header");e.classList.toggle("hidden"),t.classList.toggle("hidden"),i.instance.display.wrapper.style.top=`$e.getBoundingClientRect().height}px`}}}};e.addKeyMap(s);e.on("gutterClick",((e,t,i)=>{if("CodeMirror-markergutter"!==i)return;const o=e.lineInfo(t),s=!!o.gutterMarkers&&!!o.gutterMarkers["CodeMirror-markergutter"];e.setGutterMarker(t,"CodeMirror-markergutter",s?null:(()=>{const e=document.createElement("div");return e.className="CodeMirror-markergutter-mark",e})())})),"fieldset"===i.parentNode.tagName.toLowerCase()&&(i.parentNode.style.minWidth=0)})),this.instance=window.CodeMirror.fromTextArea(this.element,this.options),this.instance.disable=e=>this.setOption("readOnly",!!e&&"nocursor"),Joomla.editors.instances[this.element.id]=this.instance,this.intersectionObserver.observe(this)}disconnectedCallback(){delete Joomla.editors.instances[this.element.id],this.intersectionObserver.unobserve(this)}refresh(e){this.instance.fromTextArea(e,this.options)}}customElements.define("joomla-editor-codemirror",CodemirrorEditor);


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer