From 14d3556bd548c50f8dcbe519c85a3a8eb3c079ae Mon Sep 17 00:00:00 2001
From: Paul Duncan <pabs@pablotron.org>
Date: Sat, 5 Mar 2022 13:14:02 -0500
Subject: themes/hugo-pt2021/assets/scripts.js: shrink unminified js by 27
 bytes (~8.8%)

---
 themes/hugo-pt2021/assets/script.js | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/themes/hugo-pt2021/assets/script.js b/themes/hugo-pt2021/assets/script.js
index bc95b27..2805cef 100644
--- a/themes/hugo-pt2021/assets/script.js
+++ b/themes/hugo-pt2021/assets/script.js
@@ -1,12 +1,31 @@
 // enable burger menu support
 // src: https://bulma.io/documentation/components/navbar/
+//
+// Note (2022-03-05): I initially switched from Array.prototype.slice()
+// to Array.from() and added "const D = document;" to shrink the
+// minified, uncompressed code from 307 bytes to 292 bytes for a ~4.9%
+// (15 bytes) size reduction.
+//
+// Then, I dropped Array.from() entirely, since all modern browsers (see
+// URL below) support NodeList.forEach().
+//
+// Ref: https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach
+//
+// This shrunk the minified, uncompressed size to 280 bytes, for a
+// ~8.8% (27 bytes) cumulative size reduction.
+//
+// I also tried switching from forEach to for..of, but that increased
+// the minified, uncompressed size by a two bytes.
+//
 document.addEventListener('DOMContentLoaded', () => {
   "use strict";
+  const D = document;
+
   // iterate through burgers
-  Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0).forEach(e => {
+  D.querySelectorAll('.navbar-burger').forEach(e => {
     e.addEventListener('click', () => {
       // get target from data-target attribute
-      const t = document.getElementById(e.dataset.target);
+      const t = D.getElementById(e.dataset.target);
 
       // toggle is-active on both burger and menu
       [e, t].forEach(e => e.classList.toggle('is-active'));
-- 
cgit v1.2.3