{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///st.ts","webpack:///../../Mvc/Scripts/st.search/st.search.ts","webpack:///../../Mvc/Scripts/st.search/st.search.constantFilters.ts","webpack:///../../Mvc/Scripts/st.search/st.search.facetItems.ts","webpack:///../../Mvc/Scripts/st.search/st.search.facetService.ts","webpack:///../../Mvc/Scripts/st.search/st.search.models.ts","webpack:///../../Mvc/Scripts/st.search/st.search.termFacet.ts","webpack:///../../Mvc/Scripts/st.search/st.search.facetSearchResults.ts","webpack:///./content/js/app/components/common.js","webpack:///./content/js/app/layouts/header.js","webpack:///./content/js/app/layouts/search.js","webpack:///./content/js/app/magazine.js","webpack:///./content/js/app/plugins/angular-init.js","webpack:///./content/js/app/utils/constants.js","webpack:///./content/js/app/utils/ui.js","webpack:///external \"jQuery\""],"names":["Common","bindEvents","Util","getViewPort","CONST","Desktop","$","addClass","removeClass","not","on","e","smoothScroll","link","currentTarget","target","attr","length","preventDefault","animate","scrollTop","offset","top","Header","body","headerSearchWrap","headerOffset","document","getElementById","offsetTop","openNavToggle","closeNavToggle","nav","searchMegaMenu","searchMegaMenuBtn","megamenuSearchWrap","mouseOver","stickyHeader","stopPropagation","toggleNav","mobileNavItem","tabbingNav","tabbingSearch","toggleSearch","closest","mobileNavItemBack","window","onResize","hasClass","enableBodyScroll","find","keyCode","$activeElem","activeElement","$prevItem","prev","focus","toggleClass","disableBodyScroll","parentLI","parentList","removeAttr","parent","targetChildren","isCurrentlyOpen","Search","searchToggle","searchWrap","closeSearchToggle","searchForm","expandSearch","closeSearch","searchTerm","input","value","val","name","action","data","location","encodeURIComponent","global","jQuery","ready","header","init","search","common","st","ViewPort","Tablet","Mobile","Breakpoints","desktopBreakpoint","tabletBreakpoint","width","innerWidth"],"mappings":"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","file":"main.min.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"main\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"magazineWebpackJsonp\"] = window[\"magazineWebpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1,\"vendor\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","namespace st {\r\n interface PreventEnterAttributes extends angular.IAttributes {\r\n stPreventEnter: string;\r\n }\r\n\r\n let PreventEnter: angular.IDirectiveFactory = ($parse: angular.IParseService) => {\r\n return {\r\n restrict: 'A',\r\n link: function (scope: angular.IScope, el: angular.IAugmentedJQuery, attrib: PreventEnterAttributes) {\r\n let action = attrib.stPreventEnter ? $parse(attrib.stPreventEnter) : null;\r\n el.on('keypress', function (e) {\r\n if (e.keyCode === 13) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (action) {\r\n scope.$apply(action);\r\n }\r\n return false;\r\n }\r\n });\r\n }\r\n };\r\n };\r\n PreventEnter.$inject = ['$parse'];\r\n\r\n interface ScopeDataAttributes extends angular.IAttributes {\r\n type: string;\r\n stScopeData: string;\r\n }\r\n\r\n class ScopeDataController {\r\n static $inject = ['$scope', '$element', '$parse', '$attrs', '$log'];\r\n constructor(\r\n $scope: angular.IScope,\r\n $element: angular.IAugmentedJQuery,\r\n $parse: angular.IParseService,\r\n $attrs: ScopeDataAttributes,\r\n $log: angular.ILogService) {\r\n let type = $attrs.type;\r\n let getter: angular.ICompiledExpression;\r\n let json: string;\r\n if ((/text\\/json/i).test(type)) {\r\n json = $element.html();\r\n try {\r\n if ($attrs.stScopeData && json) {\r\n json = angular.fromJson(json);\r\n getter = $parse($attrs.stScopeData);\r\n if ($attrs.stScopeData.indexOf('$value') >= 0) {\r\n getter($scope, { $value: json });\r\n } else if (getter.assign) {\r\n getter.assign($scope, json);\r\n }\r\n $element.remove();\r\n }\r\n } catch (err) {\r\n $log.error(`Invalid JSON for st-scope-data=\"${ $attrs.stScopeData }\"`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n let ScopeData: angular.IDirectiveFactory = () => {\r\n return {\r\n restrict: 'A',\r\n controller: ScopeDataController\r\n };\r\n };\r\n\r\n angular.module('st')\r\n .directive('stPreventEnter', PreventEnter)\r\n .directive('stScopeData', ScopeData)\r\n ;\r\n}\r\n","namespace st.search {\r\n angular.module('st.search', []);\r\n\r\n export const UrlSeparator = ':';\r\n export const SortSeparator = ',';\r\n export const DefaultGroup = '';\r\n export const TermPropertyName = 'term';\r\n export const PagePropertyName = 'page';\r\n export const SortPropertyName = 'sort';\r\n\r\n interface SearchBoxAttributes extends angular.IAttributes {\r\n stSearchBox: string;\r\n stSearchBoxInput: string;\r\n stSearchBoxButton: string;\r\n }\r\n\r\n const SearchBox: angular.IDirectiveFactory = ($window: angular.IWindowService) => {\r\n function submitSearch(query: string, url: string) {\r\n if ($window.location.pathname.toLocaleUpperCase() === url.toLocaleUpperCase()) {\r\n $window.location.hash = '/?term=' + encodeURIComponent(query);\r\n } else {\r\n $window.location.assign(url + '#/?term=' + encodeURIComponent(query));\r\n }\r\n }\r\n return {\r\n restrict: 'A',\r\n link: (scope: angular.IScope, el: angular.IAugmentedJQuery, attrib: SearchBoxAttributes) => {\r\n const input = angular.element(attrib.stSearchBoxInput || '.form-control', el);\r\n const btn = angular.element(attrib.stSearchBoxButton || '.btn', el);\r\n if (attrib.stSearchBox && input.length === 1 && btn.length) {\r\n input.on('keypress', (e) => {\r\n if (e.keyCode === 13 && input.val()) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n scope.$apply(function() {\r\n submitSearch(input.val(), attrib.stSearchBox);\r\n });\r\n }\r\n });\r\n btn.on('click', (e) => {\r\n if (input.val()) {\r\n scope.$apply(function() {\r\n submitSearch(input.val(), attrib.stSearchBox);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n };\r\n };\r\n SearchBox.$inject = ['$window'];\r\n\r\n angular.module('st.search')\r\n .directive('stSearchBox', SearchBox);\r\n}\r\n","namespace st.search {\r\n class ConstantFiltersController implements controllers.IConstantFiltersController {\r\n\r\n group: string = DefaultGroup;\r\n filters: { [key: string]: string[] };\r\n\r\n static $inject = ['$rootScope', 'stFacetService'];\r\n\r\n constructor($rootScope: angular.IScope, stFacetService: services.IFacetService) {\r\n $rootScope.$on('stRegisterFacets', (e: angular.IAngularEvent) => {\r\n stFacetService.addConstantFilters(this.group, this.filters);\r\n });\r\n }\r\n }\r\n\r\n angular.module('st.search')\r\n .controller('stConstantFiltersCtrl', ConstantFiltersController);\r\n}\r\n","namespace st.search {\r\n class FacetItemsController implements controllers.IFacetItemsController {\r\n\r\n group: string = DefaultGroup;\r\n name: string;\r\n allowMultiple: boolean = false;\r\n private model: string | string[];\r\n private _items: models.FacetItemCollection = new models.FacetItemCollection();\r\n\r\n static $inject = ['$rootScope', 'stFacetService', '$log'];\r\n\r\n constructor(\r\n $rootScope: angular.IRootScopeService,\r\n private facetService: services.IFacetService,\r\n private $log: angular.ILogService) {\r\n\r\n this._items.addWatch(() => {\r\n this.notify();\r\n });\r\n\r\n $rootScope.$on('stRegisterFacets', (e: angular.IAngularEvent) => {\r\n this.facetService.registerFacets(this.group, this.name, this._items);\r\n });\r\n\r\n $rootScope.$on('stFacetsInit', (e: angular.IAngularEvent, values: { [name: string]: string[] }, groups: string[]) => {\r\n let selectedNames = values[this.name] || [];\r\n let changed = this._items.setSelectedNames(selectedNames, false);\r\n if (changed) {\r\n groups.push(this.group);\r\n }\r\n });\r\n }\r\n\r\n get items(): models.IFacetItem[] {\r\n return this._items;\r\n }\r\n set items(value) {\r\n this._items.length = 0;\r\n value.forEach((item) => {\r\n this._items.push(angular.extend(new models.FacetItem(this._items), item));\r\n });\r\n }\r\n\r\n modelChanged(): void {\r\n let ids = this.model ? Array.isArray(this.model) ? this.model : [this.model] : [];\r\n this._items.setSelectedIds(ids);\r\n }\r\n\r\n toggle(item: models.IFacetItem): void;\r\n toggle(index: number): void;\r\n toggle(x): void {\r\n this._items.toggle(x, this.allowMultiple);\r\n }\r\n\r\n add(item: models.IFacetItem): void;\r\n add(index: number): void;\r\n add(x): void {\r\n this._items.select(x, this.allowMultiple);\r\n }\r\n\r\n remove(item: models.IFacetItem): void;\r\n remove(index: number): void;\r\n remove(x): void {\r\n this._items.deselect(x);\r\n }\r\n\r\n notify() {\r\n this.facetService.update(this.name, this.group);\r\n }\r\n }\r\n\r\n angular.module('st.search')\r\n .controller('stFacetItemsCtrl', FacetItemsController);\r\n}\r\n","namespace st.search {\r\n class FacetService implements services.IFacetService {\r\n\r\n public facetGroups: IFacetGroups = {};\r\n public isSearching: { [group: string]: boolean } = {};\r\n public results: { [group: string]: services.ISearchResponse } = {};\r\n\r\n private _firstLoad = true;\r\n private _stSearchConfig: configuration.ISearchConfig;\r\n private _stSearchGroupConfig: configuration.ISearchGroupConfigs;\r\n private _registeredGroups: string[] = [];\r\n private _groupsUpdated: string[] = null;\r\n private _constantFilters: { [group: string]: { [key: string]: string[] } } = {};\r\n\r\n // private static NameRegex: RegExp = /^(.+)\\[(\\d+)\\]$/;\r\n\r\n static $inject = ['$injector', '$rootScope', '$location', '$http', '$q', '$log'];\r\n\r\n constructor(\r\n $injector: angular.auto.IInjectorService,\r\n private $rootScope: angular.IRootScopeService,\r\n private $location: angular.ILocationService,\r\n private $http: angular.IHttpService,\r\n private $q: angular.IQService,\r\n private $log: angular.ILogService) {\r\n\r\n if ($injector.has('stSearchConfig') && $injector.has('stSearchGroupConfig')) {\r\n this._stSearchConfig = $injector.get('stSearchConfig');\r\n this._stSearchGroupConfig = $injector.get('stSearchGroupConfig');\r\n } else {\r\n $log.error('Search Configuration was never declared. You must place a Facet Search Results widget on the page.');\r\n }\r\n\r\n $rootScope.$on('$locationChangeSuccess', (e: angular.IAngularEvent, newVal: string, oldVal: string) => {\r\n if (this._firstLoad) {\r\n $rootScope.$emit('stRegisterFacets');\r\n let args = Object.keys(this.facetGroups);\r\n args.unshift(this._registeredGroups);\r\n addUnique.apply(null, args);\r\n }\r\n\r\n if (!this._groupsUpdated) {\r\n let search = angular.copy($location.search());\r\n // Ignore Page\r\n if (search.page) {\r\n delete search.page;\r\n }\r\n\r\n angular.forEach(search, (item: string, key: string) => {\r\n if (key !== TermPropertyName) {\r\n // TODO: if this allows a tree of facets/tags, then item will be an Array\r\n // e.g. name=val1&name=val2&name=val3 => { name: [ 'val1', 'val2', 'val3' ] }\r\n search[key] = item.split(UrlSeparator);\r\n }\r\n });\r\n\r\n let updatedGroups: string[] = [];\r\n\r\n $rootScope.$emit('stFacetsInit', search, updatedGroups);\r\n\r\n updatedGroups.forEach(group => {\r\n this.groupUpdated(group);\r\n });\r\n }\r\n\r\n if (this._firstLoad) {\r\n this._registeredGroups.forEach(group => {\r\n const config = this._stSearchGroupConfig[group];\r\n if (config.searchOnLoad) {\r\n this.groupUpdated(group);\r\n }\r\n });\r\n }\r\n\r\n if (this._groupsUpdated && this._groupsUpdated.length) {\r\n $log.debug('perform search', this._groupsUpdated);\r\n\r\n this._groupsUpdated.forEach(group => {\r\n this.submitSearch(group);\r\n });\r\n\r\n this._groupsUpdated = null;\r\n }\r\n this._firstLoad = false;\r\n });\r\n }\r\n\r\n registerFacets(group: string, name?: string, filters?: models.IFacetItem[] | { term: string }): void {\r\n group = group || DefaultGroup;\r\n let facetGroup = this.facetGroups[group] = this.facetGroups[group] || {};\r\n if (name && filters) {\r\n if (Array.isArray(filters)) {\r\n if (filters.length) {\r\n facetGroup[name] = filters;\r\n }\r\n } else {\r\n facetGroup[name] = filters;\r\n }\r\n }\r\n }\r\n\r\n setPage(pageId: number, group: string): void {\r\n group = group || DefaultGroup;\r\n let currentPageId = this.getPageId(group);\r\n if (currentPageId !== pageId) {\r\n // TODO: set group in the URL\r\n this.$location.search(PagePropertyName, pageId > 1 ? pageId : null);\r\n this.groupUpdated(group);\r\n }\r\n }\r\n\r\n setSortBy(group: string, ...sortBy: string[]): void {\r\n group = group || DefaultGroup;\r\n const currentSortBy = this.getSortBy(group);\r\n if (!angular.equals(currentSortBy, sortBy)) {\r\n let qSort: string = null;\r\n if (sortBy && sortBy.length) {\r\n qSort = sortBy.reduce((prev: string[], item: string) => {\r\n if (item && (item = item.trim())) {\r\n prev.push(item);\r\n }\r\n return prev;\r\n }, []).join(SortSeparator);\r\n }\r\n // reset page to 1 if need be\r\n const currentPageId = this.getPageId(group);\r\n if (currentPageId !== 1) {\r\n this.$location.search(PagePropertyName, null);\r\n }\r\n // TODO: set group in the URL\r\n this.$location.search(SortPropertyName, qSort || null);\r\n this.groupUpdated(group);\r\n }\r\n }\r\n\r\n addConstantFilters(group: string, filters: { [key: string]: string[] }): void {\r\n let filterAdded = false;\r\n group = group || DefaultGroup;\r\n let groupFilters = this._constantFilters[group] = this._constantFilters[group] || {};\r\n angular.forEach(filters, (values, key) => {\r\n let groupItems = groupFilters[key] = groupFilters[key] || [];\r\n for (let i = 0; i < values.length; i++) {\r\n if (values[i]) {\r\n groupItems.push(values[i]);\r\n filterAdded = true;\r\n }\r\n }\r\n });\r\n if (filterAdded) {\r\n addUnique(this._registeredGroups, group);\r\n }\r\n }\r\n\r\n update(name: string, group: string, doSearch = true): void {\r\n group = group || DefaultGroup;\r\n let facetGroup = this.facetGroups[group];\r\n if (!facetGroup) {\r\n return;\r\n }\r\n let value: string | models.IFacetItem[] = null;\r\n if (name === TermPropertyName) {\r\n if (facetGroup.term && facetGroup.term.term) {\r\n value = facetGroup.term.term;\r\n }\r\n } else {\r\n value = facetGroup[name];\r\n }\r\n this.updateUrl(value, name);\r\n\r\n // reset page to 1 if need be\r\n let currentPageId = this.getPageId(group);\r\n if (currentPageId !== 1) {\r\n this.$location.search(PagePropertyName, null);\r\n }\r\n\r\n if (doSearch) {\r\n this.groupUpdated(group);\r\n }\r\n\r\n this.$rootScope.$emit('stSearchUpdated', group, name, value);\r\n this.$log.debug('stFacetUpdated', group, name, value);\r\n }\r\n\r\n private updateUrl(value: string | models.IFacetItem[], name: string): void {\r\n let qValue: string;\r\n if (!value) {\r\n qValue = null;\r\n } else if (typeof value === 'string') {\r\n qValue = value;\r\n } else if (value.length) {\r\n qValue = value.reduce((items: string[], item: models.IFacetItem) => {\r\n if (item.selected) {\r\n items.push(item.name);\r\n }\r\n return items;\r\n }, []).join(UrlSeparator);\r\n }\r\n\r\n if (!qValue) {\r\n qValue = null;\r\n }\r\n if (!this.$location.path()) {\r\n this.$location.path('/');\r\n }\r\n this.$location.search(name, qValue);\r\n }\r\n\r\n private submitSearch(group: string): void {\r\n let req: services.ISearchRequest = {\r\n Filters: {},\r\n Group: group\r\n };\r\n if (!this._stSearchConfig || !this._stSearchGroupConfig) {\r\n return;\r\n }\r\n let hasFilters = false;\r\n let hasConstFilters = false;\r\n let groupConfig = this._stSearchGroupConfig[group];\r\n if (!groupConfig.indexName) {\r\n this.$log.error('Search Index not specified for', group ? ('group: \"' + group + '\"') : 'default group');\r\n return;\r\n }\r\n req.ItemsPerPage = groupConfig.itemsPerPage;\r\n req.OrFacets = groupConfig.orFacets;\r\n req.SearchFields = groupConfig.searchFields;\r\n req.HighlightedFields = groupConfig.highlightedFields;\r\n\r\n let constFilters = this._constantFilters[group] || {};\r\n angular.forEach(constFilters, (items, key) => {\r\n let filters = req.Filters[key] = [];\r\n if (key && items) {\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i]) {\r\n filters.push(items[i]);\r\n hasConstFilters = true;\r\n }\r\n }\r\n }\r\n });\r\n\r\n let facetGroup = this.facetGroups[group];\r\n angular.forEach(facetGroup, (value, name) => {\r\n if (name === TermPropertyName) {\r\n let termCtrl = value;\r\n if (termCtrl && termCtrl.term) {\r\n req.Term = termCtrl.term;\r\n }\r\n } else {\r\n let items = value;\r\n items.forEach(facet => {\r\n if (facet.selected) {\r\n (req.Filters[name] = req.Filters[name] || []).push(facet.id);\r\n hasFilters = true;\r\n }\r\n });\r\n }\r\n });\r\n if (!hasFilters && !hasConstFilters) {\r\n delete req.Filters;\r\n }\r\n if (groupConfig.allowEmptySearch || req.Term || hasFilters) {\r\n this.isSearching[group] = true;\r\n let respPromises: angular.IHttpPromise[] = [];\r\n let pageId = this.getPageId(group);\r\n let sortBy = this.getSortBy(group);\r\n\r\n req.Skip = req.ItemsPerPage * (pageId - 1);\r\n if (sortBy && sortBy.length) {\r\n req.SortBy = sortBy;\r\n }\r\n let firstResp = this.submitSearchReq(req, groupConfig.indexName);\r\n\r\n if (pageId > 1 && this._firstLoad && groupConfig.loadAllPagesOnInit) {\r\n while (pageId > 1) {\r\n pageId--;\r\n req = angular.copy(req);\r\n req.Skip = req.ItemsPerPage * (pageId - 1);\r\n respPromises.push(this.submitSearchReq(req, groupConfig.indexName));\r\n }\r\n }\r\n respPromises.push(firstResp);\r\n\r\n this.$q.all(respPromises)\r\n .then(resps => {\r\n let pages = resps.map(resp => {\r\n return resp.data;\r\n });\r\n let arg = pages.length === 1 ? pages[0] : pages;\r\n this.results[group] = pages[pages.length - 1];\r\n this.$rootScope.$emit('stSearchResponse', arg, group);\r\n this.$log.debug('Search result for group:', group, '; Result:', arg);\r\n }, data => {\r\n this.$log.error('Error submitting search for group:', group, '; Error data:', data);\r\n })\r\n .finally(() => {\r\n this.isSearching[group] = false;\r\n });\r\n } else {\r\n this.results[group] = null;\r\n this.$rootScope.$emit('stSearchResponse', null, group);\r\n this.$log.debug('Search Cleared for group:', group);\r\n }\r\n }\r\n\r\n getPageId(group: string): number {\r\n let qPage: string;\r\n let search = this.$location.search();\r\n if (this._registeredGroups.length > 1) {\r\n qPage = search[(group || DefaultGroup) + UrlSeparator + PagePropertyName];\r\n } else {\r\n qPage = search[PagePropertyName];\r\n }\r\n if (qPage) {\r\n let pageId = parseInt(qPage, 10);\r\n if (pageId > 1) {\r\n return pageId;\r\n }\r\n }\r\n return 1;\r\n }\r\n\r\n getSortBy(group: string): string[] {\r\n let qSort: string;\r\n const search = this.$location.search();\r\n if (this._registeredGroups.length > 1) {\r\n qSort = search[(group || DefaultGroup) + UrlSeparator + SortPropertyName];\r\n } else {\r\n qSort = search[SortPropertyName];\r\n }\r\n if (qSort) {\r\n return qSort.split(SortSeparator).reduce((prev: string[], item: string) => {\r\n if (item && (item = item.trim())) {\r\n prev.push(item);\r\n }\r\n return prev;\r\n }, []);\r\n }\r\n return [];\r\n }\r\n\r\n private submitSearchReq(\r\n request: services.ISearchRequest,\r\n indexName: string\r\n ) {\r\n return this.$http.post(\r\n this._stSearchConfig.endpoint + '/' + indexName, request);\r\n }\r\n\r\n private groupUpdated(group: string) {\r\n if (!this._groupsUpdated) {\r\n this._groupsUpdated = [];\r\n }\r\n addUnique(this._groupsUpdated, group || DefaultGroup);\r\n }\r\n }\r\n\r\n function addUnique(coll: T[], ...items: T[]) {\r\n if (items && items.length) {\r\n items.forEach(item => {\r\n if (coll.indexOf(item) === -1) {\r\n coll.push(item);\r\n }\r\n });\r\n }\r\n }\r\n\r\n angular.module('st.search')\r\n .service('stFacetService', FacetService);\r\n}\r\n","namespace st.search.models {\r\n export class FacetItem implements IFacetItem {\r\n id: string;\r\n title: string;\r\n name: string;\r\n private _selected: boolean = false;\r\n\r\n constructor(private _parent: FacetItemCollection) {\r\n }\r\n\r\n get selected() {\r\n return this._selected;\r\n }\r\n set selected(val) {\r\n if (this._selected !== val) {\r\n this._selected = val;\r\n this._parent.notify();\r\n }\r\n }\r\n }\r\n\r\n // Extending an Array in this way is only supported in TypeScript > v2.1\r\n export class FacetItemCollection extends Array {\r\n private _watchers: Function[] = [];\r\n private _notificationCtx: { notified: boolean } = null;\r\n\r\n indexOfId(id: string): number {\r\n for (let i = 0; i < this.length; i++) {\r\n if (id === this[i].id) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n indexOfName(name: string): number {\r\n for (let i = 0; i < this.length; i++) {\r\n if (name === this[i].name) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n addWatch(watcher: Function): void {\r\n this._watchers.push(watcher);\r\n }\r\n\r\n notify(): void {\r\n if (this._notificationCtx) {\r\n this._notificationCtx.notified = true;\r\n } else {\r\n this._watchers.forEach(fn => {\r\n fn();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Suppresses the notificaiton of changed items.\r\n * @parm The callback.\r\n * @returns true if a change occured; otherwise false.\r\n */\r\n suppressNotify(callback: Function): boolean {\r\n if (callback) {\r\n let origCtx = this._notificationCtx;\r\n this._notificationCtx = { notified: false };\r\n callback();\r\n let hasNotified = this._notificationCtx.notified;\r\n this._notificationCtx = origCtx;\r\n return hasNotified;\r\n }\r\n return false;\r\n }\r\n\r\n clearSelected(notfy = true): boolean {\r\n let hasChanged = this.suppressNotify(() => {\r\n this.forEach(item => {\r\n item.selected = false;\r\n });\r\n });\r\n if (hasChanged && notfy) {\r\n this.notify();\r\n }\r\n return hasChanged;\r\n }\r\n\r\n setSelectedIds(ids: string[], notify = true): boolean {\r\n let hasChanged = this.setSelected(ids, 'id');\r\n\r\n if (hasChanged && notify) {\r\n this.notify();\r\n }\r\n return hasChanged;\r\n }\r\n\r\n setSelectedNames(names: string[], notify = true): boolean {\r\n let hasChanged = this.setSelected(names, 'name');\r\n\r\n if (hasChanged && notify) {\r\n this.notify();\r\n }\r\n return hasChanged;\r\n }\r\n\r\n private setSelected(items: string[], propName: string): boolean {\r\n let hasChanged = this.suppressNotify(() => {\r\n this.forEach(item => {\r\n item.selected = items ? items.indexOf(item[propName]) >= 0 : false;\r\n });\r\n });\r\n return hasChanged;\r\n }\r\n\r\n private findItem(item: { id: string, name: string }): IFacetItem;\r\n private findItem(index: number): IFacetItem;\r\n private findItem(x: any): IFacetItem {\r\n let item: IFacetItem = null;\r\n let i: number;\r\n if (typeof x !== 'undefined') {\r\n if (this.indexOf(x) > -1) {\r\n item = x;\r\n } else if (typeof x === 'number') {\r\n item = this[x];\r\n } else if (x.id && (i = this.indexOfId(x.id)) > -1) {\r\n item = this[i];\r\n } else if (x.name && (i = this.indexOfName(x.name)) > -1) {\r\n item = this[i];\r\n }\r\n }\r\n return item;\r\n }\r\n\r\n toggle(item: IFacetItem, allowMultiple: boolean): void;\r\n toggle(index: number, allowMultiple: boolean): void;\r\n toggle(x: any, allowMultiple: boolean): void {\r\n let item = this.findItem(x);\r\n if (item) {\r\n if (item.selected) {\r\n item.selected = false;\r\n } else {\r\n if (!allowMultiple) {\r\n this.clearSelected(false);\r\n }\r\n item.selected = true;\r\n }\r\n }\r\n }\r\n\r\n select(item: IFacetItem, allowMultiple: boolean): void;\r\n select(index: number, allowMultiple: boolean): void;\r\n select(x: any, allowMultiple: boolean): void {\r\n let item = this.findItem(x);\r\n if (item && !item.selected) {\r\n if (!allowMultiple) {\r\n this.clearSelected(false);\r\n }\r\n item.selected = true;\r\n }\r\n }\r\n\r\n deselect(item: IFacetItem): void;\r\n deselect(index: number): void;\r\n deselect(x): void {\r\n let item = this.findItem(x);\r\n if (item && item.selected) {\r\n item.selected = false;\r\n }\r\n }\r\n }\r\n}\r\n","namespace st.search {\r\n class TermFacetController implements controllers.ITermFacetController {\r\n\r\n group: string = DefaultGroup;\r\n name: string;\r\n model: string;\r\n private _term: string;\r\n\r\n static $inject = ['$rootScope', 'stFacetService'];\r\n\r\n constructor($rootScope: angular.IRootScopeService, private stFacetService: services.IFacetService) {\r\n $rootScope.$on('stRegisterFacets', (e: angular.IAngularEvent) => {\r\n stFacetService.registerFacets(this.group, TermPropertyName, this);\r\n });\r\n\r\n $rootScope.$on('stFacetsInit', (e, search: { term: string }, groups: string[]) => {\r\n if (this._term !== search.term || this.model !== search.term) {\r\n this._term = this.model = search.term;\r\n groups.push(this.group);\r\n }\r\n });\r\n }\r\n\r\n get term(): string {\r\n return this._term;\r\n }\r\n set term(val: string) {\r\n if (this._term !== val) {\r\n this._term = this.model = val;\r\n this.stFacetService.update(TermPropertyName, this.group);\r\n }\r\n }\r\n\r\n notify(): void {\r\n this.term = this.model;\r\n }\r\n }\r\n\r\n angular.module('st.search')\r\n .controller('stTermFacetCtrl', TermFacetController);\r\n}\r\n","namespace st.search {\r\n class FacetSearchResultsController implements controllers.IFacetSearchResultsController {\r\n\r\n group: string = DefaultGroup;\r\n results: services.ISearchResponse;\r\n pages: models.IResultPage[] = [];\r\n\r\n static $inject = ['$rootScope', 'stFacetService'];\r\n\r\n constructor($rootScope: angular.IRootScopeService, private facetService: services.IFacetService) {\r\n\r\n $rootScope.$on('stRegisterFacets', (e: angular.IAngularEvent) => {\r\n this.facetService.registerFacets(this.group);\r\n });\r\n\r\n $rootScope.$on('stFacetsInit', (e: angular.IAngularEvent, search, groups: string[]) => {\r\n const curPage = this.facetService.getPageId(this.group);\r\n const pageChanged = this.selectPageId(curPage, false);\r\n if (pageChanged) {\r\n groups.push(this.group);\r\n }\r\n const sort = this.facetService.getSortBy(this.group).join(SortSeparator);\r\n if (sort && (this).sortBy !== sort) {\r\n (this).sortBy = sort;\r\n groups.push(this.group);\r\n }\r\n });\r\n\r\n $rootScope.$on('stSearchResponse', (\r\n e: angular.IAngularEvent,\r\n response: services.ISearchResponse | services.ISearchResponse[],\r\n group: string\r\n ) => {\r\n if (!angular.isUndefined(group) && group === this.group) {\r\n if (Array.isArray(response)) {\r\n if (response.length) {\r\n this.results = response[response.length - 1];\r\n }\r\n } else {\r\n this.results = response;\r\n }\r\n if (this.results) {\r\n this.pages.length = this.results.Pages;\r\n for (let i = 0; i < this.results.Pages; i++) {\r\n if (this.pages[i]) {\r\n this.pages[i].isActive = i === this.results.Page - 1;\r\n } else {\r\n this.pages[i] = {\r\n id: i + 1,\r\n isActive: i === this.results.Page - 1\r\n };\r\n }\r\n }\r\n } else {\r\n this.pages.length = 0;\r\n }\r\n }\r\n });\r\n }\r\n\r\n get isSearching(): boolean {\r\n return this.facetService.isSearching[this.group];\r\n }\r\n\r\n selectPage(page: models.IResultPage, notify = true): boolean {\r\n return this.selectPageId(page.id, notify);\r\n }\r\n\r\n selectPageIndex(index: number, notify = true): boolean {\r\n let page: models.IResultPage;\r\n if (0 <= index && index < this.pages.length && (page = this.pages[index])) {\r\n return this.selectPageId(page.id, notify);\r\n }\r\n return false;\r\n }\r\n\r\n selectPageId(id: number, notify = true): boolean {\r\n let pageChanged = false;\r\n this.pages.forEach(page => {\r\n if (page.id === id) {\r\n if (!page.isActive) {\r\n page.isActive = true;\r\n pageChanged = true;\r\n }\r\n } else {\r\n if (page.isActive) {\r\n page.isActive = false;\r\n pageChanged = true;\r\n }\r\n }\r\n });\r\n if (pageChanged && notify) {\r\n this.facetService.setPage(id, this.group);\r\n }\r\n return pageChanged;\r\n }\r\n\r\n nextPage(): boolean {\r\n let idChanged = 0;\r\n for (let i = 0; i < this.pages.length; i++) {\r\n const page = this.pages[i];\r\n if (page.isActive) {\r\n if (i + 1 < this.pages.length) {\r\n page.isActive = false;\r\n this.pages[i + 1].isActive = true;\r\n idChanged = this.pages[i + 1].id;\r\n }\r\n break;\r\n }\r\n }\r\n if (idChanged > 0) {\r\n this.facetService.setPage(idChanged, this.group);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n prevPage(): boolean {\r\n let idChanged = 0;\r\n for (let i = 0; i < this.pages.length; i++) {\r\n const page = this.pages[i];\r\n if (page.isActive) {\r\n if (i > 0) {\r\n page.isActive = false;\r\n this.pages[i - 1].isActive = true;\r\n idChanged = this.pages[i - 1].id;\r\n }\r\n break;\r\n }\r\n }\r\n if (idChanged > 0) {\r\n this.facetService.setPage(idChanged, this.group);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n // This is really for demo purposes of sorting\r\n sortChanged(): void {\r\n const x: any[] = ((this).sortBy || '').split(SortSeparator);\r\n x.unshift(this.group);\r\n this.facetService.setSortBy.apply(this.facetService, x);\r\n }\r\n }\r\n\r\n angular.module('st.search')\r\n .controller('stFacetSearchResultsCtrl', FacetSearchResultsController);\r\n}\r\n","import * as CONST from '../utils/constants';\nimport Util from '../utils/ui';\n\nclass Common {\n\tconstructor() {\n\t\t\n\t}\n\n\tinit() {\n\t\tthis.bindEvents();\n\n\t\tif (Util.getViewPort() === CONST.ViewPort.Desktop) {\n\t\t\t$('.controls.collapse').addClass('show');\n\t\t\t$('.js-toggle').removeClass('collapsed');\n\t\t}\n\t}\n\n\tbindEvents() {\n\t\t$('a[href*=\"#\"]').not('[href=\"#\"]').not('[href=\"#0\"]').not('.js-toggle').on('click', e => { this.smoothScroll(e); });\n\t}\n\n\tsmoothScroll(e) {\n\t\tlet link = $(e.currentTarget);\n\t\tlet target = $(link.attr('href'));\n\n\t\t// Does a scroll target exist?\n\t\tif (target.length) {\n\n\t\t\t// Only prevent default if animation is actually gonna happen\n\t\t\te.preventDefault();\n\n\t\t\t$('html, body').animate({\n\t\t\t\tscrollTop: target.offset().top - 150\n\t\t\t}, 1000);\n\t\t}\n\t}\n}\n\nexport default Common;","import * as CONST from '../utils/constants';\nimport Util from '../utils/ui';\nimport { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';\n\nclass Header {\n\tconstructor() {\n\t\tthis.body = $('body');\n\n\t\t// header\n\t\tthis.headerSearchWrap = $('.js-search');\n\t\tthis.headerOffset = document.getElementById(\"header\").offsetTop;\n\n\t\t// nav\n\t\tthis.openNavToggle = $('.js-nav-open');\n\t\tthis.closeNavToggle = $('.js-nav-close');\n\t\tthis.nav = $('.js-nav');\n\n\t\t// search\n\t\tthis.searchMegaMenu = $('#header-megamenu-search');\n\t\tthis.searchMegaMenuBtn = $('#header-megamenu-search + .input-group-btn .btn');\n\t\tthis.megamenuSearchWrap = $('.primary-nav-search .primary-nav-megamenu');\n\n\t\tthis.mouseOver = false;\n\t}\n\n\tinit() {\n\t\tthis.bindEvents();\n\t}\n\n\tbindEvents() {\n\t\t// sticky header \n\t\t$(document).on('scroll', e => this.stickyHeader(e));\n\n\t\t// mobile nav\n\t\tthis.openNavToggle.on('click', e => { e.stopPropagation(); this.toggleNav(); });\n\t\tthis.closeNavToggle.on('click', e => { e.stopPropagation(); this.toggleNav(); });\n\n\t\t$('.js-primary-nav-toggle-children').on('click', e => { this.mobileNavItem(e) });\n\n\t\t// on enter\n\t\t$('.primary-nav > li > a').on('keydown', e => { this.tabbingNav(e) });\n\t\t$('.js-search-tabbing').on('keydown', e => { this.tabbingSearch(e) });\n\t\t$('.js-search-tabbing').on('click', e => { this.toggleSearch(e) });\n\n\t\t// on blur of megamenu search, remove focused class from nav item\n\t\tthis.searchMegaMenuBtn.on('blur', e => { $('.js-search-tabbing').closest('li').removeClass('focused') });\n\n\t\t$('.js-nav-back').on('click', e => { this.mobileNavItemBack(e) });\n\n\t\t// on mouseenter, set to true, on mouseleave - close megamenu\n\t\t$(\".primary-nav-megamenu\")\n\t\t\t.on('mouseenter', e => { this.mouseOver = true; })\n\t\t\t.on('mouseleave', e => {\n\t\t\t\tif (this.mouseOver === true) {\n\t\t\t\t\t$('.primary-nav > li').removeClass('open');\n\t\t\t\t\t$('.js-nav-dropdown-toggle').removeClass('open');\n\t\t\t\t\tthis.megamenuSearchWrap.removeClass('open');\n\t\t\t\t}\n\t\t\t});\n\n\t\t// utilities menu toggle\n\t\tthis.nav.on('click', e => { e.stopPropagation(); });\n\n\t\t$(window).on('resize', e => this.onResize(e));\n\n\t\t$(window).on('click', e => {\n\t\t\t$('.primary-nav > li').removeClass('focused');\n\t\t});\n\t}\n\n\tonResize(e) {\n\t\tif (Util.getViewPort() === CONST.ViewPort.Desktop) {\n\t\t\t// if on desktop, close all mobile navs\n\t\t\tif (this.nav.hasClass('open')) {\n\t\t\t\tenableBodyScroll(this.nav);\n\t\t\t\tthis.nav.removeClass('open-subnav');\n\t\t\t\tthis.nav.find('li').removeClass('open');\n\t\t\t\t$('.js-nav-dropdown-toggle').removeClass('open');\n\t\t\t}\n\t\t}\n\t}\n\n\t// if user hits enter when tabbing on menu items, open mega menu and set tabbing to children\n\ttabbingNav(e) {\n\t\tlet target = $(e.currentTarget);\n\n\t\tif (e.keyCode === 13 && target.hasClass('primary-nav-has-children')) {\n\t\t\te.preventDefault();\n\t\t\ttarget.closest('li').addClass('focused');\n\t\t}\n\n\t\tlet $activeElem = $(document.activeElement);\n\t\tlet $prevItem = $activeElem.closest('li').prev();\n\n\t\tif ($prevItem.hasClass('focused')) {\n\t\t\t$prevItem.removeClass('focused');\n\t\t}\n\t}\n\n\ttabbingSearch(e) {\n\t\tlet target = $(e.currentTarget);\n\n\t\tif (e.keyCode === 13) {\n\t\t\te.preventDefault();\n\t\t\ttarget.closest('li').addClass('focused');\n\n\t\t\tthis.searchMegaMenu.focus();\n\t\t}\n\n\t\tlet $activeElem = $(document.activeElement);\n\t\tlet $prevItem = $activeElem.closest('li').prev();\n\n\t\tif ($prevItem.hasClass('focused')) {\n\t\t\t$prevItem.removeClass('focused');\n\t\t}\n\t}\n\n\ttoggleSearch(e) {\n\t\t$('.primary-nav > li').removeClass('open');\n\t\t$('.js-nav-dropdown-toggle').removeClass('open');\n\n\t\tthis.megamenuSearchWrap.toggleClass('open');\n\t\tthis.searchMegaMenu.focus();\n\t}\n\n\t// toggle nav open/close\n\ttoggleNav(e) {\n\t\tthis.body.toggleClass('nav-open');\n\t\tthis.nav.toggleClass('open');\n\n\t\tif (this.nav.hasClass('open')) {\n\t\t\tdisableBodyScroll(this.nav);\n\t\t}\n\t\telse {\n\t\t\tenableBodyScroll(this.nav);\n\t\t\tthis.nav.removeClass('open-subnav');\n\t\t\tthis.nav.find('li').removeClass('open');\n\t\t\t$('.js-nav-dropdown-toggle').removeClass('open');\n\t\t}\n\t}\n\n\t// back link on mobile nav items\n\tmobileNavItemBack(e) {\n\t\tlet target = $(e.currentTarget);\n\t\tlet parentLI = target.closest('li');\n\t\tlet parentList = target.closest('.js-nav-dropdown-toggle');\n\n\t\tparentLI.removeClass('open');\n\t\tthis.nav.removeClass('open-subnav');\n\t\tparentList.removeClass('open').removeAttr('style');\n\t}\n\n\t// clicking on items in mobile nav\n\tmobileNavItem(e) {\n\t\te.preventDefault();\n\t\tlet target = $(e.currentTarget);\n\t\tlet parent = target.closest('li');\n\t\tlet targetChildren = parent.find('> .js-nav-dropdown-toggle');\n\t\tlet isCurrentlyOpen = parent.hasClass('open');\n\n\t\t// remove from all first\n\t\t$('.primary-nav > li').removeClass('open');\n\t\t$('.js-nav-dropdown-toggle').removeClass('open');\n\t\tthis.megamenuSearchWrap.removeClass('open');\n\n\t\tif (targetChildren.length > 0) {\n\t\t\tif (!isCurrentlyOpen) {\n\t\t\t\ttargetChildren.addClass('open');\n\t\t\t\tparent.addClass('open');\t\t\n\t\t\t}\n\n\t\t\tif (Util.getViewPort() !== CONST.ViewPort.Desktop) {\n\t\t\t\tthis.nav.toggleClass('open-subnav');\n\t\t\t}\n\t\t}\n\t}\n\n\tstickyHeader(e) {\n\t\tif ($(document).scrollTop() > this.headerOffset) {\n\t\t\t$('#header').addClass('header-sticky');\n\t\t\t$('body').addClass('header-sticky');\n\t\t}\n\t\telse {\n\t\t\t$('#header').removeClass('header-sticky');\n\t\t\t$('body').removeClass('header-sticky');\n\t\t}\n\t}\n}\n\nexport default Header;","import * as CONST from '../utils/constants';\nimport Util from '../utils/ui';\nimport { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';\n\nclass Search {\n\tconstructor() {\n\t\t// header\n\t\tthis.headerSearchWrap = $('.js-search');\n\t\tthis.headerOffset = document.getElementById(\"header\").offsetTop;\n\n\t\t// search\n\t\tthis.searchToggle = $('.js-search-toggle');\n\t\tthis.searchWrap = $('.js-search');\n\t\tthis.closeSearchToggle = $('.js-close-search');\n\n\t\tthis.searchForm = $('.js-search-form');\n\t}\n\n\tinit() {\n\t\tthis.bindEvents();\n\t}\n\n\tbindEvents() {\n\t\t// search toggle\n\t\tthis.searchToggle.on('click', e => { e.stopPropagation(); this.expandSearch(); });\n\t\tthis.closeSearchToggle.on('click', e => { e.stopPropagation(); this.closeSearch(); });\n\n\t\t// search form on enter input or button\n\t\tthis.searchForm.find('.form-control').on('keydown', e => { if (e.keyCode === 13) { this.searchTerm(e); } });\n\t\tthis.searchForm.find('.btn').on('click', e => { this.searchTerm(e); });\n\n\t\t$(window).on('resize', e => this.onResize(e));\n\t}\n\n\tonResize(e) {\n\t\tif (Util.getViewPort() === CONST.ViewPort.Desktop) {\n\t\t\tthis.searchWrap.removeClass('open');\n\t\t}\n\t}\n\n\tcloseSearch() {\n\t\tthis.searchWrap.removeClass('open');\n\t}\n\n\t// expanding search in header\n\texpandSearch() {\n\t\tlet input = this.headerSearchWrap.find('input[type=\"search\"]');\n\n\t\tif (Util.getViewPort() !== CONST.ViewPort.Desktop) {\n\t\t\t// open menu and focus on search\n\t\t\tthis.searchWrap.addClass('open');\n\t\t\tinput.focus();\n\t\t}\n\t}\n\n\tsearchTerm(e) {\n\t\te.preventDefault();\n\n\t\tlet target = $(e.currentTarget).closest('div');\n\t\tlet input = $(target).find('.form-control');\n\n\t\tlet value = $(input).val();\n\t\tlet name = $(input).attr('name');\n\t\tlet action = $(target).closest('.js-search-form').data('action');\n\n\t\tif ($('body').hasClass('magazine-layout')) {\n\t\t\twindow.location = `/magazine/${action}#/?${name}=${encodeURIComponent(value)}`;\n\t\t}\n\t\telse {\n\t\t\twindow.location = `/${action}?${name}=${encodeURIComponent(value)}`;\n\t\t}\t\t\n\t}\n}\n\nexport default Search;","import $ from 'jquery';\n\nglobal.$ = global.jQuery = window.$ = window.jQuery = $;\n\nimport 'jquery-validation';\nimport 'jquery-validation-unobtrusive';\n//import 'babel-polyfill';\n\nimport Header from './layouts/header';\nimport Search from './layouts/search';\nimport Common from './components/common';\n\n// load npm plugins\n//import 'angular';\nimport 'popper.js';\nimport 'bootstrap';\nimport 'slick-carousel';\n\n// load external plugins\nimport './plugins/angular-init';\n//import './plugins/angular-bootstrap';\n\n// load components\n//import './components/FacetSearchResults/CustomResultsController';\n//import './components/FacetSearchResults/LoadNextFacetSearchResultsCtrl';\n//import './components/FacetSearchResults/PagesFilter';\n\n\n$().ready(e => {\n\tlet header = new Header();\n\theader.init();\n\n\tlet search = new Search();\n\tsearch.init();\n\n\tlet common = new Common();\n\tcommon.init();\n});\n","if ('st' in window && st && st.init) {\n st.init();\n}","\nexport const ViewPort = {\n\tDesktop: 'desktop',\n\tTablet: 'tablet',\n\tMobile: 'mobile'\n}\n\nexport const Breakpoints = {\n\tDesktop: '970',\n\tTablet: '750'\n}","import * as CONST from './constants';\n\n// utility class for reusable ui related functions\n\nexport default class Util {\n\n\t// determine if the current device width is desktop, tablet or mobile\n\t// if (Util.getViewPort() === CONST.ViewPort.Desktop) { // do something if the viewport is desktop })\n\tstatic getViewPort() {\n\t\tlet desktopBreakpoint = CONST.Breakpoints.Desktop;\n\t\tlet tabletBreakpoint = CONST.Breakpoints.Tablet;\n\n\t\tvar width = window.innerWidth;\n\n\t\tif (width >= desktopBreakpoint) {\n\t\t\treturn CONST.ViewPort.Desktop;\n\t\t}\n\t\telse if (width >= tabletBreakpoint) {\n\t\t\treturn CONST.ViewPort.Tablet;\n\t\t}\n\n\t\treturn CONST.ViewPort.Mobile\n\t}\n}","module.exports = jQuery;"],"sourceRoot":""}