1(function ($) { 2 var STORAGE_KEY = "fontScaler.fontSize"; 3 var STORAGE_TIME_KEY = "fontScaler.savedAt"; 4 var TTL_MS = 24 * 60 * 60 * 1000; // 24 hours 5 6 function setDisabled(newSize) { 7 $("#font-scaler-decrease").prop("disabled", newSize === 1); 8 $("#font-scaler-increase").prop("disabled", newSize === 2); 9 } 10 11 function loadSavedFontSize() { 12 try { 13 var saved = sessionStorage.getItem(STORAGE_KEY); 14 var savedAtRaw = sessionStorage.getItem(STORAGE_TIME_KEY); 15 var savedAt = savedAtRaw ? parseInt(savedAtRaw, 10) : 0; 16 17 if (saved) { 18 var isFresh = savedAt && (Date.now() - savedAt) <= TTL_MS; 19 if (isFresh) { 20 var size = parseFloat(saved); 21 if (!isNaN(size)) { 22 $("html").css("font-size", size + "rem").data("font-size", size); 23 setDisabled(size); 24 return size; 25 } 26 } else { 27 sessionStorage.removeItem(STORAGE_KEY); 28 sessionStorage.removeItem(STORAGE_TIME_KEY); 29 } 30 } 31 } catch (e) {} 32 return null; 33 } 34 35 function saveFontSize(size) { 36 try { 37 sessionStorage.setItem(STORAGE_KEY, String(size)); 38 sessionStorage.setItem(STORAGE_TIME_KEY, String(Date.now())); 39 } catch (e) {} 40 } 41 42 var initialSize = loadSavedFontSize(); 43 if (initialSize === null) { 44 $("html").data("font-size", 1); 45 setDisabled(1); 46 } 47 48 $(document).on("click", "#font-scaler-decrease", function () { 49 var newSize = $("html").data("font-size") - 0.1; 50 if (newSize < 1) { 51 newSize = 1; 52 } 53 newSize = Math.round(newSize * 10) / 10; 54 55 $("html").css("font-size", newSize + "rem").data("font-size", newSize); 56 setDisabled(newSize); 57 saveFontSize(newSize); 58 }); 59 60 $(document).on("click", "#font-scaler-increase", function () { 61 var newSize = $("html").data("font-size") + 0.1; 62 if (newSize > 2) { 63 newSize = 2; 64 } 65 newSize = Math.round(newSize * 10) / 10; 66 67 $("html").css("font-size", newSize + "rem").data("font-size", newSize); 68 setDisabled(newSize); 69 saveFontSize(newSize); 70 }); 71})(jQuery);
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.