1(function () { 2 'use strict'; 3 4 var loadPromise = null; 5 6 function homeScriptsReady() { 7 return ( 8 typeof window.initHeroTextEffect === 'function' && 9 typeof window.homeIntro === 'object' && 10 typeof window.homeIntro.run === 'function' 11 ); 12 } 13 14 function readHomeScriptUrls() { 15 var el = document.getElementById('marketing-home-script-urls'); 16 if (!el || !el.textContent) return []; 17 try { 18 var urls = JSON.parse(el.textContent); 19 return Array.isArray(urls) ? urls : []; 20 } catch (eParse) { 21 return []; 22 } 23 } 24 25 function loadScript(url) { 26 return new Promise(function (resolve) { 27 var script = document.createElement('script'); 28 script.src = url; 29 script.async = false; 30 script.onload = function () { resolve(); }; 31 script.onerror = function () { 32 console.warn('[marketing] failed to load home script:', url); 33 resolve(); 34 }; 35 document.body.appendChild(script); 36 }); 37 } 38 39 window.ensureMarketingHomeScripts = function ensureMarketingHomeScripts() { 40 if (homeScriptsReady()) { 41 return Promise.resolve(); 42 } 43 if (loadPromise) { 44 return loadPromise; 45 } 46 var urls = readHomeScriptUrls(); 47 if (!urls.length) { 48 return Promise.resolve(); 49 } 50 loadPromise = urls.reduce(function (chain, url) { 51 return chain.then(function () { 52 return loadScript(url); 53 }); 54 }, Promise.resolve()).finally(function () { 55 loadPromise = null; 56 }); 57 return loadPromise; 58 }; 59})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.