Index: trip-planner-front/node_modules/.cache/babel-webpack/16ef052bcb57cf4b5293796f0b210ce0.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/16ef052bcb57cf4b5293796f0b210ce0.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/node_modules/.cache/babel-webpack/16ef052bcb57cf4b5293796f0b210ce0.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from \"@angular/core\";\nimport * as i1 from \"../_services/city.service\";\nimport * as i2 from \"primeng/autocomplete\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"primeng/button\";\nimport * as i6 from \"@angular/material/core\";\n\nfunction ExploreComponent_mat_option_14_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-option\", 10);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const option_r1 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", option_r1.name);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", option_r1.name, \" \");\n  }\n}\n\nexport class ExploreComponent {\n  constructor(cityService) {\n    this.cityService = cityService;\n    this.loading = [false, false, false, false];\n    this.cities = [];\n    this.filteredCountries = [];\n    this.text = '';\n  }\n\n  ngOnInit() {\n    this.cityService.getAllCities().subscribe(cities => {\n      this.cities = cities;\n    });\n  }\n\n  search(event) {\n    let filtered = [];\n    let query = event.query;\n\n    for (let i = 0; i < this.cities.length; i++) {\n      let city = this.cities[i];\n\n      if (city.name.toLowerCase().indexOf(query.toLowerCase()) == 0) {\n        filtered.push(city);\n      }\n    }\n\n    this.filteredCountries = filtered;\n  }\n\n  load(index) {\n    this.loading[index] = true;\n    setTimeout(() => this.loading[index] = false, 1000);\n  }\n\n}\n\nExploreComponent.ɵfac = function ExploreComponent_Factory(t) {\n  return new (t || ExploreComponent)(i0.ɵɵdirectiveInject(i1.CityService));\n};\n\nExploreComponent.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n  type: ExploreComponent,\n  selectors: [[\"app-explore\"]],\n  decls: 18,\n  vars: 6,\n  consts: [[\"href\", \"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\", \"rel\", \"stylesheet\", \"integrity\", \"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\", \"crossorigin\", \"anonymous\"], [\"lang\", \"en\"], [\"charset\", \"utf-8\"], [1, \"navbar\", \"navbar-expand-sm\"], [1, \"navbar-brand\"], [1, \"navbar-nav\", \"ml-auto\"], [1, \"nav-item\"], [\"field\", \"name\", 3, \"ngModel\", \"minLength\", \"ngModelChange\", \"completeMethod\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"label\", \"Search\", \"icon\", \"pi pi-search\", \"id\", \"button\", 3, \"loading\", \"click\"], [3, \"value\"]],\n  template: function ExploreComponent_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelement(0, \"link\", 0);\n      i0.ɵɵelementStart(1, \"html\", 1);\n      i0.ɵɵelementStart(2, \"head\");\n      i0.ɵɵelement(3, \"meta\", 2);\n      i0.ɵɵelementStart(4, \"title\");\n      i0.ɵɵtext(5, \"Explore\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(6, \"body\");\n      i0.ɵɵelementStart(7, \"header\");\n      i0.ɵɵelementStart(8, \"nav\", 3);\n      i0.ɵɵelementStart(9, \"strong\", 4);\n      i0.ɵɵtext(10, \"Trivia Trip\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(11, \"ul\", 5);\n      i0.ɵɵelementStart(12, \"li\", 6);\n      i0.ɵɵelementStart(13, \"p-autoComplete\", 7);\n      i0.ɵɵlistener(\"ngModelChange\", function ExploreComponent_Template_p_autoComplete_ngModelChange_13_listener($event) {\n        return ctx.text = $event;\n      })(\"completeMethod\", function ExploreComponent_Template_p_autoComplete_completeMethod_13_listener($event) {\n        return ctx.search($event);\n      });\n      i0.ɵɵtemplate(14, ExploreComponent_mat_option_14_Template, 2, 2, \"mat-option\", 8);\n      i0.ɵɵpipe(15, \"async\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(16, \"p-button\", 9);\n      i0.ɵɵlistener(\"click\", function ExploreComponent_Template_p_button_click_16_listener() {\n        return ctx.load(0);\n      });\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelement(17, \"li\", 6);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵadvance(13);\n      i0.ɵɵproperty(\"ngModel\", ctx.text)(\"minLength\", 1);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngForOf\", i0.ɵɵpipeBind1(15, 4, ctx.filteredCountries));\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"loading\", ctx.loading[0]);\n    }\n  },\n  directives: [i2.AutoComplete, i3.NgControlStatus, i3.NgModel, i4.NgForOf, i5.Button, i6.MatOption],\n  pipes: [i4.AsyncPipe],\n  styles: [\"#button[_ngcontent-%COMP%]{\\r\\n    margin-left: 20px;\\r\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cGxvcmUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGlCQUFpQjtBQUNyQiIsImZpbGUiOiJleHBsb3JlLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjYnV0dG9ue1xyXG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XHJcbn0iXX0= */\"]\n});","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/src/app/explore/explore.component.ts"],"names":["i0","i1","i2","i3","i4","i5","i6","ExploreComponent_mat_option_14_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","option_r1","$implicit","ɵɵproperty","name","ɵɵadvance","ɵɵtextInterpolate1","ExploreComponent","constructor","cityService","loading","cities","filteredCountries","text","ngOnInit","getAllCities","subscribe","search","event","filtered","query","i","length","city","toLowerCase","indexOf","push","load","index","setTimeout","ɵfac","ExploreComponent_Factory","t","ɵɵdirectiveInject","CityService","ɵcmp","ɵɵdefineComponent","type","selectors","decls","vars","consts","template","ExploreComponent_Template","ɵɵelement","ɵɵlistener","ExploreComponent_Template_p_autoComplete_ngModelChange_13_listener","$event","ExploreComponent_Template_p_autoComplete_completeMethod_13_listener","ɵɵtemplate","ɵɵpipe","ExploreComponent_Template_p_button_click_16_listener","ɵɵpipeBind1","directives","AutoComplete","NgControlStatus","NgModel","NgForOf","Button","MatOption","pipes","AsyncPipe","styles"],"mappings":"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","sourcesContent":["import * as i0 from \"@angular/core\";\r\nimport * as i1 from \"../_services/city.service\";\r\nimport * as i2 from \"primeng/autocomplete\";\r\nimport * as i3 from \"@angular/forms\";\r\nimport * as i4 from \"@angular/common\";\r\nimport * as i5 from \"primeng/button\";\r\nimport * as i6 from \"@angular/material/core\";\r\nfunction ExploreComponent_mat_option_14_Template(rf, ctx) { if (rf & 1) {\r\n    i0.ɵɵelementStart(0, \"mat-option\", 10);\r\n    i0.ɵɵtext(1);\r\n    i0.ɵɵelementEnd();\r\n} if (rf & 2) {\r\n    const option_r1 = ctx.$implicit;\r\n    i0.ɵɵproperty(\"value\", option_r1.name);\r\n    i0.ɵɵadvance(1);\r\n    i0.ɵɵtextInterpolate1(\" \", option_r1.name, \" \");\r\n} }\r\nexport class ExploreComponent {\r\n    constructor(cityService) {\r\n        this.cityService = cityService;\r\n        this.loading = [false, false, false, false];\r\n        this.cities = [];\r\n        this.filteredCountries = [];\r\n        this.text = '';\r\n    }\r\n    ngOnInit() {\r\n        this.cityService.getAllCities().subscribe(cities => {\r\n            this.cities = cities;\r\n        });\r\n    }\r\n    search(event) {\r\n        let filtered = [];\r\n        let query = event.query;\r\n        for (let i = 0; i < this.cities.length; i++) {\r\n            let city = this.cities[i];\r\n            if (city.name.toLowerCase().indexOf(query.toLowerCase()) == 0) {\r\n                filtered.push(city);\r\n            }\r\n        }\r\n        this.filteredCountries = filtered;\r\n    }\r\n    load(index) {\r\n        this.loading[index] = true;\r\n        setTimeout(() => this.loading[index] = false, 1000);\r\n    }\r\n}\r\nExploreComponent.ɵfac = function ExploreComponent_Factory(t) { return new (t || ExploreComponent)(i0.ɵɵdirectiveInject(i1.CityService)); };\r\nExploreComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExploreComponent, selectors: [[\"app-explore\"]], decls: 18, vars: 6, consts: [[\"href\", \"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\", \"rel\", \"stylesheet\", \"integrity\", \"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\", \"crossorigin\", \"anonymous\"], [\"lang\", \"en\"], [\"charset\", \"utf-8\"], [1, \"navbar\", \"navbar-expand-sm\"], [1, \"navbar-brand\"], [1, \"navbar-nav\", \"ml-auto\"], [1, \"nav-item\"], [\"field\", \"name\", 3, \"ngModel\", \"minLength\", \"ngModelChange\", \"completeMethod\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"label\", \"Search\", \"icon\", \"pi pi-search\", \"id\", \"button\", 3, \"loading\", \"click\"], [3, \"value\"]], template: function ExploreComponent_Template(rf, ctx) { if (rf & 1) {\r\n        i0.ɵɵelement(0, \"link\", 0);\r\n        i0.ɵɵelementStart(1, \"html\", 1);\r\n        i0.ɵɵelementStart(2, \"head\");\r\n        i0.ɵɵelement(3, \"meta\", 2);\r\n        i0.ɵɵelementStart(4, \"title\");\r\n        i0.ɵɵtext(5, \"Explore\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(6, \"body\");\r\n        i0.ɵɵelementStart(7, \"header\");\r\n        i0.ɵɵelementStart(8, \"nav\", 3);\r\n        i0.ɵɵelementStart(9, \"strong\", 4);\r\n        i0.ɵɵtext(10, \"Trivia Trip\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(11, \"ul\", 5);\r\n        i0.ɵɵelementStart(12, \"li\", 6);\r\n        i0.ɵɵelementStart(13, \"p-autoComplete\", 7);\r\n        i0.ɵɵlistener(\"ngModelChange\", function ExploreComponent_Template_p_autoComplete_ngModelChange_13_listener($event) { return ctx.text = $event; })(\"completeMethod\", function ExploreComponent_Template_p_autoComplete_completeMethod_13_listener($event) { return ctx.search($event); });\r\n        i0.ɵɵtemplate(14, ExploreComponent_mat_option_14_Template, 2, 2, \"mat-option\", 8);\r\n        i0.ɵɵpipe(15, \"async\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(16, \"p-button\", 9);\r\n        i0.ɵɵlistener(\"click\", function ExploreComponent_Template_p_button_click_16_listener() { return ctx.load(0); });\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelement(17, \"li\", 6);\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n    } if (rf & 2) {\r\n        i0.ɵɵadvance(13);\r\n        i0.ɵɵproperty(\"ngModel\", ctx.text)(\"minLength\", 1);\r\n        i0.ɵɵadvance(1);\r\n        i0.ɵɵproperty(\"ngForOf\", i0.ɵɵpipeBind1(15, 4, ctx.filteredCountries));\r\n        i0.ɵɵadvance(2);\r\n        i0.ɵɵproperty(\"loading\", ctx.loading[0]);\r\n    } }, directives: [i2.AutoComplete, i3.NgControlStatus, i3.NgModel, i4.NgForOf, i5.Button, i6.MatOption], pipes: [i4.AsyncPipe], styles: [\"#button[_ngcontent-%COMP%]{\\r\\n    margin-left: 20px;\\r\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cGxvcmUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGlCQUFpQjtBQUNyQiIsImZpbGUiOiJleHBsb3JlLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjYnV0dG9ue1xyXG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XHJcbn0iXX0= */\"] });\r\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/58453a911fe03760c7dedb45f71eaf4f.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/58453a911fe03760c7dedb45f71eaf4f.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/node_modules/.cache/babel-webpack/58453a911fe03760c7dedb45f71eaf4f.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import { City } from '../_models/city';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../_services/city.service\";\nimport * as i2 from \"primeng/autocomplete\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"@angular/common\";\nexport class ExploreComponent {\n  constructor(cityService) {\n    this.cityService = cityService;\n    this.cities = [];\n    this.filteredCountries = [];\n    this.selectedCity = new City();\n    this.text = '';\n  }\n\n  ngOnInit() {\n    this.cityService.getAllCities().subscribe(cities => {\n      this.cities = cities;\n    });\n  }\n\n  search(event) {\n    let filtered = [];\n    let query = event.query;\n\n    for (let i = 0; i < this.cities.length; i++) {\n      let country = this.cities[i];\n\n      if (country.name.toLowerCase().indexOf(query.toLowerCase()) == 0) {\n        filtered.push(country);\n      }\n    }\n\n    this.filteredCountries = filtered;\n    console.log(this.filteredCountries);\n  }\n\n}\n\nExploreComponent.ɵfac = function ExploreComponent_Factory(t) {\n  return new (t || ExploreComponent)(i0.ɵɵdirectiveInject(i1.CityService));\n};\n\nExploreComponent.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n  type: ExploreComponent,\n  selectors: [[\"app-explore\"]],\n  decls: 19,\n  vars: 5,\n  consts: [[\"href\", \"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\", \"rel\", \"stylesheet\", \"integrity\", \"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\", \"crossorigin\", \"anonymous\"], [\"lang\", \"en\"], [\"charset\", \"utf-8\"], [1, \"navbar\", \"navbar-expand-sm\"], [1, \"navbar-brand\"], [1, \"navbar-nav\", \"ml-auto\"], [1, \"nav-item\"], [\"field\", \"name\", 3, \"ngModel\", \"suggestions\", \"minLength\", \"ngModelChange\", \"completeMethod\"], [\"role\", \"main\", 2, \"background-color\", \"#F9F2E8\"], [1, \"bg-dark\", \"text-center\", \"text-white\"]],\n  template: function ExploreComponent_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelement(0, \"link\", 0);\n      i0.ɵɵelementStart(1, \"html\", 1);\n      i0.ɵɵelementStart(2, \"head\");\n      i0.ɵɵelement(3, \"meta\", 2);\n      i0.ɵɵelement(4, \"title\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(5, \"body\");\n      i0.ɵɵelementStart(6, \"header\");\n      i0.ɵɵelementStart(7, \"nav\", 3);\n      i0.ɵɵelementStart(8, \"strong\", 4);\n      i0.ɵɵtext(9, \"Trivia Trip\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(10, \"ul\", 5);\n      i0.ɵɵelementStart(11, \"li\", 6);\n      i0.ɵɵelementStart(12, \"p-autoComplete\", 7);\n      i0.ɵɵlistener(\"ngModelChange\", function ExploreComponent_Template_p_autoComplete_ngModelChange_12_listener($event) {\n        return ctx.text = $event;\n      })(\"completeMethod\", function ExploreComponent_Template_p_autoComplete_completeMethod_12_listener($event) {\n        return ctx.search($event);\n      });\n      i0.ɵɵpipe(13, \"async\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelement(14, \"li\", 6);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(15, \"main\", 8);\n      i0.ɵɵtext(16, \" wfeefew \");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelement(17, \"br\");\n      i0.ɵɵelement(18, \"footer\", 9);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵadvance(12);\n      i0.ɵɵproperty(\"ngModel\", ctx.text)(\"suggestions\", i0.ɵɵpipeBind1(13, 3, ctx.cities))(\"minLength\", 1);\n    }\n  },\n  directives: [i2.AutoComplete, i3.NgControlStatus, i3.NgModel],\n  pipes: [i4.AsyncPipe],\n  styles: [\"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJleHBsb3JlLmNvbXBvbmVudC5jc3MifQ== */\"]\n});","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/src/app/explore/explore.component.ts"],"names":["City","i0","i1","i2","i3","i4","ExploreComponent","constructor","cityService","cities","filteredCountries","selectedCity","text","ngOnInit","getAllCities","subscribe","search","event","filtered","query","i","length","country","name","toLowerCase","indexOf","push","console","log","ɵfac","ExploreComponent_Factory","t","ɵɵdirectiveInject","CityService","ɵcmp","ɵɵdefineComponent","type","selectors","decls","vars","consts","template","ExploreComponent_Template","rf","ctx","ɵɵelement","ɵɵelementStart","ɵɵelementEnd","ɵɵtext","ɵɵlistener","ExploreComponent_Template_p_autoComplete_ngModelChange_12_listener","$event","ExploreComponent_Template_p_autoComplete_completeMethod_12_listener","ɵɵpipe","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","directives","AutoComplete","NgControlStatus","NgModel","pipes","AsyncPipe","styles"],"mappings":"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","sourcesContent":["import { City } from '../_models/city';\r\nimport * as i0 from \"@angular/core\";\r\nimport * as i1 from \"../_services/city.service\";\r\nimport * as i2 from \"primeng/autocomplete\";\r\nimport * as i3 from \"@angular/forms\";\r\nimport * as i4 from \"@angular/common\";\r\nexport class ExploreComponent {\r\n    constructor(cityService) {\r\n        this.cityService = cityService;\r\n        this.cities = [];\r\n        this.filteredCountries = [];\r\n        this.selectedCity = new City();\r\n        this.text = '';\r\n    }\r\n    ngOnInit() {\r\n        this.cityService.getAllCities().subscribe(cities => {\r\n            this.cities = cities;\r\n        });\r\n    }\r\n    search(event) {\r\n        let filtered = [];\r\n        let query = event.query;\r\n        for (let i = 0; i < this.cities.length; i++) {\r\n            let country = this.cities[i];\r\n            if (country.name.toLowerCase().indexOf(query.toLowerCase()) == 0) {\r\n                filtered.push(country);\r\n            }\r\n        }\r\n        this.filteredCountries = filtered;\r\n        console.log(this.filteredCountries);\r\n    }\r\n}\r\nExploreComponent.ɵfac = function ExploreComponent_Factory(t) { return new (t || ExploreComponent)(i0.ɵɵdirectiveInject(i1.CityService)); };\r\nExploreComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExploreComponent, selectors: [[\"app-explore\"]], decls: 19, vars: 5, consts: [[\"href\", \"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\", \"rel\", \"stylesheet\", \"integrity\", \"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\", \"crossorigin\", \"anonymous\"], [\"lang\", \"en\"], [\"charset\", \"utf-8\"], [1, \"navbar\", \"navbar-expand-sm\"], [1, \"navbar-brand\"], [1, \"navbar-nav\", \"ml-auto\"], [1, \"nav-item\"], [\"field\", \"name\", 3, \"ngModel\", \"suggestions\", \"minLength\", \"ngModelChange\", \"completeMethod\"], [\"role\", \"main\", 2, \"background-color\", \"#F9F2E8\"], [1, \"bg-dark\", \"text-center\", \"text-white\"]], template: function ExploreComponent_Template(rf, ctx) { if (rf & 1) {\r\n        i0.ɵɵelement(0, \"link\", 0);\r\n        i0.ɵɵelementStart(1, \"html\", 1);\r\n        i0.ɵɵelementStart(2, \"head\");\r\n        i0.ɵɵelement(3, \"meta\", 2);\r\n        i0.ɵɵelement(4, \"title\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(5, \"body\");\r\n        i0.ɵɵelementStart(6, \"header\");\r\n        i0.ɵɵelementStart(7, \"nav\", 3);\r\n        i0.ɵɵelementStart(8, \"strong\", 4);\r\n        i0.ɵɵtext(9, \"Trivia Trip\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(10, \"ul\", 5);\r\n        i0.ɵɵelementStart(11, \"li\", 6);\r\n        i0.ɵɵelementStart(12, \"p-autoComplete\", 7);\r\n        i0.ɵɵlistener(\"ngModelChange\", function ExploreComponent_Template_p_autoComplete_ngModelChange_12_listener($event) { return ctx.text = $event; })(\"completeMethod\", function ExploreComponent_Template_p_autoComplete_completeMethod_12_listener($event) { return ctx.search($event); });\r\n        i0.ɵɵpipe(13, \"async\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelement(14, \"li\", 6);\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(15, \"main\", 8);\r\n        i0.ɵɵtext(16, \" wfeefew \");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelement(17, \"br\");\r\n        i0.ɵɵelement(18, \"footer\", 9);\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n    } if (rf & 2) {\r\n        i0.ɵɵadvance(12);\r\n        i0.ɵɵproperty(\"ngModel\", ctx.text)(\"suggestions\", i0.ɵɵpipeBind1(13, 3, ctx.cities))(\"minLength\", 1);\r\n    } }, directives: [i2.AutoComplete, i3.NgControlStatus, i3.NgModel], pipes: [i4.AsyncPipe], styles: [\"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJleHBsb3JlLmNvbXBvbmVudC5jc3MifQ== */\"] });\r\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/7265faec5dc8ae5fe778de6aa63116af.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/7265faec5dc8ae5fe778de6aa63116af.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/node_modules/.cache/babel-webpack/7265faec5dc8ae5fe778de6aa63116af.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { InputTextModule } from 'primeng/inputtext';\nimport * as i4 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport * as i5 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i2 from '@angular/cdk/scrolling';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nconst _c0 = [\"container\"];\nconst _c1 = [\"in\"];\nconst _c2 = [\"multiIn\"];\nconst _c3 = [\"multiContainer\"];\nconst _c4 = [\"ddBtn\"];\n\nconst _c5 = function (a0, a1) {\n  return {\n    \"p-autocomplete-dd-input\": a0,\n    \"p-disabled\": a1\n  };\n};\n\nfunction AutoComplete_input_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r8 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"input\", 7, 8);\n    i0.ɵɵlistener(\"click\", function AutoComplete_input_2_Template_input_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r7 = i0.ɵɵnextContext();\n      return ctx_r7.onInputClick($event);\n    })(\"input\", function AutoComplete_input_2_Template_input_input_0_listener($event) {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r9 = i0.ɵɵnextContext();\n      return ctx_r9.onInput($event);\n    })(\"keydown\", function AutoComplete_input_2_Template_input_keydown_0_listener($event) {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r10 = i0.ɵɵnextContext();\n      return ctx_r10.onKeydown($event);\n    })(\"keyup\", function AutoComplete_input_2_Template_input_keyup_0_listener($event) {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r11 = i0.ɵɵnextContext();\n      return ctx_r11.onKeyup($event);\n    })(\"focus\", function AutoComplete_input_2_Template_input_focus_0_listener($event) {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r12 = i0.ɵɵnextContext();\n      return ctx_r12.onInputFocus($event);\n    })(\"blur\", function AutoComplete_input_2_Template_input_blur_0_listener($event) {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r13 = i0.ɵɵnextContext();\n      return ctx_r13.onInputBlur($event);\n    })(\"change\", function AutoComplete_input_2_Template_input_change_0_listener($event) {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r14 = i0.ɵɵnextContext();\n      return ctx_r14.onInputChange($event);\n    })(\"paste\", function AutoComplete_input_2_Template_input_paste_0_listener($event) {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r15 = i0.ɵɵnextContext();\n      return ctx_r15.onInputPaste($event);\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵclassMap(ctx_r1.inputStyleClass);\n    i0.ɵɵproperty(\"ngStyle\", ctx_r1.inputStyle)(\"autocomplete\", ctx_r1.autocomplete)(\"ngClass\", i0.ɵɵpureFunction2(23, _c5, ctx_r1.dropdown, ctx_r1.disabled))(\"value\", ctx_r1.inputFieldValue)(\"readonly\", ctx_r1.readonly)(\"disabled\", ctx_r1.disabled);\n    i0.ɵɵattribute(\"type\", ctx_r1.type)(\"id\", ctx_r1.inputId)(\"required\", ctx_r1.required)(\"name\", ctx_r1.name)(\"aria-controls\", ctx_r1.listId)(\"aria-expanded\", ctx_r1.overlayVisible)(\"aria-activedescendant\", \"p-highlighted-option\")(\"autofocus\", ctx_r1.autofocus)(\"placeholder\", ctx_r1.placeholder)(\"size\", ctx_r1.size)(\"maxlength\", ctx_r1.maxlength)(\"tabindex\", ctx_r1.tabindex)(\"aria-label\", ctx_r1.ariaLabel)(\"aria-labelledby\", ctx_r1.ariaLabelledBy)(\"aria-required\", ctx_r1.required);\n  }\n}\n\nfunction AutoComplete_ul_3_li_2_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction AutoComplete_ul_3_li_2_span_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 20);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const val_r19 = i0.ɵɵnextContext().$implicit;\n    const ctx_r22 = i0.ɵɵnextContext(2);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate(ctx_r22.resolveFieldData(val_r19));\n  }\n}\n\nfunction AutoComplete_ul_3_li_2_span_4_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r26 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"span\", 21);\n    i0.ɵɵlistener(\"click\", function AutoComplete_ul_3_li_2_span_4_Template_span_click_0_listener() {\n      i0.ɵɵrestoreView(_r26);\n      i0.ɵɵnextContext();\n\n      const _r20 = i0.ɵɵreference(1);\n\n      const ctx_r25 = i0.ɵɵnextContext(2);\n      return ctx_r25.removeItem(_r20);\n    });\n    i0.ɵɵelementEnd();\n  }\n}\n\nconst _c6 = function (a0) {\n  return {\n    $implicit: a0\n  };\n};\n\nfunction AutoComplete_ul_3_li_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"li\", 15, 16);\n    i0.ɵɵtemplate(2, AutoComplete_ul_3_li_2_ng_container_2_Template, 1, 0, \"ng-container\", 17);\n    i0.ɵɵtemplate(3, AutoComplete_ul_3_li_2_span_3_Template, 2, 1, \"span\", 18);\n    i0.ɵɵtemplate(4, AutoComplete_ul_3_li_2_span_4_Template, 1, 0, \"span\", 19);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const val_r19 = ctx.$implicit;\n    const ctx_r17 = i0.ɵɵnextContext(2);\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r17.selectedItemTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(4, _c6, val_r19));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !ctx_r17.selectedItemTemplate);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !ctx_r17.disabled && !ctx_r17.readonly);\n  }\n}\n\nconst _c7 = function (a0, a1) {\n  return {\n    \"p-disabled\": a0,\n    \"p-focus\": a1\n  };\n};\n\nfunction AutoComplete_ul_3_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r28 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"ul\", 9, 10);\n    i0.ɵɵlistener(\"click\", function AutoComplete_ul_3_Template_ul_click_0_listener() {\n      i0.ɵɵrestoreView(_r28);\n\n      const _r18 = i0.ɵɵreference(5);\n\n      return _r18.focus();\n    });\n    i0.ɵɵtemplate(2, AutoComplete_ul_3_li_2_Template, 5, 6, \"li\", 11);\n    i0.ɵɵelementStart(3, \"li\", 12);\n    i0.ɵɵelementStart(4, \"input\", 13, 14);\n    i0.ɵɵlistener(\"input\", function AutoComplete_ul_3_Template_input_input_4_listener($event) {\n      i0.ɵɵrestoreView(_r28);\n      const ctx_r29 = i0.ɵɵnextContext();\n      return ctx_r29.onInput($event);\n    })(\"click\", function AutoComplete_ul_3_Template_input_click_4_listener($event) {\n      i0.ɵɵrestoreView(_r28);\n      const ctx_r30 = i0.ɵɵnextContext();\n      return ctx_r30.onInputClick($event);\n    })(\"keydown\", function AutoComplete_ul_3_Template_input_keydown_4_listener($event) {\n      i0.ɵɵrestoreView(_r28);\n      const ctx_r31 = i0.ɵɵnextContext();\n      return ctx_r31.onKeydown($event);\n    })(\"keyup\", function AutoComplete_ul_3_Template_input_keyup_4_listener($event) {\n      i0.ɵɵrestoreView(_r28);\n      const ctx_r32 = i0.ɵɵnextContext();\n      return ctx_r32.onKeyup($event);\n    })(\"focus\", function AutoComplete_ul_3_Template_input_focus_4_listener($event) {\n      i0.ɵɵrestoreView(_r28);\n      const ctx_r33 = i0.ɵɵnextContext();\n      return ctx_r33.onInputFocus($event);\n    })(\"blur\", function AutoComplete_ul_3_Template_input_blur_4_listener($event) {\n      i0.ɵɵrestoreView(_r28);\n      const ctx_r34 = i0.ɵɵnextContext();\n      return ctx_r34.onInputBlur($event);\n    })(\"change\", function AutoComplete_ul_3_Template_input_change_4_listener($event) {\n      i0.ɵɵrestoreView(_r28);\n      const ctx_r35 = i0.ɵɵnextContext();\n      return ctx_r35.onInputChange($event);\n    })(\"paste\", function AutoComplete_ul_3_Template_input_paste_4_listener($event) {\n      i0.ɵɵrestoreView(_r28);\n      const ctx_r36 = i0.ɵɵnextContext();\n      return ctx_r36.onInputPaste($event);\n    });\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r2 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(20, _c7, ctx_r2.disabled, ctx_r2.focus));\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngForOf\", ctx_r2.value);\n    i0.ɵɵadvance(2);\n    i0.ɵɵclassMap(ctx_r2.inputStyleClass);\n    i0.ɵɵproperty(\"disabled\", ctx_r2.disabled)(\"readonly\", ctx_r2.readonly)(\"autocomplete\", ctx_r2.autocomplete)(\"ngStyle\", ctx_r2.inputStyle);\n    i0.ɵɵattribute(\"type\", ctx_r2.type)(\"id\", ctx_r2.inputId)(\"placeholder\", ctx_r2.value && ctx_r2.value.length ? null : ctx_r2.placeholder)(\"tabindex\", ctx_r2.tabindex)(\"maxlength\", ctx_r2.maxlength)(\"autofocus\", ctx_r2.autofocus)(\"aria-label\", ctx_r2.ariaLabel)(\"aria-labelledby\", ctx_r2.ariaLabelledBy)(\"aria-required\", ctx_r2.required)(\"aria-controls\", ctx_r2.listId)(\"aria-expanded\", ctx_r2.overlayVisible)(\"aria-activedescendant\", \"p-highlighted-option\");\n  }\n}\n\nfunction AutoComplete_i_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"i\", 22);\n  }\n}\n\nfunction AutoComplete_button_5_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r39 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 23, 24);\n    i0.ɵɵlistener(\"click\", function AutoComplete_button_5_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r39);\n      const ctx_r38 = i0.ɵɵnextContext();\n      return ctx_r38.handleDropdownClick($event);\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r4 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"icon\", ctx_r4.dropdownIcon)(\"disabled\", ctx_r4.disabled);\n    i0.ɵɵattribute(\"aria-label\", ctx_r4.dropdownAriaLabel)(\"tabindex\", ctx_r4.tabindex);\n  }\n}\n\nfunction AutoComplete_div_6_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction AutoComplete_div_6_ng_container_4_ng_template_1_span_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\");\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const optgroup_r48 = i0.ɵɵnextContext().$implicit;\n    const ctx_r49 = i0.ɵɵnextContext(3);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate(ctx_r49.getOptionGroupLabel(optgroup_r48) || \"empty\");\n  }\n}\n\nfunction AutoComplete_div_6_ng_container_4_ng_template_1_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction AutoComplete_div_6_ng_container_4_ng_template_1_ng_container_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction AutoComplete_div_6_ng_container_4_ng_template_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"li\", 32);\n    i0.ɵɵtemplate(1, AutoComplete_div_6_ng_container_4_ng_template_1_span_1_Template, 2, 1, \"span\", 29);\n    i0.ɵɵtemplate(2, AutoComplete_div_6_ng_container_4_ng_template_1_ng_container_2_Template, 1, 0, \"ng-container\", 17);\n    i0.ɵɵelementEnd();\n    i0.ɵɵtemplate(3, AutoComplete_div_6_ng_container_4_ng_template_1_ng_container_3_Template, 1, 0, \"ng-container\", 17);\n  }\n\n  if (rf & 2) {\n    const optgroup_r48 = ctx.$implicit;\n    i0.ɵɵnextContext(2);\n\n    const _r44 = i0.ɵɵreference(7);\n\n    const ctx_r47 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !ctx_r47.groupTemplate);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r47.groupTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(5, _c6, optgroup_r48));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", _r44)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(7, _c6, ctx_r47.getOptionGroupChildren(optgroup_r48)));\n  }\n}\n\nfunction AutoComplete_div_6_ng_container_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, AutoComplete_div_6_ng_container_4_ng_template_1_Template, 4, 9, \"ng-template\", 31);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r42 = i0.ɵɵnextContext(2);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngForOf\", ctx_r42.suggestions);\n  }\n}\n\nfunction AutoComplete_div_6_ng_container_5_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction AutoComplete_div_6_ng_container_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, AutoComplete_div_6_ng_container_5_ng_container_1_Template, 1, 0, \"ng-container\", 17);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    i0.ɵɵnextContext();\n\n    const _r44 = i0.ɵɵreference(7);\n\n    const ctx_r43 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", _r44)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c6, ctx_r43.suggestions));\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_ng_container_0_li_1_span_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\");\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const option_r60 = i0.ɵɵnextContext().$implicit;\n    const ctx_r62 = i0.ɵɵnextContext(4);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate(ctx_r62.resolveFieldData(option_r60));\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_ng_container_0_li_1_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nconst _c8 = function (a0) {\n  return {\n    \"p-highlight\": a0\n  };\n};\n\nconst _c9 = function (a0, a1) {\n  return {\n    $implicit: a0,\n    index: a1\n  };\n};\n\nfunction AutoComplete_div_6_ng_template_6_ng_container_0_li_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r66 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"li\", 37);\n    i0.ɵɵlistener(\"click\", function AutoComplete_div_6_ng_template_6_ng_container_0_li_1_Template_li_click_0_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r66);\n      const option_r60 = restoredCtx.$implicit;\n      const ctx_r65 = i0.ɵɵnextContext(4);\n      return ctx_r65.selectItem(option_r60);\n    });\n    i0.ɵɵtemplate(1, AutoComplete_div_6_ng_template_6_ng_container_0_li_1_span_1_Template, 2, 1, \"span\", 29);\n    i0.ɵɵtemplate(2, AutoComplete_div_6_ng_template_6_ng_container_0_li_1_ng_container_2_Template, 1, 0, \"ng-container\", 17);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const option_r60 = ctx.$implicit;\n    const idx_r61 = ctx.index;\n    const ctx_r59 = i0.ɵɵnextContext(4);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(5, _c8, option_r60 === ctx_r59.highlightOption))(\"id\", ctx_r59.highlightOption == option_r60 ? \"p-highlighted-option\" : \"\");\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !ctx_r59.itemTemplate);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r59.itemTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(7, _c9, option_r60, idx_r61));\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_ng_container_0_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, AutoComplete_div_6_ng_template_6_ng_container_0_li_1_Template, 3, 10, \"li\", 36);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const suggestionsToDisplay_r54 = i0.ɵɵnextContext().$implicit;\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngForOf\", suggestionsToDisplay_r54);\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_ng_container_1_span_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\");\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const option_r70 = i0.ɵɵnextContext().$implicit;\n    const ctx_r77 = i0.ɵɵnextContext(5);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate(ctx_r77.resolveFieldData(option_r70));\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_ng_container_1_ng_container_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nconst _c10 = function (a0) {\n  return {\n    \"height\": a0\n  };\n};\n\nfunction AutoComplete_div_6_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r81 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵelementStart(1, \"li\", 41);\n    i0.ɵɵlistener(\"click\", function AutoComplete_div_6_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_ng_container_1_Template_li_click_1_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r81);\n      const option_r70 = restoredCtx.$implicit;\n      const ctx_r80 = i0.ɵɵnextContext(5);\n      return ctx_r80.selectItem(option_r70);\n    });\n    i0.ɵɵtemplate(2, AutoComplete_div_6_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_ng_container_1_span_2_Template, 2, 1, \"span\", 29);\n    i0.ɵɵtemplate(3, AutoComplete_div_6_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_ng_container_1_ng_container_3_Template, 1, 0, \"ng-container\", 17);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const option_r70 = ctx.$implicit;\n    const i_r71 = ctx.index;\n    const ctx_r69 = i0.ɵɵnextContext(5);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(6, _c8, option_r70 === ctx_r69.highlightOption))(\"ngStyle\", i0.ɵɵpureFunction1(8, _c10, ctx_r69.itemSize + \"px\"))(\"id\", ctx_r69.highlightOption == option_r70 ? \"p-highlighted-option\" : \"\");\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !ctx_r69.itemTemplate);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r69.itemTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(10, _c9, option_r70, i_r71));\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"cdk-virtual-scroll-viewport\", 39);\n    i0.ɵɵtemplate(1, AutoComplete_div_6_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_ng_container_1_Template, 4, 13, \"ng-container\", 40);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const suggestionsToDisplay_r54 = i0.ɵɵnextContext(2).$implicit;\n    const ctx_r68 = i0.ɵɵnextContext(2);\n    i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction1(3, _c10, ctx_r68.scrollHeight))(\"itemSize\", ctx_r68.itemSize);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"cdkVirtualForOf\", suggestionsToDisplay_r54);\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_ng_template_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵtemplate(0, AutoComplete_div_6_ng_template_6_ng_template_1_cdk_virtual_scroll_viewport_0_Template, 2, 5, \"cdk-virtual-scroll-viewport\", 38);\n  }\n\n  if (rf & 2) {\n    const ctx_r57 = i0.ɵɵnextContext(3);\n    i0.ɵɵproperty(\"ngIf\", ctx_r57.virtualScroll && !ctx_r57.noResults);\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_li_3_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r83 = i0.ɵɵnextContext(4);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", ctx_r83.emptyMessageLabel, \" \");\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_li_3_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0, null, 43);\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_li_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"li\", 42);\n    i0.ɵɵtemplate(1, AutoComplete_div_6_ng_template_6_li_3_ng_container_1_Template, 2, 1, \"ng-container\", 33);\n    i0.ɵɵtemplate(2, AutoComplete_div_6_ng_template_6_li_3_ng_container_2_Template, 2, 0, \"ng-container\", 27);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r58 = i0.ɵɵnextContext(3);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !ctx_r58.emptyTemplate)(\"ngIfElse\", ctx_r58.empty);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r58.emptyTemplate);\n  }\n}\n\nfunction AutoComplete_div_6_ng_template_6_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵtemplate(0, AutoComplete_div_6_ng_template_6_ng_container_0_Template, 2, 1, \"ng-container\", 33);\n    i0.ɵɵtemplate(1, AutoComplete_div_6_ng_template_6_ng_template_1_Template, 1, 1, \"ng-template\", null, 34, i0.ɵɵtemplateRefExtractor);\n    i0.ɵɵtemplate(3, AutoComplete_div_6_ng_template_6_li_3_Template, 3, 3, \"li\", 35);\n  }\n\n  if (rf & 2) {\n    const _r56 = i0.ɵɵreference(2);\n\n    const ctx_r45 = i0.ɵɵnextContext(2);\n    i0.ɵɵproperty(\"ngIf\", !ctx_r45.virtualScroll)(\"ngIfElse\", _r56);\n    i0.ɵɵadvance(3);\n    i0.ɵɵproperty(\"ngIf\", ctx_r45.noResults && ctx_r45.showEmptyMessage);\n  }\n}\n\nfunction AutoComplete_div_6_ng_container_8_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nconst _c11 = function () {\n  return [\"p-autocomplete-panel p-component\"];\n};\n\nconst _c12 = function (a0, a1) {\n  return {\n    showTransitionParams: a0,\n    hideTransitionParams: a1\n  };\n};\n\nconst _c13 = function (a1) {\n  return {\n    value: \"visible\",\n    params: a1\n  };\n};\n\nconst _c14 = function (a0) {\n  return {\n    \"p-autocomplete-virtualscroll\": a0\n  };\n};\n\nfunction AutoComplete_div_6_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r87 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"div\", 25, 26);\n    i0.ɵɵlistener(\"click\", function AutoComplete_div_6_Template_div_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r87);\n      const ctx_r86 = i0.ɵɵnextContext();\n      return ctx_r86.onOverlayClick($event);\n    })(\"@overlayAnimation.start\", function AutoComplete_div_6_Template_div_animation_overlayAnimation_start_0_listener($event) {\n      i0.ɵɵrestoreView(_r87);\n      const ctx_r88 = i0.ɵɵnextContext();\n      return ctx_r88.onOverlayAnimationStart($event);\n    })(\"@overlayAnimation.done\", function AutoComplete_div_6_Template_div_animation_overlayAnimation_done_0_listener($event) {\n      i0.ɵɵrestoreView(_r87);\n      const ctx_r89 = i0.ɵɵnextContext();\n      return ctx_r89.onOverlayAnimationEnd($event);\n    });\n    i0.ɵɵtemplate(2, AutoComplete_div_6_ng_container_2_Template, 1, 0, \"ng-container\", 27);\n    i0.ɵɵelementStart(3, \"ul\", 28);\n    i0.ɵɵtemplate(4, AutoComplete_div_6_ng_container_4_Template, 2, 1, \"ng-container\", 29);\n    i0.ɵɵtemplate(5, AutoComplete_div_6_ng_container_5_Template, 2, 4, \"ng-container\", 29);\n    i0.ɵɵtemplate(6, AutoComplete_div_6_ng_template_6_Template, 4, 3, \"ng-template\", null, 30, i0.ɵɵtemplateRefExtractor);\n    i0.ɵɵelementEnd();\n    i0.ɵɵtemplate(8, AutoComplete_div_6_ng_container_8_Template, 1, 0, \"ng-container\", 27);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r5 = i0.ɵɵnextContext();\n    i0.ɵɵclassMap(ctx_r5.panelStyleClass);\n    i0.ɵɵstyleProp(\"max-height\", ctx_r5.virtualScroll ? \"auto\" : ctx_r5.scrollHeight);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction0(13, _c11))(\"ngStyle\", ctx_r5.panelStyle)(\"@overlayAnimation\", i0.ɵɵpureFunction1(17, _c13, i0.ɵɵpureFunction2(14, _c12, ctx_r5.showTransitionOptions, ctx_r5.hideTransitionOptions)));\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.headerTemplate);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(19, _c14, ctx_r5.virtualScroll));\n    i0.ɵɵattribute(\"id\", ctx_r5.listId);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r5.group);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !ctx_r5.group);\n    i0.ɵɵadvance(3);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.footerTemplate);\n  }\n}\n\nconst _c15 = function (a1, a2) {\n  return {\n    \"p-autocomplete p-component\": true,\n    \"p-autocomplete-dd\": a1,\n    \"p-autocomplete-multiple\": a2\n  };\n};\n\nconst AUTOCOMPLETE_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => AutoComplete),\n  multi: true\n};\n\nclass AutoComplete {\n  constructor(el, renderer, cd, differs, config, overlayService) {\n    this.el = el;\n    this.renderer = renderer;\n    this.cd = cd;\n    this.differs = differs;\n    this.config = config;\n    this.overlayService = overlayService;\n    this.minLength = 1;\n    this.delay = 300;\n    this.type = 'text';\n    this.autoZIndex = true;\n    this.baseZIndex = 0;\n    this.dropdownIcon = \"pi pi-chevron-down\";\n    this.unique = true;\n    this.completeOnFocus = false;\n    this.completeMethod = new EventEmitter();\n    this.onSelect = new EventEmitter();\n    this.onUnselect = new EventEmitter();\n    this.onFocus = new EventEmitter();\n    this.onBlur = new EventEmitter();\n    this.onDropdownClick = new EventEmitter();\n    this.onClear = new EventEmitter();\n    this.onKeyUp = new EventEmitter();\n    this.onShow = new EventEmitter();\n    this.onHide = new EventEmitter();\n    this.scrollHeight = '200px';\n    this.dropdownMode = 'blank';\n    this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n    this.hideTransitionOptions = '.1s linear';\n    this.autocomplete = 'off';\n\n    this.onModelChange = () => {};\n\n    this.onModelTouched = () => {};\n\n    this.overlayVisible = false;\n    this.focus = false;\n    this.inputFieldValue = null;\n    this.differ = differs.find([]).create(null);\n    this.listId = UniqueComponentId() + '_list';\n  }\n\n  get suggestions() {\n    return this._suggestions;\n  }\n\n  set suggestions(val) {\n    this._suggestions = val;\n    this.handleSuggestionsChange();\n  }\n\n  ngAfterViewChecked() {\n    //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated\n    if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {\n      setTimeout(() => {\n        if (this.overlay) {\n          this.alignOverlay();\n        }\n      }, 1);\n      this.suggestionsUpdated = false;\n    }\n\n    if (this.highlightOptionChanged) {\n      setTimeout(() => {\n        if (this.overlay && this.itemsWrapper) {\n          let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n\n          if (listItem) {\n            DomHandler.scrollInView(this.itemsWrapper, listItem);\n          }\n\n          if (this.virtualScroll && this.viewPort) {\n            let range = this.viewPort.getRenderedRange();\n            this.updateVirtualScrollSelectedIndex();\n\n            if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {\n              this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n            }\n          }\n        }\n      }, 1);\n      this.highlightOptionChanged = false;\n    }\n  }\n\n  handleSuggestionsChange() {\n    if (this._suggestions != null && this.loading) {\n      this.highlightOption = null;\n\n      if (this._suggestions.length) {\n        this.noResults = false;\n        this.show();\n        this.suggestionsUpdated = true;\n\n        if (this.autoHighlight) {\n          this.highlightOption = this._suggestions[0];\n        }\n      } else {\n        this.noResults = true;\n\n        if (this.showEmptyMessage) {\n          this.show();\n          this.suggestionsUpdated = true;\n        } else {\n          this.hide();\n        }\n      }\n\n      this.loading = false;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'item':\n          this.itemTemplate = item.template;\n          break;\n\n        case 'group':\n          this.groupTemplate = item.template;\n          break;\n\n        case 'selectedItem':\n          this.selectedItemTemplate = item.template;\n          break;\n\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        case 'empty':\n          this.emptyTemplate = item.template;\n          break;\n\n        case 'footer':\n          this.footerTemplate = item.template;\n          break;\n\n        default:\n          this.itemTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  updateVirtualScrollSelectedIndex() {\n    if (this.highlightOption && this.suggestions && this.suggestions.length) {\n      this.virtualScrollSelectedIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n    }\n  }\n\n  writeValue(value) {\n    this.value = value;\n    this.filled = this.value && this.value != '';\n    this.updateInputField();\n    this.cd.markForCheck();\n  }\n\n  getOptionGroupChildren(optionGroup) {\n    return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n  }\n\n  getOptionGroupLabel(optionGroup) {\n    return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup.label != undefined ? optionGroup.label : optionGroup;\n  }\n\n  registerOnChange(fn) {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn) {\n    this.onModelTouched = fn;\n  }\n\n  setDisabledState(val) {\n    this.disabled = val;\n    this.cd.markForCheck();\n  }\n\n  onInput(event) {\n    // When an input element with a placeholder is clicked, the onInput event is invoked in IE.\n    if (!this.inputKeyDown && DomHandler.isIE()) {\n      return;\n    }\n\n    if (this.timeout) {\n      clearTimeout(this.timeout);\n    }\n\n    let value = event.target.value;\n\n    if (!this.multiple && !this.forceSelection) {\n      this.onModelChange(value);\n    }\n\n    if (value.length === 0 && !this.multiple) {\n      this.hide();\n      this.onClear.emit(event);\n      this.onModelChange(value);\n    }\n\n    if (value.length >= this.minLength) {\n      this.timeout = setTimeout(() => {\n        this.search(event, value);\n      }, this.delay);\n    } else {\n      this.hide();\n    }\n\n    this.updateFilledState();\n    this.inputKeyDown = false;\n  }\n\n  onInputClick(event) {\n    if (this.documentClickListener) {\n      this.inputClick = true;\n    }\n  }\n\n  search(event, query) {\n    //allow empty string but not undefined or null\n    if (query === undefined || query === null) {\n      return;\n    }\n\n    this.loading = true;\n    this.completeMethod.emit({\n      originalEvent: event,\n      query: query\n    });\n  }\n\n  selectItem(option, focus = true) {\n    if (this.forceSelectionUpdateModelTimeout) {\n      clearTimeout(this.forceSelectionUpdateModelTimeout);\n      this.forceSelectionUpdateModelTimeout = null;\n    }\n\n    if (this.multiple) {\n      this.multiInputEL.nativeElement.value = '';\n      this.value = this.value || [];\n\n      if (!this.isSelected(option) || !this.unique) {\n        this.value = [...this.value, option];\n        this.onModelChange(this.value);\n      }\n    } else {\n      this.inputEL.nativeElement.value = this.resolveFieldData(option);\n      this.value = option;\n      this.onModelChange(this.value);\n    }\n\n    this.onSelect.emit(option);\n    this.updateFilledState();\n\n    if (focus) {\n      this.itemClicked = true;\n      this.focusInput();\n    }\n  }\n\n  show() {\n    if (this.multiInputEL || this.inputEL) {\n      let hasFocus = this.multiple ? this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement : this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;\n\n      if (!this.overlayVisible && hasFocus) {\n        this.overlayVisible = true;\n      }\n    }\n  }\n\n  onOverlayAnimationStart(event) {\n    switch (event.toState) {\n      case 'visible':\n        this.overlay = event.element;\n        this.itemsWrapper = this.virtualScroll ? DomHandler.findSingle(this.overlay, '.cdk-virtual-scroll-viewport') : this.overlay;\n        this.appendOverlay();\n\n        if (this.autoZIndex) {\n          ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);\n        }\n\n        this.alignOverlay();\n        this.bindDocumentClickListener();\n        this.bindDocumentResizeListener();\n        this.bindScrollListener();\n        this.onShow.emit(event);\n        break;\n\n      case 'void':\n        this.onOverlayHide();\n        break;\n    }\n  }\n\n  onOverlayAnimationEnd(event) {\n    switch (event.toState) {\n      case 'void':\n        if (this.autoZIndex) {\n          ZIndexUtils.clear(event.element);\n        }\n\n        break;\n    }\n  }\n\n  onOverlayClick(event) {\n    this.overlayService.add({\n      originalEvent: event,\n      target: this.el.nativeElement\n    });\n  }\n\n  appendOverlay() {\n    if (this.appendTo) {\n      if (this.appendTo === 'body') document.body.appendChild(this.overlay);else DomHandler.appendChild(this.overlay, this.appendTo);\n\n      if (!this.overlay.style.minWidth) {\n        this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';\n      }\n    }\n  }\n\n  resolveFieldData(value) {\n    let data = this.field ? ObjectUtils.resolveFieldData(value, this.field) : value;\n    return data !== (null || undefined) ? data : '';\n  }\n\n  restoreOverlayAppend() {\n    if (this.overlay && this.appendTo) {\n      this.el.nativeElement.appendChild(this.overlay);\n    }\n  }\n\n  alignOverlay() {\n    if (this.appendTo) DomHandler.absolutePosition(this.overlay, this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement);else DomHandler.relativePosition(this.overlay, this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement);\n  }\n\n  hide() {\n    this.overlayVisible = false;\n    this.cd.markForCheck();\n  }\n\n  handleDropdownClick(event) {\n    if (!this.overlayVisible) {\n      this.focusInput();\n      let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n      if (this.dropdownMode === 'blank') this.search(event, '');else if (this.dropdownMode === 'current') this.search(event, queryValue);\n      this.onDropdownClick.emit({\n        originalEvent: event,\n        query: queryValue\n      });\n    } else {\n      this.hide();\n    }\n  }\n\n  focusInput() {\n    if (this.multiple) this.multiInputEL.nativeElement.focus();else this.inputEL.nativeElement.focus();\n  }\n\n  get emptyMessageLabel() {\n    return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n  }\n\n  removeItem(item) {\n    let itemIndex = DomHandler.index(item);\n    let removedValue = this.value[itemIndex];\n    this.value = this.value.filter((val, i) => i != itemIndex);\n    this.onModelChange(this.value);\n    this.updateFilledState();\n    this.onUnselect.emit(removedValue);\n  }\n\n  onKeydown(event) {\n    if (this.overlayVisible) {\n      switch (event.which) {\n        //down\n        case 40:\n          if (this.group) {\n            let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n\n            if (highlightItemIndex !== -1) {\n              let nextItemIndex = highlightItemIndex.itemIndex + 1;\n\n              if (nextItemIndex < this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length) {\n                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];\n                this.highlightOptionChanged = true;\n              } else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {\n                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];\n                this.highlightOptionChanged = true;\n              }\n            } else {\n              this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];\n            }\n          } else {\n            let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n            if (highlightItemIndex != -1) {\n              var nextItemIndex = highlightItemIndex + 1;\n\n              if (nextItemIndex != this.suggestions.length) {\n                this.highlightOption = this.suggestions[nextItemIndex];\n                this.highlightOptionChanged = true;\n              }\n            } else {\n              this.highlightOption = this.suggestions[0];\n            }\n          }\n\n          event.preventDefault();\n          break;\n        //up\n\n        case 38:\n          if (this.group) {\n            let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n\n            if (highlightItemIndex !== -1) {\n              let prevItemIndex = highlightItemIndex.itemIndex - 1;\n\n              if (prevItemIndex >= 0) {\n                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];\n                this.highlightOptionChanged = true;\n              } else if (prevItemIndex < 0) {\n                let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];\n\n                if (prevGroup) {\n                  this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];\n                  this.highlightOptionChanged = true;\n                }\n              }\n            }\n          } else {\n            let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n            if (highlightItemIndex > 0) {\n              let prevItemIndex = highlightItemIndex - 1;\n              this.highlightOption = this.suggestions[prevItemIndex];\n              this.highlightOptionChanged = true;\n            }\n          }\n\n          event.preventDefault();\n          break;\n        //enter\n\n        case 13:\n          if (this.highlightOption) {\n            this.selectItem(this.highlightOption);\n            this.hide();\n          }\n\n          event.preventDefault();\n          break;\n        //escape\n\n        case 27:\n          this.hide();\n          event.preventDefault();\n          break;\n        //tab\n\n        case 9:\n          if (this.highlightOption) {\n            this.selectItem(this.highlightOption);\n          }\n\n          this.hide();\n          break;\n      }\n    } else {\n      if (event.which === 40 && this.suggestions) {\n        this.search(event, event.target.value);\n      }\n    }\n\n    if (this.multiple) {\n      switch (event.which) {\n        //backspace\n        case 8:\n          if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {\n            this.value = [...this.value];\n            const removedValue = this.value.pop();\n            this.onModelChange(this.value);\n            this.updateFilledState();\n            this.onUnselect.emit(removedValue);\n          }\n\n          break;\n      }\n    }\n\n    this.inputKeyDown = true;\n  }\n\n  onKeyup(event) {\n    this.onKeyUp.emit(event);\n  }\n\n  onInputFocus(event) {\n    if (!this.itemClicked && this.completeOnFocus) {\n      let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n      this.search(event, queryValue);\n    }\n\n    this.focus = true;\n    this.onFocus.emit(event);\n    this.itemClicked = false;\n  }\n\n  onInputBlur(event) {\n    this.focus = false;\n    this.onModelTouched();\n    this.onBlur.emit(event);\n  }\n\n  onInputChange(event) {\n    if (this.forceSelection) {\n      let valid = false;\n      let inputValue = event.target.value.trim();\n\n      if (this.suggestions) {\n        for (let suggestion of this.suggestions) {\n          let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;\n\n          if (itemValue && inputValue === itemValue.trim()) {\n            valid = true;\n            this.forceSelectionUpdateModelTimeout = setTimeout(() => {\n              this.selectItem(suggestion, false);\n            }, 250);\n            break;\n          }\n        }\n      }\n\n      if (!valid) {\n        if (this.multiple) {\n          this.multiInputEL.nativeElement.value = '';\n        } else {\n          this.value = null;\n          this.inputEL.nativeElement.value = '';\n        }\n\n        this.onClear.emit(event);\n        this.onModelChange(this.value);\n        this.updateFilledState();\n      }\n    }\n  }\n\n  onInputPaste(event) {\n    this.onKeydown(event);\n  }\n\n  isSelected(val) {\n    let selected = false;\n\n    if (this.value && this.value.length) {\n      for (let i = 0; i < this.value.length; i++) {\n        if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n          selected = true;\n          break;\n        }\n      }\n    }\n\n    return selected;\n  }\n\n  findOptionIndex(option, suggestions) {\n    let index = -1;\n\n    if (suggestions) {\n      for (let i = 0; i < suggestions.length; i++) {\n        if (ObjectUtils.equals(option, suggestions[i])) {\n          index = i;\n          break;\n        }\n      }\n    }\n\n    return index;\n  }\n\n  findOptionGroupIndex(val, opts) {\n    let groupIndex, itemIndex;\n\n    if (opts) {\n      for (let i = 0; i < opts.length; i++) {\n        groupIndex = i;\n        itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n\n        if (itemIndex !== -1) {\n          break;\n        }\n      }\n    }\n\n    if (itemIndex !== -1) {\n      return {\n        groupIndex: groupIndex,\n        itemIndex: itemIndex\n      };\n    } else {\n      return -1;\n    }\n  }\n\n  updateFilledState() {\n    if (this.multiple) this.filled = this.value && this.value.length || this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '';else this.filled = this.inputFieldValue && this.inputFieldValue != '' || this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '';\n    ;\n  }\n\n  updateInputField() {\n    let formattedValue = this.resolveFieldData(this.value);\n    this.inputFieldValue = formattedValue;\n\n    if (this.inputEL && this.inputEL.nativeElement) {\n      this.inputEL.nativeElement.value = formattedValue;\n    }\n\n    this.updateFilledState();\n  }\n\n  bindDocumentClickListener() {\n    if (!this.documentClickListener) {\n      const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n      this.documentClickListener = this.renderer.listen(documentTarget, 'click', event => {\n        if (event.which === 3) {\n          return;\n        }\n\n        if (!this.inputClick && !this.isDropdownClick(event)) {\n          this.hide();\n        }\n\n        this.inputClick = false;\n        this.cd.markForCheck();\n      });\n    }\n  }\n\n  isDropdownClick(event) {\n    if (this.dropdown) {\n      let target = event.target;\n      return target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement;\n    } else {\n      return false;\n    }\n  }\n\n  unbindDocumentClickListener() {\n    if (this.documentClickListener) {\n      this.documentClickListener();\n      this.documentClickListener = null;\n    }\n  }\n\n  bindDocumentResizeListener() {\n    this.documentResizeListener = this.onWindowResize.bind(this);\n    window.addEventListener('resize', this.documentResizeListener);\n  }\n\n  unbindDocumentResizeListener() {\n    if (this.documentResizeListener) {\n      window.removeEventListener('resize', this.documentResizeListener);\n      this.documentResizeListener = null;\n    }\n  }\n\n  onWindowResize() {\n    this.hide();\n  }\n\n  bindScrollListener() {\n    if (!this.scrollHandler) {\n      this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {\n        if (this.overlayVisible) {\n          this.hide();\n        }\n      });\n    }\n\n    this.scrollHandler.bindScrollListener();\n  }\n\n  unbindScrollListener() {\n    if (this.scrollHandler) {\n      this.scrollHandler.unbindScrollListener();\n    }\n  }\n\n  onOverlayHide() {\n    this.unbindDocumentClickListener();\n    this.unbindDocumentResizeListener();\n    this.unbindScrollListener();\n    this.overlay = null;\n    this.onHide.emit();\n  }\n\n  ngOnDestroy() {\n    if (this.forceSelectionUpdateModelTimeout) {\n      clearTimeout(this.forceSelectionUpdateModelTimeout);\n      this.forceSelectionUpdateModelTimeout = null;\n    }\n\n    if (this.scrollHandler) {\n      this.scrollHandler.destroy();\n      this.scrollHandler = null;\n    }\n\n    if (this.overlay) {\n      ZIndexUtils.clear(this.overlay);\n    }\n\n    this.restoreOverlayAppend();\n    this.onOverlayHide();\n  }\n\n}\n\nAutoComplete.ɵfac = function AutoComplete_Factory(t) {\n  return new (t || AutoComplete)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.IterableDiffers), i0.ɵɵdirectiveInject(i1.PrimeNGConfig), i0.ɵɵdirectiveInject(i1.OverlayService));\n};\n\nAutoComplete.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: AutoComplete,\n  selectors: [[\"p-autoComplete\"]],\n  contentQueries: function AutoComplete_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  viewQuery: function AutoComplete_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 5);\n      i0.ɵɵviewQuery(_c1, 5);\n      i0.ɵɵviewQuery(_c2, 5);\n      i0.ɵɵviewQuery(_c3, 5);\n      i0.ɵɵviewQuery(_c4, 5);\n      i0.ɵɵviewQuery(CdkVirtualScrollViewport, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerEL = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputEL = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.multiInputEL = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.multiContainerEL = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdownButton = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewPort = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\", \"p-inputwrapper\"],\n  hostVars: 4,\n  hostBindings: function AutoComplete_HostBindings(rf, ctx) {\n    if (rf & 2) {\n      i0.ɵɵclassProp(\"p-inputwrapper-filled\", ctx.filled)(\"p-inputwrapper-focus\", ctx.focus && !ctx.disabled || ctx.overlayVisible);\n    }\n  },\n  inputs: {\n    minLength: \"minLength\",\n    delay: \"delay\",\n    style: \"style\",\n    panelStyle: \"panelStyle\",\n    styleClass: \"styleClass\",\n    panelStyleClass: \"panelStyleClass\",\n    inputStyle: \"inputStyle\",\n    inputId: \"inputId\",\n    inputStyleClass: \"inputStyleClass\",\n    placeholder: \"placeholder\",\n    readonly: \"readonly\",\n    disabled: \"disabled\",\n    virtualScroll: \"virtualScroll\",\n    itemSize: \"itemSize\",\n    maxlength: \"maxlength\",\n    name: \"name\",\n    required: \"required\",\n    size: \"size\",\n    appendTo: \"appendTo\",\n    autoHighlight: \"autoHighlight\",\n    forceSelection: \"forceSelection\",\n    type: \"type\",\n    autoZIndex: \"autoZIndex\",\n    baseZIndex: \"baseZIndex\",\n    ariaLabel: \"ariaLabel\",\n    dropdownAriaLabel: \"dropdownAriaLabel\",\n    ariaLabelledBy: \"ariaLabelledBy\",\n    dropdownIcon: \"dropdownIcon\",\n    unique: \"unique\",\n    group: \"group\",\n    completeOnFocus: \"completeOnFocus\",\n    field: \"field\",\n    scrollHeight: \"scrollHeight\",\n    dropdown: \"dropdown\",\n    showEmptyMessage: \"showEmptyMessage\",\n    dropdownMode: \"dropdownMode\",\n    multiple: \"multiple\",\n    tabindex: \"tabindex\",\n    dataKey: \"dataKey\",\n    emptyMessage: \"emptyMessage\",\n    showTransitionOptions: \"showTransitionOptions\",\n    hideTransitionOptions: \"hideTransitionOptions\",\n    autofocus: \"autofocus\",\n    autocomplete: \"autocomplete\",\n    optionGroupChildren: \"optionGroupChildren\",\n    optionGroupLabel: \"optionGroupLabel\",\n    suggestions: \"suggestions\"\n  },\n  outputs: {\n    completeMethod: \"completeMethod\",\n    onSelect: \"onSelect\",\n    onUnselect: \"onUnselect\",\n    onFocus: \"onFocus\",\n    onBlur: \"onBlur\",\n    onDropdownClick: \"onDropdownClick\",\n    onClear: \"onClear\",\n    onKeyUp: \"onKeyUp\",\n    onShow: \"onShow\",\n    onHide: \"onHide\"\n  },\n  features: [i0.ɵɵProvidersFeature([AUTOCOMPLETE_VALUE_ACCESSOR])],\n  decls: 7,\n  vars: 12,\n  consts: [[3, \"ngClass\", \"ngStyle\"], [\"container\", \"\"], [\"class\", \"p-autocomplete-input p-inputtext p-component\", \"aria-autocomplete\", \"list\", \"role\", \"searchbox\", \"aria-haspopup\", \"true\", 3, \"ngStyle\", \"class\", \"autocomplete\", \"ngClass\", \"value\", \"readonly\", \"disabled\", \"click\", \"input\", \"keydown\", \"keyup\", \"focus\", \"blur\", \"change\", \"paste\", 4, \"ngIf\"], [\"class\", \"p-autocomplete-multiple-container p-component p-inputtext\", 3, \"ngClass\", \"click\", 4, \"ngIf\"], [\"class\", \"p-autocomplete-loader pi pi-spinner pi-spin\", 4, \"ngIf\"], [\"type\", \"button\", \"pButton\", \"\", \"class\", \"p-autocomplete-dropdown\", \"pRipple\", \"\", 3, \"icon\", \"disabled\", \"click\", 4, \"ngIf\"], [3, \"ngClass\", \"max-height\", \"ngStyle\", \"class\", \"click\", 4, \"ngIf\"], [\"aria-autocomplete\", \"list\", \"role\", \"searchbox\", \"aria-haspopup\", \"true\", 1, \"p-autocomplete-input\", \"p-inputtext\", \"p-component\", 3, \"ngStyle\", \"autocomplete\", \"ngClass\", \"value\", \"readonly\", \"disabled\", \"click\", \"input\", \"keydown\", \"keyup\", \"focus\", \"blur\", \"change\", \"paste\"], [\"in\", \"\"], [1, \"p-autocomplete-multiple-container\", \"p-component\", \"p-inputtext\", 3, \"ngClass\", \"click\"], [\"multiContainer\", \"\"], [\"class\", \"p-autocomplete-token\", 4, \"ngFor\", \"ngForOf\"], [1, \"p-autocomplete-input-token\"], [\"aria-autocomplete\", \"list\", \"role\", \"searchbox\", \"aria-haspopup\", \"true\", 3, \"disabled\", \"readonly\", \"autocomplete\", \"ngStyle\", \"input\", \"click\", \"keydown\", \"keyup\", \"focus\", \"blur\", \"change\", \"paste\"], [\"multiIn\", \"\"], [1, \"p-autocomplete-token\"], [\"token\", \"\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"p-autocomplete-token-label\", 4, \"ngIf\"], [\"class\", \"p-autocomplete-token-icon pi pi-times-circle\", 3, \"click\", 4, \"ngIf\"], [1, \"p-autocomplete-token-label\"], [1, \"p-autocomplete-token-icon\", \"pi\", \"pi-times-circle\", 3, \"click\"], [1, \"p-autocomplete-loader\", \"pi\", \"pi-spinner\", \"pi-spin\"], [\"type\", \"button\", \"pButton\", \"\", \"pRipple\", \"\", 1, \"p-autocomplete-dropdown\", 3, \"icon\", \"disabled\", \"click\"], [\"ddBtn\", \"\"], [3, \"ngClass\", \"ngStyle\", \"click\"], [\"panel\", \"\"], [4, \"ngTemplateOutlet\"], [\"role\", \"listbox\", 1, \"p-autocomplete-items\", 3, \"ngClass\"], [4, \"ngIf\"], [\"itemslist\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"p-autocomplete-item-group\"], [4, \"ngIf\", \"ngIfElse\"], [\"virtualScrollList\", \"\"], [\"class\", \"p-autocomplete-empty-message\", 4, \"ngIf\"], [\"role\", \"option\", \"class\", \"p-autocomplete-item\", \"pRipple\", \"\", 3, \"ngClass\", \"id\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"option\", \"pRipple\", \"\", 1, \"p-autocomplete-item\", 3, \"ngClass\", \"id\", \"click\"], [3, \"ngStyle\", \"itemSize\", 4, \"ngIf\"], [3, \"ngStyle\", \"itemSize\"], [4, \"cdkVirtualFor\", \"cdkVirtualForOf\"], [\"role\", \"option\", \"pRipple\", \"\", 1, \"p-autocomplete-item\", 3, \"ngClass\", \"ngStyle\", \"id\", \"click\"], [1, \"p-autocomplete-empty-message\"], [\"empty\", \"\"]],\n  template: function AutoComplete_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"span\", 0, 1);\n      i0.ɵɵtemplate(2, AutoComplete_input_2_Template, 2, 26, \"input\", 2);\n      i0.ɵɵtemplate(3, AutoComplete_ul_3_Template, 6, 23, \"ul\", 3);\n      i0.ɵɵtemplate(4, AutoComplete_i_4_Template, 1, 0, \"i\", 4);\n      i0.ɵɵtemplate(5, AutoComplete_button_5_Template, 2, 4, \"button\", 5);\n      i0.ɵɵtemplate(6, AutoComplete_div_6_Template, 9, 21, \"div\", 6);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(9, _c15, ctx.dropdown, ctx.multiple))(\"ngStyle\", ctx.style);\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngIf\", !ctx.multiple);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.multiple);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.loading);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.dropdown);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.overlayVisible);\n    }\n  },\n  directives: [i3.NgClass, i3.NgStyle, i3.NgIf, i3.NgForOf, i3.NgTemplateOutlet, i4.ButtonDirective, i5.Ripple, i2.CdkVirtualScrollViewport, i2.CdkFixedSizeVirtualScroll, i2.CdkVirtualForOf],\n  styles: [\".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}\\n\"],\n  encapsulation: 2,\n  data: {\n    animation: [trigger('overlayAnimation', [transition(':enter', [style({\n      opacity: 0,\n      transform: 'scaleY(0.8)'\n    }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({\n      opacity: 0\n    }))])])]\n  },\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AutoComplete, [{\n    type: Component,\n    args: [{\n      selector: 'p-autoComplete',\n      template: `\n        <span #container [ngClass]=\"{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <input *ngIf=\"!multiple\" #in [attr.type]=\"type\" [attr.id]=\"inputId\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [autocomplete]=\"autocomplete\" [attr.required]=\"required\" [attr.name]=\"name\"\n            class=\"p-autocomplete-input p-inputtext p-component\" [ngClass]=\"{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}\" [value]=\"inputFieldValue\" aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\"\n            (click)=\"onInputClick($event)\" (input)=\"onInput($event)\" (keydown)=\"onKeydown($event)\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\"\n            [attr.placeholder]=\"placeholder\" [attr.size]=\"size\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [readonly]=\"readonly\" [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n            ><ul *ngIf=\"multiple\" #multiContainer class=\"p-autocomplete-multiple-container p-component p-inputtext\" [ngClass]=\"{'p-disabled':disabled,'p-focus':focus}\" (click)=\"multiIn.focus()\">\n                <li #token *ngFor=\"let val of value\" class=\"p-autocomplete-token\">\n                    <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: {$implicit: val}\"></ng-container>\n                    <span *ngIf=\"!selectedItemTemplate\" class=\"p-autocomplete-token-label\">{{resolveFieldData(val)}}</span>\n                    <span  class=\"p-autocomplete-token-icon pi pi-times-circle\" (click)=\"removeItem(token)\" *ngIf=\"!disabled && !readonly\"></span>\n                </li>\n                <li class=\"p-autocomplete-input-token\">\n                    <input #multiIn [attr.type]=\"type\" [attr.id]=\"inputId\" [disabled]=\"disabled\" [attr.placeholder]=\"(value&&value.length ? null : placeholder)\" [attr.tabindex]=\"tabindex\" [attr.maxlength]=\"maxlength\" (input)=\"onInput($event)\"  (click)=\"onInputClick($event)\"\n                            (keydown)=\"onKeydown($event)\" [readonly]=\"readonly\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\" [autocomplete]=\"autocomplete\"\n                            [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n                            aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\">\n                </li>\n            </ul>\n            <i *ngIf=\"loading\" class=\"p-autocomplete-loader pi pi-spinner pi-spin\"></i><button #ddBtn type=\"button\" pButton [icon]=\"dropdownIcon\" [attr.aria-label]=\"dropdownAriaLabel\" class=\"p-autocomplete-dropdown\" [disabled]=\"disabled\" pRipple\n                (click)=\"handleDropdownClick($event)\" *ngIf=\"dropdown\" [attr.tabindex]=\"tabindex\"></button>\n            <div #panel *ngIf=\"overlayVisible\" (click)=\"onOverlayClick($event)\" [ngClass]=\"['p-autocomplete-panel p-component']\" [style.max-height]=\"virtualScroll ? 'auto' : scrollHeight\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <ul role=\"listbox\" [attr.id]=\"listId\" class=\"p-autocomplete-items\" [ngClass]=\"{'p-autocomplete-virtualscroll': virtualScroll}\">\n                    <ng-container *ngIf=\"group\">\n                        <ng-template ngFor let-optgroup [ngForOf]=\"suggestions\">\n                            <li class=\"p-autocomplete-item-group\">\n                                <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                                <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                            </li>\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n                        </ng-template>\n                    </ng-container>\n                    <ng-container *ngIf=\"!group\">\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: suggestions}\"></ng-container>\n                    </ng-container>\n                    <ng-template #itemslist let-suggestionsToDisplay>\n                        <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                            <li role=\"option\" *ngFor=\"let option of suggestionsToDisplay; let idx = index\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n                                <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n                                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: idx}\"></ng-container>\n                            </li>\n                        </ng-container>\n                        <ng-template #virtualScrollList>\n                            <cdk-virtual-scroll-viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" *ngIf=\"virtualScroll && !noResults\">\n                                <ng-container *cdkVirtualFor=\"let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd\">\n                                    <li role=\"option\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [ngStyle]=\"{'height': itemSize + 'px'}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n                                        <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n                                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n                                    </li>\n                                </ng-container>\n                            </cdk-virtual-scroll-viewport>\n                        </ng-template>\n                        <li *ngIf=\"noResults && showEmptyMessage\" class=\"p-autocomplete-empty-message\">\n                            <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                                {{emptyMessageLabel}}\n                            </ng-container>\n                            <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                        </li>\n                    </ng-template>\n                </ul>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </span>\n    `,\n      animations: [trigger('overlayAnimation', [transition(':enter', [style({\n        opacity: 0,\n        transform: 'scaleY(0.8)'\n      }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({\n        opacity: 0\n      }))])])],\n      host: {\n        'class': 'p-element p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': '(focus && !disabled) || overlayVisible'\n      },\n      providers: [AUTOCOMPLETE_VALUE_ACCESSOR],\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      styles: [\".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.Renderer2\n    }, {\n      type: i0.ChangeDetectorRef\n    }, {\n      type: i0.IterableDiffers\n    }, {\n      type: i1.PrimeNGConfig\n    }, {\n      type: i1.OverlayService\n    }];\n  }, {\n    minLength: [{\n      type: Input\n    }],\n    delay: [{\n      type: Input\n    }],\n    style: [{\n      type: Input\n    }],\n    panelStyle: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    panelStyleClass: [{\n      type: Input\n    }],\n    inputStyle: [{\n      type: Input\n    }],\n    inputId: [{\n      type: Input\n    }],\n    inputStyleClass: [{\n      type: Input\n    }],\n    placeholder: [{\n      type: Input\n    }],\n    readonly: [{\n      type: Input\n    }],\n    disabled: [{\n      type: Input\n    }],\n    virtualScroll: [{\n      type: Input\n    }],\n    itemSize: [{\n      type: Input\n    }],\n    maxlength: [{\n      type: Input\n    }],\n    name: [{\n      type: Input\n    }],\n    required: [{\n      type: Input\n    }],\n    size: [{\n      type: Input\n    }],\n    appendTo: [{\n      type: Input\n    }],\n    autoHighlight: [{\n      type: Input\n    }],\n    forceSelection: [{\n      type: Input\n    }],\n    type: [{\n      type: Input\n    }],\n    autoZIndex: [{\n      type: Input\n    }],\n    baseZIndex: [{\n      type: Input\n    }],\n    ariaLabel: [{\n      type: Input\n    }],\n    dropdownAriaLabel: [{\n      type: Input\n    }],\n    ariaLabelledBy: [{\n      type: Input\n    }],\n    dropdownIcon: [{\n      type: Input\n    }],\n    unique: [{\n      type: Input\n    }],\n    group: [{\n      type: Input\n    }],\n    completeOnFocus: [{\n      type: Input\n    }],\n    completeMethod: [{\n      type: Output\n    }],\n    onSelect: [{\n      type: Output\n    }],\n    onUnselect: [{\n      type: Output\n    }],\n    onFocus: [{\n      type: Output\n    }],\n    onBlur: [{\n      type: Output\n    }],\n    onDropdownClick: [{\n      type: Output\n    }],\n    onClear: [{\n      type: Output\n    }],\n    onKeyUp: [{\n      type: Output\n    }],\n    onShow: [{\n      type: Output\n    }],\n    onHide: [{\n      type: Output\n    }],\n    field: [{\n      type: Input\n    }],\n    scrollHeight: [{\n      type: Input\n    }],\n    dropdown: [{\n      type: Input\n    }],\n    showEmptyMessage: [{\n      type: Input\n    }],\n    dropdownMode: [{\n      type: Input\n    }],\n    multiple: [{\n      type: Input\n    }],\n    tabindex: [{\n      type: Input\n    }],\n    dataKey: [{\n      type: Input\n    }],\n    emptyMessage: [{\n      type: Input\n    }],\n    showTransitionOptions: [{\n      type: Input\n    }],\n    hideTransitionOptions: [{\n      type: Input\n    }],\n    autofocus: [{\n      type: Input\n    }],\n    autocomplete: [{\n      type: Input\n    }],\n    optionGroupChildren: [{\n      type: Input\n    }],\n    optionGroupLabel: [{\n      type: Input\n    }],\n    containerEL: [{\n      type: ViewChild,\n      args: ['container']\n    }],\n    inputEL: [{\n      type: ViewChild,\n      args: ['in']\n    }],\n    multiInputEL: [{\n      type: ViewChild,\n      args: ['multiIn']\n    }],\n    multiContainerEL: [{\n      type: ViewChild,\n      args: ['multiContainer']\n    }],\n    dropdownButton: [{\n      type: ViewChild,\n      args: ['ddBtn']\n    }],\n    viewPort: [{\n      type: ViewChild,\n      args: [CdkVirtualScrollViewport]\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }],\n    suggestions: [{\n      type: Input\n    }]\n  });\n})();\n\nclass AutoCompleteModule {}\n\nAutoCompleteModule.ɵfac = function AutoCompleteModule_Factory(t) {\n  return new (t || AutoCompleteModule)();\n};\n\nAutoCompleteModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: AutoCompleteModule\n});\nAutoCompleteModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], SharedModule, ScrollingModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AutoCompleteModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule],\n      exports: [AutoComplete, SharedModule, ScrollingModule],\n      declarations: [AutoComplete]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { AUTOCOMPLETE_VALUE_ACCESSOR, AutoComplete, AutoCompleteModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2015/primeng-autocomplete.mjs"],"names":["i0","forwardRef","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","Input","Output","ViewChild","ContentChildren","NgModule","i3","CommonModule","trigger","transition","style","animate","InputTextModule","i4","ButtonModule","i5","RippleModule","i1","TranslationKeys","PrimeTemplate","SharedModule","DomHandler","ConnectedOverlayScrollHandler","UniqueComponentId","ObjectUtils","ZIndexUtils","NG_VALUE_ACCESSOR","i2","CdkVirtualScrollViewport","ScrollingModule","AUTOCOMPLETE_VALUE_ACCESSOR","provide","useExisting","AutoComplete","multi","constructor","el","renderer","cd","differs","config","overlayService","minLength","delay","type","autoZIndex","baseZIndex","dropdownIcon","unique","completeOnFocus","completeMethod","onSelect","onUnselect","onFocus","onBlur","onDropdownClick","onClear","onKeyUp","onShow","onHide","scrollHeight","dropdownMode","showTransitionOptions","hideTransitionOptions","autocomplete","onModelChange","onModelTouched","overlayVisible","focus","inputFieldValue","differ","find","create","listId","suggestions","_suggestions","val","handleSuggestionsChange","ngAfterViewChecked","suggestionsUpdated","overlay","offsetParent","setTimeout","alignOverlay","highlightOptionChanged","itemsWrapper","listItem","findSingle","scrollInView","virtualScroll","viewPort","range","getRenderedRange","updateVirtualScrollSelectedIndex","start","virtualScrollSelectedIndex","end","scrollToIndex","loading","highlightOption","length","noResults","show","autoHighlight","showEmptyMessage","hide","ngAfterContentInit","templates","forEach","item","getType","itemTemplate","template","groupTemplate","selectedItemTemplate","headerTemplate","emptyTemplate","footerTemplate","findOptionIndex","writeValue","value","filled","updateInputField","markForCheck","getOptionGroupChildren","optionGroup","optionGroupChildren","resolveFieldData","items","getOptionGroupLabel","optionGroupLabel","label","undefined","registerOnChange","fn","registerOnTouched","setDisabledState","disabled","onInput","event","inputKeyDown","isIE","timeout","clearTimeout","target","multiple","forceSelection","emit","search","updateFilledState","onInputClick","documentClickListener","inputClick","query","originalEvent","selectItem","option","forceSelectionUpdateModelTimeout","multiInputEL","nativeElement","isSelected","inputEL","itemClicked","focusInput","hasFocus","ownerDocument","activeElement","onOverlayAnimationStart","toState","element","appendOverlay","set","zIndex","bindDocumentClickListener","bindDocumentResizeListener","bindScrollListener","onOverlayHide","onOverlayAnimationEnd","clear","onOverlayClick","add","appendTo","document","body","appendChild","minWidth","getWidth","children","data","field","restoreOverlayAppend","absolutePosition","multiContainerEL","relativePosition","handleDropdownClick","queryValue","emptyMessageLabel","emptyMessage","getTranslation","EMPTY_MESSAGE","removeItem","itemIndex","index","removedValue","filter","i","onKeydown","which","group","highlightItemIndex","findOptionGroupIndex","nextItemIndex","groupIndex","preventDefault","prevItemIndex","prevGroup","pop","onKeyup","onInputFocus","onInputBlur","onInputChange","valid","inputValue","trim","suggestion","itemValue","onInputPaste","selected","equals","dataKey","opts","formattedValue","documentTarget","listen","isDropdownClick","dropdown","dropdownButton","parentNode","unbindDocumentClickListener","documentResizeListener","onWindowResize","bind","window","addEventListener","unbindDocumentResizeListener","removeEventListener","scrollHandler","containerEL","unbindScrollListener","ngOnDestroy","destroy","ɵfac","ElementRef","Renderer2","ChangeDetectorRef","IterableDiffers","PrimeNGConfig","OverlayService","ɵcmp","NgClass","NgStyle","NgIf","NgForOf","NgTemplateOutlet","ButtonDirective","Ripple","CdkFixedSizeVirtualScroll","CdkVirtualForOf","opacity","transform","args","selector","animations","host","providers","changeDetection","OnPush","encapsulation","None","styles","panelStyle","styleClass","panelStyleClass","inputStyle","inputId","inputStyleClass","placeholder","readonly","itemSize","maxlength","name","required","size","ariaLabel","dropdownAriaLabel","ariaLabelledBy","tabindex","autofocus","AutoCompleteModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { InputTextModule } from 'primeng/inputtext';\nimport * as i4 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport * as i5 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { UniqueComponentId, ObjectUtils, ZIndexUtils } from 'primeng/utils';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i2 from '@angular/cdk/scrolling';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\n\nconst AUTOCOMPLETE_VALUE_ACCESSOR = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => AutoComplete),\n    multi: true\n};\nclass AutoComplete {\n    constructor(el, renderer, cd, differs, config, overlayService) {\n        this.el = el;\n        this.renderer = renderer;\n        this.cd = cd;\n        this.differs = differs;\n        this.config = config;\n        this.overlayService = overlayService;\n        this.minLength = 1;\n        this.delay = 300;\n        this.type = 'text';\n        this.autoZIndex = true;\n        this.baseZIndex = 0;\n        this.dropdownIcon = \"pi pi-chevron-down\";\n        this.unique = true;\n        this.completeOnFocus = false;\n        this.completeMethod = new EventEmitter();\n        this.onSelect = new EventEmitter();\n        this.onUnselect = new EventEmitter();\n        this.onFocus = new EventEmitter();\n        this.onBlur = new EventEmitter();\n        this.onDropdownClick = new EventEmitter();\n        this.onClear = new EventEmitter();\n        this.onKeyUp = new EventEmitter();\n        this.onShow = new EventEmitter();\n        this.onHide = new EventEmitter();\n        this.scrollHeight = '200px';\n        this.dropdownMode = 'blank';\n        this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n        this.hideTransitionOptions = '.1s linear';\n        this.autocomplete = 'off';\n        this.onModelChange = () => { };\n        this.onModelTouched = () => { };\n        this.overlayVisible = false;\n        this.focus = false;\n        this.inputFieldValue = null;\n        this.differ = differs.find([]).create(null);\n        this.listId = UniqueComponentId() + '_list';\n    }\n    get suggestions() {\n        return this._suggestions;\n    }\n    set suggestions(val) {\n        this._suggestions = val;\n        this.handleSuggestionsChange();\n    }\n    ngAfterViewChecked() {\n        //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated\n        if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {\n            setTimeout(() => {\n                if (this.overlay) {\n                    this.alignOverlay();\n                }\n            }, 1);\n            this.suggestionsUpdated = false;\n        }\n        if (this.highlightOptionChanged) {\n            setTimeout(() => {\n                if (this.overlay && this.itemsWrapper) {\n                    let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n                    if (listItem) {\n                        DomHandler.scrollInView(this.itemsWrapper, listItem);\n                    }\n                    if (this.virtualScroll && this.viewPort) {\n                        let range = this.viewPort.getRenderedRange();\n                        this.updateVirtualScrollSelectedIndex();\n                        if (range.start > this.virtualScrollSelectedIndex || range.end < this.virtualScrollSelectedIndex) {\n                            this.viewPort.scrollToIndex(this.virtualScrollSelectedIndex);\n                        }\n                    }\n                }\n            }, 1);\n            this.highlightOptionChanged = false;\n        }\n    }\n    handleSuggestionsChange() {\n        if (this._suggestions != null && this.loading) {\n            this.highlightOption = null;\n            if (this._suggestions.length) {\n                this.noResults = false;\n                this.show();\n                this.suggestionsUpdated = true;\n                if (this.autoHighlight) {\n                    this.highlightOption = this._suggestions[0];\n                }\n            }\n            else {\n                this.noResults = true;\n                if (this.showEmptyMessage) {\n                    this.show();\n                    this.suggestionsUpdated = true;\n                }\n                else {\n                    this.hide();\n                }\n            }\n            this.loading = false;\n        }\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                    break;\n                case 'group':\n                    this.groupTemplate = item.template;\n                    break;\n                case 'selectedItem':\n                    this.selectedItemTemplate = item.template;\n                    break;\n                case 'header':\n                    this.headerTemplate = item.template;\n                    break;\n                case 'empty':\n                    this.emptyTemplate = item.template;\n                    break;\n                case 'footer':\n                    this.footerTemplate = item.template;\n                    break;\n                default:\n                    this.itemTemplate = item.template;\n                    break;\n            }\n        });\n    }\n    updateVirtualScrollSelectedIndex() {\n        if (this.highlightOption && this.suggestions && this.suggestions.length) {\n            this.virtualScrollSelectedIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n        }\n    }\n    writeValue(value) {\n        this.value = value;\n        this.filled = this.value && this.value != '';\n        this.updateInputField();\n        this.cd.markForCheck();\n    }\n    getOptionGroupChildren(optionGroup) {\n        return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n    }\n    getOptionGroupLabel(optionGroup) {\n        return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : (optionGroup.label != undefined ? optionGroup.label : optionGroup);\n    }\n    registerOnChange(fn) {\n        this.onModelChange = fn;\n    }\n    registerOnTouched(fn) {\n        this.onModelTouched = fn;\n    }\n    setDisabledState(val) {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n    onInput(event) {\n        // When an input element with a placeholder is clicked, the onInput event is invoked in IE.\n        if (!this.inputKeyDown && DomHandler.isIE()) {\n            return;\n        }\n        if (this.timeout) {\n            clearTimeout(this.timeout);\n        }\n        let value = event.target.value;\n        if (!this.multiple && !this.forceSelection) {\n            this.onModelChange(value);\n        }\n        if (value.length === 0 && !this.multiple) {\n            this.hide();\n            this.onClear.emit(event);\n            this.onModelChange(value);\n        }\n        if (value.length >= this.minLength) {\n            this.timeout = setTimeout(() => {\n                this.search(event, value);\n            }, this.delay);\n        }\n        else {\n            this.hide();\n        }\n        this.updateFilledState();\n        this.inputKeyDown = false;\n    }\n    onInputClick(event) {\n        if (this.documentClickListener) {\n            this.inputClick = true;\n        }\n    }\n    search(event, query) {\n        //allow empty string but not undefined or null\n        if (query === undefined || query === null) {\n            return;\n        }\n        this.loading = true;\n        this.completeMethod.emit({\n            originalEvent: event,\n            query: query\n        });\n    }\n    selectItem(option, focus = true) {\n        if (this.forceSelectionUpdateModelTimeout) {\n            clearTimeout(this.forceSelectionUpdateModelTimeout);\n            this.forceSelectionUpdateModelTimeout = null;\n        }\n        if (this.multiple) {\n            this.multiInputEL.nativeElement.value = '';\n            this.value = this.value || [];\n            if (!this.isSelected(option) || !this.unique) {\n                this.value = [...this.value, option];\n                this.onModelChange(this.value);\n            }\n        }\n        else {\n            this.inputEL.nativeElement.value = this.resolveFieldData(option);\n            this.value = option;\n            this.onModelChange(this.value);\n        }\n        this.onSelect.emit(option);\n        this.updateFilledState();\n        if (focus) {\n            this.itemClicked = true;\n            this.focusInput();\n        }\n    }\n    show() {\n        if (this.multiInputEL || this.inputEL) {\n            let hasFocus = this.multiple ?\n                this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement :\n                this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;\n            if (!this.overlayVisible && hasFocus) {\n                this.overlayVisible = true;\n            }\n        }\n    }\n    onOverlayAnimationStart(event) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                this.itemsWrapper = this.virtualScroll ? DomHandler.findSingle(this.overlay, '.cdk-virtual-scroll-viewport') : this.overlay;\n                this.appendOverlay();\n                if (this.autoZIndex) {\n                    ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);\n                }\n                this.alignOverlay();\n                this.bindDocumentClickListener();\n                this.bindDocumentResizeListener();\n                this.bindScrollListener();\n                this.onShow.emit(event);\n                break;\n            case 'void':\n                this.onOverlayHide();\n                break;\n        }\n    }\n    onOverlayAnimationEnd(event) {\n        switch (event.toState) {\n            case 'void':\n                if (this.autoZIndex) {\n                    ZIndexUtils.clear(event.element);\n                }\n                break;\n        }\n    }\n    onOverlayClick(event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n            if (!this.overlay.style.minWidth) {\n                this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';\n            }\n        }\n    }\n    resolveFieldData(value) {\n        let data = this.field ? ObjectUtils.resolveFieldData(value, this.field) : value;\n        return data !== (null || undefined) ? data : '';\n    }\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n    alignOverlay() {\n        if (this.appendTo)\n            DomHandler.absolutePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n        else\n            DomHandler.relativePosition(this.overlay, (this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement));\n    }\n    hide() {\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n    handleDropdownClick(event) {\n        if (!this.overlayVisible) {\n            this.focusInput();\n            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n            if (this.dropdownMode === 'blank')\n                this.search(event, '');\n            else if (this.dropdownMode === 'current')\n                this.search(event, queryValue);\n            this.onDropdownClick.emit({\n                originalEvent: event,\n                query: queryValue\n            });\n        }\n        else {\n            this.hide();\n        }\n    }\n    focusInput() {\n        if (this.multiple)\n            this.multiInputEL.nativeElement.focus();\n        else\n            this.inputEL.nativeElement.focus();\n    }\n    get emptyMessageLabel() {\n        return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n    }\n    removeItem(item) {\n        let itemIndex = DomHandler.index(item);\n        let removedValue = this.value[itemIndex];\n        this.value = this.value.filter((val, i) => i != itemIndex);\n        this.onModelChange(this.value);\n        this.updateFilledState();\n        this.onUnselect.emit(removedValue);\n    }\n    onKeydown(event) {\n        if (this.overlayVisible) {\n            switch (event.which) {\n                //down\n                case 40:\n                    if (this.group) {\n                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n                        if (highlightItemIndex !== -1) {\n                            let nextItemIndex = highlightItemIndex.itemIndex + 1;\n                            if (nextItemIndex < (this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length)) {\n                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];\n                                this.highlightOptionChanged = true;\n                            }\n                            else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {\n                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];\n                                this.highlightOptionChanged = true;\n                            }\n                        }\n                        else {\n                            this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];\n                        }\n                    }\n                    else {\n                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n                        if (highlightItemIndex != -1) {\n                            var nextItemIndex = highlightItemIndex + 1;\n                            if (nextItemIndex != (this.suggestions.length)) {\n                                this.highlightOption = this.suggestions[nextItemIndex];\n                                this.highlightOptionChanged = true;\n                            }\n                        }\n                        else {\n                            this.highlightOption = this.suggestions[0];\n                        }\n                    }\n                    event.preventDefault();\n                    break;\n                //up\n                case 38:\n                    if (this.group) {\n                        let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n                        if (highlightItemIndex !== -1) {\n                            let prevItemIndex = highlightItemIndex.itemIndex - 1;\n                            if (prevItemIndex >= 0) {\n                                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];\n                                this.highlightOptionChanged = true;\n                            }\n                            else if (prevItemIndex < 0) {\n                                let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];\n                                if (prevGroup) {\n                                    this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];\n                                    this.highlightOptionChanged = true;\n                                }\n                            }\n                        }\n                    }\n                    else {\n                        let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n                        if (highlightItemIndex > 0) {\n                            let prevItemIndex = highlightItemIndex - 1;\n                            this.highlightOption = this.suggestions[prevItemIndex];\n                            this.highlightOptionChanged = true;\n                        }\n                    }\n                    event.preventDefault();\n                    break;\n                //enter\n                case 13:\n                    if (this.highlightOption) {\n                        this.selectItem(this.highlightOption);\n                        this.hide();\n                    }\n                    event.preventDefault();\n                    break;\n                //escape\n                case 27:\n                    this.hide();\n                    event.preventDefault();\n                    break;\n                //tab\n                case 9:\n                    if (this.highlightOption) {\n                        this.selectItem(this.highlightOption);\n                    }\n                    this.hide();\n                    break;\n            }\n        }\n        else {\n            if (event.which === 40 && this.suggestions) {\n                this.search(event, event.target.value);\n            }\n        }\n        if (this.multiple) {\n            switch (event.which) {\n                //backspace\n                case 8:\n                    if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {\n                        this.value = [...this.value];\n                        const removedValue = this.value.pop();\n                        this.onModelChange(this.value);\n                        this.updateFilledState();\n                        this.onUnselect.emit(removedValue);\n                    }\n                    break;\n            }\n        }\n        this.inputKeyDown = true;\n    }\n    onKeyup(event) {\n        this.onKeyUp.emit(event);\n    }\n    onInputFocus(event) {\n        if (!this.itemClicked && this.completeOnFocus) {\n            let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n            this.search(event, queryValue);\n        }\n        this.focus = true;\n        this.onFocus.emit(event);\n        this.itemClicked = false;\n    }\n    onInputBlur(event) {\n        this.focus = false;\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n    onInputChange(event) {\n        if (this.forceSelection) {\n            let valid = false;\n            let inputValue = event.target.value.trim();\n            if (this.suggestions) {\n                for (let suggestion of this.suggestions) {\n                    let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;\n                    if (itemValue && inputValue === itemValue.trim()) {\n                        valid = true;\n                        this.forceSelectionUpdateModelTimeout = setTimeout(() => {\n                            this.selectItem(suggestion, false);\n                        }, 250);\n                        break;\n                    }\n                }\n            }\n            if (!valid) {\n                if (this.multiple) {\n                    this.multiInputEL.nativeElement.value = '';\n                }\n                else {\n                    this.value = null;\n                    this.inputEL.nativeElement.value = '';\n                }\n                this.onClear.emit(event);\n                this.onModelChange(this.value);\n                this.updateFilledState();\n            }\n        }\n    }\n    onInputPaste(event) {\n        this.onKeydown(event);\n    }\n    isSelected(val) {\n        let selected = false;\n        if (this.value && this.value.length) {\n            for (let i = 0; i < this.value.length; i++) {\n                if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n                    selected = true;\n                    break;\n                }\n            }\n        }\n        return selected;\n    }\n    findOptionIndex(option, suggestions) {\n        let index = -1;\n        if (suggestions) {\n            for (let i = 0; i < suggestions.length; i++) {\n                if (ObjectUtils.equals(option, suggestions[i])) {\n                    index = i;\n                    break;\n                }\n            }\n        }\n        return index;\n    }\n    findOptionGroupIndex(val, opts) {\n        let groupIndex, itemIndex;\n        if (opts) {\n            for (let i = 0; i < opts.length; i++) {\n                groupIndex = i;\n                itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n                if (itemIndex !== -1) {\n                    break;\n                }\n            }\n        }\n        if (itemIndex !== -1) {\n            return { groupIndex: groupIndex, itemIndex: itemIndex };\n        }\n        else {\n            return -1;\n        }\n    }\n    updateFilledState() {\n        if (this.multiple)\n            this.filled = (this.value && this.value.length) || (this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '');\n        else\n            this.filled = (this.inputFieldValue && this.inputFieldValue != '') || (this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '');\n        ;\n    }\n    updateInputField() {\n        let formattedValue = this.resolveFieldData(this.value);\n        this.inputFieldValue = formattedValue;\n        if (this.inputEL && this.inputEL.nativeElement) {\n            this.inputEL.nativeElement.value = formattedValue;\n        }\n        this.updateFilledState();\n    }\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n                if (event.which === 3) {\n                    return;\n                }\n                if (!this.inputClick && !this.isDropdownClick(event)) {\n                    this.hide();\n                }\n                this.inputClick = false;\n                this.cd.markForCheck();\n            });\n        }\n    }\n    isDropdownClick(event) {\n        if (this.dropdown) {\n            let target = event.target;\n            return (target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement);\n        }\n        else {\n            return false;\n        }\n    }\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n    onWindowResize() {\n        this.hide();\n    }\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n        this.scrollHandler.bindScrollListener();\n    }\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n    onOverlayHide() {\n        this.unbindDocumentClickListener();\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.overlay = null;\n        this.onHide.emit();\n    }\n    ngOnDestroy() {\n        if (this.forceSelectionUpdateModelTimeout) {\n            clearTimeout(this.forceSelectionUpdateModelTimeout);\n            this.forceSelectionUpdateModelTimeout = null;\n        }\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n        }\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n}\nAutoComplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AutoComplete, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\nAutoComplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: AutoComplete, selector: \"p-autoComplete\", inputs: { minLength: \"minLength\", delay: \"delay\", style: \"style\", panelStyle: \"panelStyle\", styleClass: \"styleClass\", panelStyleClass: \"panelStyleClass\", inputStyle: \"inputStyle\", inputId: \"inputId\", inputStyleClass: \"inputStyleClass\", placeholder: \"placeholder\", readonly: \"readonly\", disabled: \"disabled\", virtualScroll: \"virtualScroll\", itemSize: \"itemSize\", maxlength: \"maxlength\", name: \"name\", required: \"required\", size: \"size\", appendTo: \"appendTo\", autoHighlight: \"autoHighlight\", forceSelection: \"forceSelection\", type: \"type\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", ariaLabel: \"ariaLabel\", dropdownAriaLabel: \"dropdownAriaLabel\", ariaLabelledBy: \"ariaLabelledBy\", dropdownIcon: \"dropdownIcon\", unique: \"unique\", group: \"group\", completeOnFocus: \"completeOnFocus\", field: \"field\", scrollHeight: \"scrollHeight\", dropdown: \"dropdown\", showEmptyMessage: \"showEmptyMessage\", dropdownMode: \"dropdownMode\", multiple: \"multiple\", tabindex: \"tabindex\", dataKey: \"dataKey\", emptyMessage: \"emptyMessage\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", autofocus: \"autofocus\", autocomplete: \"autocomplete\", optionGroupChildren: \"optionGroupChildren\", optionGroupLabel: \"optionGroupLabel\", suggestions: \"suggestions\" }, outputs: { completeMethod: \"completeMethod\", onSelect: \"onSelect\", onUnselect: \"onUnselect\", onFocus: \"onFocus\", onBlur: \"onBlur\", onDropdownClick: \"onDropdownClick\", onClear: \"onClear\", onKeyUp: \"onKeyUp\", onShow: \"onShow\", onHide: \"onHide\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"(focus && !disabled) ||\\u00A0overlayVisible\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerEL\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"inputEL\", first: true, predicate: [\"in\"], descendants: true }, { propertyName: \"multiInputEL\", first: true, predicate: [\"multiIn\"], descendants: true }, { propertyName: \"multiContainerEL\", first: true, predicate: [\"multiContainer\"], descendants: true }, { propertyName: \"dropdownButton\", first: true, predicate: [\"ddBtn\"], descendants: true }, { propertyName: \"viewPort\", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: `\n        <span #container [ngClass]=\"{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <input *ngIf=\"!multiple\" #in [attr.type]=\"type\" [attr.id]=\"inputId\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [autocomplete]=\"autocomplete\" [attr.required]=\"required\" [attr.name]=\"name\"\n            class=\"p-autocomplete-input p-inputtext p-component\" [ngClass]=\"{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}\" [value]=\"inputFieldValue\" aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\"\n            (click)=\"onInputClick($event)\" (input)=\"onInput($event)\" (keydown)=\"onKeydown($event)\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\"\n            [attr.placeholder]=\"placeholder\" [attr.size]=\"size\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [readonly]=\"readonly\" [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n            ><ul *ngIf=\"multiple\" #multiContainer class=\"p-autocomplete-multiple-container p-component p-inputtext\" [ngClass]=\"{'p-disabled':disabled,'p-focus':focus}\" (click)=\"multiIn.focus()\">\n                <li #token *ngFor=\"let val of value\" class=\"p-autocomplete-token\">\n                    <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: {$implicit: val}\"></ng-container>\n                    <span *ngIf=\"!selectedItemTemplate\" class=\"p-autocomplete-token-label\">{{resolveFieldData(val)}}</span>\n                    <span  class=\"p-autocomplete-token-icon pi pi-times-circle\" (click)=\"removeItem(token)\" *ngIf=\"!disabled && !readonly\"></span>\n                </li>\n                <li class=\"p-autocomplete-input-token\">\n                    <input #multiIn [attr.type]=\"type\" [attr.id]=\"inputId\" [disabled]=\"disabled\" [attr.placeholder]=\"(value&&value.length ? null : placeholder)\" [attr.tabindex]=\"tabindex\" [attr.maxlength]=\"maxlength\" (input)=\"onInput($event)\"  (click)=\"onInputClick($event)\"\n                            (keydown)=\"onKeydown($event)\" [readonly]=\"readonly\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\" [autocomplete]=\"autocomplete\"\n                            [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n                            aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\">\n                </li>\n            </ul>\n            <i *ngIf=\"loading\" class=\"p-autocomplete-loader pi pi-spinner pi-spin\"></i><button #ddBtn type=\"button\" pButton [icon]=\"dropdownIcon\" [attr.aria-label]=\"dropdownAriaLabel\" class=\"p-autocomplete-dropdown\" [disabled]=\"disabled\" pRipple\n                (click)=\"handleDropdownClick($event)\" *ngIf=\"dropdown\" [attr.tabindex]=\"tabindex\"></button>\n            <div #panel *ngIf=\"overlayVisible\" (click)=\"onOverlayClick($event)\" [ngClass]=\"['p-autocomplete-panel p-component']\" [style.max-height]=\"virtualScroll ? 'auto' : scrollHeight\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <ul role=\"listbox\" [attr.id]=\"listId\" class=\"p-autocomplete-items\" [ngClass]=\"{'p-autocomplete-virtualscroll': virtualScroll}\">\n                    <ng-container *ngIf=\"group\">\n                        <ng-template ngFor let-optgroup [ngForOf]=\"suggestions\">\n                            <li class=\"p-autocomplete-item-group\">\n                                <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                                <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                            </li>\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n                        </ng-template>\n                    </ng-container>\n                    <ng-container *ngIf=\"!group\">\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: suggestions}\"></ng-container>\n                    </ng-container>\n                    <ng-template #itemslist let-suggestionsToDisplay>\n                        <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                            <li role=\"option\" *ngFor=\"let option of suggestionsToDisplay; let idx = index\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n                                <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n                                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: idx}\"></ng-container>\n                            </li>\n                        </ng-container>\n                        <ng-template #virtualScrollList>\n                            <cdk-virtual-scroll-viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" *ngIf=\"virtualScroll && !noResults\">\n                                <ng-container *cdkVirtualFor=\"let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd\">\n                                    <li role=\"option\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [ngStyle]=\"{'height': itemSize + 'px'}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n                                        <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n                                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n                                    </li>\n                                </ng-container>\n                            </cdk-virtual-scroll-viewport>\n                        </ng-template>\n                        <li *ngIf=\"noResults && showEmptyMessage\" class=\"p-autocomplete-empty-message\">\n                            <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                                {{emptyMessageLabel}}\n                            </ng-container>\n                            <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                        </li>\n                    </ng-template>\n                </ul>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </span>\n    `, isInline: true, styles: [\".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}\\n\"], components: [{ type: i2.CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: [\"orientation\", \"appendOnly\"], outputs: [\"scrolledIndexChange\"] }], directives: [{ type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i4.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }, { type: i5.Ripple, selector: \"[pRipple]\" }, { type: i2.CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: [\"itemSize\", \"minBufferPx\", \"maxBufferPx\"] }, { type: i2.CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: [\"cdkVirtualForOf\", \"cdkVirtualForTrackBy\", \"cdkVirtualForTemplate\", \"cdkVirtualForTemplateCacheSize\"] }], animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({ opacity: 0, transform: 'scaleY(0.8)' }),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n            ])\n        ])\n    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AutoComplete, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-autoComplete', template: `\n        <span #container [ngClass]=\"{'p-autocomplete p-component':true,'p-autocomplete-dd':dropdown,'p-autocomplete-multiple':multiple}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <input *ngIf=\"!multiple\" #in [attr.type]=\"type\" [attr.id]=\"inputId\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [autocomplete]=\"autocomplete\" [attr.required]=\"required\" [attr.name]=\"name\"\n            class=\"p-autocomplete-input p-inputtext p-component\" [ngClass]=\"{'p-autocomplete-dd-input':dropdown,'p-disabled': disabled}\" [value]=\"inputFieldValue\" aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\"\n            (click)=\"onInputClick($event)\" (input)=\"onInput($event)\" (keydown)=\"onKeydown($event)\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\"\n            [attr.placeholder]=\"placeholder\" [attr.size]=\"size\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [readonly]=\"readonly\" [disabled]=\"disabled\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n            ><ul *ngIf=\"multiple\" #multiContainer class=\"p-autocomplete-multiple-container p-component p-inputtext\" [ngClass]=\"{'p-disabled':disabled,'p-focus':focus}\" (click)=\"multiIn.focus()\">\n                <li #token *ngFor=\"let val of value\" class=\"p-autocomplete-token\">\n                    <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: {$implicit: val}\"></ng-container>\n                    <span *ngIf=\"!selectedItemTemplate\" class=\"p-autocomplete-token-label\">{{resolveFieldData(val)}}</span>\n                    <span  class=\"p-autocomplete-token-icon pi pi-times-circle\" (click)=\"removeItem(token)\" *ngIf=\"!disabled && !readonly\"></span>\n                </li>\n                <li class=\"p-autocomplete-input-token\">\n                    <input #multiIn [attr.type]=\"type\" [attr.id]=\"inputId\" [disabled]=\"disabled\" [attr.placeholder]=\"(value&&value.length ? null : placeholder)\" [attr.tabindex]=\"tabindex\" [attr.maxlength]=\"maxlength\" (input)=\"onInput($event)\"  (click)=\"onInputClick($event)\"\n                            (keydown)=\"onKeydown($event)\" [readonly]=\"readonly\" (keyup)=\"onKeyup($event)\" [attr.autofocus]=\"autofocus\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (change)=\"onInputChange($event)\" (paste)=\"onInputPaste($event)\" [autocomplete]=\"autocomplete\"\n                            [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-required]=\"required\"\n                            aria-autocomplete=\"list\" [attr.aria-controls]=\"listId\" role=\"searchbox\" [attr.aria-expanded]=\"overlayVisible\" aria-haspopup=\"true\" [attr.aria-activedescendant]=\"'p-highlighted-option'\">\n                </li>\n            </ul>\n            <i *ngIf=\"loading\" class=\"p-autocomplete-loader pi pi-spinner pi-spin\"></i><button #ddBtn type=\"button\" pButton [icon]=\"dropdownIcon\" [attr.aria-label]=\"dropdownAriaLabel\" class=\"p-autocomplete-dropdown\" [disabled]=\"disabled\" pRipple\n                (click)=\"handleDropdownClick($event)\" *ngIf=\"dropdown\" [attr.tabindex]=\"tabindex\"></button>\n            <div #panel *ngIf=\"overlayVisible\" (click)=\"onOverlayClick($event)\" [ngClass]=\"['p-autocomplete-panel p-component']\" [style.max-height]=\"virtualScroll ? 'auto' : scrollHeight\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <ul role=\"listbox\" [attr.id]=\"listId\" class=\"p-autocomplete-items\" [ngClass]=\"{'p-autocomplete-virtualscroll': virtualScroll}\">\n                    <ng-container *ngIf=\"group\">\n                        <ng-template ngFor let-optgroup [ngForOf]=\"suggestions\">\n                            <li class=\"p-autocomplete-item-group\">\n                                <span *ngIf=\"!groupTemplate\">{{getOptionGroupLabel(optgroup)||'empty'}}</span>\n                                <ng-container *ngTemplateOutlet=\"groupTemplate; context: {$implicit: optgroup}\"></ng-container>\n                            </li>\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: getOptionGroupChildren(optgroup)}\"></ng-container>\n                        </ng-template>\n                    </ng-container>\n                    <ng-container *ngIf=\"!group\">\n                            <ng-container *ngTemplateOutlet=\"itemslist; context: {$implicit: suggestions}\"></ng-container>\n                    </ng-container>\n                    <ng-template #itemslist let-suggestionsToDisplay>\n                        <ng-container *ngIf=\"!virtualScroll; else virtualScrollList\">\n                            <li role=\"option\" *ngFor=\"let option of suggestionsToDisplay; let idx = index\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n                                <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n                                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: idx}\"></ng-container>\n                            </li>\n                        </ng-container>\n                        <ng-template #virtualScrollList>\n                            <cdk-virtual-scroll-viewport [ngStyle]=\"{'height': scrollHeight}\" [itemSize]=\"itemSize\" *ngIf=\"virtualScroll && !noResults\">\n                                <ng-container *cdkVirtualFor=\"let option of suggestionsToDisplay; let i = index; let c = count; let f = first; let l = last; let e = even; let o = odd\">\n                                    <li role=\"option\" class=\"p-autocomplete-item\" pRipple [ngClass]=\"{'p-highlight': (option === highlightOption)}\" [ngStyle]=\"{'height': itemSize + 'px'}\" [id]=\"highlightOption == option ? 'p-highlighted-option':''\" (click)=\"selectItem(option)\">\n                                        <span *ngIf=\"!itemTemplate\">{{resolveFieldData(option)}}</span>\n                                        <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n                                    </li>\n                                </ng-container>\n                            </cdk-virtual-scroll-viewport>\n                        </ng-template>\n                        <li *ngIf=\"noResults && showEmptyMessage\" class=\"p-autocomplete-empty-message\">\n                            <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                                {{emptyMessageLabel}}\n                            </ng-container>\n                            <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n                        </li>\n                    </ng-template>\n                </ul>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </span>\n    `, animations: [\n                        trigger('overlayAnimation', [\n                            transition(':enter', [\n                                style({ opacity: 0, transform: 'scaleY(0.8)' }),\n                                animate('{{showTransitionParams}}')\n                            ]),\n                            transition(':leave', [\n                                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n                            ])\n                        ])\n                    ], host: {\n                        'class': 'p-element p-inputwrapper',\n                        '[class.p-inputwrapper-filled]': 'filled',\n                        '[class.p-inputwrapper-focus]': '(focus && !disabled) || overlayVisible'\n                    }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".p-autocomplete{display:inline-flex;position:relative}.p-autocomplete-loader{position:absolute;top:50%;margin-top:-.5rem}.p-autocomplete-dd .p-autocomplete-input{flex:1 1 auto;width:1%}.p-autocomplete-dd .p-autocomplete-input,.p-autocomplete-dd .p-autocomplete-multiple-container{border-top-right-radius:0;border-bottom-right-radius:0}.p-autocomplete-dd .p-autocomplete-dropdown{border-top-left-radius:0;border-bottom-left-radius:0}.p-autocomplete .p-autocomplete-panel{min-width:100%;top:0;left:0}.p-autocomplete-panel{position:absolute;overflow:auto}.p-autocomplete-items{margin:0;padding:0;list-style-type:none}.p-autocomplete-item{cursor:pointer;white-space:nowrap;position:relative;overflow:hidden}.p-autocomplete-multiple-container{margin:0;padding:0;list-style-type:none;cursor:text;overflow:hidden;display:flex;align-items:center;flex-wrap:wrap}.p-autocomplete-token{cursor:default;display:inline-flex;align-items:center;flex:0 0 auto}.p-autocomplete-token-icon{cursor:pointer}.p-autocomplete-input-token{flex:1 1 auto;display:inline-flex}.p-autocomplete-input-token input{border:0 none;outline:0 none;background-color:transparent;margin:0;padding:0;box-shadow:none;border-radius:0;width:100%}.p-fluid .p-autocomplete{display:flex}.p-fluid .p-autocomplete-dd .p-autocomplete-input{width:1%}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { minLength: [{\n                type: Input\n            }], delay: [{\n                type: Input\n            }], style: [{\n                type: Input\n            }], panelStyle: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], panelStyleClass: [{\n                type: Input\n            }], inputStyle: [{\n                type: Input\n            }], inputId: [{\n                type: Input\n            }], inputStyleClass: [{\n                type: Input\n            }], placeholder: [{\n                type: Input\n            }], readonly: [{\n                type: Input\n            }], disabled: [{\n                type: Input\n            }], virtualScroll: [{\n                type: Input\n            }], itemSize: [{\n                type: Input\n            }], maxlength: [{\n                type: Input\n            }], name: [{\n                type: Input\n            }], required: [{\n                type: Input\n            }], size: [{\n                type: Input\n            }], appendTo: [{\n                type: Input\n            }], autoHighlight: [{\n                type: Input\n            }], forceSelection: [{\n                type: Input\n            }], type: [{\n                type: Input\n            }], autoZIndex: [{\n                type: Input\n            }], baseZIndex: [{\n                type: Input\n            }], ariaLabel: [{\n                type: Input\n            }], dropdownAriaLabel: [{\n                type: Input\n            }], ariaLabelledBy: [{\n                type: Input\n            }], dropdownIcon: [{\n                type: Input\n            }], unique: [{\n                type: Input\n            }], group: [{\n                type: Input\n            }], completeOnFocus: [{\n                type: Input\n            }], completeMethod: [{\n                type: Output\n            }], onSelect: [{\n                type: Output\n            }], onUnselect: [{\n                type: Output\n            }], onFocus: [{\n                type: Output\n            }], onBlur: [{\n                type: Output\n            }], onDropdownClick: [{\n                type: Output\n            }], onClear: [{\n                type: Output\n            }], onKeyUp: [{\n                type: Output\n            }], onShow: [{\n                type: Output\n            }], onHide: [{\n                type: Output\n            }], field: [{\n                type: Input\n            }], scrollHeight: [{\n                type: Input\n            }], dropdown: [{\n                type: Input\n            }], showEmptyMessage: [{\n                type: Input\n            }], dropdownMode: [{\n                type: Input\n            }], multiple: [{\n                type: Input\n            }], tabindex: [{\n                type: Input\n            }], dataKey: [{\n                type: Input\n            }], emptyMessage: [{\n                type: Input\n            }], showTransitionOptions: [{\n                type: Input\n            }], hideTransitionOptions: [{\n                type: Input\n            }], autofocus: [{\n                type: Input\n            }], autocomplete: [{\n                type: Input\n            }], optionGroupChildren: [{\n                type: Input\n            }], optionGroupLabel: [{\n                type: Input\n            }], containerEL: [{\n                type: ViewChild,\n                args: ['container']\n            }], inputEL: [{\n                type: ViewChild,\n                args: ['in']\n            }], multiInputEL: [{\n                type: ViewChild,\n                args: ['multiIn']\n            }], multiContainerEL: [{\n                type: ViewChild,\n                args: ['multiContainer']\n            }], dropdownButton: [{\n                type: ViewChild,\n                args: ['ddBtn']\n            }], viewPort: [{\n                type: ViewChild,\n                args: [CdkVirtualScrollViewport]\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }], suggestions: [{\n                type: Input\n            }] } });\nclass AutoCompleteModule {\n}\nAutoCompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAutoCompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AutoCompleteModule, declarations: [AutoComplete], imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], exports: [AutoComplete, SharedModule, ScrollingModule] });\nAutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AutoCompleteModule, imports: [[CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule], SharedModule, ScrollingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AutoCompleteModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollingModule],\n                    exports: [AutoComplete, SharedModule, ScrollingModule],\n                    declarations: [AutoComplete]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTOCOMPLETE_VALUE_ACCESSOR, AutoComplete, AutoCompleteModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/862099958665c89c70f59fe16e0f72cb.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/862099958665c89c70f59fe16e0f72cb.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/node_modules/.cache/babel-webpack/862099958665c89c70f59fe16e0f72cb.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from \"@angular/core\";\nimport * as i1 from \"../_services/city.service\";\nimport * as i2 from \"primeng/autocomplete\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"primeng/button\";\nimport * as i6 from \"@angular/material/core\";\n\nfunction ExploreComponent_mat_option_14_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-option\", 10);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const option_r1 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", option_r1.name);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", option_r1.name, \" \");\n  }\n}\n\nexport class ExploreComponent {\n  constructor(cityService) {\n    this.cityService = cityService;\n    this.loading = [false, false, false, false];\n    this.cities = [];\n    this.filteredCountries = [];\n    this.text = '';\n  }\n\n  ngOnInit() {\n    this.cityService.getAllCities().subscribe(cities => {\n      this.cities = cities;\n    });\n  }\n\n  search(event) {\n    let filtered = [];\n    let query = event.query;\n\n    for (let i = 0; i < this.cities.length; i++) {\n      let city = this.cities[i];\n\n      if (city.name.toLowerCase().indexOf(query.toLowerCase()) == 0) {\n        filtered.push(city);\n      }\n    }\n\n    this.filteredCountries = filtered;\n  }\n\n  load(index) {\n    this.loading[index] = true;\n    setTimeout(() => this.loading[index] = false, 1000);\n  }\n\n}\n\nExploreComponent.ɵfac = function ExploreComponent_Factory(t) {\n  return new (t || ExploreComponent)(i0.ɵɵdirectiveInject(i1.CityService));\n};\n\nExploreComponent.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n  type: ExploreComponent,\n  selectors: [[\"app-explore\"]],\n  decls: 18,\n  vars: 7,\n  consts: [[\"href\", \"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\", \"rel\", \"stylesheet\", \"integrity\", \"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\", \"crossorigin\", \"anonymous\"], [\"lang\", \"en\"], [\"charset\", \"utf-8\"], [1, \"navbar\", \"navbar-expand-sm\"], [1, \"navbar-brand\"], [1, \"navbar-nav\", \"ml-auto\"], [1, \"nav-item\"], [\"field\", \"name\", 3, \"ngModel\", \"suggestions\", \"minLength\", \"ngModelChange\", \"completeMethod\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"label\", \"Search\", \"icon\", \"pi pi-search\", \"id\", \"button\", 3, \"loading\", \"click\"], [3, \"value\"]],\n  template: function ExploreComponent_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelement(0, \"link\", 0);\n      i0.ɵɵelementStart(1, \"html\", 1);\n      i0.ɵɵelementStart(2, \"head\");\n      i0.ɵɵelement(3, \"meta\", 2);\n      i0.ɵɵelementStart(4, \"title\");\n      i0.ɵɵtext(5, \"Explore\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(6, \"body\");\n      i0.ɵɵelementStart(7, \"header\");\n      i0.ɵɵelementStart(8, \"nav\", 3);\n      i0.ɵɵelementStart(9, \"strong\", 4);\n      i0.ɵɵtext(10, \"Trivia Trip\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(11, \"ul\", 5);\n      i0.ɵɵelementStart(12, \"li\", 6);\n      i0.ɵɵelementStart(13, \"p-autoComplete\", 7);\n      i0.ɵɵlistener(\"ngModelChange\", function ExploreComponent_Template_p_autoComplete_ngModelChange_13_listener($event) {\n        return ctx.text = $event;\n      })(\"completeMethod\", function ExploreComponent_Template_p_autoComplete_completeMethod_13_listener($event) {\n        return ctx.search($event);\n      });\n      i0.ɵɵtemplate(14, ExploreComponent_mat_option_14_Template, 2, 2, \"mat-option\", 8);\n      i0.ɵɵpipe(15, \"async\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(16, \"p-button\", 9);\n      i0.ɵɵlistener(\"click\", function ExploreComponent_Template_p_button_click_16_listener() {\n        return ctx.load(0);\n      });\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelement(17, \"li\", 6);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵadvance(13);\n      i0.ɵɵproperty(\"ngModel\", ctx.text)(\"suggestions\", ctx.filteredCountries)(\"minLength\", 1);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngForOf\", i0.ɵɵpipeBind1(15, 5, ctx.filteredOptions));\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"loading\", ctx.loading[0]);\n    }\n  },\n  directives: [i2.AutoComplete, i3.NgControlStatus, i3.NgModel, i4.NgForOf, i5.Button, i6.MatOption],\n  pipes: [i4.AsyncPipe],\n  styles: [\"#button[_ngcontent-%COMP%]{\\r\\n    margin-left: 20px;\\r\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cGxvcmUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGlCQUFpQjtBQUNyQiIsImZpbGUiOiJleHBsb3JlLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjYnV0dG9ue1xyXG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XHJcbn0iXX0= */\"]\n});","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/src/app/explore/explore.component.ts"],"names":["i0","i1","i2","i3","i4","i5","i6","ExploreComponent_mat_option_14_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","option_r1","$implicit","ɵɵproperty","name","ɵɵadvance","ɵɵtextInterpolate1","ExploreComponent","constructor","cityService","loading","cities","filteredCountries","text","ngOnInit","getAllCities","subscribe","search","event","filtered","query","i","length","city","toLowerCase","indexOf","push","load","index","setTimeout","ɵfac","ExploreComponent_Factory","t","ɵɵdirectiveInject","CityService","ɵcmp","ɵɵdefineComponent","type","selectors","decls","vars","consts","template","ExploreComponent_Template","ɵɵelement","ɵɵlistener","ExploreComponent_Template_p_autoComplete_ngModelChange_13_listener","$event","ExploreComponent_Template_p_autoComplete_completeMethod_13_listener","ɵɵtemplate","ɵɵpipe","ExploreComponent_Template_p_button_click_16_listener","ɵɵpipeBind1","filteredOptions","directives","AutoComplete","NgControlStatus","NgModel","NgForOf","Button","MatOption","pipes","AsyncPipe","styles"],"mappings":"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","sourcesContent":["import * as i0 from \"@angular/core\";\r\nimport * as i1 from \"../_services/city.service\";\r\nimport * as i2 from \"primeng/autocomplete\";\r\nimport * as i3 from \"@angular/forms\";\r\nimport * as i4 from \"@angular/common\";\r\nimport * as i5 from \"primeng/button\";\r\nimport * as i6 from \"@angular/material/core\";\r\nfunction ExploreComponent_mat_option_14_Template(rf, ctx) { if (rf & 1) {\r\n    i0.ɵɵelementStart(0, \"mat-option\", 10);\r\n    i0.ɵɵtext(1);\r\n    i0.ɵɵelementEnd();\r\n} if (rf & 2) {\r\n    const option_r1 = ctx.$implicit;\r\n    i0.ɵɵproperty(\"value\", option_r1.name);\r\n    i0.ɵɵadvance(1);\r\n    i0.ɵɵtextInterpolate1(\" \", option_r1.name, \" \");\r\n} }\r\nexport class ExploreComponent {\r\n    constructor(cityService) {\r\n        this.cityService = cityService;\r\n        this.loading = [false, false, false, false];\r\n        this.cities = [];\r\n        this.filteredCountries = [];\r\n        this.text = '';\r\n    }\r\n    ngOnInit() {\r\n        this.cityService.getAllCities().subscribe(cities => {\r\n            this.cities = cities;\r\n        });\r\n    }\r\n    search(event) {\r\n        let filtered = [];\r\n        let query = event.query;\r\n        for (let i = 0; i < this.cities.length; i++) {\r\n            let city = this.cities[i];\r\n            if (city.name.toLowerCase().indexOf(query.toLowerCase()) == 0) {\r\n                filtered.push(city);\r\n            }\r\n        }\r\n        this.filteredCountries = filtered;\r\n    }\r\n    load(index) {\r\n        this.loading[index] = true;\r\n        setTimeout(() => this.loading[index] = false, 1000);\r\n    }\r\n}\r\nExploreComponent.ɵfac = function ExploreComponent_Factory(t) { return new (t || ExploreComponent)(i0.ɵɵdirectiveInject(i1.CityService)); };\r\nExploreComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExploreComponent, selectors: [[\"app-explore\"]], decls: 18, vars: 7, consts: [[\"href\", \"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\", \"rel\", \"stylesheet\", \"integrity\", \"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\", \"crossorigin\", \"anonymous\"], [\"lang\", \"en\"], [\"charset\", \"utf-8\"], [1, \"navbar\", \"navbar-expand-sm\"], [1, \"navbar-brand\"], [1, \"navbar-nav\", \"ml-auto\"], [1, \"nav-item\"], [\"field\", \"name\", 3, \"ngModel\", \"suggestions\", \"minLength\", \"ngModelChange\", \"completeMethod\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"label\", \"Search\", \"icon\", \"pi pi-search\", \"id\", \"button\", 3, \"loading\", \"click\"], [3, \"value\"]], template: function ExploreComponent_Template(rf, ctx) { if (rf & 1) {\r\n        i0.ɵɵelement(0, \"link\", 0);\r\n        i0.ɵɵelementStart(1, \"html\", 1);\r\n        i0.ɵɵelementStart(2, \"head\");\r\n        i0.ɵɵelement(3, \"meta\", 2);\r\n        i0.ɵɵelementStart(4, \"title\");\r\n        i0.ɵɵtext(5, \"Explore\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(6, \"body\");\r\n        i0.ɵɵelementStart(7, \"header\");\r\n        i0.ɵɵelementStart(8, \"nav\", 3);\r\n        i0.ɵɵelementStart(9, \"strong\", 4);\r\n        i0.ɵɵtext(10, \"Trivia Trip\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(11, \"ul\", 5);\r\n        i0.ɵɵelementStart(12, \"li\", 6);\r\n        i0.ɵɵelementStart(13, \"p-autoComplete\", 7);\r\n        i0.ɵɵlistener(\"ngModelChange\", function ExploreComponent_Template_p_autoComplete_ngModelChange_13_listener($event) { return ctx.text = $event; })(\"completeMethod\", function ExploreComponent_Template_p_autoComplete_completeMethod_13_listener($event) { return ctx.search($event); });\r\n        i0.ɵɵtemplate(14, ExploreComponent_mat_option_14_Template, 2, 2, \"mat-option\", 8);\r\n        i0.ɵɵpipe(15, \"async\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(16, \"p-button\", 9);\r\n        i0.ɵɵlistener(\"click\", function ExploreComponent_Template_p_button_click_16_listener() { return ctx.load(0); });\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelement(17, \"li\", 6);\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n    } if (rf & 2) {\r\n        i0.ɵɵadvance(13);\r\n        i0.ɵɵproperty(\"ngModel\", ctx.text)(\"suggestions\", ctx.filteredCountries)(\"minLength\", 1);\r\n        i0.ɵɵadvance(1);\r\n        i0.ɵɵproperty(\"ngForOf\", i0.ɵɵpipeBind1(15, 5, ctx.filteredOptions));\r\n        i0.ɵɵadvance(2);\r\n        i0.ɵɵproperty(\"loading\", ctx.loading[0]);\r\n    } }, directives: [i2.AutoComplete, i3.NgControlStatus, i3.NgModel, i4.NgForOf, i5.Button, i6.MatOption], pipes: [i4.AsyncPipe], styles: [\"#button[_ngcontent-%COMP%]{\\r\\n    margin-left: 20px;\\r\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cGxvcmUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGlCQUFpQjtBQUNyQiIsImZpbGUiOiJleHBsb3JlLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjYnV0dG9ue1xyXG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XHJcbn0iXX0= */\"] });\r\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/d706a75075c8bdd8debc9bc1e8f1b562.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/d706a75075c8bdd8debc9bc1e8f1b562.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/node_modules/.cache/babel-webpack/d706a75075c8bdd8debc9bc1e8f1b562.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nfunction Rating_span_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r3 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"span\", 3);\n    i0.ɵɵlistener(\"click\", function Rating_span_1_Template_span_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r3);\n      const ctx_r2 = i0.ɵɵnextContext();\n      return ctx_r2.clear($event);\n    })(\"keydown.enter\", function Rating_span_1_Template_span_keydown_enter_0_listener($event) {\n      i0.ɵɵrestoreView(_r3);\n      const ctx_r4 = i0.ɵɵnextContext();\n      return ctx_r4.clear($event);\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", ctx_r0.iconCancelClass)(\"ngStyle\", ctx_r0.iconCancelStyle);\n    i0.ɵɵattribute(\"tabindex\", ctx_r0.disabled || ctx_r0.readonly ? null : \"0\");\n  }\n}\n\nfunction Rating_span_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r8 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"span\", 4);\n    i0.ɵɵlistener(\"click\", function Rating_span_2_Template_span_click_0_listener($event) {\n      const restoredCtx = i0.ɵɵrestoreView(_r8);\n      const i_r6 = restoredCtx.index;\n      const ctx_r7 = i0.ɵɵnextContext();\n      return ctx_r7.rate($event, i_r6);\n    })(\"keydown.enter\", function Rating_span_2_Template_span_keydown_enter_0_listener($event) {\n      const restoredCtx = i0.ɵɵrestoreView(_r8);\n      const i_r6 = restoredCtx.index;\n      const ctx_r9 = i0.ɵɵnextContext();\n      return ctx_r9.rate($event, i_r6);\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const i_r6 = ctx.index;\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", !ctx_r1.value || i_r6 >= ctx_r1.value ? ctx_r1.iconOffClass : ctx_r1.iconOnClass)(\"ngStyle\", !ctx_r1.value || i_r6 >= ctx_r1.value ? ctx_r1.iconOffStyle : ctx_r1.iconOnStyle);\n    i0.ɵɵattribute(\"tabindex\", ctx_r1.disabled || ctx_r1.readonly ? null : \"0\");\n  }\n}\n\nconst _c0 = function (a0, a1) {\n  return {\n    \"p-readonly\": a0,\n    \"p-disabled\": a1\n  };\n};\n\nconst RATING_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Rating),\n  multi: true\n};\n\nclass Rating {\n  constructor(cd) {\n    this.cd = cd;\n    this.stars = 5;\n    this.cancel = true;\n    this.iconOnClass = 'pi pi-star-fill';\n    this.iconOffClass = 'pi pi-star';\n    this.iconCancelClass = 'pi pi-ban';\n    this.onRate = new EventEmitter();\n    this.onCancel = new EventEmitter();\n\n    this.onModelChange = () => {};\n\n    this.onModelTouched = () => {};\n  }\n\n  ngOnInit() {\n    this.starsArray = [];\n\n    for (let i = 0; i < this.stars; i++) {\n      this.starsArray[i] = i;\n    }\n  }\n\n  rate(event, i) {\n    if (!this.readonly && !this.disabled) {\n      this.value = i + 1;\n      this.onModelChange(this.value);\n      this.onModelTouched();\n      this.onRate.emit({\n        originalEvent: event,\n        value: i + 1\n      });\n    }\n\n    event.preventDefault();\n  }\n\n  clear(event) {\n    if (!this.readonly && !this.disabled) {\n      this.value = null;\n      this.onModelChange(this.value);\n      this.onModelTouched();\n      this.onCancel.emit(event);\n    }\n\n    event.preventDefault();\n  }\n\n  writeValue(value) {\n    this.value = value;\n    this.cd.detectChanges();\n  }\n\n  registerOnChange(fn) {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn) {\n    this.onModelTouched = fn;\n  }\n\n  setDisabledState(val) {\n    this.disabled = val;\n    this.cd.markForCheck();\n  }\n\n}\n\nRating.ɵfac = function Rating_Factory(t) {\n  return new (t || Rating)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nRating.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Rating,\n  selectors: [[\"p-rating\"]],\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    disabled: \"disabled\",\n    readonly: \"readonly\",\n    stars: \"stars\",\n    cancel: \"cancel\",\n    iconOnClass: \"iconOnClass\",\n    iconOnStyle: \"iconOnStyle\",\n    iconOffClass: \"iconOffClass\",\n    iconOffStyle: \"iconOffStyle\",\n    iconCancelClass: \"iconCancelClass\",\n    iconCancelStyle: \"iconCancelStyle\"\n  },\n  outputs: {\n    onRate: \"onRate\",\n    onCancel: \"onCancel\"\n  },\n  features: [i0.ɵɵProvidersFeature([RATING_VALUE_ACCESSOR])],\n  decls: 3,\n  vars: 6,\n  consts: [[1, \"p-rating\", 3, \"ngClass\"], [\"class\", \"p-rating-icon p-rating-cancel\", 3, \"ngClass\", \"ngStyle\", \"click\", \"keydown.enter\", 4, \"ngIf\"], [\"class\", \"p-rating-icon\", 3, \"ngClass\", \"ngStyle\", \"click\", \"keydown.enter\", 4, \"ngFor\", \"ngForOf\"], [1, \"p-rating-icon\", \"p-rating-cancel\", 3, \"ngClass\", \"ngStyle\", \"click\", \"keydown.enter\"], [1, \"p-rating-icon\", 3, \"ngClass\", \"ngStyle\", \"click\", \"keydown.enter\"]],\n  template: function Rating_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵtemplate(1, Rating_span_1_Template, 1, 3, \"span\", 1);\n      i0.ɵɵtemplate(2, Rating_span_2_Template, 1, 3, \"span\", 2);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(3, _c0, ctx.readonly, ctx.disabled));\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.cancel);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngForOf\", ctx.starsArray);\n    }\n  },\n  directives: [i1.NgClass, i1.NgIf, i1.NgForOf, i1.NgStyle],\n  styles: [\".p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}\\n\"],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Rating, [{\n    type: Component,\n    args: [{\n      selector: 'p-rating',\n      template: `\n        <div class=\"p-rating\" [ngClass]=\"{'p-readonly': readonly, 'p-disabled': disabled}\">\n            <span [attr.tabindex]=\"(disabled || readonly) ? null : '0'\" *ngIf=\"cancel\" (click)=\"clear($event)\" (keydown.enter)=\"clear($event)\" class=\"p-rating-icon p-rating-cancel\" [ngClass]=\"iconCancelClass\" [ngStyle]=\"iconCancelStyle\"></span>\n            <span *ngFor=\"let star of starsArray;let i=index\" class=\"p-rating-icon\" [attr.tabindex]=\"(disabled || readonly) ? null : '0'\"  (click)=\"rate($event,i)\" (keydown.enter)=\"rate($event,i)\"\n                [ngClass]=\"(!value || i >= value) ? iconOffClass : iconOnClass\"\n                [ngStyle]=\"(!value || i >= value) ? iconOffStyle : iconOnStyle\"></span>\n        </div>\n    `,\n      providers: [RATING_VALUE_ACCESSOR],\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    disabled: [{\n      type: Input\n    }],\n    readonly: [{\n      type: Input\n    }],\n    stars: [{\n      type: Input\n    }],\n    cancel: [{\n      type: Input\n    }],\n    iconOnClass: [{\n      type: Input\n    }],\n    iconOnStyle: [{\n      type: Input\n    }],\n    iconOffClass: [{\n      type: Input\n    }],\n    iconOffStyle: [{\n      type: Input\n    }],\n    iconCancelClass: [{\n      type: Input\n    }],\n    iconCancelStyle: [{\n      type: Input\n    }],\n    onRate: [{\n      type: Output\n    }],\n    onCancel: [{\n      type: Output\n    }]\n  });\n})();\n\nclass RatingModule {}\n\nRatingModule.ɵfac = function RatingModule_Factory(t) {\n  return new (t || RatingModule)();\n};\n\nRatingModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: RatingModule\n});\nRatingModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RatingModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule],\n      exports: [Rating],\n      declarations: [Rating]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { RATING_VALUE_ACCESSOR, Rating, RatingModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2015/primeng-rating.mjs"],"names":["i0","forwardRef","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","Input","Output","NgModule","i1","CommonModule","NG_VALUE_ACCESSOR","RATING_VALUE_ACCESSOR","provide","useExisting","Rating","multi","constructor","cd","stars","cancel","iconOnClass","iconOffClass","iconCancelClass","onRate","onCancel","onModelChange","onModelTouched","ngOnInit","starsArray","i","rate","event","readonly","disabled","value","emit","originalEvent","preventDefault","clear","writeValue","detectChanges","registerOnChange","fn","registerOnTouched","setDisabledState","val","markForCheck","ɵfac","ChangeDetectorRef","ɵcmp","NgClass","NgIf","NgForOf","NgStyle","type","args","selector","template","providers","changeDetection","OnPush","encapsulation","None","host","styles","iconOnStyle","iconOffStyle","iconCancelStyle","RatingModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst RATING_VALUE_ACCESSOR = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Rating),\n    multi: true\n};\nclass Rating {\n    constructor(cd) {\n        this.cd = cd;\n        this.stars = 5;\n        this.cancel = true;\n        this.iconOnClass = 'pi pi-star-fill';\n        this.iconOffClass = 'pi pi-star';\n        this.iconCancelClass = 'pi pi-ban';\n        this.onRate = new EventEmitter();\n        this.onCancel = new EventEmitter();\n        this.onModelChange = () => { };\n        this.onModelTouched = () => { };\n    }\n    ngOnInit() {\n        this.starsArray = [];\n        for (let i = 0; i < this.stars; i++) {\n            this.starsArray[i] = i;\n        }\n    }\n    rate(event, i) {\n        if (!this.readonly && !this.disabled) {\n            this.value = (i + 1);\n            this.onModelChange(this.value);\n            this.onModelTouched();\n            this.onRate.emit({\n                originalEvent: event,\n                value: (i + 1)\n            });\n        }\n        event.preventDefault();\n    }\n    clear(event) {\n        if (!this.readonly && !this.disabled) {\n            this.value = null;\n            this.onModelChange(this.value);\n            this.onModelTouched();\n            this.onCancel.emit(event);\n        }\n        event.preventDefault();\n    }\n    writeValue(value) {\n        this.value = value;\n        this.cd.detectChanges();\n    }\n    registerOnChange(fn) {\n        this.onModelChange = fn;\n    }\n    registerOnTouched(fn) {\n        this.onModelTouched = fn;\n    }\n    setDisabledState(val) {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n}\nRating.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Rating, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nRating.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Rating, selector: \"p-rating\", inputs: { disabled: \"disabled\", readonly: \"readonly\", stars: \"stars\", cancel: \"cancel\", iconOnClass: \"iconOnClass\", iconOnStyle: \"iconOnStyle\", iconOffClass: \"iconOffClass\", iconOffStyle: \"iconOffStyle\", iconCancelClass: \"iconCancelClass\", iconCancelStyle: \"iconCancelStyle\" }, outputs: { onRate: \"onRate\", onCancel: \"onCancel\" }, host: { classAttribute: \"p-element\" }, providers: [RATING_VALUE_ACCESSOR], ngImport: i0, template: `\n        <div class=\"p-rating\" [ngClass]=\"{'p-readonly': readonly, 'p-disabled': disabled}\">\n            <span [attr.tabindex]=\"(disabled || readonly) ? null : '0'\" *ngIf=\"cancel\" (click)=\"clear($event)\" (keydown.enter)=\"clear($event)\" class=\"p-rating-icon p-rating-cancel\" [ngClass]=\"iconCancelClass\" [ngStyle]=\"iconCancelStyle\"></span>\n            <span *ngFor=\"let star of starsArray;let i=index\" class=\"p-rating-icon\" [attr.tabindex]=\"(disabled || readonly) ? null : '0'\"  (click)=\"rate($event,i)\" (keydown.enter)=\"rate($event,i)\"\n                [ngClass]=\"(!value || i >= value) ? iconOffClass : iconOnClass\"\n                [ngStyle]=\"(!value || i >= value) ? iconOffStyle : iconOnStyle\"></span>\n        </div>\n    `, isInline: true, styles: [\".p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}\\n\"], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Rating, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-rating', template: `\n        <div class=\"p-rating\" [ngClass]=\"{'p-readonly': readonly, 'p-disabled': disabled}\">\n            <span [attr.tabindex]=\"(disabled || readonly) ? null : '0'\" *ngIf=\"cancel\" (click)=\"clear($event)\" (keydown.enter)=\"clear($event)\" class=\"p-rating-icon p-rating-cancel\" [ngClass]=\"iconCancelClass\" [ngStyle]=\"iconCancelStyle\"></span>\n            <span *ngFor=\"let star of starsArray;let i=index\" class=\"p-rating-icon\" [attr.tabindex]=\"(disabled || readonly) ? null : '0'\"  (click)=\"rate($event,i)\" (keydown.enter)=\"rate($event,i)\"\n                [ngClass]=\"(!value || i >= value) ? iconOffClass : iconOnClass\"\n                [ngStyle]=\"(!value || i >= value) ? iconOffStyle : iconOnStyle\"></span>\n        </div>\n    `, providers: [RATING_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-rating-icon{cursor:pointer}.p-rating.p-rating-readonly .p-rating-icon{cursor:default}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{\n                type: Input\n            }], readonly: [{\n                type: Input\n            }], stars: [{\n                type: Input\n            }], cancel: [{\n                type: Input\n            }], iconOnClass: [{\n                type: Input\n            }], iconOnStyle: [{\n                type: Input\n            }], iconOffClass: [{\n                type: Input\n            }], iconOffStyle: [{\n                type: Input\n            }], iconCancelClass: [{\n                type: Input\n            }], iconCancelStyle: [{\n                type: Input\n            }], onRate: [{\n                type: Output\n            }], onCancel: [{\n                type: Output\n            }] } });\nclass RatingModule {\n}\nRatingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRatingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RatingModule, declarations: [Rating], imports: [CommonModule], exports: [Rating] });\nRatingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RatingModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RatingModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule],\n                    exports: [Rating],\n                    declarations: [Rating]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { RATING_VALUE_ACCESSOR, Rating, RatingModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/f189b3afdffccf7714f5ab806928815a.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/f189b3afdffccf7714f5ab806928815a.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/node_modules/.cache/babel-webpack/f189b3afdffccf7714f5ab806928815a.json	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from \"@angular/core\";\nimport * as i1 from \"../_services/city.service\";\nimport * as i2 from \"primeng/autocomplete\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"primeng/button\";\nimport * as i6 from \"@angular/material/core\";\n\nfunction ExploreComponent_mat_option_14_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-option\", 10);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const option_r1 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", option_r1.name);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", option_r1.name, \" \");\n  }\n}\n\nexport class ExploreComponent {\n  constructor(cityService) {\n    this.cityService = cityService;\n    this.loading = [false, false, false, false];\n    this.cities = [];\n    this.filteredCountries = [];\n    this.text = '';\n  }\n\n  ngOnInit() {\n    this.cityService.getAllCities().subscribe(cities => {\n      this.cities = cities;\n    });\n  }\n\n  search(event) {\n    let filtered = [];\n    let query = event.query;\n\n    for (let i = 0; i < this.cities.length; i++) {\n      let city = this.cities[i];\n\n      if (city.name.toLowerCase().indexOf(query.toLowerCase()) == 0) {\n        filtered.push(city);\n      }\n    }\n\n    this.filteredCountries = filtered;\n  }\n\n  load(index) {\n    this.loading[index] = true;\n    setTimeout(() => this.loading[index] = false, 1000);\n  }\n\n}\n\nExploreComponent.ɵfac = function ExploreComponent_Factory(t) {\n  return new (t || ExploreComponent)(i0.ɵɵdirectiveInject(i1.CityService));\n};\n\nExploreComponent.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n  type: ExploreComponent,\n  selectors: [[\"app-explore\"]],\n  decls: 18,\n  vars: 7,\n  consts: [[\"href\", \"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\", \"rel\", \"stylesheet\", \"integrity\", \"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\", \"crossorigin\", \"anonymous\"], [\"lang\", \"en\"], [\"charset\", \"utf-8\"], [1, \"navbar\", \"navbar-expand-sm\"], [1, \"navbar-brand\"], [1, \"navbar-nav\", \"ml-auto\"], [1, \"nav-item\"], [\"field\", \"name\", 3, \"ngModel\", \"suggestions\", \"minLength\", \"ngModelChange\", \"completeMethod\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"label\", \"Search\", \"icon\", \"pi pi-search\", \"id\", \"button\", 3, \"loading\", \"click\"], [3, \"value\"]],\n  template: function ExploreComponent_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelement(0, \"link\", 0);\n      i0.ɵɵelementStart(1, \"html\", 1);\n      i0.ɵɵelementStart(2, \"head\");\n      i0.ɵɵelement(3, \"meta\", 2);\n      i0.ɵɵelementStart(4, \"title\");\n      i0.ɵɵtext(5, \"Explore\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(6, \"body\");\n      i0.ɵɵelementStart(7, \"header\");\n      i0.ɵɵelementStart(8, \"nav\", 3);\n      i0.ɵɵelementStart(9, \"strong\", 4);\n      i0.ɵɵtext(10, \"Trivia Trip\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(11, \"ul\", 5);\n      i0.ɵɵelementStart(12, \"li\", 6);\n      i0.ɵɵelementStart(13, \"p-autoComplete\", 7);\n      i0.ɵɵlistener(\"ngModelChange\", function ExploreComponent_Template_p_autoComplete_ngModelChange_13_listener($event) {\n        return ctx.text = $event;\n      })(\"completeMethod\", function ExploreComponent_Template_p_autoComplete_completeMethod_13_listener($event) {\n        return ctx.search($event);\n      });\n      i0.ɵɵtemplate(14, ExploreComponent_mat_option_14_Template, 2, 2, \"mat-option\", 8);\n      i0.ɵɵpipe(15, \"async\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(16, \"p-button\", 9);\n      i0.ɵɵlistener(\"click\", function ExploreComponent_Template_p_button_click_16_listener() {\n        return ctx.load(0);\n      });\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelement(17, \"li\", 6);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵadvance(13);\n      i0.ɵɵproperty(\"ngModel\", ctx.text)(\"suggestions\", ctx.filteredCountries)(\"minLength\", 1);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngForOf\", i0.ɵɵpipeBind1(15, 5, ctx.filteredCountries));\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"loading\", ctx.loading[0]);\n    }\n  },\n  directives: [i2.AutoComplete, i3.NgControlStatus, i3.NgModel, i4.NgForOf, i5.Button, i6.MatOption],\n  pipes: [i4.AsyncPipe],\n  styles: [\"#button[_ngcontent-%COMP%]{\\r\\n    margin-left: 20px;\\r\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cGxvcmUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGlCQUFpQjtBQUNyQiIsImZpbGUiOiJleHBsb3JlLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjYnV0dG9ue1xyXG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XHJcbn0iXX0= */\"]\n});","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/src/app/explore/explore.component.ts"],"names":["i0","i1","i2","i3","i4","i5","i6","ExploreComponent_mat_option_14_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","option_r1","$implicit","ɵɵproperty","name","ɵɵadvance","ɵɵtextInterpolate1","ExploreComponent","constructor","cityService","loading","cities","filteredCountries","text","ngOnInit","getAllCities","subscribe","search","event","filtered","query","i","length","city","toLowerCase","indexOf","push","load","index","setTimeout","ɵfac","ExploreComponent_Factory","t","ɵɵdirectiveInject","CityService","ɵcmp","ɵɵdefineComponent","type","selectors","decls","vars","consts","template","ExploreComponent_Template","ɵɵelement","ɵɵlistener","ExploreComponent_Template_p_autoComplete_ngModelChange_13_listener","$event","ExploreComponent_Template_p_autoComplete_completeMethod_13_listener","ɵɵtemplate","ɵɵpipe","ExploreComponent_Template_p_button_click_16_listener","ɵɵpipeBind1","directives","AutoComplete","NgControlStatus","NgModel","NgForOf","Button","MatOption","pipes","AsyncPipe","styles"],"mappings":"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","sourcesContent":["import * as i0 from \"@angular/core\";\r\nimport * as i1 from \"../_services/city.service\";\r\nimport * as i2 from \"primeng/autocomplete\";\r\nimport * as i3 from \"@angular/forms\";\r\nimport * as i4 from \"@angular/common\";\r\nimport * as i5 from \"primeng/button\";\r\nimport * as i6 from \"@angular/material/core\";\r\nfunction ExploreComponent_mat_option_14_Template(rf, ctx) { if (rf & 1) {\r\n    i0.ɵɵelementStart(0, \"mat-option\", 10);\r\n    i0.ɵɵtext(1);\r\n    i0.ɵɵelementEnd();\r\n} if (rf & 2) {\r\n    const option_r1 = ctx.$implicit;\r\n    i0.ɵɵproperty(\"value\", option_r1.name);\r\n    i0.ɵɵadvance(1);\r\n    i0.ɵɵtextInterpolate1(\" \", option_r1.name, \" \");\r\n} }\r\nexport class ExploreComponent {\r\n    constructor(cityService) {\r\n        this.cityService = cityService;\r\n        this.loading = [false, false, false, false];\r\n        this.cities = [];\r\n        this.filteredCountries = [];\r\n        this.text = '';\r\n    }\r\n    ngOnInit() {\r\n        this.cityService.getAllCities().subscribe(cities => {\r\n            this.cities = cities;\r\n        });\r\n    }\r\n    search(event) {\r\n        let filtered = [];\r\n        let query = event.query;\r\n        for (let i = 0; i < this.cities.length; i++) {\r\n            let city = this.cities[i];\r\n            if (city.name.toLowerCase().indexOf(query.toLowerCase()) == 0) {\r\n                filtered.push(city);\r\n            }\r\n        }\r\n        this.filteredCountries = filtered;\r\n    }\r\n    load(index) {\r\n        this.loading[index] = true;\r\n        setTimeout(() => this.loading[index] = false, 1000);\r\n    }\r\n}\r\nExploreComponent.ɵfac = function ExploreComponent_Factory(t) { return new (t || ExploreComponent)(i0.ɵɵdirectiveInject(i1.CityService)); };\r\nExploreComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExploreComponent, selectors: [[\"app-explore\"]], decls: 18, vars: 7, consts: [[\"href\", \"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\", \"rel\", \"stylesheet\", \"integrity\", \"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\", \"crossorigin\", \"anonymous\"], [\"lang\", \"en\"], [\"charset\", \"utf-8\"], [1, \"navbar\", \"navbar-expand-sm\"], [1, \"navbar-brand\"], [1, \"navbar-nav\", \"ml-auto\"], [1, \"nav-item\"], [\"field\", \"name\", 3, \"ngModel\", \"suggestions\", \"minLength\", \"ngModelChange\", \"completeMethod\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"label\", \"Search\", \"icon\", \"pi pi-search\", \"id\", \"button\", 3, \"loading\", \"click\"], [3, \"value\"]], template: function ExploreComponent_Template(rf, ctx) { if (rf & 1) {\r\n        i0.ɵɵelement(0, \"link\", 0);\r\n        i0.ɵɵelementStart(1, \"html\", 1);\r\n        i0.ɵɵelementStart(2, \"head\");\r\n        i0.ɵɵelement(3, \"meta\", 2);\r\n        i0.ɵɵelementStart(4, \"title\");\r\n        i0.ɵɵtext(5, \"Explore\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(6, \"body\");\r\n        i0.ɵɵelementStart(7, \"header\");\r\n        i0.ɵɵelementStart(8, \"nav\", 3);\r\n        i0.ɵɵelementStart(9, \"strong\", 4);\r\n        i0.ɵɵtext(10, \"Trivia Trip\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(11, \"ul\", 5);\r\n        i0.ɵɵelementStart(12, \"li\", 6);\r\n        i0.ɵɵelementStart(13, \"p-autoComplete\", 7);\r\n        i0.ɵɵlistener(\"ngModelChange\", function ExploreComponent_Template_p_autoComplete_ngModelChange_13_listener($event) { return ctx.text = $event; })(\"completeMethod\", function ExploreComponent_Template_p_autoComplete_completeMethod_13_listener($event) { return ctx.search($event); });\r\n        i0.ɵɵtemplate(14, ExploreComponent_mat_option_14_Template, 2, 2, \"mat-option\", 8);\r\n        i0.ɵɵpipe(15, \"async\");\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementStart(16, \"p-button\", 9);\r\n        i0.ɵɵlistener(\"click\", function ExploreComponent_Template_p_button_click_16_listener() { return ctx.load(0); });\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelement(17, \"li\", 6);\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n        i0.ɵɵelementEnd();\r\n    } if (rf & 2) {\r\n        i0.ɵɵadvance(13);\r\n        i0.ɵɵproperty(\"ngModel\", ctx.text)(\"suggestions\", ctx.filteredCountries)(\"minLength\", 1);\r\n        i0.ɵɵadvance(1);\r\n        i0.ɵɵproperty(\"ngForOf\", i0.ɵɵpipeBind1(15, 5, ctx.filteredCountries));\r\n        i0.ɵɵadvance(2);\r\n        i0.ɵɵproperty(\"loading\", ctx.loading[0]);\r\n    } }, directives: [i2.AutoComplete, i3.NgControlStatus, i3.NgModel, i4.NgForOf, i5.Button, i6.MatOption], pipes: [i4.AsyncPipe], styles: [\"#button[_ngcontent-%COMP%]{\\r\\n    margin-left: 20px;\\r\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cGxvcmUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUNJLGlCQUFpQjtBQUNyQiIsImZpbGUiOiJleHBsb3JlLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjYnV0dG9ue1xyXG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XHJcbn0iXX0= */\"] });\r\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/src/app/_models/city.ts
===================================================================
--- trip-planner-front/src/app/_models/city.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/_models/city.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -7,6 +7,6 @@
     constructor(){
         this.id = 1;
-        this.name= 'City name';
-        this.description= 'City description';
+        this.name= '';
+        this.description= '';
     }
 }
Index: trip-planner-front/src/app/_models/dto/usernameDto.ts
===================================================================
--- trip-planner-front/src/app/_models/dto/usernameDto.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/src/app/_models/dto/usernameDto.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,8 @@
+export class UsernameDto{
+
+    username: string;
+    
+    constructor(){
+        this.username = '';
+    }
+}
Index: trip-planner-front/src/app/_services/location.service.ts
===================================================================
--- trip-planner-front/src/app/_services/location.service.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/_services/location.service.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -23,5 +23,5 @@
     postLocationToPlanner(plannerLocationDto : PlannerLocationDto) : Observable<Location>{
         let url = "http://localhost:8080/api/add-location";
-        return this.httpClient.put<Location>(url, plannerLocationDto);
+        return this.httpClient.post<Location>(url, plannerLocationDto);
     }
 
Index: trip-planner-front/src/app/_services/planner.service.ts
===================================================================
--- trip-planner-front/src/app/_services/planner.service.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/_services/planner.service.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -3,4 +3,5 @@
 import { Observable } from "rxjs";
 import { PlannerDto } from "../_models/dto/plannerDto";
+import { PlannerLocationDto } from "../_models/dto/plannerLocationDto";
 import { Planner } from "../_models/planner";
 
@@ -15,5 +16,4 @@
         'Content-Type': 'application/json'
     });
-
 
     constructor(private httpClient: HttpClient) {
@@ -30,5 +30,5 @@
     postInitialPlanner(plannerDto: PlannerDto): Observable<Planner> {
         let url = "http://localhost:8080/api/planner/new";
-        return this.httpClient.post<Planner>(url, plannerDto);
+        return this.httpClient.post<Planner>(url, plannerDto, {headers: this.httpHeaders});
     }
 
@@ -47,3 +47,16 @@
         return this.httpClient.delete<Planner>(url, { headers: this.httpHeaders });
     }
+
+    deleteLocationFromPlanner(plannerLocationDto : PlannerLocationDto) {
+        let url = "http://localhost:8080/api/delete-location";
+        const options = {
+            body: {
+                "plannerId": plannerLocationDto.plannerId, 
+                "locationId": plannerLocationDto.locationId
+            } 
+        }
+        return this.httpClient.request('delete', url, options);
+    }
+ 
+
 }
Index: trip-planner-front/src/app/_services/user.service.ts
===================================================================
--- trip-planner-front/src/app/_services/user.service.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/_services/user.service.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -43,9 +43,23 @@
     let user = sessionStorage.getItem("username");
     let token = sessionStorage.getItem("token");
-    console.log(user);
-    console.log(token);
-    console.log(!(user === null));
     return !(user === null);
   }
 
+  getAllUsernames() {
+    let url = "http://localhost:8080/api/users/usernames";
+    return this.httpClient.get<string[]>(url);
+  }
+
+  getPassword(loginRequest : LoginRequest){
+    let url="http://localhost:8080/api/users/password";
+    const options = {
+      
+      body: {
+          "username": loginRequest.username
+          
+      } 
+  }
+    return this.httpClient.request('get', url, options);
+  }
+
 }
Index: trip-planner-front/src/app/app-routing.module.ts
===================================================================
--- trip-planner-front/src/app/app-routing.module.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/app-routing.module.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -1,5 +1,5 @@
 import { NgModule } from '@angular/core';
 import { RouterModule, Routes } from '@angular/router';
-import { AuthGuard } from './auth/auth.guard';
+import { ExploreComponent } from './explore/explore.component';
 import { HomepageComponent } from './homepage/homepage.component';
 import { LoginComponent } from './homepage/login/login.component';
@@ -17,5 +17,6 @@
   {path: '', component: HomepageComponent},
   {path: '', component:LoginComponent},
-  {path: 'location', component: LocationDetailsComponent}
+  {path: 'location', component: LocationDetailsComponent},
+  {path: 'explore', component: ExploreComponent}
 ];
 
Index: trip-planner-front/src/app/app.module.ts
===================================================================
--- trip-planner-front/src/app/app.module.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/app.module.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -4,5 +4,5 @@
 import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
 import { FormsModule, ReactiveFormsModule } from '@angular/forms';
-import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
+import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { CategoryService } from './_services/cateogry.service';
@@ -26,5 +26,4 @@
 import { MatAutocompleteModule } from '@angular/material/autocomplete';
 import { EditPlannerComponent } from './planner/edit-planner/edit-planner.component';
-import { DetailPlannerComponent } from './planner/detail-planner/detail-planner.component';
 import { AddLocationToPlannerPanelComponent } from './location/add-location-to-planner-panel/add-location-to-planner-panel.component';
 import { HomepageComponent } from './homepage/homepage.component';
@@ -49,5 +48,9 @@
 import { AuthGuard } from './auth/auth.guard';
 import { AuthInterceptor } from './auth/auth.interceptor';
-
+import { ExploreComponent } from './explore/explore.component';
+import {AutoCompleteModule} from 'primeng/autocomplete';
+import { ExploreResultComponent } from './explore/explore-result/explore-result.component';
+import {RatingModule} from 'primeng/rating';
+import { CustomValidators } from './providers/CustomValidators';
 
 @NgModule({
@@ -59,10 +62,11 @@
     LocationsFormComponent,
     EditPlannerComponent,
-    DetailPlannerComponent,
     AddLocationToPlannerPanelComponent,
     HomepageComponent,
     LocationDetailsComponent,
     RegisterComponent,
-    LoginComponent
+    LoginComponent,
+    ExploreComponent,
+    ExploreResultComponent
   ],
   imports: [
@@ -104,5 +108,7 @@
     FormsModule,
     PaginatorModule,
-    CardModule
+    CardModule,
+    AutoCompleteModule,
+    RatingModule
   ],
 
Index: trip-planner-front/src/app/create-initial-planner/create-initial-planner.component.ts
===================================================================
--- trip-planner-front/src/app/create-initial-planner/create-initial-planner.component.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/create-initial-planner/create-initial-planner.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -19,5 +19,5 @@
 
   ngOnInit(): void {
-    this.plannerDto = new Planner();
+    this.plannerDto = new PlannerDto();
   }
 
Index: trip-planner-front/src/app/explore/explore-result/explore-result.component.html
===================================================================
--- trip-planner-front/src/app/explore/explore-result/explore-result.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/src/app/explore/explore-result/explore-result.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,25 @@
+<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet"
+  integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
+<html lang="en">
+
+<head>
+  <meta charset="utf-8">
+
+  <title></title>
+</head>
+
+<body>
+
+  <header>
+  </header>
+
+  <main role="main" style="background-color: #F9F2E8;">
+  </main>
+  <br>
+
+  <footer class="bg-dark text-center text-white">
+
+  </footer>
+</body>
+
+</html>
Index: trip-planner-front/src/app/explore/explore-result/explore-result.component.ts
===================================================================
--- trip-planner-front/src/app/explore/explore-result/explore-result.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/src/app/explore/explore-result/explore-result.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+  selector: 'app-explore-result',
+  templateUrl: './explore-result.component.html',
+  styleUrls: ['./explore-result.component.css']
+})
+export class ExploreResultComponent implements OnInit {
+
+  constructor() { }
+
+  ngOnInit(): void {
+  }
+
+}
Index: trip-planner-front/src/app/explore/explore.component.css
===================================================================
--- trip-planner-front/src/app/explore/explore.component.css	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/src/app/explore/explore.component.css	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,3 @@
+#button{
+    margin-left: 20px;
+}
Index: trip-planner-front/src/app/explore/explore.component.html
===================================================================
--- trip-planner-front/src/app/explore/explore.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/src/app/explore/explore.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,31 @@
+<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet"
+  integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
+<html lang="en">
+
+<head>
+  <meta charset="utf-8">
+  <title>Explore</title>
+</head>
+
+<body>
+  <header>
+    <nav class="navbar navbar-expand-sm">
+      <strong class="navbar-brand">Trivia Trip</strong>
+      <ul class="navbar-nav ml-auto">
+        <li class="nav-item">
+          <p-autoComplete [(ngModel)]="text" [suggestions]="filteredCountries" (completeMethod)="search($event)"
+            field="name" [minLength]="1">
+            <mat-option *ngFor="let cityName of cities" 
+            [value]="cityName.name">
+                {{cityName.name}}
+            </mat-option></p-autoComplete>
+          <p-button label="Search" icon="pi pi-search" [loading]="loading[0]" (click)="load(0)" id="button"></p-button>
+        </li>
+        <li class="nav-item">
+        </li>
+      </ul>
+    </nav>
+  </header>
+</body>
+
+</html>
Index: trip-planner-front/src/app/explore/explore.component.ts
===================================================================
--- trip-planner-front/src/app/explore/explore.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/src/app/explore/explore.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,48 @@
+import { Component, OnInit } from '@angular/core';
+import { City } from '../_models/city';
+import { CityService } from '../_services/city.service';
+
+
+@Component({
+  selector: 'app-explore',
+  templateUrl: './explore.component.html',
+  styleUrls: ['./explore.component.css']
+})
+export class ExploreComponent implements OnInit {
+
+  cities: City[];
+  filteredCountries: any[];
+  text: string;
+  loading = [false, false, false, false];
+
+  constructor(private cityService: CityService) {
+    this.cities = [];
+    this.filteredCountries = [];
+    this.text = '';
+  }
+
+  ngOnInit(): void {
+    this.cityService.getAllCities().subscribe(
+      cities => {
+        this.cities = cities;
+      }
+    );
+  }
+
+  search(event) {
+    let filtered: any[] = [];
+    let query = event.query;
+    for (let i = 0; i < this.cities.length; i++) {
+      let city = this.cities[i];
+      if (city.name.toLowerCase().indexOf(query.toLowerCase()) == 0) {
+        filtered.push(city);
+      }
+    }
+    this.filteredCountries = filtered;
+  }
+
+  load(index) {
+    this.loading[index] = true;
+    setTimeout(() => this.loading[index] = false, 1000);
+  }
+}
Index: trip-planner-front/src/app/homepage/homepage.component.html
===================================================================
--- trip-planner-front/src/app/homepage/homepage.component.html	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/homepage/homepage.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -10,5 +10,5 @@
 
 <body>
-
+  <p-toast></p-toast>
   <header>
     <nav class="navbar navbar-expand-sm bg-light">
Index: trip-planner-front/src/app/homepage/homepage.component.ts
===================================================================
--- trip-planner-front/src/app/homepage/homepage.component.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/homepage/homepage.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -1,5 +1,7 @@
 import { HttpErrorResponse } from '@angular/common/http';
+import { identifierModuleUrl } from '@angular/compiler';
 import { Component, OnInit } from '@angular/core';
 import { Router } from '@angular/router';
+import { MessageService } from 'primeng/api';
 import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';
 import { LoginRequest } from '../_models/dto/loginRequest';
@@ -20,5 +22,4 @@
 
    imageURI = 'https://i.pinimg.com/736x/a1/1a/57/a11a572a1ec4e07039bbd04661a3b035.jpg';
-   myLogo = 'http://www.logo-designer.co/wp-content/uploads/2020/02/2020-tripadvisor-new-logo-design-by-mother-design-4.png';
    responsiveOptions;
    locations: Location[];
@@ -27,5 +28,5 @@
 
    constructor(private locationService: LocationService, private dialogService: DialogService, private userService: UserService,
-      private router: Router) {
+      private router: Router, private messageService: MessageService) {
       this.responsiveOptions = [
          {
@@ -61,5 +62,4 @@
          }
       );
-
    }
 
@@ -82,5 +82,5 @@
       },
          err => {
-
+            console.log("oops");
          });
    }
Index: trip-planner-front/src/app/homepage/login/login.component.html
===================================================================
--- trip-planner-front/src/app/homepage/login/login.component.html	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/homepage/login/login.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -1,18 +1,43 @@
-<div class="p-col-12 p-md-4">
-    <div class="p-inputgroup">
-        <span class="p-inputgroup-addon"><i class="pi pi-user"></i></span>
-        <input type="text" pInputText placeholder="Email address (Username)" 
-             [(ngModel)]="loginRequest.username" name="username">
+<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet"
+    integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
+
+
+
+<div class="readersack">
+    <div class="container">
+        <div class="row">
+            <div class="col-md-6 offset-md-3">
+                <form [formGroup]="form" #myform="ngForm" (ngSubmit)="onFormLogIn(loginRequest)">
+                    <div class="form-group">
+
+                        <label>Username (email)</label>
+                        <input formControlName="username" id="username" type="text" class="form-control"
+                            [(ngModel)]="loginRequest.username"
+                            [ngClass]="{ 'is-invalid': myform.submitted && (form.get('username')?.errors?.['required'] 
+                        || form.get('username')?.errors?.['validateUser'])}" />
+                        <div *ngIf="form.get('username')?.hasError('required') && myform.submitted"
+                            class="invalid-feedback">
+                            Username is required
+                        </div>
+                        <div *ngIf="form.get('username')?.hasError('validateUser') && myform.submitted"
+                            class="invalid-feedback">
+                            Invalid username
+                        </div>
+
+                        <label>Password</label>
+                        <input formControlName="password" id="password" type="password" class="form-control"
+                            [(ngModel)]="loginRequest.password" [ngClass]="{ 'is-invalid': myform.submitted && form.get('password')?.errors?.['required']}" />
+                        <div *ngIf="form.get('password')?.hasError('required') && myform.submitted"
+                            class="invalid-feedback">
+                            Password is required</div>
+                        
+
+                        <div class="p-col-12 p-md-4">
+                            <button type="submit" pButton pRipple class="p-button-secondary">Submit</button>
+                        </div>
+                    </div>
+                </form>
+            </div>
+        </div>
     </div>
 </div>
-<div class="p-col-12 p-md-4">
-    <div class="p-inputgroup">
-        <span class="p-inputgroup-addon"><i class="pi pi-password"></i></span>
-        <input type="password" pInputText placeholder="Password" name="password" [(ngModel)]="loginRequest.password">
-    </div>
-</div>
-
-<div class="p-col-12 p-md-4">
-    <button pButton pRipple label="Log in" class="p-button-secondary" type="submit"
-        (click)="onFormLogIn(loginRequest)"></button>
-</div>
Index: trip-planner-front/src/app/homepage/login/login.component.ts
===================================================================
--- trip-planner-front/src/app/homepage/login/login.component.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/homepage/login/login.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -1,6 +1,9 @@
 import { Component, OnInit } from '@angular/core';
-import { Router } from '@angular/router';
+import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
 import { DynamicDialogRef } from 'primeng/dynamicdialog';
 import { LoginRequest } from 'src/app/_models/dto/loginRequest';
+import { PlannerLocationDto } from 'src/app/_models/dto/plannerLocationDto';
+import { UserDto } from 'src/app/_models/dto/userDto';
+import { UsernameDto } from 'src/app/_models/dto/usernameDto';
 import { UserService } from 'src/app/_services/user.service';
 
@@ -12,18 +15,62 @@
 export class LoginComponent implements OnInit {
 
+  form: FormGroup;
+  loginRequest: LoginRequest;
+  usernames: string[];
 
-  loginRequest : LoginRequest;
+  constructor(private ref: DynamicDialogRef, private userService: UserService, formBuilder: FormBuilder) {
+    this.loginRequest = new LoginRequest();
+    this.usernames = [];
 
-  constructor(private ref: DynamicDialogRef, private router: Router, private userService : UserService) { 
-    this.loginRequest = new LoginRequest();
-    
+    this.form = formBuilder.group({
+      username: new FormControl('', [Validators.required]),
+      password: new FormControl('', [Validators.required, Validators.minLength(6)]),
+    },
+      {
+        validators: [
+          this.validateUser('username')
+        ]
+      }
+    );
   }
 
   ngOnInit(): void {
+
   }
 
-  onFormLogIn(loginRequest){
-    this.ref.close(loginRequest);
-   
+  onFormLogIn(loginRequest) {
+    const { valid } = this.form;
+    if (valid) {
+      this.ref.close(loginRequest);
+    }
+  }
+
+  validateUser(username: string) {
+    return (formGroup: FormGroup) => {
+      const control = formGroup.controls[username];
+
+      if (control.errors && !control.errors.validateUser) {
+        return;
+      }
+
+      this.userService.getAllUsernames().subscribe(
+        data => {
+          this.usernames = data;
+          for (let i = 0; i < this.usernames.length; i++) {
+            if (control.value === this.usernames[i]) {
+              control.setErrors(null);
+             
+              break;
+            } else {
+              control.setErrors({ validateUser: true });
+            }
+
+          }
+        }
+      );
+      return null;
+  
+    };
+
   }
 }
Index: trip-planner-front/src/app/homepage/register/register.component.html
===================================================================
--- trip-planner-front/src/app/homepage/register/register.component.html	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/homepage/register/register.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -2,42 +2,73 @@
     integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
 
-<div class="p-grid p-fluid">
-    <div class="p-col-12 p-md-4">
-        <div class="p-inputgroup">
-            <span class="p-inputgroup-addon"><i class="pi pi-user"></i></span>
-            <input type="text" pInputText placeholder="Full name" [(ngModel)]="user.fullName" name="fullName"
-                class="form-control">
 
+<div class="readersack">
+    <div class="container">
+        <div class="row">
+            <div class="col-md-6 offset-md-3">
+                <form [formGroup]="form" #myform="ngForm" (ngSubmit)="onFormSubmitSignUp(user)">
+                    <div class="form-group">
+                        <label>Full name</label>
+                        <input formControlName="fullName" id="fullName" type="text" class="form-control"
+                            [(ngModel)]="user.fullName"
+                            [ngClass]="{ 'is-invalid': myform.submitted && form.get('fullName')?.errors?.['required']}" />
+                        <div *ngIf="myform.submitted && form.get('fullName')?.errors" class="invalid-feedback">
+                            <div *ngIf="form.get('fullName')?.hasError('required') && myform.submitted">
+                                Full Name is required
+                            </div>
+                        </div>
+
+                        <label>Username (email)</label>
+                        <input formControlName="username" id="username" type="text" class="form-control"
+                            [(ngModel)]="user.username"
+                            [ngClass]="{ 'is-invalid': myform.submitted && (form.get('username')?.errors?.['required'] || 
+                            form.get('username')?.errors?.['email'] || form.get('username')?.hasError('validateUsername'))}" />
+                        <div *ngIf="form.get('username')?.hasError('required') && myform.submitted"
+                            class="invalid-feedback">
+                            Username is required</div>
+                        <div *ngIf="form.get('username')?.hasError('email') && myform.submitted"
+                            class="invalid-feedback">
+                            Please enter valid email.</div>
+                        <div *ngIf="form.get('username')?.hasError('validateUsername') && myform.submitted"
+                            class="invalid-feedback">
+                            Username already exists</div>
+
+
+
+                        <label>Password</label>
+                        <input formControlName="password" id="password" type="password" class="form-control"
+                            [(ngModel)]="user.password" [ngClass]="{ 'is-invalid': myform.submitted && (form.get('password')?.errors?.['required'] ||
+                            form.get('password')?.errors?.['minlength'])}" />
+                        <div *ngIf="form.get('password')?.hasError('required') && myform.submitted"
+                            class="invalid-feedback">
+                            Password is required</div>
+                        <div *ngIf="form.get('password')?.errors?.['minlength'] && myform.submitted"
+                            class="invalid-feedback">
+                            Password must be at least 6 characters long.
+                        </div>
+
+                        <label>Confirm password</label>
+                        <input formControlName="confirmPassword" id="confirmPassword" type="password"
+                            class="form-control" [(ngModel)]="user.confirmPassword"
+                            [ngClass]="{ 'is-invalid': myform.submitted && (form.get('confirmPassword')?.errors?.['required'] || 
+                            form.get('confirmPassword')?.errors?.['minlength'] || form.get('confirmPassword')?.errors?.['mustMatch'])}" />
+                        <div *ngIf="form.get('confirmPassword')?.hasError('required') && myform.submitted"
+                            class="invalid-feedback">
+                            Confirm Password is required</div>
+                        <div *ngIf="form.get('confirmPassword')?.errors?.['minlength'] && myform.submitted"
+                            class="invalid-feedback">
+                            Confirm Password must be at least 6 characters long.
+                        </div>
+                        <div *ngIf="form.get('confirmPassword')?.errors?.['mustMatch'] && myform.submitted"
+                            class="invalid-feedback">Password and confirm password must match
+                        </div>
+
+                        <div class="p-col-12 p-md-4">
+                            <button type="submit" pButton pRipple class="p-button-secondary">Submit</button>
+                        </div>
+                    </div>
+                </form>
+            </div>
         </div>
     </div>
-
-    <div class="p-col-12 p-md-4">
-        <div class="p-inputgroup">
-            <span class="p-inputgroup-addon"><i class="pi pi-user"></i></span>
-            <input type="text" pInputText placeholder="Email address (Username)" [(ngModel)]="user.username"
-                name="username">
-        </div>
-    </div>
-
-    <div class="p-col-12 p-md-4">
-        <div class="p-inputgroup">
-            <span class="p-inputgroup-addon"><i class="pi pi-password"></i></span>
-            <input type="password" pInputText placeholder="Password" [(ngModel)]="user.password" name="password">
-        </div>
-    </div>
-
-    <div class="p-col-12 p-md-4">
-        <div class="p-inputgroup">
-            <span class="p-inputgroup-addon"><i class="pi pi-password"></i></span>
-            <input type="password" pInputText placeholder="Repeat password" [(ngModel)]="user.confirmPassword"
-                name="confirmPassword">
-        </div>
-    </div>
-
-    <div class="p-col-12 p-md-4">
-        <button pButton pRipple label="Submit" class="p-button-secondary" type="button"
-            (click)="onFormSubmitSignUp(user)"></button>
-    </div>
 </div>
-
-
Index: trip-planner-front/src/app/homepage/register/register.component.ts
===================================================================
--- trip-planner-front/src/app/homepage/register/register.component.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/homepage/register/register.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -1,6 +1,8 @@
 import { Component, OnInit } from '@angular/core';
-import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
 import { DynamicDialogRef } from 'primeng/dynamicdialog';
+import { CustomValidators } from 'src/app/providers/CustomValidators';
 import { UserDto } from 'src/app/_models/dto/userDto';
+import { UserService } from 'src/app/_services/user.service';
 
 @Component({
@@ -12,25 +14,59 @@
 
   user: UserDto;
-  myForm: FormGroup;
+  form: FormGroup;
+  usernames: string[];
 
-  constructor(private ref: DynamicDialogRef, private fb: FormBuilder) {
+
+  constructor(private ref: DynamicDialogRef, 
+    formBuilder: FormBuilder, private userService: UserService) {
     this.user = new UserDto();
-    this.myForm = fb.group({
-      title: fb.control('initial value', Validators.required)
+    this.usernames = [];
+
+    this.form = formBuilder.group({
+      fullName: new FormControl('', [Validators.required, Validators.minLength(3)]),
+      username: new FormControl('', [Validators.required, Validators.email]),
+      password: new FormControl('', [Validators.required, Validators.minLength(6)]),
+      confirmPassword: new FormControl('', [Validators.required, Validators.minLength(6)])
+    }, {
+      validators: [
+        CustomValidators.mustMatch('password', 'confirmPassword'),
+        this.validateUsername('username')
+      ]
     });
   }
 
   ngOnInit(): void {
-    this.myForm = this.fb.group({
-      fullName: this.fb.control('', Validators.required),
-      username: this.fb.control('', Validators.required),
-      password: this.fb.control('', Validators.required),
-      confirmPassword: this.fb.control('', Validators.required)
-    });
   }
 
   onFormSubmitSignUp(user) {
-    this.ref.close(user);
-    //window.location.reload();
+    const { valid } = this.form;
+    if (valid) {
+      this.ref.close(user);
+    }
+  }
+
+  validateUsername(username: string) {
+    return (formGroup: FormGroup) => {
+      const control = formGroup.controls[username];
+
+      if (control.errors && !control.errors.validateUsername) {
+        return;
+      }
+
+      this.userService.getAllUsernames().subscribe(
+        data => {
+          this.usernames = data;
+          for (let i = 0; i < this.usernames.length; i++) {
+            if (control.value === this.usernames[i]) {
+              control.setErrors({ validateUsername: true });
+              break;
+            } else {
+              control.setErrors(null);
+            }
+          }
+        }
+      );
+      return null;
+    };
 
   }
Index: trip-planner-front/src/app/location/add-location-to-planner-panel/add-location-to-planner-panel.component.html
===================================================================
--- trip-planner-front/src/app/location/add-location-to-planner-panel/add-location-to-planner-panel.component.html	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/location/add-location-to-planner-panel/add-location-to-planner-panel.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -7,5 +7,5 @@
         </tr>
     </ng-template>
-    <ng-template pTemplate="body" let-planner let-data>
+    <ng-template pTemplate="body" let-planner>
         <tr>
             <td>{{planner.name}}</td>
Index: trip-planner-front/src/app/location/add-location-to-planner-panel/add-location-to-planner-panel.component.ts
===================================================================
--- trip-planner-front/src/app/location/add-location-to-planner-panel/add-location-to-planner-panel.component.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/location/add-location-to-planner-panel/add-location-to-planner-panel.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -1,8 +1,6 @@
 import { Component, OnInit } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
 import { Planner } from 'src/app/_models/planner';
 import { PlannerService } from 'src/app/_services/planner.service';
 import { DynamicDialogRef } from 'primeng/dynamicdialog';
-import { LocationService } from 'src/app/_services/location.service';
 
 
@@ -17,6 +15,5 @@
   planners: Planner[];
   
-  constructor(private plannerService: PlannerService,
-    private route: ActivatedRoute, private ref: DynamicDialogRef, private locationService : LocationService) {
+  constructor(private plannerService: PlannerService, private ref: DynamicDialogRef) {
     this.planners = [];
   }
@@ -29,5 +26,4 @@
       }
     );
-
   }
 
Index: trip-planner-front/src/app/location/location-details/location-details.component.html
===================================================================
--- trip-planner-front/src/app/location/location-details/location-details.component.html	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/location/location-details/location-details.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -18,4 +18,6 @@
             </ng-template>
         </p-galleria>
+        <br>
+        <p-rating></p-rating>
     </div>
 </div>
Index: trip-planner-front/src/app/location/location-details/location-details.component.ts
===================================================================
--- trip-planner-front/src/app/location/location-details/location-details.component.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/location/location-details/location-details.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -1,3 +1,3 @@
-import { Component, OnInit, ViewEncapsulation } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
 import { ActivatedRoute, Router } from '@angular/router';
 import { Images } from 'src/app/_models/images';
Index: trip-planner-front/src/app/location/location.component.css
===================================================================
--- trip-planner-front/src/app/location/location.component.css	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/location/location.component.css	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,5 @@
+img{
+    width: 150px;
+    height: 120px;
+    display: block;
+}
Index: trip-planner-front/src/app/location/location.component.html
===================================================================
--- trip-planner-front/src/app/location/location.component.html	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/location/location.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -9,4 +9,5 @@
     <tr>
       <th scope="col">#</th>
+      <th scope="col">Photo</th>
       <th scope="col">Location name</th>
       <th scope="col"> Add to my planner</th>
@@ -17,9 +18,11 @@
     <tr *ngFor="let location of listLocations">
       <td>{{location.id}}</td>
+      <td><img src="data:image/png;base64,{{location.photo}}" /></td>
       <td>{{location.name}}</td>
       <td><button type="button" (click)="show(location)" pButton icon="pi pi-info-circle"
           label="Add to my planner"></button></td>
       <td><button type="button" color="primary" pButton icon="pi pi-info-circle"
-          (click)="onClickSeeDetails(location.id)" label="See details"></button></td>
+          (click)="onClickSeeDetails(location.id)" label="See details"></button>
+      </td>
     </tr>
   </tbody>
Index: trip-planner-front/src/app/location/location.component.ts
===================================================================
--- trip-planner-front/src/app/location/location.component.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/location/location.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -93,25 +93,13 @@
 
     this.ref.onClose.subscribe((planner: Planner) => {
-      if(planner){
-      this.plannerLocationDto.locationId = location.id;
-      this.plannerLocationDto.plannerId = planner.id;
-      console.log("LOC ID: " + this.plannerLocationDto.locationId);
-      console.log("PLANNER ID: " + this.plannerLocationDto.plannerId);
+      if (planner) {
+        this.plannerLocationDto.locationId = location.id;
+        this.plannerLocationDto.plannerId = planner.id;
+        console.log("LOC ID: " + this.plannerLocationDto.locationId);
+        console.log("PLANNER ID: " + this.plannerLocationDto.plannerId);
 
-      this.locationService.getAllLocationIdsForPlanner(planner.id).subscribe(
-        lid => {
-          if (lid.length == 0) {
-            this.locationService.postLocationToPlanner(this.plannerLocationDto).subscribe(
-              data => {
-                console.log(data);
-              }
-            );
-            this.messageService.add({ severity: 'success', summary: 'Location ' + location.name + ' has been added to planner: ', detail: planner.name });
-
-          } else if (lid.length > 0) {
-            if (lid.indexOf(this.plannerLocationDto.locationId) !== -1) {
-              console.log("LOKACIJATA VEKE JA IMA VO PLANEROT");
-              this.messageService.add({ severity: 'error', summary: 'Location ' + location.name + ' already exists in the planner.' });
-            } else {
+        this.locationService.getAllLocationIdsForPlanner(planner.id).subscribe(
+          lid => {
+            if (lid.length == 0) {
               this.locationService.postLocationToPlanner(this.plannerLocationDto).subscribe(
                 data => {
@@ -120,12 +108,24 @@
               );
               this.messageService.add({ severity: 'success', summary: 'Location ' + location.name + ' has been added to planner: ', detail: planner.name });
+
+            } else if (lid.length > 0) {
+              if (lid.indexOf(this.plannerLocationDto.locationId) !== -1) {
+                console.log("LOKACIJATA VEKE JA IMA VO PLANEROT");
+                this.messageService.add({ severity: 'error', summary: 'Location ' + location.name + ' already exists in the planner.' });
+              } else {
+                this.locationService.postLocationToPlanner(this.plannerLocationDto).subscribe(
+                  data => {
+                    console.log(data);
+                  }
+                );
+                this.messageService.add({ severity: 'success', summary: 'Location ' + location.name + ' has been added to planner: ', detail: planner.name });
+              }
+
             }
-
           }
-        }
-      );
+        );
       }
     });
-  
+
   }
 
Index: ip-planner-front/src/app/planner/detail-planner/detail-planner.component.html
===================================================================
--- trip-planner-front/src/app/planner/detail-planner/detail-planner.component.html	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ 	(revision )
@@ -1,1 +1,0 @@
-<p>detail-planner works!</p>
Index: ip-planner-front/src/app/planner/detail-planner/detail-planner.component.spec.ts
===================================================================
--- trip-planner-front/src/app/planner/detail-planner/detail-planner.component.spec.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { DetailPlannerComponent } from './detail-planner.component';
-
-describe('DetailPlannerComponent', () => {
-  let component: DetailPlannerComponent;
-  let fixture: ComponentFixture<DetailPlannerComponent>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      declarations: [ DetailPlannerComponent ]
-    })
-    .compileComponents();
-  });
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(DetailPlannerComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
Index: ip-planner-front/src/app/planner/detail-planner/detail-planner.component.ts
===================================================================
--- trip-planner-front/src/app/planner/detail-planner/detail-planner.component.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import { Component, OnInit } from '@angular/core';
-
-@Component({
-  selector: 'app-detail-planner',
-  templateUrl: './detail-planner.component.html',
-  styleUrls: ['./detail-planner.component.css']
-})
-export class DetailPlannerComponent implements OnInit {
-
-  constructor() { }
-
-  ngOnInit(): void {
-  }
-
-}
Index: trip-planner-front/src/app/planner/edit-planner/edit-planner.component.html
===================================================================
--- trip-planner-front/src/app/planner/edit-planner/edit-planner.component.html	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/planner/edit-planner/edit-planner.component.html	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -38,5 +38,5 @@
                                 </td>
                                 <td>
-                                    <button pButton pRipple type="button" icon="pi pi-times" class="p-button-rounded p-button-danger p-button-text"></button>
+                                    <button pButton pRipple type="button" icon="pi pi-times" class="p-button-rounded p-button-danger p-button-text" (click)="onClickRemoveLocation(planner, location)"></button>
                                 </td>
                             </tr>
Index: trip-planner-front/src/app/planner/edit-planner/edit-planner.component.ts
===================================================================
--- trip-planner-front/src/app/planner/edit-planner/edit-planner.component.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/planner/edit-planner/edit-planner.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -3,4 +3,5 @@
 import { ActivatedRoute, Router } from '@angular/router';
 import { PlannerDto } from 'src/app/_models/dto/plannerDto';
+import { PlannerLocationDto } from 'src/app/_models/dto/plannerLocationDto';
 import { Location } from 'src/app/_models/location';
 import { Planner } from 'src/app/_models/planner';
@@ -21,5 +22,5 @@
   id: number;
   locations: Location[];
-
+  plannerLocationDto: PlannerLocationDto;
 
   constructor(private router: Router, private route: ActivatedRoute, private fb: FormBuilder, private plannerService: PlannerService,
@@ -33,4 +34,5 @@
     this.id = 1;
     this.locations = [];
+    this.plannerLocationDto = new PlannerLocationDto();
   }
 
@@ -64,5 +66,5 @@
   }
 
-  private updatePlanner() {
+  updatePlanner() {
     this.plannerService.updatePlanner(this.id, this.form.value)
       .pipe()
@@ -81,6 +83,17 @@
   }
 
-  onClickRemoveLocation(id : number){
-    
+  onClickRemoveLocation(planner: Planner, location: Location) {
+    planner.id = this.id;
+
+    this.plannerLocationDto.plannerId = planner.id;
+    this.plannerLocationDto.locationId = location.id;
+    console.log(this.plannerLocationDto.plannerId);
+    console.log(this.plannerLocationDto.locationId);
+    this.plannerService.deleteLocationFromPlanner(this.plannerLocationDto).subscribe(
+      data => {
+        console.log("deleted")
+      }
+    );
+    window.location.reload();
   }
 }
Index: trip-planner-front/src/app/planner/planner.component.ts
===================================================================
--- trip-planner-front/src/app/planner/planner.component.ts	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner-front/src/app/planner/planner.component.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -72,5 +72,5 @@
         this.messageService.add({ severity: 'success', summary: 'The planner: ' + plannerDto.name + ' has been created.' });
       }
-      
+
     });
 
Index: trip-planner-front/src/app/providers/CustomValidators.ts
===================================================================
--- trip-planner-front/src/app/providers/CustomValidators.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
+++ trip-planner-front/src/app/providers/CustomValidators.ts	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -0,0 +1,42 @@
+import {
+  AbstractControl,
+  ValidatorFn,
+    FormGroup
+  } from '@angular/forms';
+
+export class CustomValidators {
+    constructor() {}
+    
+    static onlyChar(): ValidatorFn {
+      return (control: AbstractControl): { [key: string]: boolean } | null => {
+        if (control.value == '') return null;
+  
+        let re = new RegExp('^[a-zA-Z ]*$');
+        if (re.test(control.value)) {
+          return null;
+        } else {
+          return { onlyChar: true };
+        }
+      };
+    }
+
+    static mustMatch(controlName: string, matchingControlName: string)  {
+      return (formGroup: FormGroup) => {
+        const control = formGroup.controls[controlName];
+        const matchingControl = formGroup.controls[matchingControlName];
+  
+        if (matchingControl.errors && !matchingControl.errors.mustMatch) {
+          return;
+        }
+  
+        // set error on matchingControl if validation fails
+        if (control.value !== matchingControl.value) {
+            matchingControl.setErrors({ mustMatch: true });
+        } else {
+          matchingControl.setErrors(null);
+        }
+        return null;
+      };
+    }
+    
+  }
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/repository/jpa/JpaLocationRepository.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/repository/jpa/JpaLocationRepository.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/repository/jpa/JpaLocationRepository.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -109,3 +109,5 @@
     List<Location> getVillages();
 
+    @Query(value = "SELECT * FROM locations AS l WHERE l.id_city = :cityId", nativeQuery = true)
+    List<Location> getLocationsForCity(@Param("cityId") Long cityId);
 }
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/repository/jpa/JpaPlannerRepository.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/repository/jpa/JpaPlannerRepository.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/repository/jpa/JpaPlannerRepository.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -16,5 +16,9 @@
         List<Planner> getPlannersByUser(@Param("username") String username );
 
-        @Query(value = "delete from planners_contain WHERE planners_contain.id_location = :locationId", nativeQuery = true)
-        void deleteLocationFromPlanner(@Param("locationId") Long locationId);
+        @Query(value = "DELETE planners_contain " +
+                "FROM planners_contain " +
+                "JOIN planners ON planners_contain.id_planner = planners.id_planner " +
+                "JOIN locations ON planners_contain.id_location = locations.id_location " +
+                "WHERE planners_contain.id_planner = :plannerId AND planners_contain.id_location = :locationId", nativeQuery = true)
+        void deleteLocationFromPlanner(@Param("plannerId") Long plannerId, @Param("locationId") Long locationId);
 }
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/repository/jpa/JpaUserRepository.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/repository/jpa/JpaUserRepository.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/repository/jpa/JpaUserRepository.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -2,6 +2,11 @@
 
 import finki.diplomska.tripplanner.models.User;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Optional;
 
 @Repository
@@ -9,3 +14,10 @@
     User findByUsername(String username);
     User getById(Long id);
+
+    @Query(value = "SELECT u.username FROM users AS u", nativeQuery = true)
+    List<String> getAllUsernames();
+
+    @Query(value = "SELECT u.password FROM users AS u WHERE u.username LIKE :username ", nativeQuery = true)
+    Optional<String> getPassword(@Param("username") String username);
+
 }
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/security/SecurityConfig.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/security/SecurityConfig.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/security/SecurityConfig.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -78,4 +78,5 @@
                 .antMatchers("/api/weekend").permitAll()
                 .antMatchers("/api/villages").permitAll()
+                .antMatchers("/api/cities").permitAll()
                 .anyRequest().authenticated();
         http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/service/LocationService.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/service/LocationService.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/service/LocationService.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -25,3 +25,4 @@
     List<Location> getVillages();
     List<Long> getAllLocationIdsForPlanner(Long plannerId);
+    List<Location> getLocationsForCity(Long cityId);
 }
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/service/PlannerService.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/service/PlannerService.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/service/PlannerService.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -4,4 +4,6 @@
 import finki.diplomska.tripplanner.models.Planner;
 import finki.diplomska.tripplanner.models.dto.PlannerDto;
+import finki.diplomska.tripplanner.models.dto.PlannerLocationDto;
+import org.springframework.http.ResponseEntity;
 
 import java.util.List;
@@ -18,4 +20,4 @@
         Optional<Planner> newPlanner(PlannerDto plannerDto, String username);
         void deletePlannerById(Long id);
-        void deleteLocationFromPlanner(Long locationId);
+        ResponseEntity deleteLocationFromPlanner(PlannerLocationDto plannerLocationDto);
 }
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/service/UserService.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/service/UserService.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/service/UserService.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -4,4 +4,5 @@
 import finki.diplomska.tripplanner.models.dto.UserDto;
 
+import java.util.List;
 import java.util.Optional;
 
@@ -10,4 +11,6 @@
 
     User saveUser (User user);
-
+    List<String> getAllUsernames();
+    Optional<String> getPassword(UserDto userDto);
+    Optional<User> findById(Long id);
 }
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/service/impl/LocationServiceImpl.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/service/impl/LocationServiceImpl.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/service/impl/LocationServiceImpl.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -183,3 +183,8 @@
         return this.locationRepository.getAllLocationIdsForPlanner(plannerId);
     }
+
+    @Override
+    public List<Location> getLocationsForCity(Long cityId) {
+        return this.locationRepository.getLocationsForCity(cityId);
+    }
 }
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/service/impl/PlannerServiceImpl.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/service/impl/PlannerServiceImpl.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/service/impl/PlannerServiceImpl.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -5,4 +5,5 @@
 import finki.diplomska.tripplanner.models.User;
 import finki.diplomska.tripplanner.models.dto.PlannerDto;
+import finki.diplomska.tripplanner.models.dto.PlannerLocationDto;
 import finki.diplomska.tripplanner.models.exceptions.LocationNotFoundException;
 import finki.diplomska.tripplanner.models.exceptions.PlannerNotFoundException;
@@ -11,4 +12,5 @@
 import finki.diplomska.tripplanner.repository.jpa.JpaUserRepository;
 import finki.diplomska.tripplanner.service.PlannerService;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
@@ -67,6 +69,7 @@
 
     @Override
-    public void deleteLocationFromPlanner(Long locationId) {
-        this.plannerRepository.deleteLocationFromPlanner(locationId);
+    public ResponseEntity deleteLocationFromPlanner(PlannerLocationDto plannerLocationDto) {
+        plannerRepository.deleteLocationFromPlanner(plannerLocationDto.getPlannerId(), plannerLocationDto.getLocationId());
+        return null;
     }
 
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/service/impl/UserServiceImpl.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/service/impl/UserServiceImpl.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/service/impl/UserServiceImpl.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -7,7 +7,9 @@
 import finki.diplomska.tripplanner.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 import java.util.Optional;
 
@@ -34,5 +36,20 @@
             throw new UsernameAlreadyExistsException("Username '"+newUser.getUsername()+ "' already exists");
         }
+    }
 
+    @Override
+    public List<String> getAllUsernames() {
+        return this.userRepository.getAllUsernames();
+    }
+
+    @Override
+    public Optional<String> getPassword(UserDto userDto) {
+         this.userRepository.getPassword(userDto.getUsername());
+         return null;
+    }
+
+    @Override
+    public Optional<User> findById(Long id) {
+        return this.userRepository.findById(id);
     }
 
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/LocationRestController.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/LocationRestController.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/LocationRestController.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -45,12 +45,12 @@
 
     @GetMapping(value = "/region/locations")
-    public List<Location> getAllLocationsFromRegion(@RequestParam(required = false) Long regionId,
-                                                    @RequestParam(required = false)  Long companionId,
-                                                    @RequestParam(required = false) Long lengthOfStay,
-                                                    @RequestParam(required = false) String categoryIds){
+    public List<Location> getAllLocationsFromRegion(@RequestParam Long regionId,
+                                                    @RequestParam  Long companionId,
+                                                    @RequestParam Long lengthOfStay,
+                                                    @RequestParam String categoryIds){
         return this.locationService.findLocationsFromRegionForm(regionId, companionId,lengthOfStay, categoryIds);
     }
 
-    @PutMapping(value = "/add-location")
+    @PostMapping(value = "/add-location")
     public Location addLocationToPlanner(@RequestBody PlannerLocationDto plannerLocationDto){
         return this.locationService.addLocationToPlanner(plannerLocationDto);
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/PlannerRestController.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/PlannerRestController.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/PlannerRestController.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -5,4 +5,5 @@
 import finki.diplomska.tripplanner.models.User;
 import finki.diplomska.tripplanner.models.dto.PlannerDto;
+import finki.diplomska.tripplanner.models.dto.PlannerLocationDto;
 import finki.diplomska.tripplanner.service.LocationService;
 import finki.diplomska.tripplanner.service.PlannerService;
@@ -92,11 +93,7 @@
     }
 
-
-    @DeleteMapping(value = "/delete-from-planner")
-    public ResponseEntity deleteLocationFromPlanner(@PathVariable Long locationId){
-        this.plannerService.deleteLocationFromPlanner(locationId);
-        return this.locationService.findById(locationId)
-                .map(location -> ResponseEntity.ok().body(location))
-                .orElseGet(()-> ResponseEntity.notFound().build());
+    @DeleteMapping(value = "/delete-location")
+    public ResponseEntity deleteLocationFromPlanner(@RequestBody PlannerLocationDto plannerLocationDto){
+       return  this.plannerService.deleteLocationFromPlanner(plannerLocationDto);
     }
 }
Index: trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/UserController.java
===================================================================
--- trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/UserController.java	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/UserController.java	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -19,5 +19,8 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.security.core.Authentication;
+
 import javax.validation.Valid;
+import java.util.List;
+import java.util.Optional;
 
 @RestController
@@ -52,8 +55,6 @@
                 )
         );
-
         SecurityContextHolder.getContext().setAuthentication(authentication);
         String jwt = SecurityConstants.TOKEN_PREFIX +  tokenProvider.generateToken(authentication);
-
         return ResponseEntity.ok(new JWTLoginSucessReponse(true, jwt));
     }
@@ -65,9 +66,18 @@
         ResponseEntity<?> errorMap = mapValidationErrorService.MapValidationService(result);
         if(errorMap != null)return errorMap;
+        User newUser = userService.saveUser(user);
+        return  new ResponseEntity<User>(newUser, HttpStatus.CREATED);
+    }
 
-        User newUser = userService.saveUser(user);
+    @GetMapping(value = "/usernames")
+    public List<String> getAllUsernames (){
+        return this.userService.getAllUsernames();
+    }
 
-        return  new ResponseEntity<User>(newUser, HttpStatus.CREATED);
+    @GetMapping(value = "/password")
+    public Optional<String> getPassword(@RequestBody UserDto userDto){
 
+        return this.userService.getPassword(userDto);
     }
+
 }
Index: trip-planner/src/test/api.http
===================================================================
--- trip-planner/src/test/api.http	(revision bdd64917749115bbdd228a9569a675d590c112e3)
+++ trip-planner/src/test/api.http	(revision b73803523f0488ec52498c2ba88889f1642ad263)
@@ -94,4 +94,16 @@
 
 ###
-DELETE http://localhost:8080/api/delete/19
+DELETE http://localhost:8080/api/delete-location
 Content-Type: application/json
+
+{"plannerId": 23, "locationId": 3}
+
+###
+GET http://localhost:8080/api/users/usernames
+Content-Type: application/json
+
+###
+GET http://localhost:8080/api/users/password
+Content-Type: application/json
+
+{"username": "ema@test.com"}
