PageSourceSearch

https://www.waterburyobserver.org/wp-content/themes/newspack-theme/js/dist/amp-fallback.js?ver=1.85.0

js waterburyobserver.org collected 2026-10-02 06:07:21 UTC 11,348 bytes, 35 lines download raw bytes

vendor: 650 bytes, lines 1-12
1/*
2 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
3 * This devtool is neither made for production nor for readable output files.
4 * It uses "eval()" calls to create a separate source file in the browser devtools.
5 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6 * or disable the default devtool with "devtool: false".
7 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8 */
9/******/ (() => { // webpackBootstrap
10/******/ 	var __webpack_modules__ = ({
11
12/***/ "./
12newspack-theme/js/src/amp-fallback.js":
13/*!***********************************************!*\
14  !*** ./newspack-theme/js/src/amp-fallback.js ***!
15  \***********************************************/
16/***/ (() => {
17
18eval("/* globals newspackScreenReaderText */\n\n/**\n * File amp-fallback.js.\n *\n * AMP fallback JavaScript.\n */\n\n(function () {\n  // Shared variables\n  const headerContain = document.getElementById('masthead'),\n    searchToggle = document.getElementById('search-toggle');\n  if (null !== searchToggle) {\n    const headerSearch = document.getElementById('header-search'),\n      headerSearchInput = headerSearch.getElementsByTagName('input')[0],\n      searchToggleTextContain = searchToggle.getElementsByTagName('span')[0],\n      searchToggleTextDefault = searchToggleTextContain.innerText;\n    searchToggle.addEventListener('click', function () {\n      // Toggle the search visibility.\n      headerContain.classList.toggle('hide-header-search');\n\n      // Toggle screen reader text label and aria settings.\n      if (searchToggleTextDefault === searchToggleTextContain.innerText) {\n        searchToggleTextContain.innerText = newspackScreenReaderText.close_search;\n        headerSearch.setAttribute('aria-expanded', 'true');\n        searchToggle.setAttribute('aria-expanded', 'true');\n        headerSearchInput.focus();\n      } else {\n        searchToggleTextContain.innerText = searchToggleTextDefault;\n        headerSearch.setAttribute('aria-expanded', 'false');\n        searchToggle.setAttribute('aria-expanded', 'false');\n        searchToggle.focus();\n      }\n    }, false);\n  }\n\n  // Menu toggle variables.\n  const mobileToggle = document.getElementsByClassName('mobile-menu-toggle'),\n    body = document.body,\n    mobileSidebar = document.getElementById('mobile-sidebar-fallback'),\n    desktopToggle = document.getElementsByClassName('desktop-menu-toggle'),\n    desktopSidebar = document.getElementById('desktop-sidebar-fallback'),\n    subpageToggle = document.getElementsByClassName('subpage-toggle');\n\n  /**\n   * @description Creates semi-transparent overlay behind menus.\n   * @param {string} maskId The ID to add to the div.\n   */\n  function createOverlay(maskId) {\n    const mask = document.createElement('div');\n    mask.setAttribute('class', 'overlay-mask');\n    mask.setAttribute('id', maskId);\n    document.body.appendChild(mask);\n  }\n\n  /**\n   * @description Removes semi-transparent overlay behind menus.\n   * @param {string} maskId The ID to use for the overlay.\n   */\n  function removeOverlay(maskId) {\n    const mask = document.getElementById(maskId);\n    mask.parentNode.removeChild(mask);\n  }\n\n  /**\n   * @description Opens specifed slide-out menu.\n   * @param {string} menuClass  The class to add to the body to toggle menu visibility.\n   * @param {string} openButton The button used to open the menu.\n   * @param {string} maskId     The ID to use for the overlay.\n   */\n  function openMenu(menuClass, openButton, maskId) {\n    body.classList.add(menuClass);\n    openButton.focus();\n    createOverlay(maskId);\n  }\n\n  /**\n   * @description Closes specifed slide-out menu.\n   * @param {string} menuClass  The class to remove from the body to toggle menu visibility.\n   * @param {string} openButton The button used to open the menu.\n   * @param {string} maskId     The ID to use for the overlay.\n   */\n  function closeMenu(menuClass, openButton, maskId) {\n    body.classList.remove(menuClass);\n    openButton.focus();\n    removeOverlay(maskId);\n  }\n\n  // Mobile menu fallback.\n  for (let i = 0; i < mobileToggle.length; i++) {\n    const mobileOpenButton = headerContain.querySelector('.mobile-menu-toggle'),\n      mobileCloseButton = mobileSidebar.querySelector('.mobile-menu-toggle');\n    mobileToggle[i].addEventListener('click', function () {\n      if (body.classList.contains('mobile-menu-opened')) {\n        closeMenu('mobile-menu-opened', mobileOpenButton, 'mask-mobile');\n      } else {\n        openMenu('mobile-menu-opened', mobileCloseButton, 'mask-mobile');\n      }\n    }, false);\n  }\n\n  // Desktop menu (AKA slide-out sidebar) fallback.\n  for (let i = 0; i < desktopToggle.length;
18 i++) {\n    const desktopOpenButton = headerContain.querySelector('.desktop-menu-toggle'),\n      desktopCloseButton = desktopSidebar.querySelector('.desktop-menu-toggle');\n    desktopToggle[i].addEventListener('click', function () {\n      if (body.classList.contains('desktop-menu-opened')) {\n        closeMenu('desktop-menu-opened', desktopOpenButton, 'mask-desktop');\n      } else {\n        openMenu('desktop-menu-opened', desktopCloseButton, 'mask-desktop');\n      }\n    }, false);\n  }\n\n  // 'Subpage' menu fallback.\n  if (0 < subpageToggle.length && headerContain) {\n    const subpageSidebar = document.getElementById('subpage-sidebar-fallback'),\n      subpageOpenButton = headerContain.querySelector('.subpage-toggle'),\n      subpageCloseButton = subpageSidebar.querySelector('.subpage-toggle');\n    for (let i = 0; i < subpageToggle.length; i++) {\n      subpageToggle[i].addEventListener('click', function () {\n        if (body.classList.contains('subpage-menu-opened')) {\n          closeMenu('subpage-menu-opened', subpageOpenButton, 'mask-subpage');\n        } else {\n          openMenu('subpage-menu-opened', subpageCloseButton, 'mask-subpage');\n        }\n      }, false);\n    }\n  }\n\n  // Add listener to the menu overlays, so they can be closed on click.\n  document.addEventListener('click', function (e) {\n    if (e.target && e.target.className === 'overlay-mask') {\n      const maskId = e.target.id;\n      const menu = maskId.split('-');\n      body.classList.remove(menu[1] + '-menu-opened');\n      removeOverlay(maskId);\n    }\n  });\n\n  // Menu toggle variables.\n  if (headerContain) {\n    const dropdownToggle = headerContain.getElementsByClassName('submenu-expand');\n    if (0 < dropdownToggle.length) {\n      for (let i = 0; i < dropdownToggle.length; i++) {\n        const dropdownToggleLabel = dropdownToggle[i].querySelector('span.screen-reader-text');\n        dropdownToggle[i].addEventListener('click', function () {\n          if (dropdownToggle[i].classList.contains('open-dropdown')) {\n            dropdownToggle[i].classList.remove('open-dropdown');\n            dropdownToggle[i].setAttribute('aria-expanded', 'false');\n            dropdownToggleLabel.innerText = newspackScreenReaderText.close_dropdown_menu;\n          } else {\n            dropdownToggle[i].classList.add('open-dropdown');\n            dropdownToggle[i].setAttribute('aria-expanded', 'true');\n            dropdownToggleLabel.innerText = newspackScreenReaderText.open_dropdown_menu;\n          }\n        }, false);\n      }\n    }\n  }\n\n  // Sticky header fallback animation\n  if (body.classList.contains('h-stk') && body.classList.contains('h-sub') && (body.classList.contains('single-featured-image-behind') || body.classList.contains('single-featured-image-beside'))) {\n    let scrollTimer,\n      lastScrollFireTime = 0;\n    window.onscroll = function () {\n      toggleHeaderClass();\n    };\n\n    /**\n     * @description Limit onscroll checkes and add CSS class when scrolled least 200px down the page.\n     */\n    function toggleHeaderClass() {\n      const scrollBarPosition = window.pageYOffset,\n        minScrollTime = 100,\n        now = new Date().getTime();\n      if (!scrollTimer) {\n        if (now - lastScrollFireTime > 3 * minScrollTime) {\n          lastScrollFireTime = now;\n        }\n        scrollTimer = setTimeout(function () {\n          scrollTimer = null;\n          lastScrollFireTime = new Date().getTime();\n        }, minScrollTime);\n      }\n\n      // At specifiv position do what you want\n      if (200 >= scrollBarPosition) {\n        headerContain.classList.remove('head-scroll');\n      } else {\n        headerContain.classList.add('head-scroll');\n      }\n    }\n  }\n\n  // Comments toggle fallback.\n  const commentsToggle = document.getElementById('comments-toggle');\n\n  // Make sure comments exist before going any further.\n  if (null !== commentsToggle) {\n    const commentsWrapper = document.getElementById('comments-wrapper'),\n      commentsToggleTextContain = commentsToggle.getElementsByTagName('span')[0];\n    commentsToggle.addEventListener('click', function () {\n      if (commentsWrapper.classList.contains('comments-hide')) {\n        commentsWrapper.classList.remove('comments-hide');\n        commentsToggleTextContain.innerText = newspackScreenReaderText.collapse_comments;\n      } else {\n        commentsWrapper.classList.add('comments-hide');\n        commentsToggleTextContain.innerText = newspackScreenReaderText.expand_comments;\n      }\n    }, false);\n  }\n\n  // Checkout toggle fallback.\n  const orderDetailToggle = document.getElementById('toggle-order-details');\n\n  // Make sure checkout details exist before going any further.\n  if (null !== orderDetailToggle) {\n    const orderDetailWrapper = document.getElementById('order-details-wrapper'),\n      orderDetailToggleTextContain = orderDetailToggle.getElementsByTagName('span')[0],\n      hideOrderDetails = newspackScreenReaderText.hide_order_details,\
18n      showOrderDetails = newspackScreenReaderText.show_order_details;\n    orderDetailToggle.addEventListener('click', function () {\n      if (orderDetailWrapper.classList.contains('order-details-hidden')) {\n        orderDetailWrapper.classList.remove('order-details-hidden');\n        orderDetailToggle.classList.remove('order-details-hidden');\n        orderDetailToggleTextContain.innerText = hideOrderDetails;\n      } else {\n        orderDetailWrapper.classList.add('order-details-hidden');\n        orderDetailToggle.classList.add('order-details-hidden');\n        orderDetailToggleTextContain.innerText = showOrderDetails;\n      }\n    }, false);\n  }\n})();\n\n//# sourceURL=webpack://newspack/./newspack-theme/js/src/amp-fallback.js?");
19
20/***/ })
20
21
22/******/ 	});
23/************************************************************************/
24/******/ 	
25/******/ 	// startup
26/******/ 	// Load entry module and return exports
27/******/ 	// This entry module can't be inlined because the eval devtool is used.
28/******/ 	var __webpack_exports__ = {};
29/******/ 	__webpack_modules__["./newspack-theme/js/src/amp-fallback.js"]();
30/******/ 	var __webpack_export_target__ = window;
31/******/ 	for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i];
32/******/ 	if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true });
33/******/ 	
34/******/ })()
35;

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.