@yuuvis/client-shell 2.1.8 → 2.1.10
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.
|
@@ -27,6 +27,8 @@ import { SwPush } from '@angular/service-worker';
|
|
|
27
27
|
import * as i3$1 from '@yuuvis/client-framework/metadata-form-defaults';
|
|
28
28
|
import { YuvMetadataFormDefaultsModule } from '@yuuvis/client-framework/metadata-form-defaults';
|
|
29
29
|
import { map, shareReplay, tap as tap$1, filter as filter$1, catchError, switchMap as switchMap$1 } from 'rxjs/operators';
|
|
30
|
+
import * as i2$2 from '@yuuvis/client-framework/overflow-hidden';
|
|
31
|
+
import { YuvOverflowHiddenModule } from '@yuuvis/client-framework/overflow-hidden';
|
|
30
32
|
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
|
31
33
|
import { MatListModule } from '@angular/material/list';
|
|
32
34
|
import * as i1$2 from '@angular/material/sidenav';
|
|
@@ -237,11 +239,11 @@ class YuvAppHeaderComponent {
|
|
|
237
239
|
});
|
|
238
240
|
}
|
|
239
241
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: YuvAppHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
240
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: YuvAppHeaderComponent, isStandalone: true, selector: "yuv-app-header", ngImport: i0, template: "@let a = app();\n\n@if (a) {\n <yuv-shell-logo />\n <a class=\"name\" [routerLink]=\"app()?.path\">\n
|
|
242
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.12", type: YuvAppHeaderComponent, isStandalone: true, selector: "yuv-app-header", ngImport: i0, template: "@let a = app();\n\n@if (a) {\n <yuv-shell-logo />\n <yuv-overflow-hidden>\n <ng-template #yuvDefaultSlot>\n <a class=\"name\" [routerLink]=\"app()?.path\">\n <div class=\"title\">{{ a.title }}</div>\n <div class=\"claim\">{{ a.options?.appClaim }}</div>\n </a>\n </ng-template>\n </yuv-overflow-hidden>\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"actionsSlot\"></ng-container>\n </div>\n <div class=\"search\">\n <ng-container *ngTemplateOutlet=\"searchSlot\"></ng-container>\n </div>\n <div class=\"notifications\">\n <ng-container *ngTemplateOutlet=\"notificationsSlot\"></ng-container>\n </div>\n}\n", styles: [":host{display:grid;grid-template-columns:var(--yuv-app-header-height) auto 1fr auto auto;grid-template-rows:var(--yuv-app-header-height);grid-template-areas:\"logo name actions search notifications\";align-items:center;background-color:var(--ymt-surface);color:var(--ymt-on-surface);border-block-end:1px solid var(--ymt-outline-variant);box-sizing:border-box;padding-inline-end:var(--ymt-spacing-xl)}:host .logo{grid-area:logo;display:flex;flex-direction:column;align-items:center;justify-content:center}:host .name{grid-area:name;padding-inline-end:var(--ymt-spacing-3xl);padding-inline-start:var(--ymt-spacing-xs);color:currentColor;text-decoration:none;white-space:nowrap;display:flex;flex-direction:column}:host .name .title{font-weight:700}:host .name .claim{font:var(--ymt-font-body-font);color:var(--ymt-text-color-subtle);font-size:var(--ymt-font-body-subtle-size)}:host .name:focus-visible{outline:2px dotted currentColor;outline-offset:-2px}:host .actions{grid-area:actions}:host .search{grid-area:search}:host .notifications{grid-area:notifications}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: YuvOverflowHiddenModule }, { kind: "component", type: i2$2.OverflowHiddenComponent, selector: "yuv-overflow-hidden" }, { kind: "component", type: ShellLogoComponent, selector: "yuv-shell-logo" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
241
243
|
}
|
|
242
244
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImport: i0, type: YuvAppHeaderComponent, decorators: [{
|
|
243
245
|
type: Component,
|
|
244
|
-
args: [{ selector: 'yuv-app-header', imports: [CommonModule, MatIconModule, ShellLogoComponent, RouterModule], template: "@let a = app();\n\n@if (a) {\n <yuv-shell-logo />\n <a class=\"name\" [routerLink]=\"app()?.path\">\n
|
|
246
|
+
args: [{ selector: 'yuv-app-header', imports: [CommonModule, MatIconModule, YuvOverflowHiddenModule, ShellLogoComponent, RouterModule], template: "@let a = app();\n\n@if (a) {\n <yuv-shell-logo />\n <yuv-overflow-hidden>\n <ng-template #yuvDefaultSlot>\n <a class=\"name\" [routerLink]=\"app()?.path\">\n <div class=\"title\">{{ a.title }}</div>\n <div class=\"claim\">{{ a.options?.appClaim }}</div>\n </a>\n </ng-template>\n </yuv-overflow-hidden>\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"actionsSlot\"></ng-container>\n </div>\n <div class=\"search\">\n <ng-container *ngTemplateOutlet=\"searchSlot\"></ng-container>\n </div>\n <div class=\"notifications\">\n <ng-container *ngTemplateOutlet=\"notificationsSlot\"></ng-container>\n </div>\n}\n", styles: [":host{display:grid;grid-template-columns:var(--yuv-app-header-height) auto 1fr auto auto;grid-template-rows:var(--yuv-app-header-height);grid-template-areas:\"logo name actions search notifications\";align-items:center;background-color:var(--ymt-surface);color:var(--ymt-on-surface);border-block-end:1px solid var(--ymt-outline-variant);box-sizing:border-box;padding-inline-end:var(--ymt-spacing-xl)}:host .logo{grid-area:logo;display:flex;flex-direction:column;align-items:center;justify-content:center}:host .name{grid-area:name;padding-inline-end:var(--ymt-spacing-3xl);padding-inline-start:var(--ymt-spacing-xs);color:currentColor;text-decoration:none;white-space:nowrap;display:flex;flex-direction:column}:host .name .title{font-weight:700}:host .name .claim{font:var(--ymt-font-body-font);color:var(--ymt-text-color-subtle);font-size:var(--ymt-font-body-subtle-size)}:host .name:focus-visible{outline:2px dotted currentColor;outline-offset:-2px}:host .actions{grid-area:actions}:host .search{grid-area:search}:host .notifications{grid-area:notifications}\n"] }]
|
|
245
247
|
}], ctorParameters: () => [] });
|
|
246
248
|
|
|
247
249
|
class SidebarNavComponent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-shell.mjs","sources":["../../../../../libs/yuuvis/client-shell/src/lib/actions/manage-flavors/manage-flavors.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/actions/manage-flavors/manage-flavors.component.html","../../../../../libs/yuuvis/client-shell/src/lib/actions/manage-flavors/manage-flavors.action.ts","../../../../../libs/yuuvis/client-shell/src/lib/services/client-shell/client-shell.service.ts","../../../../../libs/yuuvis/client-shell/src/lib/components/shell-logo/shell-logo.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/components/shell-logo/shell-logo.component.html","../../../../../libs/yuuvis/client-shell/src/lib/components/app-header/app-header.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/components/app-header/app-header.component.html","../../../../../libs/yuuvis/client-shell/src/lib/components/sidebar-nav/sidebar-nav.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/components/sidebar-nav/sidebar-nav.component.html","../../../../../libs/yuuvis/client-shell/src/lib/pages/notifications/notifications.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/pages/notifications/notifications.component.html","../../../../../libs/yuuvis/client-shell/src/lib/lib.routes.ts","../../../../../libs/yuuvis/client-shell/src/lib/client-shell.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/client-shell.component.html","../../../../../libs/yuuvis/client-shell/src/lib/components/app-header/app-header-slot.directive.ts","../../../../../libs/yuuvis/client-shell/src/lib/client-shell.module.ts","../../../../../libs/yuuvis/client-shell/src/lib/directives/inert.directive.ts","../../../../../libs/yuuvis/client-shell/src/lib/services/shell-widgets/shell-widgets.service.ts","../../../../../libs/yuuvis/client-shell/src/yuuvis-client-shell.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, inject, OnInit, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DmsObject, DmsService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { BusyOverlayDirective, ConfirmService, DialogComponent } from '@yuuvis/client-framework/common';\nimport { ListItemDirective } from '@yuuvis/client-framework/list';\nimport { FlavorChipComponent } from '@yuuvis/client-framework/object-flavor';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { of, switchMap, tap } from 'rxjs';\n\n@Component({\n selector: 'yuv-manage-flavors',\n standalone: true,\n imports: [\n CommonModule,\n BusyOverlayDirective,\n MatIconModule,\n MatTooltipModule,\n TranslateModule,\n ListItemDirective,\n FlavorChipComponent,\n DialogComponent,\n MatButtonModule,\n YmtButtonDirective\n ],\n templateUrl: './manage-flavors.component.html',\n styleUrl: './manage-flavors.component.scss'\n})\nexport class ManageFlavorsComponent implements OnInit {\n #shell = inject(ShellService);\n #dmsService = inject(DmsService);\n #dialogData = inject<any>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<ManageFlavorsComponent>);\n item: DmsObject = this.#dialogData;\n #confirm = inject(ConfirmService);\n private translate = inject(TranslateService);\n\n busy = signal<boolean>(false);\n\n appliedFlavors: ObjectFlavor[] = [];\n applicableFlavors: ObjectFlavor[] = [];\n\n applyFlavor(flavor: ObjectFlavor) {\n this.busy.set(true);\n this.#shell.triggerApplyObjectFlavor(this.item, flavor).subscribe(() => {\n this.#dialogRef.close();\n this.busy.set(false);\n });\n }\n\n removeFlavor(flavor: ObjectFlavor) {\n this.busy.set(true);\n this.#confirm\n .confirm({\n message: this.translate.instant('yuv.object-flavor.flavor.remove.confirm.message', {\n flavor: this.#shell.getFlavorLabel(flavor.id)\n })\n })\n .pipe(switchMap((confirmed: boolean) => (confirmed ? this.#shell.removeObjectFlavor(this.item, flavor) : of(undefined))))\n .subscribe((res) => {\n if (res !== undefined) this.#dialogRef.close();\n this.busy.set(false);\n });\n }\n\n #refreshDmsObject() {\n this.busy.set(true);\n this.#dmsService\n .getDmsObject(this.item.id)\n .pipe(\n tap((dmsObject) => {\n this.item = dmsObject;\n this.#getAppliedFlavors(this.item);\n })\n )\n .subscribe()\n .add(() => this.busy.set(false));\n }\n\n #getAppliedFlavors(dmsObject: DmsObject) {\n const res = this.#shell.getAppliedObjectFlavors(dmsObject);\n this.appliedFlavors = res.applied;\n this.applicableFlavors = res.applicable;\n }\n\n cancel() {\n this.#dialogRef.close();\n }\n\n ngOnInit() {\n this.#refreshDmsObject();\n }\n}\n","<yuv-dialog [headertitel]=\"'yuv.shell.action.manage-flavors.title' | translate\">\n <main [yuvBusyOverlay]=\"busy()\">\n <p>{{ 'yuv.shell.action.manage-flavors.text' | translate }}</p>\n @if (appliedFlavors.length) {\n <h3>{{ 'yuv.shell.action.manage-flavors.applied.headline' | translate }}</h3>\n <ul>\n @for (f of appliedFlavors; track $index) {\n <li>\n <yuv-flavor-chip [flavor]=\"f\" yuvListItem></yuv-flavor-chip>\n <button mat-icon-button [matTooltip]=\"'yuv.shell.action.manage-flavors.applicable.button.remove.tooltip' | translate\" (click)=\"removeFlavor(f)\">\n <mat-icon>delete_forever</mat-icon>\n </button>\n </li>\n }\n </ul>\n }\n @if (applicableFlavors.length) {\n <h3>{{ 'yuv.shell.action.manage-flavors.applicable.headline' | translate }}</h3>\n <ul>\n @for (f of applicableFlavors; track $index) {\n <li>\n <yuv-flavor-chip [flavor]=\"f\" yuvListItem></yuv-flavor-chip>\n <button mat-icon-button [matTooltip]=\"'yuv.shell.action.manage-flavors.applied.button.apply.tooltip' | translate\" (click)=\"applyFlavor(f)\">\n <mat-icon>add</mat-icon>\n </button>\n </li>\n }\n </ul>\n }\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"cancel()\">{{ 'yuv.shell.action.manage-flavors.button.cancel' | translate }}</button>\n </footer>\n</yuv-dialog>\n","import { inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DmsObject, SystemType, TranslateService } from '@yuuvis/client-core';\nimport { AbstractContextAction, Action, ACTION_ICON, ActionSupport, SelectionRange } from '@yuuvis/client-framework/actions';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { Observable, of } from 'rxjs';\nimport { ManageFlavorsComponent } from './manage-flavors.component';\n\nexport class ManageFlavorsAction extends AbstractContextAction implements Action {\n #shell = inject(ShellService);\n #dialog = inject(MatDialog);\n private translate = inject(TranslateService);\n\n id = 'yuv.base.manage-flavor';\n label = this.translate.instant('yuv.shell.action.manage-flavor.label');\n description = this.translate.instant('yuv.shell.action.manage-flavor.description');\n priority = 8;\n icon = ACTION_ICON.manageFlavor;\n group = 'common';\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {\n types: [SystemType.DOCUMENT]\n };\n\n isExecutable(items: DmsObject[]) {\n const item = items[0];\n if(!item) return of(false);\n const applicableFlavors: ObjectFlavor[] = item.isFolder\n ? this.#shell.getApplicableFolderFlavors()\n : item.content\n ? this.#shell.getApplicableDocumentFlavors(item.content.mimeType)\n : [];\n return of(item && !!item.permissions?.writeIndexData && applicableFlavors.length > 0);\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n this.#dialog.open(ManageFlavorsComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: items[0]\n });\n return of(true);\n }\n}\n","import { inject, Injectable, signal, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { App, AppOptions, ShellService } from '@yuuvis/client-shell-core';\nimport { filter } from 'rxjs';\nimport { AppHeaderSlot } from '../../components/app-header/app-header-slot.directive';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClientShellService {\n #router = inject(Router);\n #shell = inject(ShellService);\n\n appHeaderSlots = signal<Record<string, TemplateRef<any>>>({});\n\n apps = this.#shell.apps;\n currentApp = signal<App | undefined>(undefined);\n appHeader = signal<boolean>(false);\n\n constructor() {\n this.#router.events\n .pipe(\n takeUntilDestroyed(),\n filter((e) => e instanceof NavigationEnd)\n )\n .subscribe((e) => {\n this.#getAppFromUrl(this.#router.routerState.snapshot.url);\n });\n }\n\n #getAppFromUrl(url: string) {\n // remove request params\n if(url.indexOf('?') !== -1) url = url.substring(0, url.indexOf('?'))\n // remove fragments\n if(url.indexOf('#') !== -1) url = url.substring(0, url.indexOf('#'))\n const urlTokens = url.split('/').filter((t) => !!t);\n // TODO: what about context path\n const appPath = urlTokens[0];\n if (this.currentApp()?.path !== appPath) {\n const app = this.apps().find((a) => a.path === appPath);\n this.currentApp.set(app);\n const appData = app?.options as AppOptions;\n this.appHeader.set(!!appData?.appHeader);\n this.appHeaderSlots.set({});\n }\n }\n\n addAppHeaderSlot(slot: AppHeaderSlot, tpl: TemplateRef<any>) {\n this.appHeaderSlots.update((curr) => ({ ...curr, [slot]: tpl }));\n }\n\n getCssVars(vars: string[]): Record<string, unknown> {\n // const vars = ['--ymt-spacing-m'];\n const style = window.getComputedStyle(\n document.getElementsByTagName('body')[0]\n );\n return vars.reduce(\n (prev, curr) => ({ ...prev, [curr]: style.getPropertyValue(curr) }),\n {}\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-shell-logo',\n standalone: true,\n imports: [CommonModule, MatIconModule, RouterModule, TranslateModule],\n templateUrl: './shell-logo.component.html',\n styleUrl: './shell-logo.component.scss'\n})\nexport class ShellLogoComponent {\n // label = input.required<string>();\n}\n","<button routerLink=\"/\" [attr.aria-label]=\"'yuv.shell.logo.aria.label' | translate\">\n <mat-icon svgIcon=\"shellIcons:app_logo\"></mat-icon>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\nimport { debounceTime } from 'rxjs';\nimport { ClientShellService } from '../../services/client-shell/client-shell.service';\nimport { ShellLogoComponent } from '../shell-logo/shell-logo.component';\n\n@Component({\n selector: 'yuv-app-header',\n imports: [CommonModule, MatIconModule, ShellLogoComponent, RouterModule],\n templateUrl: './app-header.component.html',\n styleUrl: './app-header.component.scss'\n})\nexport class YuvAppHeaderComponent {\n #clientShellService = inject(ClientShellService);\n\n actionsSlot: TemplateRef<any> | null = null;\n searchSlot: TemplateRef<any> | null = null;\n notificationsSlot: TemplateRef<any> | null = null;\n\n app = this.#clientShellService.currentApp;\n #slots = this.#clientShellService.appHeaderSlots;\n\n constructor() {\n toObservable(this.#slots)\n .pipe(debounceTime(1), takeUntilDestroyed())\n .subscribe((slots) => {\n this.actionsSlot = slots['actions'] || null;\n this.searchSlot = slots['search'] || null;\n this.notificationsSlot = slots['notifications'] || null;\n });\n }\n}\n","@let a = app();\n\n@if (a) {\n <yuv-shell-logo />\n <a class=\"name\" [routerLink]=\"app()?.path\">\n <div class=\"title\">{{ a.title }}</div>\n <div class=\"claim\">{{ a.options?.appClaim }}</div>\n </a>\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"actionsSlot\"></ng-container>\n </div>\n <div class=\"search\">\n <ng-container *ngTemplateOutlet=\"searchSlot\"></ng-container>\n </div>\n <div class=\"notifications\">\n <ng-container *ngTemplateOutlet=\"notificationsSlot\"></ng-container>\n </div>\n}\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\n\n@Component({\n selector: 'yuv-sidebar-nav',\n templateUrl: './sidebar-nav.component.html',\n styleUrl: './sidebar-nav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, MatToolbarModule, MatButtonModule, MatSidenavModule, MatListModule, MatIconModule]\n})\nexport class SidebarNavComponent {\n private breakpointObserver = inject(BreakpointObserver);\n\n isHandset$: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset).pipe(\n map((result) => result.matches),\n shareReplay()\n );\n}\n","<mat-sidenav-container class=\"sidenav-container\">\n <mat-sidenav class=\"sidenav\"\n attr.role=\"navigation\"\n mode=\"side\"\n opened>\n <div class=\"sidenav-content\">\n <div class=\"app-logo\">\n <ng-content select=\"yuv-shell-logo\"></ng-content>\n </div>\n <div class=\"nav-list\">\n <ng-content select=\".shell-nav__nav-list\"></ng-content>\n </div>\n <div class=\"actions\">\n <ng-content select=\".shell-nav__actions\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n <mat-sidenav-content></mat-sidenav-content>\n</mat-sidenav-container>\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostListener, OnInit, effect, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Router } from '@angular/router';\nimport { LocaleDatePipe, TranslateModule, Utils } from '@yuuvis/client-core';\nimport { LightDismissDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS, YuvIconComponent } from '@yuuvis/client-framework/icons';\nimport { YuvListModule } from '@yuuvis/client-framework/list';\nimport { ShellNotificationsService } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-notifications',\n standalone: true,\n imports: [\n CommonModule,\n LightDismissDirective,\n MatIconModule,\n MatButtonModule,\n LocaleDatePipe,\n YuvIconComponent,\n CdkTrapFocus,\n YuvListModule,\n TranslateModule\n ],\n templateUrl: './notifications.component.html',\n styleUrl: './notifications.component.scss'\n})\nexport class NotificationsPageComponent implements OnInit {\n private router = inject(Router);\n private shellNotifications = inject(ShellNotificationsService);\n private elRef = inject(ElementRef);\n\n private _focusedIndex = -1;\n private _notificationIDs: string[] = [];\n notifications = toSignal(this.shellNotifications.shellNotifications$);\n notificationsIdEffect = effect(() => (this._notificationIDs = (this.notifications() || []).map((n) => n.id)));\n\n icons = {\n note: YUV_ICONS.notification\n };\n\n @HostListener('keydown', ['$event']) onKeydown(event: KeyboardEvent) {\n switch (event.code) {\n case 'Delete': {\n if (this._focusedIndex >= 0) this.remove(this._notificationIDs[this._focusedIndex]);\n break;\n }\n }\n }\n\n async itemSelected(idx: number[]) {\n const n = this.shellNotifications.getNotificationById(this._notificationIDs[idx[0]]);\n if (n?.targetRoute) {\n await this.close();\n this.router.navigateByUrl(n.targetRoute, { replaceUrl: true });\n if (n.removeOnTargetRouteNavigated) this.remove(n.id);\n }\n }\n\n itemFocused(index: number) {\n this._focusedIndex = index;\n }\n\n remove(id: string) {\n if (id) this.shellNotifications.remove(id);\n }\n\n removeAll() {\n this.shellNotifications.removeAll();\n }\n\n close() {\n return this.router.navigate([{ outlets: { aside: null } }], {\n replaceUrl: true\n });\n }\n\n ngOnInit(): void {\n this.shellNotifications.markAllAsSeen();\n setTimeout(() => {\n const fc: HTMLElement[] = Utils.getFocusableChildren(this.elRef.nativeElement) as HTMLElement[];\n if (fc.length) fc[0].focus();\n });\n }\n}\n","<div class=\"notifications\" (yuvLightDismiss)=\"close()\" cdkTrapFocus>\n <h2>{{ 'yuv.shell.notifications.title' | translate }}</h2>\n\n @if (notifications()?.length) {\n <yuv-list (itemSelect)=\"itemSelected($event)\" (itemFocus)=\"itemFocused($event)\">\n @for (n of notifications(); track n.id) {\n <div class=\"note {{ n.level }}\" [ngClass]=\"{ withRoute: n.targetRoute }\" yuvListItem>\n <div class=\"icon\"><yuv-icon [svg]=\"n.icon || icons.note\"></yuv-icon></div>\n <div class=\"received\">{{ n.timestamp | localeDate }}</div>\n <div class=\"title\">{{ n.title }}</div>\n <div class=\"description\">{{ n.description }}</div>\n <div class=\"meta\"></div>\n\n <div class=\"actions\">\n <button mat-icon-button (click)=\"remove(n.id)\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n }\n </yuv-list>\n\n <div class=\"actions\">\n <button mat-icon-button [hidden]=\"!notifications()?.length\" class=\"icon secondary\" (click)=\"removeAll()\">\n {{ 'yuv.shell.notifications.button.remove.all' | translate }}<mat-icon>delete</mat-icon>\n </button>\n </div>\n } @else {\n <div class=\"empty\">\n <p>{{ 'yuv.shell.notifications.empty' | translate }}</p>\n </div>\n }\n\n <button mat-icon-button class=\"icon close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</div>\n","import { Route } from '@angular/router';\nimport { NotificationsPageComponent } from './pages/notifications/notifications.component';\n\nexport const clientShellRoutes: Route[] = [\n { path: 'dashboard', loadComponent: () => import('./pages/dashboard/dashboard.component').then((comp) => comp.DashboardPageComponent) },\n { path: 'notifications', component: NotificationsPageComponent, outlet: 'aside' },\n { path: 'settings', loadComponent: () => import('./pages/settings/settings.component').then((comp) => comp.SettingsPageComponent) },\n \n // default route\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n // redirecting route\n { path: '**', redirectTo: '/' }\n];\n","import { AsyncPipe } from '@angular/common';\nimport { Component, HostListener, OnInit, Signal, computed, effect, inject, input, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon, MatIconRegistry } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NavigationEnd, Route, Router, RouterModule } from '@angular/router';\nimport { SwPush } from '@angular/service-worker';\nimport { AuthService, DeviceService, SafeHtmlPipe, TranslateModule, TranslateService, UserRoles, UserService, Utils, YuvUser } from '@yuuvis/client-core';\nimport { YuvMetadataFormDefaultsModule } from '@yuuvis/client-framework/metadata-form-defaults';\nimport {\n App,\n ClientShellConfig,\n CommandPaletteCommand,\n CommandPaletteService,\n ShellNotificationLevel,\n ShellNotificationsService,\n ShellService\n} from '@yuuvis/client-shell-core';\nimport { of } from 'rxjs';\nimport { catchError, filter, map, switchMap, tap } from 'rxjs/operators';\nimport { YuvAppHeaderComponent } from './components/app-header/app-header.component';\nimport { SidebarNavComponent } from './components/sidebar-nav/sidebar-nav.component';\nimport { clientShellRoutes } from './lib.routes';\nimport { ClientShellService } from './services/client-shell/client-shell.service';\nimport { ShellLogoComponent } from './components/shell-logo/shell-logo.component';\n\n/**\n * Base component for the client shell application. In your apps \n * app.component.ts you can use this component as a base component\n * to provide the shell functionality.\n * \n * ```typescript\n * @Component({\n * standalone: true,\n * imports: [ClientShellComponent],\n * selector: 'yuv-root',\n * template: `<yuv-client-shell [apps]=\"apps\" [config]=\"shellConfig\"></yuv-client-shell>`,\n * styleUrl: './app.component.scss'\n * })\n * export class AppComponent {\n * #featureService = inject(FeatureService);\n * apps: App[] = this.#featureService.getAvailableApps(app); \n * }\n * ```\n */\n@Component({\n selector: 'yuv-client-shell',\n standalone: true,\n imports: [\n AsyncPipe,\n TranslateModule,\n RouterModule,\n YuvMetadataFormDefaultsModule,\n YuvAppHeaderComponent,\n SidebarNavComponent,\n MatIconButton,\n MatIcon,\n MatProgressBar,\n MatTooltipModule,\n ShellLogoComponent\n ],\n templateUrl: './client-shell.component.html',\n styleUrls: ['./client-shell.component.scss'],\n providers: [SafeHtmlPipe]\n})\nexport class ClientShellComponent implements OnInit {\n private router = inject(Router);\n private auth = inject(AuthService);\n private userService = inject(UserService);\n #shell = inject(ShellService);\n readonly css = inject(ClientShellService);\n private shellNotifications = inject(ShellNotificationsService);\n private translate = inject(TranslateService);\n private commandPalette = inject(CommandPaletteService);\n readonly #device = inject(DeviceService);\n readonly #swPush = inject(SwPush);\n readonly #matIconRegistryService = inject(MatIconRegistry);\n\n private APP_LOGOUT_EVENT_KEY = 'yuv.app.event.logout';\n\n private _levels: Record<ShellNotificationLevel, number> = {\n info: 0,\n success: 1,\n warning: 2,\n alert: 3\n };\n\n safeHtmlPipe = inject(SafeHtmlPipe);\n\n showUploadOverlay = false;\n busy$ = this.#shell.isBusy$;\n context?: string;\n\n showNotifications = signal<boolean>(false);\n newNotifications: Signal<\n | {\n count: number;\n maxLevel: ShellNotificationLevel;\n }\n | undefined\n > = toSignal(\n this.shellNotifications.shellNotifications$.pipe(\n tap((n) => this.showNotifications.set(n.length > 0)),\n map((notifications) => {\n let maxLevel: ShellNotificationLevel = 'info';\n const count = notifications.filter((n) => !n.seen).length;\n notifications.forEach((n) => (maxLevel = n.level && this._levels[n.level] > this._levels[maxLevel] ? n.level : maxLevel));\n return count > 0 ? { maxLevel, count } : undefined;\n })\n )\n );\n\n @HostListener('document:focusin', ['$event'])\n onFocusChange(event: FocusEvent) {\n // console.log('focused: ', document.activeElement);\n }\n\n @HostListener('dragover', ['$event'])\n onDragOver(event: DragEvent) {\n event.stopPropagation();\n event.preventDefault();\n\n this.showUploadOverlay = !!this._dragContainsFiles(event);\n }\n\n apps = input.required<App[]>();\n navApps = computed(() => this.apps().filter(a => !a.options?.hideFromNav))\n #appsEffect = effect(() => this.#shell.setApps(this.apps()));\n user?: YuvUser;\n checkedForInitialRoute = false;\n enableTenantSwitch = false;\n\n config = input<ClientShellConfig>();\n #shellConfigEffect = effect(() => {\n const cfg = this.config();\n if (cfg) {\n this.#shell.setShellConfig(cfg);\n }\n });\n\n registerIcons = computed(() => {\n const apps = this.apps();\n const config = this.#shell.shellConfig();\n const namespace = config.shellIconNamespace;\n\n // find svg-icons to register and put them in an array\n const customSvgIconsToRegister = apps\n .filter(({ svgIcon }) => !!svgIcon)\n .map(({ svgIcon, iconName }): ClientShellConfig['appIcon'] => ({ svgIcon, iconName }));\n customSvgIconsToRegister.push(config.appIcon);\n\n // register svg-icons\n const allRegistered = customSvgIconsToRegister.every((icon) => {\n return namespace && icon && icon.svgIcon && icon.iconName\n ? !!this.#matIconRegistryService.addSvgIconLiteralInNamespace(namespace, icon.iconName, this.safeHtmlPipe.transform(icon.svgIcon))\n : false;\n });\n\n return allRegistered;\n });\n\n constructor() {\n this.translate.onLangChange.subscribe(() => this._setCommands(true));\n // this.router.events.pipe(\n // // filter(e => e instanceof NavigationStart)\n // ).subscribe((e) => {\n // console.log(e);\n // });\n\n this.router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n map((e) => e as NavigationEnd)\n )\n .subscribe((e: NavigationEnd) => this._processRouterNavigationEnd(e));\n\n this.#device.init();\n\n this.userService.user$.subscribe((user: YuvUser | undefined) => {\n if (user) {\n this.checkedForInitialRoute = !(!this.user || this.user.id !== user.id);\n this.enableTenantSwitch = user.authorities.includes(UserRoles.MULTI_TENANT);\n }\n this.user = user;\n });\n\n window.addEventListener('storage', (evt) => {\n if (evt.key === this.APP_LOGOUT_EVENT_KEY) {\n this.appLogout(true);\n }\n });\n }\n\n getAppTitle(a: App): string {\n return (a.title as string) || '';\n }\n\n openNotifications() {\n this.router.navigate([{}]);\n }\n\n // getNotifications(id: string) {\n // return this.shellNotifications.getNotifications(id);\n // }\n\n private _dragContainsFiles(event: DragEvent): number {\n // do not allow to drop files/images from iframes\n if ((event.relatedTarget as Element)?.tagName.toLowerCase() === 'iframe') return 0;\n return event.dataTransfer ? Array.from(event.dataTransfer.items || []).filter((i) => i.kind === 'file' && i.type).length : 0;\n }\n\n private _setCommands(update?: boolean) {\n const commands: CommandPaletteCommand[] = this.apps().map((a: App, i: number) => ({\n id: `nav.app.${i}`,\n label: this.translate.instant('yuv.shell.cmd.app.open', { title: a.title as string }),\n callback: () => this.router.navigate([a.path])\n }));\n commands.push({\n id: `nav.shell.settings`,\n label: this.translate.instant('yuv.shell.cmd.open.settings'),\n callback: () => this.router.navigate(['settings'])\n });\n commands.push({\n id: `nav.shell.logout`,\n label: this.translate.instant('yuv.shell.cmd.logout'),\n callback: () => this.appLogout()\n });\n\n if (update) this.commandPalette.updateCommands(commands);\n else this.commandPalette.registerCommands(commands);\n }\n\n requestSubscription() {\n if (!this.#swPush.isEnabled) {\n return;\n }\n\n this.#swPush.messages\n .pipe(\n tap((msg) => console.log({ msg })),\n catchError((error) => {\n console.log({ error });\n return of(null);\n })\n )\n .subscribe();\n }\n\n appLogout(triggeredFromOtherTab?: boolean) {\n if (!triggeredFromOtherTab) {\n // send storage event to logout all other open tabs\n window.localStorage.setItem(this.APP_LOGOUT_EVENT_KEY, `${Date.now()}`);\n }\n this.userService.logout('');\n }\n\n private _processRouterNavigationEnd(e: NavigationEnd) {\n if (!this.checkedForInitialRoute) {\n this.checkedForInitialRoute = true;\n // redirect to the page the user logged out from the last time\n // but only if current route is not a deep link\n const ignoreRoutes = ['', 'dashboard', 'index.html'].map((s) => `${Utils.getBaseHref()}${s}`.replace('//', '/'));\n const currentRoute = this.routeWithBaseHref(this.router.routerState.snapshot.url);\n\n if (this.userService.getCurrentUser() && !ignoreRoutes.includes(currentRoute)) {\n // get persisted routes to decide where to redirect the logged in user to\n this.auth\n .getInitialRequestUri()\n .pipe(switchMap((res) => this.auth.resetInitialRequestUri().pipe(map((_) => res))))\n .subscribe((res: { uri: string; timestamp: number }) => {\n const loginRes = res && !ignoreRoutes.includes(res.uri) ? res : null;\n if (loginRes) this.router.navigateByUrl(loginRes.uri);\n });\n }\n }\n }\n\n private routeWithBaseHref(r: string): string {\n return `${Utils.getBaseHref()}${r}`.replace('//', '/');\n }\n\n ngOnInit(): void {\n this.#shell._init();\n clientShellRoutes.forEach((route: Route) => {\n this.router.config.push(route);\n });\n this.router.resetConfig(this.router.config);\n this._setCommands();\n this.requestSubscription();\n }\n}\n","<yuv-metadata-default-templates></yuv-metadata-default-templates>\n\n<!-- gloabl busy indicator -->\n@if (busy$ | async) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n\n@let iconsRegistered = registerIcons();\n@let showAppHeader = css.appHeader();\n\n@if (showAppHeader) {\n <yuv-app-header> </yuv-app-header>\n}\n\n<yuv-sidebar-nav class=\"shell-nav\">\n @if (iconsRegistered && !showAppHeader) {\n <yuv-shell-logo />\n }\n <!-- </button> -->\n <ul class=\"shell-nav__nav-list\">\n @for (a of navApps(); track a.path) {\n <li class=\"shell-nav__nav-list-item\">\n <button\n class=\"shell-nav__nav-list-item-button\"\n mat-icon-button\n routerLinkActive=\"active\"\n [routerLink]=\"a.path\"\n matTooltipPosition=\"after\"\n [matTooltip]=\"getAppTitle(a)\"\n >\n @if (a.svgIcon) {\n @if (iconsRegistered) {\n <mat-icon [svgIcon]=\"'shellIcons:' + a.iconName\"></mat-icon>\n }\n } @else {\n <mat-icon>{{ a.iconName }}</mat-icon>\n }\n <!--@if (getNotifications(a.id)) {\n <div [ngClass]=\"'badge ' + getNotifications(a.id).maxLevel\">{{ getNotifications(a.id).count }}</div>\n }-->\n </button>\n </li>\n }\n </ul>\n <section class=\"shell-nav__actions\">\n @if (showNotifications()) {\n <button\n class=\"shell-nav__actions-button\"\n mat-icon-button\n [routerLink]=\"[{ outlets: { aside: 'notifications' } }]\"\n routerLinkActive=\"active\"\n matTooltipPosition=\"after\"\n [matTooltip]=\"'yuv.shell.notifications.title' | translate\"\n >\n <mat-icon>notifications</mat-icon>\n @if (newNotifications(); as note) {\n <div class=\"badge {{ note.maxLevel }}\">{{ note.count }}</div>\n }\n </button>\n }\n <button\n class=\"shell-nav__actions-button\"\n mat-icon-button\n [routerLink]=\"['/settings']\"\n routerLinkActive=\"active\"\n [matTooltip]=\"'yuv.shell.settings.title' | translate\"\n >\n <mat-icon>settings</mat-icon>\n </button>\n <button class=\"shell-nav__actions-button\" mat-icon-button (click)=\"appLogout()\" [matTooltip]=\"'yuv.shell.cmd.logout' | translate\">\n <mat-icon>power_settings_new</mat-icon>\n </button>\n </section>\n</yuv-sidebar-nav>\n\n<main id=\"main-shell_content\" aria-label=\"main shell content\" [inert]=\"asideOutlet.isActivated\">\n <router-outlet></router-outlet>\n</main>\n\n<!-- outlet for aside modals like notifications -->\n<div class=\"asideOutlet\" [hidden]=\"!asideOutlet.isActivated\">\n <router-outlet name=\"aside\" #asideOutlet=\"outlet\"></router-outlet>\n</div>\n\n<div id=\"fi\" inert></div>\n","import { Directive, inject, input, OnInit, TemplateRef } from '@angular/core';\nimport { ClientShellService } from '../../services/client-shell/client-shell.service';\n\nexport type AppHeaderSlot = 'actions' | 'search' | 'notifications';\n\n@Directive({\n selector: 'ng-template[yuvAppHeaderSlot]'\n})\nexport class YuvAppHeaderSlotDirective implements OnInit {\n #tplRef = inject(TemplateRef<any>);\n #clientShellService = inject(ClientShellService);\n\n yuvAppHeaderSlot = input.required<AppHeaderSlot>();\n\n ngOnInit(): void {\n this.#clientShellService.addAppHeaderSlot(this.yuvAppHeaderSlot(), this.#tplRef);\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { YuvAppHeaderSlotDirective } from \"./components/app-header/app-header-slot.directive\";\n\n\nconst cmp = [\n YuvAppHeaderSlotDirective,\n]\n\n@NgModule({\n imports: [cmp],\n exports: [cmp]\n })\n export class YuvClientShellModule {}","import { Directive, ElementRef, effect, inject, input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[inert]',\n standalone: true\n})\nexport class InertDirective {\n private elRef = inject(ElementRef);\n\n inert = input<boolean>(false);\n\n constructor() {\n effect(() => {\n const el: HTMLElement = this.elRef.nativeElement as HTMLElement;\n if (this.inert()) el.setAttribute('inert', 'true');\n else el.removeAttribute('inert');\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GridWidget, WidgetGridRegistry } from '@yuuvis/client-framework/widget-grid';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ShellWidgetsService {\n #widgetGridRegistry = inject(WidgetGridRegistry);\n\n #WIDGET_REGISTRY_BUCKET = 'io.yuuvis.shell.widgets';\n\n exposeShellWidgets(widgets: GridWidget<any>[]) {\n this.#widgetGridRegistry.registerGridWidgets(widgets, [this.#WIDGET_REGISTRY_BUCKET]);\n }\n\n concealShellWidgets(ids: string[]) {\n ids.forEach((id) => this.#widgetGridRegistry.removeRegisteredWidget(id));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i5","tap","filter","switchMap","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-shell.mjs","sources":["../../../../../libs/yuuvis/client-shell/src/lib/actions/manage-flavors/manage-flavors.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/actions/manage-flavors/manage-flavors.component.html","../../../../../libs/yuuvis/client-shell/src/lib/actions/manage-flavors/manage-flavors.action.ts","../../../../../libs/yuuvis/client-shell/src/lib/services/client-shell/client-shell.service.ts","../../../../../libs/yuuvis/client-shell/src/lib/components/shell-logo/shell-logo.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/components/shell-logo/shell-logo.component.html","../../../../../libs/yuuvis/client-shell/src/lib/components/app-header/app-header.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/components/app-header/app-header.component.html","../../../../../libs/yuuvis/client-shell/src/lib/components/sidebar-nav/sidebar-nav.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/components/sidebar-nav/sidebar-nav.component.html","../../../../../libs/yuuvis/client-shell/src/lib/pages/notifications/notifications.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/pages/notifications/notifications.component.html","../../../../../libs/yuuvis/client-shell/src/lib/lib.routes.ts","../../../../../libs/yuuvis/client-shell/src/lib/client-shell.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/client-shell.component.html","../../../../../libs/yuuvis/client-shell/src/lib/components/app-header/app-header-slot.directive.ts","../../../../../libs/yuuvis/client-shell/src/lib/client-shell.module.ts","../../../../../libs/yuuvis/client-shell/src/lib/directives/inert.directive.ts","../../../../../libs/yuuvis/client-shell/src/lib/services/shell-widgets/shell-widgets.service.ts","../../../../../libs/yuuvis/client-shell/src/yuuvis-client-shell.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, inject, OnInit, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DmsObject, DmsService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { BusyOverlayDirective, ConfirmService, DialogComponent } from '@yuuvis/client-framework/common';\nimport { ListItemDirective } from '@yuuvis/client-framework/list';\nimport { FlavorChipComponent } from '@yuuvis/client-framework/object-flavor';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { of, switchMap, tap } from 'rxjs';\n\n@Component({\n selector: 'yuv-manage-flavors',\n standalone: true,\n imports: [\n CommonModule,\n BusyOverlayDirective,\n MatIconModule,\n MatTooltipModule,\n TranslateModule,\n ListItemDirective,\n FlavorChipComponent,\n DialogComponent,\n MatButtonModule,\n YmtButtonDirective\n ],\n templateUrl: './manage-flavors.component.html',\n styleUrl: './manage-flavors.component.scss'\n})\nexport class ManageFlavorsComponent implements OnInit {\n #shell = inject(ShellService);\n #dmsService = inject(DmsService);\n #dialogData = inject<any>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<ManageFlavorsComponent>);\n item: DmsObject = this.#dialogData;\n #confirm = inject(ConfirmService);\n private translate = inject(TranslateService);\n\n busy = signal<boolean>(false);\n\n appliedFlavors: ObjectFlavor[] = [];\n applicableFlavors: ObjectFlavor[] = [];\n\n applyFlavor(flavor: ObjectFlavor) {\n this.busy.set(true);\n this.#shell.triggerApplyObjectFlavor(this.item, flavor).subscribe(() => {\n this.#dialogRef.close();\n this.busy.set(false);\n });\n }\n\n removeFlavor(flavor: ObjectFlavor) {\n this.busy.set(true);\n this.#confirm\n .confirm({\n message: this.translate.instant('yuv.object-flavor.flavor.remove.confirm.message', {\n flavor: this.#shell.getFlavorLabel(flavor.id)\n })\n })\n .pipe(switchMap((confirmed: boolean) => (confirmed ? this.#shell.removeObjectFlavor(this.item, flavor) : of(undefined))))\n .subscribe((res) => {\n if (res !== undefined) this.#dialogRef.close();\n this.busy.set(false);\n });\n }\n\n #refreshDmsObject() {\n this.busy.set(true);\n this.#dmsService\n .getDmsObject(this.item.id)\n .pipe(\n tap((dmsObject) => {\n this.item = dmsObject;\n this.#getAppliedFlavors(this.item);\n })\n )\n .subscribe()\n .add(() => this.busy.set(false));\n }\n\n #getAppliedFlavors(dmsObject: DmsObject) {\n const res = this.#shell.getAppliedObjectFlavors(dmsObject);\n this.appliedFlavors = res.applied;\n this.applicableFlavors = res.applicable;\n }\n\n cancel() {\n this.#dialogRef.close();\n }\n\n ngOnInit() {\n this.#refreshDmsObject();\n }\n}\n","<yuv-dialog [headertitel]=\"'yuv.shell.action.manage-flavors.title' | translate\">\n <main [yuvBusyOverlay]=\"busy()\">\n <p>{{ 'yuv.shell.action.manage-flavors.text' | translate }}</p>\n @if (appliedFlavors.length) {\n <h3>{{ 'yuv.shell.action.manage-flavors.applied.headline' | translate }}</h3>\n <ul>\n @for (f of appliedFlavors; track $index) {\n <li>\n <yuv-flavor-chip [flavor]=\"f\" yuvListItem></yuv-flavor-chip>\n <button mat-icon-button [matTooltip]=\"'yuv.shell.action.manage-flavors.applicable.button.remove.tooltip' | translate\" (click)=\"removeFlavor(f)\">\n <mat-icon>delete_forever</mat-icon>\n </button>\n </li>\n }\n </ul>\n }\n @if (applicableFlavors.length) {\n <h3>{{ 'yuv.shell.action.manage-flavors.applicable.headline' | translate }}</h3>\n <ul>\n @for (f of applicableFlavors; track $index) {\n <li>\n <yuv-flavor-chip [flavor]=\"f\" yuvListItem></yuv-flavor-chip>\n <button mat-icon-button [matTooltip]=\"'yuv.shell.action.manage-flavors.applied.button.apply.tooltip' | translate\" (click)=\"applyFlavor(f)\">\n <mat-icon>add</mat-icon>\n </button>\n </li>\n }\n </ul>\n }\n </main>\n <footer>\n <button ymtButton=\"secondary\" (click)=\"cancel()\">{{ 'yuv.shell.action.manage-flavors.button.cancel' | translate }}</button>\n </footer>\n</yuv-dialog>\n","import { inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DmsObject, SystemType, TranslateService } from '@yuuvis/client-core';\nimport { AbstractContextAction, Action, ACTION_ICON, ActionSupport, SelectionRange } from '@yuuvis/client-framework/actions';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { Observable, of } from 'rxjs';\nimport { ManageFlavorsComponent } from './manage-flavors.component';\n\nexport class ManageFlavorsAction extends AbstractContextAction implements Action {\n #shell = inject(ShellService);\n #dialog = inject(MatDialog);\n private translate = inject(TranslateService);\n\n id = 'yuv.base.manage-flavor';\n label = this.translate.instant('yuv.shell.action.manage-flavor.label');\n description = this.translate.instant('yuv.shell.action.manage-flavor.description');\n priority = 8;\n icon = ACTION_ICON.manageFlavor;\n group = 'common';\n range = SelectionRange.SINGLE_SELECT;\n supports: ActionSupport = {\n types: [SystemType.DOCUMENT]\n };\n\n isExecutable(items: DmsObject[]) {\n const item = items[0];\n if(!item) return of(false);\n const applicableFlavors: ObjectFlavor[] = item.isFolder\n ? this.#shell.getApplicableFolderFlavors()\n : item.content\n ? this.#shell.getApplicableDocumentFlavors(item.content.mimeType)\n : [];\n return of(item && !!item.permissions?.writeIndexData && applicableFlavors.length > 0);\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n this.#dialog.open(ManageFlavorsComponent, {\n width: '400px',\n maxWidth: '90vw',\n data: items[0]\n });\n return of(true);\n }\n}\n","import { inject, Injectable, signal, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { App, AppOptions, ShellService } from '@yuuvis/client-shell-core';\nimport { filter } from 'rxjs';\nimport { AppHeaderSlot } from '../../components/app-header/app-header-slot.directive';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClientShellService {\n #router = inject(Router);\n #shell = inject(ShellService);\n\n appHeaderSlots = signal<Record<string, TemplateRef<any>>>({});\n\n apps = this.#shell.apps;\n currentApp = signal<App | undefined>(undefined);\n appHeader = signal<boolean>(false);\n\n constructor() {\n this.#router.events\n .pipe(\n takeUntilDestroyed(),\n filter((e) => e instanceof NavigationEnd)\n )\n .subscribe((e) => {\n this.#getAppFromUrl(this.#router.routerState.snapshot.url);\n });\n }\n\n #getAppFromUrl(url: string) {\n // remove request params\n if(url.indexOf('?') !== -1) url = url.substring(0, url.indexOf('?'))\n // remove fragments\n if(url.indexOf('#') !== -1) url = url.substring(0, url.indexOf('#'))\n const urlTokens = url.split('/').filter((t) => !!t);\n // TODO: what about context path\n const appPath = urlTokens[0];\n if (this.currentApp()?.path !== appPath) {\n const app = this.apps().find((a) => a.path === appPath);\n this.currentApp.set(app);\n const appData = app?.options as AppOptions;\n this.appHeader.set(!!appData?.appHeader);\n this.appHeaderSlots.set({});\n }\n }\n\n addAppHeaderSlot(slot: AppHeaderSlot, tpl: TemplateRef<any>) {\n this.appHeaderSlots.update((curr) => ({ ...curr, [slot]: tpl }));\n }\n\n getCssVars(vars: string[]): Record<string, unknown> {\n // const vars = ['--ymt-spacing-m'];\n const style = window.getComputedStyle(\n document.getElementsByTagName('body')[0]\n );\n return vars.reduce(\n (prev, curr) => ({ ...prev, [curr]: style.getPropertyValue(curr) }),\n {}\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-shell-logo',\n standalone: true,\n imports: [CommonModule, MatIconModule, RouterModule, TranslateModule],\n templateUrl: './shell-logo.component.html',\n styleUrl: './shell-logo.component.scss'\n})\nexport class ShellLogoComponent {\n // label = input.required<string>();\n}\n","<button routerLink=\"/\" [attr.aria-label]=\"'yuv.shell.logo.aria.label' | translate\">\n <mat-icon svgIcon=\"shellIcons:app_logo\"></mat-icon>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\nimport { debounceTime } from 'rxjs';\nimport { ClientShellService } from '../../services/client-shell/client-shell.service';\nimport { ShellLogoComponent } from '../shell-logo/shell-logo.component';\nimport { YuvOverflowHiddenModule } from '@yuuvis/client-framework/overflow-hidden';\n\n@Component({\n selector: 'yuv-app-header',\n imports: [CommonModule, MatIconModule, YuvOverflowHiddenModule, ShellLogoComponent, RouterModule],\n templateUrl: './app-header.component.html',\n styleUrl: './app-header.component.scss'\n})\nexport class YuvAppHeaderComponent {\n #clientShellService = inject(ClientShellService);\n\n actionsSlot: TemplateRef<any> | null = null;\n searchSlot: TemplateRef<any> | null = null;\n notificationsSlot: TemplateRef<any> | null = null;\n\n app = this.#clientShellService.currentApp;\n #slots = this.#clientShellService.appHeaderSlots;\n\n constructor() {\n toObservable(this.#slots)\n .pipe(debounceTime(1), takeUntilDestroyed())\n .subscribe((slots) => {\n this.actionsSlot = slots['actions'] || null;\n this.searchSlot = slots['search'] || null;\n this.notificationsSlot = slots['notifications'] || null;\n });\n }\n}\n","@let a = app();\n\n@if (a) {\n <yuv-shell-logo />\n <yuv-overflow-hidden>\n <ng-template #yuvDefaultSlot>\n <a class=\"name\" [routerLink]=\"app()?.path\">\n <div class=\"title\">{{ a.title }}</div>\n <div class=\"claim\">{{ a.options?.appClaim }}</div>\n </a>\n </ng-template>\n </yuv-overflow-hidden>\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"actionsSlot\"></ng-container>\n </div>\n <div class=\"search\">\n <ng-container *ngTemplateOutlet=\"searchSlot\"></ng-container>\n </div>\n <div class=\"notifications\">\n <ng-container *ngTemplateOutlet=\"notificationsSlot\"></ng-container>\n </div>\n}\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { TranslateModule } from '@yuuvis/client-core';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\n\n@Component({\n selector: 'yuv-sidebar-nav',\n templateUrl: './sidebar-nav.component.html',\n styleUrl: './sidebar-nav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, MatToolbarModule, MatButtonModule, MatSidenavModule, MatListModule, MatIconModule]\n})\nexport class SidebarNavComponent {\n private breakpointObserver = inject(BreakpointObserver);\n\n isHandset$: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset).pipe(\n map((result) => result.matches),\n shareReplay()\n );\n}\n","<mat-sidenav-container class=\"sidenav-container\">\n <mat-sidenav class=\"sidenav\"\n attr.role=\"navigation\"\n mode=\"side\"\n opened>\n <div class=\"sidenav-content\">\n <div class=\"app-logo\">\n <ng-content select=\"yuv-shell-logo\"></ng-content>\n </div>\n <div class=\"nav-list\">\n <ng-content select=\".shell-nav__nav-list\"></ng-content>\n </div>\n <div class=\"actions\">\n <ng-content select=\".shell-nav__actions\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n <mat-sidenav-content></mat-sidenav-content>\n</mat-sidenav-container>\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostListener, OnInit, effect, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Router } from '@angular/router';\nimport { LocaleDatePipe, TranslateModule, Utils } from '@yuuvis/client-core';\nimport { LightDismissDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS, YuvIconComponent } from '@yuuvis/client-framework/icons';\nimport { YuvListModule } from '@yuuvis/client-framework/list';\nimport { ShellNotificationsService } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-notifications',\n standalone: true,\n imports: [\n CommonModule,\n LightDismissDirective,\n MatIconModule,\n MatButtonModule,\n LocaleDatePipe,\n YuvIconComponent,\n CdkTrapFocus,\n YuvListModule,\n TranslateModule\n ],\n templateUrl: './notifications.component.html',\n styleUrl: './notifications.component.scss'\n})\nexport class NotificationsPageComponent implements OnInit {\n private router = inject(Router);\n private shellNotifications = inject(ShellNotificationsService);\n private elRef = inject(ElementRef);\n\n private _focusedIndex = -1;\n private _notificationIDs: string[] = [];\n notifications = toSignal(this.shellNotifications.shellNotifications$);\n notificationsIdEffect = effect(() => (this._notificationIDs = (this.notifications() || []).map((n) => n.id)));\n\n icons = {\n note: YUV_ICONS.notification\n };\n\n @HostListener('keydown', ['$event']) onKeydown(event: KeyboardEvent) {\n switch (event.code) {\n case 'Delete': {\n if (this._focusedIndex >= 0) this.remove(this._notificationIDs[this._focusedIndex]);\n break;\n }\n }\n }\n\n async itemSelected(idx: number[]) {\n const n = this.shellNotifications.getNotificationById(this._notificationIDs[idx[0]]);\n if (n?.targetRoute) {\n await this.close();\n this.router.navigateByUrl(n.targetRoute, { replaceUrl: true });\n if (n.removeOnTargetRouteNavigated) this.remove(n.id);\n }\n }\n\n itemFocused(index: number) {\n this._focusedIndex = index;\n }\n\n remove(id: string) {\n if (id) this.shellNotifications.remove(id);\n }\n\n removeAll() {\n this.shellNotifications.removeAll();\n }\n\n close() {\n return this.router.navigate([{ outlets: { aside: null } }], {\n replaceUrl: true\n });\n }\n\n ngOnInit(): void {\n this.shellNotifications.markAllAsSeen();\n setTimeout(() => {\n const fc: HTMLElement[] = Utils.getFocusableChildren(this.elRef.nativeElement) as HTMLElement[];\n if (fc.length) fc[0].focus();\n });\n }\n}\n","<div class=\"notifications\" (yuvLightDismiss)=\"close()\" cdkTrapFocus>\n <h2>{{ 'yuv.shell.notifications.title' | translate }}</h2>\n\n @if (notifications()?.length) {\n <yuv-list (itemSelect)=\"itemSelected($event)\" (itemFocus)=\"itemFocused($event)\">\n @for (n of notifications(); track n.id) {\n <div class=\"note {{ n.level }}\" [ngClass]=\"{ withRoute: n.targetRoute }\" yuvListItem>\n <div class=\"icon\"><yuv-icon [svg]=\"n.icon || icons.note\"></yuv-icon></div>\n <div class=\"received\">{{ n.timestamp | localeDate }}</div>\n <div class=\"title\">{{ n.title }}</div>\n <div class=\"description\">{{ n.description }}</div>\n <div class=\"meta\"></div>\n\n <div class=\"actions\">\n <button mat-icon-button (click)=\"remove(n.id)\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n }\n </yuv-list>\n\n <div class=\"actions\">\n <button mat-icon-button [hidden]=\"!notifications()?.length\" class=\"icon secondary\" (click)=\"removeAll()\">\n {{ 'yuv.shell.notifications.button.remove.all' | translate }}<mat-icon>delete</mat-icon>\n </button>\n </div>\n } @else {\n <div class=\"empty\">\n <p>{{ 'yuv.shell.notifications.empty' | translate }}</p>\n </div>\n }\n\n <button mat-icon-button class=\"icon close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</div>\n","import { Route } from '@angular/router';\nimport { NotificationsPageComponent } from './pages/notifications/notifications.component';\n\nexport const clientShellRoutes: Route[] = [\n { path: 'dashboard', loadComponent: () => import('./pages/dashboard/dashboard.component').then((comp) => comp.DashboardPageComponent) },\n { path: 'notifications', component: NotificationsPageComponent, outlet: 'aside' },\n { path: 'settings', loadComponent: () => import('./pages/settings/settings.component').then((comp) => comp.SettingsPageComponent) },\n \n // default route\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n // redirecting route\n { path: '**', redirectTo: '/' }\n];\n","import { AsyncPipe } from '@angular/common';\nimport { Component, HostListener, OnInit, Signal, computed, effect, inject, input, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon, MatIconRegistry } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NavigationEnd, Route, Router, RouterModule } from '@angular/router';\nimport { SwPush } from '@angular/service-worker';\nimport { AuthService, DeviceService, SafeHtmlPipe, TranslateModule, TranslateService, UserRoles, UserService, Utils, YuvUser } from '@yuuvis/client-core';\nimport { YuvMetadataFormDefaultsModule } from '@yuuvis/client-framework/metadata-form-defaults';\nimport {\n App,\n ClientShellConfig,\n CommandPaletteCommand,\n CommandPaletteService,\n ShellNotificationLevel,\n ShellNotificationsService,\n ShellService\n} from '@yuuvis/client-shell-core';\nimport { of } from 'rxjs';\nimport { catchError, filter, map, switchMap, tap } from 'rxjs/operators';\nimport { YuvAppHeaderComponent } from './components/app-header/app-header.component';\nimport { SidebarNavComponent } from './components/sidebar-nav/sidebar-nav.component';\nimport { clientShellRoutes } from './lib.routes';\nimport { ClientShellService } from './services/client-shell/client-shell.service';\nimport { ShellLogoComponent } from './components/shell-logo/shell-logo.component';\n\n/**\n * Base component for the client shell application. In your apps \n * app.component.ts you can use this component as a base component\n * to provide the shell functionality.\n * \n * ```typescript\n * @Component({\n * standalone: true,\n * imports: [ClientShellComponent],\n * selector: 'yuv-root',\n * template: `<yuv-client-shell [apps]=\"apps\" [config]=\"shellConfig\"></yuv-client-shell>`,\n * styleUrl: './app.component.scss'\n * })\n * export class AppComponent {\n * #featureService = inject(FeatureService);\n * apps: App[] = this.#featureService.getAvailableApps(app); \n * }\n * ```\n */\n@Component({\n selector: 'yuv-client-shell',\n standalone: true,\n imports: [\n AsyncPipe,\n TranslateModule,\n RouterModule,\n YuvMetadataFormDefaultsModule,\n YuvAppHeaderComponent,\n SidebarNavComponent,\n MatIconButton,\n MatIcon,\n MatProgressBar,\n MatTooltipModule,\n ShellLogoComponent\n ],\n templateUrl: './client-shell.component.html',\n styleUrls: ['./client-shell.component.scss'],\n providers: [SafeHtmlPipe]\n})\nexport class ClientShellComponent implements OnInit {\n private router = inject(Router);\n private auth = inject(AuthService);\n private userService = inject(UserService);\n #shell = inject(ShellService);\n readonly css = inject(ClientShellService);\n private shellNotifications = inject(ShellNotificationsService);\n private translate = inject(TranslateService);\n private commandPalette = inject(CommandPaletteService);\n readonly #device = inject(DeviceService);\n readonly #swPush = inject(SwPush);\n readonly #matIconRegistryService = inject(MatIconRegistry);\n\n private APP_LOGOUT_EVENT_KEY = 'yuv.app.event.logout';\n\n private _levels: Record<ShellNotificationLevel, number> = {\n info: 0,\n success: 1,\n warning: 2,\n alert: 3\n };\n\n safeHtmlPipe = inject(SafeHtmlPipe);\n\n showUploadOverlay = false;\n busy$ = this.#shell.isBusy$;\n context?: string;\n\n showNotifications = signal<boolean>(false);\n newNotifications: Signal<\n | {\n count: number;\n maxLevel: ShellNotificationLevel;\n }\n | undefined\n > = toSignal(\n this.shellNotifications.shellNotifications$.pipe(\n tap((n) => this.showNotifications.set(n.length > 0)),\n map((notifications) => {\n let maxLevel: ShellNotificationLevel = 'info';\n const count = notifications.filter((n) => !n.seen).length;\n notifications.forEach((n) => (maxLevel = n.level && this._levels[n.level] > this._levels[maxLevel] ? n.level : maxLevel));\n return count > 0 ? { maxLevel, count } : undefined;\n })\n )\n );\n\n @HostListener('document:focusin', ['$event'])\n onFocusChange(event: FocusEvent) {\n // console.log('focused: ', document.activeElement);\n }\n\n @HostListener('dragover', ['$event'])\n onDragOver(event: DragEvent) {\n event.stopPropagation();\n event.preventDefault();\n\n this.showUploadOverlay = !!this._dragContainsFiles(event);\n }\n\n apps = input.required<App[]>();\n navApps = computed(() => this.apps().filter(a => !a.options?.hideFromNav))\n #appsEffect = effect(() => this.#shell.setApps(this.apps()));\n user?: YuvUser;\n checkedForInitialRoute = false;\n enableTenantSwitch = false;\n\n config = input<ClientShellConfig>();\n #shellConfigEffect = effect(() => {\n const cfg = this.config();\n if (cfg) {\n this.#shell.setShellConfig(cfg);\n }\n });\n\n registerIcons = computed(() => {\n const apps = this.apps();\n const config = this.#shell.shellConfig();\n const namespace = config.shellIconNamespace;\n\n // find svg-icons to register and put them in an array\n const customSvgIconsToRegister = apps\n .filter(({ svgIcon }) => !!svgIcon)\n .map(({ svgIcon, iconName }): ClientShellConfig['appIcon'] => ({ svgIcon, iconName }));\n customSvgIconsToRegister.push(config.appIcon);\n\n // register svg-icons\n const allRegistered = customSvgIconsToRegister.every((icon) => {\n return namespace && icon && icon.svgIcon && icon.iconName\n ? !!this.#matIconRegistryService.addSvgIconLiteralInNamespace(namespace, icon.iconName, this.safeHtmlPipe.transform(icon.svgIcon))\n : false;\n });\n\n return allRegistered;\n });\n\n constructor() {\n this.translate.onLangChange.subscribe(() => this._setCommands(true));\n // this.router.events.pipe(\n // // filter(e => e instanceof NavigationStart)\n // ).subscribe((e) => {\n // console.log(e);\n // });\n\n this.router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n map((e) => e as NavigationEnd)\n )\n .subscribe((e: NavigationEnd) => this._processRouterNavigationEnd(e));\n\n this.#device.init();\n\n this.userService.user$.subscribe((user: YuvUser | undefined) => {\n if (user) {\n this.checkedForInitialRoute = !(!this.user || this.user.id !== user.id);\n this.enableTenantSwitch = user.authorities.includes(UserRoles.MULTI_TENANT);\n }\n this.user = user;\n });\n\n window.addEventListener('storage', (evt) => {\n if (evt.key === this.APP_LOGOUT_EVENT_KEY) {\n this.appLogout(true);\n }\n });\n }\n\n getAppTitle(a: App): string {\n return (a.title as string) || '';\n }\n\n openNotifications() {\n this.router.navigate([{}]);\n }\n\n // getNotifications(id: string) {\n // return this.shellNotifications.getNotifications(id);\n // }\n\n private _dragContainsFiles(event: DragEvent): number {\n // do not allow to drop files/images from iframes\n if ((event.relatedTarget as Element)?.tagName.toLowerCase() === 'iframe') return 0;\n return event.dataTransfer ? Array.from(event.dataTransfer.items || []).filter((i) => i.kind === 'file' && i.type).length : 0;\n }\n\n private _setCommands(update?: boolean) {\n const commands: CommandPaletteCommand[] = this.apps().map((a: App, i: number) => ({\n id: `nav.app.${i}`,\n label: this.translate.instant('yuv.shell.cmd.app.open', { title: a.title as string }),\n callback: () => this.router.navigate([a.path])\n }));\n commands.push({\n id: `nav.shell.settings`,\n label: this.translate.instant('yuv.shell.cmd.open.settings'),\n callback: () => this.router.navigate(['settings'])\n });\n commands.push({\n id: `nav.shell.logout`,\n label: this.translate.instant('yuv.shell.cmd.logout'),\n callback: () => this.appLogout()\n });\n\n if (update) this.commandPalette.updateCommands(commands);\n else this.commandPalette.registerCommands(commands);\n }\n\n requestSubscription() {\n if (!this.#swPush.isEnabled) {\n return;\n }\n\n this.#swPush.messages\n .pipe(\n tap((msg) => console.log({ msg })),\n catchError((error) => {\n console.log({ error });\n return of(null);\n })\n )\n .subscribe();\n }\n\n appLogout(triggeredFromOtherTab?: boolean) {\n if (!triggeredFromOtherTab) {\n // send storage event to logout all other open tabs\n window.localStorage.setItem(this.APP_LOGOUT_EVENT_KEY, `${Date.now()}`);\n }\n this.userService.logout('');\n }\n\n private _processRouterNavigationEnd(e: NavigationEnd) {\n if (!this.checkedForInitialRoute) {\n this.checkedForInitialRoute = true;\n // redirect to the page the user logged out from the last time\n // but only if current route is not a deep link\n const ignoreRoutes = ['', 'dashboard', 'index.html'].map((s) => `${Utils.getBaseHref()}${s}`.replace('//', '/'));\n const currentRoute = this.routeWithBaseHref(this.router.routerState.snapshot.url);\n\n if (this.userService.getCurrentUser() && !ignoreRoutes.includes(currentRoute)) {\n // get persisted routes to decide where to redirect the logged in user to\n this.auth\n .getInitialRequestUri()\n .pipe(switchMap((res) => this.auth.resetInitialRequestUri().pipe(map((_) => res))))\n .subscribe((res: { uri: string; timestamp: number }) => {\n const loginRes = res && !ignoreRoutes.includes(res.uri) ? res : null;\n if (loginRes) this.router.navigateByUrl(loginRes.uri);\n });\n }\n }\n }\n\n private routeWithBaseHref(r: string): string {\n return `${Utils.getBaseHref()}${r}`.replace('//', '/');\n }\n\n ngOnInit(): void {\n this.#shell._init();\n clientShellRoutes.forEach((route: Route) => {\n this.router.config.push(route);\n });\n this.router.resetConfig(this.router.config);\n this._setCommands();\n this.requestSubscription();\n }\n}\n","<yuv-metadata-default-templates></yuv-metadata-default-templates>\n\n<!-- gloabl busy indicator -->\n@if (busy$ | async) {\n <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n}\n\n@let iconsRegistered = registerIcons();\n@let showAppHeader = css.appHeader();\n\n@if (showAppHeader) {\n <yuv-app-header> </yuv-app-header>\n}\n\n<yuv-sidebar-nav class=\"shell-nav\">\n @if (iconsRegistered && !showAppHeader) {\n <yuv-shell-logo />\n }\n <!-- </button> -->\n <ul class=\"shell-nav__nav-list\">\n @for (a of navApps(); track a.path) {\n <li class=\"shell-nav__nav-list-item\">\n <button\n class=\"shell-nav__nav-list-item-button\"\n mat-icon-button\n routerLinkActive=\"active\"\n [routerLink]=\"a.path\"\n matTooltipPosition=\"after\"\n [matTooltip]=\"getAppTitle(a)\"\n >\n @if (a.svgIcon) {\n @if (iconsRegistered) {\n <mat-icon [svgIcon]=\"'shellIcons:' + a.iconName\"></mat-icon>\n }\n } @else {\n <mat-icon>{{ a.iconName }}</mat-icon>\n }\n <!--@if (getNotifications(a.id)) {\n <div [ngClass]=\"'badge ' + getNotifications(a.id).maxLevel\">{{ getNotifications(a.id).count }}</div>\n }-->\n </button>\n </li>\n }\n </ul>\n <section class=\"shell-nav__actions\">\n @if (showNotifications()) {\n <button\n class=\"shell-nav__actions-button\"\n mat-icon-button\n [routerLink]=\"[{ outlets: { aside: 'notifications' } }]\"\n routerLinkActive=\"active\"\n matTooltipPosition=\"after\"\n [matTooltip]=\"'yuv.shell.notifications.title' | translate\"\n >\n <mat-icon>notifications</mat-icon>\n @if (newNotifications(); as note) {\n <div class=\"badge {{ note.maxLevel }}\">{{ note.count }}</div>\n }\n </button>\n }\n <button\n class=\"shell-nav__actions-button\"\n mat-icon-button\n [routerLink]=\"['/settings']\"\n routerLinkActive=\"active\"\n [matTooltip]=\"'yuv.shell.settings.title' | translate\"\n >\n <mat-icon>settings</mat-icon>\n </button>\n <button class=\"shell-nav__actions-button\" mat-icon-button (click)=\"appLogout()\" [matTooltip]=\"'yuv.shell.cmd.logout' | translate\">\n <mat-icon>power_settings_new</mat-icon>\n </button>\n </section>\n</yuv-sidebar-nav>\n\n<main id=\"main-shell_content\" aria-label=\"main shell content\" [inert]=\"asideOutlet.isActivated\">\n <router-outlet></router-outlet>\n</main>\n\n<!-- outlet for aside modals like notifications -->\n<div class=\"asideOutlet\" [hidden]=\"!asideOutlet.isActivated\">\n <router-outlet name=\"aside\" #asideOutlet=\"outlet\"></router-outlet>\n</div>\n\n<div id=\"fi\" inert></div>\n","import { Directive, inject, input, OnInit, TemplateRef } from '@angular/core';\nimport { ClientShellService } from '../../services/client-shell/client-shell.service';\n\nexport type AppHeaderSlot = 'actions' | 'search' | 'notifications';\n\n@Directive({\n selector: 'ng-template[yuvAppHeaderSlot]'\n})\nexport class YuvAppHeaderSlotDirective implements OnInit {\n #tplRef = inject(TemplateRef<any>);\n #clientShellService = inject(ClientShellService);\n\n yuvAppHeaderSlot = input.required<AppHeaderSlot>();\n\n ngOnInit(): void {\n this.#clientShellService.addAppHeaderSlot(this.yuvAppHeaderSlot(), this.#tplRef);\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { YuvAppHeaderSlotDirective } from \"./components/app-header/app-header-slot.directive\";\n\n\nconst cmp = [\n YuvAppHeaderSlotDirective,\n]\n\n@NgModule({\n imports: [cmp],\n exports: [cmp]\n })\n export class YuvClientShellModule {}","import { Directive, ElementRef, effect, inject, input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[inert]',\n standalone: true\n})\nexport class InertDirective {\n private elRef = inject(ElementRef);\n\n inert = input<boolean>(false);\n\n constructor() {\n effect(() => {\n const el: HTMLElement = this.elRef.nativeElement as HTMLElement;\n if (this.inert()) el.setAttribute('inert', 'true');\n else el.removeAttribute('inert');\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GridWidget, WidgetGridRegistry } from '@yuuvis/client-framework/widget-grid';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ShellWidgetsService {\n #widgetGridRegistry = inject(WidgetGridRegistry);\n\n #WIDGET_REGISTRY_BUCKET = 'io.yuuvis.shell.widgets';\n\n exposeShellWidgets(widgets: GridWidget<any>[]) {\n this.#widgetGridRegistry.registerGridWidgets(widgets, [this.#WIDGET_REGISTRY_BUCKET]);\n }\n\n concealShellWidgets(ids: string[]) {\n ids.forEach((id) => this.#widgetGridRegistry.removeRegisteredWidget(id));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i5","tap","filter","switchMap","i4"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgCa,sBAAsB,CAAA;AAlBnC,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAM,eAAe,CAAC;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,EAAC,YAAoC,EAAC;AAClE,QAAA,IAAA,CAAA,IAAI,GAAc,IAAI,CAAC,WAAW;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE5C,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAU,KAAK,CAAC;QAE7B,IAAc,CAAA,cAAA,GAAmB,EAAE;QACnC,IAAiB,CAAA,iBAAA,GAAmB,EAAE;AAoDvC;AA/DC,IAAA,MAAM;AACN,IAAA,WAAW;AACX,IAAA,WAAW;AACF,IAAA,UAAU;AAEnB,IAAA,QAAQ;AAQR,IAAA,WAAW,CAAC,MAAoB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,MAAK;AACrE,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,SAAC,CAAC;;AAGJ,IAAA,YAAY,CAAC,MAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC;AACF,aAAA,OAAO,CAAC;YACP,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,iDAAiD,EAAE;gBACjF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;aAC7C;SACF;AACA,aAAA,IAAI,CAAC,SAAS,CAAC,CAAC,SAAkB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACvH,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;YACjB,IAAI,GAAG,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC9C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,SAAC,CAAC;;IAGN,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC;AACF,aAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,SAAS,KAAI;AAChB,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS;AACrB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,SAAC,CAAC;AAEH,aAAA,SAAS;AACT,aAAA,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;AAGpC,IAAA,kBAAkB,CAAC,SAAoB,EAAA;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC;AAC1D,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,OAAO;AACjC,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,UAAU;;IAGzC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;IAGzB,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;;+GA9Df,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCnC,m9CAkCA,EDhBI,MAAA,EAAA,CAAA,6bAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BACZ,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,4TAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,iBAAiB,EACjB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,gJACnB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKT,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAlBlC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,oBAAoB;wBACpB,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,iBAAiB;wBACjB,mBAAmB;wBACnB,eAAe;wBACf,eAAe;wBACf;AACD,qBAAA,EAAA,QAAA,EAAA,m9CAAA,EAAA,MAAA,EAAA,CAAA,6bAAA,CAAA,EAAA;;;AEpBG,MAAO,mBAAoB,SAAQ,qBAAqB,CAAA;AAA9D,IAAA,WAAA,GAAA;;AACE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AACnB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAE5C,IAAE,CAAA,EAAA,GAAG,wBAAwB;QAC7B,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sCAAsC,CAAC;QACtE,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4CAA4C,CAAC;QAClF,IAAQ,CAAA,QAAA,GAAG,CAAC;AACZ,QAAA,IAAA,CAAA,IAAI,GAAG,WAAW,CAAC,YAAY;QAC/B,IAAK,CAAA,KAAA,GAAG,QAAQ;AAChB,QAAA,IAAA,CAAA,KAAK,GAAG,cAAc,CAAC,aAAa;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAkB;AACxB,YAAA,KAAK,EAAE,CAAC,UAAU,CAAC,QAAQ;SAC5B;;AAbD,IAAA,MAAM;AACN,IAAA,OAAO;AAcP,IAAA,YAAY,CAAC,KAAkB,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACrB,QAAA,IAAG,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC;AAC1B,QAAA,MAAM,iBAAiB,GAAmB,IAAI,CAAC;AAC7C,cAAE,IAAI,CAAC,MAAM,CAAC,0BAA0B;cACtC,IAAI,CAAC;AACL,kBAAE,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;kBAC9D,EAAE;AACR,QAAA,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;;AAGvF,IAAA,GAAG,CAAC,KAAkB,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACxC,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,IAAI,EAAE,KAAK,CAAC,CAAC;AACd,SAAA,CAAC;AACF,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAElB;;MCjCY,kBAAkB,CAAA;AAC7B,IAAA,OAAO;AACP,IAAA,MAAM;AAQN,IAAA,WAAA,GAAA;AATA,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAE7B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAmC,EAAE,CAAC;AAE7D,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AACvB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAkB,SAAS,CAAC;AAC/C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;QAGhC,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CACH,kBAAkB,EAAE,EACpB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,aAAa,CAAC;AAE1C,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC5D,SAAC,CAAC;;AAGN,IAAA,cAAc,CAAC,GAAW,EAAA;;QAExB,IAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAAE,YAAA,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;;QAEpE,IAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAAE,YAAA,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAEnD,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,KAAK,OAAO,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;AACvD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;AACxB,YAAA,MAAM,OAAO,GAAG,GAAG,EAAE,OAAqB;YAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC;AACxC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;;;IAI/B,gBAAgB,CAAC,IAAmB,EAAE,GAAqB,EAAA;QACzD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;;AAGlE,IAAA,UAAU,CAAC,IAAc,EAAA;;AAEvB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CACnC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACzC;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAChB,CAAC,IAAI,EAAE,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EACnE,EAAE,CACH;;+GAlDQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb/B,+JAGA,EDMY,MAAA,EAAA,CAAA,mSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIzD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,+JAAA,EAAA,MAAA,EAAA,CAAA,mSAAA,CAAA,EAAA;;;MEO1D,qBAAqB,CAAA;AAChC,IAAA,mBAAmB;AAOnB,IAAA,MAAM;AAEN,IAAA,WAAA,GAAA;AATA,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAEhD,IAAW,CAAA,WAAA,GAA4B,IAAI;QAC3C,IAAU,CAAA,UAAA,GAA4B,IAAI;QAC1C,IAAiB,CAAA,iBAAA,GAA4B,IAAI;AAEjD,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU;AACzC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc;AAG9C,QAAA,YAAY,CAAC,IAAI,CAAC,MAAM;aACrB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE;AAC1C,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI;YAC3C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI;YACzC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,IAAI;AACzD,SAAC,CAAC;;+GAjBK,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBlC,8pBAsBA,EAAA,MAAA,EAAA,CAAA,wiCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDVY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIrF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,8pBAAA,EAAA,MAAA,EAAA,CAAA,wiCAAA,CAAA,EAAA;;;MEMtF,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;AAQU,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEvD,QAAA,IAAA,CAAA,UAAU,GAAwB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CACzF,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,EAC/B,WAAW,EAAE,CACd;AACF;+GAPY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EClBhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,upBAmBA,EDHY,MAAA,EAAA,CAAA,27DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,8BAAE,aAAa,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEjG,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,mBAGV,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,upBAAA,EAAA,MAAA,EAAA,CAAA,27DAAA,CAAA,EAAA;;;MEclG,0BAA0B,CAAA;AAjBvC,IAAA,WAAA,GAAA;AAkBU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACtD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QAE1B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;QAClB,IAAgB,CAAA,gBAAA,GAAa,EAAE;QACvC,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC;AACrE,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE7G,QAAA,IAAA,CAAA,KAAK,GAAG;YACN,IAAI,EAAE,SAAS,CAAC;SACjB;AA6CF;AA3CsC,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,QAAQ,KAAK,CAAC,IAAI;YAChB,KAAK,QAAQ,EAAE;AACb,gBAAA,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC;AAAE,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACnF;;;;IAKN,MAAM,YAAY,CAAC,GAAa,EAAA;AAC9B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,EAAE,WAAW,EAAE;AAClB,YAAA,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAC9D,IAAI,CAAC,CAAC,4BAA4B;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;;;AAIzD,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AAG5B,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,IAAI,EAAE;AAAE,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;;IAG5C,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE;;IAGrC,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE;AAC1D,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;;IAGJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;QACvC,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,EAAE,GAAkB,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAkB;YAC/F,IAAI,EAAE,CAAC,MAAM;AAAE,gBAAA,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC9B,SAAC,CAAC;;+GAvDO,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,sIC9BvC,q8CAqCA,EAAA,MAAA,EAAA,CAAA,04FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpBI,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,2FACrB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,cAAc,mDACd,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,YAAY,EACZ,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,2UACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKN,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAjBtC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,qBAAqB;wBACrB,aAAa;wBACb,eAAe;wBACf,cAAc;wBACd,gBAAgB;wBAChB,YAAY;wBACZ,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,q8CAAA,EAAA,MAAA,EAAA,CAAA,04FAAA,CAAA,EAAA;8BAkBoC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AEzCxB,MAAA,iBAAiB,GAAY;IACxC,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,OAAO,wDAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,EAAE;IACvI,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,0BAA0B,EAAE,MAAM,EAAE,OAAO,EAAE;IACjF,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,uDAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,qBAAqB,CAAC,EAAE;;IAGnI,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;;AAEzD,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG;;;ACiB/B;;;;;;;;;;;;;;;;;;AAkBG;MAqBU,oBAAoB,CAAA;AAI/B,IAAA,MAAM;AAKG,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,uBAAuB;AAqChC,IAAA,aAAa,CAAC,KAAiB,EAAA;;;AAK/B,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;QAEtB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;;AAK3D,IAAA,WAAW;AAMX,IAAA,kBAAkB;AA4BlB,IAAA,WAAA,GAAA;AA/FQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AACpB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACjC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACtD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC7C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,eAAe,CAAC;QAElD,IAAoB,CAAA,oBAAA,GAAG,sBAAsB;AAE7C,QAAA,IAAA,CAAA,OAAO,GAA2C;AACxD,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,KAAK,EAAE;SACR;AAED,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAEnC,IAAiB,CAAA,iBAAA,GAAG,KAAK;AACzB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AAG3B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAU,KAAK,CAAC;AAC1C,QAAA,IAAA,CAAA,gBAAgB,GAMZ,QAAQ,CACV,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAC9CC,KAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EACpD,GAAG,CAAC,CAAC,aAAa,KAAI;YACpB,IAAI,QAAQ,GAA2B,MAAM;AAC7C,YAAA,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM;AACzD,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;AACzH,YAAA,OAAO,KAAK,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,SAAS;SACnD,CAAC,CACH,CACF;AAeD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAS;QAC9B,IAAO,CAAA,OAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5D,IAAsB,CAAA,sBAAA,GAAG,KAAK;QAC9B,IAAkB,CAAA,kBAAA,GAAG,KAAK;QAE1B,IAAM,CAAA,MAAA,GAAG,KAAK,EAAqB;AACnC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,MAAK;AAC/B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;YACzB,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC;;AAEnC,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACxC,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB;;YAG3C,MAAM,wBAAwB,GAAG;iBAC9B,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO;AACjC,iBAAA,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAoC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxF,YAAA,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;YAG7C,MAAM,aAAa,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC,IAAI,KAAI;gBAC5D,OAAO,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;sBAC7C,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,4BAA4B,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;sBAC/H,KAAK;AACX,aAAC,CAAC;AAEF,YAAA,OAAO,aAAa;AACtB,SAAC,CAAC;AAGA,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;;;;;;QAOpE,IAAI,CAAC,MAAM,CAAC;aACT,IAAI,CACHC,QAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,aAAa,CAAC,EACzC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAkB,CAAC;AAE/B,aAAA,SAAS,CAAC,CAAC,CAAgB,KAAK,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;AAEvE,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAEnB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAyB,KAAI;YAC7D,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AACvE,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC;;AAE7E,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,SAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,GAAG,KAAI;YACzC,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,oBAAoB,EAAE;AACzC,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;AAExB,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,CAAM,EAAA;AAChB,QAAA,OAAQ,CAAC,CAAC,KAAgB,IAAI,EAAE;;IAGlC,iBAAiB,GAAA;QACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;;;;;AAOpB,IAAA,kBAAkB,CAAC,KAAgB,EAAA;;QAEzC,IAAK,KAAK,CAAC,aAAyB,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ;AAAE,YAAA,OAAO,CAAC;AAClF,QAAA,OAAO,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;;AAGtH,IAAA,YAAY,CAAC,MAAgB,EAAA;AACnC,QAAA,MAAM,QAAQ,GAA4B,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,MAAM;YAChF,EAAE,EAAE,CAAW,QAAA,EAAA,CAAC,CAAE,CAAA;AAClB,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAe,EAAE,CAAC;AACrF,YAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,SAAA,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC;AACZ,YAAA,EAAE,EAAE,CAAoB,kBAAA,CAAA;YACxB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6BAA6B,CAAC;AAC5D,YAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;AAClD,SAAA,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC;AACZ,YAAA,EAAE,EAAE,CAAkB,gBAAA,CAAA;YACtB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,CAAC;AACrD,YAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,SAAS;AAC/B,SAAA,CAAC;AAEF,QAAA,IAAI,MAAM;AAAE,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;;AACnD,YAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC;;IAGrD,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC3B;;QAGF,IAAI,CAAC,OAAO,CAAC;aACV,IAAI,CACHD,KAAG,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAClC,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AACtB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,SAAC,CAAC;AAEH,aAAA,SAAS,EAAE;;AAGhB,IAAA,SAAS,CAAC,qBAA+B,EAAA;QACvC,IAAI,CAAC,qBAAqB,EAAE;;AAE1B,YAAA,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAA,EAAG,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE,CAAC;;AAEzE,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;;AAGrB,IAAA,2BAA2B,CAAC,CAAgB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;;;AAGlC,YAAA,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAG,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAChH,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;AAEjF,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;;AAE7E,gBAAA,IAAI,CAAC;AACF,qBAAA,oBAAoB;AACpB,qBAAA,IAAI,CAACE,WAAS,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACjF,qBAAA,SAAS,CAAC,CAAC,GAAuC,KAAI;oBACrD,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI;AACpE,oBAAA,IAAI,QAAQ;wBAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;AACvD,iBAAC,CAAC;;;;AAKF,IAAA,iBAAiB,CAAC,CAAS,EAAA;AACjC,QAAA,OAAO,CAAG,EAAA,KAAK,CAAC,WAAW,EAAE,CAAG,EAAA,CAAC,CAAE,CAAA,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;IAGxD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACnB,QAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAY,KAAI;YACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,SAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,mBAAmB,EAAE;;+GA/NjB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAFpB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjE3B,0xFAqFA,EAAA,MAAA,EAAA,CAAA,q8FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDlCI,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,6BAA6B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,aAAa,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAMT,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApBhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EACP,OAAA,EAAA;wBACP,SAAS;wBACT,eAAe;wBACf,YAAY;wBACZ,6BAA6B;wBAC7B,qBAAqB;wBACrB,mBAAmB;wBACnB,aAAa;wBACb,OAAO;wBACP,cAAc;wBACd,gBAAgB;wBAChB;qBACD,EAGU,SAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,0xFAAA,EAAA,MAAA,EAAA,CAAA,q8FAAA,CAAA,EAAA;wDAkDzB,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;gBAM5C,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;ME/GzB,yBAAyB,CAAA;AAHtC,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,EAAC,WAAgB,EAAC;AAClC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEhD,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,QAAQ,EAAiB;AAKnD;AARC,IAAA,OAAO;AACP,IAAA,mBAAmB;IAInB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC;;+GAPvE,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACHD,MAAM,GAAG,GAAG;IACR,yBAAyB;CAC5B;MAMc,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAApB,oBAAoB,EAAA,OAAA,EAAA,CAP/B,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAAzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;gHAOd,oBAAoB,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,GAAG,CAAC;oBACd,OAAO,EAAE,CAAC,GAAG;AACd,iBAAA;;;MCJU,cAAc,CAAA;AAKzB,IAAA,WAAA,GAAA;AAJQ,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAElC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAU,KAAK,CAAC;QAG3B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,EAAE,GAAgB,IAAI,CAAC,KAAK,CAAC,aAA4B;YAC/D,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,gBAAA,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;;AAC7C,gBAAA,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;AAClC,SAAC,CAAC;;+GAVO,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCAY,mBAAmB,CAAA;AAC9B,IAAA,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAEhD,uBAAuB,GAAG,yBAAyB;AAEnD,IAAA,kBAAkB,CAAC,OAA0B,EAAA;AAC3C,QAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;;AAGvF,IAAA,mBAAmB,CAAC,GAAa,EAAA;AAC/B,QAAA,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;;+GAV/D,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACLD;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuuvis/client-shell",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.10",
|
|
4
4
|
"author": "OPTIMAL SYSTEMS GmbH <npm@optimal-systems.de>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
7
7
|
"@angular/common": "^19.2.1",
|
|
8
8
|
"@angular/core": "^19.2.1",
|
|
9
9
|
"@angular/service-worker": "^19.2.1",
|
|
10
|
-
"@yuuvis/client-core": "^2.1.
|
|
11
|
-
"@yuuvis/client-shell-core": "^2.1.
|
|
12
|
-
"@yuuvis/client-framework": "^2.1.
|
|
10
|
+
"@yuuvis/client-core": "^2.1.10",
|
|
11
|
+
"@yuuvis/client-shell-core": "^2.1.10",
|
|
12
|
+
"@yuuvis/client-framework": "^2.1.10"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"tslib": "^2.3.0"
|