{"version":3,"file":"index-generated.js","sources":["index.js"],"sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i maxHeight) {\n newHeight = maxHeight;\n } //this.$media.height(newHeight);\n\n\n this.$media.parent().height(newHeight);\n this.$media.height(newHeight);\n }\n\n (0, _objectFit.objectFit)(this.$media[0]);\n }\n }]);\n\n return DynamicBanner;\n}();\n\nexports.DynamicBanner = DynamicBanner;\n\n},{\"../polyfill/object-fit\":121,\"jquery\":\"jquery\"}],3:[function(require,module,exports){\n\"use strict\";\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery.default)(document).ready(function () {\n var truncateDynamicContent = function truncateDynamicContent(content) {\n if (content && content.length >= 250) {\n return content.substr(0, 250) + \"\\u2026\";\n } else {\n return content;\n }\n };\n\n (0, _jquery.default)('.dynamic-content-listing__loading-spinner').hide();\n var dynamicContentPage = 0;\n\n var dynamicContentBlueprint = function dynamicContentBlueprint(data) {\n data.featureItemSummary = truncateDynamicContent(data.featureItemSummary);\n return \"\\n
\\n \".concat(data.featureItemImage1x1 && data.featureItemImage1x1.src ? \"\\n \\n \\n \\n \") : \"\", \"\\n
\\n \").concat(data.featureItemContentType ? \"\\n

\".concat(data.featureItemContentType, \"

\\n \") : \"\", \"\\n \").concat(data.featureItemDisplayDate ? \"\\n \".concat(data.featureItemDisplayDate, \"\\n \") : \"\", \"\\n \").concat(data.featureItemTitle, \"\\n \").concat(data.featureItemSummary ? \"\\n \".concat(data.featureItemSummary, \"\\n \") : \"\", \"\\n
\\n
\\n \");\n };\n\n (0, _jquery.default)('.js-load-more-dynamic-content').on('click', function () {\n (0, _jquery.default)('.dynamic-content-listing__loading-spinner').show();\n dynamicContentPage += 1;\n var $loadMore = (0, _jquery.default)(this);\n var $loadMoreWrapper = $loadMore.closest((0, _jquery.default)('.dynamic-content-listing__load-more-wrapper'));\n\n _jquery.default.get($loadMore.attr('data-api') + dynamicContentPage).done(function (data) {\n if (!data.items.length) {\n $loadMoreWrapper.hide();\n } else {\n (0, _jquery.default)(data.items).each(function (ind, elm) {\n $loadMoreWrapper.before(dynamicContentBlueprint(elm));\n });\n }\n\n if (data.isEndOfList) {\n $loadMoreWrapper.hide();\n }\n\n (0, _jquery.default)('.dynamic-content-listing__loading-spinner').hide();\n });\n }); // Truncate any existing content\n\n (0, _jquery.default)('.dynamic-content-listing__listing-summary').each(function (ind, elm) {\n (0, _jquery.default)(elm).text(truncateDynamicContent((0, _jquery.default)(elm).text()));\n });\n});\n\n},{\"jquery\":\"jquery\"}],4:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EmbedToggle = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar EmbedToggle = /*#__PURE__*/function () {\n function EmbedToggle($el) {\n _classCallCheck(this, EmbedToggle);\n\n this.$button = $el;\n this.$embedCode = $el.siblings(\".js-embed-code\");\n this.bindEvents();\n }\n\n _createClass(EmbedToggle, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$button.on(\"click\", function (event) {\n event.preventDefault();\n\n _this.toggleEmbedCode();\n });\n }\n }, {\n key: \"toggleEmbedCode\",\n value: function toggleEmbedCode() {\n this.$embedCode.toggleClass(\"is-visible\");\n }\n }]);\n\n return EmbedToggle;\n}();\n\nexports.EmbedToggle = EmbedToggle;\n\n},{}],5:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _default = function _default(str) {\n if (typeof jQuery !== \"undefined\") {\n // Create an empty div to use as a container,\n // then put the raw text in and get the HTML\n // equivalent out.\n return jQuery(\"
\").text(str).html();\n } // No jQuery, so use string replace.\n\n\n return str.replace(/&/g, \"&\").replace(/>/g, \">\").replace(/', {\n 'class': 'explore-module__modal-iframe js-explore-modal-iframe'\n });\n var $itemTitle = (0, _jquery.default)('
', {\n 'class': 'explore-module__sub-item-title'\n });\n\n var buildIframe = function buildIframe(index) {\n if (!iframeCache[index]) {\n iframeCache[index] = $iframeBlueprint.clone().attr('src', exploreItems[index].Url);\n }\n\n (0, _jquery.default)('.js-explore-modal-title').text(exploreItems[index].Title);\n (0, _jquery.default)('.js-explore-modal-iframe-wrapper').html(iframeCache[index]).css('display', 'none');\n iframeCache[index].on('load', function () {\n var iframeBody = iframeCache[index].contents().find('body');\n iframeBody.addClass('explore-module--iframe');\n iframeBody.css({\n padding: '0 40px',\n overflowX: 'hidden'\n });\n iframeBody.prepend($itemTitle.clone().text(exploreItems[index].Title));\n (0, _jquery.default)('.js-explore-modal-iframe-wrapper').css('display', 'block');\n });\n }; // If there isn't already a placeholder modal container for Explore Modules, create one\n\n\n var appendExplorePlaceholder = function appendExplorePlaceholder() {\n if ((0, _jquery.default)('.explore-module__modal-container').length === 0) {\n var newExploreModuleModal = \"\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n 1/10\\n
\\n
\\n \\n
\\n
\\n
\\n
\";\n (0, _jquery.default)(document.body).append(newExploreModuleModal);\n }\n };\n\n var closeExploreModal = function closeExploreModal() {\n (0, _jquery.default)('.explore-module__modal-container').removeClass('is-open').fadeOut(100);\n exploreIndex = 0;\n iframeCache = [];\n (0, _jquery.default)(document.body).removeClass('scroll-disabled');\n };\n\n var prevExploreModalItem = function prevExploreModalItem() {\n if (exploreIndex > 0) {\n (0, _jquery.default)('.js-explore-modal-prev').removeClass('is-disabled');\n exploreIndex -= 1;\n (0, _jquery.default)('.js-explore-module-current-index').text(exploreIndex + 1);\n buildIframe(exploreIndex);\n }\n\n if (exploreIndex === 0) {\n (0, _jquery.default)('.js-explore-modal-prev').addClass('is-disabled');\n }\n\n if (exploreItems.length > 1) {\n (0, _jquery.default)('.js-explore-modal-next').removeClass('is-disabled');\n }\n };\n\n var nextExploreModalItem = function nextExploreModalItem() {\n if (exploreIndex + 1 < exploreItems.length) {\n (0, _jquery.default)('.js-explore-modal-next').removeClass('is-disabled');\n exploreIndex += 1;\n (0, _jquery.default)('.js-explore-module-current-index').text(exploreIndex + 1);\n buildIframe(exploreIndex);\n\n if (exploreIndex + 1 === exploreItems.length) {\n (0, _jquery.default)('.js-explore-modal-next').addClass('is-disabled');\n }\n }\n\n if (exploreItems.length > 1) {\n (0, _jquery.default)('.js-explore-modal-prev').removeClass('is-disabled');\n }\n };\n\n appendExplorePlaceholder();\n (0, _jquery.default)('.js-open-explore-module').on('click', function () {\n exploreItems = JSON.parse((0, _jquery.default)(this).attr('data-explore')).Items; // On the first pass, allow users to paginate to the next Explore Module tab if more than one exists\n\n if (exploreItems.length > 1) {\n (0, _jquery.default)('.js-explore-modal-next').removeClass('is-disabled');\n }\n\n (0, _jquery.default)('.js-explore-module-current-index').text('1');\n (0, _jquery.default)('.js-explore-module-total-count').text(exploreItems.length);\n\n if (!iframeCache[0]) {\n buildIframe(0); // iframeCache[0] = $iframeBlueprint.clone().attr('src', exploreItems[0].Url);\n // $('.js-explore-modal-iframe-wrapper').append(iframeCache[0]);\n }\n\n (0, _jquery.default)('.explore-module__modal-container').addClass('is-open').fadeIn(200);\n (0, _jquery.default)(document.body).addClass('scroll-disabled');\n (0, _jquery.default)(document).on('click.exploreModule', function (e) {\n if ((0, _jquery.default)(e.target).hasClass('explore-module__modal-container')) {\n (0, _jquery.default)(document).off('click.exploreModule');\n closeExploreModal();\n }\n });\n });\n (0, _jquery.default)('.js-close-explore-module').on('click', function () {\n closeExploreModal();\n });\n (0, _jquery.default)('.js-explore-modal-next').on('click', function () {\n nextExploreModalItem();\n });\n (0, _jquery.default)('.js-explore-modal-prev').on('click', function () {\n prevExploreModalItem();\n });\n (0, _jquery.default)(document).on(\"keydown\", function (e) {\n if ((0, _jquery.default)('.explore-module__modal-container.is-open').length) {\n if (e.which === 27) {\n closeExploreModal();\n }\n\n if (e.which === 37) {\n prevExploreModalItem();\n }\n\n if (e.which === 39) {\n nextExploreModalItem();\n }\n }\n });\n});\n\n},{\"jquery\":\"jquery\"}],7:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FlipBanner = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar FlipBanner = /*#__PURE__*/function () {\n function FlipBanner($el) {\n var _this = this;\n\n _classCallCheck(this, FlipBanner);\n\n this.$el = $el;\n this.$front = this.$el.find(\".js-front-flip\");\n this.$back = this.$el.find(\".js-back-flip\");\n\n if (!this.$front.html().trim()) {\n // BE can't determine if a front panel was inserted, so using this hack\n this.$el.remove();\n }\n\n if (this.$back.html().trim()) {\n // BE can't determine if a back panel was inserted, so using this hack\n this.$el.addClass(\"has-flip\");\n this.$front.addClass(\"is-loading\");\n this.$back.addClass(\"is-loading\");\n this.bindEvents();\n this.$front.removeClass(\"is-loading\");\n this.$back.removeClass(\"is-loading\");\n } else {\n this.$back.remove();\n this.$el.addClass(\"no-flip\");\n }\n\n if (this.$el.width() < 770) {\n setTimeout(function () {\n _this.resize();\n }, 450);\n }\n }\n\n _createClass(FlipBanner, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this2 = this;\n\n (0, _jquery.default)(window).on(\"resize\", function (event) {\n if (_this2.$el.width() > 769) {\n _this2.$back.css(\"height\", \"\");\n\n _this2.$front.css(\"height\", \"\");\n } else {\n setTimeout(function () {\n _this2.resize();\n }, 450);\n }\n });\n this.$front.on(\"click\", function () {\n return _this2.flipToBack();\n });\n this.$front.keypress(function (e) {\n if (e.which == 13) {\n //Enter key pressed\n _this2.$front.click();\n }\n });\n this.$back.on(\"click\", function () {\n return _this2.flipToFront();\n });\n this.$back.keypress(function (e) {\n if (e.which == 13) {\n //Enter key pressed\n _this2.$back.click();\n }\n }); // stop banner from flipping if link is clicked\n\n _jquery.default.makeArray(this.$el.find(\"a\")).map(function (link) {\n (0, _jquery.default)(link).on(\"click\", function (event) {\n event.stopPropagation();\n });\n });\n }\n }, {\n key: \"flipToBack\",\n value: function flipToBack() {\n var _this3 = this;\n\n this.resize();\n this.$back.addClass(\"is-active\");\n this.$front.removeClass(\"is-active\");\n\n if (window.dataLayer) {\n window.dataLayer.push({\n \"event\": \"Flip Card Flip\",\n \"eventCategory\": \"Interactive\",\n \"eventAction\": \"Flip Card | Flip\",\n \"eventLabel\": window.location.href\n });\n } // Shift focus to active element for accessibility\n\n\n setTimeout(function () {\n _this3.$back.focus();\n }, 450); // The duration of the css transition\n }\n }, {\n key: \"flipToFront\",\n value: function flipToFront() {\n var _this4 = this;\n\n this.resize();\n this.$back.removeClass(\"is-active\");\n this.$front.addClass(\"is-active\");\n\n if (window.dataLayer) {\n window.dataLayer.push({\n \"event\": \"Flip Card Flip\",\n \"eventCategory\": \"Interactive\",\n \"eventAction\": \"Flip Card | Flip\",\n \"eventLabel\": window.location.href\n });\n } // Shift focus to active element for accessibility\n\n\n setTimeout(function () {\n _this4.$front.focus();\n }, 450); // The duration of the css transition\n }\n }, {\n key: \"resize\",\n value: function resize() {\n //set the height of the flipper to largest container\n var largest = Math.max(this.$front.outerHeight(), this.$back.outerHeight());\n\n if (this.$el.width() < 769) {\n this.$front.children().outerHeight() > this.$back.children().outerHeight() ? this.$back.css(\"height\", largest) : this.$front.css(\"height\", largest);\n }\n }\n }]);\n\n return FlipBanner;\n}();\n\nexports.FlipBanner = FlipBanner;\n\n},{\"jquery\":\"jquery\"}],8:[function(require,module,exports){\n\"use strict\";\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nrequire(\"./custom-vendor/slick-carousel/slick/slick\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery.default)(document).ready(function () {\n if ((0, _jquery.default)('.is-page-editor').length == 0) {\n (0, _jquery.default)('.flip-tile__container').each(function (ind, elm) {\n if ((0, _jquery.default)(this).find('.flip-tile').length === 2) {\n (0, _jquery.default)(this).slick({\n slidesToShow: 2,\n slidesToScroll: 1,\n dots: false,\n infinite: false,\n arrows: false\n });\n }\n\n if ((0, _jquery.default)(this).find('.flip-tile').length > 2) {\n (0, _jquery.default)(this).slick({\n slidesToShow: 3,\n slidesToScroll: 1,\n dots: true,\n dotsClass: 'flip-tile__slider-dots',\n infinite: false,\n arrows: true,\n prevArrow: \"\",\n nextArrow: \"\",\n responsive: [{\n breakpoint: 910,\n settings: {\n slidesToShow: 2\n }\n }, {\n breakpoint: 480,\n settings: {\n slidesToShow: 1\n }\n }]\n });\n }\n });\n (0, _jquery.default)('.js-flip-tile').on('click', function (event) {\n if ((0, _jquery.default)('body.is-page-editor').length === 0 && (0, _jquery.default)(event.target).closest('.js-no-flip-tile-flip').length === 0) {\n (0, _jquery.default)(this).toggleClass('is-flipped');\n }\n });\n }\n});\n\n},{\"./custom-vendor/slick-carousel/slick/slick\":51,\"jquery\":\"jquery\"}],9:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FormDropdown = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nrequire(\"selectize\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FormDropdown = function FormDropdown($el) {\n _classCallCheck(this, FormDropdown);\n\n this.$el = $el;\n $el.prepend('');\n $el.selectize({\n placeholder: $el.data(\"placeholder\")\n }); //allowEmptyOption config overrides placeholder so we're using this workaround https://github.com/selectize/selectize.js/issues/739\n\n var $field = (0, _jquery.default)(\".selectized\").selectize();\n $field.on(\"change\", function () {\n if ((0, _jquery.default)(this).val() === \"#\") {\n (0, _jquery.default)(this).val(\"\");\n }\n });\n};\n\nexports.FormDropdown = FormDropdown;\n\n},{\"jquery\":\"jquery\",\"selectize\":\"selectize\"}],10:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GenericModal = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar GenericModal = function GenericModal($el, $contentForModal, criteria) {\n _classCallCheck(this, GenericModal);\n\n if (!$contentForModal) {\n $contentForModal = $el;\n } // `criteria` is an optional function that can be passed to prevent the modal from popping in some cases\n // If not set, default to true — aka, always modal on click\n\n\n if (!criteria) {\n criteria = function criteria() {\n return true;\n };\n }\n\n var $body = (0, _jquery.default)('body');\n\n if (!(0, _jquery.default)('.modal-overlay').length) {\n (0, _jquery.default)('
', {\n 'class': 'modal-overlay'\n }).appendTo($body).append('
');\n }\n\n var $modalWrapper = (0, _jquery.default)('.modal-overlay');\n $el.find((0, _jquery.default)('.js-modal-trigger')).on('click', function () {\n if (criteria((0, _jquery.default)(this))) {\n // Swipe detection\n var touchstartX = 0;\n var touchstartY = 0;\n var touchendX = 0;\n var touchendY = 0;\n var $modalInset = $modalWrapper.find('.modal-overlay__content');\n $modalInset.append($contentForModal.clone());\n $modalWrapper.addClass('is-active').on('click', function (event) {\n if (!$modalInset[0].contains(event.target) || (0, _jquery.default)('.js-close-modal').find(event.target).length) {\n $modalWrapper.removeClass('is-active').off('click');\n $modalInset.html('');\n }\n }).on('touchstart', function (event) {\n // targetTouches gives us touch data for touches within target elm only\n touchstartX = event.targetTouches[0].screenX;\n touchstartY = event.targetTouches[0].screenY;\n }).on('touchend', function (event) {\n // touchend only returns event coords in changedTouches. targetTouches and touches are empty\n touchendX = event.changedTouches[0].screenX;\n touchendY = event.changedTouches[0].screenY; // find the absolute value of diff between starting and ending touch points\n // if there has been > 10 pixels of movement in any direction, let's assume it's a swipe\n\n if (Math.abs(touchendX - touchstartX) > 50 || Math.abs(touchendY - touchstartY) > 50) {\n $modalWrapper.removeClass('is-active').html('').off('click touchstart touchend');\n }\n });\n }\n });\n};\n\nexports.GenericModal = GenericModal;\n\n},{\"jquery\":\"jquery\"}],11:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.HiaDownload = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar HiaDownload = /*#__PURE__*/function () {\n function HiaDownload($el) {\n _classCallCheck(this, HiaDownload);\n\n this.$el = $el;\n this.bindEvents();\n }\n\n _createClass(HiaDownload, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$el.on('click', function (event) {\n return _this.downloadCsv(event, event.target);\n });\n }\n }, {\n key: \"downloadCsv\",\n value: function downloadCsv(event, element) {\n event.preventDefault();\n var url = \"https://\" + window.location.hostname + \"/api/hipmapapi/getdownload?\";\n\n if (element.attributes.all.value == \"false\") {\n var vars = {};\n var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {\n vars[key] = value;\n });\n\n for (var part in vars) {\n url += part + \"=\" + vars[part] + \"&\";\n }\n\n url += \"dl=true&loadAllPages=false&\";\n } else {\n url += \"dl=true&loadAllPages=true&\";\n }\n\n url += \"pageId={\" + window.PewSearchConfigs[0].pageId + \"}\";\n console.log(url);\n window.open(url);\n }\n }]);\n\n return HiaDownload;\n}();\n\nexports.HiaDownload = HiaDownload;\n\n},{\"jquery\":\"jquery\"}],12:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.HowWeWork = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar HowWeWork = /*#__PURE__*/function () {\n function HowWeWork($el) {\n _classCallCheck(this, HowWeWork);\n\n this.$el = $el;\n this.bindEvents();\n }\n\n _createClass(HowWeWork, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$el.on('click', function (event) {\n return _this.toggleActive(event);\n }); //set first item to active\n\n var $firstItem = (0, _jquery.default)('.how-we-work__item').first();\n $firstItem.addClass('how-we-work__item--active');\n (0, _jquery.default)('.how-we-work__item-info-wrapper').append($firstItem.find('.how-we-work__item-info').clone());\n }\n }, {\n key: \"toggleActive\",\n value: function toggleActive(event) {\n event.stopPropagation();\n var $item = (0, _jquery.default)(event.currentTarget);\n var width = (0, _jquery.default)(window).width();\n var expanded = false;\n\n if (width > 910) {\n (0, _jquery.default)('.how-we-work__item--active').removeClass('how-we-work__item--active');\n $item.addClass('how-we-work__item--active');\n (0, _jquery.default)('.how-we-work__item-info-wrapper').html('');\n (0, _jquery.default)('.how-we-work__item-info-wrapper').append($item.find('.how-we-work__item-info').clone());\n } else {\n var parent = $item.parent();\n\n if ($item.hasClass('how-we-work__item--active')) {\n if (parent.hasClass('how-we-work__items-wrapper--expanded')) {\n parent.removeClass('how-we-work__items-wrapper--expanded');\n } else {\n parent.addClass('how-we-work__items-wrapper--expanded');\n }\n } else {\n (0, _jquery.default)('.how-we-work__item--active').removeClass('how-we-work__item--active');\n (0, _jquery.default)('.how-we-work__item-info-wrapper').html('');\n (0, _jquery.default)('.how-we-work__item-info-wrapper').append($item.find('.how-we-work__item-info').clone());\n parent.removeClass('how-we-work__items-wrapper--expanded');\n $item.addClass('how-we-work__item--active');\n }\n }\n }\n }]);\n\n return HowWeWork;\n}();\n\nexports.HowWeWork = HowWeWork;\n\n},{\"jquery\":\"jquery\"}],13:[function(require,module,exports){\n\"use strict\";\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nrequire(\"./custom-vendor/slick-carousel/slick/slick\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery.default)(document).ready(function () {\n if (!(0, _jquery.default)(\"body\").hasClass(\"is-page-editor\")) {\n var imageGalleryStore = [];\n var miniGalleryStore = [];\n var $imageGalleries = (0, _jquery.default)(\".image-gallery\");\n var $miniGalleryBlueprint = (0, _jquery.default)(\"
\", {\n class: \"image-gallery__mini-slider js-image-gallery-mini-slider\"\n });\n\n var initImageGalleries = function initImageGalleries() {\n $imageGalleries.each(function () {\n if (!(0, _jquery.default)(this).hasClass(\"no-full-screen\")) {\n // Init a new Slick slider for each primary gallery\n (0, _jquery.default)(this).clone().insertAfter((0, _jquery.default)(this)).addClass(\"is-full-screen gallery-is-hidden\"); // $imageGalleries.push(this);\n }\n });\n var $clonedGalleries = (0, _jquery.default)(\".js-image-gallery\");\n $clonedGalleries.each(function (index) {\n // Init a new Slick slider for each primary gallery\n imageGalleryStore[index] = (0, _jquery.default)(this).slick({\n slidesToShow: 1,\n slidesToScroll: 1,\n infinite: true,\n dots: false,\n fade: true,\n prevArrow: (0, _jquery.default)(this).closest(\".image-gallery\").find(\".image-gallery__prev-arrow\"),\n nextArrow: (0, _jquery.default)(this).closest(\".image-gallery\").find(\".image-gallery__next-arrow\")\n }); //Add id to each slide for accessibility\n\n imageGalleryStore[index].find(\".slick-slide\").each(function () {\n var $slide = (0, _jquery.default)(this);\n\n if ($slide.attr(\"aria-describedby\") != undefined) {\n // ignore extra/cloned slides \n (0, _jquery.default)(this).attr(\"id\", $slide.attr(\"aria-describedby\"));\n }\n }); // Build a mini gallery for each primary gallery\n\n miniGalleryStore[index] = buildMiniGallery((0, _jquery.default)(this), imageGalleryStore[index]);\n imageGalleryStore[index].on(\"beforeChange\", function (event, slick, currentSlide, nextSlide) {\n (0, _jquery.default)(this).closest(\".image-gallery\").find(\".js-image-gallery-current-index\").text(nextSlide + 1);\n miniGalleryStore[index].slick(\"slickGoTo\", nextSlide); // // Update Mini Gallery too\n\n (0, _jquery.default)(\".js-mini-slider-caption-wrap\").text((0, _jquery.default)(slick.$slides.get(nextSlide)).find(\"figcaption\").text());\n (0, _jquery.default)(\".js-mini-slider-title-wrap\").text((0, _jquery.default)(slick.$slides.get(nextSlide)).find(\".image-block__title\").text());\n (0, _jquery.default)(\".js-mini-slider-credit-wrap\").text((0, _jquery.default)(slick.$slides.get(nextSlide)).find(\".image-block__photo-credit\").text());\n\n if ((0, _jquery.default)(slick.$slides.get(nextSlide)).find(\".image-block__photo-credit\").length > 0) {\n (0, _jquery.default)(\".js-mini-slider-credit-wrap\").addClass(\"mini-slider__image-has-credit\");\n } else {\n (0, _jquery.default)(\".js-mini-slider-credit-wrap\").removeClass(\"mini-slider__image-has-credit\");\n }\n\n (0, _jquery.default)(\".js-mini-slider-copyright-wrap\").text((0, _jquery.default)(slick.$slides.get(nextSlide)).find(\".image-block__photo-copyright\").text());\n\n if ((0, _jquery.default)(slick.$slides.get(nextSlide)).find(\".image-block__photo-copyright\").length > 0) {\n (0, _jquery.default)(\".js-mini-slider-copyright-wrap\").addClass(\"mini-slider__image-has-copyright\");\n } else {\n (0, _jquery.default)(\".js-mini-slider-copyright-wrap\").removeClass(\"mini-slider__image-has-copyright\");\n } //This to reset slides of videos/audios\n\n\n var current = (0, _jquery.default)(slick.$slides[currentSlide]); // Note: This refreshes slide markup and disables some JS functionality.\n // It is enabled for audio player since iframe cannot be interfaced with JS.\n // current.html(current.html());\n\n if (current.hasClass(\"audio-block\")) {\n current.html(current.html());\n }\n });\n }); // Size/position everything once on init\n\n resizeAndRepositionImageGallery(); // Size/position everything every time the viewport resizes\n\n (0, _jquery.default)(window).on(\"resize\", function () {\n resizeAndRepositionImageGallery();\n });\n (0, _jquery.default)(\".js-launch-full-screen-gallery\").on(\"click\", function (e) {\n e.preventDefault();\n (0, _jquery.default)(this).closest(\".image-gallery\").next(\".is-full-screen\").removeClass(\"gallery-is-hidden\");\n setTimeout(resizeAndRepositionImageGallery, 200);\n });\n (0, _jquery.default)(\".js-image-gallery-leave-full-screen\").on(\"click\", function (e) {\n e.preventDefault();\n var $fullScreen = (0, _jquery.default)(this).closest(\".is-full-screen\");\n $fullScreen.addClass(\"gallery-is-hidden\");\n setTimeout(resizeAndRepositionImageGallery, 200);\n $fullScreen.prev(\".image-gallery\").find(\".image-block__media\")[0].scrollIntoView();\n });\n }; //\n // Every image gallery will need its own mini slider\n //\n\n\n var buildMiniGallery = function buildMiniGallery($gallery, $slider) {\n //let $images = $gallery.find(\".image-block__media\");\n var $images = $gallery.find(\".slick-slide\");\n var $newGallery = $miniGalleryBlueprint.clone();\n $images.each(function (index) {\n if ((0, _jquery.default)(this).hasClass(\"audio-block\")) {\n (0, _jquery.default)(this).find(\"picture img\").addClass(\"xdbpe\");\n (0, _jquery.default)(this).find(\"picture img\").attr(\"data-xdbpe\", \"AA4F5A48-5554-4769-8378-DADCF2E947DD\");\n var $imgSource = (0, _jquery.default)(this).find(\"picture img\").clone();\n var $wrappedImg = (0, _jquery.default)(\"
\", {\n class: \"image-gallery__mini-slider-img-wrapper audio-slide\"\n });\n $wrappedImg.append($imgSource); //Check if audio caption exist\n\n if ((0, _jquery.default)(this).find(\"figcaption\").length == 1) {\n var $imgCaption = (0, _jquery.default)(this).find(\"figcaption\").text();\n (0, _jquery.default)(this).find(\".audio-block__media-wrapper\").after((0, _jquery.default)(this).find(\"figcaption\"));\n $wrappedImg.append('
' + $imgCaption + \"
\");\n } //Check if audio title exist\n\n\n if ((0, _jquery.default)(this).find(\".audio-block__title\").length == 1) {\n var $imgTitle = (0, _jquery.default)(this).find(\".audio-block__title\").html();\n\n if ((0, _jquery.default)(this).find(\"figcaption\").length == 1) {\n (0, _jquery.default)(this).find(\".audio-block__caption\").prepend('

' + $imgTitle + \"

\");\n } else if ((0, _jquery.default)(this).find(\".audio-block__links-wrapper\").length == 1) {\n (0, _jquery.default)(this).find(\".audio-block__links-wrapper\").prepend('

' + $imgTitle + \"

\");\n } else {\n (0, _jquery.default)(this).find(\".audio-block__media-wrapper\").after('

' + $imgTitle + \"

\");\n }\n } //Check if audio subscribe links exist\n\n\n if ((0, _jquery.default)(this).find(\".audio-block__links-wrapper\").length == 1) {\n if ((0, _jquery.default)(this).find(\"figcaption\").length == 1) {\n (0, _jquery.default)(this).find(\"figcaption\").after((0, _jquery.default)(this).find(\".audio-block__links-wrapper\"));\n } else {\n (0, _jquery.default)(this).find(\".audio-block__media-wrapper\").after((0, _jquery.default)(this).find(\".audio-block__links-wrapper\"));\n }\n }\n\n $newGallery.append($wrappedImg);\n $wrappedImg.on(\"click\", function () {\n $slider.slick(\"slickGoTo\", index);\n });\n } else if ((0, _jquery.default)(this).hasClass(\"video-block\")) {\n (0, _jquery.default)(this).find(\".video-block__posterImage\").addClass(\"xdbpe\");\n (0, _jquery.default)(this).find(\".video-block__posterImage\").attr(\"data-xdbpe\", \"AA4F5A48-5554-4769-8378-DADCF2E947DD\");\n\n var _$imgSource = (0, _jquery.default)(this).find(\".video-block__posterImage\").clone();\n\n var _$wrappedImg = (0, _jquery.default)(\"
\", {\n class: \"image-gallery__mini-slider-img-wrapper video-slide\"\n });\n\n _$wrappedImg.append(_$imgSource);\n\n if ((0, _jquery.default)(this).find(\"figcaption\").length == 1) {\n var _$imgCaption = (0, _jquery.default)(this).find(\"figcaption\").text();\n\n _$wrappedImg.append('
' + _$imgCaption + \"
\");\n } //Check if Video title exist\n\n\n if ((0, _jquery.default)(this).find(\".video-block__title\").length == 1) {\n var _$imgTitle = (0, _jquery.default)(this).find(\".video-block__title\").html();\n\n if ((0, _jquery.default)(this).find(\"figcaption\").length == 1) {\n (0, _jquery.default)(this).find(\".video-block__meta-wrapper\").prepend('

' + _$imgTitle + \"

\");\n } else {\n (0, _jquery.default)(this).find(\".video-block__media-wrapper\").after('

' + _$imgTitle + \"

\");\n }\n }\n\n $newGallery.append(_$wrappedImg);\n\n _$wrappedImg.on(\"click\", function () {\n $slider.slick(\"slickGoTo\", index);\n });\n } else {\n (0, _jquery.default)(this).find(\"picture img\").addClass(\"xdbpe\");\n (0, _jquery.default)(this).find(\"picture img\").attr(\"data-xdbpe\", \"AA4F5A48-5554-4769-8378-DADCF2E947DD\");\n\n var _$imgSource2 = (0, _jquery.default)(this).find(\"picture img\").clone();\n /*let $imgTitle = $(this)\r\n .find(\".image-block__title\")\r\n .text();*/\n\n\n var _$imgCaption2 = (0, _jquery.default)(this).find(\"figcaption\").text();\n\n var _$wrappedImg2 = (0, _jquery.default)(\"
\", {\n class: \"image-gallery__mini-slider-img-wrapper\"\n });\n\n _$wrappedImg2.append(_$imgSource2);\n\n _$wrappedImg2.append('
' + _$imgCaption2 + \"
\");\n\n $newGallery.append(_$wrappedImg2);\n\n _$wrappedImg2.on(\"click\", function () {\n $slider.slick(\"slickGoTo\", index);\n });\n }\n });\n $newGallery.appendTo($gallery.closest(\".image-gallery\").find(\".image-gallery__mini-slider-inner-wrapper\")).slick({\n slidesToShow: 5,\n slidesToScroll: 1,\n infinite: true,\n dots: false,\n prevArrow: $gallery.closest(\".image-gallery\").find(\".image-gallery__mini-prev-arrow\"),\n nextArrow: $gallery.closest(\".image-gallery\").find(\".image-gallery__mini-next-arrow\")\n });\n (0, _jquery.default)(\".js-toggle-mini-slider-panel\").unbind(\"click\").on(\"click\", function () {\n (0, _jquery.default)(this).parent(\".image-gallery__mini-slider-outer-wrapper\").toggleClass(\"is-open\");\n }); //Add id to each slide for accessibility\n\n $newGallery.find(\".slick-slide\").each(function () {\n var $slide = (0, _jquery.default)(this);\n\n if ($slide.attr(\"aria-describedby\") != undefined) {\n // ignore extra/cloned slides \n (0, _jquery.default)(this).attr(\"id\", $slide.attr(\"aria-describedby\"));\n }\n });\n return $newGallery;\n }; //\n // When the viewport changes, the max height of Image Gallery images and\n // the prev/next arrow positions will need to be recalculated.\n //\n\n\n var resizeAndRepositionImageGallery = function resizeAndRepositionImageGallery() {\n (0, _jquery.default)(imageGalleryStore).each(function (index, $gallery) {\n // Climb the tree up to this gallery's origin\n $gallery = $gallery.closest(\".image-gallery\"); // Image Galleries should never be taller than a 16:9 aspect ratio, using the container width as the \"16\"\n\n var sliderImageHeight = Math.round($gallery.outerWidth() * (9 / 16));\n var sliderArrowHeight = 27;\n var isFullScreen = $gallery.hasClass(\"is-full-screen\");\n imageGalleryStore[index].slick(\"refresh\");\n miniGalleryStore[index].slick(\"refresh\"); // miniGalleryStore[index].slick('resize');\n\n if (isFullScreen) {\n // Images never taller than the full gallery itself\n $gallery.find(\".image-block__media img\").css({\n maxHeight: (0, _jquery.default)(window).outerHeight(),\n maxWidth: (0, _jquery.default)(window).outerWidth() //maxHeight: '',\n //maxWidth: ''\n\n }); // Position next/prev arrows vertically centered based on image height\n\n $gallery.find(\".image-gallery__next-arrow, .image-gallery__prev-arrow\").css(\"top\", ((0, _jquery.default)(window).outerHeight() - sliderArrowHeight) / 2); // Current slide index needs doesn't need fancy positioning\n\n $gallery.find(\".image-gallery__current-index\").css(\"top\", 0);\n (0, _jquery.default)(\".image-gallery__mini-slider-img-wrapper\").css({\n height: 80\n });\n } else {\n // Images never taller than the full gallery itself\n $gallery.find(\".image-block__media img\").css({\n maxHeight: sliderImageHeight,\n maxWidth: undefined\n }); // Position next/prev arrows vertically centered based on image height\n\n $gallery.find(\".image-gallery__next-arrow, .image-gallery__prev-arrow\").css(\"top\", (sliderImageHeight - sliderArrowHeight) / 2); // Current slide index needs to sit just below the images\n\n $gallery.find(\".image-gallery__current-index\").css(\"top\", sliderImageHeight + 25);\n (0, _jquery.default)(\".image-gallery__mini-slider-img-wrapper\").css({\n height: (0, _jquery.default)(\".image-gallery__mini-slider-img-wrapper\").width() * 0.5625\n });\n } //$gallery[0].scrollIntoView();\n //$(\"html\")[0].scrollTop = $gallery.offset().top;\n\n });\n (0, _jquery.default)(document).on(\"keydown\", function (e) {\n var imageGallery = (0, _jquery.default)(\".image-gallery.is-full-screen .js-image-gallery\");\n\n if (imageGallery) {\n if (e.which === 27) {\n (0, _jquery.default)(\".image-gallery\").removeClass(\"is-full-screen\");\n setTimeout(resizeAndRepositionImageGallery, 200);\n }\n\n if (e.which === 37) {\n imageGallery.slick(\"slickPrev\");\n }\n\n if (e.which === 39) {\n imageGallery.slick(\"slickNext\");\n }\n }\n });\n };\n\n initImageGalleries(); //Add aria-label to slick-track for accessibility\n\n (0, _jquery.default)(\".slick-track\").each(function (index) {\n (0, _jquery.default)(this).attr(\"aria-label\", \"image-gallery\" + index);\n });\n }\n});\n\n},{\"./custom-vendor/slick-carousel/slick/slick\":51,\"jquery\":\"jquery\"}],14:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ImageSlider = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nrequire(\"./custom-vendor/slick-carousel/slick/slick\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar ImageSlider = /*#__PURE__*/function () {\n function ImageSlider($el, conf) {\n _classCallCheck(this, ImageSlider);\n\n this.$el = $el;\n var slickConf = Object.assign(this.slickDefaults(), conf); // bind event prior to slick init\n\n this.bindEvents();\n this.$el.slick(slickConf);\n }\n\n _createClass(ImageSlider, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n // bind an event on the arrows to de-focus them when\n // you mouse out, so the focus state doesn't get stuck\n this.$el.on('mouseleave', '.slick-next, .slick-prev', function (event) {\n event.currentTarget.blur();\n });\n }\n }, {\n key: \"slickDefaults\",\n value: function slickDefaults() {\n return {\n dots: true,\n infinite: true,\n speed: 300,\n slidesToShow: 1,\n slidesToScroll: 1,\n prevArrow: \"\\n \",\n nextArrow: \"\\n \"\n };\n }\n }]);\n\n return ImageSlider;\n}();\n\nexports.ImageSlider = ImageSlider;\n\n},{\"./custom-vendor/slick-carousel/slick/slick\":51,\"jquery\":\"jquery\"}],15:[function(require,module,exports){\n\"use strict\";\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nrequire(\"selectize\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery.default)(document).ready(function () {\n var defaultInno = getParameterByName(\"inno\");\n uncheckInnovationFundInvestigator(defaultInno); //https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript searchparams didn't work soooo ¯\\_(ツ)_/¯\n\n function getParameterByName(name, url) {\n if (!url) url = window.location.href;\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\n results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return \"\";\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n }\n\n function uncheckInnovationFundInvestigator(defaultInno) {\n var hiddenInput = \"input[name='InnovationFundInvestigators']\";\n\n if (defaultInno == \"True\") {\n (0, _jquery.default)(hiddenInput).prop(\"checked\", true);\n }\n }\n});\n\n},{\"jquery\":\"jquery\",\"selectize\":\"selectize\"}],16:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _default = function _default() {\n // Insert related facts slick slider arrow SVGs\n var relatedFactsStickySliderPrev = document.querySelector(\".slick-slider .slick-prev\");\n var relatedFactsStickySliderNext = document.querySelector(\".slick-slider .slick-next\");\n var sliderArrowSVG = \"\";\n relatedFactsStickySliderPrev && (relatedFactsStickySliderPrev.innerHTML = sliderArrowSVG);\n relatedFactsStickySliderNext && (relatedFactsStickySliderNext.innerHTML = sliderArrowSVG);\n};\n\nexports.default = _default;\n\n},{}],17:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InterstitialModal = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar InterstitialModal = /*#__PURE__*/function () {\n function InterstitialModal($el) {\n _classCallCheck(this, InterstitialModal);\n\n this.$el = $el;\n this.$data = this.$el.data(\"model\");\n this.delayAmt = this.$data.delayAmount;\n this.maxWidth = this.$data.maxWidth || \"Large\";\n this.overLayOpacity = this.$data.backgroundOverlayOpacity;\n this.delayMethod = this.$data.delayMethod;\n this.displayMode = this.$data.displayMode;\n this.borderColor = this.$data.borderColor;\n this.backgroundOverlayColor = this.$data.backgroundOverlayColor;\n this.datasourceGuid = this.$data.datasourceGuid;\n this.promoItemPath = this.$data.promoItemPath;\n this.fPromoFigures = this.$el.find(\".flexible-promo__media\"); // check interstitial personalization cookie\n\n var interCookie = this.getCookie(\"PewTrusts_Interstitial\");\n this.cookieIDs = [];\n\n if (interCookie) {\n var interCookieRegex = /{(\\S+?)}/gi;\n this.cookieIDs = interCookie.match(interCookieRegex);\n }\n\n if (this.cookieIDs.includes(this.datasourceGuid)) {\n return;\n }\n\n this.init();\n this.bindEvents();\n }\n\n _createClass(InterstitialModal, [{\n key: \"init\",\n value: function init() {\n // styles using input parameters\n this.$el.parent().css(\"background\", \"\".concat(this.hexToRGBA(this.backgroundOverlayColor, this.overLayOpacity)));\n this.$el.parent().css(\"background\", \"rgba(0xF0, 0xF0, 0xF0, 0.7\");\n this.$el.css(\"border\", \"2px solid \".concat(this.borderColor));\n this.setMaxWidth();\n this.makeCloseButton(); //CTAs\n\n this.$flexPromoLink = this.$el.find(\".flexible-promo\");\n this.$actionAlertDetails = this.$el.find(\".action-alert-promo-details\");\n this.$actionAlertLink = this.$el.find(\".action-alert-promo__link\");\n this.$newsletterFormWrapper = this.$el.find(\".newsletter-signup__promo-form-wrapper\");\n this.$newsletterForm = this.$newsletterFormWrapper.length > 0 ? this.$el.$newsletterFormWrapper : this.$el.find(\".newsletter-signup__promo-form\");\n this.$newsletterBtn = this.$el.find(\".js-newsletter-signup--baseUrl\");\n this.$newsletterBtnGUID = this.$el.find(\".js-newsletter-signup--landingguid\");\n this.$richText = this.$el.find(\".rich-text\");\n this.$showModalTrigger = true;\n this.delayMethod === \"Scroll Depth\" ? this.handleScrollDepthDelay() : this.addTimeOnPageDelay();\n }\n }, {\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$closeModal = this.$el.find(\".js-close-modal\");\n this.$closeModal.on(\"click\", function (event) {\n return _this.closeModal(event);\n });\n var interPopup = this;\n (0, _jquery.default)(document).on(\"click\", function (e) {\n var isPopupAncestor = (0, _jquery.default)(e.target).closest(\".js-interstitial-popup\");\n\n if (!isPopupAncestor.length && (0, _jquery.default)(\".js-interstitial-popup\").is(\":visible\")) {\n interPopup.closeModal();\n }\n });\n (0, _jquery.default)(document).on(\"keydown\", function (e) {\n if (interPopup.$el.parent().css(\"display\") === \"block\") {\n if (e.which === 27) {\n interPopup.closeModal();\n }\n }\n });\n }\n }, {\n key: \"updateIDs\",\n value: function updateIDs(idToUpdate) {\n var cookieData = this.getCookie(\"PewTrusts_Interstitial\");\n\n if (!cookieData) {\n this.setCookie(\"PewTrusts_Interstitial\", \"\");\n cookieData = this.getCookie(\"PewTrusts_Interstitial\");\n }\n\n var pipeID = function pipeID() {\n if (cookieData === \"\") {\n return \"\".concat(idToUpdate);\n } else {\n return \"|\".concat(idToUpdate);\n }\n };\n\n this.setCookie(\"PewTrusts_Interstitial\", cookieData.concat(pipeID()));\n }\n }, {\n key: \"trackCTAs\",\n value: function trackCTAs() {\n var thisInterTracking = this; // if Flex Promo CTA exists, run tracking script\n\n if (this.$flexPromoLink.length > 0) {\n this.$flexPromoLink.each(function (i) {\n var flexPromoDataSource = (0, _jquery.default)(this).attr(\"data-component-ds-path\");\n var flexPromoDescription = (0, _jquery.default)(this).attr(\"data-component-description\");\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Interstitial Impression\",\n \"Interstitial Path\": \"\".concat(thisInterTracking.promoItemPath),\n \"Interstitial CTA\": \"\".concat((0, _jquery.default)(this).attr(\"href\")),\n \"Interstitial Component\": \"Flexible Promo\",\n \"Interstitial Content\": flexPromoDataSource || \"\",\n \"Interstitial Content Description\": flexPromoDescription || \"\"\n }); // set event handler to fire data layer script on click\n\n (0, _jquery.default)(this).on(\"click\", function (e) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Interstitial Interaction\",\n \"Interstitial Path\": \"\".concat(thisInterTracking.promoItemPath),\n \"Interstitial CTA\": \"\".concat((0, _jquery.default)(this).attr(\"href\")),\n \"Interstitial Component\": \"Flexible Promo\",\n \"Interstitial Content\": flexPromoDataSource || \"\",\n \"Interstitial Content Description\": flexPromoDescription || \"\"\n });\n });\n });\n } // if Action Alert CTA exists, run tracking script\n\n\n if (this.$actionAlertLink.length > 0) {\n this.$actionAlertLink.each(function (i) {\n var actionAlertSource = thisInterTracking.$actionAlertDetails.attr(\"data-component-ds-path\");\n var actionAlertDescription = thisInterTracking.$actionAlertDetails.attr(\"data-component-description\");\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Interstitial Impression\",\n \"Interstitial Path\": \"\".concat(thisInterTracking.promoItemPath),\n \"Interstitial CTA\": \"\".concat((0, _jquery.default)(this).attr(\"href\")),\n \"Interstitial Component\": \"Action Alert Promo\",\n \"Interstitial Content\": actionAlertSource || \"\",\n \"Interstitial Content Description\": actionAlertDescription || \"\"\n }); // set event handler to fire data layer script on click\n\n (0, _jquery.default)(this).on(\"click\", function (e) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Interstitial Interaction\",\n \"Interstitial Path\": \"\".concat(thisInterTracking.promoItemPath),\n \"Interstitial CTA\": \"\".concat((0, _jquery.default)(this).attr(\"href\")),\n \"Interstitial Component\": \"Action Alert Promo\",\n \"Interstitial Content\": actionAlertSource || \"\",\n \"Interstitial Content Description\": actionAlertDescription || \"\"\n });\n });\n });\n } // if Newsletter CTA exists, run tracking script\n\n\n if (this.$newsletterForm.length > 0) {\n this.$newsletterForm.each(function (i) {\n var baseUrl = (0, _jquery.default)(this).find(\".js-newsletter-signup--baseUrl\").attr(\"value\");\n var landingGUID = (0, _jquery.default)(this).find(\".js-newsletter-signup--landingguid\").attr(\"value\");\n var newsletterFormSource = (0, _jquery.default)(this).attr(\"data-component-ds-path\");\n var newsletterFormDescription = (0, _jquery.default)(this).attr(\"data-component-description\");\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Interstitial Impression\",\n \"Interstitial Path\": \"\".concat(thisInterTracking.promoItemPath),\n \"Interstitial CTA\": \"\".concat(baseUrl).concat(landingGUID),\n \"Interstitial Component\": \"Newsletter Signup\",\n \"Interstitial Content\": newsletterFormSource || \"\",\n \"Interstitial Content Description\": newsletterFormDescription || \"\"\n }); // set event handler to fire data layer script on click\n\n (0, _jquery.default)(this).on(\"submit\", function (e) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Interstitial Interaction\",\n \"Interstitial Path\": \"\".concat(thisInterTracking.promoItemPath),\n \"Interstitial CTA\": \"\".concat(baseUrl).concat(landingGUID),\n \"Interstitial Component\": \"Newsletter Signup\",\n \"Interstitial Content\": newsletterFormSource || \"\",\n \"Interstitial Content Description\": newsletterFormDescription || \"\"\n });\n });\n });\n } // if Rich Text exists, run tracking script\n\n\n if (this.$richText.length > 0) {\n this.$richText.each(function (i) {\n var richTextSource = (0, _jquery.default)(this).attr(\"data-component-ds-path\");\n var richTextDescription = (0, _jquery.default)(this).attr(\"data-component-description\");\n var richTextLinks = (0, _jquery.default)(this).find(\"a\");\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Interstitial Impression\",\n \"Interstitial Path\": \"\".concat(thisInterTracking.promoItemPath),\n \"Interstitial CTA\": \"\",\n \"Interstitial Component\": \"Rich Text\",\n \"Interstitial Content\": richTextSource || \"\",\n \"Interstitial Content Description\": richTextDescription || \"\"\n }); // set event handler on links to fire data layer script on click\n\n if (richTextLinks.length > 0) {\n richTextLinks.each(function (i) {\n (0, _jquery.default)(this).on(\"click\", function (e) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n \"event\": \"Interstitial Interaction\",\n \"Interstitial Path\": \"\".concat(thisInterTracking.promoItemPath),\n \"Interstitial CTA\": \"\".concat((0, _jquery.default)(this).attr(\"href\")),\n \"Interstitial Component\": \"Rich Text\",\n \"Interstitial Content\": richTextSource || \"\",\n \"Interstitial Content Description\": richTextDescription || \"\"\n });\n });\n });\n }\n });\n }\n }\n }, {\n key: \"setMaxWidth\",\n value: function setMaxWidth() {\n switch (this.maxWidth) {\n case \"Large\":\n return this.$el.addClass(\"js-interstitial-popup--large-max-width\");\n\n case \"Small\":\n this.fPromoFigures.each(function (index, figure) {\n var lgMedia = (0, _jquery.default)(\"source[media='(min-width: 56.9375em)']\");\n var mdMedia = (0, _jquery.default)(\"source[media='(min-width: 29.4375em)']\");\n var mdSrc = (0, _jquery.default)(figure).find(mdMedia);\n var lgSrc = (0, _jquery.default)(figure).find(lgMedia);\n lgSrc.attr(\"srcset\", mdSrc.attr(\"srcset\"));\n });\n return this.$el.addClass(\"js-interstitial-popup--small-max-width\");\n }\n }\n }, {\n key: \"hexToRGBA\",\n value: function hexToRGBA(hex, a) {\n var validHEXInput = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n if (!validHEXInput) {\n return false;\n }\n\n var output = {\n r: parseInt(validHEXInput[1], 16),\n g: parseInt(validHEXInput[2], 16),\n b: parseInt(validHEXInput[3], 16)\n };\n return \"rgba(\".concat(output.r, \", \").concat(output.g, \", \").concat(output.b, \", \").concat(a, \")\");\n }\n }, {\n key: \"showModal\",\n value: function showModal() {\n this.$el.parent().fadeIn();\n this.trackCTAs();\n (0, _jquery.default)(document.body).addClass(\"js-interstitial-disable-scroll\");\n this.updateIDs(this.datasourceGuid);\n this.$showModalTrigger = false;\n }\n }, {\n key: \"closeModal\",\n value: function closeModal() {\n this.$el.parent().fadeOut();\n (0, _jquery.default)(document.body).removeClass(\"js-interstitial-disable-scroll\");\n }\n }, {\n key: \"makeCloseButton\",\n value: function makeCloseButton() {\n var $closeButton = (0, _jquery.default)(\"\\n
\\n
\\n \\n
\\n
\\n \");\n this.$el.prepend($closeButton);\n }\n }, {\n key: \"handleScrollDepthDelay\",\n value: function handleScrollDepthDelay() {\n var interPopup = this;\n var prevWintop = 0;\n var wintop, docheight, winheight, scrolltrigger;\n (0, _jquery.default)(window).on(\"scroll\", function () {\n if (!interPopup.$showModalTrigger) {\n return;\n }\n\n wintop = (0, _jquery.default)(window).scrollTop();\n docheight = (0, _jquery.default)(document).height();\n winheight = (0, _jquery.default)(window).height();\n scrolltrigger = interPopup.delayAmt / 100;\n\n if (wintop > prevWintop && wintop / (docheight - winheight) > scrolltrigger) {\n interPopup.showModal();\n }\n\n prevWintop = wintop;\n });\n }\n }, {\n key: \"addTimeOnPageDelay\",\n value: function addTimeOnPageDelay() {\n var interPopup = this;\n setTimeout(function () {\n interPopup.showModal();\n }, this.delayAmt * 1000);\n }\n }, {\n key: \"setCookie\",\n value: function setCookie(cname, cvalue) {\n document.cookie = cname + \"=\" + cvalue + \";path=/;\";\n }\n }, {\n key: \"getCookie\",\n value: function getCookie(cname) {\n var name = cname + \"=\";\n var ca = document.cookie.split(\";\");\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) == \" \") {\n c = c.substring(1);\n }\n\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n\n return false;\n }\n }]);\n\n return InterstitialModal;\n}();\n\nexports.InterstitialModal = InterstitialModal;\n\n},{\"jquery\":\"jquery\"}],18:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LanguageSelector = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar LanguageSelector = /*#__PURE__*/function () {\n function LanguageSelector($el) {\n _classCallCheck(this, LanguageSelector);\n\n this.$el = $el;\n this.bindEvents();\n }\n\n _createClass(LanguageSelector, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$el.on('click', function (event) {\n return _this.toggleActive(event);\n });\n }\n }, {\n key: \"toggleActive\",\n value: function toggleActive(event) {\n event.stopPropagation(); //see if item is already selected\n\n var calloutItem = this.getCalloutItem(event.target);\n\n if ((0, _jquery.default)(calloutItem).hasClass('language-callout__item--current')) {\n return;\n } else {\n (0, _jquery.default)('.language-callout__item--current').removeClass('language-callout__item--current');\n (0, _jquery.default)(calloutItem).addClass('language-callout__item--current');\n (0, _jquery.default)('.language-selector__current-language').text((0, _jquery.default)('.language-callout__item--current').text());\n var text1 = (0, _jquery.default)(calloutItem).attr(\"name\");\n (0, _jquery.default)(\".language-selector__current-language\").attr(\"value\", text1);\n (0, _jquery.default)(calloutItem).parents('form').submit();\n }\n }\n }, {\n key: \"getCalloutItem\",\n value: function getCalloutItem(target) {\n if ((0, _jquery.default)(target).hasClass('language-callout__item')) {\n return target;\n } else {\n if ((0, _jquery.default)(target).parent().hasClass('language-callout__item')) {\n return (0, _jquery.default)(target).parent();\n } else {\n this.getCalloutItem((0, _jquery.default)(target).parent());\n }\n }\n }\n }]);\n\n return LanguageSelector;\n}();\n\nexports.LanguageSelector = LanguageSelector;\n\n},{\"jquery\":\"jquery\"}],19:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LegacyVideoModal = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar LegacyVideoModal = /*#__PURE__*/function () {\n function LegacyVideoModal($el) {\n var _this = this;\n\n _classCallCheck(this, LegacyVideoModal);\n\n var $body = (0, _jquery.default)('body');\n\n if (!(0, _jquery.default)('.video-block__modal-wrapper').length) {\n (0, _jquery.default)('
', {\n 'class': 'video-block__modal-wrapper js-selection-sharer'\n }).appendTo($body);\n }\n\n var $modalWrapper = (0, _jquery.default)('.video-block__modal-wrapper');\n var data = this.cleanJSON($el.attr('data-modal'));\n var id = this.getVideoId($el.attr('href'));\n var autoplay = $el.hasClass(\"autoplay\") ? 1 : 0; //image properties\n\n var imgSrc = data.image ? data.image : null;\n var imgAlt = data.imageAlt ? data.imageAlt : null;\n var imgWidth = data.imageWidth;\n var imgHeight = data.imageHeight; //html elements\n\n var dataType = data.type.trim().toLowerCase();\n var iframe = '
';\n var image = \"\\\"\").concat(imgAlt,\");\n var modalContent = dataType == \"video\" ? iframe : dataType.includes(\"photo\") ? image : '';\n var modalType = dataType == \"video\" ? \"video\" : dataType.includes(\"photo\") ? \"image\" : '';\n var fixedWidth = modalType == \"image\" ? dataType.includes(\"flex\") ? '' : \"640px\" : \"\";\n var $block = (0, _jquery.default)('
' + modalContent + '
');\n var $svgClose = (0, _jquery.default)('');\n var $durationDiv = (0, _jquery.default)('
');\n var $title = (0, _jquery.default)('' + data.title + '');\n var $caption = data.caption ? (0, _jquery.default)('
' + data.caption + '
') : '';\n this.modalType = modalType;\n this.modalContent = modalContent; //bind click event to close modal\n\n $el.on('click', function (event) {\n event.preventDefault(); //prevent the tag from redirecting\n\n $modalWrapper.append($block).addClass('is-active').on('click', function (event) {\n var $modalInset = $modalWrapper.find('.' + _this.modalType + '-frame'); // let $modalInset = $modalWrapper.find('.video-frame');\n\n if (!$modalInset[0].contains(event.target) || (0, _jquery.default)('.js-close-video-modal').find(event.target).length) {\n $modalWrapper.removeClass('is-active').html('').off('click');\n }\n });\n var $thisModal = $modalWrapper.find('.' + _this.modalType + '-block__media');\n $svgClose.prependTo($thisModal);\n $title.appendTo($thisModal);\n\n if (_this.modalType == \"video\") {\n $durationDiv.appendTo($thisModal);\n }\n\n $caption.appendTo($thisModal);\n\n if (_this.modalType == \"video\") {\n var youtubeUrl = \"https://www.googleapis.com/youtube/v3/videos?id=\" + id + \"&key=AIzaSyDlptEkRK4oZtR5R-esea21Ny63T1AstPI&part=snippet,contentDetails\"; // var thisObject = this;\n\n _jquery.default.ajax({\n async: false,\n type: 'GET',\n url: youtubeUrl,\n success: function success(ytData) {\n var youtube_time = ytData.items[0].contentDetails.duration;\n var array = youtube_time.match(/(\\d+)(?=[MHS])/ig) || [];\n var formatted = array.map(function (item) {\n if (item.length < 2) return '0' + item;\n return item;\n });\n (0, _jquery.default)('.legacy-duration').remove();\n var duration = (0, _jquery.default)(\"\" + formatted[0] + \"min \" + formatted[1] + \"sec\");\n duration.appendTo($durationDiv);\n }\n });\n }\n });\n }\n\n _createClass(LegacyVideoModal, [{\n key: \"getVideoId\",\n value: function getVideoId(url) {\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\n var match = url.match(regExp);\n\n if (match && match[2].length == 11) {\n return match[2];\n } else {\n return false;\n }\n }\n }, {\n key: \"getVideoDuration\",\n value: function getVideoDuration(id, callback) {\n var youtubeUrl = \"https://www.googleapis.com/youtube/v3/videos?id=\" + id + \"&key=AIzaSyDlptEkRK4oZtR5R-esea21Ny63T1AstPI&part=snippet,contentDetails\";\n\n _jquery.default.ajax({\n async: false,\n type: 'GET',\n url: youtubeUrl,\n success: callback\n });\n }\n }, {\n key: \"cleanJSON\",\n value: function cleanJSON(data) {\n var str = data.replace(/'/g, '\"');\n str = JSON.parse(str);\n return str;\n }\n }]);\n\n return LegacyVideoModal;\n}();\n\nexports.LegacyVideoModal = LegacyVideoModal;\n\n},{\"jquery\":\"jquery\"}],20:[function(require,module,exports){\n\"use strict\";\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nrequire(\"./custom-vendor/slick-carousel/slick/slick\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery.default)(document).ready(function () {\n if (!(0, _jquery.default)('body').hasClass('is-page-editor')) {\n var mobileWidth = 470;\n var $moreFromPewSlider = (0, _jquery.default)('.js-more-from-pew-slider');\n var sliderSettings = {\n slidesToShow: 1,\n slidesToScroll: 1,\n infinite: false,\n dots: true,\n arrows: false\n };\n\n if ((0, _jquery.default)(window).width() <= mobileWidth) {\n $moreFromPewSlider.slick(sliderSettings);\n } // reslick only if it's not slick()\n\n\n (0, _jquery.default)(window).on('resize', function () {\n if ((0, _jquery.default)(window).width() > mobileWidth) {\n if ($moreFromPewSlider.hasClass('slick-initialized')) {\n $moreFromPewSlider.slick('unslick');\n }\n\n return;\n }\n\n if (!$moreFromPewSlider.hasClass('slick-initialized')) {\n return $moreFromPewSlider.slick(sliderSettings);\n }\n });\n }\n});\n\n},{\"./custom-vendor/slick-carousel/slick/slick\":51,\"jquery\":\"jquery\"}],21:[function(require,module,exports){\n\"use strict\";\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery.default)(document).ready(function () {\n // (function(i,s,o,g,r,a,m){\n // i[\"GoogleAnalyticsObject\"]=r;i[r]=i[r]||function(){\n // (i[r].q=i[r].q||[]).push(arguments);\n // },i[r].l=1*new Date();a=s.createElement(o),\n // m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m);\n // })(window,document,\"script\",\"https://www.google-analytics.com/analytics.js\",\"ga\");\n var gaParams = function gaParams() {\n // querySelectorAll Polyfill\n if (!document.querySelectorAll) {\n var d = document,\n s = d.createStyleSheet();\n\n d.querySelectorAll = function (r, c, i, j, a) {\n a = d.all, c = [], r = r.replace(/\\[for\\b/gi, \"[htmlFor\").split(\",\");\n\n for (i = r.length; i--;) {\n s.addRule(r[i], \"k:v\");\n\n for (j = a.length; j--;) {\n a[j].currentStyle.k && c.push(a[j]);\n }\n\n s.removeRule(0);\n }\n\n return c;\n };\n } // Trim polyfill\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Compatibility\n\n\n if (!String.prototype.trim) {\n String.prototype.trim = function () {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n };\n } // FF doesn't support innerHTML, so use textContent instead\n // Don't default to textContent due to possible performance issues in IE10+\n // http://bugs.jquery.com/ticket/11153#comment:6\n\n\n function getText(el) {\n if (\"innerText\" in document.body) {\n return el.innerText.trim();\n } else {\n return el.textContent.trim();\n }\n } // Get meta tag value\n\n\n function metaTag(name) {\n var $meta = document.querySelectorAll('meta[name=\"' + name + '\"]');\n\n if ($meta.length) {\n return $meta[0].getAttribute(\"content\");\n }\n } // Engagement Options\n\n\n var engagementOptions = [];\n var hasDownload = document.querySelectorAll(\".pct-download\").length ? engagementOptions.push(\"Download\") : false;\n var hasExpandMore = document.querySelectorAll(\".pct-expand-more\").length ? engagementOptions.push(\"More Toggle\") : false;\n var hasYouTube = document.querySelectorAll(\"iframe[src*=youtube]\").length ? engagementOptions.push(\"YouTube\") : false;\n engagementOptions = engagementOptions.length ? engagementOptions.join(\", \") : \"(not set)\";\n var contentWrapper = document.querySelectorAll(\".js-main-primary\").length ? document.querySelectorAll(\".js-main-primary\") : document.querySelectorAll(\".main-primary\").length ? document.querySelectorAll(\".main-primary\") : document.querySelectorAll(\".main-content\"); // Word Count\n\n var wordCount = contentWrapper.length ? getText(contentWrapper[0]).split(\" \").length : \"(not set)\"; //Word Count Group\n // var wordCountGroup;\n // var wordGroup1Max = {wordGroup1Count};\n // var wordGroup2Max = {wordGroup2Count};\n // var wordGroup3Max = {wordGroup3Count};\n // var wordGroup4Max = {wordGroup4Count};\n // var wordGroup5Max = {wordGroup5Count};\n // var wordGroup6Max = {wordGroup6Count};\n // if(wordCount <= wordGroup1Max){\n // wordCountGroup = \"0 - \" + wordGroup1Max;\n // }\n // else if(wordCount > wordGroup1Max && wordCount <= wordGroup2Max){\n // wordGroup1Max = wordGroup1Max + 1;\n // wordCountGroup = wordGroup1Max + \" - \" + wordGroup2Max;\n // }\n // else if(wordCount > wordGroup2Max && wordCount <= wordGroup3Max){\n // wordGroup2Max = wordGroup2Max + 1;\n // wordCountGroup = wordGroup2Max + \" - \" + wordGroup3Max;\n // }\n // else if(wordCount > wordGroup3Max && wordCount <= wordGroup4Max){\n // wordGroup3Max = wordGroup3Max + 1;\n // wordCountGroup = wordGroup3Max + \" - \" + wordGroup4Max;\n // }\n // else if(wordCount > wordGroup4Max && wordCount <= wordGroup5Max){\n // wordGroup4Max = wordGroup4Max + 1;\n // wordCountGroup = wordGroup4Max + \" - \" + wordGroup5Max;\n // }\n // else if(wordCount > wordGroup5Max && wordCount <= wordGroup6Max){\n // wordGroup5Max = wordGroup5Max + 1;\n // wordCountGroup = wordGroup5Max + \" - \" + wordGroup6Max;\n // }\n // else if(wordCount > wordGroup6Max){\n // wordGroup6Max = wordGroup6Max + 1;\n // wordCountGroup = wordGroup6Max + \" + \";\n // }\n // else{\n // wordCountGroup = \"Not Defined\";\n // }\n // Image Count\n\n var imgCount = contentWrapper.length ? contentWrapper[0].querySelectorAll(\"img\").length : \"(not set)\"; //Image Count Group\n\n var imgCountGroup;\n\n if (imgCount == 0) {\n imgCountGroup = \"0\";\n } else if (imgCount == 1) {\n imgCountGroup = \"1\";\n } else if (imgCount == 2) {\n imgCountGroup = \"2\";\n } else if (imgCount == 3) {\n imgCountGroup = \"3\";\n } else if (imgCount == 4) {\n imgCountGroup = \"4\";\n } else if (imgCount == 5) {\n imgCountGroup = \"5\";\n } else if (imgCount == 6) {\n imgCountGroup = \"6\";\n } else if (imgCount == 7) {\n imgCountGroup = \"7\";\n } else if (imgCount == 8) {\n imgCountGroup = \"8\";\n } else if (imgCount == 9) {\n imgCountGroup = \"9\";\n } else if (imgCount > 9) {\n imgCountGroup = \"10+\";\n } else {\n imgCountGroup = \"Not Defined\";\n }\n\n window.dataLayer.push({\n \"event\": \"pageVarPush\",\n \"engagementOptions\": engagementOptions,\n \"wordCount\": wordCount,\n // \"wordCountGroup\":wordCountGroup,\n \"imgCount\": imgCount,\n \"imgCountGroup\": imgCountGroup\n });\n }; //Send data to GTM\n\n\n gaParams();\n});\n\n},{\"jquery\":\"jquery\"}],22:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ReadMode = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar ReadMode = /*#__PURE__*/function () {\n function ReadMode($el) {\n _classCallCheck(this, ReadMode);\n\n this.$el = $el;\n this.bindEvents();\n }\n\n _createClass(ReadMode, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$el.on('click', function (event) {\n return _this.toggleActive(event);\n });\n }\n }, {\n key: \"toggleActive\",\n value: function toggleActive(event) {\n event.stopPropagation();\n var checkbox = (0, _jquery.default)(event.target);\n\n if (checkbox.is(\":checked\")) {\n (0, _jquery.default)('.container--70-30').addClass(\"container--70-30--readmode\");\n } else {\n (0, _jquery.default)('.container--70-30').removeClass(\"container--70-30--readmode\");\n }\n }\n }]);\n\n return ReadMode;\n}();\n\nexports.ReadMode = ReadMode;\n\n},{\"jquery\":\"jquery\"}],23:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ReadingTime = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nrequire(\"./custom-vendor/readingTime\");\n\nvar _xDB = require(\"./xDB\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nwindow.$ = _jquery.default;\n\nvar ReadingTime = /*#__PURE__*/function () {\n function ReadingTime($el) {\n _classCallCheck(this, ReadingTime);\n\n this.$el = $el;\n this.$readTime = (0, _jquery.default)(\".read-time\");\n this.$el.readingTime(this.readingTimeDefaults());\n }\n\n _createClass(ReadingTime, [{\n key: \"readingTimeDefaults\",\n value: function readingTimeDefaults() {\n var _this = this;\n\n return {\n readingTimeTarget: this.$readTime,\n error: function error(message) {\n _this.$readTime.parent().remove();\n },\n success: function success(data) {\n var time = _this.$readTime.text().replace(/\\D/g, '') * 60000 * 0.75;\n\n if (time > 0 && (typeof dataLayer === \"undefined\" ? \"undefined\" : _typeof(dataLayer)) !== undefined) {\n setTimeout(function () {\n // register read time goal\n var eventId = (0, _jquery.default)(\".xdbpe-read-time\").attr(\"data-xdbpe\");\n\n if (_xDB.scrollPercent >= 75) {\n (0, _xDB.registerEvent)(eventId);\n }\n\n dataLayer.push({\n 'event': 'pageRead'\n });\n }, time);\n }\n }\n };\n }\n }]);\n\n return ReadingTime;\n}();\n\nexports.ReadingTime = ReadingTime;\n\n},{\"./custom-vendor/readingTime\":49,\"./xDB\":116,\"jquery\":\"jquery\"}],24:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RssListing = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar RssListing = /*#__PURE__*/function () {\n function RssListing($el) {\n _classCallCheck(this, RssListing);\n\n this.$el = $el;\n this.bindEvents();\n }\n\n _createClass(RssListing, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$el.find('.js-rss-topics-tab').on('click', function (event) {\n return _this.showList(event, true);\n });\n this.$el.find('.js-rss-projects-tab').on('click', function (event) {\n return _this.showList(event, false);\n });\n this.$el.find('.js-rss-item').on('click', function (event) {\n return _this.showDetails(event);\n });\n }\n }, {\n key: \"showList\",\n value: function showList(event, isTopics) {\n this.$el.find('.rss-active').removeClass('rss-active');\n\n if (isTopics) {\n this.$el.find('.rss-listing__topics-list').addClass('rss-active');\n this.$el.find('.rss-listing__topics-tab').addClass('rss-active');\n } else {\n this.$el.find('.rss-listing__projects-list').addClass('rss-active');\n this.$el.find('.rss-listing__projects-tab').addClass('rss-active');\n }\n }\n }, {\n key: \"showDetails\",\n value: function showDetails(event) {\n var $item = (0, _jquery.default)(event.target);\n var identifier = $item.parent().attr('js-rss-index');\n var $details = (0, _jquery.default)('div[js-rss-index=' + identifier + ']');\n $details.each(function (index) {\n if ((0, _jquery.default)(this).hasClass('js-rss-expanded')) {\n (0, _jquery.default)(this).removeClass('js-rss-expanded');\n } else {\n (0, _jquery.default)(this).addClass('js-rss-expanded');\n }\n });\n }\n }]);\n\n return RssListing;\n}();\n\nexports.RssListing = RssListing;\n\n},{\"jquery\":\"jquery\"}],25:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ScholarGrid = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nrequire(\"selectize\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar ScholarGrid = /*#__PURE__*/function () {\n function ScholarGrid($el) {\n _classCallCheck(this, ScholarGrid);\n\n this.$el = $el;\n this.$dropdown = $el.find(\".js-year-select\");\n this.$dropdownArrow = $el.find(\".js-select-icon\");\n this.$tileMount = $el.find(\".js-grid-mount\");\n this.searchId = this.$el.data(\"id\");\n this.searchUrl = this.$el.data(\"url\");\n this.initDropdown();\n this.fetchData();\n }\n\n _createClass(ScholarGrid, [{\n key: \"initDropdown\",\n value: function initDropdown() {\n var _this = this;\n\n this.$dropdown.selectize({\n onDropdownOpen: function onDropdownOpen() {\n return _this.$dropdownArrow.addClass(\"is-open\");\n },\n onDropdownClose: function onDropdownClose() {\n return _this.$dropdownArrow.removeClass(\"is-open\");\n }\n });\n this.$dropdown.on(\"change\", function () {\n _this.fetchData();\n });\n this.$dropdownArrow.on(\"mousedown\", function () {\n var selectizeInstance = _this.$dropdown[0].selectize;\n _this.$dropdownArrow.hasClass(\"is-open\") ? selectizeInstance.close() : selectizeInstance.open();\n });\n }\n }, {\n key: \"currentYear\",\n value: function currentYear() {\n return this.$dropdown.val();\n }\n }, {\n key: \"fetchData\",\n value: function fetchData() {\n var _this2 = this;\n\n var url = \"\".concat(this.searchUrl, \"?root=\").concat(this.searchId, \"&year=\").concat(this.currentYear());\n\n _jquery.default.ajax({\n url: url,\n method: \"GET\"\n }).then(function (response) {\n return _this2.renderTiles(response);\n });\n }\n }, {\n key: \"renderTiles\",\n value: function renderTiles(tileData) {\n var _this3 = this;\n\n var tiles = tileData.map(function (tileModel) {\n return _this3.makeTile(tileModel);\n }); // compact the array, removing falsey values, before rendering\n\n var tilesToRender = tiles.filter(function (t) {\n return t;\n });\n this.$tileMount.empty().append(tilesToRender);\n this.$tileMount.find(\".scholar-grid__tile\").animate({\n opacity: 1\n }, 200);\n }\n }, {\n key: \"makeTile\",\n value: function makeTile(model) {\n var fellowship_Institution = model.fellowship_Institution,\n fellowship_Job_Title = model.fellowship_Job_Title,\n full_Name = model.full_Name,\n imageAlt = model.imageAlt,\n imageUrl = model.imageUrl,\n itemUrl = model.itemUrl; // if image is missing, do not make a tile\n\n if (!imageUrl || imageUrl.trim().length === 0) {\n return null;\n }\n\n var $tile = (0, _jquery.default)(\"\\n
  • \\n \\n
    \\n \\\"\").concat(imageAlt,\\n
    \\n \").concat(full_Name, \"\\n \").concat(fellowship_Job_Title, \"\\n \").concat(fellowship_Institution, \"\\n
    \\n
    \\n
    \\n
  • \\n \")); // hide certain fields if no data present\n\n if (!full_Name || full_Name.trim().length === 0) {\n $tile.find(\".scholar-grid__name\").remove();\n }\n\n if (!fellowship_Job_Title || fellowship_Job_Title.trim().length === 0) {\n $tile.find(\".scholar-grid__position\").remove();\n }\n\n if (!fellowship_Institution || fellowship_Institution.trim().length === 0) {\n $tile.find(\".scholar-grid__institution\").remove();\n }\n\n return $tile;\n }\n }]);\n\n return ScholarGrid;\n}();\n\nexports.ScholarGrid = ScholarGrid;\n\n},{\"jquery\":\"jquery\",\"selectize\":\"selectize\"}],26:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _default = function _default() {\n document.querySelectorAll(\".js-scroll-animation\").forEach(function (targetEl) {\n // check when target element enters viewport from bottom\n var enterPageObserver = new IntersectionObserver(function (entries, observer) {\n entries.forEach(function (entry, i) {\n if (entry.isIntersecting) {\n entry.target.classList.contains(\"js-fade-in-scroll\") && entry.target.classList.add(\"fade-into-view\");\n entry.target.classList.contains(\"js-slide-in-scroll\") && entry.target.classList.add(\"slide-into-view\");\n }\n });\n }, {\n root: null,\n rootMargin: \"0px 0px -200px 0px\"\n });\n enterPageObserver.observe(targetEl);\n });\n};\n\nexports.default = _default;\n\n},{}],27:[function(require,module,exports){\n\"use strict\";\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nrequire(\"./custom-vendor/selection-shrarer\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// import require from \"./custom-vendor/require\";\n(0, _jquery.default)('.js-selection-sharer').selectionSharer();\n\n},{\"./custom-vendor/selection-shrarer\":50,\"jquery\":\"jquery\"}],28:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ShareBar = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nvar Stickyfill = _interopRequireWildcard(require(\"./stickyfill.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar ShareBar = /*#__PURE__*/function () {\n function ShareBar($el) {\n _classCallCheck(this, ShareBar);\n\n this.$el = $el;\n this.container = this.$el.closest(\".container__inner\");\n this.insertClone();\n }\n\n _createClass(ShareBar, [{\n key: \"refreshPosition_absolute\",\n value: function refreshPosition_absolute(event) {\n this.headerHeight = (0, _jquery.default)(\".global-header__inner-wrapper\").first().outerHeight(true);\n var windowPosition = (0, _jquery.default)(window).scrollTop();\n var maxTop = this.containerBottom - this.$el.outerHeight();\n\n if (windowPosition + this.headerHeight > this.containerTop) {\n if (windowPosition - this.containerTop + this.headerHeight < maxTop) {\n this.$el.css({\n top: windowPosition - this.containerTop + this.headerHeight + \"px\"\n });\n } else {\n this.$el.css({\n top: maxTop + \"px\"\n });\n }\n }\n }\n }, {\n key: \"refreshPosition_sticky\",\n value: function refreshPosition_sticky(event) {\n var windowPosition = (0, _jquery.default)(window).scrollTop() + 85;\n\n if (windowPosition > this.barStart) {\n if (!this.$el.hasClass(\"is-sticky\")) {\n this.$el.addClass(\"is-sticky\");\n Stickyfill.addOne(this.$el);\n }\n } else {\n this.$el.removeClass(\"is-sticky\");\n Stickyfill.removeOne(this.$el);\n }\n\n Stickyfill.refreshAll();\n }\n }, {\n key: \"insertClone\",\n value: function insertClone() {\n if (this.$el.hasClass(\"plf-share-bar--btm-only\")) {\n return;\n }\n\n var clone = this.$el.clone();\n clone.addClass(\"plf-share-bar--clone\");\n this.container.prepend(clone);\n }\n }]);\n\n return ShareBar;\n}();\n\nexports.ShareBar = ShareBar;\n\n},{\"./stickyfill.js\":115,\"jquery\":\"jquery\"}],29:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ShareButton = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar ShareButton = /*#__PURE__*/function () {\n function ShareButton($el) {\n _classCallCheck(this, ShareButton);\n\n this.$el = $el;\n this.$openBtn = this.$el.find(\".js-share-open\");\n this.$closeBtn = this.$el.find(\".js-share-close\");\n this.$menu = this.$el.find(\".js-share-menu\");\n this.$parent = this.$el.parent(); // The share component should always be a direct child of the shareable component\n\n this.$sibling = this.$el.siblings(); //this.$minHeight = window.innerWidth > 768 ? \"200px\" : \"300px\";\n\n this.bindEvents();\n }\n\n _createClass(ShareButton, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$parent.css(\"transition\", \"min-height 0.3s linear\");\n this.$openBtn.on(\"click\", function (event) {\n return _this.openMenu(event);\n });\n this.$closeBtn.on(\"click\", function (event) {\n return _this.closeMenu(event);\n }); //$(window).on(\"resize\", () => this.$minHeight = window.innerWidth > 768 ? \"200px\" : \"300px\");\n }\n }, {\n key: \"openMenu\",\n value: function openMenu() {\n this.$menu.addClass(\"is-open\");\n this.$sibling.css(\"visibility\", \"hidden\");\n this.$openBtn.css(\"visibility\", \"hidden\");\n this.$closeBtn.focus();\n }\n }, {\n key: \"closeMenu\",\n value: function closeMenu() {\n this.$menu.removeClass(\"is-open\");\n this.$sibling.css(\"visibility\", \"visible\");\n this.$openBtn.css(\"visibility\", \"visible\");\n this.$openBtn.focus();\n }\n }]);\n\n return ShareButton;\n}();\n\nexports.ShareButton = ShareButton;\n\n},{\"jquery\":\"jquery\"}],30:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Slider = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nrequire(\"../Pew/custom-vendor/slick-carousel/slick/slick\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Slider = /*#__PURE__*/function () {\n function Slider($el, useDefaults, conf) {\n _classCallCheck(this, Slider);\n\n this.$el = $el;\n var slickConf;\n\n if (useDefaults) {\n slickConf = Object.assign(this.slickDefaults(), conf.slick);\n } else {\n slickConf = conf.slick;\n } // bind event prior to slick init\n\n\n this.bindEvents(this.$el);\n this.$el.slick(slickConf);\n this.$el.hasClass(\"fact-slider\") ? this.$el.css(\"visibility\", \"visible\") : null;\n }\n\n _createClass(Slider, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n // bind an event on the arrows to de-focus them when\n // you mouse out, so the focus state doesn't get stuck\n this.$el.on(\"mouseleave\", \".slick-next, .slick-prev\", function (event) {\n event.currentTarget.blur();\n });\n (0, _jquery.default)(window).on(\"resize\", function (event) {\n _this.$el.slick(\"resize\");\n });\n }\n }, {\n key: \"slickDefaults\",\n value: function slickDefaults() {\n return {\n slidesToShow: 1,\n slidesToScroll: 1,\n mobileFirst: true,\n arrows: true,\n dots: true,\n infinite: false,\n responsive: [{\n breakpoint: 470,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1,\n dots: true\n }\n }, {\n breakpoint: 911,\n settings: \"unslick\"\n }]\n };\n }\n }]);\n\n return Slider;\n}();\n\nexports.Slider = Slider;\n\n},{\"../Pew/custom-vendor/slick-carousel/slick/slick\":51,\"jquery\":\"jquery\"}],31:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Sticky30 = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Sticky30 = /*#__PURE__*/function () {\n function Sticky30($el) {\n _classCallCheck(this, Sticky30);\n\n this.$el = $el;\n this.init();\n }\n\n _createClass(Sticky30, [{\n key: \"init\",\n value: function init() {\n var sticky30Inner = this.$el.find(\".container__inner\");\n var globalHeaderHeight = (0, _jquery.default)(\".global-header\").outerHeight();\n var pageToolbar = (0, _jquery.default)(\".page-toolbar\");\n\n if (pageToolbar.length) {\n sticky30Inner.css(\"top\", \"\".concat(globalHeaderHeight + pageToolbar.outerHeight() + 10, \"px\"));\n }\n }\n }]);\n\n return Sticky30;\n}();\n\nexports.Sticky30 = Sticky30;\n\n},{\"jquery\":\"jquery\"}],32:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Toolbar = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Toolbar = /*#__PURE__*/function () {\n function Toolbar($el) {\n _classCallCheck(this, Toolbar);\n\n this.$el = $el;\n this.bindEvents();\n }\n\n _createClass(Toolbar, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$el.on('click mouseover', function (event) {\n return _this.toggleActive(event);\n }); // Add a document click handler to detect clicks\n // with the intent to dismiss navigation\n\n (0, _jquery.default)(document).on('click', function (event) {\n return _this.onOtherClick(event);\n });\n (0, _jquery.default)('.toolbar-callout').on('mouseleave', function (event) {\n return _this.onOtherClick(event);\n });\n }\n }, {\n key: \"removeActive\",\n value: function removeActive() {\n (0, _jquery.default)('.page-toolbar__selector').removeClass('page-toolbar__selector--active');\n (0, _jquery.default)('.toolbar-callout').removeClass('toolbar-callout--active');\n }\n }, {\n key: \"toggleActive\",\n value: function toggleActive(event) {\n event.stopPropagation();\n var toolbarSelector = this.getSelector(event.target);\n var callout = (0, _jquery.default)(toolbarSelector).find('.toolbar-callout');\n\n if ((0, _jquery.default)(toolbarSelector).hasClass('page-toolbar__selector--active') && event.type !== 'mouseover') {\n this.removeActive();\n } else {\n (0, _jquery.default)('.toolbar-callout--active').removeClass('toolbar-callout--active');\n (0, _jquery.default)('.page-toolbar__selector--active').removeClass('page-toolbar__selector--active');\n (0, _jquery.default)(toolbarSelector).addClass('page-toolbar__selector--active');\n callout.addClass('toolbar-callout--active');\n }\n }\n }, {\n key: \"onOtherClick\",\n value: function onOtherClick(event) {\n this.removeActive();\n }\n }, {\n key: \"getSelector\",\n value: function getSelector(target) {\n if ((0, _jquery.default)(target).hasClass('page-toolbar__selector')) {\n return target;\n } else {\n var parent = (0, _jquery.default)(target).parents('.page-toolbar__selector');\n\n if (parent) {\n return parent;\n } else {\n this.getSelector((0, _jquery.default)(target).parent());\n }\n }\n }\n }]);\n\n return Toolbar;\n}();\n\nexports.Toolbar = Toolbar;\n\n},{\"jquery\":\"jquery\"}],33:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initTypeahead = initTypeahead;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash\"));\n\nvar _breakpoint = require(\"./breakpoint\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n/**\r\n * PCTDR-179 - Interim Typeahead Search\r\n * @param {node} el - either desktop or mobile search\r\n */\nfunction initTypeahead(el) {\n var _el$closest, _el$closest2, _el$closest2$dataset;\n\n var searchInput = el;\n var quickSearchBox = (_el$closest = el.closest('.quick-search-box')) !== null && _el$closest !== void 0 ? _el$closest : el.closest('.search-box__input'); // Parent el\n\n var closeButtonEl = quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.querySelector('.js-quick-search-clear-and-close');\n var searchForm = el.closest('form');\n var searchForLabel = (el === null || el === void 0 ? void 0 : (_el$closest2 = el.closest(\"[data-search-for-label]\")) === null || _el$closest2 === void 0 ? void 0 : (_el$closest2$dataset = _el$closest2.dataset) === null || _el$closest2$dataset === void 0 ? void 0 : _el$closest2$dataset.searchForLabel) || \"Search for:\"; // Track combo-box active item\n\n var activeIndex = -1;\n\n var init = function init() {\n searchInput.setAttribute('role', 'combobox');\n searchInput.setAttribute('aria-haspopup', 'listbox'); // The list of options is announced to screen reader users\n\n var srText = document.createElement(\"span\");\n srText.classList.add('search-box__sr-only');\n srText.setAttribute('aria-live', 'polite');\n srText.setAttribute('aria-atomic', true);\n quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.append(srText);\n bindEvents();\n };\n\n var bindEvents = function bindEvents() {\n searchInput.addEventListener('focus', handleOpen);\n searchInput.addEventListener('click', handleOpen);\n searchInput.addEventListener('input', function (e) {\n closeSuggestions();\n handleType(e);\n });\n window.addEventListener('click', handleClickAway);\n quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.addEventListener('keydown', handleKeyboard);\n closeButtonEl === null || closeButtonEl === void 0 ? void 0 : closeButtonEl.addEventListener('click', clear);\n searchForm === null || searchForm === void 0 ? void 0 : searchForm.addEventListener('submit', closeSuggestions);\n };\n\n var handleClickItem = function handleClickItem(e) {\n e.preventDefault();\n searchInput.value = e.target.innerText;\n closeSuggestions();\n searchInput.setSelectionRange(0, 0);\n\n if (searchForm.classList.contains(\"quick-search-box\")) {\n searchForm.submit();\n } else {\n // Fire react search\n searchForm.dispatchEvent(new Event(\"submit\", {\n cancelable: true\n }));\n }\n };\n\n var handleClickAway = function handleClickAway(e) {\n if (quickSearchBox.classList.contains(\"is-active\") && e.target !== quickSearchBox && !quickSearchBox.contains(e.target)) {\n var _document$querySelect;\n\n closeSuggestions();\n quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.classList.remove(\"is-active\");\n (_document$querySelect = document.querySelector(\".global-header\")) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.classList.remove(\"search-is-open\"); // for smartphone widths \n }\n }; // Expand search field\n\n\n var handleOpen = function handleOpen() {\n quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.classList.add(\"is-active\");\n var primaryNav = document.querySelector(\".primary-nav\");\n primaryNav === null || primaryNav === void 0 ? void 0 : primaryNav.classList.remove(\"is-open\");\n primaryNav === null || primaryNav === void 0 ? void 0 : primaryNav.setAttribute(\"aria-expanded\", false);\n setTimeout(function () {\n return searchInput.focus();\n });\n\n if ((0, _breakpoint.breakpoint)() !== \"large\") {\n (0, _jquery.default)(\".js-menu\").hide();\n }\n };\n\n var clear = function clear() {\n searchInput.value = \"\";\n closeSuggestions();\n searchInput.focus();\n }; // Reset previous result(s)\n\n\n var closeSuggestions = function closeSuggestions() {\n var srText = quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.querySelector('.search-box__sr-only');\n var suggestionEl = quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.querySelector('.search-box__suggestion-box');\n srText.innerHTML = '';\n suggestionEl === null || suggestionEl === void 0 ? void 0 : suggestionEl.remove();\n activeIndex = -1;\n searchInput.setAttribute('aria-expanded', false);\n searchInput.setAttribute('aria-activedescendant', '');\n };\n\n var handleType = _lodash.default.debounce( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(e) {\n var input, response, data, suggestionBox, strRegExp;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n input = e.target.value;\n\n if (!((input === null || input === void 0 ? void 0 : input.length) >= 3)) {\n _context.next = 12;\n break;\n }\n\n _context.next = 4;\n return fetch(\"\".concat(window.location.origin, \"/api/SearchSuggestApi/GetSuggestions?term=\").concat(input, \"&url=\").concat(window.location.origin), {\n method: \"get\"\n });\n\n case 4:\n response = _context.sent;\n _context.next = 7;\n return response.json();\n\n case 7:\n data = _context.sent;\n suggestionBox = document.createElement('div');\n suggestionBox.classList.add('search-box__suggestion-box');\n strRegExp = new RegExp(input, 'gi');\n\n if ((data === null || data === void 0 ? void 0 : data.length) > 0) {\n // Build suggestion list\n suggestionBox.innerHTML = \"\\n
    \\n \".concat(searchForLabel, \":\\n \\n
    \\n
      \\n \").concat(data === null || data === void 0 ? void 0 : data.map(function (d, index) {\n return \"\\n
    • \\n \\n
    • \\n \");\n }).join(\"\"), \"\\n
    \\n \");\n quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.append(suggestionBox);\n\n _toConsumableArray(quickSearchBox.querySelectorAll(\".search-box__suggestion\")).forEach(function (suggestion) {\n suggestion.addEventListener('click', handleClickItem);\n });\n\n searchInput.setAttribute('aria-expanded', true); // Populate live announcement with result text\n\n setTimeout(function () {\n var srText = quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.querySelector('.search-box__sr-only');\n\n if (srText) {\n srText.innerHTML = \"There are currently \".concat(data === null || data === void 0 ? void 0 : data.length, \" options starting with \").concat(input, \". Press down arrow for options\");\n }\n }, 1200);\n }\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }(), 500);\n\n var handleKeyboard = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(e) {\n var prevActiveIndex, suggestions, suggestionEl, prevActive, activeItem;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n prevActiveIndex = activeIndex;\n suggestions = quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.querySelectorAll('.search-box__suggestion');\n suggestionEl = quickSearchBox === null || quickSearchBox === void 0 ? void 0 : quickSearchBox.querySelector('.search-box__suggestion-box');\n\n if (suggestionEl) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 5:\n suggestions === null || suggestions === void 0 ? void 0 : suggestions.forEach(function (el) {\n return el.setAttribute('aria-selected', false);\n });\n _context2.t0 = e.key;\n _context2.next = _context2.t0 === \"ArrowDown\" ? 9 : _context2.t0 === 'ArrowUp' ? 12 : _context2.t0 === 'Escape' ? 15 : _context2.t0 === 'Enter' ? 18 : 20;\n break;\n\n case 9:\n e.preventDefault();\n\n if (activeIndex === -1 || activeIndex >= (suggestions === null || suggestions === void 0 ? void 0 : suggestions.length) - 1) {\n activeIndex = 0;\n } else {\n activeIndex++;\n }\n\n return _context2.abrupt(\"break\", 20);\n\n case 12:\n e.preventDefault();\n\n if (activeIndex <= 0) {\n activeIndex = (suggestions === null || suggestions === void 0 ? void 0 : suggestions.length) - 1;\n } else {\n activeIndex--;\n }\n\n return _context2.abrupt(\"break\", 20);\n\n case 15:\n closeSuggestions();\n searchInput.focus();\n return _context2.abrupt(\"break\", 20);\n\n case 18:\n closeSuggestions();\n return _context2.abrupt(\"break\", 20);\n\n case 20:\n prevActive = quickSearchBox.querySelector(\"#quick-search-item-\".concat(prevActiveIndex));\n activeItem = quickSearchBox.querySelector(\"#quick-search-item-\".concat(activeIndex));\n\n if (prevActive) {\n prevActive.classList.remove('selected');\n prevActive.setAttribute('aria-selected', 'false');\n }\n\n if (activeItem) {\n activeItem.setAttribute('aria-selected', true);\n activeItem.classList.add('selected');\n searchInput === null || searchInput === void 0 ? void 0 : searchInput.setAttribute('aria-activedescendant', \"quick-search-item-\".concat(activeIndex));\n searchInput.value = activeItem.innerText;\n } else {\n searchInput.setAttribute('aria-activedescendant', '');\n }\n\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function handleKeyboard(_x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n init();\n}\n\n},{\"./breakpoint\":48,\"jquery\":\"jquery\",\"lodash\":\"lodash\"}],34:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VideoModal = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar VideoModal = /*#__PURE__*/function () {\n function VideoModal($el) {\n _classCallCheck(this, VideoModal);\n\n this.$el = $el;\n this.$body = (0, _jquery.default)(\"body\");\n this.$videoWrapper = $el.find((0, _jquery.default)(\".video-block__media-wrapper\"));\n this.$iframe = this.$videoWrapper.find(\"iframe\");\n this.$placeholderWrapper = this.$el.find(\".video-block__media-placeholder-wrapper\");\n this.$modalWrapper = (0, _jquery.default)(\"
    \", {\n \"class\": \"video-block__modal-wrapper js-selection-sharer\"\n });\n this.$modalWrapper.appendTo(this.$body);\n this.$modalWrapper.append(this.$el.clone());\n this.$modalIframe = this.$modalWrapper.find(\"iframe\");\n this.init();\n this.bindEvents();\n }\n\n _createClass(VideoModal, [{\n key: \"init\",\n value: function init() {}\n }, {\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$placeholderWrapper.on(\"click\", function (event) {\n return _this.onPlaceholderWrapperClick(event);\n });\n this.$modalWrapper.on(\"click\", function (event) {\n return _this.onModalWrapperClick(event);\n }); // image gallery: pause video when switching to new slide\n\n window.addEventListener(\"load\", function () {\n _this.$slideArrows = _this.$body.find(\".slick-arrow\");\n\n _this.$slideArrows.each(function (i, slideArrow) {\n slideArrow.addEventListener(\"click\", function () {\n _this.pauseVideo(_this.$iframe);\n });\n });\n });\n }\n }, {\n key: \"onPlaceholderWrapperClick\",\n value: function onPlaceholderWrapperClick(event) {\n if (this.$placeholderWrapper.width() < 649) {\n this.playVideo(this.$modalIframe);\n this.$modalWrapper.addClass(\"is-active\");\n } else {\n this.playVideo(this.$iframe);\n this.$placeholderWrapper.hide();\n this.$videoWrapper.show();\n }\n }\n }, {\n key: \"onModalWrapperClick\",\n value: function onModalWrapperClick(event) {\n if (event.target === event.currentTarget || (0, _jquery.default)(\".js-close-video-modal\").find(event.target).length) {\n this.$modalWrapper.removeClass(\"is-active\");\n this.pauseVideo(this.$modalIframe);\n }\n }\n }, {\n key: \"playVideo\",\n value: function playVideo($iframe) {\n if (this.isYoutubeVideo($iframe)) {\n this.postYoutubeMessage($iframe, \"playVideo\");\n }\n }\n }, {\n key: \"pauseVideo\",\n value: function pauseVideo($iframe) {\n if (this.isYoutubeVideo($iframe)) {\n this.postYoutubeMessage($iframe, \"pauseVideo\");\n }\n }\n }, {\n key: \"isYoutubeVideo\",\n value: function isYoutubeVideo($iframe) {\n if (!$iframe || !$iframe.length) {\n return false;\n }\n\n var videoSrc = $iframe.attr(\"src\");\n return videoSrc && videoSrc.includes(\"youtube\");\n }\n }, {\n key: \"postYoutubeMessage\",\n value: function postYoutubeMessage($iframe, func) {\n if (!$iframe || !$iframe.length || !func || !func.length) {\n return;\n }\n\n var messageObject = {\n event: \"command\",\n func: func,\n args: \"\"\n };\n $iframe[0].contentWindow.postMessage(JSON.stringify(messageObject), \"*\");\n }\n }]);\n\n return VideoModal;\n}();\n\nexports.VideoModal = VideoModal;\n\n},{\"jquery\":\"jquery\"}],35:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ViewAllExpand = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar ViewAllExpand = /*#__PURE__*/function () {\n function ViewAllExpand($el) {\n _classCallCheck(this, ViewAllExpand);\n\n this.$el = $el;\n this.$button = $el.find('.js-more');\n this.$expandTarget = $el.find('.js-expand-target');\n this.bindEvents();\n }\n\n _createClass(ViewAllExpand, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$el.on('click', '.js-more', function (event) {\n return _this.expand(event);\n });\n }\n }, {\n key: \"expand\",\n value: function expand(event) {\n event.preventDefault();\n this.$expandTarget.slideDown(200).attr('aria-expanded', true);\n this.$button.hide();\n }\n }]);\n\n return ViewAllExpand;\n}();\n\nexports.ViewAllExpand = ViewAllExpand;\n\n},{\"jquery\":\"jquery\"}],36:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WhatWeDo = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar WhatWeDo = /*#__PURE__*/function () {\n function WhatWeDo($el) {\n _classCallCheck(this, WhatWeDo);\n\n this.$el = $el;\n this.bindEvents();\n }\n\n _createClass(WhatWeDo, [{\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this = this;\n\n this.$el.on('click', function (event) {\n return _this.toggleActive(event);\n });\n }\n }, {\n key: \"toggleActive\",\n value: function toggleActive(event) {\n event.stopPropagation();\n (0, _jquery.default)('.what-we-do__topic-info-wrapper').remove();\n var $topic = (0, _jquery.default)(event.currentTarget); //if clicked topic is currently selected, return it to collapsed state\n\n if ($topic.hasClass('what-we-do__topic--active')) {\n (0, _jquery.default)('.what-we-do__topic').removeClass('what-we-do__topic--active');\n return;\n }\n\n var index = $topic.index(); //add bottom border class\n\n (0, _jquery.default)('.what-we-do__topic').removeClass('what-we-do__topic--active');\n $topic.addClass('what-we-do__topic--active');\n var $mediumWrapper = (0, _jquery.default)('
    ', {\n 'class': 'what-we-do__topic-info-wrapper wrapper-medium'\n });\n var $smallWrapper = (0, _jquery.default)('
    ', {\n 'class': 'what-we-do__topic-info-wrapper wrapper-small'\n });\n var $largeWrapper = (0, _jquery.default)('
    ', {\n 'class': 'what-we-do__topic-info-wrapper wrapper-large'\n });\n var element = null; //place the wrapper for small/mobile display\n\n if (index < 2) {\n element = (0, _jquery.default)('.what-we-do__topic').get(1);\n (0, _jquery.default)(element).after($smallWrapper);\n } else if (index > 1 && index < 4) {\n element = (0, _jquery.default)('.what-we-do__topic').get(3);\n (0, _jquery.default)(element).after($smallWrapper);\n } else {\n (0, _jquery.default)('.what-we-do').after($smallWrapper);\n } //place the wrapper for medium/tablet display\n\n\n if (index < 3) {\n element = (0, _jquery.default)('.what-we-do__topic').get(2);\n (0, _jquery.default)(element).after($mediumWrapper);\n } else {\n (0, _jquery.default)('.what-we-do').after($mediumWrapper);\n } //place the wrapper for large display\n\n\n (0, _jquery.default)('.what-we-do').after($largeWrapper);\n (0, _jquery.default)('.what-we-do__topic-info-wrapper').append($topic.children('.what-we-do__topic-info').clone());\n }\n }]);\n\n return WhatWeDo;\n}();\n\nexports.WhatWeDo = WhatWeDo;\n\n},{\"jquery\":\"jquery\"}],37:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toArray = void 0;\n\n// Collection Utilities (for a11y)\nvar toArray = function toArray(arraylike) {\n return Array.prototype.slice.call(arraylike);\n};\n\nexports.toArray = toArray;\n\n},{}],38:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.destroyTabTrap = exports.initTabTrap = exports.getLastFocusableChild = exports.getPrevFocusableChild = exports.getNextFocusableChild = exports.getFirstFocusableChild = exports.isVisiblyHidden = exports.focusableQuery = void 0;\n\nvar _selectionUtils = require(\"./selectionUtils.js\");\n\n// Focus Utilities (for a11y)\n// export const focusableQuery =\n// 'input:not([tabindex^=\"-\"]), select:not([tabindex^=\"-\"]), textarea:not([tabindex^=\"-\"]), button:not([tabindex^=\"-\"]), object:not([tabindex^=\"-\"]), [href], [tabindex]:not([tabindex^=\"-\"]):not(.tabtrap)';\nvar focusableQuery = \"input, select, textarea, button, object, [href], [tabindex]:not(.tabtrap)\";\nexports.focusableQuery = focusableQuery;\n\nvar isVisiblyHidden = function isVisiblyHidden(target) {\n var targetStyle = getComputedStyle(target);\n\n if (targetStyle.clip.indexOf(\"rect\") === -1 && targetStyle.display !== \"none\" && targetStyle.visibility !== \"hidden\") {\n return false;\n }\n\n return true;\n};\n\nexports.isVisiblyHidden = isVisiblyHidden;\n\nvar getFirstFocusableChild = function getFirstFocusableChild(element) {\n return element.querySelector(focusableQuery);\n};\n\nexports.getFirstFocusableChild = getFirstFocusableChild;\n\nvar getNextFocusableChild = function getNextFocusableChild(element, current) {\n var all = (0, _selectionUtils.queryAll)(focusableQuery, element);\n var targetReturnIndex = all.indexOf(current) + 1;\n\n if (targetReturnIndex <= all.length - 1) {\n return all[targetReturnIndex];\n }\n\n return null;\n};\n\nexports.getNextFocusableChild = getNextFocusableChild;\n\nvar getPrevFocusableChild = function getPrevFocusableChild(element, current) {\n var all = (0, _selectionUtils.queryAll)(focusableQuery, element);\n var targetReturnIndex = all.indexOf(current) - 1;\n\n if (targetReturnIndex <= all.length - 1) {\n return all[targetReturnIndex];\n }\n\n return null;\n};\n\nexports.getPrevFocusableChild = getPrevFocusableChild;\n\nvar getLastFocusableChild = function getLastFocusableChild(element) {\n var all = element.querySelectorAll(focusableQuery);\n return all[all.length - 1];\n};\n\nexports.getLastFocusableChild = getLastFocusableChild;\n\nvar initTabTrap = function initTabTrap(element) {\n // The initTabTrap function will trap tab focus inside an element, making sure that you can't accidentally tab to other elements. Useful for modal windows or other contexts where we want the tab focus to stay inside the element until it is dismissed.\n // \"element\" in this case means the menu panel div.\n var createTrap = function createTrap() {\n var trap = document.createElement(\"div\");\n trap.classList.add(\"tabtrap\");\n trap.setAttribute(\"tabindex\", \"0\");\n return trap;\n };\n\n var applyTraps = function applyTraps(element, firstTrap, lastTrap) {\n firstTrap.addEventListener(\"focus\", function () {\n getLastFocusableChild(element).focus();\n });\n lastTrap.addEventListener(\"focus\", function () {\n getFirstFocusableChild(element).focus();\n });\n element.insertBefore(firstTrap, element.firstChild);\n element.appendChild(lastTrap);\n };\n\n var firstTrap = createTrap();\n var lastTrap = createTrap();\n applyTraps(element, firstTrap, lastTrap);\n};\n\nexports.initTabTrap = initTabTrap;\n\nvar destroyTabTrap = function destroyTabTrap(element) {\n // \"element\" in this case means the menu panel div.\n var traps = element.querySelectorAll(\"tabtrap\");\n Array.from(traps).forEach(function (item) {\n item.removeEventListener(\"focus\");\n item.parentNode.removeChild(item);\n });\n};\n\nexports.destroyTabTrap = destroyTabTrap;\n\n},{\"./selectionUtils.js\":40}],39:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.trapEnter = exports.onElementCharacter = exports.isAlphaNumeric = exports.onElementF10 = exports.onElementPageDown = exports.onElementPageUp = exports.onElementEnd = exports.onElementHome = exports.onElementDown = exports.onElementUp = exports.onElementRight = exports.onElementLeft = exports.onElementSpace = exports.onElementEscape = exports.onElementTab = exports.onElementEnter = exports.bindElementToKeydownValue = exports.bindElementToKeypressValue = exports.bindElementToEventValue = exports.KEYS = void 0;\n// Keyboard Utilities (for a11y)\nvar KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESCAPE: 27,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39,\n UP: 38,\n DOWN: 40,\n F10: 121,\n HOME: 36,\n END: 35,\n PAGE_UP: 33,\n PAGE_DOWN: 34\n};\nexports.KEYS = KEYS;\n\nvar bindElementToEventValue = function bindElementToEventValue(element, eventName, testValue, handler) {\n var localHandler = function localHandler(e) {\n if (e.which === testValue) {\n handler(e);\n }\n };\n\n element.addEventListener(eventName, localHandler);\n return function () {\n element.removeEventListener(eventName, localHandler);\n };\n};\n\nexports.bindElementToEventValue = bindElementToEventValue;\n\nvar bindElementToKeypressValue = function bindElementToKeypressValue(element, testValue, handler) {\n return bindElementToEventValue(element, \"keypress\", testValue, handler);\n};\n\nexports.bindElementToKeypressValue = bindElementToKeypressValue;\n\nvar bindElementToKeydownValue = function bindElementToKeydownValue(element, testValue, handler) {\n return bindElementToEventValue(element, \"keydown\", testValue, handler);\n};\n\nexports.bindElementToKeydownValue = bindElementToKeydownValue;\n\nvar onElementEnter = function onElementEnter(element, handler) {\n return bindElementToKeypressValue(element, KEYS.ENTER, handler);\n};\n\nexports.onElementEnter = onElementEnter;\n\nvar onElementTab = function onElementTab(element, handler) {\n return bindElementToKeydownValue(element, KEYS.TAB, handler);\n};\n\nexports.onElementTab = onElementTab;\n\nvar onElementEscape = function onElementEscape(element, handler) {\n return bindElementToKeydownValue(element, KEYS.ESCAPE, handler);\n};\n\nexports.onElementEscape = onElementEscape;\n\nvar onElementSpace = function onElementSpace(element, handler) {\n return bindElementToKeypressValue(element, KEYS.SPACE, handler);\n};\n\nexports.onElementSpace = onElementSpace;\n\nvar onElementLeft = function onElementLeft(element, handler) {\n return bindElementToKeydownValue(element, KEYS.LEFT, handler);\n};\n\nexports.onElementLeft = onElementLeft;\n\nvar onElementRight = function onElementRight(element, handler) {\n return bindElementToKeydownValue(element, KEYS.RIGHT, handler);\n};\n\nexports.onElementRight = onElementRight;\n\nvar onElementUp = function onElementUp(element, handler) {\n return bindElementToKeydownValue(element, KEYS.UP, handler);\n};\n\nexports.onElementUp = onElementUp;\n\nvar onElementDown = function onElementDown(element, handler) {\n return bindElementToKeydownValue(element, KEYS.DOWN, handler);\n};\n\nexports.onElementDown = onElementDown;\n\nvar onElementHome = function onElementHome(element, handler) {\n return bindElementToKeydownValue(element, KEYS.HOME, handler);\n};\n\nexports.onElementHome = onElementHome;\n\nvar onElementEnd = function onElementEnd(element, handler) {\n return bindElementToKeydownValue(element, KEYS.END, handler);\n};\n\nexports.onElementEnd = onElementEnd;\n\nvar onElementPageUp = function onElementPageUp(element, handler) {\n return bindElementToKeydownValue(element, KEYS.PAGE_UP, handler);\n};\n\nexports.onElementPageUp = onElementPageUp;\n\nvar onElementPageDown = function onElementPageDown(element, handler) {\n return bindElementToKeydownValue(element, KEYS.PAGE_DOWN, handler);\n};\n\nexports.onElementPageDown = onElementPageDown;\n\nvar onElementF10 = function onElementF10(element, handler) {\n return bindElementToKeydownValue(element, KEYS.F10, handler);\n};\n\nexports.onElementF10 = onElementF10;\n\nvar isAlphaNumeric = function isAlphaNumeric(charCode) {\n return charCode >= 48 && charCode <= 90 || charCode >= 97 && charCode <= 122\n /* lowercase letters */\n ;\n};\n\nexports.isAlphaNumeric = isAlphaNumeric;\n\nvar onElementCharacter = function onElementCharacter(element, handler) {\n var localHandler = function localHandler(e) {\n var charCode = e.which;\n\n if (isAlphaNumeric(charCode)) {\n handler(e);\n }\n };\n\n element.addEventListener(\"keypress\", localHandler);\n return function () {\n element.removeEventListener(\"keypress\", localHandler);\n };\n}; // To stop the Enter key from doing something\n\n\nexports.onElementCharacter = onElementCharacter;\n\nvar trapEnter = function trapEnter(element) {\n onElementEnter(element, function (e) {\n e.stopPropagation();\n e.preventDefault();\n });\n};\n\nexports.trapEnter = trapEnter;\n\n},{}],40:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.queryAll = void 0;\n\nvar _collectionUtils = require(\"./collectionUtils.js\");\n\n// Selection Utilities (for a11y)\nvar queryAll = function queryAll(selector, context) {\n context = context || document;\n return (0, _collectionUtils.toArray)(context.querySelectorAll(selector));\n};\n\nexports.queryAll = queryAll;\n\n},{\"./collectionUtils.js\":37}],41:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _BlogItem = _interopRequireWildcard(require(\"./BlogItem.jsx\"));\n\nvar _Pagination = _interopRequireDefault(require(\"../../search/components/Pagination.jsx\"));\n\nvar _SearchStatus = _interopRequireDefault(require(\"../../search/components/SearchStatus.jsx\"));\n\nvar _paging = require(\"../../search/paging\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar BlogContentList = function BlogContentList(_ref) {\n var title = _ref.title,\n results = _ref.results,\n totalResults = _ref.totalResults,\n query = _ref.query,\n nextPage = _ref.nextPage,\n viewAllUrl = _ref.viewAllUrl,\n loading = _ref.loading,\n token = _ref.token,\n dictionary = _ref.dictionary,\n isFirstLoad = _ref.isFirstLoad,\n displayDates = _ref.displayDates,\n pagination = _ref.pagination,\n gotoPage = _ref.gotoPage;\n var dictionaryBindings = {};\n\n function dictEntryFor(key) {\n // if name is a dictionary key, grab it\n var entry = dictionary[key];\n\n if (!entry) {\n // if not a dictionary key, check if it's bound to a dictionary key\n var lowerKey = key.toLowerCase();\n entry = dictionary[dictionaryBindings[lowerKey]];\n } // if no entry found, simply return the name\n\n\n return entry || key;\n }\n\n function resultsRange() {\n // Upper bound of visible results\n var ceiling = query.page * query.perPage; // Lower bound of visible results\n\n var floor = ceiling - query.perPage + 1; // make sure the ceiling does not exceed total results\n\n if (ceiling > totalResults) {\n ceiling = totalResults;\n } // if results are only one page, eschew the range entirely\n\n\n if (totalResults <= query.perPage) {\n return \"\".concat(totalResults);\n } // if we're using load more, we want to show only\n // the ceiling of results displayed\n\n\n if (!pagination) {\n return \"\".concat(ceiling);\n } // otherwise, return the full range\n\n\n return \"\".concat(floor, \" - \").concat(ceiling);\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"blog-content-listing\"\n }, title && /*#__PURE__*/_react.default.createElement(\"h2\", {\n className: \"blog-content-listing__title\"\n }, title), token && /*#__PURE__*/_react.default.createElement(\"h2\", {\n className: \"blog-content-listing__title\"\n }, token.title), results.length === 0 && !isFirstLoad && /*#__PURE__*/_react.default.createElement(\"p\", null, \"No results found.\"), results.map(function (item, i) {\n return /*#__PURE__*/_react.default.createElement(_BlogItem.default, _extends({\n key: i,\n displayDate: displayDates\n }, item));\n }), loading && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"blog-content-listing__loading-spinner\"\n }, /*#__PURE__*/_react.default.createElement(\"img\", {\n src: \"/assets/img/loading.gif\"\n })), results.length > 0 && pagination && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__bottom\"\n }, /*#__PURE__*/_react.default.createElement(_SearchStatus.default, {\n resultsRange: resultsRange(),\n totalResults: totalResults,\n handleFacetDismiss: function handleFacetDismiss() {}\n }), /*#__PURE__*/_react.default.createElement(_Pagination.default, {\n totalResults: totalResults,\n resultsPerPage: query.perPage,\n currentPage: query.page,\n handlePageChange: gotoPage\n })), !pagination && !(0, _paging.isLastPage)(totalResults, query.perPage, query.page) && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"blog-content-listing__load-more-wrapper\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"blog-content-listing__load-more\"\n }, !viewAllUrl && /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"pct-btn\",\n onClick: function onClick(e) {\n return nextPage();\n },\n type: \"button\"\n }, dictEntryFor(\"loadMoreLabel\")), viewAllUrl && /*#__PURE__*/_react.default.createElement(\"a\", {\n href: viewAllUrl,\n className: \"pct-btn\"\n }, dictEntryFor(\"viewAllLabel\")))));\n};\n\nvar _default = BlogContentList;\nexports.default = _default;\nvar _React$PropTypes = _react.default.PropTypes,\n arrayOf = _React$PropTypes.arrayOf,\n object = _React$PropTypes.object,\n func = _React$PropTypes.func,\n number = _React$PropTypes.number,\n bool = _React$PropTypes.bool,\n string = _React$PropTypes.string;\nBlogContentList.propTypes = {\n title: string,\n totalResults: number,\n results: arrayOf(_BlogItem.blogItemShape).isRequired,\n query: object,\n token: object,\n nextPage: func.isRequired,\n dictionary: object,\n displayDates: bool,\n pagination: bool\n};\n\n},{\"../../search/components/Pagination.jsx\":85,\"../../search/components/SearchStatus.jsx\":91,\"../../search/paging\":103,\"./BlogItem.jsx\":42,\"react\":\"react\"}],42:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.blogItemShape = exports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = require(\"prop-types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BlogItem = function BlogItem(_ref) {\n var featureItemAuthors = _ref.featureItemAuthors,\n featureItemContentType = _ref.featureItemContentType,\n featureItemDisplayDate = _ref.featureItemDisplayDate,\n featureItemId = _ref.featureItemId,\n featureItemImage = _ref.featureItemImage,\n featureItemImage1x1Src = _ref.featureItemImage1x1Src,\n featureItemSummary = _ref.featureItemSummary,\n featureItemTitle = _ref.featureItemTitle,\n featureItemUrl = _ref.featureItemUrl,\n suppressContentType = _ref.suppressContentType,\n suppressPublicationDate = _ref.suppressPublicationDate;\n\n if (featureItemTitle !== \"$name\") {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"blog-content-listing__content\"\n }, featureItemImage1x1Src && /*#__PURE__*/_react.default.createElement(\"a\", {\n className: \"blog-content-listing__image\",\n href: featureItemUrl\n }, /*#__PURE__*/_react.default.createElement(\"img\", {\n src: \"\".concat(featureItemImage1x1Src, \"?w=280&h=280\")\n })), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"blog-content-listing__details\"\n }, /*#__PURE__*/_react.default.createElement(\"a\", {\n className: \"blog-content-listing__listing-title\",\n href: featureItemUrl,\n dangerouslySetInnerHTML: {\n __html: featureItemTitle\n }\n }), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"blog-content-listing__meta-data\"\n }, featureItemContentType && !suppressContentType && /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"blog-content-listing__content-type\"\n }, featureItemContentType), featureItemDisplayDate && !suppressPublicationDate && /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"blog-content-listing__date\"\n }, featureItemDisplayDate), featureItemAuthors && featureItemAuthors.length > 0 ? /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"blog-content-listing__authors\"\n }, \" by \", /*#__PURE__*/_react.default.createElement(\"strong\", null, featureItemAuthors.join(\", \"))) : null), featureItemSummary && /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"blog-content-listing__listing-summary\",\n dangerouslySetInnerHTML: {\n __html: featureItemSummary\n }\n })));\n } else {\n return /*#__PURE__*/_react.default.createElement(\"span\", null);\n }\n};\n\nvar _default = BlogItem;\nexports.default = _default;\nvar _React$PropTypes = _react.default.PropTypes,\n string = _React$PropTypes.string,\n shape = _React$PropTypes.shape,\n objectOf = _React$PropTypes.objectOf,\n bool = _React$PropTypes.bool;\nvar featureItemProps = {\n featureItemAuthors: (0, _propTypes.arrayOf)(string),\n featureItemContentType: string,\n featureItemDisplayDate: string,\n featureItemId: string.isRequired,\n featureItemImage1x1Src: string,\n featureItemTitle: string.isRequired,\n featureItemSummary: string,\n featureItemUrl: string.isRequired,\n displayDate: bool,\n suppressContentType: bool,\n suppressPublicationDate: bool\n};\nvar blogItemShape = shape(featureItemProps);\nexports.blogItemShape = blogItemShape;\nBlogItem.propTypes = featureItemProps;\n\n},{\"prop-types\":\"prop-types\",\"react\":\"react\"}],43:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _BlogContentList = _interopRequireDefault(require(\"../components/BlogContentList.jsx\"));\n\nvar _search = require(\"../../search/redux/search/search.actions\");\n\nvar _facets = require(\"../../search/redux/facets\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n results: state.results,\n resultsDisplayStrategy: state.resultsDisplayStrategy,\n totalResults: state.totalResults,\n loading: state.loading,\n isFirstLoad: state.isFirstLoad,\n query: state.query,\n pagination: state.pagination,\n displayDates: state.displayDates,\n dictionary: state.dictionary,\n viewAllUrl: state.viewAllUrl,\n token: state.token,\n title: state.title\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n nextPage: function nextPage() {\n dispatch((0, _search.loadNextPage)());\n },\n dismissFacet: function dismissFacet(facetId) {\n dispatch((0, _search.loadFacetChange)(facetId, false));\n },\n showMobileFacets: function showMobileFacets() {\n dispatch((0, _search.showMobileFacets)());\n },\n gotoPage: function gotoPage(pageNum) {\n dispatch((0, _search.loadNewPage)(pageNum));\n }\n };\n};\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_BlogContentList.default);\n\nexports.default = _default;\n\n},{\"../../search/redux/facets\":106,\"../../search/redux/search/search.actions\":111,\"../components/BlogContentList.jsx\":41,\"react-redux\":\"react-redux\"}],44:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initSearchApp = initSearchApp;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reduxThunk = _interopRequireDefault(require(\"redux-thunk\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _rootReducer = _interopRequireDefault(require(\"../search/redux/rootReducer\"));\n\nvar _search = require(\"../search/redux/search/search.reducer\");\n\nvar _search2 = require(\"../search/redux/search/search.actions\");\n\nvar _configureStore = _interopRequireDefault(require(\"../search/redux/configureStore\"));\n\nvar _service = require(\"../search/redux/service\");\n\nvar _service2 = require(\"./redux/service\");\n\nvar _resultsDisplay = require(\"../search/redux/resultsDisplay\");\n\nvar _BlogContentContainer = _interopRequireDefault(require(\"./containers/BlogContentContainer.js\"));\n\nvar _FacetsContainer = _interopRequireDefault(require(\"../search/containers/FacetsContainer.jsx\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// the mount nodes are the elements we want to include\n// as part of the search app\nfunction initSearchApp(mountNodes) {\n if (!mountNodes.length) {\n return;\n } // extract the searchId from the mountNodes\n // while also checking mountNodes share same id\n\n\n var searchId = mountNodes.reduce(function (id, node) {\n var nodeId = $(node).data(\"searchId\"); // if id is null, we want to set it\n // with the first node's value\n\n if (id === null) {\n return nodeId;\n } // if node id does not equal current\n // id value, it's invalid and return undefined\n\n\n if (id !== nodeId) {\n return;\n }\n\n return id;\n }, null); // if we have an invalid or non-matching id, raise an error\n\n if (!searchId) {\n throw new Error(\"Could not initialize Pew search app. searchId was either not present, or provided mount nodes did not share the same searchId\");\n } // define the canonical inital state of our redux store here\n // including some value taken from the data-attrs of the\n // mount node.\n\n\n var config = window.PewSearchConfigs.find(function (c) {\n return c.searchId === searchId;\n });\n\n if (!config) {\n throw new Error(\"Could not initialize Pew search app instance with id of \\\"\".concat(searchId, \"\\\". Configuration data not found.\"));\n }\n\n var facetDisplayOverride = {\n \"contentType\": config.displayContentTypeFilter,\n \"places\": config.displayPlacesFilter,\n \"project\": config.displayProjectsFilter,\n \"tag\": config.displayTagsFilter,\n \"topic\": config.displayTopicsFilter\n };\n var featuredPosts = $('.featured-posts').attr('data-posts'); // create a starting state object,\n // which includes and intitial state\n // from individual reducers\n\n var initialState = _ramda.default.merge(_search.initialState, {\n url: config.url,\n pagination: config.pagination,\n resultsDisplayStrategy: config.pagination ? _resultsDisplay.RESULTS_DISPLAY_REFRESH : _resultsDisplay.RESULTS_DISPLAY_APPEND,\n viewAllUrl: config.viewAllUrl,\n dictionary: config.dictionary,\n displayDates: config.displayDates,\n facetDisplayOverride: facetDisplayOverride,\n query: _ramda.default.merge(_search.initialState.query, {\n pageId: config.pageId,\n page: config.page,\n perPage: config.perPage,\n componentId: config.componentId,\n featuredGuids: featuredPosts ? featuredPosts : null\n })\n }); // determine if we want to load all page results in our cold load\n\n\n var doLoadAllPages = initialState.resultsDisplayStrategy === _resultsDisplay.RESULTS_DISPLAY_APPEND && initialState.isFirstLoad;\n initialState = _ramda.default.merge(initialState, {\n query: _ramda.default.merge(initialState.query, {\n loadAllPages: doLoadAllPages\n })\n });\n\n var thunkMiddleware = _reduxThunk.default.withExtraArgument({\n mapResponseToState: _service.mapResponseToState,\n fetchSearchResults: _service2.fetchSearchResults\n });\n\n var store = (0, _configureStore.default)(_rootReducer.default, initialState, [thunkMiddleware]);\n store.dispatch((0, _search2.loadResults)());\n mountNodes.forEach(function (node) {\n if (node.className.indexOf(\"js-blog-content\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_BlogContentContainer.default, null)), node);\n }\n\n if (node.className.indexOf(\"js-blog-content-search-facets\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_FacetsContainer.default, null)), node);\n }\n });\n}\n\n},{\"../search/containers/FacetsContainer.jsx\":95,\"../search/redux/configureStore\":104,\"../search/redux/resultsDisplay\":108,\"../search/redux/rootReducer\":109,\"../search/redux/search/search.actions\":111,\"../search/redux/search/search.reducer\":112,\"../search/redux/service\":113,\"./containers/BlogContentContainer.js\":43,\"./redux/service\":45,\"ramda\":\"ramda\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\",\"redux-thunk\":\"redux-thunk\"}],45:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fetchSearchResults = fetchSearchResults;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nvar _util = require(\"../../search/util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction fetchSearchResults(url, query) {\n // dynamic content needs to remap some stuff on the request\n // that's normally part of vanilla search.\n // lose params we don't need. PageGuid and ComponentGuid are added automatically to the URL\n var removeInvalidParams = _ramda.default.omit([\"q\", \"sortBy\", \"sortOrder\", \"loadAllPages\", \"numberOfItems\", \"startOffset\", \"pageGuid\", \"pageId\", \"componentGuid\"]); // any facet/filter group params get changed to filter..\n // Keep track of which params are not filters/\n\n\n var nonFilters = [\"pageId\", \"componentGuid\", \"page\", \"perPage\", \"featuredGuids\"];\n\n var stringifyArrayParams = _ramda.default.map(function (v) {\n return v instanceof Array ? v.join(\";\") : v;\n });\n\n var keyName = function keyName(key) {\n return _ramda.default.contains(key, nonFilters) ? key : \"filters.\".concat(key);\n };\n\n var filterizeKeys = _ramda.default.partial(_util.renameKeysWith, [keyName]);\n\n var fixQuery = _ramda.default.pipe(removeInvalidParams, stringifyArrayParams, filterizeKeys);\n\n var searchPromise = _jquery.default.ajax({\n url: url,\n data: fixQuery(query)\n });\n\n var featuredPromise = _jquery.default.Deferred().resolve([]);\n\n return [searchPromise, featuredPromise];\n}\n\n},{\"../../search/util\":114,\"jquery\":\"jquery\",\"ramda\":\"ramda\"}],46:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initSearchApp = initSearchApp;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reduxThunk = _interopRequireDefault(require(\"redux-thunk\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _rootReducer = _interopRequireDefault(require(\"../search/redux/rootReducer\"));\n\nvar _search = require(\"../search/redux/search/search.reducer\");\n\nvar _search2 = require(\"../search/redux/search/search.actions\");\n\nvar _configureStore = _interopRequireDefault(require(\"../search/redux/configureStore\"));\n\nvar _service = require(\"./redux/service\");\n\nvar _resultsDisplay = require(\"../search/redux/resultsDisplay\");\n\nvar _BlogContentContainer = _interopRequireDefault(require(\"../blog-content/containers/BlogContentContainer.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// the mount nodes are the elements we want to include\n// as part of the search app\nfunction initSearchApp(mountNodes) {\n if (!mountNodes.length) {\n return;\n } // extract the searchId from the mountNodes\n // while also checking mountNodes share same id\n\n\n var searchId = mountNodes.reduce(function (id, node) {\n var nodeId = $(node).data(\"searchId\"); // if id is null, we want to set it\n // with the first node's value\n\n if (id === null) {\n return nodeId;\n } // if node id does not equal current\n // id value, it's invalid and return undefined\n\n\n if (id !== nodeId) {\n return;\n }\n\n return id;\n }, null); // if we have an invalid or non-matching id, raise an error\n\n if (!searchId) {\n throw new Error(\"Could not initialize Pew search app. searchId was either not present, or provided mount nodes did not share the same searchId\");\n } // define the canonical inital state of our redux store here\n // including some value taken from the data-attrs of the\n // mount node.\n\n\n var config = window.PewSearchConfigs.find(function (c) {\n return c.searchId === searchId;\n });\n\n if (!config) {\n throw new Error(\"Could not initialize Pew search app instance with id of \\\"\".concat(searchId, \"\\\". Configuration data not found.\"));\n } // create a starting state object,\n // which includes and intitial state\n // from individual reducers\n\n\n var initialState = _ramda.default.merge(_search.initialState, {\n url: config.url,\n pagination: config.pagination,\n resultsDisplayStrategy: config.pagination ? _resultsDisplay.RESULTS_DISPLAY_REFRESH : _resultsDisplay.RESULTS_DISPLAY_APPEND,\n viewAllUrl: config.viewAllUrl,\n dictionary: config.dictionary,\n displayDates: config.displayDates,\n query: _ramda.default.merge(_search.initialState.query, {\n pageId: config.pageId,\n page: config.page,\n perPage: config.perPage,\n componentId: config.componentId\n })\n }); // determine if we want to load all page results in our cold load\n\n\n var doLoadAllPages = initialState.resultsDisplayStrategy === _resultsDisplay.RESULTS_DISPLAY_APPEND && initialState.isFirstLoad;\n initialState = _ramda.default.merge(initialState, {\n query: _ramda.default.merge(initialState.query, {\n loadAllPages: doLoadAllPages\n })\n });\n\n var thunkMiddleware = _reduxThunk.default.withExtraArgument({\n mapResponseToState: _service.mapResponseToState,\n fetchSearchResults: _service.fetchSearchResults\n });\n\n var store = (0, _configureStore.default)(_rootReducer.default, initialState, [thunkMiddleware]);\n store.dispatch((0, _search2.loadResults)());\n mountNodes.forEach(function (node) {\n if (node.className.indexOf(\"js-blog-search\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_BlogContentContainer.default, null)), node);\n }\n });\n}\n\n},{\"../blog-content/containers/BlogContentContainer.js\":43,\"../search/redux/configureStore\":104,\"../search/redux/resultsDisplay\":108,\"../search/redux/rootReducer\":109,\"../search/redux/search/search.actions\":111,\"../search/redux/search/search.reducer\":112,\"./redux/service\":47,\"ramda\":\"ramda\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\",\"redux-thunk\":\"redux-thunk\"}],47:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mapResponseToState = mapResponseToState;\nexports.fetchSearchResults = fetchSearchResults;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _urijs = _interopRequireDefault(require(\"urijs\"));\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nvar _resultsDisplay = require(\"../../search/redux/resultsDisplay\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar newResults = _ramda.default.curry(function (newResults, oldResults, strategy) {\n return strategy === _resultsDisplay.RESULTS_DISPLAY_APPEND ? _ramda.default.concat(oldResults || [], newResults || []) : newResults || [];\n});\n\nfunction mapResponseToState(response, state) {\n var request = response.request;\n\n var castToInt = _ramda.default.curry(parseInt)(_ramda.default.__, 10);\n\n var newState = _ramda.default.evolve({\n totalResults: function totalResults() {\n return parseInt(response.totalResults, 10);\n },\n results: newResults(response.results, _ramda.default.__, state.resultsDisplayStrategy),\n facets: function facets() {\n return [];\n },\n token: function token() {\n return response.token;\n },\n query: _ramda.default.merge(_ramda.default.__, {\n pageId: request.pageId,\n page: castToInt(request.page || 0),\n perPage: castToInt(request.perPage || 10),\n sortOrder: request.sortOrder,\n loadAllPages: false\n })\n }, state);\n\n newState.title = response.title;\n return newState;\n}\n\n;\n\nfunction fetchSearchResults(url, query) {\n // there are no dynamic facets or filters on blog-search\n // but we do want to send filter and value to the api\n // we'll read it directly from the query string\n var field = (0, _urijs.default)(window.location).search(true)[\"field\"];\n var value = (0, _urijs.default)(window.location).search(true)[\"value\"];\n var pageGuid = (0, _urijs.default)(window.location).search(true)[\"pageGuid\"];\n var componentGuid = (0, _urijs.default)(window.location).search(true)[\"componentGuid\"];\n\n var omitFields = _ramda.default.omit([\"q\", \"sortBy\", \"sortOrder\", \"loadAllPages\", \"startOffset\", \"pageId\"]);\n\n var newQuery = value && field ? _ramda.default.merge({\n field: field,\n value: value\n }, query) : query;\n newQuery = pageGuid && componentGuid ? _ramda.default.merge({\n pageGuid: pageGuid,\n componentGuid: componentGuid\n }, newQuery) : newQuery;\n\n var searchPromise = _jquery.default.ajax({\n url: url,\n data: omitFields(newQuery)\n });\n\n var featuredPromise = _jquery.default.Deferred().resolve([]);\n\n return [searchPromise, featuredPromise];\n}\n\n},{\"../../search/redux/resultsDisplay\":108,\"jquery\":\"jquery\",\"ramda\":\"ramda\",\"urijs\":\"urijs\"}],48:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.breakpoint = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Extract current breakpoint name as string from DOM\n// More details: https://www.lullabot.com/articles/importing-css-breakpoints-into-javascript\nvar breakpoint = function breakpoint() {\n return window.getComputedStyle(document.querySelector(\"body\"), \"::before\").getPropertyValue(\"content\").replace(/\\\"/g, \"\");\n};\n\nexports.breakpoint = breakpoint;\n\n},{\"jquery\":\"jquery\"}],49:[function(require,module,exports){\n\"use strict\";\n\n/*!\r\nName: Reading Time\r\nDependencies: jQuery\r\nAuthor: Michael Lynch\r\nAuthor URL: http://michaelynch.com\r\nDate Created: August 14, 2013\r\nDate Updated: July 11, 2016\r\nLicensed under the MIT license\r\n*/\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports !== 'undefined') {\n module.exports = factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n})(function ($) {\n var totalReadingTimeSeconds;\n\n $.fn.readingTime = function (options) {\n //define default parameters\n var defaults = {\n readingTimeTarget: '.eta',\n readingTimeAsNumber: false,\n wordCountTarget: null,\n wordsPerMinute: 270,\n round: true,\n lang: 'en',\n lessThanAMinuteString: '',\n prependTimeString: '',\n prependWordString: '',\n remotePath: null,\n remoteTarget: null,\n success: function success() {},\n error: function error() {}\n },\n plugin = this,\n el = $(this); //merge defaults and options\n\n plugin.settings = $.extend({}, defaults, options); //define vars\n\n var s = plugin.settings; //if no element was bound\n\n if (!this.length) {\n //run error callback\n s.error.call(this); //return so chained events can continue\n\n return this;\n } //if s.lang is set to italian\n\n\n if (s.lang == 'it') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Meno di un minuto\";\n var minShortForm = 'min'; //if s.lang is set to french\n } else if (s.lang == 'fr') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Moins d'une minute\";\n var minShortForm = 'min'; //if s.lang is set to german\n } else if (s.lang == 'de') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Weniger als eine Minute\";\n var minShortForm = 'min'; //if s.lang is set to spanish\n } else if (s.lang == 'es') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Menos de un minuto\";\n var minShortForm = 'min'; //if s.lang is set to dutch\n } else if (s.lang == 'nl') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Minder dan een minuut\";\n var minShortForm = 'min'; //if s.lang is set to slovak\n } else if (s.lang == 'sk') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Menej než minútu\";\n var minShortForm = 'min'; //if s.lang is set to czech\n } else if (s.lang == 'cz') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Méně než minutu\";\n var minShortForm = 'min'; //if s.lang is set to Hungarian\n } else if (s.lang == 'hu') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Kevesebb mint egy perc\";\n var minShortForm = 'perc'; // if s.lang is set to Russian\n } else if (s.lang == 'ru') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Меньше минуты\";\n var minShortForm = 'мин'; //if s.lang is set to Arabic\n } else if (s.lang == 'ar') {\n var lessThanAMinute = s.lessThanAMinuteString || \"أقل من دقيقة\";\n var minShortForm = 'دقيقة'; //if s.lang is set to Danish\n } else if (s.lang == 'da') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Mindre end et minut\";\n var minShortForm = 'min'; //if s.lang is set to Icelandic\n } else if (s.lang == 'is') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Minna en eina mínútu\";\n var minShortForm = 'min'; //if s.lang is set to Norwegian\n } else if (s.lang == 'no') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Mindre enn ett minutt\";\n var minShortForm = 'min'; //if s.lang is set to Polish\n } else if (s.lang == 'pl') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Mniej niż minutę\";\n var minShortForm = 'min'; //if s.lang is set to Russian\n } else if (s.lang == 'ru') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Меньше минуты\";\n var minShortForm = 'мой'; //if s.lang is set to Swedish\n } else if (s.lang == 'sv') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Mindre än en minut\";\n var minShortForm = 'min'; //if s.lang is set to Turkish\n } else if (s.lang == 'tr') {\n var lessThanAMinute = s.lessThanAMinuteString || \"Bir dakikadan az\";\n var minShortForm = 'dk'; //default s.lang is english\n } else {\n var lessThanAMinute = s.lessThanAMinuteString || 'Less than a minute';\n var minShortForm = 'min';\n }\n\n var setTime = function setTime(text) {\n if (text !== '') {\n //split text by spaces to define total words\n var totalWords = text.trim().split(/\\s+/g).length; //define words per second based on words per minute (s.wordsPerMinute)\n\n var wordsPerSecond = s.wordsPerMinute / 60; //define total reading time in seconds\n\n totalReadingTimeSeconds = totalWords / wordsPerSecond; //define reading time in minutes\n //if s.round is set to true\n\n if (s.round === true) {\n var readingTimeMinutes = Math.round(totalReadingTimeSeconds / 60); //if s.round is set to false\n } else {\n var readingTimeMinutes = Math.floor(totalReadingTimeSeconds / 60);\n } //define remaining reading time seconds\n\n\n var readingTimeSeconds = Math.round(totalReadingTimeSeconds - readingTimeMinutes * 60); //if s.round is set to true\n\n if (s.round === true) {\n //if minutes are greater than 0\n if (readingTimeMinutes > 0) {\n //set reading time by the minute\n $(s.readingTimeTarget).text(s.prependTimeString + readingTimeMinutes + (!s.readingTimeAsNumber ? ' ' + minShortForm : ''));\n } else {\n //set reading time as less than a minute\n $(s.readingTimeTarget).text(!s.readingTimeAsNumber ? s.prependTimeString + lessThanAMinute : readingTimeMinutes);\n } //if s.round is set to false\n\n } else {\n //format reading time\n var readingTime = readingTimeMinutes + ':' + readingTimeSeconds; //set reading time in minutes and seconds\n\n $(s.readingTimeTarget).text(s.prependTimeString + readingTime);\n } //if word count container isn't blank or undefined\n\n\n if (s.wordCountTarget !== '' && s.wordCountTarget !== undefined) {\n //set word count\n $(s.wordCountTarget).text(s.prependWordString + totalWords);\n } //run success callback\n\n\n s.success.call(this);\n } else {\n //run error callback\n s.error.call(this, 'The element is empty.');\n }\n }; //for each element\n\n\n el.each(function () {\n //if s.remotePath and s.remoteTarget aren't null\n if (s.remotePath != null && s.remoteTarget != null) {\n //get contents of remote file\n $.get(s.remotePath, function (data) {\n //set time using the remote target found in the remote file\n setTime($('
    ').html(data).find(s.remoteTarget).text());\n });\n } else {\n //set time using the targeted element\n setTime(el.text());\n }\n });\n return totalReadingTimeSeconds;\n };\n});\n\n},{\"jquery\":\"jquery\"}],50:[function(require,module,exports){\n\"use strict\";\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n//I had to do this instead of loading it thru npm because of the module's requirejs dependency. I'm so so so so sorry.\n\n/*\r\n * selection-sharer: Medium like popover menu to share on Twitter or by email any text selected on the page\r\n *\r\n * -- Requires jQuery --\r\n * -- AMD compatible --\r\n *\r\n * Author: Xavier Damman (@xdamman)\r\n * GIT: https://github.com/xdamman/share-selection\r\n * MIT License\r\n */\n(function ($) {\n var SelectionSharer = function SelectionSharer(options) {\n var self = this;\n options = options || {};\n if (typeof options == \"string\") options = {\n elements: options\n };\n this.sel = null;\n this.textSelection = \"\";\n this.htmlSelection = \"\";\n this.appId = $('meta[property=\"fb:app_id\"]').attr(\"content\") || $('meta[property=\"fb:app_id\"]').attr(\"value\");\n this.url2share = $('meta[property=\"og:url\"]').attr(\"content\") || $('meta[property=\"og:url\"]').attr(\"value\") || window.location.href;\n self.viaTwitterAccount = $('meta[name=\"selshare:viatwitter\"]').attr(\"content\") || $('meta[name=\"selshare:viatwitter\"]').attr(\"value\");\n\n this.getSelectionText = function (sel) {\n var html = \"\",\n text = \"\";\n sel = sel || window.getSelection();\n\n if (sel.rangeCount) {\n var container = document.createElement(\"div\");\n\n for (var i = 0, len = sel.rangeCount; i < len; ++i) {\n container.appendChild(sel.getRangeAt(i).cloneContents());\n }\n\n text = container.textContent;\n html = container.innerHTML;\n }\n\n self.textSelection = text;\n self.htmlSelection = html || text;\n return text;\n };\n\n this.selectionDirection = function (selection) {\n var sel = selection || window.getSelection();\n var range = document.createRange();\n if (!sel.anchorNode) return 0;\n range.setStart(sel.anchorNode, sel.anchorOffset);\n range.setEnd(sel.focusNode, sel.focusOffset);\n var direction = range.collapsed ? \"backward\" : \"forward\";\n range.detach();\n return direction;\n };\n\n this.showPopunder = function () {\n self.popunder = self.popunder || document.getElementById(\"selectionSharerPopunder\");\n var sel = window.getSelection();\n var selection = self.getSelectionText(sel);\n if (sel.isCollapsed || selection.length < 10 || !selection.match(/ /)) return self.hidePopunder();\n\n if (self.popunder.classList.contains(\"fixed\")) {\n self.popunder.style.bottom = 0;\n return self.popunder.style.bottom;\n }\n\n var range = sel.getRangeAt(0);\n var node = range.endContainer.parentNode; // The

    where the selection ends\n // If the popunder is currently displayed\n\n if (self.popunder.classList.contains(\"show\")) {\n // If the popunder is already at the right place, we do nothing\n if (Math.ceil(self.popunder.getBoundingClientRect().top) == Math.ceil(node.getBoundingClientRect().bottom)) return; // Otherwise, we first hide it and the we try again\n\n return self.hidePopunder(self.showPopunder);\n }\n\n if (node.nextElementSibling) {\n // We need to push down all the following siblings\n self.pushSiblings(node);\n } else {\n // We need to append a new element to push all the content below\n if (!self.placeholder) {\n self.placeholder = document.createElement(\"div\");\n self.placeholder.className = \"selectionSharerPlaceholder\";\n } // If we add a div between two

    that have a 1em margin, the space between them\n // will become 2x 1em. So we give the placeholder a negative margin to avoid that\n\n\n var margin = window.getComputedStyle(node).marginBottom;\n self.placeholder.style.height = margin;\n self.placeholder.style.marginBottom = -2 * parseInt(margin, 10) + \"px\";\n node.parentNode.insertBefore(self.placeholder);\n } // scroll offset\n\n\n var offsetTop = window.pageYOffset + node.getBoundingClientRect().bottom;\n self.popunder.style.top = Math.ceil(offsetTop) + \"px\";\n setTimeout(function () {\n if (self.placeholder) self.placeholder.classList.add(\"show\");\n self.popunder.classList.add(\"show\");\n }, 0);\n };\n\n this.pushSiblings = function (el) {\n while (el = el.nextElementSibling) {\n el.classList.add(\"selectionSharer\");\n el.classList.add(\"moveDown\");\n }\n };\n\n this.hidePopunder = function (cb) {\n cb = cb || function () {};\n\n if (self.popunder == \"fixed\") {\n self.popunder.style.bottom = \"-50px\";\n return cb();\n }\n\n self.popunder.classList.remove(\"show\");\n if (self.placeholder) self.placeholder.classList.remove(\"show\"); // We need to push back up all the siblings\n\n var els = document.getElementsByClassName(\"moveDown\");\n\n while (el = els[0]) {\n el.classList.remove(\"moveDown\");\n } // CSS3 transition takes 0.6s\n\n\n setTimeout(function () {\n if (self.placeholder) document.body.insertBefore(self.placeholder);\n cb();\n }, 600);\n };\n\n this.show = function (e) {\n setTimeout(function () {\n var sel = window.getSelection();\n var selection = self.getSelectionText(sel);\n\n if (!sel.isCollapsed && selection && selection.length > 10 && selection.match(/ /)) {\n var range = sel.getRangeAt(0);\n var topOffset = range.getBoundingClientRect().top - 5;\n var top = topOffset + self.getPosition().y - self.$popover.height();\n var left = 0;\n\n if (e) {\n left = e.pageX;\n } else {\n var obj = sel.anchorNode.parentNode;\n left += obj.offsetWidth / 2;\n\n do {\n left += obj.offsetLeft;\n } while (obj = obj.offsetParent);\n }\n\n switch (self.selectionDirection(sel)) {\n case \"forward\":\n left -= self.$popover.width();\n break;\n\n case \"backward\":\n left += self.$popover.width();\n break;\n\n default:\n return;\n }\n\n self.$popover.removeClass(\"anim\").css(\"top\", top + 10).css(\"left\", left).show();\n setTimeout(function () {\n self.$popover.addClass(\"anim\").css(\"top\", top);\n }, 0);\n }\n }, 10);\n };\n\n this.hide = function (e) {\n self.$popover.hide();\n };\n\n this.smart_truncate = function (str, n) {\n if (!str || !str.length) return str;\n var toLong = str.length > n,\n s_ = toLong ? str.substr(0, n - 1) : str;\n s_ = toLong ? s_.substr(0, s_.lastIndexOf(\" \")) : s_;\n return toLong ? s_ + \"...\" : s_;\n };\n\n this.getRelatedTwitterAccounts = function () {\n var usernames = [];\n var creator = $('meta[name=\"twitter:creator\"]').attr(\"content\") || $('meta[name=\"twitter:creator\"]').attr(\"value\");\n if (creator) usernames.push(creator); // We scrape the page to find a link to http(s)://twitter.com/username\n\n var anchors = document.getElementsByTagName(\"a\");\n\n for (var i = 0, len = anchors.length; i < len; i++) {\n if (anchors[i].attributes.href && typeof anchors[i].attributes.href.value == \"string\") {\n var matches = anchors[i].attributes.href.value.match(/^https?:\\/\\/twitter\\.com\\/([a-z0-9_]{1,20})/i);\n if (matches && matches.length > 1 && [\"widgets\", \"intent\"].indexOf(matches[1]) == -1) usernames.push(matches[1]);\n }\n }\n\n if (usernames.length > 0) return usernames.join(\",\");else return \"\";\n };\n\n this.shareTwitter = function (e) {\n e.preventDefault();\n var suffix = \" \" + self.url2share + \" via \" + self.viaTwitterAccount;\n var text = \"“\" + self.smart_truncate(self.textSelection.trim(), 140 - (suffix.length + 2)) + \"”\";\n var url = \"http://twitter.com/intent/tweet?text=\" + encodeURIComponent(text) + \"&related=\" + self.getRelatedTwitterAccounts() + \"&url=\" + encodeURIComponent(self.url2share); // We only show the via @twitter:site if we have enough room\n\n if (self.viaTwitterAccount && text.length < 120 - 6 - self.viaTwitterAccount.length) url += \"&via=\" + self.viaTwitterAccount;\n var w = 640,\n h = 440;\n var left = screen.width / 2 - w / 2;\n var top = screen.height / 2 - h / 2 - 100;\n window.open(url, \"share_twitter\", \"toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=\" + w + \", height=\" + h + \", top=\" + top + \", left=\" + left);\n self.hide();\n return false;\n };\n\n this.shareFacebook = function (e) {\n e.preventDefault();\n var text = self.htmlSelection.replace(/]*>/gi, \"\\n\").replace(/<\\/p>| /gi, \"\").trim();\n var url = \"https://www.facebook.com/dialog/feed?\" + \"app_id=\" + self.appId + \"&display=popup\" + \"&caption=\" + encodeURIComponent(text) + \"&link=\" + encodeURIComponent(self.url2share) + \"&href=\" + encodeURIComponent(self.url2share) + \"&redirect_uri=\" + encodeURIComponent(self.url2share);\n var w = 640,\n h = 440;\n var left = screen.width / 2 - w / 2;\n var top = screen.height / 2 - h / 2 - 100;\n window.open(url, \"share_facebook\", \"toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=\" + w + \", height=\" + h + \", top=\" + top + \", left=\" + left);\n };\n\n this.shareEmail = function (e) {\n var text = self.textSelection.replace(/]*>/gi, \"\\n\").replace(/<\\/p>| /gi, \"\").trim();\n var email = {};\n var suffix;\n\n if ($('meta[name=\"selshare:subject-suffix\"]').length) {\n var suffixAttr = $('meta[name=\"selshare:subject-suffix\"]') ? $('meta[name=\"selshare:subject-suffix\"]').attr(\"content\") ? $('meta[name=\"selshare:subject-suffix\"]').attr(\"content\") : $('meta[name=\"selshare:subject-suffix\"]').attr(\"value\") : null;\n var suffixArr = document.title.toLowerCase().split(\"|\").map(function (x) {\n return x.trim();\n });\n\n if (!suffixArr.includes(suffixAttr.trim().toLowerCase())) {\n suffix = \" | \" + ($('meta[name=\"selshare:subject-suffix\"]').attr(\"content\") || $('meta[name=\"selshare:subject-suffix\"]').attr(\"value\"));\n } else {\n suffix = \"\";\n }\n } else {\n suffix = \"\";\n }\n\n email.subject = encodeURIComponent(\"Quote from \" + document.title + suffix);\n email.body = encodeURIComponent(\"“\" + text + \"”\") + \"%0D%0A%0D%0AFrom: \" + encodeURIComponent(document.title) + \"%0D%0A\" + encodeURIComponent(self.url2share);\n $(e.target).attr(\"href\", \"mailto:?subject=\" + email.subject + \"&body=\" + email.body);\n self.hide(e);\n return true;\n };\n\n this.render = function () {\n var popoverHTML = '

    ' + '
    ' + \" \" + \"
    \" + '
    ' + \"
    \";\n var popunderHTML = '
    ' + '
    ' + \" \" + \" \" + \"
    \" + \"
    \";\n self.$popover = $(popoverHTML);\n self.$popover.find(\"a.tweet\").on(\"click\", function (e) {\n self.shareTwitter(e);\n });\n self.$popover.find(\"a.facebook\").on(\"click\", function (e) {\n self.shareFacebook(e);\n });\n self.$popover.find(\"a.email\").on(\"click\", function (e) {\n self.shareEmail(e);\n });\n $(\"body\").append(self.$popover);\n self.$popunder = $(popunderHTML);\n self.$popunder.find(\"a.tweet\").on(\"click\", function (e) {\n self.shareTwitter(e);\n });\n self.$popunder.find(\"a.facebook\").on(\"click\", function (e) {\n self.shareFacebook(e);\n });\n self.$popunder.find(\"a.email\").on(\"click\", function (e) {\n self.shareEmail(e);\n });\n $(\"body\").append(self.$popunder);\n\n if (self.appId && self.url2share) {\n $(\".selectionSharer a.facebook\").css(\"display\", \"inline-block\");\n }\n };\n\n this.setElements = function (elements) {\n if (typeof elements == \"string\") elements = $(elements);\n self.$elements = elements instanceof $ ? elements : $(elements);\n self.$elements.on({\n mouseup: function mouseup(e) {\n self.show(e);\n },\n mousedown: function mousedown(e) {\n self.hide(e);\n },\n touchstart: function touchstart(e) {\n self.isMobile = true;\n }\n }).addClass(\"selectionShareable\");\n document.onselectionchange = self.selectionChanged;\n };\n\n this.selectionChanged = function (e) {\n if (!self.isMobile) return;\n\n if (self.lastSelectionChanged) {\n clearTimeout(self.lastSelectionChanged);\n }\n\n self.lastSelectionChanged = setTimeout(function () {\n self.showPopunder(e);\n }, 300);\n };\n\n this.getPosition = function () {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n var x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n return {\n x: x,\n y: y\n };\n };\n\n this.render();\n\n if (options.elements) {\n this.setElements(options.elements);\n }\n }; // jQuery plugin\n // Usage: $( \"p\" ).selectionSharer();\n\n\n $.fn.selectionSharer = function () {\n var sharer = new SelectionSharer();\n sharer.setElements(this);\n return this;\n }; // For AMD / requirejs\n // Usage: require([\"selection-sharer!\"]);\n // or require([\"selection-sharer\"], function(selectionSharer) { var sharer = new SelectionSharer('p'); });\n\n\n if (typeof define == \"function\") {\n define(function () {\n SelectionSharer.load = function (name, req, onLoad, config) {\n var sharer = new SelectionSharer();\n sharer.setElements(\"p\");\n onLoad();\n };\n\n return SelectionSharer;\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n module.exports = SelectionSharer;\n } else {\n // Registering SelectionSharer as a global\n // Usage: var sharer = new SelectionSharer('p');\n window.SelectionSharer = SelectionSharer;\n }\n})(_jquery.default);\n\n},{\"jquery\":\"jquery\"}],51:[function(require,module,exports){\n/*\r\n _ _ _ _\r\n ___| (_) ___| | __ (_)___\r\n/ __| | |/ __| |/ / | / __|\r\n\\__ \\ | | (__| < _ | \\__ \\\r\n|___/_|_|\\___|_|\\_(_)/ |___/\r\n |__/\r\n\r\n Version: 1.6.0\r\n Author: Ken Wheeler\r\n Website: http://kenwheeler.github.io\r\n Docs: http://kenwheeler.github.io/slick\r\n Repo: http://github.com/kenwheeler/slick\r\n Issues: http://github.com/kenwheeler/slick/issues\r\n\r\n */\n\n/* global window, document, define, jQuery, setInterval, clearInterval */\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports !== 'undefined') {\n module.exports = factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n})(function ($) {\n 'use strict';\n\n var Slick = window.Slick || {};\n\n Slick = function () {\n var instanceUid = 0;\n\n function Slick(element, settings) {\n var _ = this,\n dataSettings;\n\n _.defaults = {\n accessibility: true,\n adaptiveHeight: false,\n appendArrows: $(element),\n appendDots: $(element),\n arrows: true,\n asNavFor: null,\n prevArrow: '',\n nextArrow: '',\n autoplay: false,\n autoplaySpeed: 3000,\n centerMode: false,\n centerPadding: '50px',\n cssEase: 'ease',\n customPaging: function (slider, i) {\n return $('\r\n )}\r\n {viewAllUrl && (\r\n {dictEntryFor(\"viewAllLabel\")}\r\n )}\r\n
    \r\n
    \r\n )}\r\n*/\n\n},{\"../../search/components/LoadingSpinner.jsx\":84,\"../../search/paging\":103,\"./FeatureItem.jsx\":75,\"classNames\":\"classNames\",\"react\":\"react\"}],77:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _PeopleItemList = _interopRequireDefault(require(\"../components/PeopleItemList.jsx\"));\n\nvar _search = require(\"../../search/redux/search/search.actions\");\n\nvar _facets = require(\"../../search/redux/facets\");\n\nvar _reactSelect = _interopRequireDefault(require(\"react-select\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n results: state.results,\n resultsDisplayStrategy: state.resultsDisplayStrategy,\n totalResults: state.totalResults,\n loading: state.loading,\n isFirstLoad: state.isFirstLoad,\n query: state.query,\n pagination: state.pagination,\n displayDates: state.displayDates,\n dictionary: state.dictionary,\n viewAllUrl: state.viewAllUrl,\n numberOfColumns: state.numberOfColumns,\n hideBio: state.hideBio\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n nextPage: function nextPage() {\n dispatch((0, _search.loadNextPage)());\n },\n dismissFacet: function dismissFacet(facetId) {\n dispatch((0, _search.loadFacetChange)(facetId, false));\n },\n showMobileFacets: function showMobileFacets() {\n dispatch((0, _search.showMobileFacets)());\n }\n };\n};\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_PeopleItemList.default);\n\nexports.default = _default;\n\n},{\"../../search/redux/facets\":106,\"../../search/redux/search/search.actions\":111,\"../components/PeopleItemList.jsx\":76,\"react-redux\":\"react-redux\",\"react-select\":\"react-select\"}],78:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initSearchApp = initSearchApp;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reduxThunk = _interopRequireDefault(require(\"redux-thunk\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _rootReducer = _interopRequireDefault(require(\"../search/redux/rootReducer\"));\n\nvar _search = require(\"../search/redux/search/search.reducer\");\n\nvar _search2 = require(\"../search/redux/search/search.actions\");\n\nvar _configureStore = _interopRequireDefault(require(\"../search/redux/configureStore\"));\n\nvar _service = require(\"../search/redux/service\");\n\nvar _service2 = require(\"./redux/service\");\n\nvar _resultsDisplay = require(\"../search/redux/resultsDisplay\");\n\nvar _PeopleItemsContainer = _interopRequireDefault(require(\"./containers/PeopleItemsContainer.jsx\"));\n\nvar _FacetsContainer = _interopRequireDefault(require(\"../search/containers/FacetsContainer.jsx\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// the mount nodes are the elements we want to include\n// as part of the search app\nfunction initSearchApp(mountNodes) {\n if (!mountNodes.length) {\n return;\n } // extract the searchId from the mountNodes\n // while also checking mountNodes share same id\n\n\n var searchId = mountNodes.reduce(function (id, node) {\n var nodeId = (0, _jquery.default)(node).data(\"searchId\"); // if id is null, we want to set it\n // with the first node's value\n\n if (id === null) {\n return nodeId;\n } // if node id does not equal current\n // id value, it's invalid and return undefined\n\n\n if (id !== nodeId) {\n return;\n }\n\n return id;\n }, null); // if we have an invalid or non-matching id, raise an error\n\n if (!searchId) {\n throw new Error(\"Could not initialize Pew search app. searchId was either not present, or provided mount nodes did not share the same searchId\");\n } // define the canonical inital state of our redux store here\n // including some value taken from the data-attrs of the\n // mount node.\n\n\n var config = window.PewSearchConfigs.find(function (c) {\n return c.searchId === searchId;\n });\n\n if (!config) {\n throw new Error(\"Could not initialize Pew search app instance with id of \\\"\".concat(searchId, \"\\\". Configuration data not found.\"));\n }\n\n var facetDisplayOverride = {\n \"contentType\": config.displayContentTypeFilter,\n \"places\": config.displayPlacesFilter,\n \"project\": config.displayProjectsFilter,\n \"tag\": config.displayTagsFilter,\n \"topic\": config.displayTopicsFilter\n }; // create a starting state object,\n // which includes and intitial state\n // from individual reducers\n\n var initialState = _ramda.default.merge(_search.initialState, {\n url: config.url,\n pagination: config.pagination,\n resultsDisplayStrategy: config.pagination ? _resultsDisplay.RESULTS_DISPLAY_REFRESH : _resultsDisplay.RESULTS_DISPLAY_APPEND,\n viewAllUrl: config.viewAllUrl,\n dictionary: config.dictionary,\n facetDisplayOverride: facetDisplayOverride,\n displayDates: config.displayDates,\n query: _ramda.default.merge(_search.initialState.query, {\n pageId: config.pageId,\n page: config.page,\n perPage: config.perPage,\n componentGuid: config.componentId\n }),\n numberOfColumns: config.numberOfColumns,\n hideBio: config.hideBio\n }); // determine if we want to load all page results in our cold load\n\n\n var doLoadAllPages = initialState.resultsDisplayStrategy === _resultsDisplay.RESULTS_DISPLAY_APPEND && initialState.isFirstLoad;\n initialState = _ramda.default.merge(initialState, {\n query: _ramda.default.merge(initialState.query, {\n loadAllPages: doLoadAllPages\n })\n });\n\n var thunkMiddleware = _reduxThunk.default.withExtraArgument({\n mapResponseToState: _service.mapResponseToState,\n fetchSearchResults: _service2.fetchSearchResults\n });\n\n var store = (0, _configureStore.default)(_rootReducer.default, initialState, [thunkMiddleware]);\n store.dispatch((0, _search2.loadResults)());\n mountNodes.forEach(function (node) {\n if (node.className.indexOf(\"js-people-items\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_PeopleItemsContainer.default, null)), node);\n }\n\n if (node.className.indexOf(\"js-people-items-search-facets\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_FacetsContainer.default, null)), node);\n }\n });\n}\n\n},{\"../search/containers/FacetsContainer.jsx\":95,\"../search/redux/configureStore\":104,\"../search/redux/resultsDisplay\":108,\"../search/redux/rootReducer\":109,\"../search/redux/search/search.actions\":111,\"../search/redux/search/search.reducer\":112,\"../search/redux/service\":113,\"./containers/PeopleItemsContainer.jsx\":77,\"./redux/service\":79,\"jquery\":\"jquery\",\"ramda\":\"ramda\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\",\"redux-thunk\":\"redux-thunk\"}],79:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fetchSearchResults = fetchSearchResults;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nvar _util = require(\"../../search/util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction fetchSearchResults(url, query) {\n // dynamic content needs to remap some stuff on the request\n // that's normally part of vanilla search.\n // lose params we don't need. PageGuid and ComponentGuid are added automatically to the URL\n var removeInvalidParams = _ramda.default.omit([\"q\", \"sortBy\", \"sortOrder\", \"loadAllPages\", \"numberOfItems\", \"startOffset\", \"pageGuid\", \"pageId\", \"componentGuid\"]); // any facet/filter group params get changed to filter..\n // Keep track of which params are not filters/\n\n\n var nonFilters = [\"pageId\", \"componentGuid\", \"page\", \"perPage\"];\n\n var stringifyArrayParams = _ramda.default.map(function (v) {\n return v instanceof Array ? v.join(\";\") : v;\n });\n\n var keyName = function keyName(key) {\n return _ramda.default.contains(key, nonFilters) ? key : \"filters.\".concat(key);\n };\n\n var filterizeKeys = _ramda.default.partial(_util.renameKeysWith, [keyName]);\n\n var fixQuery = _ramda.default.pipe(removeInvalidParams, stringifyArrayParams, filterizeKeys);\n\n var searchPromise = _jquery.default.ajax({\n url: url,\n data: fixQuery(query)\n });\n\n var featuredPromise = _jquery.default.Deferred().resolve([]);\n\n return [searchPromise, featuredPromise];\n}\n\n},{\"../../search/util\":114,\"jquery\":\"jquery\",\"ramda\":\"ramda\"}],80:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initSearchApp = initSearchApp;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reduxThunk = _interopRequireDefault(require(\"redux-thunk\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _rootReducer = _interopRequireDefault(require(\"../search/redux/rootReducer\"));\n\nvar _search = require(\"../search/redux/search/search.reducer\");\n\nvar _search2 = require(\"../search/redux/search/search.actions\");\n\nvar _configureStore = _interopRequireDefault(require(\"../search/redux/configureStore\"));\n\nvar _createRoutingMiddleware = _interopRequireDefault(require(\"../search/redux/createRoutingMiddleware\"));\n\nvar _service = require(\"../search/redux/service\");\n\nvar _routing = require(\"../search/redux/routing\");\n\nvar _resultsDisplay = require(\"../search/redux/resultsDisplay\");\n\nvar _FacetsContainer = _interopRequireDefault(require(\"../search/containers/FacetsContainer.jsx\"));\n\nvar _ProjectsContainer = _interopRequireDefault(require(\"../search/containers/ProjectsContainer.jsx\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// the mount nodes are the elements we want to include\n// as part of the search app\nfunction initSearchApp(mountNodes) {\n if (!mountNodes.length) {\n return;\n } // extract the searchId from the mountNodes\n // while also checking mountNodes share same id\n\n\n var searchId = mountNodes.reduce(function (id, node) {\n var nodeId = (0, _jquery.default)(node).data(\"searchId\"); // if id is null, we want to set it\n // with the first node's value\n\n if (id === null) {\n return nodeId;\n } // if node id does not equal current\n // id value, it's invalid and return undefined\n\n\n if (id !== nodeId) {\n return;\n }\n\n return id;\n }, null); // if we have an invalid or non-matching id, raise an error\n\n if (!searchId) {\n throw new Error(\"Could not initialize Pew search app. searchId was either not present, or provided mount nodes did not share the same searchId\");\n } // define the canonical inital state of our redux store here\n // including some value taken from the data-attrs of the\n // mount node.\n\n\n var config = window.PewSearchConfigs.find(function (c) {\n return c.searchId === searchId;\n });\n\n if (!config) {\n throw new Error(\"Could not initialize Pew search app instance with id of \\\"\".concat(searchId, \"\\\". Configuration data not found.\"));\n } // create a starting state object,\n // which includes and intitial state\n // from individual reducers\n\n\n var initialState = _ramda.default.merge(_search.initialState, {\n url: config.url,\n pagination: config.pagination,\n resultsDisplayStrategy: config.pagination ? _resultsDisplay.RESULTS_DISPLAY_REFRESH : _resultsDisplay.RESULTS_DISPLAY_APPEND,\n sorters: config.sorters,\n dictionary: config.dictionary,\n initialResults: config.initialQueryResults || null,\n numOpenGroups: config.numOpenGroups,\n query: _ramda.default.merge(_search.initialState.query, {\n pageId: config.pageId,\n page: config.page,\n status: 'active'\n })\n }); // determine if we want to load all page results in our cold load\n\n\n var doLoadAllPages = initialState.resultsDisplayStrategy === _resultsDisplay.RESULTS_DISPLAY_APPEND && initialState.isFirstLoad;\n initialState = _ramda.default.merge(initialState, {\n query: _ramda.default.merge(initialState.query, {\n loadAllPages: doLoadAllPages\n })\n });\n\n var thunkMiddleware = _reduxThunk.default.withExtraArgument({\n mapResponseToState: _service.mapResponseToState,\n fetchSearchResults: _service.fetchSearchResults\n });\n\n var routingMiddleware = (0, _createRoutingMiddleware.default)(_routing.mapStateToUrl, _routing.handleUrlChange);\n var store = (0, _configureStore.default)(_rootReducer.default, initialState, [thunkMiddleware, routingMiddleware]);\n\n if (initialState.initialResults) {\n store.dispatch((0, _search2.loadSuccess)(initialState.initialResults, initialState.resultsDisplayStrategy, _service.mapResponseToState));\n } else {\n store.dispatch((0, _search2.loadResults)());\n }\n\n mountNodes.forEach(function (node) {\n if (node.className.indexOf(\"js-search-facets\") > -1 || node.className.indexOf(\"js-projects-search-facets\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_FacetsContainer.default, null)), node);\n }\n\n if (node.className.indexOf(\"js-projects-container\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_ProjectsContainer.default, null)), node);\n }\n });\n}\n\n},{\"../search/containers/FacetsContainer.jsx\":95,\"../search/containers/ProjectsContainer.jsx\":96,\"../search/redux/configureStore\":104,\"../search/redux/createRoutingMiddleware\":105,\"../search/redux/resultsDisplay\":108,\"../search/redux/rootReducer\":109,\"../search/redux/routing\":110,\"../search/redux/search/search.actions\":111,\"../search/redux/search/search.reducer\":112,\"../search/redux/service\":113,\"jquery\":\"jquery\",\"ramda\":\"ramda\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\",\"redux-thunk\":\"redux-thunk\"}],81:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ContentFilterBar = function ContentFilterBar(_ref) {\n var contentFilters = _ref.contentFilters,\n selectedFilter = _ref.selectedFilter,\n onSelection = _ref.onSelection,\n dictionary = _ref.dictionary;\n\n var handleTypeChange = function handleTypeChange(event) {\n var newFilter = event.target.value;\n\n if (newFilter && newFilter !== selectedFilter) {\n return onSelection(newFilter);\n }\n };\n\n var totalResults = contentFilters && contentFilters.values ? contentFilters.values.reduce(function (total, filter) {\n return total + filter.count;\n }, 0) : 0;\n\n var isAllActive = contentFilters && _ramda.default.none(_ramda.default.propEq(\"selected\", true), _ramda.default.prop(\"values\", contentFilters));\n\n var resultLabels = {\n \"all\": dictionary.allResultsLabel || \"All Results\",\n \"content\": dictionary.contentResultsLabel || \"Content\",\n \"project\": dictionary.projectResultsLabel || \"Project\",\n \"people\": dictionary.peopleResultsLabel || \"People\"\n };\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__content-types\"\n }, /*#__PURE__*/_react.default.createElement(\"ul\", null, /*#__PURE__*/_react.default.createElement(\"li\", {\n className: (0, _classnames.default)({\n \"is-active\": isAllActive\n })\n }, /*#__PURE__*/_react.default.createElement(\"input\", {\n className: \"u-visuallyhidden\",\n type: \"radio\",\n id: \"search-content-types__all\",\n name: \"search-content-types\",\n value: \"all\",\n checked: selectedFilter === \"all\",\n onChange: handleTypeChange\n }), /*#__PURE__*/_react.default.createElement(\"label\", {\n htmlFor: \"search-content-types__all\"\n }, resultLabels.all, \" (\", totalResults, \")\")), contentFilters && contentFilters.values.map(function (ct) {\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n className: (0, _classnames.default)(\"search-results__content-type-item\", {\n \"is-active\": ct.selected\n }),\n key: ct.id\n }, /*#__PURE__*/_react.default.createElement(\"input\", {\n className: \"u-visuallyhidden\",\n type: \"radio\",\n id: \"search-content-types__\".concat(ct.name),\n name: \"search-content-types\",\n value: ct.name,\n checked: ct.name === selectedFilter,\n onChange: handleTypeChange\n }), /*#__PURE__*/_react.default.createElement(\"label\", {\n htmlFor: \"search-content-types__\".concat(ct.name)\n }, resultLabels[ct.name], \" (\", ct.count, \")\"));\n })));\n};\n\nvar _React$PropTypes = _react.default.PropTypes,\n shape = _React$PropTypes.shape,\n string = _React$PropTypes.string,\n number = _React$PropTypes.number,\n oneOfType = _React$PropTypes.oneOfType,\n func = _React$PropTypes.func,\n object = _React$PropTypes.object;\nvar filterShape = shape({\n id: oneOfType[(number, string)]\n});\nContentFilterBar.propTypes = {\n contentFilters: filterShape,\n selectedFilter: string,\n onSelection: func,\n dictionary: object\n};\nvar _default = ContentFilterBar;\nexports.default = _default;\n\n},{\"classnames\":\"classnames\",\"ramda\":\"ramda\",\"react\":\"react\"}],82:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _facets = require(\"../redux/facets\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar MOBILE_BREAKPOINT = 600;\nvar dateId = \"date\"; //id of the date facet where we want to alter the display\n\nfunction arrowIcon() {\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"icon icon--chevron-down\"\n }, /*#__PURE__*/_react.default.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 13.6 6.1\",\n role: \"img\",\n \"aria-hidden\": \"true\",\n focusable: \"false\"\n }, /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M12.4 0 6.8 4 1.2 0 0 1.2l6.8 4.9 6.8-4.9z\"\n }), /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"m1.2 0 5.6 4 5.6-4 1.2 1.2-6.8 4.9L0 1.2z\"\n })));\n}\n\nfunction xIcon() {\n return /*#__PURE__*/_react.default.createElement(\"svg\", {\n viewBox: \"0 0 1195 1195\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M643.333 640l195-191q9-10 9.5-23t-8.5-23q-10-9-23-9t-23 9l-196 192-196-192q-10-9-23-9t-23 10q-9 9-9 22.5t10 22.5l195 191-195 191q-9 10-9.5 23t8.5 23q10 9 23 9t23-9l196-192 196 192q10 9 23 9t23-10q9-9 9-22.5t-10-22.5zm-46-448q91 0 174 35 81 34 143 96t96 143q35 83 35 174t-35 174q-34 81-96 143t-143 96q-83 35-174 35t-174-35q-81-34-143-96t-96-143q-35-83-35-174t35-174q34-81 96-143t143-96q83-35 174-35zm0-64q-139 0-257 68.5T153.833 383t-68.5 257 68.5 257 186.5 186.5 257 68.5 257-68.5 186.5-186.5 68.5-257-68.5-257-186.5-186.5-257-68.5z\"\n }));\n}\n\nfunction searchIcon() {\n return /*#__PURE__*/_react.default.createElement(\"svg\", {\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/_react.default.createElement(\"use\", {\n xlinkHref: \"#a\",\n transform: \"translate(1.11 1.11)\",\n fill: \"#296EC3\"\n }), /*#__PURE__*/_react.default.createElement(\"use\", {\n xlinkHref: \"#b\",\n transform: \"translate(13.33 13.333)\",\n fill: \"#296EC3\"\n }), /*#__PURE__*/_react.default.createElement(\"defs\", null, /*#__PURE__*/_react.default.createElement(\"path\", {\n id: \"a\",\n d: \"M7.22 15.44c4.54 0 8.22-3.68 8.22-8.22h-2c0 3.44-2.78 6.22-6.22 6.22v2zm8.22-8.22C15.44 2.68 11.76-1 7.22-1v2c3.44 0 6.22 2.8 6.22 6.22h2zM7.22-1C2.68-1-1 2.68-1 7.22h2C1 3.8 3.8 1 7.22 1v-2zM-1 7.22c0 4.54 3.68 8.22 8.22 8.22v-2C3.8 13.44 1 10.66 1 7.22h-2z\"\n }), /*#__PURE__*/_react.default.createElement(\"path\", {\n id: \"b\",\n d: \"M1.26-.15c-.4-.4-1.02-.4-1.4 0-.4.4-.4 1.02 0 1.4l1.4-1.4zM4.3 5.7c.38.4 1.02.4 1.4 0 .4-.38.4-1.02 0-1.4L4.3 5.7zM-.16 1.27L4.3 5.7l1.4-1.4L1.27-.16l-1.4 1.4z\"\n })));\n}\n\nfunction filterIcon() {\n return /*#__PURE__*/_react.default.createElement(\"svg\", {\n viewBox: \"0 0 10 7\"\n }, /*#__PURE__*/_react.default.createElement(\"g\", {\n id: \"Symbols\"\n }, /*#__PURE__*/_react.default.createElement(\"g\", {\n id: \"nav-/-search,-filter-active\",\n transform: \"translate(-97.000000, -17.000000)\",\n stroke: \"#333333\"\n }, /*#__PURE__*/_react.default.createElement(\"g\", {\n id: \"ii-/-Filter_Icon_Grey\",\n transform: \"translate(93.000000, 11.000000)\"\n }, /*#__PURE__*/_react.default.createElement(\"g\", {\n id: \"Group-2\",\n transform: \"translate(4.000000, 5.000000)\"\n }, /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M2.5,7.5 L7.5,7.5\",\n id: \"Line\"\n }), /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M1.5,4.5 L8.5625,4.5\",\n id: \"Line\"\n }), /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M0.5,1.5 L9.5,1.5\",\n id: \"Line-Copy\"\n }))))));\n}\n\nvar FacetBar = /*#__PURE__*/function (_React$Component) {\n _inherits(FacetBar, _React$Component);\n\n var _super = _createSuper(FacetBar);\n\n function FacetBar(props) {\n var _this;\n\n _classCallCheck(this, FacetBar);\n\n _this = _super.call(this, props);\n _this.searchableGroups = [\"people\", \"tag\", \"expert\"];\n _this.groupWrapperRefs = {};\n _this.dictionaryBindings = {\n continents: \"continents\",\n oceans: \"oceans\",\n \"countries and territories\": \"countriesAndTerritories\",\n \"united states and territories\": \"unitedStatesAndTerritories\"\n };\n _this.state = {\n showGroups: true,\n activeGroup: [],\n activeSubGroups: [],\n activeQuery: \"\",\n facets: props.facets\n };\n _this.handleClickOutside = _this.handleClickOutside.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(FacetBar, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n document.addEventListener(\"mousedown\", this.handleClickOutside);\n document.body.clientWidth <= 600 && this.setState(_ramda.default.merge(this.state, {\n showGroups: false\n }));\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n this.setState(_ramda.default.merge(this.state, {\n facets: nextProps.facets,\n activeQuery: \"\"\n }));\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this2 = this;\n\n _ramda.default.forEach(function (e) {\n return _this2.repositionPopOut(e);\n }, _ramda.default.values(this.groupWrapperRefs));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener(\"mousedown\", this.handleClickOutside);\n }\n }, {\n key: \"aggregateSelectedCount\",\n value: function aggregateSelectedCount(group) {\n return (0, _facets.selectedFacetsFromGroup)(group).length;\n }\n }, {\n key: \"allSelectedCount\",\n value: function allSelectedCount() {\n var _this3 = this;\n\n return _ramda.default.reduce(function (sum, group) {\n return sum + _this3.aggregateSelectedCount(group);\n }, 0, this.props.facets);\n }\n }, {\n key: \"groupIsActive\",\n value: function groupIsActive(groupId, groups) {\n return _ramda.default.contains(groupId, groups);\n }\n }, {\n key: \"isMultiGroup\",\n value: function isMultiGroup(group) {\n return group.childGroups.length > 0;\n }\n }, {\n key: \"dictEntryFor\",\n value: function dictEntryFor(key) {\n // if name is a dictionary key, grab it\n var entry = this.props.dictionary[key];\n\n if (!entry) {\n // if not a dictionary key, check if it's bound to a dictionary key\n var lowerKey = key.toLowerCase();\n entry = this.props.dictionary[this.dictionaryBindings[lowerKey]];\n } // if no entry found, simply return the name\n\n\n return entry || key;\n }\n }, {\n key: \"handleClickOutside\",\n value: function handleClickOutside(event) {\n // if clicking outside of a group or subgroup menu,\n // we want to close that menu\n var target = event.target; // refs won't exist before we've opened a menu\n\n if (!_ramda.default.keys(this.groupWrapperRefs).length) {\n return;\n } // double check our target isn't a toggle button\n\n\n if (_ramda.default.contains(\"js-group-toggle\", Array.from(target.classList)) || target.closest(\".js-group-toggle\")) {\n return;\n } // Look through the wrapper refs to determine which\n // wrappers our target may be a descendant of\n\n\n var wrappers = _ramda.default.reduce(function (instances, wrapperPair) {\n var groupId = wrapperPair[0];\n var wrapper = wrapperPair[1];\n\n if (wrapper && wrapper.contains(target)) {\n instances.push(target);\n }\n\n return instances;\n }, [], _ramda.default.toPairs(this.groupWrapperRefs));\n\n var newGroups = {}; // if no wrappers matched, we've clicked outside\n // and can close groups\n\n if (wrappers.length === 0) {\n newGroups = {\n activeGroup: []\n };\n } // if we only matched a single wrapper,\n // just close all subgroups\n\n\n if (wrappers.length === 1) {\n newGroups = {\n activeSubGroups: []\n };\n } // check to see if state actually needs to change. Otherwise, it will trigger\n // a re-render we don't need\n\n\n var groupChange = newGroups.activeGroup && newGroups.activeGroup.length !== this.state.activeGroup.length;\n var subGroupChange = newGroups.activeSubGroups && newGroups.activeSubGroups.length !== this.state.activeSubGroups.length;\n\n if (groupChange || subGroupChange) {\n this.setState(_ramda.default.merge(this.state, newGroups));\n }\n }\n }, {\n key: \"handleGroupClick\",\n value: function handleGroupClick(groupId) {\n var toggleActiveGroup = _ramda.default.ifElse(_ramda.default.contains(groupId), _ramda.default.reject(_ramda.default.equals(groupId)), function () {\n return [groupId];\n });\n\n this.setState(_ramda.default.merge(this.state, {\n activeGroup: toggleActiveGroup(this.state.activeGroup),\n activeQuery: \"\",\n facets: this.props.facets\n }));\n }\n }, {\n key: \"handleSubGroupClick\",\n value: function handleSubGroupClick(groupId) {\n var toggleActiveSubGroups = _ramda.default.ifElse(_ramda.default.contains(groupId), _ramda.default.reject(_ramda.default.equals(groupId)), function () {\n return [groupId];\n });\n\n this.setState(_ramda.default.merge(this.state, {\n activeSubGroups: toggleActiveSubGroups(this.state.activeSubGroups)\n }));\n }\n }, {\n key: \"handleInlineFilterChange\",\n value: function handleInlineFilterChange(group, query) {\n // we want to update the facets in state, but make sure to always\n // read facets from props, so state changes don't mess with the\n // original list of facets\n var newFacets = (0, _facets.filterVisibleFacetsInGroup)(group.id, query, this.props.facets);\n this.setState(_ramda.default.merge(this.state, {\n facets: newFacets,\n activeQuery: query\n }));\n }\n }, {\n key: \"handleFacetClick\",\n value: function handleFacetClick(value, groupId) {\n // dates should behave like radio buttons\n if (groupId === \"date\" || groupId === \"status\") {\n this.props.handleFacetChangeSingular(groupId, value.id, !value.selected);\n } else {\n this.props.handleFacetChange(groupId, value.id, !value.selected);\n } // if we are selecting a facet (not de-selecting),\n // scroll up to the top of the menu where the new\n // selected facet is shown\n\n\n if (!value.selected) {\n _ramda.default.map(function (ref) {\n if (ref) {\n var scrolled = ref.querySelector(\".search-facets-bar__facet-list\");\n\n if (scrolled) {\n scrolled.scrollTop = 0;\n }\n }\n }, this.groupWrapperRefs);\n }\n }\n }, {\n key: \"repositionPopOut\",\n value: function repositionPopOut(elem) {\n if (!elem) {\n return;\n }\n\n if (elem.closest(\".search-facets-bar__subgroup\")) {\n return;\n } // if a popout draws beyond the edge of the window, move it until it fits\n\n\n var rect = elem.getBoundingClientRect();\n\n if (rect.left < 0) {\n elem.style.right = \"\".concat(rect.left, \"px\");\n }\n } // compute the label to highlight queried letter fragments\n // if an active value query is present\n\n }, {\n key: \"computedName\",\n value: function computedName(name) {\n if (!this.state.activeQuery || !this.state.activeQuery.trim()) {\n return name;\n }\n\n var newName = name.replace(new RegExp(this.state.activeQuery, \"gi\"), function (match) {\n return \"\".concat(match, \"\");\n });\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: newName\n }\n });\n }\n }, {\n key: \"toggleGroups\",\n value: function toggleGroups() {\n this.setState(_ramda.default.merge(this.state, {\n showGroups: !this.state.showGroups\n }));\n }\n }, {\n key: \"hideValue\",\n value: function hideValue(value) {\n if (value.count <= 0) {\n return true;\n } else {\n return value.hide && _ramda.default.all(_ramda.default.propEq(\"hide\", true), value.childValues);\n }\n }\n }, {\n key: \"disableValue\",\n value: function disableValue(value) {\n return value.hide && _ramda.default.any(_ramda.default.not(_ramda.default.has(\"hide\"), value.childValues));\n }\n }, {\n key: \"getInlinePlaceholder\",\n value: function getInlinePlaceholder(group) {\n var value = \"\";\n\n if (group.label == \"Experts\") {\n value = this.dictEntryFor(\"searchExpertsPlaceholder\");\n } else {\n value = \"Search \" + group.label + \"...\";\n }\n\n return value;\n }\n }, {\n key: \"renderInlineSearch\",\n value: function renderInlineSearch(group) {\n var _this4 = this;\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-facets-bar__inline-filter\"\n }, /*#__PURE__*/_react.default.createElement(\"input\", {\n type: \"text\",\n onChange: function onChange(e) {\n return _this4.handleInlineFilterChange(group, e.target.value);\n },\n placeholder: this.getInlinePlaceholder(group),\n value: this.state.activeQuery || \"\"\n }), /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"icon\"\n }, \" \", searchIcon(), \" \"));\n }\n }, {\n key: \"renderFacetValues\",\n value: function renderFacetValues(values, groupId) {\n var _this5 = this;\n\n var searchable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // create a version of the facet values that includes an array index field\n var valuesWithIndex = values.map(function (v, i) {\n return _ramda.default.merge(v, {\n idx: i\n });\n }); // re-sort list so selected values are at the top, but make sure\n // to maintain original order otherwise\n\n var valueSorter = _ramda.default.sort(function (a, b) {\n if (groupId != dateId) {\n if (a.selected === b.selected) {\n return a.idx - b.idx;\n }\n\n if (a.selected) {\n return -1;\n }\n\n if (b.selected) {\n return 1;\n }\n }\n\n return a.idx - b.idx;\n });\n\n return /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: \"search-facets-bar__facet-list\"\n }, valueSorter(valuesWithIndex).map(function (v) {\n var hide = _this5.hideValue(v);\n\n var disabled = _this5.disableValue(v);\n\n var valueClass = disabled ? \"is-disabled\" : \"\";\n return !hide && /*#__PURE__*/_react.default.createElement(\"li\", {\n key: v.id,\n className: valueClass\n }, /*#__PURE__*/_react.default.createElement(\"input\", {\n className: \"u-visuallyhidden\",\n type: groupId == dateId ? \"radio\" : \"checkbox\",\n onChange: function onChange(e) {\n return _this5.handleFacetClick(v, groupId);\n },\n id: v.id,\n checked: v.selected === \"on\" || v.selected\n }), /*#__PURE__*/_react.default.createElement(\"label\", {\n htmlFor: v.id\n }, _this5.computedName(v.name), \"\\xA0\", v.name != \"Institutional News\" ? \"(\".concat(v.count, \")\") : \"\"), v.childValues && !!v.childValues.length && _this5.renderFacetValues(v.childValues, groupId));\n }));\n }\n }, {\n key: \"handleStatusFacetClick\",\n value: function handleStatusFacetClick(value, group) {\n this.props.handleProjectStatusChange(group, value.id, !value.selected);\n }\n }, {\n key: \"renderGroup\",\n value: function renderGroup(group) {\n var _this6 = this;\n\n var selectedCount = this.aggregateSelectedCount(group);\n var selectedLabel = selectedCount ? \"(\".concat(selectedCount, \")\") : null;\n var selectedCountClass = selectedCount ? \"\" : \"is-zero\";\n var inactiveLabel = this.dictEntryFor(\"projectListingInactiveLabel\");\n\n if (group.id === \"status\") {\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n key: group.id\n }, group.values.map(function (value, i) {\n {}\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n key: value.id,\n className: (0, _classnames.default)(\"search-facets__status-facet\", {\n \"is-checked\": value.selected\n }),\n onClick: function onClick() {\n return !value.selected && _this6.handleStatusFacetClick(value, group.id);\n }\n }, value.name);\n }));\n } else {\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n key: group.id,\n className: (0, _classnames.default)(\"search-facets-bar__group\", {\n \"is-open\": this.groupIsActive(group.id, this.state.activeGroup)\n })\n }, /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n className: \"js-group-toggle\",\n onClick: function onClick() {\n return _this6.handleGroupClick(group.id);\n }\n }, group.label, selectedLabel && /*#__PURE__*/_react.default.createElement(\"span\", {\n className: selectedCountClass\n }, selectedLabel), arrowIcon()), this.groupIsActive(group.id, this.state.activeGroup) && (this.isMultiGroup(group) ? this.renderMultiGroup(group) : this.renderSingleGroup(group)));\n }\n }\n }, {\n key: \"checkIfDatesEmpty\",\n value: function checkIfDatesEmpty(group) {\n var dateEq = _ramda.default.propEq(\"count\", 0);\n\n var newDateArr;\n\n if (group.id == dateId) {\n newDateArr = _ramda.default.filter(dateEq, group.values);\n\n if (newDateArr.length === group.values.length) {\n return true;\n } else {\n return false;\n }\n }\n }\n }, {\n key: \"renderSingleGroup\",\n value: function renderSingleGroup(group) {\n var _this7 = this;\n\n var parentGroupId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var groupKey = parentGroupId != null ? parentGroupId : group.id;\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-facets-bar__group-wrap\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-facets-bar__group-inner\",\n ref: function ref(e) {\n return _this7.groupWrapperRefs[group.id] = e;\n }\n }, (group.values.length === 0 || this.checkIfDatesEmpty(group) === true) && /*#__PURE__*/_react.default.createElement(\"p\", null, \"No \".concat(group.label.toLowerCase(), \" in current results\")), group.values.length > 0 && group.id != dateId && /*#__PURE__*/_react.default.createElement(\"p\", {\n className: \"search-facets-bar__group-select\"\n }, /*#__PURE__*/_react.default.createElement(\"button\", {\n onClick: function onClick() {\n return _this7.props.handleSelectGroup(group);\n }\n }, this.dictEntryFor(\"selectAll\")), /*#__PURE__*/_react.default.createElement(\"span\", null, \"|\"), /*#__PURE__*/_react.default.createElement(\"button\", {\n onClick: function onClick() {\n return _this7.props.handleClearGroup(group);\n }\n }, this.dictEntryFor(\"deselectAll\"))), _ramda.default.contains(group.id, this.searchableGroups) && this.renderInlineSearch(group), group.values.length > 0 && this.renderFacetValues(group.values, groupKey)));\n }\n }, {\n key: \"renderMultiGroup\",\n value: function renderMultiGroup(group) {\n var _this8 = this;\n\n // divide the groups into chunks of 2 for easier layout\n var subGroupChunks = _ramda.default.splitEvery(2, group.childGroups);\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-facets-bar__group-wrap is-multi\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-facets-bar__group-inner\",\n ref: function ref(e) {\n return _this8.groupWrapperRefs[\"_\".concat(group.id)] = e;\n }\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-facets-bar__multi-top\"\n }, /*#__PURE__*/_react.default.createElement(\"h4\", {\n className: \"small-caps-header\"\n }, this.dictEntryFor(\"filterPlaces\")), /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return _this8.props.handleClearGroup(group);\n }\n }, this.dictEntryFor(\"clearAll\"), \" \", xIcon())), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-facets-bar__multi-body\"\n }, subGroupChunks.map(function (chunk, i) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n key: i,\n className: \"search-facets-bar__multi-row\"\n }, chunk.map(function (subGroup) {\n var selectedCount = _this8.aggregateSelectedCount(subGroup);\n\n var selectedLabel = selectedCount ? \"Selected (\".concat(selectedCount, \")\") : \"Select\";\n var subGroupClass = (0, _classnames.default)(\"search-facets-bar__subgroup\", {\n \"is-open\": _this8.groupIsActive(subGroup.id, _this8.state.activeSubGroups)\n });\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n key: subGroup.id,\n className: subGroupClass\n }, /*#__PURE__*/_react.default.createElement(\"h5\", null, _this8.dictEntryFor(subGroup.label)), /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"js-group-toggle\",\n type: \"button\",\n onClick: function onClick() {\n return _this8.handleSubGroupClick(subGroup.id);\n }\n }, selectedLabel, \" \", arrowIcon()), _this8.groupIsActive(subGroup.id, _this8.state.activeSubGroups) && _this8.renderSingleGroup(subGroup, group.id));\n }));\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this9 = this;\n\n var shouldRenderGroup = function shouldRenderGroup(groupId) {\n if (!_this9.props.facetDisplayOverride) {\n return true;\n } else {\n return _this9.props.facetDisplayOverride[groupId];\n }\n };\n\n return /*#__PURE__*/_react.default.createElement(\"section\", {\n className: \"search-facets-bar\"\n }, /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n onClick: function onClick() {\n return _this9.toggleGroups();\n },\n className: \"search-facets-bar__toggle-all-button\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", null, this.dictEntryFor(\"filterBy\"), /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"icon\"\n }, filterIcon())), /*#__PURE__*/_react.default.createElement(\"span\", null, this.allSelectedCount(), \" selected\")), this.state.showGroups && /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: \"search-facets-bar__group-list\"\n }, this.state.facets.map(function (g) {\n return shouldRenderGroup(g.id) && _this9.renderGroup(g);\n })));\n }\n }]);\n\n return FacetBar;\n}(_react.default.Component);\n\nexports.default = FacetBar;\nvar _React$PropTypes = _react.default.PropTypes,\n string = _React$PropTypes.string,\n arrayOf = _React$PropTypes.arrayOf,\n bool = _React$PropTypes.bool,\n shape = _React$PropTypes.shape,\n number = _React$PropTypes.number,\n oneOfType = _React$PropTypes.oneOfType,\n func = _React$PropTypes.func,\n object = _React$PropTypes.object;\nFacetBar.propTypes = {\n title: string,\n mobileFiltersShown: bool,\n hideMobileFacets: func,\n facets: arrayOf(shape({\n id: oneOfType([number, string])\n })),\n numOpenGroups: number,\n handleFacetChange: func.isRequired,\n handleFacetChangeSingular: func.isRequired,\n handleProjectStatusChange: func.isRequired,\n handleClearGroup: func.isRequired,\n handleSelectGroup: func.isRequired,\n handleClearAll: func.isRequired,\n dictionary: object.isRequired,\n facetDisplayOverride: object\n};\nFacetBar.defaultProps = {\n facets: [],\n numOpenGroups: null\n};\n\n},{\"../redux/facets\":106,\"classnames\":\"classnames\",\"ramda\":\"ramda\",\"react\":\"react\"}],83:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _LoadingSpinner = _interopRequireDefault(require(\"./LoadingSpinner.jsx\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar LoadMore = /*#__PURE__*/function (_React$Component) {\n _inherits(LoadMore, _React$Component);\n\n var _super = _createSuper(LoadMore);\n\n function LoadMore(props) {\n var _this;\n\n _classCallCheck(this, LoadMore);\n\n _this = _super.call(this, props);\n _this.state = {\n initiatedLoad: false\n };\n return _this;\n }\n\n _createClass(LoadMore, [{\n key: \"onClick\",\n value: function onClick(event) {\n event.preventDefault();\n this.props.handleClick();\n this.setState({\n initiatedLoad: true\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var dictionary = this.props.dictionary; // const shouldShowSpinner = this.props.loading && this.state.initiatedLoad;\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__load-more\"\n }, /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"btn btn--primary\",\n type: \"button\",\n onClick: function onClick(e) {\n return _this2.onClick(e);\n }\n }, dictionary.loadMoreLabel));\n }\n }]);\n\n return LoadMore;\n}(_react.default.Component);\n\nexports.default = LoadMore;\nvar _React$PropTypes = _react.default.PropTypes,\n func = _React$PropTypes.func,\n shape = _React$PropTypes.shape,\n string = _React$PropTypes.string,\n bool = _React$PropTypes.bool;\nLoadMore.propTypes = {\n handleClick: func.isRequired,\n loading: bool,\n dictionary: shape({\n loadMoreLabel: string\n })\n};\n\n},{\"./LoadingSpinner.jsx\":84,\"react\":\"react\"}],84:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = function _default() {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__spinner\"\n }, /*#__PURE__*/_react.default.createElement(\"img\", {\n src: \"/assets/img/transparent-loader.svg\"\n }));\n};\n\nexports.default = _default;\n\n},{\"react\":\"react\"}],85:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _paging = require(\"../paging\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Pagination = function Pagination(_ref) {\n var totalResults = _ref.totalResults,\n resultsPerPage = _ref.resultsPerPage,\n currentPage = _ref.currentPage,\n handlePageChange = _ref.handlePageChange;\n var block = (0, _paging.pageBlock)(totalResults, resultsPerPage, currentPage);\n var isLast = (0, _paging.isLastPage)(totalResults, resultsPerPage, currentPage);\n var isFirst = (0, _paging.isFirstPage)(currentPage);\n var lastPage = (0, _paging.totalPages)(totalResults, resultsPerPage);\n\n function arrowIcon() {\n return /*#__PURE__*/_react.default.createElement(\"svg\", {\n viewBox: \"0 0 11 19\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/_react.default.createElement(\"g\", null, /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M9.5 18.5L1 9.7\"\n }), /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M9.5.9L1 9.7\"\n })));\n }\n\n function getPage(label, value, isDisabled) {\n var addClass = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"\";\n return /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"btn btn--link \".concat(addClass),\n key: label + addClass,\n type: \"button\",\n onClick: function onClick() {\n return onPageClick(value, isDisabled);\n },\n disabled: isDisabled\n }, label);\n }\n\n function onPageClick(pageNum, isDisabled) {\n if (!isDisabled) {\n handlePageChange(pageNum);\n }\n }\n\n function renderEllipsis(pageBlock) {\n var leftPage = _ramda.default.prop(\"num\", pageBlock[0]);\n\n var rightPage = _ramda.default.prop(\"num\", _ramda.default.last(pageBlock));\n\n return {\n left: !(0, _paging.isFirstPage)(leftPage),\n right: !(0, _paging.isLastPage)(totalResults, resultsPerPage, rightPage)\n };\n }\n\n var ellipsis = renderEllipsis(block);\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__pagination\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__pages\"\n }, getPage(arrowIcon(), currentPage - 1, isFirst, \"is-prev\"), ellipsis.left && getPage(\"...\", 1, false, \"go-first\"), block.map(function (page) {\n return getPage(page.label, page.num, page.current);\n }), ellipsis.right && getPage(\"...\", lastPage, false, \"go-last\"), getPage(arrowIcon(), currentPage + 1, isLast, \"is-next\")));\n};\n\nvar _React$PropTypes = _react.default.PropTypes,\n number = _React$PropTypes.number,\n func = _React$PropTypes.func;\nPagination.propTypes = {\n totalResults: number.isRequired,\n resultsPerPage: number.isRequired,\n currentPage: number.isRequired,\n handlePageChange: func.isRequired\n};\nvar _default = Pagination;\nexports.default = _default;\n\n},{\"../paging\":103,\"ramda\":\"ramda\",\"react\":\"react\"}],86:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _ProjectTile = _interopRequireDefault(require(\"../components/ProjectTile.jsx\"));\n\nvar _LocalNav = _interopRequireDefault(require(\"../../navigation/LocalNav\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ProjectList = /*#__PURE__*/function (_React$Component) {\n _inherits(ProjectList, _React$Component);\n\n var _super = _createSuper(ProjectList);\n\n function ProjectList(props) {\n _classCallCheck(this, ProjectList);\n\n return _super.call(this, props);\n }\n\n _createClass(ProjectList, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n _LocalNav.default.init();\n\n if (window.location.hash.length) {\n var top = document.getElementById(window.location.hash.substring(1).toLowerCase());\n\n if (top) {\n setTimeout(function () {\n window.scrollTo(0, top.offsetTop + 140); // Scroll a bit farther than the title itself to prevent redundant text\n }, 500);\n }\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n _LocalNav.default.init();\n }\n }, {\n key: \"renderProjectTitle\",\n value: function renderProjectTitle(title, borderColor) {\n return /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(\"h2\", {\n className: \"project-listing__section-title js-force-local-nav-header\",\n style: {\n borderBottomColor: borderColor\n }\n }, title));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this = this;\n\n return /*#__PURE__*/_react.default.createElement(\"div\", null, this.props.results.map(function (project, i) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n key: \"project-\".concat(i),\n className: \"project-listing__project-wrapper\"\n }, project.title && _this.renderProjectTitle(project.title, project.color), project.description && /*#__PURE__*/_react.default.createElement(\"p\", {\n className: \"project-listing__section-desc\"\n }, project.description), project.tiles.map(function (tile, i) {\n return /*#__PURE__*/_react.default.createElement(_ProjectTile.default, {\n key: \"tile-\".concat(i),\n tile: tile\n });\n }));\n }));\n }\n }]);\n\n return ProjectList;\n}(_react.default.Component);\n\nexports.default = ProjectList;\n\n},{\"../../navigation/LocalNav\":67,\"../components/ProjectTile.jsx\":87,\"classnames\":\"classnames\",\"ramda\":\"ramda\",\"react\":\"react\"}],87:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ProjectTile = /*#__PURE__*/function (_React$Component) {\n _inherits(ProjectTile, _React$Component);\n\n var _super = _createSuper(ProjectTile);\n\n function ProjectTile(props) {\n _classCallCheck(this, ProjectTile);\n\n return _super.call(this, props);\n }\n\n _createClass(ProjectTile, [{\n key: \"readMoreArrow\",\n value: function readMoreArrow() {\n return /*#__PURE__*/_react.default.createElement(\"svg\", {\n className: \"project-listing__link-arrow\",\n width: \"18\",\n height: \"18\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n }, /*#__PURE__*/_react.default.createElement(\"use\", {\n xlinkHref: \"#read-more-arrow-a\",\n transform: \"translate(4.5 8)\"\n }), /*#__PURE__*/_react.default.createElement(\"use\", {\n xlinkHref: \"#read-more-arrow-b\",\n transform: \"translate(9.5 5)\"\n }), /*#__PURE__*/_react.default.createElement(\"use\", {\n xlinkHref: \"#read-more-arrow-c\",\n transform: \"translate(9.5 9)\"\n }), /*#__PURE__*/_react.default.createElement(\"defs\", null, /*#__PURE__*/_react.default.createElement(\"path\", {\n id: \"read-more-arrow-a\",\n d: \"M0 .5c-.28 0-.5.22-.5.5s.22.5.5.5v-1zm9 1c.28 0 .5-.22.5-.5S9.28.5 9 .5v1zm-9 0h9v-1H0v1z\"\n }), /*#__PURE__*/_react.default.createElement(\"path\", {\n id: \"read-more-arrow-b\",\n d: \"M1.1.4C.9.2.57.2.4.4.2.57.2.9.4 1.1l.7-.7zm2.55 3.95c.2.2.5.2.7 0 .2-.2.2-.5 0-.7l-.7.7zM.4 1.1l3.25 3.25.7-.7L1.1.4l-.7.7z\"\n }), /*#__PURE__*/_react.default.createElement(\"path\", {\n id: \"read-more-arrow-c\",\n d: \"M.4 2.9c-.2.2-.2.52 0 .7.18.2.5.2.7 0l-.7-.7zM4.34.36c.2-.2.2-.5 0-.7-.2-.2-.5-.2-.7 0l.7.7zM1.1 3.6L4.34.36l-.7-.7L.4 2.9l.7.7z\"\n })));\n }\n }, {\n key: \"tileHasTopicTitle\",\n value: function tileHasTopicTitle() {\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"project-listing__item-topic\"\n }, /*#__PURE__*/_react.default.createElement(\"a\", {\n href: this.props.page.url\n }, this.props.topicTitle));\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"project-listing__item\"\n }, (this.props.tile.page.image1X1 || this.props.tile.page.image16X9) && /*#__PURE__*/_react.default.createElement(\"a\", {\n href: this.props.tile.page.url\n }, /*#__PURE__*/_react.default.createElement(\"picture\", {\n className: \"project-listing__item-image\"\n }, /*#__PURE__*/_react.default.createElement(\"source\", {\n srcSet: this.props.tile.page.image1X1 || this.props.tile.page.image16X9,\n media: \"(min-width: 471px)\"\n }), /*#__PURE__*/_react.default.createElement(\"source\", {\n srcSet: this.props.tile.page.image16X9 || this.props.tile.page.image1X1,\n media: \"(max-width: 470px)\"\n }), /*#__PURE__*/_react.default.createElement(\"img\", {\n src: this.props.tile.page.image1X1 || \"\"\n }))), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"project-listing__item-details\"\n }, this.props.tile.topicTitle && tileHasTopicTitle(), /*#__PURE__*/_react.default.createElement(\"a\", {\n href: this.props.tile.page.url,\n className: \"project-listing__item-project\"\n }, this.props.tile.page.title), /*#__PURE__*/_react.default.createElement(\"p\", {\n className: \"project-listing__item-summary\"\n }, this.props.tile.page.summary), /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"project-listing__read-more-link\"\n }, /*#__PURE__*/_react.default.createElement(\"a\", {\n href: this.props.tile.page.url\n }, \"Read More\", this.readMoreArrow()))), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"project-listing__item-latest\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"project-listing__item-latest-title\"\n }, \"Latest from \", this.props.tile.page.title), this.props.tile.mostRecentItems.map(function (item, i) {\n if (item.title !== \"$name\") {\n return /*#__PURE__*/_react.default.createElement(\"a\", {\n key: \"latest-link-\".concat(i),\n href: item.url,\n className: \"project-listing__item-latest-link\"\n }, item.title);\n }\n })));\n }\n }]);\n\n return ProjectTile;\n}(_react.default.Component);\n\nexports.default = ProjectTile;\n\n},{\"classnames\":\"classnames\",\"ramda\":\"ramda\",\"react\":\"react\"}],88:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _moment = _interopRequireDefault(require(\"moment\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ResultItem = /*#__PURE__*/function (_React$Component) {\n _inherits(ResultItem, _React$Component);\n\n var _super = _createSuper(ResultItem);\n\n function ResultItem(props) {\n var _this;\n\n _classCallCheck(this, ResultItem);\n\n _this = _super.call(this, props);\n _this.itemWrapper = null;\n return _this;\n }\n\n _createClass(ResultItem, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.itemWrapper.className = this.itemWrapper.className + \" is-visible\";\n }\n }, {\n key: \"formatDate\",\n value: function formatDate(dateStr) {\n var date = new Date(dateStr);\n return (0, _moment.default)(date).format(\"MMMM Do, YYYY\");\n }\n }, {\n key: \"truncateSummary\",\n value: function truncateSummary(summary) {\n if (summary) {\n return summary.length > 250 ? \"\".concat(summary.substr(0, 250), \"...\") : summary;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n title = _this$props.title,\n summary = _this$props.summary,\n contentType = _this$props.contentType,\n date = _this$props.date,\n displayMetadata = _this$props.displayMetadata,\n authors = _this$props.authors,\n url = _this$props.url,\n imageSrc = _this$props.imageSrc,\n projectTitle = _this$props.projectTitle,\n projectLink = _this$props.projectLink,\n isPeople = _this$props.isPeople,\n featured = _this$props.featured,\n featuredResultLabel = _this$props.featuredResultLabel,\n suppressContentType = _this$props.suppressContentType,\n suppressPublicationDate = _this$props.suppressPublicationDate;\n return /*#__PURE__*/_react.default.createElement(\"article\", {\n className: \"search-item\",\n ref: function ref(el) {\n return _this2.itemWrapper = el;\n }\n }, featured && /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-item__featured\"\n }, featuredResultLabel || \"Featured\"), /*#__PURE__*/_react.default.createElement(\"figure\", null, imageSrc ? /*#__PURE__*/_react.default.createElement(\"a\", {\n href: url\n }, /*#__PURE__*/_react.default.createElement(\"img\", {\n className: (0, _classnames.default)({\n \"is-person\": isPeople\n }),\n src: imageSrc\n })) : /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-item__image-shim\"\n }, \"\\xA0\"), /*#__PURE__*/_react.default.createElement(\"figcaption\", null, /*#__PURE__*/_react.default.createElement(\"h3\", {\n className: \"search-item__title\"\n }, /*#__PURE__*/_react.default.createElement(\"a\", {\n href: url\n }, title)), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-item__meta\"\n }, contentType && displayMetadata && !suppressContentType ? /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-item__content-type\"\n }, contentType) : null, date && !suppressPublicationDate && /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-item__date\"\n }, date), projectTitle && projectLink ? /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-item__project\"\n }, /*#__PURE__*/_react.default.createElement(\"a\", {\n href: projectLink\n }, projectTitle)) : null, authors && authors.length > 0 ? /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-item__authors\"\n }, \" by \", /*#__PURE__*/_react.default.createElement(\"strong\", null, authors.join(\", \"))) : null), /*#__PURE__*/_react.default.createElement(\"p\", {\n className: \"search-item__body\",\n dangerouslySetInnerHTML: {\n __html: this.truncateSummary(summary)\n }\n }))));\n }\n }]);\n\n return ResultItem;\n}(_react.default.Component);\n\nexports.default = ResultItem;\nvar _React$PropTypes = _react.default.PropTypes,\n arrayOf = _React$PropTypes.arrayOf,\n string = _React$PropTypes.string,\n bool = _React$PropTypes.bool;\nResultItem.propTypes = {\n contentType: string,\n date: string,\n displayMetadata: bool,\n authors: arrayOf(string),\n title: string.isRequired,\n summary: string,\n url: string.isRequired,\n projectUrl: string,\n projectTitle: string,\n imageSrc: string,\n templateName: string,\n isPeople: bool,\n projectLink: string,\n featured: bool,\n featuredResultLabel: string,\n suppressContentType: bool,\n suppressPublicationDate: bool\n};\n\n},{\"classnames\":\"classnames\",\"moment\":\"moment\",\"react\":\"react\"}],89:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _paging = require(\"../paging\");\n\nvar _filterSlider = require(\"../filterSlider\");\n\nvar _ResultItem = _interopRequireDefault(require(\"./ResultItem.jsx\"));\n\nvar _LoadMore = _interopRequireDefault(require(\"./LoadMore.jsx\"));\n\nvar _LoadingSpinner = _interopRequireDefault(require(\"./LoadingSpinner.jsx\"));\n\nvar _SortBar = _interopRequireDefault(require(\"./SortBar.jsx\"));\n\nvar _ContentFilterBar = _interopRequireDefault(require(\"./ContentFilterBar.jsx\"));\n\nvar _SearchStatus = _interopRequireDefault(require(\"./SearchStatus.jsx\"));\n\nvar _Pagination = _interopRequireDefault(require(\"./Pagination.jsx\"));\n\nvar _resultsDisplay = require(\"../redux/resultsDisplay\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar ResultList = function ResultList(_ref) {\n var results = _ref.results,\n resultsDisplayStrategy = _ref.resultsDisplayStrategy,\n selectedFacets = _ref.selectedFacets,\n totalResults = _ref.totalResults,\n loading = _ref.loading,\n isFirstLoad = _ref.isFirstLoad,\n sorters = _ref.sorters,\n nextPage = _ref.nextPage,\n gotoPage = _ref.gotoPage,\n dismissFacet = _ref.dismissFacet,\n contentFilterFacets = _ref.contentFilterFacets,\n changeSort = _ref.changeSort,\n query = _ref.query,\n pagination = _ref.pagination,\n dictionary = _ref.dictionary,\n showMobileFacets = _ref.showMobileFacets,\n changeContentFilter = _ref.changeContentFilter;\n var isLast = (0, _paging.isLastPage)(totalResults, query.perPage, query.page);\n var shouldShowNoResults = results.length === 0 && !isFirstLoad;\n var shouldShowPager = totalResults > query.perPage;\n\n function showFilters() {\n (0, _filterSlider.openFilters)(); // DOM ops\n\n showMobileFacets(); // action creator\n }\n\n function wrapperClass() {\n var isRefreshing = loading && resultsDisplayStrategy === _resultsDisplay.RESULTS_DISPLAY_REFRESH;\n var isAppending = loading && resultsDisplayStrategy === _resultsDisplay.RESULTS_DISPLAY_APPEND;\n return (0, _classnames.default)(\"search-results\", {\n \"is-refreshing\": isRefreshing,\n \"is-appending\": isAppending\n });\n }\n\n function resultsRange() {\n // Upper bound of visible results\n var ceiling = query.page * query.perPage; // Lower bound of visible results\n\n var floor = ceiling - query.perPage + 1; // make sure the ceiling does not exceed total results\n\n if (ceiling > totalResults) {\n ceiling = totalResults;\n } // if results are only one page, eschew the range entirely\n\n\n if (totalResults <= query.perPage) {\n return \"\".concat(totalResults);\n } // if we're using load more, we want to show only\n // the ceiling of results displayed\n\n\n if (resultsDisplayStrategy === _resultsDisplay.RESULTS_DISPLAY_APPEND) {\n return \"\".concat(ceiling);\n } // otherwise, return the full range\n\n\n return \"\".concat(floor, \" - \").concat(ceiling);\n }\n\n function selectedContentFilter() {\n var selectedTypes = contentFilterFacets.values.filter(function (f) {\n return f.selected === true;\n });\n\n if (selectedTypes.length) {\n return selectedTypes[0].name;\n } else {\n return \"all\";\n }\n }\n\n function handleContentFilterSelection(selectedType) {\n changeContentFilter(selectedType, true);\n }\n\n function renderPagingControl() {\n if (pagination) {\n return /*#__PURE__*/_react.default.createElement(_Pagination.default, {\n totalResults: totalResults,\n resultsPerPage: query.perPage,\n currentPage: query.page,\n handlePageChange: gotoPage\n });\n }\n\n if (!pagination && !isLast) {\n return /*#__PURE__*/_react.default.createElement(_LoadMore.default, {\n handleClick: nextPage,\n dictionary: dictionary,\n loading: loading\n });\n }\n }\n\n function renderFilterToggle() {\n return /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n className: \"search-results__filter-open btn--primary\",\n onClick: function onClick() {\n return showFilters();\n }\n }, \"Filter Your Results\", /*#__PURE__*/_react.default.createElement(\"svg\", {\n className: \"icon\"\n }, /*#__PURE__*/_react.default.createElement(\"use\", {\n xlinkHref: \"/assets/pew/img/svg-sprite.svg#equalizer\"\n })));\n } // Remove results will any duplicate ids\n\n\n var deDupedResults = _ramda.default.uniqWith(function (a, b) {\n return a.itemId === b.itemId;\n }, results);\n\n return /*#__PURE__*/_react.default.createElement(\"section\", {\n className: wrapperClass()\n }, renderFilterToggle(), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__bars\"\n }, /*#__PURE__*/_react.default.createElement(_ContentFilterBar.default, {\n contentFilters: contentFilterFacets,\n selectedFilter: contentFilterFacets ? selectedContentFilter() : \"all\",\n onSelection: handleContentFilterSelection,\n dictionary: dictionary\n }), /*#__PURE__*/_react.default.createElement(_SortBar.default, {\n sorters: sorters,\n handleSortClick: changeSort\n })), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__item-wrapper\"\n }, loading && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__loader\"\n }, /*#__PURE__*/_react.default.createElement(_LoadingSpinner.default, null)), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__items\"\n }, shouldShowNoResults ? /*#__PURE__*/_react.default.createElement(\"p\", null, \"No results found to match your query.\") : null, deDupedResults.map(function (item, i) {\n return /*#__PURE__*/_react.default.createElement(_ResultItem.default, _extends({\n key: \"\".concat(item.itemId, \"_\").concat(i),\n featuredResultLabel: dictionary.featuredResultLabel\n }, item));\n }))), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__bottom\"\n }, /*#__PURE__*/_react.default.createElement(_SearchStatus.default, {\n resultsRange: resultsRange(),\n totalResults: totalResults,\n handleFacetDismiss: dismissFacet,\n dictionary: dictionary\n }), shouldShowPager ? renderPagingControl() : null));\n};\n\nvar _React$PropTypes = _react.default.PropTypes,\n arrayOf = _React$PropTypes.arrayOf,\n string = _React$PropTypes.string,\n object = _React$PropTypes.object,\n func = _React$PropTypes.func,\n bool = _React$PropTypes.bool,\n number = _React$PropTypes.number,\n shape = _React$PropTypes.shape,\n oneOfType = _React$PropTypes.oneOfType;\nResultList.propTypes = {\n results: arrayOf(shape({\n id: oneOfType([number, string])\n })),\n resultsDisplayStrategy: number,\n selectedFacets: object.isRequired,\n totalResults: number.isRequired,\n sorters: arrayOf(shape({\n id: oneOfType([number, string]).isRequired,\n label: string.isRequired,\n value: string.isRequired,\n direction: oneOfType([bool, string]),\n isActive: bool.isRequired\n })),\n loading: bool,\n isFirstLoad: bool,\n nextPage: func,\n gotoPage: func,\n changeSort: func,\n showMobileFacets: func,\n contentFilterFacets: shape({\n id: oneOfType([number, string])\n }),\n changeContentFilter: func,\n dismissFacet: func,\n query: shape({\n q: string,\n sortBy: string,\n page: number,\n perPage: number,\n pageId: string\n }),\n pagination: bool,\n dictionary: object\n};\nResultList.defaultProps = {\n selectedFacets: []\n};\nvar _default = ResultList;\nexports.default = _default;\n\n},{\"../filterSlider\":101,\"../paging\":103,\"../redux/resultsDisplay\":108,\"./ContentFilterBar.jsx\":81,\"./LoadMore.jsx\":83,\"./LoadingSpinner.jsx\":84,\"./Pagination.jsx\":85,\"./ResultItem.jsx\":88,\"./SearchStatus.jsx\":91,\"./SortBar.jsx\":94,\"classnames\":\"classnames\",\"ramda\":\"ramda\",\"react\":\"react\"}],90:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _LoadingSpinner = _interopRequireDefault(require(\"./LoadingSpinner.jsx\"));\n\nvar _SearchStatus = _interopRequireDefault(require(\"./SearchStatus.jsx\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar SearchBox = /*#__PURE__*/function (_React$Component) {\n _inherits(SearchBox, _React$Component);\n\n var _super = _createSuper(SearchBox);\n\n function SearchBox(props) {\n var _this;\n\n _classCallCheck(this, SearchBox);\n\n _this = _super.call(this, props);\n _this.state = {\n initiatedLoad: false\n };\n return _this;\n }\n\n _createClass(SearchBox, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n if (!nextProps.loading) {\n this.setState({\n initiatedLoad: false\n });\n }\n }\n }, {\n key: \"handleSubmit\",\n value: function handleSubmit(event) {\n event.preventDefault();\n this.props.handleEntry(this.keywordInput.value);\n this.setState({\n initiatedLoad: true\n });\n }\n }, {\n key: \"handleSpellcheckResubmit\",\n value: function handleSpellcheckResubmit(event) {\n event.preventDefault();\n this.keywordInput.value = this.props.spellcheckSuggestion;\n this.props.handleEntry(this.props.spellcheckSuggestion);\n }\n }, {\n key: \"resultsRange\",\n value: function resultsRange() {\n // Upper bound of visible results\n var _this$props = this.props,\n query = _this$props.query,\n totalResults = _this$props.totalResults;\n var ceiling = query.page * query.perPage; // Lower bound of visible results\n\n var floor = ceiling - query.perPage + 1; // make sure the ceiling does not exceed total results\n\n if (ceiling > totalResults) {\n ceiling = totalResults;\n } // if results are only one page, eschew the range entirely\n\n\n if (totalResults <= query.perPage) {\n return \"\".concat(totalResults);\n } //return the full range\n\n\n return \"\".concat(floor, \" - \").concat(ceiling);\n }\n }, {\n key: \"renderSearchStatus\",\n value: function renderSearchStatus() {\n var _this$props2 = this.props,\n totalResults = _this$props2.totalResults,\n keywords = _this$props2.keywords,\n dictionary = _this$props2.dictionary;\n return /*#__PURE__*/_react.default.createElement(_SearchStatus.default, {\n resultsRange: this.resultsRange(),\n totalResults: totalResults,\n keywords: keywords,\n dictionary: dictionary\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n dictionary = _this$props3.dictionary,\n keywords = _this$props3.keywords,\n loading = _this$props3.loading;\n var shouldShowSpinner = this.state.initiatedLoad && loading;\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-box-wrapper\"\n }, /*#__PURE__*/_react.default.createElement(\"form\", {\n className: \"search-box search-page__search-box\",\n onSubmit: function onSubmit(e) {\n return _this2.handleSubmit(e);\n },\n noValidate: true\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-box__input\"\n }, /*#__PURE__*/_react.default.createElement(\"label\", {\n htmlFor: \"site-search\",\n className: \"u-visuallyhidden\"\n }, dictionary.searchBoxLabel), /*#__PURE__*/_react.default.createElement(\"input\", {\n id: \"site-search\",\n type: \"text\",\n autoComplete: \"off\",\n placeholder: dictionary.searchBoxPlaceholder,\n defaultValue: keywords || \"\",\n ref: function ref(input) {\n return _this2.keywordInput = input;\n }\n }), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-box__loader\"\n }, shouldShowSpinner ? /*#__PURE__*/_react.default.createElement(_LoadingSpinner.default, null) : null), /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"submit\",\n className: \"search-box__button\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"u-visuallyhidden\"\n }, \"Search\"), /*#__PURE__*/_react.default.createElement(\"img\", {\n src: \"/assets/img/icon-search.png\"\n }))), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-box__spell-container\"\n }, this.props.spellcheckSuggestion && /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-box__spell-suggest\"\n }, \"Did you mean\", /*#__PURE__*/_react.default.createElement(\"button\", {\n onClick: function onClick(e) {\n return _this2.handleSpellcheckResubmit(e);\n }\n }, this.props.spellcheckSuggestion), \"?\"))), this.renderSearchStatus());\n }\n }]);\n\n return SearchBox;\n}(_react.default.Component);\n\nexports.default = SearchBox;\nvar _React$PropTypes = _react.default.PropTypes,\n string = _React$PropTypes.string,\n func = _React$PropTypes.func,\n number = _React$PropTypes.number,\n object = _React$PropTypes.object,\n shape = _React$PropTypes.shape,\n bool = _React$PropTypes.bool;\nSearchBox.propTypes = {\n keywords: string,\n totalResults: number,\n query: object,\n handleEntry: func.isRequired,\n loading: bool,\n dictionary: shape({\n searchBoxPlaceholder: string,\n searchBoxLabel: string,\n resultsForKeywordLabel: string,\n resultsLabel: string\n }).isRequired\n};\n\n},{\"./LoadingSpinner.jsx\":84,\"./SearchStatus.jsx\":91,\"react\":\"react\"}],91:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SearchStatus = function SearchStatus(_ref) {\n var resultsRange = _ref.resultsRange,\n totalResults = _ref.totalResults,\n keywords = _ref.keywords,\n selectedFacets = _ref.selectedFacets,\n handleFacetDismiss = _ref.handleFacetDismiss,\n dictionary = _ref.dictionary;\n var shouldRenderFacets = selectedFacets && selectedFacets.length > 0;\n var shouldRenderKeywords = !!keywords;\n\n var onFacetClick = function onFacetClick(groupId, value) {\n handleFacetDismiss(groupId, value.id);\n };\n\n var renderSelectedFacets = function renderSelectedFacets() {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__active-facets\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", null, \"with filters\"), /*#__PURE__*/_react.default.createElement(\"ul\", null, selectedFacets.map(function (value) {\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n key: value.id\n }, /*#__PURE__*/_react.default.createElement(\"span\", null, value.name), /*#__PURE__*/_react.default.createElement(\"button\", {\n onClick: function onClick() {\n return onFacetClick(value);\n }\n }, /*#__PURE__*/_react.default.createElement(\"svg\", {\n className: \"icon\"\n }, /*#__PURE__*/_react.default.createElement(\"use\", {\n xlinkHref: \"/assets/pew/img/svg-sprite.svg#close\"\n }))));\n })));\n };\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__status\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", null, resultsRange), \"\\xA0\", /*#__PURE__*/_react.default.createElement(\"span\", null, \"of\"), \"\\xA0\", /*#__PURE__*/_react.default.createElement(\"span\", null, totalResults), \"\\xA0\", !shouldRenderKeywords && /*#__PURE__*/_react.default.createElement(\"span\", null, dictionary.resultsLabel), shouldRenderKeywords && /*#__PURE__*/_react.default.createElement(\"span\", null, dictionary.resultsForKeywordLabel, \" \\\"\", keywords, \"\\\"\\xA0\"), shouldRenderFacets && renderSelectedFacets());\n};\n\nvar _React$PropTypes = _react.default.PropTypes,\n string = _React$PropTypes.string,\n number = _React$PropTypes.number,\n object = _React$PropTypes.object,\n arrayOf = _React$PropTypes.arrayOf,\n func = _React$PropTypes.func;\nSearchStatus.propTypes = {\n resultsRange: string.isRequired,\n totalResults: number.isRequired,\n keywords: string,\n selectedFacets: arrayOf(object),\n handleFacetDismiss: func.isRequired,\n dictionary: object\n};\nSearchStatus.defaultProps = {\n selectedFacets: []\n};\nvar _default = SearchStatus;\nexports.default = _default;\n\n},{\"react\":\"react\"}],92:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar xIcon = function xIcon() {\n return /*#__PURE__*/_react.default.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M18.98 6.42L13.4 12 19 17.58l-1.4 1.4L12 13.4 6.42 19l-1.4-1.4L10.6 12 5 6.42l1.4-1.4L12 10.6 17.58 5z\"\n }));\n};\n\nvar SearchTokens = function SearchTokens(_ref) {\n var token = _ref.token,\n selectedFacets = _ref.selectedFacets,\n dictionary = _ref.dictionary,\n handleFacetChange = _ref.handleFacetChange,\n handleClearAll = _ref.handleClearAll,\n handleTokenChange = _ref.handleTokenChange;\n\n var addGroupId = _ramda.default.mapObjIndexed(function (v, k, o) {\n return _ramda.default.map(_ramda.default.assoc(\"groupId\", k), v);\n });\n\n var facets = _ramda.default.pipe(addGroupId, _ramda.default.values, _ramda.default.flatten, _ramda.default.sortBy(_ramda.default.prop(\"name\")))(selectedFacets);\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-tokens\"\n }, (facets.length > 0 || token) && /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-tokens__title\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-tokens__title-text\"\n }, dictionary.tokensTitle || \"Filters\", \" \", \"(\".concat(facets.length, \")\"))), /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: \"search-tokens__list\"\n }, token && /*#__PURE__*/_react.default.createElement(\"li\", {\n className: \"search-tokens__token\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", null, token.title), /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"search-tokens__dismiss\",\n type: \"button\",\n onClick: function onClick() {\n return handleTokenChange();\n }\n }, xIcon())), facets.map(function (f, i) {\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n className: \"search-tokens__token\",\n key: i\n }, /*#__PURE__*/_react.default.createElement(\"span\", null, f.name), /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"search-tokens__dismiss\",\n type: \"button\",\n onClick: function onClick() {\n return handleFacetChange(f.groupId, f.id, false);\n }\n }, xIcon()));\n })), (facets.length > 0 || token) && /*#__PURE__*/_react.default.createElement(\"button\", {\n onClick: function onClick() {\n return handleClearAll();\n },\n type: \"button\",\n className: \"search-tokens__clear-all\"\n }, dictionary.clearAllTokens || \"Clear All Filters\")));\n};\n\nvar _React$PropTypes = _react.default.PropTypes,\n arrayOf = _React$PropTypes.arrayOf,\n shape = _React$PropTypes.shape,\n oneOfType = _React$PropTypes.oneOfType,\n number = _React$PropTypes.number,\n string = _React$PropTypes.string,\n object = _React$PropTypes.object;\nSearchTokens.propTypes = {\n selectedFacets: object,\n dictionary: object,\n token: object\n};\nvar _default = SearchTokens;\nexports.default = _default;\n\n},{\"ramda\":\"ramda\",\"react\":\"react\"}],93:[function(require,module,exports){\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _propTypes = require(\"prop-types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n//import sampleData from \"./sample.json\";\nvar SearchWidget = /*#__PURE__*/function (_React$Component) {\n _inherits(SearchWidget, _React$Component);\n\n var _super = _createSuper(SearchWidget);\n\n /*\r\n static propTypes = {\r\n perPageTaxonomy: arrayOf(shape({\r\n id: string.isRequired,\r\n values: arrayOf(shape({\r\n id: string,\r\n name: string,\r\n url: string,\r\n count: number\r\n }))\r\n }))\r\n }*/\n function SearchWidget(props) {\n _classCallCheck(this, SearchWidget);\n\n return _super.call(this, props);\n }\n\n _createClass(SearchWidget, [{\n key: \"render\",\n value: function render() {\n //when using test data:\n //const { perPageTaxonomy } = sampleData;\n //const { firstResultTaxonomy } = sampleData;\n var perPageTaxonomy = this.props.perPageTaxonomy;\n var firstResultTaxonomy = this.props.firstResultTaxonomy;\n\n var arrowIcon = function arrowIcon() {\n return /*#__PURE__*/_react.default.createElement(\"svg\", {\n viewBox: \"0 0 10 8\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/_react.default.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M.5 4h9\"\n }), /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M6.24.74L9.5 4\"\n }), /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M6.24 7.26L9.5 4\"\n })));\n };\n\n var firstResultIds = [];\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget\"\n }, (perPageTaxonomy != null || firstResultTaxonomy != null) && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__inner-wrapper\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__title\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-widget__title-text\"\n }, config.dictionary.searchWidgetLabel)), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__top-hit\"\n }, firstResultTaxonomy && firstResultTaxonomy.length > 0 && firstResultTaxonomy.map(function (itemsJ) {\n firstResultIds.push(itemsJ.id);\n\n if (itemsJ.taxonomy == \"Expert\") {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__top-expert\",\n key: itemsJ.id\n }, /*#__PURE__*/_react.default.createElement(\"a\", {\n href: itemsJ.url\n }, /*#__PURE__*/_react.default.createElement(\"img\", {\n className: \"search-widget__expert-image\",\n src: itemsJ.imgSrc\n })), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__expert-details\"\n }, /*#__PURE__*/_react.default.createElement(\"a\", {\n href: itemsJ.url,\n className: \"search-widget__expert-name\"\n }, itemsJ.name), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__expert-contact\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-widget__expert-title\"\n }, itemsJ.title)), /*#__PURE__*/_react.default.createElement(\"a\", {\n href: itemsJ.url,\n className: \"search-widget__expert-read-more\"\n }, \"Read More \", arrowIcon())));\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__top-project-topic\",\n key: itemsJ.id\n }, /*#__PURE__*/_react.default.createElement(\"a\", {\n href: itemsJ.url\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__media-wrapper\"\n }, /*#__PURE__*/_react.default.createElement(\"img\", {\n src: itemsJ.imgSrc\n })), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__top-hit-details\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-widget__top-hit-type\"\n }, itemsJ.taxonomy), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__top-hit-title\"\n }, itemsJ.name))));\n })), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__aggregate\"\n }, perPageTaxonomy && perPageTaxonomy.length > 0 && perPageTaxonomy.map(function (taxonomy, i) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__aggregate-section\",\n key: i\n }, (taxonomy.values.length > 1 || taxonomy.values.length > 0 && firstResultIds.indexOf(taxonomy.values[0].id) < 0) && /*#__PURE__*/_react.default.createElement(\"h4\", {\n className: \"search-widget__aggregate-type\"\n }, taxonomy.id), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-widget__aggregate-links-wrapper\"\n }, taxonomy.values.filter(function (t) {\n return firstResultIds.indexOf(t.id) < 0;\n }).slice(0, 3).map(function (link, index, arr) {\n return /*#__PURE__*/_react.default.createElement(\"a\", {\n className: \"search-widget__aggregate-link\",\n href: link.url,\n key: link.id\n }, link.name, index < arr.length - 1 && \",\");\n })));\n }))));\n }\n }]);\n\n return SearchWidget;\n}(_react.default.Component);\n\nexports.default = SearchWidget;\n\n},{\"classnames\":\"classnames\",\"prop-types\":\"prop-types\",\"ramda\":\"ramda\",\"react\":\"react\"}],94:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction activeSortAscClass(sorter) {\n return (0, _classnames.default)({\n \"is-selected\": sorter.isActive && sorter.direction === \"asc\"\n });\n}\n\nfunction activeSortDescClass(sorter) {\n return (0, _classnames.default)({\n \"is-selected\": sorter.isActive && sorter.direction === \"desc\"\n });\n}\n\nfunction activateOrToggleSorter(sorterId, sorters, handleSortClick) {\n var toggleDir = function toggleDir(dir) {\n if (!dir) {\n return null;\n } else {\n return dir === \"asc\" ? \"desc\" : \"asc\";\n }\n }; // this is like a 'bookmark' to the direction property\n\n\n var dirLens = _ramda.default.lensProp(\"direction\"); // each argument array supplies a condition predicate, and an action\n // 1) if clicked sorter and active, toggle the sort direction\n // 2) if clicked sorter and not active, make active\n // 3) if not clicked sorter, and active, make inactive\n // 4) all other cases, do nothing\n\n\n var adjustSorters = _ramda.default.cond([[_ramda.default.whereEq({\n id: sorterId,\n isActive: true\n }), _ramda.default.over(dirLens, toggleDir)], [_ramda.default.whereEq({\n id: sorterId,\n isActive: false\n }), _ramda.default.assoc(\"isActive\", true)], [_ramda.default.whereEq({\n isActive: true\n }), _ramda.default.assoc(\"isActive\", false)], [_ramda.default.T, _ramda.default.identity]]);\n\n var newSorters = _ramda.default.map(adjustSorters, sorters);\n\n handleSortClick(newSorters);\n}\n\nvar SortBar = function SortBar(_ref) {\n var sorters = _ref.sorters,\n handleSortClick = _ref.handleSortClick;\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-results__sort-bar\"\n }, /*#__PURE__*/_react.default.createElement(\"ul\", null, sorters.map(function (sorter) {\n var sorterClass = (0, _classnames.default)(\"search-results__sorter\", {\n \"is-active\": sorter.isActive\n });\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n key: sorter.id,\n className: sorterClass,\n onClick: function onClick() {\n return activateOrToggleSorter(sorter.id, sorters, handleSortClick);\n }\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-results__sort-label\"\n }, sorter.label), sorter.direction && /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"search-results__sort-dir sort-dir-\" + sorter.label\n }, /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n className: activeSortAscClass(sorter)\n }), /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n className: activeSortDescClass(sorter)\n })));\n })));\n};\n\nvar _React$PropTypes = _react.default.PropTypes,\n shape = _React$PropTypes.shape,\n func = _React$PropTypes.func,\n number = _React$PropTypes.number,\n string = _React$PropTypes.string,\n bool = _React$PropTypes.bool,\n oneOfType = _React$PropTypes.oneOfType,\n arrayOf = _React$PropTypes.arrayOf;\nSortBar.propTypes = {\n sorters: arrayOf(shape({\n id: oneOfType([number, string]).isRequired,\n label: string.isRequired,\n value: string.isRequired,\n direction: oneOfType([bool, string]),\n isActive: bool.isRequired\n })).isRequired,\n handleSortClick: func.isRequired\n};\nvar _default = SortBar;\nexports.default = _default;\n\n},{\"classnames\":\"classnames\",\"ramda\":\"ramda\",\"react\":\"react\"}],95:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _FacetBar = _interopRequireDefault(require(\"../components/FacetBar.jsx\"));\n\nvar _search = require(\"../redux/search/search.actions\");\n\nvar _facets = require(\"../redux/facets\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ignoredFacetGroupIds = [\"contentFilterType\", \"locationpaths\"];\n\nvar mapStateToProps = function mapStateToProps(state, ownProps) {\n return {\n title: state.dictionary.tokensTitle,\n facets: _ramda.default.reject(function (g) {\n return _ramda.default.contains(_ramda.default.prop(\"id\", g), ignoredFacetGroupIds);\n }, state.facets),\n numOpenGroups: state.numOpenGroups,\n mobileFacetsShown: state.mobileFacetsShown,\n dictionary: state.dictionary,\n facetDisplayOverride: state.facetDisplayOverride\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n handleFacetChange: function handleFacetChange(groupId, facetId, facetValue) {\n dispatch((0, _search.loadFacetChange)(groupId, facetId, facetValue));\n },\n handleTokenChange: function handleTokenChange() {\n dispatch(loadChangeToken());\n },\n handleFacetChangeSingular: function handleFacetChangeSingular(groupId, facetId, facetValue) {\n dispatch((0, _search.loadFacetChangeSingular)(groupId, facetId, facetValue));\n },\n handleSelectGroup: function handleSelectGroup(group) {\n dispatch((0, _search.loadSelectFacetGroup)(group));\n },\n handleClearGroup: function handleClearGroup(group) {\n dispatch((0, _search.loadClearFacetGroup)(group));\n },\n handleClearAll: function handleClearAll() {\n dispatch((0, _search.loadClearAllFacets)());\n },\n hideMobileFacets: function hideMobileFacets() {\n dispatch(_search.hideMobileFacets);\n },\n handleProjectStatusChange: function handleProjectStatusChange(groupId, facetId, facetValue) {\n dispatch((0, _search.loadProjectStatusChange)(groupId, facetId, facetValue));\n }\n };\n};\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_FacetBar.default);\n\nexports.default = _default;\n\n},{\"../components/FacetBar.jsx\":82,\"../redux/facets\":106,\"../redux/search/search.actions\":111,\"ramda\":\"ramda\",\"react-redux\":\"react-redux\"}],96:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _ProjectList = _interopRequireDefault(require(\"../components/ProjectList.jsx\"));\n\nvar _facets = require(\"../redux/facets\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n results: state.results,\n resultsDisplayStrategy: state.resultsDisplayStrategy,\n count: state.count\n };\n};\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps)(_ProjectList.default);\n\nexports.default = _default;\n\n},{\"../components/ProjectList.jsx\":86,\"../redux/facets\":106,\"react-redux\":\"react-redux\"}],97:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _SearchBox = _interopRequireDefault(require(\"../components/SearchBox.jsx\"));\n\nvar _search = require(\"../redux/search/search.actions\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n keywords: state.query.q,\n dictionary: state.dictionary,\n loading: state.loading,\n spellcheckSuggestion: state.spellcheckSuggestion,\n totalResults: state.totalResults,\n query: state.query\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n handleEntry: function handleEntry(value) {\n dispatch((0, _search.loadNewKeywords)(value));\n }\n };\n};\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_SearchBox.default);\n\nexports.default = _default;\n\n},{\"../components/SearchBox.jsx\":90,\"../redux/search/search.actions\":111,\"react-redux\":\"react-redux\"}],98:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _ResultList = _interopRequireDefault(require(\"../components/ResultList.jsx\"));\n\nvar _search = require(\"../redux/search/search.actions\");\n\nvar _facets = require(\"../redux/facets\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n results: state.results,\n resultsDisplayStrategy: state.resultsDisplayStrategy,\n selectedFacets: (0, _facets.selectedFacetIdsByGroup)(state.facets),\n contentFilterFacets: (0, _facets.groupWithId)(\"contentFilterType\", state.facets),\n totalResults: state.totalResults,\n loading: state.loading,\n isFirstLoad: state.isFirstLoad,\n sorters: state.sorters,\n query: state.query,\n pagination: state.pagination,\n dictionary: state.dictionary\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n nextPage: function nextPage() {\n dispatch((0, _search.loadNextPage)());\n },\n changeSort: function changeSort(sorters) {\n dispatch((0, _search.loadNewSort)(sorters));\n },\n gotoPage: function gotoPage(pageNum) {\n dispatch((0, _search.loadNewPage)(pageNum));\n },\n dismissFacet: function dismissFacet(groupId, facetId) {\n dispatch((0, _search.loadFacetChange)(groupId, facetId, false));\n },\n showMobileFacets: function showMobileFacets() {\n dispatch((0, _search.showMobileFacets)());\n },\n changeContentFilter: function changeContentFilter(contentFilterId, selectedValue) {\n dispatch((0, _search.loadFacetChangeSingular)(\"contentFilterType\", contentFilterId, selectedValue));\n }\n };\n};\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_ResultList.default);\n\nexports.default = _default;\n\n},{\"../components/ResultList.jsx\":89,\"../redux/facets\":106,\"../redux/search/search.actions\":111,\"react-redux\":\"react-redux\"}],99:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _SearchTokens = _interopRequireDefault(require(\"../components/SearchTokens.jsx\"));\n\nvar _search = require(\"../redux/search/search.actions\");\n\nvar _facets = require(\"../redux/facets\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ignoredFacetGroupIds = [\"contentFilterType\", \"locationpaths\"];\n\nvar mapStateToProps = function mapStateToProps(state, ownProps) {\n var relevantFacets = _ramda.default.reject(function (g) {\n return _ramda.default.contains(_ramda.default.prop(\"id\", g), ignoredFacetGroupIds);\n }, state.facets);\n\n var selectedFacets = (0, _facets.selectedFacetsByGroup)(relevantFacets);\n var token = state.token;\n return {\n token: state.token,\n selectedFacets: selectedFacets,\n dictionary: state.dictionary\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n handleFacetChange: function handleFacetChange(groupId, facetId, facetValue) {\n dispatch((0, _search.loadFacetChange)(groupId, facetId, facetValue));\n },\n handleTokenChange: function handleTokenChange() {\n dispatch((0, _search.loadChangeToken)());\n },\n handleClearAll: function handleClearAll() {\n dispatch((0, _search.loadClearAllFacets)());\n }\n };\n};\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_SearchTokens.default);\n\nexports.default = _default;\n\n},{\"../components/SearchTokens.jsx\":92,\"../redux/facets\":106,\"../redux/search/search.actions\":111,\"ramda\":\"ramda\",\"react\":\"react\",\"react-redux\":\"react-redux\"}],100:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _SearchWidget = _interopRequireDefault(require(\"../components/SearchWidget.jsx\"));\n\nvar _search = require(\"../redux/search/search.actions\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n firstResultTaxonomy: state.firstResultTaxonomy,\n perPageTaxonomy: state.perPageTaxonomy\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {};\n};\n\nvar _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_SearchWidget.default);\n\nexports.default = _default;\n\n},{\"../components/SearchWidget.jsx\":93,\"../redux/search/search.actions\":111,\"react-redux\":\"react-redux\"}],101:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.openFilters = openFilters;\nexports.closeFilters = closeFilters;\nexports.setFiltersOpenDirection = setFiltersOpenDirection;\nexports.manageContainerWhitespace = manageContainerWhitespace;\n\n// Open/Close for mobile sliding of filter bar.\n// Involves working with elements outside the\n// scope of React components, so logic kept here.\nfunction openFilters() {\n // Note - this depends on page state outside of the React app\n var filters = filtersWrapper();\n\n if (filters && !filtersAreOpen(filters)) {\n filters.classList.add(\"is-open\");\n }\n}\n\nfunction closeFilters() {\n var filters = filtersWrapper();\n\n if (filters) {\n filters.classList.remove(\"is-open\");\n }\n}\n\nfunction setFiltersOpenDirection() {\n var direction = \"is-right\";\n var filters = filtersWrapper();\n\n if (filters) {\n var sibling = filters.closest(\".container__col\").nextElementSibling;\n\n if (sibling && sibling.className.indexOf(\"container__col\") >= 0) {\n direction = \"is-left\";\n }\n }\n\n filters.classList.add(direction);\n} // when the facet column is 'lifted' absolutely from the container\n// it leaves behind an empty stacked container with a bottom margin\n// we want to remove that margin -- but only if facets are the\n// only components in the column\n\n\nfunction manageContainerWhitespace() {\n var parent = filtersWrapper().closest(\".container__col\");\n var col = parent;\n\n if (parent.children.item(0).classList.contains(\"container__inner\")) {\n parent = parent.children.item(0);\n } // cast from HTMLCollection to Array\n\n\n var children = Array.from(parent.children);\n var childCount = children.reduce(function (count, child) {\n if (!child.classList.contains(\"search__facets-wrapper\")) {\n count = count + 1;\n }\n\n return count;\n }, 0);\n\n if (childCount === 0) {\n // remove the margin on the parent column\n col.style.marginBottom = 0;\n }\n}\n\nfunction filtersWrapper() {\n return document.querySelector(\".search__facets-wrapper\");\n}\n\nfunction filtersAreOpen(filtersWrapper) {\n return filtersWrapper.classList.contains(\"is-open\");\n}\n\n},{}],102:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initSearchApp = initSearchApp;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reduxThunk = _interopRequireDefault(require(\"redux-thunk\"));\n\nvar _reactRedux = require(\"react-redux\");\n\nvar _rootReducer = _interopRequireDefault(require(\"./redux/rootReducer\"));\n\nvar _search = require(\"./redux/search/search.reducer\");\n\nvar _search2 = require(\"./redux/search/search.actions\");\n\nvar _configureStore = _interopRequireDefault(require(\"./redux/configureStore\"));\n\nvar _createRoutingMiddleware = _interopRequireDefault(require(\"./redux/createRoutingMiddleware\"));\n\nvar _service = require(\"./redux/service\");\n\nvar _routing = require(\"./redux/routing\");\n\nvar _resultsDisplay = require(\"./redux/resultsDisplay\");\n\nvar _ResultsContainer = _interopRequireDefault(require(\"./containers/ResultsContainer.jsx\"));\n\nvar _QueryContainer = _interopRequireDefault(require(\"./containers/QueryContainer.jsx\"));\n\nvar _FacetsContainer = _interopRequireDefault(require(\"./containers/FacetsContainer.jsx\"));\n\nvar _ProjectsContainer = _interopRequireDefault(require(\"./containers/ProjectsContainer.jsx\"));\n\nvar _SearchTokensContainer = _interopRequireDefault(require(\"./containers/SearchTokensContainer.jsx\"));\n\nvar _SearchWidgetContainer = _interopRequireDefault(require(\"./containers/SearchWidgetContainer.jsx\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// the mount nodes are the elements we want to include\n// as part of the search app\nfunction initSearchApp(mountNodes) {\n if (!mountNodes.length) {\n return;\n } // extract the searchId from the mountNodes\n // while also checking mountNodes share same id\n\n\n var searchId = mountNodes.reduce(function (id, node) {\n var nodeId = (0, _jquery.default)(node).data(\"searchId\"); // if id is null, we want to set it\n // with the first node's value\n\n if (id === null) {\n return nodeId;\n } // if node id does not equal current\n // id value, it's invalid and return undefined\n\n\n if (id !== nodeId) {\n return;\n }\n\n return id;\n }, null); // if we have an invalid or non-matching id, raise an error\n\n if (!searchId) {\n throw new Error(\"Could not initialize Pew search app. searchId was either not present, or provided mount nodes did not share the same searchId\");\n } // define the canonical inital state of our redux store here\n // including some value taken from the data-attrs of the\n // mount node.\n\n\n var config = window.PewSearchConfigs.find(function (c) {\n return c.searchId === searchId;\n });\n\n if (!config) {\n throw new Error(\"Could not initialize Pew search app instance with id of \\\"\".concat(searchId, \"\\\". Configuration data not found.\"));\n } // create a starting state object,\n // which includes and intitial state\n // from individual reducers\n\n\n var initialState = _ramda.default.merge(_search.initialState, {\n url: config.url,\n pagination: config.pagination,\n resultsDisplayStrategy: config.pagination ? _resultsDisplay.RESULTS_DISPLAY_REFRESH : _resultsDisplay.RESULTS_DISPLAY_APPEND,\n sorters: config.sorters,\n dictionary: config.dictionary,\n numOpenGroups: config.numOpenGroups,\n initialResults: config.initialQueryResults || null,\n query: _ramda.default.merge(_search.initialState.query, {\n pageId: config.pageId,\n page: config.page\n })\n }); // determine if we want to load all page results in our cold load\n\n\n var doLoadAllPages = initialState.resultsDisplayStrategy === _resultsDisplay.RESULTS_DISPLAY_APPEND && initialState.isFirstLoad;\n initialState = _ramda.default.merge(initialState, {\n query: _ramda.default.merge(initialState.query, {\n loadAllPages: doLoadAllPages\n })\n });\n\n var thunkMiddleware = _reduxThunk.default.withExtraArgument({\n mapResponseToState: _service.mapResponseToState,\n fetchSearchResults: _service.fetchSearchResults\n });\n\n var routingMiddleware = (0, _createRoutingMiddleware.default)(_routing.mapStateToUrl, _routing.handleUrlChange);\n var store = (0, _configureStore.default)(_rootReducer.default, initialState, [thunkMiddleware, routingMiddleware]);\n\n if (initialState.initialResults) {\n store.dispatch((0, _search2.loadSuccess)(initialState.initialResults, initialState.resultsDisplayStrategy, _service.mapResponseToState));\n } else {\n store.dispatch((0, _search2.loadResults)());\n }\n\n mountNodes.forEach(function (node) {\n if (node.className.indexOf(\"js-search-query\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_QueryContainer.default, null)), node);\n }\n\n if (node.className.indexOf(\"js-search-results\") > -1 || node.className.indexOf(\"js-projects-container\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_ResultsContainer.default, null)), node);\n }\n\n if (node.className.indexOf(\"js-search-facets\") > -1 || node.className.indexOf(\"js-projects-search-facets\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_FacetsContainer.default, null)), node);\n }\n\n if (node.className.indexOf(\"js-search-tokens\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_SearchTokensContainer.default, null)), node);\n }\n\n if (node.className.indexOf(\"js-projects-container\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_ProjectsContainer.default, null)), node);\n }\n\n if (node.className.indexOf(\"js-search-widget\") > -1) {\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n store: store\n }, /*#__PURE__*/_react.default.createElement(_SearchWidgetContainer.default, null)), node);\n }\n });\n}\n\n},{\"./containers/FacetsContainer.jsx\":95,\"./containers/ProjectsContainer.jsx\":96,\"./containers/QueryContainer.jsx\":97,\"./containers/ResultsContainer.jsx\":98,\"./containers/SearchTokensContainer.jsx\":99,\"./containers/SearchWidgetContainer.jsx\":100,\"./redux/configureStore\":104,\"./redux/createRoutingMiddleware\":105,\"./redux/resultsDisplay\":108,\"./redux/rootReducer\":109,\"./redux/routing\":110,\"./redux/search/search.actions\":111,\"./redux/search/search.reducer\":112,\"./redux/service\":113,\"jquery\":\"jquery\",\"ramda\":\"ramda\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\",\"redux-thunk\":\"redux-thunk\"}],103:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.totalPages = totalPages;\nexports.isLastPage = isLastPage;\nexports.isFirstPage = isFirstPage;\nexports.pageBlock = pageBlock;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// number of page to show before and after current page\n// if at first or last page, double the number will be shown\n// either after or before\nvar PAGE_BLOCK_RANGE = 3;\n\nfunction totalPages(totalResults, resultsPerPage) {\n return Math.ceil(totalResults / resultsPerPage);\n}\n\nfunction isLastPage(totalResults, resultsPerPage, currentPage) {\n var numPages = totalPages(totalResults, resultsPerPage);\n return currentPage >= numPages;\n}\n\nfunction isFirstPage(currentPage) {\n return currentPage === 1;\n} // returns a block of page numbers appropriately\n// adjacent to the currently selected page\n\n\nfunction pageBlock(totalResults, resultsPerPage, currentPage) {\n var numPages = totalPages(totalResults, resultsPerPage);\n var numPagesVisible = Math.min(numPages, PAGE_BLOCK_RANGE * 2 + 1);\n var start = Math.max(1, currentPage - PAGE_BLOCK_RANGE);\n\n if (currentPage + PAGE_BLOCK_RANGE > numPages) {\n // (desired page range) - (Size of current page range)\n start -= numPagesVisible - (numPages - (start - 1));\n }\n\n var pages = _ramda.default.range(start, start + numPagesVisible);\n\n return _ramda.default.map(function (page) {\n return {\n num: page,\n label: page,\n current: page == currentPage\n };\n }, pages);\n}\n\n},{\"ramda\":\"ramda\"}],104:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = configureStore;\n\nvar _redux = require(\"redux\");\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction configureStore(rootReducer) {\n var initialState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var middlewares = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var middlewareEnhancer = _redux.applyMiddleware.apply(void 0, _toConsumableArray(middlewares)); // https://github.com/zalmoxisus/redux-devtools-extension#1-with-redux\n // Apply devToolsExtension if present on client, otherwise, just pass through an Identity function\n\n\n var devToolEnhancer = window.devToolsExtension ? window.devToolsExtension() : function (x) {\n return x;\n }; // build our store!\n\n return (0, _redux.createStore)(rootReducer, initialState, (0, _redux.compose)(middlewareEnhancer, devToolEnhancer));\n}\n\n},{\"redux\":\"redux\"}],105:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createRoutingMiddleware;\n\nvar _urijs = _interopRequireDefault(require(\"urijs\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://redux.js.org/docs/advanced/Middleware.html\nvar URL_INIT = \"ROUTING/URL_INIT\";\n/**\r\n * mapStateToUrl: User provided function to get the URL parameters out of the redux state.\r\n * The middleware will use this to update the URL when the redux state changes.\r\n * @callback mapStateToUrl\r\n * @param {Object} state: the current redux state\r\n * @return {Object} An object with key/value pairs of the parameters to go in the url.\r\n * This object will be passed to URI.search()\r\n * https://medialize.github.io/URI.js/docs.html#accessors-search\r\n * eg { location: state.location.slug } => my-url.com/?location=united-states\r\n */\n\n/**\r\n * hangleUrlChange: User provided function to handle updating the state when the url changes\r\n * @callback hangleUrlChange\r\n * @param {Object} urlParams: the current url params\r\n * @param {Object} store : the current redux store. Use store.getState() and store.dispatch\r\n * @param {Object} event : the popstate event\r\n * @return {Promise|Any} Return a promise if something in handleUrlChange is disptached async.\r\n * Otherwise, it doesn't matter\r\n */\n\n/**\r\n * createRoutingMiddleware: creates a middleware function to be passed to applyMiddleware\r\n * and attaches a window popstate listener\r\n * @param {Function} mapStateToUrl : callback function, see above\r\n * @param {Function} handleUrlChange : callback function, see above\r\n * @param {Boolean} handleLoad : if true, it will call handleUrlChange when the page loads\r\n * @return {Function} redux middleware\r\n */\n\nfunction createRoutingMiddleware(mapStateToUrl, handleUrlChange) {\n var handleLoad = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // return the middlware\n // \"next\" is the next dispatch function\n return function (store) {\n return function (next) {\n // flags are a code smell, but maybe this is ok in the situation.\n // use replaceState instead of pushState if this dispatch came from the popstate\n var shouldReplace = false; // function to run the user-provided handleUrlChange\n\n var executeUrlChange = function executeUrlChange(event) {\n var urlParams = (0, _urijs.default)(window.location).search(true); // set the flag that lets the dispatch function know that it should use replaceState\n\n shouldReplace = true; // call user function to handle the url change. This function will probably call store.dispatch\n\n var change = handleUrlChange(urlParams, store, event); // if handleUrlChange returns a promise, revert the flag only after it's done\n\n if (change && typeof change.then === \"function\") {\n change.then(function () {\n shouldReplace = false;\n });\n } // otherwise, revert it after handleUrlChange is done\n else {\n shouldReplace = false;\n }\n }; // execute handleUrlChange on load if specified\n\n\n if (handleLoad) {\n executeUrlChange();\n } // when the url changes...\n\n\n window.addEventListener(\"popstate\", function (event) {\n event.preventDefault();\n executeUrlChange(event);\n }); // our augmented dispatch function\n\n var dispatch = function dispatch(action) {\n // result is the action itself, this will also update the state\n // http://redux.js.org/docs/api/Store.html#dispatch\n var result = next(action); // execute the user function to get the url params out of the newly updated redux state\n\n var params = mapStateToUrl(store.getState()); // .search uses a ? in the url\n\n var url = _urijs.default.decode((0, _urijs.default)(window.location.href).search(params).toString()); // if the url is different, pushState/replaceState the new url\n\n\n if (!(0, _urijs.default)(url).equals(window.location.href)) {\n // if we're initializing the url params, replace the url state instead of push\n // eg. /profile?loc=27 > /profile?loc=27&breakdown=...\n // when the browser navigates \"back\", we don't want to go back to just /profile?loc=27\n // we want all the breakdown=... stuff\n if (action.type === URL_INIT || shouldReplace === true) {\n history.replaceState(null, null, url);\n } else {\n history.pushState(null, null, url);\n }\n }\n\n return result;\n }; // dispatch immediately to populate the url params\n // (this only happens when createRoutingMiddleware is called)\n\n\n dispatch({\n type: URL_INIT\n }); // return the new dispatch function\n\n return dispatch;\n };\n };\n}\n\n},{\"urijs\":\"urijs\"}],106:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.allFacetValuesFromGroup = allFacetValuesFromGroup;\nexports.selectedFacetsByGroup = selectedFacetsByGroup;\nexports.selectedFacetIdsByGroup = selectedFacetIdsByGroup;\nexports.selectedFacetsFromValues = selectedFacetsFromValues;\nexports.selectedFacetsFromGroup = selectedFacetsFromGroup;\nexports.allSelectedFacets = allSelectedFacets;\nexports.groupHasSelectedChildren = groupHasSelectedChildren;\nexports.valueHasSelectedChildren = valueHasSelectedChildren;\nexports.valuesWithSelectedChildren = valuesWithSelectedChildren;\nexports.groupWithId = groupWithId;\nexports.pathFromValueId = pathFromValueId;\nexports.pathArrayFromFacetLookup = pathArrayFromFacetLookup;\nexports.setSelectedFalseOnAllFacetValues = setSelectedFalseOnAllFacetValues;\nexports.setGroupValues = setGroupValues;\nexports.setSelectedOnFacetValues = setSelectedOnFacetValues;\nexports.setSingularSelectedFacetValue = setSingularSelectedFacetValue;\nexports.filterVisibleFacetsInGroup = filterVisibleFacetsInGroup;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _util = require(\"../util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/** @module search/facets **/\n\n/**\r\n * @typedef {Object} FacetValueShape\r\n * @property {Array} childValues Array of {@link FacetValueShape}\r\n * @property {number} count Number of available records\r\n * @property {string} id Identifier\r\n * @property {string} name Display Name\r\n * @property {boolean} selected Selection state\r\n */\n\n/**\r\n * @typedef {Object} FacetGroupShape\r\n * @property {Array} childGroups Array of {@link FacetGroupShape}\r\n * @property {string} id Identifier for group\r\n\r\n * @property {string} label Display name for group\r\n * @property {array} values Array of {@link FacetValueShape}\r\n */\nfunction allFacetValuesFromGroup(group) {\n var allValues = [];\n\n var grabAllValues = function grabAllValues(value) {\n allValues.push(value);\n\n if (value.childValues.length > 0) {\n value.childValues.forEach(function (cv) {\n return grabAllValues(cv);\n });\n }\n };\n\n group.values.forEach(function (value) {\n return grabAllValues(value);\n });\n\n if (group.hasOwnProperty(\"childGroups\")) {\n group.childGroups.forEach(function (childGroup) {\n childGroup.values.forEach(function (value) {\n return grabAllValues(value);\n });\n });\n }\n\n return allValues;\n} // Returns an object with arrays of selected facet value objects, using\n// their root group name as a key\n\n\nfunction selectedFacetsByGroup(facets) {\n var facetsByGroup = {};\n facets.forEach(function (group) {\n var selectedFacets = selectedFacetsFromGroup(group);\n\n if (selectedFacets.length) {\n facetsByGroup[group.id] = selectedFacetsFromGroup(group);\n }\n });\n return facetsByGroup;\n} // Returns an object with arrays of selected facet ids, using\n// their root group name as a key\n\n\nfunction selectedFacetIdsByGroup(facets) {\n var selectedFacets = selectedFacetsByGroup(facets);\n Object.keys(selectedFacets).forEach(function (k) {\n selectedFacets[k] = selectedFacets[k].map(function (f) {\n return f.id;\n });\n });\n return selectedFacets;\n} // Given an array of facet value objects, return an\n// a flat array of selected facet value object, including\n// selected child values.\n\n\nfunction selectedFacetsFromValues(values) {\n var selected = values.filter(function (v) {\n return v.selected === true;\n });\n values.forEach(function (value) {\n if (value.hasOwnProperty(\"childValues\")) {\n selected = selected.concat(selectedFacetsFromValues(value.childValues));\n }\n });\n return selected;\n} // Given a facet group, return a flat array of selected\n// facets value object, including child groups and all child values.\n\n\nfunction selectedFacetsFromGroup(group) {\n var selected = selectedFacetsFromValues(group.values);\n\n if (group.hasOwnProperty(\"childGroups\")) {\n group.childGroups.forEach(function (childGroup) {\n selected = selected.concat(selectedFacetsFromGroup(childGroup));\n });\n }\n\n return selected;\n}\n\nfunction allSelectedFacets(facets) {\n return facets.reduce(function (all, group) {\n return all.concat(selectedFacetsFromGroup(group));\n }, []);\n}\n\nfunction groupHasSelectedChildren(group) {\n return selectedFacetsFromGroup(group).length > 0;\n}\n\nfunction valueHasSelectedChildren(value) {\n // does not include selection state of group itself\n var selectedChildren = [];\n\n if (value.hasOwnProperty(\"childValues\")) {\n selectedChildren = selectedFacetsFromValues(value.childValues);\n }\n\n return selectedChildren.length > 0;\n} // An array of values who have a child value\n// selected. Does not require the value itself\n// be selected.\n\n\nfunction valuesWithSelectedChildren(group) {\n var all = allFacetValuesFromGroup(group);\n return all.reduce(function (hasSelected, value) {\n if (valueHasSelectedChildren(value)) {\n hasSelected.push(value);\n }\n\n return hasSelected;\n }, []);\n} // Returns the top-level group with id\n\n\nfunction groupWithId(id, facets) {\n var group = null;\n facets.forEach(function (g) {\n if (g.id === id) {\n group = g;\n }\n\n if (!group && g.hasOwnProperty(\"childGroups\")) {\n group = groupWithId(id, g.childGroups);\n }\n });\n return group;\n} // Returns an array of object path segments that\n// resolves to the facet value object in the\n// provided facets state object. This is useful\n// when needing to make immutable changes using\n// R.assocPath or R.lensPath\n// TODO: This performs acceptably for now\n// but is definitely not optimal for very large data sets.\n// Should consider a different approach to setting deeply nested data.\n\n\nfunction pathFromValueId(valueId, facets) {\n // First, flatten the facets object into k,v pairs of properties\n // and stringified \"path\" keys. Then use the paths to\n // lookup the facet value\n var facetLookup = _ramda.default.invertObj((0, _util.flattenObj)(facets));\n\n return pathArrayFromFacetLookup(valueId, facetLookup);\n}\n\nfunction pathArrayFromFacetLookup(valueId, facetLookup) {\n var delimitedPath = facetLookup[valueId]; // Our paths are in format \"a.b.0.c', so convert into [\"a\", \"b\", 0, \"c\"].\n // Then pop off the last path segment so it points to the entire value\n // object, instead of just the id.\n\n var pathArr = delimitedPath.split(\".\");\n pathArr.pop(); // Finally, ensure numerical \"keys\" are properly cast to Numbers\n // or else Ramda will treat them as object keys and\n // convert arrays to objects when using assocPath or lens methods.\n\n pathArr = pathArr.map(function (segment) {\n var numberified = parseInt(segment, 10);\n return isNaN(numberified) ? segment : numberified;\n });\n return pathArr;\n}\n\nfunction setSelectedFalseOnAllFacetValues(facets) {\n var newFacets = _ramda.default.clone(facets);\n\n newFacets.forEach(function (group) {\n if (group.values) {\n group.values.forEach(function (value) {\n value.selected = false;\n\n if (value.childValues) {\n value.childValues.forEach(function (childValue) {\n childValue.selected = false;\n });\n }\n });\n }\n\n if (group.childGroups) {\n group.childGroups.forEach(function (childGroup) {\n childGroup.values.forEach(function (value) {\n value.selected = false;\n\n if (value.childValues) {\n value.childValues.forEach(function (childValue) {\n childValue.selected = false;\n });\n }\n });\n });\n }\n });\n return newFacets;\n} //brute force the facets to the desired value (isSelected)\n\n\nfunction setGroupValues(group, allFacets, isSelected) {\n var index = _ramda.default.findIndex(_ramda.default.propEq('id', group.id), allFacets);\n\n var parentIndex = -1;\n\n if (index == -1) {\n allFacets.forEach(function (facet) {\n if (facet.childGroups.length > 0) {\n index = _ramda.default.findIndex(_ramda.default.propEq('id', group.id), facet.childGroups);\n\n if (index > -1) {\n parentIndex = _ramda.default.findIndex(_ramda.default.propEq('id', facet.id), allFacets);\n }\n }\n });\n }\n\n var drillDown = function drillDown(value) {\n value.childValues.forEach(function (childValue) {\n childValue.selected = isSelected;\n\n if (childValue.childValues) {\n drillDown(childValue);\n }\n });\n };\n\n var newFacets = _ramda.default.clone(group);\n\n if (newFacets.values) {\n newFacets.values.forEach(function (value) {\n value.selected = isSelected;\n\n if (value.childValues) {\n drillDown(value);\n }\n });\n }\n\n if (newFacets.childGroups) {\n newFacets.childGroups.forEach(function (childGroup) {\n childGroup.values.forEach(function (value) {\n value.selected = isSelected;\n\n if (value.childValues) {\n drillDown(value);\n }\n });\n });\n }\n\n if (parentIndex > -1) {\n allFacets[parentIndex].childGroups[index] = newFacets;\n } else {\n allFacets[index] = newFacets;\n }\n\n return allFacets;\n} // Return a new facets object with the give facet value selected\n\n\nfunction setSelectedOnFacetValues(groupId, valueIds, selected, facets) {\n // Lookup the path for the given facetId\n // and change it using assocPath\n if (!valueIds.length) {\n return facets;\n }\n\n var paths = valueIds.map(function (valueId) {\n var group = groupWithId(groupId, facets);\n var pathArr = pathFromValueId(valueId, group);\n\n var index = _ramda.default.findIndex(_ramda.default.propEq(\"id\", groupId), facets);\n\n pathArr = _ramda.default.prepend(index, pathArr); // add \"selected\" to the end of our path\n\n pathArr.push(\"selected\");\n return pathArr;\n });\n return paths.reduce(function (newFacets, path) {\n // NOTE: Using numerical indexes in assocPath only work in\n // Ramda 0.23.0+\n return _ramda.default.assocPath(path, selected, newFacets);\n }, facets);\n} // In a given group, toggle a single facet on/off and set all other\n// to the opposite\n\n\nfunction setSingularSelectedFacetValue(groupId, valueId, selected, facets) {\n var groupLens = _ramda.default.lensPath([_ramda.default.findIndex(_ramda.default.propEq(\"id\", groupId), facets), \"values\"]);\n\n return _ramda.default.over(groupLens, _ramda.default.map(_ramda.default.ifElse(_ramda.default.propEq(\"id\", valueId), _ramda.default.assoc(\"selected\", selected), _ramda.default.assoc(\"selected\", false))), facets);\n} // based on a string search query,\n// filter the facets\n\n\nfunction filterVisibleFacetsInGroup(groupId, query, facets) {\n if (!query || query.trim() === \"\") {\n return facets;\n } // Flatten the facets object into k,v pairs of properties\n // and stringified \"path\" keys. Then use the paths to\n // lookup the facet value\n\n\n var facetLookup = _ramda.default.invertObj((0, _util.flattenObj)(facets));\n\n var group = groupWithId(groupId, facets);\n\n var matchName = function matchName(s) {\n return s.toLowerCase().match(new RegExp(query.toLowerCase(), \"g\"));\n }; // gather all facet values from group that don't match search query\n\n\n var unMatched = _ramda.default.reject(function (v) {\n return matchName(v.name);\n }, allFacetValuesFromGroup(group)); // get an array of object paths from non-matched values\n\n\n var unMatchedPaths = _ramda.default.map(function (f) {\n return pathArrayFromFacetLookup(_ramda.default.prop(\"id\", f), facetLookup);\n }, unMatched); // flag the non-matched facet values as hidden\n\n\n return _ramda.default.reduce(function (newFacets, path) {\n return _ramda.default.assocPath(path.concat([\"hide\"]), true, newFacets);\n }, facets, unMatchedPaths);\n}\n\n},{\"../util\":114,\"ramda\":\"ramda\"}],107:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.allFacetValuesFromGroup = allFacetValuesFromGroup;\nexports.selectedFacetsByGroup = selectedFacetsByGroup;\nexports.selectedFacetIdsByGroup = selectedFacetIdsByGroup;\nexports.selectedFacetsFromValues = selectedFacetsFromValues;\nexports.selectedFacetsFromGroup = selectedFacetsFromGroup;\nexports.setSelectedFalseOnAllFacetValues = setSelectedFalseOnAllFacetValues;\nexports.allSelectedFacets = allSelectedFacets;\nexports.groupHasSelectedChildren = groupHasSelectedChildren;\nexports.valueHasSelectedChildren = valueHasSelectedChildren;\nexports.valuesWithSelectedChildren = valuesWithSelectedChildren;\nexports.pathFromValueId = pathFromValueId;\nexports.groupWithId = groupWithId;\nexports.setSelectedOnFacetValues = setSelectedOnFacetValues;\nexports.filterVisibleFacetsInGroup = filterVisibleFacetsInGroup;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _util = require(\"../util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/** @module search/facets **/\n\n/**\r\n * @typedef {Object} FacetValueShape\r\n * @property {Array} childValues Array of {@link FacetValueShape}\r\n * @property {number} count Number of available records\r\n * @property {string} id Identifier\r\n * @property {string} name Display Name\r\n * @property {boolean} selected Selection state\r\n */\n\n/**\r\n * @typedef {Object} FacetGroupShape\r\n * @property {Array} childGroups Array of {@link FacetGroupShape}\r\n * @property {string} id Identifier for group\r\n\r\n * @property {string} label Display name for group\r\n * @property {array} values Array of {@link FacetValueShape}\r\n */\n\n/**\r\n * Extract all facet values from a facet group, including child groups and child values.\r\n * @param {FacetGroupShape} group The group to filter\r\n * @returns {Array} List of extracted facet values\r\n */\nfunction allFacetValuesFromGroup(group) {\n var allValues = [];\n\n var grabAllValues = function grabAllValues(value) {\n allValues.push(value);\n\n if (value.childValues && value.childValues.length > 0) {\n value.childValues.forEach(function (cv) {\n return grabAllValues(cv);\n });\n }\n };\n\n group.values.forEach(function (value) {\n return grabAllValues(value);\n });\n\n if (group.hasOwnProperty(\"childGroups\")) {\n group.childGroups.forEach(function (childGroup) {\n childGroup.values.forEach(function (value) {\n return grabAllValues(value);\n });\n });\n }\n\n return allValues;\n}\n/**\r\n * Extract selected facet values, grouping by root facet group.\r\n * @param {Array} facets List of facet groups\r\n * @returns {Object>} Lists of selected facet values, keyed by root group id.\r\n */\n\n\nfunction selectedFacetsByGroup(facets) {\n var facetsByGroup = {};\n facets.forEach(function (group) {\n var selectedFacets = selectedFacetsFromGroup(group);\n\n if (selectedFacets.length) {\n facetsByGroup[group.id] = selectedFacetsFromGroup(group);\n }\n });\n return facetsByGroup;\n}\n/**\r\n * Extract just the ids of select facet values from a facet group\r\n * @param {Array} facets List of facet groups\r\n * @returns {object>} Lists of selected ids, keyed by root group id.\r\n */\n\n\nfunction selectedFacetIdsByGroup(facets) {\n var selectedFacets = selectedFacetsByGroup(facets);\n Object.keys(selectedFacets).forEach(function (k) {\n selectedFacets[k] = selectedFacets[k].map(function (f) {\n return f.id;\n });\n });\n return selectedFacets;\n}\n/**\r\n * Extract only selected facet values from a list of facet values. Inclusive of child facet values.\r\n * @param {Array} values Facet value objects to filter\r\n * @returns {Array} A flat list of selected facet values\r\n */\n\n\nfunction selectedFacetsFromValues(values) {\n var selected = values.filter(function (v) {\n return v.selected === true;\n });\n values.forEach(function (value) {\n if (value.hasOwnProperty(\"childValues\")) {\n selected = selected.concat(selectedFacetsFromValues(value.childValues));\n }\n });\n return selected;\n}\n/**\r\n * Extract only selected facet values from a facet group. Inclusive of child facet groups and child facet values.\r\n * @param {FacetGroupShape} values Facet group to filter\r\n * @returns {Array} Only selected facet values\r\n */\n\n\nfunction selectedFacetsFromGroup(group) {\n var selected = selectedFacetsFromValues(group.values);\n\n if (group.hasOwnProperty(\"childGroups\")) {\n group.childGroups.forEach(function (childGroup) {\n selected = selected.concat(selectedFacetsFromGroup(childGroup));\n });\n }\n\n return selected;\n}\n\nfunction setSelectedFalseOnAllFacetValues(facets) {\n var newFacets = _ramda.default.clone(facets);\n\n newFacets.forEach(function (group) {\n if (group.values) {\n group.values.forEach(function (value) {\n value.selected = false;\n\n if (value.childValues) {\n value.childValues.forEach(function (childValue) {\n childValue.selected = false;\n });\n }\n });\n }\n\n if (group.childGroups) {\n group.childGroups.forEach(function (childGroup) {\n childGroup.values.forEach(function (value) {\n value.selected = false;\n\n if (value.childValues) {\n value.childValues.forEach(function (childValue) {\n childValue.selected = false;\n });\n }\n });\n });\n }\n });\n return newFacets;\n}\n/**\r\n * Extract all facet value objects that are selected. Inclusive of all groups, subgroups and child values.\r\n * @param {Array} facets List of facet groups to be filtered\r\n * @returns {Array} Only selected facet values\r\n */\n\n\nfunction allSelectedFacets(facets) {\n return facets.reduce(function (all, group) {\n return all.concat(selectedFacetsFromGroup(group));\n }, []);\n}\n/**\r\n * Does a group have a facet value object that is selected?\r\n * @param {FacetGroupShape} group Facet group to be filtered\r\n * @returns {boolean}\r\n */\n\n\nfunction groupHasSelectedChildren(group) {\n return selectedFacetsFromGroup(group).length > 0;\n}\n/**\r\n * Does a facet value object have a child facet value that is selected?\r\n * @param {FacetGroupShape} group Facet group to check\r\n * @returns {boolean}\r\n */\n\n\nfunction valueHasSelectedChildren(value) {\n // does not include selection state of group itself\n var selectedChildren = [];\n\n if (value.hasOwnProperty(\"childValues\")) {\n selectedChildren = selectedFacetsFromValues(value.childValues);\n }\n\n return selectedChildren.length > 0;\n}\n/**\r\n * Extract facets value objects from a group which has a child value that is selected.\r\n * The parent facet value does not need to be selected in order to be chosen.\r\n * @param {FacetGroupShape}group Facet group to check\r\n * @returns {Array}\r\n */\n\n\nfunction valuesWithSelectedChildren(group) {\n var all = allFacetValuesFromGroup(group);\n return all.reduce(function (hasSelected, value) {\n if (valueHasSelectedChildren(value)) {\n hasSelected.push(value);\n }\n\n return hasSelected;\n }, []);\n} // TODO: This performs acceptably for now\n// but is definitely not optimal for very large data sets.\n// Should consider a different approach to setting deeply nested data.\n\n/**\r\n * Returns an array of object path segments that\r\n * resolves to the facet value object in the\r\n * provided facets state object. This is useful\r\n * when needing to make immutable changes using\r\n * R.assocPath or R.lensPath\r\n * @param {string} valueId\r\n * @param {Array} facets List of facet groups\r\n * @returns {Object}\r\n */\n\n\nfunction pathFromValueId(valueId, facets) {\n // First, flatten the facets object into k,v pairs of properties\n // and stringified \"path\" keys. Then use the paths to\n // lookup the facet value\n var facetLookup = _ramda.default.invertObj((0, _util.flattenObj)(facets));\n\n var delimitedPath = facetLookup[valueId]; // Our paths are in format \"a.b.0.c', so convert into [\"a\", \"b\", 0, \"c\"].\n // Then pop off the last path segment so it points to the entire value\n // object, instead of just the id.\n\n var pathArr = delimitedPath.split(\".\");\n pathArr.pop(); // Finally, ensure numerical \"keys\" are properly cast to Numbers\n // or else Ramda will treat them as object keys and\n // convert arrays to objects when using assocPath or lens methods.\n\n pathArr = pathArr.map(function (segment) {\n var numberified = parseInt(segment, 10);\n return isNaN(numberified) ? segment : numberified;\n });\n return pathArr;\n}\n\nfunction groupWithId(id, facets) {\n var group = null;\n facets.forEach(function (g) {\n if (g.id === id) {\n group = g;\n }\n\n if (!group && g.hasOwnProperty(\"childGroups\")) {\n group = groupWithId(id, g.childGroups);\n }\n });\n return group;\n}\n\nfunction setSelectedOnFacetValues(groupId, valueIds, selected, facets) {\n // Lookup the path for the given facetId\n // and change it using assocPath\n if (!valueIds.length) {\n return facets;\n }\n\n var paths = valueIds.map(function (valueId) {\n var group = groupWithId(groupId, facets);\n var pathArr = pathFromValueId(valueId, group);\n\n var index = _ramda.default.findIndex(_ramda.default.propEq('id', groupId), facets);\n\n pathArr = _ramda.default.prepend(index, pathArr); // add \"selected\" to the end of our path\n\n pathArr.push(\"selected\");\n return pathArr;\n });\n return paths.reduce(function (newFacets, path) {\n // NOTE: Using numerical indexes in assocPath only work in\n // Ramda 0.23.0+\n return _ramda.default.assocPath(path, selected, newFacets);\n }, facets);\n}\n/**\r\n * Create a new facets array with the specified value objects set the desired selected state\r\n * @param {Array} valueIds The ids of the value object we want to affect\r\n * @param {boolean} selected State of the selected property\r\n * @param {Array} facets List of facet groups\r\n * @returns {Array} The new facets array\r\n \r\nexport function setSelectedOnFacetValues(valueIds, selected, facets) {\r\n // Lookup the path for the given facetId\r\n // and change it using assocPath\r\n\r\n if (!valueIds.length) {\r\n return facets;\r\n }\r\n\r\n const paths = valueIds.map(valueId => {\r\n let pathArr = pathFromValueId(valueId, facets);\r\n // add \"selected\" to the end of our path\r\n pathArr.push(\"selected\");\r\n\r\n return pathArr;\r\n });\r\n\r\n return paths.reduce((newFacets, path) => {\r\n // NOTE: Using numerical indexes in assocPath only work in\r\n // Ramda 0.23.0+\r\n return R.assocPath(path, selected, newFacets);\r\n }, facets);\r\n}\r\n\r\n*/\n// based on a string search query,\n// filter the facets\n\n\nfunction filterVisibleFacetsInGroup(group, query) {\n if (!query || query.trim() === \"\") {\n return group;\n }\n\n var matchName = function matchName(s) {\n return s.toLowerCase().match(new RegExp(query.toLowerCase(), \"g\"));\n }; // gather all facet values from group that don't match search query\n\n\n var unMatched = _ramda.default.reject(function (v) {\n return matchName(v.name);\n }, allFacetValuesFromGroup(group)); // get an array of object paths from non-matched values\n //const unMatchedPaths = R.map((f) => pathFromValueId(R.prop(\"id\", f), facets), unMatched);\n // flag the non-matched facet values as hidden\n\n\n return unMatched;\n}\n\n},{\"../util\":114,\"ramda\":\"ramda\"}],108:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RESULTS_DISPLAY_APPEND = exports.RESULTS_DISPLAY_REFRESH = void 0;\n// flags to determine how to handle\n// showing a new result set\nvar RESULTS_DISPLAY_REFRESH = 0;\nexports.RESULTS_DISPLAY_REFRESH = RESULTS_DISPLAY_REFRESH;\nvar RESULTS_DISPLAY_APPEND = 1;\nexports.RESULTS_DISPLAY_APPEND = RESULTS_DISPLAY_APPEND;\n\n},{}],109:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _search = _interopRequireDefault(require(\"./search/search.reducer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// For now, this application only has a single reducer\n// Additional reducers can be added here by using\n// combineReducers() from redux or rolling your\n// own: http://redux.js.org/docs/recipes/reducers/BeyondCombineReducers.html\nvar _default = _search.default;\nexports.default = _default;\n\n},{\"./search/search.reducer\":112}],110:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mapStateToUrl = mapStateToUrl;\nexports.handleUrlChange = handleUrlChange;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _search = require(\"./search/search.actions\");\n\nvar _facets = require(\"./facets\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction mapStateToUrl(state) {\n // choose which parts of the query\n // state we want exposed in the\n // url query string\n var exposedParams = [\"q\", \"sortBy\", \"sortOrder\", \"page\", \"componentGuid\", \"pageGuid\"]; // if we're in pagination mode,\n // we also want to expose the page num\n\n if (state.pagination) {\n exposedParams.push(\"page\");\n }\n\n var selectedFacets;\n\n if (state.facets.length > 0) {\n // get selected facets by group, url-encoding their ids\n selectedFacets = _ramda.default.map(function (g) {\n return _ramda.default.map(function (v) {\n return encodeURIComponent(v);\n }, g);\n }, (0, _facets.selectedFacetIdsByGroup)(state.facets)); // turn selected facets ids into comma delimited string\n\n Object.keys(selectedFacets).forEach(function (k) {\n selectedFacets[k] = selectedFacets[k].join(\",\");\n });\n } else {\n selectedFacets = state.preSelectedFacets;\n } // ecode the query keyword\n\n\n var encodeQuery = _ramda.default.ifElse(_ramda.default.prop(\"q\"), _ramda.default.over(_ramda.default.lensProp(\"q\"), _ramda.default.curry(encodeURIComponent)), _ramda.default.identity); // remove keys with empty values\n\n\n var compactQuery = _ramda.default.filter(_ramda.default.complement(_ramda.default.isNil));\n\n var whitelistParams = _ramda.default.pick(exposedParams);\n\n var processQuery = _ramda.default.compose(encodeQuery, whitelistParams, compactQuery);\n\n return _ramda.default.merge(selectedFacets, processQuery(state.query));\n}\n\nfunction handleUrlChange(urlParams, store) {\n // a list of parameters that we know aren't\n // bound to facet group names\n var nonFacetParams = [\"q\", \"sortOrder\", \"sortBy\", \"page\", \"componentGuid\", \"pageGuid\"];\n var facets = store.getState().facets; // separate out the param types\n\n var queryParams = _ramda.default.pick(nonFacetParams, urlParams);\n\n var facetParams = _ramda.default.omit(nonFacetParams, urlParams);\n\n var newFacets = [];\n var preSelectedFacets = {};\n\n if (facets.length > 0) {\n // get an array of valueIds from { group: valueId, valueId } format\n // and set them to selected. If\n _ramda.default.reduce(function (newFacets, key) {\n return (0, _facets.setSelectedOnFacetValues)(key, facetParams[key], true, facets);\n }, newFacets, _ramda.default.keys(facetParams));\n } else {\n // if facets is empty, it's because we haven't gotten\n // a response yet. So we'll also pass an object of\n // pre-selected facets we can pass to the query\n // Note: In some cases browsers will auto-parse comma delimited\n // query string to an array. If not the case, do it manually \n var conformFacets = _ramda.default.ifElse(_ramda.default.is(Array), _ramda.default.identity, _ramda.default.split(\",\"));\n\n preSelectedFacets = _ramda.default.map(conformFacets, facetParams);\n } // Anytime we expose a number value to the query\n // string it will be sent back to us as a string.\n // Make sure to cast it back to a number here.\n\n\n var castToInt = _ramda.default.curry(parseInt)(_ramda.default.__, 10);\n\n queryParams = _ramda.default.evolve({\n page: castToInt\n }, queryParams); // Provide a new facets object.\n // First, just grab all facets ids from\n // from the facetParams\n //pickIds = R.values();\n\n return store.dispatch((0, _search.mergeQueryParams)(queryParams, newFacets, preSelectedFacets));\n}\n\n},{\"./facets\":106,\"./search/search.actions\":111,\"ramda\":\"ramda\"}],111:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mergeQueryParams = mergeQueryParams;\nexports.loadStart = loadStart;\nexports.loadSuccess = loadSuccess;\nexports.loadFail = loadFail;\nexports.sortChanged = sortChanged;\nexports.incrementPage = incrementPage;\nexports.changePage = changePage;\nexports.keywordsChanged = keywordsChanged;\nexports.facetChanged = facetChanged;\nexports.facetChangedSingular = facetChangedSingular;\nexports.selectFacetGroup = selectFacetGroup;\nexports.clearFacetGroup = clearFacetGroup;\nexports.clearAllFacets = clearAllFacets;\nexports.changeToken = changeToken;\nexports.showMobileFacets = showMobileFacets;\nexports.hideMobileFacets = hideMobileFacets;\nexports.loadResults = loadResults;\nexports.loadNextPage = loadNextPage;\nexports.loadNewPage = loadNewPage;\nexports.loadNewSort = loadNewSort;\nexports.loadNewKeywords = loadNewKeywords;\nexports.loadFacetChange = loadFacetChange;\nexports.loadChangeToken = loadChangeToken;\nexports.loadFacetChangeSingular = loadFacetChangeSingular;\nexports.loadSelectFacetGroup = loadSelectFacetGroup;\nexports.loadClearFacetGroup = loadClearFacetGroup;\nexports.loadClearAllFacets = loadClearAllFacets;\nexports.loadProjectStatusChange = loadProjectStatusChange;\nexports.CHANGE_TOKEN = exports.TOGGLE_MOBILE_FACETS = exports.CLEAR_ALL_FACETS = exports.CLEAR_FACET_GROUP = exports.SELECT_FACET_GROUP = exports.FACET_CHANGED_SINGULAR = exports.FACET_CHANGED = exports.SORT_CHANGED = exports.CHANGE_PAGE = exports.INCREMENT_PAGE = exports.KEYWORDS_CHANGED = exports.MERGE_QUERY_PARAMS = exports.LOAD_RESULTS_SUCCESS = exports.LOAD_RESULTS_FAIL = exports.LOAD_RESULTS_START = void 0;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _resultsDisplay = require(\"../resultsDisplay\");\n\nvar _service = require(\"../service\");\n\nvar _facets = require(\"../facets\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n// Action Names\nvar LOAD_RESULTS_START = \"SEARCH/LOAD_RESULTS_START\";\nexports.LOAD_RESULTS_START = LOAD_RESULTS_START;\nvar LOAD_RESULTS_FAIL = \"SEARCH/LOAD_RESULTS_FAIL\";\nexports.LOAD_RESULTS_FAIL = LOAD_RESULTS_FAIL;\nvar LOAD_RESULTS_SUCCESS = \"SEARCH/LOAD_RESULTS_SUCCESS\";\nexports.LOAD_RESULTS_SUCCESS = LOAD_RESULTS_SUCCESS;\nvar MERGE_QUERY_PARAMS = \"SEARCH/MERGE_QUERY_PARAMS\";\nexports.MERGE_QUERY_PARAMS = MERGE_QUERY_PARAMS;\nvar KEYWORDS_CHANGED = \"SEARCH/KEYWORDS_CHANGED\";\nexports.KEYWORDS_CHANGED = KEYWORDS_CHANGED;\nvar INCREMENT_PAGE = \"SEARCH/INCREMENT_PAGE\";\nexports.INCREMENT_PAGE = INCREMENT_PAGE;\nvar CHANGE_PAGE = \"SEARCH/CHANGE_PAGE\";\nexports.CHANGE_PAGE = CHANGE_PAGE;\nvar SORT_CHANGED = \"SEARCH/SORT_CHANGED\";\nexports.SORT_CHANGED = SORT_CHANGED;\nvar FACET_CHANGED = \"SEARCH/FACET_CHANGED\";\nexports.FACET_CHANGED = FACET_CHANGED;\nvar FACET_CHANGED_SINGULAR = \"SEARCH/FACET_CHANGED_SINGULAR\";\nexports.FACET_CHANGED_SINGULAR = FACET_CHANGED_SINGULAR;\nvar SELECT_FACET_GROUP = \"SEARCH/SELECT_FACET_GROUP\";\nexports.SELECT_FACET_GROUP = SELECT_FACET_GROUP;\nvar CLEAR_FACET_GROUP = \"SEARCH/CLEAR_FACET_GROUP\";\nexports.CLEAR_FACET_GROUP = CLEAR_FACET_GROUP;\nvar CLEAR_ALL_FACETS = \"SEARCH/CLEAR_ALL_FACETS\";\nexports.CLEAR_ALL_FACETS = CLEAR_ALL_FACETS;\nvar TOGGLE_MOBILE_FACETS = \"SEARCH/TOGGLE_MOBILE_FACETS\";\nexports.TOGGLE_MOBILE_FACETS = TOGGLE_MOBILE_FACETS;\nvar CHANGE_TOKEN = \"SEARCH/CHANGE_TOKEN\"; // Single-dispatch Action Creators\n\nexports.CHANGE_TOKEN = CHANGE_TOKEN;\n\nfunction mergeQueryParams(params, facets, preSelectedFacets) {\n return {\n type: MERGE_QUERY_PARAMS,\n payload: {\n params: params,\n facets: facets,\n preSelectedFacets: preSelectedFacets\n }\n };\n}\n\nfunction loadStart() {\n return {\n type: LOAD_RESULTS_START,\n payload: null\n };\n}\n\nfunction loadSuccess(response, resultsDisplay, mapResponseToState) {\n return {\n type: LOAD_RESULTS_SUCCESS,\n payload: {\n response: response,\n resultsDisplay: resultsDisplay,\n mapResponseToState: mapResponseToState\n }\n };\n}\n\nfunction loadFail(err) {\n return {\n type: LOAD_RESULTS_FAIL,\n payload: err\n };\n}\n\nfunction sortChanged(sorters) {\n return {\n type: SORT_CHANGED,\n payload: sorters\n };\n}\n\nfunction incrementPage() {\n return {\n type: INCREMENT_PAGE,\n payload: null\n };\n}\n\nfunction changePage(pageNum) {\n return {\n type: CHANGE_PAGE,\n payload: pageNum\n };\n}\n\nfunction keywordsChanged(keywords) {\n return {\n type: KEYWORDS_CHANGED,\n payload: keywords\n };\n}\n\nfunction facetChanged(groupId, facetId, facetValue) {\n return {\n type: FACET_CHANGED,\n payload: {\n groupId: groupId,\n facetId: facetId,\n facetValue: facetValue\n }\n };\n}\n\nfunction facetChangedSingular(groupId, valueId, selected) {\n return {\n type: FACET_CHANGED_SINGULAR,\n payload: {\n groupId: groupId,\n valueId: valueId,\n selected: selected\n }\n };\n}\n\nfunction selectFacetGroup(group) {\n return {\n type: SELECT_FACET_GROUP,\n payload: group\n };\n}\n\nfunction clearFacetGroup(group) {\n return {\n type: CLEAR_FACET_GROUP,\n payload: group\n };\n}\n\nfunction clearAllFacets() {\n return {\n type: CLEAR_ALL_FACETS,\n payload: null\n };\n}\n\nfunction changeToken() {\n return {\n type: CHANGE_TOKEN,\n payload: null\n };\n}\n\nfunction showMobileFacets() {\n return {\n type: TOGGLE_MOBILE_FACETS,\n payload: true\n };\n}\n\nfunction hideMobileFacets() {\n return {\n type: TOGGLE_MOBILE_FACETS,\n payload: false\n };\n} // Multi-dispatch Action Creators\n// Note that multiple dispatches inside an\n// action creator only work when using the\n// redux-thunk middleware. These action\n// creators MUST return a function.\n// https://github.com/gaearon/redux-thunk\n\n\nfunction loadResults() {\n var resultsDisplay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _resultsDisplay.RESULTS_DISPLAY_APPEND;\n return function (dispatch, getState, _ref) {\n var mapResponseToState = _ref.mapResponseToState,\n fetchSearchResults = _ref.fetchSearchResults;\n var state = getState();\n var url = state.url; // get our query params, and add any pre-selected facets we\n // might have. Also, encode our keyword query.\n\n var query = _ramda.default.merge(state.query, state.preSelectedFacets); // Get an object of selected facets by id, and URI encode their values\n\n\n var facets = (0, _facets.selectedFacetIdsByGroup)(getState().facets); // merge with pre-selected facets\n\n _ramda.default.merge(facets, state.preSelectedFacets);\n\n dispatch(loadStart());\n\n var _fetchSearchResults = fetchSearchResults(url, _ramda.default.merge(query, facets)),\n _fetchSearchResults2 = _slicedToArray(_fetchSearchResults, 2),\n searchPromise = _fetchSearchResults2[0],\n featuredPromise = _fetchSearchResults2[1];\n\n $.when(searchPromise, featuredPromise).then(function (searchResponse, featuredResponse) {\n var response = (0, _service.handleMultipleResponses)([searchResponse, featuredResponse]);\n dispatch(loadSuccess(response, resultsDisplay, mapResponseToState));\n }).fail(function (error) {\n dispatch(loadFail(error));\n });\n };\n}\n\nfunction loadNextPage() {\n return function (dispatch) {\n dispatch(incrementPage());\n dispatch(loadResults());\n };\n}\n\nfunction loadNewPage(pageNum) {\n return function (dispatch) {\n dispatch(changePage(pageNum));\n dispatch(loadResults());\n };\n}\n\nfunction loadNewSort(sorters) {\n return function (dispatch) {\n dispatch(sortChanged(sorters));\n dispatch(loadResults());\n };\n}\n\nfunction loadNewKeywords(keywords) {\n return function (dispatch) {\n dispatch(keywordsChanged(keywords));\n dispatch(loadResults());\n };\n}\n\nfunction loadFacetChange(groupId, facetId, facetValue) {\n return function (dispatch) {\n dispatch(facetChanged(groupId, facetId, facetValue));\n dispatch(loadResults());\n };\n}\n\nfunction loadChangeToken() {\n return function (dispatch) {\n dispatch(changeToken());\n dispatch(loadResults());\n };\n}\n\nfunction loadFacetChangeSingular(groupId, valueId, selected) {\n return function (dispatch) {\n dispatch(facetChangedSingular(groupId, valueId, selected));\n dispatch(loadResults());\n };\n}\n\nfunction loadSelectFacetGroup(group) {\n return function (dispatch) {\n dispatch(selectFacetGroup(group));\n dispatch(loadResults());\n };\n}\n\nfunction loadClearFacetGroup(group) {\n return function (dispatch) {\n dispatch(clearFacetGroup(group));\n dispatch(loadResults());\n };\n}\n\nfunction loadClearAllFacets() {\n return function (dispatch) {\n dispatch(clearAllFacets());\n dispatch(loadResults());\n };\n}\n\nfunction loadProjectStatusChange(groupId, valueId, selected) {\n return function (dispatch) {\n dispatch(clearAllFacets());\n dispatch(facetChangedSingular(groupId, valueId, selected));\n dispatch(loadResults());\n };\n}\n\n},{\"../facets\":106,\"../resultsDisplay\":108,\"../service\":113,\"ramda\":\"ramda\"}],112:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = searchReducer;\nexports.initialState = void 0;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _facets = require(\"../facets\");\n\nvar _resultsDisplay = require(\"../resultsDisplay\");\n\nvar _search = require(\"./search.actions\");\n\nvar _initialState, _actionMap;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar initialState = (_initialState = {\n query: {\n q: null,\n sortBy: \"relevance\",\n sortOrder: \"asc\",\n page: 1,\n perPage: 10,\n pageId: \"00000000-0000-0000-0000-000000000000\",\n loadAllPages: true\n },\n token: {},\n url: null,\n errorMsg: null,\n loading: true,\n pagination: false,\n totalResults: 0,\n results: [],\n resultsDisplayStrategy: _resultsDisplay.RESULTS_DISPLAY_APPEND,\n sorters: [],\n dictionary: {},\n facets: []\n}, _defineProperty(_initialState, \"token\", {}), _defineProperty(_initialState, \"numOpenGroups\", null), _defineProperty(_initialState, \"preSelectedFacets\", {}), _defineProperty(_initialState, \"initialResults\", null), _defineProperty(_initialState, \"isFirstLoad\", true), _defineProperty(_initialState, \"mobileFacetsShown\", false), _defineProperty(_initialState, \"spellcheckSuggestion\", null), _defineProperty(_initialState, \"firstResultTaxonomy\", []), _defineProperty(_initialState, \"perPageTaxonomy\", []), _initialState);\nexports.initialState = initialState;\nvar actionMap = (_actionMap = {}, _defineProperty(_actionMap, _search.LOAD_RESULTS_START, loadStart), _defineProperty(_actionMap, _search.LOAD_RESULTS_SUCCESS, loadSuccess), _defineProperty(_actionMap, _search.LOAD_RESULTS_FAIL, loadError), _defineProperty(_actionMap, _search.SORT_CHANGED, updateSort), _defineProperty(_actionMap, _search.MERGE_QUERY_PARAMS, updateQueryParams), _defineProperty(_actionMap, _search.KEYWORDS_CHANGED, updateKeywords), _defineProperty(_actionMap, _search.INCREMENT_PAGE, incrementPage), _defineProperty(_actionMap, _search.CHANGE_PAGE, changePage), _defineProperty(_actionMap, _search.FACET_CHANGED, changeFacet), _defineProperty(_actionMap, _search.FACET_CHANGED_SINGULAR, changeFacetSingular), _defineProperty(_actionMap, _search.SELECT_FACET_GROUP, selectFacetGroup), _defineProperty(_actionMap, _search.CLEAR_FACET_GROUP, clearFacetGroup), _defineProperty(_actionMap, _search.CLEAR_ALL_FACETS, clearAllFacets), _defineProperty(_actionMap, _search.TOGGLE_MOBILE_FACETS, toggleMobileFacets), _defineProperty(_actionMap, _search.CHANGE_TOKEN, changeToken), _actionMap);\n\nfunction searchReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var actionType = actionMap[action.type];\n return actionType ? actionType(state, action) : state;\n}\n\nfunction loadStart(state, action) {\n return _ramda.default.merge(state, {\n loading: true\n });\n}\n\nfunction loadSuccess(state, action) {\n var _action$payload = action.payload,\n response = _action$payload.response,\n mapResponseToState = _action$payload.mapResponseToState;\n return _ramda.default.merge(mapResponseToState(response, state), {\n loading: false,\n isFirstLoad: false,\n preSelectedFacets: {}\n });\n}\n\nfunction loadError(state, action) {\n return _ramda.default.merge(state, {\n loading: false,\n errorMsg: action.payload\n });\n}\n\nfunction updateSort(state, action) {\n var activeSorter = _ramda.default.find(_ramda.default.propEq(\"isActive\", true), action.payload);\n\n return _ramda.default.merge(state, {\n sorters: action.payload,\n resultsDisplayStrategy: _resultsDisplay.RESULTS_DISPLAY_REFRESH,\n query: _ramda.default.merge(state.query, {\n sortBy: activeSorter.value,\n sortOrder: activeSorter.direction,\n page: 1\n })\n });\n}\n\nfunction updateQueryParams(state, action) {\n return _ramda.default.merge(state, {\n query: _ramda.default.merge(state.query, action.payload.params),\n facets: action.payload.facets,\n preSelectedFacets: action.payload.preSelectedFacets\n });\n}\n\nfunction incrementPage(state, action) {\n var pageNum = parseInt(state.query.page, 10) + 1;\n return _ramda.default.merge(state, {\n resultsDisplayStrategy: _resultsDisplay.RESULTS_DISPLAY_APPEND,\n query: _ramda.default.merge(state.query, {\n page: pageNum\n })\n });\n}\n\nfunction changePage(state, action) {\n return _ramda.default.merge(state, {\n resultsDisplayStrategy: _resultsDisplay.RESULTS_DISPLAY_REFRESH,\n query: _ramda.default.merge(state.query, {\n page: action.payload\n })\n });\n}\n\nfunction updateKeywords(state, action) {\n return _ramda.default.merge(state, {\n resultsDisplayStrategy: _resultsDisplay.RESULTS_DISPLAY_REFRESH,\n query: _ramda.default.merge(state.query, {\n q: action.payload,\n page: 1\n })\n });\n}\n\nfunction changeFacet(state, action) {\n // We want to provide a new facet object to our\n // state with a single facet changed.\n // Lookup the path for the given facetId\n // and change it using assocPath\n var groupId = action.payload.groupId;\n var facetId = action.payload.facetId;\n var facetValue = action.payload.facetValue;\n var newFacets = (0, _facets.setSelectedOnFacetValues)(groupId, [facetId], facetValue, state.facets);\n return _ramda.default.merge(state, {\n facets: newFacets,\n resultsDisplayStrategy: _resultsDisplay.RESULTS_DISPLAY_REFRESH,\n query: _ramda.default.merge(state.query, {\n page: 1\n })\n });\n}\n\nfunction changeToken(state, action) {\n /*\r\n return R.mergeDeepRight(state, {\r\n resultsDisplayStrategy: RESULTS_DISPLAY_REFRESH,\r\n query: R.pipe(\r\n R.dissocPath([\"query\", \"componentGuid\"]),\r\n R.dissocPath([\"query\", \"pageGuid\"])\r\n )(state)\r\n });*/\n return _ramda.default.pipe(_ramda.default.dissocPath([\"query\", \"componentGuid\"]), _ramda.default.dissocPath([\"query\", \"pageGuid\"]))(state);\n}\n\nfunction changeFacetSingular(state, action) {\n // Rather than change a single facet, just replace\n // the entire facet group with the one passed in\n var _action$payload2 = action.payload,\n groupId = _action$payload2.groupId,\n valueId = _action$payload2.valueId,\n selected = _action$payload2.selected;\n var newFacets = (0, _facets.setSingularSelectedFacetValue)(groupId, valueId, selected, state.facets);\n return _ramda.default.merge(state, {\n facets: newFacets,\n resultsDisplayStrategy: _resultsDisplay.RESULTS_DISPLAY_REFRESH,\n query: _ramda.default.merge(state.query, {\n page: 1\n })\n });\n}\n\nfunction selectFacetGroup(state, action) {\n var group = action.payload; //const groupFacetIds = R.map(R.prop(\"id\"), allFacetValuesFromGroup(group));\n\n var newFacets = (0, _facets.setGroupValues)(group, state.facets, true);\n return _ramda.default.merge(state, {\n facets: newFacets,\n resultsDisplayStrategy: _resultsDisplay.RESULTS_DISPLAY_REFRESH,\n query: _ramda.default.merge(state.query, {\n page: 1\n })\n });\n}\n\nfunction clearFacetGroup(state, action) {\n var group = action.payload; //const selectedFacetIds = selectedFacetsFromGroup(group).map(v => v.id);\n\n var newFacets = (0, _facets.setGroupValues)(group, state.facets, false);\n return _ramda.default.merge(state, {\n facets: newFacets,\n resultsDisplayStrategy: _resultsDisplay.RESULTS_DISPLAY_REFRESH,\n query: _ramda.default.merge(state.query, {\n page: 1\n })\n });\n}\n\nfunction clearAllFacets(state, action) {\n state = _ramda.default.pipe(_ramda.default.dissocPath([\"query\", \"componentGuid\"]), _ramda.default.dissocPath([\"query\", \"pageGuid\"]))(state);\n var facets = state.facets;\n var selectedFacetIds = facets.reduce(function (all, group) {\n return all.concat((0, _facets.selectedFacetsFromGroup)(group).map(function (v) {\n return v.id;\n }));\n }, []);\n var newFacets = (0, _facets.setSelectedFalseOnAllFacetValues)(facets);\n return _ramda.default.merge(state, {\n facets: newFacets,\n resultsDisplayStrategy: _resultsDisplay.RESULTS_DISPLAY_REFRESH,\n query: _ramda.default.merge(state.query, {\n page: 1\n })\n });\n}\n\nfunction toggleMobileFacets(state, action) {\n return _ramda.default.merge({\n mobileFacetsShown: action.payload\n }, state);\n}\n\n},{\"../facets\":106,\"../resultsDisplay\":108,\"./search.actions\":111,\"ramda\":\"ramda\"}],113:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fetchSearchResults = fetchSearchResults;\nexports.handleMultipleResponses = handleMultipleResponses;\nexports.mapResponseToState = mapResponseToState;\nexports.mapFiltersToFacets = mapFiltersToFacets;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _util = require(\"../util\");\n\nvar _resultsDisplay = require(\"./resultsDisplay\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar newResults = _ramda.default.curry(function (newResults, oldResults, strategy) {\n return strategy === _resultsDisplay.RESULTS_DISPLAY_APPEND ? _ramda.default.concat(oldResults || [], newResults || []) : newResults || [];\n});\n\nfunction fetchSearchResults(url, query) {\n var nonFilters = [\"pageId\", \"page\", \"pageGuid\", \"perPage\", \"q\", \"sortBy\", \"sortOrder\", \"loadAllPages\", \"numberOfItems\", \"startOffset\", \"componentGuid\"];\n\n var stringifyArrayParams = _ramda.default.map(function (v) {\n return v instanceof Array ? v.join(\";\") : v;\n });\n\n var keyName = function keyName(key) {\n return _ramda.default.contains(key, nonFilters) ? key : \"\".concat(key);\n };\n\n var filterizeKeys = _ramda.default.partial(_util.renameKeysWith, [keyName]);\n\n var fixQuery = _ramda.default.pipe(stringifyArrayParams, filterizeKeys);\n\n var featuredResultsPromise = query.q !== null ? _jquery.default.ajax({\n url: \"/api/FeaturedResultsApi/GetFeaturedItem\",\n data: {\n keyword: query.q\n }\n }).catch(function () {\n return {};\n }) : {};\n\n var searchPromise = _jquery.default.ajax({\n url: url,\n data: _ramda.default.merge({\n pageId: query.pageId\n }, fixQuery(query))\n });\n\n return [searchPromise, featuredResultsPromise];\n} // for handling queries that include a call to get Featured Items,\n// which have result items that need to get merged into \n// the response\n\n\nfunction handleMultipleResponses(responses) {\n return _ramda.default.reduce(function (obj, resp) {\n var data = resp[0];\n\n if (data) {\n // NOTE: this assumes that the response for Featured Items\n // occurs first in the array, respecting the order they\n // were passed into $.when()\n if (data.results) {\n return _ramda.default.merge(obj, data); // handle a normal search query case\n } else {\n // otherwise, seed the new results into the response,\n // update result totals and perPage count\n obj = _ramda.default.assoc(\"results\", _ramda.default.insertAll(0, data, obj.results), obj);\n obj = _ramda.default.assoc(\"totalResults\", obj.totalResults + data.length, obj);\n obj = _ramda.default.assocPath([\"request\", \"perPage\"], obj.request.perPage, obj);\n return obj;\n }\n } else {\n return obj; // pass through if no response data found\n }\n }, {\n results: []\n }, responses);\n}\n\nfunction mapResponseToState(response, state) {\n var request = response.request;\n\n var castToInt = _ramda.default.curry(parseInt)(_ramda.default.__, 10);\n\n var mapFilters = _ramda.default.compose(_ramda.default.partial(mapFiltersToFacets, [response.filters]));\n\n return _ramda.default.evolve({\n totalResults: function totalResults() {\n return parseInt(response.totalResults, 10);\n },\n results: newResults(response.results, _ramda.default.__, state.resultsDisplayStrategy),\n facets: function facets() {\n return response.filters ? mapFilters(response.facets) : response.facets;\n },\n spellcheckSuggestion: function spellcheckSuggestion() {\n return response.spellcheckSuggestion;\n },\n token: function token() {\n return response.token;\n },\n firstResultTaxonomy: function firstResultTaxonomy() {\n return response.firstResultTaxonomy;\n },\n perPageTaxonomy: function perPageTaxonomy() {\n return response.perPageTaxonomy;\n },\n query: _ramda.default.merge(_ramda.default.__, {\n pageId: request.pageId,\n page: castToInt(request.page || 0),\n perPage: castToInt(request.perPage || 10),\n sortOrder: request.sortOrder,\n loadAllPages: false\n })\n }, state);\n} // The search API returns some facet data outside of\n// facets, and formatted in an incompatible manner. Clean it up here.\n\n\nfunction mapFiltersToFacets(filters, facets) {\n var addNamesAsIds = _ramda.default.map(function (v) {\n return _ramda.default.evolve({\n id: function id() {\n return v.name;\n },\n childValues: addNamesAsIds\n }, v);\n });\n\n var rehabFilters = _ramda.default.pipe(_ramda.default.map(function (filter) {\n return _ramda.default.assoc(\"id\", filter.name.toLowerCase(), filter);\n }), // subgroups do not come with ids, add one\n _ramda.default.map(function (filter) {\n return (0, _util.renameKeys)({\n locations: \"values\",\n name: \"label\"\n })(filter);\n }), // subgroup keys are not correct, rename them\n _ramda.default.map(function (filter) {\n return _ramda.default.over(_ramda.default.lensProp(\"values\"), addNamesAsIds, filter);\n }) // the location ids we get from the backend aren't valid to use on the backend. Replace them with the display name\n );\n\n var locationIdx = _ramda.default.findIndex(_ramda.default.propEq(\"id\", \"places\"))(facets);\n\n return locationIdx !== -1 ? _ramda.default.assocPath([locationIdx, \"childGroups\"], rehabFilters(filters), facets) : facets;\n}\n\n},{\"../util\":114,\"./resultsDisplay\":108,\"jquery\":\"jquery\",\"ramda\":\"ramda\"}],114:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flattenObj = flattenObj;\nexports.renameKeysWith = exports.renameKeys = void 0;\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n// Utility function to map object paths to values\n// See: https://github.com/ramda/ramda/wiki/Cookbook#flatten-a-nested-object-into-dot-separated-key--value-pairs\nfunction flattenObj(obj) {\n var go = function go(obj_) {\n return _ramda.default.chain(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n k = _ref2[0],\n v = _ref2[1];\n\n if (_typeof(v) == \"object\") {\n return _ramda.default.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n k_ = _ref4[0],\n v_ = _ref4[1];\n\n return [\"\".concat(k, \".\").concat(k_), v_];\n }, go(v));\n } else {\n return [[k, v]];\n }\n }, _ramda.default.toPairs(obj_));\n };\n\n return _ramda.default.fromPairs(go(obj));\n}\n/**\r\n * Creates a new object with the own properties of the provided object, but the\r\n * keys renamed according to the keysMap object as `{oldKey: newKey}`.\r\n * When some key is not found in the keysMap, then it's passed as-is.\r\n *\r\n * Keep in mind that in the case of keys conflict is behaviour undefined and\r\n * the result may vary between various JS engines!\r\n *\r\n * @sig {a: b} -> {a: *} -> {b: *}\r\n */\n\n\nvar renameKeys = _ramda.default.curry(function (keysMap, obj) {\n return _ramda.default.reduce(function (acc, key) {\n return _ramda.default.assoc(keysMap[key] || key, obj[key], acc);\n }, {}, _ramda.default.keys(obj));\n}); // like renameKeys, but take a function instead of a map\n\n\nexports.renameKeys = renameKeys;\n\nvar renameKeysWith = _ramda.default.curry(function (fn, obj) {\n return _ramda.default.pipe(_ramda.default.toPairs, _ramda.default.map(_ramda.default.adjust(0, fn)), _ramda.default.fromPairs)(obj);\n});\n\nexports.renameKeysWith = renameKeysWith;\n\n},{\"ramda\":\"ramda\"}],115:[function(require,module,exports){\n'use strict';\n/*\r\n * 1. Check if the browser supports `position: sticky` natively or is too old to run the polyfill.\r\n * If either of these is the case set `destroy` flag. It will be checked later to disable key features\r\n * of the polyfill, but the API will remain functional to avoid breaking things.\r\n */\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar destroy = false;\nvar isWindowDefined = typeof window !== 'undefined'; // The polyfill can’t function properly without `window` or `window.getComputedStyle`.\n\nif (!isWindowDefined || !window.getComputedStyle) destroy = true; // Dont’t get in a way if the browser supports `position: sticky` natively.\nelse {\n var testNode = document.createElement('div');\n if (['', '-webkit-', '-moz-', '-ms-'].some(function (prefix) {\n try {\n testNode.style.position = prefix + 'sticky';\n } catch (e) {}\n\n return testNode.style.position != '';\n })) destroy = true;\n}\n/*\r\n * 2. “Global” vars used across the polyfill\r\n */\n\nvar isInitialized = false; // Check if Shadow Root constructor exists to make further checks simpler\n\nvar shadowRootExists = typeof ShadowRoot !== 'undefined'; // Last saved scroll position\n\nvar scroll = {\n top: null,\n left: null\n}; // Array of created Sticky instances\n\nvar stickies = [];\n/*\r\n * 3. Utility functions\r\n */\n\nfunction extend(targetObj, sourceObject) {\n for (var key in sourceObject) {\n if (sourceObject.hasOwnProperty(key)) {\n targetObj[key] = sourceObject[key];\n }\n }\n}\n\nfunction parseNumeric(val) {\n return parseFloat(val) || 0;\n}\n\nfunction getDocOffsetTop(node) {\n var docOffsetTop = 0;\n\n while (node) {\n docOffsetTop += node.offsetTop;\n node = node.offsetParent;\n }\n\n return docOffsetTop;\n}\n/*\r\n * 4. Sticky class\r\n */\n\n\nvar Sticky = /*#__PURE__*/function () {\n function Sticky(node) {\n _classCallCheck(this, Sticky);\n\n if (!(node instanceof HTMLElement)) throw new Error('First argument must be HTMLElement');\n if (stickies.some(function (sticky) {\n return sticky._node === node;\n })) throw new Error('Stickyfill is already applied to this node');\n this._node = node;\n this._stickyMode = null;\n this._active = false;\n stickies.push(this);\n this.refresh();\n }\n\n _createClass(Sticky, [{\n key: \"refresh\",\n value: function refresh() {\n if (destroy || this._removed) return;\n if (this._active) this._deactivate();\n var node = this._node;\n /*\r\n * 1. Save node computed props\r\n */\n\n var nodeComputedStyle = getComputedStyle(node);\n var nodeComputedProps = {\n position: nodeComputedStyle.position,\n top: nodeComputedStyle.top,\n display: nodeComputedStyle.display,\n marginTop: nodeComputedStyle.marginTop,\n marginBottom: nodeComputedStyle.marginBottom,\n marginLeft: nodeComputedStyle.marginLeft,\n marginRight: nodeComputedStyle.marginRight,\n cssFloat: nodeComputedStyle.cssFloat\n };\n /*\r\n * 2. Check if the node can be activated\r\n */\n\n if (isNaN(parseFloat(nodeComputedProps.top)) || nodeComputedProps.display == 'table-cell' || nodeComputedProps.display == 'none') return;\n this._active = true;\n /*\r\n * 3. Check if the current node position is `sticky`. If it is, it means that the browser supports sticky positioning,\r\n * but the polyfill was force-enabled. We set the node’s position to `static` before continuing, so that the node\r\n * is in it’s initial position when we gather its params.\r\n */\n\n var originalPosition = node.style.position;\n if (nodeComputedStyle.position == 'sticky' || nodeComputedStyle.position == '-webkit-sticky') node.style.position = 'static';\n /*\r\n * 4. Get necessary node parameters\r\n */\n\n var referenceNode = node.parentNode;\n var parentNode = shadowRootExists && referenceNode instanceof ShadowRoot ? referenceNode.host : referenceNode;\n var nodeWinOffset = node.getBoundingClientRect();\n var parentWinOffset = parentNode.getBoundingClientRect();\n var parentComputedStyle = getComputedStyle(parentNode);\n this._parent = {\n node: parentNode,\n styles: {\n position: parentNode.style.position\n },\n offsetHeight: parentNode.offsetHeight\n };\n this._offsetToWindow = {\n left: nodeWinOffset.left,\n right: document.documentElement.clientWidth - nodeWinOffset.right\n };\n this._offsetToParent = {\n top: nodeWinOffset.top - parentWinOffset.top - parseNumeric(parentComputedStyle.borderTopWidth),\n left: nodeWinOffset.left - parentWinOffset.left - parseNumeric(parentComputedStyle.borderLeftWidth),\n right: -nodeWinOffset.right + parentWinOffset.right - parseNumeric(parentComputedStyle.borderRightWidth)\n };\n this._styles = {\n position: originalPosition,\n top: node.style.top,\n bottom: node.style.bottom,\n left: node.style.left,\n right: node.style.right,\n width: node.style.width,\n marginTop: node.style.marginTop,\n marginLeft: node.style.marginLeft,\n marginRight: node.style.marginRight\n };\n var nodeTopValue = parseNumeric(nodeComputedProps.top);\n this._limits = {\n start: nodeWinOffset.top + window.pageYOffset - nodeTopValue,\n end: parentWinOffset.top + window.pageYOffset + parentNode.offsetHeight - parseNumeric(parentComputedStyle.borderBottomWidth) - node.offsetHeight - nodeTopValue - parseNumeric(nodeComputedProps.marginBottom)\n };\n /*\r\n * 5. Ensure that the node will be positioned relatively to the parent node\r\n */\n\n var parentPosition = parentComputedStyle.position;\n\n if (parentPosition != 'absolute' && parentPosition != 'relative') {\n parentNode.style.position = 'relative';\n }\n /*\r\n * 6. Recalc node position.\r\n * It’s important to do this before clone injection to avoid scrolling bug in Chrome.\r\n */\n\n\n this._recalcPosition();\n /*\r\n * 7. Create a clone\r\n */\n\n\n var clone = this._clone = {};\n clone.node = document.createElement('div'); // Apply styles to the clone\n\n extend(clone.node.style, {\n width: nodeWinOffset.right - nodeWinOffset.left + 'px',\n height: nodeWinOffset.bottom - nodeWinOffset.top + 'px',\n marginTop: nodeComputedProps.marginTop,\n marginBottom: nodeComputedProps.marginBottom,\n marginLeft: nodeComputedProps.marginLeft,\n marginRight: nodeComputedProps.marginRight,\n cssFloat: nodeComputedProps.cssFloat,\n padding: 0,\n border: 0,\n borderSpacing: 0,\n fontSize: '1em',\n position: 'static'\n });\n referenceNode.insertBefore(clone.node, node);\n clone.docOffsetTop = getDocOffsetTop(clone.node);\n }\n }, {\n key: \"_recalcPosition\",\n value: function _recalcPosition() {\n if (!this._active || this._removed) return;\n var stickyMode = scroll.top <= this._limits.start ? 'start' : scroll.top >= this._limits.end ? 'end' : 'middle';\n if (this._stickyMode == stickyMode) return;\n\n switch (stickyMode) {\n case 'start':\n extend(this._node.style, {\n position: 'absolute',\n left: this._offsetToParent.left + 'px',\n right: this._offsetToParent.right + 'px',\n top: this._offsetToParent.top + 'px',\n bottom: 'auto',\n width: 'auto',\n marginLeft: 0,\n marginRight: 0,\n marginTop: 0\n });\n break;\n\n case 'middle':\n extend(this._node.style, {\n position: 'fixed',\n left: this._offsetToWindow.left + 'px',\n right: this._offsetToWindow.right + 'px',\n top: this._styles.top,\n bottom: 'auto',\n width: 'auto',\n marginLeft: 0,\n marginRight: 0,\n marginTop: 0\n });\n break;\n\n case 'end':\n extend(this._node.style, {\n position: 'absolute',\n left: this._offsetToParent.left + 'px',\n right: this._offsetToParent.right + 'px',\n top: 'auto',\n bottom: 0,\n width: 'auto',\n marginLeft: 0,\n marginRight: 0\n });\n break;\n }\n\n this._stickyMode = stickyMode;\n }\n }, {\n key: \"_fastCheck\",\n value: function _fastCheck() {\n if (!this._active || this._removed) return;\n if (Math.abs(getDocOffsetTop(this._clone.node) - this._clone.docOffsetTop) > 1 || Math.abs(this._parent.node.offsetHeight - this._parent.offsetHeight) > 1) this.refresh();\n }\n }, {\n key: \"_deactivate\",\n value: function _deactivate() {\n var _this = this;\n\n if (!this._active || this._removed) return;\n\n this._clone.node.parentNode.removeChild(this._clone.node);\n\n delete this._clone;\n extend(this._node.style, this._styles);\n delete this._styles; // Check whether element’s parent node is used by other stickies.\n // If not, restore parent node’s styles.\n\n if (!stickies.some(function (sticky) {\n return sticky !== _this && sticky._parent && sticky._parent.node === _this._parent.node;\n })) {\n extend(this._parent.node.style, this._parent.styles);\n }\n\n delete this._parent;\n this._stickyMode = null;\n this._active = false;\n delete this._offsetToWindow;\n delete this._offsetToParent;\n delete this._limits;\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var _this2 = this;\n\n this._deactivate();\n\n stickies.some(function (sticky, index) {\n if (sticky._node === _this2._node) {\n stickies.splice(index, 1);\n return true;\n }\n });\n this._removed = true;\n }\n }]);\n\n return Sticky;\n}();\n/*\r\n * 5. Stickyfill API\r\n */\n\n\nvar Stickyfill = {\n stickies: stickies,\n Sticky: Sticky,\n forceSticky: function forceSticky() {\n destroy = false;\n init();\n this.refreshAll();\n },\n addOne: function addOne(node) {\n // Check whether it’s a node\n if (!(node instanceof HTMLElement)) {\n // Maybe it’s a node list of some sort?\n // Take first node from the list then\n if (node.length && node[0]) node = node[0];else return;\n } // Check if Stickyfill is already applied to the node\n // and return existing sticky\n\n\n for (var i = 0; i < stickies.length; i++) {\n if (stickies[i]._node === node) return stickies[i];\n } // Create and return new sticky\n\n\n return new Sticky(node);\n },\n add: function add(nodeList) {\n // If it’s a node make an array of one node\n if (nodeList instanceof HTMLElement) nodeList = [nodeList]; // Check if the argument is an iterable of some sort\n\n if (!nodeList.length) return; // Add every element as a sticky and return an array of created Sticky instances\n\n var addedStickies = [];\n\n var _loop = function _loop(i) {\n var node = nodeList[i]; // If it’s not an HTMLElement – create an empty element to preserve 1-to-1\n // correlation with input list\n\n if (!(node instanceof HTMLElement)) {\n addedStickies.push(void 0);\n return \"continue\";\n } // If Stickyfill is already applied to the node\n // add existing sticky\n\n\n if (stickies.some(function (sticky) {\n if (sticky._node === node) {\n addedStickies.push(sticky);\n return true;\n }\n })) return \"continue\"; // Create and add new sticky\n\n addedStickies.push(new Sticky(node));\n };\n\n for (var i = 0; i < nodeList.length; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return addedStickies;\n },\n refreshAll: function refreshAll() {\n stickies.forEach(function (sticky) {\n return sticky.refresh();\n });\n },\n removeOne: function removeOne(node) {\n // Check whether it’s a node\n if (!(node instanceof HTMLElement)) {\n // Maybe it’s a node list of some sort?\n // Take first node from the list then\n if (node.length && node[0]) node = node[0];else return;\n } // Remove the stickies bound to the nodes in the list\n\n\n stickies.some(function (sticky) {\n if (sticky._node === node) {\n sticky.remove();\n return true;\n }\n });\n },\n remove: function remove(nodeList) {\n // If it’s a node make an array of one node\n if (nodeList instanceof HTMLElement) nodeList = [nodeList]; // Check if the argument is an iterable of some sort\n\n if (!nodeList.length) return; // Remove the stickies bound to the nodes in the list\n\n var _loop2 = function _loop2(i) {\n var node = nodeList[i];\n stickies.some(function (sticky) {\n if (sticky._node === node) {\n sticky.remove();\n return true;\n }\n });\n };\n\n for (var i = 0; i < nodeList.length; i++) {\n _loop2(i);\n }\n },\n removeAll: function removeAll() {\n while (stickies.length) {\n stickies[0].remove();\n }\n }\n};\n/*\r\n * 6. Setup events (unless the polyfill was disabled)\r\n */\n\nfunction init() {\n if (isInitialized) {\n return;\n }\n\n isInitialized = true; // Watch for scroll position changes and trigger recalc/refresh if needed\n\n function checkScroll() {\n if (window.pageXOffset != scroll.left) {\n scroll.top = window.pageYOffset;\n scroll.left = window.pageXOffset;\n Stickyfill.refreshAll();\n } else if (window.pageYOffset != scroll.top) {\n scroll.top = window.pageYOffset;\n scroll.left = window.pageXOffset; // recalc position for all stickies\n\n stickies.forEach(function (sticky) {\n return sticky._recalcPosition();\n });\n }\n }\n\n checkScroll();\n window.addEventListener('scroll', checkScroll); // Watch for window resizes and device orientation changes and trigger refresh\n\n window.addEventListener('resize', Stickyfill.refreshAll);\n window.addEventListener('orientationchange', Stickyfill.refreshAll); //Fast dirty check for layout changes every 500ms\n\n var fastCheckTimer;\n\n function startFastCheckTimer() {\n fastCheckTimer = setInterval(function () {\n stickies.forEach(function (sticky) {\n return sticky._fastCheck();\n });\n }, 500);\n }\n\n function stopFastCheckTimer() {\n clearInterval(fastCheckTimer);\n }\n\n var docHiddenKey;\n var visibilityChangeEventName;\n\n if ('hidden' in document) {\n docHiddenKey = 'hidden';\n visibilityChangeEventName = 'visibilitychange';\n } else if ('webkitHidden' in document) {\n docHiddenKey = 'webkitHidden';\n visibilityChangeEventName = 'webkitvisibilitychange';\n }\n\n if (visibilityChangeEventName) {\n if (!document[docHiddenKey]) startFastCheckTimer();\n document.addEventListener(visibilityChangeEventName, function () {\n if (document[docHiddenKey]) {\n stopFastCheckTimer();\n } else {\n startFastCheckTimer();\n }\n });\n } else startFastCheckTimer();\n}\n\nif (!destroy) init();\n/*\r\n * 7. Expose Stickyfill\r\n */\n\nif (typeof module != 'undefined' && module.exports) {\n module.exports = Stickyfill;\n} else if (isWindowDefined) {\n window.Stickyfill = Stickyfill;\n}\n\n},{}],116:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.registerEvent = registerEvent;\nexports.scrollPercent = void 0;\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// this is for the read goal\nvar scrollPercent; // support multiple players on the same page\n\nexports.scrollPercent = scrollPercent;\nvar videoPlayers = []; // this is for the first visit goals\n\nvar firstVisitElement;\n(0, _jquery.default)(document).ready(function () {\n (0, _jquery.default)('.xdbpe').click(function (event) {\n var eventId = (0, _jquery.default)(event.currentTarget).attr('data-xdbpe');\n var componentName = (0, _jquery.default)(event.currentTarget).parents().filter(function () {\n return (0, _jquery.default)(this).attr('data-component');\n }).eq(0).attr('data-component');\n registerEvent(eventId, componentName);\n });\n\n if ((0, _jquery.default)('.xdbpe-project').length || (0, _jquery.default)('.xdbpe-topic').length) {\n if ((0, _jquery.default)('.xdbpe-project').length) {\n firstVisitElement = (0, _jquery.default)('.xdbpe-project');\n } else {\n firstVisitElement = (0, _jquery.default)('.xdbpe-topic');\n }\n\n var firstVisitEventId = firstVisitElement.attr('data-xdbpe');\n registerEvent(firstVisitEventId);\n }\n\n (0, _jquery.default)(window).on('scroll', function () {\n if (scrollPercent == undefined || scrollPercent < 75) {\n var s = (0, _jquery.default)(window).scrollTop(),\n d = (0, _jquery.default)(document).height(),\n c = (0, _jquery.default)(window).height();\n exports.scrollPercent = scrollPercent = Math.round(s / (d - c) * 100);\n }\n });\n});\n\nfunction registerEvent(eventId, componentName, newsletterId) {\n _jquery.default.ajax({\n method: \"POST\",\n url: \"/api/goals/registerevent\",\n contentType: 'application/json; charset=utf-8',\n processData: false,\n dataType: 'json',\n data: JSON.stringify({\n id: eventId,\n componentName: componentName,\n newsletterId: newsletterId\n })\n });\n} // this is for the video goal \n// using same script GTM uses\n\n\n(0, _jquery.default)(document).ready(function () {\n if ((0, _jquery.default)(\".xdbpe-video\").length) {\n var onPlayerStateChange = function onPlayerStateChange(e) {\n e[\"data\"] == YT.PlayerState.PLAYING && setTimeout(onPlayerPercent, 1000, e[\"target\"]);\n };\n\n var onPlayerPercent = function onPlayerPercent(e) {\n if (e[\"getPlayerState\"]() == YT.PlayerState.PLAYING) {\n var t = e[\"getDuration\"]() - e[\"getCurrentTime\"]() <= 1.5 ? 1 : (Math.floor(e[\"getCurrentTime\"]() / e[\"getDuration\"]() * 10) / 10).toFixed(2);\n\n if (parseFloat(t) < 0.25) {\n t = 0.00;\n } else if (parseFloat(t) < 0.5) {\n t = 0.25;\n } else if (parseFloat(t) < 0.75) {\n t = 0.50;\n } else if (parseFloat(t) < 0.9) {\n t = 0.75;\n } else if (parseFloat(t) < 1) {\n t = 0.90;\n }\n\n t = t.toFixed(2);\n\n if (!e[\"lastP\"] || t > e[\"lastP\"]) {\n e[\"lastP\"] = t;\n\n if (parseFloat(t) === 0.75) {\n var videoParent = (0, _jquery.default)(e[\"getIframe\"]()).parent();\n var eventId = videoParent.attr('data-xdbpe');\n var componentName = videoParent.attr('data-component');\n registerEvent(eventId, componentName);\n }\n }\n\n e[\"lastP\"] != 1 && setTimeout(onPlayerPercent, 1000, e);\n }\n };\n\n if (typeof window.onYouTubeIframeAPIReady != \"function\") {\n var tag = document.createElement(\"script\");\n tag.src = \"https://www.youtube.com/iframe_api\";\n var indexScript = document.querySelector(\"script[src=\\\"/assets/pew/js/index-generated.js\\\"\");\n (0, _jquery.default)(tag).insertAfter(indexScript);\n }\n\n window.onYouTubeIframeAPIReady = function () {\n for (var e = document.getElementsByTagName(\"iframe\"), x = e.length; x--;) {\n videoPlayers.push(new YT.Player(e[x], {\n events: {\n onStateChange: onPlayerStateChange\n }\n }));\n }\n };\n }\n});\n\n},{\"jquery\":\"jquery\"}],117:[function(require,module,exports){\n\"use strict\";\n\nrequire(\"./polyfill\");\n\nvar _jquery = _interopRequireDefault(require(\"jquery\"));\n\nvar _ramda = _interopRequireDefault(require(\"ramda\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash\"));\n\nrequire(\"picturefill\");\n\nvar _search = require(\"./Pew/search\");\n\nvar _dynamicContent = require(\"./Pew/dynamic-content\");\n\nvar _blogContent = require(\"./Pew/blog-content\");\n\nvar _peopleListing = require(\"./Pew/people-listing\");\n\nvar _projectListing = require(\"./Pew/project-listing\");\n\nvar _blogSearch = require(\"./Pew/blog-search\");\n\nvar _hiaMap = require(\"./Pew/hia-map\");\n\nvar _PrimaryNav = require(\"./Pew/navigation/PrimaryNav\");\n\nvar _initPrimaryNav = _interopRequireDefault(require(\"./Pew/navigation/initPrimaryNav.js\"));\n\nvar _initMobileMenu = _interopRequireDefault(require(\"./Pew/navigation/initMobileMenu.js\"));\n\nvar _initMobileSearchMenu = _interopRequireDefault(require(\"./Pew/navigation/initMobileSearchMenu.js\"));\n\nvar _initMobileShare = _interopRequireDefault(require(\"./Pew/navigation/initMobileShare.js\"));\n\nvar _ViewAllExpand = require(\"./Pew/ViewAllExpand\");\n\nvar _ImageSlider = require(\"./Pew/ImageSlider\");\n\nvar _GenericModal = require(\"./Pew/GenericModal\");\n\nvar _SecondaryNav = require(\"./Pew/navigation/SecondaryNav\");\n\nvar _DynamicBanner = require(\"./Pew/DynamicBanner\");\n\nvar _LocalNav = _interopRequireDefault(require(\"./Pew/navigation/LocalNav\"));\n\nrequire(\"./Pew/MoreFromPewSlider\");\n\nrequire(\"./Pew/ImageGallery\");\n\nrequire(\"./Pew/DynamicContentListing\");\n\nrequire(\"./Pew/FlipTile\");\n\nrequire(\"./Pew/SelectionSharer\");\n\nrequire(\"./Pew/InnovationFundCheck\");\n\nrequire(\"./Pew/PageVarGTM.js\");\n\nvar _ReadingTime = require(\"./Pew/ReadingTime\");\n\nvar _ReadMode = require(\"./Pew/ReadMode\");\n\nvar _breakpoint = require(\"./Pew/breakpoint\");\n\nvar _Toolbar = require(\"./Pew/Toolbar\");\n\nvar _LanguageSelector = require(\"./Pew/LanguageSelector\");\n\nvar _VideoModal = require(\"./Pew/VideoModal\");\n\nvar _LegacyVideoModal = require(\"./Pew/LegacyVideoModal\");\n\nvar _ScholarGrid = require(\"./Pew/ScholarGrid\");\n\nvar _WhatWeDo = require(\"./Pew/WhatWeDo\");\n\nvar _HowWeWork = require(\"./Pew/HowWeWork\");\n\nvar _FormDropdown = require(\"./Pew/FormDropdown\");\n\nvar _ExploreModule = require(\"./Pew/ExploreModule\");\n\nvar _InterstitialModal = require(\"./Pew/InterstitialModal\");\n\nvar _EmbedToggle = require(\"./Pew/EmbedToggle\");\n\nvar _RssListing = require(\"./Pew/RssListing\");\n\nvar _ActionAlertShare = require(\"./Pew/ActionAlertShare\");\n\nvar _xDB = require(\"./Pew/xDB\");\n\nvar _HiaDownload = require(\"./Pew/HiaDownload\");\n\nvar _Sticky = require(\"./Pew/Sticky30\");\n\nvar _makeClickable = _interopRequireDefault(require(\"./Pew/makeClickable\"));\n\nvar _ScrollAnimation = _interopRequireDefault(require(\"./Pew/ScrollAnimation\"));\n\nrequire(\"what-input\");\n\nvar _FlipBanner = require(\"./Pew/FlipBanner\");\n\nvar _ShareButton = require(\"./Pew/ShareButton\");\n\nvar _Slider = require(\"./Pew/Slider\");\n\nvar _ShareBar = require(\"./Pew/ShareBar\");\n\nvar Stickyfill = _interopRequireWildcard(require(\"./Pew/stickyfill.js\"));\n\nvar _InsertRelatedFactsArrows = _interopRequireDefault(require(\"./Pew/InsertRelatedFactsArrows\"));\n\nvar _Typeahead = require(\"./Pew/Typeahead.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // .forEach() requires an array in IE11, but queryselectorAll returns a NodeList.\n var primaryNav = document.querySelectorAll(\".js-primary-nav\");\n var primaryNavArray = Array.from(primaryNav);\n primaryNavArray.forEach(function (el, i) {\n (0, _initPrimaryNav.default)(el, i);\n }); // .forEach() requires an array in IE11, but queryselectorAll returns a NodeList.\n\n var mobileMenu = document.querySelectorAll(\".js-mobile-menu\");\n var mobileMenuArray = Array.from(mobileMenu);\n mobileMenuArray.forEach(function (el, i) {\n (0, _initMobileMenu.default)(el, i);\n }); // .forEach() requires an array in IE11, but queryselectorAll returns a NodeList.\n\n var mobileSearchMenu = document.querySelectorAll(\".js-mobile-search-menu\");\n var mobileSearchMenuArray = Array.from(mobileSearchMenu);\n mobileSearchMenuArray.forEach(function (el, i) {\n (0, _initMobileSearchMenu.default)(el, i);\n }); // .forEach() requires an array in IE11, but queryselectorAll returns a NodeList.\n\n var mobileShares = document.querySelectorAll(\".js-mobile-share\");\n var mobileSharesArray = Array.from(mobileShares);\n mobileSharesArray.forEach(function (el, i) {\n (0, _initMobileShare.default)(el, i);\n });\n (0, _ScrollAnimation.default)();\n (0, _InsertRelatedFactsArrows.default)();\n}); // exposes jQuery to browser console\n// see: https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference\n\nwindow.$ = _jquery.default;\n\nif ((0, _jquery.default)(\".js-local-nav\").length || (0, _jquery.default)(\".js-section-nav\").length || (0, _jquery.default)(\".js-combined-nav\").length) {\n _LocalNav.default.init();\n} // PrimaryNav\n// const $primaryNavEl = $(\".js-primary-nav\");\n// if ($primaryNavEl.length) {\n// let primaryNav = new PrimaryNav($primaryNavEl);\n// }\n// Make Clickable\n// .forEach() requires an array in IE11, but queryselectorAll returns a NodeList.\n\n\nvar clickables = document.querySelectorAll(\".js-make-clickable\");\nvar clickablesArray = Array.from(clickables);\nclickablesArray.forEach(_makeClickable.default); // Expandable Listings\n\nvar viewAllables = _jquery.default.makeArray((0, _jquery.default)(\".js-view-all-expand\")).map(function (el) {\n return new _ViewAllExpand.ViewAllExpand((0, _jquery.default)(el));\n}); // Slideshows\n// do not intialize slideshows inside\n// page editor\n\n\nif (!(0, _jquery.default)(\"body\").hasClass(\"is-page-editor\")) {\n var slideshows = _jquery.default.makeArray((0, _jquery.default)(\".slideshow .js-slider\")).map(function (el) {\n return new _ImageSlider.ImageSlider((0, _jquery.default)(el), {});\n });\n} // Flip Banner (from Living Facts)\n\n\nif ((0, _jquery.default)(\".js-flip\").length && !(0, _jquery.default)(\"body\").hasClass(\"is-page-editor\")) {\n var flip = _jquery.default.makeArray((0, _jquery.default)(\".js-flip\")).map(function (el) {\n return new _FlipBanner.FlipBanner((0, _jquery.default)(el));\n });\n} // Share Button (from Living Facts)\n\n\nif ((0, _jquery.default)(\".js-share\").length) {\n (0, _jquery.default)(\".js-share\").each(function () {\n return new _ShareButton.ShareButton((0, _jquery.default)(this));\n });\n} // Fact Slider (from Living Facts)\n\n\nif (!(0, _jquery.default)(\"body\").hasClass(\"is-page-editor\")) {\n var conf = {\n slick: {\n dots: true,\n arrows: true,\n infinite: true,\n speed: 300,\n slidesToShow: 1,\n slidesToScroll: 1,\n mobileFirst: true,\n responsive: [{\n breakpoint: 470,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n dots: true\n }\n }, {\n breakpoint: 911,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n infinite: false,\n dots: true\n }\n }]\n }\n };\n var confExactly3 = {\n slick: {\n dots: true,\n arrows: true,\n infinite: true,\n speed: 300,\n slidesToShow: 1,\n slidesToScroll: 1,\n mobileFirst: true,\n responsive: [{\n breakpoint: 470,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n dots: true\n }\n }, {\n breakpoint: 911,\n settings: \"unslick\"\n }]\n }\n };\n (0, _jquery.default)(\".fact-slider.js-slider\").each(function () {\n var facts = (0, _jquery.default)(this).children(\".related-facts__fact\");\n\n if (facts.length > 3) {\n return new _Slider.Slider((0, _jquery.default)(this), true, conf);\n } else {\n return new _Slider.Slider((0, _jquery.default)(this), true, confExactly3);\n }\n });\n} // Image Modals\n// do not intialize modals inside page editor\n\n\nif (!(0, _jquery.default)(\"body\").hasClass(\"is-page-editor\")) {\n (0, _jquery.default)(\".js-image-modal-source\").each(function () {\n return new _GenericModal.GenericModal((0, _jquery.default)(this), false, function ($el) {\n return $el.width() < 649;\n });\n });\n} // Flexible Promo Modals\n// do not intialize modals inside page editor\n\n\nif (!(0, _jquery.default)(\"body\").hasClass(\"is-page-editor\")) {\n (0, _jquery.default)(\".js-flexible-promo-modal-source\").each(function () {\n return new _GenericModal.GenericModal((0, _jquery.default)(this), (0, _jquery.default)(this).find(\".js-modal-content\"));\n });\n}\n\nif (!(0, _jquery.default)(\"body\").hasClass(\"is-page-editor\")) {\n (0, _jquery.default)(\".js-video-modal-source\").each(function () {\n return new _VideoModal.VideoModal((0, _jquery.default)(this));\n });\n}\n\nif (!(0, _jquery.default)(\"body\").hasClass(\"is-page-editor\")) {\n (0, _jquery.default)(\".pct-modal\").each(function () {\n return new _LegacyVideoModal.LegacyVideoModal((0, _jquery.default)(this));\n });\n} // Interstitial Modal\n\n\nvar interstitialModals = _jquery.default.makeArray((0, _jquery.default)(\".js-interstitial-popup\")).map(function (el) {\n return new _InterstitialModal.InterstitialModal((0, _jquery.default)(el));\n}); // Secondary Nav\n\n\nif ((0, _jquery.default)(\".js-secondary-nav\").length) {\n var secondaryNav = new _SecondaryNav.SecondaryNav((0, _jquery.default)(\".js-secondary-nav\"));\n}\n\nif ((0, _jquery.default)(\".page-toolbar__selector\").length) {\n var toolbar = new _Toolbar.Toolbar((0, _jquery.default)(\".page-toolbar__selector\"));\n}\n\nif ((0, _jquery.default)(\".language-callout__item\").length) {\n var lang = new _LanguageSelector.LanguageSelector((0, _jquery.default)(\".language-callout__item\"));\n}\n\nif ((0, _jquery.default)(\"#content-toolbar--togglereadmode\").length) {\n var readMode = new _ReadMode.ReadMode((0, _jquery.default)(\"#content-toolbar--togglereadmode\"));\n} //RSS Listing\n\n\nif ((0, _jquery.default)(\".js-rss-listing\").length) {\n var rssListing = new _RssListing.RssListing((0, _jquery.default)(\".js-rss-listing\"));\n} //What We DO\n\n\nif ((0, _jquery.default)(\".js-what-we-do\").length) {\n var whatwedo = new _WhatWeDo.WhatWeDo((0, _jquery.default)(\".js-what-we-do\"));\n}\n\nif ((0, _jquery.default)(\".js-how-we-work\").length) {\n var howwework = new _HowWeWork.HowWeWork((0, _jquery.default)(\".js-how-we-work\"));\n} // Dynamic Banners (Hero and Page Banner)\n\n\nvar $banners = (0, _jquery.default)(\".js-dynamic-banner\");\n\nif ($banners.length) {\n var dynamicBanners = _jquery.default.makeArray($banners).map(function (el) {\n return new _DynamicBanner.DynamicBanner((0, _jquery.default)(el));\n });\n}\n\nif ((0, _jquery.default)(\"span.read-time\").length) {\n var readingTime = new _ReadingTime.ReadingTime((0, _jquery.default)(\".rich-text\"));\n var readTimeText = (0, _jquery.default)(\"span.read-time\").text();\n\n var _dataLayer = window.dataLayer || [];\n\n var readTimeIndex = _dataLayer ? _dataLayer.findIndex(function (obj) {\n return obj.suggest_read_time_msec === \"\";\n }) : null;\n\n if (readTimeText && readTimeText.match(/min/g).includes(\"min\")) {\n var readTimeMs = readTimeText.replace(/\\D/g, \"\") * 60000;\n readTimeIndex && (_dataLayer[readTimeIndex].suggest_read_time_msec = readTimeMs);\n } else {\n readTimeIndex && (_dataLayer[readTimeIndex].suggest_read_time_msec = 59000);\n }\n}\n\nif ((0, _jquery.default)(\".js-read-time-gtm\").length && dataLayer) {\n var readtime = (0, _jquery.default)(\".js-read-time-gtm\").text().replace(/\\D/g, \"\") * 60000 * 0.75;\n\n if (readtime > 0 && (typeof dataLayer === \"undefined\" ? \"undefined\" : _typeof(dataLayer)) !== undefined) {\n setTimeout(function () {\n dataLayer.push({\n event: \"pageRead\"\n });\n }, readtime);\n }\n} // Search Apps\n// only init if results are included\n\n\nif ((0, _jquery.default)(\".js-search-results\").length) {\n // in the case of multiples of same component, group nodes by search-id\n var groupedSearchNodes = _ramda.default.groupWith(function (a, b) {\n return a.getAttribute(\"data-search-id\") === b.getAttribute(\"data-search-id\");\n }, _jquery.default.makeArray((0, _jquery.default)(\".js-search-query,.js-search-results,.js-search-facets,.js-search-tokens, .js-search-widget\")));\n\n groupedSearchNodes.forEach(function (nodes) {\n return (0, _search.initSearchApp)(nodes);\n });\n} //hia\n\n\nif ((0, _jquery.default)(\".js-hia-search-results\").length) {\n (0, _hiaMap.initSearchApp)(_jquery.default.makeArray((0, _jquery.default)(\".js-hia-search-results,.js-hia-search-facets, .js-search-query\")));\n}\n\nif ((0, _jquery.default)(\".js-hia-download-csv\").length) {\n var download = new _HiaDownload.HiaDownload((0, _jquery.default)(\".js-hia-download-csv\"));\n} // dynamic content\n\n\nif ((0, _jquery.default)(\".js-dynamic-items\").length) {\n // in the case of multiples of same component, group nodes by search-id\n var groupedDynamicContentNodes = _ramda.default.groupWith(function (a, b) {\n return a.getAttribute(\"data-search-id\") === b.getAttribute(\"data-search-id\");\n }, _jquery.default.makeArray((0, _jquery.default)(\".js-dynamic-items,.js-dynamic-items-search-facets\")));\n\n groupedDynamicContentNodes.forEach(function (nodes) {\n return (0, _dynamicContent.initSearchApp)(nodes);\n });\n} // people listing\n\n\nif ((0, _jquery.default)(\".js-people-items\").length) {\n // in the case of multiples of same component, group nodes by search-id\n var groupedPeopleListingNodes = _ramda.default.groupWith(function (a, b) {\n return a.getAttribute(\"data-search-id\") === b.getAttribute(\"data-search-id\");\n }, _jquery.default.makeArray((0, _jquery.default)(\".js-people-items,.js-people-items-search-facets\")));\n\n groupedPeopleListingNodes.forEach(function (nodes) {\n return (0, _peopleListing.initSearchApp)(nodes);\n });\n} // blog content\n\n\nif ((0, _jquery.default)(\".js-blog-content\").length) {\n // in the case of multiples of same component, group nodes by search-id\n var groupedBlogContentNodes = _ramda.default.groupWith(function (a, b) {\n return a.getAttribute(\"data-search-id\") === b.getAttribute(\"data-search-id\");\n }, _jquery.default.makeArray((0, _jquery.default)(\".js-blog-content,.js-blog-content-search-facets\")));\n\n groupedBlogContentNodes.forEach(function (nodes) {\n return (0, _blogContent.initSearchApp)(nodes);\n });\n} // blog search\n\n\nif ((0, _jquery.default)(\".js-blog-search\").length) {\n // in the case of multiples of same component, group nodes by search-id\n var groupedBlogSearchNodes = _ramda.default.groupWith(function (a, b) {\n return a.getAttribute(\"data-search-id\") === b.getAttribute(\"data-search-id\");\n }, _jquery.default.makeArray((0, _jquery.default)(\".js-blog-search\")));\n\n groupedBlogSearchNodes.forEach(function (nodes) {\n return (0, _blogSearch.initSearchApp)(nodes);\n });\n} // project listing\n\n\nif ((0, _jquery.default)(\".js-projects-container\").length) {\n // in the case of multiples of same component, group nodes by search-id\n var groupedProjectListingNodes = _ramda.default.groupWith(function (a, b) {\n return a.getAttribute(\"data-search-id\") === b.getAttribute(\"data-search-id\");\n }, _jquery.default.makeArray((0, _jquery.default)(\".js-projects-search-facets,.js-projects-container\")));\n\n groupedProjectListingNodes.forEach(function (nodes) {\n return (0, _projectListing.initSearchApp)(nodes);\n });\n} // Form dropdowns\n\n\nvar $dropdowns = (0, _jquery.default)(\".js-form-dropdown\");\n\nif ($dropdowns.length) {\n var formDropdowns = _jquery.default.makeArray($dropdowns).map(function (el) {\n return new _FormDropdown.FormDropdown((0, _jquery.default)(el));\n });\n} // 70-30 Sticky Sidebar\n// create sticky 30 after page has been loaded\n\n\n(0, _jquery.default)(document).ready(function () {\n var $sticky30 = (0, _jquery.default)(\".container--70-30-sticky .container__col--30\");\n\n if ($sticky30.length) {\n var sticky30s = _jquery.default.makeArray($sticky30).map(function (el) {\n return new _Sticky.Sticky30((0, _jquery.default)(el));\n });\n }\n}); // Scholar Tile Grid\n\nvar $scholarGrids = (0, _jquery.default)(\".js-scholar-grid\");\n\nif ($scholarGrids.length) {\n var scholarGrids = _jquery.default.makeArray($scholarGrids).map(function (el) {\n return new _ScholarGrid.ScholarGrid((0, _jquery.default)(el));\n });\n} //Action Alert Share\n\n\nif ((0, _jquery.default)(\".js-action-alert-share\").length) {\n var actionAlert = new _ActionAlertShare.ActionAlertShare((0, _jquery.default)(\".js-action-alert-share\"));\n}\n\nvar $typeahead = (0, _jquery.default)(\".js-quick-search-input\");\n\nif ($typeahead.length) {\n _jquery.default.makeArray($typeahead).forEach(function (el) {\n return (0, _Typeahead.initTypeahead)(el);\n });\n}\n\nvar $mobileTypeahead = (0, _jquery.default)(\".js-mobile-search-input\");\n\nif ($mobileTypeahead.length) {\n _jquery.default.makeArray($mobileTypeahead).forEach(function (el) {\n return (0, _Typeahead.initTypeahead)(el);\n });\n}\n\nvar $searchTypeahead = (0, _jquery.default)(\".js-search-query input\");\n\nif ($searchTypeahead.length) {\n _jquery.default.makeArray($searchTypeahead).forEach(function (el) {\n return (0, _Typeahead.initTypeahead)(el);\n });\n} // Newsletter signup options\n\n\nvar getNewsletterOptions = function getNewsletterOptions(form) {\n var selectOptions = (0, _jquery.default)(form).find('.newsletter-signup__select-field input[type=\"checkbox\"]:checked');\n var values = selectOptions.map(function () {\n return (0, _jquery.default)(this).val();\n }).get();\n var pipedOptions = values.join(\"|\");\n return pipedOptions ? \"&guid=\".concat(pipedOptions) : \"\";\n}; // Newsletter signup validation\n\n\nvar validateEmailAddress = function validateEmailAddress(form) {\n var newsletterOptions = getNewsletterOptions(form);\n var emailField = (0, _jquery.default)(form).find(\".newsletter-signup__email-input\");\n var elqErrorMessageField = (0, _jquery.default)(form).find(\".newsletter-signup__validation-error\");\n var email = emailField.val();\n\n if (email === emailField.attr(\"placeholder\")) {\n email = \"\";\n }\n\n if (email === \"\") {\n elqErrorMessageField.show();\n emailField.focus();\n return false;\n }\n\n var filter = /^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\n\n if (!filter.test(email)) {\n elqErrorMessageField.show();\n emailField.focus();\n return false;\n } else {\n var eventId = (0, _jquery.default)(form).find(\".xdbpe-newsletter\").attr(\"data-xdbpe\");\n var componentName = (0, _jquery.default)(form).attr(\"data-component\");\n var newsletterId = (0, _jquery.default)(form).find(\".js-newsletter-signup--landingguid\").val();\n (0, _xDB.registerEvent)(eventId, componentName, newsletterId);\n var encodedEmail = window.btoa(email);\n\n var utmString = function utmString(utmType) {\n if (sessionStorage.getItem(\"utm_\".concat(utmType)) !== null) {\n return \"&utm_\".concat(utmType, \"=\") + sessionStorage.getItem(\"utm_\".concat(utmType));\n } else {\n return \"\";\n }\n };\n\n var baseURL = (0, _jquery.default)(form).find(\".js-newsletter-signup--baseUrl\").val();\n var landingGUID = (0, _jquery.default)(form).find(\".js-newsletter-signup--landingguid\").val();\n var emailAddressPrefix = landingGUID ? \"&ea=\" : \"?ea=\";\n var postURL = baseURL + landingGUID + emailAddressPrefix + encodedEmail + utmString(\"source\") + utmString(\"medium\") + utmString(\"campaign\") + utmString(\"content\") + utmString(\"term\") + newsletterOptions;\n (0, _jquery.default)(form).attr(\"action\", postURL);\n setTimeout(function () {\n (0, _jquery.default)(form)[0].reset();\n (0, _jquery.default)(form).attr(\"action\", \"\"); //remove action after validation to prevent duplicate form submission\n\n elqErrorMessageField.hide();\n }, 0);\n }\n};\n\n(0, _jquery.default)(\".js-footer-newsletter-signup\").on(\"submit\", function (e) {\n return validateEmailAddress(this);\n});\n(0, _jquery.default)(\".js-newsletter-signup-with-images\").on(\"submit\", function (e) {\n var elqErrorMessageField = (0, _jquery.default)(this).find(\".newsletter-signup__validation-error\");\n var checkedNewsletters = getNewsletterOptions(this);\n\n if (checkedNewsletters.length == 0) {\n elqErrorMessageField.text(\"Please select a newsletter\").show();\n return false;\n } else {\n elqErrorMessageField.text(\"Please provide a valid email address\").hide();\n return validateEmailAddress(this);\n }\n}); // The Downloads Callout component should only exist once per page at narrow (smartphone) widths\n\n(0, _jquery.default)(\".downloads-callout\").each(function (index) {\n if (index > 0) {\n (0, _jquery.default)(this).addClass(\"downloads-callout--hide-narrow\");\n }\n});\nvar $embedToggleEls = (0, _jquery.default)(\".js-embed-toggle\");\n\nif ($embedToggleEls.length) {\n var embedToggles = _jquery.default.makeArray($embedToggleEls).map(function (el) {\n return new _EmbedToggle.EmbedToggle((0, _jquery.default)(el));\n });\n} //Magazine archive slider\n\n\nif ((0, _jquery.default)(\".js-magazine-archive-slider\").length > 0) {\n (0, _jquery.default)(\".js-magazine-archive-slider\").each(function () {\n var _this = this;\n\n (0, _jquery.default)(this).slick({\n slidesToShow: 3,\n slidesToScroll: 3,\n mobileFirst: true,\n arrows: false,\n dots: true,\n infinite: false,\n responsive: [{\n breakpoint: 910,\n settings: \"unslick\"\n }]\n });\n (0, _jquery.default)(window).on(\"resize\", function (event) {\n (0, _jquery.default)(_this).slick(\"resize\");\n });\n });\n} //Products Navigation slider\n\n\nif ((0, _jquery.default)(\".js-product-navigation-slider\").length > 0) {\n (0, _jquery.default)(\".js-product-navigation-slider\").each(function () {\n (0, _jquery.default)(this).slick({\n dots: false,\n infinite: false,\n arrows: true,\n speed: 300,\n slidesToShow: 3,\n slidesToScroll: 1,\n centerMode: false,\n prevArrow: \"\\n \",\n nextArrow: \"\\n \",\n responsive: [{\n breakpoint: 911,\n settings: {\n slidesToShow: 2\n }\n }, {\n breakpoint: 679,\n settings: {\n arrows: false,\n slidesToShow: 1.3,\n centerMode: true\n }\n }]\n }); //Add aria-label to slick-track for accessibility\n\n (0, _jquery.default)(this).find(\".slick-track\").each(function (index) {\n (0, _jquery.default)(this).attr(\"aria-label\", \"product-navigation-slider\" + index);\n }); //Add id to each slide for accessibility\n\n (0, _jquery.default)(this).find(\".slick-slide\").each(function () {\n var $slide = (0, _jquery.default)(this);\n\n if ($slide.attr(\"aria-describedby\") != undefined) {\n // ignore extra/cloned slides \n (0, _jquery.default)(this).attr(\"id\", $slide.attr(\"aria-describedby\"));\n }\n });\n });\n}\n\n(0, _jquery.default)(document).ready(function () {\n // DOM caching\n var pageToolbar = (0, _jquery.default)(\".page-toolbar\");\n var globalHeader = (0, _jquery.default)(\".global-header\");\n var pageToolbarShare = (0, _jquery.default)(\".page-toolbar__share\");\n var desktopShareBar = (0, _jquery.default)(\".share-bar__sticky-wrapper\");\n var mobileBreakpoint = 910;\n (0, _jquery.default)(window).on(\"resize\", function () {\n var wi = (0, _jquery.default)(window).width(); // unhide toolbar share bar\n\n if (wi > mobileBreakpoint && wi < 1170 && desktopShareBar.length) {\n pageToolbarShare.css(\"display\", \"block\");\n } else {\n pageToolbarShare.css(\"display\", \"\");\n }\n }); // need to bake this, since the offset().top becomes 0 when toolbar goes fixed\n\n if (pageToolbar.length) {\n var toolbarOffset = pageToolbar.offset().top - globalHeader.outerHeight();\n desktopShareBar.css(\"top\", \"\".concat(globalHeader.outerHeight() + pageToolbar.outerHeight(), \"px\"));\n }\n\n (0, _jquery.default)(window).on(\"scroll\", function () {\n if ((0, _jquery.default)(this).scrollTop() > 0) {\n globalHeader.addClass(\"is-sticky\");\n } else {\n globalHeader.removeClass(\"is-sticky\");\n }\n\n if (pageToolbar.length && (0, _jquery.default)(this).scrollTop() >= toolbarOffset) {\n pageToolbar.addClass(\"page-toolbar--sticky\").css(\"top\", globalHeader.outerHeight() + \"px\");\n\n if ((0, _jquery.default)(\".js-show-page-title-in-nav\").length || (0, _jquery.default)(\".page-toolbar__page-title--only-title\").length) {\n (0, _jquery.default)(\".page-toolbar__page-title\").removeClass(\"u-hidden\");\n }\n } else {\n pageToolbar.removeClass(\"page-toolbar--sticky\");\n (0, _jquery.default)(\".page-toolbar__page-title\").addClass(\"u-hidden\");\n }\n }); // read query string\n // example: http://dev93.pew.velir.com/en?utm_source=source_test&utm_medium=medium_test&utm_campaign=campaign_test&utm_content=content_test&utm_term=term_test\n\n var queryForm = function queryForm() {\n var url = window.location.toString();\n var queryString = url.split(\"?\");\n\n if (queryString.length > 1) {\n var pairs = queryString[1].split(\"&\");\n\n for (var i in pairs) {\n var keyVal = pairs[i].split(\"=\");\n\n if (sessionStorage.getItem(keyVal[0]) === null) {\n sessionStorage.setItem(keyVal[0], decodeURIComponent(keyVal[1]));\n }\n }\n }\n };\n\n queryForm(); // Share Bar from Living Facts\n\n var $shareBar = (0, _jquery.default)(\".js-plf-share-bar\");\n\n function scrollHandler() {\n //check scroll position\n var viewPort = (0, _jquery.default)(window).scrollTop() + (0, _jquery.default)(window).height();\n\n if ($shareBar.length) {\n var topOfShareBar = $shareBar.offset().top;\n\n if (viewPort > topOfShareBar) {\n $shareBar.addClass(\"plf-share-bar--fixed\");\n } else {\n $shareBar.removeClass(\"plf-share-bar--fixed\");\n }\n }\n }\n\n (0, _jquery.default)(window).on(\"scroll\", _lodash.default.throttle(scrollHandler, 200, {\n leading: true,\n trailing: true\n }));\n\n if ($shareBar.length) {\n var plfShareBar = new _ShareBar.ShareBar($shareBar);\n Stickyfill.add($shareBar);\n }\n});\nvar SneakyEmail = {\n // Email addresses are obfuscated via ROT13 in C# in the templates\n // ROT13'ing again will deobfuscate and give us the real address\n ROT13: function ROT13(address) {\n return address.replace(/[a-zA-Z]/g, function (c) {\n return String.fromCharCode((c <= \"Z\" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);\n });\n },\n findEmailAddresses: function findEmailAddresses() {\n (0, _jquery.default)(\".js-obfuscate-email\").each(function () {\n var obfuscatedAddress = SneakyEmail.ROT13((0, _jquery.default)(this).attr(\"data-obfuscate-email\"));\n (0, _jquery.default)(this).on(\"click\", function () {\n window.location.href = \"mailto:\" + obfuscatedAddress;\n });\n });\n }\n}; // jQuery method for shrinking/expanding text to fill its parent container\n\n_jquery.default.fn.textfill = function (maxFontSize) {\n // maxFontSize = maxFontSize || 16;\n // maxFontSize = parseInt(maxFontSize, 10);\n return this.each(function () {\n var textHeight = (0, _jquery.default)(this).height(); // remove 100px from parent container height to account for padding/layout\n\n var containerHeight = (0, _jquery.default)(this).parent().height() - 100;\n var fontSize = parseInt((0, _jquery.default)(this).css(\"font-size\"));\n\n if (textHeight > containerHeight) {\n while (textHeight > Math.max(0, containerHeight)) {\n --fontSize;\n (0, _jquery.default)(this).css(\"font-size\", fontSize + \"px\");\n containerHeight = (0, _jquery.default)(this).parent().height() - 100;\n textHeight = (0, _jquery.default)(this).height();\n }\n } else {\n while (fontSize < 16 && textHeight <= Math.max(0, containerHeight)) {\n ++fontSize;\n (0, _jquery.default)(this).css(\"font-size\", fontSize + \"px\");\n containerHeight = (0, _jquery.default)(this).parent().height() - 100;\n textHeight = (0, _jquery.default)(this).height();\n }\n }\n });\n};\n\n(0, _jquery.default)(document).ready(function () {\n // Obfuscate email addresses\n SneakyEmail.findEmailAddresses(); //checking for all possible combinations of external links since they all don't have the core class.\n\n if (!(0, _jquery.default)(\"body\").hasClass(\"is-page-editor\")) {\n (0, _jquery.default)(\".link-item__external--blue, .link-item__external--white, .link-item__external\").each(function () {\n (0, _jquery.default)(this).append(\"\\n \\n \\n \\n \\n \\n \");\n });\n }\n\n var videoCountPush = function videoCountPush() {\n var videoCount = (0, _jquery.default)(\".video-block\").length;\n\n if (videoCount > 0) {\n window.dataLayer.push({\n videoCount: videoCount\n });\n }\n };\n\n videoCountPush(); // Properly size page banner videos\n\n (0, _jquery.default)(\".js-banner-video\").each(function () {\n var videoHeight = (0, _jquery.default)(this)[0].videoHeight;\n var videoWidth = (0, _jquery.default)(this)[0].videoWidth;\n var videoAspectRatio = videoHeight / videoWidth;\n var videoParent = (0, _jquery.default)(this).closest(\".page-banner\");\n\n if (videoParent.width() < videoWidth) {\n (0, _jquery.default)(this).css({\n width: videoparent.width,\n height: videoparent.width * videoaspectratio\n });\n videoParent.css({\n width: videoparent.width,\n height: videoparent.width * videoaspectratio\n });\n } else {\n (0, _jquery.default)(this).css({\n width: videoparent.width * videoaspectratio + \"px\",\n height: videoparent.width\n });\n videoParent.css({\n width: videoparent.width * videoaspectratio + \"px\",\n height: videoparent.width\n });\n }\n });\n (0, _jquery.default)(\".rte-expand-button\").on(\"click\", function () {\n (0, _jquery.default)(this).closest(\".rich-text__expand-button\").addClass(\"is-active\").hide();\n });\n (0, _jquery.default)(\".pct-expand-more\").each(function (index, elm) {\n var newToggle = (0, _jquery.default)(\"\");\n var moreToggle = newToggle.clone().addClass(\"pct-expand-more__toggle pct-expand-more__toggle--more\").text(\"More\");\n var lessToggle = newToggle.clone().addClass(\"pct-expand-more__toggle pct-expand-more__toggle--less\").text(\"Less\");\n (0, _jquery.default)(elm).prev().append(moreToggle);\n (0, _jquery.default)(elm).find(\"p:last-child\").append(lessToggle);\n moreToggle.on(\"click\", function () {\n var contentBlock = (0, _jquery.default)(this).closest(\".findings-content\");\n contentBlock.find(\".pct-expand-more\").toggle();\n contentBlock.find(\".pct-expand-more__toggle--more\").hide();\n });\n lessToggle.on(\"click\", function () {\n moreToggle.toggle();\n (0, _jquery.default)(this).closest(\".pct-expand-more\").toggle();\n (0, _jquery.default)(this).closest(\".findings-content\").find(\".pct-expand-more__toggle--more\").show();\n });\n }); // Some videos on the site (like legacy YouTube videos) need explicit sizing\n // target: the video itself\n // bounding: the selector to use for determining the video width\n //\n // TODO - Add params for custom aspect ratio besides 16:9?\n\n var resizeVideoContainer = function resizeVideoContainer(targets) {\n targets.forEach(function (val, ind, arr) {\n var $target = (0, _jquery.default)(val.target);\n $target.each(function (ind, elm) {\n var $parent = (0, _jquery.default)(elm).closest(val.bounding);\n (0, _jquery.default)(elm).css({\n width: $parent.width(),\n height: $parent.width() * (9 / 16)\n });\n });\n });\n };\n\n (0, _jquery.default)(window).on(\"resize\", function () {\n (0, _jquery.default)(\".flip-tile__center-body-copy\").textfill();\n resizeVideoContainer([{\n target: \".fluid-width-video-wrapper iframe\",\n bounding: \".fluid-width-video-wrapper\"\n }, {\n target: '.rich-text iframe[src*=\"youtube\"]',\n bounding: \".rich-text\"\n }]);\n });\n (0, _jquery.default)(\".flip-tile__center-body-copy\").textfill();\n resizeVideoContainer([{\n target: \".fluid-width-video-wrapper iframe\",\n bounding: \".fluid-width-video-wrapper\"\n }, {\n target: '.rich-text iframe[src*=\"youtube\"]',\n bounding: \".rich-text\"\n }]);\n (0, _jquery.default)(\".rich-text__accordion-toggle\").on(\"click\", function () {\n (0, _jquery.default)(this).closest(\".rich-text__accordion\").toggleClass(\"is-active\");\n });\n});\n(0, _jquery.default)(window).on(\"load\", function () {\n //map tool\n (0, _jquery.default)(\".js-embed-toggle\").off(\"click.embed-toggle\").on(\"click.embed-toggle\", function (e) {\n (0, _jquery.default)(this).next(\".js-embed-code\").slideToggle();\n });\n (0, _jquery.default)(\".state\").click(function (event) {\n if (event.target.nextSibling === null) dataLayerStatePush(event.target.innerHTML);else {\n dataLayerStatePush(event.target.nextSibling.innerHTML);\n }\n });\n (0, _jquery.default)(\".state-boxes > g\").click(function (event) {\n if (event.target.nextSibling === null) dataLayerStatePush(event.target.innerHTML);else {\n dataLayerStatePush(event.target.nextSibling.innerHTML);\n }\n });\n (0, _jquery.default)(\".js-choropleth-mount .category-selector__item\").click(function (event) {\n dataLayerYearPush(event.target.innerHTML);\n });\n\n var dataLayerStatePush = function dataLayerStatePush(eventValue) {\n window.dataLayer.push({\n event: \"stateClick\",\n stateName: eventValue\n });\n };\n\n var dataLayerYearPush = function dataLayerYearPush(eventValue) {\n window.dataLayer.push({\n event: \"yearClick\",\n yearName: eventValue\n });\n };\n});\n\n},{\"./Pew/ActionAlertShare\":1,\"./Pew/DynamicBanner\":2,\"./Pew/DynamicContentListing\":3,\"./Pew/EmbedToggle\":4,\"./Pew/ExploreModule\":6,\"./Pew/FlipBanner\":7,\"./Pew/FlipTile\":8,\"./Pew/FormDropdown\":9,\"./Pew/GenericModal\":10,\"./Pew/HiaDownload\":11,\"./Pew/HowWeWork\":12,\"./Pew/ImageGallery\":13,\"./Pew/ImageSlider\":14,\"./Pew/InnovationFundCheck\":15,\"./Pew/InsertRelatedFactsArrows\":16,\"./Pew/InterstitialModal\":17,\"./Pew/LanguageSelector\":18,\"./Pew/LegacyVideoModal\":19,\"./Pew/MoreFromPewSlider\":20,\"./Pew/PageVarGTM.js\":21,\"./Pew/ReadMode\":22,\"./Pew/ReadingTime\":23,\"./Pew/RssListing\":24,\"./Pew/ScholarGrid\":25,\"./Pew/ScrollAnimation\":26,\"./Pew/SelectionSharer\":27,\"./Pew/ShareBar\":28,\"./Pew/ShareButton\":29,\"./Pew/Slider\":30,\"./Pew/Sticky30\":31,\"./Pew/Toolbar\":32,\"./Pew/Typeahead.js\":33,\"./Pew/VideoModal\":34,\"./Pew/ViewAllExpand\":35,\"./Pew/WhatWeDo\":36,\"./Pew/blog-content\":44,\"./Pew/blog-search\":46,\"./Pew/breakpoint\":48,\"./Pew/dynamic-content\":55,\"./Pew/hia-map\":64,\"./Pew/makeClickable\":66,\"./Pew/navigation/LocalNav\":67,\"./Pew/navigation/PrimaryNav\":69,\"./Pew/navigation/SecondaryNav\":70,\"./Pew/navigation/initMobileMenu.js\":71,\"./Pew/navigation/initMobileSearchMenu.js\":72,\"./Pew/navigation/initMobileShare.js\":73,\"./Pew/navigation/initPrimaryNav.js\":74,\"./Pew/people-listing\":78,\"./Pew/project-listing\":80,\"./Pew/search\":102,\"./Pew/stickyfill.js\":115,\"./Pew/xDB\":116,\"./polyfill\":120,\"jquery\":\"jquery\",\"lodash\":\"lodash\",\"picturefill\":\"picturefill\",\"ramda\":\"ramda\",\"what-input\":\"what-input\"}],118:[function(require,module,exports){\n\"use strict\";\n\n(function (ElementProto) {\n if (typeof ElementProto.matches !== \"function\") {\n ElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {\n var element = this;\n var elements = (element.document || element.ownerDocument).querySelectorAll(selector);\n var index = 0;\n\n while (elements[index] && elements[index] !== element) {\n ++index;\n }\n\n return Boolean(elements[index]);\n };\n }\n\n if (typeof ElementProto.closest !== \"function\") {\n ElementProto.closest = function closest(selector) {\n var element = this;\n\n while (element && element.nodeType === 1) {\n if (element.matches(selector)) {\n return element;\n }\n\n element = element.parentNode;\n }\n\n return null;\n };\n }\n})(window.Element.prototype);\n\n},{}],119:[function(require,module,exports){\n\"use strict\";\n\nrequire(\"core-js/fn/object/assign.js\");\n\nrequire(\"core-js/fn/array/find.js\");\n\nrequire(\"core-js/fn/array/find-index.js\");\n\nrequire(\"core-js/fn/array/fill.js\");\n\nrequire(\"core-js/fn/array/includes.js\");\n\nrequire(\"core-js/fn/array/from.js\");\n\nrequire(\"core-js/fn/symbol/index.js\");\n\nrequire(\"regenerator-runtime/runtime\");\n\n},{\"core-js/fn/array/fill.js\":\"core-js/fn/array/fill.js\",\"core-js/fn/array/find-index.js\":\"core-js/fn/array/find-index.js\",\"core-js/fn/array/find.js\":\"core-js/fn/array/find.js\",\"core-js/fn/array/from.js\":\"core-js/fn/array/from.js\",\"core-js/fn/array/includes.js\":\"core-js/fn/array/includes.js\",\"core-js/fn/object/assign.js\":\"core-js/fn/object/assign.js\",\"core-js/fn/symbol/index.js\":\"core-js/fn/symbol/index.js\",\"regenerator-runtime/runtime\":\"regenerator-runtime/runtime\"}],120:[function(require,module,exports){\n\"use strict\";\n\nrequire(\"./es6-polyfill\");\n\nrequire(\"./closest\");\n\nvar _svg4everybody = _interopRequireDefault(require(\"svg4everybody\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Note: object-fit has been refactored to be applied on-demand instead of automatically\n// You may invoke it directly in your scripts\n(0, _svg4everybody.default)();\n\n},{\"./closest\":118,\"./es6-polyfill\":119,\"svg4everybody\":\"svg4everybody\"}],121:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.objectFitPolyfill = exports.objectFit = exports.objectFitSupport = void 0;\n\n/*----------------------------------------\r\n * objectFitPolyfill 2.0.3\r\n *\r\n * Made by Constance Chen\r\n * Released under the MIT license\r\n *\r\n * * https://github.com/constancecchen/object-fit-polyfill\r\n *\r\n * CUSTOMIZATIONS MADE BY VELIR. SEE LINES TAGGED 'VELIR'\r\n * - Due to issues with object-fit and