1(function () { 2 var DESKTOP_FULLSCREEN_ADUNIT_NAME = 'fullscreen'; 3 var DESKTOP_FULLSCREEN_CONTAINER_ID = 'fullscreen'; 4 var DESKTOP_FULLSCREEN_STORAGE_KEY = 'ump_desktop_fullscreen_hidden_until'; 5 var DESKTOP_FULLSCREEN_HIDE_DURATION_MS = 5 * 60 * 1000; 6 var hasRenderedDesktopFullscreen = false; 7 var fullscreenSlot = null; 8 9 function canShowDesktopFullscreen() { 10 var hiddenUntil; 11 12 try { 13 hiddenUntil = Number(localStorage.getItem(DESKTOP_FULLSCREEN_STORAGE_KEY)); 14 15 if (isNaN(hiddenUntil) || hiddenUntil <= Date.now()) { 16 localStorage.removeItem(DESKTOP_FULLSCREEN_STORAGE_KEY); 17 18 return true; 19 } 20 21 return false; 22 } catch (error) { 23 window.console.warn('[E1 fullscreen] Failed to read localStorage', error); 24 25 return false; 26 } 27 } 28 29 function markDesktopFullscreenDisplayed() { 30 try { 31 localStorage.setItem( 32 DESKTOP_FULLSCREEN_STORAGE_KEY, 33 String(Date.now() + DESKTOP_FULLSCREEN_HIDE_DURATION_MS) 34 ); 35 } catch (error) { 36 window.console.warn('[E1 fullscreen] Failed to write localStorage', error); 37 } 38 } 39 40 function getContainer() { 41 var container = document.getElementById(DESKTOP_FULLSCREEN_CONTAINER_ID); 42 43 if (container) { 44 return container; 45 } 46 47 if (!document.body) { 48 window.console.warn('[E1 fullscreen] document.body is not available'); 49 50 return null; 51 } 52 53 container = document.createElement('div'); 54 container.id = DESKTOP_FULLSCREEN_CONTAINER_ID; 55 document.body.appendChild(container); 56 57 return container; 58 } 59 60 function renderDesktopFullscreen(creativeManager) { 61 var container; 62 63 if (hasRenderedDesktopFullscreen || !canShowDesktopFullscreen()) { 64 return; 65 } 66 67 if (!creativeManager || typeof creativeManager.createSlot !== 'function') { 68 window.console.warn('[E1 fullscreen] createSlot is not available on creativeManager'); 69 70 return; 71 } 72 73 hasRenderedDesktopFullscreen = true; 74 container = getContainer(); 75 76 if (!container) { 77 hasRenderedDesktopFullscreen = false; 78 79 return; 80 } 81 82 creativeManager.ready.then(function () { 83 return creativeManager.createSlot({ 84 container: container, 85 adunit: DESKTOP_FULLSCREEN_ADUNIT_NAME, 86 params: { 87 priority: 1, 88 type: 'fullscreen', 89 platform: 'desktop' 90 } 91 }); 92 }).then(function (slot) { 93 if (!slot) { 94 window.console.warn('[E1 fullscreen] Failed to create fullscreen slot'); 95 hasRenderedDesktopFullscreen = false; 96 97 return; 98 } 99 100 fullscreenSlot = slot; 101 102 if (typeof slot.on === 'function') { 103 slot.on('display', function () { 104 markDesktopFullscreenDisplayed(); 105 }); 106 slot.on('error', function () { 107 hasRenderedDesktopFullscreen = false; 108 }); 109 slot.on('stub', function () { 110 hasRenderedDesktopFullscreen = false; 111 }); 112 } 113 114 return slot.refresh(); 115 }).catch(function (error) { 116 window.console.warn('[E1 fullscreen] Failed to render fullscreen', error); 117 hasRenderedDesktopFullscreen = false; 118 }).finally(function () { 119 if (!hasRenderedDesktopFullscreen) { 120 if ( 121 fullscreenSlot 122 && typeof creativeManager.destroySlot === 'function' 123 ) { 124 creativeManager.destroySlot(fullscreenSlot); 125 fullscreenSlot = null; 126 } 127 128 container = document.getElementById(DESKTOP_FULLSCREEN_CONTAINER_ID); 129 if (container && container.parentNode) { 130 container.parentNode.removeChild(container); 131 } 132 } 133 }); 134 } 135 136 function initDesktopFullscreen() { 137 window.onHSMCreativeManagerReady.push(function (creativeManager) { 138 renderDesktopFullscreen(creativeManager); 139 }); 140 } 141 142 if (!window.isMobile) { 143 initDesktopFullscreen(); 144 } 145})();
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.