1(function () { 2 'use strict'; 3 4 var ticker = document.getElementById('top-countdown-banner'); 5 if (!ticker) return; 6 7 // éå¬ä¸ã¯ã«ã¦ã³ããã¦ã³æ°åãç¡ãã®ã§ tick ä¸è¦ (spec §3.5) 8 if (ticker.dataset.eventActive === '1') return; 9 10 var targetIso = ticker.getAttribute('data-target'); 11 if (!targetIso) return; 12 13 var target = new Date(targetIso).getTime(); 14 if (isNaN(target)) return; 15 16 var elD = ticker.querySelector('[data-tcb-d]'); 17 var elH = ticker.querySelector('[data-tcb-h]'); 18 var elM = ticker.querySelector('[data-tcb-m]'); 19 var elS = ticker.querySelector('[data-tcb-s]'); 20 if (!elD || !elH || !elM || !elS) return; 21 22 var URGENT_CLASS = 'top-countdown-banner--urgent'; 23 24 function pad2(n) { 25 return String(n).padStart(2, '0'); 26 } 27 28 // å忏ããå¤ï¼å¤ãå¤ããã¨ãã ã DOM ãæ¸ãï¼ 29 var last = { d: null, h: null, m: null, s: null, urgent: null }; 30 var finished = false; 31 var fallbackIntervalId = null; 32 var clock = window.CountdownSyncClock; 33 var useSharedClock = !!(clock && typeof clock.subscribeSecond === 'function' && typeof clock.unsubscribe === 'function'); 34 35 function setText(el, key, value) { 36 if (last[key] === value) return; 37 el.textContent = value; 38 last[key] = value; 39 } 40 41 function finish() { 42 finished = true; 43 if (useSharedClock) clock.unsubscribe(tick); 44 if (fallbackIntervalId !== null) { 45 clearInterval(fallbackIntervalId); 46 fallbackIntervalId = null; 47 } 48 } 49 50 function tick() { 51 if (finished) return; 52 var remaining = Math.max(0, target - Date.now()); 53 var diff = remaining; 54 var day = Math.floor(diff / 86400000); diff -= day * 86400000; 55 var hour = Math.floor(diff / 3600000); diff -= hour * 3600000; 56 var min = Math.floor(diff / 60000); diff -= min * 60000; 57 var sec = Math.floor(diff / 1000); 58 59 setText(elD, 'd', String(day)); 60 setText(elH, 'h', pad2(hour)); 61 setText(elM, 'm', pad2(min)); 62 setText(elS, 's', pad2(sec)); 63 64 // éå¬ã¾ã§ 1 æé (= 3,600,000 ms) ãåã£ããæ°´è²ãã©ãã©ã¢ã¼ããçºç« 65 var urgent = remaining < 3600000; 66 if (last.urgent !== urgent) { 67 if (urgent) { 68 ticker.classList.add(URGENT_CLASS); 69 } else { 70 ticker.classList.remove(URGENT_CLASS); 71 } 72 last.urgent = urgent; 73 } 74 75 // æ®ã 0 ãæç»ããã以éã¯è¡¨ç¤ºãå¤ãããªãã®ã§æ¢ãã 76 if (remaining === 0) finish(); 77 } 78 79 if (useSharedClock) { 80 // ç§å¢çã«æããå ±æã¹ã±ã¸ã¥ã¼ã©ï¼è³¼èªæã«å³ 1 å tick ãããé表示ã¿ãã§ã¯æ¢ã¾ãï¼ 81 clock.subscribeSecond(tick); 82 } else { 83 tick(); 84 if (!finished) fallbackIntervalId = setInterval(tick, 1000); 85 } 86})();
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.