diff --git a/assets/js/lcp-beacon.js b/assets/js/lcp-beacon.js index ca8d599379..a42acceaa6 100644 --- a/assets/js/lcp-beacon.js +++ b/assets/js/lcp-beacon.js @@ -39,26 +39,44 @@ class RocketLcpBeacon { return false; } - if ( this._isGeneratedBefore() ) { - this._logMessage('Bailing out because data is already available'); - return false; + if ( this._isPageCached() ) { + if ( this._isGeneratedBefore() ) { + this._logMessage('Bailing out because data is already available'); + return false; + } } return true; } - _isGeneratedBefore() { + _isPageCached() { + let signature = ''; + let status = false; + if (document.documentElement.nextSibling) { + signature = document.documentElement.nextSibling.data; + } + if ( signature && signature.includes( 'Debug: cached' ) ) { + return true; + } + return false; + } + + async _isGeneratedBefore() { // AJAX call to check if there are any records for the current URL. + let lcp_data_response; let data_check = new FormData(); data_check.append('action', 'rocket_check_lcp'); data_check.append('rocket_lcp_nonce', this.config.nonce); data_check.append('url', this.config.url); data_check.append('is_mobile', this.config.is_mobile); - const lcp_data_response = fetch(this.config.ajax_url, { + await fetch(this.config.ajax_url, { method: "POST", credentials: 'same-origin', body: data_check + }) + .then(data => { + lcp_data_response = data }); return lcp_data_response.success; @@ -310,9 +328,9 @@ class RocketLcpBeacon { } _logMessage( msg ) { - if ( ! this.config.debug ) { - return; - } + // if ( ! this.config.debug ) { + // return; + // } console.log( msg ); } diff --git a/assets/js/lcp-beacon.js.min.map b/assets/js/lcp-beacon.js.min.map index 84ede21c65..5b50978c2a 100644 --- a/assets/js/lcp-beacon.js.min.map +++ b/assets/js/lcp-beacon.js.min.map @@ -1,2 +1 @@ -{"version":3,"names":[],"mappings":"","sources":["lcp-beacon.js"],"sourcesContent":["!function r(n,s,o){function c(t,e){if(!s[t]){if(!n[t]){var i=\"function\"==typeof require&&require;if(!e&&i)return i(t,!0);if(a)return a(t,!0);throw(e=new Error(\"Cannot find module '\"+t+\"'\")).code=\"MODULE_NOT_FOUND\",e}i=s[t]={exports:{}},n[t][0].call(i.exports,function(e){return c(n[t][1][e]||e)},i,i.exports,r,n,s,o)}return s[t].exports}for(var a=\"function\"==typeof require&&require,e=0;e<o.length;e++)c(o[e]);return c}({1:[function(e,t,i){\"use strict\";(class r{constructor(e){this.config=e,this.performanceImages=[],this.errorCode=\"\",this.scriptTimer=new Date,this.infiniteLoopId=null}init(){if(this._isValidPreconditions()){this.infiniteLoopId=setTimeout(()=>{this._handleInfiniteLoop()},1e4);try{var e=this._generateLcpCandidates(1/0);e&&(this._initWithFirstElementWithInfo(e),this._fillATFWithoutDuplications(e))}catch(e){this.errorCode=\"script_error\",this._logMessage(\"Script Error: \"+e)}this._saveFinalResultIntoDB()}else this._finalize()}_isValidPreconditions(){return this._isNotValidScreensize()?(this._logMessage(\"Bailing out because screen size is not acceptable\"),!1):!this._isGeneratedBefore()||(this._logMessage(\"Bailing out because data is already available\"),!1)}_isGeneratedBefore(){var e=new FormData;return e.append(\"action\",\"rocket_check_lcp\"),e.append(\"rocket_lcp_nonce\",this.config.nonce),e.append(\"url\",this.config.url),e.append(\"is_mobile\",this.config.is_mobile),(e=fetch(this.config.ajax_url,{method:\"POST\",credentials:\"same-origin\",body:e})).success}_isNotValidScreensize(){var e=window.innerWidth||document.documentElement.clientWidth,t=window.innerHeight||document.documentElement.clientHeight,i=this.config.is_mobile&&(e>this.config.width_threshold||t>this.config.height_threshold),e=!this.config.is_mobile&&(e<this.config.width_threshold||t<this.config.height_threshold);return i||e}_generateLcpCandidates(e){var t=document.querySelectorAll(this.config.elements);return t.length<=0?[]:Array.from(t).map(e=>{var t=e.getBoundingClientRect();return{element:e,rect:t}}).filter(e=>0<e.rect.width&&0<e.rect.height&&this._isIntersecting(e.rect)).map(e=>({item:e,area:this._getElementArea(e.rect),elementInfo:this._getElementInfo(e.element)})).sort((e,t)=>t.area-e.area).slice(0,e).map(e=>({element:e.item.element,elementInfo:e.elementInfo}))}_isIntersecting(e){return 0<=e.bottom&&0<=e.right&&e.top<=(window.innerHeight||document.documentElement.clientHeight)&&e.left<=(window.innerWidth||document.documentElement.clientWidth)}_getElementArea(e){return Math.min(e.width,(window.innerWidth||document.documentElement.clientWidth)-e.left)*Math.min(e.height,(window.innerHeight||document.documentElement.clientHeight)-e.top)}_getElementInfo(e){var t=e.nodeName.toLowerCase(),i={type:\"\",src:\"\",srcset:\"\",sizes:\"\",sources:[],bg_set:[],current_src:\"\"};if(\"img\"===t&&e.srcset)i.type=\"img-srcset\",i.src=e.src,i.srcset=e.srcset,i.sizes=e.sizes,i.current_src=e.currentSrc;else if(\"img\"===t)i.type=\"img\",i.src=e.src,i.current_src=e.currentSrc;else if(\"video\"===t){i.type=\"img\";var r=e.querySelector(\"source\");i.src=e.poster||(r?r.src:\"\"),i.current_src=i.src}else if(\"svg\"===t)(r=e.querySelector(\"image\"))&&(i.type=\"img\",i.src=r.getAttribute(\"href\")||\"\",i.current_src=i.src);else if(\"picture\"===t)i.type=\"picture\",r=e.querySelector(\"img:not(picture>img)\"),i.src=r?r.src:\"\",i.sources=Array.from(e.querySelectorAll(\"source\")).map(e=>({srcset:e.srcset||\"\",media:e.media||\"\"}));else{if(t=[window.getComputedStyle(e,null).getPropertyValue(\"background-image\"),getComputedStyle(e,\":after\").getPropertyValue(\"background-image\"),getComputedStyle(e,\":before\").getPropertyValue(\"background-image\")].filter(e=>\"none\"!==e).join(\"\"),i.type=\"bg-img\",t.includes(\"image-set(\")&&(i.type=\"bg-img-set\"),!t||\"\"===t)return null;r=[...t.matchAll(/url\\(\\s*?['\"]?\\s*?(\\S+?)\\s*?[\"']?\\s*?\\)\\s*?([a-zA-Z0-9\\s]*[x|dpcm|dpi|dppx]?)/gi)],i.bg_set=r.map(e=>e[1]?{src:e[1].trim()+(e[2]?\" \"+e[2].trim():\"\")}:{}),i.bg_set.every(e=>\"\"===e.src)&&(i.bg_set=r.map(e=>e[1]?{src:e[1].trim()}:{})),0<i.bg_set.length&&(i.src=i.bg_set[0].src,\"bg-img-set\"===i.type)&&(i.src=i.bg_set)}return i}_initWithFirstElementWithInfo(e){(e=e.find(e=>null!==e.elementInfo))?this.performanceImages=[{...e.elementInfo,label:\"lcp\"}]:(this._logMessage(\"No LCP candidate found.\"),this.performanceImages=[])}_fillATFWithoutDuplications(e){e.forEach(e=>{var{element:e,elementInfo:t}=e;this._isDuplicateImage(e)||this.performanceImages.push({...t,label:\"above-the-fold\"})})}_isDuplicateImage(e){const t=this._getElementInfo(e);var i;return null!==t&&(e=\"img\"===t.type||\"img-srcset\"===t.type||\"video\"===t.type,i=\"bg-img\"===t.type||\"bg-img-set\"===t.type||\"picture\"===t.type,e||i)&&this.performanceImages.some(e=>e.src===t.src)}_getFinalStatus(){return\"\"!==this.errorCode?this.errorCode:10<=(new Date-this.scriptTimer)/1e3?\"timeout\":\"success\"}_saveFinalResultIntoDB(){var e=new FormData;e.append(\"action\",\"rocket_lcp\"),e.append(\"rocket_lcp_nonce\",this.config.nonce),e.append(\"url\",this.config.url),e.append(\"is_mobile\",this.config.is_mobile),e.append(\"images\",JSON.stringify(this.performanceImages)),e.append(\"status\",this._getFinalStatus()),fetch(this.config.ajax_url,{method:\"POST\",credentials:\"same-origin\",body:e,headers:{\"wpr-saas-no-intercept\":!0}}).then(e=>e.json()).then(e=>{this._logMessage(e)}).catch(e=>{this._logMessage(e)}).finally(()=>{this._finalize()})}_handleInfiniteLoop(){this._saveFinalResultIntoDB()}_finalize(){document.querySelector('[data-name=\"wpr-lcp-beacon\"]').setAttribute(\"beacon-completed\",\"true\"),clearTimeout(this.infiniteLoopId)}_logMessage(e){this.config.debug&&console.log(e)}static run(){if(window.rocket_lcp_data){const e=new r(window.rocket_lcp_data);\"loading\"!==document.readyState?setTimeout(()=>{e.init()},500):document.addEventListener(\"DOMContentLoaded\",()=>{setTimeout(()=>{e.init()},500)})}}}).run()},{}]},{},[1]);"],"file":"lcp-beacon.js"} - +{"version":3,"names":[],"mappings":"","sources":["lcp-beacon.js"],"sourcesContent":["!function n(r,s,o){function c(t,e){if(!s[t]){if(!r[t]){var i=\"function\"==typeof require&&require;if(!e&&i)return i(t,!0);if(a)return a(t,!0);throw(i=new Error(\"Cannot find module '\"+t+\"'\")).code=\"MODULE_NOT_FOUND\",i}i=s[t]={exports:{}},r[t][0].call(i.exports,function(e){return c(r[t][1][e]||e)},i,i.exports,n,r,s,o)}return s[t].exports}for(var a=\"function\"==typeof require&&require,e=0;e<o.length;e++)c(o[e]);return c}({1:[function(e,t,i){\"use strict\";(class n{constructor(e){this.config=e,this.performanceImages=[],this.errorCode=\"\",this.scriptTimer=new Date,this.infiniteLoopId=null}init(){if(this._isValidPreconditions()){this.infiniteLoopId=setTimeout(()=>{this._handleInfiniteLoop()},1e4);try{var e=this._generateLcpCandidates(1/0);e&&(this._initWithFirstElementWithInfo(e),this._fillATFWithoutDuplications(e))}catch(e){this.errorCode=\"script_error\",this._logMessage(\"Script Error: \"+e)}this._saveFinalResultIntoDB()}else this._finalize()}_isValidPreconditions(){return this._isNotValidScreensize()?(this._logMessage(\"Bailing out because screen size is not acceptable\"),!1):!this._isPageCached()||!this._isGeneratedBefore()||(this._logMessage(\"Bailing out because data is already available\"),!1)}_isPageCached(){let e=\"\";return document.documentElement.nextSibling&&(e=document.documentElement.nextSibling.data),!(!e||!e.includes(\"Debug: cached\"))}async _isGeneratedBefore(){let t,e=new FormData;return e.append(\"action\",\"rocket_check_lcp\"),e.append(\"rocket_lcp_nonce\",this.config.nonce),e.append(\"url\",this.config.url),e.append(\"is_mobile\",this.config.is_mobile),await fetch(this.config.ajax_url,{method:\"POST\",credentials:\"same-origin\",body:e}).then(e=>{t=e}),t.success}_isNotValidScreensize(){var e=window.innerWidth||document.documentElement.clientWidth,t=window.innerHeight||document.documentElement.clientHeight,i=this.config.is_mobile&&(e>this.config.width_threshold||t>this.config.height_threshold),t=!this.config.is_mobile&&(e<this.config.width_threshold||t<this.config.height_threshold);return i||t}_generateLcpCandidates(e){var t=document.querySelectorAll(this.config.elements);if(t.length<=0)return[];const i=Array.from(t),n=i.map(e=>{var t=e.getBoundingClientRect();return{element:e,rect:t}}).filter(e=>0<e.rect.width&&0<e.rect.height&&this._isIntersecting(e.rect)).map(e=>({item:e,area:this._getElementArea(e.rect),elementInfo:this._getElementInfo(e.element)})).sort((e,t)=>t.area-e.area).slice(0,e);return n.map(e=>({element:e.item.element,elementInfo:e.elementInfo}))}_isIntersecting(e){return 0<=e.bottom&&0<=e.right&&e.top<=(window.innerHeight||document.documentElement.clientHeight)&&e.left<=(window.innerWidth||document.documentElement.clientWidth)}_getElementArea(e){return Math.min(e.width,(window.innerWidth||document.documentElement.clientWidth)-e.left)*Math.min(e.height,(window.innerHeight||document.documentElement.clientHeight)-e.top)}_getElementInfo(e){var t=e.nodeName.toLowerCase();const i={type:\"\",src:\"\",srcset:\"\",sizes:\"\",sources:[],bg_set:[],current_src:\"\"};if(\"img\"===t&&e.srcset)i.type=\"img-srcset\",i.src=e.src,i.srcset=e.srcset,i.sizes=e.sizes,i.current_src=e.currentSrc;else if(\"img\"===t)i.type=\"img\",i.src=e.src,i.current_src=e.currentSrc;else if(\"video\"===t){i.type=\"img\";var n=e.querySelector(\"source\");i.src=e.poster||(n?n.src:\"\"),i.current_src=i.src}else if(\"svg\"===t){const r=e.querySelector(\"image\");r&&(i.type=\"img\",i.src=r.getAttribute(\"href\")||\"\",i.current_src=i.src)}else if(\"picture\"===t)i.type=\"picture\",t=e.querySelector(\"img:not(picture>img)\"),i.src=t?t.src:\"\",i.sources=Array.from(e.querySelectorAll(\"source\")).map(e=>({srcset:e.srcset||\"\",media:e.media||\"\"}));else{const s=window.getComputedStyle(e,null),o=[s.getPropertyValue(\"background-image\"),getComputedStyle(e,\":after\").getPropertyValue(\"background-image\"),getComputedStyle(e,\":before\").getPropertyValue(\"background-image\")],c=o.filter(e=>\"none\"!==e).join(\"\");if(i.type=\"bg-img\",c.includes(\"image-set(\")&&(i.type=\"bg-img-set\"),!c||\"\"===c)return null;const a=[...c.matchAll(/url\\(\\s*?['\"]?\\s*?(\\S+?)\\s*?[\"']?\\s*?\\)\\s*?([a-zA-Z0-9\\s]*[x|dpcm|dpi|dppx]?)/gi)];i.bg_set=a.map(e=>e[1]?{src:e[1].trim()+(e[2]?\" \"+e[2].trim():\"\")}:{}),i.bg_set.every(e=>\"\"===e.src)&&(i.bg_set=a.map(e=>e[1]?{src:e[1].trim()}:{})),0<i.bg_set.length&&(i.src=i.bg_set[0].src,\"bg-img-set\"===i.type&&(i.src=i.bg_set))}return i}_initWithFirstElementWithInfo(e){if(!(e=e.find(e=>null!==e.elementInfo)))return this._logMessage(\"No LCP candidate found.\"),void(this.performanceImages=[]);this.performanceImages=[{...e.elementInfo,label:\"lcp\"}]}_fillATFWithoutDuplications(e){e.forEach(e=>{var{element:t,elementInfo:e}=e;this._isDuplicateImage(t)||this.performanceImages.push({...e,label:\"above-the-fold\"})})}_isDuplicateImage(e){const t=this._getElementInfo(e);if(null===t)return!1;var i=\"img\"===t.type||\"img-srcset\"===t.type||\"video\"===t.type,e=\"bg-img\"===t.type||\"bg-img-set\"===t.type||\"picture\"===t.type;return(i||e)&&this.performanceImages.some(e=>e.src===t.src)}_getFinalStatus(){return\"\"!==this.errorCode?this.errorCode:10<=(new Date-this.scriptTimer)/1e3?\"timeout\":\"success\"}_saveFinalResultIntoDB(){const e=new FormData;e.append(\"action\",\"rocket_lcp\"),e.append(\"rocket_lcp_nonce\",this.config.nonce),e.append(\"url\",this.config.url),e.append(\"is_mobile\",this.config.is_mobile),e.append(\"images\",JSON.stringify(this.performanceImages)),e.append(\"status\",this._getFinalStatus()),fetch(this.config.ajax_url,{method:\"POST\",credentials:\"same-origin\",body:e,headers:{\"wpr-saas-no-intercept\":!0}}).then(e=>e.json()).then(e=>{this._logMessage(e)}).catch(e=>{this._logMessage(e)}).finally(()=>{this._finalize()})}_handleInfiniteLoop(){this._saveFinalResultIntoDB()}_finalize(){const e=document.querySelector('[data-name=\"wpr-lcp-beacon\"]');e.setAttribute(\"beacon-completed\",\"true\"),clearTimeout(this.infiniteLoopId)}_logMessage(e){console.log(e)}static run(){if(window.rocket_lcp_data){const e=new n(window.rocket_lcp_data);\"loading\"===document.readyState?document.addEventListener(\"DOMContentLoaded\",()=>{setTimeout(()=>{e.init()},500)}):setTimeout(()=>{e.init()},500)}}}).run()},{}]},{},[1]);"],"file":"lcp-beacon.js"} \ No newline at end of file diff --git a/assets/js/lcp-beacon.min.js b/assets/js/lcp-beacon.min.js index 24119d9b91..6c07e7e822 100644 --- a/assets/js/lcp-beacon.min.js +++ b/assets/js/lcp-beacon.min.js @@ -1,2 +1,2 @@ -!function r(n,s,o){function c(t,e){if(!s[t]){if(!n[t]){var i="function"==typeof require&&require;if(!e&&i)return i(t,!0);if(a)return a(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}i=s[t]={exports:{}},n[t][0].call(i.exports,function(e){return c(n[t][1][e]||e)},i,i.exports,r,n,s,o)}return s[t].exports}for(var a="function"==typeof require&&require,e=0;e<o.length;e++)c(o[e]);return c}({1:[function(e,t,i){"use strict";(class r{constructor(e){this.config=e,this.performanceImages=[],this.errorCode="",this.scriptTimer=new Date,this.infiniteLoopId=null}init(){if(this._isValidPreconditions()){this.infiniteLoopId=setTimeout(()=>{this._handleInfiniteLoop()},1e4);try{var e=this._generateLcpCandidates(1/0);e&&(this._initWithFirstElementWithInfo(e),this._fillATFWithoutDuplications(e))}catch(e){this.errorCode="script_error",this._logMessage("Script Error: "+e)}this._saveFinalResultIntoDB()}else this._finalize()}_isValidPreconditions(){return this._isNotValidScreensize()?(this._logMessage("Bailing out because screen size is not acceptable"),!1):!this._isGeneratedBefore()||(this._logMessage("Bailing out because data is already available"),!1)}_isGeneratedBefore(){var e=new FormData;return e.append("action","rocket_check_lcp"),e.append("rocket_lcp_nonce",this.config.nonce),e.append("url",this.config.url),e.append("is_mobile",this.config.is_mobile),(e=fetch(this.config.ajax_url,{method:"POST",credentials:"same-origin",body:e})).success}_isNotValidScreensize(){var e=window.innerWidth||document.documentElement.clientWidth,t=window.innerHeight||document.documentElement.clientHeight,i=this.config.is_mobile&&(e>this.config.width_threshold||t>this.config.height_threshold),e=!this.config.is_mobile&&(e<this.config.width_threshold||t<this.config.height_threshold);return i||e}_generateLcpCandidates(e){var t=document.querySelectorAll(this.config.elements);return t.length<=0?[]:Array.from(t).map(e=>{var t=e.getBoundingClientRect();return{element:e,rect:t}}).filter(e=>0<e.rect.width&&0<e.rect.height&&this._isIntersecting(e.rect)).map(e=>({item:e,area:this._getElementArea(e.rect),elementInfo:this._getElementInfo(e.element)})).sort((e,t)=>t.area-e.area).slice(0,e).map(e=>({element:e.item.element,elementInfo:e.elementInfo}))}_isIntersecting(e){return 0<=e.bottom&&0<=e.right&&e.top<=(window.innerHeight||document.documentElement.clientHeight)&&e.left<=(window.innerWidth||document.documentElement.clientWidth)}_getElementArea(e){return Math.min(e.width,(window.innerWidth||document.documentElement.clientWidth)-e.left)*Math.min(e.height,(window.innerHeight||document.documentElement.clientHeight)-e.top)}_getElementInfo(e){var t=e.nodeName.toLowerCase(),i={type:"",src:"",srcset:"",sizes:"",sources:[],bg_set:[],current_src:""};if("img"===t&&e.srcset)i.type="img-srcset",i.src=e.src,i.srcset=e.srcset,i.sizes=e.sizes,i.current_src=e.currentSrc;else if("img"===t)i.type="img",i.src=e.src,i.current_src=e.currentSrc;else if("video"===t){i.type="img";var r=e.querySelector("source");i.src=e.poster||(r?r.src:""),i.current_src=i.src}else if("svg"===t)(r=e.querySelector("image"))&&(i.type="img",i.src=r.getAttribute("href")||"",i.current_src=i.src);else if("picture"===t)i.type="picture",r=e.querySelector("img:not(picture>img)"),i.src=r?r.src:"",i.sources=Array.from(e.querySelectorAll("source")).map(e=>({srcset:e.srcset||"",media:e.media||""}));else{if(t=[window.getComputedStyle(e,null).getPropertyValue("background-image"),getComputedStyle(e,":after").getPropertyValue("background-image"),getComputedStyle(e,":before").getPropertyValue("background-image")].filter(e=>"none"!==e).join(""),i.type="bg-img",t.includes("image-set(")&&(i.type="bg-img-set"),!t||""===t)return null;r=[...t.matchAll(/url\(\s*?['"]?\s*?(\S+?)\s*?["']?\s*?\)\s*?([a-zA-Z0-9\s]*[x|dpcm|dpi|dppx]?)/gi)],i.bg_set=r.map(e=>e[1]?{src:e[1].trim()+(e[2]?" "+e[2].trim():"")}:{}),i.bg_set.every(e=>""===e.src)&&(i.bg_set=r.map(e=>e[1]?{src:e[1].trim()}:{})),0<i.bg_set.length&&(i.src=i.bg_set[0].src,"bg-img-set"===i.type)&&(i.src=i.bg_set)}return i}_initWithFirstElementWithInfo(e){(e=e.find(e=>null!==e.elementInfo))?this.performanceImages=[{...e.elementInfo,label:"lcp"}]:(this._logMessage("No LCP candidate found."),this.performanceImages=[])}_fillATFWithoutDuplications(e){e.forEach(e=>{var{element:e,elementInfo:t}=e;this._isDuplicateImage(e)||this.performanceImages.push({...t,label:"above-the-fold"})})}_isDuplicateImage(e){const t=this._getElementInfo(e);var i;return null!==t&&(e="img"===t.type||"img-srcset"===t.type||"video"===t.type,i="bg-img"===t.type||"bg-img-set"===t.type||"picture"===t.type,e||i)&&this.performanceImages.some(e=>e.src===t.src)}_getFinalStatus(){return""!==this.errorCode?this.errorCode:10<=(new Date-this.scriptTimer)/1e3?"timeout":"success"}_saveFinalResultIntoDB(){var e=new FormData;e.append("action","rocket_lcp"),e.append("rocket_lcp_nonce",this.config.nonce),e.append("url",this.config.url),e.append("is_mobile",this.config.is_mobile),e.append("images",JSON.stringify(this.performanceImages)),e.append("status",this._getFinalStatus()),fetch(this.config.ajax_url,{method:"POST",credentials:"same-origin",body:e,headers:{"wpr-saas-no-intercept":!0}}).then(e=>e.json()).then(e=>{this._logMessage(e)}).catch(e=>{this._logMessage(e)}).finally(()=>{this._finalize()})}_handleInfiniteLoop(){this._saveFinalResultIntoDB()}_finalize(){document.querySelector('[data-name="wpr-lcp-beacon"]').setAttribute("beacon-completed","true"),clearTimeout(this.infiniteLoopId)}_logMessage(e){this.config.debug&&console.log(e)}static run(){if(window.rocket_lcp_data){const e=new r(window.rocket_lcp_data);"loading"!==document.readyState?setTimeout(()=>{e.init()},500):document.addEventListener("DOMContentLoaded",()=>{setTimeout(()=>{e.init()},500)})}}}).run()},{}]},{},[1]); +!function n(r,s,o){function c(t,e){if(!s[t]){if(!r[t]){var i="function"==typeof require&&require;if(!e&&i)return i(t,!0);if(a)return a(t,!0);throw(i=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",i}i=s[t]={exports:{}},r[t][0].call(i.exports,function(e){return c(r[t][1][e]||e)},i,i.exports,n,r,s,o)}return s[t].exports}for(var a="function"==typeof require&&require,e=0;e<o.length;e++)c(o[e]);return c}({1:[function(e,t,i){"use strict";(class n{constructor(e){this.config=e,this.performanceImages=[],this.errorCode="",this.scriptTimer=new Date,this.infiniteLoopId=null}init(){if(this._isValidPreconditions()){this.infiniteLoopId=setTimeout(()=>{this._handleInfiniteLoop()},1e4);try{var e=this._generateLcpCandidates(1/0);e&&(this._initWithFirstElementWithInfo(e),this._fillATFWithoutDuplications(e))}catch(e){this.errorCode="script_error",this._logMessage("Script Error: "+e)}this._saveFinalResultIntoDB()}else this._finalize()}_isValidPreconditions(){return this._isNotValidScreensize()?(this._logMessage("Bailing out because screen size is not acceptable"),!1):!this._isPageCached()||!this._isGeneratedBefore()||(this._logMessage("Bailing out because data is already available"),!1)}_isPageCached(){let e="";return document.documentElement.nextSibling&&(e=document.documentElement.nextSibling.data),!(!e||!e.includes("Debug: cached"))}async _isGeneratedBefore(){let t,e=new FormData;return e.append("action","rocket_check_lcp"),e.append("rocket_lcp_nonce",this.config.nonce),e.append("url",this.config.url),e.append("is_mobile",this.config.is_mobile),await fetch(this.config.ajax_url,{method:"POST",credentials:"same-origin",body:e}).then(e=>{t=e}),t.success}_isNotValidScreensize(){var e=window.innerWidth||document.documentElement.clientWidth,t=window.innerHeight||document.documentElement.clientHeight,i=this.config.is_mobile&&(e>this.config.width_threshold||t>this.config.height_threshold),t=!this.config.is_mobile&&(e<this.config.width_threshold||t<this.config.height_threshold);return i||t}_generateLcpCandidates(e){var t=document.querySelectorAll(this.config.elements);if(t.length<=0)return[];const i=Array.from(t),n=i.map(e=>{var t=e.getBoundingClientRect();return{element:e,rect:t}}).filter(e=>0<e.rect.width&&0<e.rect.height&&this._isIntersecting(e.rect)).map(e=>({item:e,area:this._getElementArea(e.rect),elementInfo:this._getElementInfo(e.element)})).sort((e,t)=>t.area-e.area).slice(0,e);return n.map(e=>({element:e.item.element,elementInfo:e.elementInfo}))}_isIntersecting(e){return 0<=e.bottom&&0<=e.right&&e.top<=(window.innerHeight||document.documentElement.clientHeight)&&e.left<=(window.innerWidth||document.documentElement.clientWidth)}_getElementArea(e){return Math.min(e.width,(window.innerWidth||document.documentElement.clientWidth)-e.left)*Math.min(e.height,(window.innerHeight||document.documentElement.clientHeight)-e.top)}_getElementInfo(e){var t=e.nodeName.toLowerCase();const i={type:"",src:"",srcset:"",sizes:"",sources:[],bg_set:[],current_src:""};if("img"===t&&e.srcset)i.type="img-srcset",i.src=e.src,i.srcset=e.srcset,i.sizes=e.sizes,i.current_src=e.currentSrc;else if("img"===t)i.type="img",i.src=e.src,i.current_src=e.currentSrc;else if("video"===t){i.type="img";var n=e.querySelector("source");i.src=e.poster||(n?n.src:""),i.current_src=i.src}else if("svg"===t){const r=e.querySelector("image");r&&(i.type="img",i.src=r.getAttribute("href")||"",i.current_src=i.src)}else if("picture"===t)i.type="picture",t=e.querySelector("img:not(picture>img)"),i.src=t?t.src:"",i.sources=Array.from(e.querySelectorAll("source")).map(e=>({srcset:e.srcset||"",media:e.media||""}));else{const s=window.getComputedStyle(e,null),o=[s.getPropertyValue("background-image"),getComputedStyle(e,":after").getPropertyValue("background-image"),getComputedStyle(e,":before").getPropertyValue("background-image")],c=o.filter(e=>"none"!==e).join("");if(i.type="bg-img",c.includes("image-set(")&&(i.type="bg-img-set"),!c||""===c)return null;const a=[...c.matchAll(/url\(\s*?['"]?\s*?(\S+?)\s*?["']?\s*?\)\s*?([a-zA-Z0-9\s]*[x|dpcm|dpi|dppx]?)/gi)];i.bg_set=a.map(e=>e[1]?{src:e[1].trim()+(e[2]?" "+e[2].trim():"")}:{}),i.bg_set.every(e=>""===e.src)&&(i.bg_set=a.map(e=>e[1]?{src:e[1].trim()}:{})),0<i.bg_set.length&&(i.src=i.bg_set[0].src,"bg-img-set"===i.type&&(i.src=i.bg_set))}return i}_initWithFirstElementWithInfo(e){if(!(e=e.find(e=>null!==e.elementInfo)))return this._logMessage("No LCP candidate found."),void(this.performanceImages=[]);this.performanceImages=[{...e.elementInfo,label:"lcp"}]}_fillATFWithoutDuplications(e){e.forEach(e=>{var{element:t,elementInfo:e}=e;this._isDuplicateImage(t)||this.performanceImages.push({...e,label:"above-the-fold"})})}_isDuplicateImage(e){const t=this._getElementInfo(e);if(null===t)return!1;var i="img"===t.type||"img-srcset"===t.type||"video"===t.type,e="bg-img"===t.type||"bg-img-set"===t.type||"picture"===t.type;return(i||e)&&this.performanceImages.some(e=>e.src===t.src)}_getFinalStatus(){return""!==this.errorCode?this.errorCode:10<=(new Date-this.scriptTimer)/1e3?"timeout":"success"}_saveFinalResultIntoDB(){const e=new FormData;e.append("action","rocket_lcp"),e.append("rocket_lcp_nonce",this.config.nonce),e.append("url",this.config.url),e.append("is_mobile",this.config.is_mobile),e.append("images",JSON.stringify(this.performanceImages)),e.append("status",this._getFinalStatus()),fetch(this.config.ajax_url,{method:"POST",credentials:"same-origin",body:e,headers:{"wpr-saas-no-intercept":!0}}).then(e=>e.json()).then(e=>{this._logMessage(e)}).catch(e=>{this._logMessage(e)}).finally(()=>{this._finalize()})}_handleInfiniteLoop(){this._saveFinalResultIntoDB()}_finalize(){const e=document.querySelector('[data-name="wpr-lcp-beacon"]');e.setAttribute("beacon-completed","true"),clearTimeout(this.infiniteLoopId)}_logMessage(e){console.log(e)}static run(){if(window.rocket_lcp_data){const e=new n(window.rocket_lcp_data);"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{setTimeout(()=>{e.init()},500)}):setTimeout(()=>{e.init()},500)}}}).run()},{}]},{},[1]); //# sourceMappingURL=lcp-beacon.js.map