{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/js/Drupal.js","webpack:///./src/js/Change.js","webpack:///./src/js/.theme.config.js","webpack:///./src/js/Sticky.js","webpack:///./src/js/Breakpoints.js","webpack:///./src/js/Header.js","webpack:///./src/js/Search.js","webpack:///./src/js/Toolbar.js","webpack:///./src/js/HomeHero.js","webpack:///./src/js/Navigation.js","webpack:///./src/js/ModaalTransformer.js","webpack:///./src/js/Modaal.js","webpack:///./src/js/Anchors.js","webpack:///./src/js/Flickity.js","webpack:///./src/js/Gallery.js","webpack:///./src/js/DDTemplates.js","webpack:///./src/js/SmartFooter.js","webpack:///./src/js/CalendarFeed.js","webpack:///./src/js/FixNavigation.js","webpack:///./src/js/TermNavigation.js","webpack:///./src/js/RelocateHeaderlinks.js","webpack:///./src/js/RelocateSocial.js","webpack:///./src/js/TwitterFeed.js","webpack:///./src/js/FixDate.js","webpack:///./src/js/TwitterSlider.js","webpack:///./src/js/AccordionWrap.js","webpack:///./src/js/AccordionFix.js","webpack:///./src/js/AccordionContainer.js","webpack:///./src/js/BackgroundImage.js","webpack:///./src/js/BrowserCheck.js","webpack:///./src/js/HomeNews.js","webpack:///./src/js/Visible.js","webpack:///./src/js/StringSplit.js","webpack:///./src/js/HomeFeatured.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","this","ticking","listen","callbacks","fire","request","requestAnimationFrame","update","callback","$","Callbacks","add","change","offsets","mobile","tablet","desktop","larger","sidebar","padding","breakpoints","min","max","Infinity","Sticky","element","register","Change","onChange","innerHeight","offsetHeight","classList","remove","documentIsReady","Drupal","behavior","fn","document","ready","DrupalAMD","context","Breakpoints","current","settings","tolerance","classes","initial","pinned","unpinned","top","notTop","bottom","notBottom","onPin","body","addClass","removeClass","onUnpin","onTop","onNotTop","onBottom","onNotBottom","Header","headroom","build","on","rebuild","init","options","offset","currentOffset","Headroom","destroy","currentBreakpoint","components","text","input","Search","customComponents","Timer","setAttribute","setTimeout","typeOutPlaceholderText","clear","focus","setInterval","searchText","substr","addEventListener","resetSearchInput","querySelector","defaults","menuClass","buttons","menu","menuClose","flyout","search","header","Toolbar","$element","addSearchLogic","FocusTrap","addFocusTrapLogic","searchComponent","headerComponent","initialFocus","flyoutComponent","contains","deactivate","activate","event","Keyboard","getCode","Escape","activeClass","menuButton","menuCloseButton","mobileState","keyDownHandler","clickHandler","HomeHero","scroll","find","css","scrollTop","menuBlock","menuParent","activeTrailClass","expandActiveMenus","closeUnnestedMenus","focusout","hover","delay","in","out","Navigation","preprocess","menuParents","forEach","index","id","submenu","link","firstElementChild","innerText","button","createElement","insertBefore","nextSibling","lastElementChild","TickTock","Tabbable","tabbable","collapse","expand","parentNode","target","getAttribute","openSubmenus","openSubmenu","expandElement","expandSubmenu","collapseElement","collapseSubmenu","states","active","open","removeAttribute","expanded","keyDownEventDispatcher","mouseDownEventDispatcher","focusOutEventDispatcher","mouseOverHandler","mouseOutHandler","Enter","userInteractionHandler","clearAll","relatedTarget","currentTarget","querySelectorAll","ModaalTransformer","node","old","type","isVideo","new","cloneNode","replaceChild","isGallery","caption","preventDefault","modaal","start_open","animation","outer_controls","Modaal","parent","selector","child","ConvertToModaal","Anchors","anchor","location","hash","goToCurrentAnchor","href","indexOf","destination","getElementById","scrollToDestination","scrollTo","elementToScroll","verticalOffset","maxDuration","minDuration","speed","timer","offsetSettings","config","Flickity","setJQuery","jQuery","fade","autoPlay","wrapAround","arrowShape","Gallery","shouldBuildSlider","slider","buildSlider","addControls","setPlayState","player","state","setPauseState","item","playPauseButton","className","innerHTML","playPauseHandler","appendChild","sliderDots","playPlayer","stopPlayer","slides","children","photoGalleryPID","a11y","tables","newTab","anchors","sitemap","nodeMeta","galleries","itemAppearsIn","expandingDates","slideshowIcons","lexiconGlossary","overtakeLightbox","subtermOverviews","fullNodeRelatedLinks","bundledReferringContent","DDTemplates","isNodeView","isNode","defineApplicableBehaviors","is","view","term","global","addEnabledBehavior","$appearingNav","each","$block","attr","wrap","pattern","match","a","$node","$items","$visible","map","getComputedStyle","getPropertyValue","filter","b","meta","$meta","$dates","$link","toggleClass","eq","$container","appendTo","append","join","image","$img","before","$map","$nav","digitaldcoreCreateSiteMap","letter","replace","html","toUpperCase","closest","notValid","SmartFooter","reactiveElement","height","style","paddingBottom","storageKey","paginationLabel","filtersLabel","filterByPostTypes","useFilters","filters","defaultFilters","All","CalendarFeed","getFilters","buildCalendar","createFilters","$group","$posts","currentYear","currentMonth","post","$post","oDates","datetime","dateObj","dayjs","month","format","mon","day","dow","year","start","toLowerCase","$year","$tile","markup","isSameMonth","end","isSameDay","isSameYear","next","$filters","types","ids","getDefaultData","getCustomizedData","currentFilter","sessionStorage","getItem","decodeURIComponent","$filter","$show","inArray","not","stop","animate","opacity","setItem","$shown","nextUntil","$ctrl","filterHandler","trigger","_types","_ids","regex","test","exec","indexes","aResults","aTypes","parseInt","sort","FixNavigation","process","$parent","$children","TermNavigation","standardize","addLogic","level","parentElement","list","buttonLink","HeaderlinksRelocate","$body","getBody","mobileActive","desktopActive","outerWidth","prependTo","SocialRelocate","requestData","cache","dataType","TwitterFeed","success","complete","sendRequest","ajax","url","date","undefined","endMonth","endDay","endYear","isRange","FixDates","fixDate","hasPostDate","isEvent","isTwitterFeed","dateContent","childNodes","nodeValue","extractDate","show","tweetContent","startDate","endDate","extractEndDate","eventContent","dateText","newDateArr","split","newMonth","abbrevMonth","substring","prevNextButtons","pageDots","TwitterSlider","sliderElement","Promise","resolve","restore","then","onMobileChange","onTabletChange","onDesktopChange","elem","FixDate","postDate","AccordionWrap","getClasses","status","getStatus","addBack","wrapAll","$classes","hasClass","elemClasses","val","$status","AccordionFix","assign","click","setVert","stopPropagation","isVisible","topOffset","documentElement","e","elementTop","elementBottom","outerHeight","viewportTop","viewportBottom","sourceSelector","destSelector","isPseudo","BackgroundImage","addBackgroundImage","getSource","src","prepend","BrowserCheck","browserArr","uagent","navigator","userAgent","chrome","firefox","msie","safari","opr","browser","version","keys","matchCheck","RegExp","newMatch","opera","HomeUpdates","modifyNode","bgImg","defaultOffset","Visible","InViewport","visibleHandler","title","divider","StringSplit","adaptiveHeight","stringSplit","str","Split","page","browserCheck","mainMenu","toolbar","accordionWrap","accordionContainer","AccordionContainer","headerlinks","relocate","RelocateHeaderlinks","headerSocialLinks","RelocateSocial","twitter","Feed","Slider","termNavigation","banner","BgImage","block","visible","homeNews","HomeNews","homeFeatured","HomeFeatured","footer"],"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([240,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\nclass Change {\n constructor() {\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).bind('scroll resize orientationchange', this.change.bind(this));\n }\n}\n\nexport default new Change();\n","/**\n * Theme version\n */\nconst version = '4.0.0';\n\n/**\n * Domain to use with the import/export script\n */\nexport const domain = 'https://live-psychometrics.pantheonsite.io';\n\n/**\n * Path/page to append to the domain to use with the import/export script.\n */\nexport const path = '/user';\n\n/**\n * Centralized offsets used by various components.\n */\nexport const offsets = {\n // offsets for each breakpoint\n mobile: 100,\n tablet: 110,\n desktop: 130,\n larger: 130,\n // other offsets for extended functionality\n sidebar: 35,\n padding: 20,\n};\n\n/**\n * Theme Breakpoints\n */\nexport const breakpoints = {\n mobile: {\n min: 0,\n max: 639,\n },\n tablet: {\n min: 640,\n max: 1199,\n },\n desktop: {\n min: 1200,\n max: 1365,\n },\n larger: {\n min: 1366,\n max: Infinity,\n }\n};\n\n/**\n * Default export of theme related info.\n */\nexport default version;\n","import Change from './Change';\nimport { offsets } from './.theme.config';\n\nexport default class Sticky {\n constructor(element) {\n this.element = element;\n this.register();\n this.update();\n }\n\n register() {\n Change.onChange(this.update.bind(this));\n }\n\n update() {\n if (window.innerHeight - offsets.sidebar > this.element.offsetHeight) {\n this.element.classList.add('sticky');\n } else {\n this.element.classList.remove('sticky');\n }\n }\n}\n","import Breakpoints from 'breakpoints-js/dist/breakpoints';\nimport { breakpoints } from './.theme.config';\n\n// Create a mobileState property to help manage viewport based functionality.\nObject.defineProperty(Breakpoints, 'mobileState', {\n get() {\n return this.current().max < this.get('desktop').min;\n },\n});\n\n// Create a new instance with our configured breakpoints.\nBreakpoints(breakpoints);\n\nexport default Breakpoints;\n","import $ from 'jquery';\nimport Headroom from 'headroom.js';\nimport Breakpoints from './Breakpoints';\nimport { offsets } from './.theme.config';\n\n// Headroom settings\nconst settings = {\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 this.element = element;\n this.offsets = offsets;\n this.headroom = this.build();\n Breakpoints.on('change', this.rebuild.bind(this));\n this.headroom.init();\n this.ready();\n }\n\n // Create a new Headroom instance\n build() {\n const options = settings;\n options.offset = this.currentOffset;\n return new Headroom(this.element, options);\n }\n\n // Rebuild existing Headroom instance with updated offset.\n rebuild() {\n this.headroom.destroy();\n this.headroom.offset = this.currentOffset;\n this.headroom.init();\n }\n\n ready() {\n // Set ready state of passed in footer element.\n this.element.classList.add('ready');\n }\n\n get currentOffset() {\n const currentBreakpoint = Breakpoints.current();\n return this.offsets[currentBreakpoint.name];\n }\n}\n","import Timer from 'tick-tock';\n\nconst components = {\n text: 'Search',\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 = { ...components, ...customComponents };\n\n // Clear out values of these components.\n this.input.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 } else {\n this.input.focus();\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 searchText() {\n return 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 Breakpoints from './Breakpoints';\nimport Search from './Search';\n\nconst defaults = {\n menuClass: 'menu-active',\n buttons: {\n menu: '.menu-icon',\n menuClose: '.flyout .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 = { ...defaults, ...options };\n this.Search = this.addSearchLogic();\n this.FocusTrap = this.addFocusTrapLogic();\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 // Manage click events.\n\n clickHandler() {\n const menuActive = document.body.classList.contains(this.settings.menuClass);\n const isActive = menuActive;\n\n if (isActive) {\n this.deactivate();\n } else {\n this.activate();\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() {\n const activeClass = this.settings.menuClass;\n document.body.classList.add(activeClass);\n this.menuButton.setAttribute('aria-expanded', true);\n this.menuCloseButton.setAttribute('aria-expanded', true);\n\n // Leverage the focus trap logic to lock active element focus\n // within the flyout only (on mobile devices specifically).\n if (Breakpoints.mobileState) {\n this.FocusTrap.activate();\n }\n\n // If the menu button is clicked, focus the flyout container.\n this.flyoutComponent.focus();\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 this.menuButton.setAttribute('aria-expanded', false);\n this.menuCloseButton.setAttribute('aria-expanded', false);\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.menuCloseButton.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 menuCloseButton() {\n return document.querySelector(this.settings.buttons.menuClose);\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\nexport default class HomeHero {\n constructor(element) {\n this.element = element;\n this.$element = $(element);\n this.scroll();\n }\n\n scroll() {\n $(window).scroll(() => {\n this.$element.find('.scroll').css('opacity', 0.7 - $(window).scrollTop() / 250);\n });\n }\n}\n","import tabbable from 'tabbable';\nimport TickTock from 'tick-tock';\nimport Keyboard from 'keyboard-key';\nimport Breakpoints from './Breakpoints';\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: false,\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 = { ...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\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 || Breakpoints.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 // Only continue if this submenu has tabbable elements.\n if (!submenu.Tabbable.length) 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) && !Breakpoints.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 (Breakpoints.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 (Breakpoints.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","import $ from 'jquery';\nimport 'modaal';\n\nexport default class ModaalTransformer {\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 image = this.new.querySelector('img');\n const caption = image.getAttribute('title');\n if (caption.length) {\n this.new.setAttribute('data-modaal-desc', 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 animation: 'none',\n outer_controls: true,\n });\n }\n}\n","import ModaalTransformer from './ModaalTransformer';\n\nconst nodeSelector = 'node';\n\nexport default class Modaal {\n constructor(parent, selector) {\n const settings = {\n isGallery: parent.querySelectorAll('img').length > 1,\n };\n\n if (parent.classList.contains(nodeSelector)) {\n // Process individual node.\n parent.querySelectorAll(selector).forEach((child) => {\n settings.isVideo = child.parentNode.classList.contains('field-video');\n child.ConvertToModaal = new ModaalTransformer(child, settings);\n });\n } else {\n // Process group of nodes.\n parent.querySelectorAll(nodeSelector).forEach((node) => {\n node.querySelectorAll(selector).forEach((child) => {\n settings.isVideo = child.parentNode.classList.contains('field-video');\n child.ConvertToModaal = new ModaalTransformer(child, settings);\n });\n });\n }\n }\n}\n","import Timer from 'tick-tock';\nimport scrollTo from 'animated-scroll-to';\nimport Breakpoints from './Breakpoints';\nimport { offsets } from './.theme.config';\n\nexport default class Anchors {\n constructor() {\n this.id = '';\n this.offsets = offsets;\n\n // Listen for click events on links starting with a hash.\n // If an id'd element exists, scroll to it.\n const anchors = document.querySelectorAll('a[href^=\"#\"]');\n anchors.forEach((anchor) => {\n anchor.addEventListener('click', this.clickHandler.bind(this));\n });\n\n // Manage URLs containing a hash\n // If an id'd element exists, scroll to it.\n if (window.location.hash) {\n this.id = window.location.hash.substr(1);\n this.goToCurrentAnchor();\n }\n }\n\n clickHandler(event) {\n // Prevent default browser based hash functionality.\n event.preventDefault();\n\n // Extract the hash to use as the element id to search for.\n this.id = event.currentTarget.href.substr(event.currentTarget.href.indexOf('#') + 1);\n\n // Locate destination within the document.\n const destination = document.getElementById(this.id);\n\n // Quit if the destination isn't found\n if (!destination) return;\n\n // Scroll to destination.\n this.scrollToDestination(destination);\n }\n\n scrollToDestination(destination) {\n scrollTo(destination, {\n elementToScroll: window,\n verticalOffset: this.currentOffset,\n maxDuration: 1000,\n minDuration: 250,\n speed: 1000,\n });\n }\n\n goToCurrentAnchor() {\n const anchor = document.getElementById(this.id);\n if (anchor) {\n const timer = new Timer();\n timer.setTimeout('setCurrentAnchor', () => {\n this.scrollToDestination(anchor);\n timer.clear('setCurrentAnchor');\n }, 500);\n }\n }\n\n get currentOffset() {\n const currentBreakpoint = Breakpoints.current();\n return this.offsets[currentBreakpoint.name];\n }\n\n get offsets() {\n return this.offsetSettings;\n }\n\n set offsets(config) {\n this.offsetSettings = {\n mobile: -config.padding,\n tablet: -config.padding,\n desktop: -(config.desktop + config.padding),\n larger: -(config.desktop + config.padding),\n };\n }\n}\n","import jQuery from 'jquery';\nimport Flickity from 'flickity';\n\n// Register our jquery version with Flickity.\nFlickity.setJQuery(jQuery);\n\nexport default Flickity;\n","import Flickity from './Flickity';\nimport 'flickity-fade';\n\nconst defaults = {\n fade: true,\n autoPlay: 4000,\n wrapAround: true,\n arrowShape: 'M58.7 20.6c.4-.4.8-.6 1.3-.6s1 .2 1.3.6c.4.4.6.9.6 1.4 0 .5-.2 1.1-.6 1.5L36.6 50.1l24.7 26.5c.7.8.7 2.1-.1 2.9-.7.7-1.9.7-2.6 0l-26.1-28c-.4-.4-.6-.9-.6-1.4 0-.5.2-1.1.6-1.4l26.2-28.1z',\n};\n\nexport default class Gallery {\n constructor(element, options) {\n this.element = element;\n this.settings = { ...defaults, ...options };\n\n // Exit if we don't have more than one slide.\n if (!this.shouldBuildSlider) return this.ready();\n\n // Build Slider\n this.slider = this.buildSlider();\n\n // Add play/pause controls\n this.addControls();\n\n // Set initial state of the gallery\n this.setPlayState();\n\n // Add listeners\n this.listen();\n\n // Ready component\n this.ready();\n }\n\n ready() {\n // Append ready state.\n this.element.classList.add('ready');\n }\n\n buildSlider() {\n return new Flickity(this.element, this.settings);\n }\n\n onReady() {\n this.setPlayState();\n }\n\n onChange() {\n if (this.slider.player.state === 'stopped') {\n this.setPauseState();\n }\n }\n\n listen() {\n // Keep track of current state of gallery\n this.slider.on('change', this.onChange.bind(this));\n }\n\n addControls() {\n const item = document.createElement('li');\n this.playPauseButton = document.createElement('button');\n this.playPauseButton.className = 'button--play-pause';\n this.playPauseButton.innerHTML = '';\n this.playPauseButton.addEventListener('click', this.playPauseHandler.bind(this));\n item.appendChild(this.playPauseButton);\n this.sliderDots.appendChild(item);\n }\n\n playPauseHandler() {\n if (this.slider.player.state === 'stopped') {\n this.slider.playPlayer();\n this.setPlayState();\n } else {\n this.slider.stopPlayer();\n this.setPauseState();\n }\n }\n\n setPlayState() {\n this.playPauseButton.setAttribute('aria-label', 'Stop the slider\\'s autoscroll');\n this.element.classList.add('playing');\n }\n\n setPauseState() {\n this.playPauseButton.setAttribute('aria-label', 'Start the slider\\'s autoscroll');\n this.element.classList.remove('playing');\n }\n\n get shouldBuildSlider() {\n return this.slides.length > 1;\n }\n\n get sliderDots() {\n return this.element.querySelector('.flickity-page-dots');\n }\n\n get slides() {\n return this.element.children;\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport $ from 'jquery';\nimport Drupal from './Drupal';\nimport Modaal from './Modaal';\nimport Anchors from './Anchors';\nimport Gallery from './Gallery';\n\nconst defaults = {\n photoGalleryPID: 107,\n behaviors: {\n a11y: true,\n tables: true,\n newTab: true,\n anchors: true,\n sitemap: true,\n nodeMeta: true,\n galleries: true,\n itemAppearsIn: true,\n expandingDates: true,\n slideshowIcons: true,\n lexiconGlossary: true,\n overtakeLightbox: true,\n subtermOverviews: true,\n fullNodeRelatedLinks: true,\n bundledReferringContent: true,\n },\n};\n\nexport default class DDTemplates {\n constructor(options) {\n this.isNodeView = this.isNode();\n this.settings = { ...defaults, ...options };\n // Global behaviors\n this.defineApplicableBehaviors('global');\n // Current view behaviors only\n this.defineApplicableBehaviors(this.isNodeView ? 'node' : 'term');\n }\n\n /**\n * Simple check to see if the current body element contains the node class.\n */\n isNode() {\n return $(document.body).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 'sitemap',\n 'subtermOverviews',\n 'lexiconGlossary',\n ],\n global: [\n 'a11y',\n 'tables',\n 'newTab',\n 'nodeMeta',\n 'overtakeLightbox',\n 'slideshowIcons',\n 'expandingDates',\n 'galleries',\n 'anchors',\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');\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');\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').attr('tabindex', -1);\n }\n\n /**\n * Wraps all tables in a responsive, scrollable, container.\n */\n tables() {\n $('.node-content table').wrap('
');\n }\n\n /**\n * Open the links within a new tab.\n */\n newTab() {\n const pattern = /\\.(pdf|doc|docx|xls|xlsx|csv|txt|rtf|odf|ppt|pptx|xml)$/;\n $('.page a').each((i, element) => {\n if (element.href.match(pattern)) {\n element.target = '_blank';\n }\n });\n }\n\n /**\n * Finds the real last meta item and identifies node of visible meta info\n */\n nodeMeta() {\n const $nodes = $('.node');\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').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 * Photo galleries\n */\n galleries() {\n // Photo Galleries\n const selectors = [\n '.photo-gallery .node-image',\n '.node-content .photo-gallery',\n '.photo-gallery .node-upper-image',\n ];\n\n document.querySelectorAll(selectors.join(',')).forEach((element) => {\n if (!element.Gallery) {\n element.Gallery = new Gallery(element);\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`);\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 sitemap() {\n // Add Sitemap output using the digitaldcore.js function\n const $map = $('#sitemap');\n const $nav = $('#sitemap .content');\n\n if ($map.length && $nav.length) {\n Drupal.digitaldcoreCreateSiteMap($map, $nav);\n $map.addClass('ready');\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').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').find('.lexicon-list > a').each((i, element) => {\n const letter = $(element).attr('id').replace('letter_', '');\n $(element).html(letter.toUpperCase());\n });\n }\n\n /**\n * Adds page anchor support\n */\n anchors() {\n if (!document.body.Anchors) {\n document.body.Anchors = new Anchors();\n }\n }\n\n /**\n * Overtake Lightbox\n */\n overtakeLightbox() {\n // Replace Lightbox lightframe functionality with Modaal.\n $('.open-lightframe').each((i, 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 $('.te-open-slideshow .node, .te-open-slideshow.node').each((i, 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]').closest('.node').each((i, element) => {\n const notValid = element.parentNode.classList.contains('dd-hover-dependencies');\n if (!element.Modaal && !notValid) {\n const selector = '.field-image a';\n element.Modaal = new Modaal(element, selector);\n }\n });\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 {HTML 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.$element = $(element);\n this.reactiveElement = reactiveElement;\n this.update();\n this.register();\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.offsetHeight;\n this.reactiveElement.style.paddingBottom = `${height}px`;\n }\n\n ready() {\n setTimeout(() => {\n $(window).scrollTop($(window).scrollTop() + 1).scrollTop($(window).scrollTop());\n\n // Set ready state of passed in footer element.\n this.element.classList.add('ready');\n }, 1000);\n }\n}\n","import $ from 'jquery';\nimport dayjs from 'dayjs';\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 = { ...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 dayjs framework\n $.each(dates, (j, type) => {\n const datetime = $post.find(`time.${type}`).attr('datetime');\n const dateObj = dayjs(datetime);\n oDates[type] = {\n month: dateObj.format('MMMM'),\n mon: dateObj.format('MMM'),\n day: dateObj.format('D'),\n dow: dateObj.format('ddd'),\n year: dateObj.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.attr('data-type');\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.attr('data-type'));\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 Navigation from './Navigation';\nimport Breakpoints from './Breakpoints';\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 (Breakpoints.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 this.button.addEventListener('click', this.clickHandler.bind(this));\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';\nimport Change from './Change';\n\nconst BREAKPOINT = 640;\n\nexport default class HeaderlinksRelocate {\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 .headerlinks').length > 0;\n const desktopActive = this.$body.find('.toolbar .headerlinks').length > 0;\n if (($(window).outerWidth(true) < BREAKPOINT) && (desktopActive)) {\n this.$element.prependTo(this.$body.find('.flyout .inner'));\n } else if (($(window).outerWidth(true) >= BREAKPOINT) && (mobileActive)) {\n this.$element.prependTo(this.$body.find('.toolbar'));\n }\n this.$element.addClass('ready');\n return this;\n }\n\n getBody() { return $(document.body, this.context); }\n}\n","import $ from 'jquery';\nimport Change from './Change';\n\nconst BREAKPOINT = 1200;\n\nexport default class SocialRelocate {\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 .header-social-links').length > 0;\n const desktopActive = this.$body.find('.toolbar .header-social-links').length > 0;\n if (($(window).outerWidth(true) < BREAKPOINT) && (desktopActive)) {\n this.$element.appendTo(this.$body.find('.flyout .inner'));\n } else if (($(window).outerWidth(true) >= BREAKPOINT) && (mobileActive)) {\n this.$element.prependTo(this.$body.find('.toolbar'));\n }\n this.$element.addClass('ready');\n return this;\n }\n\n getBody() { return $(document.body, this.context); }\n}\n","import $ from 'jquery';\n\nconst GET_TWEETS_URL = '/dd_twitter_feed/get_tweets';\n\nconst requestData = {\n cache: true,\n dataType: 'html',\n};\n\nclass TwitterFeed {\n constructor(element) {\n this.$element = $(element);\n this.success = this.success.bind(this);\n this.complete = this.complete.bind(this);\n this.request = this.sendRequest();\n }\n\n sendRequest() {\n return $.ajax({\n requestData,\n type: 'GET',\n url: GET_TWEETS_URL,\n success: this.success,\n complete: this.complete,\n });\n }\n\n success(data) {\n const $tweets = this.$element.find('.tweets');\n $tweets.html(data);\n }\n\n complete() {\n this.$element.addClass('ready');\n }\n}\n\nexport default TwitterFeed;\n","import $ from 'jquery';\n\nconst defaults = {\n date: undefined,\n month: undefined,\n day: undefined,\n year: undefined,\n endMonth: undefined,\n endDay: undefined,\n endYear: undefined,\n isRange: false,\n};\n\nexport default class FixDates {\n constructor(element, options) {\n this.element = element;\n this.$element = $(element);\n this.settings = { ...defaults, ...options };\n this.fixDate();\n\n // Ready Component\n this.ready();\n }\n\n fixDate() {\n const hasPostDate = this.$element.find('.post-date').length > 0;\n const isEvent = this.$element.find('.post-date').is('.upcoming');\n const isTwitterFeed = this.$element.find('.handle + .date').length > 0;\n if (hasPostDate && !isEvent) {\n const dateContent = this.element.querySelector('.post-date time').childNodes[0].nodeValue;\n this.extractDate(dateContent);\n this.$element.find('.post-date time').html(`${this.settings.month} ${this.settings.day}`);\n this.$element.find('.post-date').show();\n } else if (isTwitterFeed) {\n const tweetContent = this.element.querySelector('.handle + .date time').childNodes[0].nodeValue;\n this.extractDate(tweetContent);\n this.$element.find('.handle + .date').html(`${this.settings.month} ${this.settings.day}`);\n } else {\n const hasEventDate = this.element.querySelector('.upcoming.first-upcoming time > span[class^=\"date-display-\"]').childNodes[0].nodeValue;\n if (hasEventDate) {\n const isRange = this.$element.find('.date-display-start').length > 0;\n if (isRange) {\n const startDate = this.element.querySelector('.date-display-start').childNodes[0].nodeValue;\n const endDate = this.element.querySelector('.date-display-end').childNodes[0].nodeValue;\n this.extractDate(startDate);\n this.settings.isRange = true;\n this.extractEndDate(endDate);\n if (this.settings.year !== this.settings.endYear) {\n this.$element.find('.post-date time').html(`${this.settings.month} ${this.settings.day}, ${this.settings.year} - ${this.settings.endMonth} ${this.settings.endDay}, ${this.settings.endYear}`);\n } else if (this.settings.month !== this.settings.endMonth) {\n this.$element.find('.post-date time').html(`${this.settings.month} ${this.settings.day} - ${this.settings.endMonth} ${this.settings.endDay}`);\n } else {\n this.$element.find('.post-date time').html(`${this.settings.month} ${this.settings.day} - ${this.settings.endDay}`);\n }\n } else {\n const eventContent = this.element.querySelector('.upcoming.first-upcoming time > span[class^=\"date-display-\"]').childNodes[0].nodeValue;\n this.extractDate(eventContent);\n this.$element.find('.post-date time').html(`${this.settings.month} ${this.settings.day}`);\n }\n }\n }\n }\n\n extractDate(dateText) {\n const newDateArr = dateText.split(' ');\n const newMonth = newDateArr[0];\n this.abbrevMonth(newMonth);\n this.settings.day = newDateArr[1].substring(0, newDateArr[1].length - 1);\n this.settings.year = newDateArr[2].substring(0, newDateArr[2].length);\n }\n\n extractEndDate(dateText) {\n const newDateArr = dateText.split(' ');\n const newMonth = newDateArr[0];\n this.abbrevMonth(newMonth, true);\n this.settings.endDay = newDateArr[1].substring(0, newDateArr[1].length - 1);\n this.settings.endYear = newDateArr[2].substring(0, newDateArr[2].length);\n }\n\n abbrevMonth(month) {\n let newMonth;\n switch (month) {\n case 'January': newMonth = 'jan'; break;\n case 'February': newMonth = 'feb'; break;\n case 'March': newMonth = 'mar'; break;\n case 'April': newMonth = 'apr'; break;\n case 'May': newMonth = 'may'; break;\n case 'June': newMonth = 'jun'; break;\n case 'July': newMonth = 'jul'; break;\n case 'August': newMonth = 'aug'; break;\n case 'September': newMonth = 'sep'; break;\n case 'October': newMonth = 'oct'; break;\n case 'November': newMonth = 'nov'; break;\n case 'December': newMonth = 'dec'; break;\n default: newMonth = 'N/A';\n }\n if (this.settings.isRange) {\n this.settings.endMonth = newMonth;\n } else {\n this.settings.month = newMonth;\n }\n }\n\n ready() {\n this.element.classList.add('ready');\n }\n}\n","import jQuery from 'jquery';\nimport Flickity from 'flickity';\nimport Breakpoints from './Breakpoints';\nimport FixDate from './FixDate';\nimport 'flickity-fade';\n\n// Register our jquery version with Flickity.\nFlickity.setJQuery(jQuery);\n\nconst config = {\n mobileSettings: {\n prevNextButtons: false,\n fade: true,\n wrapAround: true,\n pageDots: true,\n },\n tabletSettings: {\n prevNextButtons: false,\n fade: true,\n wrapAround: true,\n pageDots: true,\n },\n desktopSettings: {\n prevNextButtons: false,\n fade: true,\n wrapAround: true,\n pageDots: true,\n autoPlay: 5000,\n },\n};\n\nconst defaults = {\n date: undefined,\n month: undefined,\n day: undefined,\n year: undefined,\n start: undefined,\n end: undefined,\n};\n\nexport default class TwitterSlider {\n constructor(element, options) {\n this.element = element;\n this.$element = jQuery(element);\n this.settings = { ...defaults, ...options };\n this.fixDate();\n\n // Exit if the sliderElement isn't found.\n if (!this.sliderElement) return;\n\n // Prevent initialization of a slider with less than 2 slides.\n if (this.shouldBuildSlider) {\n // Add listeners\n this.listen();\n }\n\n // Ready Component\n this.ready();\n }\n\n ready() {\n this.element.classList.add('ready');\n }\n\n build(settings) {\n return new Flickity(this.sliderElement, settings);\n }\n\n restore() {\n return new Promise((resolve) => {\n if (this.slider) {\n this.slider.destroy();\n }\n resolve();\n });\n }\n\n onMobileChange() {\n this.restore().then(this.slider = this.build(config.mobileSettings));\n }\n\n onTabletChange() {\n this.restore().then(this.slider = this.build(config.tabletSettings));\n }\n\n onDesktopChange() {\n this.restore().then(this.slider = this.build(config.desktopSettings));\n }\n\n listen() {\n // Listen for breakpoint changes\n Breakpoints.on('mobile', 'enter', this.onMobileChange.bind(this));\n Breakpoints.on('tablet', 'enter', this.onTabletChange.bind(this));\n Breakpoints.on('desktop larger', 'enter', this.onDesktopChange.bind(this));\n }\n\n fixDate() {\n jQuery(this.slides).each((i, elem) => {\n if (elem && !elem.fixDate) {\n elem.fixDate = new FixDate(elem, {\n postDate: false,\n });\n }\n });\n }\n\n get shouldBuildSlider() {\n return this.slides.length > 1;\n }\n\n get sliderElement() {\n return this.element.querySelector('.tweets');\n }\n\n get slides() {\n return this.sliderElement.children;\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';\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 $ 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 jQuery from 'jquery';\nimport Flickity from 'flickity';\nimport Breakpoints from './Breakpoints';\nimport BackgroundImage from './BackgroundImage';\nimport FixDate from './FixDate';\nimport 'flickity-fade';\n\n// Register our jquery version with Flickity.\nFlickity.setJQuery(jQuery);\n\nconst config = {\n mobileSettings: {\n prevNextButtons: false,\n fade: false,\n wrapAround: true,\n pageDots: true,\n },\n tabletSettings: {\n prevNextButtons: false,\n fade: false,\n wrapAround: true,\n pageDots: true,\n },\n desktopSettings: {\n prevNextButtons: false,\n fade: false,\n wrapAround: true,\n pageDots: false,\n },\n};\n\nconst defaults = {\n date: undefined,\n month: undefined,\n day: undefined,\n year: undefined,\n start: undefined,\n end: undefined,\n};\n\nexport default class HomeUpdates {\n constructor(element, options) {\n this.element = element;\n this.$element = jQuery(element);\n this.settings = { ...defaults, ...options };\n this.modifyNode();\n\n // Exit if the sliderElement isn't found.\n if (!this.sliderElement) return;\n\n // Prevent initialization of a slider with less than 2 slides.\n if (this.shouldBuildSlider) {\n // Add listeners\n this.listen();\n }\n\n // Ready Component\n this.ready();\n }\n\n ready() {\n this.element.classList.add('ready');\n }\n\n build(settings) {\n return new Flickity(this.sliderElement, settings);\n }\n\n restore() {\n return new Promise((resolve) => {\n if (this.slider) {\n this.slider.destroy();\n }\n resolve();\n });\n }\n\n onMobileChange() {\n this.restore().then(this.slider = this.build(config.mobileSettings));\n }\n\n onTabletChange() {\n this.restore().then(this.slider = this.build(config.tabletSettings));\n }\n\n onDesktopChange() {\n if (this.slider) {\n this.slider.destroy();\n }\n }\n\n listen() {\n // Listen for breakpoint changes\n Breakpoints.on('mobile', 'enter', this.onMobileChange.bind(this));\n Breakpoints.on('tablet', 'enter', this.onTabletChange.bind(this));\n Breakpoints.on('desktop larger', 'enter', this.onDesktopChange.bind(this));\n }\n\n modifyNode() {\n this.element.querySelectorAll('.node-home-news').forEach((elem) => {\n setTimeout(() => {\n if (!elem.fixDate && !elem.bgImg) {\n elem.fixDate = new FixDate(elem, {\n postDate: true,\n });\n elem.bgImg = new BackgroundImage(elem, {\n sourceSelector: '.field-image.c1 img',\n destSelector: '.field-image',\n });\n }\n }, 200);\n });\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 InViewport from 'in-viewport';\n\n// Offset from page height until element is declared 'visible'\nconst defaultOffset = -100;\n\nexport default class Visible {\n constructor(element, offset) {\n this.offset = offset || defaultOffset;\n this.element = element;\n this.listen();\n }\n\n visibleHandler() {\n this.element.classList.add('visible');\n }\n\n listen() {\n InViewport(this.element, { offset: this.offset }, this.visibleHandler.bind(this));\n }\n}\n","import $ from 'jquery';\n\nconst defaults = {\n title: '.node-header h1',\n divider: '
',\n};\n\nfunction StringSplit(element, options) {\n this.element = element;\n this.$element = $(element);\n this.settings = Object.assign(defaults, options);\n this.init();\n this.ready();\n}\n\nStringSplit.prototype = {\n init() {\n // hack in differences in font size when a pipe is present\n $(this.settings.title, this.element).each((i, title) => {\n const html = $(title).html();\n if (/|/.test(html)) {\n const a = html.split(this.settings.divider);\n $(title).addClass('splitText').html(`${a[0]}${a[1]}`);\n }\n });\n },\n ready() {\n this.$element.addClass('ready');\n },\n};\n\nexport default StringSplit;\n","import jQuery from 'jquery';\nimport Flickity from 'flickity';\nimport Breakpoints from './Breakpoints';\nimport StringSplit from './StringSplit';\nimport 'flickity-fade';\n\n// Register our jquery version with Flickity.\nFlickity.setJQuery(jQuery);\n\nconst config = {\n mobileSettings: {\n prevNextButtons: false,\n fade: false,\n wrapAround: true,\n pageDots: true,\n adaptiveHeight: true,\n },\n tabletSettings: {\n arrowShape: 'M24.5,51.6v-3.2l19.6-19.6l3.2,3.2L31.5,47.8h44.1v4.5H31.5L47.2,68l-3.2,3.2L24.5,51.6z',\n prevNextButtons: true,\n fade: false,\n wrapAround: true,\n pageDots: true,\n adaptiveHeight: true,\n },\n desktopSettings: {\n arrowShape: 'M24.5,51.6v-3.2l19.6-19.6l3.2,3.2L31.5,47.8h44.1v4.5H31.5L47.2,68l-3.2,3.2L24.5,51.6z',\n prevNextButtons: true,\n fade: false,\n wrapAround: true,\n pageDots: false,\n adaptiveHeight: false,\n },\n};\n\nconst defaults = {\n date: undefined,\n month: undefined,\n day: undefined,\n year: undefined,\n start: undefined,\n end: undefined,\n};\n\nexport default class HomeUpdates {\n constructor(element, options) {\n this.element = element;\n this.$element = jQuery(element);\n this.settings = { ...defaults, ...options };\n this.stringSplit();\n\n // Exit if the sliderElement isn't found.\n if (!this.sliderElement) return;\n\n // Prevent initialization of a slider with less than 2 slides.\n if (this.shouldBuildSlider) {\n // Add listeners\n this.listen();\n }\n\n // Ready Component\n this.ready();\n }\n\n ready() {\n this.element.classList.add('ready');\n }\n\n build(settings) {\n return new Flickity(this.sliderElement, settings);\n }\n\n restore() {\n return new Promise((resolve) => {\n if (this.slider) {\n this.slider.destroy();\n }\n resolve();\n });\n }\n\n onMobileChange() {\n this.restore().then(this.slider = this.build(config.mobileSettings));\n }\n\n onTabletChange() {\n this.restore().then(this.slider = this.build(config.tabletSettings));\n }\n\n onDesktopChange() {\n this.restore().then(this.slider = this.build(config.desktopSettings));\n }\n\n stringSplit() {\n this.element.querySelectorAll('.node-home-featured').forEach((str) => {\n if (str && !str.Split) {\n str.Split = new StringSplit(str, {\n title: '.node-upper-meta .meta-custom',\n divider: '|',\n });\n }\n });\n }\n\n listen() {\n // Listen for breakpoint changes\n Breakpoints.on('mobile', 'enter', this.onMobileChange.bind(this));\n Breakpoints.on('tablet', 'enter', this.onTabletChange.bind(this));\n Breakpoints.on('desktop larger', 'enter', this.onDesktopChange.bind(this));\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 Sticky from './Sticky';\nimport Drupal from './Drupal';\nimport Header from './Header';\nimport Toolbar from './Toolbar';\nimport HomeHero from './HomeHero';\nimport Navigation from './Navigation';\nimport DDTemplates from './DDTemplates';\nimport SmartFooter from './SmartFooter';\nimport CalendarFeed from './CalendarFeed';\nimport FixNavigation from './FixNavigation';\nimport TermNavigation from './TermNavigation';\nimport RelocateHeaderlinks from './RelocateHeaderlinks';\nimport RelocateSocial from './RelocateSocial';\nimport TwitterFeed from './TwitterFeed';\nimport TwitterSlider from './TwitterSlider';\nimport AccordionWrap from './AccordionWrap';\nimport AccordionFix from './AccordionFix';\nimport AccordionContainer from './AccordionContainer';\nimport BackgroundImage from './BackgroundImage';\nimport BrowserCheck from './BrowserCheck';\nimport HomeNews from './HomeNews';\nimport Visible from './Visible';\nimport StringSplit from './StringSplit';\nimport HomeFeatured from './HomeFeatured';\n\n// Add the theme behaviors\nDrupal.behavior(() => {\n // Body element\n const body = document.body;\n // Page element\n const page = document.querySelector('.page');\n\n // DD Template Behaviors\n if (!document.body.DDTemplates) {\n document.body.DDTemplates = new DDTemplates();\n }\n\n // Get browser and version\n if (body && !body.browserCheck) {\n body.browserCheck = new BrowserCheck(body);\n }\n\n // Fix our damn menus from displaying orphaned children\n document.querySelectorAll('.main-navigation, .term-navigation').forEach((element) => {\n if (!element.FixNavigation) {\n element.FixNavigation = new FixNavigation(element);\n }\n });\n\n // Sticky sidebars\n document.querySelectorAll('.page-sidebar').forEach((element) => {\n if (!element.Sticky) {\n element.Sticky = new Sticky(element);\n }\n });\n\n // Main Navigation\n const mainMenu = document.querySelector('#nice-menu-3');\n if (mainMenu && !mainMenu.Navigation) {\n mainMenu.Navigation = new Navigation(mainMenu);\n }\n\n // Controls the states of the menu and search states\n const toolbar = document.querySelector('.toolbar');\n if (toolbar && !toolbar.Toolbar) {\n toolbar.Toolbar = new Toolbar(toolbar);\n }\n\n // Fixed Header using Headroom.js\n document.querySelectorAll('.headroom').forEach((element) => {\n if (!element.Header) {\n element.Header = new Header(element);\n }\n });\n\n // Wraps each accordion element\n document.querySelectorAll('.accordion-heading').forEach((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 document.querySelectorAll('.node-content').forEach((element) => {\n if (!element.accordionContainer) {\n setTimeout(() => {\n element.accordionContainer = new AccordionContainer(element);\n }, 300);\n }\n });\n\n // Relocate headerlinks based on media query\n const headerlinks = document.querySelector('.headerlinks');\n if (headerlinks && !headerlinks.relocate) {\n headerlinks.relocate = new RelocateHeaderlinks(headerlinks);\n }\n\n // Relocate header social links based on media query\n const headerSocialLinks = document.querySelector('.header-social-links');\n if (headerSocialLinks && !headerSocialLinks.relocate) {\n headerSocialLinks.relocate = new RelocateSocial(headerSocialLinks);\n }\n\n // Twitter Feed\n const twitter = document.querySelector('.twitter-feed');\n if (twitter && !twitter.Feed && !twitter.Slider) {\n twitter.Feed = new TwitterFeed(twitter);\n setTimeout(() => {\n twitter.Slider = new TwitterSlider(twitter);\n }, 1000);\n }\n\n // Term Navigation\n const termNavigation = document.querySelector('.term-navigation');\n if (termNavigation && !termNavigation.TermNavigation) {\n termNavigation.TermNavigation = new TermNavigation(termNavigation);\n }\n\n // Calendar of Events View\n document.querySelectorAll('.calendar-feed').forEach((element) => {\n if (!element.CalendarFeed) {\n element.CalendarFeed = new CalendarFeed(element);\n }\n });\n\n // Banner\n document.querySelectorAll('.banner').forEach((banner) => {\n if (!banner.BgImage) {\n banner.BgImage = new BackgroundImage(banner, {\n sourceSelector: 'figure img',\n destSelector: '.node-banner',\n });\n }\n });\n\n // =============================================================================\n // HOME PAGE FUNCTIONALITY\n // =============================================================================\n\n // Home Hero Block\n let block = document.querySelector('.home-hero.block');\n if (block && !block.HomeHero && !block.BgImage && !block.visible) {\n block.HomeHero = new HomeHero(block);\n block.BgImage = new BackgroundImage(block, {\n sourceSelector: 'figure img',\n destSelector: 'figure',\n });\n block.visible = new Visible(block);\n }\n\n // Homepage News and Events\n block = document.querySelector('.home-news');\n if (block && !block.homeNews && !block.visible) {\n block.homeNews = new HomeNews(block);\n block.visible = new Visible(block);\n }\n\n // Homepage News and Events\n block = document.querySelector('.home-featured');\n if (block && !block.homeFeatured && !block.visible) {\n block.homeFeatured = new HomeFeatured(block);\n block.visible = new Visible(block);\n }\n\n // =============================================================================\n // FOOTER\n // =============================================================================\n\n // Smart Footer\n const footer = document.querySelector('.page-footer');\n if (footer && !footer.SmartFooter && page) {\n footer.SmartFooter = new SmartFooter(footer, page);\n }\n});\n"],"sourceRoot":""}