{"version":3,"file":"metromobilite-m-features-favorites.mjs","sources":["../../../projects/lib-m-features/favorites/src/favorites.token.ts","../../../projects/lib-m-features/favorites/src/favorites.service.ts","../../../projects/lib-m-features/favorites/src/favorite-lines-selector-dialog/favorite-lines-selector-dialog.component.ts","../../../projects/lib-m-features/favorites/src/favorite-lines-selector-dialog/favorite-lines-selector-dialog.component.html","../../../projects/lib-m-features/favorites/src/favorites.handler.ts","../../../projects/lib-m-features/favorites/src/favorite.directive.ts","../../../projects/lib-m-features/favorites/src/handlers/base.favorite.ts","../../../projects/lib-m-features/favorites/src/handlers/unknown.favorite.ts","../../../projects/lib-m-features/favorites/src/handlers/poi.favorite.ts","../../../projects/lib-m-features/favorites/src/favorite-lines-selector-dialog/favorite-lines-selector-dialog.service.ts","../../../projects/lib-m-features/favorites/src/handlers/clusters.favorite.ts","../../../projects/lib-m-features/favorites/src/handlers/itineraire.favorite.ts","../../../projects/lib-m-features/favorites/src/favorite-allowed.pipe.ts","../../../projects/lib-m-features/favorites/src/services/favorite-component-mode.service.ts","../../../projects/lib-m-features/favorites/src/components/favorite-type-wrapper/favorite-type-wrapper.component.ts","../../../projects/lib-m-features/favorites/src/components/favorite-type-wrapper/favorite-type-wrapper.component.html","../../../projects/lib-m-features/favorites/src/components/types/default/default-favorite.component.ts","../../../projects/lib-m-features/favorites/src/components/types/default/default-favorite.component.html","../../../projects/lib-m-features/favorites/src/directives/favorite-type.directive.ts","../../../projects/lib-m-features/favorites/src/components/types/itinerary/itinerary-favorite.component.ts","../../../projects/lib-m-features/favorites/src/components/types/itinerary/itinerary-favorite.component.html","../../../projects/lib-m-features/favorites/src/services/favorite-component-alerte.service.ts","../../../projects/lib-m-features/favorites/src/components/cluster-actions-bottomsheet/cluster-actions-bottomsheet.component.ts","../../../projects/lib-m-features/favorites/src/components/cluster-actions-bottomsheet/cluster-actions-bottomsheet.component.html","../../../projects/lib-m-features/favorites/src/components/types/cluster/cluster-favorite.component.ts","../../../projects/lib-m-features/favorites/src/components/types/cluster/cluster-favorite.component.html","../../../projects/lib-m-features/favorites/src/components/types/mva/mva-favorite.component.ts","../../../projects/lib-m-features/favorites/src/components/types/mva/mva-favorite.component.html","../../../projects/lib-m-features/favorites/src/components/types/agence-m/agence-m-favorite.component.ts","../../../projects/lib-m-features/favorites/src/components/types/agence-m/agence-m-favorite.component.html","../../../projects/lib-m-features/favorites/src/components/types/irve/irve-favorite.component.ts","../../../projects/lib-m-features/favorites/src/components/types/irve/irve-favorite.component.html","../../../projects/lib-m-features/favorites/src/components/types/parking/parking-favorite.component.ts","../../../projects/lib-m-features/favorites/src/components/types/parking/parking-favorite.component.html","../../../projects/lib-m-features/favorites/src/components/types/cam/cam-favorite.component.ts","../../../projects/lib-m-features/favorites/src/components/types/cam/cam-favorite.component.html","../../../projects/lib-m-features/favorites/src/components/types/poi-cov-favorite/point-cov-favorite.component.ts","../../../projects/lib-m-features/favorites/src/components/types/poi-cov-favorite/point-cov-favorite.component.html","../../../projects/lib-m-features/favorites/src/components/types/taxi/taxi-favorite.component.ts","../../../projects/lib-m-features/favorites/src/components/types/taxi/taxi-favorite.component.html","../../../projects/lib-m-features/favorites/src/favorites.module.ts","../../../projects/lib-m-features/favorites/src/favorite.animation.ts","../../../projects/lib-m-features/favorites/metromobilite-m-features-favorites.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { FavoriteHandler, FavoriteType } from './favorite.model';\r\n\r\nexport const FAVORITE_STORAGE_KEY = new InjectionToken<string>('MF_FAVORITE_STORAGE_KEY');\r\n\r\nexport const FAVORITE_HANDLER = new InjectionToken<FavoriteHandler>('MF_FAVORITE_HANDLER');\r\n\r\nexport const FAVORITE_TYPE = new InjectionToken<FavoriteType>('APP_FAVORITE_TYPE');\r\n","import { Inject, Injectable, Type } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { FAVORITE_STORAGE_KEY, FAVORITE_TYPE } from './favorites.token';\r\nimport { c38Mapping } from '@metromobilite/m-features/core';\r\nimport { ClustersFavoriteData, Favorite, FavoriteType } from './favorite.model';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class FavoritesService {\r\n\r\n\tonUserWantToMigrateFavorites: (favorites: Favorite[]) => void;\r\n\r\n\tprivate favorites: Favorite[];\r\n\tprivate changes = new Subject<Favorite[]>();\r\n\tprivate favoriteComponentTypeMap: { [key: string]: Type<FavoriteType> } = {};\r\n\r\n\tconstructor(\r\n\t\tprivate snackBar: MatSnackBar,\r\n\t\t@Inject(FAVORITE_STORAGE_KEY) private storageKey: string,\r\n\t\t@Inject(FAVORITE_TYPE) favoriteTypecomponents: FavoriteType[]\r\n\t) {\r\n\t\tthis.forceFavoritesUpdate();\r\n\t\tthis.onUserWantToMigrateFavorites = favorites => {\r\n\t\t\tfavorites.forEach(favorite => this.migrateFavoriteLine(favorite));\r\n\t\t\tthis.save();\r\n\t\t};\r\n\t\tfavoriteTypecomponents.forEach(component => {\r\n\t\t\tthis.favoriteComponentTypeMap[component.favoriteType] = component.constructor as Type<FavoriteType>;\r\n\t\t});\r\n\t}\r\n\r\n\tremove(favorite: Favorite, toast = true, save = true) {\r\n\t\tthis.favorites = this.favorites.filter(item => item !== favorite);\r\n\t\tif (save) {\r\n\t\t\tthis.save();\r\n\t\t}\r\n\t\tif (toast) {\r\n\t\t\tthis.displayMessage('Favori supprimé');\r\n\t\t}\r\n\t}\r\n\r\n\tadd(favorite: Favorite, toast = true, save = true) {\r\n\t\tthis.favorites.push(favorite);\r\n\t\tif (save) {\r\n\t\t\tthis.save();\r\n\t\t}\r\n\t\tif (toast) {\r\n\t\t\tthis.displayMessage('Favori ajouté');\r\n\t\t}\r\n\t}\r\n\r\n\tremoveAll(toast = true, save = true) {\r\n\t\tthis.favorites = [];\r\n\t\tif (save) {\r\n\t\t\tthis.save();\r\n\t\t}\r\n\t\tif (toast) {\r\n\t\t\tthis.displayMessage('Favoris supprimés');\r\n\t\t}\r\n\t}\r\n\r\n\tsave() {\r\n\t\tlocalStorage.setItem(this.storageKey, JSON.stringify(this.favorites));\r\n\t\tthis.changes.next(this.favorites);\r\n\t}\r\n\r\n\tfind(predicate: (item: Favorite, index: number, favorites: Favorite[]) => boolean): Favorite | null {\r\n\t\treturn this.favorites.find(predicate);\r\n\t}\r\n\r\n\t/**\r\n\t * Force favorites to update, then returns updated favorites\r\n\t * @returns Favorite[]\r\n\t */\r\n\tforceFavoritesUpdate() {\r\n\t\tlet isOld = false;\r\n\t\tthis.favorites = (JSON.parse(localStorage.getItem(this.storageKey)) || []).reduce((list: Favorite[], fav: any) => {\r\n\t\t\t// Validate and update a favorite item.\r\n\t\t\tif (fav.data !== undefined) {\r\n\t\t\t\tlist.push(fav);\r\n\t\t\t}\r\n\t\t\t// Previous version of this module.\r\n\t\t\tif (fav.poi !== undefined) {\r\n\t\t\t\tisOld = true;\r\n\t\t\t\tconst newItem: Favorite = {\r\n\t\t\t\t\ttype: fav.type,\r\n\t\t\t\t\tdata: fav.poi\r\n\t\t\t\t};\r\n\t\t\t\tif (fav.line !== undefined) {\r\n\t\t\t\t\tnewItem.data.line = fav.line;\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(newItem);\r\n\t\t\t}\r\n\t\t\t// PWA case\r\n\t\t\tif (fav.object !== undefined) {\r\n\t\t\t\tisOld = true;\r\n\t\t\t\tconst newItem: Favorite = {\r\n\t\t\t\t\ttype: fav.type,\r\n\t\t\t\t\tdata: fav.object\r\n\t\t\t\t};\r\n\t\t\t\tif (fav.objectLines) {\r\n\t\t\t\t\tfor (const line of fav.objectLines) {\r\n\t\t\t\t\t\tconst clone = JSON.parse(JSON.stringify(newItem));\r\n\t\t\t\t\t\tclone.data.line = line.id;\r\n\t\t\t\t\t\tlist.push(clone);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlist.push(newItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn list;\r\n\t\t}, []);\r\n\t\t// If we have found an old version of a favorite, we must save the patched list and avoid futur useless patches.\r\n\t\tif (isOld) {\r\n\t\t\tthis.save();\r\n\t\t}\r\n\t\treturn this.getFavorites();\r\n\t}\r\n\r\n\tgetFavorites(type?: string) {\r\n\t\tif (type) {\r\n\t\t\treturn this.favorites.filter((favorite) => favorite.type === type);\r\n\t\t}\r\n\t\treturn this.favorites || [];\r\n\t}\r\n\r\n\tsetFavorites(favorites: Favorite[]) {\r\n\t\tthis.favorites = favorites;\r\n\t}\r\n\r\n\tget changes$(): Observable<Favorite[]> {\r\n\t\treturn this.changes.asObservable();\r\n\t}\r\n\r\n\tdisplayMessage(message: string) {\r\n\t\tthis.snackBar.open(message, null, { duration: 3000 });\r\n\t}\r\n\r\n\tmigrateFavoriteLine(favorite: Favorite): void {\r\n\t\tconst currentLine = (favorite.data as ClustersFavoriteData).line;\r\n\t\tif (currentLine) {\r\n\t\t\tconst newLine = c38Mapping[currentLine];\r\n\t\t\tif (newLine) {\r\n\t\t\t\t(favorite.data as ClustersFavoriteData).line = newLine;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetComponent(type: string): Type<FavoriteType> {\r\n\t\tlet component = this.favoriteComponentTypeMap[type];\r\n\t\tif (!component) {\r\n\t\t\tcomponent = this.favoriteComponentTypeMap?.default;\r\n\t\t}\r\n\t\treturn component;\r\n\t}\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { Poi, ReferenceService } from '@metromobilite/m-features/reference';\r\nimport { FavoritesService } from '../favorites.service';\r\nimport { Line, LinesService } from '@metromobilite/m-features/core';\r\n\r\n\r\n@Component({\r\n\ttemplateUrl: './favorite-lines-selector-dialog.component.html',\r\n})\r\nexport class FavoriteLinesSelectorDialogComponent implements OnInit {\r\n\tcheckedForAllLines = false;\r\n\titems: { line: Line, selected: boolean }[] = [];\r\n\tloading: boolean;\r\n\r\n\tconstructor(\r\n\t\tprivate dialogRef: MatDialogRef<FavoriteLinesSelectorDialogComponent>,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: Poi,\r\n\t\tprivate referenceService: ReferenceService,\r\n\t\tprivate favoritesService: FavoritesService,\r\n\t\tprivate linesService : LinesService\r\n\t) { }\r\n\r\n\tngOnInit(): void {\r\n\t\tconst timeout = setTimeout(() => {\r\n\t\t\tthis.loading = true;\r\n\t\t}, 800);\r\n\t\tthis.referenceService.getLinesAtCluster(this.data.properties.code)\r\n\t\t\t.pipe(finalize(() => {\r\n\t\t\t\tif (timeout) {\r\n\t\t\t\t\tclearTimeout(timeout);\r\n\t\t\t\t}\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t}))\r\n\t\t\t.subscribe(response => {\r\n\t\t\t\tthis.items = response.map(line => {\r\n\t\t\t\t\tconst favorite = this.favoritesService.find(fav => {\r\n\t\t\t\t\t\treturn fav.type === 'clusters' && (fav.data as Poi).properties.id === this.data.properties.id && line.id === fav.data.line;\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tline,\r\n\t\t\t\t\t\tselected: !!favorite\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t\tthis.checkedForAllLines = this.items.every(item => item.selected);\r\n\t\t\t});\r\n\t}\r\n\r\n\tonSelectAllLinesChanged() {\r\n\t\tthis.checkedForAllLines = !this.checkedForAllLines;\r\n\t\tif (this.checkedForAllLines === true) {\r\n\t\t\tthis.items.forEach((element: any) => {\r\n\t\t\t\telement.selected = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.items.forEach((element: any) => {\r\n\t\t\t\telement.selected = false;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcheck() {\r\n\t\tthis.checkedForAllLines = this.items.every(item => item.selected);\r\n\t}\r\n\r\n\tvalider() {\r\n\t\tthis.dialogRef.close({\r\n\t\t\tadd: this.items.filter(item => item.selected).map(item => item.line.id),\r\n\t\t\tremove: this.items.filter(item => !item.selected).map(item => item.line.id),\r\n\t\t});\r\n\t}\r\n\r\n\tisAnyItemSelected(): boolean {\r\n\t\treturn this.items.some(item => item.selected);\r\n\t  }\r\n\t  \r\n}\r\n","<div class=\"layout\">\r\n\t<h1 mat-dialog-title class=\"flex\">Sélectionnez les lignes</h1>\r\n</div>\r\n<mat-dialog-content>\r\n\t<p>A l'arrêt {{ data | libelle }}</p>\r\n\t<div class=\"checkLines\">\r\n\t\t<mat-checkbox [checked]=\"checkedForAllLines\" (change)=\"onSelectAllLinesChanged(); check()\">Toutes les lignes</mat-checkbox>\r\n\t</div>\r\n\t<div class=\"layout content-center align-center padding--all---spacing\" *ngIf=\"loading\">\r\n\t\t<mat-spinner diameter=\"32\"></mat-spinner>\r\n\t</div>\r\n\t<fieldset *ngIf=\"items.length > 0 && !loading\">\r\n\t\t<div class=\"layout wrap\">\r\n\t\t\t<div class=\"form-field m-checklines-favoris\" *ngFor=\"let item of items\">\r\n\t\t\t\t<label >\r\n\t\t\t\t\t<m-logo-lines [attr.id]=\"item.line.id\" [mfHasDisturbance]=\"{lineOrNsv: item.line.id}\" [outer]=\"true\"\r\n\t\t\t\t\t\t\t\t  [ligne]=\"item.line\"\r\n\t\t\t\t\t\t\t\t  [isCheckbox]=\"true\" [checked]=\"item.selected\" (lineChange)=\"item.selected = !item.selected; check()\" [opacity]=\"0.3\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t</m-logo-lines>\r\n\t\t\t\t</label>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</fieldset>\r\n\r\n\t<p class=\"m-fz-small\">Les favoris sont gérés dans la page \"Favoris\".</p>\r\n\r\n</mat-dialog-content>\r\n<mat-dialog-actions class=\"align-right\">\r\n\t<button mat-button class=\"m-theme\" mat-dialog-close color=\"warn\">Annuler</button>\r\n\r\n\t<button mat-button class=\"m-theme\" color=\"primary\" (click)=\"valider()\" [disabled]=\"!isAnyItemSelected()\">Valider</button>\r\n</mat-dialog-actions>\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { FavoriteData, FavoriteHandler } from './favorite.model';\r\nimport { FAVORITE_HANDLER } from './favorites.token';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FavoritesHandlerService {\r\n\r\n\tconstructor(@Inject(FAVORITE_HANDLER) private handlers: FavoriteHandler[]) {\r\n\t\tthis.handlers.sort((a, b) => a.weight > b.weight ? 1 : -1);\r\n\t}\r\n\r\n\tgetHandler(data: FavoriteData) {\r\n\t\treturn this.handlers.find(handler => !!handler.matchType(data));\r\n\t}\r\n\r\n}\r\n","import { Directive, HostListener, OnInit, Input, HostBinding, OnDestroy } from '@angular/core';\r\nimport { FavoritesService } from './favorites.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Favorite, FavoriteData, FavoriteHandler, HandlerOptions } from './favorite.model';\r\nimport { FavoritesHandlerService } from './favorites.handler';\r\n\r\n@Directive({\r\n\tselector: '[mfFavorite]',\r\n\texportAs: 'favorite',\r\n})\r\nexport class FavoriteDirective implements OnInit, OnDestroy {\r\n\r\n\t@Input() options: HandlerOptions;\r\n\r\n\tchanges$ = new Subject<boolean>();\r\n\r\n\tprivate _data: FavoriteData;\r\n\tprivate _item: Favorite;\r\n\tprivate _isFavorite: boolean;\r\n\tprivate handler: FavoriteHandler;\r\n\tprivate unsubscriber = new Subject<void>();\r\n\r\n\r\n\r\n\tconstructor(\r\n\t\tprivate favoritesService: FavoritesService,\r\n\t\tprivate favoriteHandlerService: FavoritesHandlerService\r\n\t) { }\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.favoritesService.changes$.pipe(takeUntil(this.unsubscriber)).subscribe(() => {\r\n\t\t\tthis.isFavorite = !!this.handler.find(this.data);\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.unsubscriber.next();\r\n\t\tthis.unsubscriber.complete();\r\n\t}\r\n\r\n\t@Input('mfFavorite') set data(value: FavoriteData) {\r\n\t\tthis._data = value;\r\n\t\tthis.handler = this.favoriteHandlerService.getHandler(this._data);\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.isFavorite = !!this.handler.find(this._data);\r\n\t\t});\r\n\t}\r\n\r\n\tget data(): FavoriteData {\r\n\t\treturn this._data;\r\n\t}\r\n\r\n\tget item() {\r\n\t\treturn this._item;\r\n\t}\r\n\r\n\tset isFavorite(value: boolean) {\r\n\t\tthis._isFavorite = value;\r\n\t\tthis._item = value ? this.handler.find(this.data) : undefined;\r\n\t\tthis.changes$.next(this.isFavorite);\r\n\t}\r\n\r\n\tget isFavorite(): boolean {\r\n\t\treturn this._isFavorite;\r\n\t}\r\n\r\n\tupdate(): void {\r\n\t\tconst found = this.handler.find(this.data);\r\n\t\tif (found) {\r\n\t\t\tthis.handler.remove(found, this.options).subscribe(response => { });\r\n\t\t} else {\r\n\t\t\tconst newFavorite: Favorite = {\r\n\t\t\t\ttype: this.handler.matchType(this.data),\r\n\t\t\t\tdata: this.data\r\n\t\t\t};\r\n\t\t\tthis.handler.add(newFavorite, this.options).subscribe(response => { });\r\n\t\t}\r\n\t}\r\n\r\n\t@HostListener('click', ['$event']) onCLick(event: MouseEvent) {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tthis.update();\r\n\t}\r\n\r\n\t@HostBinding('attr.aria-label') get ariaLabel() {\r\n\t\tif (this.data) {\r\n\t\t\tconst type = this.handler.matchType(this.data);\r\n\t\t\treturn this.isFavorite ? type !== 'cluster' ? 'Enlever des favoris' : 'Modifier le favori' : 'Ajouter aux favoris';\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { Favorite, FavoriteData, FavoriteHandler, FindOptions, HandlerOptions } from '../favorite.model';\r\nimport { FavoritesService } from '../favorites.service';\r\n\r\nexport abstract class FavoriteHandlerBase implements FavoriteHandler {\r\n\r\n\tabstract weight: number;\r\n\r\n\tabstract matchType(data: FavoriteData): string | null;\r\n\r\n\tconstructor(protected favoritesService: FavoritesService) { }\r\n\r\n\tabstract find(data: FavoriteData, options?: FindOptions): Favorite | null;\r\n\r\n\tadd(favorite: Favorite, options: HandlerOptions = { toast: true, save: true }): Observable<boolean> {\r\n\t\tconst defaultOpt = { toast: true, save: true };\r\n\t\tconst _opt = options ? { ...defaultOpt, ...options } : defaultOpt;\r\n\t\tthis.favoritesService.add(favorite, _opt.toast, _opt.save);\r\n\t\treturn of(true);\r\n\t}\r\n\r\n\tremove(favorite: Favorite, options: HandlerOptions = { toast: true, save: true }): Observable<boolean> {\r\n\t\tconst defaultOpt = { toast: true, save: true };\r\n\t\tconst _opt = options ? { ...defaultOpt, ...options } : defaultOpt;\r\n\t\tthis.favoritesService.remove(favorite, _opt.toast, _opt.save);\r\n\t\treturn of(true);\r\n\t}\r\n\r\n\tedit(favorite: Favorite, options?: HandlerOptions): Observable<boolean> {\r\n\t\tconst defaultOpt = { toast: true, save: true };\r\n\t\tconst _opt = options ? { ...defaultOpt, ...options } : defaultOpt;\r\n\t\treturn this.add(favorite, _opt);\r\n\t}\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Favorite, FavoriteData, FindOptions } from '../favorite.model';\r\nimport { FavoriteHandlerBase } from './base.favorite';\r\nimport { FavoritesService } from '../favorites.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UnknownFavoriteHandler extends FavoriteHandlerBase {\r\n\r\n\tweight = Number.MAX_SAFE_INTEGER;\r\n\r\n\tconstructor (protected favoritesService: FavoritesService) { super(favoritesService); }\r\n\r\n\tmatchType(data: FavoriteData): string {\r\n\t\tthrow new Error('Unknown favorite type');\r\n\t}\r\n\r\n\tfind(data: FavoriteData, options: FindOptions): Favorite | null {\r\n\t\tthrow new Error('Unknown favorite type');\r\n\t}\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Favorite, FindOptions, PoiFavoriteData } from '../favorite.model';\r\nimport { FavoritesService } from '../favorites.service';\r\nimport { FavoriteHandlerBase } from './base.favorite';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PoiFavoriteHandler extends FavoriteHandlerBase {\r\n\r\n\tweight = 10000;\r\n\r\n\tconstructor(\r\n\t\tfavoritesService: FavoritesService,\r\n\t) {\r\n\t\tsuper(favoritesService);\r\n\t}\r\n\r\n\tmatchType(data: PoiFavoriteData): string | null {\r\n\t\treturn data.properties && data.properties.type || null;\r\n\t}\r\n\r\n\tfind(data: PoiFavoriteData, options: FindOptions): Favorite | null {\r\n\t\treturn this.favoritesService.find(item =>\r\n\t\t\titem.data.properties &&\r\n\t\t\titem.data.properties.type === data.properties.type &&\r\n\t\t\titem.data.properties.id === data.properties.id\r\n\t\t);\r\n\t}\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { FavoriteLinesSelectorDialogComponent } from './favorite-lines-selector-dialog.component';\r\nimport { Poi } from '@metromobilite/m-features/reference';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class FavoriteLinesSelectorDialogService {\r\n\r\n\tconstructor(private dialog: MatDialog) { }\r\n\r\n\topen(item: Poi): Observable<{ add: string[], remove: string[] }> {\r\n\t\treturn this.dialog.open<FavoriteLinesSelectorDialogComponent, Poi, { add: string[], remove: string[] }>(FavoriteLinesSelectorDialogComponent, {\r\n\t\t\tdata: item,\r\n\t\t\tpanelClass: ['m-favorite-lines-selector-dialog', 'm-theme']\r\n\t\t}).afterClosed();\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Poi } from '@metromobilite/m-features/reference';\r\nimport { Observable } from 'rxjs';\r\nimport { FavoriteLinesSelectorDialogService } from '../favorite-lines-selector-dialog/favorite-lines-selector-dialog.service';\r\nimport { ClustersFavoriteData, Favorite, FindOptions, HandlerOptions } from '../favorite.model';\r\nimport { FavoritesService } from '../favorites.service';\r\nimport { PoiFavoriteHandler } from './poi.favorite';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ClustersFavoriteHandler extends PoiFavoriteHandler {\r\n\r\n\tweight = 1000;\r\n\r\n\tconstructor(\r\n\t\tfavoritesService: FavoritesService,\r\n\t\tprivate favoriteLineSelector: FavoriteLinesSelectorDialogService\r\n\t) {\r\n\t\tsuper(favoritesService);\r\n\t}\r\n\r\n\tmatchType(data: ClustersFavoriteData): string | null {\r\n\t\treturn data.properties && data.properties.type === 'clusters' ? 'clusters' : null;\r\n\t}\r\n\r\n\tadd(favorite: Favorite, options?: HandlerOptions): Observable<boolean> {\r\n\t\tconst defaultOpt = { toast: true, save: true };\r\n\t\tconst _opt = options ? { ...defaultOpt, ...options } : defaultOpt;\r\n\t\treturn this.edit(favorite, _opt);\r\n\t}\r\n\r\n\tremove(favorite: Favorite, options?: HandlerOptions): Observable<boolean> {\r\n\t\tconst defaultOpt = { toast: true, save: true };\r\n\t\tconst _opt = options ? { ...defaultOpt, ...options } : defaultOpt;\r\n\t\treturn this.edit(favorite, _opt);\r\n\t}\r\n\r\n\tedit(favorite: Favorite, options?: HandlerOptions): Observable<boolean> {\r\n\t\tconst defaultOpt = { toast: true, save: true };\r\n\t\tconst _opt = options ? { ...defaultOpt, ...options } : defaultOpt;\r\n\t\treturn new Observable(obs => {\r\n\t\t\tthis.favoriteLineSelector.open(favorite.data as Poi).subscribe(response => {\r\n\t\t\t\tif (response) {\r\n\t\t\t\t\tlet added = 0;\r\n\t\t\t\t\tresponse.add.forEach(line => {\r\n\t\t\t\t\t\tconst found = this.find(favorite.data as ClustersFavoriteData, { line });\r\n\t\t\t\t\t\tif (!found) {\r\n\t\t\t\t\t\t\tconst clone = JSON.parse(JSON.stringify(favorite));\r\n\t\t\t\t\t\t\tclone.data.line = line;\r\n\t\t\t\t\t\t\tthis.favoritesService.add(clone, false, _opt.save);\r\n\t\t\t\t\t\t\tadded += 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tlet removed = 0;\r\n\t\t\t\t\tresponse.remove.forEach(line => {\r\n\t\t\t\t\t\tconst found = this.find(favorite.data as ClustersFavoriteData, { line });\r\n\t\t\t\t\t\tif (found) {\r\n\t\t\t\t\t\t\tthis.favoritesService.remove(found, false, _opt.save);\r\n\t\t\t\t\t\t\tremoved += 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (added > 0 && removed > 0) {\r\n\t\t\t\t\t\tobs.next(true);\r\n\t\t\t\t\t\tif (_opt.toast) {\r\n\t\t\t\t\t\t\tthis.favoritesService.displayMessage('Favori(s) mis à jour');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (added > 0) {\r\n\t\t\t\t\t\tobs.next(true);\r\n\t\t\t\t\t\tif (_opt.toast) {\r\n\t\t\t\t\t\t\tthis.favoritesService.displayMessage('Favori(s) ajouté(s)');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (removed > 0) {\r\n\t\t\t\t\t\tobs.next(false);\r\n\t\t\t\t\t\tif (_opt.toast) {\r\n\t\t\t\t\t\t\tthis.favoritesService.displayMessage('Favori(s) supprimé(s)');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tobs.next(false);\r\n\t\t\t\t}\r\n\t\t\t\tobs.complete();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfind(data: ClustersFavoriteData, options: FindOptions): Favorite | null {\r\n\t\treturn this.favoritesService.find(item =>\r\n\t\t\titem.data.properties && item.data.properties.type === 'clusters' &&\r\n\t\t\titem.data.properties.type === data.properties.type &&\r\n\t\t\titem.data.properties.id === data.properties.id &&\r\n\t\t\t(!options || (options && !options.line || options.line && options.line === item.data.line))\r\n\t\t);\r\n\t}\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Favorite, FavoriteData, FindOptions, HandlerOptions } from '../favorite.model';\r\nimport { FavoritesService } from '../favorites.service';\r\nimport { FavoriteHandlerBase } from './base.favorite';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ItineraireFavoriteHandler extends FavoriteHandlerBase {\r\n\r\n\tweight = 200;\r\n\r\n\tconstructor(favoritesService: FavoritesService) {\r\n\t\tsuper(favoritesService);\r\n\t}\r\n\r\n\tmatchType(data: FavoriteData): string {\r\n\t\treturn data.dep !== undefined || data.velo !== undefined || data.ap_av !== undefined ? 'itineraire' : null;\r\n\t}\r\n\r\n\tadd(favorite: Favorite, options?: HandlerOptions): Observable<boolean> {\r\n\t\tlet directionType = 'multiline-direction';\r\n\r\n\t\tconst newObj: Favorite = JSON.parse(JSON.stringify(favorite));\r\n\t\tif (favorite.data.dep !== undefined || favorite.data.velo !== undefined || favorite.data.ap_av !== undefined) {\r\n\t\t\tif (favorite.data.dep && !favorite.data.arr) {\r\n\t\t\t\tif (['Position', 'Ma position'].includes(favorite.data.dep)) {\r\n\t\t\t\t\tdelete newObj.data.lonlatDep;\r\n\t\t\t\t}\r\n\t\t\t\tdirectionType = 'from';\r\n\t\t\t}\r\n\t\t\tif (favorite.data.arr && !favorite.data.dep) {\r\n\t\t\t\tif (['Position', 'Ma position'].includes(favorite.data.arr)) {\r\n\t\t\t\t\tdelete newObj.data.lonlatArr;\r\n\t\t\t\t}\r\n\t\t\t\tdirectionType = 'to';\r\n\t\t\t}\r\n\t\t\tdelete newObj.data.date;\r\n\t\t\tdelete newObj.data.heure;\r\n\t\t\tdelete newObj.data.ap_av;\r\n\t\t\tnewObj.data.directionType = directionType;\r\n\t\t}\r\n\t\treturn super.add(newObj, options);\r\n\t}\r\n\r\n\tfind(data: FavoriteData, options?: FindOptions): Favorite | null {\r\n\t\treturn this.favoritesService.find(item => {\r\n\t\t\treturn item.data.dep === data.dep &&\r\n\t\t\t\titem.data.arr === data.arr &&\r\n\t\t\t\titem.data.pmr === data.pmr &&\r\n\t\t\t\titem.data.tc === data.tc &&\r\n\t\t\t\titem.data.velo === data.velo &&\r\n\t\t\t\titem.data.voiture === data.voiture;\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'favoriteAllowed'\r\n})\r\nexport class FavoriteAllowedPipe implements PipeTransform {\r\n\r\n\tnotAllowed = [\r\n\t\t'dott',\r\n\t\t'dott_bicyle',\r\n\t\t'dott_scooter',\r\n\t\t'voi',\r\n\t\t'voi_bicyle',\r\n\t\t'voi_scooter',\r\n\t\t'ponyVehicle',\r\n\t\t'tierVehicle',\r\n\t\t'citizyea',\r\n\t\t'letaxi'\r\n\t];\r\n\r\n\ttransform(type: string): boolean {\r\n\t\treturn !this.notAllowed.includes(type);\r\n\t}\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\n\r\nexport enum modeStatus {\r\n\tread, write, delete\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class FavoriteComponentModeService {\r\n\r\n\tprivate mode: BehaviorSubject<modeStatus>;\r\n\r\n\tconstructor() {\r\n\t\tthis.mode = new BehaviorSubject(modeStatus.read);\r\n\t}\r\n\r\n\tpublic onModeChange(): Observable<modeStatus> {\r\n\t\treturn this.mode.asObservable();\r\n\t}\r\n\r\n\tpublic updateModeStatus(status: modeStatus) {\r\n\t\tthis.mode.next(status);\r\n\t}\r\n\r\n\tpublic getCurrentModeStatus(): modeStatus {\r\n\t\treturn this.mode.getValue();\r\n\t}\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {FavoriteComponentModeService, modeStatus} from '../../services/favorite-component-mode.service';\r\n\r\n@Component({\r\n\tselector: 'mf-favorite-type-wrapper',\r\n\ttemplateUrl: './favorite-type-wrapper.component.html',\r\n\tstyleUrls: ['./favorite-type-wrapper.component.scss'],\r\n})\r\nexport class FavoriteTypeWrapperComponent implements OnInit {\r\n\r\n\t@Input() type: string;\r\n\tmode: modeStatus;\r\n\t@Input() disabled: boolean;\r\n\t@Output() expansionStateChange = new EventEmitter();\r\n\texpansionState: boolean;\r\n\r\n\tconstructor(private favMode: FavoriteComponentModeService) {\r\n\t\tthis.favMode.onModeChange().subscribe(() => {\r\n\t\t\tthis.mode = this.favMode.getCurrentModeStatus();\r\n\t\t\tif (this.mode === modeStatus.read) this.onExpansionClosed();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n\tonExpansionOpened() {\r\n\t\tif (this.mode === modeStatus.read) {\r\n\t\t\tthis.expansionState = true;\r\n\t\t\tthis.expansionStateChange.emit(this.expansionState);\r\n\t\t}\r\n\t}\r\n\r\n\tonExpansionClosed() {\r\n\t\tthis.expansionState = false;\r\n\t\tthis.expansionStateChange.emit(this.expansionState);\r\n\t}\r\n}\r\n","<mat-accordion class=\"m-list important favorite-accordion\">\r\n\t<mat-expansion-panel [disabled]=\"disabled\" class=\"content-no-spacing dark-overlay-2\" #panel=\"matExpansionPanel\" (opened)=\"onExpansionOpened()\" (closed)=\"onExpansionClosed()\" cdkMonitorSubtreeFocus>\r\n\t\t<mat-expansion-panel-header collapsedHeight=\"auto\" expandedHeight=\"auto\" class=\"no-padding\"\r\n\t\t\t[class.no-indicator]=\"(type === 'clusters' || mode != 0)\">\r\n\t\t\t<mat-panel-title class=\"full-width ellipsis\">\r\n\t\t\t\t<ng-content select=\"[favorite-wrapper-header]\">\r\n\t\t\t\t</ng-content>\r\n\t\t\t\t<m-icons class=\"wrapper-button\" *ngIf=\"type !== 'clusters' && mode == 1\">drag_indicator</m-icons>\r\n\t\t\t\t<m-icons class=\"wrapper-button\" *ngIf=\"type !== 'clusters' && mode == 2\">delete</m-icons>\r\n\t\t\t</mat-panel-title>\r\n\t\t</mat-expansion-panel-header>\r\n\t\t<ng-template matExpansionPanelContent >\r\n\t\t\t<ng-content select=\"[favorite-wrapper-content]\" *ngIf=\"mode == 0\"></ng-content>\r\n\t\t</ng-template>\r\n\t</mat-expansion-panel>\r\n</mat-accordion>\r\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\r\nimport { IV_BASE_URL } from '@metromobilite/m-features/core';\r\nimport { FavoriteType } from '../../../favorite.model';\r\n\r\n@Component({\r\n\ttemplateUrl: './default-favorite.component.html',\r\n\tstyleUrls: ['./default-favorite.component.scss']\r\n})\r\nexport class DefaultFavoriteComponent implements FavoriteType, OnInit {\r\n\tfavoriteType = 'default';\r\n\titem: any;\r\n\r\n\tconstructor(@Optional() @Inject(IV_BASE_URL) public ivBaseUrl: string) { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n}\r\n","<mf-favorite-type-wrapper>\r\n\t<ng-container favorite-wrapper-header>\r\n\t\t<span class=\"full-width ellipsis padding--tb---spacing-2 light-overlay\">\r\n\t\t\t<span class=\"layout align-center padding--right---spacing-2\">\r\n\t\t\t\t<m-icons class=\"panel-icon margin--left\" [type]=\"item.data.properties.subtype || item.type\"></m-icons>\r\n\t\t\t\t<span class=\"ellipsis\">{{ item.data | libelle }}</span>\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t</ng-container>\r\n\t<ng-container favorite-wrapper-content>\r\n\t\t<div class=\"actions dark-overlay-8 light-overlay-inner layout align-center\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<ng-container *ngIf=\"item.data && (item.data.geometry || item.data.properties.geometry)\">\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"item.data | detailPoiRouterLink: ivBaseUrl\" mat-button class=\"m-theme\"\r\n\t\t\t\t\t\tcolor=\"primary\">\r\n\t\t\t\t\t\tVoir sur la carte\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"[ivBaseUrl, 'itineraire']\"\r\n\t\t\t\t\t\t[queryParams]=\"{arr: item.data | libelle, lonlatArr: item.data | pmFixCoordinates | mfJoin}\" mat-button\r\n\t\t\t\t\t\tclass=\"m-theme\" color=\"primary\">\r\n\t\t\t\t\t\tItinéraire vers ce favori\r\n\t\t\t\t\t</a>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mf-favorite-type-wrapper>\r\n","import {ComponentFactoryResolver, Directive, Input, OnInit, ViewContainerRef} from '@angular/core';\r\nimport {FavoriteType} from '../favorite.model';\r\nimport {FavoritesService} from '../favorites.service';\r\nimport {modeStatus} from '../services/favorite-component-mode.service';\r\n\r\n@Directive({\r\n\tselector: '[mfFavoriteTypeHost]',\r\n})\r\nexport class FavoriteTypeHostDirective implements OnInit {\r\n\r\n\t@Input() item: any;\r\n\t@Input() mode: 'write' | 'delete' | 'read' = 'read';\r\n\r\n\tconstructor(\r\n\t\tpublic viewContainerRef: ViewContainerRef,\r\n\t\tprivate favoritesService: FavoritesService,\r\n\t\tprivate componentFactoryResolver: ComponentFactoryResolver\r\n\t) { }\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.viewContainerRef.clear();\r\n\t\tconst componentFactory = this.componentFactoryResolver.resolveComponentFactory<FavoriteType>(this.favoritesService.getComponent(this.item.type));\r\n\t\tconst componentRef = this.viewContainerRef.createComponent<FavoriteType>(componentFactory);\r\n\t\tcomponentRef.instance.item = this.item;\r\n\t\tcomponentRef.instance.mode = modeStatus[this.mode];\r\n\t}\r\n}\r\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\r\nimport { IV_BASE_URL } from '@metromobilite/m-features/core';\r\nimport { FavoriteType } from '../../../favorite.model';\r\n\r\n@Component({\r\n\ttemplateUrl: './itinerary-favorite.component.html',\r\n\tstyleUrls: ['./itinerary-favorite.component.scss']\r\n})\r\nexport class ItineraryFavoriteComponent implements FavoriteType, OnInit {\r\n\tfavoriteType = 'itineraire';\r\n\titem: any;\r\n\r\n\tconstructor(@Optional() @Inject(IV_BASE_URL) public ivBaseUrl: string) { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n}\r\n","<mf-favorite-type-wrapper>\r\n\t<ng-container favorite-wrapper-header>\r\n\t\t<span class=\"full-width ellipsis light-overlay\">\r\n\t\t\t<span class=\"layout align-center padding--right---spacing-2 padding\">\r\n\t\t\t\t<m-icons class=\"panel-icon margin--left\" [type]=\"'iti'\"></m-icons>\r\n\t\t\t\t<span class=\"m-multiline ellipsis padding--tb---spacing-2\">\r\n\t\t\t\t\t<ng-container [ngSwitch]=\"item.data.directionType\">\r\n\t\t\t\t\t\t<ng-container *ngSwitchCase=\"'from'\">\r\n\t\t\t\t\t\t\t<span class=\"ellipsis\">Depuis {{ item.data.dep }}</span>\r\n\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t<ng-container *ngSwitchCase=\"'to'\">\r\n\t\t\t\t\t\t\t<span class=\"ellipsis\">Vers {{ item.data.arr }}</span>\r\n\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t<ng-container *ngSwitchCase=\"'multiline-direction'\">\r\n\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t<span class=\"ellipsis\">{{ item.data.dep }}</span>\r\n\t\t\t\t\t\t\t\t<span class=\"ellipsis\">{{ item.data.arr }}</span>\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t<span> {{ item | mfTransportMode }}</span>\r\n\t\t\t\t</span>\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t</ng-container>\r\n\t<ng-container favorite-wrapper-content>\r\n\t\t<div class=\"actions dark-overlay-8 light-overlay-inner layout align-center\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<a [mfPmAbsoluteLink]=\"ivBaseUrl | itineraryRouterLink\" [queryParams]=\"item.data\" mat-button class=\"m-theme\" color=\"primary\">\r\n\t\t\t\t\tVoir l'itineraire\r\n\t\t\t\t</a>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mf-favorite-type-wrapper>\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { LigneAlerte } from '../favorite.model';\r\n\r\n\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class FavoriteComponentAlerteService {\r\n private alerteSubject = new Subject<LigneAlerte>();\r\n  \r\n  // Observable public pour s'abonner aux changements\r\n  public alerte$ = this.alerteSubject.asObservable();\r\n\r\n  constructor() {}\r\n\r\n  /**\r\n   * Appelée par un composant pour dire qu'une ligne change d'état.\r\n   */\r\n  updateLigneAlerte(id: string, active: boolean) {\r\n    this.alerteSubject.next({ id, active });\r\n  }\r\n\r\n  isAlerted(id: string): boolean {\r\n  const notifEnabled = JSON.parse(localStorage.getItem('notifications_enabled') || 'false');\r\n  const alerteLignes = JSON.parse(localStorage.getItem('alerte_ligne') || '[]') as string[];\r\n  \r\n  return notifEnabled && alerteLignes.includes(id);\r\n}\r\n\r\n\r\n customAndroidChannel: string = \"JNative\"\r\n  /**\r\n* Fonction renvoyant le type de device actuel\r\n* @param \r\n* @returns {string | null} renvoie \"android\" ou \"ios\" ou null si on est sur navigateur\r\n*/\r\n  private getDeviceType(): string | null {\r\n\r\n    if ((window as any).deviceToken) return 'ios';\r\n    if (window[this.customAndroidChannel]) return 'android';\r\n    return null;\r\n  }\r\n\r\n    /**\r\n * Détermine si l'utilisateur est sur un appareil mobile.\r\n * @returns true si l'utilisateur est sur mobile (Android/iOS), false sinon.\r\n */\r\n  public isOnMobileDevice(): boolean {\r\n    return this.getDeviceType() != null\r\n  }\r\n}","import {Component, Inject, OnDestroy, Optional} from '@angular/core';\r\nimport { MatBottomSheetRef, MAT_BOTTOM_SHEET_DATA } from '@angular/material/bottom-sheet';\r\nimport {Router} from '@angular/router';\r\nimport { IV_BASE_URL, PlatformHelper } from '@metromobilite/m-features/core';\r\nimport {RealtimeDataService, StopTime} from '@metromobilite/m-features/realtime-data';\r\nimport {Subject} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport { FavoritesHandlerService } from '../../favorites.handler';\r\nimport { TAGNPASS } from '@metromobilite/m-features';\r\nimport { Disturbance, DisturbancesService } from '@metromobilite/m-features/dyn';\r\nimport { FavoriteComponentAlerteService } from '../../services/favorite-component-alerte.service';\r\nimport { Shape } from '@metromobilite/m-ui/m-logo-lines';\r\n\r\n@Component({\r\n\tselector: 'mf-cluster-actions-bottomsheet',\r\n\ttemplateUrl: './cluster-actions-bottomsheet.component.html',\r\n\tstyleUrls: ['./cluster-actions-bottomsheet.component.scss']\r\n})\r\nexport class ClusterActionsBottomSheetComponent implements OnDestroy {\r\n\tisMobile: boolean;\r\n\tpoi: any;\r\n\tbuttons = {\r\n\t\tnotifications:true,\r\n\t\tfiche_horaire: true,\r\n\t\tticket: true,\r\n\t\tdetail_ligne: true,\r\n\t\tloc_arret: true,\r\n\t\titineraire: true,\r\n\t\tajout_fav: true,\r\n\t\taffluence: true\r\n\t};\r\n\tpublic affluenceLvl = null;\r\n\tprivate unSubscriber = new Subject<void>();\r\n\r\n\tpublic disturbanceLigne : Disturbance[] = [];\r\n\r\n\tShape = Shape;\r\n\r\n\tconstructor(\r\n\t\tprivate _bottomSheetRef: MatBottomSheetRef<ClusterActionsBottomSheetComponent>,\r\n\t\tprivate favoritesHandler: FavoritesHandlerService,\r\n\t\tprivate plateformHelper: PlatformHelper,\r\n\t\t@Inject(MAT_BOTTOM_SHEET_DATA) public data: any,\r\n\t\t@Optional() @Inject(IV_BASE_URL) public ivBaseUrl: string,\r\n\t\t@Inject(TAGNPASS) public link: any,\r\n\t\tprivate realTimeData: RealtimeDataService,\r\n\t\tprivate router: Router,\r\n\t\tprivate disturbanceService : DisturbancesService,\r\n\t\tprivate alerteService : FavoriteComponentAlerteService\r\n\t) {\r\n\t\tthis.isMobile = this.plateformHelper.isMobile();\r\n\t\tthis.poi = this.data.data;\r\n\t\tif (this.data.buttons){\r\n\t\t\tthis.buttons = this.data.buttons;\r\n\t\t}\r\n\t\tif (this.poi && this.poi.properties && this.poi.properties.code && this.buttons.affluence) {\r\n\t\t\tthis.realTimeData.getClusterStoptimes(this.poi.properties.code, this.poi.line)\r\n\t\t\t\t.pipe(takeUntil(this.unSubscriber))\r\n\t\t\t\t.subscribe((stopTimes: StopTime[]) => {\r\n\t\t\t\t\tif (stopTimes.length > 0 && stopTimes[0].times && stopTimes[0].times[0].occupancyId && stopTimes[0].times[0].occupancyId !== 0) {\r\n\t\t\t\t\t\tthis.affluenceLvl = stopTimes[0].times[0].occupancyId;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.disturbanceService.disturbancesTC$.subscribe((value : any) => {\r\n\t\t\tlet evtTc : any = {};\r\n\t\t\tfor (const idEvt in value) {\r\n\t\t\t\tif(typeof value[idEvt].listeLigne !== 'undefined'){\r\n\t\t\t\t\tlet ligne = value[idEvt].listeLigne.replace('_', ':');\r\n\t\t\t\t\tif(typeof evtTc[ligne] === 'undefined') {\r\n\t\t\t\t\t\tevtTc[ligne] = {'niveauService' : 0, 'disturances': {}};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tevtTc[ligne]['disturances'][idEvt] = value[idEvt];\r\n\t\t\t\t\tevtTc[ligne]['niveauService'] < value[idEvt]['nsv_id'] ? evtTc[ligne]['niveauService'] = value[idEvt]['nsv_id'] : '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.disturbanceLigne = Object.values(evtTc[this.data.data.line]['disturances']);\r\n\t\t})\r\n\r\n\t}\r\n\r\n\teditFavorite() {\r\n\t\tconst handler = this.favoritesHandler.getHandler(this.poi);\r\n\t\thandler.edit(this.data).subscribe(_ => {\r\n\t\t\tthis.dismissBottomSheet();\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tdismissBottomSheet(): void {\r\n\t\tthis._bottomSheetRef.dismiss();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.unSubscriber.next();\r\n\t\tthis.unSubscriber.complete();\r\n\t}\r\n\r\n\tenableAlerte(){\r\n\t\tthis.alerteService.updateLigneAlerte(this.poi.line,true)\r\n\t}\r\n\r\n\tdisableAlerte(){\r\n\t\tthis.alerteService.updateLigneAlerte(this.poi.line,false)\r\n\t}\r\n\r\n\tisAlerted(){\r\n\t\treturn this.alerteService.isAlerted(this.poi.line);\r\n\t}\r\n\tisOnMobile(){\r\n\t\treturn this.alerteService.isOnMobileDevice();\r\n\t}\r\n}\r\n","<div class=\"layout align-center\">\r\n\t<div class=\"layout align-center margin-right padding--all---spacing\">\r\n\t\t<div [mfHasDisturbance]=\"{ lineOrNsv: poi.line }\" [outer]=\"true\" #disturbance=\"mfHasDisturbance\">\r\n\t\t\t<div>\r\n\t\t\t\t<!-- TODO: faire un else avec ligne \"custom\" -->\r\n\t\t\t\t<m-logo-lines *ngIf=\"poi.line | line\" [height]=\"48\" [ligne]=\"poi.line | line\" [width]=\"48\">\r\n\t\t\t\t</m-logo-lines>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"full-width ellipsis\">\r\n\t\t<div class=\"layout align-center\">\r\n\t\t\t<span class=\"ellipsis item-name\">{{ poi | libelle }}</span>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n\r\n<m-disturbance-display [disturbance]=\"disturbance\" [disturbanceCollection]=\"disturbanceLigne\"\r\n\t[link]=\"disturbanceLigne | mfDisturbanceRouterLink : data.data.line\"\r\n\t(click)=\"dismissBottomSheet()\"></m-disturbance-display>\r\n\r\n<mat-nav-list class=\"basic no-padding\">\r\n\t<a class=\"notif-button\" mat-list-item *ngIf=\"this.buttons.notifications && !isAlerted() && isOnMobile()\"\r\n\t\t(click)=\"enableAlerte()\">\r\n\t\t<div matListItemIcon aria-hidden=\"true\" class=\"notification-div\">\r\n\t\t\t<mat-icon fontSet=\"material-icons-outlined\">notification_add\r\n\t\t\t</mat-icon>\r\n\t\t</div>\r\n\t\t<span matListItemTitle>Activer les alertes</span>\r\n\r\n\t</a>\r\n\t<a class=\"notif-button\" mat-list-item *ngIf=\"this.buttons.notifications && isAlerted() && isOnMobile()\"\r\n\t\t(click)=\"disableAlerte()\">\r\n\t\t<m-icons matListItemIcon aria-hidden=\"true\">notifications_off</m-icons>\r\n\t\t<span matListItemTitle>Désactiver les alertes</span>\r\n\t</a>\r\n\t<a (click)=\"dismissBottomSheet()\" mat-list-item *ngIf=\"this.buttons.fiche_horaire\"\r\n\t\t[routerLink]=\"['horaires', 'lignes', 'detailligne', poi.line, 'fiche']\">\r\n\t\t<m-icons matListItemIcon aria-hidden=\"true\">access_time</m-icons>\r\n\t\t<span matListItemTitle>Fiche Horaire</span>\r\n\t</a>\r\n\t<a (click)=\"dismissBottomSheet()\" mat-list-item\r\n\t\t[attr.href]=\"(isMobile ? link.deepLinkTagPass : link.webLink) | safeUrl\" target=\"_blank\"\r\n\t\t*ngIf=\"this.buttons.ticket\">\r\n\t\t<m-icons matListItemIcon aria-hidden=\"true\">credit_card</m-icons>\r\n\t\t<span matListItemTitle>Ticket</span>\r\n\t</a>\r\n\t<a (click)=\"dismissBottomSheet()\" mat-list-item [routerLink]=\"this.poi | lineDetailRouterLink\"\r\n\t\t*ngIf=\"this.buttons.detail_ligne\">\r\n\t\t<m-icons matListItemIcon class=\"rotate--90\" aria-hidden=\"true\">linear_scale</m-icons>\r\n\t\t<span matListItemTitle>Détail de la ligne</span>\r\n\t</a>\r\n\t<a (click)=\"dismissBottomSheet()\" mat-list-item [routerLink]=\"this.poi | detailPoiRouterLink\"\r\n\t\t*ngIf=\"this.buttons.loc_arret\">\r\n\t\t<m-icons matListItemIcon aria-hidden=\"true\">place</m-icons>\r\n\t\t<span matListItemTitle>Localisation de l'arrêt</span>\r\n\t</a>\r\n\t<a (click)=\"dismissBottomSheet()\" mat-list-item [routerLink]=\"['itineraire']\"\r\n\t\t[queryParams]=\"{arr: poi | libelle, lonlatArr: poi | pmFixCoordinates | mfJoin}\"\r\n\t\t*ngIf=\"this.buttons.itineraire\">\r\n\t\t<m-icons matListItemIcon aria-hidden=\"true\">near_me</m-icons>\r\n\t\t<span matListItemTitle>Itinéraire vers ce point</span>\r\n\t</a>\r\n</mat-nav-list>\r\n\r\n<!--<ng-container *ngIf=\"this.buttons.affluence && affluenceLvl !== null\">-->\r\n<!--\t<mat-divider></mat-divider>-->\r\n<!--\t<m-affluence [lvl]=\"affluenceLvl\"></m-affluence>-->\r\n<!--</ng-container>-->\r\n\r\n\r\n<mat-divider *ngIf=\"this.buttons.ajout_fav\"></mat-divider>\r\n\r\n<mat-action-list class=\"no-padding\" *ngIf=\"this.buttons.ajout_fav\">\r\n\t<button mat-list-item (click)=\"editFavorite()\">\r\n\t\t<m-icons matListItemIcon aria-hidden=\"true\">add</m-icons>\r\n\t\t<span matListItemTitle>Nouvelle ligne favorite à cet arrêt</span>\r\n\t</button>\r\n</mat-action-list>","import { Component, OnInit } from '@angular/core';\r\nimport { MatBottomSheet } from '@angular/material/bottom-sheet';\r\nimport {\r\n\tFavoriteComponentModeService,\r\n\tmodeStatus,\r\n} from '../../../services/favorite-component-mode.service';\r\nimport { FavoriteType } from '../../../favorite.model';\r\nimport { ClusterActionsBottomSheetComponent } from '../../cluster-actions-bottomsheet/cluster-actions-bottomsheet.component';\r\nimport { Shape } from '@metromobilite/m-ui/m-logo-lines';\r\n\r\n@Component({\r\n\ttemplateUrl: './cluster-favorite.component.html',\r\n\tstyleUrls: ['./cluster-favorite.component.scss'],\r\n})\r\nexport class ClusterFavoriteComponent implements FavoriteType, OnInit {\r\n\tfavoriteType = 'clusters';\r\n\titem: any;\r\n\tpoi: any;\r\n\tmode: modeStatus;\r\n\tghosts = Array(2);\r\n\r\n\t/**\r\n\t * Display/hide the loader.\r\n\t */\r\n\tloader = false;\r\n\t/**\r\n\t * Set the period between each loads.\r\n\t */\r\n\tperiod = 15000;\r\n\t/**\r\n\t * Enable/disable the auto load behavior.\r\n\t * If this property change during loading, only future loads will be disabled.\r\n\t */\r\n\trefresh = true;\r\n\t/**\r\n\t * The strategy to use to display realtime data (per-lines or chrono).\r\n\t * You can define a custom strategy by extending the RealtimeDataStrategyBase abstract class or implement the RealtimeDataStrategy interface.\r\n\t */\r\n\tstrategy: 'per-lines' | 'chrono' | string = 'per-lines';\r\n\texpandedChild: boolean;\r\n\r\n\tShape = Shape;\r\n\tisOldSemNewSE2 : boolean = false;\r\n\treadonly oldSem = ['SEM:59', 'SEM:80', 'SEM:82', 'SEM:C11', 'SEM:C12', 'SEM:C13', 'SEM:90', 'SEM:69', 'SEM:84', 'SEM:85', 'SEM:86', 'SEM:88']\r\n\r\n\tconstructor(\r\n\t\tprivate _bottomSheet: MatBottomSheet,\r\n\t\tprivate favMode: FavoriteComponentModeService\r\n\t) {\r\n\t\tthis.favMode.onModeChange().subscribe(() => {\r\n\t\t\tthis.mode = this.favMode.getCurrentModeStatus();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.poi = this.item.data;\r\n\t\tthis.checkOldSemNewSE2()\r\n\t}\r\n\r\n\tchangeState(state: boolean) {\r\n\t\tthis.expandedChild = state;\r\n\t}\r\n\r\n\topenClusterActions(): void {\r\n\t\tthis._bottomSheet.open(ClusterActionsBottomSheetComponent, {\r\n\t\t\tdata: this.item,\r\n\t\t\tpanelClass: ['m-theme', 'spacing-iphone-X'],\r\n\t\t});\r\n\t}\r\n\r\n\tisHourDisplay(timeDisplay: string): boolean {\r\n\t\treturn timeDisplay.includes(':');\r\n\t}\r\n\r\n\tcheckOldSemNewSE2(): void {\t\t\r\n\t\tthis.isOldSemNewSE2 = this.oldSem.includes(this.poi.line);\r\n\t}\r\n}\r\n","<mf-favorite-type-wrapper [type]=\"favoriteType\" (expansionStateChange)=\"changeState($event)\" [disabled]=\"(item.data.line | line) === undefined && mode === 0\">\r\n\t<ng-container favorite-wrapper-header>\r\n\t\t<ng-container>\r\n\t\t\t<mf-realtime-data\r\n\t\t\t\t[poi]=\"poi\"\r\n\t\t\t\t[lines]=\"[item.data.line | line]\"\r\n\t\t\t\t[refresh]=\"refresh\"\r\n\t\t\t\t[loader]=\"loader\"\r\n\t\t\t\t[strategy]=\"strategy\"\r\n\t\t\t\t[period]=\"period\"\r\n\t\t\t\tclass=\"full-width\"\r\n\t\t\t>\r\n\t\t\t\t<ng-template mfRealtimeDataTemplate let-realtimeDataItems let-loading=\"loading\" let-unavailable=\"unavailable\" let-empty=\"empty\" let-reasons=\"reasons\">\r\n\t\t\t\t\t<span class=\"layout light-overlay-inner align-center padding--right---spacing\" [ngClass]=\"mode == 0 && 'dark-overlay-0'\">\r\n\t\t\t\t\t\t<span class=\"layout align-center margin-right\">\r\n\t\t\t\t\t\t\t<span [mfHasDisturbance]=\"{lineOrNsv: item.data.line}\">\r\n\t\t\t\t\t\t\t\t<m-logo-lines *ngIf=\"item.data.line | line; else fakeLine\"\r\n\t\t\t\t\t\t\t\t\t\t\t  [ligne]=\"item.data.line | line\"\r\n\t\t\t\t\t\t\t\t\t\t\t  [height]=\"60\"\r\n\t\t\t\t\t\t\t\t\t\t\t  [width]=\"56\"\r\n\t\t\t\t\t\t\t\t\t\t\t  [shape]=\"Shape.SQUARE\"\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t</m-logo-lines>\r\n\r\n\t\t\t\t\t\t\t\t<ng-template #fakeLine>\r\n\t\t\t\t\t\t\t\t\t<m-logo-lines [ligne]=\"item.data.line | mfFakeLine\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t  [height]=\"60\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t  [width]=\"56\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t  [shape]=\"Shape.SQUARE\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t  >\r\n\t\t\t\t\t\t\t\t\t</m-logo-lines>\r\n\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<span class=\"full-width ellipsis padding--tb---spacing-2\">\r\n\t\t\t\t\t\t\t<span class=\"layout align-center padding--right---spacing-2\">\r\n\t\t\t\t\t\t\t\t<span class=\"ellipsis item-name\">{{item.data | libelle}}</span>\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<span *ngIf=\"mode == 0\">\r\n\t\t\t\t\t\t\t<m-icons *ngIf=\"expandedChild\">unfold_less</m-icons>\r\n\t\t\t\t\t\t\t<m-icons *ngIf=\"!expandedChild\">unfold_more</m-icons>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<m-icons *ngIf=\"mode == 1\">drag_indicator</m-icons>\r\n\t\t\t\t\t\t<m-icons *ngIf=\"mode == 2\">delete</m-icons>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span class=\"full-width ellipsis padding--tb---spacing-2 light-overlay\" *ngIf=\"mode == 0\">\r\n\t\t\t\t\t\t<ul *ngIf=\"!unavailable && loading && realtimeDataItems.length === 0\" class=\"m-theme m-list ghost important\" aria-hidden=\"true\">\r\n\t\t\t\t\t\t\t<li *ngFor=\"let item of ghosts\"></li>\r\n\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t<!-- <span>{{item.data | libelle}} - {{unavailable}} - {{empty}}</span> -->\r\n\t\t\t\t\t\t<mat-list class=\"basic no-padding--right\" *ngIf=\"!unavailable && !empty; else emptyData;\">\r\n\t\t\t\t\t\t\t<ng-container *ngFor=\"let item of realtimeDataItems\">\r\n\t\t\t\t\t\t\t\t<mat-list-item *ngIf=\"item.visible\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"layout\" style=\"width: 100%\">\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"flex layout align-center\" *ngIf=\"!item.loading\">\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"ellipsis item-name\" *ngIf=\"!item.loading\">{{item.pattern.lastStopName}}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"time-wrapper\">\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"divider vertical right\" *ngIf=\"!item.loading\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"layout column\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"time-value-wrapper\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<mf-realtime-icon *ngIf=\"item.times[0]?.realtime\"></mf-realtime-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<b [class.hourLine]=\"item.times[0] | time | isHourDisplay\">{{item.times[0] | time}}</b>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"text-secondary\">{{item.times[0] | timeUnit}}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t<span *ngIf=\"!item.loading\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"layout column\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"time-value-wrapper text-secondary\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<mf-realtime-icon *ngIf=\"item.times[1]?.realtime\"></mf-realtime-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<b [class.hourLine]=\"item.times[1] | time | isHourDisplay\">{{item.times[1] | time}}</b>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"text-secondary\">{{item.times[1] | timeUnit}}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t</mat-list-item>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t</mat-list>\r\n\t\t\t\t\t\t<ng-template #emptyData>\r\n\t\t\t\t\t\t\t<span class=\"layout align-center content-center\">\r\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"reasons.length > 0\" [ngSwitch]=\"reasons[0].reason\">\r\n\t\t\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"'line-not-found'\">\r\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"isOldSemNewSE2; else basicError\">\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"error-message-se2\">\r\n\t\t\t\t\t\t\t\t\t\t\t\tDes modifications techniques sur cette ligne nécessitent de supprimer et de recréer ce favori.\r\n\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t\t<ng-template #basicError>\r\n\t\t\t\t\t\t\t\t\t\t\tCette ligne ne circule pas actuellement ou n'existe plus.\r\n\t\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t<ng-container *ngSwitchCase=\"'no-service'\">\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"text-secondary ellipsis\">Pas de passage dans l'immédiat.</span>\r\n\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t<ng-container *ngSwitchDefault>\r\n\t\t\t\t\t\t\t\t\t\tDonnées indisponibles.\r\n\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</mf-realtime-data>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<ng-container favorite-wrapper-content>\r\n\t\t<div class=\"actions dark-overlay-8 light-overlay-inner layout align-center\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<ng-container *ngIf=\"item.data && (item.data.geometry || item.data.properties.geometry)\">\r\n\t\t\t\t\t<button mat-button class=\"m-theme\" color=\"primary\" (click)=\"openClusterActions()\">\r\n\t\t\t\t\t\tAutres actions\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mf-favorite-type-wrapper>\r\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\r\nimport { IV_BASE_URL } from '@metromobilite/m-features/core';\r\nimport { FavoriteType } from '../../../favorite.model';\r\n\r\n@Component({\r\n\ttemplateUrl: './mva-favorite.component.html',\r\n\tstyleUrls: ['./mva-favorite.component.scss']\r\n})\r\nexport class MvaFavoriteComponent implements FavoriteType, OnInit {\r\n\tfavoriteType = 'MVA';\r\n\titem: any;\r\n\r\n\tconstructor(@Optional() @Inject(IV_BASE_URL) public ivBaseUrl: string) { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n}\r\n","<mf-favorite-type-wrapper>\r\n\t<ng-container favorite-wrapper-header>\r\n\t\t<span class=\"full-width ellipsis padding--tb---spacing-2 light-overlay\">\r\n\t\t\t<span class=\"layout align-center padding--right---spacing-2\">\r\n\t\t\t\t<m-icons class=\"panel-icon margin--left\" [type]=\"item.data.properties.subtype || item.type\"></m-icons>\r\n\t\t\t\t<span class=\"m-multiline ellipsis\">\r\n\t\t\t\t\t<span class=\"ellipsis\">{{ item.data | libelle }}</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\" *ngIf=\"item.data.properties.meta.subline\">\r\n\t\t\t\t\t\t<span *ngIf=\"item.data.properties.meta.displayType\">\r\n\t\t\t\t\t\t\t{{ item.data.properties?.type | mfTypeLabel }}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\" *ngIf=\"item.data.properties.ADRESSE\">\r\n\t\t\t\t\t\t{{ item.data.properties?.ADRESSE }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</span>\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t</ng-container>\r\n\t<ng-container favorite-wrapper-content>\r\n\t\t<div class=\"actions dark-overlay-8 light-overlay-inner layout align-center\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<ng-container *ngIf=\"item.data && (item.data.geometry || item.data.properties.geometry)\">\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"item.data | detailPoiRouterLink: ivBaseUrl\" mat-button class=\"m-theme\"\r\n\t\t\t\t\t\tcolor=\"primary\">\r\n\t\t\t\t\t\tVoir sur la carte\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"[ivBaseUrl, 'itineraire']\"\r\n\t\t\t\t\t\t[queryParams]=\"{arr: item.data | libelle, lonlatArr: item.data | pmFixCoordinates | mfJoin}\" mat-button\r\n\t\t\t\t\t\tclass=\"m-theme\" color=\"primary\">\r\n\t\t\t\t\t\tItinéraire vers ce favori\r\n\t\t\t\t\t</a>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mf-favorite-type-wrapper>\r\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\r\nimport { IV_BASE_URL } from '@metromobilite/m-features/core';\r\nimport { FavoriteType } from '../../../favorite.model';\r\n\r\n@Component({\r\n\ttemplateUrl: './agence-m-favorite.component.html',\r\n\tstyleUrls: ['./agence-m-favorite.component.scss']\r\n})\r\nexport class AgenceMFavoriteComponent implements FavoriteType, OnInit {\r\n\tfavoriteType = 'agenceM';\r\n\titem: any;\r\n\r\n\tconstructor(@Optional() @Inject(IV_BASE_URL) public ivBaseUrl: string) { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n}\r\n","<mf-favorite-type-wrapper>\r\n\t<ng-container favorite-wrapper-header>\r\n\t\t<span class=\"full-width ellipsis padding--tb---spacing-2 light-overlay\">\r\n\t\t\t<span class=\"layout align-center padding--right---spacing-2\">\r\n\t\t\t\t<m-icons class=\"panel-icon margin--left\" [type]=\"item.data.properties.subtype || item.type\"></m-icons>\r\n\t\t\t\t<span class=\"m-multiline ellipsis\">\r\n\t\t\t\t\t<span class=\"ellipsis\">{{ item.data | libelle }}</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\">Lun - Ven : {{ item.data.properties.HORAIRES_LUNDI || 'N/A'\r\n\t\t\t\t\t\t}}</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\">Samedi : {{ item.data.properties.HORAIRES_SAMEDI || 'N/A' }}</span>\r\n\t\t\t\t</span>\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t</ng-container>\r\n\t<ng-container favorite-wrapper-content>\r\n\t\t<div class=\"actions dark-overlay-8 light-overlay-inner layout align-center\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<ng-container *ngIf=\"item.data && (item.data.geometry || item.data.properties.geometry)\">\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"item.data | detailPoiRouterLink: ivBaseUrl\" mat-button class=\"m-theme\"\r\n\t\t\t\t\t\tcolor=\"primary\">\r\n\t\t\t\t\t\tVoir sur la carte\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"[ivBaseUrl, 'itineraire']\"\r\n\t\t\t\t\t\t[queryParams]=\"{arr: item.data | libelle, lonlatArr: item.data | pmFixCoordinates | mfJoin}\"\r\n\t\t\t\t\t\tmat-button class=\"m-theme\" color=\"primary\">\r\n\t\t\t\t\t\tItinéraire vers ce favori\r\n\t\t\t\t\t</a>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mf-favorite-type-wrapper>\r\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\r\nimport { IV_BASE_URL } from '@metromobilite/m-features/core';\r\nimport { FavoriteType } from '../../../favorite.model';\r\n\r\n@Component({\r\n\ttemplateUrl: './irve-favorite.component.html',\r\n\tstyleUrls: ['./irve-favorite.component.scss']\r\n})\r\nexport class IrveFavoriteComponent implements FavoriteType, OnInit {\r\n\tfavoriteType = 'irve';\r\n\titem: any;\r\n\r\n\tconstructor(@Optional() @Inject(IV_BASE_URL) public ivBaseUrl: string) { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n}\r\n","<mf-favorite-type-wrapper>\r\n\t<ng-container favorite-wrapper-header>\r\n\t\t<span class=\"full-width ellipsis padding--tb---spacing-2 light-overlay\">\r\n\t\t\t<span class=\"layout align-center padding--right---spacing-2\">\r\n\t\t\t\t<m-icons class=\"panel-icon margin--left\" [type]=\"item.data.properties.subtype || item.type\"></m-icons>\r\n\t\t\t\t<span class=\"m-multiline ellipsis\">\r\n\t\t\t\t\t<span class=\"ellipsis\">{{ item.data | libelle }}</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\">\r\n\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t<ng-container [ngPlural]=\"item.data.properties.nbre_pdc\">\r\n\t\t\t\t\t\t\t\t<ng-template ngPluralCase=\"=0\">Aucune borne</ng-template>\r\n\t\t\t\t\t\t\t\t<ng-template ngPluralCase=\"=1\">{{ (item.data.properties.nbre_pdc) }} borne</ng-template>\r\n\t\t\t\t\t\t\t\t<ng-template ngPluralCase=\"other\">{{ (item.data.properties.nbre_pdc) }} bornes\r\n\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\">\r\n\t\t\t\t\t\t<span *ngIf=\"item.data.properties.meta.pdcTypePrise\">{{ item.data.properties.meta.pdcTypePrise }}</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</span>\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t</ng-container>\r\n\t<ng-container favorite-wrapper-content>\r\n\t\t<div class=\"actions dark-overlay-8 light-overlay-inner layout align-center\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<ng-container *ngIf=\"item.data && (item.data.geometry || item.data.properties.geometry)\">\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"item.data | detailPoiRouterLink: ivBaseUrl\" mat-button class=\"m-theme\"\r\n\t\t\t\t\t\tcolor=\"primary\">\r\n\t\t\t\t\t\tVoir sur la carte\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"[ivBaseUrl, 'itineraire']\"\r\n\t\t\t\t\t\t[queryParams]=\"{arr: item.data | libelle, lonlatArr: item.data | pmFixCoordinates | mfJoin}\" mat-button\r\n\t\t\t\t\t\tclass=\"m-theme\" color=\"primary\">\r\n\t\t\t\t\t\tItinéraire vers ce favori\r\n\t\t\t\t\t</a>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mf-favorite-type-wrapper>\r\n","import { Component, Inject, Optional } from '@angular/core';\r\nimport { IV_BASE_URL } from '@metromobilite/m-features/core';\r\nimport { DataTransformerService } from '@metromobilite/m-features/data';\r\nimport { FavoriteType } from '../../../favorite.model';\r\n\r\n@Component({\r\n\ttemplateUrl: './parking-favorite.component.html',\r\n\tstyleUrls: ['./parking-favorite.component.scss']\r\n})\r\nexport class ParkingFavoriteComponent implements FavoriteType {\r\n\tfavoriteType = 'parking';\r\n\t_item: any;\r\n\r\n\tset item(value: any) {\r\n\t\tthis._item = {\r\n\t\t\t...value,\r\n\t\t\tdata: this.dataTransformerService.featureToObject(value.data),\r\n\t\t};\r\n\t}\r\n\r\n\tget item() {\r\n\t\treturn this._item;\r\n\t}\r\n\r\n\tconstructor(@Optional() @Inject(IV_BASE_URL) public ivBaseUrl: string, private dataTransformerService: DataTransformerService) { }\r\n}\r\n","<mf-favorite-type-wrapper>\r\n\t<ng-container favorite-wrapper-header>\r\n\t\t<span class=\"full-width ellipsis padding--tb---spacing-2 light-overlay\">\r\n\t\t\t<span class=\"layout align-center padding--right---spacing-2\">\r\n\t\t\t\t<m-icons class=\"panel-icon margin--left\" [type]=\"item.data.properties.subtype || item.type\"></m-icons>\r\n\t\t\t\t<span class=\"m-multiline ellipsis\">\r\n\t\t\t\t\t<span class=\"ellipsis\">{{ item.data | libelle }}</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\">\r\n\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"item.data.properties.subtype && ['PKG'].includes(item.data.properties.subtype); else notParkingType\">\r\n\t\t\t\t\t\t\t\t{{ item.data.properties.gratuit ? 'Parking gratuit' : 'Parking payant' }}\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t<ng-template #notParkingType>\r\n\t\t\t\t\t\t\t\t{{ (item.data.properties.subtype || item.data.properties?.type) | mfTypeLabel }}\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\">\r\n\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"(item.data.properties.meta.nbPlace | async); else unavailable\">\r\n\t\t\t\t\t\t\t\t<ng-container [ngPlural]=\"(item.data.properties.meta.nbPlace | async)\">\r\n\t\t\t\t\t\t\t\t\t<ng-template ngPluralCase=\"=0\">Aucune place disponible</ng-template>\r\n\t\t\t\t\t\t\t\t\t<ng-template ngPluralCase=\"=1\">1 place disponible</ng-template>\r\n\t\t\t\t\t\t\t\t\t<ng-template ngPluralCase=\"other\">{{ (item.data.properties.meta.nbPlace | async) }} places disponibles\r\n\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t<ng-template #unavailable>\r\n\t\t\t\t\t\t\t\t<span *ngIf=\"item.data.properties\">Capacité totale: {{ item.data.properties.nb_places }} place(s)</span>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</span>\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t</ng-container>\r\n\t<ng-container favorite-wrapper-content>\r\n\t\t<div class=\"actions dark-overlay-8 light-overlay-inner layout align-center\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<ng-container *ngIf=\"item.data && (item.data.geometry || item.data.properties.geometry)\">\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"item.data | detailPoiRouterLink: ivBaseUrl\" mat-button class=\"m-theme\"\r\n\t\t\t\t\t\tcolor=\"primary\">\r\n\t\t\t\t\t\tVoir sur la carte\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"[ivBaseUrl, 'itineraire']\"\r\n\t\t\t\t\t\t[queryParams]=\"{arr: item.data | libelle, lonlatArr: item.data | pmFixCoordinates | mfJoin}\" mat-button\r\n\t\t\t\t\t\tclass=\"m-theme\" color=\"primary\">\r\n\t\t\t\t\t\tItinéraire vers ce favori\r\n\t\t\t\t\t</a>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mf-favorite-type-wrapper>\r\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\r\nimport { IV_BASE_URL } from '@metromobilite/m-features/core';\r\nimport { FavoriteType } from '../../../favorite.model';\r\n\r\n@Component({\r\n\ttemplateUrl: './cam-favorite.component.html',\r\n\tstyleUrls: ['./cam-favorite.component.scss']\r\n})\r\nexport class CamFavoriteComponent implements FavoriteType, OnInit {\r\n\tfavoriteType = 'CAM';\r\n\titem: any;\r\n\r\n\tconstructor(@Optional() @Inject(IV_BASE_URL) public ivBaseUrl: string) { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n}\r\n","<mf-favorite-type-wrapper>\r\n\t<ng-container favorite-wrapper-header>\r\n\t\t<span class=\"full-width ellipsis padding--tb---spacing-2 light-overlay\">\r\n\t\t\t<span class=\"layout align-center padding--right---spacing-2\">\r\n\t\t\t\t<m-icons class=\"panel-icon margin--left\" [type]=\"item.data.properties.subtype || item.type\"></m-icons>\r\n\t\t\t\t<span class=\"ellipsis\">{{ item.data | libelle }}</span>\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t</ng-container>\r\n\t<ng-container favorite-wrapper-content>\r\n\t\t<div class=\"layout content-center\">\r\n\t\t\t<mf-webcam-player [data]=\"item.data\"></mf-webcam-player>\r\n\t\t</div>\r\n\t\t<div class=\"actions dark-overlay-8 light-overlay-inner layout align-center\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<ng-container *ngIf=\"item.data && (item.data.geometry || item.data.properties.geometry)\">\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"item.data | detailPoiRouterLink: ivBaseUrl\" mat-button class=\"m-theme\"\r\n\t\t\t\t\t\tcolor=\"primary\">\r\n\t\t\t\t\t\tVoir sur la carte\r\n\t\t\t\t\t</a>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mf-favorite-type-wrapper>\r\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\r\nimport { IV_BASE_URL } from '@metromobilite/m-features/core';\r\nimport { McoHelper } from '@metromobilite/m-features/point-cov';\r\nimport { FavoriteType } from '../../../favorite.model';\r\n\r\n@Component({\r\n\ttemplateUrl: './point-cov-favorite.component.html',\r\n\tstyleUrls: ['./point-cov-favorite.component.scss']\r\n})\r\nexport class PointCovFavoriteComponent implements FavoriteType, OnInit {\r\n\tfavoriteType = 'pointCov';\r\n\titem?: any;\r\n\tisEcov: boolean;\r\n\r\n\tconstructor(@Optional() @Inject(IV_BASE_URL) public ivBaseUrl: string, private mcoHelper: McoHelper) { }\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.isEcov = this.mcoHelper.isEcov(this.item.data);\r\n\t}\r\n\r\n}\r\n","<mf-favorite-type-wrapper>\r\n\t<ng-container favorite-wrapper-header>\r\n\t\t<span class=\"full-width ellipsis padding--tb---spacing-2 light-overlay\">\r\n\t\t\t<span class=\"layout align-center padding--right---spacing-2\">\r\n\t\t\t\t<m-icons class=\"panel-icon margin--left\" [type]=\"item.data.properties.subtype || item.type\"></m-icons>\r\n\t\t\t\t<span class=\"m-multiline ellipsis\">\r\n\t\t\t\t\t<span class=\"ellipsis\">{{ item.data | libelle }}</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\">\r\n\t\t\t\t\t\t{{ (item.data.properties.subtype || item.data.properties?.type) | mfTypeLabel }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</span>\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t</ng-container>\r\n\t<ng-container favorite-wrapper-content>\r\n\t\t<div *ngIf=\"isEcov\" class=\"padding--tb---spacing-2 dark-overlay-1\">\r\n\t\t\t<mf-point-cov [poi]=\"item.data\"></mf-point-cov>\r\n\t\t</div>\r\n\t\t<div class=\"actions layout align-center dark-overlay-8 light-overlay-inner\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<ng-container *ngIf=\"item.data && (item.data.geometry || item.data.properties.geometry)\">\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"item.data | detailPoiRouterLink: ivBaseUrl\" mat-button\r\n\t\t\t\t\t\tclass=\"m-theme\" color=\"primary\">\r\n\t\t\t\t\t\tVoir sur la carte\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"[ivBaseUrl, 'itineraire']\"\r\n\t\t\t\t\t\t[queryParams]=\"{arr: item.data | libelle, lonlatArr: item.data | pmFixCoordinates | mfJoin}\"\r\n\t\t\t\t\t\tmat-button class=\"m-theme\" color=\"primary\">\r\n\t\t\t\t\t\tItinéraire vers ce favori\r\n\t\t\t\t\t</a>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mf-favorite-type-wrapper>\r\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\r\nimport { IV_BASE_URL } from '@metromobilite/m-features/core';\r\nimport { FavoriteType } from '../../../favorite.model';\r\n\r\n@Component({\r\n\ttemplateUrl: './taxi-favorite.component.html',\r\n\tstyleUrls: ['./taxi-favorite.component.scss']\r\n})\r\nexport class TaxiFavoriteComponent implements FavoriteType, OnInit {\r\n\tfavoriteType = 'stationstaxi';\r\n\titem: any;\r\n\r\n\tconstructor(@Optional() @Inject(IV_BASE_URL) public ivBaseUrl: string) { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n}\r\n","<mf-favorite-type-wrapper>\r\n\t<ng-container favorite-wrapper-header>\r\n\t\t<span class=\"full-width ellipsis padding--tb---spacing-2 light-overlay\">\r\n\t\t\t<span class=\"layout align-center padding--right---spacing-2\">\r\n\t\t\t\t<m-icons class=\"panel-icon margin--left\" [type]=\"item.data.properties.subtype || item.type\"></m-icons>\r\n\t\t\t\t<span class=\"m-multiline ellipsis\">\r\n\t\t\t\t\t<span class=\"ellipsis\">{{ item.data | libelle }}</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\">\r\n\t\t\t\t\t\t{{(item.data.properties.subtype || item.data.properties?.type) | mfTypeLabel}}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span class=\"ellipsis sub-line\">\r\n\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"item.data.properties.emplacements; else notParkingType\">\r\n\t\t\t\t\t\t\t\t{{ item.data.properties.emplacements }}\r\n\t\t\t\t\t\t\t\templacements\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t<ng-template #notParkingType>\r\n\t\t\t\t\t\t\t\t0 emplacement\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</span>\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t</ng-container>\r\n\t<ng-container favorite-wrapper-content>\r\n\t\t<div class=\"actions dark-overlay-8 light-overlay-inner layout align-center\">\r\n\t\t\t<div class=\"flex\">\r\n\t\t\t\t<ng-container *ngIf=\"item.data && (item.data.geometry || item.data.properties.geometry)\">\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"item.data | detailPoiRouterLink: ivBaseUrl\" mat-button class=\"m-theme\"\r\n\t\t\t\t\t\tcolor=\"primary\">\r\n\t\t\t\t\t\tVoir sur la carte\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<a *ngIf=\"ivBaseUrl\" [mfPmAbsoluteLink]=\"[ivBaseUrl, 'itineraire']\"\r\n\t\t\t\t\t\t[queryParams]=\"{arr: item.data | libelle, lonlatArr: item.data | pmFixCoordinates | mfJoin}\" mat-button\r\n\t\t\t\t\t\tclass=\"m-theme\" color=\"primary\">\r\n\t\t\t\t\t\tItinéraire vers ce favori\r\n\t\t\t\t\t</a>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mf-favorite-type-wrapper>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MDisturbanceDisplay } from '@metromobilite/m-ui/lib/m-disturbance-display';\r\nimport { MIcons } from '@metromobilite/m-ui/lib/m-icons';\r\nimport { MLogoLines } from '@metromobilite/m-ui/lib/m-logo-lines';\r\nimport { FavoriteLinesSelectorDialogComponent } from './favorite-lines-selector-dialog/favorite-lines-selector-dialog.component';\r\nimport { FavoriteDirective } from './favorite.directive';\r\nimport { CoreModule } from '@metromobilite/m-features/core';\r\nimport { ReferenceModule } from '@metromobilite/m-features/reference';\r\nimport {\r\n\tFAVORITE_HANDLER,\r\n\tFAVORITE_STORAGE_KEY,\r\n\tFAVORITE_TYPE,\r\n} from './favorites.token';\r\nimport { UnknownFavoriteHandler } from './handlers/unknown.favorite';\r\nimport { PoiFavoriteHandler } from './handlers/poi.favorite';\r\nimport { ClustersFavoriteHandler } from './handlers/clusters.favorite';\r\nimport { ItineraireFavoriteHandler } from './handlers/itineraire.favorite';\r\nimport { FavoriteAllowedPipe } from './favorite-allowed.pipe';\r\nimport { DisturbancesModule } from '@metromobilite/m-features/disturbances';\r\nimport { DefaultFavoriteComponent } from './components/types/default/default-favorite.component';\r\nimport { FavoriteTypeHostDirective } from './directives/favorite-type.directive';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { FavoriteTypeWrapperComponent } from './components/favorite-type-wrapper/favorite-type-wrapper.component';\r\nimport { ItineraryFavoriteComponent } from './components/types/itinerary/itinerary-favorite.component';\r\nimport { ClusterFavoriteComponent } from './components/types/cluster/cluster-favorite.component';\r\nimport { RealtimeDataModule } from '@metromobilite/m-features/realtime-data';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MvaFavoriteComponent } from './components/types/mva/mva-favorite.component';\r\nimport { AgenceMFavoriteComponent } from './components/types/agence-m/agence-m-favorite.component';\r\nimport { IrveFavoriteComponent } from './components/types/irve/irve-favorite.component';\r\nimport { ParkingFavoriteComponent } from './components/types/parking/parking-favorite.component';\r\nimport { CamFavoriteComponent } from './components/types/cam/cam-favorite.component';\r\nimport { WebcamModule } from '@metromobilite/m-features/webcam';\r\nimport { DataModule } from '@metromobilite/m-features/data';\r\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\r\nimport { ClusterActionsBottomSheetComponent } from './components/cluster-actions-bottomsheet/cluster-actions-bottomsheet.component';\r\nimport { TimeSheetModule } from '@metromobilite/m-features/time-sheet';\r\nimport { PointCovFavoriteComponent } from './components/types/poi-cov-favorite/point-cov-favorite.component';\r\nimport { PointCovModule } from '@metromobilite/m-features/point-cov';\r\nimport { TaxiFavoriteComponent } from './components/types/taxi/taxi-favorite.component';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        FavoriteLinesSelectorDialogComponent,\r\n        FavoriteDirective,\r\n        FavoriteTypeHostDirective,\r\n        FavoriteAllowedPipe,\r\n        FavoriteTypeWrapperComponent,\r\n        ClusterFavoriteComponent,\r\n        DefaultFavoriteComponent,\r\n        ItineraryFavoriteComponent,\r\n        MvaFavoriteComponent,\r\n        AgenceMFavoriteComponent,\r\n        IrveFavoriteComponent,\r\n        MvaFavoriteComponent,\r\n        ParkingFavoriteComponent,\r\n        CamFavoriteComponent,\r\n        ClusterActionsBottomSheetComponent,\r\n        PointCovFavoriteComponent,\r\n        TaxiFavoriteComponent,\r\n    ],\r\n    exports: [\r\n        FavoriteLinesSelectorDialogComponent,\r\n        FavoriteDirective,\r\n        FavoriteTypeHostDirective,\r\n        FavoriteAllowedPipe\r\n    ],\r\n    providers: [\r\n        { provide: FAVORITE_STORAGE_KEY, useValue: 'm-features:favorites' },\r\n        {\r\n            provide: FAVORITE_HANDLER,\r\n            useClass: UnknownFavoriteHandler,\r\n            multi: true,\r\n        },\r\n        {\r\n            provide: FAVORITE_HANDLER,\r\n            useClass: PoiFavoriteHandler,\r\n            multi: true,\r\n        },\r\n        {\r\n            provide: FAVORITE_HANDLER,\r\n            useClass: ClustersFavoriteHandler,\r\n            multi: true,\r\n        },\r\n        {\r\n            provide: FAVORITE_HANDLER,\r\n            useClass: ItineraireFavoriteHandler,\r\n            multi: true,\r\n        },\r\n        {\r\n            provide: FAVORITE_TYPE,\r\n            useClass: ClusterFavoriteComponent,\r\n            multi: true,\r\n        },\r\n        {\r\n            provide: FAVORITE_TYPE,\r\n            useClass: DefaultFavoriteComponent,\r\n            multi: true,\r\n        },\r\n        {\r\n            provide: FAVORITE_TYPE,\r\n            useClass: ItineraryFavoriteComponent,\r\n            multi: true,\r\n        },\r\n        {\r\n            provide: FAVORITE_TYPE,\r\n            useClass: AgenceMFavoriteComponent,\r\n            multi: true,\r\n        },\r\n        {\r\n            provide: FAVORITE_TYPE,\r\n            useClass: IrveFavoriteComponent,\r\n            multi: true,\r\n        },\r\n        { provide: FAVORITE_TYPE, useClass: MvaFavoriteComponent, multi: true },\r\n        {\r\n            provide: FAVORITE_TYPE,\r\n            useClass: ParkingFavoriteComponent,\r\n            multi: true,\r\n        },\r\n        { provide: FAVORITE_TYPE, useClass: CamFavoriteComponent, multi: true },\r\n        {\r\n            provide: FAVORITE_TYPE,\r\n            useClass: PointCovFavoriteComponent,\r\n            multi: true,\r\n        },\r\n        {\r\n            provide: FAVORITE_TYPE,\r\n            useClass: TaxiFavoriteComponent,\r\n            multi: true,\r\n        },\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        CoreModule,\r\n        ReferenceModule,\r\n        MatIconModule,\r\n        MatDialogModule,\r\n        MatCheckboxModule,\r\n        MatProgressSpinnerModule,\r\n        MatButtonModule,\r\n        MatSnackBarModule,\r\n        A11yModule,\r\n        DisturbancesModule,\r\n        MatExpansionModule,\r\n        MatListModule,\r\n        RealtimeDataModule,\r\n        WebcamModule,\r\n        DataModule,\r\n        MatBottomSheetModule,\r\n        MatListModule,\r\n        TimeSheetModule,\r\n        PointCovModule,\r\n        RouterModule,\r\n        MIcons,\r\n        MLogoLines,\r\n\t\tMDisturbanceDisplay\r\n    ]\r\n})\r\nexport class FavoritesModule {}\r\n","import { animation, query, style, animate } from '@angular/animations';\r\n\r\nexport const favoriteInAnimation = animation([\r\n\tquery(':self', style({ width: '*', height: '*' })),\r\n\tquery(':enter, :leave', style({ position: 'absolute', transform: 'translate(-50%, -50%)' }), { optional: true }),\r\n\tquery(':enter', [\r\n\t\tstyle({ opacity: 0, transform: 'translate(-50%, -100%)' }),\r\n\t], { optional: true }),\r\n\tquery(':leave', [\r\n\t\tstyle({ opacity: 1 }),\r\n\t\tanimate('{{ time }}', style({ opacity: 0, transform: 'translate(-50%, 0)' }))\r\n\t], { optional: true }),\r\n\tquery(':enter', [\r\n\t\tanimate('{{ time }}', style({ opacity: 1, transform: 'translate(-50%, -50%)' }))\r\n\t], { optional: true }),\r\n]);\r\n\r\nexport const favoriteOutAnimation = animation([\r\n\tquery(':self', style({ width: '*', height: '*' })),\r\n\tquery(':enter, :leave', style({ position: 'absolute', transform: 'translate(-50%, -50%)' }), { optional: true }),\r\n\tquery(':enter', [\r\n\t\tstyle({ opacity: 0, transform: 'translate(-50%, 0)' }),\r\n\t], { optional: true }),\r\n\tquery(':leave', [\r\n\t\tstyle({ opacity: 1 }),\r\n\t\tanimate('{{ time }}', style({ opacity: 0, transform: 'translate(-50%, -100%)' }))\r\n\t], { optional: true }),\r\n\tquery(':enter', [\r\n\t\tanimate('{{ time }}', style({ opacity: 1, transform: 'translate(-50%, -50%)' }))\r\n\t], { optional: true }),\r\n]);\r\n\r\nexport const favoriteSlideLeftAnimation = animation([\r\n\tquery(':self', style({ width: '*', height: '*' })),\r\n\tquery(':enter, :leave', style({ position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%, -50%)' }), { optional: true }),\r\n\tquery(':enter', [\r\n\t\tstyle({ opacity: 0, transform: 'translate(-60%, -50%)' }),\r\n\t], { optional: true }),\r\n\tquery(':leave', [\r\n\t\tstyle({ opacity: 1 }),\r\n\t\tanimate('{{ time }}', style({ opacity: 0, transform: 'translate(-40%, -50%)' }))\r\n\t], { optional: true }),\r\n\tquery(':enter', [\r\n\t\tanimate('{{ time }}', style({ opacity: 1, transform: 'translate(-50%, -50%)' }))\r\n\t], { optional: true }),\r\n]);\r\n\r\nexport const favoriteSlideRightAnimation = animation([\r\n\tquery(':self', style({ width: '*', height: '*' })),\r\n\tquery(':enter, :leave', style({ position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%, -50%)' }), { optional: true }),\r\n\tquery(':enter', [\r\n\t\tstyle({ opacity: 0, transform: 'translate(-40%, -50%)' }),\r\n\t], { optional: true }),\r\n\tquery(':leave', [\r\n\t\tstyle({ opacity: 1 }),\r\n\t\tanimate('{{ time }}', style({ opacity: 0, transform: 'translate(-60%, -50%)' }))\r\n\t], { optional: true }),\r\n\tquery(':enter', [\r\n\t\tanimate('{{ time }}', style({ opacity: 1, transform: 'translate(-50%, -50%)' }))\r\n\t], { optional: true }),\r\n]);\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.FavoritesService","i4","i5","i1","i8","i9","i10","i1.FavoritesService","i2.FavoritesHandlerService","i2.FavoriteLinesSelectorDialogService","i1.FavoriteComponentModeService","i2","i3","i5.FavoriteTypeWrapperComponent","i6","i7.FavoriteComponentAlerteService","i13","i14","i2.FavoriteComponentModeService","i7","i10.FavoriteTypeWrapperComponent","i11","i6.FavoriteTypeWrapperComponent"],"mappings":"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"}