{"version":3,"sources":["webpack://foundationhoc.org/./themes/foundationhoc/src/index.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/common/ajax.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/common/requestTimeout.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/common/scrollTo.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/common/slide.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/components/line-chart/index.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/chartContent.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/fileSlider.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/components/fund-growth-calculator/index.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/fundGrowthCalculator.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/initiatives.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/components/pie-chart/index.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/investmentOptions.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/logoTicker.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/meetingSpaces.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/milestones.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/newsList.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/common/selectors.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/photoGallery.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/publicationSlider.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/recentGrants.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/scholarships.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/stats.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/steps.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/elements/testimonials.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/accordionTabs.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/animation.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/countUp.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/datepicker.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/dropdown.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/featuredItemsPageHeader.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/common/validation.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/form.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/full-modal.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/headerMediaSlider.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/keyContactsSlider.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/mediaSlider.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/mediaThumbnailSlider.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/mobileActionBar.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/modal.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/opportunitiesToggle.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/pageHeader.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/panelLinkObserver.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/photoGalleryGrid.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/scrollTo.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/scrollToTop.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/sectionNavigation.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/siteAnnouncement.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/siteHeader.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/siteNavigation.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/siteWidget.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/slideToggle.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/slideToggleClasses.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/teamToggle.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/modules/tooltip.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/common/util.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/sections/creatingAFund.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/sections/fundDetails.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/sections/funds.js","webpack://foundationhoc.org/./themes/foundationhoc/src/scripts/sections/meetingSpace.js","webpack://foundationhoc.org/.*(common|components)).*\\.js$/"],"names":["document","addEventListener","r","require","keys","reduce","modules","script","module","default","push","map","can","run","documentElement","classList","remove","wretch","defaults","headers","fn","delay","start","Date","getTime","handle","Object","loop","call","value","window","requestAnimationFrame","$target","additionalOffset","offset","sitePrimaryHeader","querySelector","panelLinks","offsetHeight","getPageOffset","Promise","resolve","jump","duration","callback","slideToggle","target","getComputedStyle","display","element","style","removeProperty","height","overflow","paddingTop","paddingBottom","marginTop","marginBottom","transitionProperty","transitionDuration","requestTimeout","slideDown","slideUp","ColoredDot","cx","cy","index","color","x","y","width","fill","viewBox","d","App","data","ResponsiveContainer","LineChart","margin","top","right","left","bottom","XAxis","dataKey","YAxis","unit","domain","scale","tickCount","tickFormatter","Line","type","stroke","strokeWidth","dot","propTypes","PropTypes","init","querySelectorAll","forEach","el","setupChart","rootNode","JSON","parse","dataset","json","ReactDOM","Swiper","Navigation","Pagination","setupSlider","handlePaginationControls","container","opts","slidesPerView","spaceBetween","breakpoints","768","1024","1280","length","navigation","nextEl","prevEl","numSlides","matchMedia","matches","add","validTerms","formatCurrency","Intl","NumberFormat","currency","format","replace","rates","setValue","useState","amounts","setAmounts","state","i","indexOf","term","marketValue","fee","grants","total","getInitialState","useEffect","initialAmount","parseFloat","split","join","isNaN","newAmounts","ror","growth","sr","gift","feePer","mv","Array","spending","cumlgrants","previousyear","marketvalue","Math","round","calculateAmounts","className","aria-hidden","xmlns","fillRule","onChange","e","cleanValue","placeholder","row","setup","EffectFade","els","setupRelatedSlider","handleRelatedPaginationControls","textSliderContainer","imageSliderContainer","imageSwiper","centeredSlides","slideToClickedSlide","slidesOffsetAfter","textSliderOpts","autoHeight","effect","fadeEffect","crossFade","on","slideChangeTransitionStart","swiper","slideTo","activeIndex","radius","setRadius","showLabel","setShowLabel","handleWindowSize","removeEventListener","PieChart","Pie","innerRadius","outerRadius","label","entry","name","Cell","setupPieChart","centerInsufficientSlides","tickers","setTimeout","Marquee3k","pagination","formatFractionCurrent","number","toString","padStart","formatFractionTotal","blockSliderContainer","textSwiper","blockSliderOpts","previousIndex","slides","slide","allowSlideNext","blockSwiper","snapGrid","slidesGrid","restartBtn","toggle","innerHTML","lightGallery","SELECTORS","selectors","assign","asId","selectorKey","this","asClass","asString","Selectors","gallery","galleryTrigger","galleryPhoto","props","$galleries","selector","thumbnail","subHtmlSelectorRelative","download","bindEvents","currentTarget","closest","click","Autoplay","slidesPerGroup","speed","autoplay","clickable","block","print","freeMode","sliderFirstMove","setupReveal","ScrollReveal","reveal","interval","afterReveal","arrow","setupPaginationSlider","AccordionTabs","constructor","$el","$tabTriggers","$tabPanels","$accordionTriggers","isAccordion","innerWidth","breakpoint","tabTriggersLength","accordionTriggersLength","selectedTab","prevSelectedTab","self","selectedType","URLSearchParams","location","search","get","handleClick","bind","contains","hide","selectTab","preventDefault","closestTrigger","closestTab","targetIndex","show","removeAttribute","setAttribute","scrollTo","$panelContent","sync","dispatchEvent","Event","_","tabs","$tabs","setupScrollReveals","distance","origin","opacity","countUpModule","counters","useGrouping","decimalPlaces","end","counter","CountUp","_el","update","throttle","verge","dateRanges","datesData","dates","flatpickr","altInput","mode","altFormat","onClose","selectedDates","instance","from","formatDate","to","href","action","onDayCreate","__","fp","dayElem","includes","dateObj","isIos","test","navigator","platform","maxTouchPoints","handleNavigationSelect","handleScrollSelect","handleSubmitSelect","select","selectedIndex","setupDropdown","easydropdown","refresh","submit","tagName","hasAttribute","behavior","openOnFocus","maxVisibleItems","liveUpdates","StyledDropdown","bgSliderContainer","bgSliderOpts","validator","group","findFieldWrapper","handleBlur","$fieldWrapper","$existingErrorMessage","handleValidation","$form","rules","$field","getAttribute","fieldName","presence","message","email","readonly","pattern","$radio","$checkbox","checkboxGroup","buildRules","result","validate","undefined","messages","entries","insertAdjacentHTML","shouldScroll","formScroll","$firstError","focus","capture","handleAjax","handleAllGroup","setupSpecialFields","$input","$placeholder","createElement","textContent","files","parentNode","insertBefore","isAll","allEl","checked","$formMessages","$submitButton","autoHideMessage","toggleSubmit","ajax","url","body","FormData","post","res","success","reset","hideOnSubmit","showFormMessages","catch","finally","disabled","$holder","autoHide","handleModalOpen","handleModalClose","fullModal","text","resp","modalId","floor","random","node","id","appendChild","modal","slidesPerColumn","Thumbs","mainContainer","thumbnailContainer","mainOpts","thumbnailOpts","watchSlidesVisibility","watchSlidesProgress","thumbnailSwiper","thumbs","actionBar","handleOpenOverlay","handleCloseOverlay","handleScroll","setViewportHeight","setupMapEmbed","getElementById","mabTrigger","pageYOffset","innerHeight","clientHeight","min","getElementsByTagName","setProperty","mapHolder","google","mapOptions","center","maps","LatLng","lat","lng","zoom","mapTypeId","MapTypeId","ROADMAP","disableDefaultUI","scrollwheel","styles","featureType","stylers","visibility","Map","bounds","LatLngBounds","event","addListenerOnce","marker","Marker","title","animation","Animation","DROP","position","panposition","addListener","open","mapLink","extend","getPosition","handleOpen","autoOpenModal","openModal","cssClass","buildImageModal","closeMethods","buildVideoModal","buildContentModal","buildEmbedModal","autoModal","Cookies","expires","buildModal","setContent","prototype","hasOwnProperty","concat","tingle","beforeOpen","closeBtn","onOpen","destroy","_currentModal","opportunitiesToggler","handleToggle","opportunitiesToggle","groups","setupPageHeaderMediaSlider","headerContainer","contentContainer","handleOffset","headerTop","getBoundingClientRect","parseInt","threshold","observer","IntersectionObserver","isIntersecting","updateActiveLink","clearActiveLink","observe","handleScreenWidth","link","screen","maxWidth","ceil","Lazy","swipers","handleTrigger","swiperId","preloadImages","lazy","loadPrevNext","startIndex","galleryIndex","galleryData","photoGallery","stop","dynamic","dynamicEl","uid","lgData","once","handleUrl","handleScrollToMe","targetSelector","scroll","hash","close","buttonTrigger","scrollToTop","scrollTop","scrollHeight","navigationMenu","handleMenu","handleOutsideClick","stopPropagation","topBar","handleClose","setHeight","header","primaryHeader","secondaryHeader","searchForm","stuck","prevScroll","scrollY","currScroll","scrollDir","prevDir","handleOpenSearch","handleCloseSearch","handleSearchSubmit","handleSearchKeyUp","input","bodyScrollLock","disableBodyScroll","enableBodyScroll","nav","navOpen","navMenu","navHeader","navHeaderTitle","menuStack","handleResize","closeMenu","openMenu","moveMenuPrev","moveMenuNext","handleMenuToggle","resetMenu","next","updateMenu","pop","currentMenuStack","menuDepth","transform","updateNavHeader","currentMenu","headerTitle","setCookie","didInteract","widget","keyCode","trigger","targets","getElementsByClassName","selfStart","nextElementSibling","previousElementSibling","teamToggler","checkUrlParam","teamToggle","team","groupSection","buttonSelectedClass","tooltips","tippy","theme","filterSlider","filterHeading","handleComparisonToggle","handleFilter","handleClearFilter","setupFilterSlider","handleNavigationControls","filter","filterClass","filterName","touchRatio","controls","isBeginning","isEnd","handleViewToggle","button","fundView","wrapper","handleSetupOptions","images","panBy","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","exports"],"mappings":"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","file":"app.js","sourcesContent":["import 'swiper/swiper-bundle.css'\nimport 'flatpickr/dist/flatpickr.css'\nimport 'lightgallery.js/dist/css/lightgallery.css'\nimport './styles/index.css'\n\n// Thirdparty\nimport 'what-input'\nimport 'lightgallery.js/dist/js/lightgallery.js'\nimport 'lg-thumbnail.js/dist/lg-thumbnail.js'\n\n/*\n * Script loader\n *\n * Imports and runs all scripts in the `./scripts` directory\n * Scripts must have a default export with `can` and `run` functions\n *\n * export default {\n * can: () => boolean,\n * run: function to run if `can` is true\n * }\n */\ndocument.addEventListener('DOMContentLoaded', () => {\n ;((r) => {\n r.keys()\n .reduce((modules, script) => {\n const module = r(script).default\n if (module) {\n modules.push(module)\n }\n return modules\n }, [])\n .map((module) => (module.can === true || module.can()) && module.run())\n })(require.context('scripts', true, /^(?!.*(common|components)).*\\.js$/))\n\n document.documentElement.classList.remove('_preload')\n})\n","import wretch from 'wretch'\n\nexport default wretch().defaults({\n headers: { 'X-Requested-With': 'XMLHttpRequest' },\n})\n","const requestTimeout = (fn, delay) => {\n const start = new Date().getTime()\n const handle = new Object()\n\n const loop = () => {\n const current = new Date().getTime()\n const delta = current - start\n\n delta >= delay ? fn.call() : (handle.value = window.requestAnimationFrame(loop))\n }\n\n handle.value = window.requestAnimationFrame(loop)\n\n return handle\n}\n\nexport default requestTimeout\n","import jump from 'jump.js'\n\nconst getPageOffset = () => {\n let offset = 0\n\n const sitePrimaryHeader = document.querySelector('.site-primary-header')\n const panelLinks = document.querySelector('.panel-links')\n\n if (panelLinks) {\n offset += panelLinks.offsetHeight\n }\n\n if (sitePrimaryHeader) {\n offset += sitePrimaryHeader.offsetHeight\n }\n\n return offset\n}\n\nconst scrollTo = ($target, additionalOffset = 0) => {\n const pageOffset = getPageOffset() * -1\n let offset = pageOffset - additionalOffset\n\n return new Promise((resolve) => {\n jump($target, { duration: 500, offset, callback: resolve })\n })\n}\n\nexport default scrollTo\n","import requestTimeout from './requestTimeout'\n\nexport const slideUp = (element, duration = 400) => {\n return new Promise(function (resolve) {\n element.style.height = element.offsetHeight + 'px'\n element.style.transitionProperty = `height, margin, padding`\n element.style.transitionDuration = duration + 'ms'\n element.offsetHeight\n element.style.overflow = 'hidden'\n element.style.height = 0\n element.style.paddingTop = 0\n element.style.paddingBottom = 0\n element.style.marginTop = 0\n element.style.marginBottom = 0\n\n requestTimeout(() => {\n element.style.display = 'none'\n element.style.removeProperty('height')\n element.style.removeProperty('padding-top')\n element.style.removeProperty('padding-bottom')\n element.style.removeProperty('margin-top')\n element.style.removeProperty('margin-bottom')\n element.style.removeProperty('overflow')\n element.style.removeProperty('transition-duration')\n element.style.removeProperty('transition-property')\n resolve(false)\n }, duration)\n })\n}\n\nexport const slideDown = (element, duration = 400) => {\n return new Promise(function (resolve) {\n element.style.removeProperty('display')\n let display = window.getComputedStyle(element).display\n\n if (display === 'none') display = 'block'\n\n element.style.display = display\n let height = element.offsetHeight\n element.style.overflow = 'hidden'\n element.style.height = 0\n element.style.paddingTop = 0\n element.style.paddingBottom = 0\n element.style.marginTop = 0\n element.style.marginBottom = 0\n element.offsetHeight\n element.style.transitionProperty = `height, margin, padding`\n element.style.transitionDuration = duration + 'ms'\n element.style.height = height + 'px'\n element.style.removeProperty('padding-top')\n element.style.removeProperty('padding-bottom')\n element.style.removeProperty('margin-top')\n element.style.removeProperty('margin-bottom')\n\n requestTimeout(() => {\n element.style.removeProperty('height')\n element.style.removeProperty('overflow')\n element.style.removeProperty('transition-duration')\n element.style.removeProperty('transition-property')\n resolve(false)\n }, duration)\n })\n}\n\nexport const slideToggle = (target, duration = 400) => {\n if (window.getComputedStyle(target).display === 'none') {\n return slideDown(target, duration)\n } else {\n return slideUp(target, duration)\n }\n}\n","import PropTypes from 'prop-types'\nimport { LineChart, Line, XAxis, YAxis, ResponsiveContainer } from 'recharts'\n\nconst ColoredDot = ({ cx, cy, index }) => {\n const COLORS = ['#0080c7', '#467925', '#faac18', '#aebc36', '#992663']\n\n const color = COLORS[index % 5]\n\n return (\n \n \n \n )\n}\n\nColoredDot.propTypes = {\n cx: PropTypes.number,\n cy: PropTypes.number,\n index: PropTypes.number,\n}\n\nfunction App({ data }) {\n return (\n <>\n \n \n \n `$${value}`}\n />\n } />\n \n \n \n )\n}\n\nApp.propTypes = {\n data: PropTypes.array,\n}\n\nexport default App\n","import ReactDOM from 'react-dom'\nimport LineChart from '@components/line-chart'\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.element-chartcontent').forEach((el) => fn.setupChart(el))\n },\n\n setupChart: (el) => {\n const rootNode = el.querySelector('.component-line-chart')\n\n if (rootNode) {\n const data = JSON.parse(rootNode.dataset.json)\n\n ReactDOM.render(, rootNode)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper, Navigation, Pagination } from 'swiper'\n\nSwiper.use([Navigation, Pagination])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.fileslider').forEach((el) => fn.setupSlider(el))\n\n window.addEventListener('resize', fn.handlePaginationControls)\n\n fn.handlePaginationControls()\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 1,\n spaceBetween: 30,\n breakpoints: {\n 768: {\n slidesPerView: 3,\n },\n 1024: {\n slidesPerView: 4,\n },\n 1280: {\n slidesPerView: 5,\n },\n },\n }\n\n if (numSlides > 1) {\n opts.navigation = {\n nextEl: container.querySelector('.fileslider-button-next'),\n prevEl: container.querySelector('.fileslider-button-prev'),\n }\n }\n\n new Swiper(container, opts)\n },\n\n handlePaginationControls: () => {\n document.querySelectorAll('.fileslider .swiper-container').forEach((el) => {\n const numSlides = el.querySelectorAll('.swiper-slide').length\n\n if (numSlides < 2) {\n return\n }\n\n el.querySelector('.fileslider-controls').classList.remove('is-hidden-controls')\n\n if (window.matchMedia('(min-width: 768px)').matches && numSlides < 4) {\n el.querySelector('.fileslider-controls').classList.add('is-hidden-controls')\n }\n\n if (window.matchMedia('(min-width: 1024px)').matches && numSlides < 5) {\n el.querySelector('.fileslider-controls').classList.add('is-hidden-controls')\n }\n\n if (window.matchMedia('(min-width: 1280px)').matches && numSlides < 6) {\n el.querySelector('.fileslider-controls').classList.add('is-hidden-controls')\n }\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","/* eslint-disable react/prop-types */\nimport { useState, useEffect } from 'react'\n\nconst validTerms = [5, 10, 15, 20, 25, 50]\n\nfunction formatCurrency(value) {\n const currencyFormatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n })\n\n return currencyFormatter.format(value).replace('.00', '')\n}\n\nfunction calculateAmounts(initialAmount, rates) {\n // Calculations taken from https://www.cfbmc.org/powerful-giving/planned-giving/projected-return-calculator\n const amounts = []\n\n const ANNUAL_RATE_OF_RETURN = rates.growth\n const ANNUAL_SPENDING_RATE = rates.gift\n const FEE_PERCENTAGE = rates.fee\n\n const ror = ANNUAL_RATE_OF_RETURN * 0.01\n const sr = ANNUAL_SPENDING_RATE * 0.01\n const feePer = FEE_PERCENTAGE * 0.01\n\n const mv = new Array(51)\n const fee = new Array(51)\n const spending = new Array(51)\n const grants = new Array(51)\n const cumlgrants = new Array(51)\n\n mv[0] = initialAmount\n fee[0] = mv[0] * feePer\n spending[0] = mv[0] * sr\n grants[0] = 0\n cumlgrants[0] = grants[0]\n\n let previousyear = 0\n let marketvalue = 0\n\n for (var i = 1; i <= 51; ++i) {\n previousyear = mv[i - 1]\n marketvalue = previousyear * (1 + ror)\n\n fee[i] = previousyear * feePer\n spending[i] = previousyear * sr\n mv[i] = marketvalue - fee[i] - spending[i]\n\n grants[i] = spending[i]\n cumlgrants[i] = grants[i] + cumlgrants[i - 1]\n\n if (validTerms.indexOf(i) !== -1) {\n amounts.push({\n term: `${i} Years`,\n marketValue: Math.round(mv[i]),\n fee: Math.round(fee[i]),\n grants: Math.round(grants[i]),\n total: Math.round(cumlgrants[i]),\n })\n }\n }\n\n return amounts\n}\n\nfunction getInitialState() {\n const state = []\n\n for (let i = 1; i <= 51; ++i) {\n if (validTerms.indexOf(i) !== -1) {\n state.push({\n term: `${i} Years`,\n marketValue: '',\n fee: '',\n grants: '',\n total: '',\n })\n }\n }\n\n return state\n}\n\nfunction App({ rates }) {\n const [value, setValue] = useState('')\n const [amounts, setAmounts] = useState(getInitialState())\n\n const handleChange = (e) => {\n let cleanValue = e.target.value\n\n cleanValue = cleanValue.replace('$', '')\n\n setValue(cleanValue)\n }\n\n useEffect(() => {\n let initialAmount = parseFloat(value.split(',').join(''))\n\n if (isNaN(initialAmount)) {\n initialAmount = ''\n }\n\n const newAmounts = calculateAmounts(initialAmount, rates)\n\n setAmounts(newAmounts)\n }, [value])\n\n return (\n <>\n
\n
\n
\n
\n \n \n \n
\n\n \n
\n
\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n\n \n {amounts.map((row) => (\n \n \n \n \n \n \n \n ))}\n \n
Term\n
Total Market Value
\n
({rates.growth}% Growth Rate)
\n
\n
Annual Admin. Fees
\n
({rates.fee}% Fee Rate)
\n
\n
Annual Grants
\n
({rates.gift}% Gift Rate)
\n
Total Grants Awarded
{row.term}\n
\n {formatCurrency(row.marketValue)}\n
\n
\n
\n {formatCurrency(row.fee)}\n
\n
\n
\n {formatCurrency(row.grants)}\n
\n
\n
\n {formatCurrency(row.total)}\n
\n
\n
\n\n
(for illustration purposes only)
\n \n )\n}\n\nexport default App\n","import ReactDOM from 'react-dom'\nimport App from '@components/fund-growth-calculator'\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.element-fundgrowthcalculator').forEach((el) => fn.setup(el))\n },\n\n setup: (el) => {\n const rootNode = el.querySelector('#fund-growth-calculator-root')\n const rates = JSON.parse(rootNode.dataset.rates)\n\n if (rootNode) {\n ReactDOM.render(, rootNode)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper, Navigation, EffectFade, Pagination } from 'swiper'\n\nSwiper.use([Navigation, EffectFade, Pagination])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.initiatives-slider').forEach((el) => fn.setupSlider(el))\n\n const els = document.querySelectorAll('.initiatives-relatedcontent')\n els.forEach((el) => fn.setupRelatedSlider(el))\n\n if (els.length) {\n window.addEventListener('resize', fn.handleRelatedPaginationControls)\n\n fn.handleRelatedPaginationControls()\n }\n },\n\n setupSlider: (el) => {\n const textSliderContainer = el.querySelector('.initiatives-text-slider .swiper-container')\n const imageSliderContainer = el.querySelector('.initiatives-image-slider .swiper-container')\n\n const numSlides = imageSliderContainer.querySelectorAll('.swiper-slide').length\n\n const imageSliderOpts = {\n slidesPerView: 'auto',\n spaceBetween: 40,\n centeredSlides: true,\n slideToClickedSlide: true,\n breakpoints: {\n 768: {\n centeredSlides: false,\n slidesOffsetAfter: 1000,\n },\n },\n }\n\n const imageSwiper = new Swiper(imageSliderContainer, imageSliderOpts)\n\n const textSliderOpts = {\n autoHeight: true,\n slidesPerView: 1,\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n breakpoints: {\n 768: {\n autoHeight: false,\n },\n },\n on: {\n slideChangeTransitionStart: (swiper) => {\n imageSwiper.slideTo(swiper.activeIndex)\n },\n },\n }\n\n if (numSlides > 1) {\n textSliderOpts.navigation = {\n nextEl: textSliderContainer.querySelector('.initiatives-button-next'),\n prevEl: textSliderContainer.querySelector('.initiatives-button-prev'),\n }\n }\n\n new Swiper(textSliderContainer, textSliderOpts)\n },\n\n setupRelatedSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 1,\n autoHeight: true,\n spaceBetween: 30,\n breakpoints: {\n 768: {\n autoHeight: false,\n slidesPerView: 3,\n },\n 1024: {\n autoHeight: false,\n slidesPerView: 4,\n },\n },\n }\n\n if (numSlides > 1) {\n opts.navigation = {\n nextEl: container.querySelector('.initiatives-relatedcontent-button-next'),\n prevEl: container.querySelector('.initiatives-relatedcontent-button-prev'),\n }\n }\n\n new Swiper(container, opts)\n },\n\n handleRelatedPaginationControls: () => {\n document.querySelectorAll('.initiatives-relatedcontent .swiper-container').forEach((el) => {\n const numSlides = el.querySelectorAll('.swiper-slide').length\n\n if (numSlides < 2) {\n return\n }\n\n el.querySelector('.initiatives-relatedcontent-controls').classList.remove('is-hidden-controls')\n\n if (window.matchMedia('(min-width: 768px)').matches && numSlides < 4) {\n el.querySelector('.initiatives-relatedcontent-controls').classList.add('is-hidden-controls')\n }\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import PropTypes from 'prop-types'\nimport { useState, useEffect } from 'react'\nimport { PieChart, Pie, Cell, ResponsiveContainer } from 'recharts'\n\nfunction App({ data }) {\n const [radius, setRadius] = useState(100)\n const [showLabel, setShowLabel] = useState(false)\n\n const handleWindowSize = () => {\n if (window.matchMedia('(min-width: 1024px)').matches) {\n setRadius(140)\n } else {\n setRadius(100)\n }\n\n if (window.matchMedia('(min-width: 768px)').matches) {\n setShowLabel(true)\n } else {\n setShowLabel(false)\n }\n }\n\n useEffect(() => {\n handleWindowSize()\n\n window.addEventListener('resize', handleWindowSize)\n\n return () => window.removeEventListener('resize', handleWindowSize)\n }, [handleWindowSize])\n\n return (\n <>\n
\n \n \n entry.name : false}\n >\n {data.map((entry, index) => (\n \n ))}\n \n \n \n\n
Investment Asset Mix
\n
\n\n {!showLabel && (\n
\n {data.map((entry, index) => (\n
\n {entry.name}\n
\n ))}\n
\n )}\n \n )\n}\n\nApp.propTypes = {\n data: PropTypes.array,\n}\n\nexport default App\n","import ReactDOM from 'react-dom'\nimport { Swiper, Navigation, Pagination } from 'swiper'\nimport PieChart from '@components/pie-chart'\n\nSwiper.use([Navigation, Pagination])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.investment-fileslider').forEach((el) => fn.setupSlider(el))\n\n document.querySelectorAll('.component-pie-chart').forEach((el) => fn.setupPieChart(el))\n\n window.addEventListener('resize', fn.handlePaginationControls)\n\n fn.handlePaginationControls()\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 1,\n spaceBetween: 30,\n centerInsufficientSlides: true,\n breakpoints: {\n 768: {\n slidesPerView: 3,\n },\n 1024: {\n slidesPerView: 4,\n },\n 1280: {\n slidesPerView: 4,\n spaceBetween: 40,\n },\n },\n }\n\n if (numSlides > 1) {\n opts.navigation = {\n nextEl: container.querySelector('.investment-fileslider-button-next'),\n prevEl: container.querySelector('.investment-fileslider-button-prev'),\n }\n }\n\n new Swiper(container, opts)\n },\n\n handlePaginationControls: () => {\n document.querySelectorAll('.investment-fileslider .swiper-container').forEach((el) => {\n const numSlides = el.querySelectorAll('.swiper-slide').length\n\n if (numSlides < 2) {\n return\n }\n\n el.querySelector('.investment-fileslider-controls').classList.remove('is-hidden-controls')\n\n if (window.matchMedia('(min-width: 768px)').matches && numSlides < 4) {\n el.querySelector('.investment-fileslider-controls').classList.add('is-hidden-controls')\n }\n\n if (window.matchMedia('(min-width: 1024px)').matches && numSlides < 5) {\n el.querySelector('.investment-fileslider-controls').classList.add('is-hidden-controls')\n }\n })\n },\n\n setupPieChart: (el) => {\n const data = JSON.parse(el.dataset.json)\n\n ReactDOM.render(, el)\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import Marquee3k from 'marquee3000'\n\nconst tickers = document.querySelectorAll('.element-logoticker')\n\nconst fn = {\n init: () => {\n setTimeout(Marquee3k.init, 500)\n },\n}\n\nexport default {\n can: () => tickers.length,\n run: fn.init,\n}\n","import { Swiper, Navigation, Pagination } from 'swiper'\n\nSwiper.use([Navigation, Pagination])\n\nconst fn = {\n init: () => {\n const els = document.querySelectorAll('.meetingspaces')\n els.forEach((el) => fn.setupSlider(el))\n\n if (els.length) {\n window.addEventListener('resize', fn.handlePaginationControls)\n\n fn.handlePaginationControls()\n }\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 1,\n spaceBetween: 30,\n pagination: {\n el: container.querySelector('.meetingspaces-text-pagination'),\n type: 'fraction',\n formatFractionCurrent: (number) => number.toString().padStart(2, '0'),\n formatFractionTotal: (number) => number.toString().padStart(2, '0'),\n },\n breakpoints: {\n 768: {\n slidesPerView: 3,\n },\n },\n }\n\n if (numSlides > 1) {\n opts.navigation = {\n nextEl: container.querySelector('.meetingspaces-button-next'),\n prevEl: container.querySelector('.meetingspaces-button-prev'),\n }\n }\n\n new Swiper(container, opts)\n },\n\n handlePaginationControls: () => {\n document.querySelectorAll('.meetingspaces .swiper-container').forEach((el) => {\n const numSlides = el.querySelectorAll('.swiper-slide').length\n\n if (numSlides < 2) {\n return\n }\n\n el.querySelector('.meetingspaces-controls').classList.remove('is-hidden-controls')\n\n if (window.matchMedia('(min-width: 768px)').matches && numSlides < 4) {\n el.querySelector('.meetingspaces-controls').classList.add('is-hidden-controls')\n }\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper, Navigation, EffectFade, Pagination } from 'swiper'\n\nSwiper.use([Navigation, EffectFade, Pagination])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.milestones-slider').forEach((el) => fn.setupSlider(el))\n },\n\n setupSlider: (el) => {\n const textSliderContainer = el.querySelector('.milestones-text-slider .swiper-container')\n const blockSliderContainer = el.querySelector('.milestones-block-slider .swiper-container')\n\n const numSlides = blockSliderContainer.querySelectorAll('.swiper-slide').length\n\n const textSwiper = new Swiper(textSliderContainer, {\n autoHeight: true,\n slidesPerView: 1,\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n breakpoints: {\n 768: {\n autoHeight: false,\n },\n },\n })\n\n const blockSliderOpts = {\n slidesPerView: 'auto',\n spaceBetween: 40,\n centeredSlides: true,\n slideToClickedSlide: true,\n breakpoints: {\n 768: {\n centeredSlides: false,\n slidesOffsetAfter: 1000,\n },\n },\n on: {\n slideChangeTransitionStart: (swiper) => {\n textSwiper.slideTo(swiper.activeIndex)\n\n if (swiper.activeIndex > swiper.previousIndex) {\n swiper.slides.forEach((slide, index) => {\n if (index < swiper.activeIndex) {\n slide.classList.add('opacity-0')\n }\n })\n } else {\n swiper.slides.forEach((slide, index) => {\n if (index === swiper.activeIndex) {\n slide.classList.remove('opacity-0')\n }\n })\n }\n\n swiper.allowSlideNext = swiper.activeIndex < swiper.slides.length\n },\n },\n }\n\n if (numSlides > 1) {\n blockSliderOpts.navigation = {\n nextEl: blockSliderContainer.querySelector('.milestones-button-next'),\n prevEl: blockSliderContainer.querySelector('.milestones-button-prev'),\n }\n }\n\n const blockSwiper = new Swiper(blockSliderContainer, blockSliderOpts)\n\n blockSwiper.snapGrid = [...blockSwiper.slidesGrid]\n\n const restartBtn = textSliderContainer.querySelector('.milestones-slider-restart')\n\n if (restartBtn) {\n restartBtn.addEventListener('click', () => {\n blockSwiper.slideTo(0)\n blockSwiper.slides.forEach((slide) => slide.classList.remove('opacity-0'))\n })\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","const fn = {\n init: () => {\n\n const loadMore = document.querySelectorAll('.news-list-load-more')\n loadMore.forEach((el) => {\n el.addEventListener('click', function (e) {\n\n const els = document.querySelectorAll('.news-list-article.overflowed-article')\n els.forEach((el) => {\n el.classList.toggle('hidden')\n\n setTimeout(function() {\n el.classList.toggle('visible');\n }, 200);\n\n })\n\n e.target.innerHTML = e.target.innerHTML === 'Show All' ? 'Show Less' : 'Show All'\n\n })\n })\n\n },\n}\n\nexport default {\n can: () => document.querySelector('#news-list-news') !== null,\n run: fn.init,\n}\n","const Selectors = function(selectors = {}) {\n return Object.assign({\n asId(selectorKey) {\n return `#${this[selectorKey]}`\n },\n asClass(selectorKey) {\n return `.${this[selectorKey]}`\n },\n asString(selectorKey) {\n return selectorKey.replace(/^(#|\\.)/, '')\n }\n }, selectors)\n}\n\nexport default Selectors\n","import { on } from 'delegated-events'\nimport 'lightgallery.js/dist/js/lightgallery.js'\nimport 'lg-thumbnail.js/dist/lg-thumbnail.js'\nimport 'lightgallery.js/dist/css/lightgallery.css'\nimport Selectors from '../common/selectors'\n\nconst lightGallery = window.lightGallery\n\nconst SELECTORS = Selectors({\n gallery: '[data-photo-gallery]',\n galleryTrigger: 'photo-gallery__trigger',\n galleryPhoto: 'photo-gallery__photo'\n})\n\nconst props = {\n $galleries: document.querySelectorAll(SELECTORS.gallery)\n}\n\nconst fn = {\n init: () => {\n props.$galleries.forEach(el => {\n lightGallery(el, {\n selector: SELECTORS.asClass('galleryPhoto'),\n thumbnail: true,\n subHtmlSelectorRelative: true,\n download: false\n })\n })\n\n fn.bindEvents()\n },\n\n bindEvents: () => {\n on('click', SELECTORS.asClass('galleryTrigger'), e => {\n const $gallery = e.currentTarget.closest(SELECTORS.gallery)\n\n $gallery.querySelectorAll(SELECTORS.asClass('galleryPhoto'))[0].click()\n })\n }\n}\n\nexport default {\n can: () => props.$galleries.length,\n run: fn.init\n}\n","import { Swiper, Navigation, EffectFade, Pagination } from 'swiper'\n\nSwiper.use([Navigation, EffectFade, Pagination])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.publication-slider').forEach((el) => fn.setupSlider(el))\n },\n\n setupSlider: (el) => {\n const textSliderContainer = el.querySelector('.publication-text-slider .swiper-container')\n const blockSliderContainer = el.querySelector('.publication-block-slider .swiper-container')\n\n const numSlides = blockSliderContainer.querySelectorAll('.swiper-slide').length\n\n const textSwiper = new Swiper(textSliderContainer, {\n autoHeight: true,\n slidesPerView: 1,\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n breakpoints: {\n 768: {\n autoHeight: false,\n },\n },\n })\n\n const blockSliderOpts = {\n slidesPerView: 'auto',\n spaceBetween: 40,\n centeredSlides: true,\n slideToClickedSlide: true,\n breakpoints: {\n 768: {\n centeredSlides: false,\n slidesOffsetAfter: 1000,\n },\n 1024: {\n spaceBetween: 40,\n },\n },\n on: {\n slideChangeTransitionStart: (swiper) => {\n textSwiper.slideTo(swiper.activeIndex)\n\n if (swiper.activeIndex > swiper.previousIndex) {\n swiper.slides.forEach((slide, index) => {\n if (index < swiper.activeIndex) {\n slide.classList.add('opacity-0')\n }\n })\n } else {\n swiper.slides.forEach((slide, index) => {\n if (index === swiper.activeIndex) {\n slide.classList.remove('opacity-0')\n }\n })\n }\n\n swiper.allowSlideNext = swiper.activeIndex < swiper.slides.length\n },\n },\n }\n\n if (numSlides > 1) {\n blockSliderOpts.navigation = {\n nextEl: blockSliderContainer.querySelector('.publication-button-next'),\n prevEl: blockSliderContainer.querySelector('.publication-button-prev'),\n }\n }\n\n const blockSwiper = new Swiper(blockSliderContainer, blockSliderOpts)\n\n blockSwiper.snapGrid = [...blockSwiper.slidesGrid]\n\n const restartBtn = textSliderContainer.querySelector('.publication-slider-restart')\n\n if (restartBtn) {\n restartBtn.addEventListener('click', () => {\n blockSwiper.slideTo(0)\n blockSwiper.slides.forEach((slide) => slide.classList.remove('opacity-0'))\n })\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper, Pagination, Autoplay } from 'swiper'\n\nSwiper.use([Pagination, Autoplay])\n\nconst fn = {\n init: () => {\n const els = document.querySelectorAll('.recent-grants-slider')\n els.forEach((el) => fn.setupSlider(el))\n\n if (els.length) {\n window.addEventListener('resize', fn.handlePaginationControls)\n\n fn.handlePaginationControls()\n }\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n if (!container) {\n return\n }\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 2,\n slidesPerGroup: 2,\n spaceBetween: 16,\n centerInsufficientSlides: true,\n speed: 500,\n autoplay: {\n delay: 6000,\n },\n pagination: {\n el: el.querySelector('.swiper-pagination'),\n type: 'bullets',\n clickable: true,\n },\n breakpoints: {\n 768: {\n slidesPerView: 4,\n slidesPerGroup: 4,\n spaceBetween: 24,\n },\n 1024: {\n slidesPerView: 5,\n slidesPerGroup: 5,\n },\n },\n }\n\n if (numSlides > 1) {\n new Swiper(container, opts)\n }\n },\n\n handlePaginationControls: () => {\n document.querySelectorAll('.recent-grants-slider .swiper-container').forEach((el) => {\n const numSlides = el.querySelectorAll('.swiper-slide').length\n\n if (numSlides < 2) {\n return\n }\n\n el.querySelector('.swiper-pagination').classList.remove('_hidden')\n\n if (numSlides < 3) {\n el.querySelector('.swiper-pagination').classList.add('_hidden')\n } else if (window.matchMedia('(min-width: 768px)').matches && numSlides < 5) {\n el.querySelector('.swiper-pagination').classList.add('_hidden')\n } else if (window.matchMedia('(min-width: 1024px)').matches && numSlides < 6) {\n el.querySelector('.swiper-pagination').classList.add('_hidden')\n }\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","const fn = {\n init: () => {\n const els = document.querySelectorAll('.scholarship-print')\n els.forEach((el) => {\n el.addEventListener('click', function () {\n const blocks = document.querySelectorAll('.scholarship-opportunity')\n blocks.forEach((block) => {\n block.classList.remove('print-me')\n })\n var parent = this.closest('.scholarship-opportunity')\n parent.classList.add('print-me')\n window.print()\n })\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper } from 'swiper'\n\nconst fn = {\n init: () => {\n if (window.matchMedia('(max-width: 767px)').matches) {\n document.querySelectorAll('.stats-slider').forEach((el) => fn.setupSlider(el))\n }\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n const opts = {\n slidesPerView: 2,\n freeMode: true,\n on: {\n sliderFirstMove: () => {\n el.querySelector('.scroll-indicator').classList.add('hidden')\n },\n },\n }\n\n new Swiper(container, opts)\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import ScrollReveal from 'scrollreveal'\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.steps-grid').forEach((el) => fn.setupReveal(el))\n },\n\n setupReveal: () => {\n ScrollReveal().reveal('.steps-grid-item', {\n scale: 0,\n interval: 500,\n duration: 250,\n afterReveal: (el) => {\n const arrow = el.querySelector('.steps-grid-item-arrow svg')\n\n if (arrow) {\n arrow.classList.remove('opacity-0')\n }\n },\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper, Pagination, Autoplay, EffectFade } from 'swiper'\n\nSwiper.use([Pagination, Autoplay, EffectFade])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.testimonials-slider').forEach((el) => fn.setupSlider(el))\n\n document.querySelectorAll('.testimonials-pagination-slider').forEach((el) => fn.setupPaginationSlider(el))\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n if (!container) {\n return\n }\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 1,\n speed: 500,\n autoplay: {\n delay: 12000,\n },\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n }\n\n if (numSlides > 1) {\n new Swiper(container, opts)\n }\n },\n\n setupPaginationSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n if (!container) {\n return\n }\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 1,\n speed: 500,\n loop: true,\n autoplay: {\n delay: 12000,\n },\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n navigation: {\n nextEl: container.querySelector('.testimonials-button-next'),\n prevEl: container.querySelector('.testimonials-button-prev'),\n },\n }\n\n if (numSlides > 1) {\n new Swiper(container, opts)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import ScrollReveal from 'scrollreveal'\nimport scrollTo from '../common/scrollTo'\n\nconst Selectors = function (selectors = {}) {\n return Object.assign(\n {\n asId(selectorKey) {\n return `#${this[selectorKey]}`\n },\n asClass(selectorKey) {\n return `.${this[selectorKey]}`\n },\n asString(selectorKey) {\n return selectorKey.replace(/^(#|\\.)/, '')\n },\n },\n selectors\n )\n}\n\nclass AccordionTabs {\n constructor($el) {\n this.$el = $el\n this.$tabTriggers = this.$el.querySelectorAll('.js-tabs-trigger')\n this.$tabPanels = this.$el.querySelectorAll('.js-tabs-panel')\n this.$accordionTriggers = this.$el.querySelectorAll('.js-accordion-trigger')\n\n this.isAccordion = window.innerWidth < this.breakpoint\n this.tabTriggersLength = this.$tabTriggers.length\n this.accordionTriggersLength = this.$accordionTriggers.length\n this.breakpoint = 768\n this.selectedTab = 0\n this.prevSelectedTab = null\n\n this.bindEvents()\n }\n\n bindEvents() {\n const self = this\n const urlParams = new URLSearchParams(window.location.search)\n const selectedType = urlParams.get('type')\n\n this.$tabTriggers.forEach(($el, index) => {\n $el.index = index\n $el.addEventListener('click', this.handleClick.bind(self))\n\n if ($el.classList.contains('is-selected')) {\n this.selectedTab = index\n }\n\n if ($el.dataset.type === selectedType) {\n this.selectedTab = index\n }\n\n this.hide(index)\n })\n\n this.$accordionTriggers.forEach(($el, index) => {\n $el.index = index\n $el.addEventListener('click', this.handleClick.bind(self))\n\n if ($el.classList.contains('is-selected')) {\n this.selectedTab = index\n }\n\n if ($el.dataset.type === selectedType) {\n this.selectedTab = index\n }\n\n this.hide(index)\n })\n\n this.selectTab(this.selectedTab)\n }\n\n handleClick(e) {\n e.preventDefault()\n\n let closestTrigger = e.target.closest('.js-tabs-trigger')\n let closestTab = 0\n\n if (closestTrigger === null) {\n closestTrigger = e.target.closest('.js-accordion-trigger')\n closestTab = closestTrigger.closest('.js-tabs-panel')\n this.isAccordion = true\n } else {\n this.isAccordion = false\n }\n\n const targetIndex = closestTrigger.index !== null ? closestTrigger.index : closestTab.index\n\n if (targetIndex === this.selectedTab) {\n return\n }\n\n this.selectTab(targetIndex)\n }\n\n show(index) {\n if (!this.$tabPanels[index]) {\n return\n }\n\n this.$tabPanels[index].removeAttribute('tabindex')\n this.$tabTriggers[index].removeAttribute('tabindex')\n this.$tabTriggers[index].classList.add('is-selected')\n this.$tabTriggers[index].setAttribute('aria-selected', true)\n\n this.$accordionTriggers[index].setAttribute('aria-expanded', true)\n\n if (this.isAccordion) {\n scrollTo(this.$accordionTriggers[index], 50)\n }\n\n const $panelContent = this.$tabPanels[index].querySelector('.tabs-content')\n $panelContent.setAttribute('aria-hidden', false)\n $panelContent.classList.remove('is-closed')\n $panelContent.classList.add('is-opened')\n\n this.$tabPanels[index].classList.remove('is-closed')\n this.$tabPanels[index].classList.add('is-opened')\n\n ScrollReveal().sync()\n window.dispatchEvent(new Event('resize'))\n }\n\n hide(index) {\n this.$tabTriggers[index].classList.remove('is-selected')\n this.$tabTriggers[index].setAttribute('aria-selected', false)\n this.$tabTriggers[index].setAttribute('tabindex', -1)\n\n this.$accordionTriggers[index].setAttribute('aria-expanded', false)\n\n const $panelContent = this.$tabPanels[index].querySelector('.tabs-content')\n $panelContent.setAttribute('aria-hidden', true)\n $panelContent.classList.remove('is-opened')\n $panelContent.classList.add('is-closed')\n\n this.$tabPanels[index].classList.remove('is-opened')\n this.$tabPanels[index].classList.add('is-closed')\n this.$tabPanels[index].setAttribute('tabindex', -1)\n }\n\n selectTab(index) {\n if (index === null) {\n if (this.isAccordion) {\n return\n } else {\n index = 0\n }\n }\n\n if (this.$tabPanels[index] && !this.$tabPanels[index].classList.contains('is-closed')) {\n if (index === this.selectedTab) {\n this.selectedTab = null\n } else {\n this.selectedTab = null\n this.prevSelectedTab = index\n }\n\n this.hide(index)\n\n return\n }\n\n if (this.prevSelectedTab === null || !this.isAccordion) {\n this.$tabTriggers.forEach((_, i) => {\n if (i !== index) {\n this.hide(i)\n }\n })\n } else {\n this.hide(this.selectedTab)\n }\n\n this.prevSelectedTab = this.selectedTab\n this.selectedTab = index\n\n this.show(this.selectedTab)\n }\n}\n\nconst SELECTORS = Selectors({\n tabs: 'js-tabs',\n})\n\nconst props = {\n $tabs: document.querySelectorAll(SELECTORS.asClass('tabs')),\n}\n\nconst fn = {\n init: () => {\n props.$tabs.forEach(($el) => {\n new AccordionTabs($el)\n })\n },\n}\n\nexport default {\n can: () => props.$tabs.length,\n run: fn.init,\n}\n","import ScrollReveal from 'scrollreveal'\n\nconst fn = {\n init: () => {\n fn.setupScrollReveals()\n },\n\n setupScrollReveals: () => {\n ScrollReveal().reveal('[data-sr-fade-up]', {\n distance: '125%',\n origin: 'bottom',\n interval: 50,\n })\n\n ScrollReveal().reveal('[data-sr-touch]', {\n opacity: 1,\n afterReveal: (el) => el.classList.add('sr-touched'),\n })\n\n ScrollReveal().reveal('[data-sr-fade-left]', {\n distance: '125%',\n origin: 'right',\n interval: 50,\n })\n\n ScrollReveal().reveal('[data-sr-fade-right]', {\n distance: '125%',\n origin: 'left',\n interval: 50,\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import requestTimeout from '../common/requestTimeout'\nimport throttle from 'lodash/throttle'\nimport verge from 'verge'\nconst countUpModule = require('countup.js')\n\nconst counters = document.querySelectorAll('[data-counter]')\n\nconst state = {\n counters: [],\n}\n\nconst fn = {\n init: () => {\n counters.forEach((el) => {\n const useGrouping = el.dataset.useGrouping\n const decimalPlaces = el.dataset.decimalPlaces\n const end = el.dataset.end\n\n const opts = {\n useGrouping: !!+useGrouping,\n }\n\n if (decimalPlaces) {\n opts.decimalPlaces = decimalPlaces\n }\n\n const counter = new countUpModule.CountUp(el, end, opts)\n counter._el = el\n\n state.counters.push(counter)\n })\n\n fn.bindEvents()\n\n requestTimeout(fn.update, 300)\n },\n\n bindEvents: () => {\n window.addEventListener('scroll', throttle(fn.update, 250))\n },\n\n update: () => {\n state.counters.forEach((counter, index) => {\n if (verge.inY(counter._el)) {\n counter.start()\n delete state.counters[index]\n }\n })\n },\n}\n\nexport default {\n can: () => counters.length,\n run: fn.init,\n}\n","import flatpickr from 'flatpickr'\n\nconst dateRanges = document.querySelectorAll('.date-range-field')\n\nconst fn = {\n init: () => {\n dateRanges.forEach((el) => {\n const datesData = el.dataset.dates ? JSON.parse(el.dataset.dates) : null\n\n flatpickr(el.querySelector('input[name=date]'), {\n altInput: true,\n mode: 'range',\n altFormat: 'm/d/y',\n onClose: (selectedDates, _, instance) => {\n if (selectedDates.length == 2) {\n const from = instance.formatDate(selectedDates[0], 'Y-m-d')\n const to = instance.formatDate(selectedDates[1], 'Y-m-d')\n\n window.location.href = `${el.closest('form').action}?from=${from}&to=${to}`\n }\n },\n onDayCreate: (_, __, fp, dayElem) => {\n if (datesData && datesData.includes(fp.formatDate(dayElem.dateObj, 'Y-m-d'))) {\n dayElem.classList.add('is-highlighted')\n }\n },\n })\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\nimport easydropdown from 'easydropdown'\nimport scrollTo from '../common/scrollTo'\n\nconst isIos =\n /iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)\n\nconst fn = {\n init: () => {\n on('change', '.js-navigation-dropdown select', fn.handleNavigationSelect)\n on('change', '.js-scroll-dropdown select', fn.handleScrollSelect)\n on('change', '.js-submit-dropdown select', fn.handleSubmitSelect)\n fn.setup()\n\n if (window.matchMedia('(min-width: 768px) and (max-width: 1024px)').matches && isIos) {\n document.documentElement.classList.add('is-dropdown-ios-tablet')\n }\n },\n\n setup: () => {\n document.querySelectorAll('.js-dropdown').forEach((select) => {\n if (!select.querySelector('[selected]')) {\n select.selectedIndex = -1\n }\n\n fn.setupDropdown(select)\n })\n },\n\n handleNavigationSelect: (e) => {\n window.location.href = e.target.value\n },\n\n handleScrollSelect: (e) => {\n const target = document.querySelector(e.target.value)\n\n if (target) {\n scrollTo(target)\n\n e.target.value = null\n\n easydropdown(e.target).refresh()\n }\n },\n\n handleSubmitSelect: (e) => {\n e.target.closest('form').submit()\n },\n\n setupDropdown: (el) => {\n if (el.tagName !== 'SELECT') {\n return\n }\n\n const placeholder = el.querySelector('option[value=\"\"]')\n\n if (placeholder && !placeholder.hasAttribute('data-placeholder')) {\n placeholder.setAttribute('data-placeholder', true)\n }\n\n const opts = {\n behavior: {\n openOnFocus: true,\n maxVisibleItems: 8,\n liveUpdates: true,\n },\n }\n\n easydropdown(el, opts)\n },\n}\n\nexport const StyledDropdown = {\n init: (select) => fn.setupDropdown(select),\n setup: () => fn.setup(),\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper, EffectFade, Pagination } from 'swiper'\n\nSwiper.use([EffectFade, Pagination])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.featured-items-slider').forEach((el) => fn.setupSlider(el))\n },\n\n setupSlider: (el) => {\n const textSliderContainer = el.querySelector('.featured-items-text-slider .swiper-container')\n const bgSliderContainer = el.querySelector('.featured-items-bg-slider .swiper-container')\n\n const textSwiper = new Swiper(textSliderContainer, {\n autoHeight: true,\n slidesPerView: 1,\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n breakpoints: {\n 768: {\n autoHeight: false,\n },\n },\n })\n\n const bgSliderOpts = {\n slidesPerView: 1,\n speed: 500,\n autoplay: {\n delay: 6000,\n },\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n pagination: {\n el: el.querySelector('.swiper-pagination'),\n type: 'bullets',\n clickable: true,\n },\n on: {\n slideChangeTransitionStart: (swiper) => {\n textSwiper.slideTo(swiper.activeIndex)\n },\n },\n }\n\n new Swiper(bgSliderContainer, bgSliderOpts)\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import * as validator from 'validate.js'\nimport scrollTo from '../common/scrollTo'\n\nvalidator.validators.checkboxGroup = function (_, group) {\n if (group) {\n const checked = group.querySelectorAll('input[type=checkbox]:checked')\n\n if (checked.length) {\n return null\n }\n }\n\n return '^Please select one'\n}\n\nconst findFieldWrapper = ($el) => {\n if ($el) {\n if ($el.closest('.form-field-wrapper')) {\n return $el.closest('.form-field-wrapper')\n }\n\n if ($el.closest('.middleColumn')) {\n return $el.closest('.middleColumn')\n }\n\n if ($el.closest('.field')) {\n return $el.closest('.field')\n }\n }\n}\n\nexport const handleBlur = (e) => {\n const $fieldWrapper = findFieldWrapper(e.target)\n\n if ($fieldWrapper) {\n $fieldWrapper.classList.remove('has-error')\n\n const $existingErrorMessage = $fieldWrapper.querySelector('.form-field-message')\n\n if ($existingErrorMessage) {\n $existingErrorMessage.remove()\n }\n }\n\n if (e.target.classList.contains('has-error')) {\n e.target.classList.remove('has-error')\n }\n}\n\nexport const buildRules = ($form) => {\n const rules = {}\n\n $form\n .querySelectorAll('[required], input.required-if, .js-dropdown.required-if select, .optionset.required-if input')\n .forEach(($field) => {\n // Ignore hidden fields\n if (\n (findFieldWrapper($field) && findFieldWrapper($field).offsetHeight === 0) ||\n $field.getAttribute('readonly')\n ) {\n return\n }\n\n const fieldName = $field.dataset.name ? $field.dataset.name : $field.name\n\n rules[fieldName] = {\n presence: {\n message: '^Required',\n },\n }\n\n if ($field.type === 'email') {\n rules[$field.name].email = true\n }\n })\n\n $form.querySelectorAll('[pattern]').forEach(($field) => {\n // Ignore hidden fields\n if (findFieldWrapper($field).offsetHeight === 0 || $field.readonly) {\n return\n }\n\n rules[$field.name] = {\n format: {\n pattern: $field.getAttribute('pattern'),\n message: '^Required',\n },\n }\n })\n\n $form.querySelectorAll('[aria-required]').forEach(($field) => {\n // Ignore hidden fields\n if ((findFieldWrapper($field) && findFieldWrapper($field).offsetHeight === 0) || $field.readonly) {\n return\n }\n\n if ($field.classList.contains('optionset')) {\n const $radio = $field.querySelector('input[type=radio]')\n const $checkbox = $field.querySelector('input[type=checkbox]')\n\n if ($radio) {\n rules[$radio.name] = {\n presence: {\n message: '^Required',\n },\n }\n }\n\n if ($checkbox) {\n rules[$checkbox.name] = {\n checkboxGroup: $checkbox.closest('.optionset'),\n }\n }\n }\n })\n\n return rules\n}\n\nexport const handleValidation = ($form) => {\n const rules = buildRules($form)\n const result = validate($form, rules)\n\n if (result !== undefined) {\n for (const [name, messages] of Object.entries(result)) {\n const $field = $form.querySelector(`[name=\"${name}\"]`)\n const $fieldWrapper = findFieldWrapper($field)\n\n // Place error message\n if ($fieldWrapper) {\n const $existingErrorMessage = $fieldWrapper.querySelector('.form-field-message')\n\n if ($existingErrorMessage) {\n $existingErrorMessage.remove()\n }\n\n const message = `\n
\n ${messages[0]}\n
\n `\n $fieldWrapper.insertAdjacentHTML('beforeend', message)\n $fieldWrapper.classList.add('has-error')\n }\n\n $field.classList.add('has-error')\n }\n\n const shouldScroll = $form.dataset.formScroll !== undefined\n\n const $firstError = $form.querySelector('.field.has-error')\n\n if (shouldScroll && $firstError) {\n scrollTo($firstError, 150, () => {\n setTimeout(() => {\n $firstError.querySelector('input') && $firstError.querySelector('input').focus()\n }, 0)\n })\n }\n\n return false\n }\n\n return true\n}\n\nexport const validate = validator\n","import { on } from 'delegated-events'\nimport { handleValidation, handleBlur } from '../common/validation'\n\nconst fn = {\n init: () => {\n on('blur', '.has-error', handleBlur, { capture: true })\n on('change', '.has-error', handleBlur, { capture: true })\n on('change', '.has-error blur', handleBlur, {\n capture: true,\n })\n on('submit', '[data-form-validate]:not(.multistepform)', (e) => handleValidation(e.target))\n on('submit', '[data-form-ajax]', fn.handleAjax)\n\n on('change', '.form-all-group input[type=\"checkbox\"]', fn.handleAllGroup)\n\n fn.setupSpecialFields()\n },\n\n setupSpecialFields: () => {\n document.querySelectorAll('form').forEach(($form) => {\n // Setup file inputs\n $form.querySelectorAll('input[type=file]').forEach(($input) => {\n const $placeholder = document.createElement('div')\n $placeholder.classList.add('file-input-placeholder')\n $placeholder.classList.add('is-hidden')\n\n if ($input.value) {\n $placeholder.textContent = $input.files[0].name\n $placeholder.classList.remove('is-hidden')\n } else {\n $placeholder.classList.add('is-hidden')\n }\n\n $input.parentNode.insertBefore($placeholder, $input)\n\n $placeholder.addEventListener('click', () => $input.click())\n\n $input.addEventListener('change', (e) => {\n $placeholder.textContent = e.target.files[0].name\n $placeholder.classList.remove('is-hidden')\n })\n })\n })\n },\n\n handleAllGroup: (e) => {\n const isAll = e.target.value === 'All'\n const group = e.target.closest('.form-all-group')\n\n if (group) {\n const allEl = group.querySelector('input[value=\"All\"]')\n\n if (allEl && isAll) {\n if (allEl.checked) {\n group.querySelectorAll('[type=\"checkbox\"]').forEach((x) => (x.checked = true))\n } else {\n group.querySelectorAll('[type=\"checkbox\"]').forEach((x) => (x.checked = false))\n }\n }\n\n if (allEl && !isAll) {\n allEl.checked = false\n }\n }\n },\n\n handleAjax: (e) => {\n e.preventDefault()\n\n const $form = e.target\n const isValid = handleValidation($form)\n\n if (isValid) {\n const $formMessages = $form.querySelector('.form-messages')\n const $submitButton = $form.querySelector('[type=submit]')\n let autoHideMessage = true\n fn.toggleSubmit($submitButton)\n\n ajax\n .url($form.action)\n .body(new FormData($form))\n .post()\n .json((res) => {\n if (res.success) {\n $form.reset()\n $form.querySelectorAll('select').forEach((x) => (x.value = null))\n $form.querySelectorAll('.file-input-placeholder').forEach((x) => x.classList.add('is-hidden'))\n $form.querySelectorAll('.toggle-fields').forEach((x) => x.classList.add('_hidden'))\n\n if ($form.dataset.hideOnSubmit) {\n $form.querySelectorAll('.form-content').forEach((x) => x.classList.add('_hidden'))\n autoHideMessage = false\n }\n }\n\n if (res.message) {\n fn.showFormMessages($formMessages, res.message, res.success, autoHideMessage)\n }\n })\n .catch(() => {\n fn.showFormMessages($formMessages, 'Sorry, there was a problem with your submission')\n })\n .finally(() => {\n fn.toggleSubmit($submitButton)\n })\n }\n },\n\n toggleSubmit: ($submitButton) => {\n $submitButton.disabled = !$submitButton.disabled\n $submitButton.classList.toggle('btn-loading')\n },\n\n showFormMessages: ($holder, message, success, autoHide) => {\n $holder.style.display = 'block'\n $holder.innerHTML = message\n\n if (success) {\n $holder.classList.remove('form-message-error')\n } else {\n $holder.classList.add('form-message-error')\n }\n\n if (autoHide) {\n setTimeout(() => {\n $holder.style.display = 'none'\n }, 5000)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\n\nconst fn = {\n init: () => {\n on('click', '[data-full-modal]', fn.handleModalOpen)\n on('click', '.full-modal-close', fn.handleModalClose)\n },\n\n handleModalOpen: (e) => {\n const target = e.target.closest('[data-full-modal]').dataset.fullModal\n const el = document.querySelector(target)\n\n if (el) {\n el.classList.remove('opacity-0')\n el.classList.remove('pointer-events-none')\n document.documentElement.classList.add('overflow-hidden')\n } else {\n ajax\n .url(`/_modal/${target}`)\n .get()\n .text((resp) => {\n const modalId = Math.floor(Math.random() * 1000) + 1\n const node = document.createElement('div')\n node.id = `full-modal-${modalId}`\n node.innerHTML = resp\n\n document.body.appendChild(node)\n\n const el = node.querySelector('.full-modal')\n\n if (el) {\n setTimeout(() => {\n el.classList.remove('opacity-0')\n document.documentElement.classList.add('overflow-hidden')\n }, 16)\n }\n })\n }\n },\n\n handleModalClose: (e) => {\n const modal = e.target.closest('.full-modal')\n\n const isOnPage = modal.classList.contains('full-modal-on-page')\n\n if (isOnPage) {\n modal.classList.add('opacity-0', 'pointer-events-none')\n document.documentElement.classList.remove('overflow-hidden')\n } else {\n const node = modal.parentNode\n\n const el = node.querySelector('.full-modal')\n\n if (el) {\n el.classList.add('opacity-0')\n\n setTimeout(() => {\n document.documentElement.classList.remove('overflow-hidden')\n node.remove()\n }, 250)\n }\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper, Autoplay, EffectFade } from 'swiper'\n\nSwiper.use([Autoplay, EffectFade])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.header-media-slider').forEach((el) => fn.setupSlider(el))\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n if (!container) {\n return\n }\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 1,\n speed: 500,\n autoplay: {\n delay: 6000,\n },\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n }\n\n if (numSlides > 1) {\n new Swiper(container, opts)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper, Pagination, Autoplay, EffectFade } from 'swiper'\n\nSwiper.use([Pagination, Autoplay, EffectFade])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.keycontacts-slider').forEach((el) => fn.setupSlider(el))\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n if (!container) {\n return\n }\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 1,\n speed: 500,\n autoplay: {\n delay: 6000,\n },\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n pagination: {\n el: el.querySelector('.swiper-pagination'),\n type: 'bullets',\n clickable: true,\n },\n }\n\n if (numSlides > 1) {\n new Swiper(container, opts)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper, Pagination, Autoplay, EffectFade } from 'swiper'\n\nSwiper.use([Pagination, Autoplay, EffectFade])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.media-slider').forEach((el) => fn.setupSlider(el))\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n if (!container) {\n return\n }\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 1,\n speed: 500,\n autoplay: {\n delay: 6000,\n },\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n pagination: {\n el: el.querySelector('.swiper-pagination'),\n type: 'bullets',\n clickable: true,\n },\n }\n\n if (document.body.classList.contains('pagetype-teambiopage')) {\n opts.breakpoints = {\n 768: {\n spaceBetween: 30,\n slidesPerColumn: 2,\n },\n }\n }\n\n if (numSlides > 1) {\n new Swiper(container, opts)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { Swiper, Pagination, Autoplay, Thumbs, EffectFade } from 'swiper'\n\nSwiper.use([Pagination, Autoplay, Thumbs, EffectFade])\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.media-thumbnail-slider').forEach((el) => fn.setupSlider(el))\n },\n\n setupSlider: (el) => {\n const mainContainer = el.querySelector('.swiper-container.main-swiper')\n const thumbnailContainer = el.querySelector('.swiper-container.thumbnail-swiper')\n\n if (!mainContainer) {\n return\n }\n\n const numSlides = mainContainer.querySelectorAll('.swiper-slide').length\n\n const mainOpts = {\n autoplay: {\n delay: 4000,\n },\n slidesPerView: 1,\n speed: 500,\n effect: 'fade',\n fadeEffect: {\n crossFade: true,\n },\n }\n\n const thumbnailOpts = {\n slidesPerView: 3,\n spaceBetween: 20,\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n }\n\n if (numSlides > 3) {\n thumbnailOpts.pagination = {\n el: thumbnailContainer.querySelector('.swiper-pagination'),\n type: 'bullets',\n clickable: true,\n }\n }\n\n if (numSlides > 1) {\n const thumbnailSwiper = new Swiper(thumbnailContainer, thumbnailOpts)\n\n mainOpts.thumbs = {\n swiper: thumbnailSwiper,\n }\n\n new Swiper(mainContainer, mainOpts)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\n\nconst actionBar = document.querySelector('.mobile-action-bar')\n\nconst fn = {\n init: () => {\n on('click', '[data-mab-trigger]', fn.handleOpenOverlay)\n on('click', '.mobile-action-bar-close button', fn.handleCloseOverlay)\n\n window.addEventListener('scroll', fn.handleScroll)\n window.addEventListener('resize', fn.setViewportHeight)\n\n fn.setViewportHeight()\n fn.handleScroll()\n fn.setupMapEmbed()\n },\n\n handleOpenOverlay: (e) => {\n const target = document.getElementById(e.target.closest('[data-mab-trigger]').dataset.mabTrigger)\n\n if (target) {\n actionBar.classList.add('is-overlay-active')\n target.classList.add('is-active')\n document.documentElement.classList.add('overflow-hidden')\n }\n },\n\n handleCloseOverlay: () => {\n actionBar.classList.remove('is-overlay-active')\n document.documentElement.classList.remove('overflow-hidden')\n document.querySelectorAll('.mobile-action-bar-overlay.is-active').forEach((x) => x.classList.remove('is-active'))\n },\n\n handleScroll: () => {\n document.documentElement.classList.toggle('has-scrolled', window.pageYOffset > 0)\n },\n\n setViewportHeight: () => {\n const height =\n window.innerHeight && document.documentElement.clientHeight\n ? Math.min(window.innerHeight, document.documentElement.clientHeight)\n : window.innerHeight ||\n document.documentElement.clientHeight ||\n document.getElementsByTagName('body')[0].clientHeight\n\n document.documentElement.style.setProperty('--vh', `${height}px`)\n },\n\n setupMapEmbed: () => {\n const mapHolder = document.getElementById('mobile-action-bar-map-embed')\n\n if (!mapHolder) {\n return\n }\n\n const google = window.google\n const data = JSON.parse(mapHolder.dataset.json)\n const center = new google.maps.LatLng(data.lat, data.lng)\n\n const mapOptions = {\n center,\n zoom: 14,\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n disableDefaultUI: true,\n scrollwheel: false,\n styles: [\n {\n featureType: 'poi',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n ],\n }\n\n const map = new google.maps.Map(mapHolder, mapOptions)\n const bounds = new google.maps.LatLngBounds()\n\n google.maps.event.addListenerOnce(map, 'tilesloaded', () => {\n const marker = new google.maps.Marker({\n map: map,\n title: data.title,\n animation: google.maps.Animation.DROP,\n position: new google.maps.LatLng(data.lat, data.lng),\n panposition: new google.maps.LatLng(data.lat, data.lng),\n })\n\n google.maps.event.addListener(marker, 'click', () => {\n window.open(data.mapLink)\n })\n\n bounds.extend(marker.getPosition())\n })\n },\n}\n\nexport default {\n can: () => actionBar,\n run: fn.init,\n}\n","import Cookies from 'js-cookie'\nimport tingle from 'tingle.js'\nimport { on } from 'delegated-events'\n\nconst fn = {\n init: () => {\n on('click', '[data-modal]', fn.handleOpen)\n\n const autoOpenModal = document.querySelector('[data-auto-modal]')\n\n if (autoOpenModal) {\n fn.openModal(autoOpenModal)\n }\n },\n\n handleOpen: (e) => {\n if (e.target.tagName !== 'A' || (e.target.tagName === 'A' && e.target.dataset.modal)) {\n e.preventDefault()\n fn.openModal(e.target.closest('[data-modal]'))\n }\n },\n\n openModal: (el) => {\n let modal = null\n\n // Setup an image modal\n if (el.dataset.modal === 'image') {\n let opts = {\n cssClass: ['modal--image'],\n }\n\n modal = fn.buildImageModal(el.getAttribute('href'), opts)\n }\n\n // Setup a video modal\n if (el.dataset.modal === 'video') {\n let opts = {\n cssClass: ['modal--video'],\n closeMethods: ['button', 'escape'],\n }\n\n modal = fn.buildVideoModal(el.getAttribute('href'), opts)\n }\n\n // Setup a content/AJAX modal\n if (el.dataset.modal === 'content') {\n let opts = {\n cssClass: ['modal--content', 'modal--ajax'],\n }\n\n const href = el.dataset.href ? el.dataset.href : el.getAttribute('href')\n modal = fn.buildContentModal(href, opts)\n }\n\n // Setup an embed modal\n if (el.dataset.modal === 'embed') {\n let opts = {\n cssClass: ['modal--embed'],\n closeMethods: ['button'],\n }\n\n modal = fn.buildEmbedModal(el.getAttribute('href'), opts)\n }\n\n // Setup an auto HTML modal\n if (el.dataset.autoModal !== undefined) {\n if (el.dataset.autoModal === 'setcookie') {\n Cookies.set('seenautomodal', true, {\n expires: 1,\n })\n }\n\n let opts = {\n cssClass: ['modal--content'],\n }\n\n modal = fn.buildModal(opts)\n modal.setContent(el.innerHTML)\n }\n\n if (modal) {\n modal.open()\n }\n },\n\n buildModal: (opts = {}) => {\n let cssClass = ['modal']\n let closeMethods = ['button', 'escape', 'overlay']\n\n if (Object.prototype.hasOwnProperty.call(opts, 'cssClass')) {\n cssClass = cssClass.concat(opts.cssClass)\n }\n\n if (Object.prototype.hasOwnProperty.call(opts, 'closeMethods')) {\n closeMethods = opts.closeMethods\n }\n\n const modal = new tingle.modal({\n closeMethods,\n cssClass,\n beforeOpen: () => {\n modal.modal.classList.add('modal--loading')\n\n // Move the close button\n const closeBtn = modal.modal.querySelector('.tingle-modal__close')\n closeBtn.querySelector('.tingle-modal__closeIcon').innerHTML = `\n \n \n \n `\n modal.modal.querySelector('.tingle-modal-box').appendChild(closeBtn)\n },\n onOpen: () => {\n modal.modal.classList.remove('modal--loading')\n },\n onClose: () => {\n modal.destroy()\n\n if (window._currentModal) {\n window._currentModal = null\n }\n },\n })\n\n return modal\n },\n\n buildImageModal: (href, opts = {}) => {\n const modal = fn.buildModal(opts)\n modal.setContent(``)\n\n return modal\n },\n\n buildVideoModal: (href, opts = {}) => {\n const modal = fn.buildModal(opts)\n modal.setContent(``)\n\n return modal\n },\n\n buildEmbedModal: (href, opts = {}) => {\n const modal = fn.buildModal(opts)\n modal.setContent(``)\n\n return modal\n },\n\n buildContentModal: (href, opts = {}) => {\n const modal = fn.buildModal(opts)\n\n ajax\n .url(href)\n .get()\n .text((resp) => {\n modal.setContent(resp)\n modal.modal.classList.remove('modal--ajax')\n })\n\n return modal\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\n\nconst opportunitiesToggler = document.querySelector('.opportunities-toggler')\n\nconst fn = {\n init: () => {\n on('click', '[data-opportunities-toggle]', fn.handleToggle)\n },\n\n handleToggle: (e) => {\n const target = e.target.dataset.opportunitiesToggle\n const groups = document.querySelectorAll('.opportunities-group')\n\n opportunitiesToggler.querySelectorAll('button').forEach((x) => x.classList.remove('btn-fill'))\n opportunitiesToggler.querySelector(`button[data-opportunities-toggle=\"${target}\"]`).classList.add('btn-fill')\n\n if (target === 'all') {\n groups.forEach((x) => (x.style.display = 'block'))\n } else {\n groups.forEach((x) => (x.style.display = 'none'))\n\n document.querySelector(target).style.display = 'block'\n }\n },\n}\n\nexport default {\n can: () => opportunitiesToggler,\n run: fn.init,\n}\n","const fn = {\n init: () => {\n fn.setupPageHeaderMediaSlider()\n },\n\n setupPageHeaderMediaSlider: () => {\n const headerContainer = document.querySelector('.has-media-slider-header .page-header-container')\n\n const contentContainer = document.querySelector('.has-media-slider-header .section-content')\n\n if (!headerContainer || !contentContainer) {\n return\n }\n\n const handleOffset = () => {\n const headerTop = headerContainer.getBoundingClientRect().top\n const contentTop = contentContainer.getBoundingClientRect().top\n const headerPadding = parseInt(window.getComputedStyle(headerContainer).paddingTop, 10)\n const offset = contentTop - headerTop - headerPadding + 72\n\n headerContainer.closest('.has-media-slider-header').style.setProperty('--top-offset', `-${offset}px`)\n }\n\n window.addEventListener('resize', handleOffset)\n\n handleOffset()\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","const fn = {\n init: () => {\n let threshold = 0.8\n\n if (document.body.classList.contains('pagetype-whatispage')) {\n threshold = 0.5\n }\n\n if (document.body.classList.contains('pagetype-investmentpage')) {\n threshold = 0.5\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.target.classList.contains('panel') || entry.target.classList.contains('section-panel')) {\n fn.updateActiveLink(entry.target)\n } else {\n fn.clearActiveLink()\n }\n }\n })\n },\n {\n threshold,\n }\n )\n\n document.querySelectorAll('section.panel').forEach((el) => observer.observe(el))\n\n document.querySelectorAll('section.section-panel').forEach((el) => observer.observe(el))\n\n observer.observe(document.querySelector('.page-header'))\n\n if (document.querySelector('.panel-links-screen')) {\n window.addEventListener('resize', fn.handleScreenWidth)\n fn.handleScreenWidth()\n }\n },\n\n updateActiveLink: (el) => {\n const link = document.querySelector(`.panel-link[data-panel-id=\"${el.id}\"]`)\n\n fn.clearActiveLink()\n\n if (link) {\n link.classList.add('is-active')\n }\n },\n\n clearActiveLink: () => {\n document.querySelectorAll('.panel-links .panel-link').forEach((x) => x.classList.remove('is-active'))\n },\n\n handleScreenWidth: () => {\n const screen = document.querySelector('.panel-links-screen')\n\n const maxWidth = Math.ceil(screen.getBoundingClientRect().x)\n\n screen.style.setProperty('--panel-links-screen-max-width', `calc(100vw - ${maxWidth}px)`)\n },\n}\n\nexport default {\n can: () => document.body.classList.contains('has-panel-observer'),\n run: fn.init,\n}\n","import { on } from 'delegated-events'\nimport { Swiper, Pagination, Autoplay, Lazy } from 'swiper'\n\nSwiper.use([Pagination, Autoplay, Lazy])\n\nconst lightGallery = window.lightGallery\n\nconst swipers = {}\n\nconst fn = {\n init: () => {\n document.querySelectorAll('.photo-gallery-grid-slider').forEach((el) => fn.setupSlider(el))\n\n on('click', '[data-gallery-trigger]', fn.handleTrigger)\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n const numSlides = container.querySelectorAll('.swiper-slide').length\n const id = Math.floor(Math.random() * 1000)\n\n el.dataset.swiperId = id\n\n const opts = {\n spaceBetween: 8,\n speed: 500,\n autoplay: {\n delay: 6000,\n },\n slidesPerView: 1,\n pagination: {\n el: el.querySelector('.swiper-pagination'),\n type: 'bullets',\n clickable: true,\n },\n breakpoints: {\n 768: {\n spaceBetween: 16,\n },\n },\n preloadImages: false,\n watchSlidesVisibility: true,\n lazy: {\n loadPrevNext: true,\n },\n }\n\n if (numSlides > 1) {\n swipers[id] = new Swiper(container, opts)\n }\n },\n\n handleTrigger: (e) => {\n e.preventDefault()\n\n const swiperId = e.target.closest('.photo-gallery-grid-slider').dataset.swiperId\n const gallery = e.target.closest('[data-photo-gallery]')\n const startIndex = e.currentTarget.dataset.galleryIndex || 0\n const galleryData = JSON.parse(gallery.dataset.photoGallery)\n\n if (swiperId in swipers) {\n swipers[swiperId].autoplay.stop()\n }\n\n lightGallery(gallery, {\n index: parseInt(startIndex),\n dynamic: true,\n dynamicEl: galleryData,\n thumbnail: true,\n download: false,\n })\n\n gallery.addEventListener(\n 'onCloseAfter',\n () => {\n const uid = gallery.getAttribute('lg-uid')\n\n if (Object.prototype.hasOwnProperty.call(window.lgData, uid)) {\n window.lgData[uid].destroy(true)\n }\n\n if (swiperId in swipers) {\n swipers[swiperId].autoplay.start()\n }\n },\n { once: true }\n )\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\nimport scrollTo from '../common/scrollTo'\n\nconst fn = {\n init: () => {\n fn.bindEvents()\n fn.handleUrl()\n fn.handleScrollToMe()\n },\n\n bindEvents: () => {\n on('click', '[data-scroll]', fn.handleClick)\n },\n\n handleClick: (e) => {\n const el = e.target.closest('[data-scroll]')\n\n let targetSelector = null\n\n if (el.dataset.scroll) {\n targetSelector = el.dataset.scroll\n } else if (el.tagName === 'A') {\n targetSelector = el.hash\n } else {\n return\n }\n\n if (targetSelector) {\n const target = document.querySelector(targetSelector)\n\n if (target) {\n e.preventDefault()\n\n document.documentElement.classList.remove('js-nav-active')\n\n if (window._currentModal && window._currentModal.modal) {\n window._currentModal.close()\n }\n\n if (target.classList.contains('element-formstackform')) {\n const buttonTrigger = target.querySelector('.btn-form-trigger[aria-expanded=\"false\"]')\n\n if (buttonTrigger) {\n buttonTrigger.click()\n }\n }\n\n scrollTo(target)\n }\n }\n },\n\n handleUrl: () => {\n if (window.location.hash) {\n let targetSelector = window.location.hash\n\n let target = document.querySelector(targetSelector)\n\n if (target) {\n scrollTo(target)\n }\n }\n },\n\n // Automatically scrolls to the first element with the [data-scrolltome] attribute\n handleScrollToMe: () => {\n const target = document.querySelector('[data-scrolltome]')\n\n if (target) {\n setTimeout(() => {\n scrollTo(target)\n }, 250)\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","const scrollToTop = document.querySelector('.scroll-to-top')\n\nconst fn = {\n init: () => {\n fn.bindEvents()\n\n fn.handleScroll()\n },\n\n bindEvents: () => {\n window.addEventListener('scroll', fn.handleScroll)\n },\n\n handleScroll: () => {\n const offset =\n (document.documentElement.scrollTop + document.body.scrollTop) /\n (document.documentElement.scrollHeight - document.documentElement.clientHeight)\n\n if (offset > 0.4) {\n scrollToTop.classList.remove('is-hidden')\n } else {\n scrollToTop.classList.add('is-hidden')\n }\n },\n}\n\nexport default {\n can: () => scrollToTop,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\n\nconst navigationMenu = document.querySelector('.section-navigation-menu')\n\nconst fn = {\n init: () => {\n on('click', '.section-navigation-trigger', fn.handleMenu)\n\n window.addEventListener('click', fn.handleOutsideClick)\n },\n\n handleMenu: (e) => {\n if (navigationMenu) {\n e.stopPropagation()\n\n navigationMenu.classList.toggle('is-active')\n document.documentElement.classList.toggle('overflow-hidden')\n }\n },\n\n handleOutsideClick: (e) => {\n if (navigationMenu && navigationMenu.classList.contains('is-active')) {\n if (!e.target.closest('.section-navigation-menu')) {\n navigationMenu.classList.remove('is-active')\n document.documentElement.classList.remove('overflow-hidden')\n }\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\n\nconst topBar = document.querySelector('.site-announcement')\n\nconst fn = {\n init: () => {\n on('click', '.site-announcement-close', fn.handleClose)\n\n window.addEventListener('resize', fn.setHeight)\n fn.setHeight()\n },\n\n handleClose: () => {\n topBar.remove()\n fn.setHeight()\n },\n\n setHeight: () => {\n document.documentElement.style.setProperty('--site-announcement-height', `${topBar.offsetHeight}px`)\n },\n}\n\nexport default {\n can: () => topBar,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\nimport requestTimeout from '../common/requestTimeout'\n\nconst header = document.querySelector('.site-header')\nconst primaryHeader = document.querySelector('.site-primary-header')\nconst secondaryHeader = document.querySelector('.site-secondary-header')\nconst searchForm = document.querySelector('.site-header-search form')\n\nconst state = {\n stuck: true,\n prevScroll: window.scrollY || document.documentElement.scrollTop,\n currScroll: 0,\n scrollDir: 0,\n prevDir: 0,\n}\n\nconst fn = {\n init: () => {\n fn.handleScroll()\n fn.bindEvents()\n\n on('click', '.site-search-trigger', fn.handleOpenSearch)\n on('click', '.site-search-close', fn.handleCloseSearch)\n\n if (searchForm) {\n searchForm.addEventListener('submit', fn.handleSearchSubmit)\n searchForm.addEventListener('keyup', fn.handleSearchKeyUp)\n }\n },\n\n bindEvents: () => {\n window.addEventListener('scroll', fn.handleScroll)\n },\n\n handleScroll: () => {\n state.stuck = primaryHeader.getBoundingClientRect().top <= 0\n state.currScroll = window.scrollY || document.documentElement.scrollTop\n\n if (state.currScroll > state.prevScroll + 10) {\n state.scrollDir = 'down'\n } else if (state.currScroll < state.prevScroll - 10) {\n state.scrollDir = 'up'\n }\n\n state.prevScroll = state.currScroll\n\n if (state.scrollDir === 'up') {\n document.documentElement.classList.add('is-scrolling-up')\n } else {\n document.documentElement.classList.remove('is-scrolling-up')\n }\n\n header.classList.toggle('is-stuck', state.stuck)\n header.classList.toggle('is-scrolled', state.currScroll > secondaryHeader.offsetHeight)\n },\n\n handleOpenSearch: () => {\n document.documentElement.classList.add('js-search-active')\n\n requestTimeout(() => {\n searchForm.querySelector('input').focus()\n }, 250)\n },\n\n handleCloseSearch: () => {\n document.documentElement.classList.remove('js-search-active')\n\n searchForm.querySelector('input').value = null\n searchForm.classList.remove('has-error')\n },\n\n handleSearchSubmit: (e) => {\n const input = e.target.querySelector('input')\n\n if (input.value === '') {\n e.preventDefault()\n searchForm.classList.add('has-error')\n input.focus()\n }\n },\n\n handleSearchKeyUp: () => {\n searchForm.classList.remove('has-error')\n },\n}\n\nexport default {\n can: () => header,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\nimport throttle from 'lodash/throttle'\nimport requestTimeout from '../common/requestTimeout'\n\nconst bodyScrollLock = require('body-scroll-lock')\nconst disableBodyScroll = bodyScrollLock.disableBodyScroll\nconst enableBodyScroll = bodyScrollLock.enableBodyScroll\n\nconst nav = document.querySelector('.site-mobile-menu')\nconst navOpen = document.querySelector('.site-mobile-menu-open')\nconst navMenu = document.querySelector('.site-nav-menu')\nconst navHeader = document.querySelector('.site-nav-header')\nconst navHeaderTitle = document.querySelector('.site-nav-header-title')\n\nconst state = {\n menuStack: [],\n}\n\nconst fn = {\n init: () => {\n fn.bindEvents()\n },\n\n bindEvents: () => {\n window.addEventListener('resize', throttle(fn.handleResize, 250))\n document.addEventListener('click', fn.closeMenu)\n on('click', '.site-mobile-menu-open', fn.openMenu)\n on('click', '.site-mobile-menu-close', fn.closeMenu)\n on('click', '.site-nav-prev', fn.moveMenuPrev)\n on('click', '.site-nav-next', fn.moveMenuNext)\n },\n\n handleMenuToggle: () => {\n const isOpen = navOpen.getAttribute('aria-expanded') === 'true'\n\n if (isOpen) {\n fn.closeMenu({ target: document.body })\n } else {\n fn.openMenu()\n }\n },\n\n openMenu: () => {\n document.documentElement.classList.add('js-menu-active')\n navOpen.setAttribute('aria-expanded', 'true')\n disableBodyScroll(nav)\n },\n\n closeMenu: ({ target }) => {\n if (\n !target.closest('.site-search-close') &&\n !target.closest('.site-mobile-menu-open') &&\n (target.closest('.site-mobile-menu-close') || !target.closest('.site-mobile-menu'))\n ) {\n document.documentElement.classList.remove('js-menu-active')\n navOpen.setAttribute('aria-expanded', 'false')\n\n fn.resetMenu()\n enableBodyScroll(nav)\n }\n },\n\n moveMenuNext: ({ target }) => {\n const next = target.closest('.has-submenu').querySelector('.site-nav-submenu')\n state.menuStack.push(next)\n next.classList.add('is-active')\n fn.updateMenu()\n },\n\n moveMenuPrev: () => {\n const prev = state.menuStack.pop()\n prev.classList.remove('is-active')\n fn.updateMenu()\n },\n\n resetMenu: () => {\n const currentMenuStack = state.menuStack\n\n state.menuStack = []\n\n requestTimeout(() => {\n currentMenuStack.forEach((el) => el.classList.remove('is-active'))\n fn.updateMenu()\n }, 300)\n },\n\n updateMenu: () => {\n const menuDepth = state.menuStack.length\n navMenu.style.transform = `translate3d(${menuDepth * -100}%, 0, 0)`\n\n fn.updateNavHeader()\n },\n\n updateNavHeader: () => {\n const currentMenu = state.menuStack[state.menuStack.length - 1]\n let headerTitle = null\n\n if (currentMenu) {\n const parentLink = currentMenu.closest('.has-submenu').querySelector('a:first-of-type')\n headerTitle = parentLink.getAttribute('title')\n }\n\n navHeaderTitle.textContent = headerTitle\n navHeader.classList.toggle('is-active', currentMenu !== undefined)\n nav.classList.toggle('is-active', currentMenu !== undefined)\n },\n\n handleResize: () => {\n if (window.matchMedia('(min-width: 1024px)').matches) {\n fn.closeMenu({ target: document.body })\n }\n },\n}\n\nexport default {\n can: () => document.contains(nav),\n run: fn.init,\n}\n","import Cookies from 'js-cookie'\nimport { on } from 'delegated-events'\n\nconst setCookie = (state) => {\n Cookies.set('widgetstate', state, {\n expires: 1,\n })\n}\n\nlet didInteract = false\n\nconst widget = document.querySelector('.site-widget')\n\nconst fn = {\n init: () => {\n on('click', '.site-widget-top', fn.handleToggle)\n\n const offset = widget.querySelector('.site-widget-top').offsetHeight\n\n if (Cookies.get('widgetstate') === 'inactive') {\n widget.style.transform = `translate3d(0, calc(100% - ${offset}px), 0)`\n widget.setAttribute('aria-expanded', 'false')\n setCookie('inactive')\n } else {\n widget.style.transform = 'translate3d(0, 0, 0)'\n widget.setAttribute('aria-expanded', 'true')\n setCookie('active')\n }\n\n if (widget.classList.contains('has-auto-hide')) {\n setTimeout(() => {\n if (widget.getAttribute('aria-expanded') === 'true' && !didInteract) {\n widget.style.transform = `translate3d(0, calc(100% - ${offset}px), 0)`\n widget.setAttribute('aria-expanded', 'false')\n setCookie('inactive')\n }\n }, 5000)\n }\n },\n\n handleToggle: () => {\n const offset = widget.querySelector('.site-widget-top').offsetHeight\n\n if (widget.getAttribute('aria-expanded') === 'false') {\n widget.style.transform = 'translate3d(0, 0, 0)'\n widget.setAttribute('aria-expanded', 'true')\n didInteract = true\n setCookie('active')\n } else {\n widget.style.transform = `translate3d(0, calc(100% - ${offset}px), 0)`\n widget.setAttribute('aria-expanded', 'false')\n setCookie('inactive')\n }\n },\n}\n\nexport default {\n can: () => widget,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\nimport { slideToggle } from '../common/slide'\n\nconst fn = {\n init: () => {\n on('click', '[data-slide-toggle]', fn.handleToggle)\n on('keyup', '[data-slide-toggle]', fn.handleToggle)\n },\n\n handleToggle: (e) => {\n if (e.type === 'keyup' && e.keyCode !== 13) {\n return\n }\n\n const trigger = e.target.closest('[data-slide-toggle]')\n\n if (!trigger) {\n return\n }\n\n const target = document.getElementById(trigger.getAttribute('aria-controls'))\n\n if (!target) {\n return\n }\n\n if (trigger.getAttribute('aria-expanded') === 'false') {\n slideToggle(target)\n trigger.setAttribute('aria-expanded', 'true')\n } else {\n slideToggle(target)\n trigger.setAttribute('aria-expanded', 'false')\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\nimport { slideToggle } from '../common/slide'\n\nconst fn = {\n init: () => {\n on('click', '[data-slide-classtoggle]', fn.handleToggle)\n on('keyup', '[data-slide-classtoggle]', fn.handleToggle)\n },\n\n handleToggle: (e) => {\n if (e.type === 'keyup' && e.keyCode !== 13) {\n return\n }\n\n const trigger = e.target.closest('[data-slide-classtoggle]')\n\n if (!trigger) {\n return\n }\n\n let targets = document.getElementsByClassName(trigger.getAttribute('aria-controls'))\n\n targets = [...targets]\n\n if (!targets) {\n return\n }\n\n if (trigger.getAttribute('aria-expanded') === 'false') {\n trigger.getElementsByTagName('span')[0].classList.add('opened')\n trigger.setAttribute('aria-expanded', 'true')\n trigger.setAttribute('aria-label', 'Close')\n trigger.setAttribute('title', 'Close')\n }\n else {\n trigger.getElementsByTagName('span')[0].classList.remove('opened')\n trigger.setAttribute('aria-expanded', 'false')\n trigger.setAttribute('aria-label', 'View more information')\n trigger.setAttribute('title', 'View more information')\n\n }\n targets.forEach(function(target) {\n if (trigger.getAttribute('aria-expanded') === 'false') {\n //target.parentNode.classList.remove('self-start')\n //fn.selfStart(target.parentNode)\n slideToggle(target)\n } else {\n //target.parentNode.classList.add('self-start')\n //fn.selfStart(target.parentNode)\n slideToggle(target)\n }\n })\n },\n\n selfStart: (e) => {\n if (e.classList.contains('proj-desc')) {\n var el = e.nextElementSibling\n for (let i=1; i<=4; i++) {\n el.classList.toggle('self-start')\n el = el.nextElementSibling\n }\n }\n else if (e.classList.contains('org-desc')) {\n var org = e.previousElementSibling\n org.classList.toggle('self-start')\n }\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\n\nconst teamToggler = document.querySelector('.team-toggler')\n\nconst fn = {\n init: () => {\n on('click', '[data-team-toggle]', fn.handleToggle)\n fn.checkUrlParam()\n },\n\n handleToggle: (e) => {\n const target = e.target.dataset.teamToggle\n const groups = document.querySelectorAll('.team-group')\n\n teamToggler.querySelectorAll('button').forEach((x) => x.classList.remove('btn-fill'))\n teamToggler.querySelector(`button[data-team-toggle=\"${target}\"]`).classList.add('btn-fill')\n\n if (target === 'all') {\n groups.forEach((x) => (x.style.display = 'block'))\n } else {\n groups.forEach((x) => (x.style.display = 'none'))\n\n document.querySelector(target).style.display = 'block'\n }\n },\n\n checkUrlParam: () => {\n const urlParams = new URLSearchParams(window.location.search)\n const team = urlParams.get('team')\n if (team){\n const groupSection = team + '-members'\n const buttonSelectedClass = 'button.' + groupSection;\n const groups = document.querySelectorAll('.team-group')\n\n teamToggler.querySelectorAll('button').forEach((x) => x.classList.remove('btn-fill'))\n teamToggler.querySelector(buttonSelectedClass).classList.add('btn-fill')\n\n groups.forEach((x) => (x.style.display = 'none'))\n document.querySelector(`#${groupSection}`).style.display = 'block'\n }\n }\n}\n\nexport default {\n can: () => teamToggler,\n run: fn.init,\n}\n","import { isTouchDevice } from '../common/util'\nimport tippy from 'tippy.js'\nimport 'tippy.js/dist/tippy.css'\nimport 'tippy.js/themes/light.css'\n\nconst tooltips = document.querySelectorAll('[data-tippy]')\n\nconst fn = {\n init: () => {\n if (!isTouchDevice()) {\n tippy('[data-tippy]', {\n theme: 'light',\n arrow: true,\n delay: 40,\n })\n }\n },\n}\n\nexport default {\n can: () => tooltips.length,\n run: fn.init,\n}\n","export const isTouchDevice = () => {\n return 'ontouchstart' in document.documentElement\n}\n","import scrollTo from '../common/scrollTo'\nimport { on } from 'delegated-events'\nimport { Swiper, Navigation } from 'swiper'\n\nSwiper.use([Navigation])\n\nconst state = {\n filterSlider: null,\n}\nconst filterHeading = document.querySelector('.fund-type-filter-heading')\n\nconst fn = {\n init: () => {\n on('click', '.fund-type-comparison-toggles button', fn.handleComparisonToggle)\n\n on('click', '.fund-type-filter', fn.handleFilter)\n on('click', '.fund-type-filters-clear', fn.handleClearFilter)\n\n fn.setupFilterSlider()\n\n window.addEventListener('resize', fn.handleNavigationControls)\n },\n\n handleComparisonToggle: (e) => {\n const target = document.getElementById(e.target.dataset.target)\n\n if (target) {\n document.querySelectorAll('.fund-type-comparison').forEach((x) => x.classList.add('_hidden'))\n document.querySelectorAll('.fund-type-comparison-toggles button').forEach((x) => x.classList.remove('is-active'))\n\n target.classList.remove('_hidden')\n e.target.classList.add('is-active')\n }\n },\n\n handleFilter: (e) => {\n const el = e.target.closest('button')\n const filter = el.dataset.filter\n const filterClass = `has-filter-${filter}`\n const filterName = el.querySelector('span').textContent\n\n document.querySelectorAll('.fund-type-filter').forEach((x) => x.classList.remove('is-active'))\n el.classList.add('is-active')\n\n document.querySelectorAll('.fund-type').forEach((x) => x.classList.add('_hidden'))\n document.querySelectorAll(`.fund-type.${filterClass}`).forEach((x) => x.classList.remove('_hidden'))\n\n filterHeading.querySelector('span').textContent = filterName\n filterHeading.classList.remove('_hidden')\n\n scrollTo(document.querySelector('.fund-type-list'))\n },\n\n handleClearFilter: () => {\n document.querySelectorAll('.fund-type-filter').forEach((x) => x.classList.remove('is-active'))\n\n document.querySelectorAll('.fund-type').forEach((x) => x.classList.remove('_hidden'))\n\n filterHeading.classList.add('_hidden')\n },\n\n setupFilterSlider: () => {\n const container = document.querySelector('.fund-type-filters .swiper-container')\n\n if (!container) {\n return\n }\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 3,\n spaceBetween: 20,\n breakpoints: {\n 768: {\n touchRatio: 0,\n slidesPerView: 4,\n },\n 1024: {\n touchRatio: 0,\n slidesPerView: 6,\n },\n },\n }\n\n if (numSlides > 1) {\n opts.navigation = {\n nextEl: container.querySelector('.fund-type-filters-button-next'),\n prevEl: container.querySelector('.fund-type-filters-button-prev'),\n }\n }\n\n state.filterSlider = new Swiper(container, opts)\n\n fn.handleNavigationControls()\n },\n\n handleNavigationControls: () => {\n const controls = document.querySelector('.fund-type-filters-controls')\n\n if (state.filterSlider && controls) {\n if (state.filterSlider.isBeginning && state.filterSlider.isEnd) {\n controls.classList.add('invisible')\n } else {\n controls.classList.remove('invisible')\n }\n }\n },\n}\n\nexport default {\n can: () => document.body.classList.contains('pagetype-creatingafundpage'),\n run: fn.init,\n}\n","import { Swiper, Navigation } from 'swiper'\n\nSwiper.use([Navigation])\n\nconst fn = {\n init: () => {\n const els = document.querySelectorAll('.relatedcontent')\n els.forEach((el) => fn.setupSlider(el))\n\n if (els.length) {\n window.addEventListener('resize', fn.handlePaginationControls)\n\n fn.handlePaginationControls()\n }\n },\n\n setupSlider: (el) => {\n const container = el.querySelector('.swiper-container')\n\n if (container) {\n\n const numSlides = container.querySelectorAll('.swiper-slide').length\n\n const opts = {\n slidesPerView: 1,\n autoHeight: true,\n spaceBetween: 30,\n breakpoints: {\n 768: {\n autoHeight: false,\n slidesPerView: 3,\n },\n },\n }\n\n if (numSlides > 1) {\n opts.navigation = {\n nextEl: container.querySelector('.relatedcontent-button-next'),\n prevEl: container.querySelector('.relatedcontent-button-prev'),\n }\n }\n\n new Swiper(container, opts)\n\n }\n },\n\n handlePaginationControls: () => {\n document.querySelectorAll('.relatedcontent .swiper-container').forEach((el) => {\n const numSlides = el.querySelectorAll('.swiper-slide').length\n\n if (numSlides < 2) {\n return\n }\n\n el.querySelector('.relatedcontent-controls').classList.remove('is-hidden-controls')\n\n if (window.matchMedia('(min-width: 768px)').matches && numSlides < 4) {\n el.querySelector('.relatedcontent-controls').classList.add('is-hidden-controls')\n }\n })\n },\n}\n\nexport default {\n can: () => true,\n run: fn.init,\n}\n","import { on } from 'delegated-events'\n\nconst fn = {\n init: () => {\n on('click', '[data-fund-view]', fn.handleViewToggle)\n },\n\n handleViewToggle: (e) => {\n const button = e.target.closest('[data-fund-view]')\n const type = button.dataset.fundView\n const wrapper = document.querySelector('.funds-wrapper')\n\n document.querySelector('[data-fund-view].is-active').classList.remove('is-active')\n button.classList.add('is-active')\n\n wrapper.classList.remove('as-list')\n wrapper.classList.remove('as-grid')\n\n wrapper.classList.add(`as-${type}`)\n },\n}\n\nexport default {\n can: () => document.body.classList.contains('pagetype-fundspage') || document.body.classList.contains('pagetype-fundingprojectspage') || document.body.classList.contains('pagetype-organizationspage'),\n run: fn.init,\n}\n","import { on } from 'delegated-events'\n\nconst fn = {\n init: () => {\n on('click', '.setup-options-trigger', fn.handleSetupOptions)\n\n fn.setupMapEmbed()\n },\n\n handleSetupOptions: (e) => {\n const trigger = e.target\n const lightGallery = window.lightGallery\n\n lightGallery(trigger, {\n dynamic: true,\n dynamicEl: JSON.parse(trigger.dataset.images),\n download: true,\n thumbnail: false,\n })\n },\n\n setupMapEmbed: () => {\n const mapHolder = document.getElementById('meeting-space-map')\n\n if (!mapHolder) {\n return\n }\n\n const google = window.google\n const data = JSON.parse(mapHolder.dataset.json)\n const center = new google.maps.LatLng(data.lat, data.lng)\n\n const mapOptions = {\n center,\n zoom: 15,\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n disableDefaultUI: true,\n scrollwheel: false,\n styles: [\n {\n featureType: 'poi',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n ],\n }\n\n const map = new google.maps.Map(mapHolder, mapOptions)\n const bounds = new google.maps.LatLngBounds()\n\n google.maps.event.addListenerOnce(map, 'tilesloaded', () => {\n const marker = new google.maps.Marker({\n map: map,\n title: data.title,\n animation: google.maps.Animation.DROP,\n position: new google.maps.LatLng(data.lat, data.lng),\n panposition: new google.maps.LatLng(data.lat, data.lng),\n })\n\n google.maps.event.addListener(marker, 'click', () => {\n window.open(data.mapLink)\n })\n\n bounds.extend(marker.getPosition())\n\n if (window.matchMedia('(min-width: 768px)').matches) {\n map.panBy(-100, 0)\n }\n })\n },\n}\n\nexport default {\n can: () => document.body.classList.contains('pagetype-meetingspacepage'),\n run: fn.init,\n}\n","var map = {\n\t\"./elements/chartContent.js\": 7799,\n\t\"./elements/fileSlider.js\": 72302,\n\t\"./elements/fundGrowthCalculator.js\": 46615,\n\t\"./elements/initiatives.js\": 86158,\n\t\"./elements/investmentOptions.js\": 8151,\n\t\"./elements/logoTicker.js\": 89109,\n\t\"./elements/meetingSpaces.js\": 29322,\n\t\"./elements/milestones.js\": 64950,\n\t\"./elements/newsList.js\": 60809,\n\t\"./elements/photoGallery.js\": 9877,\n\t\"./elements/publicationSlider.js\": 83687,\n\t\"./elements/recentGrants.js\": 91336,\n\t\"./elements/scholarships.js\": 26602,\n\t\"./elements/stats.js\": 33383,\n\t\"./elements/steps.js\": 37355,\n\t\"./elements/testimonials.js\": 64181,\n\t\"./modules/accordionTabs.js\": 89039,\n\t\"./modules/animation.js\": 58369,\n\t\"./modules/countUp.js\": 80530,\n\t\"./modules/datepicker.js\": 63705,\n\t\"./modules/dropdown.js\": 80249,\n\t\"./modules/featuredItemsPageHeader.js\": 50901,\n\t\"./modules/form.js\": 71133,\n\t\"./modules/full-modal.js\": 80429,\n\t\"./modules/headerMediaSlider.js\": 44403,\n\t\"./modules/keyContactsSlider.js\": 45230,\n\t\"./modules/mediaSlider.js\": 50160,\n\t\"./modules/mediaThumbnailSlider.js\": 33165,\n\t\"./modules/mobileActionBar.js\": 13186,\n\t\"./modules/modal.js\": 25216,\n\t\"./modules/opportunitiesToggle.js\": 76977,\n\t\"./modules/pageHeader.js\": 17976,\n\t\"./modules/panelLinkObserver.js\": 48523,\n\t\"./modules/photoGalleryGrid.js\": 66354,\n\t\"./modules/scrollTo.js\": 42257,\n\t\"./modules/scrollToTop.js\": 90899,\n\t\"./modules/sectionNavigation.js\": 93837,\n\t\"./modules/siteAnnouncement.js\": 64183,\n\t\"./modules/siteHeader.js\": 19002,\n\t\"./modules/siteNavigation.js\": 12257,\n\t\"./modules/siteWidget.js\": 34479,\n\t\"./modules/slideToggle.js\": 84942,\n\t\"./modules/slideToggleClasses.js\": 34571,\n\t\"./modules/teamToggle.js\": 55107,\n\t\"./modules/tooltip.js\": 40904,\n\t\"./sections/creatingAFund.js\": 10897,\n\t\"./sections/fundDetails.js\": 73954,\n\t\"./sections/funds.js\": 33167,\n\t\"./sections/meetingSpace.js\": 39723\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 53407;"],"sourceRoot":""}