From 7da507bec63f75235ebe13e64a170556245ab62e Mon Sep 17 00:00:00 2001
From: "Alex Xu (Hello71)" <alex_y_xu@yahoo.ca>
Date: Tue, 5 Oct 2021 17:29:19 -0400
Subject: unmangle js, remove iewarn

---
 resume/resume.html |  3 ---
 resume/resume.js   | 71 ++++++++++++++++++++++++++----------------------------
 2 files changed, 34 insertions(+), 40 deletions(-)

(limited to 'resume')

diff --git a/resume/resume.html b/resume/resume.html
index f8e149c..03f9bf7 100644
--- a/resume/resume.html
+++ b/resume/resume.html
@@ -11,9 +11,6 @@
     <link rel="stylesheet" href="resume.css">
 </head>
 <body>
-    <div id="ie" style="font-size:2em;display:none">
-        Internet Explorer does not support the web standards used on this page. Please upgrade to a modern browser such as <a href="https://firefox.com">Mozilla Firefox</a>, <a href="https://microsoft.com/edge">Microsoft Edge</a>, or <a href="https://google.com/chrome">Google Chrome</a>.
-    </div>
     <div class="right title">
         <h1>Alex Xu</h1>
         <p class="h1s">Generalist software developer</p>
diff --git a/resume/resume.js b/resume/resume.js
index adcb7de..4f66f24 100644
--- a/resume/resume.js
+++ b/resume/resume.js
@@ -1,55 +1,52 @@
-(function(w, d, a){
+(document => {
     'use strict';
-    const b = () => {
-        for (let el of d.getElementsByTagName('a')) {
-            const h = el.href.replace(/javascript:location=(.*);void 0/, '$1');
+    const mangleurls = () => {
+        for (let el of document.getElementsByTagName('a')) {
+            const href = el.href.replace(/^javascript:location=(.*);void 0$/, '$1');
             el.setAttribute('data-href', el.href);
-            if (h != el.href) el.href = eval(h);
-            else el.href = "https://alxu.ca/analytics?url=" + el.href.replace(/%/g, '%25').replace(/&/g, '%26').replace(/;/g, '%3B');
+            if (href != el.href) el.href = eval(href);
+            else el.href = 'https://alxu.ca/analytics?url=' + href.replace(/[%&;]/g, s=>'%'+s.charCodeAt(0).toString(16));
         }
     };
     if (location.hostname === 'www.alxu.ca') {
-        let t, p = [];
-        const f = () => {
-            clearTimeout(t);
-            navigator.sendBeacon('/analytics', new Blob([JSON.stringify(p)], {type: 'application/json'}));
-            p = [];
+        let timeout, pending = [];
+        const flush = () => {
+            clearTimeout(timeout);
+            navigator.sendBeacon('/analytics', new Blob([JSON.stringify(pending)], {type: 'application/json'}));
+            pending = [];
         };
-        const q = (kind, details) => {
-            clearTimeout(t);
-            p.push({created_ts: Date.now(), kind: kind, details: details});
-            t = setTimeout(f, 2000);
+        const queue = (kind, details) => {
+            clearTimeout(timeout);
+            pending.push({created_ts: Date.now(), kind: kind, details: details});
+            timeout = setTimeout(flush, 2000);
         };
-        q('l', '');
-        d[a]('visibilitychange', () => {
-            const vs = d.visibilityState;
-            q('v', vs);
-            if (vs === 'hidden')
-                f();
+        queue('l', '');
+        document.addEventListener('visibilitychange', () => {
+            queue('v', document.visibilityState);
+            if (document.visibilityState === 'hidden')
+                flush();
         });
-        d[a]('click', e => {
+        document.addEventListener('click', e => {
             const a = e.target.closest('a');
             if (a)
-                q('c', a.href);
+                queue('c', a.href);
         });
-        w[a]('beforeprint', b);
-        w[a]('afterprint', function () {
-            for (let el of d.getElementsByTagName('a')) {
+        window.addEventListener('beforeprint', mangleurls);
+        window.addEventListener('afterprint', () => {
+            for (let el of document.getElementsByTagName('a')) {
                 el.href = el.getAttribute('data-href');
                 el.removeAttribute('data-href');
             }
         });
     } else {
-        b();
+        mangleurls();
     }
-    if (d.documentMode)
-        ie.style.display = "block";
-    const css = d.styleSheets[0];
-    // changing @page causes chrome to claim layout shift
-    if (w.safari) {
-        css.insertRule("@media print{@page{margin:10mm}}", css.cssRules.length);
-        css.insertRule("@media print{body{margin:-2mm 0 -2mm 0;padding:0 15mm 0 7mm}}", css.cssRules.length);
+    const css = document.styleSheets[0];
+    if (window.safari) {
+        css.insertRule('@media print{@page{margin:10mm}}', css.cssRules.length);
+        css.insertRule('@media print{body{margin:-2mm 0 -2mm 0;padding:0 15mm 0 7mm}}', css.cssRules.length);
     }
-    else if (w.chrome)
-        css.insertRule("@media print{@page{margin-top:auto;margin-bottom:auto}}", css.cssRules.length);
-}(window, document, 'addEventListener'));
+    else if (window.chrome)
+        // changing @page causes chrome to claim layout shift even in non-print
+        css.insertRule('@media print{@page{margin-top:auto;margin-bottom:auto}}', css.cssRules.length);
+})(document);
-- 
cgit v1.2.3-70-g09d2