@lenne.tech/ng-base 14.19.0 → 14.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base-cms/base-cms.module.d.ts +2 -2
- package/base-cms/interfaces/base-cms-module-config.interface.d.ts +3 -2
- package/base-components/base-components.module.d.ts +23 -22
- package/base-components/components/model-form/model-form.component.d.ts +4 -2
- package/base-components/components/model-form-sub/model-form-sub.component.d.ts +4 -2
- package/base-components/components/model-table/model-table.component.d.ts +4 -2
- package/base-components/components/refence-input/refence-input.component.d.ts +1 -1
- package/base-components/components/upload-image/upload-image.component.d.ts +5 -0
- package/base-components/directives/stop-propagation.directive.d.ts +10 -0
- package/base-components/public-api.d.ts +1 -0
- package/esm2020/base-cms/interfaces/base-cms-module-config.interface.mjs +1 -1
- package/esm2020/base-components/base-components.module.mjs +5 -1
- package/esm2020/base-components/components/model-form/model-form.component.mjs +1 -2
- package/esm2020/base-components/components/model-form-sub/model-form-sub.component.mjs +3 -4
- package/esm2020/base-components/components/model-table/model-table.component.mjs +1 -2
- package/esm2020/base-components/components/refence-input/refence-input.component.mjs +2 -2
- package/esm2020/base-components/components/upload-image/upload-image.component.mjs +34 -13
- package/esm2020/base-components/directives/stop-propagation.directive.mjs +23 -0
- package/esm2020/base-components/public-api.mjs +2 -1
- package/esm2020/public-api.mjs +3 -1
- package/esm2020/shared/interfaces/cms-enum-values.interface.mjs +2 -0
- package/esm2020/shared/interfaces/cms-field-config.interface.mjs +2 -0
- package/esm2020/shared/interfaces/cms-model-config.interface.mjs +2 -0
- package/esm2020/shared/interfaces/cms-table-field.interface.mjs +2 -0
- package/esm2020/shared/public-api.mjs +5 -1
- package/esm2020/src/decorators/auto-unsubscribe.decorator.mjs +23 -0
- package/fesm2015/lenne.tech-ng-base-base-cms.mjs.map +1 -1
- package/fesm2015/lenne.tech-ng-base-base-components.mjs +60 -19
- package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2015/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/fesm2015/lenne.tech-ng-base.mjs +24 -1
- package/fesm2015/lenne.tech-ng-base.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-base-cms.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-base-components.mjs +60 -19
- package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base.mjs +24 -1
- package/fesm2020/lenne.tech-ng-base.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/shared/interfaces/cms-enum-values.interface.d.ts +4 -0
- package/shared/interfaces/cms-field-config.interface.d.ts +36 -0
- package/shared/interfaces/cms-model-config.interface.d.ts +13 -0
- package/shared/interfaces/cms-table-field.interface.d.ts +10 -0
- package/shared/public-api.d.ts +4 -0
- package/src/decorators/auto-unsubscribe.decorator.d.ts +5 -0
|
@@ -440,6 +440,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
440
440
|
}]
|
|
441
441
|
}] });
|
|
442
442
|
|
|
443
|
+
/**
|
|
444
|
+
* Decorator for automatically unsubscribe subscriptions
|
|
445
|
+
* Inspired by https://codereacter.medium.com/angular-advanced-features-and-tips-you-may-not-know-about-cae3b8527184#9bd6
|
|
446
|
+
*/
|
|
447
|
+
function AutoUnsubscribe(blackList = []) {
|
|
448
|
+
return function (constructor) {
|
|
449
|
+
const original = constructor.prototype.ngOnDestroy;
|
|
450
|
+
constructor.prototype.ngOnDestroy = function () {
|
|
451
|
+
for (const prop of Object.keys(this)) {
|
|
452
|
+
if (!blackList.includes(prop)) {
|
|
453
|
+
const property = this[prop];
|
|
454
|
+
if (property && typeof property.unsubscribe === 'function') {
|
|
455
|
+
property.unsubscribe();
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
if (original && typeof original === 'function') {
|
|
460
|
+
original.apply(this, arguments);
|
|
461
|
+
}
|
|
462
|
+
};
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
|
|
443
466
|
/**
|
|
444
467
|
* Authentication guard
|
|
445
468
|
*/
|
|
@@ -728,5 +751,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
728
751
|
* Generated bundle index. Do not edit.
|
|
729
752
|
*/
|
|
730
753
|
|
|
731
|
-
export { AuthGuard, BaseModule, CanDeactivateGuard, DateAgoPipe, FullscreenService, LazyLoadDirective, LogoutGuard, MatchHeightDirective, ResizableDirective, SEOService, SafeHtmlPipe, ThemeService, apolloOptionsFactory };
|
|
754
|
+
export { AuthGuard, AutoUnsubscribe, BaseModule, CanDeactivateGuard, DateAgoPipe, FullscreenService, LazyLoadDirective, LogoutGuard, MatchHeightDirective, ResizableDirective, SEOService, SafeHtmlPipe, ThemeService, apolloOptionsFactory };
|
|
732
755
|
//# sourceMappingURL=lenne.tech-ng-base.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lenne.tech-ng-base.mjs","sources":["../../../projects/ng-base/src/factories/apollo-options.factory.ts","../../../projects/ng-base/src/directives/lazy-load.directive.ts","../../../projects/ng-base/src/directives/match-height.directive.ts","../../../projects/ng-base/src/directives/resizable.directive.ts","../../../projects/ng-base/src/pipes/safe-html.pipe.ts","../../../projects/ng-base/src/pipes/date-ago.pipe.ts","../../../projects/ng-base/src/base.module.ts","../../../projects/ng-base/src/guards/auth.guard.ts","../../../projects/ng-base/src/guards/can-deactivate.guard.ts","../../../projects/ng-base/src/guards/logout.guard.ts","../../../projects/ng-base/src/services/fullscreen.service.ts","../../../projects/ng-base/src/services/seo.service.ts","../../../projects/ng-base/src/services/theme.service.ts","../../../projects/ng-base/public-api.ts","../../../projects/ng-base/lenne.tech-ng-base.ts"],"sourcesContent":["import { HttpLink } from 'apollo-angular/http';\nimport { ApolloLink, concat, split } from '@apollo/client/core';\nimport { InMemoryCache } from '@apollo/client/cache';\nimport { getMainDefinition } from '@apollo/client/utilities';\nimport {\n AuthService,\n BaseModuleConfig,\n createRestartableClient,\n RestartableClient,\n WsService,\n} from '@lenne.tech/ng-base/shared';\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions';\n\n/**\n * Factory for apollo-angular options\n */\nexport function apolloOptionsFactory(\n baseModuleConfig: BaseModuleConfig,\n httpLink: HttpLink,\n authService: AuthService,\n wsService: WsService\n) {\n const links = [];\n\n const http = httpLink.create({\n uri: baseModuleConfig.apiUrl,\n });\n\n const authMiddleware = new ApolloLink((operation, forward) => {\n const headers: any = {};\n if (localStorage) {\n const token = authService.token || null;\n if (token) {\n headers.Authorization = 'Bearer ' + token;\n }\n operation.setContext(() => ({ headers }));\n }\n return forward(operation);\n });\n\n if (baseModuleConfig.logging) {\n console.log(baseModuleConfig);\n }\n\n if (baseModuleConfig.wsUrl) {\n const wsLink = new GraphQLWsLink(\n createRestartableClient({\n url: baseModuleConfig.wsUrl,\n connectionParams: () => {\n return {\n Authorization: authService.token ? 'Bearer ' + authService.token : undefined,\n };\n },\n })\n );\n\n // Set client for reconnection on logout/login\n wsService.client = wsLink.client as RestartableClient;\n\n // using the ability to split links, you can send data to each link\n // depending on what kind of operation is being sent\n links.push(\n split(\n // split based on operation type\n ({ query }) => {\n // @ts-ignore\n const { kind, operation } = getMainDefinition(query);\n return kind === 'OperationDefinition' && operation === 'subscription';\n },\n wsLink,\n concat(authMiddleware, http)\n )\n );\n } else {\n links.push(authMiddleware);\n links.push(http);\n }\n\n return {\n link: ApolloLink.from(links),\n cache: new InMemoryCache(),\n defaultOptions: {\n query: {\n fetchPolicy: 'network-only',\n },\n },\n };\n}\n","import { AfterViewInit, Directive, ElementRef, HostBinding, Input } from '@angular/core';\n\n/**\n * Directive for lazy loading images\n */\n@Directive({\n selector: 'img[ltLazyLoad]',\n})\nexport class LazyLoadDirective implements AfterViewInit {\n @HostBinding('attr.src') srcAttr = null;\n @Input() src: string;\n\n constructor(private el: ElementRef) {}\n\n ngAfterViewInit() {\n this.canLazyLoad() ? this.lazyLoadImage() : this.loadImage();\n }\n\n private canLazyLoad() {\n return window && 'IntersectionObserver' in window;\n }\n\n private lazyLoadImage() {\n const obs = new IntersectionObserver((entries) => {\n entries.forEach(({ isIntersecting }) => {\n if (isIntersecting) {\n this.loadImage();\n obs.unobserve(this.el.nativeElement);\n }\n });\n });\n obs.observe(this.el.nativeElement);\n }\n\n private loadImage() {\n this.srcAttr = this.src;\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, PLATFORM_ID } from '@angular/core';\nimport { ImageService } from '@lenne.tech/ng-base/shared';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Set same height (maximum) to different elements\n */\n@Directive({\n selector: '[ltMatchHeight]',\n})\nexport class MatchHeightDirective implements AfterViewInit {\n // class name to match height\n @Input()\n ltMatchHeight: string | string[];\n\n // Replace lazy loading images with immediate loading images\n @Input()\n loadImages = true;\n\n // Wether current platform is a browser\n readonly isBrowser: boolean;\n\n constructor(protected el: ElementRef, protected imageService: ImageService, @Inject(PLATFORM_ID) platformId: string) {\n this.isBrowser = isPlatformBrowser(platformId);\n }\n\n @HostListener('window:resize')\n onResize() {\n this.matchHeight(this.el.nativeElement, this.ltMatchHeight);\n }\n\n ngAfterViewInit() {\n this.matchHeight(this.el.nativeElement, this.ltMatchHeight);\n }\n\n async matchHeight(parent: HTMLElement, target: string | string[]) {\n if (!parent) {\n return;\n }\n\n let classNames;\n if (!Array.isArray(target)) {\n classNames = [target];\n } else {\n classNames = target;\n }\n\n for (const className of classNames) {\n // find all child structureElements with the selected class name\n const children = parent.getElementsByClassName(className);\n\n if (!children || children.length < 2) {\n continue;\n }\n\n // Load images of children\n if (this.loadImages) {\n await this.imageService.preLoadImages({ elements: children });\n }\n\n // reset all children height\n Array.from(children).forEach((element: HTMLElement) => {\n element.style.height = 'initial';\n });\n\n // get all the child structureElements heights\n const itemHeights = Array.from(children).map((element) => {\n if (element.getBoundingClientRect) {\n return element.getBoundingClientRect().height;\n }\n return 0;\n });\n\n // find out the tallest one\n const maxHeight = itemHeights.reduce((prev, curr) => (curr > prev ? curr : prev), 0);\n\n // update the child structureElements height to the tallest one\n Array.from(children).forEach((element: HTMLElement) => (element.style.height = `${maxHeight}px`));\n }\n }\n}\n","import { Directive, ElementRef, Input, OnInit } from '@angular/core';\n\n/**\n * Reszise detection\n * (inpsired by: https://stackblitz.com/edit/angular-resizable)\n */\n@Directive({\n selector: '[ltResizable]',\n})\nexport class ResizableDirective implements OnInit {\n @Input() resizableGrabWidth = 8;\n @Input() resizableMinWidth = 10;\n\n dragging = false;\n\n constructor(private el: ElementRef) {}\n\n ngOnInit(): void {\n this.addListenerToDocument();\n this.addListenerToElement();\n }\n\n mouseMoveG(evt) {\n if (!this.dragging) {\n return;\n }\n this.newWidth(evt.clientX - this.el.nativeElement.offsetLeft);\n evt.stopPropagation();\n }\n\n newWidth(wid) {\n const result = Math.max(this.resizableMinWidth, wid);\n this.el.nativeElement.style.width = result + 'px';\n }\n\n mouseDown(evt) {\n if (this.inDragRegion(evt)) {\n this.dragging = true;\n this.preventGlobalMouseEvents();\n evt.stopPropagation();\n }\n }\n\n restoreGlobalMouseEvents() {\n document.body.style['pointer-events'] = 'auto';\n }\n\n mouseUpG(evt: Event) {\n if (!this.dragging) {\n return;\n }\n this.restoreGlobalMouseEvents();\n this.dragging = false;\n evt.stopPropagation();\n }\n\n mouseMove(evt) {\n if (this.inDragRegion(evt) || this.dragging) {\n this.el.nativeElement.style.cursor = 'col-resize';\n } else {\n this.el.nativeElement.style.cursor = 'default';\n }\n }\n\n preventGlobalMouseEvents() {\n document.body.style['pointer-events'] = 'none';\n }\n\n inDragRegion(evt) {\n return this.el.nativeElement.clientWidth - evt.clientX + this.el.nativeElement.offsetLeft < this.resizableGrabWidth;\n }\n\n private addListenerToDocument() {\n document.addEventListener(\n 'mousemove',\n (e) => {\n this.mouseMoveG(e);\n },\n true\n );\n\n document.addEventListener(\n 'mouseup',\n (e) => {\n this.mouseUpG(e);\n },\n true\n );\n }\n\n private addListenerToElement() {\n this.el.nativeElement.addEventListener(\n 'mousedown',\n (e) => {\n this.mouseDown(e);\n },\n true\n );\n\n this.el.nativeElement.addEventListener(\n 'mousemove',\n (e) => {\n this.mouseMove(e);\n },\n true\n );\n }\n}\n","import { DomSanitizer } from '@angular/platform-browser';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Declarate html as safe\n */\n@Pipe({ name: 'ltSafeHtml' })\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitized: DomSanitizer) {}\n\n transform(value) {\n return this.sanitized.bypassSecurityTrustHtml(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dateAgo',\n pure: true,\n})\nexport class DateAgoPipe implements PipeTransform {\n intervals = {\n year: 31536000,\n month: 2592000,\n week: 604800,\n day: 86400,\n hour: 3600,\n minute: 60,\n second: 1,\n };\n\n singular = {\n year: 'Jahr',\n month: 'Monat',\n week: 'Woche',\n day: 'Tag',\n hour: 'Stunde',\n minute: 'Minute',\n second: 'Sekunde',\n };\n\n plural = {\n year: 'Jahren',\n month: 'Monaten',\n week: 'Wochen',\n day: 'Tagen',\n hour: 'Stunden',\n minute: 'Minuten',\n second: 'Sekunden',\n };\n\n transform(value: any, currentDate?: Date): any {\n const now = currentDate ?? new Date();\n if (value) {\n const seconds = Math.floor((+now - +new Date(value)) / 1000);\n if (seconds < 29) {\n return 'gerade eben'; // less than 30 seconds ago will show as 'Just now'\n }\n\n let counter;\n for (const i of Object.keys(this.intervals)) {\n counter = Math.floor(seconds / this.intervals[i]);\n if (counter > 0) {\n if (counter === 1) {\n return 'vor ' + counter + ' ' + this.singular[i]; // singular (1 day ago)\n } else {\n return 'vor ' + counter + ' ' + this.plural[i]; // plural (2 days ago)\n }\n }\n }\n }\n return value;\n }\n}\n","import { APOLLO_OPTIONS, ApolloModule } from 'apollo-angular';\nimport { HttpLink } from 'apollo-angular/http';\nimport { ModuleWithProviders, NgModule, Provider } from '@angular/core';\n\nimport { apolloOptionsFactory } from './factories/apollo-options.factory';\nimport { LazyLoadDirective } from './directives/lazy-load.directive';\nimport { MatchHeightDirective } from './directives/match-height.directive';\nimport { ResizableDirective } from './directives/resizable.directive';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\nimport { DateAgoPipe } from './pipes/date-ago.pipe';\nimport { AuthService, BaseModuleConfig, BASE_MODULE_CONFIG, WsService } from '@lenne.tech/ng-base/shared';\nimport { HttpClientModule } from '@angular/common/http';\n\n// Imported and exported elements\nconst elements = [\n // Directives\n LazyLoadDirective,\n MatchHeightDirective,\n ResizableDirective,\n\n // Pipes\n SafeHtmlPipe,\n DateAgoPipe,\n];\n\n/**\n * Base module\n */\n@NgModule({\n imports: [ApolloModule, HttpClientModule],\n declarations: elements,\n exports: [...elements, ApolloModule, HttpClientModule],\n})\nexport class BaseModule {\n /**\n * Set configuration of base module in root module of the app\n */\n static forRoot(baseModuleConfig: BaseModuleConfig = {}, AppAuthService?): ModuleWithProviders<BaseModule> {\n // Default config\n const config = {\n apiUrl: '',\n authGuardRedirectUrl: '/auth',\n logging: false,\n version: null,\n prefix: null,\n scrollDetectionOffset: 200,\n scrollOffset: 100,\n storageType: 'local',\n ...baseModuleConfig,\n };\n\n if (config.logging) {\n console.log('Config:', config);\n }\n\n // Prepare providers\n const providers: Provider[] = [\n {\n provide: BASE_MODULE_CONFIG,\n useValue: config,\n },\n ];\n\n // Add apollo features if API URL is set\n if (baseModuleConfig.apiUrl) {\n providers.push({\n provide: APOLLO_OPTIONS,\n useFactory: apolloOptionsFactory,\n deps: [BASE_MODULE_CONFIG, HttpLink, AppAuthService ? AppAuthService : AuthService, WsService],\n });\n } else if (config.logging) {\n console.log('apiUrl is missing, ApolloLink is not initialized');\n }\n\n // Return root module\n return {\n ngModule: BaseModule,\n providers,\n };\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthService, BaseModuleConfig, BASE_MODULE_CONFIG } from '@lenne.tech/ng-base/shared';\n\n/**\n * Authentication guard\n */\n@Injectable()\nexport class AuthGuard implements CanActivate, CanActivateChild {\n /**\n * Imports\n */\n constructor(\n private router: Router,\n private authService: AuthService,\n @Inject(BASE_MODULE_CONFIG) private moduleConfig: BaseModuleConfig\n ) {}\n\n /**\n * Can activate main route\n */\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return new Observable((subscriber) => {\n let allowed = false;\n const opposite = route?.data?.opposite ? route?.data?.opposite : false;\n const redirectUrl = route?.data?.redirectUrl ? route.data.redirectUrl : this.moduleConfig.authGuardRedirectUrl;\n\n if (this.authService.token && !opposite) {\n if (route.data.allowedRole) {\n const user = this.authService.currentUser;\n allowed = user?.roles?.includes(route.data.allowedRole);\n } else {\n allowed = true;\n }\n } else if (!this.authService.token && opposite) {\n allowed = true;\n }\n\n if (!allowed) {\n this.router.navigate([redirectUrl]);\n }\n\n subscriber.next(allowed);\n subscriber.complete();\n });\n }\n\n /**\n * Can activate child route\n */\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return this.canActivate(route, state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\nimport { ICanComponentDeactivate } from '@lenne.tech/ng-base/shared';\n\n/**\n * Guard to check if a component can be deactivated\n */\n@Injectable()\nexport class CanDeactivateGuard implements CanDeactivate<ICanComponentDeactivate> {\n canDeactivate(component: ICanComponentDeactivate) {\n return component.canDeactivate ? component.canDeactivate() : true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '@lenne.tech/ng-base/shared';\n\n/**\n * Logout guard\n */\n@Injectable()\nexport class LogoutGuard implements CanActivate, CanActivateChild {\n constructor(private router: Router, private authService: AuthService) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return new Observable((subscriber) => {\n if (this.authService.token) {\n this.authService.logout();\n }\n\n subscriber.next(true);\n subscriber.complete();\n });\n }\n\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return this.canActivate(route, state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Fullscreen service\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class FullscreenService {\n private _isFullscreenActive: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n constructor() {\n this.listenToFullscreenEvent();\n }\n\n get fullscreenState(): boolean {\n return this._isFullscreenActive.value;\n }\n\n get fullscreenStateAsObservable(): Observable<boolean> {\n return this._isFullscreenActive.asObservable();\n }\n\n public toggleFullscreen() {\n const elem = document.documentElement;\n if (!this._isFullscreenActive.value) {\n elem.requestFullscreen();\n this._isFullscreenActive.next(true);\n } else {\n document.exitFullscreen();\n this._isFullscreenActive.next(false);\n }\n }\n\n /**\n * Event Listener for fullscreen toggle\n */\n private listenToFullscreenEvent() {\n document.addEventListener('fullscreenchange', () => {\n if (document.fullscreenElement) {\n this._isFullscreenActive.next(true);\n } else {\n this._isFullscreenActive.next(false);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\n\ninterface SEOData {\n title: string;\n description: string;\n image?: string;\n url?: string;\n keywords?: string;\n}\n\n/**\n * SEO service for setting HTML meta data\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SEOService {\n constructor(private titleService: Title, private metaTagService: Meta) {}\n\n public initPageForSEO(input: SEOData) {\n this.setGeneralData(input);\n this.setTwitterData(input);\n this.setTwitterData(input);\n this.setFacebookData(input);\n\n if (input.keywords) {\n this.setPageKeywords(input.keywords);\n }\n }\n\n /**\n * Set general metadata\n *\n * @param data\n * @private\n */\n private setGeneralData(data: SEOData) {\n this.titleService.setTitle(data.title);\n this.metaTagService.updateTag({ name: 'description', content: data.description });\n }\n\n /**\n * Set metadata for twitter\n *\n * @param data\n * @private\n */\n private setTwitterData(data: SEOData) {\n this.metaTagService.updateTag({ name: 'twitter:title', content: data.title });\n this.metaTagService.updateTag({ name: 'twitter:description', content: data.description });\n this.metaTagService.updateTag({\n property: 'twitter:url',\n content: data.url ? data.url : window?.location.href,\n });\n\n if (data.image) {\n this.metaTagService.updateTag({\n property: 'twitter:image',\n content: data.image,\n });\n\n this.metaTagService.updateTag({\n property: 'twitter:card',\n content: 'summary_large_image',\n });\n }\n }\n\n /**\n * Set metadata for facebook\n *\n * @param data\n * @private\n */\n private setFacebookData(data: SEOData) {\n this.metaTagService.updateTag({ property: 'og:title', content: data.title });\n this.metaTagService.updateTag({ property: 'og:description', content: data.description });\n this.metaTagService.updateTag({\n property: 'og:type',\n content: 'website',\n });\n this.metaTagService.updateTag({\n property: 'og:url',\n content: data.url ? data.url : window?.location.href,\n });\n\n if (data.image) {\n this.metaTagService.updateTag({\n property: 'og:image',\n content: data.image,\n });\n }\n }\n\n /**\n * Set page keywords\n *\n * @param keywords\n * @private\n */\n private setPageKeywords(keywords: string) {\n this.metaTagService.updateTag({ name: 'keywords', content: keywords });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { StorageService } from '@lenne.tech/ng-base/shared';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n _theme = new BehaviorSubject<string>('light');\n\n get theme(): string {\n return this._theme.value;\n }\n\n set theme(theme: string) {\n this._theme.next(theme);\n this.storageService.save('theme', theme);\n }\n\n get themeObservable(): Observable<string> {\n return this._theme.asObservable();\n }\n\n constructor(private storageService: StorageService) {\n // Load from storage\n this.theme = this.storageService.load('theme') as string;\n\n // Use system theme if no theme is set\n if (!this.theme) {\n this.checkSystemTheme();\n }\n }\n\n /**\n * Check theme from system\n */\n checkSystemTheme() {\n if (window?.matchMedia) {\n this.theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n }\n}\n","/**\n * Exports for public API\n */\n\n// Module\nexport * from './src/base.module';\n\n// Directives\nexport * from './src/directives/lazy-load.directive';\nexport * from './src/directives/match-height.directive';\nexport * from './src/directives/resizable.directive';\n\n// Factories\nexport * from './src/factories/apollo-options.factory';\n\n// Guards\nexport * from './src/guards/auth.guard';\nexport * from './src/guards/can-deactivate.guard';\nexport * from './src/guards/logout.guard';\n\n// Pipes\nexport * from './src/pipes/safe-html.pipe';\nexport * from './src/pipes/date-ago.pipe';\n\n// Services\nexport * from './src/services/fullscreen.service';\nexport * from './src/services/seo.service';\nexport * from './src/services/theme.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;AAaA;;AAEG;AACG,SAAU,oBAAoB,CAClC,gBAAkC,EAClC,QAAkB,EAClB,WAAwB,EACxB,SAAoB,EAAA;IAEpB,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC3B,GAAG,EAAE,gBAAgB,CAAC,MAAM;AAC7B,KAAA,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,CAAC,SAAS,EAAE,OAAO,KAAI;QAC3D,MAAM,OAAO,GAAQ,EAAE,CAAC;AACxB,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC;AACxC,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,OAAO,CAAC,aAAa,GAAG,SAAS,GAAG,KAAK,CAAC;AAC3C,aAAA;AACD,YAAA,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC3C,SAAA;AACD,QAAA,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;AAC5B,KAAC,CAAC,CAAC;IAEH,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC5B,QAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC/B,KAAA;IAED,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAC9B,uBAAuB,CAAC;YACtB,GAAG,EAAE,gBAAgB,CAAC,KAAK;YAC3B,gBAAgB,EAAE,MAAK;gBACrB,OAAO;AACL,oBAAA,aAAa,EAAE,WAAW,CAAC,KAAK,GAAG,SAAS,GAAG,WAAW,CAAC,KAAK,GAAG,SAAS;iBAC7E,CAAC;aACH;AACF,SAAA,CAAC,CACH,CAAC;;AAGF,QAAA,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAA2B,CAAC;;;QAItD,KAAK,CAAC,IAAI,CACR,KAAK;;AAEH,QAAA,CAAC,EAAE,KAAK,EAAE,KAAI;;YAEZ,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACrD,YAAA,OAAO,IAAI,KAAK,qBAAqB,IAAI,SAAS,KAAK,cAAc,CAAC;SACvE,EACD,MAAM,EACN,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAC7B,CACF,CAAC;AACH,KAAA;AAAM,SAAA;AACL,QAAA,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3B,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,KAAA;IAED,OAAO;AACL,QAAA,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,KAAK,EAAE,IAAI,aAAa,EAAE;AAC1B,QAAA,cAAc,EAAE;AACd,YAAA,KAAK,EAAE;AACL,gBAAA,WAAW,EAAE,cAAc;AAC5B,aAAA;AACF,SAAA;KACF,CAAC;AACJ;;ACrFA;;AAEG;MAIU,iBAAiB,CAAA;AAI5B,IAAA,WAAA,CAAoB,EAAc,EAAA;AAAd,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAHT,QAAA,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;KAGF;IAEtC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;KAC9D;IAEO,WAAW,GAAA;AACjB,QAAA,OAAO,MAAM,IAAI,sBAAsB,IAAI,MAAM,CAAC;KACnD;IAEO,aAAa,GAAA;QACnB,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAI;YAC/C,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,KAAI;AACrC,gBAAA,IAAI,cAAc,EAAE;oBAClB,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AACtC,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QACH,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;KACpC;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;KACzB;;8GA5BU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;iBAC5B,CAAA;iGAE0B,OAAO,EAAA,CAAA;sBAA/B,WAAW;uBAAC,UAAU,CAAA;gBACd,GAAG,EAAA,CAAA;sBAAX,KAAK;;;ACNR;;AAEG;MAIU,oBAAoB,CAAA;AAY/B,IAAA,WAAA,CAAsB,EAAc,EAAY,YAA0B,EAAuB,UAAkB,EAAA;AAA7F,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAAY,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;;AAL1E,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAMhB,QAAA,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;KAChD;IAGD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KAC7D;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KAC7D;IAEK,WAAW,CAAC,MAAmB,EAAE,MAAyB,EAAA;;YAC9D,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;AACR,aAAA;AAED,YAAA,IAAI,UAAU,CAAC;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC1B,gBAAA,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC;AACvB,aAAA;AAAM,iBAAA;gBACL,UAAU,GAAG,MAAM,CAAC;AACrB,aAAA;AAED,YAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;;gBAElC,MAAM,QAAQ,GAAG,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAE1D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpC,SAAS;AACV,iBAAA;;gBAGD,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,oBAAA,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC/D,iBAAA;;gBAGD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAoB,KAAI;AACpD,oBAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;AACnC,iBAAC,CAAC,CAAC;;AAGH,gBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;oBACvD,IAAI,OAAO,CAAC,qBAAqB,EAAE;AACjC,wBAAA,OAAO,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAC/C,qBAAA;AACD,oBAAA,OAAO,CAAC,CAAC;AACX,iBAAC,CAAC,CAAC;;AAGH,gBAAA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;;gBAGrF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAoB,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,SAAS,CAAA,EAAA,CAAI,CAAC,CAAC,CAAC;AACnG,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;;AArEU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,wEAYqD,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAZpF,oBAAoB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;iBAC5B,CAAA;;;8BAa8E,MAAM;+BAAC,WAAW,CAAA;;yBAT/F,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAKN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAWN,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,CAAA;;;ACxB/B;;;AAGG;MAIU,kBAAkB,CAAA;AAM7B,IAAA,WAAA,CAAoB,EAAc,EAAA;AAAd,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AALzB,QAAA,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;AACvB,QAAA,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;AAEhC,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KAEqB;IAEtC,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,UAAU,CAAC,GAAG,EAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC9D,GAAG,CAAC,eAAe,EAAE,CAAC;KACvB;AAED,IAAA,QAAQ,CAAC,GAAG,EAAA;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;KACnD;AAED,IAAA,SAAS,CAAC,GAAG,EAAA;AACX,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,GAAG,CAAC,eAAe,EAAE,CAAC;AACvB,SAAA;KACF;IAED,wBAAwB,GAAA;QACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;KAChD;AAED,IAAA,QAAQ,CAAC,GAAU,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,GAAG,CAAC,eAAe,EAAE,CAAC;KACvB;AAED,IAAA,SAAS,CAAC,GAAG,EAAA;QACX,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC3C,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;AACnD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;AAChD,SAAA;KACF;IAED,wBAAwB,GAAA;QACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;KAChD;AAED,IAAA,YAAY,CAAC,GAAG,EAAA;QACd,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;KACrH;IAEO,qBAAqB,GAAA;QAC3B,QAAQ,CAAC,gBAAgB,CACvB,WAAW,EACX,CAAC,CAAC,KAAI;AACJ,YAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACpB,EACD,IAAI,CACL,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CACvB,SAAS,EACT,CAAC,CAAC,KAAI;AACJ,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAClB,EACD,IAAI,CACL,CAAC;KACH;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CACpC,WAAW,EACX,CAAC,CAAC,KAAI;AACJ,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACnB,EACD,IAAI,CACL,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CACpC,WAAW,EACX,CAAC,CAAC,KAAI;AACJ,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACnB,EACD,IAAI,CACL,CAAC;KACH;;+GAjGU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;iBAC1B,CAAA;iGAEU,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;ACRR;;AAEG;MAEU,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,SAAuB,EAAA;AAAvB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;KAAI;AAE/C,IAAA,SAAS,CAAC,KAAK,EAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;KACtD;;yGALU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,IAAI;mBAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA;;;MCAf,WAAW,CAAA;AAJxB,IAAA,WAAA,GAAA;QAKE,IAAA,CAAA,SAAS,GAAG;AACV,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,CAAC;SACV,CAAC;QAEF,IAAA,CAAA,QAAQ,GAAG;AACT,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,SAAS;SAClB,CAAC;QAEF,IAAA,CAAA,MAAM,GAAG;AACP,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,MAAM,EAAE,UAAU;SACnB,CAAC;KAwBH;IAtBC,SAAS,CAAC,KAAU,EAAE,WAAkB,EAAA;QACtC,MAAM,GAAG,GAAG,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,WAAW,GAAI,IAAI,IAAI,EAAE,CAAC;AACtC,QAAA,IAAI,KAAK,EAAE;YACT,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;YAC7D,IAAI,OAAO,GAAG,EAAE,EAAE;gBAChB,OAAO,aAAa,CAAC;AACtB,aAAA;AAED,YAAA,IAAI,OAAO,CAAC;YACZ,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC3C,gBAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,OAAO,GAAG,CAAC,EAAE;oBACf,IAAI,OAAO,KAAK,CAAC,EAAE;AACjB,wBAAA,OAAO,MAAM,GAAG,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClD,qBAAA;AAAM,yBAAA;AACL,wBAAA,OAAO,MAAM,GAAG,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChD,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;wGApDU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAX,WAAW,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,IAAI;iBACX,CAAA;;;ACQD;AACA,MAAM,QAAQ,GAAG;;IAEf,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;;IAGlB,YAAY;IACZ,WAAW;CACZ,CAAC;AAEF;;AAEG;MAMU,UAAU,CAAA;AACrB;;AAEG;AACH,IAAA,OAAO,OAAO,CAAC,gBAAqC,GAAA,EAAE,EAAE,cAAe,EAAA;;AAErE,QAAA,MAAM,MAAM,GACV,MAAA,CAAA,MAAA,CAAA,EAAA,MAAM,EAAE,EAAE,EACV,oBAAoB,EAAE,OAAO,EAC7B,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,IAAI,EACb,MAAM,EAAE,IAAI,EACZ,qBAAqB,EAAE,GAAG,EAC1B,YAAY,EAAE,GAAG,EACjB,WAAW,EAAE,OAAO,EACjB,EAAA,gBAAgB,CACpB,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,YAAA,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAChC,SAAA;;AAGD,QAAA,MAAM,SAAS,GAAe;AAC5B,YAAA;AACE,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,QAAQ,EAAE,MAAM;AACjB,aAAA;SACF,CAAC;;QAGF,IAAI,gBAAgB,CAAC,MAAM,EAAE;YAC3B,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,UAAU,EAAE,oBAAoB;AAChC,gBAAA,IAAI,EAAE,CAAC,kBAAkB,EAAE,QAAQ,EAAE,cAAc,GAAG,cAAc,GAAG,WAAW,EAAE,SAAS,CAAC;AAC/F,aAAA,CAAC,CAAC;AACJ,SAAA;aAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AACzB,YAAA,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;AACjE,SAAA;;QAGD,OAAO;AACL,YAAA,QAAQ,EAAE,UAAU;YACpB,SAAS;SACV,CAAC;KACH;;uGA9CU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAV,UAAU,EAAA,YAAA,EAAA;;QAjBrB,iBAAiB;QACjB,oBAAoB;QACpB,kBAAkB;;QAGlB,YAAY;QACZ,WAAW;KAAA,EAAA,OAAA,EAAA,CAOD,YAAY,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA;;QAbxC,iBAAiB;QACjB,oBAAoB;QACpB,kBAAkB;;QAGlB,YAAY;QACZ,WAAW,EASY,YAAY,EAAE,gBAAgB;AAAA,KAAA,EAAA,CAAA,CAAA;AAE1C,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAJX,YAAY,EAAE,gBAAgB,EAEjB,YAAY,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAE1C,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;AACzC,oBAAA,YAAY,EAAE,QAAQ;oBACtB,OAAO,EAAE,CAAC,GAAG,QAAQ,EAAE,YAAY,EAAE,gBAAgB,CAAC;iBACvD,CAAA;;;AC3BD;;AAEG;MAEU,SAAS,CAAA;AACpB;;AAEG;AACH,IAAA,WAAA,CACU,MAAc,EACd,WAAwB,EACI,YAA8B,EAAA;AAF1D,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACd,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACI,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAkB;KAChE;AAEJ;;AAEG;IACH,WAAW,CAAC,KAA6B,EAAE,KAA0B,EAAA;AACnE,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAI;;YACnC,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,YAAA,MAAM,QAAQ,GAAG,CAAA,CAAA,EAAA,GAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,IAAG,CAAA,EAAA,GAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,GAAG,KAAK,CAAC;AACvE,YAAA,MAAM,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,IAAG,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC;YAE/G,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;AACvC,gBAAA,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;AAC1B,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;AAC1C,oBAAA,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzD,iBAAA;AAAM,qBAAA;oBACL,OAAO,GAAG,IAAI,CAAC;AAChB,iBAAA;AACF,aAAA;iBAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,QAAQ,EAAE;gBAC9C,OAAO,GAAG,IAAI,CAAC;AAChB,aAAA;YAED,IAAI,CAAC,OAAO,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACrC,aAAA;AAED,YAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACH,gBAAgB,CAAC,KAA6B,EAAE,KAA0B,EAAA;QACxE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACvC;;AA5CU,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,qEAOV,kBAAkB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;0GAPjB,SAAS,EAAA,CAAA,CAAA;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;;;8BAQN,MAAM;+BAAC,kBAAkB,CAAA;;;;ACZ9B;;AAEG;MAEU,kBAAkB,CAAA;AAC7B,IAAA,aAAa,CAAC,SAAkC,EAAA;AAC9C,QAAA,OAAO,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC;KACnE;;+GAHU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACFX;;AAEG;MAEU,WAAW,CAAA;IACtB,WAAoB,CAAA,MAAc,EAAU,WAAwB,EAAA;AAAhD,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAAU,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAAI;IAExE,WAAW,CAAC,KAA6B,EAAE,KAA0B,EAAA;AACnE,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAI;AACnC,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AAC1B,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAC3B,aAAA;AAED,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;IAED,gBAAgB,CAAC,KAA6B,EAAE,KAA0B,EAAA;QACxE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACvC;;wGAhBU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;ACLX;;AAEG;MAIU,iBAAiB,CAAA;AAG5B,IAAA,WAAA,GAAA;QAFQ,IAAA,CAAA,mBAAmB,GAA6B,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QAG1F,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;KACvC;AAED,IAAA,IAAI,2BAA2B,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KAChD;IAEM,gBAAgB,GAAA;AACrB,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;YACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA;YACL,QAAQ,CAAC,cAAc,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,SAAA;KACF;AAED;;AAEG;IACK,uBAAuB,GAAA;AAC7B,QAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,MAAK;YACjD,IAAI,QAAQ,CAAC,iBAAiB,EAAE;AAC9B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;8GArCU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACGD;;AAEG;MAIU,UAAU,CAAA;IACrB,WAAoB,CAAA,YAAmB,EAAU,cAAoB,EAAA;AAAjD,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAO;AAAU,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAM;KAAI;AAElE,IAAA,cAAc,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtC,SAAA;KACF;AAED;;;;;AAKG;AACK,IAAA,cAAc,CAAC,IAAa,EAAA;QAClC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;KACnF;AAED;;;;;AAKG;AACK,IAAA,cAAc,CAAC,IAAa,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1F,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5B,YAAA,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,IAAI;AACrD,SAAA,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5B,gBAAA,QAAQ,EAAE,eAAe;gBACzB,OAAO,EAAE,IAAI,CAAC,KAAK;AACpB,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5B,gBAAA,QAAQ,EAAE,cAAc;AACxB,gBAAA,OAAO,EAAE,qBAAqB;AAC/B,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;;;AAKG;AACK,IAAA,eAAe,CAAC,IAAa,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5B,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,OAAO,EAAE,SAAS;AACnB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5B,YAAA,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,IAAI;AACrD,SAAA,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5B,gBAAA,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,IAAI,CAAC,KAAK;AACpB,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;;;AAKG;AACK,IAAA,eAAe,CAAC,QAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;KACxE;;uGAtFU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCTY,YAAY,CAAA;AAgBvB,IAAA,WAAA,CAAoB,cAA8B,EAAA;AAA9B,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAflD,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAS,OAAO,CAAC,CAAC;;QAiB5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAW,CAAC;;AAGzD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;KACF;AArBD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;IAED,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAC1C;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;AAYD;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,UAAU,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3F,SAAA;KACF;;yGAjCU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACND;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"lenne.tech-ng-base.mjs","sources":["../../../projects/ng-base/src/factories/apollo-options.factory.ts","../../../projects/ng-base/src/directives/lazy-load.directive.ts","../../../projects/ng-base/src/directives/match-height.directive.ts","../../../projects/ng-base/src/directives/resizable.directive.ts","../../../projects/ng-base/src/pipes/safe-html.pipe.ts","../../../projects/ng-base/src/pipes/date-ago.pipe.ts","../../../projects/ng-base/src/base.module.ts","../../../projects/ng-base/src/decorators/auto-unsubscribe.decorator.ts","../../../projects/ng-base/src/guards/auth.guard.ts","../../../projects/ng-base/src/guards/can-deactivate.guard.ts","../../../projects/ng-base/src/guards/logout.guard.ts","../../../projects/ng-base/src/services/fullscreen.service.ts","../../../projects/ng-base/src/services/seo.service.ts","../../../projects/ng-base/src/services/theme.service.ts","../../../projects/ng-base/public-api.ts","../../../projects/ng-base/lenne.tech-ng-base.ts"],"sourcesContent":["import { HttpLink } from 'apollo-angular/http';\nimport { ApolloLink, concat, split } from '@apollo/client/core';\nimport { InMemoryCache } from '@apollo/client/cache';\nimport { getMainDefinition } from '@apollo/client/utilities';\nimport {\n AuthService,\n BaseModuleConfig,\n createRestartableClient,\n RestartableClient,\n WsService,\n} from '@lenne.tech/ng-base/shared';\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions';\n\n/**\n * Factory for apollo-angular options\n */\nexport function apolloOptionsFactory(\n baseModuleConfig: BaseModuleConfig,\n httpLink: HttpLink,\n authService: AuthService,\n wsService: WsService\n) {\n const links = [];\n\n const http = httpLink.create({\n uri: baseModuleConfig.apiUrl,\n });\n\n const authMiddleware = new ApolloLink((operation, forward) => {\n const headers: any = {};\n if (localStorage) {\n const token = authService.token || null;\n if (token) {\n headers.Authorization = 'Bearer ' + token;\n }\n operation.setContext(() => ({ headers }));\n }\n return forward(operation);\n });\n\n if (baseModuleConfig.logging) {\n console.log(baseModuleConfig);\n }\n\n if (baseModuleConfig.wsUrl) {\n const wsLink = new GraphQLWsLink(\n createRestartableClient({\n url: baseModuleConfig.wsUrl,\n connectionParams: () => {\n return {\n Authorization: authService.token ? 'Bearer ' + authService.token : undefined,\n };\n },\n })\n );\n\n // Set client for reconnection on logout/login\n wsService.client = wsLink.client as RestartableClient;\n\n // using the ability to split links, you can send data to each link\n // depending on what kind of operation is being sent\n links.push(\n split(\n // split based on operation type\n ({ query }) => {\n // @ts-ignore\n const { kind, operation } = getMainDefinition(query);\n return kind === 'OperationDefinition' && operation === 'subscription';\n },\n wsLink,\n concat(authMiddleware, http)\n )\n );\n } else {\n links.push(authMiddleware);\n links.push(http);\n }\n\n return {\n link: ApolloLink.from(links),\n cache: new InMemoryCache(),\n defaultOptions: {\n query: {\n fetchPolicy: 'network-only',\n },\n },\n };\n}\n","import { AfterViewInit, Directive, ElementRef, HostBinding, Input } from '@angular/core';\n\n/**\n * Directive for lazy loading images\n */\n@Directive({\n selector: 'img[ltLazyLoad]',\n})\nexport class LazyLoadDirective implements AfterViewInit {\n @HostBinding('attr.src') srcAttr = null;\n @Input() src: string;\n\n constructor(private el: ElementRef) {}\n\n ngAfterViewInit() {\n this.canLazyLoad() ? this.lazyLoadImage() : this.loadImage();\n }\n\n private canLazyLoad() {\n return window && 'IntersectionObserver' in window;\n }\n\n private lazyLoadImage() {\n const obs = new IntersectionObserver((entries) => {\n entries.forEach(({ isIntersecting }) => {\n if (isIntersecting) {\n this.loadImage();\n obs.unobserve(this.el.nativeElement);\n }\n });\n });\n obs.observe(this.el.nativeElement);\n }\n\n private loadImage() {\n this.srcAttr = this.src;\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, PLATFORM_ID } from '@angular/core';\nimport { ImageService } from '@lenne.tech/ng-base/shared';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Set same height (maximum) to different elements\n */\n@Directive({\n selector: '[ltMatchHeight]',\n})\nexport class MatchHeightDirective implements AfterViewInit {\n // class name to match height\n @Input()\n ltMatchHeight: string | string[];\n\n // Replace lazy loading images with immediate loading images\n @Input()\n loadImages = true;\n\n // Wether current platform is a browser\n readonly isBrowser: boolean;\n\n constructor(protected el: ElementRef, protected imageService: ImageService, @Inject(PLATFORM_ID) platformId: string) {\n this.isBrowser = isPlatformBrowser(platformId);\n }\n\n @HostListener('window:resize')\n onResize() {\n this.matchHeight(this.el.nativeElement, this.ltMatchHeight);\n }\n\n ngAfterViewInit() {\n this.matchHeight(this.el.nativeElement, this.ltMatchHeight);\n }\n\n async matchHeight(parent: HTMLElement, target: string | string[]) {\n if (!parent) {\n return;\n }\n\n let classNames;\n if (!Array.isArray(target)) {\n classNames = [target];\n } else {\n classNames = target;\n }\n\n for (const className of classNames) {\n // find all child structureElements with the selected class name\n const children = parent.getElementsByClassName(className);\n\n if (!children || children.length < 2) {\n continue;\n }\n\n // Load images of children\n if (this.loadImages) {\n await this.imageService.preLoadImages({ elements: children });\n }\n\n // reset all children height\n Array.from(children).forEach((element: HTMLElement) => {\n element.style.height = 'initial';\n });\n\n // get all the child structureElements heights\n const itemHeights = Array.from(children).map((element) => {\n if (element.getBoundingClientRect) {\n return element.getBoundingClientRect().height;\n }\n return 0;\n });\n\n // find out the tallest one\n const maxHeight = itemHeights.reduce((prev, curr) => (curr > prev ? curr : prev), 0);\n\n // update the child structureElements height to the tallest one\n Array.from(children).forEach((element: HTMLElement) => (element.style.height = `${maxHeight}px`));\n }\n }\n}\n","import { Directive, ElementRef, Input, OnInit } from '@angular/core';\n\n/**\n * Reszise detection\n * (inpsired by: https://stackblitz.com/edit/angular-resizable)\n */\n@Directive({\n selector: '[ltResizable]',\n})\nexport class ResizableDirective implements OnInit {\n @Input() resizableGrabWidth = 8;\n @Input() resizableMinWidth = 10;\n\n dragging = false;\n\n constructor(private el: ElementRef) {}\n\n ngOnInit(): void {\n this.addListenerToDocument();\n this.addListenerToElement();\n }\n\n mouseMoveG(evt) {\n if (!this.dragging) {\n return;\n }\n this.newWidth(evt.clientX - this.el.nativeElement.offsetLeft);\n evt.stopPropagation();\n }\n\n newWidth(wid) {\n const result = Math.max(this.resizableMinWidth, wid);\n this.el.nativeElement.style.width = result + 'px';\n }\n\n mouseDown(evt) {\n if (this.inDragRegion(evt)) {\n this.dragging = true;\n this.preventGlobalMouseEvents();\n evt.stopPropagation();\n }\n }\n\n restoreGlobalMouseEvents() {\n document.body.style['pointer-events'] = 'auto';\n }\n\n mouseUpG(evt: Event) {\n if (!this.dragging) {\n return;\n }\n this.restoreGlobalMouseEvents();\n this.dragging = false;\n evt.stopPropagation();\n }\n\n mouseMove(evt) {\n if (this.inDragRegion(evt) || this.dragging) {\n this.el.nativeElement.style.cursor = 'col-resize';\n } else {\n this.el.nativeElement.style.cursor = 'default';\n }\n }\n\n preventGlobalMouseEvents() {\n document.body.style['pointer-events'] = 'none';\n }\n\n inDragRegion(evt) {\n return this.el.nativeElement.clientWidth - evt.clientX + this.el.nativeElement.offsetLeft < this.resizableGrabWidth;\n }\n\n private addListenerToDocument() {\n document.addEventListener(\n 'mousemove',\n (e) => {\n this.mouseMoveG(e);\n },\n true\n );\n\n document.addEventListener(\n 'mouseup',\n (e) => {\n this.mouseUpG(e);\n },\n true\n );\n }\n\n private addListenerToElement() {\n this.el.nativeElement.addEventListener(\n 'mousedown',\n (e) => {\n this.mouseDown(e);\n },\n true\n );\n\n this.el.nativeElement.addEventListener(\n 'mousemove',\n (e) => {\n this.mouseMove(e);\n },\n true\n );\n }\n}\n","import { DomSanitizer } from '@angular/platform-browser';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Declarate html as safe\n */\n@Pipe({ name: 'ltSafeHtml' })\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitized: DomSanitizer) {}\n\n transform(value) {\n return this.sanitized.bypassSecurityTrustHtml(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dateAgo',\n pure: true,\n})\nexport class DateAgoPipe implements PipeTransform {\n intervals = {\n year: 31536000,\n month: 2592000,\n week: 604800,\n day: 86400,\n hour: 3600,\n minute: 60,\n second: 1,\n };\n\n singular = {\n year: 'Jahr',\n month: 'Monat',\n week: 'Woche',\n day: 'Tag',\n hour: 'Stunde',\n minute: 'Minute',\n second: 'Sekunde',\n };\n\n plural = {\n year: 'Jahren',\n month: 'Monaten',\n week: 'Wochen',\n day: 'Tagen',\n hour: 'Stunden',\n minute: 'Minuten',\n second: 'Sekunden',\n };\n\n transform(value: any, currentDate?: Date): any {\n const now = currentDate ?? new Date();\n if (value) {\n const seconds = Math.floor((+now - +new Date(value)) / 1000);\n if (seconds < 29) {\n return 'gerade eben'; // less than 30 seconds ago will show as 'Just now'\n }\n\n let counter;\n for (const i of Object.keys(this.intervals)) {\n counter = Math.floor(seconds / this.intervals[i]);\n if (counter > 0) {\n if (counter === 1) {\n return 'vor ' + counter + ' ' + this.singular[i]; // singular (1 day ago)\n } else {\n return 'vor ' + counter + ' ' + this.plural[i]; // plural (2 days ago)\n }\n }\n }\n }\n return value;\n }\n}\n","import { APOLLO_OPTIONS, ApolloModule } from 'apollo-angular';\nimport { HttpLink } from 'apollo-angular/http';\nimport { ModuleWithProviders, NgModule, Provider } from '@angular/core';\n\nimport { apolloOptionsFactory } from './factories/apollo-options.factory';\nimport { LazyLoadDirective } from './directives/lazy-load.directive';\nimport { MatchHeightDirective } from './directives/match-height.directive';\nimport { ResizableDirective } from './directives/resizable.directive';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\nimport { DateAgoPipe } from './pipes/date-ago.pipe';\nimport { AuthService, BaseModuleConfig, BASE_MODULE_CONFIG, WsService } from '@lenne.tech/ng-base/shared';\nimport { HttpClientModule } from '@angular/common/http';\n\n// Imported and exported elements\nconst elements = [\n // Directives\n LazyLoadDirective,\n MatchHeightDirective,\n ResizableDirective,\n\n // Pipes\n SafeHtmlPipe,\n DateAgoPipe,\n];\n\n/**\n * Base module\n */\n@NgModule({\n imports: [ApolloModule, HttpClientModule],\n declarations: elements,\n exports: [...elements, ApolloModule, HttpClientModule],\n})\nexport class BaseModule {\n /**\n * Set configuration of base module in root module of the app\n */\n static forRoot(baseModuleConfig: BaseModuleConfig = {}, AppAuthService?): ModuleWithProviders<BaseModule> {\n // Default config\n const config = {\n apiUrl: '',\n authGuardRedirectUrl: '/auth',\n logging: false,\n version: null,\n prefix: null,\n scrollDetectionOffset: 200,\n scrollOffset: 100,\n storageType: 'local',\n ...baseModuleConfig,\n };\n\n if (config.logging) {\n console.log('Config:', config);\n }\n\n // Prepare providers\n const providers: Provider[] = [\n {\n provide: BASE_MODULE_CONFIG,\n useValue: config,\n },\n ];\n\n // Add apollo features if API URL is set\n if (baseModuleConfig.apiUrl) {\n providers.push({\n provide: APOLLO_OPTIONS,\n useFactory: apolloOptionsFactory,\n deps: [BASE_MODULE_CONFIG, HttpLink, AppAuthService ? AppAuthService : AuthService, WsService],\n });\n } else if (config.logging) {\n console.log('apiUrl is missing, ApolloLink is not initialized');\n }\n\n // Return root module\n return {\n ngModule: BaseModule,\n providers,\n };\n }\n}\n","/**\n * Decorator for automatically unsubscribe subscriptions\n * Inspired by https://codereacter.medium.com/angular-advanced-features-and-tips-you-may-not-know-about-cae3b8527184#9bd6\n */\nexport function AutoUnsubscribe(blackList: string[] = []) {\n return function (constructor: any) {\n const original = constructor.prototype.ngOnDestroy;\n\n constructor.prototype.ngOnDestroy = function () {\n for (const prop of Object.keys(this)) {\n if (!blackList.includes(prop)) {\n const property = this[prop];\n if (property && typeof property.unsubscribe === 'function') {\n property.unsubscribe();\n }\n }\n }\n if (original && typeof original === 'function') {\n original.apply(this, arguments);\n }\n };\n };\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthService, BaseModuleConfig, BASE_MODULE_CONFIG } from '@lenne.tech/ng-base/shared';\n\n/**\n * Authentication guard\n */\n@Injectable()\nexport class AuthGuard implements CanActivate, CanActivateChild {\n /**\n * Imports\n */\n constructor(\n private router: Router,\n private authService: AuthService,\n @Inject(BASE_MODULE_CONFIG) private moduleConfig: BaseModuleConfig\n ) {}\n\n /**\n * Can activate main route\n */\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return new Observable((subscriber) => {\n let allowed = false;\n const opposite = route?.data?.opposite ? route?.data?.opposite : false;\n const redirectUrl = route?.data?.redirectUrl ? route.data.redirectUrl : this.moduleConfig.authGuardRedirectUrl;\n\n if (this.authService.token && !opposite) {\n if (route.data.allowedRole) {\n const user = this.authService.currentUser;\n allowed = user?.roles?.includes(route.data.allowedRole);\n } else {\n allowed = true;\n }\n } else if (!this.authService.token && opposite) {\n allowed = true;\n }\n\n if (!allowed) {\n this.router.navigate([redirectUrl]);\n }\n\n subscriber.next(allowed);\n subscriber.complete();\n });\n }\n\n /**\n * Can activate child route\n */\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return this.canActivate(route, state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\nimport { ICanComponentDeactivate } from '@lenne.tech/ng-base/shared';\n\n/**\n * Guard to check if a component can be deactivated\n */\n@Injectable()\nexport class CanDeactivateGuard implements CanDeactivate<ICanComponentDeactivate> {\n canDeactivate(component: ICanComponentDeactivate) {\n return component.canDeactivate ? component.canDeactivate() : true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '@lenne.tech/ng-base/shared';\n\n/**\n * Logout guard\n */\n@Injectable()\nexport class LogoutGuard implements CanActivate, CanActivateChild {\n constructor(private router: Router, private authService: AuthService) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return new Observable((subscriber) => {\n if (this.authService.token) {\n this.authService.logout();\n }\n\n subscriber.next(true);\n subscriber.complete();\n });\n }\n\n canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n return this.canActivate(route, state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Fullscreen service\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class FullscreenService {\n private _isFullscreenActive: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n constructor() {\n this.listenToFullscreenEvent();\n }\n\n get fullscreenState(): boolean {\n return this._isFullscreenActive.value;\n }\n\n get fullscreenStateAsObservable(): Observable<boolean> {\n return this._isFullscreenActive.asObservable();\n }\n\n public toggleFullscreen() {\n const elem = document.documentElement;\n if (!this._isFullscreenActive.value) {\n elem.requestFullscreen();\n this._isFullscreenActive.next(true);\n } else {\n document.exitFullscreen();\n this._isFullscreenActive.next(false);\n }\n }\n\n /**\n * Event Listener for fullscreen toggle\n */\n private listenToFullscreenEvent() {\n document.addEventListener('fullscreenchange', () => {\n if (document.fullscreenElement) {\n this._isFullscreenActive.next(true);\n } else {\n this._isFullscreenActive.next(false);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\n\ninterface SEOData {\n title: string;\n description: string;\n image?: string;\n url?: string;\n keywords?: string;\n}\n\n/**\n * SEO service for setting HTML meta data\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SEOService {\n constructor(private titleService: Title, private metaTagService: Meta) {}\n\n public initPageForSEO(input: SEOData) {\n this.setGeneralData(input);\n this.setTwitterData(input);\n this.setTwitterData(input);\n this.setFacebookData(input);\n\n if (input.keywords) {\n this.setPageKeywords(input.keywords);\n }\n }\n\n /**\n * Set general metadata\n *\n * @param data\n * @private\n */\n private setGeneralData(data: SEOData) {\n this.titleService.setTitle(data.title);\n this.metaTagService.updateTag({ name: 'description', content: data.description });\n }\n\n /**\n * Set metadata for twitter\n *\n * @param data\n * @private\n */\n private setTwitterData(data: SEOData) {\n this.metaTagService.updateTag({ name: 'twitter:title', content: data.title });\n this.metaTagService.updateTag({ name: 'twitter:description', content: data.description });\n this.metaTagService.updateTag({\n property: 'twitter:url',\n content: data.url ? data.url : window?.location.href,\n });\n\n if (data.image) {\n this.metaTagService.updateTag({\n property: 'twitter:image',\n content: data.image,\n });\n\n this.metaTagService.updateTag({\n property: 'twitter:card',\n content: 'summary_large_image',\n });\n }\n }\n\n /**\n * Set metadata for facebook\n *\n * @param data\n * @private\n */\n private setFacebookData(data: SEOData) {\n this.metaTagService.updateTag({ property: 'og:title', content: data.title });\n this.metaTagService.updateTag({ property: 'og:description', content: data.description });\n this.metaTagService.updateTag({\n property: 'og:type',\n content: 'website',\n });\n this.metaTagService.updateTag({\n property: 'og:url',\n content: data.url ? data.url : window?.location.href,\n });\n\n if (data.image) {\n this.metaTagService.updateTag({\n property: 'og:image',\n content: data.image,\n });\n }\n }\n\n /**\n * Set page keywords\n *\n * @param keywords\n * @private\n */\n private setPageKeywords(keywords: string) {\n this.metaTagService.updateTag({ name: 'keywords', content: keywords });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { StorageService } from '@lenne.tech/ng-base/shared';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n _theme = new BehaviorSubject<string>('light');\n\n get theme(): string {\n return this._theme.value;\n }\n\n set theme(theme: string) {\n this._theme.next(theme);\n this.storageService.save('theme', theme);\n }\n\n get themeObservable(): Observable<string> {\n return this._theme.asObservable();\n }\n\n constructor(private storageService: StorageService) {\n // Load from storage\n this.theme = this.storageService.load('theme') as string;\n\n // Use system theme if no theme is set\n if (!this.theme) {\n this.checkSystemTheme();\n }\n }\n\n /**\n * Check theme from system\n */\n checkSystemTheme() {\n if (window?.matchMedia) {\n this.theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n }\n}\n","/**\n * Exports for public API\n */\n\n// Module\nexport * from './src/base.module';\n\n// Decorators\nexport * from './src/decorators/auto-unsubscribe.decorator';\n\n// Directives\nexport * from './src/directives/lazy-load.directive';\nexport * from './src/directives/match-height.directive';\nexport * from './src/directives/resizable.directive';\n\n// Factories\nexport * from './src/factories/apollo-options.factory';\n\n// Guards\nexport * from './src/guards/auth.guard';\nexport * from './src/guards/can-deactivate.guard';\nexport * from './src/guards/logout.guard';\n\n// Pipes\nexport * from './src/pipes/safe-html.pipe';\nexport * from './src/pipes/date-ago.pipe';\n\n// Services\nexport * from './src/services/fullscreen.service';\nexport * from './src/services/seo.service';\nexport * from './src/services/theme.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lenne.tech-ng-base-base-cms.mjs","sources":["../../../projects/ng-base/base-cms/interfaces/base-cms-module-config.interface.ts","../../../projects/ng-base/base-cms/pages/base-cms/base-cms.component.ts","../../../projects/ng-base/base-cms/pages/base-cms/base-cms.component.html","../../../projects/ng-base/base-cms/base-cms-routing.module.ts","../../../projects/ng-base/base-cms/base-cms.module.ts","../../../projects/ng-base/base-cms/public-api.ts","../../../projects/ng-base/base-cms/lenne.tech-ng-base-base-cms.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface BaseCMSModuleConfig {\n modelConfig?: { [key: string]: any };\n fieldConfig?: { [key: string]: any };\n logging?: boolean;\n logoUrl?: string;\n branding?: boolean;\n}\n\nexport const BASE_CMS_MODULE_CONFIG = new InjectionToken('BASE_CMS_MODULE_CONFIG');\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport {\n AuthService,\n BasicUser,\n CmsService,\n GraphqlCrudType,\n GraphQLMeta,\n GraphQLMetaService,\n} from '@lenne.tech/ng-base/shared';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BASE_CMS_MODULE_CONFIG, BaseCMSModuleConfig } from '../../interfaces/base-cms-module-config.interface';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-base-cms',\n templateUrl: './base-cms.component.html',\n styleUrls: ['./base-cms.component.scss'],\n})\nexport class BaseCmsComponent implements OnInit, OnDestroy {\n meta: GraphQLMeta;\n modelName: string;\n camelModelName: string;\n id: string;\n types: GraphqlCrudType[] = [];\n subscription = new Subscription();\n sideBarWidth = '22%';\n responsiveToggle = false;\n\n constructor(\n @Inject(BASE_CMS_MODULE_CONFIG) public moduleConfig: BaseCMSModuleConfig,\n private graphQLMetaService: GraphQLMetaService,\n private route: ActivatedRoute,\n private router: Router,\n private authService: AuthService,\n private cmsService: CmsService\n ) {\n this.calcSideBarWidth();\n this.subscription.add(\n this.route.params.subscribe((value) => {\n if (value['modelName']) {\n const exclude = this.moduleConfig.modelConfig[value['modelName']]?.exclude;\n\n if (exclude !== null && !exclude) {\n this.modelName = value['modelName'];\n this.camelModelName = this.toCamelCase(this.modelName);\n } else {\n this.init().then((types: GraphqlCrudType[]) => {\n this.router.navigate(['../' + this.toKebabCase(types[0].name)], { relativeTo: this.route });\n });\n }\n }\n\n if (value['id']) {\n this.id = value['id'];\n }\n })\n );\n }\n\n async ngOnInit() {\n await this.init();\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n /**\n * It returns a promise that resolves to an array of GraphqlCrudType objects\n *\n * @returns The types that are available to the user.\n */\n init(): Promise<GraphqlCrudType[]> {\n return new Promise((resolve, reject) => {\n this.graphQLMetaService.getMeta().subscribe((meta) => {\n this.meta = meta;\n\n if (this.route.snapshot?.params?.['modelName']) {\n this.modelName = this.route.snapshot?.params?.['modelName'];\n this.camelModelName = this.toCamelCase(this.modelName);\n }\n\n if (this.route.snapshot?.params?.['id']) {\n this.id = this.route.snapshot?.params?.['id'];\n }\n\n const types = meta.getTypes(this.moduleConfig?.logging);\n\n // Check for excluded types\n let filteredTypes = types.filter((e) => !this.moduleConfig?.modelConfig[e.name.toLowerCase()]?.exclude);\n\n // Sort types\n filteredTypes = filteredTypes.sort((a, b) => {\n return (\n (this.moduleConfig?.modelConfig[a.name.toLowerCase()]?.order\n ? this.moduleConfig?.modelConfig[a.name.toLowerCase()]?.order\n : 99) -\n (this.moduleConfig?.modelConfig[b.name.toLowerCase()]?.order\n ? this.moduleConfig?.modelConfig[b.name.toLowerCase()]?.order\n : 99)\n );\n });\n\n // Check for restricted types\n this.types = filteredTypes.filter((e) => {\n if (this.moduleConfig?.modelConfig[e.name.toLowerCase()]?.restricted) {\n if (!this.authService?.currentUser) {\n return false;\n }\n const user = this.authService?.currentUser;\n const mappedUser = BasicUser.map(user);\n\n return mappedUser?.hasAllRoles(this.moduleConfig?.modelConfig[e.name.toLowerCase()]?.roles);\n } else {\n return true;\n }\n });\n\n if (this.moduleConfig?.logging) {\n console.log('BaseCmsComponent::init->types', this.types);\n console.log('BaseCmsComponent::init->camelModelName', this.camelModelName);\n console.log('BaseCmsComponent::init->fieldConfig', this.moduleConfig?.fieldConfig);\n }\n\n resolve(this.types);\n\n if (!this.modelName && this.types) {\n this.router.navigate(['./' + this.toKebabCase(this.types[0].name)], { relativeTo: this.route });\n }\n });\n });\n }\n\n /**\n * If the model name is set and the types are set, then return the type that matches the model name\n *\n * @returns The type object that matches the model name.\n */\n getTypeByModelName() {\n if (this.modelName && this.types) {\n return this.types.find((e) => this.toKebabCase(e.name) === this.toKebabCase(this.modelName));\n } else {\n return null;\n }\n }\n\n /**\n * When the createModeChanged event is emitted, if the createMode is true, navigate to the new route\n *\n * @param createMode - boolean - This is a boolean value that indicates whether the user is in create mode or\n * not.\n */\n onCreateModeChanged(createMode: boolean) {\n if (createMode) {\n this.router.navigate(['./' + 'neu'], { relativeTo: this.route });\n }\n }\n\n /**\n * If the type exists, return the create property of the type, otherwise return false.\n *\n * @returns A boolean value.\n */\n isCreatePossible(): boolean {\n const type = this.getTypeByModelName();\n return type ? type.create : false;\n }\n\n isImportPossible(): boolean {\n let result = false;\n const config = this.moduleConfig?.modelConfig[this.camelModelName]?.import;\n\n if (config !== null && config !== undefined) {\n result = config;\n }\n\n return result;\n }\n\n isExportPossible(): boolean {\n let result = false;\n const config = this.moduleConfig?.modelConfig[this.camelModelName]?.export;\n\n if (config !== null && config !== undefined) {\n result = config;\n }\n\n return result;\n }\n\n /**\n * If the model name is found in the type map, return the update property of the type object\n *\n * @returns A boolean value.\n */\n isUpdatePossible(): boolean {\n const type = this.getTypeByModelName();\n return type ? type.update : false;\n }\n\n /**\n * If the type is defined, return the delete property of the type, otherwise return false\n *\n * @returns A boolean value.\n */\n isDeletePossible(): boolean {\n const type = this.getTypeByModelName();\n return type ? type.delete : false;\n }\n\n /**\n * If the model name is found in the type array, return the duplicate property of the type object\n *\n * @returns A boolean value.\n */\n isDuplicatePossible(): boolean {\n const type = this.getTypeByModelName();\n return type ? type.duplicate : false;\n }\n\n /**\n * If the id is truthy, navigate to the id, otherwise navigate to the parent route\n */\n idSelected(id: string) {\n if (id) {\n this.router.navigate(['./' + id], { relativeTo: this.route });\n } else {\n this.router.navigate(['..'], { relativeTo: this.route });\n }\n }\n\n /**\n * Transform string to kebab case\n */\n toKebabCase(str: string) {\n return str?.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n /**\n * Transform string to camel case\n */\n toCamelCase(str: string) {\n return str?.replace(/-./g, (match) => match[1].toUpperCase());\n }\n\n /**\n * Transform first letter to lower case\n */\n lowerCaseFirstLetter(value: string) {\n return this.cmsService.lowerCaseFirstLetter(value);\n }\n\n /**\n * Calculates sidebar width based on screen size\n */\n calcSideBarWidth() {\n this.sideBarWidth = window.innerWidth < 768 ? '8%' : '22%';\n }\n}\n","<div class=\"main\">\n <div class=\"sidebar\" [ngStyle]=\"{ 'flex-basis': !responsiveToggle ? sideBarWidth : '100%' }\">\n <div class=\"d-none d-md-flex flex-column flex-shrink-0 p-3 h-100\">\n <ng-container *ngIf=\"moduleConfig.branding\">\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none\"\n *ngIf=\"!moduleConfig?.logoUrl\"\n >\n <span class=\"d-block fs-4\"><b class=\"text-primary\">Base</b>CMS</span>\n <small class=\"fw-lighter\">The auto generated GraphQL CMS</small>\n </a>\n\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none w-100\"\n *ngIf=\"moduleConfig?.logoUrl\"\n >\n <img [src]=\"moduleConfig.logoUrl\" class=\"img-responsive w-100\" alt=\"Logo\" />\n </a>\n <hr />\n </ng-container>\n <ul class=\"nav nav-pills flex-column mb-auto\" *ngIf=\"types\">\n <li class=\"nav-item\" *ngFor=\"let type of types\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"d-flex flex-column d-md-none p-3 h-100\">\n <div class=\"d-flex justify-content-end\">\n <i\n class=\"bi\"\n [ngClass]=\"{ 'bi-chevron-left': !responsiveToggle, 'bi-chevron-right': responsiveToggle }\"\n (click)=\"responsiveToggle = !responsiveToggle\"\n ></i>\n </div>\n <ul\n class=\"nav nav-pills responsive-pills flex-column mb-auto\"\n [ngClass]=\"{ 'w-100-transition': responsiveToggle }\"\n *ngIf=\"types\"\n >\n <li class=\"nav-item\" *ngFor=\"let type of types\" (click)=\"responsiveToggle = !responsiveToggle\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"sidebar-content\" [ngStyle]=\"{ 'flex-basis': !responsiveToggle ? 'unset' : '0' }\">\n <div class=\"p-3 p-md-5 mb-3\">\n <base-model-table\n [config]=\"moduleConfig?.modelConfig[camelModelName]\"\n [fieldConfig]=\"moduleConfig?.fieldConfig[camelModelName] || {}\"\n [modelName]=\"modelName\"\n [logging]=\"moduleConfig?.logging\"\n [objectId]=\"id !== 'neu' ? id : ''\"\n [createMode]=\"id === 'neu'\"\n (createModeChanged)=\"onCreateModeChanged($event)\"\n (idSelected)=\"idSelected($event)\"\n [import]=\"isImportPossible()\"\n [export]=\"isExportPossible()\"\n [create]=\"isCreatePossible()\"\n [update]=\"isUpdatePossible()\"\n [delete]=\"isDeletePossible()\"\n [duplicate]=\"isDuplicatePossible()\"\n [showFavButton]=\"!responsiveToggle\"\n ></base-model-table>\n </div>\n </div>\n</div>\n","import { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { BaseCmsComponent } from './pages/base-cms/base-cms.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: BaseCmsComponent,\n },\n {\n path: ':modelName',\n component: BaseCmsComponent,\n },\n {\n path: ':modelName/:id',\n component: BaseCmsComponent,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class BaseCMSRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { BaseCmsComponent } from './pages/base-cms/base-cms.component';\nimport { BaseCMSRoutingModule } from './base-cms-routing.module';\nimport { BaseComponentsModule } from '@lenne.tech/ng-base/base-components';\nimport { BASE_CMS_MODULE_CONFIG, BaseCMSModuleConfig } from './interfaces/base-cms-module-config.interface';\n\nexport function CMSConfigFactory() {\n return {\n modelConfig: {},\n fieldConfig: {},\n branding: true,\n logoUrl: '',\n logging: false,\n ...BaseCMSModule.config,\n };\n}\n\n@NgModule({\n imports: [\n // Modules\n CommonModule,\n ReactiveFormsModule,\n BaseCMSRoutingModule,\n BaseComponentsModule,\n ],\n declarations: [BaseCmsComponent],\n exports: [],\n providers: [\n {\n provide: BASE_CMS_MODULE_CONFIG,\n useFactory: CMSConfigFactory,\n },\n ],\n})\nexport class BaseCMSModule {\n static config: BaseCMSModuleConfig;\n}\n","/**\n * Exports for public API\n */\n\n// Module\nexport * from './base-cms.module';\n\n// Pages\nexport * from './pages/base-cms/base-cms.component';\n\n// Interface\nexport * from './interfaces/base-cms-module-config.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lenne.tech-ng-base-base-cms.mjs","sources":["../../../projects/ng-base/base-cms/interfaces/base-cms-module-config.interface.ts","../../../projects/ng-base/base-cms/pages/base-cms/base-cms.component.ts","../../../projects/ng-base/base-cms/pages/base-cms/base-cms.component.html","../../../projects/ng-base/base-cms/base-cms-routing.module.ts","../../../projects/ng-base/base-cms/base-cms.module.ts","../../../projects/ng-base/base-cms/public-api.ts","../../../projects/ng-base/base-cms/lenne.tech-ng-base-base-cms.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { CMSFieldConfig, CMSModelConfig } from '@lenne.tech/ng-base/shared';\n\nexport interface BaseCMSModuleConfig {\n modelConfig?: { [key: string]: CMSModelConfig };\n fieldConfig?: { [key: string]: CMSFieldConfig };\n logging?: boolean;\n logoUrl?: string;\n branding?: boolean;\n}\n\nexport const BASE_CMS_MODULE_CONFIG = new InjectionToken('BASE_CMS_MODULE_CONFIG');\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport {\n AuthService,\n BasicUser,\n CmsService,\n GraphqlCrudType,\n GraphQLMeta,\n GraphQLMetaService,\n} from '@lenne.tech/ng-base/shared';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BASE_CMS_MODULE_CONFIG, BaseCMSModuleConfig } from '../../interfaces/base-cms-module-config.interface';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-base-cms',\n templateUrl: './base-cms.component.html',\n styleUrls: ['./base-cms.component.scss'],\n})\nexport class BaseCmsComponent implements OnInit, OnDestroy {\n meta: GraphQLMeta;\n modelName: string;\n camelModelName: string;\n id: string;\n types: GraphqlCrudType[] = [];\n subscription = new Subscription();\n sideBarWidth = '22%';\n responsiveToggle = false;\n\n constructor(\n @Inject(BASE_CMS_MODULE_CONFIG) public moduleConfig: BaseCMSModuleConfig,\n private graphQLMetaService: GraphQLMetaService,\n private route: ActivatedRoute,\n private router: Router,\n private authService: AuthService,\n private cmsService: CmsService\n ) {\n this.calcSideBarWidth();\n this.subscription.add(\n this.route.params.subscribe((value) => {\n if (value['modelName']) {\n const exclude = this.moduleConfig.modelConfig[value['modelName']]?.exclude;\n\n if (exclude !== null && !exclude) {\n this.modelName = value['modelName'];\n this.camelModelName = this.toCamelCase(this.modelName);\n } else {\n this.init().then((types: GraphqlCrudType[]) => {\n this.router.navigate(['../' + this.toKebabCase(types[0].name)], { relativeTo: this.route });\n });\n }\n }\n\n if (value['id']) {\n this.id = value['id'];\n }\n })\n );\n }\n\n async ngOnInit() {\n await this.init();\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n /**\n * It returns a promise that resolves to an array of GraphqlCrudType objects\n *\n * @returns The types that are available to the user.\n */\n init(): Promise<GraphqlCrudType[]> {\n return new Promise((resolve, reject) => {\n this.graphQLMetaService.getMeta().subscribe((meta) => {\n this.meta = meta;\n\n if (this.route.snapshot?.params?.['modelName']) {\n this.modelName = this.route.snapshot?.params?.['modelName'];\n this.camelModelName = this.toCamelCase(this.modelName);\n }\n\n if (this.route.snapshot?.params?.['id']) {\n this.id = this.route.snapshot?.params?.['id'];\n }\n\n const types = meta.getTypes(this.moduleConfig?.logging);\n\n // Check for excluded types\n let filteredTypes = types.filter((e) => !this.moduleConfig?.modelConfig[e.name.toLowerCase()]?.exclude);\n\n // Sort types\n filteredTypes = filteredTypes.sort((a, b) => {\n return (\n (this.moduleConfig?.modelConfig[a.name.toLowerCase()]?.order\n ? this.moduleConfig?.modelConfig[a.name.toLowerCase()]?.order\n : 99) -\n (this.moduleConfig?.modelConfig[b.name.toLowerCase()]?.order\n ? this.moduleConfig?.modelConfig[b.name.toLowerCase()]?.order\n : 99)\n );\n });\n\n // Check for restricted types\n this.types = filteredTypes.filter((e) => {\n if (this.moduleConfig?.modelConfig[e.name.toLowerCase()]?.restricted) {\n if (!this.authService?.currentUser) {\n return false;\n }\n const user = this.authService?.currentUser;\n const mappedUser = BasicUser.map(user);\n\n return mappedUser?.hasAllRoles(this.moduleConfig?.modelConfig[e.name.toLowerCase()]?.roles);\n } else {\n return true;\n }\n });\n\n if (this.moduleConfig?.logging) {\n console.log('BaseCmsComponent::init->types', this.types);\n console.log('BaseCmsComponent::init->camelModelName', this.camelModelName);\n console.log('BaseCmsComponent::init->fieldConfig', this.moduleConfig?.fieldConfig);\n }\n\n resolve(this.types);\n\n if (!this.modelName && this.types) {\n this.router.navigate(['./' + this.toKebabCase(this.types[0].name)], { relativeTo: this.route });\n }\n });\n });\n }\n\n /**\n * If the model name is set and the types are set, then return the type that matches the model name\n *\n * @returns The type object that matches the model name.\n */\n getTypeByModelName() {\n if (this.modelName && this.types) {\n return this.types.find((e) => this.toKebabCase(e.name) === this.toKebabCase(this.modelName));\n } else {\n return null;\n }\n }\n\n /**\n * When the createModeChanged event is emitted, if the createMode is true, navigate to the new route\n *\n * @param createMode - boolean - This is a boolean value that indicates whether the user is in create mode or\n * not.\n */\n onCreateModeChanged(createMode: boolean) {\n if (createMode) {\n this.router.navigate(['./' + 'neu'], { relativeTo: this.route });\n }\n }\n\n /**\n * If the type exists, return the create property of the type, otherwise return false.\n *\n * @returns A boolean value.\n */\n isCreatePossible(): boolean {\n const type = this.getTypeByModelName();\n return type ? type.create : false;\n }\n\n isImportPossible(): boolean {\n let result = false;\n const config = this.moduleConfig?.modelConfig[this.camelModelName]?.import;\n\n if (config !== null && config !== undefined) {\n result = config;\n }\n\n return result;\n }\n\n isExportPossible(): boolean {\n let result = false;\n const config = this.moduleConfig?.modelConfig[this.camelModelName]?.export;\n\n if (config !== null && config !== undefined) {\n result = config;\n }\n\n return result;\n }\n\n /**\n * If the model name is found in the type map, return the update property of the type object\n *\n * @returns A boolean value.\n */\n isUpdatePossible(): boolean {\n const type = this.getTypeByModelName();\n return type ? type.update : false;\n }\n\n /**\n * If the type is defined, return the delete property of the type, otherwise return false\n *\n * @returns A boolean value.\n */\n isDeletePossible(): boolean {\n const type = this.getTypeByModelName();\n return type ? type.delete : false;\n }\n\n /**\n * If the model name is found in the type array, return the duplicate property of the type object\n *\n * @returns A boolean value.\n */\n isDuplicatePossible(): boolean {\n const type = this.getTypeByModelName();\n return type ? type.duplicate : false;\n }\n\n /**\n * If the id is truthy, navigate to the id, otherwise navigate to the parent route\n */\n idSelected(id: string) {\n if (id) {\n this.router.navigate(['./' + id], { relativeTo: this.route });\n } else {\n this.router.navigate(['..'], { relativeTo: this.route });\n }\n }\n\n /**\n * Transform string to kebab case\n */\n toKebabCase(str: string) {\n return str?.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n /**\n * Transform string to camel case\n */\n toCamelCase(str: string) {\n return str?.replace(/-./g, (match) => match[1].toUpperCase());\n }\n\n /**\n * Transform first letter to lower case\n */\n lowerCaseFirstLetter(value: string) {\n return this.cmsService.lowerCaseFirstLetter(value);\n }\n\n /**\n * Calculates sidebar width based on screen size\n */\n calcSideBarWidth() {\n this.sideBarWidth = window.innerWidth < 768 ? '8%' : '22%';\n }\n}\n","<div class=\"main\">\n <div class=\"sidebar\" [ngStyle]=\"{ 'flex-basis': !responsiveToggle ? sideBarWidth : '100%' }\">\n <div class=\"d-none d-md-flex flex-column flex-shrink-0 p-3 h-100\">\n <ng-container *ngIf=\"moduleConfig.branding\">\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none\"\n *ngIf=\"!moduleConfig?.logoUrl\"\n >\n <span class=\"d-block fs-4\"><b class=\"text-primary\">Base</b>CMS</span>\n <small class=\"fw-lighter\">The auto generated GraphQL CMS</small>\n </a>\n\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none w-100\"\n *ngIf=\"moduleConfig?.logoUrl\"\n >\n <img [src]=\"moduleConfig.logoUrl\" class=\"img-responsive w-100\" alt=\"Logo\" />\n </a>\n <hr />\n </ng-container>\n <ul class=\"nav nav-pills flex-column mb-auto\" *ngIf=\"types\">\n <li class=\"nav-item\" *ngFor=\"let type of types\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"d-flex flex-column d-md-none p-3 h-100\">\n <div class=\"d-flex justify-content-end\">\n <i\n class=\"bi\"\n [ngClass]=\"{ 'bi-chevron-left': !responsiveToggle, 'bi-chevron-right': responsiveToggle }\"\n (click)=\"responsiveToggle = !responsiveToggle\"\n ></i>\n </div>\n <ul\n class=\"nav nav-pills responsive-pills flex-column mb-auto\"\n [ngClass]=\"{ 'w-100-transition': responsiveToggle }\"\n *ngIf=\"types\"\n >\n <li class=\"nav-item\" *ngFor=\"let type of types\" (click)=\"responsiveToggle = !responsiveToggle\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"sidebar-content\" [ngStyle]=\"{ 'flex-basis': !responsiveToggle ? 'unset' : '0' }\">\n <div class=\"p-3 p-md-5 mb-3\">\n <base-model-table\n [config]=\"moduleConfig?.modelConfig[camelModelName]\"\n [fieldConfig]=\"moduleConfig?.fieldConfig[camelModelName] || {}\"\n [modelName]=\"modelName\"\n [logging]=\"moduleConfig?.logging\"\n [objectId]=\"id !== 'neu' ? id : ''\"\n [createMode]=\"id === 'neu'\"\n (createModeChanged)=\"onCreateModeChanged($event)\"\n (idSelected)=\"idSelected($event)\"\n [import]=\"isImportPossible()\"\n [export]=\"isExportPossible()\"\n [create]=\"isCreatePossible()\"\n [update]=\"isUpdatePossible()\"\n [delete]=\"isDeletePossible()\"\n [duplicate]=\"isDuplicatePossible()\"\n [showFavButton]=\"!responsiveToggle\"\n ></base-model-table>\n </div>\n </div>\n</div>\n","import { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { BaseCmsComponent } from './pages/base-cms/base-cms.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: BaseCmsComponent,\n },\n {\n path: ':modelName',\n component: BaseCmsComponent,\n },\n {\n path: ':modelName/:id',\n component: BaseCmsComponent,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class BaseCMSRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { BaseCmsComponent } from './pages/base-cms/base-cms.component';\nimport { BaseCMSRoutingModule } from './base-cms-routing.module';\nimport { BaseComponentsModule } from '@lenne.tech/ng-base/base-components';\nimport { BASE_CMS_MODULE_CONFIG, BaseCMSModuleConfig } from './interfaces/base-cms-module-config.interface';\n\nexport function CMSConfigFactory() {\n return {\n modelConfig: {},\n fieldConfig: {},\n branding: true,\n logoUrl: '',\n logging: false,\n ...BaseCMSModule.config,\n };\n}\n\n@NgModule({\n imports: [\n // Modules\n CommonModule,\n ReactiveFormsModule,\n BaseCMSRoutingModule,\n BaseComponentsModule,\n ],\n declarations: [BaseCmsComponent],\n exports: [],\n providers: [\n {\n provide: BASE_CMS_MODULE_CONFIG,\n useFactory: CMSConfigFactory,\n },\n ],\n})\nexport class BaseCMSModule {\n static config: BaseCMSModuleConfig;\n}\n","/**\n * Exports for public API\n */\n\n// Module\nexport * from './base-cms.module';\n\n// Pages\nexport * from './pages/base-cms/base-cms.component';\n\n// Interface\nexport * from './interfaces/base-cms-module-config.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|