{"version":3,"sources":["pages/search/overlays/filter/dealer-inventory-filter.controller.js","pages/search/overlays/inventory-alert-overlay/inventory-alert-overlay.controller.js","pages/search/search-page.controller.js","pages/search/services/inventory-alert.service.js","pages/search/services/vehicle-filter.service.js","templates.js","app.module.js","app.component.js","pages/search/components/search-empty-state/search-empty-state.component.js","pages/search/constants/filter-options.constant.js","pages/search/directives/pin-top-mobile.directive.js","pages/search/search-page.config.js"],"names":["_classCallCheck","instance","Constructor","TypeError","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","$templateCache","put","window","document","$","undefined","angular","module","jQuery","component","templateUrl","bindings","openInventoryAlertOverlay","constant","modelGroups","acpv","filterOptions","directive","$document","getScrollDirection","scrollTop","previous","current","delta","VerticalScrollDirection","UP","DOWN","postLink","scope","element","pin","hasClass","elementClientRect","getBoundingClientRect","parent","css","height","addClass","offsetTop","unpin","removeClass","onDocumentScroll","onDocumentScrollUp","onDocumentScrollDown","top","mediaQuery","matchMedia","MOBILE_BREAKPOINT","matches","on","addListener","media","off","$on","this","link","_createClass","defineProperties","target","props","i","length","descriptor","protoProps","staticProps","prototype","DealerInventoryFilterOverlay","FilterOptions","VehicleFilter","VehicleLabels","assign","setDistance","distance","fetchVehicles","setOrderBy","orderBy","filterVehicles","aggregate","distanceOptions","close","controller","ALERT_EMAIL_KEY","InventoryAlertOverlay","InventoryAlert","Storage","Utils","alertCreated","alertEmail","alertName","error","invalidEmail","get","object","keys","join","HTMLInputElement","_this","create","email","filters","name","defaultAlertName","dealer","then","TapCallback","context","catch","response","status","data","SignupResponse","Success","Errors","some","x","input","getElementById","hasConstraintValidationAPI","setCustomValidity","reportValidity","one","isEmpty","listKeys","onClose","config","$routeProvider","when","controllerAs","resolveRedirectTo","QueryParams","$window","location","href","TABLET_BREAKPOINT","SearchPage","Inventory","Overlay","$scope","children","loading","id","label","property","searchResults","showDealerNameInTopBar","showPhoneLinkInTopBar","viewClass","vehicles","emptyFilterResults","bind","headingContent","querySelector","heading","phoneLink","topBar","find","BottomBar","setTimeout","$apply","pagelanguage","pagedealer","scrpt","createElement","type","innerHTML","JSON","stringify","appendChild","_this2","spinner","show","getAPR","_ref","APR","findByDealer","dealerId","apr","parseFloat","_ref2","_ref2$data","dealers","shift","embedTracking","detectBuyOnlineDealer","_satellite","track","finally","hide","cars","output","car","BuyOnline","attr","filteredVehicles","topBarContent","bottom","isMobile","onDocumentScrollDesktop","onDocumentScrollMobile","_this3","headingClientRect","phoneLinkClientRect","topBarContentClientRect","headingClientBottom","phoneLinkClientBottom","topBarContentClientBottom","_this4","showFilterLinkInTopBar","inventorySearchToolbar","toolbarClientRect","console","log","_this5","_Overlay$compile","compile","classList","fullscreen","distace","template","open","_Overlay$compile2","a","address","push","city","state","zip","substring","getParameterByName","url","arguments","replace","regex","RegExp","results","exec","decodeURIComponent","dataURL","DataTransform","$http","$q","deliveryDuration","deliveryFrequency","reverseCodeMap","invertMap","modelAttriubteCodeMap","customerInfo","Email","models","modelGroupName","attributes","preference","DeliveryDuration","DeliveryFrequency","alert","_create","postData","post","headers","Content-Type","service","parseQueryParams","parse","search","mapToObject","options","modelGroup","forEach","vehicle","model","groupName","filter","testVehicle","params","split","indexOf"],"mappings":"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","file":"acpv-dealer-inventory.min.js","sourcesContent":["(function(window, document, $, undefined) {\nclass DealerInventoryFilterOverlay {\r\n \r\n constructor(FilterOptions, VehicleFilter, VehicleLabels) {\r\n Object.assign(this, {FilterOptions, VehicleFilter, VehicleLabels});\r\n }\r\n\r\n onDistanceChange() {\r\n this.setDistance(this.distance);\r\n this.fetchVehicles();\r\n }\r\n\r\n onOrderByChange() {\r\n this.setOrderBy(this.orderBy);\r\n this.filterVehicles();\r\n }\r\n}\r\n\r\nangular.module('acpv.dealerInventory').component('dealerInventoryFilterOverlay', {\r\n bindings: {\r\n aggregate: '<',\r\n distance: '=',\r\n distanceOptions: '<',\r\n close: '&',\r\n fetchVehicles: '&',\r\n filterVehicles: '&',\r\n orderBy: '=',\r\n setDistance: '<',\r\n setOrderBy: '<'\r\n },\r\n controller: DealerInventoryFilterOverlay,\r\n templateUrl: 'dealer-inventory-filter.template.html'\r\n});\n}(window, document, jQuery));\n","(function(window, document, $, undefined) {\nconst ALERT_EMAIL_KEY = 'acpv.dealerInventory.alertEmail';\r\n\r\nclass InventoryAlertOverlay {\r\n\r\n alertCreated = false;\r\n alertEmail = '';\r\n alertName = '';\r\n error = false;\r\n invalidEmail = false;\r\n\r\n constructor(InventoryAlert, Storage, Utils) {\r\n Object.assign(this, { InventoryAlert, Storage, Utils }, {\r\n alertEmail: Storage.get(ALERT_EMAIL_KEY)\r\n });\r\n }\r\n\r\n get defaultAlertName() {\r\n if (this.Utils.isEmpty(this.filters.modelGroups)) {\r\n return `${this.dealer.name} : Any Vehicle`;\r\n }\r\n\r\n return `${this.dealer.name} : ${this.listKeys(this.filters.modelGroups)}`;\r\n }\r\n\r\n listKeys(object) {\r\n return Object.keys(object).join(', ');\r\n }\r\n\r\n hasConstraintValidationAPI()\r\n {\r\n return HTMLInputElement && \"setCustomValidity\" in HTMLInputElement.prototype && \"reportValidity\" in HTMLInputElement.prototype;\r\n }\r\n\r\n submit() {\r\n this.InventoryAlert.create({\r\n email: this.alertEmail,\r\n filters: this.filters,\r\n name: this.alertName || this.defaultAlertName,\r\n dealer: this.dealer,\r\n }).then(() => {\r\n this.alertCreated = true;\r\n if(typeof window.TapCallback === \"function\") {\r\n window.TapCallback({\r\n \"context\": \"inventory-alert-complete-modal-load\"\r\n });\r\n }\r\n }).catch(response => {\r\n if (response.status === 400\r\n && response.data.SignupResponse\r\n && !response.data.SignupResponse.Success\r\n && response.data.SignupResponse.Errors.some(x => x[\"@error_number\"] === \"InvalidEmail\")) {\r\n this.error = false;\r\n this.invalidEmail = true;\r\n var input = document.getElementById(\"alertEmail\");\r\n if (this.hasConstraintValidationAPI())\r\n {\r\n input.setCustomValidity(\"Sorry, we can't accept that email address.\");\r\n input.reportValidity();\r\n $(input).one(\"input\", () => {\r\n input.setCustomValidity(\"\");\r\n this.invalidEmail = false;\r\n });\r\n }\r\n } else {\r\n this.error = true;\r\n this.invalidEmail = false;\r\n }\r\n });\r\n\r\n this.Storage.put(ALERT_EMAIL_KEY, this.alertEmail);\r\n }\r\n}\r\n\r\nangular.module('acpv.dealerInventory').component('inventoryAlertOverlay', {\r\n bindings: {\r\n filters: '<',\r\n onClose: '&',\r\n dealer: '<'\r\n },\r\n controller: InventoryAlertOverlay,\r\n templateUrl: 'inventory-alert-overlay.template.html'\r\n});\n}(window, document, jQuery));\n","(function(window, document, $, undefined) {\nconst TABLET_BREAKPOINT = 768;\r\n\r\nclass SearchPage {\r\n\r\n aggregate = {};\r\n error = false;\r\n children = null;\r\n dealer = null;\r\n loading = false;\r\n orderBy = {\r\n id: 0,\r\n label: 'DEALER: Nearest',\r\n property: 'distance'\r\n };\r\n searchResults = [];\r\n showDealerNameInTopBar = false;\r\n showPhoneLinkInTopBar = false;\r\n viewClass = 'search-page';\r\n vehicles = [];\r\n emptyFilterResults = false;\r\n\r\n constructor($document, FilterOptions, Inventory, Overlay, QueryParams, $scope, Utils, VehicleFilter, VehicleLabels) {\r\n Object.assign(this, {$document, FilterOptions, Inventory, Overlay, QueryParams, $scope, Utils, VehicleFilter, VehicleLabels}, {\r\n onDocumentScroll: this.onDocumentScroll.bind(this)\r\n });\r\n\r\n this.children = {\r\n headingContent: angular.element($document[0].querySelector('.ic .heading-content')),\r\n heading: angular.element($document[0].querySelector('.ic .heading')),\r\n phoneLink: angular.element($document[0].querySelector('.ic .phone-link')),\r\n topBar: $document.find('top-bar')\r\n };\r\n\r\n this.mediaQuery = matchMedia(`(min-width: ${TABLET_BREAKPOINT}px)`);\r\n\r\n this.fetchVehicles();\r\n\r\n new acpv.BottomBar();\r\n\r\n $document.on('scroll', this.onDocumentScroll);\r\n\r\n this.mediaQuery.addListener((media) => {\r\n if (media.matches) {\r\n setTimeout(this.onDocumentScroll);\r\n } else {\r\n $scope.$apply(() => {\r\n this.showDealerNameInTopBar = false;\r\n this.showPhoneLinkInTopBar = false;\r\n });\r\n }\r\n })\r\n }\r\n\r\n $onDestroy() {\r\n this.$document.off('scroll', this.onDocumentScroll);\r\n }\r\n\r\n // dtmDataLayer Tracking\r\n embedTracking() {\r\n const data = {\r\n pagelanguage: 'English',\r\n pagedealer: this.dealer.name\r\n };\r\n\r\n const scrpt = document.createElement(\"script\");\r\n\r\n scrpt.type = \"text/javascript\";\r\n scrpt.innerHTML = `dtmDataLayer = ${JSON.stringify(data)}`;\r\n\r\n document.getElementById(\"dtm-data-layer\").appendChild(scrpt);\r\n }\r\n\r\n fetchVehicles() {\r\n this.loading = true;\r\n const spinner = $('.spinner');\r\n spinner.show();\r\n\r\n this.error = false;\r\n const httpRequest = this.Inventory.getAPR()\r\n .then(({APR}) => {\r\n return this.Inventory.findByDealer({\r\n dealerId: this.QueryParams.get('dealerId'),\r\n apr: parseFloat(APR)\r\n });\r\n })\r\n .then(({data: {dealers, vehicles}}) => {\r\n this.dealer = dealers.shift();\r\n this.vehicles = vehicles;\r\n\r\n this.embedTracking();\r\n this.filterVehicles();\r\n\r\n this.detectBuyOnlineDealer(this.vehicles);\r\n _satellite.track('dealerinv_page_ready');\r\n }).catch(() => {\r\n this.error = true;\r\n }).finally(() => {\r\n this.loading = false;\r\n spinner.hide()\r\n });\r\n\r\n return httpRequest;\r\n }\r\n\r\n detectBuyOnlineDealer(cars) {\r\n let output = cars.some(car => car.BuyOnline === 'true');\r\n $(\"#detect-dealer\").attr(\"data-buyonline-dealer\", output);\r\n\r\n return output;\r\n }\r\n\r\n filterVehicles() {\r\n this.aggregate = this.VehicleFilter.aggregate(this.vehicles);\r\n let filteredVehicles = this.VehicleFilter.filterVehicles(this.vehicles);\r\n if (filteredVehicles.length > 0) {\r\n this.searchResults = filteredVehicles;\r\n this.emptyFilterResults = false;\r\n } else {\r\n this.searchResults = this.vehicles;\r\n this.emptyFilterResults = true;\r\n }\r\n }\r\n\r\n getTopBarBottom() {\r\n const topBarContent = this.children.topBar.find('top-bar-content');\r\n \r\n if (!topBarContent.length) {\r\n return 0;\r\n }\r\n\r\n return topBarContent[0].getBoundingClientRect().bottom;\r\n }\r\n\r\n onDealerPhoneClick() {\r\n if (this.Utils.isMobile) {\r\n _satellite.track(\"dealerinv_call\");\r\n }\r\n }\r\n\r\n onDocumentScroll() {\r\n if (this.mediaQuery.matches) {\r\n return this.onDocumentScrollDesktop();\r\n }\r\n\r\n this.onDocumentScrollMobile();\r\n }\r\n\r\n onDocumentScrollDesktop() {\r\n const topBarContent = this.children.topBar.find('top-bar-content');\r\n \r\n if (!topBarContent.length) {\r\n return;\r\n }\r\n\r\n const headingClientRect = this.children.heading[0].getBoundingClientRect();\r\n const phoneLinkClientRect = this.children.phoneLink[0].getBoundingClientRect();\r\n const topBarContentClientRect = topBarContent[0].getBoundingClientRect();\r\n \r\n const headingClientBottom = headingClientRect.top + headingClientRect.height;\r\n const phoneLinkClientBottom = phoneLinkClientRect.top + phoneLinkClientRect.height;\r\n const topBarContentClientBottom = topBarContentClientRect.top + topBarContentClientRect.height;\r\n\r\n if (headingClientBottom < topBarContentClientBottom) {\r\n if (!this.showDealerNameInTopBar) {\r\n this.$scope.$apply(() => {\r\n this.showDealerNameInTopBar = true;\r\n });\r\n }\r\n } else if (this.showDealerNameInTopBar) {\r\n this.$scope.$apply(() => {\r\n this.showDealerNameInTopBar = false;\r\n });\r\n }\r\n\r\n if (phoneLinkClientBottom < topBarContentClientBottom) {\r\n if (!this.showPhoneLinkInTopBar) {\r\n this.$scope.$apply(() => {\r\n this.showPhoneLinkInTopBar = true;\r\n });\r\n }\r\n } else if (this.showPhoneLinkInTopBar) {\r\n this.$scope.$apply(() => {\r\n this.showPhoneLinkInTopBar = false;\r\n });\r\n }\r\n }\r\n\r\n onDocumentScrollMobile() {\r\n if (!this.children.headingContent.hasClass('pin')) {\r\n if (this.showFilterLinkInTopBar) {\r\n this.$scope.$apply(() => {\r\n this.showFilterLinkInTopBar = false;\r\n });\r\n }\r\n\r\n return;\r\n }\r\n\r\n const inventorySearchToolbar = $('inventory-search-toolbar');\r\n\r\n if (!inventorySearchToolbar.length) {\r\n return;\r\n }\r\n\r\n const headingClientRect = this.children.headingContent[0].getBoundingClientRect();\r\n const toolbarClientRect = inventorySearchToolbar[0].getBoundingClientRect();\r\n\r\n console.log(toolbarClientRect.top, headingClientRect.bottom);\r\n\r\n if (toolbarClientRect.top < headingClientRect.bottom) {\r\n if (!this.showFilterLinkInTopBar) {\r\n this.$scope.$apply(() => {\r\n this.showFilterLinkInTopBar = true;\r\n });\r\n }\r\n } else if (this.showFilterLinkInTopBar) {\r\n this.$scope.$apply(() => {\r\n this.showFilterLinkInTopBar = false;\r\n });\r\n }\r\n }\r\n\r\n onVehicleSortChange() {\r\n _satellite.track('dealerinv_sort');\r\n }\r\n\r\n openFilterOverlay() {\r\n const {open, close, scope} = this.Overlay.compile({\r\n classList: 'dealer-inventory-filter',\r\n fullscreen: true,\r\n scope: {\r\n aggregate: this.aggregate,\r\n distace: this.distance,\r\n distanceOptions: this.distanceOptions,\r\n close() {\r\n close();\r\n },\r\n fetchVehicles: () => {\r\n this.fetchVehicles().then(() => {\r\n scope.aggregate = this.aggregate;\r\n });\r\n },\r\n filterVehicles: () => {\r\n this.filterVehicles(this);\r\n scope.aggregate = this.aggregate;\r\n },\r\n orderBy: this.orderBy,\r\n setDistance: (distance) => {\r\n this.distance = distance;\r\n },\r\n setOrderBy: (orderBy) => {\r\n this.orderBy = orderBy;\r\n }\r\n },\r\n template: `\r\n \r\n `\r\n });\r\n\r\n open();\r\n }\r\n\r\n openInventoryAlertOverlay() {\r\n const {open, close, scope} = this.Overlay.compile({\r\n classList: 'inventory-alert-overlay',\r\n fullscreen: 'mobile',\r\n scope: {\r\n filters: Object.assign({}, this.VehicleFilter),\r\n onClose() {\r\n close();\r\n },\r\n dealer: this.dealer\r\n },\r\n template: `\r\n \r\n `\r\n });\r\n\r\n open();\r\n\r\n if(typeof window.TapCallback === \"function\") {\r\n window.TapCallback({\r\n \"context\": \"inventory-alert-modal-load\"\r\n });\r\n }\r\n\r\n $(document).one('keypress', '#alertEmail', function () {\r\n if(typeof window.TapCallback === \"function\") {\r\n window.TapCallback({\r\n \"context\": \"inventory-alert-modal-start\"\r\n });\r\n }\r\n });\r\n }\r\n\r\n formattedDealerAddress() {\r\n if (!this.dealer) {\r\n return;\r\n }\r\n let a = [];\r\n if (this.dealer.address)\r\n {\r\n a.push(this.dealer.address);\r\n }\r\n if (this.dealer.city)\r\n {\r\n if (this.dealer.address)\r\n {\r\n a.push(\", \");\r\n }\r\n a.push(this.dealer.city);\r\n }\r\n if (this.dealer.state)\r\n {\r\n if (this.dealer.address || this.dealer.city)\r\n {\r\n a.push(\", \");\r\n }\r\n a.push(this.dealer.state);\r\n }\r\n if (this.dealer.zip)\r\n {\r\n if (this.dealer.address || this.dealer.city || this.dealer.state)\r\n {\r\n a.push(\" \");\r\n }\r\n a.push(this.dealer.zip.substring(0,5));\r\n }\r\n return a.join(\"\");\r\n }\r\n\r\n}\r\n\r\nangular.module('acpv.dealerInventory').controller('SearchPage', SearchPage);\n}(window, document, jQuery));\n","(function(window, document, $, undefined) {\nvar dataURL = '';\r\n\r\nfunction getParameterByName(name, url = window.location.href) {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)','i'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n}\r\n\r\nclass InventoryAlert {\r\n\r\n deliveryDuration = 30;\r\n deliveryFrequency = 1;\r\n\r\n constructor(DataTransform, $http, $q, Utils) {\r\n Object.assign(this, {$http, $q, Utils}, {\r\n reverseCodeMap: Utils.invertMap(DataTransform.modelAttriubteCodeMap)\r\n });\r\n }\r\n\r\n _create(email, filters, name, dealer) {\r\n const alert = {\r\n alertName: name,\r\n customerInfo: {\r\n Email: email\r\n },\r\n dealers: [{\r\n dealerId: dealer.id\r\n }],\r\n models: [{\r\n modelGroupName: Object.keys(filters.modelGroups).join(','),\r\n attributes: []\r\n }],\r\n preference: {\r\n DeliveryDuration: this.deliveryDuration,\r\n DeliveryFrequency: this.deliveryFrequency\r\n },\r\n dealer,\r\n };\r\n\r\n return alert;\r\n }\r\n\r\n create({email, filters, name, dealer}) {\r\n var usedev = getParameterByName('usedev');\r\n\r\n switch (usedev) {\r\n case '1': \r\n dataURL = 'https://acuracertifieddev.rpa-dev.com';\r\n break;\r\n case '2':\r\n dataURL = 'https://acuracertifieddev2.rpa-dev.com';\r\n break;\r\n default:\r\n dataURL = '';\r\n }\r\n\r\n const alert = this._create(email, filters, name, dealer);\r\n const postData = `requestFilter=${JSON.stringify(alert)}`;\r\n const httpRequest = this.$http.post(dataURL + '/api/dealerinventoryalerts/create', postData, {\r\n headers: {\r\n 'Content-Type': 'application/x-www-form-urlencoded'\r\n }\r\n }).then(() => {});\r\n\r\n return httpRequest;\r\n }\r\n}\r\n\r\nangular.module('acpv.dealerInventory').service('InventoryAlert', InventoryAlert);\n}(window, document, jQuery));\n","(function(window, document, $, undefined) {\nclass VehicleFilter {\r\n\r\n modelGroups = {};\r\n\r\n constructor(FilterOptions, QueryParams, Utils) {\r\n Object.assign(this, {FilterOptions, Utils});\r\n\r\n this.parseQueryParams(QueryParams.parse(location.search));\r\n }\r\n\r\n aggregate(vehicles) {\r\n const {mapToObject} = this.Utils;\r\n const options = this.FilterOptions;\r\n\r\n const aggregate = {\r\n modelGroups: mapToObject(options.modelGroups, (modelGroup) => ({\r\n [modelGroup]: 0\r\n }))\r\n };\r\n\r\n vehicles.forEach((vehicle) => {\r\n aggregate.modelGroups[vehicle.model.groupName]++;\r\n });\r\n\r\n return aggregate;\r\n }\r\n\r\n filterVehicles(vehicles) {\r\n return vehicles.filter((vehicle) => this.testVehicle(vehicle));\r\n }\r\n\r\n parseQueryParams(params = {}) {\r\n if (typeof params.vehicles === 'string') {\r\n this.modelGroups = {};\r\n\r\n params.vehicles.split(',').forEach((vehicle) => {\r\n if (vehicle === 'TSX Wagon') {\r\n vehicle = 'TSX Sport Wagon';\r\n }\r\n\r\n if (this.FilterOptions.modelGroups.indexOf(vehicle) !== -1) {\r\n this.modelGroups[vehicle] = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n testVehicle(vehicle) {\r\n if (this.Utils.isEmpty(this.modelGroups)) {\r\n return true;\r\n }\r\n \r\n return vehicle.model.groupName in this.modelGroups;\r\n }\r\n}\r\n\r\nangular.module('acpv.dealerInventory').service('VehicleFilter', VehicleFilter);\n}(window, document, jQuery));\n",null,"(function(window, document, $, undefined) {\nangular.module('acpv.dealerInventory', [\r\n 'acpv',\r\n 'acpv.dealer.inventory.templates',\r\n 'ngRoute'\r\n]);\n}(window, document, jQuery));\n","(function(window, document, $, undefined) {\nangular.module('acpv.dealerInventory').component('app', {\r\n templateUrl: 'app.template.html'\r\n});\n}(window, document, jQuery));\n","(function(window, document, $, undefined) {\nangular.module('acpv.dealerInventory').component('searchEmptyState', {\r\n bindings: {\r\n openInventoryAlertOverlay: '&'\r\n },\r\n templateUrl: 'search-empty-state.template.html'\r\n});\n}(window, document, jQuery));\n","(function(window, document, $, undefined) {\nangular.module('acpv.dealerInventory').constant('FilterOptions', {\r\n modelGroups: acpv.filterOptions.modelGroups // initialized in razor view\r\n});\n}(window, document, jQuery));\n","(function(window, document, $, undefined) {\nangular.module('acpv.dealerInventory').directive('pinTopMobile', ($document) => {\r\n const MOBILE_BREAKPOINT = 767;\r\n \r\n const VerticalScrollDirection = {\r\n DOWN: 0,\r\n UP: 1\r\n };\r\n\r\n const scrollTop = {\r\n current: 0,\r\n previous: 0,\r\n\r\n get delta() {\r\n return this.current - this.previous;\r\n }\r\n };\r\n\r\n function getScrollDirection() {\r\n scrollTop.previous = scrollTop.current;\r\n scrollTop.current = $document.scrollTop();\r\n\r\n if (scrollTop.delta < 0) {\r\n return VerticalScrollDirection.UP;\r\n }\r\n\r\n return VerticalScrollDirection.DOWN;\r\n }\r\n\r\n function postLink(scope, element) {\r\n const mediaQuery = matchMedia(`(max-width: ${MOBILE_BREAKPOINT}px)`);\r\n\r\n if (mediaQuery.matches) {\r\n $document.on('scroll', onDocumentScroll);\r\n }\r\n\r\n mediaQuery.addListener((media) => {\r\n if (media.matches) {\r\n onDocumentScroll();\r\n $document.on('scroll', onDocumentScroll);\r\n } else {\r\n unpin();\r\n $document.off('scroll', onDocumentScroll);\r\n }\r\n });\r\n\r\n scope.$on('$destroy', () => $document.off('scroll', onDocumentScroll));\r\n\r\n function pin() {\r\n if (element.hasClass('pin')) {\r\n return;\r\n }\r\n\r\n const elementClientRect = element[0].getBoundingClientRect();\r\n\r\n element.parent().css('height', `${elementClientRect.height}px`);\r\n element.addClass('pin').css('top', `${scope.offsetTop()}px`);\r\n }\r\n\r\n function unpin() {\r\n if (!element.hasClass('pin')) {\r\n return;\r\n }\r\n\r\n element.removeClass('pin').css('top', '');\r\n element.parent().css('height', '');\r\n }\r\n\r\n function onDocumentScroll() {\r\n if (getScrollDirection() === VerticalScrollDirection.UP) {\r\n return onDocumentScrollUp();\r\n }\r\n\r\n onDocumentScrollDown();\r\n }\r\n\r\n function onDocumentScrollDown() {\r\n const parentClientRect = element.parent()[0].getBoundingClientRect();\r\n\r\n if (parentClientRect.top <= scope.offsetTop()) {\r\n pin();\r\n }\r\n }\r\n\r\n function onDocumentScrollUp() {\r\n const parentClientRect = element.parent()[0].getBoundingClientRect();\r\n\r\n if (parentClientRect.top >= scope.offsetTop()) {\r\n unpin();\r\n }\r\n }\r\n }\r\n\r\n return {\r\n link: postLink,\r\n scope: {\r\n offsetTop: '&'\r\n }\r\n };\r\n});\n}(window, document, jQuery));\n","(function(window, document, $, undefined) {\nfunction config($routeProvider) {\r\n $routeProvider.when('/', {\r\n controller: 'SearchPage',\r\n controllerAs: '$ctrl',\r\n resolveRedirectTo: ['QueryParams', '$window', (QueryParams, $window) => {\r\n // $routeParams wasn't working with html5 mode disabled, so I\r\n // created a QueryParams service to parse query paramters\r\n if (!QueryParams.get('dealerId')) {\r\n $window.location.href = 'dealer-locator.aspx';\r\n }\r\n }],\r\n templateUrl: 'search-page.template.html'\r\n });\r\n}\r\n\r\nangular.module('acpv.dealerInventory').config(config);\n}(window, document, jQuery));\n"]}