JezK
Edit File: resize-detection.min.js
!function(a,r){let n;const s=r.createElement("div");s.id="ewww-scaling-error",a.onload=function(){n=Date.now(),S(),r.body.append(s);const e=r.getElementById("wp-admin-bar-image-detective-check");e&&(e.onclick=function(){return e.classList.toggle("ewww-fade"),D(),setTimeout(function(){S(),e.classList.toggle("ewww-fade")},500),!1});const t=r.getElementById("wp-admin-bar-image-detective-clear");t&&(t.onclick=function(){return t.classList.toggle("ewww-fade"),g=!1,I(),D(),setTimeout(function(){t.classList.toggle("ewww-fade")},500),!1}),p()};const l=[],c=r.createElement("div"),o=r.createElement("div");let d=!(o.id="ewww-lazy-exclude-menu"),u=!1,w=!1,g=!0;function m(e,t){const n=r.createElement("li");return t?(n.innerHTML=imageDetectiveVars.menuItemGlobalText,n.dataset.globalExclusion=1):(n.innerHTML=imageDetectiveVars.menuItemPageText,n.dataset.globalExclusion=0),n.dataset.ewwwLazyExcludeValue=e,n.querySelector("span.ewww-lazy-exclude-item-name").innerText=e,n.addEventListener("click",y),n}const p=function(){!z()&&Date.now()-n<5e3?setTimeout(p,100):e()},e=function(){c.id="ewww-lcp-tag",c.innerText="LCP";const e=new PerformanceObserver(e=>{e=e.getEntries();0<l.length?I():(r.body.append(c),r.body.append(o)),w=e[e.length-1],h(w.element),l.push(w)});e.observe({type:"largest-contentful-paint",buffered:!0}),setTimeout(function(){e.disconnect()},6e4);for(const t of["keydown","click"])addEventListener(t,function(){g=!1})},h=function(e){g&&(v(e,c),e.classList.add("ewww-lcp-element"),imageDetectiveVars.llActive&&"img"===e.tagName.toLowerCase()&&(k(e,"lazyload")||k(e,"lazyloaded"))&&e.addEventListener("mouseover",E))},v=function(e,t){var n=e.getBoundingClientRect();t.style.top=n.top+a.scrollY+"px",t.style.left=n.left+a.scrollX+"px",t.style.zIndex=e.style.zIndex+999,t.style.maxWidth=n.width-60+"px"},f=function(e){if(k(o,"ewww-error"))r.removeEventListener("mouseup",f);else{const t=r.querySelector(".ewww-lcp-element");t.contains(e.target)||o.contains(e.target)||"ewww-lcp-tag"===e.target.id||(o.style.display="none",d=!1,t.addEventListener("mouseover",E),r.removeEventListener("mouseup",f))}},y=async function(){this.removeEventListener("click",y);var e=this.dataset.ewwwLazyExcludeValue;const t=new FormData;t.append("action","ewww_add_lazy_exclusion"),t.append("ewww_wpnonce",imageDetectiveVars.nonce),t.append("global",this.dataset.globalExclusion),t.append("exclusion",e),t.append("post_id",imageDetectiveVars.postId),t.append("request_uri",imageDetectiveVars.requestUri);try{const i=await fetch(imageDetectiveVars.ajaxUrl,{method:"POST",body:t});if(!i.ok)return o.innerHTML=imageDetectiveVars.invalid_response,o.classList.add("ewww-error"),void a.console.log("Attempt to add Lazy Load Exclusion resulted in an HTTP error with code "+i.status);var n=await i.json();n.success&&n.message?(o.innerHTML=n.message,o.classList.add("ewww-success")):n.data?(o.innerHTML=n.data,o.classList.add("ewww-error")):(o.innerHTML=imageDetectiveVars.invalid_response,o.classList.add("ewww-error"),a.console.log("Attempt to add Lazy Load Exclusion encountered an invalid response:",n))}catch(e){o.innerHTML=imageDetectiveVars.invalid_response,o.classList.add("ewww-error"),a.console.log("Attempt to add Lazy Load Exclusion resulted in an error:",e)}u=!1},L=async function(){event.preventDefault(),this.removeEventListener("click",L),T.removeEventListener("mouseover",b);var e=this.dataset.imagePath;const t=new FormData;t.append("action","ewww_add_ignore_scaling_rule"),t.append("ewww_wpnonce",imageDetectiveVars.nonce),t.append("ignore",e),t.append("post_id",imageDetectiveVars.postId),t.append("request_uri",imageDetectiveVars.requestUri);try{const i=await fetch(imageDetectiveVars.ajaxUrl,{method:"POST",body:t});if(!i.ok)return s.innerHTML=imageDetectiveVars.invalid_response,s.classList.add("ewww-error"),a.console.log("Attempt to add Scaling Ignore Rule resulted in an HTTP error with code "+i.status),!1;var n=await i.json();n.success&&n.message?(T.classList.remove("ewww-improperly-scaled"),s.innerHTML=n.message,s.classList.add("ewww-success"),imageDetectiveVars.scalingExclusions.push(e)):n.data?(s.innerHTML=n.data,s.classList.add("ewww-error")):(s.innerHTML=imageDetectiveVars.invalid_response,s.classList.add("ewww-error"),a.console.log("Attempt to add Scaling Ignore Rule encountered an invalid response:",n))}catch(e){s.innerHTML=imageDetectiveVars.invalid_response,s.classList.add("ewww-error"),a.console.log("Attempt to add Scaling Ignore Rule resulted in an error:",e)}return!1},x=function(e){if("string"==typeof e.src&&-1===e.src.search(/data:image/))try{var t=new URL(e.src);if(0<t.pathname.length)return t.pathname}catch(e){}return""},E=function(){if(this.removeEventListener("mouseover",E),!k(o,"ewww-error")){k(o,"ewww-success")&&(o.classList.remove("ewww-success"),o.innerHTML=""),d=!0;const i=[];let n=o.querySelector("ul");if(null===n){var e=x(this);if(e&&(i.push(m(e,!0)),i.push(m(e,!1))),0<this.classList.length){const t=["ewww-lcp-element","lazyload","lazyloaded","lazyloading","lazyautosizes","ls-is-cached","ewww-improperly-scaled"];this.classList.forEach(function(e){t.includes(e)||i.push(m(e,!0))})}0<this.id.length&&i.push(m(this.id,!0))}if(0<i.length){const s=r.createElement("div");s.id="ewww-lazy-exclude-menu-label",s.innerText=imageDetectiveVars.excludeMenuText,s.onclick=function(){u?(u=!1,o.querySelector("ul").style.display="none"):(u=!0,o.querySelector("ul").style.display="block")},o.append(s),n=r.createElement("ul");for(let e=0,t=i.length;e<t;e++)n.append(i[e]);o.append(n)}k(this,"ewww-improperly-scaled")?(o.style.marginTop="110px",o.dataset.badScale=1):o.dataset.badScale=0,v(this,o),"none"===o.style.display&&(o.style.display="flex"),r.addEventListener("mouseup",f)}};let T={};function H(e){e.classList.remove("ewww-improperly-scaled"),delete e.dataset.ewwwScalingError,e.removeEventListener("mouseover",b)}const b=function(){if(T=this,s.classList.remove("ewww-error"),s.classList.remove("ewww-success"),s.innerHTML=imageDetectiveVars.scalingErrorText,s.querySelector("span.ewww-scaling-error-natural-width").innerText=(this.srcsetImg&&0<this.srcsetImg.naturalWidth?this.srcsetImg:this).naturalWidth,s.querySelector("span.ewww-scaling-error-natural-height").innerText=(this.srcsetImg&&0<this.srcsetImg.naturalHeight?this.srcsetImg:this).naturalHeight,s.querySelector("span.ewww-scaling-error-container-width").innerText=this.clientWidth,s.querySelector("span.ewww-scaling-error-container-height").innerText=this.clientHeight,k(this,"ewww-lcp-element"))s.style.marginTop="60px";else{s.style.removeProperty("margin-top");var t=x(this);if(t){let e=r.createElement("a");e.classList.add("ewww-ignore-scaling-error"),e.href="#",e.innerText=imageDetectiveVars.ignoreErrorText,e.addEventListener("click",L),e.dataset.imagePath=t,s.append(" ",e)}}v(this,s)},D=function(){var n=r.querySelectorAll("img.ewww-improperly-scaled");for(let e=0,t=n.length;e<t;e++)H(n[e]);s.innerText="",s.style.top="-1000px",s.style.left="-1000px"},I=function(){for(let e=0,t=l.length;e<t;e++)l[e].element.classList.remove("ewww-lcp-element"),l[e].element.removeEventListener("mouseover",E);c.style.top="-1000px",c.style.left="-1000px"},S=function(){var e=r.getElementsByTagName("img");for(i=0;i<e.length;i++)H(e[i]),P(e[i]);return w&&(g=!0,h(w.element)),!1},t=[];let V;const z=function(){for(!function(){if(!(0<t.length)){var e=r.getElementsByTagName("img");for(i=0;i<e.length;i++)W(e[i])&&t.push(e[i])}}(),i=0;i<t.length;i++)if(!_(t[i]))return!1;return!0},_=function(e){return!!e.complete&&(0!==e.naturalWidth&&!k(e,"lazyload"))},W=function(e){var t=e.getBoundingClientRect(),n=a.innerWidth||r.documentElement.clientWidth,i=a.innerHeight||r.documentElement.clientHeight;return!!((t.bottom||t.right||t.left||t.top)&&(0<=t.top&&t.top<=i||0<=t.bottom&&t.bottom<=i)&&(0<=t.left&&t.left<=n||0<=t.right&&t.right<=n)&&function(e){if(V==null)V=M(r.body,"visibility")=="hidden";return V||!(M(e.parentNode,"visibility")=="hidden"&&M(e,"visibility")=="hidden")}(e))},M=function(e,t){return(getComputedStyle(e,null)||{})[t]},q={},k=function(e,t){return q[t]||(q[t]=new RegExp("(\\s|^)"+t+"(\\s|$)")),q[t].test(e.getAttribute("class")||"")&&q[t]},P=function(e){var t;e.src&&("string"==typeof e.src&&-1<e.src.search(/\.svg/)||"string"==typeof e.src&&-1<e.src.search(/data:image/)||(t=x(e),imageDetectiveVars.scalingExclusions.includes(t)||(e.complete&&0<e.naturalWidth?25<e.naturalWidth&&25<e.naturalHeight&&25<e.clientWidth&&25<e.clientHeight&&(e.srcset&&e.currentSrc&&e.srcsetImg&&e.srcsetImg.src==e.currentSrc?A(e,e.srcsetImg.naturalWidth,e.srcsetImg.naturalHeight):e.srcset&&e.currentSrc&&"string"==typeof e.currentSrc?(e.srcsetImg=new Image,e.srcsetImg.onload=function(){A(e,e.srcsetImg.naturalWidth,e.srcsetImg.naturalHeight)},e.srcsetImg.src=e.currentSrc):A(e,e.naturalWidth,e.naturalHeight)):e.onload=function(){P(this)})))},A=function(e,t,n){var i=a.devicePixelRatio||1,s=1.25*e.clientWidth*i<t||768<e.clientWidth&&e.clientWidth*i+100<t,r=1.25*e.clientHeight*i<n||768<e.clientHeight&&e.clientHeight*i+100<n,t=t-e.clientWidth*i,i=n-e.clientHeight*i;(s&&25<i||r&&25<t)&&(e.classList.add("ewww-improperly-scaled"),e.addEventListener("mouseover",b))};r.addEventListener("lazyloaded",function(e){H(e.target),P(e.target)})}(window,document);