Files
conservatorio-tomadini/media/plg_system_acf/js/field_previewer.js
2024-12-31 11:07:09 +01:00

3 lines
9.4 KiB
JavaScript

var ACF_Field_Previewer=function(){function e(e){this.field=e,this.field_name="acf"+e.replace(/\s+/g,"").toLowerCase(),this.wrapper=".acf-field-previewer",this.ACFFieldsPreviewerData=window.ACFFieldsPreviewerData||{},this.JoomlaOptions=null,this.root_url=this.getOption("root_url"),this.base_url=this.root_url.replace("/administrator",""),this.app_ajax_url="?option=com_ajax&format=raw&plugin=acf&task=FieldsPreviewer",this.preview_ajax_url="?option=com_ajax&format=raw&plugin=acf&task=FieldsPreviewerHTML",this.run()}var t=e.prototype;return t.run=function(){if(window.MutationObserver){var e=document.querySelector('select[id="jform_type"]');if(e)if(e.value!==this.field_name){var t=this,i=new MutationObserver(function(e){if(e)for(m in e)e[m].target.value.startsWith(t.field_name)&&(t.previewerInit(),i.disconnect())});i.observe(e,{childList:!0,subtree:!0,attributes:!0})}else this.previewerInit()}},t.previewerInit=function(){var e=this;this.addPreviewerToPage(),this.isPreviewerVisible()&&this.updatePreviewer(),setTimeout(function(){e.togglePreviewerByTab()},100),this.initEvents()},t.initEvents=function(){function t(e,t,i){r||(r=!0,setTimeout(function(){e(i),r=!1},t))}var r=!1;document.addEventListener("click",function(e){this.toggleFullscreen(e),this.toggleOpenClose(e),this.selectResponsiveControl(e),this.J3togglePreviewerOnTab(e),this.J4togglePreviewerOnTab(e)}.bind(this)),document.addEventListener("blur",function(e){t(this.updatePreviewer.bind(this),150,e)}.bind(this)),jQuery(document).on("blur","input.minicolors",function(e){t(this.updatePreviewer.bind(this),150,e)}.bind(this)),jQuery(document).on("change",".tfHasChosen",function(e){t(this.updatePreviewer.bind(this),150,e)}.bind(this)),document.addEventListener("change",function(e){t(this.updatePreviewer.bind(this),150,e)}.bind(this))},t.J3togglePreviewerOnTab=function(e){var t=e.target.closest(".nav.nav-tabs");t&&t.parentElement.classList.contains("form-horizontal")&&e.target.closest("a")&&this.togglePreviewerByTab()},t.J4togglePreviewerOnTab=function(e){e.target.closest("joomla-tab")&&e.target.closest('button[type="button"]')&&this.togglePreviewerByTab()},t.togglePreviewerByTab=function(){this.isJ3GeneralTab()||this.isJ4GeneralTab()?this.showPreviewer():this.hidePreviewer(!0)},t.isJ3GeneralTab=function(){var e=document.querySelector("form > .form-horizontal > .nav.nav-tabs > li.active > a");if(e)return"#general"===e.getAttribute("href")},t.isJ4GeneralTab=function(){var e=document.querySelector('form joomla-tab button[aria-expanded="true"]');if(e)return"general"===e.getAttribute("aria-controls")},t.toggleFullscreen=function(e){var t=e.target.closest(".acf-field-previewer-fullscreen-toggle");if(t){document.body.classList.toggle("acf-field-previewer-open");var i=this.getPreviewer(t);i.classList.toggle("fullscreen"),i.classList.contains("fullscreen")||(i.querySelector(".body iframe").height=""),this.updatePreviewer(e)}},t.toggleOpenClose=function(e){var t=e.target.closest(".acf-field-previewer-show-hide-btn");if(t){e.preventDefault();var i=this.getPreviewer(t);document.body.classList.remove("acf-field-previewer-open"),i.classList.remove("fullscreen");var r=!i.classList.contains("is-hidden");i.querySelector(".body iframe").height="",localStorage.setItem("acf-field-previewer-hidden",r),r?this.hidePreviewer():this.showPreviewer()}},t.isPreviewerVisible=function(){return!this.getPreviewer().classList.contains("is-hidden")},t.showPreviewer=function(){var e=this.getPreviewer(),t=localStorage.getItem("acf-field-previewer-hidden");e.classList.contains("is-hidden")&&("true"!==t&&e.classList.remove("is-hidden"),e.classList.remove("is-hidden-full"),this.updatePreviewer())},t.hidePreviewer=function(e){void 0===e&&(e=!1);var t=this.getPreviewer();e&&t.classList.add("is-hidden-full"),t.classList.contains("is-hidden")||t.classList.add("is-hidden")},t.selectResponsiveControl=function(e){var t=e.target.closest(".acf-field-preview-responsive-device");t&&this.getPreviewer(t).setAttribute("data-device",t.dataset.device)},t.addPreviewerToPage=function(){var e=document.createElement("div"),t=this.wrapper.substring(1),i=localStorage.getItem("acf-field-previewer-hidden");(this.ACFFieldsPreviewerData.hidden&&!i||"true"===i)&&(t+=" is-hidden"),this.ACFFieldsPreviewerData.width&&(e.style.minWidth=this.ACFFieldsPreviewerData.width+"px"),this.ACFFieldsPreviewerData.height&&(e.style.minHeight=this.ACFFieldsPreviewerData.height+"px"),e.className=t,e.dataset.device="desktop";var r=document.createElement("div");r.className="title";var s=document.createElement("div");s.className="left";var n='<div class="info-icon" title="'+window.parent.Joomla.Text._("ACF_FIELD_PREVIEWER_INFO_ICON_TITLE")+'"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="8" cy="8" r="7" stroke="currentColor"/><rect x="7" y="7" width="2" height="5" fill="currentColor"/><rect x="7" y="4" width="2" height="2" fill="currentColor"/></svg></div>';if(s.innerHTML=n,s.innerHTML+=window.parent.Joomla.Text._("ACF_FIELD_PREVIEWER"),s.innerHTML+='<div class="acf-field-previewer-loading-indicator"></div>',r.appendChild(s),this.ACFFieldsPreviewerData.responsiveControls){var o=document.createElement("div");o.className="acf-responsive-controls",o.innerHTML+='<svg class="acf-field-preview-responsive-device" data-device="desktop" width="35" height="24" viewBox="0 0 35 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="33" height="19" rx="2" stroke="currentColor" stroke-width="2"/><path d="M16 21.5V21C16 20.4477 16.4477 20 17 20H19C19.5523 20 20 20.4477 20 21V21.5C20 22.0523 20.4477 22.5 21 22.5H23.25C23.6642 22.5 24 22.8358 24 23.25C24 23.6642 23.6642 24 23.25 24H12.75C12.3358 24 12 23.6642 12 23.25C12 22.8358 12.3358 22.5 12.75 22.5H15C15.5523 22.5 16 22.0523 16 21.5Z" fill="currentColor"/></svg>',o.innerHTML+='<svg class="acf-field-preview-responsive-device" data-device="tablet" width="19" height="24" viewBox="0 0 19 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="17" height="22" rx="2" stroke="currentColor" stroke-width="2"/><circle cx="9.5" cy="19.5" r="1.5" fill="currentColor"/></svg>',o.innerHTML+='<svg class="acf-field-preview-responsive-device" data-device="mobile" width="15" height="24" viewBox="0 0 15 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="1" width="13" height="22" rx="2" stroke="currentColor" stroke-width="2"/><line x1="5" y1="2" x2="10" y2="2" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',r.appendChild(o)}var a=document.createElement("div");a.className="actions",this.ACFFieldsPreviewerData.fullscreenActions&&(a.innerHTML='<div class="fullscreen-actions"><svg class="acf-field-previewer-fullscreen-toggle" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 2H14V7" stroke="currentColor" stroke-width="1"/><path d="M7 14L2 14L2 9" stroke="currentColor" stroke-width="1"/></svg><svg class="acf-field-previewer-fullscreen-toggle fullsceen" width="16" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14 5L9 5L9 3.97232e-08" stroke="currentColor" stroke-width="1"/><path d="M0 9H5L5 14" stroke="currentColor" stroke-width="1"/></svg></div>'),a.innerHTML+='<a href="#" class="acf-field-previewer-show-hide-btn"></a>',r.appendChild(a),e.appendChild(r);var l=document.createElement("div");l.className="body";var c=document.createElement("iframe");c.src=this.getIFrameURL(),l.appendChild(c),e.appendChild(l),document.body.appendChild(e)},t.getIFrameURL=function(){return this.root_url+this.preview_ajax_url+"&field="+this.field_name+"&"+this.getJoomlaOption("csrf.token")+"=1"},t.updatePreviewer=function(e){if(!(e&&e.target&&e.target.name&&-1===e.target.name.indexOf("jform[fieldparams]"))){var t=this.getPreviewer();if(!t.classList.contains("is-hidden")){var i=new FormData(document.querySelector('form[name="adminForm"]'));(i=Object.fromEntries(i)).fullscreen=this.ACFFieldsPreviewerData.fullscreenActions&&t.classList.contains("fullscreen");var r=this,s=this.root_url+this.app_ajax_url+"&field="+this.field+"&"+this.getJoomlaOption("csrf.token")+"=1";this.showLoadingIndicator();var n=this.getIFrame();n.classList.add("refreshing"),n.height="",fetch(s,{method:"post",body:JSON.stringify(i)}).then(function(e){return e.json()}).then(function(e){e.error?alert(e.message):r.updatePreviewerContents(function(){r.hideLoadingIndicator()})}).catch(function(e){alert(e)})}}},t.showLoadingIndicator=function(){document.querySelector(".acf-field-previewer-loading-indicator").classList.add("is-visible")},t.hideLoadingIndicator=function(){document.querySelector(".acf-field-previewer-loading-indicator").classList.remove("is-visible")},t.updatePreviewerContents=function(e){void 0===e&&(e=null);var t=this.getIFrame();t.src=this.getIFrameURL(),t.height="",t.onload=function(){t.classList.remove("refreshing"),t.height=t.contentWindow.document.body.scrollHeight+"px","function"==typeof e&&e()}},t.getIFrame=function(){return document.querySelector(".acf-field-previewer iframe")},t.getJoomlaOption=function(e,t){if(!this.JoomlaOptions){var i=document.querySelector(".joomla-script-options");if(!i)return;this.JoomlaOptions=JSON.parse(i.text||i.textContent)}return void 0!==this.JoomlaOptions[e]?this.JoomlaOptions[e]:t},t.getOption=function(e,t){t=void 0===t?"":t;var i=this.getJoomlaOption("acf_js_object");return i&&void 0!==i[e]?i[e]:t},t.getPreviewer=function(e){return void 0===e&&(e=""),e?e.closest(this.wrapper):document.querySelector(this.wrapper)},e}();