@yuuvis/client-shell 0.7.4 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -70,7 +70,7 @@ export class NotificationsPageComponent {
70
70
  });
71
71
  }
72
72
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
73
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NotificationsPageComponent, isStandalone: true, selector: "yuv-notifications", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0, template: "<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\"><yvc-icon [svg]=\"n.icon || icons.note\"></yvc-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 (click)=\"remove(n.id)\">\n <yvc-icon [svg]=\"icons.trash\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n </yuv-list>\n\n <div class=\"actions\">\n <button [hidden]=\"!notifications()?.length\" class=\"icon secondary\" (click)=\"removeAll()\">\n {{ 'yuv.shell.notifications.button.remove.all' | translate }}<yvc-icon [svg]=\"icons.trash\"></yvc-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 class=\"icon close\" (click)=\"close()\">\n <yvc-icon [svg]=\"icons.close\"></yvc-icon>\n </button>\n</div>\n", styles: [":host{height:100%;display:flex}:host .notifications{background-color:var(--panel-background-lightgrey);border-inline-end:1px solid var(--panel-divider-color);height:100%;overflow:hidden;box-sizing:border-box;padding:var(--app-pane-padding);display:grid;grid-template-rows:auto auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"title close\" \"actions actions\" \"list list\";gap:var(--app-pane-padding);max-width:30vw;min-width:300px;box-shadow:8px 0 8px #0000001a;animation:dialogAppear .2s ease-in-out}:host .notifications h2{color:var(--text-color-caption);grid-area:title;margin:0;padding:0;align-self:center;font-size:var(--font-title);font-weight:400;text-overflow:ellipsis;overflow:hidden}:host .notifications .actions{grid-area:actions;display:flex;justify-content:end;--icon-size: 18px}:host .notifications .actions button{border-radius:.4em}:host .notifications .close{grid-area:close;--icon-size: 18px}:host .notifications yuv-list,:host .notifications .empty{grid-area:list}:host .notifications .empty{display:grid;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .notifications .note{--level-color: transparent;display:grid;grid-template-rows:auto auto auto auto;grid-template-columns:auto 1fr auto;grid-template-areas:\"icon received actions\" \"icon title title\" \"icon description description\" \"icon meta meta\";row-gap:calc(var(--app-pane-padding) / 4);column-gap:calc(var(--app-pane-padding) / 2);align-items:center;padding:calc(var(--app-pane-padding) / 2);padding-inline-start:var(--app-pane-padding);margin-block-end:calc(var(--app-pane-padding) / 2);background-color:var(--panel-background);outline:1px solid var(--panel-divider-color);outline-offset:-1px;position:relative;cursor:default}:host .notifications .note.withRoute{cursor:pointer}:host .notifications .note:before{content:\"\";width:4px;position:absolute;left:2px;top:2px;bottom:2px;border-radius:2px;background-color:var(--level-color)}:host .notifications .note.alert{--level-color: var(--color-error)}:host .notifications .note.warning{--level-color: var(--color-warning)}:host .notifications .note.success{--level-color: var(--color-success)}:host .notifications .note:hover,:host .notifications .note[aria-current=true]{background-color:var(--item-focus-background-color)}:host .notifications .note:hover button,:host .notifications .note[aria-current=true] button{opacity:1}:host .notifications .note .icon{grid-area:icon;color:var(--text-color-caption)}:host .notifications .note .title{overflow:hidden;text-overflow:ellipsis;font-weight:700;grid-area:title;color:var(--text-color-body)}:host .notifications .note .description{grid-area:description;overflow:hidden;text-overflow:ellipsis}:host .notifications .note .meta{grid-area:meta}:host .notifications .note .received{grid-area:received;color:var(--text-color-caption)}:host .notifications .note button{grid-area:actions;padding:0;opacity:0}:host .notifications .note button yvc-icon{width:18px;height:18px}@keyframes dialogAppear{0%{opacity:0;transform:translate(calc(var(--app-pane-padding) * -1))}to{opacity:1;transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: LightDismissDirective, selector: "[yuvLightDismiss]", outputs: ["yuvLightDismiss"] }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i2.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["multiselect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NotificationsPageComponent, isStandalone: true, selector: "yuv-notifications", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0, template: "<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\"><yvc-icon [svg]=\"n.icon || icons.note\"></yvc-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 (click)=\"remove(n.id)\">\n <yvc-icon [svg]=\"icons.trash\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n </yuv-list>\n\n <div class=\"actions\">\n <button [hidden]=\"!notifications()?.length\" class=\"icon secondary\" (click)=\"removeAll()\">\n {{ 'yuv.shell.notifications.button.remove.all' | translate }}<yvc-icon [svg]=\"icons.trash\"></yvc-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 class=\"icon close\" (click)=\"close()\">\n <yvc-icon [svg]=\"icons.close\"></yvc-icon>\n </button>\n</div>\n", styles: [":host{height:100%;display:flex}:host .notifications{background-color:var(--panel-background-lightgrey);border-inline-end:1px solid var(--panel-divider-color);height:100%;overflow:hidden;box-sizing:border-box;padding:var(--app-pane-padding);display:grid;grid-template-rows:auto auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"title close\" \"actions actions\" \"list list\";gap:var(--app-pane-padding);max-width:30vw;min-width:300px;box-shadow:8px 0 8px #0000001a;animation:dialogAppear .2s ease-in-out}:host .notifications h2{color:var(--text-color-caption);grid-area:title;margin:0;padding:0;align-self:center;font-size:var(--font-title);font-weight:400;text-overflow:ellipsis;overflow:hidden}:host .notifications .actions{grid-area:actions;display:flex;justify-content:end;--icon-size: 18px}:host .notifications .actions button{border-radius:.4em}:host .notifications .close{grid-area:close;--icon-size: 18px}:host .notifications yuv-list,:host .notifications .empty{grid-area:list}:host .notifications .empty{display:grid;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .notifications .note{--level-color: transparent;display:grid;grid-template-rows:auto auto auto auto;grid-template-columns:auto 1fr auto;grid-template-areas:\"icon received actions\" \"icon title title\" \"icon description description\" \"icon meta meta\";row-gap:calc(var(--app-pane-padding) / 4);column-gap:calc(var(--app-pane-padding) / 2);align-items:center;padding:calc(var(--app-pane-padding) / 2);padding-inline-start:var(--app-pane-padding);margin-block-end:calc(var(--app-pane-padding) / 2);background-color:var(--panel-background);outline:1px solid var(--panel-divider-color);outline-offset:-1px;position:relative;cursor:default}:host .notifications .note.withRoute{cursor:pointer}:host .notifications .note:before{content:\"\";width:4px;position:absolute;left:2px;top:2px;bottom:2px;border-radius:2px;background-color:var(--level-color)}:host .notifications .note.alert{--level-color: var(--color-error)}:host .notifications .note.warning{--level-color: var(--color-warning)}:host .notifications .note.success{--level-color: var(--color-success)}:host .notifications .note:hover,:host .notifications .note[aria-current=true]{background-color:var(--item-focus-background-color)}:host .notifications .note:hover button,:host .notifications .note[aria-current=true] button{opacity:1}:host .notifications .note .icon{grid-area:icon;color:var(--text-color-caption)}:host .notifications .note .title{overflow:hidden;text-overflow:ellipsis;font-weight:700;grid-area:title;color:var(--text-color-body)}:host .notifications .note .description{grid-area:description;overflow:hidden;text-overflow:ellipsis}:host .notifications .note .meta{grid-area:meta}:host .notifications .note .received{grid-area:received;color:var(--text-color-caption)}:host .notifications .note button{grid-area:actions;padding:0;opacity:0}:host .notifications .note button yvc-icon{width:18px;height:18px}@keyframes dialogAppear{0%{opacity:0;transform:translate(calc(var(--app-pane-padding) * -1))}to{opacity:1;transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: LightDismissDirective, selector: "[yuvLightDismiss]", outputs: ["yuvLightDismiss"] }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i2.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["multiselect", "selfHandleSelection", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
74
74
  }
75
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationsPageComponent, decorators: [{
76
76
  type: Component,
@@ -79,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
79
79
  type: HostListener,
80
80
  args: ['keydown', ['$event']]
81
81
  }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtc2hlbGwvc3JjL2xpYi9wYWdlcy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsL3NyYy9saWIvcGFnZXMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBUy9ELE1BQU0sT0FBTywwQkFBMEI7SUFQdkM7UUFRVSxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3ZELFVBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0Isa0JBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQixxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFDeEMsa0JBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdEUsMEJBQXFCLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5RyxVQUFLLEdBQUc7WUFDTixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1lBQ3RCLElBQUksRUFBRSxTQUFTLENBQUMsWUFBWTtTQUM3QixDQUFDO0tBNkNIO0lBM0NzQyxTQUFTLENBQUMsS0FBb0I7UUFDakUsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNkLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDO29CQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNwRixNQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFhO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLENBQUMsNEJBQTRCO2dCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFVO1FBQ2YsSUFBSSxFQUFFO1lBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDMUQsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sRUFBRSxHQUFrQixLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQWtCLENBQUM7WUFDaEcsSUFBSSxFQUFFLENBQUMsTUFBTTtnQkFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTFEVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixzSUNuQnZDLHM4Q0FxQ0EsbW5HRHRCWSxZQUFZLDZIQUFFLHFCQUFxQix1RkFBRSxjQUFjLGtEQUFFLGFBQWEsK0hBQUUsWUFBWSw0SUFBRSxhQUFhLHdJQUFFLGlCQUFpQixxR0FBRSxlQUFlOzs0RkFJbEksMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsQ0FBQzs4QkFvQnpHLFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrVHJhcEZvY3VzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkluaXQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2NhbGVEYXRlUGlwZSwgVHJhbnNsYXRlTW9kdWxlLCBVdGlscyB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgTGlnaHREaXNtaXNzRGlyZWN0aXZlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2NvbW1vbic7XG5pbXBvcnQgeyBZVVZfSUNPTlMgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvaWNvbnMnO1xuaW1wb3J0IHsgTGlzdENvbXBvbmVudCwgTGlzdEl0ZW1EaXJlY3RpdmUgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvbGlzdCc7XG5pbXBvcnQgeyBTaGVsbE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtc2hlbGwtY29yZSc7XG5pbXBvcnQgeyBJQ09OUywgWXZjSWNvbk1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LW5vdGlmaWNhdGlvbnMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMaWdodERpc21pc3NEaXJlY3RpdmUsIExvY2FsZURhdGVQaXBlLCBZdmNJY29uTW9kdWxlLCBDZGtUcmFwRm9jdXMsIExpc3RDb21wb25lbnQsIExpc3RJdGVtRGlyZWN0aXZlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgc2hlbGxOb3RpZmljYXRpb25zID0gaW5qZWN0KFNoZWxsTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICBwcml2YXRlIGVsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHByaXZhdGUgX2ZvY3VzZWRJbmRleCA9IC0xO1xuICBwcml2YXRlIF9ub3RpZmljYXRpb25JRHM6IHN0cmluZ1tdID0gW107XG4gIG5vdGlmaWNhdGlvbnMgPSB0b1NpZ25hbCh0aGlzLnNoZWxsTm90aWZpY2F0aW9ucy5zaGVsbE5vdGlmaWNhdGlvbnMkKTtcbiAgbm90aWZpY2F0aW9uc0lkRWZmZWN0ID0gZWZmZWN0KCgpID0+ICh0aGlzLl9ub3RpZmljYXRpb25JRHMgPSAodGhpcy5ub3RpZmljYXRpb25zKCkgfHwgW10pLm1hcCgobikgPT4gbi5pZCkpKTtcblxuICBpY29ucyA9IHtcbiAgICBjbG9zZTogSUNPTlMuY2xlYXIsXG4gICAgdHJhc2g6IFlVVl9JQ09OUy50cmFzaCxcbiAgICBub3RlOiBZVVZfSUNPTlMubm90aWZpY2F0aW9uXG4gIH07XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgY2FzZSAnRGVsZXRlJzoge1xuICAgICAgICBpZiAodGhpcy5fZm9jdXNlZEluZGV4ID49IDApIHRoaXMucmVtb3ZlKHRoaXMuX25vdGlmaWNhdGlvbklEc1t0aGlzLl9mb2N1c2VkSW5kZXhdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaXRlbVNlbGVjdGVkKGlkeDogbnVtYmVyW10pIHtcbiAgICBjb25zdCBuID0gdGhpcy5zaGVsbE5vdGlmaWNhdGlvbnMuZ2V0Tm90aWZpY2F0aW9uQnlJZCh0aGlzLl9ub3RpZmljYXRpb25JRHNbaWR4WzBdXSk7XG4gICAgaWYgKG4/LnRhcmdldFJvdXRlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNsb3NlKCk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG4udGFyZ2V0Um91dGUsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICAgIGlmIChuLnJlbW92ZU9uVGFyZ2V0Um91dGVOYXZpZ2F0ZWQpIHRoaXMucmVtb3ZlKG4uaWQpO1xuICAgIH1cbiAgfVxuXG4gIGl0ZW1Gb2N1c2VkKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSBpbmRleDtcbiAgfVxuXG4gIHJlbW92ZShpZDogc3RyaW5nKSB7XG4gICAgaWYgKGlkKSB0aGlzLnNoZWxsTm90aWZpY2F0aW9ucy5yZW1vdmUoaWQpO1xuICB9XG5cbiAgcmVtb3ZlQWxsKCkge1xuICAgIHRoaXMuc2hlbGxOb3RpZmljYXRpb25zLnJlbW92ZUFsbCgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgYXNpZGU6IG51bGwgfSB9XSwge1xuICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zaGVsbE5vdGlmaWNhdGlvbnMubWFya0FsbEFzU2VlbigpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZmM6IEhUTUxFbGVtZW50W10gPSBVdGlscy5nZXRGb2N1c2FibGVDaGlsZHJlbih0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBpZiAoZmMubGVuZ3RoKSBmY1swXS5mb2N1cygpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uc1wiICh5dXZMaWdodERpc21pc3MpPVwiY2xvc2UoKVwiIGNka1RyYXBGb2N1cz5cbiAgPGgyPnt7ICd5dXYuc2hlbGwubm90aWZpY2F0aW9ucy50aXRsZScgfCB0cmFuc2xhdGUgfX08L2gyPlxuXG4gIEBpZiAobm90aWZpY2F0aW9ucygpPy5sZW5ndGgpIHtcbiAgICA8eXV2LWxpc3QgKGl0ZW1TZWxlY3QpPVwiaXRlbVNlbGVjdGVkKCRldmVudClcIiAoaXRlbUZvY3VzKT1cIml0ZW1Gb2N1c2VkKCRldmVudClcIj5cbiAgICAgIEBmb3IgKG4gb2Ygbm90aWZpY2F0aW9ucygpOyB0cmFjayBuLmlkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJub3RlIHt7IG4ubGV2ZWwgfX1cIiBbbmdDbGFzc109XCJ7IHdpdGhSb3V0ZTogbi50YXJnZXRSb3V0ZSB9XCIgeXV2TGlzdEl0ZW0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48eXZjLWljb24gW3N2Z109XCJuLmljb24gfHwgaWNvbnMubm90ZVwiPjwveXZjLWljb24+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY2VpdmVkXCI+e3sgbi50aW1lc3RhbXAgfCBsb2NhbGVEYXRlIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgbi50aXRsZSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7IG4uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0YVwiPjwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlbW92ZShuLmlkKVwiPlxuICAgICAgICAgICAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy50cmFzaFwiPjwveXZjLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC95dXYtbGlzdD5cblxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uIFtoaWRkZW5dPVwiIW5vdGlmaWNhdGlvbnMoKT8ubGVuZ3RoXCIgY2xhc3M9XCJpY29uIHNlY29uZGFyeVwiIChjbGljayk9XCJyZW1vdmVBbGwoKVwiPlxuICAgICAgICB7eyAneXV2LnNoZWxsLm5vdGlmaWNhdGlvbnMuYnV0dG9uLnJlbW92ZS5hbGwnIHwgdHJhbnNsYXRlIH19PHl2Yy1pY29uIFtzdmddPVwiaWNvbnMudHJhc2hcIj48L3l2Yy1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJlbXB0eVwiPlxuICAgICAgPHA+e3sgJ3l1di5zaGVsbC5ub3RpZmljYXRpb25zLmVtcHR5JyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxidXR0b24gY2xhc3M9XCJpY29uIGNsb3NlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy5jbG9zZVwiPjwveXZjLWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtc2hlbGwvc3JjL2xpYi9wYWdlcy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsL3NyYy9saWIvcGFnZXMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBUy9ELE1BQU0sT0FBTywwQkFBMEI7SUFQ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Q0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTFEVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixzSUNuQnZDLHM4Q0FxQ0EsbW5HRHRCWSxZQUFZLDZIQUFFLHFCQUFxQix1RkFBRSxjQUFjLGtEQUFFLGFBQWEsK0hBQUUsWUFBWSw0SUFBRSxhQUFhLCtKQUFFLGlCQUFpQixxR0FBRSxlQUFlOzs0RkFJbEksMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsQ0FBQzs4QkFvQnpHLFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrVHJhcEZvY3VzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkluaXQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2NhbGVEYXRlUGlwZSwgVHJhbnNsYXRlTW9kdWxlLCBVdGlscyB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgTGlnaHREaXNtaXNzRGlyZWN0aXZlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2NvbW1vbic7XG5pbXBvcnQgeyBZVVZfSUNPTlMgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvaWNvbnMnO1xuaW1wb3J0IHsgTGlzdENvbXBvbmVudCwgTGlzdEl0ZW1EaXJlY3RpdmUgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvbGlzdCc7XG5pbXBvcnQgeyBTaGVsbE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtc2hlbGwtY29yZSc7XG5pbXBvcnQgeyBJQ09OUywgWXZjSWNvbk1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LW5vdGlmaWNhdGlvbnMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMaWdodERpc21pc3NEaXJlY3RpdmUsIExvY2FsZURhdGVQaXBlLCBZdmNJY29uTW9kdWxlLCBDZGtUcmFwRm9jdXMsIExpc3RDb21wb25lbnQsIExpc3RJdGVtRGlyZWN0aXZlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgc2hlbGxOb3RpZmljYXRpb25zID0gaW5qZWN0KFNoZWxsTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICBwcml2YXRlIGVsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHByaXZhdGUgX2ZvY3VzZWRJbmRleCA9IC0xO1xuICBwcml2YXRlIF9ub3RpZmljYXRpb25JRHM6IHN0cmluZ1tdID0gW107XG4gIG5vdGlmaWNhdGlvbnMgPSB0b1NpZ25hbCh0aGlzLnNoZWxsTm90aWZpY2F0aW9ucy5zaGVsbE5vdGlmaWNhdGlvbnMkKTtcbiAgbm90aWZpY2F0aW9uc0lkRWZmZWN0ID0gZWZmZWN0KCgpID0+ICh0aGlzLl9ub3RpZmljYXRpb25JRHMgPSAodGhpcy5ub3RpZmljYXRpb25zKCkgfHwgW10pLm1hcCgobikgPT4gbi5pZCkpKTtcblxuICBpY29ucyA9IHtcbiAgICBjbG9zZTogSUNPTlMuY2xlYXIsXG4gICAgdHJhc2g6IFlVVl9JQ09OUy50cmFzaCxcbiAgICBub3RlOiBZVVZfSUNPTlMubm90aWZpY2F0aW9uXG4gIH07XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgY2FzZSAnRGVsZXRlJzoge1xuICAgICAgICBpZiAodGhpcy5fZm9jdXNlZEluZGV4ID49IDApIHRoaXMucmVtb3ZlKHRoaXMuX25vdGlmaWNhdGlvbklEc1t0aGlzLl9mb2N1c2VkSW5kZXhdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaXRlbVNlbGVjdGVkKGlkeDogbnVtYmVyW10pIHtcbiAgICBjb25zdCBuID0gdGhpcy5zaGVsbE5vdGlmaWNhdGlvbnMuZ2V0Tm90aWZpY2F0aW9uQnlJZCh0aGlzLl9ub3RpZmljYXRpb25JRHNbaWR4WzBdXSk7XG4gICAgaWYgKG4/LnRhcmdldFJvdXRlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNsb3NlKCk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG4udGFyZ2V0Um91dGUsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICAgIGlmIChuLnJlbW92ZU9uVGFyZ2V0Um91dGVOYXZpZ2F0ZWQpIHRoaXMucmVtb3ZlKG4uaWQpO1xuICAgIH1cbiAgfVxuXG4gIGl0ZW1Gb2N1c2VkKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSBpbmRleDtcbiAgfVxuXG4gIHJlbW92ZShpZDogc3RyaW5nKSB7XG4gICAgaWYgKGlkKSB0aGlzLnNoZWxsTm90aWZpY2F0aW9ucy5yZW1vdmUoaWQpO1xuICB9XG5cbiAgcmVtb3ZlQWxsKCkge1xuICAgIHRoaXMuc2hlbGxOb3RpZmljYXRpb25zLnJlbW92ZUFsbCgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgYXNpZGU6IG51bGwgfSB9XSwge1xuICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zaGVsbE5vdGlmaWNhdGlvbnMubWFya0FsbEFzU2VlbigpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZmM6IEhUTUxFbGVtZW50W10gPSBVdGlscy5nZXRGb2N1c2FibGVDaGlsZHJlbih0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBpZiAoZmMubGVuZ3RoKSBmY1swXS5mb2N1cygpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uc1wiICh5dXZMaWdodERpc21pc3MpPVwiY2xvc2UoKVwiIGNka1RyYXBGb2N1cz5cbiAgPGgyPnt7ICd5dXYuc2hlbGwubm90aWZpY2F0aW9ucy50aXRsZScgfCB0cmFuc2xhdGUgfX08L2gyPlxuXG4gIEBpZiAobm90aWZpY2F0aW9ucygpPy5sZW5ndGgpIHtcbiAgICA8eXV2LWxpc3QgKGl0ZW1TZWxlY3QpPVwiaXRlbVNlbGVjdGVkKCRldmVudClcIiAoaXRlbUZvY3VzKT1cIml0ZW1Gb2N1c2VkKCRldmVudClcIj5cbiAgICAgIEBmb3IgKG4gb2Ygbm90aWZpY2F0aW9ucygpOyB0cmFjayBuLmlkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJub3RlIHt7IG4ubGV2ZWwgfX1cIiBbbmdDbGFzc109XCJ7IHdpdGhSb3V0ZTogbi50YXJnZXRSb3V0ZSB9XCIgeXV2TGlzdEl0ZW0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48eXZjLWljb24gW3N2Z109XCJuLmljb24gfHwgaWNvbnMubm90ZVwiPjwveXZjLWljb24+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY2VpdmVkXCI+e3sgbi50aW1lc3RhbXAgfCBsb2NhbGVEYXRlIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgbi50aXRsZSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7IG4uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0YVwiPjwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlbW92ZShuLmlkKVwiPlxuICAgICAgICAgICAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy50cmFzaFwiPjwveXZjLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC95dXYtbGlzdD5cblxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uIFtoaWRkZW5dPVwiIW5vdGlmaWNhdGlvbnMoKT8ubGVuZ3RoXCIgY2xhc3M9XCJpY29uIHNlY29uZGFyeVwiIChjbGljayk9XCJyZW1vdmVBbGwoKVwiPlxuICAgICAgICB7eyAneXV2LnNoZWxsLm5vdGlmaWNhdGlvbnMuYnV0dG9uLnJlbW92ZS5hbGwnIHwgdHJhbnNsYXRlIH19PHl2Yy1pY29uIFtzdmddPVwiaWNvbnMudHJhc2hcIj48L3l2Yy1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJlbXB0eVwiPlxuICAgICAgPHA+e3sgJ3l1di5zaGVsbC5ub3RpZmljYXRpb25zLmVtcHR5JyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxidXR0b24gY2xhc3M9XCJpY29uIGNsb3NlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy5jbG9zZVwiPjwveXZjLWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -174,7 +174,7 @@ class NotificationsPageComponent {
174
174
  });
175
175
  }
176
176
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
177
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NotificationsPageComponent, isStandalone: true, selector: "yuv-notifications", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0, template: "<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\"><yvc-icon [svg]=\"n.icon || icons.note\"></yvc-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 (click)=\"remove(n.id)\">\n <yvc-icon [svg]=\"icons.trash\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n </yuv-list>\n\n <div class=\"actions\">\n <button [hidden]=\"!notifications()?.length\" class=\"icon secondary\" (click)=\"removeAll()\">\n {{ 'yuv.shell.notifications.button.remove.all' | translate }}<yvc-icon [svg]=\"icons.trash\"></yvc-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 class=\"icon close\" (click)=\"close()\">\n <yvc-icon [svg]=\"icons.close\"></yvc-icon>\n </button>\n</div>\n", styles: [":host{height:100%;display:flex}:host .notifications{background-color:var(--panel-background-lightgrey);border-inline-end:1px solid var(--panel-divider-color);height:100%;overflow:hidden;box-sizing:border-box;padding:var(--app-pane-padding);display:grid;grid-template-rows:auto auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"title close\" \"actions actions\" \"list list\";gap:var(--app-pane-padding);max-width:30vw;min-width:300px;box-shadow:8px 0 8px #0000001a;animation:dialogAppear .2s ease-in-out}:host .notifications h2{color:var(--text-color-caption);grid-area:title;margin:0;padding:0;align-self:center;font-size:var(--font-title);font-weight:400;text-overflow:ellipsis;overflow:hidden}:host .notifications .actions{grid-area:actions;display:flex;justify-content:end;--icon-size: 18px}:host .notifications .actions button{border-radius:.4em}:host .notifications .close{grid-area:close;--icon-size: 18px}:host .notifications yuv-list,:host .notifications .empty{grid-area:list}:host .notifications .empty{display:grid;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .notifications .note{--level-color: transparent;display:grid;grid-template-rows:auto auto auto auto;grid-template-columns:auto 1fr auto;grid-template-areas:\"icon received actions\" \"icon title title\" \"icon description description\" \"icon meta meta\";row-gap:calc(var(--app-pane-padding) / 4);column-gap:calc(var(--app-pane-padding) / 2);align-items:center;padding:calc(var(--app-pane-padding) / 2);padding-inline-start:var(--app-pane-padding);margin-block-end:calc(var(--app-pane-padding) / 2);background-color:var(--panel-background);outline:1px solid var(--panel-divider-color);outline-offset:-1px;position:relative;cursor:default}:host .notifications .note.withRoute{cursor:pointer}:host .notifications .note:before{content:\"\";width:4px;position:absolute;left:2px;top:2px;bottom:2px;border-radius:2px;background-color:var(--level-color)}:host .notifications .note.alert{--level-color: var(--color-error)}:host .notifications .note.warning{--level-color: var(--color-warning)}:host .notifications .note.success{--level-color: var(--color-success)}:host .notifications .note:hover,:host .notifications .note[aria-current=true]{background-color:var(--item-focus-background-color)}:host .notifications .note:hover button,:host .notifications .note[aria-current=true] button{opacity:1}:host .notifications .note .icon{grid-area:icon;color:var(--text-color-caption)}:host .notifications .note .title{overflow:hidden;text-overflow:ellipsis;font-weight:700;grid-area:title;color:var(--text-color-body)}:host .notifications .note .description{grid-area:description;overflow:hidden;text-overflow:ellipsis}:host .notifications .note .meta{grid-area:meta}:host .notifications .note .received{grid-area:received;color:var(--text-color-caption)}:host .notifications .note button{grid-area:actions;padding:0;opacity:0}:host .notifications .note button yvc-icon{width:18px;height:18px}@keyframes dialogAppear{0%{opacity:0;transform:translate(calc(var(--app-pane-padding) * -1))}to{opacity:1;transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: LightDismissDirective, selector: "[yuvLightDismiss]", outputs: ["yuvLightDismiss"] }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i2$1.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["multiselect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NotificationsPageComponent, isStandalone: true, selector: "yuv-notifications", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0, template: "<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\"><yvc-icon [svg]=\"n.icon || icons.note\"></yvc-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 (click)=\"remove(n.id)\">\n <yvc-icon [svg]=\"icons.trash\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n </yuv-list>\n\n <div class=\"actions\">\n <button [hidden]=\"!notifications()?.length\" class=\"icon secondary\" (click)=\"removeAll()\">\n {{ 'yuv.shell.notifications.button.remove.all' | translate }}<yvc-icon [svg]=\"icons.trash\"></yvc-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 class=\"icon close\" (click)=\"close()\">\n <yvc-icon [svg]=\"icons.close\"></yvc-icon>\n </button>\n</div>\n", styles: [":host{height:100%;display:flex}:host .notifications{background-color:var(--panel-background-lightgrey);border-inline-end:1px solid var(--panel-divider-color);height:100%;overflow:hidden;box-sizing:border-box;padding:var(--app-pane-padding);display:grid;grid-template-rows:auto auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"title close\" \"actions actions\" \"list list\";gap:var(--app-pane-padding);max-width:30vw;min-width:300px;box-shadow:8px 0 8px #0000001a;animation:dialogAppear .2s ease-in-out}:host .notifications h2{color:var(--text-color-caption);grid-area:title;margin:0;padding:0;align-self:center;font-size:var(--font-title);font-weight:400;text-overflow:ellipsis;overflow:hidden}:host .notifications .actions{grid-area:actions;display:flex;justify-content:end;--icon-size: 18px}:host .notifications .actions button{border-radius:.4em}:host .notifications .close{grid-area:close;--icon-size: 18px}:host .notifications yuv-list,:host .notifications .empty{grid-area:list}:host .notifications .empty{display:grid;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .notifications .note{--level-color: transparent;display:grid;grid-template-rows:auto auto auto auto;grid-template-columns:auto 1fr auto;grid-template-areas:\"icon received actions\" \"icon title title\" \"icon description description\" \"icon meta meta\";row-gap:calc(var(--app-pane-padding) / 4);column-gap:calc(var(--app-pane-padding) / 2);align-items:center;padding:calc(var(--app-pane-padding) / 2);padding-inline-start:var(--app-pane-padding);margin-block-end:calc(var(--app-pane-padding) / 2);background-color:var(--panel-background);outline:1px solid var(--panel-divider-color);outline-offset:-1px;position:relative;cursor:default}:host .notifications .note.withRoute{cursor:pointer}:host .notifications .note:before{content:\"\";width:4px;position:absolute;left:2px;top:2px;bottom:2px;border-radius:2px;background-color:var(--level-color)}:host .notifications .note.alert{--level-color: var(--color-error)}:host .notifications .note.warning{--level-color: var(--color-warning)}:host .notifications .note.success{--level-color: var(--color-success)}:host .notifications .note:hover,:host .notifications .note[aria-current=true]{background-color:var(--item-focus-background-color)}:host .notifications .note:hover button,:host .notifications .note[aria-current=true] button{opacity:1}:host .notifications .note .icon{grid-area:icon;color:var(--text-color-caption)}:host .notifications .note .title{overflow:hidden;text-overflow:ellipsis;font-weight:700;grid-area:title;color:var(--text-color-body)}:host .notifications .note .description{grid-area:description;overflow:hidden;text-overflow:ellipsis}:host .notifications .note .meta{grid-area:meta}:host .notifications .note .received{grid-area:received;color:var(--text-color-caption)}:host .notifications .note button{grid-area:actions;padding:0;opacity:0}:host .notifications .note button yvc-icon{width:18px;height:18px}@keyframes dialogAppear{0%{opacity:0;transform:translate(calc(var(--app-pane-padding) * -1))}to{opacity:1;transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: LightDismissDirective, selector: "[yuvLightDismiss]", outputs: ["yuvLightDismiss"] }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i2$1.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["multiselect", "selfHandleSelection", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
178
178
  }
179
179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationsPageComponent, decorators: [{
180
180
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-shell.mjs","sources":["../../../../../libs/yuuvis/client-shell/src/lib/directives/inert.directive.ts","../../../../../libs/yuuvis/client-shell/src/lib/pages/dashboard/dashboard.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/pages/dashboard/dashboard.component.html","../../../../../libs/yuuvis/client-shell/src/lib/pages/settings/settings.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/pages/settings/settings.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/pages/web-share-target/web-share-target.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/pages/web-share-target/web-share-target.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-logo/app-logo.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/components/app-logo/app-logo.component.html","../../../../../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/yuuvis-client-shell.ts"],"sourcesContent":["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 { Component } from '@angular/core';\n\n@Component({\n selector: 'yuv-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss']\n})\nexport class DashboardPageComponent {}\n","yuuvis Momentum\n","import { Component, inject, OnInit, Signal, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ConfigService, TranslateModule, TranslateService, UserService, YuvConfigLanguages, YuvUser } from '@yuuvis/client-core';\n\nimport { CommonModule, DOCUMENT } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { ShellAppSettingProperty, ShellAppSettings, ShellService } from '@yuuvis/client-shell-core';\nimport { map, Observable } from 'rxjs';\n\n@Component({\n selector: 'yuv-settings',\n standalone: true,\n imports: [CommonModule, TranslateModule, ReactiveFormsModule],\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss']\n})\nexport class SettingsPageComponent implements OnInit {\n private userService = inject(UserService);\n private config = inject(ConfigService);\n public translate = inject(TranslateService);\n private shell = inject(ShellService);\n readonly document = inject(DOCUMENT);\n\n #fb = inject(FormBuilder);\n\n clientLocales = signal<YuvConfigLanguages[]>([]);\n clientVersion = signal<string | undefined>(undefined);\n user: Signal<YuvUser | undefined> = toSignal(this.userService.user$);\n appSettingForms$: Observable<\n {\n appID: string;\n label: string;\n formControls: ShellAppSettingProperty[];\n form: FormGroup;\n }[]\n > = this.shell.appSettings$.pipe(\n map((settings: ShellAppSettings[]) =>\n settings.map((e) => {\n const x: any = {};\n const fcn: ShellAppSettingProperty[] = e.properties.map((p) => ({\n label: this.translate.instant(p.label) || p.label,\n name: p.name,\n type: p.type\n }));\n e.properties.forEach((p) => {\n x[p.name] = [p.value];\n });\n return {\n appID: e.appID,\n label: e.label,\n formControls: fcn,\n form: this.#fb.group(x)\n };\n })\n )\n );\n\n saveAppSettings(appID: string, form: FormGroup) {\n this.userService\n .saveUserSettings({\n clientAppSettings: {\n [appID]: form.value\n }\n })\n .subscribe({\n next: () => {\n form.markAsPristine();\n },\n error: (err) => {\n console.error('Error saving app settings', err);\n }\n });\n }\n\n changeClientLocale(iso: string) {\n this.userService.changeClientLocale(iso);\n }\n\n ngOnInit(): void {\n this.clientVersion.set(this.document.body.getAttribute('data-version') ?? 'dev');\n this.clientLocales.set(this.config.getClientLocales());\n }\n}\n","<header>\n <h1>{{ 'yuv.shell.settings.title' | translate }}</h1>\n <h4>{{ 'yuc.shell.settings.client.version' | translate }}: {{ clientVersion() }}</h4>\n</header>\n\n\n<main>@if (user()) {\n <section class=\"user\">\n <!-- <yuv-user-avatar class=\"background\" [user]=\"user()\"></yuv-user-avatar> -->\n <div class=\"user\">\n <div class=\"meta uname\">{{ user()!.username }}</div>\n <h2>{{ user()!.title }}</h2>\n <div class=\"meta uemail\">{{ user()!.email }}</div>\n <div class=\"meta utenant\">{{ 'yuv.shell.settings.tenant' | translate }}: {{ user()!.tenant }}</div>\n </div>\n </section>\n}\n <!-- language -->\n <section yuvOfflineDisabled>\n <div class=\"label\" translate>yuv.shell.settings.language</div>\n <div class=\"value buttons\">\n @for (locale of clientLocales(); track locale.iso) {\n <button class=\"toggle secondary\" (click)=\"changeClientLocale(locale.iso)\" [ngClass]=\"{ active: translate.currentLang === locale.iso }\">\n {{ locale.label }}\n </button>\n }\n </div>\n </section>\n\n <!-- app settings -->\n <!-- TODO: activate one feature is refined -->\n <!-- @for (c of appSettingForms$ | async; track $index) {\n <section>\n {{ c.label }}\n <form [formGroup]=\"c.form\" (ngSubmit)=\"saveAppSettings(c.appID, c.form)\">\n @for (n of c.formControls; track $index) {\n <label\n >{{ n.label }}\n\n @switch (n.type) {\n @case ('string') {\n <input type=\"text\" [formControlName]=\"n.name\" />\n }\n @case ('number') {\n <input type=\"number\" [formControlName]=\"n.name\" />\n }\n }\n </label>\n }\n <button [ngClass]=\"{ hideen: c.form.untouched }\" [disabled]=\"c.form.invalid\">Save</button>\n </form>\n </section>\n } -->\n</main>\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 { Router } from '@angular/router';\nimport { LocaleDatePipe, TranslateModule, Utils } from '@yuuvis/client-core';\nimport { LightDismissDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';\nimport { ShellNotificationsService } from '@yuuvis/client-shell-core';\nimport { ICONS, YvcIconModule } from '@yuuvis/components/icon';\n\n@Component({\n selector: 'yuv-notifications',\n standalone: true,\n imports: [CommonModule, LightDismissDirective, LocaleDatePipe, YvcIconModule, CdkTrapFocus, ListComponent, ListItemDirective, TranslateModule],\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 close: ICONS.clear,\n trash: YUV_ICONS.trash,\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\"><yvc-icon [svg]=\"n.icon || icons.note\"></yvc-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 (click)=\"remove(n.id)\">\n <yvc-icon [svg]=\"icons.trash\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n </yuv-list>\n\n <div class=\"actions\">\n <button [hidden]=\"!notifications()?.length\" class=\"icon secondary\" (click)=\"removeAll()\">\n {{ 'yuv.shell.notifications.button.remove.all' | translate }}<yvc-icon [svg]=\"icons.trash\"></yvc-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 class=\"icon close\" (click)=\"close()\">\n <yvc-icon [svg]=\"icons.close\"></yvc-icon>\n </button>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'yuv-web-share-target',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './web-share-target.component.html',\n styleUrl: './web-share-target.component.scss'\n})\nexport class WebShareTargetPageComponent {\n\n constructor() {\n navigator.serviceWorker.onmessage = (e) => {\n const file = e.data.file;\n\n console.log(file);\n \n }\n }\n}\n","<p>web-share-target works!</p>\n","import { Route } from '@angular/router';\nimport { DashboardPageComponent } from './pages/dashboard/dashboard.component';\nimport { SettingsPageComponent } from './pages/settings/settings.component';\nimport { NotificationsPageComponent } from './pages/notifications/notifications.component';\nimport { WebShareTargetPageComponent } from './pages/web-share-target/web-share-target.component';\n\nexport const clientShellRoutes: Route[] = [\n { path: 'dashboard', component: DashboardPageComponent },\n { path: 'notifications', component: NotificationsPageComponent, outlet: 'aside' },\n { path: 'settings', component: SettingsPageComponent },\n { path: 'web-share-target', component: WebShareTargetPageComponent },\n // default route\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n // redirecting route\n { path: '**', redirectTo: '/' }\n];\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, HostListener, OnInit, Signal, effect, inject, input, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Route, Router, RouterModule } from '@angular/router';\nimport { SwPush } from '@angular/service-worker';\nimport { AuthService, DeviceService, TranslateModule, TranslateService, UserRoles, UserService, Utils, YuvUser } from '@yuuvis/client-core';\nimport { MetadataDefaultTemplatesComponent } from '@yuuvis/client-framework/metadata-form';\nimport {\n App,\n ClientShellConfig,\n CommandPaletteCommand,\n CommandPaletteService,\n ShellNotificationLevel,\n ShellNotificationsService,\n ShellService\n} from '@yuuvis/client-shell-core';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { of } from 'rxjs';\nimport { catchError, filter, map, switchMap, tap } from 'rxjs/operators';\nimport { clientShellRoutes } from './lib.routes';\n\n@Component({\n selector: 'yuv-client-shell',\n standalone: true,\n imports: [NgIf, AsyncPipe, TranslateModule, RouterModule, YvcIconModule, MetadataDefaultTemplatesComponent],\n templateUrl: './client-shell.component.html',\n styleUrls: ['./client-shell.component.scss']\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 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\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 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 #appsEffect = effect(() => this.#shell.setAppBaseRoutes(this.apps()));\n user?: YuvUser;\n checkedForInitialRoute = false;\n enableTenantSwitch = false;\n\n config = input<ClientShellConfig>();\n #shellConfigEffect = effect(\n () => {\n const cfg = this.config();\n if (cfg) {\n this.#shell.setShellConfig(cfg);\n }\n },\n {\n allowSignalWrites: true\n }\n );\n shellConfig = this.#shell.shellConfig;\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 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 console.log('Notification is not enabled.');\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<!-- <yuv-focus-indicator /> -->\n\n<!-- gloabl busy indicator -->\n@if (busy$ | async) {\n <div class=\"yuv-loader-linear\"></div>\n}\n<nav class=\"apps\" [inert]=\"asideOutlet.isActivated\" [attr.aria-label]=\"'yuv.shell.naviagtion.aria.label' | translate\">\n <div class=\"app-icon\">\n <button routerLink=\"/\" routerLinkActive=\"active\" [attr.aria-label]=\"'yuv.shell.logo.aria.label' | translate\">\n <yvc-icon [svg]=\"shellConfig().icons!.appIcon!\"></yvc-icon>\n </button>\n </div>\n <ul class=\"apps\">\n @for (a of apps(); track a.path) {\n <li>\n <button routerLinkActive=\"active\" [routerLink]=\"a.path\" title=\"{{ a.title }}\">\n <yvc-icon [svg]=\"a.icon\" title=\"{{ a.title }}\" *ngIf=\"a.icon\"></yvc-icon>\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\n <section class=\"actions\">\n @if (showNotifications()) {\n <button [routerLink]=\"[{ outlets: { aside: 'notifications' } }]\" routerLinkActive=\"active\" title=\"{{ 'yuv.shell.notifications.title' | translate }}\">\n <yvc-icon [svg]=\"shellConfig().icons!.notifications!\"></yvc-icon>\n @if (newNotifications(); as note) {\n <div class=\"badge {{ note.maxLevel }}\">{{ note.count }}</div>\n }\n </button>\n }\n <button [routerLink]=\"['/settings']\" routerLinkActive=\"active\" title=\"{{ 'yuv.shell.settings.title' | translate }}\">\n <yvc-icon [svg]=\"shellConfig().icons!.settings!\"></yvc-icon>\n </button>\n <button (click)=\"appLogout()\" title=\"{{ 'yuv.shell.cmd.logout' | translate }}\"><yvc-icon [svg]=\"shellConfig().icons!.logout!\"></yvc-icon></button>\n </section>\n</nav>\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 { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { YvcIconModule } from '@yuuvis/components/icon';\n\n@Component({\n selector: 'yuv-app-logo',\n standalone: true,\n imports: [CommonModule, YvcIconModule],\n templateUrl: './app-logo.component.html',\n styleUrl: './app-logo.component.scss'\n})\nexport class AppLogoComponent {\n icon = input<string>();\n label = input.required<string>();\n}\n","@let ico = icon();\n@if(ico){\n<yvc-icon [svg]=\"ico\"></yvc-icon>\n}<span class=\"label\">{{label()}}</span>","import { Component, inject, OnInit, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { YvcOverlayRef } from '@yuuvis/components/overlay';\nimport { DmsObject, DmsService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { FlavorChipComponent } from '@yuuvis/client-framework/object-flavor';\nimport { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { Observable, tap } from 'rxjs';\n\n@Component({\n selector: 'yuv-manage-flavors',\n standalone: true,\n imports: [CommonModule, ListComponent, BusyOverlayDirective, TranslateModule, ListItemDirective, FlavorChipComponent],\n templateUrl: './manage-flavors.component.html',\n styleUrl: './manage-flavors.component.scss'\n})\nexport class ManageFlavorsComponent implements OnInit {\n #overlayRef = inject(YvcOverlayRef);\n #shell = inject(ShellService);\n #dmsService = inject(DmsService);\n item: DmsObject = this.#overlayRef.data;\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.#overlayRef.close();\n this.busy.set(false);\n });\n }\n\n removeFlavor(flavor: ObjectFlavor) {\n this.busy.set(true);\n this.#shell.removeObjectFlavor(this.item, flavor).subscribe(() => {\n this.#overlayRef.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 if (this.#overlayRef) this.#overlayRef.close();\n }\n\n ngOnInit() {\n this.#refreshDmsObject();\n }\n}\n","<header>\n <h2>{{ 'yuv.shell.action.manage-flavors.title' | translate }}</h2>\n <p>{{ 'yuv.shell.action.manage-flavors.text' | translate }}</p>\n</header>\n<main [yuvBusyOverlay]=\"busy()\">\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 class=\"secondary\" (click)=\"removeFlavor(f)\">{{ 'yuv.shell.action.manage-flavors.applicable.button.remove' | translate }}</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 class=\"secondary\" (click)=\"applyFlavor(f)\">{{ 'yuv.shell.action.manage-flavors.applied.button.apply' | translate }}</button>\n </li>\n }\n </ul>\n }\n</main>\n<footer>\n <button class=\"secondary\" (click)=\"cancel()\">{{ 'yuv.shell.action.manage-flavors.button.cancel' | translate }}</button>\n</footer>\n","import { inject } from '@angular/core';\nimport { DmsObject, TranslateService } from '@yuuvis/client-core';\nimport { AbstractContextAction, Action, ACTION_ICON, ActionSupport, BASE_ACTION, SelectionRange } from '@yuuvis/client-framework/actions';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { YvcOverlayService } from '@yuuvis/components/overlay';\nimport { Observable, of } from 'rxjs';\nimport { ManageFlavorsComponent } from './manage-flavors.component';\n\nexport class ManageFlavorsAction extends AbstractContextAction implements Action {\n #shell = inject(ShellService);\n #overlay = inject(YvcOverlayService);\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 pattern: '*'\n };\n\n isExecutable(items: DmsObject[]) {\n const item = items[0];\n return of(item && !!item.permissions?.writeIndexData && !!item.content && this.#shell.getApplicableObjectFlavors(item.content.mimeType).length > 0);\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n this.#overlay.open(ManageFlavorsComponent, items[0], {\n width: '400px',\n maxWidth: '90vw',\n });\n return of(true);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","map","i1","i2","tap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;MAOa,cAAc,CAAA;AAKzB,IAAA,WAAA,GAAA;AAJQ,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAEnC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QAG5B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,EAAE,GAAgB,IAAI,CAAC,KAAK,CAAC,aAA4B,CAAC;YAChE,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,gBAAA,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;;AAC9C,gBAAA,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;KACJ;+GAXU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;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,EAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCCY,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,qDCPnC,mBACA,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDMa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA,CAAA;;;MEad,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;AAQU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAErC,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAE1B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAuB,EAAE,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;QACtD,IAAI,CAAA,IAAA,GAAgC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACrE,IAAgB,CAAA,gBAAA,GAOZ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAC9B,GAAG,CAAC,CAAC,QAA4B,KAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACjB,MAAM,CAAC,GAAQ,EAAE,CAAC;AAClB,YAAA,MAAM,GAAG,GAA8B,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC9D,gBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK;gBACjD,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;AACb,aAAA,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBACzB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACxB,aAAC,CAAC,CAAC;YACH,OAAO;gBACL,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,gBAAA,YAAY,EAAE,GAAG;gBACjB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;aACxB,CAAC;SACH,CAAC,CACH,CACF,CAAC;AA2BH,KAAA;AA3DC,IAAA,GAAG,CAAuB;IAkC1B,eAAe,CAAC,KAAa,EAAE,IAAe,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW;AACb,aAAA,gBAAgB,CAAC;AAChB,YAAA,iBAAiB,EAAE;AACjB,gBAAA,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACpB,aAAA;SACF,CAAC;AACD,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;aACjD;AACF,SAAA,CAAC,CAAC;KACN;AAED,IAAA,kBAAkB,CAAC,GAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;KAC1C;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;KACxD;+GAjEU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,wEChBlC,i4DAsDA,EAAA,MAAA,EAAA,CAAA,khCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1CY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,kOAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIjD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,i4DAAA,EAAA,MAAA,EAAA,CAAA,khCAAA,CAAA,EAAA,CAAA;;;MEOlD,0BAA0B,CAAA;AAPvC,IAAA,WAAA,GAAA;AAQU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAE3B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC,CAAC;QACnB,IAAgB,CAAA,gBAAA,GAAa,EAAE,CAAC;QACxC,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AACtE,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,CAAC;AAE9G,QAAA,IAAA,CAAA,KAAK,GAAG;YACN,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,YAAY;SAC7B,CAAC;AA6CH,KAAA;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,CAAC;gBACpF,MAAM;aACP;SACF;KACF;IAED,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,CAAC;AACrF,QAAA,IAAI,CAAC,EAAE,WAAW,EAAE;AAClB,YAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,CAAC,4BAA4B;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACvD;KACF;AAED,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAED,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,IAAI,EAAE;AAAE,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAC5C;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;KACrC;IAED,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,IAAI;AACjB,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;QACxC,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,EAAE,GAAkB,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAkB,CAAC;YAChG,IAAI,EAAE,CAAC,MAAM;AAAE,gBAAA,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC/B,SAAC,CAAC,CAAC;KACJ;+GA1DU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,sICnBvC,s8CAqCA,EAAA,MAAA,EAAA,CAAA,4jGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAE,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,cAAc,EAAE,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,iIAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAE,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,qGAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIlI,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,s8CAAA,EAAA,MAAA,EAAA,CAAA,4jGAAA,CAAA,EAAA,CAAA;8BAoBzG,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEzBxB,2BAA2B,CAAA;AAEtC,IAAA,WAAA,GAAA;QACE,SAAS,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC,KAAI;AACxC,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAEzB,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEpB,SAAC,CAAA;KACF;+GATU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVxC,kCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKY,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EACpB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,kCAAA,EAAA,CAAA;;;AEAZ,MAAA,iBAAiB,GAAY;AACxC,IAAA,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,sBAAsB,EAAE;IACxD,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,0BAA0B,EAAE,MAAM,EAAE,OAAO,EAAE;AACjF,IAAA,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE;AACtD,IAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,2BAA2B,EAAE;;IAEpE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;;AAEzD,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE;;;MCcpB,oBAAoB,CAAA;AAI/B,IAAA,MAAM,CAAwB;AAIrB,IAAA,OAAO,CAAyB;AAChC,IAAA,OAAO,CAAkB;AAmClC,IAAA,aAAa,CAAC,KAAiB,EAAA;;KAE9B;AAGD,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAC3D;AAGD,IAAA,WAAW,CAA2D;AAMtE,IAAA,kBAAkB,CAUhB;AAGF,IAAA,WAAA,GAAA;AA3EQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACtB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1B,IAAoB,CAAA,oBAAA,GAAG,sBAAsB,CAAC;AAE9C,QAAA,IAAA,CAAA,OAAO,GAA2C;AACxD,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,KAAK,EAAE,CAAC;SACT,CAAC;QAEF,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAG5B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,gBAAgB,GAMZ,QAAQ,CACV,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EACpDC,KAAG,CAAC,CAAC,aAAa,KAAI;YACpB,IAAI,QAAQ,GAA2B,MAAM,CAAC;AAC9C,YAAA,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAC1D,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,CAAC;AAC1H,YAAA,OAAO,KAAK,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;SACpD,CAAC,CACH,CACF,CAAC;AAeF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAS,CAAC;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEtE,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAC/B,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAE3B,IAAM,CAAA,MAAA,GAAG,KAAK,EAAqB,CAAC;AACpC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CACzB,MAAK;AACH,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;aACjC;AACH,SAAC,EACD;AACE,YAAA,iBAAiB,EAAE,IAAI;AACxB,SAAA,CACF,CAAC;AACF,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAGpC,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;;QAOrE,IAAI,CAAC,MAAM,CAAC,MAAM;aACf,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,aAAa,CAAC,EACzCA,KAAG,CAAC,CAAC,CAAC,KAAK,CAAkB,CAAC,CAC/B;AACA,aAAA,SAAS,CAAC,CAAC,CAAgB,KAAK,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC;AAExE,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEpB,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,CAAC;AACxE,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;aAC7E;AACD,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,SAAC,CAAC,CAAC;QAEH,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,CAAC;aACtB;AACH,SAAC,CAAC,CAAC;KACJ;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5B;;;;AAMO,IAAA,kBAAkB,CAAC,KAAgB,EAAA;;QAEzC,IAAK,KAAK,CAAC,aAAyB,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ;AAAE,YAAA,OAAO,CAAC,CAAC;AACnF,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,CAAC;KAC9H;AAEO,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,CAAC;AAC/C,SAAA,CAAC,CAAC,CAAC;QACJ,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,CAAC;AACnD,SAAA,CAAC,CAAC;QACH,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,EAAE;AACjC,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,MAAM;AAAE,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;;AACpD,YAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACrD;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC3B,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO;SACR;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ;aAClB,IAAI,CACH,GAAG,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,CAAC;AACvB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,SAAC,CAAC,CACH;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;AAED,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,CAAC;SACzE;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAC7B;AAEO,IAAA,2BAA2B,CAAC,CAAgB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;;;AAGnC,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,CAAC;AACjH,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAElF,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;;AAE7E,gBAAA,IAAI,CAAC,IAAI;AACN,qBAAA,oBAAoB,EAAE;AACtB,qBAAA,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAACA,KAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAClF,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,CAAC;AACrE,oBAAA,IAAI,QAAQ;wBAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACxD,iBAAC,CAAC,CAAC;aACN;SACF;KACF;AAEO,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,CAAC;KACxD;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,QAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAY,KAAI;YACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;+GAzMU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EC5BjC,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,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4vEAmDA,ED3BY,MAAA,EAAA,CAAA,ilHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,EAAE,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,EAAE,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,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,EAAA,aAAa,iIAAE,iCAAiC,EAAA,QAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI/F,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAChB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,iCAAiC,CAAC,EAAA,QAAA,EAAA,4vEAAA,EAAA,MAAA,EAAA,CAAA,ilHAAA,CAAA,EAAA,CAAA;wDAgD3G,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAM5C,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEjEzB,gBAAgB,CAAA;AAP7B,IAAA,WAAA,GAAA;QAQE,IAAI,CAAA,IAAA,GAAG,KAAK,EAAU,CAAC;AACvB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;AAClC,KAAA;+GAHY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,ECX7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+GAGuC,EDI3B,MAAA,EAAA,CAAA,uvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,+GAAA,EAAA,MAAA,EAAA,CAAA,uvBAAA,CAAA,EAAA,CAAA;;;MEU3B,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;AAQE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAc,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAExC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;QAE9B,IAAc,CAAA,cAAA,GAAmB,EAAE,CAAC;QACpC,IAAiB,CAAA,iBAAA,GAAmB,EAAE,CAAC;AA6CxC,KAAA;AArDC,IAAA,WAAW,CAAyB;AACpC,IAAA,MAAM,CAAwB;AAC9B,IAAA,WAAW,CAAsB;AAQjC,IAAA,WAAW,CAAC,MAAoB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,MAAK;AACrE,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,YAAY,CAAC,MAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,MAAK;AAC/D,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;KACJ;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW;AACb,aAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,aAAA,IAAI,CACHE,KAAG,CAAC,CAAC,SAAS,KAAI;AAChB,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,SAAC,CAAC,CACH;AACA,aAAA,SAAS,EAAE;AACX,aAAA,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;KACpC;AAED,IAAA,kBAAkB,CAAC,SAAoB,EAAA;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,UAAU,CAAC;KACzC;IAED,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;KAChD;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;+GArDU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBnC,uvCA+BA,EAAA,MAAA,EAAA,CAAA,0vBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIzG,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAClB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,uvCAAA,EAAA,MAAA,EAAA,CAAA,0vBAAA,CAAA,EAAA,CAAA;;;AELjH,MAAO,mBAAoB,SAAQ,qBAAqB,CAAA;AAA9D,IAAA,WAAA,GAAA;;AACE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAE7C,IAAE,CAAA,EAAA,GAAG,wBAAwB,CAAC;QAC9B,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QACvE,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;QACnF,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;AACb,QAAA,IAAA,CAAA,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC;QAChC,IAAK,CAAA,KAAA,GAAG,QAAQ,CAAC;AACjB,QAAA,IAAA,CAAA,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,QAAQ,GAAkB;AACxB,YAAA,OAAO,EAAE,GAAG;SACb,CAAC;KAcH;AA3BC,IAAA,MAAM,CAAwB;AAC9B,IAAA,QAAQ,CAA6B;AAcrC,IAAA,YAAY,CAAC,KAAkB,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,QAAA,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACrJ;AAED,IAAA,GAAG,CAAC,KAAkB,EAAA;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;AACnD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,MAAM;AACjB,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;AACF;;ACpCD;;AAEG;;;;"}
1
+ {"version":3,"file":"yuuvis-client-shell.mjs","sources":["../../../../../libs/yuuvis/client-shell/src/lib/directives/inert.directive.ts","../../../../../libs/yuuvis/client-shell/src/lib/pages/dashboard/dashboard.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/pages/dashboard/dashboard.component.html","../../../../../libs/yuuvis/client-shell/src/lib/pages/settings/settings.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/pages/settings/settings.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/pages/web-share-target/web-share-target.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/pages/web-share-target/web-share-target.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-logo/app-logo.component.ts","../../../../../libs/yuuvis/client-shell/src/lib/components/app-logo/app-logo.component.html","../../../../../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/yuuvis-client-shell.ts"],"sourcesContent":["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 { Component } from '@angular/core';\n\n@Component({\n selector: 'yuv-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss']\n})\nexport class DashboardPageComponent {}\n","yuuvis Momentum\n","import { Component, inject, OnInit, Signal, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ConfigService, TranslateModule, TranslateService, UserService, YuvConfigLanguages, YuvUser } from '@yuuvis/client-core';\n\nimport { CommonModule, DOCUMENT } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { ShellAppSettingProperty, ShellAppSettings, ShellService } from '@yuuvis/client-shell-core';\nimport { map, Observable } from 'rxjs';\n\n@Component({\n selector: 'yuv-settings',\n standalone: true,\n imports: [CommonModule, TranslateModule, ReactiveFormsModule],\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss']\n})\nexport class SettingsPageComponent implements OnInit {\n private userService = inject(UserService);\n private config = inject(ConfigService);\n public translate = inject(TranslateService);\n private shell = inject(ShellService);\n readonly document = inject(DOCUMENT);\n\n #fb = inject(FormBuilder);\n\n clientLocales = signal<YuvConfigLanguages[]>([]);\n clientVersion = signal<string | undefined>(undefined);\n user: Signal<YuvUser | undefined> = toSignal(this.userService.user$);\n appSettingForms$: Observable<\n {\n appID: string;\n label: string;\n formControls: ShellAppSettingProperty[];\n form: FormGroup;\n }[]\n > = this.shell.appSettings$.pipe(\n map((settings: ShellAppSettings[]) =>\n settings.map((e) => {\n const x: any = {};\n const fcn: ShellAppSettingProperty[] = e.properties.map((p) => ({\n label: this.translate.instant(p.label) || p.label,\n name: p.name,\n type: p.type\n }));\n e.properties.forEach((p) => {\n x[p.name] = [p.value];\n });\n return {\n appID: e.appID,\n label: e.label,\n formControls: fcn,\n form: this.#fb.group(x)\n };\n })\n )\n );\n\n saveAppSettings(appID: string, form: FormGroup) {\n this.userService\n .saveUserSettings({\n clientAppSettings: {\n [appID]: form.value\n }\n })\n .subscribe({\n next: () => {\n form.markAsPristine();\n },\n error: (err) => {\n console.error('Error saving app settings', err);\n }\n });\n }\n\n changeClientLocale(iso: string) {\n this.userService.changeClientLocale(iso);\n }\n\n ngOnInit(): void {\n this.clientVersion.set(this.document.body.getAttribute('data-version') ?? 'dev');\n this.clientLocales.set(this.config.getClientLocales());\n }\n}\n","<header>\n <h1>{{ 'yuv.shell.settings.title' | translate }}</h1>\n <h4>{{ 'yuc.shell.settings.client.version' | translate }}: {{ clientVersion() }}</h4>\n</header>\n\n\n<main>@if (user()) {\n <section class=\"user\">\n <!-- <yuv-user-avatar class=\"background\" [user]=\"user()\"></yuv-user-avatar> -->\n <div class=\"user\">\n <div class=\"meta uname\">{{ user()!.username }}</div>\n <h2>{{ user()!.title }}</h2>\n <div class=\"meta uemail\">{{ user()!.email }}</div>\n <div class=\"meta utenant\">{{ 'yuv.shell.settings.tenant' | translate }}: {{ user()!.tenant }}</div>\n </div>\n </section>\n}\n <!-- language -->\n <section yuvOfflineDisabled>\n <div class=\"label\" translate>yuv.shell.settings.language</div>\n <div class=\"value buttons\">\n @for (locale of clientLocales(); track locale.iso) {\n <button class=\"toggle secondary\" (click)=\"changeClientLocale(locale.iso)\" [ngClass]=\"{ active: translate.currentLang === locale.iso }\">\n {{ locale.label }}\n </button>\n }\n </div>\n </section>\n\n <!-- app settings -->\n <!-- TODO: activate one feature is refined -->\n <!-- @for (c of appSettingForms$ | async; track $index) {\n <section>\n {{ c.label }}\n <form [formGroup]=\"c.form\" (ngSubmit)=\"saveAppSettings(c.appID, c.form)\">\n @for (n of c.formControls; track $index) {\n <label\n >{{ n.label }}\n\n @switch (n.type) {\n @case ('string') {\n <input type=\"text\" [formControlName]=\"n.name\" />\n }\n @case ('number') {\n <input type=\"number\" [formControlName]=\"n.name\" />\n }\n }\n </label>\n }\n <button [ngClass]=\"{ hideen: c.form.untouched }\" [disabled]=\"c.form.invalid\">Save</button>\n </form>\n </section>\n } -->\n</main>\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 { Router } from '@angular/router';\nimport { LocaleDatePipe, TranslateModule, Utils } from '@yuuvis/client-core';\nimport { LightDismissDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';\nimport { ShellNotificationsService } from '@yuuvis/client-shell-core';\nimport { ICONS, YvcIconModule } from '@yuuvis/components/icon';\n\n@Component({\n selector: 'yuv-notifications',\n standalone: true,\n imports: [CommonModule, LightDismissDirective, LocaleDatePipe, YvcIconModule, CdkTrapFocus, ListComponent, ListItemDirective, TranslateModule],\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 close: ICONS.clear,\n trash: YUV_ICONS.trash,\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\"><yvc-icon [svg]=\"n.icon || icons.note\"></yvc-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 (click)=\"remove(n.id)\">\n <yvc-icon [svg]=\"icons.trash\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n </yuv-list>\n\n <div class=\"actions\">\n <button [hidden]=\"!notifications()?.length\" class=\"icon secondary\" (click)=\"removeAll()\">\n {{ 'yuv.shell.notifications.button.remove.all' | translate }}<yvc-icon [svg]=\"icons.trash\"></yvc-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 class=\"icon close\" (click)=\"close()\">\n <yvc-icon [svg]=\"icons.close\"></yvc-icon>\n </button>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'yuv-web-share-target',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './web-share-target.component.html',\n styleUrl: './web-share-target.component.scss'\n})\nexport class WebShareTargetPageComponent {\n\n constructor() {\n navigator.serviceWorker.onmessage = (e) => {\n const file = e.data.file;\n\n console.log(file);\n \n }\n }\n}\n","<p>web-share-target works!</p>\n","import { Route } from '@angular/router';\nimport { DashboardPageComponent } from './pages/dashboard/dashboard.component';\nimport { SettingsPageComponent } from './pages/settings/settings.component';\nimport { NotificationsPageComponent } from './pages/notifications/notifications.component';\nimport { WebShareTargetPageComponent } from './pages/web-share-target/web-share-target.component';\n\nexport const clientShellRoutes: Route[] = [\n { path: 'dashboard', component: DashboardPageComponent },\n { path: 'notifications', component: NotificationsPageComponent, outlet: 'aside' },\n { path: 'settings', component: SettingsPageComponent },\n { path: 'web-share-target', component: WebShareTargetPageComponent },\n // default route\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n // redirecting route\n { path: '**', redirectTo: '/' }\n];\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, HostListener, OnInit, Signal, effect, inject, input, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Route, Router, RouterModule } from '@angular/router';\nimport { SwPush } from '@angular/service-worker';\nimport { AuthService, DeviceService, TranslateModule, TranslateService, UserRoles, UserService, Utils, YuvUser } from '@yuuvis/client-core';\nimport { MetadataDefaultTemplatesComponent } from '@yuuvis/client-framework/metadata-form';\nimport {\n App,\n ClientShellConfig,\n CommandPaletteCommand,\n CommandPaletteService,\n ShellNotificationLevel,\n ShellNotificationsService,\n ShellService\n} from '@yuuvis/client-shell-core';\nimport { YvcIconModule } from '@yuuvis/components/icon';\nimport { of } from 'rxjs';\nimport { catchError, filter, map, switchMap, tap } from 'rxjs/operators';\nimport { clientShellRoutes } from './lib.routes';\n\n@Component({\n selector: 'yuv-client-shell',\n standalone: true,\n imports: [NgIf, AsyncPipe, TranslateModule, RouterModule, YvcIconModule, MetadataDefaultTemplatesComponent],\n templateUrl: './client-shell.component.html',\n styleUrls: ['./client-shell.component.scss']\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 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\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 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 #appsEffect = effect(() => this.#shell.setAppBaseRoutes(this.apps()));\n user?: YuvUser;\n checkedForInitialRoute = false;\n enableTenantSwitch = false;\n\n config = input<ClientShellConfig>();\n #shellConfigEffect = effect(\n () => {\n const cfg = this.config();\n if (cfg) {\n this.#shell.setShellConfig(cfg);\n }\n },\n {\n allowSignalWrites: true\n }\n );\n shellConfig = this.#shell.shellConfig;\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 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 console.log('Notification is not enabled.');\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<!-- <yuv-focus-indicator /> -->\n\n<!-- gloabl busy indicator -->\n@if (busy$ | async) {\n <div class=\"yuv-loader-linear\"></div>\n}\n<nav class=\"apps\" [inert]=\"asideOutlet.isActivated\" [attr.aria-label]=\"'yuv.shell.naviagtion.aria.label' | translate\">\n <div class=\"app-icon\">\n <button routerLink=\"/\" routerLinkActive=\"active\" [attr.aria-label]=\"'yuv.shell.logo.aria.label' | translate\">\n <yvc-icon [svg]=\"shellConfig().icons!.appIcon!\"></yvc-icon>\n </button>\n </div>\n <ul class=\"apps\">\n @for (a of apps(); track a.path) {\n <li>\n <button routerLinkActive=\"active\" [routerLink]=\"a.path\" title=\"{{ a.title }}\">\n <yvc-icon [svg]=\"a.icon\" title=\"{{ a.title }}\" *ngIf=\"a.icon\"></yvc-icon>\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\n <section class=\"actions\">\n @if (showNotifications()) {\n <button [routerLink]=\"[{ outlets: { aside: 'notifications' } }]\" routerLinkActive=\"active\" title=\"{{ 'yuv.shell.notifications.title' | translate }}\">\n <yvc-icon [svg]=\"shellConfig().icons!.notifications!\"></yvc-icon>\n @if (newNotifications(); as note) {\n <div class=\"badge {{ note.maxLevel }}\">{{ note.count }}</div>\n }\n </button>\n }\n <button [routerLink]=\"['/settings']\" routerLinkActive=\"active\" title=\"{{ 'yuv.shell.settings.title' | translate }}\">\n <yvc-icon [svg]=\"shellConfig().icons!.settings!\"></yvc-icon>\n </button>\n <button (click)=\"appLogout()\" title=\"{{ 'yuv.shell.cmd.logout' | translate }}\"><yvc-icon [svg]=\"shellConfig().icons!.logout!\"></yvc-icon></button>\n </section>\n</nav>\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 { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { YvcIconModule } from '@yuuvis/components/icon';\n\n@Component({\n selector: 'yuv-app-logo',\n standalone: true,\n imports: [CommonModule, YvcIconModule],\n templateUrl: './app-logo.component.html',\n styleUrl: './app-logo.component.scss'\n})\nexport class AppLogoComponent {\n icon = input<string>();\n label = input.required<string>();\n}\n","@let ico = icon();\n@if(ico){\n<yvc-icon [svg]=\"ico\"></yvc-icon>\n}<span class=\"label\">{{label()}}</span>","import { Component, inject, OnInit, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { YvcOverlayRef } from '@yuuvis/components/overlay';\nimport { DmsObject, DmsService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { ObjectFlavor, ShellService } from '@yuuvis/client-shell-core';\nimport { FlavorChipComponent } from '@yuuvis/client-framework/object-flavor';\nimport { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { Observable, tap } from 'rxjs';\n\n@Component({\n selector: 'yuv-manage-flavors',\n standalone: true,\n imports: [CommonModule, ListComponent, BusyOverlayDirective, TranslateModule, ListItemDirective, FlavorChipComponent],\n templateUrl: './manage-flavors.component.html',\n styleUrl: './manage-flavors.component.scss'\n})\nexport class ManageFlavorsComponent implements OnInit {\n #overlayRef = inject(YvcOverlayRef);\n #shell = inject(ShellService);\n #dmsService = inject(DmsService);\n item: DmsObject = this.#overlayRef.data;\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.#overlayRef.close();\n this.busy.set(false);\n });\n }\n\n removeFlavor(flavor: ObjectFlavor) {\n this.busy.set(true);\n this.#shell.removeObjectFlavor(this.item, flavor).subscribe(() => {\n this.#overlayRef.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 if (this.#overlayRef) this.#overlayRef.close();\n }\n\n ngOnInit() {\n this.#refreshDmsObject();\n }\n}\n","<header>\n <h2>{{ 'yuv.shell.action.manage-flavors.title' | translate }}</h2>\n <p>{{ 'yuv.shell.action.manage-flavors.text' | translate }}</p>\n</header>\n<main [yuvBusyOverlay]=\"busy()\">\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 class=\"secondary\" (click)=\"removeFlavor(f)\">{{ 'yuv.shell.action.manage-flavors.applicable.button.remove' | translate }}</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 class=\"secondary\" (click)=\"applyFlavor(f)\">{{ 'yuv.shell.action.manage-flavors.applied.button.apply' | translate }}</button>\n </li>\n }\n </ul>\n }\n</main>\n<footer>\n <button class=\"secondary\" (click)=\"cancel()\">{{ 'yuv.shell.action.manage-flavors.button.cancel' | translate }}</button>\n</footer>\n","import { inject } from '@angular/core';\nimport { DmsObject, TranslateService } from '@yuuvis/client-core';\nimport { AbstractContextAction, Action, ACTION_ICON, ActionSupport, BASE_ACTION, SelectionRange } from '@yuuvis/client-framework/actions';\nimport { ShellService } from '@yuuvis/client-shell-core';\nimport { YvcOverlayService } from '@yuuvis/components/overlay';\nimport { Observable, of } from 'rxjs';\nimport { ManageFlavorsComponent } from './manage-flavors.component';\n\nexport class ManageFlavorsAction extends AbstractContextAction implements Action {\n #shell = inject(ShellService);\n #overlay = inject(YvcOverlayService);\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 pattern: '*'\n };\n\n isExecutable(items: DmsObject[]) {\n const item = items[0];\n return of(item && !!item.permissions?.writeIndexData && !!item.content && this.#shell.getApplicableObjectFlavors(item.content.mimeType).length > 0);\n }\n\n run(items: DmsObject[]): Observable<boolean> {\n this.#overlay.open(ManageFlavorsComponent, items[0], {\n width: '400px',\n maxWidth: '90vw',\n });\n return of(true);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","map","i1","i2","tap"],"mappings":"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"}
@@ -11,20 +11,13 @@
11
11
  "yuv.shell.action.manage-flavors.title": "Typen verwalten",
12
12
  "yuv.shell.cmd.app.open": "'{{title}}' öffnen",
13
13
  "yuv.shell.cmd.logout": "Abmelden",
14
- "yuv.shell.cmd.open.notifications": "Benachrichtigungen öffnen",
15
14
  "yuv.shell.cmd.open.settings": "Einstellungen öffnen",
16
- "yuv.shell.cmd.theme.toggle": "Dunkles/Helles Theme",
17
15
  "yuv.shell.logo.aria.label": "Yuuvis",
18
16
  "yuv.shell.naviagtion.aria.label": "",
19
17
  "yuv.shell.notifications.button.remove.all": "Alle entfernen",
20
18
  "yuv.shell.notifications.empty": "Keine Benachrichtigungen",
21
19
  "yuv.shell.notifications.title": "Benachrichtigungen",
22
- "yuv.shell.settings.accentcolor": "Akzentfarbe",
23
20
  "yuv.shell.settings.language": "Sprache",
24
- "yuv.shell.settings.reset": "Zurücksetzen",
25
21
  "yuv.shell.settings.tenant": "Mandant",
26
- "yuv.shell.settings.theme": "Theme",
27
- "yuv.shell.settings.theme.dark": "Dunkel",
28
- "yuv.shell.settings.theme.light": "Hell",
29
22
  "yuv.shell.settings.title": "Einstellungen"
30
23
  }
@@ -11,20 +11,13 @@
11
11
  "yuv.shell.action.manage-flavors.title": "Manage types",
12
12
  "yuv.shell.cmd.app.open": "Open '{{title}}'",
13
13
  "yuv.shell.cmd.logout": "Log out",
14
- "yuv.shell.cmd.open.notifications": "Open notifications",
15
14
  "yuv.shell.cmd.open.settings": "Open settings",
16
- "yuv.shell.cmd.theme.toggle": "Dark/light theme",
17
15
  "yuv.shell.logo.aria.label": "yuuvis",
18
16
  "yuv.shell.naviagtion.aria.label": "",
19
17
  "yuv.shell.notifications.button.remove.all": "Remove all",
20
18
  "yuv.shell.notifications.empty": "No notifications",
21
19
  "yuv.shell.notifications.title": "Notifications",
22
- "yuv.shell.settings.accentcolor": "Accent color",
23
20
  "yuv.shell.settings.language": "Language",
24
- "yuv.shell.settings.reset": "Reset",
25
21
  "yuv.shell.settings.tenant": "Tenant",
26
- "yuv.shell.settings.theme": "Theme",
27
- "yuv.shell.settings.theme.dark": "Dark",
28
- "yuv.shell.settings.theme.light": "Light",
29
22
  "yuv.shell.settings.title": "Settings"
30
23
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuuvis/client-shell",
3
- "version": "0.7.4",
3
+ "version": "0.8.0",
4
4
  "author": "OPTIMAL SYSTEMS GmbH <npm@optimal-systems.de>",
5
5
  "license": "MIT",
6
6
  "peerDependencies": {
@@ -9,9 +9,9 @@
9
9
  "@angular/service-worker": "^18.2.0"
10
10
  },
11
11
  "dependencies": {
12
- "@yuuvis/client-core": "0.7.4",
13
- "@yuuvis/client-framework": "0.7.4",
14
- "@yuuvis/client-shell-core": "0.7.4",
12
+ "@yuuvis/client-core": "0.8.0",
13
+ "@yuuvis/client-framework": "0.8.0",
14
+ "@yuuvis/client-shell-core": "0.8.0",
15
15
  "@yuuvis/styles": "latest",
16
16
  "@yuuvis/components": "18.1.12",
17
17
  "@yuuvis/widget-grid": "^18.1.0",