{"version":3,"sources":["webpack:///./node_modules/@mapsindoors/components/dist/esm-es5 lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.error-handler.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/controls/print.control.ts","webpack:///./src/app/controls/step-switcher.control.ts","webpack:///./src/app/details/detail-field/detail-field.component.html","webpack:///./src/app/details/detail-field/detail-field.component.scss","webpack:///./src/app/details/detail-field/detail-field.component.ts","webpack:///./src/app/details/details.component.html","webpack:///./src/app/details/details.component.scss","webpack:///./src/app/details/details.component.ts","webpack:///./src/app/details/share-url-dialog/share-url-dialog.component.html","webpack:///./src/app/details/share-url-dialog/share-url-dialog.component.ts","webpack:///./src/app/directions/components/search/search.component.html","webpack:///./src/app/directions/components/search/search.component.scss","webpack:///./src/app/directions/components/search/search.component.ts","webpack:///./src/app/directions/components/search/search.service.ts","webpack:///./src/app/directions/components/user-position/user-position.component.html","webpack:///./src/app/directions/components/user-position/user-position.component.scss","webpack:///./src/app/directions/components/user-position/user-position.component.ts","webpack:///./src/app/directions/containers/directions.component.html","webpack:///./src/app/directions/containers/directions.component.scss","webpack:///./src/app/directions/containers/directions.component.ts","webpack:///./src/app/directions/directions.module.ts","webpack:///./src/app/map/map.component.html","webpack:///./src/app/map/map.component.scss","webpack:///./src/app/map/map.component.ts","webpack:///./src/app/pipes/distance.pipe.ts","webpack:///./src/app/search/info-dialog/info-dialog.component.html","webpack:///./src/app/search/info-dialog/info-dialog.component.ts","webpack:///./src/app/search/search.component.html","webpack:///./src/app/search/search.component.scss","webpack:///./src/app/search/search.component.ts","webpack:///./src/app/services/app-config.service.ts","webpack:///./src/app/services/category.service.ts","webpack:///./src/app/services/google-map.service.ts","webpack:///./src/app/services/location.service.ts","webpack:///./src/app/services/maps-indoors.service.ts","webpack:///./src/app/services/mi-live-data.service.ts","webpack:///./src/app/services/notification.service.ts","webpack:///./src/app/services/routing-state.service.ts","webpack:///./src/app/services/solution.service.ts","webpack:///./src/app/services/theme.service.ts","webpack:///./src/app/services/tracker.service.ts","webpack:///./src/app/services/user-agent.service.ts","webpack:///./src/app/services/venue.service.ts","webpack:///./src/app/set-solution/set-solution.component.html","webpack:///./src/app/set-solution/set-solution.component.scss","webpack:///./src/app/set-solution/set-solution.component.ts","webpack:///./src/app/setup/setup.component.html","webpack:///./src/app/setup/setup.component.scss","webpack:///./src/app/setup/setup.component.ts","webpack:///./src/app/shared/components/location-img/location-img.component.html","webpack:///./src/app/shared/components/location-img/location-img.component.scss","webpack:///./src/app/shared/components/location-img/location-img.component.ts","webpack:///./src/app/shared/enums.ts","webpack:///./src/app/solution.guard.ts","webpack:///./src/app/venues/venues.component.html","webpack:///./src/app/venues/venues.component.scss","webpack:///./src/app/venues/venues.component.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;;;;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZyC;AACc;AAEvD,yCAAyC;AACmB;AACA;AACG;AACoB;AACN;AAC1B;AACM;AACR;AAEjD,IAAM,MAAM,GAAW;IACnB;QACI,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,qEAAc;QACzB,QAAQ,EAAE;YACN;gBACI,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,yFAAoB;aAClC;SACJ;KACJ;IACD;QACI,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,+DAAY;QACvB,WAAW,EAAE,CAAC,6DAAa,CAAC;QAC5B,QAAQ,EAAE;YACN,4CAA4C;YAC5C;gBACI,IAAI,EAAE,EAAE;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","file":"main.js","sourcesContent":["var map = {\n\t\"./mi-card.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-card.entry.js\",\n\t\t\"stencil-mi-card-entry-js\"\n\t],\n\t\"./mi-column.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-column.entry.js\",\n\t\t\"stencil-mi-column-entry-js\"\n\t],\n\t\"./mi-data-table.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-data-table.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-data-table-entry-js\"\n\t],\n\t\"./mi-distance_2.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-distance_2.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-distance_2-entry-js\"\n\t],\n\t\"./mi-dropdown-item.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-dropdown-item.entry.js\",\n\t\t\"stencil-mi-dropdown-item-entry-js\"\n\t],\n\t\"./mi-dropdown.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-dropdown.entry.js\",\n\t\t\"stencil-mi-dropdown-entry-js\"\n\t],\n\t\"./mi-keyboard.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-keyboard.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-keyboard-entry-js\"\n\t],\n\t\"./mi-list-item-category.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-list-item-category.entry.js\",\n\t\t\"stencil-mi-list-item-category-entry-js\"\n\t],\n\t\"./mi-list-item-location.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-list-item-location.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-list-item-location-entry-js\"\n\t],\n\t\"./mi-list.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-list.entry.js\",\n\t\t\"stencil-mi-list-entry-js\"\n\t],\n\t\"./mi-location-info.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-location-info.entry.js\",\n\t\t\"stencil-mi-location-info-entry-js\"\n\t],\n\t\"./mi-map-googlemaps.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-map-googlemaps.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-map-googlemaps-entry-js\"\n\t],\n\t\"./mi-map-mapbox.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-map-mapbox.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-map-mapbox-entry-js\"\n\t],\n\t\"./mi-metric-card.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-metric-card.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-metric-card-entry-js\"\n\t],\n\t\"./mi-notification.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-notification.entry.js\",\n\t\t\"stencil-mi-notification-entry-js\"\n\t],\n\t\"./mi-route-instructions-heading.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-route-instructions-heading.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-route-instructions-heading-entry-js\"\n\t],\n\t\"./mi-route-instructions-maneuver_2.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-route-instructions-maneuver_2.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-route-instructions-maneuver_2-entry-js\"\n\t],\n\t\"./mi-route-instructions-step.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-route-instructions-step.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-route-instructions-step-entry-js\"\n\t],\n\t\"./mi-route-instructions.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-route-instructions.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-route-instructions-entry-js\"\n\t],\n\t\"./mi-scroll-buttons.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-scroll-buttons.entry.js\",\n\t\t\"stencil-mi-scroll-buttons-entry-js\"\n\t],\n\t\"./mi-search.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-search.entry.js\",\n\t\t\"common\",\n\t\t\"stencil-mi-search-entry-js\"\n\t],\n\t\"./mi-share-sms.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-share-sms.entry.js\",\n\t\t\"stencil-mi-share-sms-entry-js\"\n\t],\n\t\"./mi-spinner.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-spinner.entry.js\",\n\t\t\"stencil-mi-spinner-entry-js\"\n\t],\n\t\"./mi-step-switcher.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-step-switcher.entry.js\",\n\t\t\"stencil-mi-step-switcher-entry-js\"\n\t],\n\t\"./mi-tab-panel.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-tab-panel.entry.js\",\n\t\t\"stencil-mi-tab-panel-entry-js\"\n\t],\n\t\"./mi-tab.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-tab.entry.js\",\n\t\t\"stencil-mi-tab-entry-js\"\n\t],\n\t\"./mi-tabs.entry.js\": [\n\t\t\"./node_modules/@mapsindoors/components/dist/esm-es5/mi-tabs.entry.js\",\n\t\t\"stencil-mi-tabs-entry-js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"./node_modules/@mapsindoors/components/dist/esm-es5 lazy recursive ^\\\\.\\\\/.*\\\\.entry\\\\.js$ include: \\\\.entry\\\\.js$ exclude: \\\\.system\\\\.entry\\\\.js$\";\nmodule.exports = webpackAsyncContext;","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\n// Import all components for routing here\nimport { VenuesComponent } from './venues/venues.component';\nimport { SearchComponent } from './search/search.component';\nimport { DetailsComponent } from './details/details.component';\nimport { DirectionsComponent } from './directions/containers/directions.component';\nimport { SetSolutionComponent } from './set-solution/set-solution.component';\nimport { MapComponent } from './map/map.component';\nimport { SetupComponent } from './setup/setup.component';\nimport { SolutionGuard } from './solution.guard';\n\nconst routes: Routes = [\n {\n path: 'solution',\n component: SetupComponent,\n children: [\n {\n path: 'set',\n component: SetSolutionComponent\n }\n ]\n },\n {\n path: ':solutionName',\n component: MapComponent,\n canActivate: [SolutionGuard],\n children: [\n // Parent component defaults to AppComponent\n {\n path: '',\n redirectTo: 'venues',\n pathMatch: 'full'\n },\n {\n path: 'venues',\n component: VenuesComponent\n },\n {\n path: ':venueId/search',\n component: SearchComponent\n },\n {\n path: ':venueId/details/:id',\n component: DetailsComponent\n },\n {\n path: ':venueId/route/destination/:id',\n component: DirectionsComponent\n },\n {\n path: ':venueId/route/from/:from/to/:to',\n component: DirectionsComponent\n },\n {\n path: '**',\n redirectTo: 'venues',\n }\n ]\n },\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'solution/set'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class AppRoutingModule { }\n","module.exports = \"\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RoutingStateService } from './services/routing-state.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\n\nexport class AppComponent {\n constructor(\n private translate: TranslateService,\n private routingState: RoutingStateService\n ) {\n // Set default language\n translate.setDefaultLang('en');\n routingState.loadRouting();\n }\n\n ngOnInit(): void {\n this.setLanguage();\n }\n\n /**\n * Set language based on the user agents language if supported.\n * Language variants is mapped to the main key which is the same as the one used for the translations-filename.\n * @private\n */\n private setLanguage(): void {\n const userAgentLanguage = window.navigator.language;\n const supportedLanguages = {\n danish: ['da', 'da-DK'],\n french: ['fr', 'fr-FR', 'fr-CA'],\n italian: ['it', 'it-IT'],\n portuguese: ['pt', 'pt-BR', 'pt-PT'],\n };\n // Get key in SupportedLanguages object which includes the userAgentLanguage\n const languageKey: string = Object.keys(supportedLanguages).find((value: string) => supportedLanguages[value].includes(userAgentLanguage));\n\n if (languageKey) {\n // Danish\n if (languageKey === 'danish') this.translate.use('da');\n // French\n if (languageKey === 'french') this.translate.use('fr');\n // Italian\n if (languageKey === 'italian') this.translate.use('it');\n // Portuguese\n if (languageKey === 'portuguese') this.translate.use('pt');\n }\n }\n}\n","\nimport { ErrorHandler } from '@angular/core';\n\nexport function errorHandlerFactory():ErrorHandler {\n return new ErrorHandler();\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule, ErrorHandler, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { AppComponent } from './app.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { LayoutModule } from '@angular/cdk/layout';\nimport { MatToolbarModule, MatButtonModule, MatSidenavModule, MatIconModule, MatListModule, MatGridListModule, MatCardModule, MatMenuModule, MatFormFieldModule, MatInputModule, MatRippleModule, MatProgressSpinnerModule, MatDialogModule, MatCheckboxModule } from '@angular/material';\nimport { AppRoutingModule } from './/app-routing.module';\nimport { environment } from './../environments/environment';\n\n// Translations\nimport { HttpClientModule, HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\n// Components\nimport { VenuesComponent } from './venues/venues.component';\nimport { SearchComponent } from './search/search.component';\nimport { DetailsComponent } from './details/details.component';\nimport { InfoDialogComponent } from './search/info-dialog/info-dialog.component';\nimport { ShareUrlDialogComponent } from './details/share-url-dialog/share-url-dialog.component';\nimport { SetSolutionComponent } from './set-solution/set-solution.component';\nimport { MapComponent } from './map/map.component';\nimport { SetupComponent } from './setup/setup.component';\nimport { LocationImgComponent } from './shared/components/location-img/location-img.component';\n\n// Modules\nimport { DirectionsModule } from './directions/directions.module';\n\n// Services\nimport { AppConfigService } from './services/app-config.service';\nimport { SolutionService } from './services/solution.service';\nimport { RoutingStateService } from './services/routing-state.service';\n\n// Pipes\nimport { DistancePipe } from './pipes/distance.pipe';\n\nimport { errorHandlerFactory } from './app.error-handler';\nimport { DetailFieldComponent } from './details/detail-field/detail-field.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n VenuesComponent,\n SearchComponent,\n DetailsComponent,\n InfoDialogComponent,\n ShareUrlDialogComponent,\n LocationImgComponent,\n SetSolutionComponent,\n MapComponent,\n SetupComponent,\n DistancePipe,\n DetailFieldComponent\n ],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n MatSnackBarModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n LayoutModule,\n MatToolbarModule,\n MatButtonModule,\n MatSidenavModule,\n MatIconModule,\n MatListModule,\n MatGridListModule,\n MatCardModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatDialogModule,\n MatCheckboxModule,\n AppRoutingModule,\n HttpClientModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n }),\n DirectionsModule\n ],\n exports: [\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatRippleModule,\n MatDialogModule,\n ],\n providers: [\n SolutionService,\n AppConfigService,\n RoutingStateService,\n { provide: ErrorHandler, useFactory: errorHandlerFactory }\n ],\n bootstrap: [\n AppComponent\n ],\n entryComponents: [\n InfoDialogComponent,\n ShareUrlDialogComponent\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class AppModule { }\n\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http, './Campusmaps/assets/i18n/', `.json?v=${environment.version}`);\n}\n","export class PrintControl {\n map: google.maps.Map;\n position: google.maps.ControlPosition;\n printControlElement: HTMLButtonElement;\n\n /**\n * Create an instance of PrintControl.\n *\n * @param {google.maps.Map} map Map reference.\n * @param {string} buttonTitle Value for title attribute.\n */\n constructor(map: google.maps.Map, buttonTitle: string) {\n this.map = map;\n\n // Create control element\n this.printControlElement = document.createElement('button');\n this.printControlElement.type = 'button';\n this.printControlElement.draggable = false;\n this.printControlElement.title = buttonTitle;\n this.printControlElement.classList.add('mapsindoors', 'print-control');\n\n // Append printer icon\n const miIconElement: HTMLMiIconElement = document.createElement('mi-icon');\n miIconElement.iconName = 'printer';\n this.printControlElement.appendChild(miIconElement);\n\n // Add click listener to trigger print console when clicked.\n this.printControlElement.addEventListener('click', (): void => {\n window.print();\n });\n }\n\n /**\n * Add print control.\n *\n * @param {google.maps.ControlPosition} position\n */\n add(position: google.maps.ControlPosition): void {\n this.position = position;\n this.map.controls[this.position].push(this.printControlElement);\n }\n\n /**\n * Remove print control.\n */\n remove(): void {\n this.map.controls[this.position].clear();\n }\n}","export class StepSwitcherControl {\n map: google.maps.Map;\n position: google.maps.ControlPosition;\n miStepSwitcherElement: HTMLMiStepSwitcherElement;\n\n /**\n * Create an instance of StepSwitcherControl.\n *\n * @param {google.maps.Map} map Map reference.\n * @param {string} heading Heading to display.\n */\n constructor(map: google.maps.Map, heading: string) {\n this.map = map;\n\n // Create control element\n this.miStepSwitcherElement = document.createElement('mi-step-switcher');\n this.miStepSwitcherElement.classList.add('mapsindoors', 'step-switcher-control');\n this.miStepSwitcherElement.heading = heading;\n }\n\n /**\n * Add Step Switcher control.\n *\n * @param {google.maps.ControlPosition} position\n * @param {any[]} legs\n */\n add(position: google.maps.ControlPosition, legs: any[]): void {\n this.position = position;\n\n // Set attributes\n this.miStepSwitcherElement.steps = legs;\n this.miStepSwitcherElement.stepIndex = 0;\n\n // Push control element to map\n this.map.controls[this.position].push(this.miStepSwitcherElement);\n }\n\n /**\n * Remove Step Switcher control.\n */\n remove(): void {\n this.map.controls[this.position].clear();\n }\n}","module.exports = \"\\n {{ iconName }}\\n \\n {{ heading }}\\n {{ value }}\\n {{ value }}\\n \\n\"","module.exports = \".detail-field {\\n display: flex;\\n padding: 16px; }\\n .detail-field mat-icon {\\n width: 40px;\\n height: 40px;\\n margin-right: 16px;\\n color: rgba(0, 0, 0, 0.54);\\n font-size: 40px; }\\n .detail-field-text {\\n display: flex;\\n flex-direction: column;\\n justify-content: center; }\\n .detail-field-text h4 {\\n text-transform: uppercase;\\n font-size: 12px; }\\n .detail-field-text p {\\n white-space: pre-wrap;\\n max-width: 224px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZGV0YWlscy9kZXRhaWwtZmllbGQvRTpcXENhbXB1c21hcHNCdWlsZC9zcmNcXGFwcFxcZGV0YWlsc1xcZGV0YWlsLWZpZWxkXFxkZXRhaWwtZmllbGQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxhQUFhO0VBQ2IsYUFBYSxFQUFBO0VBRmpCO0lBS1EsV0FBVztJQUNYLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsMEJBQTBCO0lBQzFCLGVBQWUsRUFBQTtFQUduQjtJQUNJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsdUJBQXVCLEVBQUE7RUFIMUI7TUFNTyx5QkFBeUI7TUFDekIsZUFBZSxFQUFBO0VBUHRCO01BV08scUJBQXFCO01BQ3JCLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvZGV0YWlscy9kZXRhaWwtZmllbGQvZGV0YWlsLWZpZWxkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmRldGFpbC1maWVsZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuXG4gICAgbWF0LWljb24ge1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xuICAgICAgICBmb250LXNpemU6IDQwcHg7XG4gICAgfVxuXG4gICAgJi10ZXh0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgaDQge1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAyMjRweDsgLy8gSUUxMSB3b3JrYXJvdW5kXG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0= */\"","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'detail-field',\n templateUrl: './detail-field.component.html',\n styleUrls: ['./detail-field.component.scss']\n})\nexport class DetailFieldComponent {\n @Input() heading: string;\n @Input() value: string;\n @Input() isUrl: boolean = false;\n @Input() iconName: string;\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2RldGFpbHMvZGV0YWlscy5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit, OnDestroy, NgZone } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { MatSidenav, MatDialog, MatDialogRef } from '@angular/material';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { AppConfigService } from '../services/app-config.service';\nimport { LocationService } from '../services/location.service';\nimport { MapsIndoorsService } from '../services/maps-indoors.service';\nimport { GoogleMapService } from '../services/google-map.service';\nimport { VenueService } from '../services/venue.service';\nimport { ShareUrlDialogComponent } from './share-url-dialog/share-url-dialog.component';\nimport { ThemeService } from '../services/theme.service';\nimport { SolutionService } from '../services/solution.service';\nimport { UserAgentService } from '../services/user-agent.service';\nimport { NotificationService } from '../services/notification.service';\nimport { TrackerService } from '../services/tracker.service';\n\nimport { Venue } from '../shared/models/venue.interface';\nimport { Location } from '../shared/models/location.interface';\n\n@Component({\n selector: 'app-details',\n templateUrl: './details.component.html',\n styleUrls: ['./details.component.scss']\n})\nexport class DetailsComponent implements OnInit, OnDestroy {\n isHandset: boolean;\n colors: {};\n venue: Venue;\n location: Location;\n displayAliases: boolean = false;\n\n loading: boolean = false;\n appConfig: any;\n\n dialogRef: MatDialogRef;\n appConfigSubscription: Subscription;\n locationSubscription: Subscription;\n dialogSubscription: Subscription;\n isHandsetSubscription: Subscription;\n themeServiceSubscription: Subscription;\n venueSubscription: Subscription;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n public _ngZone: NgZone,\n private sidenav: MatSidenav,\n private userAgentService: UserAgentService,\n private themeService: ThemeService,\n private venueService: VenueService,\n private appConfigService: AppConfigService,\n private locationService: LocationService,\n private mapsIndoorsService: MapsIndoorsService,\n private solutionService: SolutionService,\n private googleMapService: GoogleMapService,\n private dialog: MatDialog,\n private notificationService: NotificationService,\n private trackerService: TrackerService\n ) {\n this.appConfigSubscription = this.appConfigService.getAppConfig().subscribe((appConfig) => this.appConfig = appConfig);\n this.themeServiceSubscription = this.themeService.getThemeColors().subscribe((appConfigColors) => this.colors = appConfigColors);\n this.locationSubscription = this.locationService.getCurrentLocation()\n .subscribe((location: Location) => {\n if (!Array.isArray(location.properties.categories)) {\n location.properties.categories = Object.values(location.properties.categories);\n }\n this.location = location;\n this.googleMapService.openInfoWindow();\n this.mapsIndoorsService.setPageTitle(location.properties.name);\n });\n this.isHandsetSubscription = this.userAgentService.isHandset()\n .subscribe((value: boolean) => this.isHandset = value);\n }\n\n ngOnInit():void {\n this.venueSubscription = this.venueService.getVenueObservable()\n .subscribe((venue: Venue):void => {\n this.venue = venue;\n if (!this.location) { // True when user comes from a direct link\n this.setLocation();\n }\n });\n\n this.displayAliases = this.appConfig.appSettings.displayAliases || false;\n window['angularComponentRef'] = { component: this, zone: this._ngZone };\n }\n\n // #region || LOCATION\n /**\n\t * @description Gets and sets the location based on the URL id parameter\n\t * @memberof DetailsComponent\n\t * @private \n\t */\n private setLocation(): void {\n const id = this.route.snapshot.params.id;\n // Location id\n if (id.length === 24) { // TODO: find a better way to determine whether it is a locationId or an externalId\n this.locationService.getLocationById(id)\n .then((location: Location) => this.locationService.setLocation(location))\n .catch((err: Error): void => {\n this.notificationService.displayNotification(err.message);\n this.goBack();\n });\n } else {\n // Room (external) id\n this.locationService.getLocationByExternalId(id)\n .then((location: Location) => this.locationService.setLocation(location))\n .catch((err: Error): void => {\n this.notificationService.displayNotification(err.message);\n this.goBack();\n });\n }\n }\n\n /**\n\t * @description Closing the sidebar\n\t */\n public showOnMap(): void {\n this.sidenav.close();\n this.trackerService.sendEvent('Details page', 'Show on map button', 'Show on map button was clicked', true);\n }\n\n async getDirections(location: Location): Promise {\n const solutionName = await this.solutionService.getSolutionName();\n const venueId = this.venue.id ? this.venue.id : this.route.snapshot.params.venueId;\n this.router.navigate([`${solutionName}/${venueId}/route/destination/${location.id}`]);\n this.trackerService.sendEvent('Directions', 'Clicked \"Get Directions\"', `\"${location.properties.name}\" - ${location.id}`);\n }\n // #endregion\n\n // #region || DESTROY\n /**\n\t * @description Return to the previous page \"Search-page\".\n\t * @returns {void}\n\t * @memberof DetailsComponent\n\t */\n goBack(): void {\n this.mapsIndoorsService.isMapDirty = false;\n this.mapsIndoorsService.setPageTitle();\n this.mapsIndoorsService.setVenueAsReturnToValue(this.venue);\n if (!this.locationService.getCategoryFilter()) {\n this.router.navigate([`${this.solutionService.getSolutionName()}/${this.venue.id}/search`]);\n return;\n }\n this.router.navigate([`${this.solutionService.getSolutionName()}/${this.venue.id}/search`], { queryParams: { cat: this.locationService.getCategoryFilter().categoryKey.toLowerCase() } });\n }\n\n ngOnDestroy(): void {\n this.mapsIndoorsService.mapsIndoors.location = null;\n this.mapsIndoorsService.clearMapFilter();\n window['angularComponentRef'] = null;\n this.googleMapService.closeInfoWindow();\n this.locationService.clearLocationPolygonHighlight();\n if (this.dialogSubscription) this.dialogSubscription.unsubscribe();\n this.locationSubscription.unsubscribe();\n this.appConfigSubscription.unsubscribe();\n this.themeServiceSubscription.unsubscribe();\n this.venueSubscription.unsubscribe();\n this.isHandsetSubscription.unsubscribe();\n }\n // #endregion\n\n // #region || DIALOG || SHARE DIALOG\n /**\n * @description Open share URL dialog.\n * @memberof DetailsComponent\n */\n public openShareUrlDialog(): void {\n this.dialogRef = this.dialog.open(ShareUrlDialogComponent, {\n width: '500px',\n autoFocus: true,\n disableClose: false,\n data: {\n url: window.location.href,\n locationName: this.location.properties.name\n }\n });\n\n this.dialogSubscription = this.dialogRef.afterClosed()\n .subscribe((): void => {\n this.trackerService.sendEvent('Details page', 'Share POI dialog', 'Close dialog button was clicked for Share POI', true);\n });\n this.trackerService.sendEvent('Details page', 'Share POI dialog', 'Opened share url dialog', true);\n }\n // #endregion\n}\n","module.exports = \"\\n\\t{{ 'ShareDialog.Title' | translate }}\\n\\t\\n\\t\\tclose\\n\\t\\n\\n\\n\\t\\n\\t\\t{{ 'ShareDialog.Text' | translate }} {{dialogData.locationName}}\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\tcontent_copy\\n\\t\\t\\t\\t{{ 'Buttons.CopyLink' | translate }}\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\t\\n\"","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NotificationService } from 'src/app/services/notification.service';\n\n@Component({\n templateUrl: './share-url-dialog.component.html',\n})\nexport class ShareUrlDialogComponent {\n form: FormGroup;\n dialogData: any;\n\n constructor(\n private fb: FormBuilder,\n public dialogRef: MatDialogRef,\n private notificationService: NotificationService,\n @Inject(MAT_DIALOG_DATA) private data,\n ) {\n this.form = fb.group({\n url: this.data.url\n });\n this.dialogData = this.data;\n }\n\n copyUrl() {\n try {\n const link = document.getElementById('shareUrl');\n link.focus();\n //TODO: .select is not supported maybe use viewChild\n link.select();\n document.execCommand('copy');\n\n this.notificationService.displayNotification('Notification.LinkCopied', 2000);\n } catch (err) {\n // Browser doesn't support this function\n this.notificationService.displayNotification('Notification.LinkCopiedError');\n }\n\n // // Code below is not supported by Safari yet\n // let url = window.location.href;\n // var event = (e: ClipboardEvent) => {\n // e.clipboardData.setData('text/plain', url);\n // e.preventDefault();\n // document.removeEventListener('copy', event);\n // }\n // document.addEventListener('copy', event);\n // document.execCommand('copy');\n // if (document.execCommand('copy')) {\n // \tconsole.log('Copied to Clipboard');\n // }\n // else {\n // \tconsole.log('Something went wrong');\n // }\n }\n onClose() {\n this.dialogRef.close();\n }\n}\n","module.exports = \"\\n\\t\\n\\n\\t\\n\\t\\tclose\\n\\t\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2RpcmVjdGlvbnMvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ViewChild, ElementRef } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter, switchMap, distinctUntilChanged, tap, map } from 'rxjs/operators';\nimport { SearchService } from './search.service';\nimport { SearchData } from './searchData.interface';\nimport { SearchParameters } from '../../../shared/models/searchParameters.interface';\n\n\n@Component({\n selector: 'search-input',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n providers: [SearchService]\n})\nexport class SearchComponent implements OnInit, OnDestroy {\n searchTerm = new Subject();\n @ViewChild('searchInput') searchElement: ElementRef;\n\n @Input() query: string;\n @Input() parameters: SearchParameters;\n @Input() placeHolder: string;\n\n @Output('update') searchResults: EventEmitter = new EventEmitter();\n @Output() error: EventEmitter = new EventEmitter();\n @Output() currentInputField: EventEmitter = new EventEmitter();\n @Output() blurred: EventEmitter = new EventEmitter();\n @Output() loading: EventEmitter = new EventEmitter();\n\n private searchTermSubscription: Subscription = new Subscription();\n\n constructor(\n private searchService: SearchService\n ) { }\n\n ngOnInit() {\n this.searchTermSubscription = this.searchTerm\n .pipe(\n debounceTime(400),\n map((term) => term.trim()),\n distinctUntilChanged(),\n tap((query) => {\n if (query.length < 2) this.clearResults();\n }),\n filter((query) => query.length > 1),\n tap(() => this.loading.emit()),\n switchMap((term) => this.searchService.searchEntries(term, this.parameters))\n )\n .subscribe((results) => {\n this.searchResults.emit({ query: this.query, results: results });\n });\n }\n\n /**\n * @description Clearing searchInput, all results and focuses afterwards.\n * @memberof SearchComponent\n */\n clearInput() {\n this.currentInputField.emit();\n this.query = '';\n this.clearResults();\n this.searchElement.nativeElement.focus();\n }\n\n /**\n * @description Clearing all results.\n * @memberof SearchComponent\n */\n clearResults() {\n this.searchResults.emit({ query: '', results: [] });\n }\n\n ngOnDestroy() {\n this.searchTermSubscription.unsubscribe();\n }\n}","import { Injectable } from '@angular/core';\nimport { SolutionService } from 'src/app/services/solution.service';\nimport { Location } from '../../../shared/models/location.interface';\nimport { SearchParameters } from '../../../shared/models/searchParameters.interface';\n\ndeclare const mapsindoors: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchService {\n autocompleteService = new google.maps.places.AutocompleteService();\n locationTypes: any[];\n\n constructor(\n private solutionService: SolutionService\n ) {\n this.solutionService.getSolution()\n .then((solution) => this.locationTypes = solution.types);\n }\n\n /**\n * @description Searches and returns MapsIndoors and Google Places locations.\n * @param {string} term - The search term.\n * @param {SearchParameters} parameters - The parameters to search by.\n * @returns {Promise} - A promise with an array of locations.\n * @memberof SearchService\n */\n searchEntries(term: string, parameters: SearchParameters): Promise {\n const args: SearchParameters = {\n q: term,\n take: parameters.take,\n fields: 'name,description,aliases,categories,externalId',\n orderBy: 'relevance',\n near: parameters.near,\n };\n return Promise.all([\n this.getLocations(args),\n this.getGooglePlaces(term, parameters)\n ])\n .then((searchResults: any[]) => searchResults[0].concat(searchResults[1]))\n .catch((err) => console.log(err)); /* eslint-disable-line no-console */ /* TODO: Improve error handling */\n }\n\n /**\n * @description Gets and returns matching MapsIndoors locations.\n * @param {*} parameters - Parameters to search by.\n * @returns {Promise} - Returns an array of filtered MapsIndoors POI's.\n * @memberof SearchService\n */\n getLocations(parameters: SearchParameters): Promise {\n return mapsindoors.services.LocationsService.getLocations(parameters)\n .then((locations: Location[]): Promise => this.setIcons(locations));\n }\n\n /**\n * @description Populates the locations with a matching advanced or solution location types icon.\n * @param {Location[]} locations - Array of MapsIndoors locations.\n * @returns {Promise} - A Promise with locations populated with icons.\n * @memberof SearchService\n */\n setIcons(locations: Location[]): Promise {\n return new Promise((resolve, reject): void => {\n if (this.locationTypes.length < 1) reject('No solution types');\n\n const unknownType = this.locationTypes.find((type): boolean => type.name.toLowerCase() === 'unknown');\n const unknownTypeIcon = unknownType ? unknownType.icon : '/assets/images/icons/noicon.png';\n const updatedLocations = [];\n\n for (const location of locations) {\n // Advanced icon\n if (location.properties.displayRule && location.properties.displayRule.icon && location.properties.displayRule.icon.length > 0) {\n location.properties.iconUrl = location.properties.displayRule.icon;\n } else {\n // Solution icon\n try {\n // Set type icon if the locations type matches the type name\n location.properties.iconUrl = this.locationTypes.find((locationType): boolean => locationType.name.toLowerCase() === location.properties.type.toLowerCase()).icon;\n\n // If transparent or no icon set\n if (location.properties.iconUrl.includes('transparent' || 'noicon')) {\n location.properties.iconUrl = unknownTypeIcon;\n }\n } catch {\n location.properties.iconUrl = unknownTypeIcon;\n }\n }\n updatedLocations.push(location);\n }\n resolve(updatedLocations);\n });\n }\n\n /**\n * @description Uses the search term to search for matching Google places results.\n * @private\n * @param {string} term - The search term.\n * @param {SearchParameters} { getGoogleResults, countryCodeRestrictions } - Include Place Predictions. Restrict search to specific countries.\n * @returns {Promise} - Array of locations.\n * @memberof SearchService\n */\n private getGooglePlaces(term: string, { getGoogleResults, countryCodeRestrictions }: SearchParameters): Promise {\n return new Promise((resolve): void => {\n if (getGoogleResults) {\n this.autocompleteService.getPlacePredictions({\n input: term,\n componentRestrictions: { country: countryCodeRestrictions }\n }, (results): void => {\n const places = (results || []).map((result): any => {\n return {\n type: 'Feature',\n properties: {\n type: 'google_places',\n placeId: result.place_id,\n name: result.structured_formatting.main_text,\n subtitle: result.structured_formatting.secondary_text || '',\n floor: 0,\n iconUrl: './assets/images/icons/google-poi.png'\n }\n };\n });\n resolve(places);\n });\n } else resolve([]);\n });\n }\n}","module.exports = \"\\n\\t\\n\\t\\t\\n\\t\\t\\tmy_location\\n\\t\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\t\\t\\n\\t\\t\\t{{ 'Direction.MyPosition' | translate }}\\n\\t\\t\\n\\t\\n\\n\\n\\n\\t\\n\\t\\t\\n\\t\\t\\tmy_location\\n\\t\\t\\n\\t\\t\\n\\t\\t\\t{{ 'Direction.MyPosition' | translate }}\\n\\t\\t\\t{{ 'Direction.EnableMyPosition' | translate }}\\n\\t\\t\\n\\t\\n\"","module.exports = \".list-item-disabled {\\n cursor: not-allowed !important;\\n color: rgba(0, 0, 0, 0.38); }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZGlyZWN0aW9ucy9jb21wb25lbnRzL3VzZXItcG9zaXRpb24vRTpcXENhbXB1c21hcHNCdWlsZC9zcmNcXGFwcFxcZGlyZWN0aW9uc1xcY29tcG9uZW50c1xcdXNlci1wb3NpdGlvblxcdXNlci1wb3NpdGlvbi5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvZGlyZWN0aW9ucy9jb21wb25lbnRzL3VzZXItcG9zaXRpb24vRTpcXENhbXB1c21hcHNCdWlsZC9zcmNcXGFzc2V0c1xcc3R5bGVzXFxzYXNzXFxoZWxwZXJzXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDQyw4QkFBOEI7RUFDM0IsMEJDRFEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2RpcmVjdGlvbnMvY29tcG9uZW50cy91c2VyLXBvc2l0aW9uL3VzZXItcG9zaXRpb24uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiLi4vLi4vLi4vLi4vYXNzZXRzL3N0eWxlcy9zYXNzL2hlbHBlcnMvdmFyaWFibGVzXCI7XG5cbi5saXN0LWl0ZW0tZGlzYWJsZWQge1xuXHRjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICRjb2xvci1ncmF5LWxpZ2h0O1xufSIsIu+7vy8vIERlc2NyaXB0aXZlIGNvbG9yIHZhcmlhYmxlc1xuJGJsdWU6IHJnYigzMywxNTAsMjQzKTtcbiR5ZWxsb3c6I0ZGQzQwMDtcbiRibGFjazogIzAwMDtcbiR3aGl0ZTogI2ZmZjtcblxuLy8gRnVuY3Rpb25hbCBjb2xvciB2YXJpYWJsZXNcbiRjb2xvci1wcmltYXJ5Olx0XHRcdCRibHVlO1xuJGNvbG9yLXByaW1hcnktYWNjZW50OiBcdCR5ZWxsb3c7XG4kY29sb3Itc2Vjb25kYXJ5Olx0XHQkYmx1ZTtcbiRjb2xvci10ZXJ0aWFyeTpcdFx0JGJsdWU7XG4kY29sb3ItZ3JheS1kYXJrOiBcdFx0cmdiYSgkYmxhY2ssLjg3KTtcbiRjb2xvci1ncmF5OiBcdFx0XHRyZ2JhKCRibGFjaywuNTQpO1xuJGNvbG9yLWdyYXktbGlnaHQ6IFx0XHRyZ2JhKCRibGFjaywuMzgpO1xuJGNvbG9yLWdyYXktbGlnaHRlcjpcdHJnYmEoJGJsYWNrLC4xMCk7XG4kY29sb3Itd2hpdGU6IFx0XHRcdCR3aGl0ZTtcblxuJGNvbG9yLWljb246IFx0XHRcdCRjb2xvci1ncmF5O1xuXG4vLyBUcmFuc2l0aW9uc1xuJHRyYW5zaXRpb24tcHJpbWFyeTogXHRhbGwgZWFzZSAuNHM7XG5cblxuLy8gLy8gVHlwb2dyYXBoeSB2YXJpYWJsZXNcbi8vICRmb250LXN0YWNrOiAnUm9ib3RvJywgc2Fucy1zZXJpZjtcbi8vICRmb250LXNpemUtYmFzZTogMTRweDtcbi8vICRmb250LXNpemUtc21hbGw6IDEycHg7XG5cblxuXG4vLyAvLyBIZWxwZXIgdmFyaWFibGVzXG4vLyAkc3BhY2luZzogMTZweDtcbi8vICRiYXNlLXJvdW5kaW5nOiAycHg7XG5cbi8vICRsaXN0LWl0ZW0tYWN0aXZlOiAjRTBGN0ZBO1xuIl19 */\"","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { UserAgentService } from 'src/app/services/user-agent.service';\nimport { TranslateService } from '@ngx-translate/core';\n\ninterface UserPosition {\n name: string,\n geometry: {\n type: string,\n coordinates: any[]\n }\n}\n\n@Component({\n selector: 'user-position',\n templateUrl: './user-position.component.html',\n styleUrls: ['./user-position.component.scss']\n})\nexport class UserPositionComponent implements OnInit {\n\n loading: boolean;\n disabledInBrowser: boolean;\n userPosition: UserPosition;\n\n @Output('eventTriggered') originPosition: EventEmitter = new EventEmitter();\n @Output() error: EventEmitter = new EventEmitter();\n\n constructor(\n private userAgentService: UserAgentService,\n private translateService: TranslateService\n ) { }\n\n ngOnInit():void {\n this.loading = true;\n this.userAgentService.getCurrentPosition()\n .then((position: Position): void => {\n this.userPosition = {\n name: this.translateService.instant('Direction.MyPosition'),\n geometry: {\n type: 'Point',\n coordinates: [position.coords.longitude, position.coords.latitude]\n }\n };\n this.loading = false;\n }).catch((): void => {\n this.error.emit(true);\n this.disabledInBrowser = true;\n this.loading = false;\n });\n }\n\n handleClick():void {\n if (!this.loading) this.originPosition.emit(this.userPosition);\n }\n}","module.exports = \"\"","module.exports = \".instruction-title p {\\n margin-right: 8px;\\n font-weight: 600;\\n font-size: 13px; }\\n\\n.search-wrap {\\n width: 100%;\\n display: block; }\\n\\n.search-wrap-small {\\n width: 100%;\\n padding: 0 14px 0 0; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZGlyZWN0aW9ucy9jb250YWluZXJzL0U6XFxDYW1wdXNtYXBzQnVpbGQvc3JjXFxhcHBcXGRpcmVjdGlvbnNcXGNvbnRhaW5lcnNcXGRpcmVjdGlvbnMuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxXQUFXO0VBQ1gsY0FBYyxFQUFBOztBQUVkO0lBQ0UsV0FBVztJQUNYLG1CQUFtQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvZGlyZWN0aW9ucy9jb250YWluZXJzL2RpcmVjdGlvbnMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaW5zdHJ1Y3Rpb24tdGl0bGUgcCB7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbi5zZWFyY2gtd3JhcCB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBibG9jaztcblxuICAmLXNtYWxsIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwIDE0cHggMCAwO1xuICB9XG59XG4iXX0= */\"","import { Component, OnInit, OnDestroy, NgZone, ViewChild, HostListener, ElementRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MatSidenav } from '@angular/material';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AppConfigService } from '../../services/app-config.service';\nimport { UserAgentService } from '../../services/user-agent.service';\nimport { MapsIndoorsService } from '../../services/maps-indoors.service';\nimport { GoogleMapService } from '../../services/google-map.service';\nimport { LocationService } from '../../services/location.service';\nimport { VenueService } from '../../services/venue.service';\nimport { ThemeService } from '../../services/theme.service';\nimport { Subject, Subscription } from 'rxjs';\nimport { SolutionService } from '../../services/solution.service';\nimport { SearchComponent } from '../components/search/search.component';\nimport { NotificationService } from '../../services/notification.service';\nimport { TrackerService } from 'src/app/services/tracker.service';\nimport { UnitSystem } from '../../shared/enums';\n\nimport { Venue } from '../../shared/models/venue.interface';\nimport { Location } from '../../shared/models/location.interface';\nimport { BaseLocation } from '../../shared/models/baseLocation.interface';\nimport { SearchData } from '../components/search/searchData.interface';\nimport { SearchParameters } from '../../shared/models/searchParameters.interface';\nimport { Step } from '@mapsindoors/components/dist/types/types/step.interface';\nimport { Leg } from '@mapsindoors/components/dist/types/types/leg.interface';\nimport { StepSwitcherControl } from 'src/app/controls/step-switcher.control';\n\ndeclare const mapsindoors: any;\n\n@Component({\n selector: 'app-directions',\n templateUrl: './directions.component.html',\n styleUrls: ['./directions.component.scss']\n})\nexport class DirectionsComponent implements OnInit, OnDestroy {\n isInternetExplorer: boolean;\n isHandset: boolean;\n isViewActive: boolean;\n\n searchInputFieldHasFocus = false;\n error: string;\n colors: any;\n loading = true;\n appConfig: any;\n venue: Venue;\n\n useBrowserPositioning: boolean;\n currentPositionVisible = true;\n currentPosition: any;\n\n travelMode: string = sessionStorage.getItem('TRAVEL_MODE') || 'WALKING';\n avoidStairs: boolean = false;\n\n currentInputField: string;\n\n geoCodingService = new google.maps.Geocoder()\n\n miGeoCodeService = mapsindoors.services.GeoCodeService;\n private miDirectionsService; // Hold instance of mapsindoors DirectionsService\n private miDirectionsRenderer; // Hold instance of mapsindoors DirectionsRenderer\n\n searchParameters: SearchParameters = {\n take: 10,\n near: {},\n getGoogleResults: true,\n countryCodeRestrictions: ''\n };\n searchResults = [];\n isPoweredByGoogle = false;\n originLocation: BaseLocation;\n originInputValue: string;\n @ViewChild('originSearchComponent') originSearchComponent: SearchComponent;\n destinationLocation;\n destinationInputValue: string;\n @ViewChild('destinationSearchComponent') destinationSearchComponent: SearchComponent;\n\n debounceSearchOrigin: Subject = new Subject();\n debounceSearchDestination: Subject = new Subject();\n\n unit: UnitSystem;\n showAgencyInfo = false;\n\n transitAgencies = [];\n\n totalTravelDuration: number;\n totalTravelDistance: number;\n\n @ViewChild('routeInstructions') routeInstructionsComponent: ElementRef;\n\n public flattenedStepsArrayIndex: number = 0;\n public flattenedStepsArray: Step[] = [];\n\n private stepSwitcherMapControl: StepSwitcherControl;\n private handleStepIndexChanged: EventListenerOrEventListenerObject;\n\n subscriptions = new Subscription();\n\n isHandsetSubscription: Subscription;\n originSearchSubscription: Subscription;\n destinationSearchSubscription: Subscription;\n appConfigSubscription: Subscription;\n themeServiceSubscription: Subscription;\n\n userRolesPanel = false;\n userRolesList = [];\n selectedUserRoles = [];\n private solutionId: string;\n\n public directionsResponse;\n\n public instructionsTranslations = {\n walk: this.translateService.instant('DirectionRoute.Walk'),\n bike: this.translateService.instant('DirectionRoute.Ride'),\n transit: this.translateService.instant('DirectionRoute.Transit'),\n drive: this.translateService.instant('DirectionRoute.Drive'),\n leave: this.translateService.instant('DirectionRoute.Leave'),\n from: this.translateService.instant('Direction.From'),\n park: this.translateService.instant('DirectionRoute.Park'),\n at: this.translateService.instant('DirectionRoute.at'),\n building: this.translateService.instant('DirectionRoute.Building'),\n venue: this.translateService.instant('DirectionRoute.Venue'),\n takeStaircaseToLevel: this.translateService.instant('DirectionRoute.TakeStaircaseToLevel'),\n takeElevatorToLevel: this.translateService.instant('DirectionRoute.TakeElevatorToLevel'),\n exit: this.translateService.instant('DirectionRoute.Exit'),\n enter: this.translateService.instant('DirectionRoute.Enter'),\n stops: this.translateService.instant('DirectionRoute.Stops'),\n andContinue: this.translateService.instant('DirectionRoute.andContinue'),\n continueStraightAhead: this.translateService.instant('DirectionRoute.Straight'),\n goLeft: this.translateService.instant('DirectionRoute.TurnLeft'),\n goSharpLeft: this.translateService.instant('DirectionRoute.TurnSharpLeft'),\n goSlightLeft: this.translateService.instant('DirectionRoute.TurnSlightLeft'),\n goRight: this.translateService.instant('DirectionRoute.TurnRight'),\n goSharpRight: this.translateService.instant('DirectionRoute.TurnSharpRight'),\n goSlightRight: this.translateService.instant('DirectionRoute.TurnSlightRight'),\n turnAround: this.translateService.instant('DirectionRoute.TurnAround'),\n days: this.translateService.instant('DirectionRoute.Days'),\n hours: this.translateService.instant('DirectionRoute.Hours'),\n minutes: this.translateService.instant('DirectionRoute.Minutes')\n };\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n public _ngZone: NgZone,\n private sidenav: MatSidenav,\n private appConfigService: AppConfigService,\n private userAgentService: UserAgentService,\n private themeService: ThemeService,\n private translateService: TranslateService,\n private mapsIndoorsService: MapsIndoorsService,\n private solutionService: SolutionService,\n private googleMapService: GoogleMapService,\n private locationService: LocationService,\n private venueService: VenueService,\n private notificationService: NotificationService,\n private trackerService: TrackerService\n ) {\n this.appConfigSubscription = this.appConfigService.getAppConfig().subscribe((appConfig) => this.appConfig = appConfig);\n this.themeServiceSubscription = this.themeService.getThemeColors().subscribe((appConfigColors) => this.colors = appConfigColors);\n\n this.isHandsetSubscription = this.userAgentService.isHandset()\n .subscribe((value: boolean): void => {\n this.isHandset = value;\n\n // Add Step Switcher Control element to map if route is presented and device is handset\n if (this.isHandset && this.directionsResponse) {\n this.addStepSwitcherMapControl(this.flattenedStepsArray);\n } else if (this.stepSwitcherMapControl) { // Remove Step Switcher Control element from map if device no longer is handset\n this.removeStepSwitcherMapControl();\n }\n });\n }\n\n /**\n * Get instance of mapsindoors.services.DirectionsService.\n */\n get directionService(): any {\n if (!this.miDirectionsService) {\n const externalDirections = new mapsindoors.directions.GoogleMapsProvider();\n this.miDirectionsService = new mapsindoors.services.DirectionsService(externalDirections);\n }\n\n return this.miDirectionsService;\n }\n\n /**\n * Get instance of mapsindoors.directions.DirectionsRenderer.\n */\n get directionsRendererInstance(): any {\n if (!this.miDirectionsRenderer) {\n this.miDirectionsRenderer = new mapsindoors.directions.DirectionsRenderer({\n mapsIndoors: this.mapsIndoorsService.mapsIndoors\n });\n }\n return this.miDirectionsRenderer;\n }\n\n /*\n * Listen for clicks on the component and\n * set the leg and step accordingly.\n */\n @HostListener('clicked', ['$event'])\n private onInstructionsClicked(event): void {\n if (typeof event.detail.legIndex === 'number') {\n this.setActiveStep(event.detail.stepIndex, event.detail.legIndex);\n }\n }\n\n ngOnInit(): void {\n this.isInternetExplorer = this.userAgentService.IsInternetExplorer();\n this.isViewActive = true;\n\n this.subscriptions\n // Venue observable\n .add(this.venueService.getVenueObservable()\n .subscribe((venue: Venue): void => {\n this.venue = venue;\n const near = `venue:${this.venue.id}`;\n this.populateSearchParams(near);\n })\n );\n\n this.useBrowserPositioning = this.appConfig.appSettings.positioningDisabled !== '1';\n this.solutionService.getSolutionId()\n .then((id: string): void => {\n this.solutionId = id;\n this.selectedUserRoles = JSON.parse(this.userAgentService.localStorage.getItem(`MI:${this.solutionId}:APPUSERROLES`) || '[]');\n })\n .catch((): void => {\n this.notificationService.displayNotification(\n this.translateService.instant('SetSolution.InitError')\n );\n });\n\n this.solutionService.getUserRoles()\n .then((roles): any => this.userRolesList = roles)\n .catch((): void => {\n this.notificationService.displayNotification(\n this.translateService.instant('Error.General')\n );\n });\n this.mapsIndoorsService.setPageTitle(this.translateService.instant('Direction.Directions'));\n\n const originPromise = this.populateOrigin();\n const destinationPromise = this.populateDestination();\n Promise.all([originPromise, destinationPromise])\n .then((): void => {\n this.getRoute();\n })\n .catch((): void => {\n this.loading = false;\n });\n window['angularComponentRef'] = { component: this, zone: this._ngZone };\n this.mapsIndoorsService.isMapDirty = true; // Show clear map button\n }\n // #region || ROUTE\n\n searchResultsChange({ query, results }: SearchData) {\n this.searchResults = [];\n this.clearRoute();\n\n if (results.length > 0) { // Results\n this.searchResults = results;\n this.isPoweredByGoogle = this.anyGoogleResults(results);\n this.currentPositionVisible = false;\n } else if (query.length > 0) { // No Results\n this.error = `${this.translateService.instant('DirectionHint.NoMatchingResults')} \"${query}\"`;\n } else { // Input cleared\n if (this.currentInputField === 'start') {\n this.currentPositionVisible = true;\n this.originLocation = null;\n } else this.destinationLocation = null;\n if (!this.mapsIndoorsService.floorSelectorIsVisible) {\n this.mapsIndoorsService.showFloorSelector();\n }\n }\n }\n\n loadingHandler() {\n this.error = null;\n this.currentPositionVisible = false;\n this.loading = true;\n }\n\n /**\n * Register the actively used search input field.\n * @param fieldName {string} 'start' or 'dest' field name\n */\n public setCurrentInputField(fieldName): void {\n this.searchInputFieldHasFocus = true;\n this.currentInputField = fieldName;\n }\n\n /**\n * Register that no search input field has focus.\n */\n public blurInputField(): void {\n this.searchInputFieldHasFocus = false;\n }\n\n private anyGoogleResults(results) {\n return results.some((result) => result.properties.type === 'google_places');\n }\n\n /**\n * @description Populates search parameters used for search.\n * @private\n * @param {(string | Object)} near - Coordinate or venue id.\n * @memberof DirectionsComponent\n */\n private populateSearchParams(near: string | Object): void {\n this.searchParameters.near = near;\n this.searchParameters.countryCodeRestrictions = this.appConfig.appSettings.countryCode ? this.appConfig.appSettings.countryCode : '';\n }\n\n /**\n * @description Returns a Promise that always resolves because origin isn't required.\n * @returns {Promise}\n */\n private populateOrigin(): Promise {\n return new Promise(async (resolve, reject): Promise => {\n if (this.originLocation) resolve();\n else if (this.route.snapshot.params.from) {\n await this.locationService.getLocationById(this.route.snapshot.params.from)\n .then((location: Location): void => {\n this.originLocation = location as BaseLocation;\n this.originInputValue = location.properties.name;\n resolve();\n })\n .catch((err: Error): void => {\n this.notificationService.displayNotification(err.message);\n reject();\n });\n } else if (this.useBrowserPositioning) {\n this.originInputValue = this.translateService.instant('Direction.MyPosition');\n this.currentPositionVisible = false;\n this.userAgentService.getCurrentPosition()\n .then((position: Position): void => {\n if (this.originInputValue !== this.translateService.instant('Direction.MyPosition')) {\n return; // Only populate if input hasn't changed.\n }\n\n this.currentPosition = position;\n this.populateSearchParams({ lat: position.coords.latitude, lng: position.coords.longitude });\n\n this.originLocation = {\n id: undefined,\n geometry: { type: 'Point', coordinates: [position.coords.longitude, position.coords.latitude] },\n properties: { name: this.translateService.instant('Direction.MyPosition'), floor: '0' }\n };\n\n resolve();\n }).catch((): void => {\n this.originInputValue = '';\n this.currentPositionVisible = true;\n this.handleMyPositionError();\n reject();\n });\n } else reject();\n });\n }\n\n handleMyPositionClick(position): void {\n this.currentPositionVisible = false;\n\n this.originLocation = {\n id: undefined,\n geometry: position.geometry,\n properties: { name: position.name, floor: '0' }\n };\n\n this.originInputValue = position.name;\n this.originSearchComponent.query = position.name; // Workaround for setting \"query\"\n this.getRoute();\n }\n\n /**\n * @description Shows a no position error in the snackbar.\n * @memberof DirectionsComponent\n */\n handleMyPositionError(): void {\n this.notificationService.displayNotification(\n this.translateService.instant('Error.NoPosition')\n );\n }\n\n // #region - || DESTINATION\n /**\n * @description Returns a promise.\n * @returns {Promise}\n */\n private populateDestination(): Promise {\n return new Promise((resolve, reject): void => {\n const locationId = this.route.snapshot.params.id ? this.route.snapshot.params.id : this.route.snapshot.params.to;\n if (locationId) {\n this.locationService.getLocationById(locationId)\n .then((location: Location): void => {\n this.destinationInputValue = this.getPrettyQuery(location);\n this.destinationLocation = location;\n resolve();\n })\n .catch((err: Error): void => {\n this.notificationService.displayNotification(err.message);\n reject();\n });\n } else reject();\n });\n }\n // #endregion\n\n // #region - SWITCH ORIGIN AND DESTINATION\n switchOriginAndDest() {\n [this.originLocation, this.destinationLocation] = [this.destinationLocation, this.originLocation];\n [this.originInputValue, this.destinationInputValue] = [this.destinationInputValue, this.originInputValue];\n this.clearRoute();\n if (this.hasOriginAndDestination()) {\n this.getRoute();\n }\n this.trackerService.sendEvent('Directions page', 'Reverse route', 'Reverse route was clicked', true);\n }\n // #endregion\n\n // #region - TRAVEL MODE\n setNewTravelMode(travelMode) {\n this.clearRoute();\n this.travelMode = travelMode;\n sessionStorage.setItem('TRAVEL_MODE', travelMode);\n if (this.hasOriginAndDestination()) {\n this.getRoute();\n }\n this.trackerService.sendEvent('Directions page', 'Travel mode switch', `${travelMode} was set as new travel mode`, true);\n }\n // #endregion\n\n // #region - AVOID STAIRS\n changeAvoidStairs() {\n this.avoidStairs = !this.avoidStairs;\n if (this.hasOriginAndDestination()) {\n this.getRoute();\n }\n this.trackerService.sendEvent('Directions page', 'Avoid stairs', `Avoid stairs was set to ${this.avoidStairs}`, true);\n }\n // #endregion\n\n // #region - TOGGLE USER ROLES PANEL\n /**\n * toggles the visiblity of the user roles panel.\n * @memberof DirectionsComponent\n */\n toggleUserRolesPanel() {\n this.userRolesPanel = !this.userRolesPanel;\n }\n // #endregion\n\n // #region - onUserRolesChange EventHandler\n /**\n * onUserRolesChange EventHandler\n * Puts the selected User Roles into localStorage.\n */\n onUserRolesChange() {\n this.userAgentService.localStorage.setItem('MI:' + this.solutionId + ':APPUSERROLES', JSON.stringify(this.selectedUserRoles));\n this.getRoute();\n }\n // #endregion\n\n // #region - AGENCY INFO\n toggleAgencyInfo() {\n this.showAgencyInfo = !this.showAgencyInfo;\n }\n // #endregion\n\n // Format selected location and set\n selectLocation(location) {\n const self = this;\n this.searchResults = [];\n\n if (this.currentInputField === 'start') {\n this.isPoweredByGoogle = false;\n // Google location\n if (location.properties.type === 'google_places') {\n const query = `${location.properties.name}, ${location.properties.subtitle}`;\n this.originInputValue = query;\n this.originSearchComponent.query = query;\n // Getting coordinates for google place\n this.geoCodingService.geocode({ 'placeId': location.properties.placeId }, (results, status) => {\n if (results.length > 0) {\n location.geometry = {\n type: 'point',\n coordinates: [results[0].geometry.location.lng(), results[0].geometry.location.lat()]\n };\n self.originLocation = location as BaseLocation;\n self.getRoute();\n } else {\n console.log('Geocode was not successful for the following reason: ' + status); /* eslint-disable-line no-console */ /* TODO: Improve error handling */\n }\n });\n } else {\n // MapsIndoors location\n const query = this.getPrettyQuery(location);\n this.originInputValue = query;\n this.originSearchComponent.query = query;\n this.originLocation = location;\n this.getRoute();\n }\n this.trackerService.sendEvent('Directions page', 'Origin Search', `${self.originInputValue} was set as start position`, true);\n } else if (this.currentInputField === 'dest') {\n this.isPoweredByGoogle = false;\n // Google location\n if (location.properties.type === 'google_places') {\n const query = `${location.properties.name}, ${location.properties.subtitle}`;\n this.destinationInputValue = query;\n this.destinationSearchComponent.query = query;\n // Getting coordinates for google place\n this.geoCodingService.geocode({ 'placeId': location.properties.placeId }, (results, status) => {\n if (results.length > 0) {\n location.geometry = {\n type: 'point',\n coordinates: [results[0].geometry.location.lng(), results[0].geometry.location.lat()]\n };\n self.destinationLocation = location;\n self.getRoute();\n } else {\n console.log('Geocode was not successful for the following reason: ' + status); /* eslint-disable-line no-console */ /* TODO: Improve error handling */\n }\n });\n } else {\n // MapsIndoors location\n const query = this.getPrettyQuery(location);\n this.destinationInputValue = query;\n this.destinationSearchComponent.query = query;\n this.destinationLocation = location;\n this.getRoute();\n }\n this.trackerService.sendEvent('Directions page', 'Destination Search', `${self.destinationInputValue} was set as destination`, true);\n }\n }\n\n // #endregion\n /**\n * @description Builds a query based on the locations name, floorName, building, and venue parameter.\n * @private\n * TODO: Import Location type.\n * @param {*} location - The location to be formatted into a pretty string.\n * @returns A string to be used as value for input.\n * @memberof DirectionsComponent\n */\n private getPrettyQuery(location): string {\n let query: string = location.properties.name;\n query += location.properties.floorName ? ', Level ' + location.properties.floorName : '';\n query += location.properties.building && location.properties.building !== location.properties.venue ? ', ' + location.properties.building : '';\n query += location.properties.venue ? ', ' + location.properties.venue : '';\n return query;\n }\n\n // #region - || ROUTE REQUEST AND INTERACTIONS\n\n\n // #region - GET ROUTE DATA\n getRoute(): void {\n if (this.hasOriginAndDestination()) {\n this.searchResults = [];\n this._ngZone.run((): void => {\n this.loading = true;\n });\n this.venueService.returnBtnActive = false;\n this.isPoweredByGoogle = false;\n this.setUnitsPreference();\n\n const start = {\n lat: this.locationService.getAnchorCoordinates(this.originLocation).lat(),\n lng: this.locationService.getAnchorCoordinates(this.originLocation).lng(),\n floor: this.originLocation.properties.floor\n };\n\n const dest = {\n lat: this.locationService.getAnchorCoordinates(this.destinationLocation).lat(),\n lng: this.locationService.getAnchorCoordinates(this.destinationLocation).lng(),\n floor: this.destinationLocation.properties.floor\n };\n\n const args = {\n origin: start,\n destination: dest,\n travelMode: this.travelMode.toUpperCase(),\n avoidStairs: this.avoidStairs,\n userRoles: null\n };\n\n if (this.selectedUserRoles.length > 0) {\n args.userRoles = this.selectedUserRoles;\n }\n\n this.directionService.getRoute(args)\n .then((directionsResponse): void => {\n if (!this.hasOriginAndDestination()) {\n return;\n }\n\n if (this.isViewActive) {\n this.mapsIndoorsService.hideFloorSelector();\n this._ngZone.run((): void => {\n if (!this.hasOriginAndDestination()) {\n return;\n }\n\n this.directionsRendererInstance.setRoute(directionsResponse);\n this.directionsResponse = directionsResponse;\n this.transitAgencies = this.getAgencyInfo(directionsResponse.legs);\n\n // Skip overview and display first step\n this.directionsRendererInstance.setStepIndex(0, 0);\n\n // Flattened array of all steps in route\n this.flattenedStepsArray = directionsResponse.legs.map((leg: Leg): Step[] => leg.steps).flat();\n\n // Add Step Switcher Control element to map if the device is handset\n if (this.isHandset) {\n this.addStepSwitcherMapControl(this.flattenedStepsArray);\n }\n\n this.totalTravelDuration = directionsResponse.legs.reduce((sum, leg): number => {\n return sum + leg.duration.value;\n }, 0);\n\n this.totalTravelDistance = directionsResponse.legs.reduce((sum, leg): number => {\n return sum + leg.distance.value;\n }, 0);\n\n this.loading = false;\n\n const myPositionTranslation: string = this.translateService.instant('Direction.MyPosition');\n const externalLocation = this.originInputValue === myPositionTranslation || this.destinationInputValue === myPositionTranslation ? '\"User location\"' : 'external location';\n const origin = `${this.originLocation.id ? `\"${this.originLocation.properties.name}\" – ${this.originLocation.id}` : externalLocation}`;\n const destination = `${this.destinationLocation.id ? `\"${this.destinationLocation.properties.name}\" – ${this.destinationLocation.id}` : externalLocation}`;\n this.trackerService.sendEvent('Directions', 'Got directions', `From ${origin} to ${destination}`);\n });\n }\n })\n .catch((err): void => {\n console.log(err); /* eslint-disable-line no-console */ /* TODO: Improve error handling */\n this.loading = false;\n this.error = this.translateService.instant('DirectionHint.NoRoute');\n });\n } else {\n this.error = this.translateService.instant('DirectionHint.FromAndTo');\n }\n }\n\n /**\n * Add step switcher control element to map.\n *\n * @private\n * @param {Step[]} steps\n * @returns {void}\n */\n private addStepSwitcherMapControl(steps: Step[]): void {\n if (steps && steps.length < 2) {\n return;\n }\n\n this.stepSwitcherMapControl = new StepSwitcherControl(this.googleMapService.map, this.translateService.instant('Direction.Steps'));\n this.stepSwitcherMapControl.add(google.maps.ControlPosition.BOTTOM_CENTER, steps);\n this.stepSwitcherMapControl.miStepSwitcherElement.stepIndex = this.flattenedStepsArrayIndex;\n\n // Listen for stepIndexChanged event from component and set the leg index accordingly.\n this.handleStepIndexChanged = (event: CustomEvent): void => {\n if (event.detail < this.flattenedStepsArrayIndex) {\n this.showPreviousStep();\n } else if (event.detail > this.flattenedStepsArrayIndex) {\n this.showNextStep();\n }\n };\n document.addEventListener('stepIndexChanged', this.handleStepIndexChanged);\n }\n\n /**\n * Remove stepIndexChanged event listener and step switcher control element from map.\n *\n * @private\n */\n private removeStepSwitcherMapControl(): void {\n if (this.stepSwitcherMapControl) {\n document.removeEventListener('stepIndexChanged', this.handleStepIndexChanged);\n this.stepSwitcherMapControl.remove();\n this.stepSwitcherMapControl = null;\n }\n }\n\n /**\n * Checks if origin and destination are set.\n * @returns boolean true if origin and destination are set.\n */\n hasOriginAndDestination(): boolean {\n return this.originLocation && this.destinationLocation;\n }\n\n /**\n * Set unit to imperial or metric based on browser language.\n */\n setUnitsPreference(): void {\n this.unit = navigator.language === 'en-US' ? UnitSystem.Imperial : UnitSystem.Metric;\n }\n\n /**\n * Extract transit agency information from directions response legs.\n * @param {array} legs\n * @returns {array}\n */\n getAgencyInfo(legs): object[] {\n let agenciesArray = [];\n for (const leg of legs) {\n for (const step of leg.steps) {\n if (step.transit_information) {\n const agencies = step.transit_information.line.agencies.map((agency): object => {\n if (agency.url) {\n const a = document.createElement('a');\n a.href = agency.url;\n agency.website = a;\n return agency;\n }\n });\n agenciesArray = agenciesArray.concat(agencies);\n }\n }\n }\n\n // Avoid duplicates (looking at agency name)\n agenciesArray = agenciesArray.filter((agency, position, originalArray): boolean => originalArray.map((mapAgency): string => mapAgency['name']).indexOf(agency['name']) === position);\n\n return agenciesArray;\n }\n\n // #region - INTERACTION WITH SEGMENTS\n /**\n * Show previous step.\n */\n showPreviousStep(): void {\n if (this.flattenedStepsArrayIndex === 0) {\n return;\n }\n this.flattenedStepsArrayIndex--;\n this.directionsRendererInstance.previousStep();\n this.updateHighlightedStep();\n }\n\n /**\n * Show next step.\n */\n showNextStep(): void {\n if ((this.flattenedStepsArrayIndex + 1) === this.flattenedStepsArray.length) {\n return;\n }\n this.flattenedStepsArrayIndex++;\n this.directionsRendererInstance.nextStep();\n this.updateHighlightedStep();\n }\n\n /**\n * Update activeStep attribute on component.\n */\n updateHighlightedStep(): void {\n this.routeInstructionsComponent.nativeElement.activeStep = {\n legIndex: this.directionsRendererInstance.getLegIndex(),\n stepIndex: this.directionsRendererInstance.getStepIndex()\n };\n }\n\n /**\n * Set current step and leg.\n *\n * @param {number} stepIndex\n * @param {number} legIndex\n */\n setActiveStep(stepIndex: number, legIndex: number): void {\n // Show step on map\n this.directionsRendererInstance.setStepIndex(stepIndex, legIndex);\n\n const currentStep = this.directionsResponse.legs[legIndex].steps[stepIndex];\n this.flattenedStepsArrayIndex = this.flattenedStepsArray.indexOf(currentStep);\n\n // Update stepIndex at component\n if (this.stepSwitcherMapControl) {\n this.stepSwitcherMapControl.miStepSwitcherElement.stepIndex = this.flattenedStepsArrayIndex;\n }\n }\n // #endregion\n\n /**\n * @description Closing the sidebar\n */\n showOnMap(): void {\n this.sidenav.close();\n this.trackerService.sendEvent('Directions page', 'Show on map button', 'Show on map button was clicked', true);\n }\n\n // #endregion\n\n // #region - CLEAR ROUTE\n clearRoute(): void {\n this.directionsRendererInstance.setRoute(null);\n this.directionsResponse = null;\n this.removeStepSwitcherMapControl();\n this.venueService.returnBtnActive = true;\n this.transitAgencies = [];\n this.flattenedStepsArrayIndex = 0;\n this.flattenedStepsArray = [];\n this.loading = false;\n this.isPoweredByGoogle = false;\n this.error = null;\n }\n // #endregion\n\n // #endregion\n\n // #region || DESTROY\n goBack(): void {\n const solutionName = this.solutionService.getSolutionName();\n const id = this.route.snapshot.params.id;\n this.router.navigate([`${solutionName}/${this.venue.id}/details/${id}`]);\n }\n\n ngOnDestroy(): void {\n this.isViewActive = false;\n window['angularComponentRef'] = null;\n this.clearRoute();\n this.mapsIndoorsService.showFloorSelector();\n this.appConfigSubscription.unsubscribe();\n this.themeServiceSubscription.unsubscribe();\n if (this.originSearchSubscription) { this.originSearchSubscription.unsubscribe(); }\n if (this.destinationSearchSubscription) { this.destinationSearchSubscription.unsubscribe(); }\n this.subscriptions.unsubscribe();\n }\n // #endregion\n\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {\n MatButtonModule,\n MatIconModule,\n MatToolbarModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatListModule\n} from '@angular/material';\n\n\nimport { HttpClientModule, HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\n\nimport { DirectionsComponent } from './containers/directions.component';\nimport { SearchComponent } from './components/search/search.component';\nimport { UserPositionComponent } from './components/user-position/user-position.component';\n\n@NgModule({\n declarations: [\n DirectionsComponent,\n SearchComponent,\n UserPositionComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatToolbarModule,\n MatButtonModule,\n MatIconModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatListModule,\n HttpClientModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n })\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\n\nexport class DirectionsModule { }\n\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n menu\\n \\n \\n {{pageTitle}}\\n \\n close\\n \\n \\n \\n \\n {{ 'Buttons.ZoomForDetails' | translate }}\\n \\n \\n \\n {{ 'Buttons.ReturnTo' | translate }}\\n {{returnToValues.name}}\\n \\n \\n \\n \\n \\n\"","module.exports = \".mat-toolbar {\\n overflow-x: hidden; }\\n\\n.mat-sidenav-content {\\n height: 100%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWFwL0U6XFxDYW1wdXNtYXBzQnVpbGQvc3JjXFxhcHBcXG1hcFxcbWFwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Msa0JBQWtCLEVBQUE7O0FBR25CO0VBQ0ksWUFBWSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvbWFwL21hcC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tYXQtdG9vbGJhciB7XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcbn1cblxuLm1hdC1zaWRlbmF2LWNvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbn1cbiJdfQ== */\"","import { Component, NgZone } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { GoogleMapService } from './../services/google-map.service';\nimport { MapsIndoorsService } from './../services/maps-indoors.service';\nimport { MiLiveDataService } from './../services/mi-live-data.service';\nimport { LocationService } from './../services/location.service';\nimport { ThemeService } from './../services/theme.service';\nimport { VenueService } from './../services/venue.service';\nimport { SolutionService } from './../services/solution.service';\nimport { AppConfigService } from './../services/app-config.service';\nimport { UserAgentService } from './../services/user-agent.service';\nimport { NotificationService } from '../services/notification.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TrackerService } from '../services/tracker.service';\n\nimport { Venue } from '../shared/models/venue.interface';\nimport { Location } from '../shared/models/location.interface';\nimport { PrintControl } from '../controls/print.control';\n\nenum ErrorVenueId {\n undefinedId,\n incorrectId\n}\n\n@Component({\n selector: 'app-root',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\n\nexport class MapComponent {\n isInternetExplorer: boolean;\n isHandset: boolean;\n statusOk: boolean = false;\n appConfig: any;\n colors: object;\n venue: Venue;\n returnToValues: any;\n pageTitle: string;\n private location: Location;\n returnBtn: HTMLElement;\n private initVenue: Venue;\n private printControlElement: PrintControl;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n public _ngZone: NgZone,\n private userAgentService: UserAgentService,\n private googleMapService: GoogleMapService,\n private mapsIndoorsService: MapsIndoorsService,\n private miLiveDataService: MiLiveDataService,\n private solutionService: SolutionService,\n private appConfigService: AppConfigService,\n private locationService: LocationService,\n private themeService: ThemeService,\n private venueService: VenueService,\n private translateService: TranslateService,\n private notificationService: NotificationService,\n private trackerService: TrackerService\n ) { }\n\n async ngOnInit(): Promise {\n this.appConfigService.getAppConfig()\n .subscribe((appConfig) => this.appConfig = appConfig);\n\n this.appConfigService.getInitVenue()\n .subscribe((venue: Venue): void => {\n this.initVenue = venue;\n });\n this.themeService.getThemeColors()\n .subscribe((appConfigColors) => this.colors = appConfigColors);\n this.venueService.getVenueObservable()\n .subscribe((venue: Venue): void => {\n this.venue = venue;\n this.initReturnToButton();\n });\n this.locationService.getCurrentLocation()\n .subscribe((location: Location) => this.location = location);\n this.mapsIndoorsService.getCurrentPageTitle()\n .subscribe((title: string) => this.pageTitle = title);\n this.userAgentService.isHandset()\n .subscribe((value: boolean) => this.isHandset = value);\n this.isInternetExplorer = this.userAgentService.IsInternetExplorer();\n\n await this.googleMapService.initMapView();\n await this.mapsIndoorsService.initMapsIndoors();\n this.miLiveDataService.enableAll(this.mapsIndoorsService.mapsIndoors);\n\n this.getVenueFromUrl()\n .then((venue: Venue): void => {\n this.venueService.setVenue(venue, this.appConfig);\n this.mapsIndoorsService.showFloorSelectorAfterUserInteraction();\n this.appConfigService.setInitVenue(venue);\n })\n .catch((err): void => {\n this.router.navigate([`${this.solutionService.getSolutionName()}/venues`]);\n if (err === ErrorVenueId.incorrectId) {\n this.notificationService.displayNotification(\n this.translateService.instant('Error.IncorrectVenue')\n );\n }\n });\n await this.themeService.setColors();\n this.mapsIndoorsService.getReturnToValues()\n .subscribe((values) => {\n this.returnToValues = values;\n });\n this.addLocationListener();\n this.addFloorChangedListener();\n\n this.returnBtn = document.getElementById('return-to-venue');\n this.addPrintControl();\n this.statusOk = true;\n }\n\n /**\n * @description Gets the venue based on the venueId param in the URL.\n * @returns {Promise}\n * @memberof MapComponent\n */\n getVenueFromUrl(): Promise {\n return new Promise((resolve, reject) => {\n const id = this.route.children[0].snapshot.params.venueId;\n if (id && id.length === 24) {\n this.venueService.getVenueById(id)\n .then((venue: Venue) => {\n resolve(venue);\n })\n .catch(() => {\n reject(ErrorVenueId.incorrectId);\n });\n } else reject(id ?\n ErrorVenueId.incorrectId :\n ErrorVenueId.undefinedId\n );\n });\n }\n\n /**\n * Add print control element to map.\n *\n * @private\n */\n private addPrintControl(): void {\n this.printControlElement = new PrintControl(this.googleMapService.map, this.translateService.instant('Buttons.PrintMap'));\n this.printControlElement.add(google.maps.ControlPosition.RIGHT_TOP);\n }\n\n // #region || CLEAR MAP\n clearMap(): void {\n this.googleMapService.closeInfoWindow();\n this.locationService.clearQueryFilter();\n this.locationService.clearCategoryFilter();\n this.mapsIndoorsService.setPageTitle();\n this.router.navigate([`${this.solutionService.getSolutionName()}/${this.venue.id}/search`]);\n this.mapsIndoorsService.setVenueAsReturnToValue(this.venue);\n this.mapsIndoorsService.isMapDirty = false;\n this.trackerService.sendEvent('Map', 'Clear map button click', 'Clear map button was clicked', true);\n }\n\n /**\n * @description Reset app initial state.\n * @memberof MapComponent\n */\n public resetAppToInitialState(): void {\n this.venueService.setVenue(this.initVenue, this.appConfig)\n .then((): void => {\n this.clearMap();\n this.mapsIndoorsService.mapsIndoors.fitVenue();\n });\n }\n\n // #endregion\n\n // #region || LISTENER || RETURN TO VENUE OR POI\n /**\n * @description Adds a Google Maps Idle and Return To button click listener.\n * @listens event:click Returns to previous selected venue or location when clicked.\n * @listens event:idle Shows or hides button when panning the map.\n */\n private initReturnToButton(): void {\n const googleMap = this.googleMapService.map;\n google.maps.event.addListener(googleMap, 'idle', () => {\n // Always true except for when getting a direction\n if (this.venueService.favouredVenue && this.venueService.returnBtnActive) {\n // Hides the button if the selected venue is inside the current googleMap bounds\n if (googleMap.getBounds().intersects(this.venue.boundingBox)) {\n if (this.returnBtn.className.includes('hidden') === false) {\n this.returnBtn.className += ' hidden';\n }\n } else {\n // Shows the button when panned away from selected venue or location.\n this.returnBtn.className = this.returnBtn.className.replace(' hidden', '');\n }\n }\n });\n }\n\n /**\n * @description Fits the venue if a locations isn't selected.\n * @memberof MapComponent\n */\n returnToButtonClickHandler(): void {\n if (this.returnToValues.isVenue === true) {\n this.mapsIndoorsService.mapsIndoors.fitVenue();\n } else {\n this.googleMapService.map.panTo(this.returnToValues.latLng);\n }\n }\n //#endregion\n\n // #region || LISTENER || LOCATION CLICK\n /**\n * Adding a listener for clicks on locations\n * @listens event:click\n */\n addLocationListener(): void {\n this.mapsIndoorsService.mapsIndoors.addListener('click', (location): void => {\n this.handleSingleLocationClick(location);\n this.trackerService.sendEvent('Map', 'Location clicked on map', `\"${location.properties.name}\" – ${location.id}`);\n });\n }\n\n /**\n * Navigating to details page when a single location are clicked on the map.\n * @param location\tThe clicked location.\n */\n handleSingleLocationClick(location: Location): void {\n let venue: Venue;\n this.locationService.setLocation(location);\n\n /** Make sure venue is set whenever clicking on a location */\n if (this.venue) {\n venue = this.venue;\n } else {\n this.venueService.getVenues().then((venues: Venue[]) => {\n const locationVenue = venues.find((venue: Venue) => venue.name === location.properties.venue);\n // Set venue and override default floor by setting it explicitly\n this.venueService.setVenue(locationVenue, this.appConfig, false);\n this.mapsIndoorsService.setFloor(location.properties.floor);\n venue = locationVenue;\n });\n }\n\n if (venue) {\n this.router.navigate([`${this.solutionService.getSolutionName()}/${venue.id}/details/${location.id}`]);\n }\n\n this.trackerService.sendEvent('Map', 'Location click', `${location.properties.name} was clicked`, true);\n }\n // #endregion\n\n // #region || LISTENER || FLOOR CHANGED\n // Closes and opens info-windows when changing floors\n addFloorChangedListener(): void {\n this.mapsIndoorsService.mapsIndoors.addListener('floor_changed', (): void => {\n if (this.location && this.route.children[0].snapshot.routeConfig.component.name === 'DetailsComponent') {\n const locationFloor: string = this.location.properties.floor;\n if (locationFloor !== this.mapsIndoorsService.mapsIndoors.getFloor()) {\n this.googleMapService.closeInfoWindow();\n // Remove location polygon\n this.locationService.clearLocationPolygonHighlight();\n } else {\n this.googleMapService.openInfoWindow();\n // Set location polygon\n this.locationService.highlightLocationPolygon(this.location.id);\n }\n }\n });\n }\n // #endregion\n\n}\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'distance' })\nexport class DistancePipe implements PipeTransform {\n private imperial = navigator.language === 'en-US' ? true : false;\n\n transform(meters: number): string {\n if (meters === undefined || meters === null) {\n return;\n }\n\n return this.imperial ? this.getImperialDistance(meters) : this.getMetricDistance(meters);\n }\n\n /**\n * @description Return the distance rounded in either feet or miles.\n * @private\n * @param {number} meters\n * @returns {string}\n */\n private getImperialDistance(meters: number): string {\n if (Math.abs(meters) < 160.9344) {\n const ft = meters * 3.2808;\n return Math.round(ft) + ' ft';\n }\n const miles = meters / 1609.344;\n return Math.round(miles * 10) / 10 + ' mi';\n }\n\n /**\n * @description Return the distance rounded in either meters or kilometers.\n * @private\n * @param {number} meters\n * @returns {string}\n */\n private getMetricDistance(meters: number): string {\n if (Math.abs(meters) < 1000) {\n return `${Math.round(meters)} m`;\n }\n return Math.round((meters / 1000) * 10) / 10 + ' km';\n }\n}","module.exports = \"\\n\\t{{ 'InfoDialog.Title' | translate }}\\n\\t\\n\\t\\tclose\\n\\t\\n\\n\\n\\t\\n\\t\\t{{ 'InfoDialog.AppName' | translate }}:\\n\\t\\t{{dialogData.appTitle}}\\n\\t\\n\\t\\n\\t\\t{{ 'InfoDialog.Supplier' | translate }}:\\n\\t\\t\\n\\t\\t\\tMapsPeople A/S\\n\\t\\t\\n\\t\\n\\t\\n\\t\\t{{ 'InfoDialog.AppVersion' | translate }}:\\n\\t\\t{{dialogData.appVersion}}\\n\\t\\n\\n\\t\\n\\t\\t{{ 'InfoDialog.SdkVersion' | translate }}:\\n\\t\\t{{dialogData.sdkVersion}}\\n\\t\\n\"","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { AppConfigService } from './../../services/app-config.service';\n\n@Component({\n templateUrl: './info-dialog.component.html',\n})\nexport class InfoDialogComponent {\n form: FormGroup;\n dialogData: any;\n\n constructor(\n private fb: FormBuilder,\n public dialogRef: MatDialogRef,\n private appConfigService: AppConfigService,\n @Inject(MAT_DIALOG_DATA) private data\n ) {\n this.form = fb.group({\n appTitle: this.data.appTitle,\n appVersion: this.data.appVersion,\n sdkVersion: this.data.sdkVersion,\n locationName: this.data.locationName\n });\n this.dialogData = this.data;\n }\n\n /**\n * @description Close dialog.\n * @memberof InfoDialogComponent\n */\n public onClose(): void {\n this.dialogRef.close();\n }\n}\n","module.exports = \"\"","module.exports = \".search-wrap input {\\n width: 256px; }\\n\\n.hero img {\\n width: 100%;\\n height: 100%;\\n -o-object-fit: cover;\\n object-fit: cover; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VhcmNoL0U6XFxDYW1wdXNtYXBzQnVpbGQvc3JjXFxhcHBcXHNlYXJjaFxcc2VhcmNoLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksWUFBWSxFQUFBOztBQUdoQjtFQUNDLFdBQVc7RUFDWCxZQUFZO0VBQ1osb0JBQWlCO0tBQWpCLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2VhcmNoL3NlYXJjaC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5zZWFyY2gtd3JhcCBpbnB1dCB7XG4gICAgd2lkdGg6IDI1NnB4O1xufVxuXG4uaGVybyBpbWcge1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHRvYmplY3QtZml0OiBjb3Zlcjtcbn0iXX0= */\"","import { Component, OnInit, OnDestroy, NgZone, HostListener } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material';\nimport { SolutionService } from '../services/solution.service';\nimport { AppConfigService } from '../services/app-config.service';\nimport { VenueService } from '../services/venue.service';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { LocationService } from '../services/location.service';\nimport { MapsIndoorsService } from '../services/maps-indoors.service';\nimport { InfoDialogComponent } from './info-dialog/info-dialog.component';\nimport { ThemeService } from '../services/theme.service';\nimport { GoogleMapService } from '../services/google-map.service';\nimport { environment } from '../../environments/environment';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NotificationService } from '../services/notification.service';\nimport { SearchService } from '../directions/components/search/search.service';\nimport { TrackerService } from '../services/tracker.service';\nimport { UserAgentService } from '../services/user-agent.service';\n\nimport { Venue } from '../shared/models/venue.interface';\nimport { Location } from '../shared/models/location.interface';\nimport { Category } from '../shared/models/category.interface';\nimport { SearchParameters } from '../shared/models/searchParameters.interface';\nimport { CategoryService } from '../services/category.service';\n\n@Component({\n selector: 'app-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss']\n})\nexport class SearchComponent implements OnInit, OnDestroy {\n appConfig: any;\n colors: object;\n categoriesMenu: any;\n\n venue: Venue;\n SearchHintAppTitle: string = '';\n\n previousQuery: string = ''\n category: any;\n error: string;\n search: any = {\n query: null,\n category: null\n };\n locationsArray: Location[] = [];\n filtered: boolean = false;\n searchFocus: boolean = false;\n loading: boolean = false;\n\n loadingLocations: boolean = false;\n endOfArray: boolean = false;\n\n zoomBtn: HTMLElement;\n zoomBtnListener: google.maps.MapsEventListener;\n\n debounceSearch: Subject = new Subject();\n debounceSearchSubscription: Subscription;\n\n private subscriptions = new Subscription();\n private urlParameters: Params;\n categorySubscription: Subscription;\n\n dialogSubscription: Subscription;\n dialogRef: MatDialogRef;\n public appVersion: string = environment.v;\n appConfigSubscription: Subscription;\n themeServiceSubscription: Subscription;\n\n // TODO: Should be moved into search component when implemented.\n @HostListener('document:keydown.enter', ['$event'])\n onKeydownHandler(): void {\n if (this.search.query) {\n this.trackerService.sendEvent('Search', 'Pressed \"Enter\" key', `\"${this.search.query}\" search query`);\n }\n }\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n public _ngZone: NgZone,\n private solutionService: SolutionService,\n private appConfigService: AppConfigService,\n private categoryService: CategoryService,\n private venueService: VenueService,\n private googleMapService: GoogleMapService,\n private locationService: LocationService,\n private mapsIndoorsService: MapsIndoorsService,\n private dialog: MatDialog,\n private themeService: ThemeService,\n private notificationService: NotificationService,\n private translateService: TranslateService,\n private searchService: SearchService,\n private trackerService: TrackerService,\n private userAgentService: UserAgentService\n ) {\n this.appConfigSubscription = this.appConfigService.getAppConfig().subscribe((appConfig) => this.appConfig = appConfig);\n this.themeServiceSubscription = this.themeService.getThemeColors().subscribe((appConfigColors) => this.colors = appConfigColors);\n this.debounceSearchSubscription = this.debounceSearch\n .pipe(debounceTime(500)) // wait XX ms after the last event before emitting last event\n .pipe(distinctUntilChanged()) // only emit if value is different from previous value\n .subscribe((value) => {\n this.getLocationsForQuery(value);\n });\n }\n\n ngOnInit(): void {\n this.subscriptions\n // Route Observable\n .add(this.route.queryParams\n .subscribe((params: Params): void => {\n this.urlParameters = params;\n })\n )\n // Venue observable\n .add(this.venueService.getVenueObservable()\n .subscribe((venue: Venue): void => {\n this.venue = venue;\n this.zoomForDetails();\n this.getPreviousFiltering();\n this.panIfWithinBounds();\n })\n )\n .add(this.categoryService.getMainMenuCategoriesObservable()\n .subscribe((categories: Category[]): void => {\n this.categoriesMenu = categories;\n })\n );\n\n this.SearchHintAppTitle = this.appConfig.appSettings.title;\n window['angularComponentRef'] = { component: this, zone: this._ngZone };\n }\n\n // #region || SEARCH AND RESULTS\n\n /**\n * @description Setting the selected location.\n * @param {Location} location\n * @memberof SearchComponent\n */\n public setLocation(location: Location): void {\n this.locationsArray = [];\n this.loading = true;\n this.locationService.setLocation(location);\n this.router.navigate([`${this.solutionService.getSolutionName()}/${this.venue.id}/details/${location.id}`]);\n this.trackerService.sendEvent('Search', 'Selected Location in search results list',\n `\"${location.properties.name}\" – ${location.id} ${this.search.query ? `(\"${this.search.query}\" search query)` : ''}`);\n }\n\n /**\n * @description Get the previous category and query filtering.\n * @private\n * @returns {void}\n * @memberof SearchComponent\n */\n private getPreviousFiltering(): void {\n let category: Category;\n if (this.urlParameters && this.urlParameters.cat) {\n category = this.appConfig.menuInfo.mainmenu\n .find((category: Category) => category.categoryKey.toLowerCase() === this.urlParameters.cat.toLowerCase());\n }\n const query = this.locationService.getQueryFilter();\n\n // No filtering\n if (!category && !query) {\n return;\n }\n\n // Filter by query\n if (!category) {\n this.search.query = query;\n this.getLocationsForQuery(query);\n return;\n }\n\n // Filter by category and query as well if any\n this.getLocationsForCategory(category)\n .then((): void => {\n if (query) {\n this.getLocationsForQuery(query);\n }\n });\n this.search.query = query;\n }\n\n /**\n * Pan to current position if it is within venue bounds.\n */\n private panIfWithinBounds(): void {\n const bbox = this.venue.geometry.bbox;\n const bounds = new google.maps.LatLngBounds({ lat: bbox[1], lng: bbox[0] }, { lat: bbox[3], lng: bbox[2] });\n this.userAgentService.panToPositionIfWithinBounds(bounds);\n }\n\n // Show/hide search hint when focus/blur on input\n searchInFocus(booleanValue): void {\n if (this.search.query && this.search.query.length === 1) {\n return;\n }\n this.searchFocus = booleanValue;\n // TODO: Select value inside input when focus\n // if(booleanValue) {\n // \tlet input = document.getElementById('searchInput');\n // \tinput.select()\n // }\n }\n\n /**\n * @description Populates the LocationsArray property with locations for the given category.\n * @param {Category} category - The category to filter by.\n * @returns {Promise}\n * @memberof SearchComponent\n */\n public getLocationsForCategory(category: Category, clickEvent?): Promise {\n return new Promise((resolve, reject): void => {\n this.loading = true;\n this.locationsArray = [];\n this.endOfArray = false;\n\n // Update category properties\n this.search.category = category.name;\n this.category = category;\n this.locationService.setCategoryFilter(category);\n\n this.mapsIndoorsService.setPageTitle(category.name);\n // Update the category URL parameter\n this.router.navigate([], { queryParams: { cat: category.categoryKey.toLowerCase() } });\n\n this.categoryRequest(category.categoryKey)\n .then((locations: Location[]): void => {\n this.filtered = true;\n if (locations.length === 0) {\n this.error = 'EmptyCategory';\n this.loading = false;\n resolve();\n return;\n }\n this.locationsArray = locations;\n this.mapsIndoorsService.setMapFilter(this.locationsArray);\n\n this.loading = false;\n resolve();\n })\n .catch((): void => {\n this.loading = false;\n this.notificationService.displayNotification(\n this.translateService.instant('Error.General')\n );\n reject();\n });\n if (clickEvent) {\n this.trackerService.sendEvent('Categories', 'Selected Category', `\"${category.name}\" – ${category.categoryKey}`);\n }\n });\n }\n\n /**\n * @description Get locations for a category.\n * @private\n * @param {string} categoryKey - The category key to search for locations within.\n * @returns {Promise} - Array of 50 locations or less.\n * @memberof SearchComponent\n */\n private categoryRequest(categoryKey: string): Promise {\n const parameters: SearchParameters = {\n take: 50,\n skip: this.locationsArray.length,\n venue: this.venue.name,\n categories: [categoryKey],\n orderBy: 'relevance',\n };\n parameters.near = `venue:${this.venue.id}`;\n return this.searchService.getLocations(parameters);\n }\n\n searchValueChanged(value: string): void {\n this.debounceSearch.next(value);\n }\n\n async getLocationsForQuery(query): Promise {\n // Show hint\n if (query && (query.length < 2 || query === '')) {\n if (!this.search.category) {\n this.error = null;\n this.locationsArray = [];\n this.searchFocus = true;\n } else {\n this.getLocationsForCategory(this.category);\n }\n } else if (query && query.length > 1) {\n // Get locations\n this.loading = true;\n this.error = null;\n this.searchFocus = false;\n this.filtered = true;\n this.locationsArray = [];\n\n // Clear \"get more locations\" variables\n this.endOfArray = false;\n // Set query for later use\n this.previousQuery = query;\n this.locationService.setQueryFilter(query);\n // Send request\n await this.queryRequest(query)\n .then((locations: Location[]): void => {\n if (locations.length === 0) {\n this.error = this.category ? 'NoResultsInCategory' : 'NoResults';\n this.loading = false;\n }\n this.locationsArray = locations && locations.length > 0 ? locations : [];\n this.mapsIndoorsService.setMapFilter(this.locationsArray);\n });\n this.loading = false;\n } else {\n this.error = null;\n this.clearQuery();\n }\n }\n\n /**\n * @description Get locations for a query.\n * @private\n * @param {string} query - The search query.\n * @returns {Promise} - Array of 50 locations or less.\n * @memberof SearchComponent\n */\n private queryRequest(query: string): Promise {\n const parameters: SearchParameters = {\n q: query,\n fields: 'name,description,aliases,categories,externalId',\n take: 50,\n skip: this.locationsArray.length,\n orderBy: 'relevance',\n };\n parameters.near = `venue:${this.venue.id}`;\n if (this.category) {\n parameters.categories = [this.category.categoryKey];\n }\n\n return this.searchService.getLocations(parameters);\n }\n\n /**\n * @description Get more locations for entered query and or selected category.\n * @returns {Promise}\n * @memberof SearchComponent\n */\n async getMoreLocations(): Promise {\n this.loadingLocations = true;\n let locations: Location[];\n\n // Query search\n if (this.search.query && this.search.query.length !== 0) {\n locations = await this.queryRequest(this.search.query);\n } else {\n // Category search\n locations = await this.categoryRequest(this.category.categoryKey);\n }\n\n if (locations.length === 0) {\n this.endOfArray = true;\n return;\n }\n this.locationsArray.push(...locations);\n this.mapsIndoorsService.setMapFilter(this.locationsArray);\n\n this.loadingLocations = false;\n }\n\n // Clear query\n clearQuery(): void {\n this.search.query = '';\n this.previousQuery = '';\n this.locationService.clearQueryFilter();\n this.searchFocus = false;\n this.error = null;\n // If both a category and a query\n if (this.category) {\n this.getLocationsForCategory(this.category);\n } else {\n this.clearAll();\n }\n }\n // #endregion\n\n // #region || ZOOM FOR MORE DETAILS\n async zoomForDetails(): Promise {\n const self = this;\n const googleMap = this.googleMapService.map;\n this.zoomBtn = document.getElementById('zoom-for-details');\n const solutionId = await this.solutionService.getSolutionId();\n\n // Hide the zoom button if the user has visited the app before else show it\n const hideZoomBtnLocalStorage = this.userAgentService.localStorage.getItem('MI:' + solutionId + '-hideZoom');\n if (hideZoomBtnLocalStorage === 'true') this.hideZoomBtn();\n else showZoomBtn();\n\n function showZoomBtn(): void {\n self.zoomBtn.className = self.zoomBtn.className.replace(' hidden', '');\n }\n\n // Hides zoom button when clicked\n this.zoomBtnListener = google.maps.event.addDomListenerOnce(this.zoomBtn, 'click', (): void => {\n googleMap.setZoom(Math.max(18, googleMap.getZoom() + 1));\n self.hideZoomBtn();\n });\n // Hides zoom button when map is dragged\n google.maps.event.addListenerOnce(googleMap, 'dragend', (): void => {\n self.hideZoomBtn();\n });\n\n // Remove zoom button when the user zooms\n google.maps.event.addListenerOnce(googleMap, 'idle', (): void => {\n this.mapsIndoorsService.mapsIndoors.addListener('zoom_changed', (): void => {\n self.hideZoomBtn();\n });\n });\n }\n\n async hideZoomBtn() {\n const solutionId = await this.solutionService.getSolutionId();\n if (this.zoomBtn.className.indexOf(' hidden') < 0) {\n this.zoomBtn.className += ' hidden';\n }\n google.maps.event.removeListener(this.zoomBtnListener);\n this.userAgentService.localStorage.setItem('MI:' + solutionId + '-hideZoom', 'true');\n }\n // #endregion\n\n // #region || DESTROY\n async goBack() {\n // If query or selected category\n if (this.locationsArray.length > 0 || this.filtered) {\n this.clearAll();\n this.mapsIndoorsService.setPageTitle();\n this.mapsIndoorsService.isMapDirty = false;\n\n const solutionName = await this.solutionService.getSolutionName();\n this.router.navigate([`${solutionName}/${this.venue.id}/search`]);\n } else {\n // Go back to venues page\n const solutionId = await this.solutionService.getSolutionId();\n this.userAgentService.localStorage.removeItem('MI:' + solutionId);\n this.mapsIndoorsService.hideFloorSelector();\n this.clearAll();\n this.venueService.favouredVenue = false;\n this.venueService.fitVenues = false;\n const solutionName = await this.solutionService.getSolutionName();\n this.router.navigate([`${solutionName}/venues`]);\n this.mapsIndoorsService.isMapDirty = false;\n }\n }\n\n clearAll(): void {\n this.urlParameters = null;\n this.locationsArray = [];\n if (this.mapsIndoorsService.mapsIndoors) this.mapsIndoorsService.clearMapFilter();\n this.debounceSearch.next(); // Hack to clear previous query\n this.filtered = false;\n this.error = null;\n this.category = null;\n this.search.category = null;\n this.locationService.clearCategoryFilter();\n this.previousQuery = null;\n this.search.query = null;\n this.locationService.clearQueryFilter();\n this.loading = false;\n }\n\n ngOnDestroy(): void {\n if (this.zoomBtn) this.hideZoomBtn();\n window['angularComponentRef'] = null;\n if (this.dialogSubscription) this.dialogSubscription.unsubscribe();\n if (this.debounceSearchSubscription) this.debounceSearchSubscription.unsubscribe();\n this.appConfigSubscription.unsubscribe();\n this.themeServiceSubscription.unsubscribe();\n this.subscriptions.unsubscribe();\n }\n // #endregion\n\n // #region || DIALOG || INFO\n openInfoDialog(): void {\n this.dialogRef = this.dialog.open(InfoDialogComponent, {\n width: '500px',\n autoFocus: false,\n disableClose: false,\n data: {\n appTitle: this.appConfig.appSettings.title,\n appVersion: this.appVersion,\n sdkVersion: this.mapsIndoorsService.mapsIndoors.__VERSION__\n }\n });\n\n this.dialogSubscription = this.dialogRef.afterClosed()\n .subscribe((): void => {\n this.trackerService.sendEvent('Search page', 'About dialog', 'Close button was clicked for About dialog', true);\n });\n this.trackerService.sendEvent('Search page', 'About dialog', 'Open button was clicked for About dialog', true);\n }\n // #endregion\n\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject, ReplaySubject } from 'rxjs';\n\nimport { Venue } from '../shared/models/venue.interface';\n\ndeclare const mapsindoors: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppConfigService {\n private appConfig = new BehaviorSubject({});\n private initVenue = new ReplaySubject(1);\n\n // #region || APP CONFIG\n setAppConfig(): Promise {\n return new Promise((resolve, reject): void => {\n mapsindoors.services.AppConfigService.getConfig().then((appConfig): void => {\n appConfig.appSettings.title = appConfig.appSettings.title || 'MapsIndoors';\n appConfig.appSettings.displayAliases = JSON.parse(appConfig.appSettings.displayAliases || false);\n this.appConfig.next(appConfig);\n resolve();\n }).catch((): void => {\n reject();\n });\n });\n }\n\n getAppConfig(): Observable {\n return this.appConfig.asObservable();\n }\n // #endregion\n\n // #region || INIT VENUE\n /**\n * @description Set initial venue of app.\n * @param {Venue} venue - Venue object.\n * @memberof AppConfigService\n */\n setInitVenue(venue: Venue): void {\n this.initVenue.next(venue);\n }\n\n /**\n * @description Get venue from app initialization.\n * @returns {Observable} - Returns the Venue object.\n * @memberof AppConfigService\n */\n getInitVenue(): Observable {\n return this.initVenue.asObservable();\n }\n // #endregion\n\n}","import { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { AppConfigService } from './app-config.service';\nimport { VenueService } from './venue.service';\nimport { SearchService } from '../directions/components/search/search.service';\n\nimport { Venue } from '../shared/models/venue.interface';\nimport { Category } from '../shared/models/category.interface';\nimport { Location } from '../shared/models/location.interface';\nimport { SearchParameters } from '../shared/models/searchParameters.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CategoryService {\n private solutionMainMenu: Category[] = [];\n private venueCategories = new BehaviorSubject([])\n\n constructor(\n private appConfigService: AppConfigService,\n private venueService: VenueService,\n private searchService: SearchService,\n ) {\n // App Config subscription\n this.appConfigService.getAppConfig()\n .subscribe((appConfig): void => {\n this.solutionMainMenu = appConfig.menuInfo && appConfig.menuInfo.mainmenu ?\n appConfig.menuInfo.mainmenu :\n null;\n });\n // Venue subscription\n this.venueService.getVenueObservable()\n .subscribe((venue: Venue): void => {\n this.updateCategoriesForVenue(venue.id);\n });\n }\n\n /**\n * Get mainMenu categories which have locations tied to them within the same venue as a observable.\n *\n * @returns {Observable}\n */\n public getMainMenuCategoriesObservable(): Observable {\n return this.venueCategories.asObservable();\n }\n\n /**\n * Populate categories observable with mainMenu categories which have locations tied to them within the same venue.\n *\n * @private\n * @param {string} venueId\n */\n private updateCategoriesForVenue(venueId: string): void {\n if (this.solutionMainMenu) {\n const filteredCategories: Category[] = [];\n\n for (const category of this.solutionMainMenu) {\n const searchParameters: SearchParameters = {\n categories: [category.categoryKey],\n take: 1,\n venue: venueId\n };\n this.searchService.getLocations(searchParameters)\n .then((locations: Location[]): void => {\n if (locations.length > 0) {\n filteredCategories.push(category);\n } else {\n // eslint-disable-next-line no-console\n console.warn(`The ${category.name} category has no associated locations on this venue.`);\n }\n });\n }\n this.venueCategories.next(filteredCategories);\n }\n }\n}","import { Injectable } from '@angular/core';\n\ndeclare const mapsindoors: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GoogleMapService {\n\n private infoWindow = new google.maps.InfoWindow;\n\n public googleMapView: any;\n public map: google.maps.Map;\n\n /**\n * Creates an instance of mapsindoors.mapView.GoogleMapsView, which\n * creates a Google map and attaches it to a DOM element.\n *\n */\n initMapView(): Promise {\n return new Promise((resolve): void => {\n this.googleMapView = new mapsindoors.mapView.GoogleMapsView({\n element: document.getElementById('gmap'),\n zoom: 17,\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: true\n });\n this.map = this.googleMapView.getMap();\n resolve();\n });\n }\n\n /**\n * @description Populates the info window with text and a position.\n * @param {string} locationName - The location name.\n * @param {google.maps.LatLng} anchor - The location coordinate.\n * @memberof GoogleMapService\n */\n public updateInfoWindow(locationName: string, anchor: google.maps.LatLng): void {\n this.infoWindow.setContent(`${locationName}`);\n this.infoWindow.setPosition(anchor);\n }\n\n /**\n * @description Opens the info window.\n * @memberof GoogleMapService\n */\n public openInfoWindow(): void {\n this.infoWindow.open(this.map);\n }\n\n /**\n * @description Closes the info window.\n * @memberof GoogleMapService\n */\n public closeInfoWindow(): void {\n this.infoWindow.close();\n }\n\n}\n","import { Observable, ReplaySubject } from 'rxjs';\nimport { AppConfigService } from './app-config.service';\nimport { GoogleMapService } from './google-map.service';\nimport { Injectable } from '@angular/core';\nimport { MapsIndoorsService } from './maps-indoors.service';\nimport { VenueService } from './venue.service';\nimport { SearchService } from '../directions/components/search/search.service';\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { Venue } from '../shared/models/venue.interface';\nimport { Location } from '../shared/models/location.interface';\nimport { BaseLocation } from '../shared/models/baseLocation.interface';\nimport { Category } from '../shared/models/category.interface';\n\ndeclare const mapsindoors: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocationService {\n\n appConfig: any;\n venue: Venue;\n // Used for restoring page when going back search page\n private searchQuery: string;\n private selectedCategory: Category;\n\n private selectedLocation = new ReplaySubject(1);\n private polygonHighlightOptions = {\n strokeColor: '#EF6CCE',\n strokeOpacity: 1,\n strokeWeight: 1,\n fillColor: '#EF6CCE',\n fillOpacity: 0.2\n };\n private highlightedLocationId: string;\n\n constructor(\n private translateService: TranslateService,\n private appConfigService: AppConfigService,\n private mapsIndoorsService: MapsIndoorsService,\n private googleMapService: GoogleMapService,\n private venueService: VenueService,\n private searchService: SearchService,\n ) {\n this.appConfigService.getAppConfig()\n .subscribe((appConfig): void => {\n this.appConfig = appConfig;\n });\n this.venueService.getVenueObservable()\n .subscribe((venue: Venue): void => {\n this.venue = venue;\n });\n }\n\n // #region || SEARCH FILTERS\n /**\n * @description Update the selectedCategory property.\n * @param {Category} category - The category to filter by.\n * @memberof LocationService\n */\n public setCategoryFilter(category: Category): void {\n this.selectedCategory = category;\n }\n\n /**\n * @description Get the category used for filtering previously.\n * @returns {Category} - The category filtered by previously.\n * @memberof LocationService\n */\n public getCategoryFilter(): Category {\n return this.selectedCategory;\n }\n\n /**\n * @description Clear the selectedCategory property.\n * @memberof LocationService\n */\n public clearCategoryFilter(): void {\n this.selectedCategory = null;\n }\n\n /**\n * @description Update the searchQuery property.\n * @param {string} query - The query used for filtering.\n * @memberof LocationService\n */\n public setQueryFilter(query: string): void {\n this.searchQuery = query;\n }\n\n /**\n * @description Get the query used for filtering previously.\n * @returns {string}\n * @memberof LocationService\n */\n public getQueryFilter(): string {\n return this.searchQuery;\n }\n\n /**\n * @description Clear the searchQuery property.\n * @memberof LocationService\n */\n public clearQueryFilter(): void {\n this.searchQuery = null;\n }\n // #endregion\n\n // #region || LOCATION SET\n /**\n * @description Set location observable.\n * @param {Location} location\n * @returns {Promise}\n */\n setLocation(location: Location): void {\n this.mapsIndoorsService.isMapDirty = true;\n\n const formatedLocation = this.formatLocation(location);\n this.selectedLocation.next(formatedLocation);\n\n // Remove previous highlight\n this.clearLocationPolygonHighlight();\n\n // Highlight polygon\n if (formatedLocation.geometry.type.toLowerCase() === 'polygon') {\n this.highlightLocationPolygon(formatedLocation.id);\n }\n\n // Don't update \"return to *\" btn if POI is outside selected venue\n if (this.venue && this.venue.name === formatedLocation.properties.venueId) {\n this.mapsIndoorsService.setLocationAsReturnToValue(formatedLocation, this.getAnchorCoordinates(formatedLocation));\n this.mapsIndoorsService.mapsIndoors.location = formatedLocation; // Used for a check for the \"Return to *\" button\n }\n\n const anchorPoint = this.getAnchorCoordinates(formatedLocation);\n\n // Fit location inside map view with specified padding\n const bounds = new google.maps.LatLngBounds(anchorPoint, anchorPoint);\n const padding = 200;\n this.googleMapService.map.panToBounds(bounds, padding);\n\n // Populate and open info window\n this.googleMapService.updateInfoWindow(formatedLocation.properties.name, anchorPoint);\n this.googleMapService.openInfoWindow();\n\n // Set floor\n this.mapsIndoorsService.setFloor(formatedLocation.properties.floor);\n this.mapsIndoorsService.showFloorSelector();\n }\n\n /**\n * Highlight a MapsIndoors Location Polygon. Only one polygon can be highlighted at a time.\n * @param {string} locationId\n * @returns {void}\n * @memberof LocationService\n */\n public highlightLocationPolygon(locationId: string): void {\n // DISCLAIMER: The fillColor, fillOpacity, strokeColor, strokeOpacity, and strokeWeight properties are not an official part of the Display Rules interface and may be subject to change without further notice\n this.mapsIndoorsService.mapsIndoors.setDisplayRule(locationId, {\n visible: true,\n zoomFrom: '0',\n zoomTo: '22',\n zIndex: 1000,\n fillColor: this.polygonHighlightOptions.fillColor,\n fillOpacity: this.polygonHighlightOptions.fillOpacity,\n strokeColor: this.polygonHighlightOptions.strokeColor,\n strokeOpacity: this.polygonHighlightOptions.strokeOpacity,\n strokeWeight: this.polygonHighlightOptions.strokeWeight\n });\n this.highlightedLocationId = locationId;\n }\n\n /**\n * Clear existing MapsIndoors location polygon highlight.\n * @memberof LocationService\n */\n public clearLocationPolygonHighlight(): void {\n if (this.highlightedLocationId) {\n this.mapsIndoorsService.mapsIndoors.setDisplayRule(this.highlightedLocationId, null);\n this.highlightedLocationId = null;\n }\n }\n\n /**\n * @description Get location formatted and fully populated with missing details.\n * @private\n * @param {Location} location\n * @returns {Location}\n */\n private formatLocation(location: Location): Location {\n // Check if the location has an image else set venue image\n if (!location.properties.imageURL || location.properties.imageURL.length <= 0) {\n const config = this.appConfig;\n for (const venueName in config.venueImages) {\n if (location.properties.venueId.toLowerCase() === venueName.toLowerCase()) {\n location.properties.imageURL = config.venueImages[location.properties.venueId.toLowerCase()];\n }\n }\n }\n\n // Adds http in front of any URL missing it\n if (location.properties.fields && location.properties.fields.website && location.properties.fields.website.value) {\n const pattern = /^https?:\\/\\//;\n if (!pattern.test(location.properties.fields.website.value)) {\n location.properties.fields.website.value = 'http://' + location.properties.fields.website.value;\n }\n }\n\n return location;\n }\n\n // #endregion\n\n // #region || LOCATION GET\n public getCurrentLocation(): Observable {\n return this.selectedLocation.asObservable();\n }\n\n // Get by ID\n /**\n * @description Get a location by it's id.\n * @param {string} locationId Id of the location.\n * @returns {(Promise)} Returns the location.\n * @memberof LocationService\n */\n public getLocationById(locationId: string): Promise {\n return new Promise((resolve, reject): void => {\n mapsindoors.services.LocationsService.getLocation(locationId)\n .then((location: Location): void => {\n location.properties.categories = Object.values(location.properties.categories);\n resolve(location);\n })\n .catch((err: Error): void => {\n err.message = this.translateService.instant('Error.IncorrectLocation') as string;\n reject(err);\n });\n });\n }\n\n /**\n * @description Get a location by it's external id.\n * @param {string} externalId - External id of the location.\n * @returns {Promise} - Resolves a location.\n * @memberof LocationService\n */\n public getLocationByExternalId(externalId: string): Promise {\n return new Promise((resolve, reject): void => {\n this.searchService.getLocations({ q: externalId, fields: 'externalId' })\n .then((locations: Location[]): void => {\n const location = locations.find((location: Location): boolean =>\n location.properties.externalId === externalId\n && location.properties.venue === this.venue.venueInfo.name\n );\n if (location) {\n resolve(location);\n } else {\n reject(new Error(this.translateService.instant('Error.IncorrectLocation') as string));\n }\n });\n });\n }\n // #endregion\n\n // #region || HELPERS\n\n /**\n * @description Get anchor point for location type polygon or point.\n * @param {Location} location\n * @returns {google.maps.LatLng} - The anchor point.\n * @memberof LocationService\n */\n public getAnchorCoordinates(location: BaseLocation): google.maps.LatLng {\n return location.geometry.type.toLowerCase() === 'point' ?\n new google.maps.LatLng(location.geometry.coordinates[1], location.geometry.coordinates[0]) :\n new google.maps.LatLng(location.properties.anchor.coordinates[1], location.properties.anchor.coordinates[0]);\n }\n // #endregion\n}\n","import { Injectable } from '@angular/core';\nimport { GoogleMapService } from './google-map.service';\nimport { AppConfigService } from './app-config.service';\nimport { Observable, BehaviorSubject, Subscription, Subject } from 'rxjs';\nimport { SolutionService } from './solution.service';\nimport { UserAgentService } from './user-agent.service';\nimport { TrackerService } from './tracker.service';\n\nimport { Venue } from '../shared/models/venue.interface';\nimport { Location } from '../shared/models/location.interface';\n\ndeclare const mapsindoors: any;\n\ninterface ReturnToValues {\n name: string,\n latLng: google.maps.LatLng,\n isVenue: boolean\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MapsIndoorsService {\n mapsIndoors: any;\n appConfig: any;\n isMapDirty: boolean = false;\n\n public floorSelectorIsVisible = false;\n private floorSelectorPosition: google.maps.ControlPosition;\n private floorSelectorListener;\n\n private isHandsetSubscription: Subscription;\n private pageTitle = new BehaviorSubject('');\n private returnToValues = new Subject();\n\n constructor(\n private solutionService: SolutionService,\n private googleMapService: GoogleMapService,\n private appConfigService: AppConfigService,\n private userAgentService: UserAgentService,\n private trackerService: TrackerService\n ) {\n this.appConfigService.getAppConfig()\n .subscribe((appConfig): void => this.appConfig = appConfig);\n }\n\n // #region || SET MAPS INDOORS\n initMapsIndoors(): Promise {\n return new Promise(async (resolve): Promise => {\n\n this.mapsIndoors = await new mapsindoors.MapsIndoors({\n mapView: this.googleMapService.googleMapView,\n labelOptions: {\n style: {\n color: 'rgba(82,82,82,1)',\n fontFamily: 'Open Sans',\n fontSize: '12px',\n fontWeight: 300,\n shadowBlur: 3,\n shadowColor: 'white'\n }\n }\n });\n\n this.mapsIndoors.setDisplayRule(['MI_BUILDING', 'MI_VENUE'], { visible: false });\n\n // Set tittle attribute for map POI's\n this.solutionService.getSolution()\n .then((solution): void => {\n for (const type of solution.types) {\n this.mapsIndoors.setDisplayRule(type.name, { title: '{{name}}' });\n }\n });\n\n // Add position control to the map and setup listeners on the user agent service.\n if (this.appConfig.appSettings.positioningDisabled !== '1') {\n const positionControlElement = document.createElement('div');\n this.userAgentService.positionControl = new mapsindoors.PositionControl(positionControlElement, { mapsIndoors: this.mapsIndoors, positionOptions: { enableHighAccuracy: false, maximumAge: 300000, timeout: 10000 } });\n this.googleMapService.map.controls[google.maps.ControlPosition.TOP_RIGHT].push(positionControlElement);\n\n this.userAgentService.positionControl.addListener('position_error', (error): void => {\n this.userAgentService.positionError(error);\n });\n\n this.userAgentService.positionControl.addListener('position_received', (position) => {\n this.userAgentService.positionReceived(position);\n });\n }\n\n // Hide Building Outline and FloorSelector if there are any 2.5D tiles available\n const buildingOutlineVisibleFrom: number = parseInt(this.appConfig.appSettings.buildingOutlineVisibleFrom);\n const floorSelectorVisibleFrom: number = parseInt(this.appConfig.appSettings.floorSelectorVisibleFrom);\n if (buildingOutlineVisibleFrom && floorSelectorVisibleFrom) {\n this.mapsIndoors.addListener('zoom_changed', (): void => {\n const mapsIndoorsZoomLevel: number = this.mapsIndoors.getZoom();\n // Building Outline\n mapsIndoorsZoomLevel >= buildingOutlineVisibleFrom ? this.showBuildingOutline() : this.mapsIndoors.setBuildingOutlineOptions({ visible: false });\n // Floor Selector\n mapsIndoorsZoomLevel >= floorSelectorVisibleFrom ? this.showFloorSelector() : this.hideFloorSelector();\n });\n } else this.showBuildingOutline();\n resolve();\n });\n }\n\n /**\n * Set and show building outline.\n */\n showBuildingOutline(): void {\n this.mapsIndoors.setBuildingOutlineOptions({\n visible: true,\n clickable: false,\n fillOpacity: 0,\n strokeColor: '#EF6CCE',\n strokeOpacity: 1,\n strokeWeight: 4\n });\n }\n // #endregion\n\n // #region || FLOOR SELECTOR\n showFloorSelectorAfterUserInteraction(): void {\n const mapElement = document.getElementById('gmap');\n const eventsToListenFor = ['touchmove', 'click', 'wheel']; // these are events we consider as user interactions with the map\n\n const userInteracted = (): void => {\n eventsToListenFor.forEach(event => mapElement.removeEventListener(event, userInteracted));\n\n if (!this.floorSelectorIsVisible) {\n this.showFloorSelector();\n }\n };\n\n eventsToListenFor.forEach(event => mapElement.addEventListener(event, userInteracted));\n }\n\n\n /**\n * @description Creates a new floor selector.\n * @memberof MapsIndoorsService\n */\n showFloorSelector(): void {\n const floorSelectorDiv = document.createElement('div');\n new mapsindoors.FloorSelector(floorSelectorDiv, this.mapsIndoors);\n\n this.isHandsetSubscription = this.userAgentService.isHandset()\n .subscribe((isHandset: boolean) => {\n if (this.floorSelectorIsVisible) {\n this.googleMapService.map.controls[this.floorSelectorPosition].clear();\n }\n\n this.floorSelectorPosition = isHandset ?\n google.maps.ControlPosition.LEFT_CENTER :\n google.maps.ControlPosition.RIGHT_CENTER;\n\n this.googleMapService.map.controls[this.floorSelectorPosition].push(floorSelectorDiv);\n this.floorSelectorIsVisible = true;\n });\n\n this.floorSelectorListener = this.trackFloorChange.bind(this);\n this.mapsIndoors.addListener('floor_changed', this.floorSelectorListener);\n }\n\n /**\n * @description Register floor change events on tracker service.\n */\n trackFloorChange(): void {\n this.trackerService.sendEvent('Floor selector', 'Floor was changed', `${this.mapsIndoors.getFloor()}th floor was set`, true);\n }\n\n /**\n * @description Removes the floor selector.\n * @memberof MapsIndoorsService\n */\n hideFloorSelector(): void {\n if (!this.floorSelectorIsVisible) {\n return;\n }\n\n this.googleMapService.map.controls[this.floorSelectorPosition].clear();\n this.floorSelectorIsVisible = false;\n this.mapsIndoors.removeListener('floor_changed', this.floorSelectorListener);\n this.isHandsetSubscription.unsubscribe();\n }\n\n /**\n * @description Sets the floor.\n * @param {string} floor - The new floor to be set.\n * @memberof MapsIndoorsService\n */\n setFloor(floor: string): void {\n if (this.mapsIndoors.getFloor() !== floor) {\n this.mapsIndoors.setFloor(floor);\n }\n }\n // #endregion\n\n // #region || RETURN\n /**\n * @description Set the values for return button.\n * @param {string} name\n * @param {google.maps.LatLng} latLng\n * @param {boolean} isVenue\n * @memberof MapsIndoorsService\n */\n private setReturnToValues(values: ReturnToValues): void {\n this.returnToValues.next(values);\n }\n\n /**\n * @description Sets the values for return to location button.\n * @param {Location} location – The selected location.\n * @memberof MapsIndoorsService\n */\n setLocationAsReturnToValue(location: Location, anchorCoordinates: google.maps.LatLng): void {\n const values: ReturnToValues = {\n name: location.properties.name,\n latLng: anchorCoordinates,\n isVenue: false\n };\n this.setReturnToValues(values);\n }\n\n /**\n * @description Sets the values for return to venue button.\n * @param {Venue} venue The selected venue.\n * @memberof MapsIndoorsService\n */\n setVenueAsReturnToValue(venue: Venue): void {\n const values: ReturnToValues = {\n name: venue.venueInfo.name,\n latLng: new google.maps.LatLng(venue.anchor.coordinates[0], venue.anchor.coordinates[1]),\n isVenue: true\n };\n this.setReturnToValues(values);\n }\n\n /**\n * @description Returning the selected item name, lat lng and isVenue boolean.\n * @returns The return to values needed for button.\n * @memberof MapsIndoorsService\n */\n getReturnToValues(): Observable {\n return this.returnToValues.asObservable();\n }\n // #endregion\n\n // #region || PAGE TITLE\n // Don't belong in here\n setPageTitle(title?: string): void {\n if (title) this.pageTitle.next(title);\n else if (this.appConfig.appSettings) this.pageTitle.next(this.appConfig.appSettings.title);\n }\n\n getCurrentPageTitle(): Observable {\n return this.pageTitle.asObservable();\n }\n // #endregion\n\n /**\n * @description Only show locations passed along.\n * @param {Location[]} locations - Locations to show on map.\n * @param {boolean} [fitView=false] - Fit all visible locations into view.\n * @memberof MapsIndoorsService\n */\n public setMapFilter(locations: Location[], fitView: boolean = false): void {\n const locationIds = locations.map((location: Location): string => location.id);\n this.mapsIndoors.filter(locationIds, fitView);\n }\n\n /**\n * @description Fallback to original state with all locations shown.\n * @param {boolean} [fitView=false] - Fit all visible locations into view.\n * @memberof MapsIndoorsService\n */\n public clearMapFilter(fitView: boolean = false): void {\n this.mapsIndoors.filter(null, fitView);\n }\n}","import { Injectable } from '@angular/core';\n\ndeclare const mapsindoors: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MiLiveDataService {\n\n private liveDataManager: any;\n\n constructor() { }\n\n /**\n * Enable live data on the map for all live data domain types.\n * @param mapsIndoorsInstance - The instance of the MapsIndoors.\n */\n enableAll(mapsIndoorsInstance): void {\n if (!this.liveDataManager) {\n this.liveDataManager = new mapsindoors.LiveDataManager(mapsIndoorsInstance);\n }\n\n this.liveDataManager.enableLiveData(mapsindoors.LiveDataManager.LiveDataDomainTypes.POSITION);\n this.liveDataManager.enableLiveData(mapsindoors.LiveDataManager.LiveDataDomainTypes.OCCUPANCY);\n this.liveDataManager.enableLiveData(mapsindoors.LiveDataManager.LiveDataDomainTypes.AVAILABILITY);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationService {\n\n constructor(\n\t\tpublic snackBar: MatSnackBar,\n\t\tprivate translateService: TranslateService\n ) { }\n\n /**\n * @description Show a snackbar with a message.\n * @param {string} value - The message to be shown.\n * @param {number} [duration] - How long the snackbar should be visible in milliseconds.\n * @memberof NotificationService\n */\n displayNotification(value: string, duration?: number): void {\n const milliseconds: number = duration ? duration : 4000;\n // Translating notification and opens snackBar with value\n this.translateService.get(value)\n .subscribe((notificationValue: string): void => {\n this.snackBar.open(notificationValue, '', {\n duration: milliseconds\n });\n });\n }\n}","import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RoutingStateService {\n private history: string[] = [];\n\n constructor(\n private router: Router\n ) { }\n\n /**\n * @description Subscribes to navigation end event and updates history variable.\n * @memberof RoutingStateService\n */\n public loadRouting(): void {\n this.router.events\n .pipe(filter((event): event is NavigationEnd => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd): void => {\n this.history = [...this.history, event.urlAfterRedirects];\n // History max-limit\n if (this.history.length > 20) {\n this.history.shift();\n }\n });\n }\n\n /**\n * @description Returns previous route if any otherwise fallbacks to venue-page.\n * @returns {string} The previous route URL.\n * @memberof RoutingStateService\n */\n public getPreviousUrl(): string {\n return this.history[this.history.length - 2];\n }\n}\n","import { AppConfigService } from './app-config.service';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { UserAgentService } from './../services/user-agent.service';\nimport { environment } from '../../environments/environment';\n\ndeclare let mapsindoors: any;\ndeclare let Oidc: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SolutionService {\n appConfig: any;\n googleMapsApiTag: HTMLElement;\n miSdkApiTag: HTMLElement;\n\n constructor(\n private router: Router,\n private appConfigService: AppConfigService,\n private userAgentService: UserAgentService\n ) {\n this.appConfigService.getAppConfig().subscribe((appConfig) => this.appConfig = appConfig);\n }\n\n // #region || SOLUTION PROVIDER\n initializeApp(solutionId): Promise {\n return new Promise(async (resolve, reject): Promise => {\n await this.insertGoogleMapsAPI();\n await this.insertMapsIndoorsJavaScriptSDK(solutionId);\n\n mapsindoors.MapsIndoors.onAuthRequired = this.initializeAuthenticationHandler(solutionId);\n\n try {\n await this.appConfigService.setAppConfig();\n await this.setSolution();\n resolve();\n } catch (e) {\n reject();\n }\n });\n }\n\n /**\n * Insert script tag for Google Maps API into the document and resolve when it is loaded.\n * @returns {Promise} Resolves when script is loaded\n */\n insertGoogleMapsAPI(): Promise {\n return new Promise((resolve): void => {\n if (this.googleMapsApiTag) {\n resolve();\n } else {\n this.googleMapsApiTag = document.createElement('script');\n this.googleMapsApiTag.setAttribute('type', 'text/javascript');\n this.googleMapsApiTag.setAttribute('src', '//maps.googleapis.com/maps/api/js?v=3&key=AIzaSyArLESFHB0c24Ky8hnMkp0UGPYczvFTSoQ&libraries=geometry,places');\n document.body.appendChild(this.googleMapsApiTag);\n this.googleMapsApiTag.onload = (): void => resolve();\n }\n });\n }\n\n /**\n * Insert script tag for MapsIndoors JavaScript SDK into the document and resolve when it is loaded.\n * @param solutionId {string} The MapsIndoors API key\n * @returns {Promise} Resolves when script is loaded\n */\n insertMapsIndoorsJavaScriptSDK(solutionId): Promise {\n return new Promise((resolve): void => {\n this.miSdkApiTag = document.createElement('script');\n this.miSdkApiTag.setAttribute('type', 'text/javascript');\n this.miSdkApiTag.setAttribute('src', `${environment.sdkUrl}?apikey=${solutionId}`);\n document.body.appendChild(this.miSdkApiTag);\n this.miSdkApiTag.onload = (): void => resolve();\n });\n }\n\n initializeAuthenticationHandler(solutionId): Function {\n return ({ authClients = [], authIssuer = '' }) => {\n const oidcScript = document.createElement('script');\n oidcScript.setAttribute('type', 'text/javascript');\n oidcScript.setAttribute('src', '//www.unpkg.com/oidc-client@^1/dist/oidc-client.rsa256.slim.min.js');\n oidcScript.onload = () => {\n const authClient = authClients[0];\n const preferredIDP = authClient.preferredIDPs && authClient.preferredIDPs.length > 0 ? authClient.preferredIDPs[0] : '';\n const acr_values = preferredIDP ? [`idp:${preferredIDP}`] : [];\n //Setup the Oidc client with the auth settings in the event details\n const client = new Oidc.OidcClient({\n authority: authIssuer,\n client_id: authClient.clientId,\n response_type: 'code',\n scope: 'openid profile account client-apis',\n redirect_uri: `${window.location.origin}/solution/set`,\n acr_values: acr_values,\n loadUserInfo: false\n });\n\n if (/[?|&|#]code=/.test(window.location.href)) {\n client.processSigninResponse().then((response) => {\n //Give the new authentication token to MapsIndoors:\n mapsindoors.MapsIndoors.setAuthToken(response.access_token);\n\n\n }).catch((err) => {\n //Handle authentication errors here:\n console.log(err);\n });\n } else {\n const origin_uri = client.settings.redirect_uri === `${window.location.origin}${window.location.pathname}` ? `/${solutionId}` : `${window.location.pathname}${window.location.search}${window.location.hash}`;\n client.createSigninRequest({ state: { origin_uri } }).then(req => {\n this.userAgentService.localStorage.setItem('mi:apiKey', solutionId);\n this.userAgentService.localStorage.setItem('mi:originUri', origin_uri);\n window.location.href = req.url;\n });\n }\n };\n\n document.body.appendChild(oidcScript);\n };\n }\n\n setSolution(): Promise {\n return new Promise((resolve) => {\n const gmKey: string = this.appConfig.appSettings.gmKey ? this.appConfig.appSettings.gmKey : 'AIzaSyArLESFHB0c24Ky8hnMkp0UGPYczvFTSoQ';\n const gaKey: string = this.appConfig.appSettings.gaKey ? this.appConfig.appSettings.gaKey : '408a4eec13de49b2adc4458f';\n\n // App Title\n const appTitle = document.getElementsByTagName('title')[0];\n appTitle.innerHTML = this.appConfig.appSettings.title || 'MapsIndoors';\n\n // Google Maps Key\n this.googleMapsApiTag.setAttribute('src', `//maps.googleapis.com/maps/api/js?v=3&key=${gmKey}&libraries=geometry,places`);\n\n // Google Analytics - Tag Manger\n const gaTmScript_tag = document.createElement('script');\n gaTmScript_tag.async;\n gaTmScript_tag.src = 'https://www.googletagmanager.com/gtag/js?id=UA-63919776-8';\n document.head.appendChild(gaTmScript_tag);\n\n const globalTagSingleKey = `window.dataLayer = window.dataLayer || [];\n function gtag() { dataLayer.push(arguments); }\n gtag('js', new Date());\n gtag('config', 'UA-63919776-8');`;\n\n const globalTagMultipleKeys = `window.dataLayer = window.dataLayer || [];\n function gtag() { dataLayer.push(arguments); }\n gtag('js', new Date());\n gtag('config', 'UA-63919776-8');\n gtag('config', '${gaKey}');`;\n\n // Google Analytics - Data Layer\n const gaDlScript_tag = document.createElement('script');\n gaDlScript_tag.innerHTML = !gaKey ? globalTagSingleKey : globalTagMultipleKeys;\n document.head.appendChild(gaDlScript_tag);\n\n const pageViewSingleKey = 'ga(\\'create\\', \\'UA-63919776-8\\', \\'auto\\'); ga(\\'send\\', \\'pageview\\');';\n const pageViewMultipleKeys = `ga('create', 'UA-63919776-8', 'auto');\n ga('create', '${gaKey}', 'auto', 'clientTracker');\n ga('send', 'pageview');\n ga('clientTracker.send', 'pageview');`;\n\n // Google Analytics - Page View\n const gaPvScript_tag = document.createElement('script');\n gaPvScript_tag.type = 'text/javascript';\n const keys: string = !gaKey ? pageViewSingleKey : pageViewMultipleKeys;\n gaPvScript_tag.innerHTML = `(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})\n (window,document,'script','//www.google-analytics.com/analytics.js','ga');` + keys;\n document.body.appendChild(gaPvScript_tag);\n\n resolve();\n });\n }\n //#endregion\n\n // #region || SOLUTION NAME\n getSolutionName(): String {\n return location.pathname.split('/')[1];\n }\n // #endregion\n\n // #region || GET SOLUTION\n /**\n * @description Get solution object.\n * @returns {Promise} - Solution object.\n * @memberof SolutionService\n */\n public getSolution(): Promise {\n return mapsindoors.services.SolutionsService.getSolution();\n }\n // #endregion\n\n // #region || GET SOLUTION ID\n /**\n * @description Get solution id.\n * @returns {Promise} - Solution Id.\n * @memberof SolutionService\n */\n public getSolutionId(): Promise {\n return new Promise((resolve, reject): void => {\n this.getSolution()\n .then(({ id }): void => {\n resolve(id);\n })\n .catch((err): void => {\n reject(err);\n });\n });\n }\n // #endregion\n\n // #region || GET USER ROLES\n /**\n * Gets a list of User Roles\n * @returns Array\n * @memberof SolutionService\n */\n getUserRoles(): Promise> {\n return mapsindoors.services.SolutionsService.getUserRoles();\n }\n // #endregion\n}\n","import { Injectable } from '@angular/core';\nimport { AppConfigService } from './app-config.service';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeService {\n appConfig: any;\n private appConfigColors = new BehaviorSubject({});\n\n constructor(\n private appConfigService: AppConfigService,\n ) {\n this.appConfigService.getAppConfig().subscribe((appConfig) => this.appConfig = appConfig);\n }\n\n // #region || SET THEME COLORS\n setColors() {\n return new Promise(async (resolve) => {\n const colors = {\n primary: await this.getColorAsHex(this.appConfig.appSettings.primaryColor) || '#2196F3',\n onPrimary: await this.getColorAsHex(this.appConfig.appSettings.primaryText) || '#ffffff',\n accent: await this.getColorAsHex(this.appConfig.appSettings.accentColor) || '#F44336',\n onAccent: await this.getColorAsHex(this.appConfig.appSettings.accentText) || '#ffffff'\n };\n this.appConfigColors.next(colors);\n resolve();\n });\n }\n\n // NOTE: Save for later use\n // hexToRGB(hex, alpha?) {\n // \tlet r = parseInt(hex.slice(1, 3), 16);\n // \tlet g = parseInt(hex.slice(3, 5), 16);\n // \tlet b = parseInt(hex.slice(5, 7), 16);\n // \tif (alpha) {\n // \t\treturn \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + alpha + \")\";\n // \t} else {\n // \t\treturn \"rgb(\" + r + \", \" + g + \", \" + b + \")\";\n // \t}\n // }\n\n /**\n *\n * @param {any} color The color that should be returned as a hex value.\n * @returns {any} Returns the given color as hex.\n */\n getColorAsHex(color) {\n if (!color) return;\n const hex = !color.includes('#') ? '#' + color : color;\n if (/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex)) return hex.toLowerCase();\n else return color;\n }\n // #endregion\n\n // #region || GET THEME COLORS\n getThemeColors() {\n return this.appConfigColors.asObservable();\n }\n // #endregion\n}\n","import { Injectable } from '@angular/core';\nimport { AppConfigService } from './app-config.service';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\ndeclare const ga: Function;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TrackerService {\n private clientTrackerId: string;\n\n constructor(\n private appConfigService: AppConfigService,\n private router: Router,\n ) {\n this.appConfigService.getAppConfig()\n .subscribe((appConfig): void => this.clientTrackerId = appConfig.appSettings.gaKey ? appConfig.appSettings.gaKey : '');\n this.sendPageViewEvents();\n }\n\n /**\n * @description Send a Google Analytics event.\n * @param {string} category - The event category, eg. \"Directions\".\n * @param {string} action - The event action, eg. \"Clicked \"Get Directions\".\n * @param {string} label - The event description, eg. \"\"{locationName}\" – {locationId}\".\n * @param {boolean} [internally=false] - \"True\" if the event only shall be used internally.\n * @memberof TrackerService\n */\n public sendEvent(category: string, action: string, label: string, internally: boolean = false): void {\n ga('send', {\n hitType: 'event',\n eventCategory: category,\n eventAction: action,\n eventLabel: label\n });\n\n if (!internally && this.clientTrackerId) {\n ga('clientTracker.send', {\n hitType: 'event',\n eventCategory: category,\n eventAction: action,\n eventLabel: label\n });\n }\n }\n\n /**\n * @description Send page view events to Google Analytics.\n * @private\n * @memberof TrackerService\n */\n private sendPageViewEvents(): void {\n this.router.events\n .pipe(filter((event): event is NavigationEnd => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd): void => {\n ga('set', 'page', event.urlAfterRedirects);\n ga('send', 'pageview');\n if (this.clientTrackerId) {\n ga('clientTracker.send', 'pageview');\n }\n });\n }\n\n}","/* global google */\nimport { Injectable } from '@angular/core';\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { BehaviorSubject, ReplaySubject, Observable } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NotificationService } from './notification.service';\nimport { storageFactory } from 'storage-factory';\n\ndeclare const mapsindoors: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserAgentService {\n\n private isIe: boolean;\n private isDeviceHandset = new BehaviorSubject(false);\n private currentPosition = new ReplaySubject(1);\n private positionErrorSubject = new ReplaySubject(1);\n public positionControl;\n public localStorage;\n public sessionStorage;\n private positionErrorShown = false;\n private positionAutoPanned = false;\n\n constructor(\n private breakpointObserver: BreakpointObserver,\n private translateService: TranslateService,\n private notificationService: NotificationService\n ) {\n this.isIe = (navigator.userAgent.match(/Trident/g) || navigator.userAgent.match(/MSIE/g)) ? true : false;\n this.breakpointObserver\n .observe(['(min-width: 600px)'])\n .subscribe((state: BreakpointState) => this.isDeviceHandset.next(state.matches ? false : true));\n\n this.localStorage = storageFactory(() => localStorage);\n }\n\n /**\n * @description Returns a boolean based on user agent.\n * @returns {Boolean} Returns true if IE otherwise false.\n */\n IsInternetExplorer(): boolean {\n return this.isIe;\n }\n\n /**\n * @description Returns a boolean based on browser with.\n * @returns {Observable} Returns true if browser with hits 600px or less.\n */\n isHandset(): Observable {\n return this.isDeviceHandset.asObservable();\n }\n\n /**\n * Fired when position control reports a position error.\n * 1-3: GeolocationError code.\n * 10: Geolocation not available.\n * 11: Inaccurate position.\n * Will show a notification on the first receival if error is not about inaccuracy (this is handled elsewhere)\n */\n public positionError(error): void {\n this.positionErrorSubject.next(error);\n if (!this.positionErrorShown && error.code !== 11) { // 11: Inaccurate position\n this.notificationService.displayNotification(this.translateService.instant('Error.NoPosition'));\n this.positionErrorShown = true;\n }\n }\n\n /**\n * Fired when position control recevied a position.\n * Pans map to current position if requirements are met, and updates currentPosition.\n * @param eventPayload Object\n */\n public positionReceived(eventPayload): void {\n if (!this.positionAutoPanned && eventPayload.selfInvoked === true) {\n if (eventPayload.accurate === true) {\n this.positionControl.panToCurrentPosition();\n } else {\n this.notificationService.displayNotification(this.translateService.instant('Error.NoPosition'));\n }\n this.positionAutoPanned = true;\n }\n this.currentPosition.next(eventPayload.position);\n }\n\n /**\n * @description Uses the device position to determinate where the user are.\n * @returns {Promise} Gets and return the current position of the device.\n * @memberof UserAgentService\n */\n public getCurrentPosition(): Promise<{}> {\n return new Promise((resolve, reject): void => {\n if (this.positionControl.currentPosition) {\n resolve(this.positionControl.currentPosition);\n return;\n }\n\n this.positionControl.watchPosition();\n this.currentPosition.subscribe((position): void => {\n resolve(position);\n });\n\n this.positionErrorSubject.subscribe((error): void => {\n reject(error);\n });\n });\n }\n\n /**\n * Pans to current position if:\n * a) there is a valid and accurate position\n * b) the position is within given bounds\n *\n * @param bounds google.maps.LatLngBounds\n */\n public panToPositionIfWithinBounds(bounds: google.maps.LatLngBounds): void {\n if (this.positionControl && this.positionControl.hasValidPosition() && this.positionControl.positionState !== mapsindoors.PositionState.POSITION_INACCURATE) {\n const posLatLng = new google.maps.LatLng({ lat: this.positionControl.currentPosition.coords.latitude, lng: this.positionControl.currentPosition.coords.longitude });\n if (bounds.contains(posLatLng)) {\n this.positionControl.panToCurrentPosition();\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AppConfigService } from './app-config.service';\nimport { MapsIndoorsService } from '../services/maps-indoors.service';\nimport { GoogleMapService } from '../services/google-map.service';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { Venue } from '../shared/models/venue.interface';\n\ndeclare const mapsindoors: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VenueService {\n\n miVenueService = mapsindoors.services.VenuesService;\n appConfig: any;\n venue: Venue;\n venuesLength: number;\n favouredVenue: boolean;\n fitVenues: boolean = true;\n returnBtnActive: boolean = true;\n\n private venueObservable = new ReplaySubject(1);\n\n constructor(\n private appConfigService: AppConfigService,\n private mapsIndoorsService: MapsIndoorsService,\n private googleMapService: GoogleMapService,\n ) {\n this.appConfigService.getAppConfig().subscribe((appConfig) => this.appConfig = appConfig);\n }\n\n // #region || GET ALL VENUES\n /**\n * @description - Get all venues.\n * @returns {Promise} Returns an array of venue objects.\n * @memberof VenueService\n */\n getVenues(): Promise {\n return new Promise((resolve, reject): void => {\n this.miVenueService.getVenues()\n .then((venues: Venue[]): void => {\n for (const venue of venues) {\n venue.image = this.appConfig.venueImages[venue.name.toLowerCase()];\n }\n resolve(venues);\n })\n .catch((err): void => {\n reject(err);\n });\n });\n\n\n }\n // #endregion\n\n getVenueObservable(): Observable {\n return this.venueObservable.asObservable();\n }\n // #region || GET VENUE BY ID\n /**\n * @description Get a venue by it's id.\n * @param {string} venueId\n * @returns {Promise} Promise resolves a Venue.\n * @memberof VenueService\n */\n getVenueById(venueId: string): Promise {\n return this.miVenueService.getVenue(venueId);\n }\n // #endregion\n\n // #region || SET VENUE\n /**\n * @description Set venue and populate it with an image.\n * @param {Venue} venue The venue object.\n * @param appConfig The configurations for current solution.\n * @returns {Promise}\n * @memberof VenueService\n */\n setVenue(venue, appConfig, fitVenue = true): Promise {\n return new Promise((resolve): void => {\n venue.anchor.center = [].concat(venue.anchor.coordinates).reverse();\n\n for (const venueName in appConfig.venueImages) {\n if (venue.name.toLowerCase() === venueName) {\n venue.image = appConfig.venueImages[venue.name.toLowerCase()];\n }\n }\n // Used for return to \"something\" button\n this.mapsIndoorsService.setVenueAsReturnToValue(venue);\n this.returnBtnActive = true;\n this.favouredVenue = true;\n this.mapsIndoorsService.mapsIndoors.setVenue(venue);\n if (fitVenue) {\n // TODO: Figure out timing issue here when using fitVenue when starting app. For now manually fit to venue bounds.\n this.googleMapService.map.fitBounds(new google.maps.LatLngBounds({ lat: venue.geometry.bbox[1], lng: venue.geometry.bbox[0] }, { lat: venue.geometry.bbox[3], lng: venue.geometry.bbox[2] }));\n // this.mapsIndoorsService.mapsIndoors.fitVenue(venue.id);\n }\n\n Promise.all([\n this.getVenueBoundingBox(venue),\n this.miVenueService.getVenues()\n ]).then(([boundingBox, venues]): void => {\n venue.boundingBox = boundingBox;\n venue.onlyVenue = venues.length === 1 ? true : false;\n\n this.venue = venue;\n this.venueObservable.next(venue);\n resolve();\n });\n });\n }\n\n /**\n * @param {Venue} venue The current venue.\n * @returns {Promise} Bounding box for venue.\n * @memberof VenueService\n */\n private getVenueBoundingBox(venue: Venue) {\n return new Promise((resolve) => {\n const bounds = {\n east: -180,\n north: -90,\n south: 90,\n west: 180\n };\n venue.geometry.coordinates.reduce((bounds, ring: any) => {\n ring.reduce((bounds, coords) => {\n bounds.east = coords[0] >= bounds.east ? coords[0] : bounds.east;\n bounds.west = coords[0] <= bounds.west ? coords[0] : bounds.west;\n bounds.north = coords[1] >= bounds.north ? coords[1] : bounds.north;\n bounds.south = coords[1] <= bounds.south ? coords[1] : bounds.south;\n return bounds;\n }, bounds);\n return bounds;\n }, bounds);\n resolve(bounds);\n });\n }\n // #endregion\n\n // #region || GET BUILDING BY ID\n async getBuildingById(buildingId) {\n const buildingRequest = this.miVenueService.getBuilding(buildingId);\n const building = await buildingRequest;\n return building;\n }\n // #endregion\n}\n\n","module.exports = \"\\n\\t\\n\\t\\t\\n\\t\\n\\t{{ 'SetSolution.Title' | translate }}\\n\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t{{ 'SetSolution.SubmitError' | translate }}\\n\\t\\t\\t\\t{{ 'SetSolution.InitError' | translate }}\\n\\t\\t\\t\\n\\t\\t\\n\\t\\t\\n\\t\\t\\t{{ 'SetSolution.Go' | translate }}\\n\\t\\t\\n\\t\\n\\n\"","module.exports = \".set-solution {\\n max-width: 400px;\\n margin: auto; }\\n .set-solution__branding {\\n width: 180px;\\n padding: 20px 0 10px 0;\\n margin-bottom: 15px;\\n border-bottom: 3px solid #DDD; }\\n .set-solution__logo {\\n width: 100px; }\\n .set-solution__heading {\\n font-size: 30px;\\n font-weight: 700;\\n margin-bottom: 1.5rem; }\\n .set-solution__input, .set-solution__button {\\n width: 100%;\\n height: 40px;\\n font-size: 16px;\\n border-radius: 4px; }\\n .set-solution__input:focus, .set-solution__button:focus {\\n outline-width: 0; }\\n .set-solution__input {\\n padding: 0 16px;\\n border: 1px solid rgba(0, 0, 0, 0.35);\\n color: rgba(0, 0, 0, 0.88);\\n background-color: white;\\n letter-spacing: .02em;\\n text-rendering: geometricPrecision;\\n box-sizing: border-box; }\\n .set-solution__input::-moz-placeholder {\\n color: rgba(0, 0, 0, 0.35);\\n text-rendering: geometricPrecision; }\\n .set-solution__input:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.35);\\n text-rendering: geometricPrecision; }\\n .set-solution__input::placeholder {\\n color: rgba(0, 0, 0, 0.35);\\n text-rendering: geometricPrecision; }\\n .set-solution__input--with-error {\\n border: 1px solid red;\\n color: red; }\\n .set-solution__button {\\n background-color: #39ae54;\\n color: white;\\n border: none; }\\n .set-solution__error {\\n display: block;\\n height: 1.5rem;\\n color: red;\\n font-size: 12px;\\n padding: .25rem 0 0 16px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2V0LXNvbHV0aW9uL0U6XFxDYW1wdXNtYXBzQnVpbGQvc3JjXFxhcHBcXHNldC1zb2x1dGlvblxcc2V0LXNvbHV0aW9uLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0MsZ0JBQWdCO0VBQ2hCLFlBQVksRUFBQTtFQUVaO0lBQ0MsWUFBWTtJQUNaLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsNkJBQTZCLEVBQUE7RUFHOUI7SUFDQyxZQUFZLEVBQUE7RUFHYjtJQUNDLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIscUJBQXFCLEVBQUE7RUFHdEI7SUFDQyxXQUFXO0lBQ1gsWUFBWTtJQUNaLGVBQWU7SUFDZixrQkFBa0IsRUFBQTtFQUpsQjtNQU1DLGdCQUFnQixFQUFBO0VBSWxCO0lBQ0MsZUFBZTtJQUNmLHFDQUFvQztJQUNwQywwQkFBeUI7SUFDekIsdUJBQXdDO0lBQ3hDLHFCQUFxQjtJQUNyQixrQ0FBa0M7SUFDbEMsc0JBQXNCLEVBQUE7RUFQdEI7TUFTQywwQkFBeUI7TUFDekIsa0NBQWtDLEVBQUE7RUFWbkM7TUFTQywwQkFBeUI7TUFDekIsa0NBQWtDLEVBQUE7RUFWbkM7TUFTQywwQkFBeUI7TUFDekIsa0NBQWtDLEVBQUE7RUFHbkM7TUFDQyxxQkFBcUI7TUFDckIsVUFBVSxFQUFBO0VBSVo7SUFDQyx5QkFBa0M7SUFDbEMsWUFBWTtJQUNaLFlBQVksRUFBQTtFQUdiO0lBQ0MsY0FBYztJQUNkLGNBQWM7SUFDZCxVQUFVO0lBQ1YsZUFBZTtJQUNmLHdCQUF3QixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2V0LXNvbHV0aW9uL3NldC1zb2x1dGlvbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5zZXQtc29sdXRpb24ge1xuXHRtYXgtd2lkdGg6IDQwMHB4O1xuXHRtYXJnaW46IGF1dG87XG5cblx0Jl9fYnJhbmRpbmcge1xuXHRcdHdpZHRoOiAxODBweDtcblx0XHRwYWRkaW5nOiAyMHB4IDAgMTBweCAwO1xuXHRcdG1hcmdpbi1ib3R0b206IDE1cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICNEREQ7XG5cdH1cblxuXHQmX19sb2dvIHtcblx0XHR3aWR0aDogMTAwcHg7XG5cdH1cblxuXHQmX19oZWFkaW5nIHtcblx0XHRmb250LXNpemU6IDMwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdH1cblxuXHQmX19pbnB1dCwgJl9fYnV0dG9uIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDQwcHg7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDRweDtcblx0XHQmOmZvY3VzIHtcblx0XHRcdG91dGxpbmUtd2lkdGg6IDA7IC8vIFJlbW92ZSBibHVlIGJvcmRlciBpbiBjaHJvbWVcblx0XHR9XG5cdH1cblxuXHQmX19pbnB1dCB7XG5cdFx0cGFkZGluZzogMCAxNnB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjM1KTtcblx0XHRjb2xvcjogcmdiYSgwLCAwLCAwLCAuODgpO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IC4wMmVtO1xuXHRcdHRleHQtcmVuZGVyaW5nOiBnZW9tZXRyaWNQcmVjaXNpb247XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHQmOjpwbGFjZWhvbGRlciB7XG5cdFx0XHRjb2xvcjogcmdiYSgwLCAwLCAwLCAuMzUpO1xuXHRcdFx0dGV4dC1yZW5kZXJpbmc6IGdlb21ldHJpY1ByZWNpc2lvbjtcblx0XHR9XG5cblx0XHQmLS13aXRoLWVycm9yIHtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcblx0XHRcdGNvbG9yOiByZWQ7XG5cdFx0fVxuXHR9XG5cblx0Jl9fYnV0dG9uIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNTcsIDE3NCwgODQpO1xuXHRcdGNvbG9yOiB3aGl0ZTtcblx0XHRib3JkZXI6IG5vbmU7XG5cdH1cblxuXHQmX19lcnJvciB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0aGVpZ2h0OiAxLjVyZW07XG5cdFx0Y29sb3I6IHJlZDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0cGFkZGluZzogLjI1cmVtIDAgMCAxNnB4O1xuXHR9XG59Il19 */\"","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { UserAgentService } from './../services/user-agent.service';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'app-set-solution',\n templateUrl: './set-solution.component.html',\n styleUrls: ['./set-solution.component.scss']\n})\nexport class SetSolutionComponent {\n public isInternetExplorer: boolean;\n public solutionId: string = '';\n public submitError: boolean = false;\n public initError: boolean = false;\n\n constructor(\n public router: Router,\n public userAgentService: UserAgentService,\n ) {\n this.isInternetExplorer = this.userAgentService.IsInternetExplorer();\n const originUri = this.userAgentService.localStorage.getItem('mi:originUri');\n // If there is a \"guard\" property in the extras object, it means that the solution guard prevented access.\n const currNav = this.router.getCurrentNavigation();\n if (currNav.extras.state && currNav.extras.state.guard) {\n this.initError = true;\n return;\n }\n\n // Set a suggested solutionId to help users get started.\n this.solutionId = this.userAgentService.localStorage.getItem('MI:suggestedSolutionId') || environment.suggestedSolutionId;\n\n //If the app is loaded after a login redirect read the apiKey from the query paramters and navigate to that solution.\n if (originUri > '') {\n this.router.navigate([originUri], { queryParamsHandling: 'preserve' }).then(success => {\n\n if (!success) {\n this.submitError = true;\n }\n\n const originUri = this.userAgentService.localStorage.getItem('mi:originUri');\n window.history.replaceState(null, null, originUri);\n this.userAgentService.localStorage.removeItem('mi:apiKey');\n this.userAgentService.localStorage.removeItem('mi:originUri');\n });\n }\n }\n\n /**\n * Attempt navigating to the requested solution when submitting form.\n */\n onSubmit(): void {\n this.router.navigate([this.solutionId]).then(success => {\n if (!success) {\n this.submitError = true;\n }\n });\n }\n\n /**\n * Whenever input field content changes, clear all errors to avoid confusing users.\n */\n inputChanged(): void {\n this.submitError = false;\n this.initError = false;\n }\n}\n","module.exports = \"\\n\\t\\n\\n\"","module.exports = \".setup {\\n background-image: url(\\\"/assets/images/green-tiles.svg\\\");\\n background-size: cover;\\n height: 100%;\\n display: flex;\\n justify-content: center;\\n align-items: center; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2V0dXAvRTpcXENhbXB1c21hcHNCdWlsZC9zcmNcXGFwcFxcc2V0dXBcXHNldHVwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0MsdURBQXVEO0VBQ3ZELHNCQUFzQjtFQUN0QixZQUFZO0VBQ1osYUFBYTtFQUNiLHVCQUF1QjtFQUN2QixtQkFBbUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NldHVwL3NldHVwLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNldHVwIHtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCcvYXNzZXRzL2ltYWdlcy9ncmVlbi10aWxlcy5zdmcnKTtcblx0YmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcblx0aGVpZ2h0OiAxMDAlO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbiJdfQ== */\"","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-setup',\n templateUrl: './setup.component.html',\n styleUrls: ['./setup.component.scss']\n})\nexport class SetupComponent {}\n","module.exports = \"\\n\\t\\n\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\t\\n\"","module.exports = \".static-image-wrap {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n color: white; }\\n .static-image-wrap img {\\n width: 100%;\\n height: 100%;\\n -o-object-fit: cover;\\n object-fit: cover; }\\n .static-image-wrap .icon-wrap {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n display: flex;\\n justify-content: center;\\n align-items: center; }\\n .static-image-wrap .icon-wrap .icon {\\n width: auto;\\n height: auto;\\n fill: rgba(255, 255, 255, 0.8);\\n filter: drop-shadow(0 0 10px rgba(0, 0, 0, 0.8));\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n transition: all 0.3s ease; }\\n .static-image-wrap .icon-wrap .icon svg {\\n fill: inherit;\\n width: 100px; }\\n .static-image-wrap .icon-wrap .icon:hover {\\n cursor: pointer;\\n fill: white; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbG9jYXRpb24taW1nL0U6XFxDYW1wdXNtYXBzQnVpbGQvc3JjXFxhcHBcXHNoYXJlZFxcY29tcG9uZW50c1xcbG9jYXRpb24taW1nXFxsb2NhdGlvbi1pbWcuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxXQUFXO0VBQ1gsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixZQUFZLEVBQUE7RUFKaEI7SUFPUSxXQUFXO0lBQ1gsWUFBWTtJQUNaLG9CQUFpQjtPQUFqQixpQkFBaUIsRUFBQTtFQVR6QjtJQWFRLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsWUFBWTtJQUNaLE9BQU87SUFDUCxNQUFNO0lBQ04sYUFBYTtJQUNiLHVCQUF1QjtJQUN2QixtQkFBbUIsRUFBQTtFQXBCM0I7TUF1QlksV0FBVztNQUNYLFlBQVk7TUFDWiw4QkFBOEI7TUFDOUIsZ0RBQWdEO01BQ2hELHlCQUFpQjtTQUFqQixzQkFBaUI7VUFBakIscUJBQWlCO2NBQWpCLGlCQUFpQjtNQUNqQix5QkFBeUIsRUFBQTtFQTVCckM7UUErQmdCLGFBQWE7UUFDYixZQUFZLEVBQUE7RUFoQzVCO1FBb0NnQixlQUFlO1FBQ2YsV0FBNEIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2xvY2F0aW9uLWltZy9sb2NhdGlvbi1pbWcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc3RhdGljLWltYWdlLXdyYXAge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY29sb3I6IHdoaXRlO1xuXG4gICAgaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgfVxuXG4gICAgLmljb24td3JhcCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIGZpbGw6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICAgICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjgpKTsgLy8gTm90IHN1cHBvcnRlZCBmb3IgSUUgMTFcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBmaWxsOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIGZpbGw6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0= */\"","import { Component, Input, OnChanges } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, Subscription } from 'rxjs';\nimport { LocationService } from 'src/app/services/location.service';\nimport { Location } from '../../models/location.interface';\n\ndeclare const mapsindoors: any;\n\n@Component({\n selector: 'location-img',\n templateUrl: './location-img.component.html',\n styleUrls: ['./location-img.component.scss']\n})\nexport class LocationImgComponent implements OnChanges {\n @Input() imageURL: string;\n @Input() streetViewConfig: any;\n @Input() apiKey: string;\n\n private subscriptions = new Subscription();\n private locationFloorIndex: string;\n\n image: string;\n panorama: google.maps.StreetViewPanorama;\n minimap: google.maps.Map;\n\n constructor(\n private http: HttpClient,\n private locationService: LocationService,\n ) {\n this.subscriptions\n .add(this.locationService.getCurrentLocation()\n .subscribe((location: Location) => this.locationFloorIndex = location.properties.floor)\n );\n }\n\n /**\n * Populate image variable with Street View if available otherwise use the standard imageURL\n */\n ngOnChanges(): void {\n if (this.streetViewConfig) {\n const parameters: string = `size=456x300&pano=${this.streetViewConfig.panoramaId}&heading=${this.streetViewConfig.povHeading}&pitch=${this.streetViewConfig.povPitch}&key=${this.apiKey}`;\n this.checkAvailability(parameters)\n .subscribe((complete: any): void => {\n if (complete.status === 'OK') {\n this.image = 'https://maps.googleapis.com/maps/api/streetview?' + parameters;\n } else this.useStaticImage();\n });\n } else this.useStaticImage();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n /**\n * Determine if street view imagery is available for given parameters\n * @param {string} parameters\tThe Street View Id, POV and API Key\n */\n checkAvailability(parameters: string): Observable {\n return this.http.get('https://maps.googleapis.com/maps/api/streetview/metadata?' + parameters);\n }\n\n /**\n * Sets the image URL\n */\n useStaticImage(): void {\n this.image = this.imageURL;\n }\n\n /**\n * Opens a new full size window showing the panorama image\n */\n initStreetView(): void {\n // Street View container\n const streetViewDiv: HTMLElement = document.createElement('div');\n streetViewDiv.id = 'panorama';\n streetViewDiv.style.width = '100vw';\n streetViewDiv.style.height = '100vh';\n streetViewDiv.style.position = 'absolute';\n streetViewDiv.style.top = '0';\n document.body.appendChild(streetViewDiv);\n\n // Street View configurations\n this.panorama = new google.maps.StreetViewPanorama(\n document.getElementById('panorama'),\n {\n pano: this.streetViewConfig.panoramaId,\n pov: {\n heading: this.streetViewConfig.povHeading,\n pitch: this.streetViewConfig.povPitch\n },\n zoom: 0,\n addressControl: false,\n enableCloseButton: false,\n fullscreenControl: false,\n visible: true\n });\n\n // Load minimap when panorama is ready\n this.panorama.addListener('position_changed', async (): Promise => {\n const position: google.maps.LatLng = await this.panorama.getPosition();\n const breakpoint: string = '(min-width: 600px)';\n if (!document.getElementById('mimiMap') && window.matchMedia(breakpoint).matches) {\n this.initMinimap(position, this.locationFloorIndex);\n }\n if (window.matchMedia(breakpoint).matches) this.centerPegMan(position);\n });\n\n // Gets fired when PegMan is dragged outside the miniMap\n this.panorama.addListener('visible_changed', (): void => this.closeStreetView(streetViewDiv));\n\n // Create Close button\n this.createCloseButton(streetViewDiv);\n }\n\n /**\n * Creates a button element with a onClick event that removes the Street View container element\n * @param {HTMLElement} streetViewDiv\tThe Street View container element\n */\n createCloseButton(streetViewDiv: HTMLElement): void {\n const closeBtn: HTMLButtonElement = document.createElement('button');\n closeBtn.className = 'mat-icon-button';\n closeBtn.style.marginTop = '13px';\n closeBtn.style.marginRight = '16px';\n closeBtn.onclick = (): void => {\n this.closeStreetView(streetViewDiv);\n };\n\n const closeIcon: HTMLElement = document.createElement('mat-icon');\n closeIcon.textContent = 'close';\n closeIcon.className = 'mat-icon material-icons mat-icon-no-color';\n closeIcon.setAttribute('aria-label', 'close');\n closeIcon.style.color = 'white';\n closeIcon.style.paddingTop = '8px';\n closeBtn.appendChild(closeIcon);\n\n this.panorama.controls[google.maps.ControlPosition.TOP_RIGHT].push(closeBtn);\n }\n\n /**\n * Removes the Street View window, all children's and listeners\n * @param {HTMLElement} streetViewDiv\tThe Street View container element\n */\n closeStreetView(streetViewDiv: HTMLElement): void {\n streetViewDiv.parentNode.removeChild(streetViewDiv);\n }\n\n /**\n * Inits a mini map\n * @param {google.maps.LatLng} position\tThe Street View panorama position\n */\n initMinimap(position: google.maps.LatLng, floorIndex: string): void {\n // MiniMap container\n const miniMapDiv = document.createElement('div');\n miniMapDiv.id = 'mimiMap';\n miniMapDiv.style.marginTop = '8px';\n miniMapDiv.style.marginLeft = '8px';\n miniMapDiv.style.width = '180px';\n miniMapDiv.style.height = '180px';\n miniMapDiv.style.transition = 'all .3s ease';\n\n miniMapDiv.onmouseenter = (): void => {\n miniMapDiv.style.width = '280px';\n miniMapDiv.style.height = '280px';\n };\n\n miniMapDiv.onmouseleave = (): void => {\n miniMapDiv.style.width = '180px';\n miniMapDiv.style.height = '180px';\n };\n\n const mapViewOptions = {\n element: miniMapDiv,\n disableDefaultUI: true,\n center: position,\n zoom: 19,\n streetViewControl: true,\n draggable: false,\n };\n const mapViewInstance = new mapsindoors.mapView.GoogleMapsView(mapViewOptions);\n this.minimap = mapViewInstance.getMap();\n\n const mapsIndoorsInstance = new mapsindoors.MapsIndoors({ mapView: mapViewInstance });\n mapsIndoorsInstance.on('ready', (): void => {\n mapsIndoorsInstance.setFloor(floorIndex);\n this.panorama.controls[google.maps.ControlPosition.LEFT_TOP].push(miniMapDiv);\n // Set PegMan\n this.minimap.setStreetView(this.panorama);\n });\n }\n\n /**\n * Centering PegMan with given position\n * @param {google.maps.LatLng} position\tPosition for the current shown panorama image\n */\n centerPegMan(position: google.maps.LatLng): void {\n this.minimap.panTo(position);\n }\n}\n","export enum UnitSystem {\n Imperial = 'imperial',\n Metric = 'metric'\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, Router, NavigationExtras } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { SolutionService } from './services/solution.service';\nimport { UserAgentService } from './services/user-agent.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SolutionGuard implements CanActivate {\n\n constructor(\n private solutionService: SolutionService,\n private userAgentService: UserAgentService,\n private router: Router\n ) { }\n\n canActivate(\n next: ActivatedRouteSnapshot\n ): Observable | Promise | boolean {\n return new Promise((resolve) => {\n this.solutionService.initializeApp(next.params.solutionName)\n .then(() => {\n this.userAgentService.localStorage.setItem('MI:suggestedSolutionId', next.params.solutionName);\n resolve(true);\n })\n .catch(() => {\n const navigationExtras: NavigationExtras = {\n state: {\n guard: true\n }\n };\n this.router.navigate(['/solution/set'], navigationExtras);\n resolve(false);\n });\n });\n }\n}\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3ZlbnVlcy92ZW51ZXMuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { NotificationService } from '../services/notification.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SolutionService } from '../services/solution.service';\nimport { AppConfigService } from '../services/app-config.service';\nimport { VenueService } from '../services/venue.service';\nimport { GoogleMapService } from '../services/google-map.service';\nimport { Router } from '@angular/router';\nimport { MapsIndoorsService } from '../services/maps-indoors.service';\nimport { ThemeService } from '../services/theme.service';\nimport { Subscription } from 'rxjs';\nimport { TrackerService } from '../services/tracker.service';\nimport { UserAgentService } from '../services/user-agent.service';\n\nimport { Venue } from '../shared/models/venue.interface';\n\ndeclare const ga: Function;\ndeclare const mapsindoors: any;\n\n@Component({\n selector: 'venue-list',\n templateUrl: './venues.component.html',\n styleUrls: ['./venues.component.scss']\n})\nexport class VenuesComponent implements OnInit, OnDestroy {\n colors: any;\n venues: any[] = [];\n appConfig: any;\n solutionId: string;\n themeServiceSubscription: Subscription;\n appConfigSubscription: Subscription;\n\n constructor(\n private router: Router,\n private notificationService: NotificationService,\n private translateService: TranslateService,\n private solutionService: SolutionService,\n private appConfigService: AppConfigService,\n private themeService: ThemeService,\n private venueService: VenueService,\n private mapsIndoorsService: MapsIndoorsService,\n private googleMapService: GoogleMapService,\n private trackerService: TrackerService,\n private userAgentService: UserAgentService\n ) {\n this.appConfigSubscription = this.appConfigService.getAppConfig().subscribe((appConfig) => this.appConfig = appConfig);\n this.themeServiceSubscription = this.themeService.getThemeColors().subscribe((appConfigColors) => this.colors = appConfigColors);\n }\n\n ngOnInit(): void {\n this.getPreviousVenue();\n }\n\n // #region || GET PREVIOUS VENUE\n /**\n * @description Auto select previous visited venue if any\n * @returns {Promise}\n */\n getPreviousVenue(): void {\n this.solutionService.getSolutionId()\n .then(async (id: string) => {\n this.solutionId = id;\n const storedSolution = JSON.parse(this.userAgentService.localStorage.getItem('MI:' + this.solutionId));\n if (storedSolution && storedSolution.lastVenue) {\n const venue = await this.venueService.getVenueById(storedSolution.lastVenue);\n this.setVenue(venue);\n } else {\n this.mapsIndoorsService.setPageTitle();\n this.getVenues();\n }\n })\n .catch(() => {\n this.notificationService.displayNotification(\n this.translateService.instant('SetSolution.InitError')\n );\n });\n }\n // #endregion\n\n // #region || GET ALL VENUES\n getVenues(): void {\n this.venueService.getVenues()\n .then((venues: Venue[]): void => {\n // Set Venue and navigate to search page if solution only have one venue\n if (venues && venues.length === 1) {\n this.setVenue(venues[0]);\n } else if (this.venueService.fitVenues) {\n this.fitVenuesInView(venues);\n }\n this.venues = venues;\n });\n }\n\n private async fitVenuesInView(venues): Promise {\n // If the solution have multiple venues fit them all inside bbox\n let bounds = new google.maps.LatLngBounds();\n if (this.appConfig.appSettings && !this.appConfig.appSettings.defaultVenue) {\n if (venues && venues.length !== 0) {\n for (const venue of venues) {\n for (const coordinates of venue.geometry.coordinates) {\n for (const coordinate of coordinates) {\n bounds.extend({ lat: coordinate[1], lng: coordinate[0] });\n }\n }\n }\n }\n this.googleMapService.map.fitBounds(bounds);\n } else if (this.appConfig.appSettings && this.appConfig.appSettings.defaultVenue && this.appConfig.appSettings.defaultVenue.length === 24) {\n // Zoom in to default venue if any\n const venueId = await this.appConfig.appSettings.defaultVenue;\n const venue = await this.venueService.getVenueById(venueId);\n if (venue) {\n const bbox = venue.geometry.bbox;\n bounds = new google.maps.LatLngBounds({ lat: bbox[1], lng: bbox[0] }, { lat: bbox[3], lng: bbox[2] });\n this.googleMapService.map.fitBounds(bounds);\n } else {\n console.log('Default venue ID is not correct'); /* eslint-disable-line no-console */ /* TODO: Improve error handling */\n }\n\n this.googleMapService.map.fitBounds(bounds);\n\n // If there is a position, and it is inside the venue bounds, pan to the position\n this.userAgentService.panToPositionIfWithinBounds(bounds);\n }\n }\n // #endregion\n\n // #region || SET VENUE\n // Set venue and go to search-page\n async setVenue(venue): Promise {\n this.venueService.setVenue(venue, this.appConfig);\n this.userAgentService.localStorage.setItem('MI:' + this.solutionId, JSON.stringify({ lastVenue: venue.id }));\n this.mapsIndoorsService.setPageTitle();\n this.mapsIndoorsService.showFloorSelectorAfterUserInteraction();\n const solutionName = await this.solutionService.getSolutionName();\n this.router.navigate([`${solutionName}/${venue.id}/search`]);\n this.trackerService.sendEvent('Venues page', 'Venue selected', `${venue.venueInfo.name} was selected`, true);\n }\n // #endregion\n\n ngOnDestroy(): void {\n this.appConfigSubscription.unsubscribe();\n this.themeServiceSubscription.unsubscribe();\n }\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n version: 'DEV',\n v: 'DEV',\n sdkUrl: 'https://app.mapsindoors.com/mapsindoors/js/sdk/4.4.0/mapsindoors-4.4.0.js.gz',\n sentryDsn: '',\n suggestedSolutionId: '408a4eec13de49b2adc4458f'\n};\n\n/*\n * In development mode, to ignore zone related error stack frames such as\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\n * import the following file, but please comment it out in production mode\n * because it will have performance impact when throw error\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\nimport { applyPolyfills, defineCustomElements } from '@mapsindoors/components/loader';\n\nif (environment.production) {\n enableProdMode();\n}\n\ndefineCustomElements(window);\n\napplyPolyfills().then(() => {\n defineCustomElements(window);\n});\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.log(err)); /* eslint-disable-line no-console */ /* TODO: Improve error handling */\n"],"sourceRoot":""}
{{ value }}
{{ 'ShareDialog.Text' | translate }} {{dialogData.locationName}}
{{dialogData.appTitle}}
\\n\\t\\t\\tMapsPeople A/S\\n\\t\\t
{{dialogData.appVersion}}
{{dialogData.sdkVersion}}
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t{{ 'SetSolution.SubmitError' | translate }}\\n\\t\\t\\t\\t{{ 'SetSolution.InitError' | translate }}\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\t{{ 'SetSolution.Go' | translate }}\\n\\t\\t