From 483315572140892d268f697247b3b5f164d773da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thea=20Sch=C3=B6bl?= Date: Wed, 15 Nov 2023 19:19:25 +0100 Subject: [PATCH] refactor: rework components --- frontend/app/package.json | 43 +- frontend/app/src/app/animation/fab-expand.ts | 5 +- frontend/app/src/app/app.component.spec.ts | 2 +- frontend/app/src/app/app.component.ts | 9 +- frontend/app/src/app/app.module.ts | 6 +- .../modules/about/about-licenses.component.ts | 2 +- .../app/src/app/modules/about/about.module.ts | 2 - .../modules/assessments/assessments.module.ts | 2 - .../detail/assessments-detail.component.ts | 2 +- .../page/auth-callback-page.component.ts | 2 +- .../app/modules/auth/auth-helper.service.ts | 2 +- .../app/src/app/modules/auth/auth.module.ts | 2 +- .../modules/auth/factories/http.factory.ts | 2 +- .../modules/auth/factories/storage.factory.ts | 2 +- .../app/modules/calendar/calendar.module.ts | 2 - .../src/app/modules/catalog/catalog.module.ts | 2 - .../modules/dashboard/dashboard-collapse.ts | 2 +- .../modules/dashboard/dashboard.component.ts | 2 +- .../app/modules/dashboard/dashboard.module.ts | 2 - .../search-section/search-route-transition.ts | 5 +- .../search-section.component.ts | 2 +- .../data/add-event-action-chip.component.ts | 2 +- .../chips/edit-event-selection.component.ts | 2 +- .../chips/filter/chip-filter.component.html | 4 +- .../chips/filter/chip-filter.component.ts | 3 + .../app/src/app/modules/data/data.module.ts | 15 +- .../data/debug-data-collector.service.ts | 2 +- .../detail/data-detail-content.component.ts | 2 +- .../data/detail/data-detail.component.spec.ts | 2 +- .../data/detail/data-detail.component.ts | 2 +- .../data/detail/data-path.component.ts | 2 +- .../modules/data/list/data-list.component.ts | 2 +- .../data/list/search-page-switch-animation.ts | 7 +- .../data/list/search-page.component.ts | 2 +- .../mensa/place-mensa-detail.component.ts | 2 +- .../favorites/favorites-page.component.ts | 2 +- .../app/modules/favorites/favorites.module.ts | 2 - .../feedback/feedback-page.component.ts | 2 +- .../app/modules/feedback/feedback.module.ts | 2 - .../hebis-detail.component.spec.ts | 2 - .../app/src/app/modules/hebis/hebis.module.ts | 10 +- .../app/src/app/modules/jobs/jobs.module.ts | 2 - .../account/library-account.service.ts | 2 +- .../src/app/modules/library/library.module.ts | 2 - .../modules/map/geo-navigation.directive.ts | 2 +- .../app/src/app/modules/map/map.module.ts | 44 +- .../map/page/map-list-modal.component.ts | 21 +- .../app/modules/map/page/map-list-modal.html | 24 +- .../app/modules/map/page/map-list-modal.scss | 2 +- .../modules/map/page/map-page.component.ts | 55 +- .../map/widget/map-widget.component.ts | 12 +- .../app/modules/map/widget/map-widget.html | 4 +- .../context/context-menu.component.spec.ts | 10 +- .../menu/context/context-menu.component.ts | 38 +- .../menu/context/context-menu.service.ts | 4 +- .../app/src/app/modules/menu/menu.module.ts | 45 - .../menu/navigation/navigation.component.ts | 39 +- .../modules/menu/navigation/navigation.html | 14 +- .../menu/navigation/navigation.module.ts | 31 - .../navigation/offline-notice.component.ts | 6 +- .../menu/navigation/root-link.directive.ts | 3 +- .../menu/navigation/tabs-routing.module.ts | 20 +- .../menu/navigation/tabs-transition.ts | 7 +- .../modules/menu/navigation/tabs.component.ts | 9 +- .../{tabs.template.html => tabs.html} | 29 +- .../{tabs.component.scss => tabs.scss} | 0 .../app/modules/menu/navigation/tabs.spec.ts | 2 +- .../news-settings-filter.component.html | 18 +- .../news-settings-filter.component.ts | 7 +- .../modules/news/item/news-item.component.ts | 18 +- .../src/app/modules/news/item/news-item.html | 6 +- .../news/item/skeleton-news-item.component.ts | 13 +- .../app/src/app/modules/news/news.module.ts | 44 +- .../modules/news/page/news-page.component.ts | 46 +- .../src/app/modules/news/page/news-page.html | 18 +- .../app/modules/profile/id-cards.component.ts | 4 +- .../src/app/modules/profile/profile.module.ts | 30 +- .../schedule/page/calendar-view.component.ts | 2 +- .../page/components/calendar.component.ts | 2 +- .../schedule/page/schedule-page.component.ts | 2 +- .../schedule/page/schedule-view.component.ts | 13 +- .../app/modules/schedule/schedule.module.ts | 50 +- .../settings/item/settings-item.component.ts | 2 +- .../page/calendar-sync-settings.component.ts | 2 +- .../settings/page/settings-page.component.ts | 2 +- .../app/modules/settings/settings.module.ts | 34 +- frontend/app/src/app/util/browser.factory.ts | 2 +- .../app/src/app/util/edit-modal.component.ts | 2 +- .../ion-icon/ion-back-button.directive.ts | 2 +- .../app/util/ion-icon/ion-icon.component.ts | 8 + .../app/util/ion-icon/ion-icon.directive.ts | 3 +- .../app/src/app/util/ion-icon/replace-util.ts | 2 +- .../app/util/pending-changes-action-sheet.ts | 2 +- .../app/util/searchbar-autofocus.directive.ts | 2 +- .../app/src/app/util/section.component.ts | 5 + frontend/app/src/app/util/util.module.ts | 12 +- pnpm-lock.yaml | 1468 ++++++++++------- 97 files changed, 1440 insertions(+), 977 deletions(-) delete mode 100644 frontend/app/src/app/modules/menu/menu.module.ts delete mode 100644 frontend/app/src/app/modules/menu/navigation/navigation.module.ts rename frontend/app/src/app/modules/menu/navigation/{tabs.template.html => tabs.html} (53%) rename frontend/app/src/app/modules/menu/navigation/{tabs.component.scss => tabs.scss} (100%) create mode 100644 frontend/app/src/app/util/ion-icon/ion-icon.component.ts diff --git a/frontend/app/package.json b/frontend/app/package.json index 458895f6..a40076c6 100644 --- a/frontend/app/package.json +++ b/frontend/app/package.json @@ -53,15 +53,16 @@ "test:integration": "sh integration-test.sh" }, "dependencies": { - "@angular/animations": "17.0.0", - "@angular/cdk": "16.1.4", - "@angular/common": "17.0.0", - "@angular/core": "17.0.0", - "@angular/forms": "17.0.0", - "@angular/platform-browser": "17.0.0", - "@angular/router": "17.0.0", - "@asymmetrik/ngx-leaflet": "16.0.1", - "@asymmetrik/ngx-leaflet-markercluster": "16.0.0", + "@angular/animations": "17.0.2", + "@angular/cdk": "17.0.0", + "@angular/common": "17.0.2", + "@angular/core": "17.0.2", + "@angular/elements": "17.0.2", + "@angular/forms": "17.0.2", + "@angular/platform-browser": "17.0.2", + "@angular/router": "17.0.2", + "@asymmetrik/ngx-leaflet": "17.0.0", + "@asymmetrik/ngx-leaflet-markercluster": "17.0.0", "@awesome-cordova-plugins/calendar": "5.45.0", "@awesome-cordova-plugins/core": "5.45.0", "@capacitor/app": "4.1.1", @@ -82,7 +83,7 @@ "@capacitor/status-bar": "4.1.1", "@hugotomazi/capacitor-navigation-bar": "2.0.0", "@ionic-native/core": "5.36.0", - "@ionic/angular": "7.1.3", + "@ionic/angular": "7.5.5", "@ionic/storage-angular": "4.0.0", "@ngx-translate/core": "15.0.0", "@ngx-translate/http-loader": "8.0.0", @@ -98,7 +99,7 @@ "deepmerge": "4.3.1", "form-data": "4.0.0", "geojson": "0.5.0", - "ionic-appauth": "0.9.0", + "ionic-appauth": "2.0.0", "jsonpath-plus": "6.0.1", "leaflet": "1.9.3", "leaflet.markercluster": "1.5.3", @@ -106,7 +107,7 @@ "moment": "2.29.4", "ngx-date-fns": "10.0.1", "ngx-logger": "5.0.12", - "ngx-markdown": "16.0.0", + "ngx-markdown": "17.1.0", "ngx-moment": "6.0.2", "opening_hours": "3.8.0", "rxjs": "7.8.1", @@ -119,16 +120,16 @@ "@angular-devkit/build-angular": "17.0.0", "@angular-devkit/core": "17.0.0", "@angular-devkit/schematics": "17.0.0", - "@angular-eslint/builder": "16.1.0", - "@angular-eslint/eslint-plugin": "16.1.0", - "@angular-eslint/eslint-plugin-template": "16.1.0", - "@angular-eslint/schematics": "16.1.0", - "@angular-eslint/template-parser": "16.1.0", + "@angular-eslint/builder": "17.0.1", + "@angular-eslint/eslint-plugin": "17.0.1", + "@angular-eslint/eslint-plugin-template": "17.0.1", + "@angular-eslint/schematics": "17.0.1", + "@angular-eslint/template-parser": "17.0.1", "@angular/cli": "17.0.0", - "@angular/compiler": "17.0.0", - "@angular/compiler-cli": "17.0.0", - "@angular/language-service": "17.0.0", - "@angular/platform-browser-dynamic": "17.0.0", + "@angular/compiler": "17.0.2", + "@angular/compiler-cli": "17.0.2", + "@angular/language-service": "17.0.2", + "@angular/platform-browser-dynamic": "17.0.2", "@capacitor/android": "4.6.1", "@capacitor/cli": "4.6.1", "@capacitor/ios": "4.6.1", diff --git a/frontend/app/src/app/animation/fab-expand.ts b/frontend/app/src/app/animation/fab-expand.ts index 92823fb5..87e310d9 100644 --- a/frontend/app/src/app/animation/fab-expand.ts +++ b/frontend/app/src/app/animation/fab-expand.ts @@ -12,9 +12,8 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ - -import {AnimationBuilder, AnimationController} from '@ionic/angular'; -import {AnimationOptions} from '@ionic/angular/providers/nav-controller'; +import {AnimationBuilder, AnimationController} from '@ionic/angular/standalone'; +import {AnimationOptions} from '@ionic/angular/common/providers/nav-controller'; import {iosDuration, iosEasing, mdDuration, mdEasing} from './easings'; /** diff --git a/frontend/app/src/app/app.component.spec.ts b/frontend/app/src/app/app.component.spec.ts index 073828a1..83df227f 100644 --- a/frontend/app/src/app/app.component.spec.ts +++ b/frontend/app/src/app/app.component.spec.ts @@ -17,7 +17,7 @@ import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core'; import {TestBed} from '@angular/core/testing'; -import {Platform} from '@ionic/angular'; +import {Platform} from '@ionic/angular/standalone'; import {TranslateService} from '@ngx-translate/core'; import {ThingTranslateService} from './translation/thing-translate.service'; diff --git a/frontend/app/src/app/app.component.ts b/frontend/app/src/app/app.component.ts index 8006ca65..d9c864be 100644 --- a/frontend/app/src/app/app.component.ts +++ b/frontend/app/src/app/app.component.ts @@ -12,10 +12,10 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -import {AfterContentInit, Component, NgZone} from '@angular/core'; +import {AfterContentInit, Component, inject, Injector, NgZone} from '@angular/core'; import {Router} from '@angular/router'; import {App, URLOpenListenerEvent} from '@capacitor/app'; -import {Platform, ToastController} from '@ionic/angular'; +import {Platform, ToastController} from '@ionic/angular/standalone'; import {SettingsProvider} from './modules/settings/settings.provider'; import {AuthHelperService} from './modules/auth/auth-helper.service'; import {environment} from '../environments/environment'; @@ -24,6 +24,8 @@ import {Capacitor} from '@capacitor/core'; import {ScheduleSyncService} from './modules/background/schedule/schedule-sync.service'; import {NavigationBar} from '@hugotomazi/capacitor-navigation-bar'; import {Keyboard, KeyboardResize} from '@capacitor/keyboard'; +import {createCustomElement} from '@angular/elements'; +import {IonIconComponent} from './util/ion-icon/ion-icon.component'; /** * TODO @@ -70,6 +72,9 @@ export class AppComponent implements AfterContentInit { private readonly toastController: ToastController, private readonly scheduleSyncService: ScheduleSyncService, ) { + const IonIconElement = createCustomElement(IonIconComponent, {injector: inject(Injector)}); + customElements.define('ion-icon', IonIconElement); + void this.initializeApp(); } diff --git a/frontend/app/src/app/app.module.ts b/frontend/app/src/app/app.module.ts index 4de1b435..7ff71b92 100644 --- a/frontend/app/src/app/app.module.ts +++ b/frontend/app/src/app/app.module.ts @@ -18,7 +18,7 @@ import localeDe from '@angular/common/locales/de'; import {APP_INITIALIZER, NgModule} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser'; import {RouteReuseStrategy} from '@angular/router'; -import {IonicModule, IonicRouteStrategy, Platform} from '@ionic/angular'; +import {IonApp, IonicRouteStrategy, Platform} from '@ionic/angular/standalone'; import {TranslateLoader, TranslateModule, TranslateService} from '@ngx-translate/core'; import {TranslateHttpLoader} from '@ngx-translate/http-loader'; import moment from 'moment'; @@ -68,6 +68,7 @@ import {browserFactory, SimpleBrowser} from './util/browser.factory'; import {getDateFnsLocale} from './translation/dfns-locale'; import {setDefaultOptions} from 'date-fns'; import {DateFnsConfigurationService} from 'ngx-date-fns'; +import {provideIonicAngular} from '@ionic/angular/standalone'; registerLocaleData(localeDe); @@ -133,6 +134,7 @@ export function createTranslateLoader(http: HttpClient) { bootstrap: [AppComponent], declarations: [AppComponent], imports: [ + IonApp, AboutModule, AppRoutingModule, AuthModule, @@ -146,7 +148,6 @@ export function createTranslateLoader(http: HttpClient) { DashboardModule, DataModule, HebisModule, - IonicModule.forRoot(), IonIconModule, JobModule, FavoritesModule, @@ -177,6 +178,7 @@ export function createTranslateLoader(http: HttpClient) { }), ], providers: [ + provideIonicAngular(), { provide: RouteReuseStrategy, useClass: IonicRouteStrategy, diff --git a/frontend/app/src/app/modules/about/about-licenses.component.ts b/frontend/app/src/app/modules/about/about-licenses.component.ts index 79bab44d..068b7019 100644 --- a/frontend/app/src/app/modules/about/about-licenses.component.ts +++ b/frontend/app/src/app/modules/about/about-licenses.component.ts @@ -13,7 +13,7 @@ * this program. If not, see . */ import {Component, OnInit} from '@angular/core'; -import {ModalController} from '@ionic/angular'; +import {ModalController} from '@ionic/angular/standalone'; import {AboutLicenseModalComponent} from './about-license-modal.component'; import licensesFile from 'src/assets/about/licenses.json'; diff --git a/frontend/app/src/app/modules/about/about.module.ts b/frontend/app/src/app/modules/about/about.module.ts index 5c975fa3..6d888620 100644 --- a/frontend/app/src/app/modules/about/about.module.ts +++ b/frontend/app/src/app/modules/about/about.module.ts @@ -16,7 +16,6 @@ import {RouterModule, Routes} from '@angular/router'; import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {FormsModule} from '@angular/forms'; -import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; import {ThingTranslateModule} from '../../translation/thing-translate.module'; import {ConfigProvider} from '../config/config.provider'; @@ -55,7 +54,6 @@ const settingsRoutes: Routes = [ CommonModule, IonIconModule, FormsModule, - IonicModule.forRoot(), TranslateModule.forChild(), ThingTranslateModule.forChild(), RouterModule.forChild(settingsRoutes), diff --git a/frontend/app/src/app/modules/assessments/assessments.module.ts b/frontend/app/src/app/modules/assessments/assessments.module.ts index a6eb1373..71b4d298 100644 --- a/frontend/app/src/app/modules/assessments/assessments.module.ts +++ b/frontend/app/src/app/modules/assessments/assessments.module.ts @@ -19,7 +19,6 @@ import {AssessmentBaseInfoComponent} from './types/assessment/assessment-base-in import {AssessmentDetailComponent} from './types/assessment/assessment-detail.component'; import {CommonModule} from '@angular/common'; import {FormsModule} from '@angular/forms'; -import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; import {DataModule} from '../data/data.module'; import {ThingTranslateModule} from '../../translation/thing-translate.module'; @@ -70,7 +69,6 @@ const routes: ProtectedRoutes = [ CommonModule, FormsModule, IonIconModule, - IonicModule, RouterModule.forChild(routes), TranslateModule, DataModule, diff --git a/frontend/app/src/app/modules/assessments/detail/assessments-detail.component.ts b/frontend/app/src/app/modules/assessments/detail/assessments-detail.component.ts index 0ce6359c..744c6bc2 100644 --- a/frontend/app/src/app/modules/assessments/detail/assessments-detail.component.ts +++ b/frontend/app/src/app/modules/assessments/detail/assessments-detail.component.ts @@ -17,7 +17,7 @@ import {Component, DestroyRef, inject, Input, OnInit, ViewChild} from '@angular/ import {ActivatedRoute} from '@angular/router'; import {AssessmentsProvider} from '../assessments.provider'; import {DataDetailComponent, ExternalDataLoadEvent} from '../../data/detail/data-detail.component'; -import {NavController} from '@ionic/angular'; +import {NavController} from '@ionic/angular/standalone'; import {DataRoutingService} from '../../data/data-routing.service'; import {SCAssessment} from '@openstapps/core'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; diff --git a/frontend/app/src/app/modules/auth/auth-callback/page/auth-callback-page.component.ts b/frontend/app/src/app/modules/auth/auth-callback/page/auth-callback-page.component.ts index c21ab68f..cd45070e 100644 --- a/frontend/app/src/app/modules/auth/auth-callback/page/auth-callback-page.component.ts +++ b/frontend/app/src/app/modules/auth/auth-callback/page/auth-callback-page.component.ts @@ -13,7 +13,7 @@ * this program. If not, see . */ import {Component} from '@angular/core'; -import {NavController} from '@ionic/angular'; +import {NavController} from '@ionic/angular/standalone'; import {Router} from '@angular/router'; import {AuthActions, IAuthAction} from 'ionic-appauth'; import {AuthHelperService} from '../../auth-helper.service'; diff --git a/frontend/app/src/app/modules/auth/auth-helper.service.ts b/frontend/app/src/app/modules/auth/auth-helper.service.ts index 39994816..3c782bee 100644 --- a/frontend/app/src/app/modules/auth/auth-helper.service.ts +++ b/frontend/app/src/app/modules/auth/auth-helper.service.ts @@ -29,7 +29,7 @@ import {StorageProvider} from '../storage/storage.provider'; import {DefaultAuthService} from './default-auth.service'; import {PAIAAuthService} from './paia/paia-auth.service'; import {SimpleBrowser} from '../../util/browser.factory'; -import {AlertController} from '@ionic/angular'; +import {AlertController} from '@ionic/angular/standalone'; const AUTH_ORIGIN_PATH = 'stapps.auth.origin_path'; diff --git a/frontend/app/src/app/modules/auth/auth.module.ts b/frontend/app/src/app/modules/auth/auth.module.ts index 690a4c2c..9b47b366 100644 --- a/frontend/app/src/app/modules/auth/auth.module.ts +++ b/frontend/app/src/app/modules/auth/auth.module.ts @@ -1,6 +1,6 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {Platform} from '@ionic/angular'; +import {Platform} from '@ionic/angular/standalone'; import {Requestor, StorageBackend} from '@openid/appauth'; import {storageFactory} from './factories'; import {Browser} from 'ionic-appauth'; diff --git a/frontend/app/src/app/modules/auth/factories/http.factory.ts b/frontend/app/src/app/modules/auth/factories/http.factory.ts index 6ba5e276..ec137d73 100644 --- a/frontend/app/src/app/modules/auth/factories/http.factory.ts +++ b/frontend/app/src/app/modules/auth/factories/http.factory.ts @@ -14,7 +14,7 @@ */ import {HttpClient} from '@angular/common/http'; -import {Platform} from '@ionic/angular'; +import {Platform} from '@ionic/angular/standalone'; import {CapacitorRequestor} from '../capacitor-requestor'; import {NgHttpService} from '../ng-http.service'; diff --git a/frontend/app/src/app/modules/auth/factories/storage.factory.ts b/frontend/app/src/app/modules/auth/factories/storage.factory.ts index 0bb5f194..2b9a3449 100644 --- a/frontend/app/src/app/modules/auth/factories/storage.factory.ts +++ b/frontend/app/src/app/modules/auth/factories/storage.factory.ts @@ -13,7 +13,7 @@ * this program. If not, see . */ -import {Platform} from '@ionic/angular'; +import {Platform} from '@ionic/angular/standalone'; import {IonicStorage} from 'ionic-appauth/lib'; import {SafeCapacitorSecureStorage} from '../../storage/capacitor-secure-storage'; diff --git a/frontend/app/src/app/modules/calendar/calendar.module.ts b/frontend/app/src/app/modules/calendar/calendar.module.ts index b28658fe..8ae4f442 100644 --- a/frontend/app/src/app/modules/calendar/calendar.module.ts +++ b/frontend/app/src/app/modules/calendar/calendar.module.ts @@ -18,7 +18,6 @@ import {AddEventReviewModalComponent} from './add-event-review-modal.component'; import {Calendar} from '@awesome-cordova-plugins/calendar/ngx'; import {CalendarService} from './calendar.service'; import {ScheduleProvider} from './schedule.provider'; -import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; import {ThingTranslateModule} from '../../translation/thing-translate.module'; import {FormsModule} from '@angular/forms'; @@ -30,7 +29,6 @@ import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; @NgModule({ declarations: [AddEventReviewModalComponent], imports: [ - IonicModule.forRoot(), TranslateModule.forChild(), ThingTranslateModule.forChild(), IonIconModule, diff --git a/frontend/app/src/app/modules/catalog/catalog.module.ts b/frontend/app/src/app/modules/catalog/catalog.module.ts index 88644e69..99d0daa2 100644 --- a/frontend/app/src/app/modules/catalog/catalog.module.ts +++ b/frontend/app/src/app/modules/catalog/catalog.module.ts @@ -16,7 +16,6 @@ import {CommonModule} from '@angular/common'; import {NgModule} from '@angular/core'; import {FormsModule} from '@angular/forms'; import {RouterModule, Routes} from '@angular/router'; -import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; import {MomentModule} from 'ngx-moment'; import {DataModule} from '../data/data.module'; @@ -36,7 +35,6 @@ const catalogRoutes: Routes = [ @NgModule({ declarations: [CatalogComponent], imports: [ - IonicModule.forRoot(), FormsModule, TranslateModule.forChild(), RouterModule.forChild(catalogRoutes), diff --git a/frontend/app/src/app/modules/dashboard/dashboard-collapse.ts b/frontend/app/src/app/modules/dashboard/dashboard-collapse.ts index 790ccf34..a9a169f3 100644 --- a/frontend/app/src/app/modules/dashboard/dashboard-collapse.ts +++ b/frontend/app/src/app/modules/dashboard/dashboard-collapse.ts @@ -13,7 +13,7 @@ * this program. If not, see . */ -import {Animation, AnimationController} from '@ionic/angular'; +import {Animation, AnimationController} from '@ionic/angular/standalone'; import {NgZone} from '@angular/core'; export class DashboardCollapse { diff --git a/frontend/app/src/app/modules/dashboard/dashboard.component.ts b/frontend/app/src/app/modules/dashboard/dashboard.component.ts index 8cc03aab..39f718ee 100644 --- a/frontend/app/src/app/modules/dashboard/dashboard.component.ts +++ b/frontend/app/src/app/modules/dashboard/dashboard.component.ts @@ -20,7 +20,7 @@ import {SCDateSeries, SCUuid} from '@openstapps/core'; import {SplashScreen} from '@capacitor/splash-screen'; import {DataRoutingService} from '../data/data-routing.service'; import {ScheduleProvider} from '../calendar/schedule.provider'; -import {AnimationController, IonContent} from '@ionic/angular'; +import {AnimationController, IonContent} from '@ionic/angular/standalone'; import {DashboardCollapse} from './dashboard-collapse'; import {BreakpointObserver} from '@angular/cdk/layout'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; diff --git a/frontend/app/src/app/modules/dashboard/dashboard.module.ts b/frontend/app/src/app/modules/dashboard/dashboard.module.ts index a39c0daa..c4f53de2 100644 --- a/frontend/app/src/app/modules/dashboard/dashboard.module.ts +++ b/frontend/app/src/app/modules/dashboard/dashboard.module.ts @@ -16,7 +16,6 @@ import {CommonModule} from '@angular/common'; import {NgModule} from '@angular/core'; import {FormsModule} from '@angular/forms'; import {RouterModule, Routes} from '@angular/router'; -import {IonicModule} from '@ionic/angular'; import {SwiperModule} from 'swiper/angular'; import {TranslateModule, TranslatePipe} from '@ngx-translate/core'; import {MomentModule} from 'ngx-moment'; @@ -56,7 +55,6 @@ const catalogRoutes: Routes = [ JobSectionComponent, ], imports: [ - IonicModule.forRoot(), IonIconModule, FormsModule, TranslateModule.forChild(), diff --git a/frontend/app/src/app/modules/dashboard/sections/search-section/search-route-transition.ts b/frontend/app/src/app/modules/dashboard/sections/search-section/search-route-transition.ts index 9ea8d976..520e403e 100644 --- a/frontend/app/src/app/modules/dashboard/sections/search-section/search-route-transition.ts +++ b/frontend/app/src/app/modules/dashboard/sections/search-section/search-route-transition.ts @@ -12,9 +12,8 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ - -import {AnimationController} from '@ionic/angular'; -import {AnimationOptions} from '@ionic/angular/providers/nav-controller'; +import {AnimationController} from '@ionic/angular/standalone'; +import {AnimationOptions} from '@ionic/angular/common/providers/nav-controller'; /** * diff --git a/frontend/app/src/app/modules/dashboard/sections/search-section/search-section.component.ts b/frontend/app/src/app/modules/dashboard/sections/search-section/search-section.component.ts index a4c4783a..d1aa97c7 100644 --- a/frontend/app/src/app/modules/dashboard/sections/search-section/search-section.component.ts +++ b/frontend/app/src/app/modules/dashboard/sections/search-section/search-section.component.ts @@ -13,7 +13,7 @@ * this program. If not, see . */ import {Component} from '@angular/core'; -import {AnimationController} from '@ionic/angular'; +import {AnimationController} from '@ionic/angular/standalone'; import {homePageSearchTransition} from './search-route-transition'; /** diff --git a/frontend/app/src/app/modules/data/chips/data/add-event-action-chip.component.ts b/frontend/app/src/app/modules/data/chips/data/add-event-action-chip.component.ts index aa962081..fdd7a5b6 100644 --- a/frontend/app/src/app/modules/data/chips/data/add-event-action-chip.component.ts +++ b/frontend/app/src/app/modules/data/chips/data/add-event-action-chip.component.ts @@ -13,7 +13,7 @@ * this program. If not, see . */ import {Component, DestroyRef, inject, Input, ViewChild} from '@angular/core'; -import {IonRouterOutlet, ModalController} from '@ionic/angular'; +import {IonRouterOutlet, ModalController} from '@ionic/angular/standalone'; import {SCDateSeries, SCThing, SCThingType, SCUuid} from '@openstapps/core'; import {Subscription} from 'rxjs'; import {ScheduleProvider} from '../../../calendar/schedule.provider'; diff --git a/frontend/app/src/app/modules/data/chips/edit-event-selection.component.ts b/frontend/app/src/app/modules/data/chips/edit-event-selection.component.ts index 1ef33120..dd0ea5e0 100644 --- a/frontend/app/src/app/modules/data/chips/edit-event-selection.component.ts +++ b/frontend/app/src/app/modules/data/chips/edit-event-selection.component.ts @@ -13,7 +13,7 @@ * this program. If not, see . */ import {ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; -import {ModalController} from '@ionic/angular'; +import {ModalController} from '@ionic/angular/standalone'; import {SCDateSeries} from '@openstapps/core'; import { DateSeriesRelevantData, diff --git a/frontend/app/src/app/modules/data/chips/filter/chip-filter.component.html b/frontend/app/src/app/modules/data/chips/filter/chip-filter.component.html index 42f523c7..9d7d00a1 100644 --- a/frontend/app/src/app/modules/data/chips/filter/chip-filter.component.html +++ b/frontend/app/src/app/modules/data/chips/filter/chip-filter.component.html @@ -14,6 +14,8 @@ --> - + @if (active) { + + } {{ displayValue }} diff --git a/frontend/app/src/app/modules/data/chips/filter/chip-filter.component.ts b/frontend/app/src/app/modules/data/chips/filter/chip-filter.component.ts index 5c8a258f..ae4656a0 100644 --- a/frontend/app/src/app/modules/data/chips/filter/chip-filter.component.ts +++ b/frontend/app/src/app/modules/data/chips/filter/chip-filter.component.ts @@ -13,6 +13,7 @@ * this program. If not, see . */ import {Component, EventEmitter, Input, Output} from '@angular/core'; +import {IonChip, IonLabel} from '@ionic/angular/standalone'; /** * Shows a chip filter */ @@ -20,6 +21,8 @@ import {Component, EventEmitter, Input, Output} from '@angular/core'; selector: 'stapps-chip-filter', templateUrl: './chip-filter.component.html', styleUrls: ['./chip-filter.component.scss'], + standalone: true, + imports: [IonChip, IonLabel], }) export class ChipFilterComponent { /** diff --git a/frontend/app/src/app/modules/data/data.module.ts b/frontend/app/src/app/modules/data/data.module.ts index 05829062..9cb7a899 100644 --- a/frontend/app/src/app/modules/data/data.module.ts +++ b/frontend/app/src/app/modules/data/data.module.ts @@ -18,7 +18,7 @@ import {HttpClientModule} from '@angular/common/http'; import {NgModule} from '@angular/core'; import {FormsModule} from '@angular/forms'; import {LeafletModule} from '@asymmetrik/ngx-leaflet'; -import {IonicModule, Platform} from '@ionic/angular'; +import {Platform} from '@ionic/angular/standalone'; import {TranslateModule} from '@ngx-translate/core'; import {MarkdownModule} from 'ngx-markdown'; import {MomentModule} from 'ngx-moment'; @@ -30,8 +30,6 @@ import {UtilModule} from '../../util/util.module'; import {CalendarService} from '../calendar/calendar.service'; import {ScheduleProvider} from '../calendar/schedule.provider'; import {GeoNavigationDirective} from '../map/geo-navigation.directive'; -import {MapWidgetComponent} from '../map/widget/map-widget.component'; -import {MenuModule} from '../menu/menu.module'; import {SettingsProvider} from '../settings/settings.provider'; import {StorageModule} from '../storage/storage.module'; import {ActionChipListComponent} from './chips/action-chip-list.component'; @@ -141,7 +139,6 @@ import {VideoListItemComponent} from './types/video/video-list-item.component'; FoodDataListComponent, LocateActionChipComponent, LongInlineTextComponent, - MapWidgetComponent, MessageDetailContentComponent, MessageListItemComponent, JobPostingDetailContentComponent, @@ -186,16 +183,10 @@ import {VideoListItemComponent} from './types/video/video-list-item.component'; DataRoutingModule, FormsModule, HttpClientModule, - IonicModule.forRoot(), LeafletModule, - MarkdownModule.forRoot(), - MenuModule, + MarkdownModule, IonIconModule, - MomentModule.forRoot({ - relativeTimeThresholdOptions: { - m: 59, - }, - }), + MomentModule, ScrollingModule, StorageModule, TranslateModule.forChild(), diff --git a/frontend/app/src/app/modules/data/debug-data-collector.service.ts b/frontend/app/src/app/modules/data/debug-data-collector.service.ts index 9a40acff..6cbfd533 100644 --- a/frontend/app/src/app/modules/data/debug-data-collector.service.ts +++ b/frontend/app/src/app/modules/data/debug-data-collector.service.ts @@ -14,7 +14,7 @@ */ import {Injectable} from '@angular/core'; import {SCFeedbackRequestMetaData} from '@openstapps/core'; -import {Platform} from '@ionic/angular'; +import {Platform} from '@ionic/angular/standalone'; import {DataProvider} from './data.provider'; import {NavigationEnd, Router} from '@angular/router'; import {SettingsProvider} from '../settings/settings.provider'; diff --git a/frontend/app/src/app/modules/data/detail/data-detail-content.component.ts b/frontend/app/src/app/modules/data/detail/data-detail-content.component.ts index 31e1ac46..fd9ee45d 100644 --- a/frontend/app/src/app/modules/data/detail/data-detail-content.component.ts +++ b/frontend/app/src/app/modules/data/detail/data-detail-content.component.ts @@ -15,7 +15,7 @@ import {Component, Input, TemplateRef} from '@angular/core'; import {SCThings} from '@openstapps/core'; import {DataListContext} from '../list/data-list.component'; -import {ModalController} from '@ionic/angular'; +import {ModalController} from '@ionic/angular/standalone'; /** * TODO diff --git a/frontend/app/src/app/modules/data/detail/data-detail.component.spec.ts b/frontend/app/src/app/modules/data/detail/data-detail.component.spec.ts index c75b6dfc..3fafccd1 100644 --- a/frontend/app/src/app/modules/data/detail/data-detail.component.spec.ts +++ b/frontend/app/src/app/modules/data/detail/data-detail.component.spec.ts @@ -17,7 +17,7 @@ import {CUSTOM_ELEMENTS_SCHEMA, DebugElement} from '@angular/core'; import {ComponentFixture, TestBed} from '@angular/core/testing'; import {ActivatedRoute, RouterModule} from '@angular/router'; -import {IonTitle} from '@ionic/angular'; +import {IonTitle} from '@ionic/angular/standalone'; import {TranslateLoader, TranslateModule, TranslateService} from '@ngx-translate/core'; import {sampleThingsMap} from '../../../_helpers/data/sample-things'; import {DataRoutingModule} from '../data-routing.module'; diff --git a/frontend/app/src/app/modules/data/detail/data-detail.component.ts b/frontend/app/src/app/modules/data/detail/data-detail.component.ts index a668a03e..020827f4 100644 --- a/frontend/app/src/app/modules/data/detail/data-detail.component.ts +++ b/frontend/app/src/app/modules/data/detail/data-detail.component.ts @@ -14,7 +14,7 @@ */ import {Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef} from '@angular/core'; import {ActivatedRoute, Router} from '@angular/router'; -import {ModalController} from '@ionic/angular'; +import {ModalController} from '@ionic/angular/standalone'; import {LangChangeEvent, TranslateService} from '@ngx-translate/core'; import {SCLanguageCode, SCSaveableThing, SCThings, SCUuid} from '@openstapps/core'; import {DataProvider, DataScope} from '../data.provider'; diff --git a/frontend/app/src/app/modules/data/detail/data-path.component.ts b/frontend/app/src/app/modules/data/detail/data-path.component.ts index c0c343f4..77382bd3 100644 --- a/frontend/app/src/app/modules/data/detail/data-path.component.ts +++ b/frontend/app/src/app/modules/data/detail/data-path.component.ts @@ -19,7 +19,7 @@ import {DataProvider, DataScope} from '../data.provider'; import {fromEvent, Observable} from 'rxjs'; import {map, startWith} from 'rxjs/operators'; import {DataRoutingService} from '../data-routing.service'; -import {NavController} from '@ionic/angular'; +import {NavController} from '@ionic/angular/standalone'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; @Component({ diff --git a/frontend/app/src/app/modules/data/list/data-list.component.ts b/frontend/app/src/app/modules/data/list/data-list.component.ts index a8883cc1..b32489ab 100644 --- a/frontend/app/src/app/modules/data/list/data-list.component.ts +++ b/frontend/app/src/app/modules/data/list/data-list.component.ts @@ -29,7 +29,7 @@ import { } from '@angular/core'; import {SCThings} from '@openstapps/core'; import {BehaviorSubject, Observable} from 'rxjs'; -import {IonInfiniteScroll} from '@ionic/angular'; +import {IonInfiniteScroll} from '@ionic/angular/standalone'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; export interface DataListContext { diff --git a/frontend/app/src/app/modules/data/list/search-page-switch-animation.ts b/frontend/app/src/app/modules/data/list/search-page-switch-animation.ts index 860103c3..84451fac 100644 --- a/frontend/app/src/app/modules/data/list/search-page-switch-animation.ts +++ b/frontend/app/src/app/modules/data/list/search-page-switch-animation.ts @@ -12,10 +12,9 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ - -import type {AnimationBuilder} from '@ionic/angular'; -import {AnimationController} from '@ionic/angular'; -import type {AnimationOptions} from '@ionic/angular/providers/nav-controller'; +import type {AnimationBuilder} from '@ionic/angular/standalone'; +import {AnimationController} from '@ionic/angular/standalone'; +import type {AnimationOptions} from '@ionic/angular/common/providers/nav-controller'; /** * diff --git a/frontend/app/src/app/modules/data/list/search-page.component.ts b/frontend/app/src/app/modules/data/list/search-page.component.ts index 90ff6d8b..dd747819 100644 --- a/frontend/app/src/app/modules/data/list/search-page.component.ts +++ b/frontend/app/src/app/modules/data/list/search-page.component.ts @@ -15,7 +15,7 @@ import {Component, DestroyRef, inject, Input, OnInit} from '@angular/core'; import {ActivatedRoute, Router} from '@angular/router'; import {Keyboard} from '@capacitor/keyboard'; -import {AlertController, AnimationBuilder, AnimationController} from '@ionic/angular'; +import {AlertController, AnimationBuilder, AnimationController} from '@ionic/angular/standalone'; import {Capacitor} from '@capacitor/core'; import { SCFacet, diff --git a/frontend/app/src/app/modules/data/types/place/special/mensa/place-mensa-detail.component.ts b/frontend/app/src/app/modules/data/types/place/special/mensa/place-mensa-detail.component.ts index 15bd2bd0..18346e1f 100644 --- a/frontend/app/src/app/modules/data/types/place/special/mensa/place-mensa-detail.component.ts +++ b/frontend/app/src/app/modules/data/types/place/special/mensa/place-mensa-detail.component.ts @@ -17,7 +17,7 @@ import {AfterViewInit, Component, DestroyRef, inject, Input} from '@angular/core import {SCDish, SCISO8601Date, SCPlace} from '@openstapps/core'; import {PlaceMensaService} from './place-mensa-service'; import {Router} from '@angular/router'; -import {IonRouterOutlet} from '@ionic/angular'; +import {IonRouterOutlet} from '@ionic/angular/standalone'; import {DataRoutingService} from '../../../../data-routing.service'; import {groupBy} from '@openstapps/collection-utils'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; diff --git a/frontend/app/src/app/modules/favorites/favorites-page.component.ts b/frontend/app/src/app/modules/favorites/favorites-page.component.ts index 167f863a..15a8378d 100644 --- a/frontend/app/src/app/modules/favorites/favorites-page.component.ts +++ b/frontend/app/src/app/modules/favorites/favorites-page.component.ts @@ -13,7 +13,7 @@ * this program. If not, see . */ import {Component, OnInit} from '@angular/core'; -import {AlertController, AnimationController} from '@ionic/angular'; +import {AlertController, AnimationController} from '@ionic/angular/standalone'; import {ActivatedRoute, Router} from '@angular/router'; import {NGXLogger} from 'ngx-logger'; import {debounceTime, distinctUntilChanged, startWith, take} from 'rxjs/operators'; diff --git a/frontend/app/src/app/modules/favorites/favorites.module.ts b/frontend/app/src/app/modules/favorites/favorites.module.ts index e9a69b9f..41ea8f5b 100644 --- a/frontend/app/src/app/modules/favorites/favorites.module.ts +++ b/frontend/app/src/app/modules/favorites/favorites.module.ts @@ -15,7 +15,6 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {FormsModule} from '@angular/forms'; -import {IonicModule} from '@ionic/angular'; import {FavoritesPageComponent} from './favorites-page.component'; import {RouterModule, Routes} from '@angular/router'; import {MenuModule} from '../menu/menu.module'; @@ -35,7 +34,6 @@ const favoritesRoutes: Routes = [ imports: [ CommonModule, FormsModule, - IonicModule, RouterModule.forChild(favoritesRoutes), MenuModule, TranslateModule, diff --git a/frontend/app/src/app/modules/feedback/feedback-page.component.ts b/frontend/app/src/app/modules/feedback/feedback-page.component.ts index 51f38360..43b5427c 100644 --- a/frontend/app/src/app/modules/feedback/feedback-page.component.ts +++ b/frontend/app/src/app/modules/feedback/feedback-page.component.ts @@ -23,7 +23,7 @@ import { } from '@openstapps/core'; import {DataProvider} from '../data/data.provider'; import {DebugDataCollectorService} from '../data/debug-data-collector.service'; -import {AlertController, ToastController} from '@ionic/angular'; +import {AlertController, ToastController} from '@ionic/angular/standalone'; import {TranslateService} from '@ngx-translate/core'; @Component({ diff --git a/frontend/app/src/app/modules/feedback/feedback.module.ts b/frontend/app/src/app/modules/feedback/feedback.module.ts index bd3d58ba..ef302d39 100644 --- a/frontend/app/src/app/modules/feedback/feedback.module.ts +++ b/frontend/app/src/app/modules/feedback/feedback.module.ts @@ -15,7 +15,6 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {FormsModule} from '@angular/forms'; -import {IonicModule} from '@ionic/angular'; import {FeedbackPageComponent} from './feedback-page.component'; import {RouterModule, Routes} from '@angular/router'; import {TranslateModule} from '@ngx-translate/core'; @@ -34,7 +33,6 @@ const feedbackRoutes: Routes = [ imports: [ CommonModule, FormsModule, - IonicModule, IonIconModule, RouterModule.forChild(feedbackRoutes), TranslateModule, diff --git a/frontend/app/src/app/modules/hebis/hebis-detail/hebis-detail.component.spec.ts b/frontend/app/src/app/modules/hebis/hebis-detail/hebis-detail.component.spec.ts index 05845805..be79ad40 100644 --- a/frontend/app/src/app/modules/hebis/hebis-detail/hebis-detail.component.spec.ts +++ b/frontend/app/src/app/modules/hebis/hebis-detail/hebis-detail.component.spec.ts @@ -26,7 +26,6 @@ import {HebisDataProvider} from '../hebis-data.provider'; import {HebisDetailComponent} from './hebis-detail.component'; import {Observable, of} from 'rxjs'; import {StorageProvider} from '../../storage/storage.provider'; -import {IonicModule} from '@ionic/angular'; import {IonIconModule} from '../../../util/ion-icon/ion-icon.module'; import {LoggerModule, NgxLoggerLevel} from 'ngx-logger'; @@ -68,7 +67,6 @@ describe('HebisDetailComponent', () => { RouterModule.forRoot([]), HebisRoutingModule, HebisModule, - IonicModule, IonIconModule, TranslateModule.forRoot({ loader: {provide: TranslateLoader, useClass: TranslateFakeLoader}, diff --git a/frontend/app/src/app/modules/hebis/hebis.module.ts b/frontend/app/src/app/modules/hebis/hebis.module.ts index 863bdd9b..c355a6e2 100644 --- a/frontend/app/src/app/modules/hebis/hebis.module.ts +++ b/frontend/app/src/app/modules/hebis/hebis.module.ts @@ -17,7 +17,6 @@ import {CommonModule} from '@angular/common'; import {HttpClientModule} from '@angular/common/http'; import {NgModule} from '@angular/core'; import {FormsModule} from '@angular/forms'; -import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; import {MarkdownModule} from 'ngx-markdown'; import {MomentModule} from 'ngx-moment'; @@ -55,14 +54,9 @@ import {DaiaHoldingComponent} from './daia-availability/daia-holding.component'; HebisRoutingModule, IonIconModule, HttpClientModule, - IonicModule.forRoot(), - MarkdownModule.forRoot(), + MarkdownModule, MenuModule, - MomentModule.forRoot({ - relativeTimeThresholdOptions: { - m: 59, - }, - }), + MomentModule, ScrollingModule, StorageModule, TranslateModule.forChild(), diff --git a/frontend/app/src/app/modules/jobs/jobs.module.ts b/frontend/app/src/app/modules/jobs/jobs.module.ts index 90703617..34db89e3 100644 --- a/frontend/app/src/app/modules/jobs/jobs.module.ts +++ b/frontend/app/src/app/modules/jobs/jobs.module.ts @@ -1,6 +1,5 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; -import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; import {MomentModule} from 'ngx-moment'; import {DataModule} from '../data/data.module'; @@ -16,7 +15,6 @@ const jobsRoutes: Routes = [{path: 'jobs', component: JobsPageComponent}]; @NgModule({ declarations: [JobsPageComponent], imports: [ - IonicModule.forRoot(), ThingTranslateModule.forChild(), TranslateModule.forChild(), RouterModule.forChild(jobsRoutes), diff --git a/frontend/app/src/app/modules/library/account/library-account.service.ts b/frontend/app/src/app/modules/library/account/library-account.service.ts index f3d81d14..869ddc9e 100644 --- a/frontend/app/src/app/modules/library/account/library-account.service.ts +++ b/frontend/app/src/app/modules/library/account/library-account.service.ts @@ -26,7 +26,7 @@ import {PAIATokenResponse} from '../../auth/paia/paia-token-response'; import {AuthHelperService} from '../../auth/auth-helper.service'; import {ConfigProvider} from '../../config/config.provider'; import {TranslateService} from '@ngx-translate/core'; -import {AlertController, ToastController} from '@ionic/angular'; +import {AlertController, ToastController} from '@ionic/angular/standalone'; import {HebisSearchResponse} from '../../hebis/protocol/response'; @Injectable({ diff --git a/frontend/app/src/app/modules/library/library.module.ts b/frontend/app/src/app/modules/library/library.module.ts index 8cef1d92..5b72677e 100644 --- a/frontend/app/src/app/modules/library/library.module.ts +++ b/frontend/app/src/app/modules/library/library.module.ts @@ -16,7 +16,6 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {FormsModule} from '@angular/forms'; -import {IonicModule} from '@ionic/angular'; import {RouterModule, Routes} from '@angular/router'; import {TranslateModule} from '@ngx-translate/core'; import {LibraryAccountPageComponent} from './account/account.page'; @@ -71,7 +70,6 @@ const routes: ProtectedRoutes | Routes = [ imports: [ CommonModule, FormsModule, - IonicModule, IonIconModule, RouterModule.forChild(routes), TranslateModule, diff --git a/frontend/app/src/app/modules/map/geo-navigation.directive.ts b/frontend/app/src/app/modules/map/geo-navigation.directive.ts index e12eabdd..7bea13b8 100644 --- a/frontend/app/src/app/modules/map/geo-navigation.directive.ts +++ b/frontend/app/src/app/modules/map/geo-navigation.directive.ts @@ -1,7 +1,7 @@ import {Directive, HostListener, Input} from '@angular/core'; import {SCPlaceWithoutReferences, SCThings, SCThingWithoutReferences} from '@openstapps/core'; import {Device} from '@capacitor/device'; -import {ActionSheetController, ActionSheetOptions, ToastController} from '@ionic/angular'; +import {ActionSheetController, ActionSheetOptions, ToastController} from '@ionic/angular/standalone'; import {TranslateService} from '@ngx-translate/core'; import {ThingTranslateService} from '../../translation/thing-translate.service'; import {Clipboard} from '@capacitor/clipboard'; diff --git a/frontend/app/src/app/modules/map/map.module.ts b/frontend/app/src/app/modules/map/map.module.ts index 6d631630..14752ad7 100644 --- a/frontend/app/src/app/modules/map/map.module.ts +++ b/frontend/app/src/app/modules/map/map.module.ts @@ -12,28 +12,12 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -import {CommonModule} from '@angular/common'; -import {FormsModule} from '@angular/forms'; -import {RouterModule, Routes} from '@angular/router'; -import {LeafletModule} from '@asymmetrik/ngx-leaflet'; -import {LeafletMarkerClusterModule} from '@asymmetrik/ngx-leaflet-markercluster'; -import {IonicModule} from '@ionic/angular'; -import {TranslateModule} from '@ngx-translate/core'; +import {RouterModule} from '@angular/router'; import {Polygon} from 'geojson'; -import {ThingTranslateModule} from '../../translation/thing-translate.module'; import {ConfigProvider} from '../config/config.provider'; -import {DataFacetsProvider} from '../data/data-facets.provider'; -import {DataModule} from '../data/data.module'; -import {DataProvider} from '../data/data.provider'; -import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider'; -import {MenuModule} from '../menu/menu.module'; import {MapProvider} from './map.provider'; import {MapPageComponent} from './page/map-page.component'; -import {MapListModalComponent} from './page/map-list-modal.component'; import {NgModule} from '@angular/core'; -import {UtilModule} from '../../util/util.module'; -import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; -import {GeoNavigationDirective} from './geo-navigation.directive'; /** * Initializes the default area to show in advance (before components are initialized) @@ -46,33 +30,15 @@ export function initMapConfigFactory(configProvider: ConfigProvider, mapProvider }; } -const mapRoutes: Routes = [ - {path: 'map', component: MapPageComponent}, - {path: 'map/:uid', component: MapPageComponent}, -]; - /** * Module containing map related stuff */ @NgModule({ - declarations: [MapPageComponent, MapListModalComponent], - exports: [], imports: [ - CommonModule, - IonicModule.forRoot(), - LeafletModule, - IonIconModule, - LeafletMarkerClusterModule, - RouterModule.forChild(mapRoutes), - TranslateModule.forChild(), - MenuModule, - DataModule, - FormsModule, - ThingTranslateModule, - UtilModule, - GeoNavigationDirective, - GeoNavigationDirective, + RouterModule.forChild([ + {path: 'map', component: MapPageComponent}, + {path: 'map/:uid', component: MapPageComponent}, + ]), ], - providers: [Geolocation, MapProvider, DataProvider, DataFacetsProvider, StAppsWebHttpClient], }) export class MapModule {} diff --git a/frontend/app/src/app/modules/map/page/map-list-modal.component.ts b/frontend/app/src/app/modules/map/page/map-list-modal.component.ts index d7a89a84..97cd204a 100644 --- a/frontend/app/src/app/modules/map/page/map-list-modal.component.ts +++ b/frontend/app/src/app/modules/map/page/map-list-modal.component.ts @@ -15,8 +15,18 @@ import {Component, Input, OnInit} from '@angular/core'; import {SCSearchBooleanFilter, SCPlace, SCSearchFilter} from '@openstapps/core'; import {MapProvider} from '../map.provider'; -import {ModalController} from '@ionic/angular'; +import { + IonButton, + IonButtons, + IonContent, + IonHeader, + IonTitle, + IonToolbar, + ModalController, +} from '@ionic/angular/standalone'; import {LatLngBounds} from 'leaflet'; +import {DataModule} from '../../data/data.module'; +import {TranslateModule} from '@ngx-translate/core'; /** * Modal showing a provided list of places @@ -24,7 +34,9 @@ import {LatLngBounds} from 'leaflet'; @Component({ selector: 'map-list-modal', templateUrl: 'map-list-modal.html', - styleUrls: ['map-list-modal.scss'], + styleUrl: 'map-list-modal.scss', + standalone: true, + imports: [IonHeader, IonToolbar, IonTitle, IonButtons, IonButton, IonContent, DataModule, TranslateModule], }) export class MapListModalComponent implements OnInit { /** @@ -47,7 +59,10 @@ export class MapListModalComponent implements OnInit { */ @Input() queryText?: string; - constructor(private mapProvider: MapProvider, readonly modalController: ModalController) {} + constructor( + private mapProvider: MapProvider, + readonly modalController: ModalController, + ) {} /** * Populate the list with the results from the search diff --git a/frontend/app/src/app/modules/map/page/map-list-modal.html b/frontend/app/src/app/modules/map/page/map-list-modal.html index d137f0aa..e4879460 100644 --- a/frontend/app/src/app/modules/map/page/map-list-modal.html +++ b/frontend/app/src/app/modules/map/page/map-list-modal.html @@ -13,16 +13,14 @@ ~ this program. If not, see . --> -
- - - {{ 'map.modals.list.TITLE' | translate }} - - {{ 'app.ui.CLOSE' | translate }} - - - - - - -
+ + + {{ 'map.modals.list.TITLE' | translate }} + + {{ 'app.ui.CLOSE' | translate }} + + + + + + diff --git a/frontend/app/src/app/modules/map/page/map-list-modal.scss b/frontend/app/src/app/modules/map/page/map-list-modal.scss index 04a923c5..cf9b82f5 100644 --- a/frontend/app/src/app/modules/map/page/map-list-modal.scss +++ b/frontend/app/src/app/modules/map/page/map-list-modal.scss @@ -13,7 +13,7 @@ * this program. If not, see . */ -.container { +:host { display: flex; flex-direction: column; height: 100%; diff --git a/frontend/app/src/app/modules/map/page/map-page.component.ts b/frontend/app/src/app/modules/map/page/map-page.component.ts index 5b2bd14f..95b04124 100644 --- a/frontend/app/src/app/modules/map/page/map-page.component.ts +++ b/frontend/app/src/app/modules/map/page/map-page.component.ts @@ -12,12 +12,28 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -import {Location} from '@angular/common'; +import {Location, NgIf} from '@angular/common'; import {ChangeDetectorRef, Component, DestroyRef, ElementRef, inject, OnInit, ViewChild} from '@angular/core'; import {ActivatedRoute, Router} from '@angular/router'; import {Keyboard} from '@capacitor/keyboard'; -import {AlertController, IonRouterOutlet, ModalController} from '@ionic/angular'; -import {TranslateService} from '@ngx-translate/core'; +import { + AlertController, + IonBackButton, + IonButton, + IonButtons, + IonCard, + IonContent, + IonHeader, + IonIcon, + IonMenuButton, + IonModal, + IonRouterOutlet, + IonSearchbar, + IonTitle, + IonToolbar, + ModalController, +} from '@ionic/angular/standalone'; +import {TranslateModule, TranslateService} from '@ngx-translate/core'; import {SCBuilding, SCPlace, SCRoom, SCSearchFilter, SCUuid} from '@openstapps/core'; import {featureGroup, geoJSON, LatLng, Layer, Map, MapOptions, Marker, tileLayer} from 'leaflet'; import {BehaviorSubject} from 'rxjs'; @@ -30,14 +46,41 @@ import {Capacitor} from '@capacitor/core'; import {pauseWhen} from '../../../util/rxjs/pause-when'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; import {startViewTransition} from '../../../util/view-transition'; +import {ContextMenuComponent} from '../../menu/context/context-menu.component'; +import {FormsModule} from '@angular/forms'; +import {LeafletModule} from '@asymmetrik/ngx-leaflet'; +import {LeafletMarkerClusterModule} from '@asymmetrik/ngx-leaflet-markercluster'; +import {MapListModalComponent} from './map-list-modal.component'; /** * The main page of the map */ @Component({ - styleUrls: ['./map-page.scss'], - templateUrl: './map-page.html', - providers: [ContextMenuService], + selector: 'stapps-map-page', + templateUrl: 'map-page.html', + styleUrl: 'map-page.scss', + standalone: true, + imports: [ + ContextMenuComponent, + IonHeader, + IonToolbar, + IonButtons, + IonBackButton, + IonTitle, + TranslateModule, + IonSearchbar, + FormsModule, + IonMenuButton, + IonContent, + LeafletModule, + LeafletMarkerClusterModule, + IonButton, + MapListModalComponent, + IonModal, + IonIcon, + NgIf, + IonCard, + ], }) export class MapPageComponent implements OnInit { /** diff --git a/frontend/app/src/app/modules/map/widget/map-widget.component.ts b/frontend/app/src/app/modules/map/widget/map-widget.component.ts index 74477408..75167930 100644 --- a/frontend/app/src/app/modules/map/widget/map-widget.component.ts +++ b/frontend/app/src/app/modules/map/widget/map-widget.component.ts @@ -13,18 +13,24 @@ * this program. If not, see . */ import {Component, ElementRef, HostBinding, Input, OnInit, ViewChild} from '@angular/core'; -import {Router} from '@angular/router'; +import {Router, RouterLink} from '@angular/router'; import {SCPlaceWithoutReferences, SCThingWithoutReferences} from '@openstapps/core'; import {geoJSON, Map, MapOptions, tileLayer} from 'leaflet'; import {MapProvider} from '../map.provider'; +import {LeafletModule} from '@asymmetrik/ngx-leaflet'; +import {IonButton, IonIcon} from '@ionic/angular/standalone'; +import {GeoNavigationDirective} from '../geo-navigation.directive'; +import {TranslateModule} from '@ngx-translate/core'; /** * The map widget (needs a container with explicit size) */ @Component({ selector: 'stapps-map-widget', - styleUrls: ['./map-widget.scss'], - templateUrl: './map-widget.html', + styleUrl: 'map-widget.scss', + templateUrl: 'map-widget.html', + standalone: true, + imports: [LeafletModule, IonButton, GeoNavigationDirective, RouterLink, TranslateModule, IonIcon], }) export class MapWidgetComponent implements OnInit { @HostBinding('class.expand-when-space') expandWhenSpace = true; diff --git a/frontend/app/src/app/modules/map/widget/map-widget.html b/frontend/app/src/app/modules/map/widget/map-widget.html index 5077d6d2..23e8d53a 100644 --- a/frontend/app/src/app/modules/map/widget/map-widget.html +++ b/frontend/app/src/app/modules/map/widget/map-widget.html @@ -20,7 +20,8 @@ #mapContainer [leafletOptions]="options" > -
+@if (showExpandButton) { +
{{'map.directions.TITLE' | translate}} @@ -29,3 +30,4 @@
+} diff --git a/frontend/app/src/app/modules/menu/context/context-menu.component.spec.ts b/frontend/app/src/app/modules/menu/context/context-menu.component.spec.ts index 5e6e1597..b1cb1ab5 100644 --- a/frontend/app/src/app/modules/menu/context/context-menu.component.spec.ts +++ b/frontend/app/src/app/modules/menu/context/context-menu.component.spec.ts @@ -17,7 +17,6 @@ import {APP_BASE_HREF, CommonModule, Location, LocationStrategy, PathLocationStr import {ComponentFixture, TestBed} from '@angular/core/testing'; import {FormsModule} from '@angular/forms'; import {ChildrenOutletContexts, RouterModule, UrlSerializer} from '@angular/router'; -import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; import {SCFacet, SCThingType} from '@openstapps/core'; import {ContextMenuComponent} from './context-menu.component'; @@ -50,14 +49,7 @@ describe('ContextMenuComponent', async () => { {provide: LocationStrategy, useClass: PathLocationStrategy}, {provide: APP_BASE_HREF, useValue: '/'}, ], - imports: [ - FormsModule, - IonicModule.forRoot(), - TranslateModule.forRoot(), - CommonModule, - SettingsModule, - RouterModule.forRoot([]), - ], + imports: [FormsModule, TranslateModule, CommonModule, SettingsModule, RouterModule], }).compileComponents(); fixture = TestBed.createComponent(ContextMenuContainerComponent); diff --git a/frontend/app/src/app/modules/menu/context/context-menu.component.ts b/frontend/app/src/app/modules/menu/context/context-menu.component.ts index fe00d10d..8b095a85 100644 --- a/frontend/app/src/app/modules/menu/context/context-menu.component.ts +++ b/frontend/app/src/app/modules/menu/context/context-menu.component.ts @@ -13,11 +13,27 @@ * this program. If not, see . */ import {Component, Input} from '@angular/core'; -import {LangChangeEvent, TranslateService} from '@ngx-translate/core'; +import {LangChangeEvent, TranslateModule, TranslateService} from '@ngx-translate/core'; import {SCLanguage, SCThingTranslator, SCThingType, SCTranslations} from '@openstapps/core'; import {ContextMenuService} from './context-menu.service'; import {FilterContext, FilterFacet, SortContext, SortContextOption} from './context-type.js'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; +import { + IonButton, + IonCheckbox, + IonContent, + IonItem, + IonLabel, + IonList, + IonListHeader, + IonMenu, + IonRadio, + IonRadioGroup, + IonTitle, + IonToolbar, +} from '@ionic/angular/standalone'; +import {NgForOf, NgIf, TitleCasePipe} from '@angular/common'; +import {FormsModule} from '@angular/forms'; /** * The context menu @@ -31,6 +47,26 @@ import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; @Component({ selector: 'stapps-context', templateUrl: 'context-menu.html', + standalone: true, + imports: [ + IonMenu, + IonToolbar, + IonLabel, + IonContent, + IonList, + IonRadioGroup, + IonListHeader, + IonTitle, + TranslateModule, + TitleCasePipe, + IonItem, + IonRadio, + IonButton, + IonCheckbox, + FormsModule, + NgIf, + NgForOf, + ], }) export class ContextMenuComponent { /** diff --git a/frontend/app/src/app/modules/menu/context/context-menu.service.ts b/frontend/app/src/app/modules/menu/context/context-menu.service.ts index 804fefce..81efbe3e 100644 --- a/frontend/app/src/app/modules/menu/context/context-menu.service.ts +++ b/frontend/app/src/app/modules/menu/context/context-menu.service.ts @@ -30,7 +30,9 @@ import {transformFacets} from './facet-filter'; /** * ContextMenuService provides bidirectional communication of context menu options and search queries */ -@Injectable() +@Injectable({ + providedIn: 'root', +}) export class ContextMenuService { /** * Local filter context object diff --git a/frontend/app/src/app/modules/menu/menu.module.ts b/frontend/app/src/app/modules/menu/menu.module.ts deleted file mode 100644 index 9402cac3..00000000 --- a/frontend/app/src/app/modules/menu/menu.module.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2022 StApps - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program. If not, see . - */ -import {CommonModule} from '@angular/common'; -import {NgModule} from '@angular/core'; -import {FormsModule} from '@angular/forms'; -import {RouterModule} from '@angular/router'; -import {LayoutModule} from '@angular/cdk/layout'; -import {IonicModule} from '@ionic/angular'; -import {TranslateModule} from '@ngx-translate/core'; -import {SettingsModule} from '../settings/settings.module'; -import {ContextMenuComponent} from './context/context-menu.component'; -import {ContextMenuService} from './context/context-menu.service'; -import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; - -/** - * Menu module - */ -@NgModule({ - declarations: [ContextMenuComponent], - exports: [ContextMenuComponent], - imports: [ - CommonModule, - IonIconModule, - FormsModule, - IonicModule.forRoot(), - RouterModule, - SettingsModule, - TranslateModule.forChild(), - LayoutModule, - ], - providers: [ContextMenuService], -}) -export class MenuModule {} diff --git a/frontend/app/src/app/modules/menu/navigation/navigation.component.ts b/frontend/app/src/app/modules/menu/navigation/navigation.component.ts index e10a7c83..57f4d208 100644 --- a/frontend/app/src/app/modules/menu/navigation/navigation.component.ts +++ b/frontend/app/src/app/modules/menu/navigation/navigation.component.ts @@ -24,6 +24,24 @@ import {NavigationService} from './navigation.service'; import config from 'capacitor.config'; import {SettingsProvider} from '../../settings/settings.provider'; import {BreakpointObserver} from '@angular/cdk/layout'; +import {OfflineNoticeComponent} from './offline-notice.component'; +import { + IonButtons, + IonContent, + IonHeader, + IonImg, + IonItem, + IonLabel, + IonList, + IonMenu, + IonRouterOutlet, + IonSplitPane, + IonTitle, + IonToolbar, +} from '@ionic/angular/standalone'; +import {RootLinkDirective} from './root-link.directive'; +import {TabsComponent} from './tabs.component'; +import {TitleCasePipe} from '@angular/common'; /** * Generated class for the MenuPage page. @@ -33,8 +51,27 @@ import {BreakpointObserver} from '@angular/cdk/layout'; */ @Component({ selector: 'stapps-navigation', - styleUrls: ['navigation.scss'], templateUrl: 'navigation.html', + styleUrl: 'navigation.scss', + standalone: true, + imports: [ + OfflineNoticeComponent, + IonSplitPane, + IonMenu, + IonHeader, + IonToolbar, + IonButtons, + IonTitle, + IonImg, + IonContent, + IonList, + IonItem, + RootLinkDirective, + IonLabel, + IonRouterOutlet, + TabsComponent, + TitleCasePipe, + ], }) export class NavigationComponent implements OnInit { showTabbar = true; diff --git a/frontend/app/src/app/modules/menu/navigation/navigation.html b/frontend/app/src/app/modules/menu/navigation/navigation.html index 965f5a00..2ebe8540 100644 --- a/frontend/app/src/app/modules/menu/navigation/navigation.html +++ b/frontend/app/src/app/modules/menu/navigation/navigation.html @@ -24,10 +24,12 @@ - - + @if (menu) { + + @for (category of menu; track category; let isFirst = first) { + + @if (category.title !== '') { {{ category.translations[language].title | titlecase }} - + } @for (item of category.items; track item) { + {{ item.translations[language].title | titlecase }} + } + } + } diff --git a/frontend/app/src/app/modules/menu/navigation/navigation.module.ts b/frontend/app/src/app/modules/menu/navigation/navigation.module.ts deleted file mode 100644 index 53879654..00000000 --- a/frontend/app/src/app/modules/menu/navigation/navigation.module.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (C) 2023 StApps - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program. If not, see . - */ -import {NgModule} from '@angular/core'; -import {RootLinkDirective} from './root-link.directive'; -import {NavigationComponent} from './navigation.component'; -import {TabsComponent} from './tabs.component'; -import {CommonModule} from '@angular/common'; -import {IonicModule} from '@ionic/angular'; -import {IonIconModule} from '../../../util/ion-icon/ion-icon.module'; -import {TranslateModule} from '@ngx-translate/core'; -import {RouterModule} from '@angular/router'; -import {OfflineNoticeComponent} from './offline-notice.component'; - -@NgModule({ - declarations: [RootLinkDirective, NavigationComponent, TabsComponent, OfflineNoticeComponent], - imports: [CommonModule, IonicModule, IonIconModule, TranslateModule, RouterModule], - exports: [TabsComponent, RootLinkDirective, NavigationComponent], -}) -export class NavigationModule {} diff --git a/frontend/app/src/app/modules/menu/navigation/offline-notice.component.ts b/frontend/app/src/app/modules/menu/navigation/offline-notice.component.ts index a7ff281e..0d192d42 100644 --- a/frontend/app/src/app/modules/menu/navigation/offline-notice.component.ts +++ b/frontend/app/src/app/modules/menu/navigation/offline-notice.component.ts @@ -17,11 +17,15 @@ import {InternetConnectionService} from '../../../util/internet-connection.servi import {Router} from '@angular/router'; import {NGXLogger} from 'ngx-logger'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; +import {TranslateModule} from '@ngx-translate/core'; +import {IonButton, IonLabel} from '@ionic/angular/standalone'; @Component({ selector: 'stapps-offline-notice', templateUrl: 'offline-notice.html', - styleUrls: ['offline-notice.scss'], + styleUrl: 'offline-notice.scss', + standalone: true, + imports: [TranslateModule, IonButton, IonLabel], }) export class OfflineNoticeComponent { @HostBinding('class.is-offline') isOffline = false; diff --git a/frontend/app/src/app/modules/menu/navigation/root-link.directive.ts b/frontend/app/src/app/modules/menu/navigation/root-link.directive.ts index 5522072a..805d769b 100644 --- a/frontend/app/src/app/modules/menu/navigation/root-link.directive.ts +++ b/frontend/app/src/app/modules/menu/navigation/root-link.directive.ts @@ -13,13 +13,14 @@ * this program. If not, see . */ import {DestroyRef, Directive, ElementRef, inject, Input, OnInit, Renderer2} from '@angular/core'; -import {AnimationController, NavController} from '@ionic/angular'; +import {AnimationController, NavController} from '@ionic/angular/standalone'; import {Router, RouterEvent} from '@angular/router'; import {tabsTransition} from './tabs-transition'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; @Directive({ selector: '[rootLink]', + standalone: true, }) export class RootLinkDirective implements OnInit { @Input() rootLink: string; diff --git a/frontend/app/src/app/modules/menu/navigation/tabs-routing.module.ts b/frontend/app/src/app/modules/menu/navigation/tabs-routing.module.ts index 8046ff51..f339b222 100644 --- a/frontend/app/src/app/modules/menu/navigation/tabs-routing.module.ts +++ b/frontend/app/src/app/modules/menu/navigation/tabs-routing.module.ts @@ -14,18 +14,18 @@ */ import {NgModule} from '@angular/core'; -import {RouterModule, Routes} from '@angular/router'; - -const routes: Routes = [ - { - path: '', - redirectTo: '/overview', - pathMatch: 'full', - }, -]; +import {RouterModule} from '@angular/router'; @NgModule({ - imports: [RouterModule.forChild(routes)], + imports: [ + RouterModule.forChild([ + { + path: '', + redirectTo: '/overview', + pathMatch: 'full', + }, + ]), + ], exports: [RouterModule], }) export class TabsRoutingModule {} diff --git a/frontend/app/src/app/modules/menu/navigation/tabs-transition.ts b/frontend/app/src/app/modules/menu/navigation/tabs-transition.ts index 1e04b6ce..0aea493e 100644 --- a/frontend/app/src/app/modules/menu/navigation/tabs-transition.ts +++ b/frontend/app/src/app/modules/menu/navigation/tabs-transition.ts @@ -12,10 +12,9 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ - -import type {AnimationBuilder} from '@ionic/angular'; -import {AnimationController} from '@ionic/angular'; -import type {AnimationOptions} from '@ionic/angular/providers/nav-controller'; +import type {AnimationBuilder} from '@ionic/angular/standalone'; +import {AnimationController} from '@ionic/angular/standalone'; +import type {AnimationOptions} from '@ionic/angular/common/providers/nav-controller'; /** * diff --git a/frontend/app/src/app/modules/menu/navigation/tabs.component.ts b/frontend/app/src/app/modules/menu/navigation/tabs.component.ts index cea59eb5..17c68d24 100644 --- a/frontend/app/src/app/modules/menu/navigation/tabs.component.ts +++ b/frontend/app/src/app/modules/menu/navigation/tabs.component.ts @@ -24,11 +24,16 @@ import { import {ConfigProvider} from '../../config/config.provider'; import {LangChangeEvent, TranslateService} from '@ngx-translate/core'; import {NGXLogger} from 'ngx-logger'; +import {IonLabel, IonMenuToggle, IonTabBar, IonTabButton} from '@ionic/angular/standalone'; +import {TitleCasePipe} from '@angular/common'; +import {RootLinkDirective} from './root-link.directive'; @Component({ selector: 'stapps-navigation-tabs', - templateUrl: 'tabs.template.html', - styleUrls: ['./tabs.component.scss'], + templateUrl: 'tabs.html', + styleUrl: 'tabs.scss', + standalone: true, + imports: [IonTabBar, IonMenuToggle, IonTabButton, IonLabel, TitleCasePipe, RootLinkDirective], }) export class TabsComponent { /** diff --git a/frontend/app/src/app/modules/menu/navigation/tabs.template.html b/frontend/app/src/app/modules/menu/navigation/tabs.html similarity index 53% rename from frontend/app/src/app/modules/menu/navigation/tabs.template.html rename to frontend/app/src/app/modules/menu/navigation/tabs.html index 93fe858b..e2982631 100644 --- a/frontend/app/src/app/modules/menu/navigation/tabs.template.html +++ b/frontend/app/src/app/modules/menu/navigation/tabs.html @@ -12,26 +12,6 @@ ~ You should have received a copy of the GNU General Public License along with ~ this program. If not, see . --> - @@ -39,13 +19,10 @@ - + @for (category of menu; track category) { + {{ category.translations[language].title | titlecase }} + } diff --git a/frontend/app/src/app/modules/menu/navigation/tabs.component.scss b/frontend/app/src/app/modules/menu/navigation/tabs.scss similarity index 100% rename from frontend/app/src/app/modules/menu/navigation/tabs.component.scss rename to frontend/app/src/app/modules/menu/navigation/tabs.scss diff --git a/frontend/app/src/app/modules/menu/navigation/tabs.spec.ts b/frontend/app/src/app/modules/menu/navigation/tabs.spec.ts index 3a350346..7402b9f9 100644 --- a/frontend/app/src/app/modules/menu/navigation/tabs.spec.ts +++ b/frontend/app/src/app/modules/menu/navigation/tabs.spec.ts @@ -23,7 +23,7 @@ import {ConfigProvider} from '../../config/config.provider'; import {sampleAuthConfiguration} from '../../../_helpers/data/sample-configuration'; import {TranslateModule, TranslateService} from '@ngx-translate/core'; import {NGXLogger} from 'ngx-logger'; -import {Platform} from '@ionic/angular'; +import {Platform} from '@ionic/angular/standalone'; import {ThingTranslateService} from '../../../translation/thing-translate.service'; import {SettingsProvider} from '../../settings/settings.provider'; import {ScheduleSyncService} from '../../background/schedule/schedule-sync.service'; diff --git a/frontend/app/src/app/modules/news/elements/news-filter-settings/news-settings-filter.component.html b/frontend/app/src/app/modules/news/elements/news-filter-settings/news-settings-filter.component.html index 92a825dc..4427b484 100644 --- a/frontend/app/src/app/modules/news/elements/news-filter-settings/news-settings-filter.component.html +++ b/frontend/app/src/app/modules/news/elements/news-filter-settings/news-settings-filter.component.html @@ -1,9 +1,9 @@ - - - - +@for (setting of settings; track setting) { + + +} diff --git a/frontend/app/src/app/modules/news/elements/news-filter-settings/news-settings-filter.component.ts b/frontend/app/src/app/modules/news/elements/news-filter-settings/news-settings-filter.component.ts index ec4a46df..92a70edb 100644 --- a/frontend/app/src/app/modules/news/elements/news-filter-settings/news-settings-filter.component.ts +++ b/frontend/app/src/app/modules/news/elements/news-filter-settings/news-settings-filter.component.ts @@ -16,11 +16,16 @@ import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; import {newsFilterSettingsFieldsMapping, NewsFilterSettingsNames} from '../../news-filter-settings'; import {SCSearchValueFilter, SCSetting} from '@openstapps/core'; import {DataProvider} from '../../../data/data.provider'; +import {SettingsModule} from '../../../settings/settings.module'; +import {TitleCasePipe} from '@angular/common'; +import {ChipFilterComponent} from '../../../data/chips/filter/chip-filter.component'; @Component({ selector: 'stapps-news-settings-filter', templateUrl: './news-settings-filter.component.html', - styleUrls: ['./news-settings-filter.component.scss'], + styleUrl: './news-settings-filter.component.scss', + standalone: true, + imports: [SettingsModule, TitleCasePipe, ChipFilterComponent], }) export class NewsSettingsFilterComponent implements OnInit { /** diff --git a/frontend/app/src/app/modules/news/item/news-item.component.ts b/frontend/app/src/app/modules/news/item/news-item.component.ts index 4c5634bd..92dbdd8a 100644 --- a/frontend/app/src/app/modules/news/item/news-item.component.ts +++ b/frontend/app/src/app/modules/news/item/news-item.component.ts @@ -12,8 +12,11 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -import {Component, Input} from '@angular/core'; +import {ChangeDetectionStrategy, Component, Input} from '@angular/core'; import {SCMessage} from '@openstapps/core'; +import {IonCard, IonCardHeader, IonCardSubtitle, IonCardTitle} from '@ionic/angular/standalone'; +import {RouterLink} from '@angular/router'; +import {FormatPipeModule, ParseIsoPipeModule} from 'ngx-date-fns'; /** * News page component @@ -21,7 +24,18 @@ import {SCMessage} from '@openstapps/core'; @Component({ selector: 'stapps-news-item', templateUrl: 'news-item.html', - styleUrls: ['news-item.scss'], + styleUrl: 'news-item.scss', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + IonCard, + RouterLink, + IonCardHeader, + IonCardTitle, + IonCardSubtitle, + ParseIsoPipeModule, + FormatPipeModule, + ], }) export class NewsItemComponent { /** diff --git a/frontend/app/src/app/modules/news/item/news-item.html b/frontend/app/src/app/modules/news/item/news-item.html index 9f333998..0aec3938 100644 --- a/frontend/app/src/app/modules/news/item/news-item.html +++ b/frontend/app/src/app/modules/news/item/news-item.html @@ -20,9 +20,9 @@ [style.--background]="item.image ? 'url(' + item.image + ')' : undefined" > - {{ item.datePublished | amCalendar | sentencecase }} + @if (item.datePublished) { + {{ item.datePublished | dfnsParseIso | dfnsFormat: 'PP' }} + } {{ item.name }} diff --git a/frontend/app/src/app/modules/news/item/skeleton-news-item.component.ts b/frontend/app/src/app/modules/news/item/skeleton-news-item.component.ts index 3f168138..7bf35804 100644 --- a/frontend/app/src/app/modules/news/item/skeleton-news-item.component.ts +++ b/frontend/app/src/app/modules/news/item/skeleton-news-item.component.ts @@ -12,7 +12,15 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -import {Component} from '@angular/core'; +import {ChangeDetectionStrategy, Component} from '@angular/core'; +import { + IonCard, + IonCardContent, + IonCardHeader, + IonCardSubtitle, + IonCardTitle, + IonSkeletonText, +} from '@ionic/angular/standalone'; /** * A placeholder to show when a news item is being loaded @@ -20,5 +28,8 @@ import {Component} from '@angular/core'; @Component({ selector: 'stapps-skeleton-news-item', templateUrl: 'skeleton-news-item.html', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [IonCard, IonCardHeader, IonCardSubtitle, IonCardTitle, IonSkeletonText, IonCardContent], }) export class SkeletonNewsItemComponent {} diff --git a/frontend/app/src/app/modules/news/news.module.ts b/frontend/app/src/app/modules/news/news.module.ts index 96419e4a..d70f1877 100644 --- a/frontend/app/src/app/modules/news/news.module.ts +++ b/frontend/app/src/app/modules/news/news.module.ts @@ -12,51 +12,11 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -import {CommonModule} from '@angular/common'; import {NgModule} from '@angular/core'; -import {RouterModule, Routes} from '@angular/router'; -import {IonicModule} from '@ionic/angular'; -import {TranslateModule} from '@ngx-translate/core'; -import {MomentModule} from 'ngx-moment'; -import {ThingTranslateModule} from '../../translation/thing-translate.module'; -import {DataModule} from '../data/data.module'; -import {SettingsProvider} from '../settings/settings.provider'; -import {NewsItemComponent} from './item/news-item.component'; +import {RouterModule} from '@angular/router'; import {NewsPageComponent} from './page/news-page.component'; -import {SkeletonNewsItemComponent} from './item/skeleton-news-item.component'; -import {ChipFilterComponent} from '../data/chips/filter/chip-filter.component'; -import {SettingsModule} from '../settings/settings.module'; -import {NewsSettingsFilterComponent} from './elements/news-filter-settings/news-settings-filter.component'; -import {UtilModule} from '../../util/util.module'; -import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; -const newsRoutes: Routes = [{path: 'news', component: NewsPageComponent}]; - -/** - * News Module - */ @NgModule({ - declarations: [ - NewsPageComponent, - SkeletonNewsItemComponent, - NewsItemComponent, - ChipFilterComponent, - NewsSettingsFilterComponent, - ], - imports: [ - IonicModule.forRoot(), - ThingTranslateModule.forChild(), - TranslateModule.forChild(), - RouterModule.forChild(newsRoutes), - IonIconModule, - CommonModule, - MomentModule, - DataModule, - ThingTranslateModule, - SettingsModule, - UtilModule, - ], - providers: [SettingsProvider], - exports: [NewsItemComponent], + imports: [NewsPageComponent, RouterModule.forChild([{path: 'news', component: NewsPageComponent}])], }) export class NewsModule {} diff --git a/frontend/app/src/app/modules/news/page/news-page.component.ts b/frontend/app/src/app/modules/news/page/news-page.component.ts index 07e6cdb6..35a1d4ea 100644 --- a/frontend/app/src/app/modules/news/page/news-page.component.ts +++ b/frontend/app/src/app/modules/news/page/news-page.component.ts @@ -13,10 +13,31 @@ * this program. If not, see . */ import {Component, OnInit} from '@angular/core'; -import {IonRefresher} from '@ionic/angular'; +import { + IonBackButton, + IonButtons, + IonCol, + IonContent, + IonGrid, + IonHeader, + IonInfiniteScroll, + IonInfiniteScrollContent, + IonLabel, + IonRefresher, + IonRefresherContent, + IonRow, + IonTitle, + IonToolbar, +} from '@ionic/angular/standalone'; import {SCMessage, SCSearchFilter, SCSearchValueFilter, SCSetting} from '@openstapps/core'; import {NewsProvider} from '../news.provider'; import {SplashScreen} from '@capacitor/splash-screen'; +import {TranslateModule} from '@ngx-translate/core'; +import {UtilModule} from '../../../util/util.module'; +import {NewsSettingsFilterComponent} from '../elements/news-filter-settings/news-settings-filter.component'; +import {SkeletonNewsItemComponent} from '../item/skeleton-news-item.component'; +import {NewsItemComponent} from '../item/news-item.component'; +import {TitleCasePipe} from '@angular/common'; /** * News page component @@ -25,6 +46,29 @@ import {SplashScreen} from '@capacitor/splash-screen'; selector: 'stapps-news-page', templateUrl: 'news-page.html', styleUrls: ['news-page.scss'], + standalone: true, + imports: [ + IonHeader, + IonToolbar, + IonButtons, + IonBackButton, + IonTitle, + TranslateModule, + IonContent, + UtilModule, + IonRefresher, + IonRefresherContent, + IonGrid, + IonRow, + IonCol, + NewsSettingsFilterComponent, + SkeletonNewsItemComponent, + NewsItemComponent, + TitleCasePipe, + IonLabel, + IonInfiniteScroll, + IonInfiniteScrollContent, + ], }) export class NewsPageComponent implements OnInit { /** diff --git a/frontend/app/src/app/modules/news/page/news-page.html b/frontend/app/src/app/modules/news/page/news-page.html index bf4766fc..c477b2b8 100644 --- a/frontend/app/src/app/modules/news/page/news-page.html +++ b/frontend/app/src/app/modules/news/page/news-page.html @@ -35,25 +35,27 @@ + @if (settings) { + }
- - - - - - + @if (!news) { @for (skeleton of [1, 2, 3, 4, 5]; track skeleton) { + + } } @if (news.length > 0) { @for (item of news; track item) { + + } }
- + @if (news.length === 0) { + {{ 'search.nothing_found' | translate | titlecase }} + } diff --git a/frontend/app/src/app/modules/profile/id-cards.component.ts b/frontend/app/src/app/modules/profile/id-cards.component.ts index b4982b64..ce7f566e 100644 --- a/frontend/app/src/app/modules/profile/id-cards.component.ts +++ b/frontend/app/src/app/modules/profile/id-cards.component.ts @@ -15,7 +15,6 @@ import {ChangeDetectionStrategy, Component} from '@angular/core'; import {IdCardsProvider} from './id-cards.provider'; import {SCIdCard} from '@openstapps/core'; -import {IonicModule} from '@ionic/angular'; import {AsyncPipe, NgForOf, NgIf, TitleCasePipe} from '@angular/common'; import {ThingTranslateModule} from '../../translation/thing-translate.module'; import {UtilModule} from '../../util/util.module'; @@ -23,6 +22,7 @@ import {FullScreenImageDirective} from '../../util/full-screen-image.directive'; import {IdCardComponent} from './id-card.component'; import {TranslateModule} from '@ngx-translate/core'; import {Observable} from 'rxjs'; +import {SectionComponent} from '../../util/section.component'; @Component({ selector: 'stapps-id-cards', @@ -32,7 +32,6 @@ import {Observable} from 'rxjs'; changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - IonicModule, NgForOf, NgIf, AsyncPipe, @@ -42,6 +41,7 @@ import {Observable} from 'rxjs'; IdCardComponent, TranslateModule, TitleCasePipe, + SectionComponent, ], }) export class IdCardsComponent { diff --git a/frontend/app/src/app/modules/profile/profile.module.ts b/frontend/app/src/app/modules/profile/profile.module.ts index 6a83e994..46e4c34d 100644 --- a/frontend/app/src/app/modules/profile/profile.module.ts +++ b/frontend/app/src/app/modules/profile/profile.module.ts @@ -16,18 +16,30 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {FormsModule} from '@angular/forms'; import {RouterModule, Routes} from '@angular/router'; -import {IonicModule} from '@ionic/angular'; import {ProfilePageComponent} from './page/profile-page.component'; import {TranslateModule} from '@ngx-translate/core'; import {SwiperModule} from 'swiper/angular'; import {UtilModule} from '../../util/util.module'; -import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; import {ProfilePageSectionComponent} from './page/profile-page-section.component'; import {ThingTranslateModule} from '../../translation/thing-translate.module'; import {DataModule} from '../data/data.module'; import {MyCoursesComponent} from './page/my-courses.component'; import {MomentModule} from 'ngx-moment'; import {IdCardsComponent} from './id-cards.component'; +import {SectionComponent} from '../../util/section.component'; +import { + IonAccordionGroup, + IonHeader, + IonAccordion, + IonToolbar, + IonButtons, + IonItem, + IonLabel, + IonItemGroup, + IonItemDivider, + IonTitle, + IonButton, +} from '@ionic/angular/standalone'; const routes: Routes = [ { @@ -41,8 +53,6 @@ const routes: Routes = [ imports: [ CommonModule, FormsModule, - IonIconModule, - IonicModule, RouterModule.forChild(routes), TranslateModule, SwiperModule, @@ -51,6 +61,18 @@ const routes: Routes = [ DataModule, MomentModule, IdCardsComponent, + SectionComponent, + IonHeader, + IonAccordion, + IonAccordionGroup, + IonToolbar, + IonButtons, + IonItem, + IonLabel, + IonItemGroup, + IonItemDivider, + IonTitle, + IonButton, ], }) export class ProfilePageModule {} diff --git a/frontend/app/src/app/modules/schedule/page/calendar-view.component.ts b/frontend/app/src/app/modules/schedule/page/calendar-view.component.ts index 31799277..0c8847e0 100644 --- a/frontend/app/src/app/modules/schedule/page/calendar-view.component.ts +++ b/frontend/app/src/app/modules/schedule/page/calendar-view.component.ts @@ -21,7 +21,7 @@ import {ScheduleProvider} from '../../calendar/schedule.provider'; import {CalendarComponent} from './components/calendar.component'; import {CalendarService} from '../../calendar/calendar.service'; import {InfiniteSwiperComponent} from './grid/infinite-swiper.component'; -import {IonContent} from '@ionic/angular'; +import {IonContent} from '@ionic/angular/standalone'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; /** diff --git a/frontend/app/src/app/modules/schedule/page/components/calendar.component.ts b/frontend/app/src/app/modules/schedule/page/components/calendar.component.ts index ae6ce37e..acc93802 100644 --- a/frontend/app/src/app/modules/schedule/page/components/calendar.component.ts +++ b/frontend/app/src/app/modules/schedule/page/components/calendar.component.ts @@ -21,7 +21,7 @@ import {ScheduleProvider} from '../../../calendar/schedule.provider'; import {ScheduleEvent, ScheduleResponsiveBreakpoint} from '../schema/schema'; import {SwiperComponent} from 'swiper/angular'; import {InfiniteSwiperComponent} from '../grid/infinite-swiper.component'; -import {IonContent, IonDatetime} from '@ionic/angular'; +import {IonContent, IonDatetime} from '@ionic/angular/standalone'; import {CalendarService} from '../../../calendar/calendar.service'; import {getScheduleCursorOffset} from '../grid/schedule-cursor-offset'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; diff --git a/frontend/app/src/app/modules/schedule/page/schedule-page.component.ts b/frontend/app/src/app/modules/schedule/page/schedule-page.component.ts index 60121e6c..813745ab 100644 --- a/frontend/app/src/app/modules/schedule/page/schedule-page.component.ts +++ b/frontend/app/src/app/modules/schedule/page/schedule-page.component.ts @@ -15,7 +15,7 @@ import {AfterViewInit, Component, HostListener, Input, OnInit, ViewChild} from '@angular/core'; import {Location} from '@angular/common'; import {ActivatedRoute, Router} from '@angular/router'; -import {AnimationController, IonRouterOutlet} from '@ionic/angular'; +import {AnimationController, IonRouterOutlet} from '@ionic/angular/standalone'; import {SharedAxisChoreographer} from '../../../animation/animation-choreographer'; import {materialSharedAxisX} from '../../../animation/material-motion'; import {ScheduleResponsiveBreakpoint} from './schema/schema'; diff --git a/frontend/app/src/app/modules/schedule/page/schedule-view.component.ts b/frontend/app/src/app/modules/schedule/page/schedule-view.component.ts index 235814cf..481dd7bd 100644 --- a/frontend/app/src/app/modules/schedule/page/schedule-view.component.ts +++ b/frontend/app/src/app/modules/schedule/page/schedule-view.component.ts @@ -21,7 +21,7 @@ import {SCISO8601Date, SCUuid} from '@openstapps/core'; import {ScheduleEvent, ScheduleResponsiveBreakpoint} from './schema/schema'; import {CalendarService} from '../../calendar/calendar.service'; import {CalendarComponent} from './components/calendar.component'; -import {IonContent, IonDatetime} from '@ionic/angular'; +import {IonContent, IonDatetime} from '@ionic/angular/standalone'; import {SwiperComponent} from 'swiper/angular'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; @@ -133,10 +133,13 @@ export class ScheduleViewComponent extends CalendarComponent implements OnInit, for (const series of dateSeries.dates) { const weekDays = Object.keys( - series.dates.reduce((accumulator, date) => { - accumulator[moment(date).weekday()] = true; - return accumulator; - }, {} as Record), + series.dates.reduce( + (accumulator, date) => { + accumulator[moment(date).weekday()] = true; + return accumulator; + }, + {} as Record, + ), ); for (const day of weekDays) { diff --git a/frontend/app/src/app/modules/schedule/schedule.module.ts b/frontend/app/src/app/modules/schedule/schedule.module.ts index 23415fe3..2511e92e 100644 --- a/frontend/app/src/app/modules/schedule/schedule.module.ts +++ b/frontend/app/src/app/modules/schedule/schedule.module.ts @@ -16,7 +16,6 @@ import {CommonModule} from '@angular/common'; import {NgModule} from '@angular/core'; import {FormsModule} from '@angular/forms'; import {RouterModule, Routes} from '@angular/router'; -import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; import {ScheduleCardComponent} from './page/grid/schedule-card.component'; @@ -37,6 +36,31 @@ import {InfiniteSwiperComponent} from './page/grid/infinite-swiper.component'; import {CalendarComponent} from './page/components/calendar.component'; import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; import {ChooseEventsPageComponent} from './page/choose-events-page.component'; +import { + IonButton, + IonContent, + IonDatetime, + IonPopover, + IonList, + IonItemGroup, + IonItem, + IonLabel, + IonText, + IonHeader, + IonToolbar, + IonButtons, + IonTitle, + IonSegment, + IonSegmentButton, + IonFab, + IonRouterLink, + IonFabButton, + IonCard, + IonCardHeader, + IonCardContent, + IonCardTitle, + IonNote, +} from '@ionic/angular/standalone'; const settingsRoutes: Routes = [ {path: 'schedule', redirectTo: 'schedule/calendar/now'}, @@ -69,7 +93,6 @@ const settingsRoutes: Routes = [ CommonModule, DataModule, FormsModule, - IonicModule.forRoot(), IonIconModule, MomentModule, RouterModule.forChild(settingsRoutes), @@ -77,6 +100,29 @@ const settingsRoutes: Routes = [ TranslateModule.forChild(), UtilModule, ThingTranslateModule, + IonButton, + IonPopover, + IonDatetime, + IonContent, + IonList, + IonItemGroup, + IonItem, + IonLabel, + IonText, + IonHeader, + IonToolbar, + IonButtons, + IonTitle, + IonSegment, + IonSegmentButton, + IonFab, + IonRouterLink, + IonFabButton, + IonCard, + IonCardHeader, + IonCardContent, + IonCardTitle, + IonNote, ], providers: [ScheduleProvider, DataProvider, DateFormatPipe], }) diff --git a/frontend/app/src/app/modules/settings/item/settings-item.component.ts b/frontend/app/src/app/modules/settings/item/settings-item.component.ts index e67aa918..9c0f832e 100644 --- a/frontend/app/src/app/modules/settings/item/settings-item.component.ts +++ b/frontend/app/src/app/modules/settings/item/settings-item.component.ts @@ -13,7 +13,7 @@ * this program. If not, see . */ import {Component, Input} from '@angular/core'; -import {AlertController} from '@ionic/angular'; +import {AlertController} from '@ionic/angular/standalone'; import {LangChangeEvent, TranslateService} from '@ngx-translate/core'; import {SCLanguageCode, SCSetting, SCSettingValue, SCSettingValues} from '@openstapps/core'; import {SettingsProvider} from '../settings.provider'; diff --git a/frontend/app/src/app/modules/settings/page/calendar-sync-settings.component.ts b/frontend/app/src/app/modules/settings/page/calendar-sync-settings.component.ts index ed7d4454..96709f2c 100644 --- a/frontend/app/src/app/modules/settings/page/calendar-sync-settings.component.ts +++ b/frontend/app/src/app/modules/settings/page/calendar-sync-settings.component.ts @@ -15,7 +15,7 @@ import {Component, OnInit} from '@angular/core'; import {AddEventReviewModalComponent} from '../../calendar/add-event-review-modal.component'; -import {ModalController} from '@ionic/angular'; +import {ModalController} from '@ionic/angular/standalone'; import {ScheduleProvider} from '../../calendar/schedule.provider'; import {Directory, Encoding, Filesystem} from '@capacitor/filesystem'; import {Share} from '@capacitor/share'; diff --git a/frontend/app/src/app/modules/settings/page/settings-page.component.ts b/frontend/app/src/app/modules/settings/page/settings-page.component.ts index 4745784e..1b35d6e7 100644 --- a/frontend/app/src/app/modules/settings/page/settings-page.component.ts +++ b/frontend/app/src/app/modules/settings/page/settings-page.component.ts @@ -13,7 +13,7 @@ * this program. If not, see . */ import {ChangeDetectorRef, Component, OnInit} from '@angular/core'; -import {AlertController, ToastController} from '@ionic/angular'; +import {AlertController, ToastController} from '@ionic/angular/standalone'; import {TranslateService} from '@ngx-translate/core'; import {SCSettingMeta} from '@openstapps/core'; import {SettingsCache, SettingsProvider} from '../settings.provider'; diff --git a/frontend/app/src/app/modules/settings/settings.module.ts b/frontend/app/src/app/modules/settings/settings.module.ts index 911f4978..763e9eb1 100644 --- a/frontend/app/src/app/modules/settings/settings.module.ts +++ b/frontend/app/src/app/modules/settings/settings.module.ts @@ -16,7 +16,6 @@ import {CommonModule} from '@angular/common'; import {NgModule} from '@angular/core'; import {FormsModule} from '@angular/forms'; import {RouterModule, Routes} from '@angular/router'; -import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; import {ThingTranslateModule} from '../../translation/thing-translate.module'; @@ -34,6 +33,23 @@ import {CalendarModule} from '../calendar/calendar.module'; import {BackgroundModule} from '../background/background.module'; import {UtilModule} from '../../util/util.module'; import {IonIconModule} from '../../util/ion-icon/ion-icon.module'; +import { + IonButton, + IonButtons, + IonCard, + IonCardContent, + IonCardHeader, + IonCardSubtitle, + IonHeader, + IonItem, + IonItemDivider, + IonItemGroup, + IonLabel, + IonList, + IonTitle, + IonToggle, + IonToolbar, +} from '@ionic/angular/standalone'; const settingsRoutes: Routes = [{path: 'settings', component: SettingsPageComponent}]; @@ -54,11 +70,25 @@ const settingsRoutes: Routes = [{path: 'settings', component: SettingsPageCompon CalendarModule, IonIconModule, BackgroundModule, - IonicModule.forRoot(), TranslateModule.forChild(), ThingTranslateModule.forChild(), RouterModule.forChild(settingsRoutes), UtilModule, + IonHeader, + IonToolbar, + IonButtons, + IonTitle, + IonList, + IonButton, + IonCard, + IonCardHeader, + IonCardSubtitle, + IonCardContent, + IonItemGroup, + IonItemDivider, + IonLabel, + IonItem, + IonToggle, ], providers: [ ScheduleSyncService, diff --git a/frontend/app/src/app/util/browser.factory.ts b/frontend/app/src/app/util/browser.factory.ts index 799668ec..739931ef 100644 --- a/frontend/app/src/app/util/browser.factory.ts +++ b/frontend/app/src/app/util/browser.factory.ts @@ -12,7 +12,7 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ -import {Platform} from '@ionic/angular'; +import {Platform} from '@ionic/angular/standalone'; import {Browser as BrowserPlugin} from '@capacitor/browser'; export abstract class SimpleBrowser { diff --git a/frontend/app/src/app/util/edit-modal.component.ts b/frontend/app/src/app/util/edit-modal.component.ts index 4775dc96..f3e9007d 100644 --- a/frontend/app/src/app/util/edit-modal.component.ts +++ b/frontend/app/src/app/util/edit-modal.component.ts @@ -21,7 +21,7 @@ import { IonModal, IonRouterOutlet, ModalController, -} from '@ionic/angular'; +} from '@ionic/angular/standalone'; import {pendingChangesActionSheet, PendingChangesRole} from './pending-changes-action-sheet'; import {TranslatePipe} from '@ngx-translate/core'; diff --git a/frontend/app/src/app/util/ion-icon/ion-back-button.directive.ts b/frontend/app/src/app/util/ion-icon/ion-back-button.directive.ts index 1b742ba9..a18adb7a 100644 --- a/frontend/app/src/app/util/ion-icon/ion-back-button.directive.ts +++ b/frontend/app/src/app/util/ion-icon/ion-back-button.directive.ts @@ -26,7 +26,7 @@ import { import {SCIcon} from './icon'; import {IconReplacer} from './replace-util'; import {TranslateService} from '@ngx-translate/core'; -import {IonBackButton} from '@ionic/angular'; +import {IonBackButton} from '@ionic/angular/standalone'; import {TitleCasePipe} from '@angular/common'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; diff --git a/frontend/app/src/app/util/ion-icon/ion-icon.component.ts b/frontend/app/src/app/util/ion-icon/ion-icon.component.ts new file mode 100644 index 00000000..b22d18f4 --- /dev/null +++ b/frontend/app/src/app/util/ion-icon/ion-icon.component.ts @@ -0,0 +1,8 @@ +import {Component} from '@angular/core'; + +@Component({ + selector: 'ion-icon', + standalone: true, + template: `TODO!`, +}) +export class IonIconComponent {} diff --git a/frontend/app/src/app/util/ion-icon/ion-icon.directive.ts b/frontend/app/src/app/util/ion-icon/ion-icon.directive.ts index 66279caf..5f06e6e3 100644 --- a/frontend/app/src/app/util/ion-icon/ion-icon.directive.ts +++ b/frontend/app/src/app/util/ion-icon/ion-icon.directive.ts @@ -27,7 +27,7 @@ import { ViewContainerRef, } from '@angular/core'; import {IconComponent} from './icon.component'; -import {IonIcon} from '@ionic/angular'; +import {IonIcon} from '@ionic/angular/standalone'; // eslint-disable-next-line @typescript-eslint/no-empty-function const noop = () => {}; @@ -84,6 +84,7 @@ export class IonIconDirective implements OnInit, OnDestroy, OnChanges { inner.insertBefore(document.createElement('slot'), inner.firstChild); }); + console.log(this.element); this.mutationObserver.observe(this.element.nativeElement.shadowRoot, { childList: true, }); diff --git a/frontend/app/src/app/util/ion-icon/replace-util.ts b/frontend/app/src/app/util/ion-icon/replace-util.ts index 5dd03d32..3f9b9a90 100644 --- a/frontend/app/src/app/util/ion-icon/replace-util.ts +++ b/frontend/app/src/app/util/ion-icon/replace-util.ts @@ -14,7 +14,7 @@ */ import {ComponentRef, Directive, ElementRef, OnDestroy, OnInit, ViewContainerRef} from '@angular/core'; -import {IonIcon} from '@ionic/angular'; +import {IonIcon} from '@ionic/angular/standalone'; import {IonIconDirective} from './ion-icon.directive'; import {waitForElement} from './shadow-attacher'; diff --git a/frontend/app/src/app/util/pending-changes-action-sheet.ts b/frontend/app/src/app/util/pending-changes-action-sheet.ts index 37cbce5a..addf8548 100644 --- a/frontend/app/src/app/util/pending-changes-action-sheet.ts +++ b/frontend/app/src/app/util/pending-changes-action-sheet.ts @@ -14,7 +14,7 @@ */ import {TranslatePipe} from '@ngx-translate/core'; -import {ActionSheetOptions, AlertOptions} from '@ionic/angular'; +import {ActionSheetOptions, AlertOptions} from '@ionic/angular/standalone'; export enum PendingChangesRole { SAVE = 'save', diff --git a/frontend/app/src/app/util/searchbar-autofocus.directive.ts b/frontend/app/src/app/util/searchbar-autofocus.directive.ts index 39ddae79..053b277f 100644 --- a/frontend/app/src/app/util/searchbar-autofocus.directive.ts +++ b/frontend/app/src/app/util/searchbar-autofocus.directive.ts @@ -14,7 +14,7 @@ */ import {AfterViewInit, Directive, ElementRef, Input} from '@angular/core'; -import {IonSearchbar} from '@ionic/angular'; +import {IonSearchbar} from '@ionic/angular/standalone'; @Directive({ selector: 'ion-searchbar[autofocus]', diff --git a/frontend/app/src/app/util/section.component.ts b/frontend/app/src/app/util/section.component.ts index d4eb7b40..ccb08d56 100644 --- a/frontend/app/src/app/util/section.component.ts +++ b/frontend/app/src/app/util/section.component.ts @@ -18,6 +18,9 @@ import {fromMutationObserver} from './rxjs/mutation-observer'; import {combineLatestWith, mergeMap, OperatorFunction, ReplaySubject, takeLast} from 'rxjs'; import {distinctUntilChanged, filter, map, startWith} from 'rxjs/operators'; import {fromIntersectionObserver} from './rxjs/from-intersection-observer'; +import {IonCol, IonRow, IonGrid, IonLabel, IonButton} from '@ionic/angular/standalone'; +import {AsyncPipe, NgIf, NgTemplateOutlet} from '@angular/common'; +import {RouterLink} from '@angular/router'; /** * Operator function that checks if a slide is visible @@ -41,7 +44,9 @@ function isSlideVisible( selector: 'stapps-section', templateUrl: 'section.html', styleUrls: ['section.scss'], + standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, + imports: [IonCol, IonRow, IonGrid, IonLabel, NgIf, RouterLink, NgTemplateOutlet, IonButton, AsyncPipe], }) export class SectionComponent implements AfterContentInit { @Input() title = ''; diff --git a/frontend/app/src/app/util/util.module.ts b/frontend/app/src/app/util/util.module.ts index 60b91b37..2c215e78 100644 --- a/frontend/app/src/app/util/util.module.ts +++ b/frontend/app/src/app/util/util.module.ts @@ -22,27 +22,31 @@ import {LazyPipe} from './lazy.pipe'; import {NextDateInListPipe} from './next-date-in-list.pipe'; import {EditModalComponent} from './edit-modal.component'; import {BrowserModule} from '@angular/platform-browser'; -import {IonicModule} from '@ionic/angular'; import {TranslateModule} from '@ngx-translate/core'; import {ElementSizeChangeDirective} from './element-size-change.directive'; import {OpeningHoursComponent} from './opening-hours.component'; import {ThingTranslateModule} from '../translation/thing-translate.module'; import {SimpleSwiperComponent} from './simple-swiper.component'; import {SearchbarAutofocusDirective} from './searchbar-autofocus.directive'; -import {SectionComponent} from './section.component'; import {RouterModule} from '@angular/router'; import {IonContentParallaxDirective} from './ion-content-parallax.directive'; import {FormatDistanceToNowStrictPipeModule, FormatRelativeToNowPipeModule} from 'ngx-date-fns'; +import {IonButton, IonButtons, IonHeader, IonModal, IonTitle, IonToolbar} from '@ionic/angular/standalone'; @NgModule({ imports: [ BrowserModule, - IonicModule, TranslateModule, ThingTranslateModule.forChild(), RouterModule, FormatRelativeToNowPipeModule, FormatDistanceToNowStrictPipeModule, + IonModal, + IonHeader, + IonToolbar, + IonTitle, + IonButtons, + IonButton, ], declarations: [ IonContentParallaxDirective, @@ -51,7 +55,6 @@ import {FormatDistanceToNowStrictPipeModule, FormatRelativeToNowPipeModule} from DateIsThisPipe, NullishCoalescingPipe, LazyPipe, - SectionComponent, DateFromIndexPipe, DaytimeKeyPipe, NextDateInListPipe, @@ -69,7 +72,6 @@ import {FormatDistanceToNowStrictPipeModule, FormatRelativeToNowPipeModule} from LazyPipe, DateFromIndexPipe, DaytimeKeyPipe, - SectionComponent, NextDateInListPipe, EditModalComponent, OpeningHoursComponent, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7739816d..7a3c4024 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -952,32 +952,35 @@ importers: frontend/app: dependencies: '@angular/animations': - specifier: 17.0.0 - version: 17.0.0(@angular/core@17.0.0) + specifier: 17.0.2 + version: 17.0.2(@angular/core@17.0.2) '@angular/cdk': - specifier: 16.1.4 - version: 16.1.4(@angular/common@17.0.0)(@angular/core@17.0.0)(rxjs@7.8.1) + specifier: 17.0.0 + version: 17.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(rxjs@7.8.1) '@angular/common': - specifier: 17.0.0 - version: 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) + specifier: 17.0.2 + version: 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) '@angular/core': - specifier: 17.0.0 - version: 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + specifier: 17.0.2 + version: 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/elements': + specifier: 17.0.2 + version: 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) '@angular/forms': - specifier: 17.0.0 - version: 17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.1) + specifier: 17.0.2 + version: 17.0.2(@angular/common@17.0.2)(@angular/core@17.0.2)(@angular/platform-browser@17.0.2)(rxjs@7.8.1) '@angular/platform-browser': - specifier: 17.0.0 - version: 17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0) + specifier: 17.0.2 + version: 17.0.2(@angular/animations@17.0.2)(@angular/common@17.0.2)(@angular/core@17.0.2) '@angular/router': - specifier: 17.0.0 - version: 17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.1) + specifier: 17.0.2 + version: 17.0.2(@angular/common@17.0.2)(@angular/core@17.0.2)(@angular/platform-browser@17.0.2)(rxjs@7.8.1) '@asymmetrik/ngx-leaflet': - specifier: 16.0.1 - version: 16.0.1(@angular/common@17.0.0)(@angular/core@17.0.0)(leaflet@1.9.3) + specifier: 17.0.0 + version: 17.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(leaflet@1.9.3) '@asymmetrik/ngx-leaflet-markercluster': - specifier: 16.0.0 - version: 16.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@asymmetrik/ngx-leaflet@16.0.1)(leaflet.markercluster@1.5.3)(leaflet@1.9.3) + specifier: 17.0.0 + version: 17.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(@asymmetrik/ngx-leaflet@17.0.0)(leaflet.markercluster@1.5.3)(leaflet@1.9.3) '@awesome-cordova-plugins/calendar': specifier: 5.45.0 version: 5.45.0(@awesome-cordova-plugins/core@5.45.0)(rxjs@7.8.1) @@ -1039,17 +1042,17 @@ importers: specifier: 5.36.0 version: 5.36.0(rxjs@7.8.1) '@ionic/angular': - specifier: 7.1.3 - version: 7.1.3(@angular/core@17.0.0)(@angular/forms@17.0.0)(@angular/router@17.0.0)(rxjs@7.8.1)(zone.js@0.14.2) + specifier: 7.5.5 + version: 7.5.5(@angular/core@17.0.2)(@angular/forms@17.0.2)(@angular/router@17.0.2)(rxjs@7.8.1)(zone.js@0.14.2) '@ionic/storage-angular': specifier: 4.0.0 - version: 4.0.0(@angular/core@17.0.0)(rxjs@7.8.1) + version: 4.0.0(@angular/core@17.0.2)(rxjs@7.8.1) '@ngx-translate/core': specifier: 15.0.0 - version: 15.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(rxjs@7.8.1) + version: 15.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(rxjs@7.8.1) '@ngx-translate/http-loader': specifier: 8.0.0 - version: 8.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@ngx-translate/core@15.0.0)(rxjs@7.8.1) + version: 8.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(@ngx-translate/core@15.0.0)(rxjs@7.8.1) '@openid/appauth': specifier: 1.3.1 version: 1.3.1 @@ -1087,8 +1090,8 @@ importers: specifier: 0.5.0 version: 0.5.0 ionic-appauth: - specifier: 0.9.0 - version: 0.9.0(rxjs@7.8.1) + specifier: 2.0.0 + version: 2.0.0(rxjs@7.8.1) jsonpath-plus: specifier: 6.0.1 version: 6.0.1 @@ -1106,13 +1109,13 @@ importers: version: 2.29.4 ngx-date-fns: specifier: 10.0.1 - version: 10.0.1(@angular/common@17.0.0)(@angular/core@17.0.0)(date-fns@2.30.0) + version: 10.0.1(@angular/common@17.0.2)(@angular/core@17.0.2)(date-fns@2.30.0) ngx-logger: specifier: 5.0.12 version: 5.0.12(rxjs@7.8.1) ngx-markdown: - specifier: 16.0.0 - version: 16.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(@types/marked@4.3.1)(marked@4.3.0)(rxjs@7.8.1)(zone.js@0.14.2) + specifier: 17.1.0 + version: 17.1.0(@angular/common@17.0.2)(@angular/core@17.0.2)(@angular/platform-browser@17.0.2)(marked@9.1.6)(rxjs@7.8.1)(zone.js@0.14.2) ngx-moment: specifier: 6.0.2 version: 6.0.2(moment@2.29.4) @@ -1137,7 +1140,7 @@ importers: version: 0.1700.0(chokidar@3.5.3) '@angular-devkit/build-angular': specifier: 17.0.0 - version: 17.0.0(@angular/compiler-cli@17.0.0)(@types/node@18.15.3)(karma@6.4.2)(typescript@5.2.2) + version: 17.0.0(@angular/compiler-cli@17.0.2)(@types/node@18.15.3)(karma@6.4.2)(typescript@5.2.2) '@angular-devkit/core': specifier: 17.0.0 version: 17.0.0(chokidar@3.5.3) @@ -1145,35 +1148,35 @@ importers: specifier: 17.0.0 version: 17.0.0 '@angular-eslint/builder': - specifier: 16.1.0 - version: 16.1.0(eslint@8.53.0)(typescript@5.2.2) + specifier: 17.0.1 + version: 17.0.1(eslint@8.53.0)(typescript@5.2.2) '@angular-eslint/eslint-plugin': - specifier: 16.1.0 - version: 16.1.0(eslint@8.53.0)(typescript@5.2.2) + specifier: 17.0.1 + version: 17.0.1(eslint@8.53.0)(typescript@5.2.2) '@angular-eslint/eslint-plugin-template': - specifier: 16.1.0 - version: 16.1.0(eslint@8.53.0)(typescript@5.2.2) + specifier: 17.0.1 + version: 17.0.1(eslint@8.53.0)(typescript@5.2.2) '@angular-eslint/schematics': - specifier: 16.1.0 - version: 16.1.0(@angular/cli@17.0.0)(eslint@8.53.0)(typescript@5.2.2) + specifier: 17.0.1 + version: 17.0.1(@angular/cli@17.0.0)(eslint@8.53.0)(typescript@5.2.2) '@angular-eslint/template-parser': - specifier: 16.1.0 - version: 16.1.0(eslint@8.53.0)(typescript@5.2.2) + specifier: 17.0.1 + version: 17.0.1(eslint@8.53.0)(typescript@5.2.2) '@angular/cli': specifier: 17.0.0 version: 17.0.0 '@angular/compiler': - specifier: 17.0.0 - version: 17.0.0(@angular/core@17.0.0) + specifier: 17.0.2 + version: 17.0.2(@angular/core@17.0.2) '@angular/compiler-cli': - specifier: 17.0.0 - version: 17.0.0(@angular/compiler@17.0.0)(typescript@5.2.2) + specifier: 17.0.2 + version: 17.0.2(@angular/compiler@17.0.2)(typescript@5.2.2) '@angular/language-service': - specifier: 17.0.0 - version: 17.0.0 + specifier: 17.0.2 + version: 17.0.2 '@angular/platform-browser-dynamic': - specifier: 17.0.0 - version: 17.0.0(@angular/common@17.0.0)(@angular/compiler@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0) + specifier: 17.0.2 + version: 17.0.2(@angular/common@17.0.2)(@angular/compiler@17.0.2)(@angular/core@17.0.2)(@angular/platform-browser@17.0.2) '@capacitor/android': specifier: 4.6.1 version: 4.6.1(@capacitor/core@4.6.1) @@ -1188,7 +1191,7 @@ importers: version: 1.1.19 '@cypress/schematic': specifier: 1.7.0 - version: 1.7.0(@angular/cli@17.0.0)(@angular/core@17.0.0) + version: 1.7.0(@angular/cli@17.0.0)(@angular/core@17.0.2) '@ionic/angular-toolkit': specifier: 10.0.0 version: 10.0.0 @@ -2478,7 +2481,7 @@ packages: - chokidar dev: true - /@angular-devkit/build-angular@17.0.0(@angular/compiler-cli@17.0.0)(@types/node@18.15.3)(karma@6.4.2)(typescript@5.2.2): + /@angular-devkit/build-angular@17.0.0(@angular/compiler-cli@17.0.2)(@types/node@18.15.3)(karma@6.4.2)(typescript@5.2.2): resolution: {integrity: sha512-hkV8k4moAnUquac2Dz5XPd5izDDgEF82NeUkSwizcTaqlJqYOdmWASMsXyVBzdrTmDtFKQiphfA96i7eo5MlvA==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -2517,7 +2520,7 @@ packages: '@angular-devkit/architect': 0.1700.0(chokidar@3.5.3) '@angular-devkit/build-webpack': 0.1700.0(chokidar@3.5.3)(webpack-dev-server@4.15.1)(webpack@5.89.0) '@angular-devkit/core': 17.0.0(chokidar@3.5.3) - '@angular/compiler-cli': 17.0.0(@angular/compiler@17.0.0)(typescript@5.2.2) + '@angular/compiler-cli': 17.0.2(@angular/compiler@17.0.2)(typescript@5.2.2) '@babel/core': 7.23.2 '@babel/generator': 7.23.0 '@babel/helper-annotate-as-pure': 7.22.5 @@ -2528,7 +2531,7 @@ packages: '@babel/preset-env': 7.23.2(@babel/core@7.23.2) '@babel/runtime': 7.23.2 '@discoveryjs/json-ext': 0.5.7 - '@ngtools/webpack': 17.0.0(@angular/compiler-cli@17.0.0)(typescript@5.2.2)(webpack@5.89.0) + '@ngtools/webpack': 17.0.0(@angular/compiler-cli@17.0.2)(typescript@5.2.2)(webpack@5.89.0) '@vitejs/plugin-basic-ssl': 1.0.1(vite@4.5.0) ansi-colors: 4.1.3 autoprefixer: 10.4.16(postcss@8.4.31) @@ -2729,15 +2732,15 @@ packages: - chokidar dev: true - /@angular-eslint/builder@16.1.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-KIkE2SI1twFKoCiF/k2VR3ojOcc7TD1xPyY4kbUrx/Gxp+XEzar7O29I/ztzL4eHPBM+Uh3/NwS/jvjjBxjgAg==} + /@angular-eslint/builder@17.0.1(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-bNXi5tdqIFdNDHxphDRUUbzA+7v6emOX2B/PFLG2pe+K6/JpHS0auwY/nq7hCroH7pMS5HZ+Q4i90q0GN/DWPg==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' dependencies: - '@nx/devkit': 16.5.1(nx@16.5.1) + '@nx/devkit': 17.0.3(nx@17.0.3) eslint: 8.53.0 - nx: 16.5.1 + nx: 17.0.3 typescript: 5.2.2 transitivePeerDependencies: - '@swc-node/register' @@ -2745,53 +2748,53 @@ packages: - debug dev: true - /@angular-eslint/bundled-angular-compiler@16.1.0: - resolution: {integrity: sha512-5EFAWXuFJADr3imo/ZYshY8s0K7U7wyysnE2LXnpT9PAi5rmkzt70UNZNRuamCbXr4tdIiu+fXWOj7tUuJKnnw==} + /@angular-eslint/bundled-angular-compiler@17.0.1: + resolution: {integrity: sha512-E3YK9/uIBsuKC76i6uvPdtq8bwA63WDKDYpsPSTLF2XmL3a5LGev0+NmJCD2zR/0uMenHYB27BwjZotpk1rycg==} dev: true - /@angular-eslint/eslint-plugin-template@16.1.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-wQHWR5vqWGgO7mqoG5ixXeplIlz/OmxBJE9QMLPTZE8GdaTx8+F/5J37OWh84zCpD3mOa/FHYZxBDm2MfUmA1Q==} + /@angular-eslint/eslint-plugin-template@17.0.1(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-7aQYUUCrdOvAKesUNsWSNUnPjzb9WI69Mlr/VhKSb4SNWwMr6SmYOsNqSqydIrtpHo4sIgyStGGfzELZ4Kub9Q==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' dependencies: - '@angular-eslint/bundled-angular-compiler': 16.1.0 - '@angular-eslint/utils': 16.1.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/type-utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) + '@angular-eslint/bundled-angular-compiler': 17.0.1 + '@angular-eslint/utils': 17.0.1(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) aria-query: 5.3.0 - axobject-query: 3.1.1 + axobject-query: 4.0.0 eslint: 8.53.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@angular-eslint/eslint-plugin@16.1.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-BFzzJJlgQgWc8avdSBkaDWAzNSUqcwWy0L1iZSBdXGoIOxj72kLbwe99emb8M+rUfCveljQkeM2pcYu8XLbJIA==} + /@angular-eslint/eslint-plugin@17.0.1(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-HNXzjvqTCfaxENnfjVHJXcWrfzv/3LDH6aEHF7P8B363JSgx0g4SZtGKBrdbXcJPmf5arVfVgRUvKMJ7Es9aiQ==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' dependencies: - '@angular-eslint/utils': 16.1.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) + '@angular-eslint/utils': 17.0.1(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) eslint: 8.53.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@angular-eslint/schematics@16.1.0(@angular/cli@17.0.0)(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-L1tmP3R2krHyveaRXAvn/SeDoBFNpS1VtPPrzZm1NYr1qPcAxf3NtG2nnoyVFu6WZGt59ZGHNQ/dZxnXvm0UGg==} + /@angular-eslint/schematics@17.0.1(@angular/cli@17.0.0)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-CnQpYJDkGM6NJUOOeHPwfzJbZG90oRGvHVDkDlB2mZ63rQCKNzE1hFnlwBWkzyRH4GkV/84WW0++fXt3cU9ItA==} peerDependencies: - '@angular/cli': '>= 16.0.0 < 17.0.0' + '@angular/cli': '>= 17.0.0 < 18.0.0' dependencies: - '@angular-eslint/eslint-plugin': 16.1.0(eslint@8.53.0)(typescript@5.2.2) - '@angular-eslint/eslint-plugin-template': 16.1.0(eslint@8.53.0)(typescript@5.2.2) + '@angular-eslint/eslint-plugin': 17.0.1(eslint@8.53.0)(typescript@5.2.2) + '@angular-eslint/eslint-plugin-template': 17.0.1(eslint@8.53.0)(typescript@5.2.2) '@angular/cli': 17.0.0 - '@nx/devkit': 16.5.1(nx@16.5.1) + '@nx/devkit': 17.0.3(nx@17.0.3) ignore: 5.2.4 - nx: 16.5.1 + nx: 17.0.3 strip-json-comments: 3.1.1 tmp: 0.2.1 transitivePeerDependencies: @@ -2803,50 +2806,50 @@ packages: - typescript dev: true - /@angular-eslint/template-parser@16.1.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-DOQtzVehtbO7+BQ+FMOXRsxGRjHb3ve6M+S4qASKTiI+twtONjRODcHezD3N4PDkjpKPbOnk7YnFsHur5csUNw==} + /@angular-eslint/template-parser@17.0.1(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-EBN5c0/HuaikvPMqQJ6z2U2qSHof6xgwzNH48F4+Mnn2oMzz0eqtvjNrbTCka/vSCjELczao9px879ywDjVB5g==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' dependencies: - '@angular-eslint/bundled-angular-compiler': 16.1.0 + '@angular-eslint/bundled-angular-compiler': 17.0.1 eslint: 8.53.0 - eslint-scope: 7.2.0 + eslint-scope: 7.2.2 typescript: 5.2.2 dev: true - /@angular-eslint/utils@16.1.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-u5XscYUq1F/7RuwyVIV2a280QL27lyQz434VYR+Np/oO21NGj5jxoRKb55xhXT9EFVs5Sy4JYeEUp6S75J/cUw==} + /@angular-eslint/utils@17.0.1(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-yao+cuWmtDKwe/zW/4+e53pgwlk/rz7fjZFYvaYIuoIpqUQhqYYcBW8NeUoo8BscM57IfPqn0l6UkcXJhS1bRA==} peerDependencies: eslint: ^7.20.0 || ^8.0.0 typescript: '*' dependencies: - '@angular-eslint/bundled-angular-compiler': 16.1.0 - '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) + '@angular-eslint/bundled-angular-compiler': 17.0.1 + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) eslint: 8.53.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@angular/animations@17.0.0(@angular/core@17.0.0): - resolution: {integrity: sha512-DNr4IlRxtcNsaUxmF2/aPU9K6jXCdODXbbk2hTnZhAhpA9lLof3MN8/9MmNjc2nxeL6/oovyXP3SCY8Y8ZJACw==} + /@angular/animations@17.0.2(@angular/core@17.0.2): + resolution: {integrity: sha512-32RHWhTgFLMonI3kRdstACay/nvetfxXjdwcTtABjcvBoND7nD9GMhkISQdgS+hcR/IhgXxaPidq8f2UAY5DBw==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/core': 17.0.0 + '@angular/core': 17.0.2 dependencies: - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) tslib: 2.4.1 - /@angular/cdk@16.1.4(@angular/common@17.0.0)(@angular/core@17.0.0)(rxjs@7.8.1): - resolution: {integrity: sha512-05m0+NoAkV5O15GUEX2GQLySe8iC6P0GXVqUjLipdGmZ2/pNndJ/DGbqkX8dAAo/Z3ss2TEyRNYMOJdLIjV5vw==} + /@angular/cdk@17.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(rxjs@7.8.1): + resolution: {integrity: sha512-8F1z0YhDjKWqB29+AUh33OKr2Ts5PVUUogVXEVmmPipPDtj82iIQLbtBnR6xpWvmsw9mS3oD76EwBoUhHQgi6g==} peerDependencies: - '@angular/common': ^16.0.0 || ^17.0.0 - '@angular/core': ^16.0.0 || ^17.0.0 + '@angular/common': ^17.0.0 || ^18.0.0 + '@angular/core': ^17.0.0 || ^18.0.0 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) rxjs: 7.8.1 tslib: 2.4.1 optionalDependencies: @@ -2882,26 +2885,26 @@ packages: - supports-color dev: true - /@angular/common@17.0.0(@angular/core@17.0.0)(rxjs@7.8.1): - resolution: {integrity: sha512-iepci1Hd9mVEB1Va1X23+KsWRADn4O8UIGy+sji+XQFt7aJfVjAYsSmQJrXsii8K46SvEo04M6HlMSA3BxKx0g==} + /@angular/common@17.0.2(@angular/core@17.0.2)(rxjs@7.8.1): + resolution: {integrity: sha512-hCW0njHgrcwTWNoKZDwf02DnhYLVWNXM2FMw66MKpfxTp7McSyaXjGBU9/hchW3dZJ0xTwyxoyoqJFoHYvg0yg==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/core': 17.0.0 + '@angular/core': 17.0.2 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) rxjs: 7.8.1 tslib: 2.4.1 - /@angular/compiler-cli@17.0.0(@angular/compiler@17.0.0)(typescript@5.2.2): - resolution: {integrity: sha512-ncobjPpCLXFkNz/icidrUCxMrJ9iHZQ/k/H7JeXD58ZgnXzomx0L48sGcYSZsmS0Lb5E7YvxrN6SZjqEf3h1Og==} + /@angular/compiler-cli@17.0.2(@angular/compiler@17.0.2)(typescript@5.2.2): + resolution: {integrity: sha512-IUYL3Yz5RbR0Z0/x7it4GK3sMb2qVihxu0tlgfUW53P1Vi6nU/Zda0bCJTu6Z64qEtS8zwCwF1Ekomuq6UaiKg==} engines: {node: ^18.13.0 || >=20.9.0} hasBin: true peerDependencies: - '@angular/compiler': 17.0.0 + '@angular/compiler': 17.0.2 typescript: '>=5.2 <5.3' dependencies: - '@angular/compiler': 17.0.0(@angular/core@17.0.0) + '@angular/compiler': 17.0.2(@angular/core@17.0.2) '@babel/core': 7.23.2 '@jridgewell/sourcemap-codec': 1.4.15 chokidar: 3.5.3 @@ -2915,21 +2918,21 @@ packages: - supports-color dev: true - /@angular/compiler@17.0.0(@angular/core@17.0.0): - resolution: {integrity: sha512-TLECbTkRQJvAzyBhp/WKjKrPEp3YtN50bZ2qdkuWZii3nj5hqk5gGIT3T8mAIDHEX91EIN/JsvlUhFjSeb5bKw==} + /@angular/compiler@17.0.2(@angular/core@17.0.2): + resolution: {integrity: sha512-ewUFbKhMEhAmw2dGfk0ImhTlyrO2y4pJSKIZdFrkR1d0HiJX8bCHUdTiiR/2jeP7w2eamjXj15Rptb+iZZes2Q==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/core': 17.0.0 + '@angular/core': 17.0.2 peerDependenciesMeta: '@angular/core': optional: true dependencies: - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) tslib: 2.4.1 dev: true - /@angular/core@17.0.0(rxjs@7.8.1)(zone.js@0.14.2): - resolution: {integrity: sha512-09vv1tLv3bG+l0QwACoBcWRSh8nWe7It/JWhCeQQuqil07O9GufY2ASao4XX7ecBTlruoNy8k1gWKv9hKXZRzg==} + /@angular/core@17.0.2(rxjs@7.8.1)(zone.js@0.14.2): + resolution: {integrity: sha512-MjDxWeyn3Txi0qo/V/I+B/gndh0uptQ0XWgBRwOx6Wcr5zRGeZIFlXBxPpyXnGTlJkeyErsTN7FfFCZ4C3kCPA==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: rxjs: ^6.5.3 || ^7.4.0 @@ -2939,71 +2942,83 @@ packages: tslib: 2.4.1 zone.js: 0.14.2 - /@angular/forms@17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.1): - resolution: {integrity: sha512-M/LHKBC/BhNqSa3WaXzOacZM1zJmIJGkV5aYDhHCg+2R9oUyl5RXWgSwfG5KWJ0sY+j2BZaJlPg0mcF0nY79DA==} + /@angular/elements@17.0.2(@angular/core@17.0.2)(rxjs@7.8.1): + resolution: {integrity: sha512-YO840GTVmwSbIeNXromF6GrD7Yh0qHcGKxPyzosPRy0HmFi4Mno6bAzzXyTiJyQXrPKqhnnl7LVsTx/onJhXzA==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/common': 17.0.0 - '@angular/core': 17.0.0 - '@angular/platform-browser': 17.0.0 + '@angular/core': 17.0.2 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) - '@angular/platform-browser': 17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) rxjs: 7.8.1 tslib: 2.4.1 dev: false - /@angular/language-service@17.0.0: - resolution: {integrity: sha512-53BU8lx2rgjmfsk4gEazgmzX2F/wcE3GEIg1gtZMpJQocGHk1wTO81FxZPTFPRP0dMrirJ6LMauvHlQOqQCDBA==} + /@angular/forms@17.0.2(@angular/common@17.0.2)(@angular/core@17.0.2)(@angular/platform-browser@17.0.2)(rxjs@7.8.1): + resolution: {integrity: sha512-w1QKifaVG4daxUktcBNZqBtOH1vn8t0YiwDR3woEdUYt0XYKMipfDzQfyIK+6fIVPOJUd42pRns1nbWJQHOInA==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/common': 17.0.2 + '@angular/core': 17.0.2 + '@angular/platform-browser': 17.0.2 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/platform-browser': 17.0.2(@angular/animations@17.0.2)(@angular/common@17.0.2)(@angular/core@17.0.2) + rxjs: 7.8.1 + tslib: 2.4.1 + dev: false + + /@angular/language-service@17.0.2: + resolution: {integrity: sha512-A1roy4uqnPSUQ5IE/zOHSOj128u1b+cuzQkLtwTTjb5m0Y32GOhQeZgIQAt4mtuGnts27sgIFo1OQzK7J4DnIw==} engines: {node: ^18.13.0 || >=20.9.0} dev: true - /@angular/platform-browser-dynamic@17.0.0(@angular/common@17.0.0)(@angular/compiler@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0): - resolution: {integrity: sha512-kBVdQWCeKDlXwG3k6WNaTK1HP+0iTCHgomskHTzd59IrLanaUVvWG590qw3NPMFwiUJSwQ5+2WjL9LFP4rkAbQ==} + /@angular/platform-browser-dynamic@17.0.2(@angular/common@17.0.2)(@angular/compiler@17.0.2)(@angular/core@17.0.2)(@angular/platform-browser@17.0.2): + resolution: {integrity: sha512-clcHqHcfD00/TlTixDbJ3q4EQxpm0t2ZFG76rRFmGrmE5tKYUPfaofIa3hQCxy3q269MAYuF16wALhUtrEWyUA==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/common': 17.0.0 - '@angular/compiler': 17.0.0 - '@angular/core': 17.0.0 - '@angular/platform-browser': 17.0.0 + '@angular/common': 17.0.2 + '@angular/compiler': 17.0.2 + '@angular/core': 17.0.2 + '@angular/platform-browser': 17.0.2 dependencies: - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/compiler': 17.0.0(@angular/core@17.0.0) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) - '@angular/platform-browser': 17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0) + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/compiler': 17.0.2(@angular/core@17.0.2) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/platform-browser': 17.0.2(@angular/animations@17.0.2)(@angular/common@17.0.2)(@angular/core@17.0.2) tslib: 2.4.1 dev: true - /@angular/platform-browser@17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0): - resolution: {integrity: sha512-GIlgyMRWdJJeYexwtejbZ6cepdQ6UUOKEXVrIEIjLf23ROv5MpBdYu3ujt0eGngS4UiIEF2JkltTQRLnMPIQGg==} + /@angular/platform-browser@17.0.2(@angular/animations@17.0.2)(@angular/common@17.0.2)(@angular/core@17.0.2): + resolution: {integrity: sha512-eTnPILEA/eAMkVUR/+g6fWhhMTmnmOzcZSGX/bBgQcvOhayZrDDxA6/Qf+jIB4RwC0wd3KA9zT5BCMmNojoUsg==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/animations': 17.0.0 - '@angular/common': 17.0.0 - '@angular/core': 17.0.0 + '@angular/animations': 17.0.2 + '@angular/common': 17.0.2 + '@angular/core': 17.0.2 peerDependenciesMeta: '@angular/animations': optional: true dependencies: - '@angular/animations': 17.0.0(@angular/core@17.0.0) - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/animations': 17.0.2(@angular/core@17.0.2) + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) tslib: 2.4.1 - /@angular/router@17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.1): - resolution: {integrity: sha512-ZkcGQv3NWbSXEKSomAO94jPTPhTyT67dSg7bg6VXkty/7xkdimpE0CHAdB5KXmnrci/0BgKfyaPwU5bSiQlgNQ==} + /@angular/router@17.0.2(@angular/common@17.0.2)(@angular/core@17.0.2)(@angular/platform-browser@17.0.2)(rxjs@7.8.1): + resolution: {integrity: sha512-A1Ulv4qBAtJyK5g1yBlK1qZHe+KaaL5vMPAaPWUxICH8lHEodDkJlbYAUI2e4VL2BN7zBmdOep6tlBKPmHY3mw==} engines: {node: ^18.13.0 || >=20.9.0} peerDependencies: - '@angular/common': 17.0.0 - '@angular/core': 17.0.0 - '@angular/platform-browser': 17.0.0 + '@angular/common': 17.0.2 + '@angular/core': 17.0.2 + '@angular/platform-browser': 17.0.2 rxjs: ^6.5.3 || ^7.4.0 dependencies: - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) - '@angular/platform-browser': 17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0) + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/platform-browser': 17.0.2(@angular/animations@17.0.2)(@angular/common@17.0.2)(@angular/core@17.0.2) rxjs: 7.8.1 tslib: 2.4.1 dev: false @@ -3012,32 +3027,32 @@ packages: resolution: {integrity: sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==} dev: true - /@asymmetrik/ngx-leaflet-markercluster@16.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@asymmetrik/ngx-leaflet@16.0.1)(leaflet.markercluster@1.5.3)(leaflet@1.9.3): - resolution: {integrity: sha512-NhVUOY+HFHIEaKPejjBEM+6op5kvvSqrHOSitdeS7foG4EmrzMQPsKsqEUvKRRaLNm9NdoneTMyki8z3P6rLRw==} + /@asymmetrik/ngx-leaflet-markercluster@17.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(@asymmetrik/ngx-leaflet@17.0.0)(leaflet.markercluster@1.5.3)(leaflet@1.9.3): + resolution: {integrity: sha512-lYp4B3bCBPlYbs8Kz82VFJJ50c2xzF6yL7+sX1bgtY6x094kb5EZvzZLuwczFQ0v1N8nRDfeokKQfZfQ7s47mw==} peerDependencies: - '@angular/common': '16' - '@angular/core': '16' - '@asymmetrik/ngx-leaflet': '16' + '@angular/common': '17' + '@angular/core': '17' + '@asymmetrik/ngx-leaflet': '17' leaflet: '1' leaflet.markercluster: '1' dependencies: - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) - '@asymmetrik/ngx-leaflet': 16.0.1(@angular/common@17.0.0)(@angular/core@17.0.0)(leaflet@1.9.3) + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) + '@asymmetrik/ngx-leaflet': 17.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(leaflet@1.9.3) leaflet: 1.9.3 leaflet.markercluster: 1.5.3(leaflet@1.9.3) tslib: 2.4.1 dev: false - /@asymmetrik/ngx-leaflet@16.0.1(@angular/common@17.0.0)(@angular/core@17.0.0)(leaflet@1.9.3): - resolution: {integrity: sha512-sYtEWEgSTV5freW5YXvvKSvyxCZxPLqp/AqJ9ueL+yLQzVVB6YFrCejquRgnqbQHEhGM+AvAZUx5xBd4NFBgKw==} + /@asymmetrik/ngx-leaflet@17.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(leaflet@1.9.3): + resolution: {integrity: sha512-Tg09780yg1pPRR7k9Z0B0Fb3Mr4SMXYfi+hii8S0McHiqiUqkB+ZhhB4hJq83v4cuvcYgZjtkz+p06lCJY/z+w==} peerDependencies: - '@angular/common': '16' - '@angular/core': '16' + '@angular/common': '17' + '@angular/core': '17' leaflet: '1' dependencies: - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) leaflet: 1.9.3 tslib: 2.4.1 dev: false @@ -3062,6 +3077,69 @@ packages: rxjs: 7.8.1 dev: false + /@awesome-cordova-plugins/core@6.4.0(rxjs@7.8.1): + resolution: {integrity: sha512-06I5JdTgAgKTby+VG+3sQF5+z4RNCEyVl6y7tz2rICx8MURL1biuh3oGGN1rCQQjsuMZcX5siMBr0NF/OHqxLQ==} + requiresBuild: true + peerDependencies: + rxjs: ^5.5.0 || ^6.5.0 || ^7.3.0 + dependencies: + '@types/cordova': 11.0.3 + rxjs: 7.8.1 + dev: false + optional: true + + /@awesome-cordova-plugins/http@6.4.0(@awesome-cordova-plugins/core@6.4.0)(rxjs@7.8.1): + resolution: {integrity: sha512-nv8Az1bYnEm/MQSA6Oec0FFAGFu5bmubQXypp08ZUJA4uGkps3IJS02F0451PF/vM0Jcpnb+W6ZRqRCNJ34ZJA==} + requiresBuild: true + peerDependencies: + '@awesome-cordova-plugins/core': ^6.0.1 + rxjs: ^5.5.0 || ^6.5.0 || ^7.3.0 + dependencies: + '@awesome-cordova-plugins/core': 6.4.0(rxjs@7.8.1) + '@types/cordova': 11.0.3 + rxjs: 7.8.1 + dev: false + optional: true + + /@awesome-cordova-plugins/in-app-browser@6.4.0(@awesome-cordova-plugins/core@6.4.0)(rxjs@7.8.1): + resolution: {integrity: sha512-AaHg/hpXrfKtX+HCzENJDjR9z2wYyNe86o2VeKZlQQP/teuo8SleOIsmN4yTVI1nqnGrQTuD4sKQIhiNeS836g==} + requiresBuild: true + peerDependencies: + '@awesome-cordova-plugins/core': ^6.0.1 + rxjs: ^5.5.0 || ^6.5.0 || ^7.3.0 + dependencies: + '@awesome-cordova-plugins/core': 6.4.0(rxjs@7.8.1) + '@types/cordova': 11.0.3 + rxjs: 7.8.1 + dev: false + optional: true + + /@awesome-cordova-plugins/safari-view-controller@6.4.0(@awesome-cordova-plugins/core@6.4.0)(rxjs@7.8.1): + resolution: {integrity: sha512-dpt0MlPgNmHBDsIJr6HIcUEyP0xkuAlNxtg0/aX1yT6yKANZt1K5yGv/6RzRTvNaRqX43OOmeyYbJg/MEpLzSA==} + requiresBuild: true + peerDependencies: + '@awesome-cordova-plugins/core': ^6.0.1 + rxjs: ^5.5.0 || ^6.5.0 || ^7.3.0 + dependencies: + '@awesome-cordova-plugins/core': 6.4.0(rxjs@7.8.1) + '@types/cordova': 11.0.3 + rxjs: 7.8.1 + dev: false + optional: true + + /@awesome-cordova-plugins/secure-storage@6.4.0(@awesome-cordova-plugins/core@6.4.0)(rxjs@7.8.1): + resolution: {integrity: sha512-F2XCv7l762Ac6+TXdA2yPx2fVNvrZl5upZ/OMCMrTrT3PqBL4pzO7RL/C1H0lqQvY93hmDPVIc6hRM47Eac0yQ==} + requiresBuild: true + peerDependencies: + '@awesome-cordova-plugins/core': ^6.0.1 + rxjs: ^5.5.0 || ^6.5.0 || ^7.3.0 + dependencies: + '@awesome-cordova-plugins/core': 6.4.0(rxjs@7.8.1) + '@types/cordova': 11.0.3 + rxjs: 7.8.1 + dev: false + optional: true + /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -3136,7 +3214,7 @@ packages: resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 @@ -3163,7 +3241,7 @@ packages: resolution: {integrity: sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-compilation-targets@7.22.15: @@ -3289,7 +3367,7 @@ packages: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 @@ -3304,7 +3382,7 @@ packages: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.23.2) + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 @@ -3343,14 +3421,14 @@ packages: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-member-expression-to-functions@7.22.5: resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-member-expression-to-functions@7.23.0: @@ -3402,6 +3480,20 @@ packages: '@babel/helper-validator-identifier': 7.22.5 dev: true + /@babel/helper-module-transforms@7.23.0(@babel/core@7.22.9): + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} engines: {node: '>=6.9.0'} @@ -3420,7 +3512,7 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -3492,14 +3584,14 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/helper-split-export-declaration@7.22.6: @@ -3554,9 +3646,9 @@ packages: resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 transitivePeerDependencies: - supports-color dev: true @@ -3594,7 +3686,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 dev: true /@babel/parser@7.23.0: @@ -4198,7 +4290,7 @@ packages: dependencies: '@babel/core': 7.22.9 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 @@ -4493,7 +4585,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.9 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.22.9) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -4515,7 +4607,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.9 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.22.9) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true @@ -4540,7 +4632,7 @@ packages: dependencies: '@babel/core': 7.22.9 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.22.9) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.5 dev: true @@ -4688,7 +4780,7 @@ packages: dependencies: '@babel/compat-data': 7.22.9 '@babel/core': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) @@ -5288,7 +5380,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.9) '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.9) - '@babel/types': 7.22.5 + '@babel/types': 7.23.0 esutils: 2.0.3 dev: true @@ -5333,23 +5425,23 @@ packages: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 dev: true /@babel/traverse@7.22.8: resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: @@ -5430,6 +5522,16 @@ packages: '@capacitor/core': 4.6.1 dev: false + /@capacitor/browser@4.1.1(@capacitor/core@4.8.1): + resolution: {integrity: sha512-RJKNeRiLm6X668X75YiPN/9t3z1pxVEPjIhLM/AtWAEsHUb8bjroQQ3WGdW/30Wa60a7ywiw3YLqWctfRaYyFw==} + requiresBuild: true + peerDependencies: + '@capacitor/core': ^4.0.0 + dependencies: + '@capacitor/core': 4.8.1 + dev: false + optional: true + /@capacitor/cli@4.6.1: resolution: {integrity: sha512-iFMK83B67RXEQyWi1kOzQmRdCFc/pPD924mjAXG7yFLVyMvVRGAwwf8LzWFzHyQDoKK+auPMHycVfzm9T6Iyyg==} engines: {node: '>=12.4.0'} @@ -5469,6 +5571,14 @@ packages: dependencies: tslib: 2.4.1 + /@capacitor/core@4.8.1: + resolution: {integrity: sha512-GIUGw1P2Iyh4jb8ZAIWRPtR2zH6ARcpwN5pn/vmIJiTujQBMQmF62s5L3m4XMQSVKlbw8iCPi/YKjlUL+EjKhA==} + requiresBuild: true + dependencies: + tslib: 2.4.1 + dev: false + optional: true + /@capacitor/device@4.1.0(@capacitor/core@4.6.1): resolution: {integrity: sha512-BlcYb6e6m+vC1SxeyUDIUGfuNXdKEcpFPDCs/kxk2SByFc/BkvXeoy4NjY4qmTderGELofX9bta5Iy9JV7rGUg==} peerDependencies: @@ -5549,6 +5659,15 @@ packages: '@capacitor/core': 4.6.1 dev: false + /@capacitor/preferences@4.0.2(@capacitor/core@4.8.1): + resolution: {integrity: sha512-HgcRkMdVHSIV3TeQLZFmCaCeMWQ25wLyZZ7dA2f8Rw81Q1Nroxsi7HxTEGNqrWKSN9PNKBJD8vChr6eB2GNtZg==} + peerDependencies: + '@capacitor/core': ^4.0.0 + dependencies: + '@capacitor/core': 4.8.1 + dev: false + optional: true + /@capacitor/share@4.1.0(@capacitor/core@4.6.1): resolution: {integrity: sha512-Gh/cgy7Ee+9fkhw+Q4+9s2S4HiC34/eLoaohqRg1ahtpqvTQ3qdInoEJ23FdILq5cLj2ZPpx2VuEXjpLKX1Z5A==} peerDependencies: @@ -5914,7 +6033,7 @@ packages: uuid: 8.3.2 dev: true - /@cypress/schematic@1.7.0(@angular/cli@17.0.0)(@angular/core@17.0.0): + /@cypress/schematic@1.7.0(@angular/cli@17.0.0)(@angular/core@17.0.2): resolution: {integrity: sha512-CouQrVlZ+uHVVBQtmNoMYU9LyoSAmQTOLDpVjrdTdMPpJH1mWnHCL5OCMt+FZLR+43KRiWEvDUjNqSza11oGsQ==} peerDependencies: '@angular/cli': '>=12' @@ -5924,7 +6043,7 @@ packages: '@angular-devkit/core': 12.2.18 '@angular-devkit/schematics': 12.2.18 '@angular/cli': 17.0.0 - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) '@schematics/angular': 12.2.18 jsonc-parser: 3.2.0 rxjs: 6.6.7 @@ -6676,58 +6795,6 @@ packages: rxjs: 7.8.1 dev: false - /@ionic-native/http@5.36.0(@ionic-native/core@5.36.0)(rxjs@7.8.1): - resolution: {integrity: sha512-3t7UhcqNxZuIX+HXuydlaDfA9AwDXiRFGs9GsHpJnXMTfbeKUcwzp0amqblrLslDA9tNfqSmJyFZFaMX6CRrog==} - requiresBuild: true - peerDependencies: - '@ionic-native/core': ^5.1.0 - rxjs: ^5.5.0 || ^6.5.0 - dependencies: - '@ionic-native/core': 5.36.0(rxjs@7.8.1) - '@types/cordova': 11.0.3 - rxjs: 7.8.1 - dev: false - optional: true - - /@ionic-native/in-app-browser@5.36.0(@ionic-native/core@5.36.0)(rxjs@7.8.1): - resolution: {integrity: sha512-tX/FBT0jpkgEefZ8iorv5eDKfgP/ExbYr1AWg6okORQ0dwLfXsD5KDJgKHN9GFZvyuLNeaLpC1mN7CvwvLvmgA==} - requiresBuild: true - peerDependencies: - '@ionic-native/core': ^5.1.0 - rxjs: ^5.5.0 || ^6.5.0 - dependencies: - '@ionic-native/core': 5.36.0(rxjs@7.8.1) - '@types/cordova': 11.0.3 - rxjs: 7.8.1 - dev: false - optional: true - - /@ionic-native/safari-view-controller@5.36.0(@ionic-native/core@5.36.0)(rxjs@7.8.1): - resolution: {integrity: sha512-pvqnzro3bBZ0bQOMjBRKhmjHDaLKfDS75QY7uqe9UzjufMnHtBUUWgMvTuL7MsjTXRj8iRhe1wnUv8aBkz4SVA==} - requiresBuild: true - peerDependencies: - '@ionic-native/core': ^5.1.0 - rxjs: ^5.5.0 || ^6.5.0 - dependencies: - '@ionic-native/core': 5.36.0(rxjs@7.8.1) - '@types/cordova': 11.0.3 - rxjs: 7.8.1 - dev: false - optional: true - - /@ionic-native/secure-storage@5.36.0(@ionic-native/core@5.36.0)(rxjs@7.8.1): - resolution: {integrity: sha512-8wRH0bUMvJVnEu052cA1gi10cYJzNWMa67uRavay2UlDA5gDzOkUl5YsvWfg3BP6UW8ZQG/YDVIyzRWSp3Gevg==} - requiresBuild: true - peerDependencies: - '@ionic-native/core': ^5.1.0 - rxjs: ^5.5.0 || ^6.5.0 - dependencies: - '@ionic-native/core': 5.36.0(rxjs@7.8.1) - '@types/cordova': 11.0.3 - rxjs: 7.8.1 - dev: false - optional: true - /@ionic/angular-toolkit@10.0.0: resolution: {integrity: sha512-F72mvfCHEMQ/eFEgQfiIQQ7B9BLIBBS/Jjegk6UJJb/uMwgNOJG5KyHw6vaoSiBmLnHuPqLvnoz6DXJCrbKl0A==} dependencies: @@ -6738,8 +6805,8 @@ packages: - chokidar dev: true - /@ionic/angular@7.1.3(@angular/core@17.0.0)(@angular/forms@17.0.0)(@angular/router@17.0.0)(rxjs@7.8.1)(zone.js@0.14.2): - resolution: {integrity: sha512-Nxl9Ykzd+JCF7ZwtaaO/TZYapLgni5svLSnUjK4XmnLAvv0ydDSVUqY3UVwP1C7JO2q4pb0xHy6LpEYn2Fw28Q==} + /@ionic/angular@7.5.5(@angular/core@17.0.2)(@angular/forms@17.0.2)(@angular/router@17.0.2)(rxjs@7.8.1)(zone.js@0.14.2): + resolution: {integrity: sha512-/xt9a37BJodduF6+tyhP7KYb8UEw1bRo9CXnWrSS1C8lC+erNKZP+cdFgupPxNUfWisyIDrRrZswPB8fNXUM0w==} peerDependencies: '@angular/core': '>=14.0.0' '@angular/forms': '>=14.0.0' @@ -6747,10 +6814,10 @@ packages: rxjs: '>=7.5.0' zone.js: '>=0.11.0' dependencies: - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) - '@angular/forms': 17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.1) - '@angular/router': 17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.1) - '@ionic/core': 7.1.3 + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/forms': 17.0.2(@angular/common@17.0.2)(@angular/core@17.0.2)(@angular/platform-browser@17.0.2)(rxjs@7.8.1) + '@angular/router': 17.0.2(@angular/common@17.0.2)(@angular/core@17.0.2)(@angular/platform-browser@17.0.2)(rxjs@7.8.1) + '@ionic/core': 7.5.5 ionicons: 7.1.2 jsonc-parser: 3.2.0 rxjs: 7.8.1 @@ -6839,21 +6906,21 @@ packages: - supports-color dev: true - /@ionic/core@7.1.3: - resolution: {integrity: sha512-Wg3jBOoVpoHlTuKxcFa5gX9rYtI8FI6zmwb7ERdk6B9Uvk4KDgJLc1MnZK8IVb6RWTg1iipzBRdU40cX09bR4w==} + /@ionic/core@7.5.5: + resolution: {integrity: sha512-7Rn3OUz8QCob7yMuCLs5dVLpChscNCm+OqH8lqTzy3N/8VSKHLNPHIHTIa4DQm9HwjtpOB+XCTeIqbdWHkLgnA==} dependencies: - '@stencil/core': 3.4.1 - ionicons: 7.1.0 + '@stencil/core': 4.7.2 + ionicons: 7.2.1 tslib: 2.4.1 dev: false - /@ionic/storage-angular@4.0.0(@angular/core@17.0.0)(rxjs@7.8.1): + /@ionic/storage-angular@4.0.0(@angular/core@17.0.2)(rxjs@7.8.1): resolution: {integrity: sha512-FeSmCMCm1bMRfu5TFSqLtjdfEo/dLLUhLIrPmbhSYomVZdV/dNn4mBZv9SabyxSqn4bF31hw40y+4buhG+durQ==} peerDependencies: '@angular/core': '*' rxjs: '*' dependencies: - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) '@ionic/storage': 4.0.0 rxjs: 7.8.1 tslib: 2.4.1 @@ -6999,6 +7066,13 @@ packages: engines: {node: '>=8'} dev: true + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -7075,7 +7149,7 @@ packages: read-yaml-file: 1.1.0 dev: true - /@ngtools/webpack@17.0.0(@angular/compiler-cli@17.0.0)(typescript@5.2.2)(webpack@5.89.0): + /@ngtools/webpack@17.0.0(@angular/compiler-cli@17.0.2)(typescript@5.2.2)(webpack@5.89.0): resolution: {integrity: sha512-/Bb5MXlphNp3UDsQDa4EB4AwpF4D/plrCPd5YGfVvD43j5g5Rpen+cqz5jai1zfAkF1dPl2qq0nRp/jwmJO3uA==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: @@ -7083,12 +7157,12 @@ packages: typescript: '>=5.2 <5.3' webpack: ^5.54.0 dependencies: - '@angular/compiler-cli': 17.0.0(@angular/compiler@17.0.0)(typescript@5.2.2) + '@angular/compiler-cli': 17.0.2(@angular/compiler@17.0.2)(typescript@5.2.2) typescript: 5.2.2 webpack: 5.89.0(esbuild@0.19.5) dev: true - /@ngx-translate/core@15.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(rxjs@7.8.1): + /@ngx-translate/core@15.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(rxjs@7.8.1): resolution: {integrity: sha512-Am5uiuR0bOOxyoercDnAA3rJVizo4RRqJHo8N3RqJ+XfzVP/I845yEnMADykOHvM6HkVm4SZSnJBOiz0Anx5BA==} engines: {node: ^16.13.0 || >=18.10.0} peerDependencies: @@ -7096,12 +7170,12 @@ packages: '@angular/core': '>=16.0.0' rxjs: ^6.5.5 || ^7.4.0 dependencies: - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) rxjs: 7.8.1 dev: false - /@ngx-translate/http-loader@8.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@ngx-translate/core@15.0.0)(rxjs@7.8.1): + /@ngx-translate/http-loader@8.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(@ngx-translate/core@15.0.0)(rxjs@7.8.1): resolution: {integrity: sha512-SFMsdUcmHF5OdZkL1CHEoSAwbP5EbAOPTLLboOCRRoOg21P4GJx+51jxGdJeGve6LSKLf4Pay7BkTwmE6vxYlg==} engines: {node: ^16.13.0 || >=18.10.0} peerDependencies: @@ -7110,9 +7184,9 @@ packages: '@ngx-translate/core': '>=15.0.0' rxjs: ^6.5.5 || ^7.4.0 dependencies: - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) - '@ngx-translate/core': 15.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(rxjs@7.8.1) + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) + '@ngx-translate/core': 15.0.0(@angular/common@17.0.2)(@angular/core@17.0.2)(rxjs@7.8.1) rxjs: 7.8.1 dev: false @@ -7209,41 +7283,43 @@ packages: - supports-color dev: true - /@nrwl/devkit@16.5.1(nx@16.5.1): - resolution: {integrity: sha512-NB+DE/+AFJ7lKH/WBFyatJEhcZGj25F24ncDkwjZ6MzEiSOGOJS0LaV/R+VUsmS5EHTPXYOpn3zHWWAcJhyOmA==} + /@nrwl/devkit@17.0.3(nx@17.0.3): + resolution: {integrity: sha512-k1o0tvmGcg2/Kw2d56ULixqngCj5zTfp3mn6yS0ytIJrTQnJVkI8GcFCtpnqbzQjD8nKHhvTIcOMsj2BzLos9A==} dependencies: - '@nx/devkit': 16.5.1(nx@16.5.1) + '@nx/devkit': 17.0.3(nx@17.0.3) transitivePeerDependencies: - nx dev: true - /@nrwl/tao@16.5.1: - resolution: {integrity: sha512-x+gi/fKdM6uQNIti9exFlm3V5LBP3Y8vOEziO42HdOigyrXa0S0HD2WMpccmp6PclYKhwEDUjKJ39xh5sdh4Ig==} + /@nrwl/tao@17.0.3: + resolution: {integrity: sha512-X6zcwf6c3z7TuztRJWM/OCfzm7+LI4Uw4coc9+PWr44ohHkgId2wEJTzXrDT3+lvv8DgwPpgWPwqntw+YcgRYg==} hasBin: true dependencies: - nx: 16.5.1 + nx: 17.0.3 + tslib: 2.4.1 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug dev: true - /@nx/devkit@16.5.1(nx@16.5.1): - resolution: {integrity: sha512-T1acZrVVmJw/sJ4PIGidCBYBiBqlg/jT9e8nIGXLSDS20xcLvfo4zBQf8UZLrmHglnwwpDpOWuVJCp2rYA5aDg==} + /@nx/devkit@17.0.3(nx@17.0.3): + resolution: {integrity: sha512-gW9aVc2BJBQ6PME07lsiaHg2Tjm9FN/qFjzxeSQYe2cR/s4hXqCBUfgKEqjgzMq+ykDR2Japkd8Vg8BN0uWnpA==} peerDependencies: - nx: '>= 15 <= 17' + nx: '>= 16 <= 18' dependencies: - '@nrwl/devkit': 16.5.1(nx@16.5.1) + '@nrwl/devkit': 17.0.3(nx@17.0.3) ejs: 3.1.9 + enquirer: 2.3.6 ignore: 5.2.4 - nx: 16.5.1 + nx: 17.0.3 semver: 7.5.3 tmp: 0.2.1 tslib: 2.4.1 dev: true - /@nx/nx-darwin-arm64@16.5.1: - resolution: {integrity: sha512-q98TFI4B/9N9PmKUr1jcbtD4yAFs1HfYd9jUXXTQOlfO9SbDjnrYJgZ4Fp9rMNfrBhgIQ4x1qx0AukZccKmH9Q==} + /@nx/nx-darwin-arm64@17.0.3: + resolution: {integrity: sha512-KA75JC/hgkt9qwK4dnN1tlaTXWdYItkNMjji6YjkyAYabbLKQKVcQoPocYP/RB/Gng+vNslXwuug2atgxDf43g==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -7251,8 +7327,8 @@ packages: dev: true optional: true - /@nx/nx-darwin-x64@16.5.1: - resolution: {integrity: sha512-j9HmL1l8k7EVJ3eOM5y8COF93gqrydpxCDoz23ZEtsY+JHY77VAiRQsmqBgEx9GGA2dXi9VEdS67B0+1vKariw==} + /@nx/nx-darwin-x64@17.0.3: + resolution: {integrity: sha512-YVWk9jNibD7fzn8oNBl/UNu8NEfcVwFo5wiNyfOql495yP0tyGdZNHD4i/7aS2Y654G1JYDRf7TutJ7wWFU8bg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -7260,8 +7336,8 @@ packages: dev: true optional: true - /@nx/nx-freebsd-x64@16.5.1: - resolution: {integrity: sha512-CXSPT01aVS869tvCCF2tZ7LnCa8l41wJ3mTVtWBkjmRde68E5Up093hklRMyXb3kfiDYlfIKWGwrV4r0eH6x1A==} + /@nx/nx-freebsd-x64@17.0.3: + resolution: {integrity: sha512-yiYkfY+3IrlBrlaXN6SO4Fnb0a+Ti+FPwAqRPpH6q3uTCh0NmNgE99ydtT31ZbgCF1ZwRK8NdCbuNO3w9uznwA==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] @@ -7269,8 +7345,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm-gnueabihf@16.5.1: - resolution: {integrity: sha512-BhrumqJSZCWFfLFUKl4CAUwR0Y0G2H5EfFVGKivVecEQbb+INAek1aa6c89evg2/OvetQYsJ+51QknskwqvLsA==} + /@nx/nx-linux-arm-gnueabihf@17.0.3: + resolution: {integrity: sha512-x4h6QJlESJZ0bigUlxNEVyi7F/VWQQx+1IBptofXhK5eTOPjJ5qgINdM38AZg+kBJDz5XOVMDejg6RzHlhs0Tg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -7278,8 +7354,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm64-gnu@16.5.1: - resolution: {integrity: sha512-x7MsSG0W+X43WVv7JhiSq2eKvH2suNKdlUHEG09Yt0vm3z0bhtym1UCMUg3IUAK7jy9hhLeDaFVFkC6zo+H/XQ==} + /@nx/nx-linux-arm64-gnu@17.0.3: + resolution: {integrity: sha512-1lysnsZv9FS+9fciK0qh5PhsQ8U+vyFoR/jiJl+3vqYNUwEmNLD0VEAZzpZL2SJXQqD5E0bjuQpYxiD7YRXImQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -7287,8 +7363,8 @@ packages: dev: true optional: true - /@nx/nx-linux-arm64-musl@16.5.1: - resolution: {integrity: sha512-J+/v/mFjOm74I0PNtH5Ka+fDd+/dWbKhpcZ2R1/6b9agzZk+Ff/SrwJcSYFXXWKbPX+uQ4RcJoytT06Zs3s0ow==} + /@nx/nx-linux-arm64-musl@17.0.3: + resolution: {integrity: sha512-0/bvSpbc4vOy9E24fu0ajDGe3SO8lmLtlxjXwGRcnzlt/MWM8sazoO0lX163/X2wF6tuL6+HXHOr6AeqsdeRXQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -7296,8 +7372,8 @@ packages: dev: true optional: true - /@nx/nx-linux-x64-gnu@16.5.1: - resolution: {integrity: sha512-igooWJ5YxQ94Zft7IqgL+Lw0qHaY15Btw4gfK756g/YTYLZEt4tTvR1y6RnK/wdpE3sa68bFTLVBNCGTyiTiDQ==} + /@nx/nx-linux-x64-gnu@17.0.3: + resolution: {integrity: sha512-tKO6MYUxpUsHMuZrYy8hG20RIOdBY3kyEK8wxH8JZZaXKeYUK+5vv5DavWpY5wuu2jffNIJNsbUzcrqOlcbDOg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -7305,8 +7381,8 @@ packages: dev: true optional: true - /@nx/nx-linux-x64-musl@16.5.1: - resolution: {integrity: sha512-zF/exnPqFYbrLAduGhTmZ7zNEyADid2bzNQiIjJkh8Y6NpDwrQIwVIyvIxqynsjMrIs51kBH+8TUjKjj2Jgf5A==} + /@nx/nx-linux-x64-musl@17.0.3: + resolution: {integrity: sha512-H88yBLrI51m6NGoCkpBYhacRyTBfDuf7x00SnxSfD1yLlxCazPUG7CGkMedpzXo10YHxCFvg7B/Fa23DRRleUg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -7314,8 +7390,8 @@ packages: dev: true optional: true - /@nx/nx-win32-arm64-msvc@16.5.1: - resolution: {integrity: sha512-qtqiLS9Y9TYyAbbpq58kRoOroko4ZXg5oWVqIWFHoxc5bGPweQSJCROEqd1AOl2ZDC6BxfuVHfhDDop1kK05WA==} + /@nx/nx-win32-arm64-msvc@17.0.3: + resolution: {integrity: sha512-bKzmzjvgLB4IzLWTySqXgBgXawfw0ZSjUkscFQ3ZHrK9loMba1Ue8Ugy2DktlkUrCyPmGSot+YZViTzWP75C3w==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -7323,8 +7399,8 @@ packages: dev: true optional: true - /@nx/nx-win32-x64-msvc@16.5.1: - resolution: {integrity: sha512-kUJBLakK7iyA9WfsGGQBVennA4jwf5XIgm0lu35oMOphtZIluvzItMt0EYBmylEROpmpEIhHq0P6J9FA+WH0Rg==} + /@nx/nx-win32-x64-msvc@17.0.3: + resolution: {integrity: sha512-SJssAOyUM1IW9t84/Uzau9JHo14hnG5mxvcrborNGlLq+WnP0jzISVs7gvV2xWZ9j1JemxA5KLbkMuIkJyR6qQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -7374,15 +7450,6 @@ packages: - debug dev: false - /@parcel/watcher@2.0.4: - resolution: {integrity: sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==} - engines: {node: '>= 10.0.0'} - requiresBuild: true - dependencies: - node-addon-api: 3.2.1 - node-gyp-build: 4.6.0 - dev: true - /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -7482,6 +7549,10 @@ packages: - supports-color dev: true + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + /@sindresorhus/is@5.4.1: resolution: {integrity: sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==} engines: {node: '>=14.16'} @@ -7558,9 +7629,9 @@ packages: hasBin: true dev: false - /@stencil/core@3.4.1: - resolution: {integrity: sha512-7rjOmM0W9K5op2gtOQRLERGH1155rv2fm6ppxOzYqqG8ISct4m9skp5XgUBYPu+GSPsJFdRuCIQs0IuVsG/7+g==} - engines: {node: '>=14.10.0', npm: '>=6.0.0'} + /@stencil/core@4.7.2: + resolution: {integrity: sha512-sPPDYrXiTbfeUF5CCyfqysXK/yfTHC4xYR1+nHzGkS2vhRSBOLp0oPuB+xkJLKA+K2ZqDJUxpOnDxy1CLWwBXA==} + engines: {node: '>=16.0.0', npm: '>=7.10.0'} hasBin: true dev: false @@ -7655,7 +7726,6 @@ packages: resolution: {integrity: sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ==} dependencies: '@types/chai': 4.3.5 - dev: true /@types/chai-spies@1.0.6: resolution: {integrity: sha512-xkk4HmhBB9OQeTAifa9MJ+6R5/Rq9+ungDe4JidZD+vqZVeiWZwc2i7/pd1ZKjyGlSBIQePoWdyUyFUGT0rv5w==} @@ -7665,7 +7735,6 @@ packages: /@types/chai@4.3.5: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} - dev: true /@types/cli-progress@3.11.5: resolution: {integrity: sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g==} @@ -7706,6 +7775,34 @@ packages: dependencies: '@types/node': 18.15.3 + /@types/d3-scale-chromatic@3.0.2: + resolution: {integrity: sha512-kpKNZMDT3OAX6b5ct5nS/mv6LULagnUy4DmS6yyNjclje1qVe7vbjPwY3q1TGz6+Wr2IUkgFatCzqYUl54fHag==} + requiresBuild: true + dev: false + optional: true + + /@types/d3-scale@4.0.8: + resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} + requiresBuild: true + dependencies: + '@types/d3-time': 3.0.3 + dev: false + optional: true + + /@types/d3-time@3.0.3: + resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} + requiresBuild: true + dev: false + optional: true + + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + requiresBuild: true + dependencies: + '@types/ms': 0.7.34 + dev: false + optional: true + /@types/docker-modem@3.0.2: resolution: {integrity: sha512-qC7prjoEYR2QEe6SmCVfB1x3rfcQtUr1n4x89+3e0wSTMQ/KYCyf+/RAA9n2tllkkNc6//JMUZePdFRiGIWfaQ==} dependencies: @@ -7901,9 +7998,13 @@ packages: '@types/geojson': 1.0.6 dev: true - /@types/marked@4.3.1: - resolution: {integrity: sha512-vSSbKZFbNktrQ15v7o1EaH78EbWV+sPQbPjHG+Cp8CaNcPFUEfjZ0Iml/V0bFDwsTlYe8o6XC5Hfdp91cqPV2g==} + /@types/mdast@3.0.15: + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 dev: false + optional: true /@types/mime@1.3.2: resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} @@ -7927,6 +8028,12 @@ packages: dependencies: '@types/node': 18.15.3 + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + requiresBuild: true + dev: false + optional: true + /@types/mustache@4.2.2: resolution: {integrity: sha512-MUSpfpW0yZbTgjekDbH0shMYBUD+X/uJJJMm9LXN1d5yjl5lCY1vN/eWKD6D1tOtjA6206K0zcIPnUaFMurdNA==} dev: true @@ -8084,6 +8191,12 @@ packages: resolution: {integrity: sha512-RBz2uRZVCXuMg93WD//aTS5B120QlT4lR/gL+935QtGsKHLS6sCtZBaKfWjIfk7ZXv/r8mtGbwjVIee6/3XTow==} dev: true + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + requiresBuild: true + dev: false + optional: true + /@types/uuid@8.3.4: resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} dev: false @@ -8160,14 +8273,6 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - /@typescript-eslint/scope-manager@6.10.0: resolution: {integrity: sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -8175,26 +8280,6 @@ packages: '@typescript-eslint/types': 6.10.0 '@typescript-eslint/visitor-keys': 6.10.0 - /@typescript-eslint/type-utils@5.62.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@5.2.2) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.53.0 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/type-utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): resolution: {integrity: sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -8214,36 +8299,10 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@typescript-eslint/types@6.10.0: resolution: {integrity: sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==} engines: {node: ^16.0.0 || >=18.0.0} - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@6.10.0(typescript@5.2.2): resolution: {integrity: sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -8264,26 +8323,6 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/utils@5.62.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) - '@types/json-schema': 7.0.14 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.53.0 - eslint-scope: 5.1.1 - semver: 7.3.8 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): resolution: {integrity: sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -8302,14 +8341,6 @@ packages: - supports-color - typescript - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@6.10.0: resolution: {integrity: sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -8728,6 +8759,11 @@ packages: dependencies: color-convert: 2.0.1 + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -8946,8 +8982,8 @@ packages: - debug dev: false - /axios@1.4.0: - resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} + /axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} dependencies: follow-redirects: 1.15.2(debug@4.3.2) form-data: 4.0.0 @@ -8956,10 +8992,10 @@ packages: - debug dev: true - /axobject-query@3.1.1: - resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + /axobject-query@4.0.0: + resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} dependencies: - deep-equal: 2.2.2 + dequal: 2.0.3 dev: true /babel-loader@9.1.3(@babel/core@7.23.2)(webpack@5.89.0): @@ -9555,6 +9591,15 @@ packages: '@capacitor/core': 4.6.1 dev: false + /capacitor-secure-storage-plugin@0.8.1(@capacitor/core@4.8.1): + resolution: {integrity: sha512-PvTMZsjh5NAopdabp7b+zpu6N/zboBfB1dMldI7wbdCGSaH4LZo8cZLp9U2V1i2Y0V3JI1oWR3iysUrG0m7uPQ==} + peerDependencies: + '@capacitor/core': ^4.4.0 + dependencies: + '@capacitor/core': 4.8.1 + dev: false + optional: true + /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: true @@ -9614,6 +9659,12 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + requiresBuild: true + dev: false + optional: true + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true @@ -10577,6 +10628,14 @@ packages: dev: false optional: true + /d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + requiresBuild: true + dependencies: + internmap: 1.0.1 + dev: false + optional: true + /d3-array@3.2.4: resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} engines: {node: '>=12'} @@ -10728,6 +10787,12 @@ packages: dev: false optional: true + /d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + requiresBuild: true + dev: false + optional: true + /d3-path@3.1.0: resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} engines: {node: '>=12'} @@ -10756,6 +10821,15 @@ packages: dev: false optional: true + /d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + requiresBuild: true + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + dev: false + optional: true + /d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} engines: {node: '>=12'} @@ -10786,6 +10860,14 @@ packages: dev: false optional: true + /d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + requiresBuild: true + dependencies: + d3-path: 1.0.9 + dev: false + optional: true + /d3-shape@3.2.0: resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} engines: {node: '>=12'} @@ -10894,8 +10976,8 @@ packages: type: 1.2.0 dev: true - /dagre-d3-es@7.0.9: - resolution: {integrity: sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w==} + /dagre-d3-es@7.0.10: + resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==} requiresBuild: true dependencies: d3: 7.8.5 @@ -11031,6 +11113,14 @@ packages: engines: {node: '>=10'} dev: true + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + requiresBuild: true + dependencies: + character-entities: 2.0.2 + dev: false + optional: true + /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -11055,29 +11145,6 @@ packages: regexp.prototype.flags: 1.5.0 dev: true - /deep-equal@2.2.2: - resolution: {integrity: sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==} - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.1 - is-arguments: 1.1.1 - is-array-buffer: 3.0.2 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - isarray: 2.0.5 - object-is: 1.1.5 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - side-channel: 1.0.4 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.10 - dev: true - /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -11181,7 +11248,6 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: true /destroy@1.0.4: resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} @@ -11232,6 +11298,11 @@ packages: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} dev: true + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -11244,7 +11315,6 @@ packages: /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} - dev: true /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -11331,8 +11401,8 @@ packages: deprecated: dommatrix is no longer maintained. Please use @thednp/dommatrix. dev: true - /dompurify@2.4.3: - resolution: {integrity: sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==} + /dompurify@3.0.6: + resolution: {integrity: sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==} requiresBuild: true dev: false optional: true @@ -11371,11 +11441,6 @@ packages: engines: {node: '>=12'} dev: true - /dotenv@10.0.0: - resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} - engines: {node: '>=10'} - dev: true - /dotenv@16.3.1: resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} @@ -11453,8 +11518,8 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - /emoji-toolkit@7.0.1: - resolution: {integrity: sha512-l5aJyAhpC5s4mDuoVuqt4SzVjwIsIvakPh4ZGJJE4KWuWFCEHaXacQFkStVdD9zbRR+/BbRXob7u99o0lQFr8A==} + /emoji-toolkit@8.0.0: + resolution: {integrity: sha512-Vz8YIqQJsQ+QZ4yuKMMzliXceayqfWbNjb6bST+vm77QAhU2is3I+/PRxrNknW+q1bvHHMgjLCQXxzINWLVapg==} requiresBuild: true dev: false optional: true @@ -11612,20 +11677,6 @@ packages: which-typed-array: 1.1.10 dev: true - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - dev: true - /es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} dev: true @@ -11920,14 +11971,6 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -12294,17 +12337,6 @@ packages: micromatch: 4.0.5 dev: true - /fast-glob@3.2.7: - resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} - engines: {node: '>=8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - /fast-glob@3.3.0: resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} engines: {node: '>=8.6.0'} @@ -13724,6 +13756,12 @@ packages: side-channel: 1.0.4 dev: true + /internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + requiresBuild: true + dev: false + optional: true + /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} @@ -13731,42 +13769,43 @@ packages: dev: false optional: true - /ionic-appauth@0.9.0(rxjs@7.8.1): - resolution: {integrity: sha512-VayICoCf1MvX3KYOxv4GZ/Z4xNRCEmVzn8NovZVvIfw9BqRYoSIQ3+xP5a+R/PCOhNLMXNr33ygpfsV0OeJSiw==} + /ionic-appauth@2.0.0(rxjs@7.8.1): + resolution: {integrity: sha512-9rGWPU91CSbja/FzrFASDw0Me5Njd7uubHkKULMfpmYXlqwKH+4tCx63IWNoeu2vjmdtPczLmHneQJcElFJIIw==} peerDependencies: - rxjs: ^6.6.7 + rxjs: ^7.5.7 || ^7.8.0 dependencies: '@openid/appauth': 1.3.1 + '@types/chai-as-promised': 7.1.5 guid-typescript: 1.0.9 rxjs: 7.8.1 - tslib: 2.4.1 + tslib: 2.6.2 optionalDependencies: - '@capacitor/browser': 4.1.0(@capacitor/core@4.6.1) - '@capacitor/core': 4.6.1 - '@capacitor/preferences': 4.0.2(@capacitor/core@4.6.1) - '@ionic-native/core': 5.36.0(rxjs@7.8.1) - '@ionic-native/http': 5.36.0(@ionic-native/core@5.36.0)(rxjs@7.8.1) - '@ionic-native/in-app-browser': 5.36.0(@ionic-native/core@5.36.0)(rxjs@7.8.1) - '@ionic-native/safari-view-controller': 5.36.0(@ionic-native/core@5.36.0)(rxjs@7.8.1) - '@ionic-native/secure-storage': 5.36.0(@ionic-native/core@5.36.0)(rxjs@7.8.1) + '@awesome-cordova-plugins/core': 6.4.0(rxjs@7.8.1) + '@awesome-cordova-plugins/http': 6.4.0(@awesome-cordova-plugins/core@6.4.0)(rxjs@7.8.1) + '@awesome-cordova-plugins/in-app-browser': 6.4.0(@awesome-cordova-plugins/core@6.4.0)(rxjs@7.8.1) + '@awesome-cordova-plugins/safari-view-controller': 6.4.0(@awesome-cordova-plugins/core@6.4.0)(rxjs@7.8.1) + '@awesome-cordova-plugins/secure-storage': 6.4.0(@awesome-cordova-plugins/core@6.4.0)(rxjs@7.8.1) + '@capacitor/browser': 4.1.1(@capacitor/core@4.8.1) + '@capacitor/core': 4.8.1 + '@capacitor/preferences': 4.0.2(@capacitor/core@4.8.1) '@ionic/storage': 3.0.6 - capacitor-secure-storage-plugin: 0.8.1(@capacitor/core@4.6.1) + capacitor-secure-storage-plugin: 0.8.1(@capacitor/core@4.8.1) transitivePeerDependencies: - debug dev: false - /ionicons@7.1.0: - resolution: {integrity: sha512-iE4GuEdEHARJpp0sWL7WJZCzNCf5VxpNRhAjW0fLnZPnNL5qZOJUcfup2Z2Ty7Jk8Q5hacrHfGEB1lCwOdXqGg==} - dependencies: - '@stencil/core': 2.22.3 - dev: false - /ionicons@7.1.2: resolution: {integrity: sha512-zZ4njAqSP39H8RRvZhJvkHsv7cBjYE/VfInH218Osf2UVxJITSOutTTd25MW+tAXKN5fheYzclUXUsF55JHUDg==} dependencies: '@stencil/core': 2.22.3 dev: false + /ionicons@7.2.1: + resolution: {integrity: sha512-2pvCM7DGVEtbbj48PJzQrCADCQrqjU1nUYX9l9PyEWz3ZfdnLdAouqwPxLdl8tbaF9cE7OZRSlyQD7oLOLnGoQ==} + dependencies: + '@stencil/core': 4.7.2 + dev: false + /ip-regex@4.3.0: resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} engines: {node: '>=8'} @@ -13940,10 +13979,6 @@ packages: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} dev: true - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true - /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -14014,10 +14049,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true - /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: @@ -14090,23 +14121,12 @@ packages: engines: {node: '>=12'} dev: true - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true - /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - dev: true - /is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} dev: true @@ -14135,10 +14155,6 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true - /isbinaryfile@4.0.10: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} @@ -14177,7 +14193,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.2 '@babel/parser': 7.22.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -14256,6 +14272,21 @@ packages: colors: 1.4.0 dev: true + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -14587,7 +14618,6 @@ packages: /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - dev: true /klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} @@ -15142,6 +15172,13 @@ packages: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} hasBin: true + dev: true + + /marked@9.1.6: + resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} + engines: {node: '>= 16'} + hasBin: true + dev: false /material-symbols@0.10.0: resolution: {integrity: sha512-/C4LI/s8o1lz1M4AUA0qVQ3zqYGe3eF30ftRrtT48OY3pGOmScJFZo0TX0CGhoRNF2D59PNrpoccAyBBmtXoig==} @@ -15159,6 +15196,35 @@ packages: is-buffer: 1.1.6 dev: true + /mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + requiresBuild: true + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + requiresBuild: true + dependencies: + '@types/mdast': 3.0.15 + dev: false + optional: true + /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true @@ -15242,26 +15308,32 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /mermaid@9.4.3: - resolution: {integrity: sha512-TLkQEtqhRSuEHSE34lh5bCa94KATCyluAXmFnNI2PRZwOpXFeqiJWwZl+d2CcemE1RS6QbbueSSq9QIg8Uxcyw==} + /mermaid@10.6.1: + resolution: {integrity: sha512-Hky0/RpOw/1il9X8AvzOEChfJtVvmXm+y7JML5C//ePYMy0/9jCEmW1E1g86x9oDfW9+iVEdTV/i+M6KWRNs4A==} requiresBuild: true dependencies: '@braintree/sanitize-url': 6.0.2 + '@types/d3-scale': 4.0.8 + '@types/d3-scale-chromatic': 3.0.2 cytoscape: 3.25.0 cytoscape-cose-bilkent: 4.1.0(cytoscape@3.25.0) cytoscape-fcose: 2.2.0(cytoscape@3.25.0) d3: 7.8.5 - dagre-d3-es: 7.0.9 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.10 dayjs: 1.11.9 - dompurify: 2.4.3 + dompurify: 3.0.6 elkjs: 0.8.2 khroma: 2.0.0 lodash-es: 4.17.21 + mdast-util-from-markdown: 1.3.1 non-layered-tidy-tree-layout: 2.0.2 stylis: 4.3.0 ts-dedent: 2.2.0 uuid: 9.0.0 web-worker: 1.2.0 + transitivePeerDependencies: + - supports-color dev: false optional: true @@ -15269,6 +15341,223 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + /micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + requiresBuild: true + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + optional: true + + /micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + requiresBuild: true + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + optional: true + + /micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + requiresBuild: true + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + optional: true + + /micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + requiresBuild: true + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + dev: false + optional: true + + /micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + requiresBuild: true + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + optional: true + + /micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + requiresBuild: true + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + optional: true + + /micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + requiresBuild: true + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + optional: true + + /micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + requiresBuild: true + dependencies: + micromark-util-symbol: 1.1.0 + dev: false + optional: true + + /micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + requiresBuild: true + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + optional: true + + /micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + requiresBuild: true + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + dev: false + optional: true + + /micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + requiresBuild: true + dependencies: + micromark-util-symbol: 1.1.0 + dev: false + optional: true + + /micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + requiresBuild: true + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: false + optional: true + + /micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + requiresBuild: true + dev: false + optional: true + + /micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + requiresBuild: true + dev: false + optional: true + + /micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + requiresBuild: true + dependencies: + micromark-util-symbol: 1.1.0 + dev: false + optional: true + + /micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + requiresBuild: true + dependencies: + micromark-util-types: 1.1.0 + dev: false + optional: true + + /micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + requiresBuild: true + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: false + optional: true + + /micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + requiresBuild: true + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: false + optional: true + + /micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + requiresBuild: true + dev: false + optional: true + + /micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + requiresBuild: true + dev: false + optional: true + + /micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + requiresBuild: true + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@8.1.1) + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -15587,6 +15876,13 @@ packages: transitivePeerDependencies: - supports-color + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + requiresBuild: true + dev: false + optional: true + /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} @@ -15711,15 +16007,15 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: true - /ngx-date-fns@10.0.1(@angular/common@17.0.0)(@angular/core@17.0.0)(date-fns@2.30.0): + /ngx-date-fns@10.0.1(@angular/common@17.0.2)(@angular/core@17.0.2)(date-fns@2.30.0): resolution: {integrity: sha512-8IdwrblaMULNQgqwA0Yo8HPpUMQDLKC1pvkoFTToElf7gZDPWroOva2cogUrrNXXWLkwA9YDpc1skZVfI+mmwA==} peerDependencies: '@angular/common': '>=14' '@angular/core': '>=14' date-fns: '>=2' dependencies: - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) date-fns: 2.30.0 tslib: 2.4.1 dev: false @@ -15734,31 +16030,31 @@ packages: vlq: 1.0.1 dev: false - /ngx-markdown@16.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(@types/marked@4.3.1)(marked@4.3.0)(rxjs@7.8.1)(zone.js@0.14.2): - resolution: {integrity: sha512-/rlbXi+HBscJCDdwaTWIUrRkvwJicPnuAgeugOCZa0UbZ4VCWV3U0+uB1Zv6krRDF6FXJNXNLTUrMZV7yH8I6A==} + /ngx-markdown@17.1.0(@angular/common@17.0.2)(@angular/core@17.0.2)(@angular/platform-browser@17.0.2)(marked@9.1.6)(rxjs@7.8.1)(zone.js@0.14.2): + resolution: {integrity: sha512-jq0EvUVXTFZxNOCEhnvMSCVB/WSx8+Ac8MRXXxyibHI4JyXYo4MwRp/U+msTHGNb77KYyVtXGemID4SjsNLYiA==} peerDependencies: - '@angular/common': ^16.0.0 - '@angular/core': ^16.0.0 - '@angular/platform-browser': ^16.0.0 - '@types/marked': ^4.3.0 - marked: ^4.3.0 + '@angular/common': ^17.0.0 + '@angular/core': ^17.0.0 + '@angular/platform-browser': ^17.0.0 + marked: ^9.0.0 rxjs: ^6.5.3 || ^7.4.0 - zone.js: ~0.13.0 + zone.js: ~0.14.0 dependencies: - '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.1) - '@angular/core': 17.0.0(rxjs@7.8.1)(zone.js@0.14.2) - '@angular/platform-browser': 17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0) - '@types/marked': 4.3.1 - marked: 4.3.0 + '@angular/common': 17.0.2(@angular/core@17.0.2)(rxjs@7.8.1) + '@angular/core': 17.0.2(rxjs@7.8.1)(zone.js@0.14.2) + '@angular/platform-browser': 17.0.2(@angular/animations@17.0.2)(@angular/common@17.0.2)(@angular/core@17.0.2) + marked: 9.1.6 rxjs: 7.8.1 tslib: 2.4.1 zone.js: 0.14.2 optionalDependencies: clipboard: 2.0.11 - emoji-toolkit: 7.0.1 + emoji-toolkit: 8.0.0 katex: 0.16.8 - mermaid: 9.4.3 + mermaid: 10.6.1 prismjs: 1.29.0 + transitivePeerDependencies: + - supports-color dev: false /ngx-moment@6.0.2(moment@2.29.4): @@ -15810,7 +16106,9 @@ packages: /node-addon-api@3.2.1: resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + requiresBuild: true dev: true + optional: true /node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} @@ -15860,7 +16158,9 @@ packages: /node-gyp-build@4.6.0: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true + requiresBuild: true dev: true + optional: true /node-gyp@10.0.1: resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} @@ -15881,6 +16181,10 @@ packages: - supports-color dev: true + /node-machine-id@1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + dev: true + /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true @@ -16037,41 +16341,42 @@ packages: boolbase: 1.0.0 dev: true - /nx@16.5.1: - resolution: {integrity: sha512-I3hJRE4hG7JWAtncWwDEO3GVeGPpN0TtM8xH5ArZXyDuVeTth/i3TtJzdDzqXO1HHtIoAQN0xeq4n9cLuMil5g==} + /nx@17.0.3: + resolution: {integrity: sha512-VShJISKCYt3iVJoMUPZiv67+0tiItxWMnfVmTmPZPio2Fu+wGc9U4ijjPxcmp2RJmLRaxkB9cn5rlrAvkIrNMA==} hasBin: true requiresBuild: true peerDependencies: - '@swc-node/register': ^1.4.2 - '@swc/core': ^1.2.173 + '@swc-node/register': ^1.6.7 + '@swc/core': ^1.3.85 peerDependenciesMeta: '@swc-node/register': optional: true '@swc/core': optional: true dependencies: - '@nrwl/tao': 16.5.1 - '@parcel/watcher': 2.0.4 + '@nrwl/tao': 17.0.3 '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.4.0 + axios: 1.6.2 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 - cliui: 7.0.4 - dotenv: 10.0.0 + cliui: 8.0.1 + dotenv: 16.3.1 + dotenv-expand: 10.0.0 enquirer: 2.3.6 - fast-glob: 3.2.7 figures: 3.2.0 flat: 5.0.2 fs-extra: 11.1.1 glob: 7.1.4 ignore: 5.2.4 + jest-diff: 29.7.0 js-yaml: 4.1.0 jsonc-parser: 3.2.0 lines-and-columns: 2.0.3 minimatch: 3.0.5 + node-machine-id: 1.1.12 npm-run-path: 4.0.1 open: 8.4.2 semver: 7.5.3 @@ -16085,16 +16390,16 @@ packages: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 16.5.1 - '@nx/nx-darwin-x64': 16.5.1 - '@nx/nx-freebsd-x64': 16.5.1 - '@nx/nx-linux-arm-gnueabihf': 16.5.1 - '@nx/nx-linux-arm64-gnu': 16.5.1 - '@nx/nx-linux-arm64-musl': 16.5.1 - '@nx/nx-linux-x64-gnu': 16.5.1 - '@nx/nx-linux-x64-musl': 16.5.1 - '@nx/nx-win32-arm64-msvc': 16.5.1 - '@nx/nx-win32-x64-msvc': 16.5.1 + '@nx/nx-darwin-arm64': 17.0.3 + '@nx/nx-darwin-x64': 17.0.3 + '@nx/nx-freebsd-x64': 17.0.3 + '@nx/nx-linux-arm-gnueabihf': 17.0.3 + '@nx/nx-linux-arm64-gnu': 17.0.3 + '@nx/nx-linux-arm64-musl': 17.0.3 + '@nx/nx-linux-x64-gnu': 17.0.3 + '@nx/nx-linux-x64-musl': 17.0.3 + '@nx/nx-win32-arm64-msvc': 17.0.3 + '@nx/nx-win32-x64-msvc': 17.0.3 transitivePeerDependencies: - debug dev: true @@ -16940,6 +17245,15 @@ packages: engines: {node: '>=6'} dev: true + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -17181,6 +17495,10 @@ packages: strip-json-comments: 2.0.1 dev: true + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + /read-installed@4.0.3: resolution: {integrity: sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==} dependencies: @@ -17674,6 +17992,15 @@ packages: dependencies: tslib: 2.4.1 + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + mri: 1.2.0 + dev: false + optional: true + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -18485,13 +18812,6 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - dependencies: - internal-slot: 1.0.5 - dev: true - /stream-combiner2@1.1.1: resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} dependencies: @@ -19414,16 +19734,6 @@ packages: - supports-color - ts-node - /tsutils@3.21.0(typescript@5.2.2): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.2.2 - dev: true - /tty-table@4.2.1: resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} engines: {node: '>=8.0.0'} @@ -19766,6 +20076,14 @@ packages: imurmurhash: 0.1.4 dev: true + /unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + requiresBuild: true + dependencies: + '@types/unist': 2.0.10 + dev: false + optional: true + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -19867,6 +20185,19 @@ packages: dev: false optional: true + /uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + requiresBuild: true + dependencies: + dequal: 2.0.3 + diff: 5.1.0 + kleur: 4.1.5 + sade: 1.8.1 + dev: false + optional: true + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -20235,15 +20566,6 @@ packages: is-symbol: 1.0.4 dev: true - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 - dev: true - /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true