{"version":3,"sources":["webpack:///./js/angular/case-studies/case-study-card/controller.js","webpack:///./js/angular/case-studies/case-study-card/index.js","webpack:///./js/angular/case-studies/header/controller.js","webpack:///./js/angular/case-studies/header/index.js","webpack:///./js/angular/case-studies/list/controller.js","webpack:///./js/angular/case-studies/list/index.js","webpack:///./js/angular/case-studies/map/controller.js","webpack:///./js/angular/case-studies/map/index.js","webpack:///./js/angular/case-studies/root/index.js","webpack:///./js/angular/case-studies/map/leafletjs.directive.js","webpack:///./js/angular/case-studies/case-studies-service.js","webpack:///./js/angular/case-studies/index.js","webpack:///./js/angular/core/category-filter/controller.js","webpack:///./js/angular/core/category-filter/index.js","webpack:///./js/angular/core/category-filter/accordion.directive.js","webpack:///./js/angular/core/picturefill/picturefill.directive.js","webpack:///./js/angular/core/filters/open-filter.directive.js","webpack:///./js/angular/core/filters/side-nav-btn.directive.js","webpack:///./js/angular/core/index.js","webpack:///./js/angular/document-library/card/index.js","webpack:///./js/angular/document-library/header/controller.js","webpack:///./js/angular/document-library/header/index.js","webpack:///./js/angular/document-library/list/controller.js","webpack:///./js/angular/document-library/list/index.js","webpack:///./js/angular/document-library/root/index.js","webpack:///./js/angular/document-library/document-library-service.js","webpack:///./js/angular/document-library/index.js","webpack:///./js/angular/faqs/faqs-service.js","webpack:///./js/angular/faqs/card/index.js","webpack:///./js/angular/faqs/header/controller.js","webpack:///./js/angular/faqs/header/index.js","webpack:///./js/angular/faqs/list/controller.js","webpack:///./js/angular/faqs/list/index.js","webpack:///./js/angular/faqs/root/index.js","webpack:///./js/angular/faqs/index.js","webpack:///./js/angular/job-vacancies/card/index.js","webpack:///./js/angular/job-vacancies/header/controller.js","webpack:///./js/angular/job-vacancies/header/index.js","webpack:///./js/angular/job-vacancies/list/controller.js","webpack:///./js/angular/job-vacancies/list/index.js","webpack:///./js/angular/job-vacancies/root/index.js","webpack:///./js/angular/job-vacancies/job-vacancies-service.js","webpack:///./js/angular/job-vacancies/index.js","webpack:///./js/angular/localisation/kentico-localisation/kentico-localisation.factory.js","webpack:///./js/angular/localisation/index.js","webpack:///./js/angular/news/card/index.js","webpack:///./js/angular/news/header/controller.js","webpack:///./js/angular/news/header/index.js","webpack:///./js/angular/news/list/controller.js","webpack:///./js/angular/news/list/index.js","webpack:///./js/angular/news/root/index.js","webpack:///./js/angular/news/news-service.js","webpack:///./js/angular/news/index.js","webpack:///./js/angular/people-finder/card/index.js","webpack:///./js/angular/people-finder/header/controller.js","webpack:///./js/angular/people-finder/header/index.js","webpack:///./js/angular/people-finder/list/controller.js","webpack:///./js/angular/people-finder/list/index.js","webpack:///./js/angular/people-finder/root/index.js","webpack:///./js/angular/people-finder/people-finder-service.js","webpack:///./js/angular/people-finder/index.js","webpack:///./js/angular/products/list/controller.js","webpack:///./js/angular/products/list/index.js","webpack:///./js/angular/products/header/controller.js","webpack:///./js/angular/products/header/index.js","webpack:///./js/angular/products/product-card/controller.js","webpack:///./js/angular/products/product-card/index.js","webpack:///./js/angular/products/root/index.js","webpack:///./js/angular/products/product-card/hover.directive.js","webpack:///./js/angular/products/products-service.js","webpack:///./js/angular/products/index.js","webpack:///./js/angular/video-library/card/index.js","webpack:///./js/angular/video-library/header/controller.js","webpack:///./js/angular/video-library/header/index.js","webpack:///./js/angular/video-library/list/controller.js","webpack:///./js/angular/video-library/list/index.js","webpack:///./js/angular/video-library/root/index.js","webpack:///./js/angular/video-library/video-library-service.js","webpack:///./js/angular/video-library/index.js","webpack:///./js/angular/index.js","webpack:///./js/angular/case-studies/case-study-card/template.html","webpack:///./js/angular/case-studies/header/template.html","webpack:///./js/angular/case-studies/list/template.html","webpack:///./js/angular/case-studies/map/template.html","webpack:///./js/angular/case-studies/root/template.html","webpack:///./js/angular/core/category-filter/template.html","webpack:///./js/angular/document-library/card/template.html","webpack:///./js/angular/document-library/header/template.html","webpack:///./js/angular/document-library/list/template.html","webpack:///./js/angular/document-library/root/template.html","webpack:///./js/angular/faqs/card/template.html","webpack:///./js/angular/faqs/header/template.html","webpack:///./js/angular/faqs/list/template.html","webpack:///./js/angular/faqs/root/template.html","webpack:///./js/angular/job-vacancies/card/template.html","webpack:///./js/angular/job-vacancies/header/template.html","webpack:///./js/angular/job-vacancies/list/template.html","webpack:///./js/angular/job-vacancies/root/template.html","webpack:///./js/angular/news/card/template.html","webpack:///./js/angular/news/header/template.html","webpack:///./js/angular/news/list/template.html","webpack:///./js/angular/news/root/template.html","webpack:///./js/angular/people-finder/card/template.html","webpack:///./js/angular/people-finder/header/template.html","webpack:///./js/angular/people-finder/list/template.html","webpack:///./js/angular/people-finder/root/template.html","webpack:///./js/angular/products/list/template.html","webpack:///./js/angular/products/header/template.html","webpack:///./js/angular/products/product-card/template.html","webpack:///./js/angular/products/root/template.html","webpack:///./js/angular/video-library/card/template.html","webpack:///./js/angular/video-library/header/template.html","webpack:///./js/angular/video-library/list/template.html","webpack:///./js/angular/video-library/root/template.html"],"names":["bindings","casestudy","controller","template","$state","$stateParams","$filter","this","parseCategories","name","label","orderByOptions","find","item","t_partner","t_casestudy","event","keyToRemove","selectedKeys","Object","selectedCategories","key","index","categories","page","category","resourceTypesFilter","filters","items","x","shouldDisplayFilter","resourceType","resourceTypeMapping","count","keys","filterTerm","trim","length","orderBy","selectedOrderBy","elementData","data","getPinIconFromResourceType","restrict","scope","leafletMap","markers","link","element","require","map","L","fg","attribution","maxZoom","accessToken","marker","pin","iconUrl","iconSize","iconAnchor","popupAnchor","icon","mapMarker","cat","child","CaseStudiesService","$http","$log","CONTEXT","angular","request","config","params","cultureCode","context","pageSize","pagesize","pageIndex","mapView","url","window","siteId","res","Promise","err","configureModule","$stateProvider","$urlRouterProvider","$container","abstract","component","array","value","squash","accordions","views","header","results","resolve","caseStudiesService","caseStudyCard","headerComponent","listComponent","mapComponent","rootComponent","LeafletMapDirective","parseAccordions","openedAccordions","tempAccord","isExpanded","selectedCategoryKeys","notify","location","inherit","allowedFilters","existingIndex","isVisible","accordionButton","accordionExpanded","dropdown","netcPicturefill","$timeout","picturefill","OpenFilterDirective","$window","_","SideNavBtnDirective","DocumentLibraryService","documentLibraryService","cardComponent","FAQsService","faqsService","JobVacanciesService","jobVacanciesService","kenticoLocalisation","options","cache","configure","$translateProvider","run","$translate","NewsService","newsService","PeopleFinderService","peopleFinderService","product","HoverDirective","hoverClass","hoverTarget","ProductsService","productType","filtering","productsService","productCard","hoverDirective","VideoLibraryService","videoLibraryService","ConstantsModule","$compileProvider","$httpProvider","$locationProvider","process","CaseStudiesModule","CoreModuleModule","DocumentLibraryModule","FAQsModule","JobVacanciesModule","LocalisationModule","NewsModule","PeopleFinderModule","ProductsModule","VideoLibraryModule","deferredBootstrapper","document","module","moduleResolves","resourceStrings","exports"],"mappings":"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","file":"app-d38b2b742155512a61e2.js","sourcesContent":["class CaseStudyCardController {\r\n}\r\nexport default CaseStudyCardController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n casestudy: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class CaseStudyHeaderController {\r\n /* @ngInject */\r\n constructor($state, $stateParams, $filter) {\r\n this.$state = $state;\r\n this.selectedCategories = this.parseCategories($stateParams.categories);\r\n this.filterTerm = $stateParams.filterTerm;\r\n\r\n this.orderByOptions = [\r\n { name: '', label: $filter('translate')('custom.SEC.OrderBy') },\r\n { name: 'title', label: 'A-Z' },\r\n { name: '-title', label: 'Z-A' },\r\n { name: 'date', label: 'Date' },\r\n ];\r\n\r\n this.filterTerm = $stateParams.filterTerm;\r\n this.selectedOrderBy = this.orderByOptions.find((item) => item.name === $stateParams.orderBy);\r\n this.resourceTypeMapping = {\r\n t_partner: ['partnerfilter', 'location'],\r\n t_casestudy: ['application_2', 'location', 'sector'],\r\n };\r\n }\r\n\r\n removeCategoryFilter(event, keyToRemove) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n const selectedKeys = Object.keys(this.selectedCategories).filter((key) => this.selectedCategories[key]);\r\n\r\n const index = selectedKeys.indexOf(keyToRemove);\r\n selectedKeys.splice(index, 1);\r\n\r\n this.$state.go('.', {\r\n categories: selectedKeys || [],\r\n page: 1,\r\n });\r\n }\r\n\r\n showCategory(category) {\r\n if (category.name === 'resourcetypes') {\r\n return true;\r\n }\r\n\r\n const resourceTypesFilter = this.filters.items.find((x) => x.name === 'resourcetypes');\r\n\r\n if (!resourceTypesFilter || resourceTypesFilter.children.length === 0) {\r\n return true;\r\n }\r\n\r\n let shouldDisplayFilter = false;\r\n\r\n for (let index = 0; index < resourceTypesFilter.children.length; index += 1) {\r\n const resourceType = resourceTypesFilter.children[index].name;\r\n\r\n const isResourceTypeSelected = this.selectedCategories[resourceType];\r\n\r\n if (isResourceTypeSelected && this.resourceTypeMapping[resourceType].indexOf(category.name) > -1) {\r\n shouldDisplayFilter = true;\r\n }\r\n }\r\n\r\n return shouldDisplayFilter;\r\n }\r\n\r\n showClearButton() {\r\n const keys = Object.keys(this.selectedCategories);\r\n let count = keys.length;\r\n\r\n if (this.filterTerm.trim().length !== 0) {\r\n count += 1;\r\n }\r\n\r\n return count >= 2;\r\n }\r\n\r\n parseCategories(categories) {\r\n const selectedCategories = {};\r\n\r\n categories.forEach((item) => {\r\n selectedCategories[item] = true;\r\n });\r\n\r\n return selectedCategories;\r\n }\r\n\r\n onOrderByChange(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n orderBy: this.selectedOrderBy.name,\r\n });\r\n }\r\n\r\n applyKeywordFilter(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n filterTerm: this.filterTerm,\r\n page: 1,\r\n });\r\n }\r\n}\r\n\r\nexport default CaseStudyHeaderController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n elementData: '<',\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class CaseStudyListController {\r\n /* @ngInject */\r\n constructor($state) {\r\n this.$state = $state;\r\n }\r\n}\r\n\r\nexport default CaseStudyListController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n data: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class CaseStudyMapController {\r\n /* @ngInject */\r\n constructor($state) {\r\n this.$state = $state;\r\n }\r\n}\r\n\r\nexport default CaseStudyMapController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n data: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","import template from './template.html';\r\n\r\nexport default {\r\n template,\r\n};\r\n","/* eslint-disable max-len, no-console, no-undef */\r\n/* @ngInject */\r\n\r\n\r\nconst getPinIconFromResourceType = (resourceType) => {\r\n switch (resourceType) {\r\n // enums from backend - no typescript so can't enforce with types here\r\n case 0: return '/SiteFiles/src/img/svg/pin-grey.svg';\r\n case 1: return '/SiteFiles/src/img/svg/pin-red.svg';\r\n default: return '#';\r\n }\r\n};\r\n\r\nconst LeafletMapDirective = () => {\r\n const directive = {\r\n restrict: 'A',\r\n scope: {\r\n leafletMap: '@',\r\n markers: '=',\r\n },\r\n link: (scope, element) => {\r\n require.ensure(['leaflet/dist/leaflet-src'], (require) => {\r\n require('leaflet/dist/leaflet-src');\r\n\r\n const map = L.map(element[0]).setView([51.505, -0.09], 13);\r\n\r\n const fg = L.featureGroup().addTo(map);\r\n\r\n L.tileLayer('https://api.mapbox.com/styles/v1/secontrols/cjendpmq4enpt2ro6pdc4dnhr/tiles/256/{z}/{x}/{y}?access_token={accessToken}', {\r\n attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA, Imagery © Mapbox',\r\n maxZoom: 18,\r\n accessToken: 'pk.eyJ1Ijoic2Vjb250cm9scyIsImEiOiJjamRlZ3VvenkwYzg2Mnlvbm90NGw2Y3psIn0.ubtAYGK0aB0KOqzQ9eo11g',\r\n }).addTo(map);\r\n\r\n scope.markers.forEach((marker) => {\r\n const pin = L.icon({\r\n iconUrl: getPinIconFromResourceType(marker.resourceType),\r\n iconSize: [32, 47], // size of the icon\r\n iconAnchor: [16, 47], // point of the icon which will correspond to marker's location\r\n popupAnchor: [0, -60], // point from which the popup should open relative to the iconAnchor\r\n });\r\n\r\n if (marker.latitude === 0 && marker.longitude === 0) {\r\n return;\r\n }\r\n const mapMarker = L.marker([marker.latitude, marker.longitude], { icon: pin }).addTo(fg);\r\n mapMarker.bindPopup(`\r\n

\r\n ${marker.title}\r\n

\r\n \"img\"\r\n

\r\n ${marker.categories.map(cat => cat.children.map(child => child.label).join(', ')).join(', ')}\r\n

\r\n `);\r\n });\r\n map.fitBounds(fg.getBounds());\r\n });\r\n },\r\n };\r\n return directive;\r\n};\r\n\r\nexport default LeafletMapDirective;\r\n","export default class CaseStudiesService {\r\n /* @ngInject */\r\n constructor($http, $log, CONTEXT) {\r\n this.$http = $http;\r\n this.$log = $log;\r\n this.context = CONTEXT;\r\n this.elementData = angular.element('#case-study-listing').data();\r\n }\r\n\r\n getAllCaseStudies(request) {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n categories: request.categories,\r\n filterTerm: request.filterTerm,\r\n orderBy: request.orderBy,\r\n pageSize: this.elementData.pagesize,\r\n pageIndex: request.page,\r\n mapView: request.mapView,\r\n url: window.location.pathname,\r\n },\r\n };\r\n\r\n return $http.get(`/api/casestudies/${this.context.siteId}/items`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n\r\n getCategories() {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n },\r\n };\r\n\r\n return $http.get(`/api/casestudies/${this.context.siteId}/categories`, config).then(\r\n res => Promise.resolve(res.data),\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n}\r\n","import angular from 'angular';\r\n\r\nimport caseStudyCard from './case-study-card';\r\nimport headerComponent from './header';\r\nimport listComponent from './list';\r\nimport mapComponent from './map';\r\nimport rootComponent from './root';\r\nimport LeafletMapDirective from './map/leafletjs.directive';\r\n\r\nimport caseStudiesService from './case-studies-service';\r\n\r\nconst CaseStudiesModule = angular\r\n .module('se-controls.case-studies', [])\r\n .component('caseStudyCard', caseStudyCard)\r\n .component('caseStudyHeader', headerComponent)\r\n .component('caseStudyList', listComponent)\r\n .component('caseStudyMap', mapComponent)\r\n .component('caseStudyRoot', rootComponent)\r\n .service('caseStudiesService', caseStudiesService)\r\n .directive('leafletMap', LeafletMapDirective)\r\n // Configuration.\r\n .config(configureModule);\r\n\r\n/**\r\n * Handle module initialisation.\r\n * @ngInject\r\n * */\r\nfunction configureModule($stateProvider, $urlRouterProvider) {\r\n const $container = angular.element('#case-study-listing');\r\n\r\n if (!$container.length) {\r\n return;\r\n }\r\n $stateProvider\r\n .state('case-study', {\r\n abstract: true,\r\n component: 'caseStudyRoot',\r\n })\r\n .state('case-study.list', {\r\n url: '/list/{page:int}/?{accordions}&{categories}&{filterTerm}&{orderBy}',\r\n params: {\r\n categories: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n accordions: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n filterTerm: {\r\n value: '',\r\n squash: true,\r\n },\r\n page: {\r\n value: 1,\r\n },\r\n orderBy: {\r\n value: '',\r\n squash: true,\r\n },\r\n },\r\n views: {\r\n header: {\r\n component: 'caseStudyHeader',\r\n },\r\n results: {\r\n component: 'caseStudyList',\r\n },\r\n },\r\n resolve: {\r\n elementData: () => $container.data(),\r\n // eslint-disable-next-line no-shadow\r\n filters: /* @ngInject */ ($stateParams, caseStudiesService) => {\r\n const request = {};\r\n return caseStudiesService.getCategories(request);\r\n },\r\n // eslint-disable-next-line no-shadow\r\n data: /* @ngInject */ ($stateParams, caseStudiesService) => {\r\n const request = {\r\n categories: $stateParams.categories,\r\n filterTerm: $stateParams.filterTerm,\r\n page: $stateParams.page,\r\n orderBy: $stateParams.orderBy,\r\n };\r\n return caseStudiesService.getAllCaseStudies(request);\r\n },\r\n },\r\n })\r\n .state('case-study.map', {\r\n url: '/map/{page:int}/?{accordions}&{categories}&{filterTerm}&{orderBy}&{mapView}',\r\n params: {\r\n categories: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n accordions: {\r\n array: true,\r\n value: ['resourcetypes', 'partnerfilter', 'application_2', 'location', 'sector'],\r\n squash: true,\r\n },\r\n filterTerm: {\r\n value: '',\r\n squash: true,\r\n },\r\n page: {\r\n value: 1,\r\n },\r\n orderBy: {\r\n value: '',\r\n squash: true,\r\n },\r\n mapView: {\r\n value: 'true',\r\n },\r\n },\r\n views: {\r\n header: {\r\n component: 'caseStudyHeader',\r\n },\r\n results: {\r\n component: 'caseStudyMap',\r\n },\r\n },\r\n resolve: {\r\n elementData: () => $container.data(),\r\n // eslint-disable-next-line no-shadow\r\n filters: /* @ngInject */ ($stateParams, caseStudiesService) => {\r\n const request = {};\r\n return caseStudiesService.getCategories(request);\r\n },\r\n // eslint-disable-next-line no-shadow\r\n data: /* @ngInject */ ($stateParams, caseStudiesService) => {\r\n const request = {\r\n categories: $stateParams.categories,\r\n filterTerm: $stateParams.filterTerm,\r\n page: $stateParams.page,\r\n orderBy: $stateParams.orderBy,\r\n mapView: $stateParams.mapView,\r\n };\r\n return caseStudiesService.getAllCaseStudies(request);\r\n },\r\n },\r\n });\r\n\r\n $urlRouterProvider.otherwise('/map/1/');\r\n}\r\n\r\nexport default CaseStudiesModule;\r\n","class CategoryFilterController {\r\n /* @ngInject */\r\n constructor($state, $stateParams) {\r\n this.$state = $state;\r\n this.selectedCategories = this.parseCategories($stateParams.categories);\r\n this.openedAccordions = this.parseAccordions($stateParams.accordions);\r\n this.tempAccord = this.openedAccordions || [];\r\n }\r\n\r\n isExpanded() {\r\n return this.tempAccord[this.category.name] === true;\r\n }\r\n\r\n toggleAccordion() {\r\n const isExpanded = this.isExpanded();\r\n\r\n // Just expanded\r\n if (isExpanded !== true) {\r\n this.tempAccord[this.category.name] = true;\r\n\r\n const selectedKeys = Object.keys(this.tempAccord).filter((key) => this.tempAccord[key] === true);\r\n\r\n const selectedCategoryKeys = Object.keys(this.selectedCategories).filter((key) => this.selectedCategories[key]);\r\n\r\n this.setAccordions({ accordions: selectedKeys, categories: selectedCategoryKeys });\r\n return;\r\n }\r\n\r\n this.tempAccord[this.category.name] = false;\r\n\r\n const selectedKeys = Object.keys(this.tempAccord).filter((key) => this.tempAccord[key] === true);\r\n\r\n const selectedCategoryKeys = Object.keys(this.selectedCategories).filter((key) => this.selectedCategories[key]);\r\n\r\n this.setAccordions({ accordions: selectedKeys, categories: selectedCategoryKeys });\r\n }\r\n\r\n setAccordions(filters) {\r\n this.$state.go(\r\n '.',\r\n {\r\n accordions: filters.accordions || [],\r\n categories: filters.categories || [],\r\n },\r\n {\r\n notify: false,\r\n location: true,\r\n inherit: false,\r\n },\r\n );\r\n }\r\n\r\n parseAccordions(accordions) {\r\n const openedAccordions = {};\r\n\r\n accordions.forEach((item) => {\r\n openedAccordions[item] = true;\r\n });\r\n\r\n return openedAccordions;\r\n }\r\n\r\n appliedFilterCount() {\r\n let count = 0;\r\n\r\n this.category.children.forEach((item) => {\r\n if (this.selectedCategories[item.name]) {\r\n count += 1;\r\n }\r\n });\r\n\r\n return count;\r\n }\r\n\r\n onFilterCategoryChange(event) {\r\n const selectedKeys = Object.keys(this.selectedCategories).filter((key) => this.selectedCategories[key]);\r\n\r\n if (!this.selectedCategories[event]) {\r\n const allowedFilters = this.resourceTypeMapping[event];\r\n\r\n if (allowedFilters) {\r\n for (let index = 0; index < selectedKeys.length; index += 1) {\r\n const key = selectedKeys[index];\r\n\r\n if (this.resourceTypeMapping[key]) {\r\n // eslint-disable-next-line no-continue\r\n continue;\r\n }\r\n\r\n if (allowedFilters.indexOf(key) === -1) {\r\n const existingIndex = selectedKeys.indexOf(key);\r\n\r\n if (existingIndex > -1) {\r\n selectedKeys.splice(existingIndex, 1);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.setFilter({ categories: selectedKeys });\r\n }\r\n\r\n setFilter(filters) {\r\n this.$state.go('.', {\r\n categories: filters.categories || [],\r\n });\r\n }\r\n\r\n parseCategories(categories) {\r\n const selectedCategories = {};\r\n\r\n categories.forEach((item) => {\r\n selectedCategories[item] = true;\r\n });\r\n\r\n return selectedCategories;\r\n }\r\n}\r\nexport default CategoryFilterController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n category: '<',\r\n isVisible: '<',\r\n resourceTypeMapping: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","/* @ngInject */\r\nconst AccordionDirective = () => {\r\n const directive = {\r\n restrict: 'A',\r\n scope: {\r\n accordionButton: '@',\r\n accordionExpanded: '@',\r\n },\r\n link: (scope, element) => {\r\n const ACTIVE = 'is-active';\r\n const dropdown = element.closest('.accordion').find('.js-accordion-base');\r\n\r\n if (scope.accordionExpanded === 'true') {\r\n element.addClass(ACTIVE);\r\n dropdown.show();\r\n }\r\n\r\n element.on('click', () => {\r\n dropdown.slideToggle();\r\n });\r\n },\r\n };\r\n return directive;\r\n};\r\n\r\nexport default AccordionDirective;\r\n","/* global picturefill:false */\r\n/* @ngInject */\r\nconst netcPicturefill = /* @ngInject */ ($timeout) => {\r\n const directive = {\r\n restrict: 'A',\r\n scope: false,\r\n link: (scope, element) => {\r\n scope.$watch(null, () => {\r\n $timeout(() => {\r\n picturefill(element);\r\n });\r\n });\r\n },\r\n };\r\n return directive;\r\n};\r\n\r\nexport default netcPicturefill;\r\n","/* global _ */\r\n/* @ngInject */\r\nconst OpenFilterDirective = ($window) => {\r\n const directive = {\r\n restrict: 'A',\r\n scope: {\r\n },\r\n link: (scope, element) => {\r\n const ACTIVE = 'is-active';\r\n // let winWidth = $window.outerWidth;\r\n\r\n element.on('click', () => {\r\n if (window.matchMedia('(max-width: 767px)').matches) {\r\n element.parents().find('.js-side-filter').addClass(ACTIVE);\r\n }\r\n });\r\n\r\n // eslint-disable-next-line no-undef\r\n angular.element($window).on('resize', _.debounce(() => {\r\n // winWidth = $window.outerWidth;\r\n scope.$digest();\r\n }, 500));\r\n },\r\n };\r\n return directive;\r\n};\r\n\r\nexport default OpenFilterDirective;\r\n","/* @ngInject */\r\nconst SideNavBtnDirective = ($window) => {\r\n const directive = {\r\n restrict: 'A',\r\n scope: {\r\n },\r\n link: (scope, element) => {\r\n const ACTIVE = 'is-active';\r\n\r\n element.on('click', () => {\r\n if ($window.matchMedia('(min-width: 768px)').matches) {\r\n element.toggleClass(ACTIVE);\r\n element.parents().find('.js-side-area').slideToggle();\r\n } else {\r\n element.parents().find('.js-side-filter').removeClass(ACTIVE);\r\n }\r\n });\r\n },\r\n };\r\n return directive;\r\n};\r\n\r\nexport default SideNavBtnDirective;\r\n","import angular from 'angular';\r\n\r\nimport categoryFilter from './category-filter';\r\nimport accordionDirective from './category-filter/accordion.directive';\r\nimport netcPicturefill from './picturefill/picturefill.directive';\r\nimport openFilter from './filters/open-filter.directive';\r\nimport sideNavBtn from './filters/side-nav-btn.directive';\r\n\r\nconst CoreModule = angular.module('se-controls.core', [])\r\n .component('categoryFilter', categoryFilter)\r\n .directive('accordionButton', accordionDirective)\r\n .directive('netcPicturefill', netcPicturefill)\r\n .directive('openFilter', openFilter)\r\n .directive('sideNavBtn', sideNavBtn);\r\n\r\nexport default CoreModule;\r\n","import template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n item: '<',\r\n },\r\n template,\r\n};\r\n","class DocumentLibraryHeaderController {\r\n /* @ngInject */\r\n constructor($state, $stateParams, $filter) {\r\n this.$state = $state;\r\n\r\n this.orderByOptions = [\r\n { name: '', label: $filter('translate')('custom.SEC.OrderBy') },\r\n { name: 'title', label: 'A-Z' },\r\n { name: '-title', label: 'Z-A' },\r\n ];\r\n\r\n this.filterTerm = $stateParams.filterTerm;\r\n this.selectedOrderBy = this.orderByOptions.find(item => item.name === $stateParams.orderBy);\r\n }\r\n\r\n onOrderByChange(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n orderBy: this.selectedOrderBy.name,\r\n });\r\n }\r\n\r\n applyKeywordFilter(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n filterTerm: this.filterTerm,\r\n page: 1,\r\n });\r\n }\r\n}\r\n\r\nexport default DocumentLibraryHeaderController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n elementData: '<',\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class DocumentLibraryListController {\r\n /* @ngInject */\r\n constructor($state, $stateParams) {\r\n this.$state = $state;\r\n this.selectedCategories = this.parseCategories($stateParams.categories);\r\n this.filterTerm = $stateParams.filterTerm;\r\n }\r\n\r\n removeCategoryFilter(event, keyToRemove) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n const selectedKeys = Object.keys(this.selectedCategories)\r\n .filter(key => this.selectedCategories[key]);\r\n\r\n const index = selectedKeys.indexOf(keyToRemove);\r\n selectedKeys.splice(index, 1);\r\n\r\n this.$state.go('.', {\r\n categories: selectedKeys || [],\r\n page: 1,\r\n });\r\n }\r\n\r\n showClearButton() {\r\n const keys = Object.keys(this.selectedCategories);\r\n let count = keys.length;\r\n\r\n if (this.filterTerm.trim().length !== 0) {\r\n count += 1;\r\n }\r\n\r\n return count >= 2;\r\n }\r\n\r\n parseCategories(categories) {\r\n const selectedCategories = {};\r\n\r\n categories.forEach((item) => {\r\n selectedCategories[item] = true;\r\n });\r\n\r\n return selectedCategories;\r\n }\r\n}\r\n\r\nexport default DocumentLibraryListController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","import template from './template.html';\r\n\r\nexport default {\r\n template,\r\n};\r\n","export default class DocumentLibraryService {\r\n /* @ngInject */\r\n constructor($http, $log, CONTEXT) {\r\n this.$http = $http;\r\n this.$log = $log;\r\n this.context = CONTEXT;\r\n this.elementData = angular.element('#document-library').data();\r\n }\r\n\r\n getAllDocuments(request) {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n categories: request.categories,\r\n filterTerm: request.filterTerm,\r\n orderBy: request.orderBy,\r\n pageSize: this.elementData.pagesize,\r\n pageIndex: request.page,\r\n url: window.location.pathname,\r\n },\r\n };\r\n\r\n return $http.get(`/api/document-library/${this.context.siteId}/items`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n\r\n getCategories() {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n },\r\n };\r\n\r\n return $http.get(`/api/document-library/${this.context.siteId}/categories`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n}\r\n","import angular from 'angular';\r\n\r\nimport cardComponent from './card';\r\nimport headerComponent from './header';\r\nimport listComponent from './list';\r\nimport rootComponent from './root';\r\n\r\nimport documentLibraryService from './document-library-service';\r\n\r\nconst DocumentLibraryModule = angular.module('se-controls.document-library', [])\r\n .component('documentLibraryCard', cardComponent)\r\n .component('documentLibraryHeader', headerComponent)\r\n .component('documentLibraryList', listComponent)\r\n .component('documentLibraryRoot', rootComponent)\r\n .service('documentLibraryService', documentLibraryService)\r\n // Configuration.\r\n .config(configureModule);\r\n\r\n/**\r\n * Handle module initialisation.\r\n * @ngInject\r\n * */\r\nfunction configureModule($stateProvider, $urlRouterProvider) {\r\n const $container = angular.element('#document-library');\r\n\r\n if (!$container.length) {\r\n return;\r\n }\r\n\r\n $stateProvider\r\n .state('document-library', {\r\n abstract: true,\r\n component: 'documentLibraryRoot',\r\n })\r\n .state('document-library.list', {\r\n url: '/{page:int}/?{accordions}&{categories}&{filterTerm}&{orderBy}',\r\n params: {\r\n categories: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n accordions: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n filterTerm: {\r\n value: '',\r\n squash: true,\r\n },\r\n page: {\r\n value: 1,\r\n },\r\n orderBy: {\r\n value: '',\r\n squash: true,\r\n },\r\n },\r\n views: {\r\n header: {\r\n component: 'documentLibraryHeader',\r\n },\r\n results: {\r\n component: 'documentLibraryList',\r\n },\r\n },\r\n resolve: {\r\n elementData: () => $container.data(),\r\n // eslint-disable-next-line no-shadow\r\n filters: /* @ngInject */ ($stateParams, documentLibraryService) =>\r\n documentLibraryService.getCategories(),\r\n // eslint-disable-next-line no-shadow\r\n data: /* @ngInject */ ($stateParams, documentLibraryService) => {\r\n const request = {\r\n categories: $stateParams.categories,\r\n filterTerm: $stateParams.filterTerm,\r\n page: $stateParams.page,\r\n orderBy: $stateParams.orderBy,\r\n };\r\n return documentLibraryService.getAllDocuments(request);\r\n },\r\n },\r\n });\r\n\r\n $urlRouterProvider.otherwise('/1/');\r\n}\r\n\r\nexport default DocumentLibraryModule;\r\n","export default class FAQsService {\r\n /* @ngInject */\r\n constructor($http, $log, CONTEXT) {\r\n this.$http = $http;\r\n this.$log = $log;\r\n this.context = CONTEXT;\r\n this.elementData = angular.element('#faqs-listing').data();\r\n }\r\n\r\n getAllFAQs(request) {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n filterTerm: request.filterTerm,\r\n pageSize: this.elementData.pagesize,\r\n pageIndex: request.page,\r\n url: window.location.pathname,\r\n },\r\n };\r\n\r\n return $http.get(`/api/faqs/${this.context.siteId}/items`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n}\r\n","import template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n item: '<',\r\n },\r\n template,\r\n};\r\n","class FAQsHeaderController {\r\n /* @ngInject */\r\n constructor($state, $stateParams) {\r\n this.$state = $state;\r\n this.filterTerm = $stateParams.filterTerm;\r\n }\r\n\r\n applyKeywordFilter(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n filterTerm: this.filterTerm,\r\n page: 1,\r\n });\r\n }\r\n}\r\n\r\nexport default FAQsHeaderController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n elementData: '<',\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class FAQsListController {\r\n /* @ngInject */\r\n constructor($state, $stateParams) {\r\n this.$state = $state;\r\n this.filterTerm = $stateParams.filterTerm;\r\n }\r\n}\r\n\r\nexport default FAQsListController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","import template from './template.html';\r\n\r\nexport default {\r\n template,\r\n};\r\n","import angular from 'angular';\r\n\r\nimport faqsService from './faqs-service';\r\nimport cardComponent from './card';\r\nimport headerComponent from './header';\r\nimport listComponent from './list';\r\nimport rootComponent from './root';\r\n\r\nconst FAQsModule = angular.module('se-controls.faqs', [])\r\n .component('faqsCard', cardComponent)\r\n .component('faqsHeader', headerComponent)\r\n .component('faqsList', listComponent)\r\n .component('faqsRoot', rootComponent)\r\n .service('faqsService', faqsService)\r\n // Configuration.\r\n .config(configureModule);\r\n\r\n/**\r\n * Handle module initialisation.\r\n * @ngInject\r\n * */\r\nfunction configureModule($stateProvider, $urlRouterProvider) {\r\n const $container = angular.element('#faqs-listing');\r\n\r\n if (!$container.length) {\r\n return;\r\n }\r\n\r\n $stateProvider\r\n .state('faqs', {\r\n abstract: true,\r\n component: 'faqsRoot',\r\n })\r\n .state('faqs.list', {\r\n url: '/{page:int}/?{filterTerm}',\r\n params: {\r\n filterTerm: {\r\n value: '',\r\n squash: true,\r\n },\r\n page: {\r\n value: 1,\r\n },\r\n },\r\n resolve: {\r\n elementData: () => $container.data(),\r\n // eslint-disable-next-line no-shadow\r\n data: /* @ngInject */ ($stateParams, faqsService) => {\r\n const request = {\r\n filterTerm: $stateParams.filterTerm,\r\n page: $stateParams.page,\r\n };\r\n return faqsService.getAllFAQs(request);\r\n },\r\n },\r\n views: {\r\n header: {\r\n component: 'faqsHeader',\r\n },\r\n results: {\r\n component: 'faqsList',\r\n },\r\n },\r\n });\r\n\r\n $urlRouterProvider.otherwise('/1/');\r\n}\r\n\r\nexport default FAQsModule;\r\n","import template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n item: '<',\r\n },\r\n template,\r\n};\r\n","class JobVacancyHeaderController {\r\n /* @ngInject */\r\n constructor($state, $stateParams, $filter) {\r\n this.$state = $state;\r\n this.selectedCategories = this.parseCategories($stateParams.categories);\r\n this.filterTerm = $stateParams.filterTerm;\r\n\r\n this.orderByOptions = [\r\n { name: '', label: $filter('translate')('custom.SEC.OrderBy') },\r\n { name: 'title', label: 'A-Z' },\r\n { name: '-title', label: 'Z-A' },\r\n ];\r\n\r\n this.filterTerm = $stateParams.filterTerm;\r\n this.selectedOrderBy = this.orderByOptions.find(item => item.name === $stateParams.orderBy);\r\n }\r\n\r\n removeCategoryFilter(event, keyToRemove) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n const selectedKeys = Object.keys(this.selectedCategories)\r\n .filter(key => this.selectedCategories[key]);\r\n\r\n const index = selectedKeys.indexOf(keyToRemove);\r\n selectedKeys.splice(index, 1);\r\n\r\n this.$state.go('.', {\r\n categories: selectedKeys || [],\r\n page: 1,\r\n });\r\n }\r\n\r\n showClearButton() {\r\n const keys = Object.keys(this.selectedCategories);\r\n let count = keys.length;\r\n\r\n if (this.filterTerm.trim().length !== 0) {\r\n count += 1;\r\n }\r\n\r\n return count >= 2;\r\n }\r\n\r\n parseCategories(categories) {\r\n const selectedCategories = {};\r\n\r\n categories.forEach((item) => {\r\n selectedCategories[item] = true;\r\n });\r\n\r\n return selectedCategories;\r\n }\r\n\r\n onOrderByChange(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n orderBy: this.selectedOrderBy.name,\r\n });\r\n }\r\n\r\n applyKeywordFilter(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n filterTerm: this.filterTerm,\r\n page: 1,\r\n });\r\n }\r\n}\r\n\r\nexport default JobVacancyHeaderController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n elementData: '<',\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class JobVacancyListController {\r\n /* @ngInject */\r\n constructor($state) {\r\n this.$state = $state;\r\n }\r\n}\r\n\r\nexport default JobVacancyListController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n data: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","import template from './template.html';\r\n\r\nexport default {\r\n template,\r\n};\r\n","export default class JobVacanciesService {\r\n /* @ngInject */\r\n constructor($http, $log, CONTEXT) {\r\n this.$http = $http;\r\n this.$log = $log;\r\n this.context = CONTEXT;\r\n this.elementData = angular.element('#job-listing').data();\r\n }\r\n\r\n getAllJobs(request) {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n categories: request.categories,\r\n filterTerm: request.filterTerm,\r\n orderBy: request.orderBy,\r\n pageSize: this.elementData.pagesize,\r\n pageIndex: request.page,\r\n url: window.location.pathname,\r\n },\r\n };\r\n\r\n return $http.get(`/api/job-vacancies/${this.context.siteId}/items`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n\r\n getCategories() {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n },\r\n };\r\n\r\n return $http.get(`/api/job-vacancies/${this.context.siteId}/categories`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n}\r\n","import angular from 'angular';\r\n\r\nimport cardComponent from './card';\r\nimport headerComponent from './header';\r\nimport listComponent from './list';\r\nimport rootComponent from './root';\r\n\r\nimport jobVacanciesService from './job-vacancies-service';\r\n\r\nconst jobVacanciesModule = angular.module('se-controls.job-vacancies', [])\r\n .component('jobVacancyCard', cardComponent)\r\n .component('jobVacanciesHeader', headerComponent)\r\n .component('jobVacanciesList', listComponent)\r\n .component('jobVacanciesRoot', rootComponent)\r\n .service('jobVacanciesService', jobVacanciesService)\r\n // Configuration.\r\n .config(configureModule);\r\n\r\n/**\r\n * Handle module initialisation.\r\n * @ngInject\r\n * */\r\nfunction configureModule($stateProvider, $urlRouterProvider) {\r\n const $container = angular.element('#job-listing');\r\n\r\n if (!$container.length) {\r\n return;\r\n }\r\n\r\n $stateProvider\r\n .state('job-vacancies', {\r\n abstract: true,\r\n component: 'jobVacanciesRoot',\r\n })\r\n .state('job-vacancies.list', {\r\n url: '/list/{page:int}/?{accordions}&{categories}&{filterTerm}&{orderBy}',\r\n params: {\r\n categories: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n accordions: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n filterTerm: {\r\n value: '',\r\n squash: true,\r\n },\r\n page: {\r\n value: 1,\r\n },\r\n orderBy: {\r\n value: '',\r\n squash: true,\r\n },\r\n },\r\n views: {\r\n header: {\r\n component: 'jobVacanciesHeader',\r\n },\r\n results: {\r\n component: 'jobVacanciesList',\r\n },\r\n },\r\n resolve: {\r\n elementData: () => $container.data(),\r\n // eslint-disable-next-line no-shadow\r\n filters: /* @ngInject */ ($stateParams, jobVacanciesService) => {\r\n const request = {\r\n };\r\n return jobVacanciesService.getCategories(request);\r\n },\r\n // eslint-disable-next-line no-shadow\r\n data: /* @ngInject */ ($stateParams, jobVacanciesService) => {\r\n const request = {\r\n categories: $stateParams.categories,\r\n filterTerm: $stateParams.filterTerm,\r\n page: $stateParams.page,\r\n orderBy: $stateParams.orderBy,\r\n };\r\n return jobVacanciesService.getAllJobs(request);\r\n },\r\n },\r\n });\r\n\r\n $urlRouterProvider.otherwise('/list/1/');\r\n}\r\n\r\nexport default jobVacanciesModule;\r\n","/**\r\n * Kentico Localisation factory.\r\n * @ngInject\r\n */\r\nconst kenticoLocalisation = /* @ngInject */ $http => (options) => {\r\n const config = {\r\n cache: true,\r\n };\r\n\r\n return $http.get(`/api/localisation/${options.key}`, config)\r\n .then(\r\n res => res.data,\r\n res => res.data,\r\n );\r\n};\r\n\r\nexport default kenticoLocalisation;\r\n","import { kenticoLocalisation } from './kentico-localisation';\r\n\r\nconst LocalisationModule = angular.module('se-controls.localisation', [])\r\n .factory('kenticoLocalisation', kenticoLocalisation)\r\n .config(configure)\r\n .run(run);\r\n\r\n/**\r\n * Register work which needs to be performed on module loading.\r\n * @ngInject\r\n */\r\nfunction configure($translateProvider, CONTEXT) {\r\n if (process.env.NODE_ENV === 'development') {\r\n $translateProvider.useMissingTranslationHandlerLog();\r\n }\r\n\r\n $translateProvider.determinePreferredLanguage();\r\n $translateProvider.useLoader('kenticoLocalisation');\r\n $translateProvider.useLoaderCache(true);\r\n $translateProvider.useLocalStorage();\r\n $translateProvider.useSanitizeValueStrategy('sanitize');\r\n $translateProvider.translations(CONTEXT.cultureCode, CONTEXT.resourceStrings);\r\n}\r\n\r\n/**\r\n * Register work which should be performed when the injector is done loading all modules.\r\n * @ngInject\r\n */\r\nfunction run($translate, CONTEXT) {\r\n $translate.use(CONTEXT.cultureCode);\r\n}\r\n\r\nexport default LocalisationModule;\r\n","import template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n item: '<',\r\n },\r\n template,\r\n};\r\n","class CaseStudyHeaderController {\r\n /* @ngInject */\r\n constructor($state, $stateParams, $filter) {\r\n this.$state = $state;\r\n\r\n this.orderByOptions = [\r\n { name: '', label: $filter('translate')('custom.SEC.OrderBy') },\r\n { name: 'title', label: 'A-Z' },\r\n { name: '-title', label: 'Z-A' },\r\n ];\r\n\r\n this.filterTerm = $stateParams.filterTerm;\r\n this.selectedOrderBy = this.orderByOptions.find(item => item.name === $stateParams.orderBy);\r\n }\r\n\r\n onOrderByChange(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n orderBy: this.selectedOrderBy.name,\r\n });\r\n }\r\n\r\n applyKeywordFilter(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n filterTerm: this.filterTerm,\r\n page: 1,\r\n });\r\n }\r\n}\r\n\r\nexport default CaseStudyHeaderController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n elementData: '<',\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class CaseStudyListController {\r\n /* @ngInject */\r\n constructor($state, $stateParams) {\r\n this.$state = $state;\r\n this.selectedCategories = this.parseCategories($stateParams.categories);\r\n this.filterTerm = $stateParams.filterTerm;\r\n }\r\n\r\n removeCategoryFilter(event, keyToRemove) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n const selectedKeys = Object.keys(this.selectedCategories)\r\n .filter(key => this.selectedCategories[key]);\r\n\r\n const index = selectedKeys.indexOf(keyToRemove);\r\n selectedKeys.splice(index, 1);\r\n\r\n this.$state.go('.', {\r\n categories: selectedKeys || [],\r\n page: 1,\r\n });\r\n }\r\n\r\n showClearButton() {\r\n const keys = Object.keys(this.selectedCategories);\r\n let count = keys.length;\r\n\r\n if (this.filterTerm.trim().length !== 0) {\r\n count += 1;\r\n }\r\n\r\n return count >= 2;\r\n }\r\n\r\n parseCategories(categories) {\r\n const selectedCategories = {};\r\n\r\n categories.forEach((item) => {\r\n selectedCategories[item] = true;\r\n });\r\n\r\n return selectedCategories;\r\n }\r\n}\r\n\r\nexport default CaseStudyListController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","import template from './template.html';\r\n\r\nexport default {\r\n template,\r\n};\r\n","export default class NewsService {\r\n /* @ngInject */\r\n constructor($http, $log, CONTEXT) {\r\n this.$http = $http;\r\n this.$log = $log;\r\n this.context = CONTEXT;\r\n this.elementData = angular.element('#news-article-listing').data();\r\n }\r\n\r\n getNews(request) {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n categories: request.categories,\r\n filterTerm: request.filterTerm,\r\n orderBy: request.orderBy,\r\n pageSize: this.elementData.pagesize,\r\n pageIndex: request.page,\r\n url: window.location.pathname,\r\n },\r\n };\r\n\r\n return $http.get(`/api/news/${this.context.siteId}/items`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n\r\n getCategories() {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n },\r\n };\r\n\r\n return $http.get(`/api/news/${this.context.siteId}/categories`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n}\r\n","import angular from 'angular';\r\n\r\nimport cardComponent from './card';\r\nimport headerComponent from './header';\r\nimport listComponent from './list';\r\nimport rootComponent from './root';\r\n\r\nimport newsService from './news-service';\r\n\r\nconst NewsModule = angular.module('se-controls.news', [])\r\n .component('newsCard', cardComponent)\r\n .component('newsHeader', headerComponent)\r\n .component('newsList', listComponent)\r\n .component('newsRoot', rootComponent)\r\n .service('newsService', newsService)\r\n // Configuration.\r\n .config(configureModule);\r\n\r\n/**\r\n * Handle module initialisation.\r\n * @ngInject\r\n * */\r\nfunction configureModule($stateProvider, $urlRouterProvider) {\r\n const $container = angular.element('#news-article-listing');\r\n\r\n if (!$container.length) {\r\n return;\r\n }\r\n $stateProvider\r\n .state('news', {\r\n abstract: true,\r\n component: 'newsRoot',\r\n })\r\n .state('news.list', {\r\n url: '/list/{page:int}/?{accordions}&{categories}&{filterTerm}&{orderBy}',\r\n params: {\r\n categories: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n accordions: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n filterTerm: {\r\n value: '',\r\n squash: true,\r\n },\r\n page: {\r\n value: 1,\r\n },\r\n orderBy: {\r\n value: '',\r\n squash: true,\r\n },\r\n },\r\n views: {\r\n header: {\r\n component: 'newsHeader',\r\n },\r\n results: {\r\n component: 'newsList',\r\n },\r\n },\r\n resolve: {\r\n elementData: () => $container.data(),\r\n // eslint-disable-next-line no-shadow\r\n filters: /* @ngInject */ ($stateParams, newsService) => {\r\n const request = {\r\n };\r\n return newsService.getCategories(request);\r\n },\r\n // eslint-disable-next-line no-shadow\r\n data: /* @ngInject */ ($stateParams, newsService) => {\r\n const request = {\r\n categories: $stateParams.categories,\r\n filterTerm: $stateParams.filterTerm,\r\n page: $stateParams.page,\r\n orderBy: $stateParams.orderBy,\r\n };\r\n return newsService.getNews(request);\r\n },\r\n },\r\n });\r\n\r\n $urlRouterProvider.otherwise('/list/1/');\r\n}\r\n\r\nexport default NewsModule;\r\n","import template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n item: '<',\r\n },\r\n template,\r\n};\r\n","class CaseStudyHeaderController {\r\n /* @ngInject */\r\n constructor($state, $stateParams, $filter) {\r\n this.$state = $state;\r\n\r\n this.orderByOptions = [\r\n { name: '', label: $filter('translate')('custom.SEC.OrderBy') },\r\n { name: 'title', label: 'A-Z' },\r\n { name: '-title', label: 'Z-A' },\r\n ];\r\n\r\n this.filterTerm = $stateParams.filterTerm;\r\n this.selectedOrderBy = this.orderByOptions.find(item => item.name === $stateParams.orderBy);\r\n }\r\n\r\n onOrderByChange(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n orderBy: this.selectedOrderBy.name,\r\n });\r\n }\r\n\r\n applyKeywordFilter(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n filterTerm: this.filterTerm,\r\n page: 1,\r\n });\r\n }\r\n}\r\n\r\nexport default CaseStudyHeaderController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n elementData: '<',\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class CaseStudyListController {\r\n /* @ngInject */\r\n constructor($state, $stateParams) {\r\n this.$state = $state;\r\n this.selectedCategories = this.parseCategories($stateParams.categories);\r\n this.filterTerm = $stateParams.filterTerm;\r\n }\r\n\r\n removeCategoryFilter(event, keyToRemove) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n const selectedKeys = Object.keys(this.selectedCategories)\r\n .filter(key => this.selectedCategories[key]);\r\n\r\n const index = selectedKeys.indexOf(keyToRemove);\r\n selectedKeys.splice(index, 1);\r\n\r\n this.$state.go('.', {\r\n categories: selectedKeys || [],\r\n page: 1,\r\n });\r\n }\r\n\r\n showClearButton() {\r\n const keys = Object.keys(this.selectedCategories);\r\n let count = keys.length;\r\n\r\n if (this.filterTerm.trim().length !== 0) {\r\n count += 1;\r\n }\r\n\r\n return count >= 2;\r\n }\r\n\r\n parseCategories(categories) {\r\n const selectedCategories = {};\r\n\r\n categories.forEach((item) => {\r\n selectedCategories[item] = true;\r\n });\r\n\r\n return selectedCategories;\r\n }\r\n}\r\n\r\nexport default CaseStudyListController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","import template from './template.html';\r\n\r\nexport default {\r\n template,\r\n};\r\n","export default class PeopleFinderService {\r\n /* @ngInject */\r\n constructor($http, $log, CONTEXT) {\r\n this.$http = $http;\r\n this.$log = $log;\r\n this.context = CONTEXT;\r\n this.elementData = angular.element('#people-finder').data();\r\n }\r\n\r\n getPeople(request) {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n categories: request.categories,\r\n filterTerm: request.filterTerm,\r\n orderBy: request.orderBy,\r\n pageSize: this.elementData.pagesize,\r\n pageIndex: request.page,\r\n url: window.location.pathname,\r\n },\r\n };\r\n\r\n return $http.get(`/api/people/${this.context.siteId}/items`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n\r\n getCategories(request) {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n categories: request.categories,\r\n filterTerm: request.filterTerm,\r\n orderBy: request.orderBy,\r\n pageSize: this.elementData.pagesize,\r\n pageIndex: request.page,\r\n url: window.location.pathname,\r\n siteId: this.context.siteId,\r\n\r\n },\r\n };\r\n\r\n return $http.get(`/api/people/${this.context.siteId}/categories`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n}\r\n","import angular from 'angular';\r\n\r\nimport cardComponent from './card';\r\nimport headerComponent from './header';\r\nimport listComponent from './list';\r\nimport rootComponent from './root';\r\n\r\nimport peopleFinderService from './people-finder-service';\r\n\r\nconst PeopleFinderModule = angular.module('se-controls.people-finder', [])\r\n .component('peopleFinderCard', cardComponent)\r\n .component('peopleFinderHeader', headerComponent)\r\n .component('peopleFinderList', listComponent)\r\n .component('peopleFinderRoot', rootComponent)\r\n .service('peopleFinderService', peopleFinderService)\r\n // Configuration.\r\n .config(configureModule);\r\n\r\n/**\r\n * Handle module initialisation.\r\n * @ngInject\r\n * */\r\nfunction configureModule($stateProvider, $urlRouterProvider) {\r\n const $container = angular.element('#people-finder');\r\n\r\n if (!$container.length) {\r\n return;\r\n }\r\n $stateProvider\r\n .state('people-finder', {\r\n abstract: true,\r\n component: 'peopleFinderRoot',\r\n })\r\n .state('people-finder.list', {\r\n url: '/list/{page:int}/?{accordions}&{categories}&{filterTerm}&{orderBy}',\r\n params: {\r\n categories: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n accordions: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n filterTerm: {\r\n value: '',\r\n squash: true,\r\n },\r\n page: {\r\n value: 1,\r\n },\r\n orderBy: {\r\n value: '',\r\n squash: true,\r\n },\r\n },\r\n views: {\r\n header: {\r\n component: 'peopleFinderHeader',\r\n },\r\n results: {\r\n component: 'peopleFinderList',\r\n },\r\n },\r\n resolve: {\r\n elementData: () => $container.data(),\r\n // eslint-disable-next-line no-shadow\r\n filters: /* @ngInject */ ($stateParams, peopleFinderService) => {\r\n const request = {\r\n categories: $stateParams.categories,\r\n filterTerm: $stateParams.filterTerm,\r\n page: $stateParams.page,\r\n orderBy: $stateParams.orderBy,\r\n };\r\n return peopleFinderService.getCategories(request);\r\n },\r\n // eslint-disable-next-line no-shadow\r\n data: /* @ngInject */ ($stateParams, peopleFinderService) => {\r\n const request = {\r\n categories: $stateParams.categories,\r\n filterTerm: $stateParams.filterTerm,\r\n page: $stateParams.page,\r\n orderBy: $stateParams.orderBy,\r\n };\r\n return peopleFinderService.getPeople(request);\r\n },\r\n },\r\n });\r\n\r\n $urlRouterProvider.otherwise('/list/1/');\r\n}\r\n\r\nexport default PeopleFinderModule;\r\n","class ProductsListController {\r\n /* @ngInject */\r\n constructor($state, $stateParams) {\r\n this.$state = $state;\r\n this.selectedCategories = this.parseCategories($stateParams.categories);\r\n this.filterTerm = $stateParams.filterTerm;\r\n }\r\n\r\n removeCategoryFilter(event, keyToRemove) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n const selectedKeys = Object.keys(this.selectedCategories)\r\n .filter(key => this.selectedCategories[key]);\r\n\r\n const index = selectedKeys.indexOf(keyToRemove);\r\n selectedKeys.splice(index, 1);\r\n\r\n this.$state.go('.', {\r\n categories: selectedKeys || [],\r\n page: 1,\r\n });\r\n }\r\n\r\n showClearButton() {\r\n const keys = Object.keys(this.selectedCategories);\r\n let count = keys.length;\r\n\r\n if (this.filterTerm.trim().length !== 0) {\r\n count += 1;\r\n }\r\n\r\n return count >= 2;\r\n }\r\n\r\n parseCategories(categories) {\r\n const selectedCategories = {};\r\n\r\n categories.forEach((item) => {\r\n selectedCategories[item] = true;\r\n });\r\n\r\n return selectedCategories;\r\n }\r\n}\r\n\r\nexport default ProductsListController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class ProductsHeaderController {\r\n /* @ngInject */\r\n constructor($state, $stateParams, $filter) {\r\n this.$state = $state;\r\n\r\n this.orderByOptions = [\r\n { name: '', label: $filter('translate')('custom.SEC.OrderBy') },\r\n { name: 'title', label: 'A-Z' },\r\n { name: '-title', label: 'Z-A' },\r\n ];\r\n\r\n this.filterTerm = $stateParams.filterTerm;\r\n this.selectedOrderBy = this.orderByOptions.find(item => item.name === $stateParams.orderBy);\r\n }\r\n\r\n onOrderByChange(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n orderBy: this.selectedOrderBy.name,\r\n });\r\n }\r\n\r\n applyKeywordFilter(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n filterTerm: this.filterTerm,\r\n page: 1,\r\n });\r\n }\r\n}\r\n\r\nexport default ProductsHeaderController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n elementData: '<',\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class ProductsCardController {\r\n}\r\nexport default ProductsCardController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n product: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","import template from './template.html';\r\n\r\nexport default {\r\n template,\r\n};\r\n","/* @ngInject */\r\nconst HoverDirective = ($window) => {\r\n const directive = {\r\n restrict: 'A',\r\n scope: {\r\n hoverClass: '@',\r\n hoverTarget: '@',\r\n },\r\n link: (scope, element) => {\r\n element.on('mouseenter', () => {\r\n const eTop = element.offset().top;\r\n const windowheight = ($window.scrollY) + (($window.innerHeight / 2) - 50);\r\n\r\n if (eTop > windowheight) {\r\n element.find(scope.hoverTarget).addClass(scope.hoverClass);\r\n } else {\r\n element.find(scope.hoverTarget).removeClass(scope.hoverClass);\r\n }\r\n });\r\n element.on('mouseleave', () => {\r\n element.removeClass(scope.hoverClass);\r\n });\r\n },\r\n };\r\n return directive;\r\n};\r\n\r\nexport default HoverDirective;\r\n","export default class ProductsService {\r\n /* @ngInject */\r\n constructor($http, $log, CONTEXT) {\r\n this.$http = $http;\r\n this.$log = $log;\r\n this.context = CONTEXT;\r\n this.elementData = angular.element('#product-listing').data();\r\n }\r\n\r\n getAllProducts(request) {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n categories: request.categories,\r\n filterTerm: request.filterTerm,\r\n orderBy: request.orderBy,\r\n pageSize: this.elementData.pagesize,\r\n pageIndex: request.page,\r\n url: window.location.pathname,\r\n },\r\n };\r\n\r\n return $http.get(`/api/products/${this.context.siteId}/items`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n\r\n getCategories() {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n productType: this.elementData.filtering,\r\n },\r\n };\r\n\r\n return $http.get(`/api/products/${this.context.siteId}/categories`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n}\r\n","import angular from 'angular';\r\n\r\nimport listComponent from './list';\r\nimport headerComponent from './header';\r\nimport productCard from './product-card';\r\nimport rootComponent from './root';\r\n\r\nimport hoverDirective from './product-card/hover.directive';\r\n\r\nimport productsService from './products-service';\r\n\r\nconst ProductsModule = angular.module('se-controls.products', [])\r\n .component('productsList', listComponent)\r\n .component('productsHeader', headerComponent)\r\n .component('productsCard', productCard)\r\n .component('productsRoot', rootComponent)\r\n .directive('hoverClass', hoverDirective)\r\n .service('productsService', productsService)\r\n // Configuration.\r\n .config(configureModule);\r\n\r\n/**\r\n * Handle module initialisation.\r\n * @ngInject\r\n * */\r\nfunction configureModule($stateProvider, $urlRouterProvider) {\r\n const $container = angular.element('#product-listing');\r\n\r\n if (!$container.length) {\r\n return;\r\n }\r\n $stateProvider\r\n .state('products', {\r\n abstract: true,\r\n component: 'productsRoot',\r\n })\r\n .state('products.list', {\r\n url: '/list/{page:int}/?{accordions}&{categories}&{filterTerm}&{orderBy}',\r\n params: {\r\n accordions: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n categories: {\r\n array: true,\r\n value: [],\r\n squash: true,\r\n },\r\n filterTerm: {\r\n value: '',\r\n squash: true,\r\n },\r\n page: {\r\n value: 1,\r\n },\r\n orderBy: {\r\n value: '',\r\n squash: true,\r\n },\r\n },\r\n views: {\r\n header: {\r\n component: 'productsHeader',\r\n },\r\n results: {\r\n component: 'productsList',\r\n },\r\n },\r\n resolve: {\r\n elementData: () => $container.data(),\r\n // eslint-disable-next-line no-shadow\r\n filters: /* @ngInject */ ($stateParams, productsService) => {\r\n const request = {\r\n };\r\n return productsService.getCategories(request);\r\n },\r\n // eslint-disable-next-line no-shadow\r\n data: /* @ngInject */ ($stateParams, productsService) => {\r\n const request = {\r\n categories: $stateParams.categories,\r\n filterTerm: $stateParams.filterTerm,\r\n page: $stateParams.page,\r\n orderBy: $stateParams.orderBy,\r\n };\r\n return productsService.getAllProducts(request);\r\n },\r\n },\r\n });\r\n\r\n $urlRouterProvider.otherwise('/list/1/');\r\n}\r\n\r\nexport default ProductsModule;\r\n","import template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n item: '<',\r\n },\r\n template,\r\n};\r\n","class VideoLibraryHeaderController {\r\n /* @ngInject */\r\n constructor($state, $stateParams, $filter) {\r\n this.$state = $state;\r\n\r\n this.orderByOptions = [\r\n { name: '', label: $filter('translate')('custom.SEC.OrderBy') },\r\n { name: 'title', label: 'A-Z' },\r\n { name: '-title', label: 'Z-A' },\r\n ];\r\n\r\n this.filterTerm = $stateParams.filterTerm;\r\n this.selectedOrderBy = this.orderByOptions.find(item => item.name === $stateParams.orderBy);\r\n }\r\n\r\n onOrderByChange(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n orderBy: this.selectedOrderBy.name,\r\n });\r\n }\r\n\r\n applyKeywordFilter(event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.$state.go('.', {\r\n filterTerm: this.filterTerm,\r\n page: 1,\r\n });\r\n }\r\n}\r\n\r\nexport default VideoLibraryHeaderController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n elementData: '<',\r\n data: '<',\r\n filters: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","class VideoLibraryListController {\r\n /* @ngInject */\r\n constructor($state) {\r\n this.$state = $state;\r\n }\r\n}\r\n\r\nexport default VideoLibraryListController;\r\n","import controller from './controller';\r\nimport template from './template.html';\r\n\r\nexport default {\r\n bindings: {\r\n data: '<',\r\n },\r\n controller,\r\n template,\r\n};\r\n","import template from './template.html';\r\n\r\nexport default {\r\n template,\r\n};\r\n","export default class VideoLibraryService {\r\n /* @ngInject */\r\n constructor($http, $log, CONTEXT) {\r\n this.$http = $http;\r\n this.$log = $log;\r\n this.context = CONTEXT;\r\n this.elementData = angular.element('#video-library').data();\r\n }\r\n\r\n getAllVideos(request) {\r\n const { $http, $log } = this;\r\n\r\n const config = {\r\n params: {\r\n cultureCode: this.context.cultureCode,\r\n categories: request.categories,\r\n filterTerm: request.filterTerm,\r\n orderBy: request.orderBy,\r\n pageSize: this.elementData.pagesize,\r\n pageIndex: request.page,\r\n url: window.location.pathname,\r\n },\r\n };\r\n\r\n return $http.get(`/api/video-library/${this.context.siteId}/items`, config).then(\r\n (res) => {\r\n $log.info(res);\r\n return Promise.resolve(res.data);\r\n },\r\n (err) => {\r\n $log.error(err);\r\n return Promise.reject(err);\r\n },\r\n );\r\n }\r\n}\r\n","import angular from 'angular';\r\n\r\nimport cardComponent from './card';\r\nimport headerComponent from './header';\r\nimport listComponent from './list';\r\nimport rootComponent from './root';\r\n\r\nimport videoLibraryService from './video-library-service';\r\n\r\nconst VideoLibraryModule = angular.module('se-controls.video-library', [])\r\n .component('videoLibraryCard', cardComponent)\r\n .component('videoLibraryHeader', headerComponent)\r\n .component('videoLibraryList', listComponent)\r\n .component('videoLibraryRoot', rootComponent)\r\n .service('videoLibraryService', videoLibraryService)\r\n // Configuration.\r\n .config(configureModule);\r\n\r\n/**\r\n * Handle module initialisation.\r\n * @ngInject\r\n * */\r\nfunction configureModule($stateProvider, $urlRouterProvider) {\r\n const $container = angular.element('#video-library');\r\n\r\n if (!$container.length) {\r\n return;\r\n }\r\n\r\n $stateProvider\r\n .state('video-library', {\r\n abstract: true,\r\n component: 'videoLibraryRoot',\r\n })\r\n .state('video-library.list', {\r\n url: '/{page:int}/?{orderBy}',\r\n params: {\r\n page: {\r\n value: 1,\r\n },\r\n orderBy: {\r\n value: '',\r\n squash: true,\r\n },\r\n },\r\n views: {\r\n header: {\r\n component: 'videoLibraryHeader',\r\n },\r\n results: {\r\n component: 'videoLibraryList',\r\n },\r\n },\r\n resolve: {\r\n elementData: () => $container.data(),\r\n // eslint-disable-next-line no-shadow\r\n data: /* @ngInject */ ($stateParams, videoLibraryService) => {\r\n const request = {\r\n page: $stateParams.page,\r\n orderBy: $stateParams.orderBy,\r\n };\r\n return videoLibraryService.getAllVideos(request);\r\n },\r\n },\r\n });\r\n\r\n $urlRouterProvider.otherwise('/1/');\r\n}\r\n\r\nexport default VideoLibraryModule;\r\n","import angular from 'angular';\r\nimport 'angular-cookies';\r\nimport 'angular-sanitize';\r\nimport 'angular-translate';\r\nimport 'angular-translate-handler-log';\r\nimport 'angular-translate-storage-cookie';\r\nimport 'angular-translate-storage-local';\r\nimport '@uirouter/angularjs';\r\nimport 'lodash';\r\nimport 'picturefill/dist/picturefill';\r\nimport 'ui-select';\r\n\r\nimport deferredBootstrapper from 'angular-deferred-bootstrap';\r\n\r\nimport CaseStudiesModule from './case-studies';\r\nimport CoreModuleModule from './core';\r\nimport DocumentLibraryModule from './document-library';\r\nimport FAQsModule from './faqs';\r\nimport JobVacanciesModule from './job-vacancies';\r\nimport LocalisationModule from './localisation';\r\nimport NewsModule from './news';\r\nimport PeopleFinderModule from './people-finder';\r\nimport ProductsModule from './products';\r\nimport VideoLibraryModule from './video-library';\r\n\r\nconst ConstantsModule = angular.module('se-controls.constants', []);\r\n\r\nangular\r\n .module('se-controls', [\r\n 'ngCookies',\r\n 'ngSanitize',\r\n 'pascalprecht.translate',\r\n 'ui.router',\r\n 'ui.select',\r\n CaseStudiesModule.name,\r\n CoreModuleModule.name,\r\n ConstantsModule.name,\r\n DocumentLibraryModule.name,\r\n FAQsModule.name,\r\n JobVacanciesModule.name,\r\n LocalisationModule.name,\r\n NewsModule.name,\r\n PeopleFinderModule.name,\r\n ProductsModule.name,\r\n VideoLibraryModule.name,\r\n ])\r\n .config(configureModule);\r\n\r\ndeferredBootstrapper.bootstrap({\r\n element: document.body,\r\n module: 'se-controls',\r\n moduleResolves: [{\r\n module: 'se-controls.constants',\r\n resolve: {\r\n /* Get context and default resource strings. */\r\n CONTEXT: /* @ngInject */ $http => $http.get('/api/context')\r\n .then(res => res.data)\r\n .then(context => $http.get(`/api/localisation/${context.cultureCode}`)\r\n .then(res => res.data)\r\n .then(resourceStrings => ({ ...context, resourceStrings })),\r\n ),\r\n },\r\n }],\r\n});\r\n\r\n/**\r\n * Configure the module.\r\n * @ngInject\r\n */\r\nfunction configureModule($compileProvider, $httpProvider, $locationProvider) {\r\n $compileProvider.debugInfoEnabled(process.env.NODE_ENV !== 'production');\r\n // eslint-disable-next-line\r\n $compileProvider.aHrefSanitizationWhitelist(/^(?:\\s*(https?|ftp|mailto):|javascript:__doPostBack)/);\r\n $httpProvider.useApplyAsync(true);\r\n $locationProvider.html5Mode(false).hashPrefix('!');\r\n}\r\n","module.exports = \"

{{:: $ctrl.casestudy.title }}

{{:: $ctrl.casestudy.featureDescription | limitTo:150 }} 150\\\">...

\\\"{{::

{{:: child.label }} ,

\";","module.exports = \"

{{:: $ctrl.elementData.title }}

{{:: $ctrl.filterTerm }} {{:: 'custom.SEC.ClearFilters' | translate }}

{{:: 'custom.SEC.Filters' | translate }}

{{:: $select.selected.label }} {{:: item.label }}
\";","module.exports = \"
{{:: 'custom.SEC.LoadMore' | translate }}

{{:: 'custom.SEC.NoCaseStudies' | translate }}

\";","module.exports = \"

{{:: 'custom.SEC.NoCaseStudies' | translate }}

\";","module.exports = \"
\";","module.exports = \"
\";","module.exports = \"

{{:: $ctrl.item.title }}

{{:: $ctrl.item.description | limitTo:150 }} 150\\\">...

{{:: $ctrl.item.type }}
{{:: $ctrl.item.date | date : 'dd MMM yyyy' }}

\";","module.exports = \"

{{:: $ctrl.elementData.title }}

{{:: 'custom.SEC.Filters' | translate }}

{{:: $select.selected.label }} {{:: item.label }}
\";","module.exports = \"
{{:: $ctrl.filterTerm }} {{:: 'custom.SEC.ClearFilters' | translate }}
{{:: 'custom.SEC.LoadMore' | translate }}

{{:: 'custom.SEC.NoDocuments' | translate }}

\";","module.exports = \"
\";","module.exports = \"

{{:: $ctrl.item.summary | limitTo:150 }} 150\\\">...

\";","module.exports = \"

{{:: $ctrl.elementData.title }}

{{:: 'custom.SEC.SearchFilter' | translate }}

\";","module.exports = \"
{{:: $ctrl.filterTerm }}
{{:: 'custom.SEC.LoadMore' | translate }}

{{:: 'custom.SEC.NoFAQs' | translate }}

\";","module.exports = \"
\";","module.exports = \"

{{:: $ctrl.item.featureDescription | limitTo:150 }} 150\\\">...

\";","module.exports = \"

{{:: $ctrl.elementData.title }}

\";","module.exports = \"
{{:: 'custom.SEC.LoadMore' | translate }}

{{:: 'custom.SEC.NoJobs' | translate }}

\";","module.exports = \"
\";","module.exports = \"

{{:: $ctrl.item.title }}

{{:: $ctrl.item.featureDescription | limitTo:150 }} 150\\\">...

\\\"{{::

{{:: child.label }} , ,

\";","module.exports = \"

{{:: $ctrl.elementData.title }}

{{:: 'custom.SEC.Filters' | translate }}

{{:: $select.selected.label }} {{:: item.label }}
\";","module.exports = \"
{{:: $ctrl.filterTerm }} {{:: 'custom.SEC.ClearFilters' | translate }}
{{:: 'custom.SEC.LoadMore' | translate }}

{{:: 'custom.SEC.NoNews' | translate }}

\";","module.exports = \"
\";","module.exports = \"
\\\"{{::

{{:: $ctrl.item.name }}

{{:: $ctrl.item.jobRole }}

\";","module.exports = \"

{{:: $ctrl.elementData.title }}

{{:: 'custom.SEC.Filters' | translate }}

{{:: $select.selected.label }} {{:: item.label }}
\";","module.exports = \"
{{:: $ctrl.filterTerm }} {{:: 'custom.SEC.ClearFilters' | translate }}
{{:: 'custom.SEC.LoadMore' | translate }}

{{:: 'custom.SEC.NoPeople' | translate }}

\";","module.exports = \"
\";","module.exports = \"
{{:: $ctrl.filterTerm }} {{:: 'custom.SEC.ClearFilters' | translate }}
{{:: 'custom.SEC.LoadMore' | translate }}

{{:: 'custom.SEC.NoProducts' | translate }}

\";","module.exports = \"

{{:: $ctrl.elementData.title }}

{{:: $ctrl.elementData.description }}

{{:: 'custom.SEC.Filters' | translate }}

{{:: $select.selected.label }} {{:: item.label }}
\";","module.exports = \"

{{:: $ctrl.product.title }}

{{ ::category.label }}
{{:: child.label }} ,
\";","module.exports = \"
\";","module.exports = \"
{{:: 'custom.SEC.UploadDate' | translate }} {{:: $ctrl.item.date | date : 'dd MMM yyyy' }}
\\\"{{::
\";","module.exports = \"

{{:: $ctrl.elementData.title }}

{{:: $select.selected.label }} {{:: item.label }}
\";","module.exports = \"

{{:: 'custom.SEC.NoVideos' | translate }}

\";","module.exports = \" \";"],"sourceRoot":""}