1var initWidgetPopup = async (item) => { 2 const cookiePath = '/res/js/cookie/js.cookie.min.js' 3 4 // si pas de popup, on ne fait rien 5 if(item.querySelector('.wp-container') == null) { 6 return 7 } 8 9 const showOnce = item.querySelector('.wp-container').getAttribute('data-show-once') !== null 10 const dateStart = item.getAttribute('data-start') !== null 11 const dateEnd = item.getAttribute('data-end') !== null 12 13 // si la popup doit s'afficher entre deux dates 14 if(dateStart && dateEnd) { 15 const now = new Date() 16 const start = new Date(item.getAttribute('data-start')) 17 const end = new Date(item.getAttribute('data-end')) 18 19 if(now >= start && now <= end) { 20 item.querySelector('.popup-content').classList.remove('hidden') 21 } 22 // en-dehors des dates, on ne fait rien 23 else { 24 return 25 } 26 } 27 28 // pas besoin de charger le script de cookies 29 if(!showOnce) { 30 setupWidgetPopup(item, showOnce) 31 return 32 } 33 34 // charge le script de cookies et affiche la popup si nécessaire 35 if(typeof Cookies != 'object') { 36 await lazy.loadScript(cookiePath) 37 } 38 39 if(Cookies.get('widget-popup') != 1) { 40 setupWidgetPopup(item, showOnce) 41 } 42} 43 44const setupWidgetPopup = (item, showOnce) => { 45 const widgetPopup = item.querySelector('.wp-container') 46 widgetPopup.classList.add('active') 47 48 const onClose = (e) => { 49 e.preventDefault() 50 widgetPopup.classList.remove('active') 51 52 if(showOnce) { 53 Cookies.set('widget-popup', '1', { expires: 7 }) 54 } 55 } 56 57 item.querySelector('.wp-close-btn').addEventListener('click', onClose) 58 item.querySelector('.wp-bg').addEventListener('click', onClose) 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.