{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/js/Drupal.js","webpack:///./src/js/DDTemplates.js","webpack:///./src/js/Header.js","webpack:///./src/js/Viewport.js","webpack:///./src/js/Search.js","webpack:///./src/js/Toolbar.js","webpack:///./src/js/Change.js","webpack:///./src/js/Sticky.js","webpack:///./src/js/Gallery.js","webpack:///./src/js/Navigation.js","webpack:///./src/js/SmartFooter.js","webpack:///./src/js/CalendarFeed.js","webpack:///./src/js/FixNavigation.js","webpack:///./src/js/TermNavigation.js","webpack:///./src/js/AccordionWrap.js","webpack:///./src/js/AccordionFix.js","webpack:///./src/js/AccordionContainer.js","webpack:///./src/js/SearchRelocate.js","webpack:///./src/js/Modaal.js","webpack:///./src/js/SelectBox.js","webpack:///./src/js/SelectList.js","webpack:///./src/js/BackgroundImage.js","webpack:///./src/js/Flickity.HomePod.js","webpack:///./src/js/Redirect.js","webpack:///./src/js/BrowserCheck.js","webpack:///./src/js/theme.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","behaviors","defaults","photoGalleryPID","a11y","itemAppearsIn","fullNodeRelatedLinks","bundledReferringContent","subtermOverviews","lexiconGlossary","nodeMeta","slideshowIcons","expandingDates","DDTemplates","context","options","this","isNodeView","isNode","settings","defineApplicableBehaviors","$","document","body","is","view","node","term","global","forEach","behavior","addEnabledBehavior","$appearingNav","find","addClass","each","element","$block","attr","a","$node","$items","removeClass","$visible","map","item","getComputedStyle","getPropertyValue","filter","b","meta","$meta","$dates","$link","event","preventDefault","toggleClass","currentTarget","text","insertBefore","eq","$container","appendTo","append","image","$img","before","letter","replace","html","toUpperCase","documentIsReady","Drupal","fn","Callbacks","ready","fire","DrupalAMD","add","offset","tolerance","classes","initial","pinned","unpinned","top","notTop","bottom","notBottom","onPin","onUnpin","onTop","onNotTop","onBottom","onNotBottom","Header","headroom","Headroom","init","change","mobileState","ticking","addListeners","currentState","changeCallbacks","mobileCallbacks","desktopCallbacks","requestTick","requestAnimationFrame","update","callback","on","innerWidth","components","input","Search","customComponents","Timer","searchText","listen","setAttribute","setTimeout","typeOutPlaceholderText","clear","setInterval","substr","focus","addEventListener","resetSearchInput","querySelector","menuClass","searchClass","micrositeClass","undefined","buttons","menu","search","close","flyout","header","Toolbar","$element","addSearchLogic","FocusTrap","addFocusTrapLogic","isMicrosite","searchComponent","headerComponent","initialFocus","flyoutComponent","arr","classList","arrayLength","includes","tid","split","menuActive","contains","searchActive","isActive","isSearch","searchButton","deactivate","activate","Keyboard","getCode","Escape","activeClass","menuButton","closeButton","Viewport","querySelectorAll","fadeOut","focusIn","remove","focusOut","css","keyDownHandler","clickHandler","callbacks","request","Sticky","register","Change","onChange","innerHeight","height","speed","fade","dots","arrows","slidesToShow","slidesToScroll","responsive","breakpoint","Gallery","$gallery","build","slick","menuBlock","menuParent","activeTrailClass","expandActiveMenus","closeUnnestedMenus","focusout","hover","delay","in","out","Navigation","preprocess","menuParents","index","id","submenu","link","firstElementChild","innerText","button","createElement","nextSibling","lastElementChild","TickTock","Tabbable","tabbable","collapse","expand","micrositeLinks","parentNode","target","getAttribute","openSubmenus","openSubmenu","expandElement","expandSubmenu","collapseElement","collapseSubmenu","states","active","open","removeAttribute","expanded","keyDownEventDispatcher","mouseDownEventDispatcher","focusOutEventDispatcher","mouseOverHandler","mouseOutHandler","Enter","userInteractionHandler","clearAll","relatedTarget","SmartFooter","$reactiveElement","outerHeight","storageKey","paginationLabel","filtersLabel","filterByPostTypes","useFilters","filters","defaultFilters","All","CalendarFeed","getFilters","buildCalendar","createFilters","$group","$posts","currentYear","currentMonth","post","$post","oDates","type","datetime","date","moment","month","format","mon","day","dow","year","start","toLowerCase","$year","$tile","markup","isSameMonth","end","isSameDay","isSameYear","next","$filters","types","ids","getDefaultData","getCustomizedData","currentFilter","sessionStorage","getItem","hash","location","decodeURIComponent","$filter","$show","inArray","not","stop","animate","opacity","setItem","$shown","nextUntil","$ctrl","filterHandler","trigger","_types","_ids","regex","test","exec","indexes","aResults","aTypes","parseInt","indexOf","sort","FixNavigation","process","$parent","children","$children","parent","TermNavigation","standardize","addLogic","match","level","parentElement","list","buttonLink","AccordionWrap","getClasses","status","getStatus","addBack","wrapAll","$classes","hasClass","elemClasses","val","substring","$status","selector","AccordionFix","click","setVert","stopPropagation","isVisible","topOffset","documentElement","scrollTop","e","elementTop","elementBottom","viewportTop","viewportBottom","elem","SearchRelocate","$body","getBody","mobileActive","desktopActive","outerWidth","prependTo","ConvertToModaal","old","isVideo","new","cloneNode","replaceChild","isGallery","caption","textContent","modaal","start_open","Modaal","child","placeholder","optionSrc","SelectBox","$links","$select","$list","$options","label","option","select2","hide","params","destination","numerator","after","SelectList","$destination","prepend","targetUrl","targetLabel","sourceSelector","destSelector","isPseudo","BackgroundImage","addBackgroundImage","getSource","src","Flickity","setJQuery","jQuery","sliderConfig","arrowShape","wrapAround","prevNextButtons","draggable","FlickityHomePod","shouldBuildSlider","buildSlider","slider","sliderElement","slides","linkLocation","Redirect","url","href","BrowserCheck","browserArr","uagent","navigator","userAgent","chrome","firefox","msie","safari","opr","browser","version","keys","matchCheck","RegExp","newMatch","opera","browserCheck","closest","searchRelocate","accordionWrap","accordionContainer","AccordionContainer","bgImage","bannerBgImage","podBgImage","redirect","homeSlider","$map","$nav","digitaldcoreCreateSiteMap","selectIdentifier","headerlinksSelect","keydown","which","headerlinks","helpHeader","insertAdjacentElement"],"mappings":"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","file":"theme.min.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([347,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","/* global Drupal */\nimport $ from 'jquery';\n\nlet behaviors;\nlet documentIsReady = false;\n\n/**\n * Allows a Drupal behavior to be added from an AMD-style module. The behavior\n * will be executed when:\n * - As soon as the DOM is ready, if the DOM is not ready when the behavior is\n * added, just like a regular Drupal behavior.\n * - Immediately upon adding, if the DOM is ready (which may happen since\n * AMD-style modules are loaded asynchronously).\n * - When Drupal.attachBehaviors is executed.\n */\nDrupal.behavior = function addDrupalBehavior(fn) {\n if (!behaviors) {\n behaviors = $.Callbacks();\n documentIsReady = false;\n\n $(document).ready(() => {\n documentIsReady = true;\n behaviors.fire(document);\n\n // Now that we know the document is ready, add ourselves to Drupal's\n // behavior handling.\n window.Drupal.behaviors.DrupalAMD = function DrupalAMD(context) {\n behaviors.fire(context);\n };\n });\n }\n\n // Note: we can't use the 'memory' option of jQuery.Callbacks, because we\n // need control over the argument.\n if (documentIsReady) {\n fn(document);\n }\n\n behaviors.add(fn);\n return this;\n};\n\nexport default Drupal;\n","import $ from 'jquery';\n\nconst defaults = {\n photoGalleryPID: 107,\n behaviors: {\n a11y: true,\n itemAppearsIn: true,\n fullNodeRelatedLinks: true,\n bundledReferringContent: true,\n subtermOverviews: true,\n lexiconGlossary: true,\n nodeMeta: true,\n slideshowIcons: true,\n expandingDates: true,\n },\n};\n\nexport default class DDTemplates {\n constructor(context, options) {\n this.context = context;\n this.isNodeView = this.isNode();\n this.settings = Object.assign({}, defaults, options);\n // Global behaviors\n this.defineApplicableBehaviors('global', this.context);\n // Current view behaviors only\n this.defineApplicableBehaviors(this.isNodeView ? 'node' : 'term', this.context);\n }\n\n /**\n * Simple check to see if the current body element contains the node class.\n */\n isNode() {\n return $(document.body, this.context).is('.n, .section-node');\n }\n\n /**\n * Segregates behaviors by different types of common views. If they're\n * enabled, define them in this module.\n */\n defineApplicableBehaviors(view) {\n const behaviors = {\n node: [\n 'itemAppearsIn',\n 'bundledReferringContent',\n ],\n term: [\n 'subtermOverviews',\n 'lexiconGlossary',\n ],\n global: [\n 'a11y',\n 'nodeMeta',\n 'slideshowIcons',\n 'expandingDates',\n ],\n };\n\n // Cycle through each behavior and only add it if it's enabled\n behaviors[view].forEach((behavior) => {\n this.addEnabledBehavior(behavior);\n });\n }\n\n /**\n * A way to enable only behaviors the theme requires.\n */\n addEnabledBehavior(behavior) {\n const enabled = this.settings.behaviors[behavior];\n if (enabled) {\n this[behavior].call(this);\n }\n }\n\n /**\n * Helper class for theming the appearing navigation block\n */\n itemAppearsIn() {\n const $appearingNav = $('.appearing-nav', this.context);\n const $links = $appearingNav.find('ul.links li');\n if (!$links.length) {\n $appearingNav.addClass('placeholder-block');\n }\n }\n\n /**\n * Hides the blocks if no content is present.\n */\n bundledReferringContent() {\n const $blocks = $('#block-digitaldcore-node_referring, #block-digitaldcore-node_bundled', this.context);\n $blocks.each((i, element) => {\n const $block = $(element);\n const $nodes = $block.find('.node-teaser');\n if (!$nodes.length) {\n $block.addClass('placeholder-block');\n }\n });\n }\n\n /**\n * Accessibility fixes\n */\n a11y() {\n $('.field-image a', this.context).attr('tabindex', -1);\n }\n\n /**\n * Finds the real last meta item and identifies node of visible meta info\n */\n nodeMeta() {\n const $nodes = $('.node', this.context);\n $nodes.each((a, node) => {\n // Create a meta object\n const $node = $(node);\n const $meta = $node.find('.node-upper-meta');\n const $items = $meta.find('.meta-item');\n\n // Clean up last classname\n $items.removeClass('last');\n\n // Filter to just visible items\n const $visible = $items.map((i, item) => {\n const props = window.getComputedStyle(item);\n const display = props.getPropertyValue('display');\n return display !== 'none' ? item : null;\n });\n\n // Correctly identify last meta item and label node with the has-meta flag\n if ($visible.length) {\n $node.addClass('has-meta');\n $visible.filter(':last').addClass('last new-dd-templates-functionality');\n }\n });\n }\n\n /**\n * If there is more than two event dates, functionality is added to show and\n * hide all events within one container.\n *\n * Helps cleans up the look of meta data.\n *\n * @note:\n * This is only enabled for blocks with the 'posts' classname and all\n * full post views\n */\n expandingDates() {\n $('.posts .node, .node-full', this.context).each((a, node) => {\n $('.node-meta, .node-upper-meta', node).each((b, meta) => {\n const $meta = $(meta);\n const $dates = $('.event-date', node);\n\n if ($dates.length > 2) {\n // Create and add functionality to display all other dates\n const $link = $('Show all dates');\n $link.bind('click', (event) => {\n event.preventDefault();\n $meta.toggleClass('show-all-dates');\n $(event.currentTarget).text($meta.is('.show-all-dates') ? 'Hide all dates' : 'Show all dates');\n });\n $link.insertBefore($dates.eq(0));\n\n // Move all other dates\n const $container = $('
');\n $dates.appendTo($container);\n $meta.append($container);\n }\n });\n });\n }\n\n /**\n * Adds markup to slideshow teasers to show an icon overlay\n */\n slideshowIcons() {\n const $slideshowNodes = $(`.pt${this.settings.photoGalleryPID}.node-teaser`, this.context);\n // cycle through each node instance\n $slideshowNodes.each((a, element) => {\n const $images = $(element).find('.field-image');\n // cycle through each field image instance\n $images.each((b, image) => {\n const $img = $(image).find('img');\n // add a button helper classname\n $(image).find('a').addClass('slideshow-btn');\n // prepend the icon overlay\n $img.before('');\n });\n });\n }\n\n /**\n * Adds the has more class to subterm overviews to properly control node-link display\n */\n subtermOverviews() {\n $('.subterm-overview .node-teaser', this.context).removeClass('no-more').addClass('has-more');\n }\n\n /**\n * Helper function to theme the category letters and seperate the sections\n */\n lexiconGlossary() {\n $('#glossary', this.context).find('.lexicon-list > a').each((i, element) => {\n const letter = $(element).attr('id').replace('letter_', '');\n $(element).html(letter.toUpperCase());\n });\n }\n}\n","import $ from 'jquery';\nimport Headroom from 'headroom.js';\n\n// Headroom settings\nconst settings = {\n // vertical offset in px before element is first unpinned\n offset: 80,\n // scroll tolerance in px before state changes\n tolerance: 5, // or {down: 0, up: 0},\n // css classes to apply\n classes: {\n // when element is initialised\n initial: 'headroom',\n // when scrolling up\n pinned: 'locked',\n // when scrolling down\n unpinned: 'unlocked',\n // when above offset\n top: 'top',\n // when below offset\n notTop: 'not-top',\n // when at bottom of scoll area\n bottom: 'bottom',\n // when not at bottom of scroll area\n notBottom: 'not-bottom',\n },\n // callback when pinned, `this` is headroom object\n onPin() {\n $(document.body).addClass('locked').removeClass('unlocked');\n },\n // callback when unpinned, `this` is headroom object\n onUnpin() {\n $(document.body).addClass('unlocked').removeClass('locked');\n },\n // callback when above offset, `this` is headroom object\n onTop() {\n $(document.body).addClass('top').removeClass('not-top');\n },\n // callback when below offset, `this` is headroom object\n onNotTop() {\n $(document.body).addClass('not-top').removeClass('top');\n },\n // callback at bottom of page, `this` is headroom object\n onBottom() {},\n // callback when moving away from bottom of page, `this` is headroom object\n onNotBottom() {},\n};\n\nexport default class Header {\n constructor(element) {\n // Create a new Headroom instance\n const headroom = new Headroom(element, settings);\n // Initialize this Headroom instance\n headroom.init();\n // Return back the new instance\n return headroom;\n }\n}\n","import $ from 'jquery';\n\nconst breakpoint = 1300;\n\nclass Viewport {\n constructor() {\n this.change = this.change.bind(this);\n this.mobileState = null;\n this.ticking = false;\n this.addListeners();\n }\n\n /* eslint-disable class-methods-use-this */\n get currentState() {\n return window.innerWidth < breakpoint;\n }\n\n update() {\n this.ticking = false;\n\n // Check to see if the view state has changed\n if (this.currentState !== this.mobileState) {\n this.mobileState = this.currentState;\n\n // Announce screen has changed\n if (this.changeCallbacks) {\n this.changeCallbacks.fire();\n }\n\n // Announce screen has changed to mobile mode\n if (this.mobileCallbacks && this.mobileState) {\n this.mobileCallbacks.fire();\n }\n\n // Announce screen has changed to desktop mode\n if (this.desktopCallbacks && !this.mobileState) {\n this.desktopCallbacks.fire();\n }\n }\n }\n\n change() {\n this.requestTick();\n }\n\n requestTick() {\n if (!this.ticking) {\n requestAnimationFrame(this.update.bind(this));\n this.ticking = true;\n }\n }\n\n onMobileChange(callback) {\n if (!this.mobileCallbacks) {\n this.mobileCallbacks = $.Callbacks('memory');\n }\n this.mobileCallbacks.add(callback);\n return this;\n }\n\n onDesktopChange(callback) {\n if (!this.desktopCallbacks) {\n this.desktopCallbacks = $.Callbacks('memory');\n }\n this.desktopCallbacks.add(callback);\n return this;\n }\n\n onChange(callback) {\n if (!this.changeCallbacks) {\n this.changeCallbacks = $.Callbacks('memory');\n }\n this.changeCallbacks.add(callback);\n return this;\n }\n\n addListeners() {\n $(window).on('resize orientationchange', this.change);\n }\n}\n\nexport default new Viewport();\n","import Timer from 'tick-tock';\n\nconst components = {\n text: '#edit-box-text',\n input: '#edit-keywords',\n};\n\nexport default class Search {\n constructor(element, customComponents) {\n // Make reference to the passed in element.\n this.element = element;\n\n // Manage intervals and timeouts with the TickTock tool.\n this.Timer = new Timer();\n\n // Merge default components with custom ones, if applicable.\n this.components = Object.assign({}, components, customComponents);\n\n // Reference the value of the searchText before we clear it out.\n this.searchText = this.text.value;\n\n // Clear out values of these components.\n this.input.value = '';\n this.text.value = '';\n\n // Event management\n this.listen();\n }\n\n // Focus the search box after a small delay.\n\n focusIn() {\n this.input.setAttribute('placeholder', '');\n this.Timer.setTimeout('focus', () => {\n this.typeOutPlaceholderText();\n }, 250);\n }\n\n // Cancel any search input timeouts that may be running.\n\n focusOut() {\n this.Timer.clear('focus');\n this.Timer.clear('typing');\n }\n\n // Types out placeholder text on focusin state.\n\n typeOutPlaceholderText() {\n let i = 0;\n if (!this.input.value.length) {\n this.Timer.setInterval('typing', () => {\n if (i <= this.searchText.length) {\n this.input.setAttribute('placeholder', this.searchText.substr(0, i));\n this.input.focus();\n i += 1;\n } else {\n this.Timer.clear('typing');\n }\n }, 60);\n }\n }\n\n // This is a workaround to overcome the default dd-search.js search\n // input scripted behaviors.\n\n resetSearchInput() {\n if (this.searchText === this.input.value) {\n this.input.value = '';\n }\n }\n\n // Listening so that we can override previously set scripted behaviors.\n\n listen() {\n this.input.addEventListener('focusin', this.resetSearchInput.bind(this));\n this.input.addEventListener('focusout', this.resetSearchInput.bind(this));\n }\n\n // Getters of various components.\n\n get text() {\n return this.element.querySelector(this.components.text);\n }\n\n get input() {\n return this.element.querySelector(this.components.input);\n }\n}\n","import $ from 'jquery';\nimport FocusTrap from 'focus-trap';\nimport Keyboard from 'keyboard-key';\nimport Viewport from './Viewport';\nimport Search from './Search';\n\nconst defaults = {\n menuClass: 'menu-active',\n searchClass: 'search-active',\n micrositeClass: undefined,\n buttons: {\n menu: '.menu-icon',\n search: '.search-icon',\n close: '.close-icon',\n },\n components: {\n flyout: '#flyout',\n search: '#dd-search',\n header: '.page-header',\n },\n};\n\nexport default class Toolbar {\n constructor(element, options) {\n this.element = element;\n this.$element = $(element);\n this.settings = Object.assign({}, defaults, options);\n this.Search = this.addSearchLogic();\n this.FocusTrap = this.addFocusTrapLogic();\n this.isMicrosite();\n this.listen();\n }\n\n // Add search logic to manage the various states of the search component\n\n addSearchLogic() {\n return this.searchComponent ? new Search(this.searchComponent) : false;\n }\n\n // Add focus-trap logic to manage focus state when flyout is expanded.\n\n addFocusTrapLogic() {\n return new FocusTrap(this.headerComponent, {\n initialFocus: this.flyoutComponent,\n });\n }\n\n // Check microsite status and get class\n isMicrosite() {\n const arr = (document.querySelector('body').classList);\n const arrayLength = arr.length;\n for (let i = 0; i < arrayLength; i += 1) {\n const isMicrosite = arr[i].includes('microsite-');\n if (isMicrosite) {\n const classArr = arr[i].split('-');\n const tid = classArr[1];\n this.settings.micrositeClass = tid;\n }\n }\n }\n\n // Manage click events.\n\n clickHandler(event) {\n const menuActive = document.body.classList.contains(this.settings.menuClass);\n const searchActive = document.body.classList.contains(this.settings.searchClass);\n const isActive = menuActive || searchActive;\n const isSearch = event.currentTarget === this.searchButton;\n\n if (isActive) {\n this.deactivate();\n } else {\n this.activate(isSearch);\n }\n }\n\n // Manage keydown events.\n\n keyDownHandler(event) {\n const keyCode = Keyboard.getCode(event);\n if (keyCode === Keyboard.Escape) {\n this.deactivate();\n }\n }\n\n // Activates the flyout and all of the associated buttons.\n\n activate(search) {\n const activeClass = search ? this.settings.searchClass : this.settings.menuClass;\n document.body.classList.add(activeClass);\n this.menuButton.setAttribute('aria-expanded', !search);\n this.searchButton.setAttribute('aria-expanded', search);\n this.closeButton.setAttribute('aria-expanded', !search);\n\n if (search && !Viewport.mobileState) {\n $(document.querySelectorAll('.toolbar .social-links')).each((i, element) => {\n $(element).fadeOut(100);\n });\n }\n\n // Leverage the focus trap logic to lock active element focus\n // within the flyout only (on mobile devices specifically).\n if (Viewport.mobileState) {\n this.FocusTrap.activate();\n }\n\n if (search && this.Search) {\n // Leverage the Search logic to manage it's focus in state.\n this.Search.focusIn();\n } else {\n // If the menu button is clicked, focus the flyout container.\n this.flyoutComponent.focus();\n }\n }\n\n // Deactivates the flyout and all of the associated buttons.\n\n deactivate() {\n this.FocusTrap.deactivate();\n document.body.classList.remove(this.settings.menuClass);\n document.body.classList.remove(this.settings.searchClass);\n this.menuButton.setAttribute('aria-expanded', false);\n this.searchButton.setAttribute('aria-expanded', false);\n this.closeButton.setAttribute('aria-expanded', false);\n\n // Leverage the Search logic to manage it's focus out state.\n\n if (this.Search) {\n this.Search.focusOut();\n if (this.settings.micrositeClass === '210') {\n $(document.querySelector('.headerlinks-fire')).css('display', 'inline-block');\n $(document.querySelector('.toolbar .header-social-links-fire')).css('display', 'inline-block');\n } else if (this.settings.micrositeClass === '212') {\n $(document.querySelector('.headerlinks-police')).css('display', 'inline-block');\n $(document.querySelector('.toolbar .header-social-links-police')).css('display', 'inline-block');\n } else {\n // $(document.querySelector('.headerlinks')).css('display', 'inline-block');\n $(document.querySelector('.toolbar .social-links')).css('display', 'inline-block');\n }\n }\n }\n\n // Set up event listeners to help control the various states of the toolbar and flyout.\n\n listen() {\n this.element.addEventListener('keydown', this.keyDownHandler.bind(this));\n this.menuButton.addEventListener('click', this.clickHandler.bind(this));\n this.searchButton.addEventListener('click', this.clickHandler.bind(this));\n this.closeButton.addEventListener('click', this.clickHandler.bind(this));\n }\n\n // Getters of the various components available\n\n get menuButton() {\n return this.element.querySelector(this.settings.buttons.menu);\n }\n\n get searchButton() {\n return this.element.querySelector(this.settings.buttons.search);\n }\n\n get closeButton() {\n return document.querySelector(this.settings.buttons.close);\n }\n\n get flyoutComponent() {\n return document.querySelector(this.settings.components.flyout);\n }\n\n get searchComponent() {\n return document.querySelector(this.settings.components.search);\n }\n\n get headerComponent() {\n return document.querySelector(this.settings.components.header);\n }\n}\n","import $ from 'jquery';\n\nclass Change {\n constructor() {\n this.change = this.change.bind(this);\n this.ticking = false;\n this.listen();\n }\n\n update() {\n this.ticking = false;\n if (this.callbacks) {\n this.callbacks.fire();\n }\n }\n\n change() {\n this.request();\n }\n\n request() {\n if (!this.ticking) {\n requestAnimationFrame(this.update.bind(this));\n this.ticking = true;\n }\n }\n\n onChange(callback) {\n if (!this.callbacks) {\n this.callbacks = $.Callbacks('memory');\n }\n this.callbacks.add(callback);\n return this;\n }\n\n listen() {\n $(window).on('scroll resize orientationchange', this.change);\n }\n}\n\nexport default new Change();\n","import $ from 'jquery';\nimport Change from './Change';\n\nconst OFFSET = 115 + 35; // header height plus top offset of sidebars\n\nexport default class Sticky {\n constructor(element) {\n this.element = element;\n this.$element = $(element);\n this.register();\n }\n\n register() {\n Change.onChange(this.update.bind(this));\n Change.update();\n }\n\n update() {\n if (window.innerHeight - OFFSET > this.$element.height()) {\n this.$element.addClass('sticky');\n } else {\n this.$element.removeClass('sticky');\n }\n\n return this;\n }\n}\n","import $ from 'jquery';\nimport 'slick-carousel';\n\nconst defaults = {\n speed: 500,\n fade: true,\n dots: true,\n arrows: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: 690,\n settings: {\n arrows: false,\n },\n },\n ],\n};\n\nexport default class Gallery {\n constructor(element, options) {\n this.element = element;\n this.$element = $(element);\n this.settings = Object.assign({}, defaults, options);\n this.$gallery = this.build();\n this.ready();\n }\n\n build() {\n return this.$element.slick(this.settings);\n }\n\n ready() {\n this.$element.addClass('ready');\n }\n}\n","import tabbable from 'tabbable';\nimport TickTock from 'tick-tock';\nimport Keyboard from 'keyboard-key';\nimport Viewport from './Viewport';\n\n/**\n * @file Navigation\n *\n * Transforms an existing HTML list into an accessible navigation menu w/dropdowns.\n *\n * @constructor\n * @param element {HTML element} Menu list\n * @param options {object} Custom options to override the defaults of this instance.\n *\n * @constant defaults {object} Default options of this module\n * @param menuBlock {string} Namespace to be used for this instance\n * @param menuParent {string} DOM selector of the list items which contain a submenu\n * @param activeClass {string} Classname to be used to reference a active element\n * @param activeTrailClass {string} Classname to be used to reference a active element ancestor\n * @param expandActiveMenus {boolean} Whether or not to open active menus in the active trail\n * @param closeUnnestedMenus {boolean} Whether or not to close menus that are not\n * decendents of the currently interacted menu tree\n * @param focusout {boolean} Whether or not to close open menus when the block has lost focus\n * @param hover {boolean} Whether or not to control menu display based on mouse interaction\n * @var delay {object}\n * @param in {int} Hover delay on mouse over\n * @param out {int} Hover delay on mouse out\n *\n */\n\nconst defaults = {\n menuBlock: 'navigation',\n menuParent: '.menuparent',\n activeClass: 'active',\n activeTrailClass: 'active-trail',\n expandActiveMenus: false,\n closeUnnestedMenus: true,\n focusout: true,\n hover: false,\n delay: {\n in: 150,\n out: 250,\n },\n};\n\nexport default class Navigation {\n constructor(element, options) {\n this.menu = element;\n this.settings = Object.assign({}, defaults, options);\n this.preprocess();\n this.listen();\n }\n\n // Add appropriate accessibility attributes to existing markup\n // and the toggle button which manages the submenu display.\n\n preprocess() {\n this.menuParents.forEach((element, index) => {\n // Set unique ID to link the button to the submenu.\n const id = `${this.components.submenu}-${index}`;\n\n // Link\n const link = element.firstElementChild;\n link.setAttribute('aria-label', `${link.innerText}, tab to the next button to expand the submenu`);\n link.setAttribute('aria-haspopup', true);\n link.setAttribute('aria-controls', id);\n\n // Toggle button\n const button = document.createElement('button');\n button.classList.add(this.components.button);\n button.setAttribute('aria-haspopup', true);\n button.setAttribute('aria-controls', id);\n button.innerText = link.innerText;\n element.insertBefore(button, link.nextSibling);\n\n // Submenu\n const submenu = element.lastElementChild;\n submenu.id = id;\n submenu.classList.add(this.components.submenu);\n submenu.Timer = new TickTock();\n submenu.Tabbable = tabbable(submenu);\n\n // Add each reference within the parent.\n element.link = link;\n element.button = button;\n element.submenu = submenu;\n\n // Set initial state of components\n this.collapse(element);\n\n // Manage display of the active trail, if configured.\n if (this.settings.expandActiveMenus) {\n const isActiveTrail = element.classList.contains(this.settings.activeTrailClass);\n if (isActiveTrail) {\n this.expand(element, false);\n }\n }\n });\n\n this.micrositeLinks.forEach((element) => {\n element.setAttribute('target', '_blank');\n });\n }\n\n // Update submenu display based on user interaction.\n\n userInteractionHandler(event) {\n const { parentNode } = event.target;\n const { button, submenu } = parentNode;\n\n // If there isn't a submenu and button, quit.\n if (!submenu && !button) return;\n\n // Set expand state based on current aria-expanded attribute set on the button.\n const expand = button.getAttribute('aria-expanded') === 'false';\n\n // Set the current state of the associate submenu and button.\n if (expand) {\n this.expand(parentNode, true);\n } else {\n this.collapse(parentNode);\n }\n\n // Only continue to close unnested expanded submenus if the setting is true and\n // we're not viewing in a mobile state.\n if (!this.settings.closeUnnestedMenus || Viewport.mobileState) return;\n\n // Loop thru each open submenu\n this.openSubmenus.forEach((openSubmenu) => {\n // If the button interacted with is not within this subtree, collapse it.\n if (!openSubmenu.parentNode.contains(button)) {\n this.collapse(openSubmenu.parentNode);\n }\n });\n }\n\n // Sets the expanded state of the passed in components.\n\n expand(parentNode, focus) {\n const { link, button, submenu } = parentNode;\n this.expandElement(link);\n this.expandElement(button);\n this.expandSubmenu(submenu, focus);\n }\n\n // Sets the collapsed state of the passed in components.\n\n collapse(parentNode) {\n const { link, button, submenu } = parentNode;\n this.collapseElement(link);\n this.collapseElement(button);\n this.collapseSubmenu(submenu);\n }\n\n // Sets the expanded state of the passed in element.\n\n /* eslint-disable-next-line */\n expandElement(element) {\n element.setAttribute('aria-expanded', true);\n }\n\n // Sets the collapsed state of the passed in element.\n\n /* eslint-disable-next-line */\n collapseElement(element) {\n element.setAttribute('aria-expanded', false);\n }\n\n // Sets the expanded state of the submenu.\n\n expandSubmenu(submenu, focus) {\n submenu.parentNode.classList.add(this.states.active);\n submenu.classList.add(this.states.open);\n submenu.removeAttribute('aria-hidden');\n submenu.expanded = true;\n\n // Don't focus if it's not set to.\n if (!focus) return;\n\n // Focus the first tabbable element after submenu is expanded.\n submenu.Timer.setTimeout('focus', () => {\n submenu.Tabbable[0].focus();\n }, 100);\n }\n\n // Sets the collapsed state of the submenu.\n\n collapseSubmenu(submenu) {\n submenu.parentNode.classList.remove(this.states.active);\n submenu.classList.remove(this.states.open);\n submenu.setAttribute('aria-hidden', true);\n submenu.expanded = false;\n }\n\n // Completely reset the state of the menu\n\n clearAll() {\n this.openSubmenus.forEach((openSubmenu) => {\n this.collapse(openSubmenu.parentNode);\n });\n }\n\n // Add event listeners to the array of event types.\n\n listen() {\n this.menu.addEventListener('keydown', this.keyDownEventDispatcher.bind(this));\n this.menu.addEventListener('mousedown', this.mouseDownEventDispatcher.bind(this));\n\n // Whether or not to close open menus if the block loses focus.\n if (this.settings.focusout) {\n this.menu.addEventListener('focusout', this.focusOutEventDispatcher.bind(this));\n }\n\n // Whether or not to activate menus on a mouseover event.\n if (this.settings.hover) {\n this.menuParents.forEach((menuParent) => {\n menuParent.addEventListener('mouseover', this.mouseOverHandler.bind(this));\n menuParent.addEventListener('mouseout', this.mouseOutHandler.bind(this));\n });\n }\n }\n\n // Dispatch events for the keydown event type.\n\n keyDownEventDispatcher(event) {\n const keyCode = Keyboard.getCode(event);\n switch (keyCode) {\n case Keyboard.Enter:\n // if the keydown is caused by the return key, it should be a click\n this.userInteractionHandler(event);\n break;\n case Keyboard.Escape:\n // if the keydown is caused by the escape key, close the menus\n this.clearAll();\n break;\n default: break;\n }\n }\n\n // Dispatch events for the mousedown event type.\n\n mouseDownEventDispatcher(event) {\n this.userInteractionHandler(event);\n }\n\n // Attach a listener to close everything when a user\n // interacts outside of the menu.\n\n focusOutEventDispatcher(event) {\n if (!this.menu.contains(event.relatedTarget) && !Viewport.mobileState) {\n this.clearAll();\n }\n }\n\n // Manages menu states on a mouse over event.\n\n mouseOverHandler(event) {\n const { submenu } = event.currentTarget;\n submenu.Timer.clear('collapse');\n\n // Stop mouse actions on smaller devices.\n if (Viewport.mobileState) return;\n\n // Quit if the menu is already expanded.\n if (submenu.expanded) return;\n\n // Stage menu to be expanded.\n submenu.Timer.setTimeout('expand', () => {\n this.expand(submenu.parentNode, false);\n }, this.settings.delay.in);\n }\n\n // Manages menu states on a mouse out event.\n\n mouseOutHandler(event) {\n const { submenu } = event.currentTarget;\n submenu.Timer.clear('expand');\n\n // Stop mouse actions on smaller devices.\n if (Viewport.mobileState) return;\n\n // Quit if the menu is already collapsed.\n if (!submenu.expanded) return;\n\n // Stage menu to be collapsed.\n submenu.Timer.setTimeout('collapse', () => {\n this.collapse(submenu.parentNode);\n }, this.settings.delay.out);\n }\n\n // BEM conventions using the passed in `menuBlock` namespace for all states.\n\n get states() {\n return {\n active: `${this.settings.menuBlock}--active`,\n open: `${this.settings.menuBlock}__submenu--open`,\n };\n }\n\n // BEM conventions using the passed in `menuBlock` namespace for all components.\n\n get components() {\n return {\n button: `${this.settings.menuBlock}__toggle`,\n submenu: `${this.settings.menuBlock}__submenu`,\n };\n }\n\n // Getters for obtaining NodeLists of various elements.\n\n get menuParents() {\n return this.menu.querySelectorAll(this.settings.menuParent);\n }\n\n get buttons() {\n return this.menu.querySelectorAll(`.${this.components.button}`);\n }\n\n get submenus() {\n return this.menu.querySelectorAll(`.${this.components.submenu}`);\n }\n\n get openSubmenus() {\n return this.menu.querySelectorAll(`.${this.states.open}`);\n }\n\n get micrositeLinks() {\n return this.menu.querySelectorAll('.mt-210 a, .mt-212 a');\n }\n}\n","import $ from 'jquery';\nimport Change from './Change';\n\n/**\n * SmartFooter\n * Offsets a height to make room for the absolutely placed footer.\n *\n * @param element {HTML Element} Footer element to base height offset from.\n * @param $reactiveElement {jQuery Element} Element that should be offset by the height calculated.\n * @exports {Class} SmartFooter instance\n */\nexport default class SmartFooter {\n constructor(element, $reactiveElement) {\n this.$element = $(element);\n this.$reactiveElement = $reactiveElement;\n this.register();\n this.update();\n this.ready();\n }\n\n register() {\n // Listen for change event.\n Change.onChange(this.update.bind(this));\n }\n\n update() {\n // Update height on change event.\n const height = this.$element.outerHeight();\n this.$reactiveElement.css('padding-bottom', height);\n }\n\n ready() {\n // Set ready state of passed in footer element.\n this.$element.addClass('ready');\n }\n}\n","import $ from 'jquery';\nimport moment from 'moment';\n\nconst defaults = {\n // local storage key used to save the currently applied filter\n storageKey: 'currentCalendarFilter',\n\n // Button text displayed as the pagination to the next page of events\n paginationLabel: 'Load More Events',\n\n // Mobile only drop down label that houses the filtering options\n filtersLabel: 'Filter by...',\n\n // Force the filters to be automatically determined by the post types present in the feed.\n filterByPostTypes: false,\n\n // A simple indicator to determine the build out of filters\n useFilters: false,\n\n // Used to pass in an object of filters which use key value pairs.\n // {Object}\n // @key: Name that will appear as the filter button text\n // @value: ID of post type or navigation term\n filters: false,\n};\n\n// These filters are used if the filterByPostTypes is enabled. Present post\n// types are then added to this object, then the filters are made from those.\nconst defaultFilters = {\n All: 2,\n};\n\nexport default class CalendarFeed {\n constructor(element, options) {\n this.$element = $(element);\n this.settings = Object.assign({}, defaults, options);\n this.filters = this.getFilters();\n this.buildCalendar();\n if (this.settings.useFilters) {\n this.createFilters();\n }\n }\n\n buildCalendar() {\n const $posts = this.$element.find('.node');\n const group = '
';\n let currentYear = null;\n let currentMonth = '';\n let $group;\n\n // Manage the types of calendar filters being created\n $posts.each((i, post) => {\n const $post = $(post);\n const dates = ['start', 'end'];\n const oDates = {};\n\n // Parse the start/end timestamps using the moment.js framework\n $.each(dates, (j, type) => {\n const datetime = $post.find(`time.${type}`).attr('datetime');\n const date = moment(datetime);\n oDates[type] = {\n month: date.format('MMMM'),\n mon: date.format('MMM'),\n day: date.format('D'),\n dow: date.format('ddd'),\n year: date.format('YYYY'),\n };\n });\n\n // Add the post into a month grouping\n if (oDates.start.month.length && currentMonth !== oDates.start.month) {\n currentMonth = oDates.start.month;\n $group = $(group);\n $group.addClass(oDates.start.month.toLowerCase());\n $group.append(`

${oDates.start.month}

`);\n $post.before($group);\n\n // Set year labels followed by the associated months of that year\n if (oDates.start.year && oDates.start.year > currentYear) {\n const $year = $(`${oDates.start.year}`);\n $group.before($year);\n currentYear = oDates.start.year;\n }\n }\n\n // Dynamically create the date tile for the event display\n const $tile = $post.find('.event-date-tile');\n const markup = data => `${data.dow}${data.mon}${data.day}`;\n $tile.find('time.start').html(markup(oDates.start));\n\n // Handle date ranges\n if ($tile.is('.range')) {\n const isSameMonth = oDates.start.month === oDates.end.month;\n const isSameDay = oDates.start.day === oDates.end.day;\n const isSameYear = oDates.start.year === oDates.end.year;\n\n // This identifies an event which begins and ends at different times on the same day\n if (isSameMonth && isSameDay && isSameYear) {\n $post.addClass('day-event');\n }\n\n // This identifies an event which spans multiple days within the same month\n if (isSameMonth && !isSameDay && isSameYear) {\n $post.addClass('multiple-day-event');\n $tile.find('time.start .day').text(`${oDates.start.day}-${oDates.end.day}`);\n }\n\n // This identifies an event which spans multiple months or maybe a year(s)\n if (!isSameMonth || !isSameYear) {\n $post.addClass('multiple-month-event');\n $tile.find('time.end').html(markup(oDates.end));\n }\n }\n\n // Add the grouped posts to the display\n $post.appendTo($group);\n });\n\n // Alter the text of the next pager button\n $('.pager-next a', this.$element).text(this.settings.paginationLabel);\n\n // Add a helper class\n this.$element.addClass('ready');\n }\n\n filterHandler(event) {\n event.preventDefault();\n $(this).next('.filters').toggleClass('expanded');\n }\n\n getFilters() {\n // If custom filters where passed, use them, if not use the defaults.\n let data = this.settings.filters ? this.settings.filters : defaultFilters;\n // If the filter by post types flag is set, force that filtering option.\n if (this.settings.filterByPostTypes) {\n data = defaultFilters;\n }\n return data;\n }\n\n createFilters() {\n const { $element } = this;\n const $posts = $element.find('.node');\n let $filters = $('
');\n const filter = '
';\n const types = [];\n const ids = [];\n\n // Create the proposed filters\n $.each(this.filters, (type, id) => {\n types.push(type);\n ids.push(id);\n });\n\n // Using the proposed filters, generate relevant filters of those types\n // that are actually present or use the semi default, filter by post type.\n const data = this.settings.filterByPostTypes\n ? this.getDefaultData(types, ids)\n : this.getCustomizedData(types, ids);\n\n // Get the latest selected filter.\n let currentFilter = sessionStorage.getItem(this.settings.storageKey) || ids[0];\n\n // See if a hash was passed, if so let's filter by that instead later on.\n let { hash } = window.location;\n if (hash.length > 1) {\n hash = hash.substr(1); // Remove the hash symbol #\n hash = decodeURIComponent(hash); // Normalize the filter passed\n }\n\n // Create filters\n $.each(data.types, (i, type) => {\n const $filter = $(filter);\n // Use the type key to identify the associated filter id\n const id = data.ids[i];\n\n // Check to see if this filter is being forced to be filtered by using\n // a url hash.\n if (hash.length && hash.toLowerCase() === type.toLowerCase()) {\n currentFilter = id;\n }\n\n // Add the type to the filter\n $filter.text(type);\n\n // Add a class name to theme the filter\n $filter.addClass(`show-${ids[i]}`);\n\n // Add the newly created filter\n $filters.append($filter);\n\n // Add a click handler\n $filter.on('click', () => {\n // Default to all posts in calendar feed\n let $show = $posts;\n\n // Filter what posts to display if not all option\n if (type !== 'All') {\n $show = $posts.filter(\n (j, element) => $.inArray(type, $(element).data('types')) !== -1,\n );\n }\n\n // Manage the active filter styling\n $filters.not(this).removeClass('active');\n $(this).addClass('active');\n\n // hide all events that aren't of this type\n $posts.not($show).stop(true, true).animate({\n opacity: 'hide',\n height: 'hide',\n }, 300).removeClass('show');\n\n // show all events that are of this type\n $show.stop(true, true).animate({\n opacity: 'show',\n height: 'show',\n }, 300).addClass('show');\n\n // Set the current filter into session storage\n sessionStorage.setItem(this.settings.storageKey, id);\n currentFilter = id;\n\n // Check to see if the event group is empty\n $element.find('.group').each((j, element) => {\n const $shown = $('.node.show', element);\n const result = $shown.length ? 'show' : 'hide';\n\n // Add a helper class for the use with the year function below\n if ($shown.length) {\n $(element).addClass('show');\n } else {\n $(element).removeClass('show');\n }\n\n // Manages the visibility of the group\n $(element).stop(true, true).animate({\n opacity: result,\n height: result,\n }, 300);\n });\n\n // Check to see if the group year should display or not\n $element.find('.group-year').each((j, element) => {\n const $shown = $(element).nextUntil('.group-year').filter('.show');\n const result = $shown.length ? 'show' : 'hide';\n $(element).stop(true, true).animate({\n opacity: result,\n height: result,\n }, 300);\n });\n });\n });\n\n // Add a drop down controller for mobile\n const $ctrl = $(`

${this.settings.filtersLabel}

`);\n $ctrl.on('click', this.filterHandler);\n\n // Add the drop down controller for mobile display\n $element.find('.view-header').append($ctrl, $filters);\n\n // Make this an jquery array of filters reference rather than a container\n // reference.\n $filters = $filters.find('.filter');\n\n // Simulate a click event for the last or default calendar filter\n $filters.filter(`.show-${currentFilter}`).trigger('click');\n }\n\n getDefaultData(_types, _ids) {\n const { $element } = this;\n const $posts = $element.find('.node');\n\n const types = _types;\n const ids = _ids;\n\n // Dynamically create the filter types and identify the posts that belong\n // to each one.\n $posts.each((i, post) => {\n const $post = $(post);\n\n // Extract the post type\n let type = $('.post-type', post).text();\n\n // If the post type is the generic Event, set the label to All instead.\n if (type === 'Event') {\n type = 'All';\n }\n\n let id = 0;\n const classes = $post.attr('class');\n const regex = /\\w?pt([0-9]+)/;\n\n // Make filters by types found if were using the default filters\n if (regex.test(classes)) {\n /* eslint-disable prefer-destructuring */\n id = regex.exec(classes)[1];\n }\n\n // Make filters by post type\n if ($.inArray(type, types) === -1) {\n types.push(type);\n ids.push(id);\n }\n\n // Add a data types to identify this when a filter is clicked\n $post.data('types', [type]);\n });\n\n return {\n types,\n ids,\n };\n }\n\n getCustomizedData(_types, _ids) {\n const { $element } = this;\n const $posts = $element.find('.node');\n const types = [];\n const ids = [];\n\n // Keep track of the types and ids that have been identified within this content.\n const indexes = [];\n\n // Dynamically create the filter types and identify the posts that belong\n // to each one.\n $posts.each((i, post) => {\n const $post = $(post);\n const classes = $post.attr('class');\n const regex = /\\w?[wp]t([0-9]+)/g; // Filter could be either wt or pt.\n const aTypes = [];\n\n // Add the post type by default\n aTypes.push($('.post-type', post).text());\n\n // If the post type is the generic Event, set the label to All instead.\n if (aTypes[0] === 'Event') {\n aTypes[0] = 'All';\n }\n\n // Iterates through all matches made to see what this post should be\n // filtered by from the filters assigned\n let aResults;\n // eslint-disable-next-line no-cond-assign\n while ((aResults = regex.exec(classes)) !== null) {\n const result = parseInt(aResults[1], 10);\n if ($.inArray(result, _ids) !== -1) {\n const index = _ids.indexOf(result);\n // Check to see if index has already been added, if not, add it.\n if ($.inArray(index, indexes) === -1) {\n indexes.push(index);\n }\n // Add this type to the post since it's been found\n aTypes.push(_types[index]);\n }\n }\n\n // Add a data id to identify this type when the filter is clicked\n $post.data('types', aTypes);\n });\n\n // Create new types and ids of the relevant types found using the\n // supplied custom filters\n $.each(indexes.sort(), (i, index) => {\n types.push(_types[index]);\n ids.push(_ids[index]);\n });\n\n return {\n types,\n ids,\n };\n }\n}\n","import $ from 'jquery';\n\nexport default class FixNavigation {\n constructor(element) {\n this.element = element;\n this.process();\n this.ready();\n }\n\n process() {\n $('.menuparent, .expanded, .collapsed', this.element).each((i, item) => {\n // handles the parent term (if hidden)\n const $parent = $(item).children('a');\n if (!$parent.length || $parent.is('.hidden')) {\n $(item).remove();\n }\n\n // handles the term to see if it only parents orphans.\n let $children = $('> ul > li', item);\n if (!$parent.is('.hidden') && $children.length) {\n // Logged in: shows links with a hidden class.\n $children.children('a.hidden').parent().remove();\n // Logged out: shows an empty li :\\\n $children.filter(':empty').remove();\n // Reset $children to reflect potential missing items.\n $children = $('> ul > li', item);\n // If the list is empty, the parent should no longer be\n // labeled as such and the list should be removed.\n if (!$children.length) {\n $(item).removeClass('menuparent expanded collapsed'); // unlabel\n $(item).find('ul').remove();\n }\n }\n });\n }\n\n ready() {\n $(this.element).addClass('ready');\n }\n}\n","import Viewport from './Viewport';\nimport Navigation from './Navigation';\n\nconst components = {\n menu: '#term-navigation-menu',\n button: '.block-title button',\n buttonLink: '.block-title a',\n};\n\nconst settings = {\n menuBlock: 'term-navigation',\n menuParent: 'li.collapsed, li.expanded',\n expandActiveMenus: true,\n closeUnnestedMenus: false,\n focusout: false,\n hover: false,\n};\n\nexport default class TermNavigation {\n constructor(element) {\n this.element = element;\n this.open = false;\n\n if (this.menu) {\n this.standardize();\n this.addLogic();\n this.listen();\n }\n\n this.ready();\n }\n\n // Add depth classes to our term navigation structure which match the primary\n // navigation. That way we can share styling more easily.\n standardize() {\n this.menu.querySelectorAll('a.menu-link').forEach((link) => {\n const match = link.getAttribute('class').match(/depth-([0-9]+)/);\n if (match) {\n const level = match[1];\n // Replace current class with new depth to retain structure.\n link.classList.remove(`depth-${level}`);\n link.classList.add(`depth-${level - 1}`);\n // Add the appropriate classes to the list and it's items.\n const item = link.parentElement;\n const list = item.parentElement;\n item.classList.add(`depth-${level - 1}`);\n list.classList.add(`depth-${level - 1}`);\n }\n });\n }\n\n // Enhance the term navigation with the standardized, accessible, menu.\n addLogic() {\n return new Navigation(this.menu, settings);\n }\n\n // We want to control the mobile dropdown but let the desktop link go thru.\n clickHandler() {\n if (Viewport.mobileState) {\n if (this.open) {\n this.open = false;\n this.button.setAttribute('aria-expanded', false);\n this.element.classList.remove('term-navigation--open');\n this.menu.setAttribute('aria-hidden', true);\n } else {\n this.open = true;\n this.button.setAttribute('aria-expanded', true);\n this.element.classList.add('term-navigation--open');\n this.menu.setAttribute('aria-hidden', false);\n this.buttonLink.focus();\n }\n }\n }\n\n listen() {\n // Add a click handler to control the mobile dropdown menu\n if (this.button) {\n this.button.addEventListener('click', this.clickHandler.bind(this));\n }\n }\n\n ready() {\n this.element.classList.add('ready');\n }\n\n get button() {\n return this.element.querySelector(components.button);\n }\n\n get buttonLink() {\n return this.element.querySelector(components.buttonLink);\n }\n\n get menu() {\n return this.element.querySelector(components.menu);\n }\n}\n","import $ from 'jquery';\n\nfunction AccordionWrap(element) {\n this.element = element;\n this.$element = $(element);\n this.init();\n this.ready();\n}\n\nAccordionWrap.prototype = {\n init() {\n const classes = (this.getClasses()) ? this.getClasses() : '';\n const status = (this.getStatus()) ? ` style=\"display: ${this.getStatus()}\"` : '';\n this.$element\n .next('.accordion-content')\n .addBack()\n .wrapAll(`
`);\n },\n getClasses() {\n let $classes = null;\n if (this.$element.hasClass('under-tab')) {\n $classes = 'under-tab';\n let elemClasses = this.$element.attr('class');\n elemClasses = elemClasses.split(' ');\n\n for (let i = 0; i < elemClasses.length; i += 1) {\n const val = elemClasses[i];\n if (val.substring(0, 10) === 'under-tab-') {\n $classes += ` ${val}`;\n }\n }\n }\n\n return $classes;\n },\n getStatus() {\n let $status;\n if (this.$element.hasClass('under-tab')) {\n $status = (this.$element.is('.under-tab-0')) ? 'block' : 'none';\n }\n\n return $status;\n },\n ready() {\n setTimeout(() => {\n this.$element.addClass('ready');\n }, 200);\n },\n};\n\nexport default AccordionWrap;\n","import $ from 'jquery';\n\nconst defaults = {\n selector: 'a',\n};\n\nfunction AccordionFix(element, options) {\n this.$element = $(element);\n this.settings = Object.assign(defaults, options);\n this.click = this.click.bind(this);\n this.setVert = this.setVert.bind(this);\n this.listen();\n}\n\nAccordionFix.prototype = {\n listen() {\n this.$element.on('click', this.click);\n },\n click(event) {\n event.preventDefault();\n event.stopPropagation();\n this.setVert(event);\n },\n setVert(event) {\n setTimeout(() => {\n const isVis = this.isVisible(event.target);\n if (!isVis) {\n const topOffset = $(this.$element).offset().top - 80;\n $([document.documentElement, document.body]).animate({\n scrollTop: topOffset,\n }, 500);\n }\n }, 500);\n },\n isVisible(e) {\n const elementTop = $(e).offset().top - 80;\n const elementBottom = elementTop + $(e).outerHeight();\n const viewportTop = $(window).scrollTop();\n const viewportBottom = viewportTop + $(window).height();\n return (elementBottom > viewportTop && elementTop < viewportBottom);\n },\n};\n\nexport default AccordionFix;\n","import $ from 'jquery';\n\nfunction AccordionFix(element) {\n this.$element = $(element);\n this.init();\n}\n\nAccordionFix.prototype = {\n init() {\n this.$element.find(':not(.accordion-item) + .accordion-item, * > .accordion-item:first-of-type, > .accordion-item:first-of-type').each((i, elem) => {\n $(elem)\n .nextUntil(':not(.accordion-item)')\n .addBack()\n .wrapAll('
');\n });\n },\n};\n\nexport default AccordionFix;\n","import $ from 'jquery';\nimport Change from './Change';\n\nconst BREAKPOINT = 1300;\n\nexport default class SearchRelocate {\n constructor(element) {\n this.element = element;\n this.$element = $(element);\n this.$body = this.getBody();\n this.update();\n this.register();\n }\n\n register() {\n Change.onChange(this.update.bind(this));\n }\n\n update() {\n const mobileActive = this.$body.find('.flyout .site-search').length > 0;\n const desktopActive = this.$body.find('.desktop-header .site-search').length > 0;\n if (($(window).outerWidth(true) < BREAKPOINT) && (desktopActive)) {\n this.$element.insertBefore(this.$body.find('.flyout #navigation'));\n } else if (($(window).outerWidth(true) >= BREAKPOINT) && (mobileActive)) {\n this.$element.prependTo(this.$body.find('.desktop-header'));\n }\n this.$element.addClass('ready');\n return this;\n }\n\n getBody() { return $(document.body, this.context); }\n}\n","import $ from 'jquery';\nimport 'modaal';\n\nconst nodeSelector = 'node';\n\nclass ConvertToModaal {\n constructor(node, settings) {\n this.old = node;\n this.settings = settings;\n this.type = 'image';\n\n // Add custom video type.\n if (this.settings.isVideo) {\n this.type = 'video';\n }\n\n // Remove unneeded attributes and classes.\n this.old.removeAttribute('rel');\n this.old.classList.remove('lightbox-processed');\n\n // Clone the node to insure removal of previously set lightbox listeners functions.\n this.new = this.old.cloneNode(true);\n this.old.parentNode.replaceChild(this.new, this.old);\n\n // Add Modaal attributes for this particular link type.\n this.new.setAttribute('data-modaal-type', this.type);\n\n // If this is an image gallery, add the group data attribute.\n if (this.settings.isGallery) {\n this.new.setAttribute('data-group', 'gallery');\n }\n\n // Add the caption, if applicable.\n const caption = this.new.querySelector('.caption');\n if (caption && caption.textContent.length) {\n this.caption = caption.textContent;\n }\n\n if (this.caption) {\n this.new.setAttribute('data-modaal-desc', this.caption);\n }\n\n // Add a replacement listener for our new link.\n this.new.addEventListener('click', this.clickHandler.bind(this));\n }\n\n clickHandler(event) {\n event.preventDefault();\n $(this.new).modaal({\n type: this.type,\n start_open: true,\n });\n }\n}\n\nexport default class Modaal {\n constructor(parent, selector) {\n const settings = {\n isVideo: false,\n isGallery: false,\n };\n\n if (parent.classList.contains(nodeSelector)) {\n // Process individual node.\n settings.isVideo = parent.classList.contains('has-video');\n settings.isGallery = parent.querySelectorAll('img').length > 1;\n parent.querySelectorAll(selector).forEach((child) => {\n child.ConvertToModaal = new ConvertToModaal(child, settings);\n });\n } else {\n // Process group of nodes.\n parent.querySelectorAll(nodeSelector).forEach((node) => {\n settings.isVideo = node.classList.contains('has-video');\n settings.isGallery = parent.querySelectorAll('img').length > 1;\n node.querySelectorAll(selector).forEach((child) => {\n child.ConvertToModaal = new ConvertToModaal(child, settings);\n });\n });\n }\n }\n}\n","import $ from 'jquery';\nimport 'select2';\n\nconst defaults = {\n selector: '.node-links',\n placeholder: 'Select',\n options: 'ul.links',\n optionSrc: '.link:not(.link-read-more)',\n remove: true,\n};\n\nfunction SelectBox(element, options) {\n this.element = element;\n this.$element = $(element);\n this.settings = Object.assign(defaults, options);\n this.create();\n}\n\nSelectBox.prototype = {\n create() {\n const $links = this.$element.find(this.settings.selector);\n const $select = $(``);\n const $list = $links.find(this.settings.options);\n const $options = $list.find(this.settings.optionSrc);\n $select.append(``);\n $options.each((i, item) => {\n const label = $(item).text();\n const value = $('a', item).attr('href');\n const option = ``;\n $select.append(option);\n });\n $select.insertBefore($list);\n $select.select2();\n if (this.settings.selector === '.node-links' && this.settings.remove) {\n $list.hide(); // if .node-links is removed, node flyout is broken\n } else if (this.settings.selector !== '.node-links') {\n $list.remove();\n }\n // Add an on selection change event handler which redirects users to the\n // selected program.\n $select.on('select2:select', (event) => {\n const { data } = event.params;\n if (data && data.id) {\n window.open(data.id, '_self');\n }\n });\n // Add ready class to fade it in.\n $links.addClass('ready');\n },\n};\n\nexport default SelectBox;\n","import $ from 'jquery';\n\nconst defaults = {\n selector: '.node-inner',\n destination: undefined,\n placeholder: undefined,\n optionSrc: '.node-header',\n target: 'a',\n numerator: undefined,\n after: false,\n label: undefined,\n};\n\nfunction SelectList(element, options) {\n this.element = element;\n this.$element = $(element);\n this.settings = Object.assign(defaults, options);\n this.init();\n}\n\nSelectList.prototype = {\n init() {\n const placeholder = (this.settings.placeholder)\n ? this.settings.placeholder\n : this.$element.find('.node-header .title').text();\n const $destination = (this.settings.destination)\n ? this.$element.find(this.settings.destination)\n : this.$element;\n if (this.settings.after) {\n $destination.append(`
`);\n } else {\n $destination.prepend(`
`);\n }\n this.$element.find(this.settings.optionSrc).each((i, elem) => {\n const target = $(elem).find(this.settings.target);\n const targetUrl = $(target).attr('href');\n const targetLabel = $(target).text();\n this.$element.find(`#dynamic_select_${this.settings.numerator}`).append(``);\n });\n },\n};\n\nexport default SelectList;\n","import $ from 'jquery';\n\nconst defaults = {\n sourceSelector: '.field-image.c1 img',\n destSelector: undefined,\n isPseudo: false,\n};\n\nfunction BackgroundImage(element, options) {\n this.$element = $(element);\n this.settings = Object.assign(defaults, options);\n this.addBackgroundImage();\n this.ready();\n}\n\nBackgroundImage.prototype = {\n getSource() { return this.$element.find(this.settings.sourceSelector).attr('src'); },\n\n addBackgroundImage() {\n const src = this.getSource();\n if (src && src.length) {\n if (this.settings.isPseudo) {\n this.$element.find('.node').prepend('');\n this.$element.find('.pod-image-bg').css('background-image', `url(${src})`);\n } else if (this.settings.destSelector) {\n this.$element.find(this.settings.destSelector).css('background-image', `url(${src})`);\n } else {\n this.$element.css('background-image', `url(${src})`);\n }\n this.$element.addClass('hasImage');\n }\n },\n\n ready() {\n setTimeout(() => {\n this.$element.addClass('ready');\n }, 300);\n },\n};\n\nexport default BackgroundImage;\n","import jQuery from 'jquery';\nimport Flickity from 'flickity';\n\n// Register our jquery version with Flickity.\nFlickity.setJQuery(jQuery);\n\nconst sliderConfig = {\n arrowShape: 'M13,49.9a5.1,5.1,0,0,1,1.5-3.7L58.4,2.1a5.1,5.1,0,0,1,7.3.9,5.1,5.1,0,0,1,0,6.4L25.5,49.9,65.7,90.3a5.3,5.3,0,0,1-.4,7.4,5.2,5.2,0,0,1-6.9-.1L14.5,53.5A4.8,4.8,0,0,1,13,49.9Z',\n wrapAround: true,\n prevNextButtons: false,\n draggable: false,\n // autoPlay: 3000,\n // pauseAutoPlayOnHover: true,\n};\n\nexport default class FlickityHomePod {\n constructor(element) {\n this.element = element;\n this.$element = jQuery(element);\n\n // Exit if we don't have more than one slide.\n if (!this.shouldBuildSlider) return;\n\n // Build Slider\n this.buildSlider();\n this.ready();\n }\n\n buildSlider() {\n this.slider = new Flickity(this.sliderElement, sliderConfig);\n }\n\n ready() {\n this.$element.addClass('ready');\n }\n\n get shouldBuildSlider() {\n return this.slides.length > 1;\n }\n\n get sliderElement() {\n return this.element.querySelector('.view-content');\n }\n\n get slides() {\n return this.sliderElement.children;\n }\n}\n","import $ from 'jquery';\n\nconst defaults = {\n selector: '.node-inner',\n linkLocation: '.link-read-more a',\n};\n\nfunction Redirect(element, options) {\n this.$element = $(element);\n this.settings = Object.assign(defaults, options);\n this.click = this.click.bind(this);\n this.listen();\n}\n\nRedirect.prototype = {\n listen() {\n this.$element.find(this.settings.selector).on('click', this.click);\n },\n click(event) {\n event.preventDefault();\n event.stopPropagation();\n const url = $(event.currentTarget).find(this.settings.linkLocation).attr('href');\n window.location.href = url;\n },\n};\n\nexport default Redirect;\n","import $ from 'jquery';\n\nfunction BrowserCheck(element) {\n this.element = element;\n this.$element = $(element);\n this.init();\n}\n\nBrowserCheck.prototype = {\n init() {\n const browserArr = {};\n const uagent = navigator.userAgent.toLowerCase();\n let match = '';\n\n // console.log(`User agent string: ${uagent}`);\n\n browserArr.chrome = /webkit/.test(uagent) && /chrome/.test(uagent) && !/edge/.test(uagent);\n browserArr.firefox = /mozilla/.test(uagent) && /firefox/.test(uagent);\n browserArr.msie = /msie/.test(uagent) || /trident/.test(uagent) || /edge/.test(uagent);\n browserArr.safari = /safari/.test(uagent) && /applewebkit/.test(uagent) && !/chrome/.test(uagent);\n browserArr.opr = /mozilla/.test(uagent) && /applewebkit/.test(uagent) && /chrome/.test(uagent) && /safari/.test(uagent) && /opr/.test(uagent);\n browserArr.browser = '';\n browserArr.version = '';\n\n // console.log(Object.keys(browserArr).slice(0, -2));\n\n Object.keys(browserArr).slice(0, -2).forEach((key) => {\n if (browserArr[key]) {\n let matchCheck = '';\n\n if (key === 'msie') {\n matchCheck = 'msie|edge';\n } else if (key === 'safari') {\n matchCheck = 'version';\n } else {\n matchCheck = key;\n }\n\n match = uagent.match(new RegExp(`(${matchCheck})( |/)([0-9]+)`));\n browserArr.browser = key;\n\n if (match) {\n const newMatch = match[3];\n browserArr.version = newMatch;\n } else {\n match = uagent.match(new RegExp('rv:([0-9]+)'));\n browserArr.version = match ? match[1] : '';\n }\n }\n });\n\n $(document.body).addClass(`${browserArr.browser} ${browserArr.browser}-v${browserArr.version}`);\n\n browserArr.opera = browserArr.opr;\n delete browserArr.opr;\n },\n};\n\nexport default BrowserCheck;\n","import '@babel/polyfill';\nimport $ from 'jquery';\n// import Flickity from 'flickity';\nimport 'focus-visible';\nimport 'nodelist-foreach-polyfill';\n\nimport DDTemplates from './DDTemplates';\nimport Drupal from './Drupal';\nimport Header from './Header';\nimport Toolbar from './Toolbar';\nimport Viewport from './Viewport';\nimport Sticky from './Sticky';\nimport Gallery from './Gallery';\nimport Navigation from './Navigation';\nimport SmartFooter from './SmartFooter';\nimport CalendarFeed from './CalendarFeed';\nimport FixNavigation from './FixNavigation';\nimport TermNavigation from './TermNavigation';\nimport AccordionWrap from './AccordionWrap';\nimport AccordionFix from './AccordionFix';\nimport AccordionContainer from './AccordionContainer';\nimport SearchRelocate from './SearchRelocate';\n// import HeaderlinksRelocate from './HeaderlinksRelocate';\nimport Modaal from './Modaal';\nimport SelectBox from './SelectBox';\nimport SelectList from './SelectList';\nimport BackgroundImage from './BackgroundImage';\nimport FlickityHomePod from './Flickity.HomePod';\n// import Notify from './Notify';\nimport Redirect from './Redirect';\nimport BrowserCheck from './BrowserCheck';\n\nconst ESC_KEY = 27;\n\n// Add the theme behaviors\nDrupal.behavior((context) => {\n // Helpers\n const $body = $(document.body, context);\n\n // Get browser and version\n $body.each((i, element) => {\n if (!element.browserCheck) {\n element.browserCheck = new BrowserCheck(element);\n }\n });\n\n // DD Template Behaviors\n if (!document.body.DDTemplates) {\n document.body.DDTemplates = new DDTemplates(context);\n }\n\n // Replace Lightbox lightframe functionality with Modaal.\n document.querySelectorAll('.open-lightframe').forEach((element) => {\n if (!element.Modaal) {\n const selector = '.node-header a, .field-image a, .link-read-more a';\n element.Modaal = new Modaal(element, selector);\n }\n });\n\n // Replace Lightbox slideshow functionality with Modaal.\n document.querySelectorAll('.te-open-slideshow .node, .te-open-slideshow.node').forEach((element) => {\n if (!element.Modaal) {\n const selector = '.field-image a';\n element.Modaal = new Modaal(element, selector);\n }\n });\n\n // Replace Lightbox and Lighframe straggelers.\n $('[rel^=lightbox], [rel^=lightframe]', context).closest('.node').each((i, element) => {\n if (!element.Modaal) {\n // const selector = '.node-header a, .field-image a, .link-read-more a';\n const selector = '.field-image a';\n element.Modaal = new Modaal(element, selector);\n }\n });\n\n // Fix our damn menus from displaying orphaned children\n $('.main-navigation, .term-navigation', context).each((i, element) => {\n if (!element.FixNavigation) {\n element.FixNavigation = new FixNavigation(element);\n }\n });\n\n // Sticky sidebars\n $('.page-sidebar', context).each((i, element) => {\n if (!element.Sticky) {\n element.Sticky = new Sticky(element);\n }\n });\n\n // Main Navigation\n $('.primary-navigation--desktop #nice-menu-3', context).each((i, element) => {\n if (!element.Navigation) {\n element.Navigation = new Navigation(element);\n }\n });\n $('.primary-navigation--mobile #nice-menu-3', context).each((i, element) => {\n if (!element.Navigation) {\n element.Navigation = new Navigation(element);\n }\n });\n\n // Controls the states of the menu and search states\n $('.toolbar', context).each((i, element) => {\n if (!element.Toolbar) {\n element.Toolbar = new Toolbar(element);\n }\n });\n\n // Relocate search based on media query\n $('.site-search', context).each((i, element) => {\n if (!element.searchRelocate) {\n element.searchRelocate = new SearchRelocate(element);\n }\n });\n\n // Relocate headerlinks based on media query\n // const headerlinks = document.querySelector('.headerlinks');\n // if (headerlinks && !headerlinks.headerlinksRelocate) {\n // headerlinks.headerlinksRelocate = new HeaderlinksRelocate(headerlinks);\n // } else {\n document.querySelector('.page-header').classList.add('ready');\n // }\n\n // Controls the page overlay display\n $('.overlay', context).bind('click', () => {\n $body.removeClass('menu-active search-active');\n });\n\n // Fixed Header using Headroom.js\n $('.headroom', context).each((i, element) => {\n if (!element.Header) {\n element.Header = new Header(element);\n }\n });\n\n // Smart Footer\n $('.page-footer', context).each((i, element) => {\n if (!element.SmartFooter) {\n const $reactiveElement = $('.page', context);\n element.SmartFooter = new SmartFooter(element, $reactiveElement);\n }\n });\n\n // Term Navigation\n $('.term-navigation', context).each((i, element) => {\n if (!element.TermNavigation) {\n element.TermNavigation = new TermNavigation(element);\n }\n });\n\n // Photo Galleries\n $('.node-content .photo-gallery, .photo-gallery .node-image, .photo-gallery .node-upper-image', context).each((i, element) => {\n if (!element.Gallery) {\n element.Gallery = new Gallery(element);\n }\n });\n\n // Wraps each accordion element\n $('.accordion-heading', context).each((i, element) => {\n if (!element.accordionWrap) {\n element.accordionWrap = new AccordionWrap(element);\n element.accordionWrap = new AccordionFix(element);\n }\n });\n\n // Wraps each accordion in a container\n $('.node-content', context).each((i, element) => {\n if (!element.accordionContainer) {\n setTimeout(() => {\n element.accordionContainer = new AccordionContainer(element);\n }, 300);\n }\n });\n\n // Calendar of Events View\n $('.calendar-feed', context).each((i, element) => {\n if (!element.CalendarFeed) {\n element.CalendarFeed = new CalendarFeed(element);\n }\n });\n\n // Notifications\n $('.cc-bottom', context).each((i, element) => {\n if ($('.cc-bottom .block-inner').length < 1) {\n $(element).prepend('
');\n $('.cc-bottom .block-inner').prepend('
');\n $('.cc-bottom .block-content').prepend('
');\n $('.cc-bottom .node').prepend('
');\n const $node = $('.cc-bottom .node-inner');\n $node.prepend('

');\n $node.append('');\n $('.cc-bottom .cc-message').appendTo('.cc-bottom .node-header .title');\n $('.cc-bottom .cc-message a').appendTo('.cc-bottom .node-links .link-read-more');\n $('.cc-bottom .cc-compliance').prependTo('.cc-bottom .block-content');\n }\n });\n\n // Background Images\n $('.hero .views-row', context).each((i, element) => {\n if (!element.bgImage) {\n element.bgImage = new BackgroundImage(element);\n }\n });\n\n $('.banner', context).each((i, element) => {\n if (!element.bannerBgImage) {\n element.bannerBgImage = new BackgroundImage(element, {\n sourceSelector: 'figure img',\n destSelector: '.node-banner',\n });\n }\n });\n\n $('.home-events .views-row, .home-news .views-row, .home-tiles .views-row, .home-help .views-row', context).each((i, element) => {\n if (!element.podBgImage) {\n element.podBgImage = new BackgroundImage(element, {\n destSelector: '.node-image',\n });\n }\n });\n\n // Make entire node clickable\n $('.home-about-us .views-row, .home-tiles .views-row, .home-adventure-icons .views-row', context).each((i, element) => {\n if (!element.redirect) {\n element.redirect = new Redirect(element, {\n linkLocation: '.node-header h2 a',\n });\n }\n });\n $('.home-events .views-row', context).each((i, element) => {\n if (!element.redirect) {\n element.redirect = new Redirect(element, {\n linkLocation: '.node-header h2 a',\n selector: '.node-teaser',\n });\n }\n });\n\n // Flickity Slider\n $('.home-news, .home-events, .hero', context).each((i, element) => {\n if (!element.homeSlider) {\n element.homeSlider = new FlickityHomePod(element);\n }\n });\n\n // Add Sitemap output using the digitaldcore.js function\n const $map = $('#sitemap', context);\n const $nav = $('#sitemap .content', context);\n\n if ($map.length && $nav.length) {\n Drupal.digitaldcoreCreateSiteMap($map, $nav);\n $map.addClass('ready');\n }\n\n // Select list generators\n let selectIdentifier = 1;\n $('.headerlinks', context).each((i, element) => {\n if (!element.headerlinksSelect) {\n element.headerlinksSelect = new SelectList(element, {\n destination: '.view',\n placeholder: 'I Want To',\n numerator: selectIdentifier,\n label: 'Quick Links',\n });\n selectIdentifier += 1;\n element.headerlinksSelect = new SelectBox(element, {\n selector: '.view',\n placeholder: 'I Want To',\n options: '.view-content',\n optionSrc: '.views-row .node-header',\n remove: true,\n });\n $(element).addClass('ready');\n }\n setTimeout(() => {\n $(element).addClass('ready');\n }, 500);\n });\n\n // Close flyout when Escape key is pressed.\n $(window).keydown((event) => {\n if (event.which === ESC_KEY) {\n $(document.body).removeClass('menu-active search-active');\n }\n });\n\n // Move headerlinks to grid box\n const headerlinks = document.querySelector('.headerlinks');\n const helpHeader = document.querySelector('.home-help header.node-header');\n\n // console.log(helpHeader);\n if (helpHeader) {\n helpHeader.insertAdjacentElement('afterend', headerlinks);\n } else {\n headerlinks.remove();\n }\n\n // Force Viewport Update\n Viewport.update();\n});\n"],"sourceRoot":""}