{"version":3,"file":"src/js/app.bootstrap.js","sources":["../../src/js/gtm/gtm.service.js","../../src/js/contactStore/contactStore.controller.js","../../src/js/directives/has-dropdown.directive.js","../../src/js/directives/hilight.directive.js","../../src/js/directives/scroll.directive.js","../../src/js/filters/image-with-features.filter.js","../../src/js/filters/notIn.filter.js","../../src/js/filters/trusted.filter.js","../../src/js/forms/control-messages.directive.js","../../src/js/forms/control.directive.js","../../src/js/services/api.service.js","../../node_modules/rxjs/src/internal/util/isArray.ts","../../node_modules/rxjs/src/internal/util/isObject.ts","../../node_modules/rxjs/src/internal/util/isFunction.ts","../../node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","../../node_modules/rxjs/src/internal/Subscription.ts","../../node_modules/rxjs/src/internal/scheduler/Action.ts","../../node_modules/rxjs/src/internal/scheduler/AsyncAction.ts","../../node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts","../../node_modules/rxjs/src/internal/Scheduler.ts","../../node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts","../../node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts","../../node_modules/rxjs/src/internal/scheduler/animationFrame.ts","../../src/js/shared/rect.js","../../src/js/services/dom.service.js","../../src/js/shared/location.service.js","../../src/js/shared/state.service.js","../../src/js/store-locator/store-locator.controller.js","../../src/js/app.module.js","../../src/js/app.bootstrap.js"],"sourcesContent":["/* jshint esversion: 6 */\r\n\r\nfunction push_(event) {\r\n\tconst dataLayer = window.dataLayer || [];\r\n\tdataLayer.push(event);\r\n\tconsole.log('GtmService.dataLayer', dataLayer);\r\n}\r\n\r\nexport default class GtmService {\r\n\r\n\tstatic pageView() {\r\n\t\treturn push_({\r\n\t\t\tevent: 'PageViewCustomEvent',\r\n\t\t\ttitle: document.title,\r\n\t\t\thref: window.location.href,\r\n\t\t\tpathname: window.location.pathname,\r\n\t\t\thostname: window.location.hostname,\r\n\t\t});\r\n\t}\r\n\r\n\tstatic pageView(pathname) {\r\n\t\tconst obj = {\r\n\t\t\tevent: 'PageViewCustomEvent',\r\n\t\t\ttitle: document.title,\r\n\t\t\thref: window.location.href,\r\n\t\t\tpathname: pathname || window.location.pathname,\r\n\t\t\thostname: window.location.hostname,\r\n\t\t};\r\n\t\tObject.assign(obj, window.dataLayerData);\r\n\t\treturn push_(obj);\r\n\t}\r\n\r\n\tstatic pageViewFilters(cat, filters) {\r\n\t\tconst values = [];\r\n\t\tlet any = false;\r\n\t\tfor (let key in filters) {\r\n\t\t\tlet textValue = '';\r\n\t\t\tconst filterValue = filters[key].value;\r\n\t\t\tif (filterValue) {\r\n\t\t\t\tconst selectedOption = filters[key].options.find(option => option.value === filterValue);\r\n\t\t\t\tif (selectedOption) {\r\n\t\t\t\t\ttextValue = selectedOption.key;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (textValue) any = true;\r\n\t\t\tlet name = filters[key].key /* se array di filtri */ || key /* se oggetto filtro */ ;\r\n\t\t\tif (name) name = encodeURIComponent(name) + '-';\r\n\t\t\tvalues.push(name + encodeURIComponent(textValue));\r\n\t\t}\r\n\t\tconst pathname = any ? `?cat=${cat}&s=${values.join('_')}` : '';\r\n\t\tGtmService.pageView(window.location.pathname + pathname);\r\n\t}\r\n\r\n\tstatic push(event) {\r\n\t\treturn push_(event);\r\n\t}\r\n\r\n}\r\n","/* jshint esversion: 6 */\r\n\r\nimport GtmService from '../gtm/gtm.service';\r\n\r\nclass ContactStoreCtrl {\r\n\r\n\tconstructor(\r\n\t\t$scope,\r\n\t\t$location,\r\n\t\t$timeout,\r\n\t\t$http,\r\n\t\tStateService\r\n\t) {\r\n\t\tthis.$scope = $scope;\r\n\t\tthis.$location = $location;\r\n\t\tthis.$timeout = $timeout;\r\n\t\tthis.$http = $http;\r\n\t\tthis.data = window.data || {};\r\n\t\tthis.model = {\r\n\t\t\tCollections: []\r\n\t\t};\r\n\t\tif (this.$location.search() && this.$location.search().email) {\r\n\t\t\tthis.model.email = this.$location.search().email;\r\n\t\t}\r\n\t\tthis.state = StateService.getState();\r\n\t\tthis.state.ready();\r\n\t}\r\n\r\n\tonSubmit() {\r\n\t\tconsole.log('ContactStoreCtrl.onSubmit', this.model);\r\n\r\n\t\tvar data = this.model;\r\n\t\tdata.Collections = data.Collections.join(',');\r\n\r\n\t\tvar inputCaptcha = document.getElementById('g-recaptcha-response');\r\n\t\tif (inputCaptcha) {\r\n\t\t\tdata.Captcha = inputCaptcha.value;\r\n\t\t} else {\r\n\t\t\tdata.Captcha = '';\r\n\t\t}\r\n\r\n\t\tif (this.state.busy()) {\r\n\t\t\tthis.$http.post('/WS/wsUsers.asmx/ContactStore', { data: data }).then(\r\n\t\t\t\tsuccess => {\r\n\t\t\t\t\tif (success.data.d.Status) {\r\n\t\t\t\t\t\tthis.state.success();\r\n\t\t\t\t\t\tGtmService.push({ \"event\": \"Action Complete\" });\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.state.error();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\terror => {\r\n\t\t\t\t\tthis.error = error;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t\tthis.$timeout(() => {\r\n\t\t\t\t// this.state.ready();\r\n\t\t\t}, 2000);\r\n\t\t}\r\n\t}\r\n\r\n\tonInvalid() {\r\n\t\tconsole.log(this.model, this);\r\n\t\tthis.$scope.$broadcast('onInvalid');\r\n\t}\r\n\r\n}\r\n\r\nContactStoreCtrl.$inject = ['$scope', '$location', '$timeout', '$http', 'StateService'];\r\n\r\nexport default ContactStoreCtrl;\r\n","/* jshint esversion: 6 */\r\n\r\nexport default class HasDropdownDirective {\r\n\r\n\tconstructor(\r\n\t\t$timeout\r\n\t) {\r\n\t\tthis.$timeout = $timeout;\r\n\t\tthis.restrict = 'A';\r\n\t\tthis.scope = false;\r\n\t}\r\n\r\n\tlink(scope, element, attributes, controller) {\r\n\t\tconst node = element[0];\r\n\t\tlet opened_ = null;\r\n\t\t// const consumer = attributes.hasDropdownConsumer !== undefined ? scope.$eval(attributes.hasDropdownConsumer) : null;\r\n\t\tconst trigger = attributes.hasDropdown !== '' ? node.querySelector(attributes.hasDropdown) : node;\r\n\t\tconst onClick = (event) => {\r\n\t\t\tif (opened_ === null) {\r\n\t\t\t\topenDropdown();\r\n\t\t\t} else if (event.target !== trigger) {\r\n\t\t\t\tcloseDropdown(true);\r\n\t\t\t}\r\n\t\t};\r\n\t\tconst onDocumentClick = (event) => {\r\n\t\t\tconst clickedInside = node === event.target || node.contains(event.target);\r\n\t\t\tif (!clickedInside) {\r\n\t\t\t\tcloseDropdown();\r\n\t\t\t}\r\n\t\t};\r\n\t\tconst openDropdown = () => {\r\n\t\t\tif (opened_ === null) {\r\n\t\t\t\topened_ = true;\r\n\t\t\t\taddDocumentListeners();\r\n\t\t\t\tscope.$root.$broadcast('onDroppedIn', node);\r\n\t\t\t\tconst callback = attributes.droppedIn !== undefined ? scope.$eval(attributes.droppedIn) : () => {};\r\n\t\t\t\tcallback(node, node.querySelector('[dropdown]'));\r\n\t\t\t}\r\n\t\t};\r\n\t\tconst closeDropdown = () => {\r\n\t\t\tif (opened_ !== null) {\r\n\t\t\t\topened_ = null;\r\n\t\t\t\tremoveDocumentListeners();\r\n\t\t\t\tscope.$root.$broadcast('onDroppedOut', node);\r\n\t\t\t\tconst callback = attributes.droppedOut !== undefined ? scope.$eval(attributes.droppedOut) : () => {};\r\n\t\t\t\tcallback(node, node.querySelector('[dropdown]'));\r\n\t\t\t}\r\n\t\t};\r\n\t\tscope.$on('onDroppedOut', ($scope, $node) => {\r\n\t\t\tif ($node === node) {\r\n\t\t\t\tnode.classList.remove('opened');\r\n\t\t\t}\r\n\t\t});\r\n\t\tscope.$on('onDroppedIn', ($scope, $node) => {\r\n\t\t\tconst opened = $node === node || node.contains($node);\r\n\t\t\tif (opened) {\r\n\t\t\t\tnode.classList.add('opened');\r\n\t\t\t\tif (node.parentNode) {\r\n\t\t\t\t\tnode.parentNode.classList.add('has-dropdown--opened');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnode.classList.remove('opened');\r\n\t\t\t\tif (node.parentNode) {\r\n\t\t\t\t\tnode.parentNode.classList.remove('has-dropdown--opened');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tscope.$on('onCloseDropdown', closeDropdown);\r\n\t\tscope.$on('onNavigateOut', closeDropdown);\r\n\t\tscope.$on('onNavigationTransitionIn', closeDropdown);\r\n\t\tconst addListeners = () => {\r\n\t\t\ttrigger.addEventListener('click', onClick);\r\n\t\t};\r\n\t\tconst addDocumentListeners = () => {\r\n\t\t\tdocument.addEventListener('click', onDocumentClick);\r\n\t\t};\r\n\t\tconst removeListeners = () => {\r\n\t\t\ttrigger.removeEventListener('click', onClick);\r\n\t\t};\r\n\t\tconst removeDocumentListeners = () => {\r\n\t\t\tdocument.removeEventListener('click', onDocumentClick);\r\n\t\t};\r\n\t\taddListeners();\r\n\t\tscope.$on('$destroy', () => {\r\n\t\t\tremoveListeners();\r\n\t\t\tremoveDocumentListeners();\r\n\t\t});\r\n\t}\r\n\r\n\tstatic factory($timeout) {\r\n\t\treturn new HasDropdownDirective($timeout);\r\n\t}\r\n\r\n}\r\n\r\nHasDropdownDirective.dropDownUid = 0;\r\n\r\nHasDropdownDirective.factory.$inject = ['$timeout'];\r\n","/* jshint esversion: 6 */\r\n\r\n\r\nexport default class HilightDirective {\r\n\r\n\tconstructor() {\r\n\t\tthis.restrict = 'A';\r\n\t}\r\n\r\n\tlink(scope, element, attributes, controller) {\r\n\t\tconst node = element[0];\r\n\t\tlet hilight, query;\r\n\t\tconst update = () => {\r\n\t\t\tif (hilight) {\r\n\t\t\t\tif (query) {\r\n\t\t\t\t\tconst index = hilight.toLowerCase().indexOf(query);\r\n\t\t\t\t\tif (index !== -1) {\r\n\t\t\t\t\t\tnode.innerHTML = `${hilight.substring(0, index)}${hilight.substring(index, index + query.length)}${hilight.substring(index + query.length, hilight.length)}`;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnode.innerHTML = hilight;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnode.innerHTML = hilight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// console.log(hilight, query, node.innerHTML);\r\n\t\t};\r\n\t\tscope.$watch(attributes.hilight, (current, previous) => {\r\n\t\t\t// console.log('HilightDirective.hilight', current, previous);\r\n\t\t\thilight = current;\r\n\t\t\tupdate();\r\n\t\t});\r\n\t\tscope.$watch(attributes.query, (current, previous) => {\r\n\t\t\t// console.log('HilightDirective.query', current, previous);\r\n\t\t\tquery = current;\r\n\t\t\tupdate();\r\n\t\t});\r\n\t\treturn;\r\n\t}\r\n\r\n\tstatic factory() {\r\n\t\treturn new HilightDirective();\r\n\t}\r\n\r\n}\r\n\r\nHilightDirective.factory.$inject = [];\r\n","/* jshint esversion: 6 */\r\n\r\nexport default class ScrollDirective {\r\n\r\n\t// @Output() public scroll = new EventEmitter();\r\n\r\n\tconstructor(\r\n\t\tDomService\r\n\t) {\r\n\t\tthis.domService = DomService;\r\n\t\t// this.require = 'ngModel';\r\n\t\tthis.restrict = 'A';\r\n\t}\r\n\r\n\tlink(scope, element, attributes, controller) {\r\n\t\tif (attributes.scroll !== undefined) {\r\n\t\t\tconst node = element[0];\r\n\t\t\tconst subscription = this.domService.scrollIntersection$(node).subscribe(event => {\r\n\t\t\t\tscope.$eval(attributes.scroll, { $event: event });\r\n\t\t\t});\r\n\t\t\tscope.$on('$destroy', () => {\r\n\t\t\t\tsubscription.unsubscribe();\r\n\t\t\t});\r\n\t\t}\r\n\t\t/*\r\n\t\tconst callback = scope.$eval(attributes.scroll);\r\n\t\tif (typeof callback === 'function') {\r\n\t\t\tconst subscription = this.domService.scroll$().subscribe(event => callback(event));\r\n\t\t\tscope.$on('$destroy', () => {\r\n\t\t\t\tsubscription.unsubscribe();\r\n\t\t\t});\r\n\t\t}\r\n\t\t*/\r\n\t}\r\n\r\n\tstatic factory(DomService) {\r\n\t\treturn new ScrollDirective(DomService);\r\n\t}\r\n\r\n}\r\n\r\nScrollDirective.factory.$inject = ['DomService'];\r\n","/* jshint esversion: 6 */\r\n\r\n\r\nexport function ImageWithFeatures() {\r\n\treturn (images, features) => {\r\n\t\tif (!images) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (!images.length) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (images.length === 1 || !features || features[0] === null) {\r\n\t\t\treturn images[0].url;\r\n\t\t}\r\n\t\tconst image = images.find(image => {\r\n\t\t\tlet has = true;\r\n\t\t\tfeatures.forEach(f => has = has && image.features.indexOf(f) !== -1);\r\n\t\t\treturn has;\r\n\t\t});\r\n\t\tif (image) {\r\n\t\t\treturn image.url;\r\n\t\t} else {\r\n\t\t\treturn images[0].url;\r\n\t\t}\r\n\t};\r\n}\r\n","/* jshint esversion: 6 */\r\n\r\n\r\nexport function NotInFilter($filter) {\r\n\treturn (array, filters, element) => {\r\n\t\tif (filters) { \r\n\t\t\treturn $filter('filter')(array, (item) => {\r\n\t\t\t\tfor (var i = 0; i < filters.length; i++) {\r\n const filter = filters[i];\r\n if (typeof filter === 'object') {\r\n \t\t\t\t\tif (filter[element] === item[element]) return false;\r\n } else {\r\n if (filter === item[element]) return false;\r\n }\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n","/* jshint esversion: 6 */\r\n\r\n\r\nexport function TrustedFilter($sce) {\r\n\treturn (url) => {\r\n\t\treturn $sce.trustAsResourceUrl(url);\r\n\t};\r\n}\r\n","/* jshint esversion: 6 */\r\n\r\n\r\nexport default class ControlMessagesDirective {\r\n\r\n\tconstructor() {\r\n\t\tthis.restrict = 'E';\r\n\t\tthis.templateUrl = 'templates/forms/messages.html';\r\n\t\tthis.transclude = {\r\n\t\t\t'message': '?messageItems',\r\n\t\t};\r\n\t}\r\n\r\n\tlink(scope, element, attributes, model) {\r\n\r\n\t}\r\n\r\n\tstatic factory() {\r\n\t\treturn new ControlMessagesDirective();\r\n\t}\r\n\r\n}\r\n\r\nControlMessagesDirective.factory.$inject = [];\r\n","/* jshint esversion: 6 */\r\n\r\nconst formatLabel = function(string = '', prepend = '', expression = undefined) {\r\n\tconst splitted = string.split(',');\r\n\tif (splitted.length > 1) {\r\n\t\tlet formatted = splitted.shift();\r\n\t\tsplitted.forEach((value, index) => {\r\n\t\t\tif (expression) {\r\n\t\t\t\tformatted = formatted.split('{' + index + '}').join('\\' + ' + prepend + value + ' + \\'');\r\n\t\t\t} else {\r\n\t\t\t\tformatted = formatted.split('{' + index + '}').join(prepend + value);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (expression) {\r\n\t\t\treturn '\\'' + formatted + '\\'';\r\n\t\t} else {\r\n\t\t\treturn formatted;\r\n\t\t}\r\n\t} else {\r\n\t\treturn prepend + string;\r\n\t}\r\n};\r\n\r\nlet uniqueId = 0;\r\n\r\nlet errorElements = [],\r\n\tto;\r\n\r\nexport default class ControlDirective {\r\n\r\n\tconstructor(\r\n\t\t$parse,\r\n\t\tDomService\r\n\t) {\r\n\t\tthis.$parse = $parse;\r\n\t\tthis.domService = DomService;\r\n\t\tthis.restrict = 'A';\r\n\t\tthis.templateUrl = (element, attributes) => {\r\n\t\t\tvar template = 'templates/forms/text.html';\r\n\t\t\tswitch (attributes.control) {\r\n\t\t\t\tcase 'checkbox':\r\n\t\t\t\t\ttemplate = 'templates/forms/checkbox.html';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'password':\r\n\t\t\t\t\ttemplate = 'templates/forms/password.html';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'select':\r\n\t\t\t\t\ttemplate = 'templates/forms/select.html';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'custom-select':\r\n\t\t\t\t\ttemplate = 'templates/forms/custom-select.html';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'autocomplete':\r\n\t\t\t\t\ttemplate = 'templates/forms/autocomplete.html';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'autocomplete-single-option':\r\n\t\t\t\t\ttemplate = 'templates/forms/autocomplete-single-option.html';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'textarea':\r\n\t\t\t\t\ttemplate = 'templates/forms/textarea.html';\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\treturn template;\r\n\t\t};\r\n\t\tthis.scope = {\r\n\t\t\tngModel: '=',\r\n\t\t\trequired: '=',\r\n\t\t\tform: '@',\r\n\t\t\ttitle: '@',\r\n\t\t\tplaceholder: '@',\r\n\t\t\tsource: '=?',\r\n\t\t\tkey: '@?',\r\n\t\t\tlabel: '@?',\r\n\t\t};\r\n\t\tthis.require = 'ngModel';\r\n\t\tthis.transclude = true;\r\n\t\tthis.link = {\r\n\t\t\tpre: (scope, element, attributes, controller, transclude) => {\r\n\t\t\t\tthis.linkMethod(scope, element, attributes, controller, transclude);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t}\r\n\r\n\tlinkMethod(scope, element, attributes, controller, transclude) {\r\n\t\tconst label = scope.label = (scope.label ? scope.label : 'name');\r\n\t\tconst key = scope.key = (scope.key ? scope.key : 'id');\r\n\t\tif (attributes.control === 'select') {\r\n\t\t\tconst filter = (attributes.filter ? '| ' + attributes.filter : '');\r\n\t\t\tconst optionLabel = formatLabel(label, 'item.', true);\r\n\t\t\tscope.getOptions = () => {\r\n\t\t\t\treturn attributes.number ?\r\n\t\t\t\t\t'item.' + key + ' as ' + optionLabel + ' disable when item.disabled for item in source ' + filter :\r\n\t\t\t\t\toptionLabel + ' disable when item.disabled for item in source ' + filter + ' track by item.' + key;\r\n\t\t\t};\r\n\t\t}\r\n\t\tconst type = scope.type = attributes.control;\r\n\t\tconst form = scope.form = scope.form || 'form';\r\n\t\tconst title = scope.title = scope.title || 'untitled';\r\n\t\tconst placeholder = scope.placeholder = scope.placeholder || title;\r\n\t\tconst field = scope.field = title.replace(/[^0-9a-zA-Z]/g, \"\").split(' ').join('') + (++uniqueId);\r\n\t\tscope.format = attributes.format || null;\r\n\t\tscope.precision = attributes.precision || null;\r\n\t\tscope.validate = attributes.validate || attributes.control;\r\n\t\tscope.minLength = attributes.minLength || 0;\r\n\t\tscope.maxLength = attributes.maxLength || Number.POSITIVE_INFINITY;\r\n\t\tscope.min = attributes.min || null;\r\n\t\tscope.max = attributes.max || null;\r\n\t\tscope.options = this.$parse(attributes.options)(scope) || {};\r\n\t\tscope.focus = false;\r\n\t\tscope.visible = false;\r\n\t\tscope.updateView = (value) => {\r\n\t\t\tcontroller.$viewValue = value;\r\n\t\t\tcontroller.$render();\r\n\t\t}\r\n\t\tscope.updateModel = (value) => {\r\n\t\t\tcontroller.$setViewValue(value);\r\n\t\t\t// controller.$modelValue = value;\r\n\t\t\tscope.ngModel = value; // overwrites ngModel value\r\n\t\t}\r\n\t\tscope.optionName = (id) => {\r\n\t\t\tif (id) {\r\n\t\t\t\tconst option = scope.source.find(x => x.id === id);\r\n\t\t\t\tif (option) {\r\n\t\t\t\t\treturn option.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (Array.isArray(scope.ngModel)) {\r\n\t\t\t\treturn scope.ngModel.map(x => scope.source.find(s => s.id === x).name).join(', ');\r\n\t\t\t} else {\r\n\t\t\t\tconst option = scope.source.find(x => x.id === scope.ngModel);\r\n\t\t\t\tif (option) {\r\n\t\t\t\t\treturn option.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscope.onModelAdd = (value) => {\r\n\t\t\tconst items = controller.$viewValue || [];\r\n\t\t\tconst index = items.indexOf(value);\r\n\t\t\tif (index === -1) {\r\n\t\t\t\titems.push(value);\r\n\t\t\t\tcontroller.$setViewValue(items);\r\n\t\t\t\t// console.log(controller);\r\n\t\t\t\tscope.ngModel = items; // overwrites ngModel value\r\n\t\t\t}\r\n\t\t\tscope.query = null;\r\n\t\t};\r\n\t\tscope.onModelRemove = (value) => {\r\n\t\t\tconst items = controller.$viewValue || [];\r\n\t\t\tconst index = items.indexOf(value);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\titems.splice(index, 1);\r\n\t\t\t\tcontroller.$setViewValue(items);\r\n\t\t\t\tscope.ngModel = items; // overwrites ngModel value\r\n\t\t\t}\r\n\t\t\tscope.query = null;\r\n\t\t};\r\n\t\tscope.searchQuery = () => {\r\n\t\t\treturn function(item) {\r\n\t\t\t\t// console.log(item, scope.query);\r\n\t\t\t\tif (scope.query) {\r\n\t\t\t\t\treturn item.name.toLowerCase().indexOf(scope.query.toLowerCase()) !== -1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tscope.modelValue = () => {\r\n\t\t\tconst value = controller.$viewValue || [];\r\n\t\t\t// console.log(value);\r\n\t\t\treturn value;\r\n\t\t};\r\n\t\tscope.onChange = (model) => {\r\n\t\t\t// console.log('ControlDirective.onChange');\r\n\t\t\tthis.$parse(attributes.onChange)(scope.$parent);\r\n\t\t};\r\n\t\tscope.onFilter = (model) => {\r\n\t\t\tthis.$parse(attributes.onFilter)(scope.$parent);\r\n\t\t};\r\n\t\tscope.getType = () => {\r\n\t\t\tlet type = 'text';\r\n\t\t\tswitch (attributes.control) {\r\n\t\t\t\tcase 'password':\r\n\t\t\t\t\ttype = scope.visible ? 'text' : 'password';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\ttype = attributes.control;\r\n\t\t\t}\r\n\t\t\treturn type;\r\n\t\t};\r\n\t\tscope.onFocus = () => {\r\n\t\t\tscope.focus = true;\r\n\t\t\t// console.log('ControlDirective.onFocus', scope.focus);\r\n\t\t};\r\n\t\tscope.onBlur = () => {\r\n\t\t\tscope.focus = false;\r\n\t\t\t// console.log('ControlDirective.onBlur', scope.focus);\r\n\t\t\tthis.scrollToError();\r\n\t\t};\r\n\t\tscope.getClasses = () => {\r\n\t\t\tconst field = controller; // this.$parse(scope.form + '.' + scope.field)(scope.$parent);\r\n\t\t\tif (field) {\r\n\t\t\t\tconst focus = scope.focus;\r\n\t\t\t\tconst success = field.$valid;\r\n\t\t\t\tconst form = this.$parse(scope.form)(scope.$parent);\r\n\t\t\t\tconst error = field.$invalid && (form.$submitted || field.$touched);\r\n\t\t\t\tconst empty = !field.$viewValue;\r\n\t\t\t\tif (error) {\r\n\t\t\t\t\tthis.onError(element);\r\n\t\t\t\t\tif (scope.error !== error) {\r\n\t\t\t\t\t\tscope.error = error;\r\n\t\t\t\t\t\tthis.scrollToError();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscope.error = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn { focus, success, error, empty };\r\n\t\t\t}\r\n\t\t};\r\n\t\tscope.getMessages = () => {\r\n\t\t\tconst form = this.$parse(scope.form)(scope.$parent);\r\n\t\t\tconst field = this.$parse(scope.form + '.' + scope.field)(scope.$parent);\r\n\t\t\treturn (form.$submitted || field.$touched) && field.$error;\r\n\t\t};\r\n\t\tscope.toggleVisibility = () => {\r\n\t\t\tscope.visible = !scope.visible;\r\n\t\t};\r\n\t\tscope.$on('onInvalid', () => {\r\n\t\t\tthis.scrollToError();\r\n\t\t});\r\n\t}\r\n\r\n\tonError(element) {\r\n\t\tif (errorElements.indexOf(element) === -1) {\r\n\t\t\terrorElements.push(element);\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToError() {\r\n\t\tif (errorElements.length) {\r\n\t\t\tif (to) {\r\n\t\t\t\tclearTimeout(to);\r\n\t\t\t}\r\n\t\t\tto = setTimeout(() => {\r\n\t\t\t\tconst top = errorElements.reduce((previous, current, index, array) => {\r\n\t\t\t\t\tconst node = current[0];\r\n\t\t\t\t\treturn Math.min(previous, node.getBoundingClientRect().top);\r\n\t\t\t\t}, Number.POSITIVE_INFINITY);\r\n\t\t\t\twindow.scrollTo(0, (document.body.scrollTop || document.documentElement.scrollTop) + top - 10);\r\n\t\t\t\t/*\r\n\t\t\t\twindow.scroll({\r\n\t\t\t\t\ttop: (document.body.scrollTop || document.documentElement.scrollTop) + top - 10,\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t\t*/\r\n\t\t\t\terrorElements = [];\r\n\t\t\t}, 100);\r\n\t\t}\r\n\t}\r\n\r\n\tlink(scope, element, attributes, controller) {}\r\n\r\n\tstatic factory($parse, DomService) {\r\n\t\treturn new ControlDirective($parse, DomService);\r\n\t}\r\n\r\n}\r\n\r\nControlDirective.factory.$inject = ['$parse', 'DomService'];\r\n","const STATIC = window.location.port === '41654';\n\nexport default class ApiService {\n\n\tconstructor($http) {\n\t\tthis.http = $http;\n\t\tconst api = {\n\t\t\tstoreLocator: {\n\t\t\t\tall: (isStatic) => {\n\t\t\t\t\tif (STATIC || isStatic) {\n\t\t\t\t\t\treturn $http.get('Modules/StoreLocator/docs/data/store-locator.json');\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn $http.post('/ws/wsUsers.asmx/StoreList', {});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tagentLocator: {\n\t\t\t\tall: () => {\r\n\t\t\t\t\treturn $http.post('/ws/wsUsers.asmx/AgentList', {});\r\n\t\t\t\t}\r\n\t\t\t}\n\t\t};\n\t\tObject.assign(this, api);\n\t}\n\n\tstatic factory($http) {\n\t\treturn new ApiService($http);\n\t}\n\n}\n\nApiService.factory.$inject = ['$http'];\n","export const isArray = Array.isArray || ((x: any): x is T[] => x && typeof x.length === 'number');\n","export function isObject(x: any): x is Object {\n return x !== null && typeof x === 'object';\n}\n","export function isFunction(x: any): x is Function {\n return typeof x === 'function';\n}\n","export interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n new(errors: any[]): UnsubscriptionError;\n}\n\nfunction UnsubscriptionErrorImpl(this: any, errors: any[]) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n}\n\nUnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = UnsubscriptionErrorImpl as any;","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic } from './types';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY: Subscription = (function(empty: any) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n public closed: boolean = false;\n\n /** @internal */\n protected _parent: Subscription = null;\n /** @internal */\n protected _parents: Subscription[] = null;\n /** @internal */\n private _subscriptions: SubscriptionLike[] = null;\n\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n constructor(unsubscribe?: () => void) {\n if (unsubscribe) {\n ( this)._unsubscribe = unsubscribe;\n }\n }\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let hasErrors = false;\n let errors: any[];\n\n if (this.closed) {\n return;\n }\n\n let { _parent, _parents, _unsubscribe, _subscriptions } = ( this);\n\n this.closed = true;\n this._parent = null;\n this._parents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n\n let index = -1;\n let len = _parents ? _parents.length : 0;\n\n // if this._parent is null, then so is this._parents, and we\n // don't have to remove ourselves from any parent subscriptions.\n while (_parent) {\n _parent.remove(this);\n // if this._parents is null or index >= len,\n // then _parent is set to null, and the loop exits\n _parent = ++index < len && _parents[index] || null;\n }\n\n if (isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n } catch (e) {\n hasErrors = true;\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n\n if (isArray(_subscriptions)) {\n\n index = -1;\n len = _subscriptions.length;\n\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n } catch (e) {\n hasErrors = true;\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n } else {\n errors.push(e);\n }\n }\n }\n }\n }\n\n if (hasErrors) {\n throw new UnsubscriptionError(errors);\n }\n }\n\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription. Can also be used to add a child subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * When a parent subscription is unsubscribed, any child subscriptions that were added to it are also unsubscribed.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n add(teardown: TeardownLogic): Subscription {\n let subscription = (teardown);\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(<(() => void)>teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n // This also covers the case where `subscription` is `Subscription.EMPTY`, which is always in `closed` state.\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n if (!(teardown)) {\n return Subscription.EMPTY;\n }\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n\n if (subscription._addParent(this)) {\n // Optimize for the common case when adding the first subscription.\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n subscriptions.push(subscription);\n } else {\n this._subscriptions = [subscription];\n }\n }\n\n return subscription;\n }\n\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n remove(subscription: Subscription): void {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n\n /** @internal */\n private _addParent(parent: Subscription): boolean {\n let { _parent, _parents } = this;\n if (_parent === parent) {\n // If the new parent is the same as the current parent, then do nothing.\n return false;\n } else if (!_parent) {\n // If we don't have a parent, then set this._parent to the new parent.\n this._parent = parent;\n return true;\n } else if (!_parents) {\n // If there's already one parent, but not multiple, allocate an Array to\n // store the rest of the parent Subscriptions.\n this._parents = [parent];\n return true;\n } else if (_parents.indexOf(parent) === -1) {\n // Only add the new parent to the _parents list if it's not already there.\n _parents.push(parent);\n return true;\n }\n return false;\n }\n}\n\nfunction flattenUnsubscriptionErrors(errors: any[]) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n","import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsyncAction extends Action {\n\n public id: any;\n public state: T;\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, id?: any, delay: number = 0): any {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(scheduler: AsyncScheduler, id: any, delay: number = 0): any {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n clearInterval(id);\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, delay: number): any {\n let errored: boolean = false;\n let errorValue: any = undefined;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n\n if (index !== -1) {\n actions.splice(index, 1);\n }\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AnimationFrameAction extends AsyncAction {\n\n constructor(protected scheduler: AnimationFrameScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(\n () => scheduler.flush(null)));\n }\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested animation frame and\n // set the scheduled flag to undefined so the next AnimationFrameAction will\n // request its own.\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}\n */\nexport class Scheduler implements SchedulerLike {\n\n /**\n * Note: the extra arrow function wrapper is to make testing by overriding\n * Date.now easier.\n * @nocollapse\n */\n public static now: () => number = () => Date.now();\n\n constructor(private SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport class AsyncScheduler extends Scheduler {\n public static delegate?: Scheduler;\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @deprecated internal use only\n */\n public active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @deprecated internal use only\n */\n public scheduled: any = undefined;\n\n constructor(SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n } else {\n return now();\n }\n });\n }\n\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n } else {\n return super.schedule(work, delay, state);\n }\n }\n\n public flush(action: AsyncAction): void {\n\n const {actions} = this;\n\n if (this.active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this.active = true;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n\n this.active = false;\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```javascript\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n *\n * @static true\n * @name animationFrame\n * @owner Scheduler\n */\n\nexport const animationFrame = new AnimationFrameScheduler(AnimationFrameAction);\n","/* jshint esversion: 6 */\r\n\r\nexport default class Rect {\r\n\r\n\tconstructor(rect) {\r\n\t\tthis.top = 0;\r\n\t\tthis.right = 0;\r\n\t\tthis.bottom = 0;\r\n\t\tthis.left = 0;\r\n\t\tthis.width = 0;\r\n\t\tthis.height = 0;\r\n\t\tthis.set(rect);\r\n\t}\r\n\r\n\tstatic contains(rect, left, top) {\r\n\t\treturn rect.top <= top && top <= rect.bottom && rect.left <= left && left <= rect.right;\r\n\t}\r\n\r\n\tstatic intersectRect(r1, r2) {\r\n\t\treturn !(r2.left > r1.right ||\r\n\t\t\tr2.right < r1.left ||\r\n\t\t\tr2.top > r1.bottom ||\r\n\t\t\tr2.bottom < r1.top);\r\n\t}\r\n\r\n\tstatic fromNode(node) {\r\n\t\tif (!node) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst rect = node.rect_ || (node.rect_ = new Rect());\r\n\t\tconst rects = node.getClientRects();\r\n\t\tif (!rects.length) {\r\n\t\t\t// console.log(rects, node);\r\n\t\t\treturn rect;\r\n\t\t}\r\n\t\tconst boundingRect = node.getBoundingClientRect();\r\n\t\t// rect.top: boundingRect.top + defaultView.pageYOffset,\r\n\t\t// rect.left: boundingRect.left + defaultView.pageXOffset,\r\n\t\trect.top = boundingRect.top;\r\n\t\trect.left = boundingRect.left;\r\n\t\trect.width = boundingRect.width;\r\n\t\trect.height = boundingRect.height;\r\n\t\trect.setCenter();\r\n\t\treturn rect;\r\n\t}\r\n\r\n\tset(rect) {\r\n\t\tif (rect) {\r\n\t\t\tObject.assign(this, rect);\r\n\t\t\tthis.right = this.left + this.width;\r\n\t\t\tthis.bottom = this.top + this.height;\r\n\t\t}\r\n\t\tthis.setCenter();\r\n\t}\r\n\r\n\tsetCenter() {\r\n\t\tconst center = this.center || (this.center = {});\r\n\t\tcenter.top = this.top + this.height / 2;\r\n\t\tcenter.left = this.left + this.width / 2;\r\n\t\tcenter.x = center.left;\r\n\t\tcenter.y = center.top;\r\n\t}\r\n\r\n\tcontains(left, top) {\r\n\t\treturn Rect.contains(this, left, top);\r\n\t}\r\n\r\n\tintersect(rect) {\r\n\t\treturn Rect.intersectRect(this, rect);\r\n\t}\r\n\r\n\tintersection(rect) {\r\n\t\tconst intersection = this.intersection_ || (this.intersection_ = { center: {} });\r\n\t\tintersection.center.x = (this.center.x - rect.center.x) / (rect.width / 2);\r\n\t\tintersection.center.y = (this.center.y - rect.center.y) / (rect.height / 2);\r\n\t\tconst dx = this.left > rect.left ? 0 : Math.abs(rect.left - this.left);\r\n\t\tconst dy = this.top > rect.top ? 0 : Math.abs(rect.top - this.top);\r\n\t\tconst x = dx ? (1 - dx / this.width) : ((rect.left + rect.width) - this.left) / this.width;\r\n\t\tconst y = dy ? (1 - dy / this.height) : ((rect.top + rect.height) - this.top) / this.height;\r\n\t\t// console.log(this.top, this.height, rect.top, rect.height);\r\n\t\tintersection.x = x;\r\n\t\tintersection.y = y;\r\n\t\treturn intersection;\r\n\t}\r\n\r\n}\r\n","/* jshint esversion: 6 */\r\n\r\nimport { combineLatest, fromEvent, merge, range, Subject } from 'rxjs';\r\nimport { animationFrame } from 'rxjs/internal/scheduler/animationFrame';\r\nimport { auditTime, distinctUntilChanged, filter, first, map, shareReplay, startWith, tap } from 'rxjs/operators';\r\nimport Rect from '../shared/rect';\r\n\r\nexport function tween(from, to, friction) {\r\n\tif (from === to || Math.abs(to - from) < 0.02) {\r\n\t\treturn to;\r\n\t}\r\n\treturn from + (to - from) / friction;\r\n}\r\n\r\nexport default class DomService {\r\n\r\n\tconstructor() {\r\n\t\tconst hasPassiveEvents = () => {\r\n\t\t\tlet has = false;\r\n\t\t\ttry {\r\n\t\t\t\tconst options = Object.defineProperty({}, 'passive', {\r\n\t\t\t\t\tget: function() {\r\n\t\t\t\t\t\thas = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tconst noop = function() {};\r\n\t\t\t\twindow.addEventListener('testPassiveEventSupport', noop, options);\r\n\t\t\t\twindow.removeEventListener('testPassiveEventSupport', noop, options);\r\n\t\t\t} catch (e) {}\r\n\t\t\treturn has;\r\n\t\t};\r\n\t\tthis.hasPassiveEvents = hasPassiveEvents();\r\n\t}\r\n\r\n\tget ready() {\r\n\t\treturn this.ready_;\r\n\t}\r\n\r\n\tset ready(ready) {\r\n\t\tthis.ready_ = ready;\r\n\t}\r\n\r\n\tget scrollTop() {\r\n\t\treturn DomService.getScrollTop(DomService.DEFAULT_SCROLL_TARGET);\r\n\t}\r\n\r\n\tget scrollLeft() {\r\n\t\treturn DomService.getScrollLeft(DomService.DEFAULT_SCROLL_TARGET);\r\n\t}\r\n\r\n\tscrollTo(left, top) {\r\n\t\tDomService.DEFAULT_SCROLL_TARGET.scrollTo(0, top);\r\n\t}\r\n\r\n\tscroll(options) {\r\n\t\tDomService.DEFAULT_SCROLL_TARGET.scroll(options);\r\n\t}\r\n\r\n\thasWebglSupport() {\r\n\t\tif (this.isIE()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!this.hasWebgl()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tisIE() {\r\n\t\tconst ua = window.navigator.userAgent;\r\n\t\tconst msie = ua.indexOf('MSIE ');\r\n\t\tif (msie > 0) {\r\n\t\t\t// IE 10 or older => return version number\r\n\t\t\treturn parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n\t\t}\r\n\t\tconst trident = ua.indexOf('Trident/');\r\n\t\tif (trident > 0) {\r\n\t\t\t// IE 11 => return version number\r\n\t\t\tconst rv = ua.indexOf('rv:');\r\n\t\t\treturn parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n\t\t}\r\n\t\tconst edge = ua.indexOf('Edge/');\r\n\t\tif (edge > 0) {\r\n\t\t\t// Edge (IE 12+) => return version number\r\n\t\t\treturn parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n\t\t}\r\n\t\t// other browser\r\n\t\treturn false;\r\n\t}\r\n\r\n\thasWebgl() {\r\n\t\tlet gl, debugInfo, vendor, renderer, has = false;\r\n\t\ttry {\r\n\t\t\tconst canvas = document.createElement('canvas');\r\n\t\t\tif (!!window.WebGLRenderingContext) {\r\n\t\t\t\tgl = canvas.getContext('webgl', {\r\n\t\t\t\t\t\tfailIfMajorPerformanceCaveat: true\r\n\t\t\t\t\t}) ||\r\n\t\t\t\t\tcanvas.getContext('experimental-webgl', {\r\n\t\t\t\t\t\tfailIfMajorPerformanceCaveat: true\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log('no webgl');\r\n\t\t}\r\n\t\tif (gl) {\r\n\t\t\tdebugInfo = gl.getExtension('WEBGL_debug_renderer_info');\r\n\t\t\tvendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);\r\n\t\t\trenderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);\r\n\t\t\thas = true;\r\n\t\t}\r\n\t\tconsole.log(`WebGLCapabilities debugInfo: ${debugInfo} vendor: ${vendor} renderer: ${renderer} `);\r\n\t\treturn has;\r\n\t}\r\n\r\n\tgetOuterHeight(node) {\r\n\t\tlet height = node.clientHeight;\r\n\t\tconst computedStyle = window.getComputedStyle(node);\r\n\t\theight += parseInt(computedStyle.marginTop, 10);\r\n\t\theight += parseInt(computedStyle.marginBottom, 10);\r\n\t\theight += parseInt(computedStyle.borderTopWidth, 10);\r\n\t\theight += parseInt(computedStyle.borderBottomWidth, 10);\r\n\t\treturn height;\r\n\t}\r\n\r\n\tgetOuterWidth(node) {\r\n\t\tlet width = node.clientWidth;\r\n\t\tconst computedStyle = window.getComputedStyle(node);\r\n\t\twidth += parseInt(computedStyle.marginLeft, 10);\r\n\t\twidth += parseInt(computedStyle.marginRight, 10);\r\n\t\twidth += parseInt(computedStyle.borderLeftWidth, 10);\r\n\t\twidth += parseInt(computedStyle.borderRightWidth, 10);\r\n\t\treturn width;\r\n\t}\r\n\r\n\traf$() {\r\n\t\treturn DomService.raf$;\r\n\t}\r\n\r\n\twindowRect$() {\r\n\t\treturn DomService.windowRect$;\r\n\t}\r\n\r\n\trafAndRect$() {\r\n\t\treturn DomService.rafAndRect$;\r\n\t}\r\n\r\n\tscroll$() {\r\n\t\treturn DomService.scroll$;\r\n\t}\r\n\r\n\tsecondaryScroll$(target) {\r\n\t\treturn DomService.secondaryScroll$(target);\r\n\t}\r\n\r\n\tscrollAndRect$() {\r\n\t\treturn DomService.scrollAndRect$;\r\n\t}\r\n\r\n\tsmoothScroll$(selector, friction = 6) {\r\n\t\tconst target = document.querySelector('.smooth-scroll');\r\n\t\tconst node = document.querySelector(selector);\r\n\t\tlet down = false;\r\n\t\treturn this.raf$().pipe(\r\n\t\t\tmap(() => {\r\n\t\t\t\t// const outerHeight = this.getOuterHeight(node);\r\n\t\t\t\tconst innerHeight = node.lastElementChild.offsetTop + node.lastElementChild.offsetHeight;\r\n\t\t\t\tif (parseInt(target.style.height) !== innerHeight) {\r\n\t\t\t\t\ttarget.style.height = `${innerHeight}px`;\r\n\t\t\t\t}\r\n\t\t\t\tconst nodeTop = node.top || 0;\r\n\t\t\t\tconst top = down || DomService.IMMEDIATE_SCROLL ? -this.scrollTop : tween(nodeTop, -this.scrollTop, (DomService.IMMEDIATE_SCROLL ? 1 : friction));\r\n\t\t\t\tconst left = (node.parentNode.offsetWidth - node.offsetWidth) / 2;\r\n\t\t\t\tif (node.left !== left) {\r\n\t\t\t\t\tnode.left = left;\r\n\t\t\t\t\tnode.style.left = `${left}px`;\r\n\t\t\t\t}\r\n\t\t\t\tif (node.top !== top) {\r\n\t\t\t\t\tnode.top = top;\r\n\t\t\t\t\t// node.style.transform = `translateX(-50%) translateY(${top}px)`;\r\n\t\t\t\t\t// node.style.top = `${top}px`;\r\n\t\t\t\t\tnode.scrollTop = -top;\r\n\t\t\t\t\t// console.log(DomService.IMMEDIATE_SCROLL);\r\n\t\t\t\t\tDomService.IMMEDIATE_SCROLL = false;\r\n\t\t\t\t\treturn top;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tfilter(y => y !== null),\r\n\t\t\tdistinctUntilChanged((a, b) => Math.round(a * 100) === Math.round(b * 100)),\r\n\t\t\ttap(y => DomService.smoothScroll$_.next(y)),\r\n\t\t\tshareReplay()\r\n\t\t);\r\n\t}\r\n\r\n\tgetStyleSheet() {\r\n\t\tfor (let i = 0; i < document.styleSheets.length; i++) {\r\n\t\t\tconst sheet = document.styleSheets[i];\r\n\t\t\treturn sheet;\r\n\t\t}\r\n\t}\r\n\r\n\tvirtualScroll$(selector, friction = 10) {\r\n\t\tconst style = this.getStyleSheet();\r\n\t\tconst ruleIndex = style.insertRule(`.virtual-scroll:after { content: ''; display:block; width: 100%; height: 1px; }`, style.cssRules.length);\r\n\t\tconst rule = style.cssRules[ruleIndex];\r\n\t\t// console.log('rule', style.cssRules.length, rule.cssText);\r\n\t\tlet outerHeight_ = 0;\r\n\t\tconst node = document.querySelector(selector);\r\n\t\tnode.addEventListener('wheel', (event) => {\r\n\t\t\t// console.log('wheel', event);\r\n\t\t\tthis.scrollTo(0, this.scrollTop + event.deltaY);\r\n\t\t});\r\n\t\tlet down = false;\r\n\t\treturn this.raf$().pipe(\r\n\t\t\tmap(() => {\r\n\t\t\t\tconst outerHeight = this.getOuterHeight(node);\r\n\t\t\t\tif (outerHeight_ !== outerHeight) {\r\n\t\t\t\t\touterHeight_ = outerHeight;\r\n\t\t\t\t\trule.style.height = `${outerHeight_}px`;\r\n\t\t\t\t\t// console.log(rule.style.height);\r\n\t\t\t\t}\r\n\t\t\t\tconst nodeTop = node.top || 0;\r\n\t\t\t\tconst top = down ? -this.scrollTop : tween(nodeTop, -this.scrollTop, (DomService.IMMEDIATE_SCROLL ? 1 : friction));\r\n\t\t\t\tif (node.top !== top) {\r\n\t\t\t\t\tnode.top = top;\r\n\t\t\t\t\tnode.style.transform = `translateX(-50%) translateY(${top}px)`;\r\n\t\t\t\t\t// node.style = `position: fixed; top: 0; transform: translateX(-50%) translateY(${top}px)`;\r\n\t\t\t\t\tDomService.IMMEDIATE_SCROLL = false;\r\n\t\t\t\t\treturn top;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tfilter(y => y !== null),\r\n\t\t\tdistinctUntilChanged((a, b) => Math.round(a * 100) === Math.round(b * 100)),\r\n\t\t\ttap(y => DomService.virtualScroll$_.next(y)),\r\n\t\t\tshareReplay()\r\n\t\t);\r\n\t}\r\n\r\n\trafIntersection$(node) {\r\n\t\treturn this.rafAndRect$().pipe(\r\n\t\t\tmap(datas => {\r\n\t\t\t\t// const scrollTop = datas[0];\r\n\t\t\t\tconst windowRect = datas[1];\r\n\t\t\t\tconst rect = Rect.fromNode(node);\r\n\t\t\t\tif (rect.height) {\r\n\t\t\t\t\tconst intersection = rect.intersection(windowRect);\r\n\t\t\t\t\tconst response = DomService.rafIntersection_;\r\n\t\t\t\t\tresponse.scroll = datas[0];\r\n\t\t\t\t\tresponse.windowRect = datas[1];\r\n\t\t\t\t\tresponse.rect = rect;\r\n\t\t\t\t\tresponse.intersection = intersection;\r\n\t\t\t\t\treturn response;\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tfilter(response => response !== undefined)\r\n\t\t);\r\n\t}\r\n\r\n\tscrollIntersection$(node) {\r\n\t\tconst o = this.scrollAndRect$().pipe(\r\n\t\t\tmap(datas => {\r\n\t\t\t\t// const scrollTop = datas[0];\r\n\t\t\t\tconst windowRect = datas[1];\r\n\t\t\t\tconst rect = Rect.fromNode(node);\r\n\t\t\t\tif (rect.height) {\r\n\t\t\t\t\tconst intersection = rect.intersection(windowRect);\r\n\t\t\t\t\tconst response = DomService.scrollIntersection_;\r\n\t\t\t\t\tresponse.scroll = datas[0];\r\n\t\t\t\t\tresponse.windowRect = datas[1];\r\n\t\t\t\t\tresponse.rect = rect;\r\n\t\t\t\t\tresponse.intersection = intersection;\r\n\t\t\t\t\treturn response;\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tfilter(response => response !== undefined)\r\n\t\t);\r\n\t\tDomService.secondaryScroll$_.next({ target: window });\r\n\t\treturn o;\r\n\t}\r\n\r\n\tappearOnLoad$(node, value = 0.0) { // -0.5\r\n\t\tconst isCover = node.hasAttribute('cover');\r\n\t\treturn this.rafIntersection$(node).pipe(\r\n\t\t\tfilter(x => (this.ready || isCover) && x.intersection.y > value && x.intersection.x > 0),\r\n\t\t\tfirst()\r\n\t\t);\r\n\t}\r\n\r\n\tappear$(node, value = 0.0) { // -0.5\r\n\t\treturn this.rafIntersection$(node).pipe(\r\n\t\t\tfilter(x => x.intersection.y > value),\r\n\t\t\tfirst()\r\n\t\t);\r\n\t}\r\n\r\n\tvisibility$(node, value = 0.5) {\r\n\t\treturn this.scrollIntersection$(node).pipe(\r\n\t\t\tmap(x => x.intersection.y > value),\r\n\t\t\tdistinctUntilChanged()\r\n\t\t);\r\n\t}\r\n\r\n\tfirstVisibility$(node, value = 0.5) {\r\n\t\treturn this.visibility$(node, value).pipe(\r\n\t\t\tfilter(visible => visible),\r\n\t\t\tfirst()\r\n\t\t);\r\n\t}\r\n\r\n\taddCustomRules() {\r\n\t\tconst sheet = this.addCustomSheet();\r\n\t\tconst body = document.querySelector('body');\r\n\t\tconst node = document.createElement('div');\r\n\t\tnode.style.width = '100px';\r\n\t\tnode.style.height = '100px';\r\n\t\tnode.style.overflow = 'auto';\r\n\t\tnode.style.visibility = 'hidden';\r\n\t\tnode.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\r\n\t\tconst inner = document.createElement('div');\r\n\t\tinner.style.width = 'auto';\r\n\t\tinner.style.height = '200px';\r\n\t\tnode.appendChild(inner);\r\n\t\tbody.appendChild(node);\r\n\t\tconst scrollBarWidth = (node.offsetWidth - inner.offsetWidth);\r\n\t\tbody.removeChild(node);\r\n\t\t/*\r\n\t\tconst sheet = this.addCustomSheet();\r\n\t\tconst body = document.querySelector('body');\r\n\t\tconst scrollBarWidth = window.innerWidth - body.clientWidth;\r\n\t\tlet rule = `body.droppin-in { padding-right: ${scrollBarWidth}px; }`;\r\n\t\tsheet.insertRule(rule, 0);\r\n\t\trule = `body.droppin-in header { width: calc(100% - ${scrollBarWidth}px); }`;\r\n\t\tsheet.insertRule(rule, 1);\r\n\t\trule = `body.droppin-in menu--product { width: calc(100% - ${scrollBarWidth}px); }`;\r\n\t\tsheet.insertRule(rule, 2);\r\n\t\t*/\r\n\t}\r\n\r\n\taddCustomSheet() {\r\n\t\tconst style = document.createElement('style');\r\n\t\tstyle.appendChild(document.createTextNode(''));\r\n\t\tdocument.head.appendChild(style);\r\n\t\treturn style.sheet;\r\n\t}\r\n\r\n\tisDescendantOf(node, target) {\r\n\t\treturn DomService.isDescendantOf(node, target);\r\n\t}\r\n\r\n\tget agent() {\r\n\t\treturn DomService.agent || DomService.detect();\r\n\t}\r\n\r\n\tstatic factory() {\r\n\t\treturn new DomService();\r\n\t}\r\n\r\n\tstatic getScrollTop(node) {\r\n\t\tif (!node) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (node === document || node === window) {\r\n\t\t\treturn this.getScrollTop(document.scrollingElement || document.documentElement || document.body);\r\n\t\t}\r\n\t\treturn node.pageYOffset || node.scrollY || node.scrollTop || 0;\r\n\t}\r\n\r\n\tstatic getScrollLeft(node) {\r\n\t\tif (!node) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (node === document || node === window) {\r\n\t\t\treturn this.getScrollLeft(document.scrollingElement || document.documentElement || document.body);\r\n\t\t}\r\n\t\treturn node.pageXOffset || node.scrollX || node.scrollLeft || 0;\r\n\t}\r\n\r\n\tstatic detect() {\r\n\t\tconst userAgent = navigator.userAgent.toLowerCase();\r\n\t\tconst msie = userAgent.indexOf('msie') > -1;\r\n\t\tconst trident = userAgent.indexOf('trident') > -1;\r\n\t\tconst explorer = msie || trident;\r\n\t\tconst firefox = userAgent.indexOf('firefox') > -1;\r\n\t\tconst opera = userAgent.toLowerCase().indexOf('op') > -1;\r\n\t\tlet chrome = userAgent.indexOf('chrome') > -1;\r\n\t\tlet safari = userAgent.indexOf('safari') > -1;\r\n\t\tif ((chrome) && (safari)) {\r\n\t\t\tsafari = false;\r\n\t\t}\r\n\t\tif ((chrome) && (opera)) {\r\n\t\t\tchrome = false;\r\n\t\t}\r\n\t\tconst android = userAgent.match(/android/i);\r\n\t\tconst blackberry = userAgent.match(/blackberry/i);\r\n\t\tconst ios = userAgent.match(/iphone|ipad|ipod/i);\r\n\t\tconst operamini = userAgent.match(/opera mini/i);\r\n\t\tconst iemobile = userAgent.match(/iemobile/i) || navigator.userAgent.match(/wpdesktop/i);\r\n\t\tconst mobile = android || blackberry || ios || operamini || iemobile;\r\n\t\tconst overscroll = navigator.platform === 'MacIntel' && typeof navigator.getBattery === 'function';\r\n\t\tconst agent = this.agent = {\r\n\t\t\tchrome,\r\n\t\t\tmsie,\r\n\t\t\ttrident,\r\n\t\t\texplorer,\r\n\t\t\tfirefox,\r\n\t\t\tsafari,\r\n\t\t\topera,\r\n\t\t\tandroid,\r\n\t\t\tblackberry,\r\n\t\t\tios,\r\n\t\t\toperamini,\r\n\t\t\tiemobile,\r\n\t\t\tmobile,\r\n\t\t\toverscroll,\r\n\t\t};\r\n\t\t// Object.assign(DomService, agent);\r\n\t\tconst html = document.querySelector('html');\r\n\t\tObject.keys(agent).forEach(x => {\r\n\t\t\tif (agent[x]) {\r\n\t\t\t\thtml.classList.add(x);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn this.agent;\r\n\t}\r\n\r\n\tstatic isDescendantOf(node, target) {\r\n\t\tif (node === document) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (node === target) {\r\n\t\t\treturn true;\r\n\t\t} else if (node.parentNode) {\r\n\t\t\treturn this.isDescendantOf(node.parentNode, target);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic secondaryScroll$(target) {\r\n\t\treturn fromEvent(target, 'scroll').pipe(\r\n\t\t\ttap(event => DomService.secondaryScroll$_.next(event))\r\n\t\t);\r\n\t}\r\n\r\n}\r\n\r\nDomService.IMMEDIATE_SCROLL = true;\r\nDomService.DEFAULT_SCROLL_TARGET = window;\r\nDomService.factory.$inject = [];\r\nDomService.rafIntersection_ = {};\r\nDomService.scrollIntersection_ = {};\r\nDomService.raf$ = range(0, Number.POSITIVE_INFINITY, animationFrame);\r\nDomService.windowRect$ = function() {\r\n\tconst windowRect = new Rect({\r\n\t\twidth: window.innerWidth,\r\n\t\theight: window.innerHeight\r\n\t});\r\n\treturn fromEvent(window, 'resize').pipe(\r\n\t\tmap(originalEvent => {\r\n\t\t\twindowRect.width = window.innerWidth;\r\n\t\t\twindowRect.height = window.innerHeight;\r\n\t\t\treturn windowRect;\r\n\t\t}),\r\n\t\tstartWith(windowRect),\r\n\t\tshareReplay()\r\n\t);\r\n}();\r\nDomService.rafAndRect$ = combineLatest(DomService.raf$, DomService.windowRect$).pipe(\r\n\tshareReplay()\r\n);\r\nDomService.mainScroll$ = function() {\r\n\tconst target = DomService.DEFAULT_SCROLL_TARGET;\r\n\treturn fromEvent(target, 'scroll').pipe(\r\n\t\tshareReplay()\r\n\t);\r\n}();\r\nDomService.smoothScroll$_ = new Subject();\r\nDomService.virtualScroll$_ = new Subject();\r\nDomService.secondaryScroll$_ = new Subject();\r\nDomService.scroll$ = function() {\r\n\tconst target = DomService.DEFAULT_SCROLL_TARGET;\r\n\tlet previousTop = DomService.getScrollTop(target);\r\n\tconst event = {\r\n\t\tscrollTop: previousTop,\r\n\t\tscrollLeft: DomService.getScrollLeft(target),\r\n\t\tdirection: 0,\r\n\t\toriginalEvent: null,\r\n\t};\r\n\treturn merge(DomService.smoothScroll$_, DomService.secondaryScroll$_).pipe(\r\n\t\tauditTime(1000 / 60),\r\n\t\tmap((originalEvent) => {\r\n\t\t\tevent.scrollTop = DomService.getScrollTop(originalEvent.target);\r\n\t\t\tevent.scrollLeft = DomService.getScrollLeft(originalEvent.target);\r\n\t\t\tconst diff = event.scrollTop - previousTop;\r\n\t\t\tevent.direction = diff ? diff / Math.abs(diff) : 0;\r\n\t\t\tpreviousTop = event.scrollTop;\r\n\t\t\tevent.originalEvent = originalEvent;\r\n\t\t\treturn event;\r\n\t\t}),\r\n\t\tstartWith(event),\r\n\t\tshareReplay()\r\n\t);\r\n}();\r\nDomService.scrollAndRect$ = combineLatest(DomService.scroll$, DomService.windowRect$).pipe(\r\n\tshareReplay()\r\n);\r\n","/* jshint esversion: 6 */\r\n\r\n\r\nexport default class LocationService {\r\n\r\n\tconstructor(\r\n\t\t$location\r\n\t) {\r\n\t\tthis.$location = $location;\r\n\t}\r\n\r\n\tget(key) {\r\n\t\treturn this.$location.search()[key];\r\n\t}\r\n\r\n\tset(keyOrValue, value) {\r\n\t\tif (typeof keyOrValue === 'string') {\r\n\t\t\tthis.$location.search(keyOrValue, value).replace();\r\n\t\t} else {\r\n\t\t\tthis.$location.search(keyOrValue).replace();\r\n\t\t}\r\n\t}\r\n\r\n\tdeserialize(key) {\r\n\t\tlet value = null;\r\n\t\tconst serialized = this.get('q');\r\n\t\t// console.log(serialized);\r\n\t\tif (serialized) {\r\n\t\t\tconst json = window.atob(serialized);\r\n\t\t\tvalue = JSON.parse(json);\r\n\t\t}\r\n\t\t// console.log(value);\r\n\t\tif (key && value) {\r\n\t\t\tvalue = value[key];\r\n\t\t}\r\n\t\treturn value || null;\r\n\t}\r\n\r\n\tserialize(keyOrValue, value) {\r\n\t\tlet serialized = null;\r\n\t\tlet q = this.deserialize() || {};\r\n\t\tif (typeof keyOrValue === 'string') {\r\n\t\t\tq[keyOrValue] = value;\r\n\t\t} else {\r\n\t\t\tq = keyOrValue;\r\n\t\t}\r\n\t\tconst json = JSON.stringify(q);\r\n\t\tserialized = window.btoa(json);\r\n\t\tthis.set('q', serialized);\r\n\t}\r\n\r\n\tgetSerialization(keyOrValue, value) {\r\n\t\tlet serialized = null;\r\n\t\tlet q = {};\r\n\t\tif (typeof keyOrValue === 'string') {\r\n\t\t\tq[keyOrValue] = value;\r\n\t\t} else {\r\n\t\t\tq = keyOrValue;\r\n\t\t}\r\n\t\tconst json = JSON.stringify(q);\r\n\t\tserialized = window.btoa(json);\r\n\t\treturn serialized;\r\n\t}\r\n\r\n\tstatic factory($location) {\r\n\t\treturn new LocationService($location);\r\n\t}\r\n\r\n}\r\n\r\nLocationService.factory.$inject = ['$location'];\r\n","/* jshint esversion: 6 */\r\n\r\nconst DELAY = 2000;\r\n\r\nexport class State {\r\n\r\n\tconstructor(\r\n\t\t$timeout,\r\n\t\t$rootScope\r\n\t) {\r\n\t\tthis.$timeout = $timeout;\r\n\t\tthis.$rootScope = $rootScope;\r\n\t\tthis.idle();\r\n\t}\r\n\r\n\tidle() {\r\n\t\tthis.isBusy = false;\r\n\t\tthis.isError = false;\r\n\t\tthis.isErroring = false;\r\n\t\tthis.isSuccess = false;\r\n\t\tthis.isSuccessing = false;\r\n\t\tthis.button = null;\r\n\t\tthis.errors = [];\r\n\t}\r\n\r\n\tbusy() {\r\n\t\tif (!this.isBusy) {\r\n\t\t\tthis.isBusy = true;\r\n\t\t\tthis.isError = false;\r\n\t\t\tthis.isErroring = false;\r\n\t\t\tthis.isSuccess = false;\r\n\t\t\tthis.isSuccessing = false;\r\n\t\t\tthis.errors = [];\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tclasses(addons) {\r\n\t\tconst classes = {\r\n\t\t\tready: this.isReady,\r\n\t\t\tbusy: this.isBusy,\r\n\t\t\tsuccessing: this.isSuccessing,\r\n\t\t\tsuccess: this.isSuccess,\r\n\t\t\terrorring: this.isErroring,\r\n\t\t\terror: this.isError,\r\n\t\t};\r\n\t\tif (addons) {\r\n\t\t\tObject.keys(addons).forEach((key) => {\r\n\t\t\t\tclasses[addons[key]] = classes[key];\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn classes;\r\n\t}\r\n\r\n\tenabled() {\r\n\t\treturn !this.isBusy && !this.isErroring && !this.isSuccessing;\r\n\t}\r\n\r\n\terror(error) {\r\n\t\tconsole.log('State.error', error);\r\n\t\tthis.isBusy = false;\r\n\t\tthis.isError = true;\r\n\t\tthis.isErroring = true;\r\n\t\tthis.isSuccess = false;\r\n\t\tthis.isSuccessing = false;\r\n\t\tthis.errors.push(error);\r\n\t\t$timeout(() => {\r\n\t\t\tthis.isErroring = false;\r\n\t\t}, DELAY);\r\n\t}\r\n\r\n\terrorMessage() {\r\n\t\treturn this.isError ? this.errors[this.errors.length - 1] : null;\r\n\t}\r\n\r\n\tlabels(addons) {\r\n\t\tconst defaults = {\r\n\t\t\tready: 'submit',\r\n\t\t\tbusy: 'sending',\r\n\t\t\terror: 'error',\r\n\t\t\tsuccess: 'success',\r\n\t\t};\r\n\t\tif (addons) {\r\n\t\t\tangular.extend(defaults, addons);\r\n\t\t}\r\n\t\tlet label = defaults.ready;\r\n\t\tif (this.isBusy) {\r\n\t\t\tlabel = defaults.busy;\r\n\t\t} else if (this.isSuccess) {\r\n\t\t\tlabel = defaults.success;\r\n\t\t} else if (this.isError) {\r\n\t\t\tlabel = defaults.error;\r\n\t\t}\r\n\t\treturn label;\r\n\t}\r\n\r\n\tready() {\r\n\t\tthis.idle();\r\n\t\tthis.isReady = true;\r\n\t\tthis.$rootScope.$broadcast('$thisReady', this);\r\n\t}\r\n\r\n\tsubmitClass() {\r\n\t\treturn {\r\n\t\t\tbusy: this.isBusy,\r\n\t\t\tready: this.isReady,\r\n\t\t\tsuccessing: this.isSuccessing,\r\n\t\t\tsuccess: this.isSuccess,\r\n\t\t\terrorring: this.isErroring,\r\n\t\t\terror: this.isError,\r\n\t\t};\r\n\t}\r\n\r\n\tsuccess() {\r\n\t\tthis.isBusy = false;\r\n\t\tthis.isError = false;\r\n\t\tthis.isErroring = false;\r\n\t\tthis.isSuccess = true;\r\n\t\tthis.isSuccessing = true;\r\n\t\tthis.errors = [];\r\n\t\tthis.$timeout(() => {\r\n\t\t\tthis.isSuccessing = false;\r\n\t\t}, DELAY);\r\n\t}\r\n\r\n}\r\n\r\nexport default class StateService {\r\n\r\n\tconstructor(\r\n\t\t$timeout,\r\n\t\t$rootScope\r\n\t) {\r\n\t\tthis.$timeout = $timeout;\r\n\t\tthis.$rootScope = $rootScope;\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn new State(this.$timeout, this.$rootScope);\r\n\t}\r\n\r\n\tstatic factory($timeout, $rootScope) {\r\n\t\treturn new StateService($timeout, $rootScope);\r\n\t}\r\n\r\n}\r\n\r\nStateService.factory.$inject = ['$timeout', '$rootScope'];\r\n","/* jshint esversion: 6 */\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\n\r\nconst IS_DEV = (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1' || window.location.hostname === '0.0.0.0');\r\nconst BASEPATH = (window.location.hostname === '0.0.0.0' ? './img/store-locator/' : '/Modules/StoreLocator/docs/img/store-locator/');\r\n\r\nconst GTM_CAT = 'store-locator';\r\nconst ZOOM_LEVEL = 13;\r\nconst SHOW_INFO_WINDOW = false;\r\nconst MAX_DISTANCE = 100;\r\nlet GOOGLE_MAPS = null;\r\n\r\n// mercati \"sbloccati\" per gli agenti: Italia (IT), Francia (FR), Germania (DE), Belgio (BE), Austria (AT)\r\nconst agentsEnabledCountry = ['IT', 'FR', 'DE', 'BE', 'AT'];\r\n\r\nconst continentAmerica = { //see https://gist.github.com/nobuti/3816985 and https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\r\n\t\"AI\": \"North America\", // \"Anguilla\")\r\n\t\"AG\": \"North America\", // \"Antigua and Barbuda\")\r\n\t\"AR\": \"South America\", // \"Argentine Republic\")\r\n\t\"AW\": \"North America\", // \"Aruba\")\r\n\t\"BS\": \"North America\", // \"Commonwealth of the Bahamas\")\r\n\t\"BB\": \"North America\", // \"Barbados\")\r\n\t\"BZ\": \"North America\", // \"Belize\")\r\n\t\"BM\": \"North America\", // \"Bermuda\")\r\n\t\"BO\": \"South America\", // \"Plurinational State of Bolivia\")\r\n\t\"BQ\": \"North America\", // '535'\r\n\t\"BR\": \"South America\", // \"Federative Republic of Brazil\")\r\n\t\"VG\": \"North America\", // \"British Virgin Islands\")\r\n\t\"CA\": \"North America\", // \"Canada\")\r\n\t\"KY\": \"North America\", // \"Cayman Islands\")\r\n\t\"CL\": \"South America\", // \"Republic of Chile\")\r\n\t\"CO\": \"South America\", // \"Republic of Colombia\")\r\n\t\"CR\": \"North America\", // \"Republic of Costa Rica\")\r\n\t\"CU\": \"North America\", // \"Republic of Cuba\")\r\n\t\"CW\": \"North America\", // \"Curaçao\")\r\n\t\"DM\": \"North America\", // \"Commonwealth of Dominica\")\r\n\t\"DO\": \"North America\", // \"Dominican Republic\")\r\n\t\"EC\": \"South America\", // \"Republic of Ecuador\")\r\n\t\"SV\": \"North America\", // \"Republic of El Salvador\")\r\n\t\"FK\": \"South America\", // \"Falkland Islands (Malvinas)\")\r\n\t\"GF\": \"South America\", // \"French Guiana\")\r\n\t\"GL\": \"North America\", // \"Greenland\")\r\n\t\"GD\": \"North America\", // \"Grenada\")\r\n\t\"GP\": \"North America\", // \"Guadeloupe\")\r\n\t\"GT\": \"North America\", // \"Republic of Guatemala\")\r\n\t\"GY\": \"South America\", // \"Co-operative Republic of Guyana\")\r\n\t\"HT\": \"North America\", // \"Republic of Haiti\")\r\n\t\"HN\": \"North America\", // \"Republic of Honduras\")\r\n\t\"JM\": \"North America\", // \"Jamaica\")\r\n\t\"MQ\": \"North America\", // \"Martinique\")\r\n\t\"MX\": \"North America\", // \"United Mexican States\")\r\n\t\"MS\": \"North America\", // \"Montserrat\")\r\n\t\"NI\": \"North America\", // \"Republic of Nicaragua\")\r\n\t\"PA\": \"North America\", // \"Republic of Panama\")\r\n\t\"PY\": \"South America\", // \"Republic of Paraguay\")\r\n\t\"PE\": \"South America\", // \"Republic of Peru\")\r\n\t\"PR\": \"North America\", // \"Commonwealth of Puerto Rico\")\r\n\t\"BL\": \"North America\", // \"Saint Barthélemy\")\r\n\t\"KN\": \"North America\", // \"Federation of Saint Kitts and Nevis\")\r\n\t\"LC\": \"North America\", // \"Saint Lucia\")\r\n\t\"MF\": \"North America\", // \"Saint Martin (French part)\")\r\n\t\"PM\": \"North America\", // \"Saint Pierre and Miquelon\")\r\n\t\"VC\": \"North America\", // \"Saint Vincent and the Grenadines\")\r\n\t\"SX\": \"North America\", // \"Sint Maarten (Dutch part)\")\r\n\t\"SR\": \"South America\", // \"Republic of Suriname\")\r\n\t\"TT\": \"North America\", // \"Republic of Trinidad and Tobago\")\r\n\t\"TC\": \"North America\", // \"Turks and Caicos Islands\")\r\n\t\"US\": \"North America\", // \"United States of America\")\r\n\t\"VI\": \"North America\", // \"United States Virgin Islands\")\r\n\t\"UY\": \"South America\", // \"Eastern Republic of Uruguay\")\r\n\t\"VE\": \"South America\" // \"Bolivarian Republic of Venezuela\")\r\n}\r\n\r\nconst ExceptionEdilferrarese = [\r\n\t{ k: \"VR\", v: \"Terrazzo\" },\r\n\t{ k: \"VR\", v: \"Minerbe\" },\r\n\t{ k: \"VR\", v: \"Bevilacqua\" },\r\n\t{ k: \"VR\", v: \"Pressana\" },\r\n\t{ k: \"RO\", v: \"Giacciano con Baruchella\" },\r\n\t{ k: \"RO\", v: \"Badia Polesine\" },\r\n\t{ k: \"RO\", v: \"Lendinara\" },\r\n\t{ k: \"VR\", v: \"Roveredo di Guà\" },\r\n\t{ k: \"VI\", v: \"Poiana maggiore\" },\r\n\t{ k: \"VI\", v: \"Sossano\" },\r\n\t{ k: \"VI\", v: \"Campiglia dei Berici\" },\r\n\t{ k: \"VI\", v: \"Noventa Vicentina\" },\r\n\t{ k: \"VI\", v: \"Agugliaro\" },\r\n\t{ k: \"VI\", v: \"Villaga\" },\r\n\t{ k: \"VI\", v: \"Albettone\" },\r\n\t{ k: \"VI\", v: \"Barbarano Vicentino\" },\r\n\t{ k: \"VI\", v: \"Mossano\" },\r\n\t{ k: \"VI\", v: \"Nanto\" },\r\n\t{ k: \"VI\", v: \"Castegnero\" },\r\n\t{ k: \"RO\", v: \"Villanova del Ghebbo\" },\r\n\t{ k: \"RO\", v: \"Lusia\" },\r\n\t{ k: \"RO\", v: \"Rovigo\" },\r\n\t{ k: \"RO\", v: \"Ceregnano\" },\r\n\t{ k: \"RO\", v: \"Villadose\" },\r\n\t{ k: \"RO\", v: \"San Martino di Venezze\" },\r\n\t{ k: \"VI\", v: \"Montegaldella\" },\r\n\t{ k: \"VI\", v: \"Longare\" },\r\n\t{ k: \"VI\", v: \"Torri di Quartesolo\" },\r\n\t{ k: \"VI\", v: \"Montegalda\" },\r\n\t{ k: \"VI\", v: \"Grumolo delle Abbadesse\" },\r\n\t{ k: \"VI\", v: \"Grisignano di Zocco\" },\r\n\t{ k: \"VI\", v: \"Camisano Vicentino\" },\r\n\t{ k: \"VI\", v: \"Quinto Vicentino\" },\r\n\t{ k: \"VI\", v: \"Bolzano Vicentino\" },\r\n\t{ k: \"VI\", v: \"Sandrigo\" },\r\n\t{ k: \"VI\", v: \"Bressanvido\" },\r\n\t{ k: \"VI\", v: \"Pozzoleone\" },\r\n\t{ k: \"VI\", v: \"Tezze sul Brenta\" },\r\n\t{ k: \"TV\", v: \"Castello di Godego\" },\r\n\t{ k: \"TV\", v: \"Castelfranco Veneto\" },\r\n\t{ k: \"VI\", v: \"Rossano Veneto\" },\r\n\t{ k: \"TV\", v: \"Loria\" },\r\n\t{ k: \"RO\", v: \"Pettorazza Grimani\" },\r\n\t{ k: \"RO\", v: \"Adria\" },\r\n\t{ k: \"VE\", v: \"Cavarzere\" },\r\n\t{ k: \"VE\", v: \"Cona\" },\r\n\t{ k: \"VE\", v: \"Campolongo Maggiore\" },\r\n\t{ k: \"RO\", v: \"Loreo\" },\r\n\t{ k: \"RO\", v: \"Rosolina\" },\r\n\t{ k: \"VE\", v: \"Campagna Lupia\" },\r\n\t{ k: \"VE\", v: \"Chioggia\" },\r\n\t{ k: \"VE\", v: \"Vigonovo\" },\r\n\t{ k: \"VE\", v: \"Stra\" },\r\n\t{ k: \"VE\", v: \"Fiesso d'Artico\" },\r\n\t{ k: \"VE\", v: \"Pianiga\" },\r\n\t{ k: \"VE\", v: \"Santa Maria di Sala\" },\r\n\t{ k: \"VE\", v: \"Fossò\" },\r\n\t{ k: \"VE\", v: \"Dolo\" },\r\n\t{ k: \"VE\", v: \"Camponogara\" },\r\n\t{ k: \"VE\", v: \"Mirano\" },\r\n\t{ k: \"TV\", v: \"Resana\" },\r\n\t{ k: \"TV\", v: \"Vedelago\" },\r\n\t{ k: \"VE\", v: \"Noale\" },\r\n\t{ k: \"VE\", v: \"Salzano\" },\r\n\t{ k: \"TV\", v: \"Morgano\" },\r\n\t{ k: \"TV\", v: \"Istrana\" },\r\n\t{ k: \"VE\", v: \"Mira\" },\r\n\t{ k: \"VE\", v: \"Spinea\" },\r\n\t{ k: \"VE\", v: \"Venezia\" },\r\n\t{ k: \"VE\", v: \"Martellago\" },\r\n\t{ k: \"VE\", v: \"Scorzè\" },\r\n\t{ k: \"TV\", v: \"Zero branco\" }\r\n]\r\n\r\nexport const ITEMS_PER_PAGE = 6;\r\n\r\nclass StoreLocatorCtrl {\r\n\r\n\tconstructor(\r\n\t\t$scope,\r\n\t\t$timeout,\r\n\t\tDomService,\r\n\t\tApiService\r\n\t) {\r\n\t\tthis.$scope = $scope;\r\n\t\tthis.$timeout = $timeout;\r\n\t\tthis.domService = DomService;\r\n\t\tthis.apiService = ApiService;\r\n\t\tif (!window.storeLocatorSettings.apiKey && !IS_DEV) {\r\n\t\t\tthrow (`Missing Google Map Api Key`);\r\n\t\t}\r\n\t\tthis.apiKey = window.storeLocatorSettings.apiKey;\r\n\t\tthis.model = {};\r\n\t\tthis.busyFind = false;\r\n\t\tthis.busyLocation = false;\r\n\t\tthis.busyCity = false;\r\n\t\tthis.busyInfoAgents = false;\r\n\t\tthis.requiredAddress = false;\r\n\t\t//this.$timeout(() => {\r\n\t\t//\tangular.element('#address-input').addClass('disabled');\r\n\t\t//\tangular.element('#address-input input').attr('disabled', true);\r\n\t\t//\tangular.element('#address-input input').attr('readonly', true);\r\n\t\t//}, 500);\r\n\t\tthis.maxSearch = 3;\r\n\t\tthis.countSearch = 0;\r\n\t\tthis.searchCountry = \"\";\r\n\t\tthis.visibleStores = []; // non si usa più --> visibleItems\r\n\t\tthis.visibleAgents = [];\r\n\t\tthis.searchProvinceCode = \"\";\r\n\t\tthis.searchCity = \"\";\r\n\t\tthis.searchArea = \"\";\r\n\t\tthis.mapCenter$ = new Subject();\r\n\t\tthis.labels = window.labels || {\r\n\t\t\tapproximately: window.storeLocatorSettings.localizedStrings.LBL_DISTANZA_STORE,\r\n\t\t\tmoreInfo: `More Info`,\r\n\t\t\treachStore: window.storeLocatorSettings.localizedStrings.LBL_RAGGIUNGERE_STORE,\r\n\t\t\tcontactStore: window.storeLocatorSettings.localizedStrings.LBL_CONTATTA_STORE,\r\n\t\t\tcontactAgent: window.storeLocatorSettings.localizedStrings.LBL_CONTATTA_AGENTE\r\n\t\t};\r\n\t\tif (GOOGLE_MAPS !== null) {\r\n\t\t\tthis.initMap();\r\n\t\t} else {\r\n\t\t\twindow.onGoogleMapsLoaded = () => {\r\n\t\t\t\tGOOGLE_MAPS = google.maps;\r\n\t\t\t\tthis.initMap();\r\n\t\t\t};\r\n\t\t\tconst script = document.createElement('script');\r\n\t\t\tscript.setAttribute('type', 'text/javascript');\r\n\t\t\tscript.setAttribute('src', `https://maps.googleapis.com/maps/api/js?callback=onGoogleMapsLoaded${this.apiKey ? `&key=${this.apiKey}` : ''}&libraries=places&language=${$('html').attr('lang')}`);\r\n\t\t\t(document.getElementsByTagName('head')[0] || document.documentElement).appendChild(script);\r\n\t\t}\r\n\r\n\t\tthis.unsubscribe = new Subject();\r\n\t\tthis.mapCenter$.pipe(\r\n\t\t\tdebounceTime(1000),\r\n\t\t\ttakeUntil(this.unsubscribe)\r\n\t\t).subscribe(position => {\r\n\t\t\tthis.$timeout(() => {\r\n\t\t\t\tthis.visibleItems = this.getStoresByViewport();\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t\t$scope.$on('destroy', () => {\r\n\t\t\tthis.unsubscribe.next();\r\n\t\t\tthis.unsubscribe.complete();\r\n\t\t});\r\n\t}\r\n\r\n\tinitMap() {\r\n\t\tconst mapOptions = {\r\n\t\t\tzoom: 17,\r\n\t\t\tcenter: new google.maps.LatLng(44.5416713, 10.8259022), // prima ricerca vicino a casa madre\r\n\t\t\tstyles: [\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"water\",\r\n\t\t\t\t\t\"elementType\": \"geometry\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#e9e9e9\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 17\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"landscape\",\r\n\t\t\t\t\t\"elementType\": \"geometry\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#f5f5f5\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 20\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"road.highway\",\r\n\t\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#ffffff\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 17\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"road.highway\",\r\n\t\t\t\t\t\"elementType\": \"geometry.stroke\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#ffffff\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 29\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"weight\": 0.2\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"road.arterial\",\r\n\t\t\t\t\t\"elementType\": \"geometry\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#ffffff\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 18\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"road.local\",\r\n\t\t\t\t\t\"elementType\": \"geometry\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#ffffff\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 16\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"poi\",\r\n\t\t\t\t\t\"elementType\": \"geometry\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#f5f5f5\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 21\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"poi.park\",\r\n\t\t\t\t\t\"elementType\": \"geometry\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#dedede\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 21\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"elementType\": \"labels.text.stroke\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"visibility\": \"on\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#ffffff\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 16\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"elementType\": \"labels.text.fill\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"saturation\": 36\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#333333\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 40\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"elementType\": \"labels.icon\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"visibility\": \"off\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"transit\",\r\n\t\t\t\t\t\"elementType\": \"geometry\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#f2f2f2\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 19\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"administrative\",\r\n\t\t\t\t\t\"elementType\": \"geometry.fill\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#fefefe\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 20\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"featureType\": \"administrative\",\r\n\t\t\t\t\t\"elementType\": \"geometry.stroke\",\r\n\t\t\t\t\t\"stylers\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"color\": \"#fefefe\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"lightness\": 17\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"weight\": 1.2\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t};\r\n\t\tconst mapElement = document.getElementById('map');\r\n\t\tif (!mapElement) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst map = new google.maps.Map(mapElement, mapOptions);\r\n\r\n\t\tvar startingMapBounds;\r\n\r\n\t\tif (window.storeLocatorSettings.currMkt === 2) {\r\n\t\t\tstartingMapBounds = this.getItalyBounds();\r\n\t\t} else {\r\n\t\t\tstartingMapBounds = this.getWorldBounds();\r\n\t\t}\r\n\r\n\t\tmap.fitBounds(startingMapBounds);\r\n\r\n\t\tmap.addListener('bounds_changed', () => {\r\n\t\t\tconst position = map.getCenter();\r\n\t\t\tthis.mapCenter$.next(position);\r\n\t\t\tthis.visibleItems = this.getStoresByViewport();\r\n\t\t});\r\n\r\n\t\tthis.position = mapOptions.center;\r\n\t\tthis.$timeout(() => {\r\n\t\t\tthis.map = map;\r\n\t\t\twindow.gmap = map;\r\n\t\t});\r\n\r\n\t\tlet autocompleteUnique = new google.maps.places.Autocomplete(document.querySelector('#cities-input input'));\r\n\t\tdocument.querySelector('#cities-input input').addEventListener('keydown', (e) => {\r\n\t\t\tthis.model.address = undefined;\r\n\t\t\tthis.busyCity = false;\r\n\t\t}, false);\r\n\t\tgoogle.maps.event.addListener(autocompleteUnique, 'place_changed', () => {\r\n\t\t\tvar city = autocompleteUnique.getPlace();\r\n\t\t\tvar filteredInfoCity = [];\r\n\t\t\tif (city.address_components !== undefined) {\r\n\t\t\t\tfilteredInfoCity = city.address_components.filter(function (address_component) {\r\n\t\t\t\t\treturn address_component.types.includes(\"country\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Task ID 54776 CDE - ULTERIORI INTERVENTI RICHIESTI X STORE LOCATOR --> Messaggio da lasciare fisso, non più \"bloccante\" per l'Italia ---\r\n\t\t\t// per l'Italia controllo se c'è il dato che serve a me tra i livelli (indirizzo con almeno la via\r\n\t\t\t// se poi non lo trovo faccio lo show del messaggio per richiedere anche l'indirizzo, nel caso italiano\r\n\t\t\t//var country = filteredInfoCity.length ? filteredInfoCity[0].short_name : '';\r\n\t\t\t//this.requiredAddress = country === 'IT' ? true : false;\r\n\t\t\t//if (this.requiredAddress) {\r\n\t\t\t//\tvar address = [];\r\n\t\t\t//\tif (city.address_components !== undefined) {\r\n\t\t\t//\t\taddress = city.address_components.filter(function (address_component) {\r\n\t\t\t//\t\t\treturn address_component.types.includes(\"route\");\r\n\t\t\t//\t\t});\r\n\t\t\t//\t}\r\n\r\n\t\t\t//\tif (address.length !== 0) {\r\n\t\t\t//\t\tthis.model.address = angular.element('#cities-input input').val();\r\n\t\t\t//\t\t$(\"#errorNotes\").hide();\r\n\t\t\t//\t}\r\n\t\t\t//\telse {\r\n\t\t\t//\t\t//$(\"#errorNotes\").html('*Complete address is required for this country!');\r\n\t\t\t//\t\t$(\"#errorNotes\").show();\r\n\t\t\t//\t}\r\n\t\t\t//}\r\n\t\t\t// ----------------------------------------------------------------------------------------------------------------------------------------\r\n\t\t\t//if (country === 'IT') {\r\n\t\t\t//\tthis.model.address = city.formatted_address;\r\n\t\t\t//}\r\n\r\n\t\t\tthis.busyCity = true;\r\n\t\t});\r\n\t\tdocument.querySelector('#cities-input input').addEventListener('blur', () => {\r\n\t\t\tconst geocoder = this.geocoder || new google.maps.Geocoder();\r\n\t\t\tthis.geocoder = geocoder;\r\n\t\t\tgeocoder.geocode({ address: this.model.city }, (results, status) => {\r\n\t\t\t\tif (status == 'OK') {\r\n\t\t\t\t\tvar filteredInfoCity = results[0].address_components.filter(function (address_component) {\r\n\t\t\t\t\t\treturn address_component.types.includes(\"country\");\r\n\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\t// Task ID 54776 CDE - ULTERIORI INTERVENTI RICHIESTI X STORE LOCATOR --> Messaggio da lasciare fisso, non più \"bloccante\" per l'Italia ---\r\n\t\t\t\t\t//var country = filteredInfoCity.length ? filteredInfoCity[0].short_name : '';\r\n\t\t\t\t\t//this.requiredAddress = country === 'IT' ? true : false;\r\n\t\t\t\t\t//if (this.requiredAddress) {\r\n\t\t\t\t\t//\tvar city = autocompleteUnique.getPlace();\r\n\t\t\t\t\t//\tvar address = [];\r\n\t\t\t\t\t//\tif (city.address_components !== undefined) {\r\n\t\t\t\t\t//\t\taddress = city.address_components.filter(function (address_component) {\r\n\t\t\t\t\t//\t\t\treturn address_component.types.includes(\"route\");\r\n\t\t\t\t\t//\t\t});\r\n\t\t\t\t\t//\t}\r\n\r\n\t\t\t\t\t//\t Task ID 54776 CDE - ULTERIORI INTERVENTI RICHIESTI X STORE LOCATOR --> Messaggio da lasciare fisso, non più \"bloccante\" per l'Italia\r\n\t\t\t\t\t//\tif (address.length !== 0) {\r\n\t\t\t\t\t//\t\tthis.model.address = angular.element('#cities-input input').val();\r\n\t\t\t\t\t//\t\t$(\"#errorNotes\").hide();\r\n\t\t\t\t\t//\t}\r\n\t\t\t\t\t//\telse {\r\n\t\t\t\t\t//\t\t//$(\"#errorNotes\").html('*Complete address is required for this country!');\r\n\t\t\t\t\t//\t\t$(\"#errorNotes\").show();\r\n\t\t\t\t\t//\t}\r\n\t\t\t\t\t//}\r\n\t\t\t\t\t// ----------------------------------------------------------------------------------------------------------------------------------------\r\n\t\t\t\t\tthis.busyCity = true;\r\n\t\t\t\t\tthis.$scope.$apply();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.loadAllStores();\r\n\t\tthis.loadAllAgents();\r\n\t}\r\n\r\n\tcalculateDistance(lat1, lon1, lat2, lon2, unit) {\r\n\t\tif ((lat1 == lat2) && (lon1 == lon2)) {\r\n\t\t\treturn 0;\r\n\t\t} else {\r\n\t\t\tconst radlat1 = Math.PI * lat1 / 180;\r\n\t\t\tconst radlat2 = Math.PI * lat2 / 180;\r\n\t\t\tconst theta = lon1 - lon2;\r\n\t\t\tconst radtheta = Math.PI * theta / 180;\r\n\t\t\tlet dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);\r\n\t\t\tif (dist > 1) {\r\n\t\t\t\tdist = 1;\r\n\t\t\t}\r\n\t\t\tdist = Math.acos(dist);\r\n\t\t\tdist = dist * 180 / Math.PI;\r\n\t\t\tdist = dist * 60 * 1.1515;\r\n\t\t\tif (unit == \"K\") {\r\n\t\t\t\tdist = dist * 1.609344;\r\n\t\t\t}\r\n\t\t\tif (unit == \"N\") {\r\n\t\t\t\tdist = dist * 0.8684;\r\n\t\t\t}\r\n\t\t\treturn dist;\r\n\t\t}\r\n\t}\r\n\r\n\tclearMarkers() {\r\n\t\tif (this.markerCluster) {\r\n\t\t\tthis.markerCluster.clearMarkers();\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this.stores.length; i++) {\r\n\t\t\tif (this.stores[i].marker) {\r\n\t\t\t\tthis.stores[i].marker.setMap(null);\r\n\t\t\t\tthis.stores[i].marker = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.markerAgentCluster) {\r\n\t\t\tthis.markerAgentCluster.clearMarkers();\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this.agents.length; i++) {\r\n\t\t\tif (this.agents[i].marker) {\r\n\t\t\t\tthis.agents[i].marker.setMap(null);\r\n\t\t\t\tthis.agents[i].marker = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\taddMarkers(stores) {\r\n\t\tconst markers = stores.map((store) => {\r\n\t\t\tconst position = new google.maps.LatLng(store.latitude, store.longitude);\r\n\t\t\tlet content = `
\r\n\t\t\t\t
${store.title}
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t${store.address}
\r\n\t\t\t\t\t\t${store.zip} ${store.city} ${store.provinceCode} ${store.countryCode}
\r\n\t\t\t\t\t\t${store.telephone ? `${store.telephone}
` : ''}\r\n\t\t\t\t\t\t${store.website ? `${store.website}` : ''}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t${store.address !== '' ? `
${this.labels.approximately} ${Math.floor(store.distance)} km
` : ``}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t${store.address !== '' ? `${this.labels.reachStore}` : ``}\r\n\t\t\t\t
\r\n\t\t\t
`;\r\n\r\n\t\t\tconst icon = ['pin-reseller.png','pin-top-store.png', 'pin-top-store.png', 'pin-reseller.png', 'pin-showroom.png'][11 - store.type];\r\n\r\n\t\t\tlet marker = new google.maps.Marker({\r\n\t\t\t\tposition: position,\r\n\t\t\t\t// map: this.map,\r\n\t\t\t\ticon: `${BASEPATH}${icon}`,\r\n\t\t\t\ttitle: store.title,\r\n\t\t\t\tstore: store,\r\n\t\t\t\tcontent: content,\r\n\t\t\t});\r\n\t\t\tmarker.addListener('click', () => {\r\n\t\t\t\tthis.setMarkerWindow(marker.position, content);\r\n\t\t\t\tthis.scrollToStore(store);\r\n\t\t\t\t// GtmService.push({ event: 'dealerlocator', action: 'marker-click', label: store.title });\r\n\t\t\t});\r\n\t\t\tstore.marker = marker;\r\n\t\t\treturn marker;\r\n\t\t});\r\n\r\n\t\tconst markerCluster = new MarkerClusterer(this.map, markers, {\r\n\t\t\timagePath: `${BASEPATH}cluster-`,\r\n\t\t});\r\n\t\tconst styles = markerCluster.getStyles();\r\n\t\tstyles.forEach(style => style.textColor = '#ffffff');\r\n\t\tmarkerCluster.setStyles(styles);\r\n\t\tthis.markers = markers;\r\n\t\tthis.markerCluster = markerCluster;\r\n\t}\r\n\r\n\taddAgentsMarkers(agents) {\r\n\t\tconst markers = agents.map((agent) => {\r\n\t\t\t//console.log('agent.latitude ', agent.latitude, ' agent.longitude ', agent.longitude, ' this.position.lat() ', this.position.lat(), ' this.position.lng() ', this.position.lng());\r\n\t\t\tconst position = new google.maps.LatLng(agent.latitude === null ? this.position.lat() : agent.latitude, agent.longitude === null ? this.position.lng() : agent.longitude);\r\n\t\t\tlet content = `
\r\n\t\t\t\t
${agent.title}
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t${agent.address ? `${agent.address}` : ''}
\r\n\t\t\t\t\t\t${agent.zip ? `${agent.zip}` : ''} ${agent.city ? `${agent.city}` : ''} ${agent.province ? `${agent.province}` : ''} ${agent.countries}
\r\n\t\t\t\t\t\t${agent.telephone ? `${agent.telephone}
` : ''}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
`;\r\n\r\n\t\t\tconst icon = 'pin-reseller.png';\r\n\r\n\t\t\tlet marker = new google.maps.Marker({\r\n\t\t\t\tposition: position,\r\n\t\t\t\t// map: this.map,\r\n\t\t\t\ticon: `${BASEPATH}${icon}`,\r\n\t\t\t\ttitle: agent.title,\r\n\t\t\t\tstore: agent,\r\n\t\t\t\tcontent: content,\r\n\t\t\t});\r\n\t\t\tmarker.addListener('click', () => {\r\n\t\t\t\tthis.setMarkerWindow(marker.position, content);\r\n\t\t\t\t//this.scrollToStore(store);\r\n\t\t\t\t// GtmService.push({ event: 'dealerlocator', action: 'marker-click', label: store.title });\r\n\t\t\t});\r\n\t\t\tagent.marker = marker;\r\n\t\t\treturn marker;\r\n\t\t});\r\n\r\n\t\tconst markerCluster = new MarkerClusterer(this.map, markers, {\r\n\t\t\timagePath: `${BASEPATH}cluster-`,\r\n\t\t});\r\n\t\tconst styles = markerCluster.getStyles();\r\n\t\tstyles.forEach(style => style.textColor = '#ffffff');\r\n\t\tmarkerCluster.setStyles(styles);\r\n\t\tthis.markers = markers;\r\n\t\tthis.markerAgentCluster = markerCluster;\r\n\t}\r\n\r\n\tgoToMap() {\r\n\t\tvar map = document.getElementById(\"mappa\");\r\n\t\tmap.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n\t}\r\n\r\n\tgetGeolocation(map) {\r\n\t\tthis.error = null;\r\n\t\tthis.busyLocation = true;\r\n\t\tlet position = this.map.getCenter();\r\n\r\n\t\t// Try HTML5 geolocation.\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition((location) => {\r\n\t\t\t\tposition = new google.maps.LatLng(location.coords.latitude, location.coords.longitude);\r\n\r\n\t\t\t\tconst geocoder = this.geocoder || new google.maps.Geocoder();\r\n\t\t\t\tthis.geocoder = geocoder;\r\n\t\t\t\tgeocoder.geocode({ 'location': position }, (results, status) => {\r\n\t\t\t\t\tif (status == 'OK') {\r\n\t\t\t\t\t\tvar filteredInfoCity = results.filter(function (address_component) {\r\n\t\t\t\t\t\t\treturn address_component.types.includes(\"locality\");\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.model.city = filteredInfoCity.length ? filteredInfoCity[0].formatted_address : undefined;\r\n\t\t\t\t\t\tthis.model.address = results[0].formatted_address;\r\n\r\n\t\t\t\t\t\tfor (let i = 0; i < results[0].address_components.length; i++) {\r\n\t\t\t\t\t\t\tif (results[0].address_components[i].types[0] == \"country\" || results[0].address_components[i].types[0] == \"political\") {\r\n\t\t\t\t\t\t\t\tthis.searchCountry = results[0].address_components[i].short_name;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.setInfoWindow(position, 1);\r\n\t\t\t\t\t\tthis.searchPosition(position).finally(() => this.busyLocation = false);\r\n\t\t\t\t\t\tthis.map.setCenter(position);\r\n\t\t\t\t\t\tthis.map.setZoom(ZOOM_LEVEL);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}, () => {\r\n\t\t\t\tthis.setInfoWindow(position, 2);\r\n\t\t\t\tthis.searchPosition(position).finally(() => this.busyLocation = false);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// Browser doesn't support Geolocation\r\n\t\t\tthis.setInfoWindow(position, 3);\r\n\t\t\tthis.searchPosition(position).finally(() => this.busyLocation = false);\r\n\t\t}\r\n\t}\r\n\r\n\tloadAllStores() {\r\n\t\t//if (this.stores) {\r\n\t\t//\treturn Promise.resolve(this.stores);\r\n\t\t//}\r\n\t\t// this.loadFakeStores();\r\n\t\tconst isStatic = false;\r\n\t\treturn this.apiService.storeLocator.all(isStatic).then(success => {\r\n\t\t\tconst stores = success.data.d.storeList; //success.data; // success.data.d.storeList;\r\n\t\t\tstores.forEach(store => store.distance = this.position ? this.calculateDistance(store.latitude, store.longitude, this.position.lat(), this.position.lng(), 'K') : '');\r\n\r\n\t\t\tthis.visibleItems = [];\r\n\t\t\tthis.maxItems = ITEMS_PER_PAGE;\r\n\t\t\tthis.stores = stores;\r\n\t\t\tthis.visibleItems = this.getStoresByViewport();\r\n\r\n\t\t\treturn stores;\r\n\t\t});\r\n\t}\r\n\r\n\tloadAllAgents() {\r\n\t\tif (this.agents) {\r\n\t\t\treturn Promise.resolve(this.agents);\r\n\t\t}\r\n\t\tconst isStatic = false;\r\n\t\treturn this.apiService.agentLocator.all().then(success => {\r\n\t\t\tconst agents = success.data.d.agentList;\r\n\r\n\t\t\tthis.agents = agents;\r\n\r\n\t\t\treturn agents;\r\n\t\t});\r\n\t}\r\n\r\n\tloadFakeStores() {\r\n\t\treturn fetch(`https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=Ceramiche&inputtype=textquery&fields=name,formatted_address,address_components,formatted_phone_number,geometry${this.apiKey ? `&key=${this.apiKey}` : ''}`, { mode: 'cors' }).then(response => {\r\n\t\t\treturn response.json();\r\n\t\t}).then(json => {\r\n\t\t\tconsole.log('json', json);\r\n\t\t\treturn json.candidates.map((x, i) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: i + 1,\r\n\t\t\t\t\tlatitude: x.geometry.location.lat,\r\n\t\t\t\t\tlongitude: x.geometry.location.lng,\r\n\t\t\t\t\ttitle: x.name,\r\n\t\t\t\t\taddress: x.formatted_address,\r\n\t\t\t\t\ttype: 1 + Math.floor(Math.random() * 3)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t/*\r\n\t\t\t{\r\n\t\t\t\tid: 2,\r\n\t\t\t\tlatitude: 44.5902807,\r\n\t\t\t\tlongitude: 10.721454,\r\n\t\t\t\ttitle: 'Lea Ceramiche',\r\n\t\t\t\tabstract: 'Negozio di piastrelle ceramiche',\r\n\t\t\t\taddress: 'Via Statale, 127',\r\n\t\t\t\tzip: '42013',\r\n\t\t\t\tcity: 'Casalgrande',\r\n\t\t\t\tprovince: 'Reggio Emilia',\r\n\t\t\t\tprovinceCode: 'RE',\r\n\t\t\t\tcountry: 'Italia',\r\n\t\t\t\tcountryCode: 'IT',\r\n\t\t\t\ttelephone: '+39 0536 837811',\r\n\t\t\t\temail: 'info@ceramichelea.it',\r\n\t\t\t\twebsite: 'https://www.ceramichelea.it/',\r\n\t\t\t\timage: './img/store-locator/02@2x.jpg',\r\n\t\t\t\ttype: 3\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t});\r\n\t}\r\n\r\n\tfitBounds(stores) {\r\n\t\tif (stores.length) {\r\n\t\t\tconst bounds = new google.maps.LatLngBounds();\r\n\t\t\tstores.forEach((store) => {\r\n\t\t\t\tconst position = new google.maps.LatLng(store.latitude, store.longitude);\r\n\t\t\t\tbounds.extend(position);\r\n\t\t\t});\r\n\t\t\tthis.map.fitBounds(bounds);\r\n\t\t\treturn bounds;\r\n\t\t\t// console.log('fitBounds');\r\n\t\t}\r\n\t}\r\n\r\n\tfindNearStores(stores, position) {\r\n\t\t// non usata\r\n\t\tif (stores) {\r\n\t\t\tstores.forEach((store) => {\r\n\t\t\t\tstore.distance = this.calculateDistance(store.latitude, store.longitude, position.lat(), position.lng(), 'K');\r\n\t\t\t\tstore.visible = (store.cod_stato == window.userCountry || !window.userCountry) && store.distance <= MAX_DISTANCE /* Km */ ;\r\n\t\t\t\tif (store.visible) {\r\n\t\t\t\t\tif (store.removed) this.markerCluster.addMarker(store.marker);\r\n\t\t\t\t\tdelete store.removed;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.markerCluster.removeMarker(store.marker);\r\n\t\t\t\t\tstore.removed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tstores = stores.slice();\r\n\t\t\tstores.sort((a, b) => {\r\n\t\t\t\t//return a.distance * (a.importante ? 0.5 : 1) - b.distance * (b.importante ? 0.5 : 1);\r\n\t\t\t\treturn a.distance - b.distance;\r\n\t\t\t});\r\n\t\t\tconst visibleStores = stores.filter(store => store.visible).slice(0, 50);\r\n\t\t\tthis.$timeout(() => {\r\n\t\t\t\tthis.visibleItems = visibleStores;\r\n\t\t\t}, 1);\r\n\t\t\t// console.log('findNearStores', visibleStores);\r\n\t\t\treturn visibleStores;\r\n\t\t}\r\n\t}\r\n\r\n\tsearchPosition(position, viewport) {\r\n\t\t/*\t\t\r\n\t\tTask ID 54776 CDE - ULTERIORI INTERVENTI RICHIESTI X STORE LOCATOR --> Recap regole di funzionamento\r\n\t\tPaesi attivi con rivenditori: Italia, Francia, Germania, Austria e Belgio.\r\n\r\n\t\t- Per Italia, Francia, Germania, Austria la visualizzazione della ricerca sul sito avviene secondo queste regole:\r\n\t\t\t- Massimo 3 rivenditori visualizzati;\r\n\t\t\t- Raggio di 30 Km dal punto inserito;\r\n\t\t\t- Insieme ai rivenditori compare sempre l’agente di zona;\r\n\t\t\t- Se non ci sono rivenditori nel raggio di 30 Km compare solo l’agente;\r\n\t\t\t- Se non ci sono rivenditori e agente compaiono i dati della Cotto d’Este;\r\n\t\t\t- Showroom Milano ha come zona la Lombardia;\r\n\t\t\t- Il rivenditore EDILFERRARESE sarà l’unico a comparire nella sua zona d’esclusiva (Provincia di Padova più alcuni comuni di confine);\r\n\t\t\t- Se la ricerca avviene vicino al confine di stato, NON devono apparire i rivenditori degli altri stati.\r\n\t\t- Per Belgio la visualizzazione sarà sempre con tutti i rivenditori senza l’agente di zona, perciò decadono le regole di massimo 3 rivenditori e raggio di 30 Km.\r\n\t\t */\r\n\r\n\r\n\t\tthis.position = position;\r\n\t\tthis.viewport = viewport;\r\n\t\tthis.map.setCenter(position);\r\n\t\tthis.map.setZoom(ZOOM_LEVEL);\r\n\t\tthis.setInfoWindow(position, 1);\r\n\r\n\t\treturn this.loadAllStores().then(success => {\r\n\t\t\tthis.clearMarkers();\r\n\t\t\tthis.closeMarkerWindow();\r\n\r\n\t\t\tthis.stores.forEach(store => store.distance = this.position ? this.calculateDistance(store.latitude, store.longitude, this.position.lat(), this.position.lng(), 'K') : '');\r\n\t\t\tthis.stores = this.stores.sort((a, b) => {\r\n\t\t\t\t//if (a.type === b.type) {\r\n\t\t\t\t\treturn a.distance - b.distance;\r\n\t\t\t\t//} else {\r\n\t\t\t\t//\treturn a.type - b.type;\r\n\t\t\t\t//}\r\n\t\t\t});\r\n\r\n\t\t\tif (continentAmerica[this.searchCountry] === undefined) {\r\n\t\t\t\t//Ricerca negli altri continenti\r\n\t\t\t\tif (this.countryContainsStores(this.searchCountry)) {\r\n\t\t\t\t\tlet searchProvinceCode = this.searchProvinceCode;\r\n\t\t\t\t\tlet searchCity = this.searchCity;\r\n\t\t\t\t\tvar checkExceptionEdilferrarese = _.filter(ExceptionEdilferrarese, function (o) { return o.k === searchProvinceCode && o.v.toLowerCase() === searchCity.toLowerCase(); });\r\n\t\t\t\t\t//console.log('checkExceptionEdilferrarese ', checkExceptionEdilferrarese);\r\n\t\t\t\t\tif (checkExceptionEdilferrarese.length > 0 || searchProvinceCode === 'PD') {\r\n\t\t\t\t\t\t//Siamo nel caso in cui è statà ricercata una località in esclusiva per lo store Edilferrarese\r\n\t\t\t\t\t\tvar storesByCountry = this.getStoresByCountry(this.searchCountry);\r\n\t\t\t\t\t\tthis.visibleAgents = this.getAgentsByInfo(this.searchCountry);\r\n\t\t\t\t\t\tlet storeEdilferrarese = _.filter(storesByCountry, function (o) { return o.id === 338 || o.email === \"info@edilferrarese.it\"; });\r\n\t\t\t\t\t\tif (storeEdilferrarese.length > 0) {\r\n\t\t\t\t\t\t\tthis.addMarkers(storeEdilferrarese);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Cerco i pin in un raggio di 30Km, eventualmente lo estendo se non c'è nulla\r\n\t\t\t\t\t\tfor (let searchRadius = 30000; searchRadius <= 600000; searchRadius += 30000) {\r\n\t\t\t\t\t\t\tvar searchBounds = new google.maps.Circle({ center: position, radius: searchRadius }).getBounds();\r\n\r\n\t\t\t\t\t\t\tif (this.boundsContainsStores(searchBounds)) {\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (searchBounds) {\r\n\t\t\t\t\t\t\tthis.map.fitBounds(searchBounds, 0);\r\n\t\t\t\t\t\t\tthis.map.panToBounds(searchBounds);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// Vengono aggiunti solo i marker del paese ricercato.\r\n\t\t\t\t\t\tvar storesByCountry = this.getStoresByCountry(this.searchCountry);\r\n\t\t\t\t\t\tthis.visibleAgents = this.getAgentsByInfo(this.searchCountry);\r\n\t\t\t\t\t\t//console.log('#1 this.searchCountry ', this.searchCountry, ' storesByCountry ', storesByCountry, ' this.visibleAgents ', this.visibleAgents);\r\n\r\n\t\t\t\t\t\t// Per il Belgio non vanno filtrati gli store, li vogliono vedere tutti - Task ID 44539 commento #87\r\n\t\t\t\t\t\tif (this.searchCountry !== 'BE') {\r\n\t\t\t\t\t\t\tif (storesByCountry.length > 3) {\r\n\t\t\t\t\t\t\t\tstoresByCountry = storesByCountry.filter(function (store) {\r\n\t\t\t\t\t\t\t\t\t//\tconsole.log('store ', store);\r\n\t\t\t\t\t\t\t\t\tif (store.type !== 7) {\r\n\t\t\t\t\t\t\t\t\t\treturn store.distance <= 30; // mostro solo gli store entro 30km (prima era 150)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}).slice(0, 3);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.addMarkers(storesByCountry);\r\n\r\n\t\t\t\t\t\t//this.$timeout(() => {\r\n\t\t\t\t\t\t//\tif (this.visibleAgents.length > 0) {\r\n\t\t\t\t\t\t//\t\tthis.addAgentsMarkers(this.visibleAgents);\r\n\t\t\t\t\t\t//\t}\r\n\t\t\t\t\t\t//}, 700);\r\n\r\n\t\t\t\t\t\t// 2a. PER DECIDERE LO ZOOM\r\n\t\t\t\t\t\tif (this.searchCountry !== 'BE') {\r\n\t\t\t\t\t\t\t// Cerco i pin da mostrare in un raggio di 30Km, eventualmente lo estendo se non c'è nulla.\r\n\t\t\t\t\t\t\tfor (let searchRadius = 30000; searchRadius <= 600000; searchRadius += 30000) {\r\n\t\t\t\t\t\t\t\tvar searchBounds = new google.maps.Circle({ center: position, radius: searchRadius }).getBounds();\r\n\r\n\t\t\t\t\t\t\t\tif (this.boundsContainsStores(searchBounds)) {\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (searchBounds) {\r\n\t\t\t\t\t\t\t\tthis.map.fitBounds(searchBounds, 0);\r\n\t\t\t\t\t\t\t\tthis.map.panToBounds(searchBounds);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t// Se è Belgio, voglio mostrare tutti i pin con lo zoom adatto\r\n\t\t\t\t\t\t\tif (storesByCountry && storesByCountry.length > 0) {\r\n\t\t\t\t\t\t\t\tvar bounds = this.fitBounds(storesByCountry);\r\n\t\t\t\t\t\t\t\tif (bounds) {\r\n\t\t\t\t\t\t\t\t\tthis.map.panToBounds(bounds);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Se non ci sono store nel paese ricercato allora mostro il mondo intero e il PIN Showroom Italia.\r\n\t\t\t\t\t//this.visibleAgents = this.getAgentsByInfo(this.searchCountry);\r\n\t\t\t\t\t//console.log('#2 this.searchCountry ', this.searchCountry, ' this.visibleAgents ', this.visibleAgents);\r\n\t\t\t\t\t//this.$timeout(() => {\r\n\t\t\t\t\t//\t//if (this.visibleAgents.length > 0) {\r\n\t\t\t\t\t//\t//\tthis.addAgentsMarkers(this.visibleAgents);\r\n\t\t\t\t\t//\t//}\r\n\t\t\t\t\t//\tthis.map.fitBounds(this.viewport);\r\n\t\t\t\t\t//\tthis.map.panTo(new google.maps.LatLng(this.position.lat(), this.position.lng()));\r\n\t\t\t\t\t//}, 700);\r\n\t\t\t\t\tthis.visibleAgents = this.getAgentsByInfo(this.searchCountry);\r\n\t\t\t\t\tif (this.visibleAgents.length === 0) {\r\n\t\t\t\t\t\t//Se non ci sono store nel paese ricercato e non c'è neanche un agente di riferimento allora mostro il mondo intero e il PIN Showroom Italia\r\n\t\t\t\t\t\tlet italyMainStore = this.stores[0];\r\n\t\t\t\t\t\tthis.addMarkers([italyMainStore]);\r\n\r\n\t\t\t\t\t\tthis.map.fitBounds(this.getWorldBounds());\r\n\t\t\t\t\t\tthis.map.panTo(new google.maps.LatLng(italyMainStore.latitude, italyMainStore.longitude));\r\n\t\t\t\t\t\tthis.setMarkerWindow(italyMainStore.marker.position, italyMainStore.marker.content);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t//Se non ci sono store nel paese ricercato ma c'è almeno un agente di riferimento allora mostro solo questi nelle card e gestisco lo zoom sul paese\r\n\t\t\t\t\t\tthis.map.fitBounds(this.viewport);\r\n\t\t\t\t\t\tthis.map.panTo(new google.maps.LatLng(this.position.lat(), this.position.lng()));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t//Ricerca nel continente americano\r\n\t\t\t\tthis.visibleAgents = this.getAgentsByInfo(this.searchCountry);\r\n\t\t\t\t//console.log('#3 this.searchCountry ', this.searchCountry, ' this.visibleAgents ', this.visibleAgents);\r\n\t\t\t\t//this.$timeout(() => {\r\n\t\t\t\t//\tif (this.visibleAgents.length > 0) {\r\n\t\t\t\t//\t\tthis.addAgentsMarkers(this.visibleAgents);\r\n\t\t\t\t//\t}\r\n\t\t\t\t//}, 700);\r\n\r\n\t\t\t\tthis.map.fitBounds(this.getWorldBounds());\r\n\t\t\t\tthis.map.panTo(new google.maps.LatLng(this.position.lat(), this.position.lng()));\r\n\t\t\t}\r\n\r\n\t\t\t// const visibleStores = this.findNearStores(stores, position);\r\n\t\t\t/*\r\n\t\t\tif (visibleStores) {\r\n\t\t\t\tthis.fitBounds(visibleStores);\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t});\r\n\t}\r\n\r\n\tpanTo(store) {\r\n\t\tconst position = new google.maps.LatLng(store.latitude, store.longitude);\r\n\t\tthis.map.setZoom(ZOOM_LEVEL);\r\n\t\tthis.map.panTo(position);\r\n\t\tconst marker = this.markers.find(x => x.store === store);\r\n\t\tthis.setMarkerWindow(marker.position, marker.content);\r\n\t}\r\n\r\n\tonSubmit() {\r\n\t\tthis.$timeout(() => {\r\n\t\t\tif (this.busyCity) {\r\n\t\t\t\tthis.error = null;\r\n\t\t\t\tthis.busyFind = true;\r\n\t\t\t\t/*\r\n\t\t\t\tconst fakeFilter = {\r\n\t\t\t\t\t'': {\r\n\t\t\t\t\t\tvalue: this.model.address,\r\n\t\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvalue: this.model.address,\r\n\t\t\t\t\t\t\t\tkey: this.model.address\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tGtmService.pageViewFilters(GTM_CAT, fakeFilter);\r\n\t\t\t\t*/\r\n\t\t\t\tconst geocoder = this.geocoder || new google.maps.Geocoder();\r\n\t\t\t\tthis.geocoder = geocoder;\r\n\t\t\t\tgeocoder.geocode({ address: this.requiredAddress ? this.model.address : this.model.city }, (results, status) => {\r\n\t\t\t\t\tthis.model = {\r\n\t\t\t\t\t\tcity: this.model.city,\r\n\t\t\t\t\t\taddress: this.model.address\r\n\t\t\t\t\t};\r\n\t\t\t\t\tif (status == 'OK') {\r\n\t\t\t\t\t\tconst position = results[0].geometry.location;\r\n\t\t\t\t\t\tconst viewport = results[0].geometry.viewport;\r\n\t\t\t\t\t\tconsole.log('results ', results);\r\n\t\t\t\t\t\tfor (let i = 0; i < results[0].address_components.length; i++) {\r\n\t\t\t\t\t\t\tif (results[0].address_components[i].types[0] == \"country\" || results[0].address_components[i].types[0] == \"political\") {\r\n\t\t\t\t\t\t\t\tthis.searchCountry = results[0].address_components[i].short_name;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfor (let i = 0; i < results[0].address_components.length; i++) {\r\n\t\t\t\t\t\t\tif (results[0].address_components[i].types[0] == \"administrative_area_level_2\") {\r\n\t\t\t\t\t\t\t\tthis.searchProvinceCode = results[0].address_components[i].short_name;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor (let i = 0; i < results[0].address_components.length; i++) {\r\n\t\t\t\t\t\t\tif (results[0].address_components[i].types[0] == \"administrative_area_level_3\" || results[0].address_components[i].types[0] == \"locality\") {\r\n\t\t\t\t\t\t\t\tthis.searchCity = results[0].address_components[i].short_name;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor (let i = 0; i < results[0].address_components.length; i++) {\r\n\t\t\t\t\t\t\tif (results[0].address_components[i].types[0] == \"administrative_area_level_1\") {\r\n\t\t\t\t\t\t\t\tthis.searchArea = results[0].address_components[i].short_name;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//console.log('this.searchProvinceCode ', this.searchProvinceCode, ' this.searchCity ', this.searchCity);\r\n\r\n\t\t\t\t\t\t// console.log('location', location);\r\n\t\t\t\t\t\t// const position = new google.maps.LatLng(location);\r\n\t\t\t\t\t\tthis.searchPosition(position, viewport).finally(() => this.busyFind = false, this.model.address = this.model.address, this.countSearch++ );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.$timeout(() => {\r\n\t\t\t\t\t\t\tconst message = 'Geocode was not successful for the following reason: ' + status;\r\n\t\t\t\t\t\t\t// console.log('StoreLocatorCtrl.onSubmit.error', message);\r\n\t\t\t\t\t\t\tthis.error = { message };\r\n\t\t\t\t\t\t\tthis.busyFind = false;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\r\n\tsetInfoWindow(position, mode) {\r\n\t\tif (SHOW_INFO_WINDOW) {\r\n\t\t\tconst infoWindow = this.infoWindow || new google.maps.InfoWindow();\r\n\t\t\tthis.infoWindow = infoWindow;\r\n\t\t\tinfoWindow.setPosition(position);\r\n\t\t\tswitch (mode) {\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\tinfoWindow.setContent('Current location');\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tinfoWindow.setContent('Error: The Geolocation service failed.');\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tinfoWindow.setContent('Error: Your browser doesn\\'t support geolocation.');\r\n\t\t\t}\r\n\t\t\tinfoWindow.open(this.map);\r\n\t\t}\r\n\t}\r\n\r\n\tsetMarkerWindow(position, content) {\r\n\t\tif (position) {\r\n\t\t\tconst markerWindow = this.markerWindow || new google.maps.InfoWindow({\r\n\t\t\t\tpixelOffset: new google.maps.Size(0, -35)\r\n\t\t\t});\r\n\t\t\tthis.markerWindow = markerWindow;\r\n\t\t\tmarkerWindow.setPosition(position);\r\n\t\t\tmarkerWindow.setContent(content);\r\n\t\t\tmarkerWindow.open(this.map);\r\n\t\t} else {\r\n\t\t\tthis.closeMarkerWindow();\r\n\t\t}\r\n\t}\r\n\r\n\tcloseMarkerWindow() {\r\n\t\tif (this.markerWindow) {\r\n\t\t\tthis.markerWindow.close();\r\n\t\t}\r\n\t}\r\n\r\n\tgetWorldBounds() {\r\n\t\treturn new google.maps.LatLngBounds(\r\n\t\t\tnew google.maps.LatLng(61, 60),\r\n\t\t\tnew google.maps.LatLng(-37, -92)\r\n\t\t);\r\n\t}\r\n\r\n\tgetItalyBounds() {\r\n\t\treturn new google.maps.LatLngBounds(\r\n\t\t\tnew google.maps.LatLng(46.4657567, 5.233972),\r\n\t\t\tnew google.maps.LatLng(36.8257773, 18.963541)\r\n\t\t);\r\n\t}\r\n\r\n\tscrollToStore(store) {\r\n\t\tconst storesNode = document.querySelector('.section--stores');\r\n\t\tconst storeNode = document.querySelector(`#store-${store.id}`);\r\n\t\t// console.log(storesNode, storeNode);\r\n\t\tstoresNode.scrollTo(0, storeNode.offsetTop);\r\n\t}\r\n\r\n\tonScroll(event) {\r\n\t\tif (this.visibleItems && this.visibleItems.length !== this.maxItems) {\r\n\t\t\tif (event.rect.top + event.rect.height < event.windowRect.bottom) {\r\n\t\t\t\tif (!this.busy && this.maxItems < this.stores.length) {\r\n\t\t\t\t\tthis.$timeout(() => {\r\n\t\t\t\t\t\tthis.busy = true;\r\n\t\t\t\t\t\tthis.$timeout(() => {\r\n\t\t\t\t\t\t\tthis.maxItems += ITEMS_PER_PAGE;\r\n\t\t\t\t\t\t\tthis.visibleItems = this.getStoresByViewport();\r\n\t\t\t\t\t\t\tthis.busy = false;\r\n\t\t\t\t\t\t\t// console.log(this.visibleItems.length);\r\n\t\t\t\t\t\t}, 1000);\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetStoresByCountry(countryCode) {\r\n\t\tlet stores = [];\r\n\r\n\t\tif (this.stores) {\r\n\t\t\tfor (let i = 0; i < this.stores.length; i++) {\r\n\t\t\t\tif (this.stores[i].countryCode === countryCode) {\r\n\t\t\t\t\tstores.push(this.stores[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stores;\r\n\t}\r\n\r\n\tgetAgentsByInfo(countryCode) {\r\n\t\tlet agents = [];\r\n\t\tlet provinceCode = this.searchProvinceCode !== '' ? this.searchProvinceCode : this.stores.length > 0 && this.stores[1].province ? this.stores[1].province : ''; // level_2 - provincia\r\n\t\tlet cityCode = this.searchCity !== '' ? this.searchCity : this.stores.length > 0 && this.stores[1].city ? this.stores[1].city : ''; // level_3 - città\r\n\t\tlet areaCode = this.searchArea !== '' ? this.searchArea : this.stores.length > 0 && this.stores[1].city ? this.stores[1].city : ''; // level_1 - area\r\n\t\tif (countryCode !== '') {\r\n\t\t\t// solo i mercati \"sbloccati\" per gli agenti\r\n\t\t\tif (agentsEnabledCountry.indexOf(countryCode) !== -1) {\r\n\t\t\t\t//facendo così, mentre per l'Italia riceviamo un provinceCode del tipo 'RM' (indipendente dalla lingua), per la Francia ci viene restituito 'Parigi' o 'Paris'\r\n\t\t\t\t//a seconda della lingua quindi per trovare il match dobbiamo registrare più \"coperture\" per gli agenti, in tutte le lingue\r\n\t\t\t\tagents = _.filter(this.agents, function (o) {\r\n\t\t\t\t\treturn o.countries_detail !== null &&\r\n\t\t\t\t\t\to.countries_detail.indexOf(countryCode) !== -1 &&\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t(o.administrative_area_level_2_detail !== null &&\r\n\t\t\t\t\t\t\t\to.administrative_area_level_2_detail.map(function (el) {\r\n\t\t\t\t\t\t\t\t\treturn el.trim();\r\n\t\t\t\t\t\t\t\t}).indexOf(provinceCode.trim()) !== -1\r\n\t\t\t\t\t\t\t) ||\r\n\t\t\t\t\t\t\t// controllo anche se google mi ha passato l'informazione che cerco (copertura agente administrative_level_2)\r\n\t\t\t\t\t\t\t// in un altro campo: administrative_level_1, administrative_level_3... Fondamentale per la Germania!\r\n\t\t\t\t\t\t\t(o.administrative_area_level_2_detail !== null &&\r\n\t\t\t\t\t\t\t\to.administrative_area_level_2_detail.map(function (el) {\r\n\t\t\t\t\t\t\t\t\treturn el.trim();\r\n\t\t\t\t\t\t\t\t}).indexOf(cityCode.trim()) !== -1\r\n\t\t\t\t\t\t\t) ||\r\n\t\t\t\t\t\t\t(o.administrative_area_level_2_detail !== null &&\r\n\t\t\t\t\t\t\t\to.administrative_area_level_2_detail.map(function (el) {\r\n\t\t\t\t\t\t\t\t\treturn el.trim();\r\n\t\t\t\t\t\t\t\t}).indexOf(areaCode.trim()) !== -1\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tagents = _.filter(this.agents, function (o) {\r\n\t\t\t\t\treturn o.countries_detail !== null &&\r\n\t\t\t\t\t\to.countries_detail.indexOf(countryCode) !== -1;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\t//non mettiamo il marker per l'agente\r\n\t\t//agents.forEach((agent) => {\r\n\t\t//\tconst geocoder = this.geocoder || new google.maps.Geocoder();\r\n\t\t//\tthis.geocoder = geocoder;\r\n\t\t//\tgeocoder.geocode({ address: agent.administrative_area_level_1 }, (results, status) => {\r\n\t\t//\t\tif (status == 'OK') {\r\n\t\t//\t\t\tagent.latitude = results[0].geometry.location.lat();\r\n\t\t//\t\t\tagent.longitude = results[0].geometry.location.lng();\r\n\t\t//\t\t} else {\r\n\t\t//\t\t\tagent.latitude = null;\r\n\t\t//\t\t\tagent.longitude = null;\r\n\t\t//\t\t}\r\n\t\t//\t});\r\n\t\t//});\r\n\t\tagents = _.sortBy(agents, o => o.order);\r\n\t\treturn agents;\r\n\t}\r\n\r\n\tcountryContainsStores(countryCode) {\r\n\t\tif (this.stores) {\r\n\t\t\tfor (let i = 0; i < this.stores.length; i++) {\r\n\t\t\t\tif (this.stores[i].countryCode === countryCode) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tboundsContainsStores(bounds) {\r\n\t\tif (this.stores) {\r\n\t\t\tfor (let i = 0; i < this.stores.length; i++) {\r\n\t\t\t\tif (this.stores[i].marker && bounds.contains(this.stores[i].marker.getPosition())) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetStoresByViewport() {\r\n\t\tlet visibleItems = [];\r\n\r\n\t\tif (this.stores) {\r\n\t\t\tfor (let i = 0; i < this.stores.length; i++) {\r\n\t\t\t\tif (this.stores[i].marker && this.map.getBounds().contains(this.stores[i].marker.getPosition())) {\r\n\t\t\t\t\tvisibleItems.push(this.stores[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvisibleItems = visibleItems.sort((a, b) => {\r\n\t\t\t//if (a.type === b.type) {\r\n\t\t\t\treturn a.distance - b.distance;\r\n\t\t\t//} else {\r\n\t\t\t//\treturn a.type - b.type;\r\n\t\t\t//}\r\n\t\t});\r\n\r\n\t\t// Se Belgio, mostro tutte le cards degli store oltre ai pin, non solo 3\r\n\t\tif (this.searchCountry === 'BE') {\r\n\t\t\treturn visibleItems;\r\n\t\t}\r\n\r\n\t\treturn visibleItems.slice(0, 3);\r\n\t}\r\n\r\n}\r\n\r\nStoreLocatorCtrl.$inject = ['$scope', '$timeout', 'DomService', 'ApiService'];\r\n\r\nexport default StoreLocatorCtrl;\r\n","import ContactStoreCtrl from './contactStore/contactStore.controller';\r\nimport HasDropdownDirective from './directives/has-dropdown.directive';\r\nimport HilightDirective from './directives/hilight.directive';\r\nimport ScrollDirective from './directives/scroll.directive';\r\nimport { ImageWithFeatures } from './filters/image-with-features.filter';\r\nimport { NotInFilter } from './filters/notIn.filter';\r\nimport { TrustedFilter } from './filters/trusted.filter';\r\nimport ControlMessagesDirective from './forms/control-messages.directive';\r\nimport ControlDirective from './forms/control.directive';\r\nimport ApiService from './services/api.service';\r\nimport DomService from './services/dom.service';\r\nimport LocationService from './shared/location.service';\r\nimport StateService from './shared/state.service';\r\nimport StoreLocatorCtrl from './store-locator/store-locator.controller';\r\n\r\nconst MODULE_NAME = 'store-locator';\r\n\r\nconst app = angular.module(MODULE_NAME, ['ngSanitize', 'jsonFormatter']);\r\n\r\n/*\r\napp.config(['$locationProvider', function($locationProvider) {\r\n\t$locationProvider.html5Mode(true).hashPrefix('*');\r\n}]);\r\n*/\r\n\r\napp.controller('ContactStoreCtrl', ContactStoreCtrl)\r\n\t.controller('StoreLocatorCtrl', StoreLocatorCtrl);\r\n\r\napp.factory('ApiService', ApiService.factory)\r\n\t.factory('DomService', DomService.factory)\r\n\t.factory('LocationService', LocationService.factory)\r\n\t.factory('StateService', StateService.factory);\r\n\r\napp.directive('control', ControlDirective.factory)\r\n\t.directive('controlMessages', ControlMessagesDirective.factory)\r\n\t.directive('hasDropdown', HasDropdownDirective.factory)\r\n\t.directive('hilight', HilightDirective.factory)\r\n\t.directive('scroll', ScrollDirective.factory)\r\n// .directive('selectWithAutocomplete', AutocompleteDirective.factory)\r\n// .directive('validate', ValidateDirective.factory)\r\n\r\napp.filter('imageWithFeatures', [ImageWithFeatures])\r\n\t.filter('notIn', ['$filter', NotInFilter])\r\n\t.filter('trusted', ['$sce', TrustedFilter]);\r\n\r\napp.run(['$compile', '$timeout', '$rootScope', function($compile, $timeout, $rootScope) {\r\n\tDomService.detect();\r\n}]);\r\n\r\nexport default MODULE_NAME;\r\n","import { default as AppModule } from './app.module.js';\r\n\r\nangular.bootstrap(document, [AppModule]);\r\n"],"names":["push_","event","dataLayer","window","push","console","log","GtmService","pageView","title","document","href","location","pathname","hostname","obj","Object","assign","dataLayerData","pageViewFilters","cat","filters","values","any","key","textValue","filterValue","value","selectedOption","options","find","option","name","encodeURIComponent","join","ContactStoreCtrl","$scope","$location","$timeout","$http","StateService","data","model","Collections","search","email","state","getState","ready","onSubmit","inputCaptcha","getElementById","Captcha","busy","post","then","success","d","Status","error","onInvalid","$broadcast","$inject","HasDropdownDirective","restrict","scope","link","element","attributes","controller","node","opened_","trigger","hasDropdown","querySelector","onClick","openDropdown","target","closeDropdown","onDocumentClick","clickedInside","contains","addDocumentListeners","$root","callback","droppedIn","undefined","$eval","removeDocumentListeners","droppedOut","$on","$node","classList","remove","opened","add","parentNode","addListeners","addEventListener","removeListeners","removeEventListener","factory","dropDownUid","HilightDirective","hilight","query","update","index","toLowerCase","indexOf","innerHTML","substring","length","$watch","current","previous","ScrollDirective","DomService","domService","scroll","subscription","scrollIntersection$","subscribe","$event","unsubscribe","ImageWithFeatures","images","features","url","image","has","forEach","f","NotInFilter","$filter","array","item","i","filter","TrustedFilter","$sce","trustAsResourceUrl","ControlMessagesDirective","templateUrl","transclude","formatLabel","string","prepend","expression","splitted","split","formatted","shift","uniqueId","errorElements","to","ControlDirective","$parse","template","control","ngModel","required","form","placeholder","source","label","require","pre","linkMethod","optionLabel","getOptions","number","type","field","replace","format","precision","validate","minLength","maxLength","Number","POSITIVE_INFINITY","min","max","focus","visible","updateView","$viewValue","$render","updateModel","$setViewValue","optionName","id","x","Array","isArray","map","s","onModelAdd","items","onModelRemove","splice","searchQuery","modelValue","onChange","$parent","onFilter","getType","onFocus","onBlur","scrollToError","getClasses","$valid","$invalid","$submitted","$touched","empty","onError","getMessages","$error","toggleVisibility","clearTimeout","setTimeout","top","reduce","Math","getBoundingClientRect","scrollTo","body","scrollTop","documentElement","STATIC","port","ApiService","http","api","storeLocator","all","isStatic","get","agentLocator","UnsubscriptionError_1","isArray_1","Rect","rect","right","bottom","left","width","height","set","intersectRect","r1","r2","fromNode","rect_","rects","getClientRects","boundingRect","setCenter","center","y","intersect","intersection","intersection_","dx","abs","dy","tween","from","friction","hasPassiveEvents","defineProperty","noop","e","DEFAULT_SCROLL_TARGET","hasWebglSupport","isIE","hasWebgl","ua","navigator","userAgent","msie","parseInt","trident","rv","edge","gl","debugInfo","vendor","renderer","canvas","createElement","WebGLRenderingContext","getContext","failIfMajorPerformanceCaveat","getExtension","getParameter","UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL","getOuterHeight","clientHeight","computedStyle","getComputedStyle","marginTop","marginBottom","borderTopWidth","borderBottomWidth","getOuterWidth","clientWidth","marginLeft","marginRight","borderLeftWidth","borderRightWidth","raf$","windowRect$","rafAndRect$","scroll$","secondaryScroll$","scrollAndRect$","smoothScroll$","selector","pipe","innerHeight","lastElementChild","offsetTop","offsetHeight","style","nodeTop","IMMEDIATE_SCROLL","offsetWidth","distinctUntilChanged","a","b","round","tap","smoothScroll$_","next","shareReplay","getStyleSheet","styleSheets","sheet","virtualScroll$","ruleIndex","insertRule","cssRules","rule","outerHeight_","deltaY","outerHeight","transform","virtualScroll$_","rafIntersection$","datas","windowRect","response","rafIntersection_","o","scrollIntersection_","secondaryScroll$_","appearOnLoad$","isCover","hasAttribute","first","appear$","visibility$","firstVisibility$","addCustomRules","addCustomSheet","overflow","visibility","msOverflowStyle","inner","appendChild","scrollBarWidth","removeChild","createTextNode","head","isDescendantOf","getScrollTop","scrollingElement","pageYOffset","scrollY","getScrollLeft","pageXOffset","scrollX","scrollLeft","detect","explorer","firefox","opera","chrome","safari","android","match","blackberry","ios","operamini","iemobile","mobile","overscroll","platform","getBattery","agent","html","keys","fromEvent","ready_","range","animationFrame","innerWidth","originalEvent","startWith","combineLatest","mainScroll$","Subject","previousTop","direction","merge","auditTime","diff","LocationService","keyOrValue","deserialize","serialized","json","atob","JSON","parse","serialize","q","stringify","btoa","getSerialization","DELAY","State","$rootScope","idle","isBusy","isError","isErroring","isSuccess","isSuccessing","button","errors","classes","addons","isReady","successing","errorring","enabled","errorMessage","labels","defaults","angular","extend","submitClass","IS_DEV","BASEPATH","ZOOM_LEVEL","MAX_DISTANCE","GOOGLE_MAPS","agentsEnabledCountry","continentAmerica","ExceptionEdilferrarese","k","v","ITEMS_PER_PAGE","StoreLocatorCtrl","apiService","storeLocatorSettings","apiKey","busyFind","busyLocation","busyCity","busyInfoAgents","requiredAddress","maxSearch","countSearch","searchCountry","visibleStores","visibleAgents","searchProvinceCode","searchCity","searchArea","mapCenter$","approximately","localizedStrings","LBL_DISTANZA_STORE","moreInfo","reachStore","LBL_RAGGIUNGERE_STORE","contactStore","LBL_CONTATTA_STORE","contactAgent","LBL_CONTATTA_AGENTE","initMap","onGoogleMapsLoaded","google","maps","script","setAttribute","$","attr","getElementsByTagName","debounceTime","takeUntil","position","visibleItems","getStoresByViewport","complete","mapOptions","zoom","LatLng","styles","mapElement","Map","startingMapBounds","currMkt","getItalyBounds","getWorldBounds","fitBounds","addListener","getCenter","gmap","autocompleteUnique","places","Autocomplete","address","city","getPlace","filteredInfoCity","address_components","address_component","types","includes","geocoder","Geocoder","geocode","results","status","$apply","loadAllStores","loadAllAgents","calculateDistance","lat1","lon1","lat2","lon2","unit","radlat1","PI","radlat2","theta","radtheta","dist","sin","cos","acos","clearMarkers","markerCluster","stores","marker","setMap","markerAgentCluster","agents","addMarkers","markers","store","latitude","longitude","content","zip","provinceCode","countryCode","telephone","website","floor","distance","lat","lng","icon","Marker","setMarkerWindow","scrollToStore","MarkerClusterer","imagePath","getStyles","textColor","setStyles","addAgentsMarkers","province","countries","goToMap","scrollIntoView","behavior","block","getGeolocation","geolocation","getCurrentPosition","coords","formatted_address","short_name","setInfoWindow","searchPosition","finally","setZoom","storeList","maxItems","Promise","resolve","agentList","loadFakeStores","fetch","mode","candidates","geometry","random","bounds","LatLngBounds","findNearStores","cod_stato","userCountry","removed","addMarker","removeMarker","slice","sort","viewport","closeMarkerWindow","countryContainsStores","checkExceptionEdilferrarese","_","storesByCountry","getStoresByCountry","getAgentsByInfo","storeEdilferrarese","searchRadius","searchBounds","Circle","radius","getBounds","boundsContainsStores","panToBounds","italyMainStore","panTo","message","markerWindow","InfoWindow","pixelOffset","Size","setPosition","setContent","open","close","storesNode","storeNode","onScroll","cityCode","areaCode","countries_detail","administrative_area_level_2_detail","el","trim","sortBy","order","getPosition","MODULE_NAME","app","module","directive","run","$compile","bootstrap","AppModule"],"mappings":"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"}