@design-system-rte/angular 0.16.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2022/lib/components/badge/badge.component.mjs +3 -3
- package/esm2022/lib/components/banner/banner.component.mjs +14 -6
- package/esm2022/lib/components/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +1 -1
- package/esm2022/lib/components/button/button.component.mjs +11 -4
- package/esm2022/lib/components/card/card.component.mjs +40 -0
- package/esm2022/lib/components/divider/divider.component.mjs +3 -3
- package/esm2022/lib/components/icon-button/icon-button.component.mjs +3 -3
- package/esm2022/lib/components/icon-button-toggle/icon-button-toggle.component.mjs +3 -3
- package/esm2022/lib/components/popover/popover.component.mjs +1 -1
- package/esm2022/lib/components/side-nav/base-side-nav/base-side-nav.component.mjs +63 -0
- package/esm2022/lib/components/side-nav/nav-item/nav-item.component.mjs +58 -0
- package/esm2022/lib/components/side-nav/nav-menu/nav-menu.component.mjs +90 -0
- package/esm2022/lib/components/side-nav/side-nav.component.mjs +96 -0
- package/esm2022/lib/components/toast/toast.component.mjs +57 -0
- package/esm2022/lib/components/toast/toast.service.mjs +114 -0
- package/esm2022/lib/components/tooltip/tooltip.component.mjs +3 -3
- package/esm2022/lib/components/tooltip/tooltip.directive.mjs +11 -8
- package/esm2022/lib/services/overlay.service.mjs +9 -1
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/design-system-rte-angular.mjs +519 -26
- package/fesm2022/design-system-rte-angular.mjs.map +1 -1
- package/lib/components/badge/badge.directive.d.ts +1 -1
- package/lib/components/banner/banner.component.d.ts +3 -2
- package/lib/components/button/button.component.d.ts +5 -1
- package/lib/components/card/card.component.d.ts +19 -0
- package/lib/components/icon-button/icon-button.component.d.ts +3 -3
- package/lib/components/icon-button-toggle/icon-button-toggle.component.d.ts +2 -2
- package/lib/components/side-nav/base-side-nav/base-side-nav.component.d.ts +26 -0
- package/lib/components/side-nav/nav-item/nav-item.component.d.ts +28 -0
- package/lib/components/side-nav/nav-menu/nav-menu.component.d.ts +42 -0
- package/lib/components/side-nav/side-nav.component.d.ts +33 -0
- package/lib/components/split-button/split-button.component.d.ts +1 -1
- package/lib/components/text-input/text-input.component.d.ts +3 -3
- package/lib/components/toast/toast.component.d.ts +30 -0
- package/lib/components/toast/toast.service.d.ts +34 -0
- package/lib/components/tooltip/tooltip.directive.d.ts +4 -3
- package/lib/services/overlay.service.d.ts +2 -0
- package/package.json +2 -2
- package/public-api.d.ts +4 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { CommonModule } from "@angular/common";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, effect, input, output, signal } from "@angular/core";
|
|
3
|
+
import { dividerAppearanceBySideNavAppearance } from "@design-system-rte/core/components/side-nav/side-nav.constants";
|
|
4
|
+
import { ENTER_KEY, SPACE_KEY } from "@design-system-rte/core/constants/keyboard/keyboard.constants";
|
|
5
|
+
import { DividerComponent } from "../divider/divider.component";
|
|
6
|
+
import { BaseSideNavComponent } from "./base-side-nav/base-side-nav.component";
|
|
7
|
+
import { NavItemComponent } from "./nav-item/nav-item.component";
|
|
8
|
+
import { NavMenuComponent } from "./nav-menu/nav-menu.component";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common";
|
|
11
|
+
const TRANSITION_DURATION = 300;
|
|
12
|
+
export class SideNavComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.size = input("m");
|
|
15
|
+
this.collapsible = input(false);
|
|
16
|
+
this.headerConfig = input();
|
|
17
|
+
this.items = input([]);
|
|
18
|
+
this.footerItems = input();
|
|
19
|
+
this.collapsed = input(false);
|
|
20
|
+
this.appearance = input("brand");
|
|
21
|
+
this.isCollapsed = signal(false);
|
|
22
|
+
this.shouldShowTitle = signal(true);
|
|
23
|
+
this.itemClicked = output();
|
|
24
|
+
this.titleTimeoutId = null;
|
|
25
|
+
this.collapseIcon = computed(() => {
|
|
26
|
+
return this.isCollapsed() ? "arrow-double-right" : "arrow-double-left";
|
|
27
|
+
});
|
|
28
|
+
this.dividerAppearance = computed(() => {
|
|
29
|
+
return dividerAppearanceBySideNavAppearance[this.appearance()];
|
|
30
|
+
});
|
|
31
|
+
effect(() => {
|
|
32
|
+
this.isCollapsed.set(this.collapsed());
|
|
33
|
+
}, { allowSignalWrites: true });
|
|
34
|
+
effect(() => {
|
|
35
|
+
if (this.titleTimeoutId) {
|
|
36
|
+
clearTimeout(this.titleTimeoutId);
|
|
37
|
+
this.titleTimeoutId = null;
|
|
38
|
+
}
|
|
39
|
+
if (this.isCollapsed()) {
|
|
40
|
+
this.shouldShowTitle.set(false);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.titleTimeoutId = setTimeout(() => {
|
|
44
|
+
this.shouldShowTitle.set(true);
|
|
45
|
+
this.titleTimeoutId = null;
|
|
46
|
+
}, TRANSITION_DURATION);
|
|
47
|
+
}
|
|
48
|
+
}, { allowSignalWrites: true });
|
|
49
|
+
}
|
|
50
|
+
handleHeaderKeyDown(event) {
|
|
51
|
+
if ([SPACE_KEY, ENTER_KEY].includes(event.key)) {
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
const config = this.headerConfig();
|
|
54
|
+
if (config?.onClick) {
|
|
55
|
+
config.onClick();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
handleHeaderClick() {
|
|
60
|
+
const config = this.headerConfig();
|
|
61
|
+
if (config?.onClick) {
|
|
62
|
+
config.onClick();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
hasNestedItems(item) {
|
|
66
|
+
return !!item.items?.length;
|
|
67
|
+
}
|
|
68
|
+
handleItemClick(itemId) {
|
|
69
|
+
this.itemClicked.emit(itemId);
|
|
70
|
+
}
|
|
71
|
+
handleFooterItemClick(itemId) {
|
|
72
|
+
this.itemClicked.emit(itemId);
|
|
73
|
+
}
|
|
74
|
+
handleMenuOpenChange(event) {
|
|
75
|
+
const targetMenu = this.items().find((item) => item.id === event.id);
|
|
76
|
+
if (targetMenu) {
|
|
77
|
+
targetMenu.open = event.open;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
handleFooterMenuOpenChange(event) {
|
|
81
|
+
const targetMenu = this.footerItems()?.find((item) => item.id === event.id);
|
|
82
|
+
if (targetMenu) {
|
|
83
|
+
targetMenu.open = event.open;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
handleCollapseClick() {
|
|
87
|
+
this.isCollapsed.set(!this.isCollapsed());
|
|
88
|
+
}
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SideNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SideNavComponent, isStandalone: true, selector: "rte-side-nav", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, headerConfig: { classPropertyName: "headerConfig", publicName: "headerConfig", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, footerItems: { classPropertyName: "footerItems", publicName: "footerItems", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClicked: "itemClicked" }, ngImport: i0, template: "<rte-base-side-nav\n [size]=\"size()\"\n [collapsed]=\"isCollapsed()\"\n [appearance]=\"appearance()\">\n <div side-nav-header>\n <div class=\"side-nav-header-container\">\n <div class=\"side-nav-header {{appearance()}}\" [ngClass]=\"{ collapsed: isCollapsed() }\">\n @if (headerConfig()?.link) {\n <a\n class=\"side-nav-header-title-container\"\n [href]=\"headerConfig()!.link!\"\n [attr.aria-label]=\"headerConfig()?.ariaLabel\"\n (click)=\"handleHeaderClick()\">\n <div class=\"side-nav-header-title\">\n <div class=\"side-nav-header-identifier\">{{ headerConfig()?.identifier }}</div>\n @if (!isCollapsed()) {\n <h1 [ngClass]=\"{ 'hidden': !shouldShowTitle() }\">{{ headerConfig()?.title }}</h1>\n }\n </div>\n </a>\n } @else if (headerConfig()?.onClick) {\n <div\n class=\"side-nav-header-title-container\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"headerConfig()?.ariaLabel\"\n (click)=\"handleHeaderClick()\"\n (keydown)=\"handleHeaderKeyDown($event)\">\n <div class=\"side-nav-header-title\">\n <div class=\"side-nav-header-identifier\">{{ headerConfig()?.identifier }}</div>\n @if (!isCollapsed()) {\n <h1 [ngClass]=\"{ 'hidden': !shouldShowTitle() }\">{{ headerConfig()?.title }}</h1>\n }\n </div>\n </div>\n } @else {\n <div class=\"side-nav-header-title-container\">\n <div class=\"side-nav-header-title\">\n <div class=\"side-nav-header-identifier\">{{ headerConfig()?.identifier }}</div>\n @if (!isCollapsed()) {\n <h1 [ngClass]=\"{ 'hidden': !shouldShowTitle() }\">{{ headerConfig()?.title }}</h1>\n }\n </div>\n </div>\n }\n <div class=\"side-nav-header-version\" [ngClass]=\"{ 'hidden': !shouldShowTitle() }\">\n <span>{{ headerConfig()?.version }}</span>\n </div>\n </div>\n <rte-divider [appearance]=\"dividerAppearance()\"/>\n </div>\n </div>\n <div side-nav-body>\n <div class=\"side-nav-body\">\n <ul>\n @for (item of items(); track item.label) {\n @if (hasNestedItems(item)) {\n <rte-nav-menu\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [open]=\"item.open\"\n [items]=\"item.items || []\"\n [appearance]=\"appearance()\"\n [badge]=\"item.badge\"\n [showDivider]=\"item.showDivider!\"\n (openChange)=\"handleMenuOpenChange($event)\"\n />\n } @else {\n <li>\n <rte-nav-item\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [appearance]=\"appearance()\"\n [active]=\"item.active ?? false\"\n [badge]=\"item.badge\"\n (itemClick)=\"handleItemClick(item.id || item.label)\"></rte-nav-item>\n </li>\n @if (item.showDivider) {\n <rte-divider [appearance]=\"dividerAppearance()\" />\n }\n }\n }\n </ul>\n </div>\n </div>\n @if (footerItems()?.length || collapsible()) {\n <div side-nav-footer>\n <div class=\"side-nav-footer-container\">\n @if (footerItems()?.length) {\n <div class=\"side-nav-footer-items\">\n <ul>\n @for (item of footerItems()!; track item.id || item.label) {\n @if (hasNestedItems(item)) {\n <rte-nav-menu\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [open]=\"item.open\"\n [items]=\"item.items || []\"\n [appearance]=\"appearance()\"\n [badge]=\"item.badge\"\n [showDivider]=\"item.showDivider!\"\n (openChange)=\"handleFooterMenuOpenChange($event)\"\n />\n } @else {\n <li>\n <rte-nav-item\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [appearance]=\"appearance()\"\n [active]=\"item.active ?? false\"\n [badge]=\"item.badge\"\n (itemClick)=\"handleFooterItemClick(item.id || item.label)\"></rte-nav-item>\n </li>\n @if (item.showDivider) {\n <rte-divider [appearance]=\"dividerAppearance()\" />\n }\n }\n }\n </ul>\n </div>\n }\n <rte-divider [appearance]=\"dividerAppearance()\"/>\n @if (collapsible()) {\n <div class=\"side-nav-footer\">\n <div class=\"collapsible-section\">\n <ul>\n <li>\n <rte-nav-item\n [label]=\"isCollapsed() ? 'Ouvrir le menu' : 'R\u00E9duire le menu'\"\n [icon]=\"collapseIcon()\"\n [collapsed]=\"isCollapsed()\"\n [appearance]=\"appearance()\"\n (itemClick)=\"handleCollapseClick()\"\n />\n </li>\n </ul>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <div side-nav-content>\n <ng-content select=\"[content]\"></ng-content>\n </div>\n</rte-base-side-nav>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:wght,FILL,GRAD@400,0,0&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap\";.side-nav-header-container{display:flex;padding:4px;flex-direction:column;justify-content:center;align-items:flex-start;flex-shrink:0;align-self:stretch;height:120px;min-height:120px;max-height:120px}.side-nav-header-container.collapsed{align-items:center;justify-content:center;padding:4px}.side-nav-header{display:flex;position:relative;padding:20px 8px;flex-direction:column;align-items:flex-start;gap:4px;flex:1 0 0;align-self:stretch;height:120px;transition:opacity .3s}.side-nav-header.collapsed{padding:8px;justify-content:center;align-items:center;flex:1 0 0;align-self:stretch}.side-nav-header.collapsed .side-nav-header-title-container{padding:8px;justify-content:center;align-items:center;flex-grow:0;gap:0;align-self:auto}.side-nav-header.collapsed .side-nav-header-title-container .side-nav-header-title{gap:0}.side-nav-header.neutral .side-nav-header-title-container[href]:hover,.side-nav-header.neutral .side-nav-header-title-container[role=button]:hover{background:var(--background-neutral-navigation-hover);box-shadow:0 1px 2px 0 var(--elevation-shadow-key),0 0 2px 0 var(--elevation-shadow-ambient)}.side-nav-header .side-nav-header-title-container{display:flex;padding:0 8px;align-items:center;gap:8px;flex:1 0 0;align-self:stretch;text-decoration:none;color:inherit}.side-nav-header .side-nav-header-title-container[href],.side-nav-header .side-nav-header-title-container[role=button]{cursor:pointer}.side-nav-header .side-nav-header-title-container[href]:hover,.side-nav-header .side-nav-header-title-container[role=button]:hover{border-radius:4px;opacity:100%;background:var(--background-brand-navigation-hover)}.side-nav-header .side-nav-header-title-container .side-nav-header-title{display:flex;align-items:center;gap:8px}.side-nav-header .side-nav-header-title-container .side-nav-header-title .side-nav-header-identifier{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:700;font-size:12px;line-height:16px;letter-spacing:0px;display:flex;flex-direction:column;justify-content:center;align-items:center;flex:1 0 0;align-self:stretch;color:var(--content-brand-navigation-default);text-align:center;-webkit-user-select:none;user-select:none;border-radius:4px;background:var(--background-brand-navigation-pressed);min-width:24px;height:24px}.side-nav-header .side-nav-header-title-container .side-nav-header-title h1{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Nunito;font-weight:600;font-size:16px;line-height:24px;letter-spacing:-.5px;-webkit-user-select:none;user-select:none;align-self:stretch;margin:0;transition:opacity .3s}.side-nav-header .side-nav-header-title-container .side-nav-header-title h1.hidden{opacity:0;max-height:0;padding:0;margin:0}.side-nav-header .side-nav-header-version{display:flex;position:absolute;bottom:4px;right:8px;flex-direction:column;justify-content:flex-end;align-items:flex-end;gap:0px;align-self:stretch;font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:10px;line-height:14px;letter-spacing:0px;transition:opacity .3s,max-height .3s;max-height:50px;overflow:hidden;opacity:1}.side-nav-header .side-nav-header-version.hidden{opacity:0;max-height:0;padding:0;margin:0}.side-nav-body{display:flex;padding:16px 8px;flex-direction:column;align-items:flex-start;gap:8px;flex:1 0 0;overflow-x:hidden;overflow-y:auto;width:100%;box-sizing:border-box}.side-nav-body ul{list-style:none;padding:0;margin:0;width:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:8px}.side-nav-footer-container{padding:8px}.side-nav-footer-container .side-nav-footer{display:flex;flex-direction:column;align-items:center;justify-content:space-between;box-sizing:border-box;width:100%;margin-top:4px}.side-nav-footer-items{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box;margin-bottom:8px}.side-nav-footer-items ul{list-style:none;padding:0;margin:0;width:100%;box-sizing:border-box}.collapsible-section{display:flex;padding:4px 0;flex-direction:column;align-items:flex-start;align-self:stretch}.collapsible-section ul{list-style:none;padding:0;margin:0;width:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BaseSideNavComponent, selector: "rte-base-side-nav", inputs: ["size", "appearance", "collapsed", "showHeader", "showFooter"] }, { kind: "component", type: DividerComponent, selector: "rte-divider", inputs: ["orientation", "thickness", "appearance", "endPoint"] }, { kind: "component", type: NavItemComponent, selector: "rte-nav-item", inputs: ["id", "icon", "showIcon", "label", "collapsed", "link", "appearance", "active", "badge", "isNested", "parentMenuOpen", "role", "showDivider"], outputs: ["itemClick"] }, { kind: "component", type: NavMenuComponent, selector: "rte-nav-menu", inputs: ["id", "icon", "showIcon", "label", "collapsed", "link", "items", "open", "showMenuIcon", "isNested", "parentMenuOpen", "appearance", "badge", "showDivider"], outputs: ["itemClick", "openChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
91
|
+
}
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SideNavComponent, decorators: [{
|
|
93
|
+
type: Component,
|
|
94
|
+
args: [{ selector: "rte-side-nav", imports: [CommonModule, BaseSideNavComponent, DividerComponent, NavItemComponent, NavMenuComponent], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<rte-base-side-nav\n [size]=\"size()\"\n [collapsed]=\"isCollapsed()\"\n [appearance]=\"appearance()\">\n <div side-nav-header>\n <div class=\"side-nav-header-container\">\n <div class=\"side-nav-header {{appearance()}}\" [ngClass]=\"{ collapsed: isCollapsed() }\">\n @if (headerConfig()?.link) {\n <a\n class=\"side-nav-header-title-container\"\n [href]=\"headerConfig()!.link!\"\n [attr.aria-label]=\"headerConfig()?.ariaLabel\"\n (click)=\"handleHeaderClick()\">\n <div class=\"side-nav-header-title\">\n <div class=\"side-nav-header-identifier\">{{ headerConfig()?.identifier }}</div>\n @if (!isCollapsed()) {\n <h1 [ngClass]=\"{ 'hidden': !shouldShowTitle() }\">{{ headerConfig()?.title }}</h1>\n }\n </div>\n </a>\n } @else if (headerConfig()?.onClick) {\n <div\n class=\"side-nav-header-title-container\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"headerConfig()?.ariaLabel\"\n (click)=\"handleHeaderClick()\"\n (keydown)=\"handleHeaderKeyDown($event)\">\n <div class=\"side-nav-header-title\">\n <div class=\"side-nav-header-identifier\">{{ headerConfig()?.identifier }}</div>\n @if (!isCollapsed()) {\n <h1 [ngClass]=\"{ 'hidden': !shouldShowTitle() }\">{{ headerConfig()?.title }}</h1>\n }\n </div>\n </div>\n } @else {\n <div class=\"side-nav-header-title-container\">\n <div class=\"side-nav-header-title\">\n <div class=\"side-nav-header-identifier\">{{ headerConfig()?.identifier }}</div>\n @if (!isCollapsed()) {\n <h1 [ngClass]=\"{ 'hidden': !shouldShowTitle() }\">{{ headerConfig()?.title }}</h1>\n }\n </div>\n </div>\n }\n <div class=\"side-nav-header-version\" [ngClass]=\"{ 'hidden': !shouldShowTitle() }\">\n <span>{{ headerConfig()?.version }}</span>\n </div>\n </div>\n <rte-divider [appearance]=\"dividerAppearance()\"/>\n </div>\n </div>\n <div side-nav-body>\n <div class=\"side-nav-body\">\n <ul>\n @for (item of items(); track item.label) {\n @if (hasNestedItems(item)) {\n <rte-nav-menu\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [open]=\"item.open\"\n [items]=\"item.items || []\"\n [appearance]=\"appearance()\"\n [badge]=\"item.badge\"\n [showDivider]=\"item.showDivider!\"\n (openChange)=\"handleMenuOpenChange($event)\"\n />\n } @else {\n <li>\n <rte-nav-item\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [appearance]=\"appearance()\"\n [active]=\"item.active ?? false\"\n [badge]=\"item.badge\"\n (itemClick)=\"handleItemClick(item.id || item.label)\"></rte-nav-item>\n </li>\n @if (item.showDivider) {\n <rte-divider [appearance]=\"dividerAppearance()\" />\n }\n }\n }\n </ul>\n </div>\n </div>\n @if (footerItems()?.length || collapsible()) {\n <div side-nav-footer>\n <div class=\"side-nav-footer-container\">\n @if (footerItems()?.length) {\n <div class=\"side-nav-footer-items\">\n <ul>\n @for (item of footerItems()!; track item.id || item.label) {\n @if (hasNestedItems(item)) {\n <rte-nav-menu\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [open]=\"item.open\"\n [items]=\"item.items || []\"\n [appearance]=\"appearance()\"\n [badge]=\"item.badge\"\n [showDivider]=\"item.showDivider!\"\n (openChange)=\"handleFooterMenuOpenChange($event)\"\n />\n } @else {\n <li>\n <rte-nav-item\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [appearance]=\"appearance()\"\n [active]=\"item.active ?? false\"\n [badge]=\"item.badge\"\n (itemClick)=\"handleFooterItemClick(item.id || item.label)\"></rte-nav-item>\n </li>\n @if (item.showDivider) {\n <rte-divider [appearance]=\"dividerAppearance()\" />\n }\n }\n }\n </ul>\n </div>\n }\n <rte-divider [appearance]=\"dividerAppearance()\"/>\n @if (collapsible()) {\n <div class=\"side-nav-footer\">\n <div class=\"collapsible-section\">\n <ul>\n <li>\n <rte-nav-item\n [label]=\"isCollapsed() ? 'Ouvrir le menu' : 'R\u00E9duire le menu'\"\n [icon]=\"collapseIcon()\"\n [collapsed]=\"isCollapsed()\"\n [appearance]=\"appearance()\"\n (itemClick)=\"handleCollapseClick()\"\n />\n </li>\n </ul>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <div side-nav-content>\n <ng-content select=\"[content]\"></ng-content>\n </div>\n</rte-base-side-nav>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:wght,FILL,GRAD@400,0,0&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap\";.side-nav-header-container{display:flex;padding:4px;flex-direction:column;justify-content:center;align-items:flex-start;flex-shrink:0;align-self:stretch;height:120px;min-height:120px;max-height:120px}.side-nav-header-container.collapsed{align-items:center;justify-content:center;padding:4px}.side-nav-header{display:flex;position:relative;padding:20px 8px;flex-direction:column;align-items:flex-start;gap:4px;flex:1 0 0;align-self:stretch;height:120px;transition:opacity .3s}.side-nav-header.collapsed{padding:8px;justify-content:center;align-items:center;flex:1 0 0;align-self:stretch}.side-nav-header.collapsed .side-nav-header-title-container{padding:8px;justify-content:center;align-items:center;flex-grow:0;gap:0;align-self:auto}.side-nav-header.collapsed .side-nav-header-title-container .side-nav-header-title{gap:0}.side-nav-header.neutral .side-nav-header-title-container[href]:hover,.side-nav-header.neutral .side-nav-header-title-container[role=button]:hover{background:var(--background-neutral-navigation-hover);box-shadow:0 1px 2px 0 var(--elevation-shadow-key),0 0 2px 0 var(--elevation-shadow-ambient)}.side-nav-header .side-nav-header-title-container{display:flex;padding:0 8px;align-items:center;gap:8px;flex:1 0 0;align-self:stretch;text-decoration:none;color:inherit}.side-nav-header .side-nav-header-title-container[href],.side-nav-header .side-nav-header-title-container[role=button]{cursor:pointer}.side-nav-header .side-nav-header-title-container[href]:hover,.side-nav-header .side-nav-header-title-container[role=button]:hover{border-radius:4px;opacity:100%;background:var(--background-brand-navigation-hover)}.side-nav-header .side-nav-header-title-container .side-nav-header-title{display:flex;align-items:center;gap:8px}.side-nav-header .side-nav-header-title-container .side-nav-header-title .side-nav-header-identifier{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:700;font-size:12px;line-height:16px;letter-spacing:0px;display:flex;flex-direction:column;justify-content:center;align-items:center;flex:1 0 0;align-self:stretch;color:var(--content-brand-navigation-default);text-align:center;-webkit-user-select:none;user-select:none;border-radius:4px;background:var(--background-brand-navigation-pressed);min-width:24px;height:24px}.side-nav-header .side-nav-header-title-container .side-nav-header-title h1{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Nunito;font-weight:600;font-size:16px;line-height:24px;letter-spacing:-.5px;-webkit-user-select:none;user-select:none;align-self:stretch;margin:0;transition:opacity .3s}.side-nav-header .side-nav-header-title-container .side-nav-header-title h1.hidden{opacity:0;max-height:0;padding:0;margin:0}.side-nav-header .side-nav-header-version{display:flex;position:absolute;bottom:4px;right:8px;flex-direction:column;justify-content:flex-end;align-items:flex-end;gap:0px;align-self:stretch;font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:10px;line-height:14px;letter-spacing:0px;transition:opacity .3s,max-height .3s;max-height:50px;overflow:hidden;opacity:1}.side-nav-header .side-nav-header-version.hidden{opacity:0;max-height:0;padding:0;margin:0}.side-nav-body{display:flex;padding:16px 8px;flex-direction:column;align-items:flex-start;gap:8px;flex:1 0 0;overflow-x:hidden;overflow-y:auto;width:100%;box-sizing:border-box}.side-nav-body ul{list-style:none;padding:0;margin:0;width:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:8px}.side-nav-footer-container{padding:8px}.side-nav-footer-container .side-nav-footer{display:flex;flex-direction:column;align-items:center;justify-content:space-between;box-sizing:border-box;width:100%;margin-top:4px}.side-nav-footer-items{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box;margin-bottom:8px}.side-nav-footer-items ul{list-style:none;padding:0;margin:0;width:100%;box-sizing:border-box}.collapsible-section{display:flex;padding:4px 0;flex-direction:column;align-items:flex-start;align-self:stretch}.collapsible-section ul{list-style:none;padding:0;margin:0;width:100%;box-sizing:border-box}\n"] }]
|
|
95
|
+
}], ctorParameters: () => [] });
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYvc2lkZS1uYXYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYvc2lkZS1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk1RyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUd0SCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRXJHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRXpGLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBVWhDLE1BQU0sT0FBTyxnQkFBZ0I7SUFnQjNCO1FBZlMsU0FBSSxHQUFHLEtBQUssQ0FBYyxHQUFrQixDQUFDLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDcEMsaUJBQVksR0FBRyxLQUFLLEVBQW1DLENBQUM7UUFDeEQsVUFBSyxHQUFHLEtB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bnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERpdmlkZXJBcHBlYXJhbmNlIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvZGl2aWRlci9kaXZpZGVyLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgTmF2SXRlbVByb3BzIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvc2lkZS1uYXYvbmF2LWl0ZW0vbmF2LWl0ZW0uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBOYXZNZW51UHJvcHMgfSBmcm9tIFwiQGRlc2lnbi1zeXN0ZW0tcnRlL2NvcmUvY29tcG9uZW50cy9zaWRlLW5hdi9uYXYtbWVudS9uYXYtbWVudS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IGRpdmlkZXJBcHBlYXJhbmNlQnlTaWRlTmF2QXBwZWFyYW5jZSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL3NpZGUtbmF2L3NpZGUtbmF2LmNvbnN0YW50c1wiO1xuaW1wb3J0IHsgU2lkZU5hdkFwcGVhcmFuY2UsIFNpZGVOYXZIZWFkZXJDb25maWcgfSBmcm9tIFwiQGRlc2lnbi1zeXN0ZW0tcnRlL2NvcmUvY29tcG9uZW50cy9zaWRlLW5hdi9zaWRlLW5hdi5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFNpZGVOYXZTaXplIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvc2lkZS1uYXYvc2lkZS1uYXYuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBFTlRFUl9LRVksIFNQQUNFX0tFWSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb25zdGFudHMva2V5Ym9hcmQva2V5Ym9hcmQuY29uc3RhbnRzXCI7XG5cbmltcG9ydCB7IERpdmlkZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGl2aWRlci9kaXZpZGVyLmNvbXBvbmVudFwiO1xuXG5pbXBvcnQgeyBCYXNlU2lkZU5hdkNvbXBvbmVudCB9IGZyb20gXCIuL2Jhc2Utc2lkZS1uYXYvYmFzZS1zaWRlLW5hdi5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5hdkl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi9uYXYtaXRlbS9uYXYtaXRlbS5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5hdk1lbnVDb21wb25lbnQsIE5hdk1lbnVPcGVuQ2hhbmdlRXZlbnQgfSBmcm9tIFwiLi9uYXYtbWVudS9uYXYtbWVudS5jb21wb25lbnRcIjtcblxuY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDMwMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInJ0ZS1zaWRlLW5hdlwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCYXNlU2lkZU5hdkNvbXBvbmVudCwgRGl2aWRlckNvbXBvbmVudCwgTmF2SXRlbUNvbXBvbmVudCwgTmF2TWVudUNvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2lkZS1uYXYuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmw6IFwiLi9zaWRlLW5hdi5jb21wb25lbnQuc2Nzc1wiLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdkNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dDxTaWRlTmF2U2l6ZT4oXCJtXCIgYXMgU2lkZU5hdlNpemUpO1xuICByZWFkb25seSBjb2xsYXBzaWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgaGVhZGVyQ29uZmlnID0gaW5wdXQ8U2lkZU5hdkhlYWRlckNvbmZpZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgaXRlbXMgPSBpbnB1dDxOYXZJdGVtUHJvcHNbXT4oW10pO1xuICByZWFkb25seSBmb290ZXJJdGVtcyA9IGlucHV0PE5hdkl0ZW1Qcm9wc1tdIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBjb2xsYXBzZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxTaWRlTmF2QXBwZWFyYW5jZT4oXCJicmFuZFwiKTtcblxuICByZWFkb25seSBpc0NvbGxhcHNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaXRsZSA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBpdGVtQ2xpY2tlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSB0aXRsZVRpbWVvdXRJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNDb2xsYXBzZWQuc2V0KHRoaXMuY29sbGFwc2VkKCkpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50aXRsZVRpbWVvdXRJZCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpdGxlVGltZW91dElkKTtcbiAgICAgICAgICB0aGlzLnRpdGxlVGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkKCkpIHtcbiAgICAgICAgICB0aGlzLnNob3VsZFNob3dUaXRsZS5zZXQoZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudGl0bGVUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvdWxkU2hvd1RpdGxlLnNldCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMudGl0bGVUaW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgIH0sIFRSQU5TSVRJT05fRFVSQVRJT04pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICByZWFkb25seSBjb2xsYXBzZUljb24gPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5pc0NvbGxhcHNlZCgpID8gXCJhcnJvdy1kb3VibGUtcmlnaHRcIiA6IFwiYXJyb3ctZG91YmxlLWxlZnRcIjtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZGl2aWRlckFwcGVhcmFuY2UgPSBjb21wdXRlZDxEaXZpZGVyQXBwZWFyYW5jZT4oKCkgPT4ge1xuICAgIHJldHVybiBkaXZpZGVyQXBwZWFyYW5jZUJ5U2lkZU5hdkFwcGVhcmFuY2VbdGhpcy5hcHBlYXJhbmNlKCldO1xuICB9KTtcblxuICBoYW5kbGVIZWFkZXJLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFtTUEFDRV9LRVksIEVOVEVSX0tFWV0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuaGVhZGVyQ29uZmlnKCk7XG4gICAgICBpZiAoY29uZmlnPy5vbkNsaWNrKSB7XG4gICAgICAgIGNvbmZpZy5vbkNsaWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSGVhZGVyQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5oZWFkZXJDb25maWcoKTtcbiAgICBpZiAoY29uZmlnPy5vbkNsaWNrKSB7XG4gICAgICBjb25maWcub25DbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIGhhc05lc3RlZEl0ZW1zKGl0ZW06IE5hdkl0ZW1Qcm9wcyk6IGl0ZW0gaXMgTmF2TWVudVByb3BzIHtcbiAgICByZXR1cm4gISFpdGVtLml0ZW1zPy5sZW5ndGg7XG4gIH1cblxuICBoYW5kbGVJdGVtQ2xpY2soaXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1DbGlja2VkLmVtaXQoaXRlbUlkKTtcbiAgfVxuXG4gIGhhbmRsZUZvb3Rlckl0ZW1DbGljayhpdGVtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbUNsaWNrZWQuZW1pdChpdGVtSWQpO1xuICB9XG5cbiAgaGFuZGxlTWVudU9wZW5DaGFuZ2UoZXZlbnQ6IE5hdk1lbnVPcGVuQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXRNZW51ID0gdGhpcy5pdGVtcygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGV2ZW50LmlkKTtcbiAgICBpZiAodGFyZ2V0TWVudSkge1xuICAgICAgKHRhcmdldE1lbnUgYXMgTmF2TWVudVByb3BzKS5vcGVuID0gZXZlbnQub3BlbjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVGb290ZXJNZW51T3BlbkNoYW5nZShldmVudDogTmF2TWVudU9wZW5DaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldE1lbnUgPSB0aGlzLmZvb3Rlckl0ZW1zKCk/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGV2ZW50LmlkKTtcbiAgICBpZiAodGFyZ2V0TWVudSkge1xuICAgICAgKHRhcmdldE1lbnUgYXMgTmF2TWVudVByb3BzKS5vcGVuID0gZXZlbnQub3BlbjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDb2xsYXBzZUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuaXNDb2xsYXBzZWQuc2V0KCF0aGlzLmlzQ29sbGFwc2VkKCkpO1xuICB9XG59XG4iLCI8cnRlLWJhc2Utc2lkZS1uYXZcbiAgW3NpemVdPVwic2l6ZSgpXCJcbiAgW2NvbGxhcHNlZF09XCJpc0NvbGxhcHNlZCgpXCJcbiAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCI+XG4gIDxkaXYgc2lkZS1uYXYtaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1oZWFkZXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyIHt7YXBwZWFyYW5jZSgpfX1cIiBbbmdDbGFzc109XCJ7IGNvbGxhcHNlZDogaXNDb2xsYXBzZWQoKSB9XCI+XG4gICAgICAgIEBpZiAoaGVhZGVyQ29uZmlnKCk/LmxpbmspIHtcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJzaWRlLW5hdi1oZWFkZXItdGl0bGUtY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtocmVmXT1cImhlYWRlckNvbmZpZygpIS5saW5rIVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImhlYWRlckNvbmZpZygpPy5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUhlYWRlckNsaWNrKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1oZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci1pZGVudGlmaWVyXCI+e3sgaGVhZGVyQ29uZmlnKCk/LmlkZW50aWZpZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgQGlmICghaXNDb2xsYXBzZWQoKSkge1xuICAgICAgICAgICAgICAgIDxoMSBbbmdDbGFzc109XCJ7ICdoaWRkZW4nOiAhc2hvdWxkU2hvd1RpdGxlKCkgfVwiPnt7IGhlYWRlckNvbmZpZygpPy50aXRsZSB9fTwvaDE+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgfSBAZWxzZSBpZiAoaGVhZGVyQ29uZmlnKCk/Lm9uQ2xpY2spIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZS1jb250YWluZXJcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJoZWFkZXJDb25maWcoKT8uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVIZWFkZXJDbGljaygpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUhlYWRlcktleURvd24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLWlkZW50aWZpZXJcIj57eyBoZWFkZXJDb25maWcoKT8uaWRlbnRpZmllciB9fTwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKCFpc0NvbGxhcHNlZCgpKSB7XG4gICAgICAgICAgICAgICAgPGgxIFtuZ0NsYXNzXT1cInsgJ2hpZGRlbic6ICFzaG91bGRTaG93VGl0bGUoKSB9XCI+e3sgaGVhZGVyQ29uZmlnKCk/LnRpdGxlIH19PC9oMT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1oZWFkZXItdGl0bGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLXRpdGxlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1oZWFkZXItaWRlbnRpZmllclwiPnt7IGhlYWRlckNvbmZpZygpPy5pZGVudGlmaWVyIH19PC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoIWlzQ29sbGFwc2VkKCkpIHtcbiAgICAgICAgICAgICAgICA8aDEgW25nQ2xhc3NdPVwieyAnaGlkZGVuJzogIXNob3VsZFNob3dUaXRsZSgpIH1cIj57eyBoZWFkZXJDb25maWcoKT8udGl0bGUgfX08L2gxPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLXZlcnNpb25cIiBbbmdDbGFzc109XCJ7ICdoaWRkZW4nOiAhc2hvdWxkU2hvd1RpdGxlKCkgfVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGhlYWRlckNvbmZpZygpPy52ZXJzaW9uIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHJ0ZS1kaXZpZGVyIFthcHBlYXJhbmNlXT1cImRpdmlkZXJBcHBlYXJhbmNlKClcIi8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IHNpZGUtbmF2LWJvZHk+XG4gICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWJvZHlcIj5cbiAgICAgIDx1bD5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtLmxhYmVsKSB7XG4gICAgICAgICAgQGlmIChoYXNOZXN0ZWRJdGVtcyhpdGVtKSkge1xuICAgICAgICAgICAgPHJ0ZS1uYXYtbWVudVxuICAgICAgICAgICAgICBbaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgW3Nob3dJY29uXT1cIml0ZW0uc2hvd0ljb24gPz8gdHJ1ZVwiXG4gICAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwiaXNDb2xsYXBzZWQoKVwiXG4gICAgICAgICAgICAgIFtsaW5rXT1cIml0ZW0ubGlua1wiXG4gICAgICAgICAgICAgIFtvcGVuXT1cIml0ZW0ub3BlblwiXG4gICAgICAgICAgICAgIFtpdGVtc109XCJpdGVtLml0ZW1zIHx8IFtdXCJcbiAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCJcbiAgICAgICAgICAgICAgW2JhZGdlXT1cIml0ZW0uYmFkZ2VcIlxuICAgICAgICAgICAgICBbc2hvd0RpdmlkZXJdPVwiaXRlbS5zaG93RGl2aWRlciFcIlxuICAgICAgICAgICAgICAob3BlbkNoYW5nZSk9XCJoYW5kbGVNZW51T3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxydGUtbmF2LWl0ZW1cbiAgICAgICAgICAgICAgICBbaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgICAgW3Nob3dJY29uXT1cIml0ZW0uc2hvd0ljb24gPz8gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2NvbGxhcHNlZF09XCJpc0NvbGxhcHNlZCgpXCJcbiAgICAgICAgICAgICAgICBbbGlua109XCJpdGVtLmxpbmtcIlxuICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJpdGVtLmFjdGl2ZSA/PyBmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2JhZGdlXT1cIml0ZW0uYmFkZ2VcIlxuICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwiaGFuZGxlSXRlbUNsaWNrKGl0ZW0uaWQgfHwgaXRlbS5sYWJlbClcIj48L3J0ZS1uYXYtaXRlbT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICBAaWYgKGl0ZW0uc2hvd0RpdmlkZXIpIHtcbiAgICAgICAgICAgICAgPHJ0ZS1kaXZpZGVyIFthcHBlYXJhbmNlXT1cImRpdmlkZXJBcHBlYXJhbmNlKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIEBpZiAoZm9vdGVySXRlbXMoKT8ubGVuZ3RoIHx8IGNvbGxhcHNpYmxlKCkpIHtcbiAgICA8ZGl2IHNpZGUtbmF2LWZvb3Rlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1mb290ZXItY29udGFpbmVyXCI+XG4gICAgICAgIEBpZiAoZm9vdGVySXRlbXMoKT8ubGVuZ3RoKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWZvb3Rlci1pdGVtc1wiPlxuICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZvb3Rlckl0ZW1zKCkhOyB0cmFjayBpdGVtLmlkIHx8IGl0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBAaWYgKGhhc05lc3RlZEl0ZW1zKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICA8cnRlLW5hdi1tZW51XG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd0ljb25dPVwiaXRlbS5zaG93SWNvbiA/PyB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbGxhcHNlZF09XCJpc0NvbGxhcHNlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2xpbmtdPVwiaXRlbS5saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgW29wZW5dPVwiaXRlbS5vcGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIml0ZW0uaXRlbXMgfHwgW11cIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIlxuICAgICAgICAgICAgICAgICAgICBbYmFkZ2VdPVwiaXRlbS5iYWRnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93RGl2aWRlcl09XCJpdGVtLnNob3dEaXZpZGVyIVwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuQ2hhbmdlKT1cImhhbmRsZUZvb3Rlck1lbnVPcGVuQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgPHJ0ZS1uYXYtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0ljb25dPVwiaXRlbS5zaG93SWNvbiA/PyB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sbGFwc2VkXT1cImlzQ29sbGFwc2VkKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsaW5rXT1cIml0ZW0ubGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlXT1cIml0ZW0uYWN0aXZlID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYmFkZ2VdPVwiaXRlbS5iYWRnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGl0ZW1DbGljayk9XCJoYW5kbGVGb290ZXJJdGVtQ2xpY2soaXRlbS5pZCB8fCBpdGVtLmxhYmVsKVwiPjwvcnRlLW5hdi1pdGVtPlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zaG93RGl2aWRlcikge1xuICAgICAgICAgICAgICAgICAgICA8cnRlLWRpdmlkZXIgW2FwcGVhcmFuY2VdPVwiZGl2aWRlckFwcGVhcmFuY2UoKVwiIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxydGUtZGl2aWRlciBbYXBwZWFyYW5jZV09XCJkaXZpZGVyQXBwZWFyYW5jZSgpXCIvPlxuICAgICAgICBAaWYgKGNvbGxhcHNpYmxlKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sbGFwc2libGUtc2VjdGlvblwiPlxuICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgPHJ0ZS1uYXYtaXRlbVxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXNDb2xsYXBzZWQoKSA/ICdPdXZyaXIgbGUgbWVudScgOiAnUsOpZHVpcmUgbGUgbWVudSdcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjb2xsYXBzZUljb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwiaXNDb2xsYXBzZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwiaGFuZGxlQ29sbGFwc2VDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuICA8ZGl2IHNpZGUtbmF2LWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvcnRlLWJhc2Utc2lkZS1uYXY+XG4iXX0=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { CommonModule } from "@angular/common";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, input, computed, signal, output } from "@angular/core";
|
|
3
|
+
import { IconSize, IconTypeMap } from "@design-system-rte/core/components/icon/icon.constants";
|
|
4
|
+
import { ButtonComponent } from "../button/button.component";
|
|
5
|
+
import { IconComponent } from "../icon/icon.component";
|
|
6
|
+
import { IconButtonComponent } from "../icon-button/icon-button.component";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
export class ToastComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.id = input("");
|
|
12
|
+
this.message = input("");
|
|
13
|
+
this.type = input("info");
|
|
14
|
+
this.duration = input("medium");
|
|
15
|
+
this.isOpen = input(false);
|
|
16
|
+
this.placement = input("bottom-right");
|
|
17
|
+
this.closable = input(true);
|
|
18
|
+
this.autoDismiss = input(true);
|
|
19
|
+
this.showActionButton = input(true);
|
|
20
|
+
this.iconName = input("");
|
|
21
|
+
this.showLeftIcon = input(true);
|
|
22
|
+
this.actionButtonLabel = input("");
|
|
23
|
+
this.onActionButtonClick = input(() => { });
|
|
24
|
+
this.close = output();
|
|
25
|
+
this.displayCustomIcon = computed(() => {
|
|
26
|
+
console.log("iconName", this.iconName());
|
|
27
|
+
return this.showLeftIcon() && !!this.iconName();
|
|
28
|
+
});
|
|
29
|
+
this.displayLeftIcon = computed(() => {
|
|
30
|
+
return this.showLeftIcon() && IconTypeMap[this.type()];
|
|
31
|
+
});
|
|
32
|
+
this.displayActionButton = computed(() => {
|
|
33
|
+
return this.showActionButton() && this.actionButtonLabel() && !!this.onActionButtonClick();
|
|
34
|
+
});
|
|
35
|
+
this.position = computed(() => this.placement()?.split("-")[0]);
|
|
36
|
+
this.alignment = computed(() => this.placement()?.split("-")[1]);
|
|
37
|
+
this.visible = signal(false);
|
|
38
|
+
this.defaultIconName = computed(() => IconTypeMap[this.type()]);
|
|
39
|
+
this.iconSize = IconSize["xl"];
|
|
40
|
+
}
|
|
41
|
+
onClickActionButton() {
|
|
42
|
+
const action = this.onActionButtonClick();
|
|
43
|
+
if (action) {
|
|
44
|
+
action();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
clickCloseButton() {
|
|
48
|
+
this.close.emit();
|
|
49
|
+
}
|
|
50
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
51
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToastComponent, isStandalone: true, selector: "rte-toast", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, autoDismiss: { classPropertyName: "autoDismiss", publicName: "autoDismiss", isSignal: true, isRequired: false, transformFunction: null }, showActionButton: { classPropertyName: "showActionButton", publicName: "showActionButton", isSignal: true, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, showLeftIcon: { classPropertyName: "showLeftIcon", publicName: "showLeftIcon", isSignal: true, isRequired: false, transformFunction: null }, actionButtonLabel: { classPropertyName: "actionButtonLabel", publicName: "actionButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, onActionButtonClick: { classPropertyName: "onActionButtonClick", publicName: "onActionButtonClick", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { close: "close" }, ngImport: i0, template: "<div\n class=\"rte-toast {{ type() }} {{ position() }} {{ alignment() }}\"\n role=\"status\"\n ref=\"{ref}\"\n [ngClass]=\"{ open: isOpen() }\"\n>\n <div class=\"rte-toast-content\">\n @if (displayLeftIcon()) {\n <rte-icon\n class=\"rte-toast-icon\"\n aria-hidden=\"true\"\n [name]=\"defaultIconName()\"\n [size]=\"iconSize\"\n />\n } @else {\n @if (displayCustomIcon()) {\n <rte-icon\n class=\"rte-toast-icon\"\n aria-hidden=\"true\"\n [name]=\"iconName()!\"\n [size]=\"iconSize\"\n />\n }\n }\n <span class=\"rte-toast-message\">{{ message() }}</span>\n </div>\n @if (displayActionButton()) {\n <button\n rteButton\n rteButtonVariant=\"text\"\n class=\"rte-toast-action-button\"\n (click)=\"onClickActionButton()\"\n >\n {{ actionButtonLabel() }}\n </button>\n }\n @if (closable()) {\n <rte-icon-button\n name=\"close\"\n [attr.data-testid]=\"'toast-close-button'\"\n [variant]=\"type() === 'neutral' ? 'reverse' : 'neutral'\"\n (click)=\"clickCloseButton()\"\n />\n }\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:wght,FILL,GRAD@400,0,0&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap\";.rte-toast{box-shadow:0 2px 4px 0 var(--elevation-shadow-key),0 0 2px 0 var(--elevation-shadow-ambient);background:linear-gradient(0deg,var(--elevation-surface-shadow-2) 0%,var(--elevation-surface-shadow-2) 100%);display:flex;width:400px;min-width:240px;max-width:336px;padding:8px 4px 8px 16px;align-items:center;border-radius:4px;border-bottom:4px solid var(--border-info);color:var(--content-primary);background-color:var(--background-default);z-index:10;position:fixed;inset:auto;opacity:0;transition:opacity .3s ease,transform .2s ease}.rte-toast.top{top:12px}.rte-toast.bottom{bottom:12px}.rte-toast.bottom.center{left:50%;transform:translate(-50%,10px)}.rte-toast.bottom.center.open{opacity:1;transform:translate(-50%)}.rte-toast.left{left:12px;transform:translate(-10px)}.rte-toast.left.open{opacity:1;transform:translate(0)}.rte-toast.right{right:12px;transform:translate(10px)}.rte-toast.right.open{opacity:1;transform:translate(0)}.rte-toast .rte-toast-message{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:12px;line-height:16px;letter-spacing:0px;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;width:100%;-webkit-line-clamp:2;line-clamp:2}.rte-toast .rte-toast-icon{flex:1 0 auto}.rte-toast .rte-toast-content{display:flex;align-items:center;gap:12px;flex-grow:1;overflow:hidden;width:100%}.rte-toast.info{border-bottom-color:var(--border-info)}.rte-toast.info .rte-toast-icon{color:var(--content-info-default)}.rte-toast.error{border-bottom-color:var(--border-danger)}.rte-toast.error .rte-toast-icon{color:var(--content-danger-default)}.rte-toast.success{border-bottom-color:var(--border-success)}.rte-toast.success .rte-toast-icon{color:var(--content-success-default)}.rte-toast.warning{border-bottom-color:var(--border-warning)}.rte-toast.warning .rte-toast-icon{color:var(--content-warning-default)}.rte-toast.neutral{background-color:var(--background-inverse);color:var(--content-primary-inverse);border-bottom-color:var(--border-primary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconComponent, selector: "rte-icon", inputs: ["name", "size", "color", "classes", "appearance"] }, { kind: "component", type: IconButtonComponent, selector: "rte-icon-button", inputs: ["disabled", "name", "size", "variant", "type", "appearance", "compactSpacing", "ariaLabel", "ariaLabelledBy", "badgeCount", "badgeContent", "badgeType", "badgeIcon"], outputs: ["click"] }, { kind: "component", type: ButtonComponent, selector: "button[rteButton]", inputs: ["rteButtonVariant", "rteButtonSize", "rteBadgeCount", "rteBadgeContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
52
|
+
}
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastComponent, decorators: [{
|
|
54
|
+
type: Component,
|
|
55
|
+
args: [{ selector: "rte-toast", imports: [CommonModule, IconComponent, IconButtonComponent, ButtonComponent], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"rte-toast {{ type() }} {{ position() }} {{ alignment() }}\"\n role=\"status\"\n ref=\"{ref}\"\n [ngClass]=\"{ open: isOpen() }\"\n>\n <div class=\"rte-toast-content\">\n @if (displayLeftIcon()) {\n <rte-icon\n class=\"rte-toast-icon\"\n aria-hidden=\"true\"\n [name]=\"defaultIconName()\"\n [size]=\"iconSize\"\n />\n } @else {\n @if (displayCustomIcon()) {\n <rte-icon\n class=\"rte-toast-icon\"\n aria-hidden=\"true\"\n [name]=\"iconName()!\"\n [size]=\"iconSize\"\n />\n }\n }\n <span class=\"rte-toast-message\">{{ message() }}</span>\n </div>\n @if (displayActionButton()) {\n <button\n rteButton\n rteButtonVariant=\"text\"\n class=\"rte-toast-action-button\"\n (click)=\"onClickActionButton()\"\n >\n {{ actionButtonLabel() }}\n </button>\n }\n @if (closable()) {\n <rte-icon-button\n name=\"close\"\n [attr.data-testid]=\"'toast-close-button'\"\n [variant]=\"type() === 'neutral' ? 'reverse' : 'neutral'\"\n (click)=\"clickCloseButton()\"\n />\n }\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:wght,FILL,GRAD@400,0,0&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap\";.rte-toast{box-shadow:0 2px 4px 0 var(--elevation-shadow-key),0 0 2px 0 var(--elevation-shadow-ambient);background:linear-gradient(0deg,var(--elevation-surface-shadow-2) 0%,var(--elevation-surface-shadow-2) 100%);display:flex;width:400px;min-width:240px;max-width:336px;padding:8px 4px 8px 16px;align-items:center;border-radius:4px;border-bottom:4px solid var(--border-info);color:var(--content-primary);background-color:var(--background-default);z-index:10;position:fixed;inset:auto;opacity:0;transition:opacity .3s ease,transform .2s ease}.rte-toast.top{top:12px}.rte-toast.bottom{bottom:12px}.rte-toast.bottom.center{left:50%;transform:translate(-50%,10px)}.rte-toast.bottom.center.open{opacity:1;transform:translate(-50%)}.rte-toast.left{left:12px;transform:translate(-10px)}.rte-toast.left.open{opacity:1;transform:translate(0)}.rte-toast.right{right:12px;transform:translate(10px)}.rte-toast.right.open{opacity:1;transform:translate(0)}.rte-toast .rte-toast-message{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:12px;line-height:16px;letter-spacing:0px;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;width:100%;-webkit-line-clamp:2;line-clamp:2}.rte-toast .rte-toast-icon{flex:1 0 auto}.rte-toast .rte-toast-content{display:flex;align-items:center;gap:12px;flex-grow:1;overflow:hidden;width:100%}.rte-toast.info{border-bottom-color:var(--border-info)}.rte-toast.info .rte-toast-icon{color:var(--content-info-default)}.rte-toast.error{border-bottom-color:var(--border-danger)}.rte-toast.error .rte-toast-icon{color:var(--content-danger-default)}.rte-toast.success{border-bottom-color:var(--border-success)}.rte-toast.success .rte-toast-icon{color:var(--content-success-default)}.rte-toast.warning{border-bottom-color:var(--border-warning)}.rte-toast.warning .rte-toast-icon{color:var(--content-warning-default)}.rte-toast.neutral{background-color:var(--background-inverse);color:var(--content-primary-inverse);border-bottom-color:var(--border-primary)}\n"] }]
|
|
56
|
+
}] });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFHL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7O0FBVTNFLE1BQU0sT0FBTyxjQUFjO0lBUjNCO1FBU1csT0FBRSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUN2QixZQUFPLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLFNBQUksR0FBRyxLQUFLLENBQVksTUFBTSxDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFHLEtBQUssQ0FBeUIsUUFBUSxDQUFDLENBQUM7UUFDbkQsV0FBTSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMvQixjQUFTLEdBQUcsS0FBSyxDQUEwQixjQUFjLENBQUMsQ0FBQztRQUMzRCxhQUFRLEdBQUcsS0FBSyxDQUF5QixJQUFJLENBQUMsQ0FBQztRQUMvQyxnQkFBVyxHQUFHLEtBQUssQ0FBNEIsSUFBSSxDQUFDLENBQUM7UUFDckQscUJBQWdCLEdBQUcsS0FBSyxDQUFpQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxhQUFRLEdBQUcsS0FBSyxDQUF5QixFQUFFLENBQUMsQ0FBQztRQUM3QyxpQkFBWSxHQUFHLEtBQUssQ0FBNkIsSUFBSSxDQUFDLENBQUM7UUFFdkQsc0JBQWlCLEdBQUcsS0FBSyxDQUFrQyxFQUFFLENBQUMsQ0FBQztRQUMvRCx3QkFBbUIsR0FBRyxLQUFLLENBQW9DLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXpFLFVBQUssR0FBRyxNQUFNLEVBQVEsQ0FBQztRQUV2QixzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFFTSxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO1FBRU0sd0JBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3RixDQUFDLENBQUMsQ0FBQztRQWFNLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVELFlBQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEIsb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0QsYUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNwQztJQWxCQyxtQkFBbUI7UUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDMUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sRUFBRSxDQUFDO1FBQ1gsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7K0dBeENVLGNBQWM7bUdBQWQsY0FBYyxnMERDakIzQiwwb0NBNkNBLDR3RURsQ1ksWUFBWSw2SEFBRSxhQUFhLGlIQUFFLG1CQUFtQixnUUFBRSxlQUFlOzs0RkFNaEUsY0FBYztrQkFSMUIsU0FBUzsrQkFDRSxXQUFXLFdBQ1osQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxjQUNoRSxJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCwgY29tcHV0ZWQsIHNpZ25hbCwgb3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEljb25TaXplLCBJY29uVHlwZU1hcCB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL2ljb24vaWNvbi5jb25zdGFudHNcIjtcbmltcG9ydCB7IFRvYXN0UHJvcHMsIFRvYXN0VHlwZSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL3RvYXN0L3RvYXN0LmludGVyZmFjZVwiO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tIFwiLi4vaWNvbi9pY29uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInJ0ZS10b2FzdFwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJY29uQ29tcG9uZW50LCBJY29uQnV0dG9uQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnRdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogXCIuL3RvYXN0LmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsOiBcIi4vdG9hc3QuY29tcG9uZW50LnNjc3NcIixcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0Q29tcG9uZW50IHtcbiAgcmVhZG9ubHkgaWQgPSBpbnB1dDxzdHJpbmc+KFwiXCIpO1xuICByZWFkb25seSBtZXNzYWdlID0gaW5wdXQ8c3RyaW5nPihcIlwiKTtcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0PFRvYXN0VHlwZT4oXCJpbmZvXCIpO1xuICByZWFkb25seSBkdXJhdGlvbiA9IGlucHV0PFRvYXN0UHJvcHNbXCJkdXJhdGlvblwiXT4oXCJtZWRpdW1cIik7XG4gIHJlYWRvbmx5IGlzT3BlbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgcGxhY2VtZW50ID0gaW5wdXQ8VG9hc3RQcm9wc1tcInBsYWNlbWVudFwiXT4oXCJib3R0b20tcmlnaHRcIik7XG4gIHJlYWRvbmx5IGNsb3NhYmxlID0gaW5wdXQ8VG9hc3RQcm9wc1tcImNsb3NhYmxlXCJdPih0cnVlKTtcbiAgcmVhZG9ubHkgYXV0b0Rpc21pc3MgPSBpbnB1dDxUb2FzdFByb3BzW1wiYXV0b0Rpc21pc3NcIl0+KHRydWUpO1xuICByZWFkb25seSBzaG93QWN0aW9uQnV0dG9uID0gaW5wdXQ8VG9hc3RQcm9wc1tcInNob3dBY3Rpb25CdXR0b25cIl0+KHRydWUpO1xuICByZWFkb25seSBpY29uTmFtZSA9IGlucHV0PFRvYXN0UHJvcHNbXCJpY29uTmFtZVwiXT4oXCJcIik7XG4gIHJlYWRvbmx5IHNob3dMZWZ0SWNvbiA9IGlucHV0PFRvYXN0UHJvcHNbXCJzaG93TGVmdEljb25cIl0+KHRydWUpO1xuXG4gIHJlYWRvbmx5IGFjdGlvbkJ1dHRvbkxhYmVsID0gaW5wdXQ8VG9hc3RQcm9wc1tcImFjdGlvbkJ1dHRvbkxhYmVsXCJdPihcIlwiKTtcbiAgcmVhZG9ubHkgb25BY3Rpb25CdXR0b25DbGljayA9IGlucHV0PFRvYXN0UHJvcHNbXCJvbkFjdGlvbkJ1dHRvbkNsaWNrXCJdPigoKSA9PiB7fSk7XG5cbiAgcmVhZG9ubHkgY2xvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICByZWFkb25seSBkaXNwbGF5Q3VzdG9tSWNvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcImljb25OYW1lXCIsIHRoaXMuaWNvbk5hbWUoKSk7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0xlZnRJY29uKCkgJiYgISF0aGlzLmljb25OYW1lKCk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlMZWZ0SWNvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zaG93TGVmdEljb24oKSAmJiBJY29uVHlwZU1hcFt0aGlzLnR5cGUoKV07XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlBY3Rpb25CdXR0b24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0FjdGlvbkJ1dHRvbigpICYmIHRoaXMuYWN0aW9uQnV0dG9uTGFiZWwoKSAmJiAhIXRoaXMub25BY3Rpb25CdXR0b25DbGljaygpO1xuICB9KTtcblxuICBvbkNsaWNrQWN0aW9uQnV0dG9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMub25BY3Rpb25CdXR0b25DbGljaygpO1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgIGFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIGNsaWNrQ2xvc2VCdXR0b24oKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gIH1cblxuICByZWFkb25seSBwb3NpdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGxhY2VtZW50KCk/LnNwbGl0KFwiLVwiKVswXSk7XG4gIHJlYWRvbmx5IGFsaWdubWVudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGxhY2VtZW50KCk/LnNwbGl0KFwiLVwiKVsxXSk7XG5cbiAgcmVhZG9ubHkgdmlzaWJsZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgZGVmYXVsdEljb25OYW1lID0gY29tcHV0ZWQoKCkgPT4gSWNvblR5cGVNYXBbdGhpcy50eXBlKCldKTtcbiAgcmVhZG9ubHkgaWNvblNpemUgPSBJY29uU2l6ZVtcInhsXCJdO1xufVxuIiwiPGRpdlxuICBjbGFzcz1cInJ0ZS10b2FzdCB7eyB0eXBlKCkgfX0ge3sgcG9zaXRpb24oKSB9fSB7eyBhbGlnbm1lbnQoKSB9fVwiXG4gIHJvbGU9XCJzdGF0dXNcIlxuICByZWY9XCJ7cmVmfVwiXG4gIFtuZ0NsYXNzXT1cInsgb3BlbjogaXNPcGVuKCkgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJydGUtdG9hc3QtY29udGVudFwiPlxuICAgIEBpZiAoZGlzcGxheUxlZnRJY29uKCkpIHtcbiAgICAgIDxydGUtaWNvblxuICAgICAgICBjbGFzcz1cInJ0ZS10b2FzdC1pY29uXCJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgW25hbWVdPVwiZGVmYXVsdEljb25OYW1lKClcIlxuICAgICAgICBbc2l6ZV09XCJpY29uU2l6ZVwiXG4gICAgICAvPlxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIChkaXNwbGF5Q3VzdG9tSWNvbigpKSB7XG4gICAgICAgIDxydGUtaWNvblxuICAgICAgICAgIGNsYXNzPVwicnRlLXRvYXN0LWljb25cIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgW25hbWVdPVwiaWNvbk5hbWUoKSFcIlxuICAgICAgICAgIFtzaXplXT1cImljb25TaXplXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICB9XG4gICAgPHNwYW4gY2xhc3M9XCJydGUtdG9hc3QtbWVzc2FnZVwiPnt7IG1lc3NhZ2UoKSB9fTwvc3Bhbj5cbiAgPC9kaXY+XG4gIEBpZiAoZGlzcGxheUFjdGlvbkJ1dHRvbigpKSB7XG4gICAgPGJ1dHRvblxuICAgICAgcnRlQnV0dG9uXG4gICAgICBydGVCdXR0b25WYXJpYW50PVwidGV4dFwiXG4gICAgICBjbGFzcz1cInJ0ZS10b2FzdC1hY3Rpb24tYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrQWN0aW9uQnV0dG9uKClcIlxuICAgID5cbiAgICAgIHt7IGFjdGlvbkJ1dHRvbkxhYmVsKCkgfX1cbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKGNsb3NhYmxlKCkpIHtcbiAgICA8cnRlLWljb24tYnV0dG9uXG4gICAgICBuYW1lPVwiY2xvc2VcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ3RvYXN0LWNsb3NlLWJ1dHRvbidcIlxuICAgICAgW3ZhcmlhbnRdPVwidHlwZSgpID09PSAnbmV1dHJhbCcgPyAncmV2ZXJzZScgOiAnbmV1dHJhbCdcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrQ2xvc2VCdXR0b24oKVwiXG4gICAgLz5cbiAgfVxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Injectable, ViewContainerRef, inject, signal, effect } from "@angular/core";
|
|
2
|
+
import { getToastPriority } from "@design-system-rte/core/components/toast/toast.utils";
|
|
3
|
+
import { v4 as uuidv4 } from "uuid";
|
|
4
|
+
import { OverlayService } from "../../services/overlay.service";
|
|
5
|
+
import { ToastComponent } from "./toast.component";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class ToastService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
10
|
+
this.currentOpenedToastRef = null;
|
|
11
|
+
this.toastQueue = signal([]);
|
|
12
|
+
this.overlayService = inject(OverlayService);
|
|
13
|
+
effect(() => {
|
|
14
|
+
const toastToOpen = this.toastQueue()[0];
|
|
15
|
+
if (!toastToOpen) {
|
|
16
|
+
this.currentOpenedToastRef = null;
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (this.currentOpenedToastRef?.instance.id() === toastToOpen.instance.id()) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
if (this.currentOpenedToastRef) {
|
|
24
|
+
this.currentOpenedToastRef.setInput("isOpen", false);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
this.overlayService.addToOverlay(toastToOpen);
|
|
28
|
+
requestAnimationFrame(() => {
|
|
29
|
+
requestAnimationFrame(() => {
|
|
30
|
+
toastToOpen.setInput("isOpen", true);
|
|
31
|
+
this.currentOpenedToastRef = toastToOpen;
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
getAllToasts() {
|
|
37
|
+
return this.toastQueue();
|
|
38
|
+
}
|
|
39
|
+
getCurrentOpenedToast() {
|
|
40
|
+
return this.currentOpenedToastRef;
|
|
41
|
+
}
|
|
42
|
+
isInQueue(toastId) {
|
|
43
|
+
return this.toastQueue().some((toast) => toast.instance.id() === toastId);
|
|
44
|
+
}
|
|
45
|
+
addToQueue(config) {
|
|
46
|
+
const toast = this.build(config);
|
|
47
|
+
toast.instance.close.subscribe(() => {
|
|
48
|
+
this.removeFromQueue(toast.instance.id());
|
|
49
|
+
});
|
|
50
|
+
this.toastQueue.update((list) => [...list, toast].sort((a, b) => {
|
|
51
|
+
const priorityA = getToastPriority({
|
|
52
|
+
hasActionButton: a.instance.showActionButton(),
|
|
53
|
+
type: a.instance.type(),
|
|
54
|
+
});
|
|
55
|
+
const priorityB = getToastPriority({
|
|
56
|
+
hasActionButton: b.instance.showActionButton(),
|
|
57
|
+
type: b.instance.type(),
|
|
58
|
+
});
|
|
59
|
+
return priorityA - priorityB;
|
|
60
|
+
}));
|
|
61
|
+
return toast.instance.id();
|
|
62
|
+
}
|
|
63
|
+
removeFromQueue(toastId) {
|
|
64
|
+
if (this.toastQueue().length === 0)
|
|
65
|
+
return;
|
|
66
|
+
if (this.toastQueue().length === 1 && this.toastQueue()[0].instance.id() === toastId) {
|
|
67
|
+
const onlyToast = this.toastQueue()[0];
|
|
68
|
+
this.toastQueue.set([]);
|
|
69
|
+
onlyToast.setInput("isOpen", false);
|
|
70
|
+
this.waitExitAnimation(onlyToast, () => {
|
|
71
|
+
onlyToast.destroy();
|
|
72
|
+
});
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const toastToHide = this.toastQueue().find((toast) => toast.instance.id() === toastId);
|
|
76
|
+
if (!toastToHide)
|
|
77
|
+
return;
|
|
78
|
+
this.toastQueue.update((list) => list.filter((c) => c.instance.id() !== toastId));
|
|
79
|
+
toastToHide.setInput("isOpen", false);
|
|
80
|
+
this.waitExitAnimation(toastToHide, () => {
|
|
81
|
+
toastToHide.destroy();
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
build(config) {
|
|
85
|
+
const toast = this.overlayService.createWithoutAppend(ToastComponent, this.viewContainerRef);
|
|
86
|
+
this.assignInputsValues(toast, config);
|
|
87
|
+
return toast;
|
|
88
|
+
}
|
|
89
|
+
assignInputsValues(toast, config) {
|
|
90
|
+
const { message, type = "info", closable = true, autoDismiss = false, duration = "medium", placement = "bottom-right", showActionButton = true, showLeftIcon = true, iconName, actionButtonLabel, onActionButtonClick, } = config;
|
|
91
|
+
toast.setInput("message", message);
|
|
92
|
+
toast.setInput("id", uuidv4());
|
|
93
|
+
toast.setInput("type", type);
|
|
94
|
+
toast.setInput("closable", closable);
|
|
95
|
+
toast.setInput("autoDismiss", autoDismiss);
|
|
96
|
+
toast.setInput("duration", duration);
|
|
97
|
+
toast.setInput("placement", placement);
|
|
98
|
+
toast.setInput("iconName", iconName);
|
|
99
|
+
toast.setInput("showLeftIcon", showLeftIcon);
|
|
100
|
+
toast.setInput("showActionButton", showActionButton);
|
|
101
|
+
toast.setInput("actionButtonLabel", actionButtonLabel);
|
|
102
|
+
toast.setInput("onActionButtonClick", onActionButtonClick);
|
|
103
|
+
}
|
|
104
|
+
waitExitAnimation(ref, done) {
|
|
105
|
+
setTimeout(done, 300);
|
|
106
|
+
}
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
108
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastService, providedIn: "root" }); }
|
|
109
|
+
}
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastService, decorators: [{
|
|
111
|
+
type: Injectable,
|
|
112
|
+
args: [{ providedIn: "root" }]
|
|
113
|
+
}], ctorParameters: () => [] });
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLXJ0ZS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3RvYXN0L3RvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDeEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFpQm5ELE1BQU0sT0FBTyxZQUFZO0lBT3ZCO1FBTlEscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFNUMsMEJBQXFCLEdBQXdDLElBQUksQ0FBQztRQUVqRSxlQUFVLEdBQUcsTUFBTSxDQUFpQyxFQUFFLENBQUMsQ0FBQztRQUcvRCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU3QyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztnQkFDbEMsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFB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LENBQUM7SUFDeEIsQ0FBQzsrR0EzSFUsWUFBWTttSEFBWixZQUFZLGNBREMsTUFBTTs7NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgQ29tcG9uZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmLCBpbmplY3QsIHNpZ25hbCwgZWZmZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRvYXN0RHVyYXRpb24sIFRvYXN0UGxhY2VtZW50LCBUb2FzdFR5cGUgfSBmcm9tIFwiQGRlc2lnbi1zeXN0ZW0tcnRlL2NvcmUvY29tcG9uZW50cy90b2FzdC90b2FzdC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IGdldFRvYXN0UHJpb3JpdHkgfSBmcm9tIFwiQGRlc2lnbi1zeXN0ZW0tcnRlL2NvcmUvY29tcG9uZW50cy90b2FzdC90b2FzdC51dGlsc1wiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgT3ZlcmxheVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvb3ZlcmxheS5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSBcIi4vdG9hc3QuY29tcG9uZW50XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3RDb25maWcge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHR5cGU6IFRvYXN0VHlwZTtcbiAgY2xvc2FibGU/OiBib29sZWFuO1xuICBhdXRvRGlzbWlzcz86IGJvb2xlYW47XG4gIGR1cmF0aW9uPzogVG9hc3REdXJhdGlvbjtcbiAgcGxhY2VtZW50PzogVG9hc3RQbGFjZW1lbnQ7XG4gIHNob3dBY3Rpb25CdXR0b24/OiBib29sZWFuO1xuICBhY3Rpb25CdXR0b25MYWJlbD86IHN0cmluZztcbiAgb25BY3Rpb25CdXR0b25DbGljaz86ICgpID0+IHZvaWQ7XG4gIGljb25OYW1lPzogc3RyaW5nO1xuICBzaG93TGVmdEljb24/OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgVG9hc3RTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICBwcml2YXRlIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZTtcbiAgcHJpdmF0ZSBjdXJyZW50T3BlbmVkVG9hc3RSZWY6IENvbXBvbmVudFJlZjxUb2FzdENvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcblxuICByZWFkb25seSB0b2FzdFF1ZXVlID0gc2lnbmFsPENvbXBvbmVudFJlZjxUb2FzdENvbXBvbmVudD5bXT4oW10pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMub3ZlcmxheVNlcnZpY2UgPSBpbmplY3QoT3ZlcmxheVNlcnZpY2UpO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRvYXN0VG9PcGVuID0gdGhpcy50b2FzdFF1ZXVlKClbMF07XG4gICAgICBpZiAoIXRvYXN0VG9PcGVuKSB7XG4gICAgICAgIHRoaXMuY3VycmVudE9wZW5lZFRvYXN0UmVmID0gbnVsbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY3VycmVudE9wZW5lZFRvYXN0UmVmPy5pbnN0YW5jZS5pZCgpID09PSB0b2FzdFRvT3Blbi5pbnN0YW5jZS5pZCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRPcGVuZWRUb2FzdFJlZikge1xuICAgICAgICAgIHRoaXMuY3VycmVudE9wZW5lZFRvYXN0UmVmLnNldElucHV0KFwiaXNPcGVuXCIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5hZGRUb092ZXJsYXkodG9hc3RUb09wZW4pO1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICB0b2FzdFRvT3Blbi5zZXRJbnB1dChcImlzT3BlblwiLCB0cnVlKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRPcGVuZWRUb2FzdFJlZiA9IHRvYXN0VG9PcGVuO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0QWxsVG9hc3RzKCk6IENvbXBvbmVudFJlZjxUb2FzdENvbXBvbmVudD5bXSB7XG4gICAgcmV0dXJuIHRoaXMudG9hc3RRdWV1ZSgpO1xuICB9XG5cbiAgZ2V0Q3VycmVudE9wZW5lZFRvYXN0KCk6IENvbXBvbmVudFJlZjxUb2FzdENvbXBvbmVudD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50T3BlbmVkVG9hc3RSZWY7XG4gIH1cblxuICBpc0luUXVldWUodG9hc3RJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9hc3RRdWV1ZSgpLnNvbWUoKHRvYXN0KSA9PiB0b2FzdC5pbnN0YW5jZS5pZCgpID09PSB0b2FzdElkKTtcbiAgfVxuXG4gIGFkZFRvUXVldWUoY29uZmlnOiBUb2FzdENvbmZpZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdG9hc3QgPSB0aGlzLmJ1aWxkKGNvbmZpZyk7XG4gICAgdG9hc3QuaW5zdGFuY2UuY2xvc2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVtb3ZlRnJvbVF1ZXVlKHRvYXN0Lmluc3RhbmNlLmlkKCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50b2FzdFF1ZXVlLnVwZGF0ZSgobGlzdCkgPT5cbiAgICAgIFsuLi5saXN0LCB0b2FzdF0uc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCBwcmlvcml0eUEgPSBnZXRUb2FzdFByaW9yaXR5KHtcbiAgICAgICAgICBoYXNBY3Rpb25CdXR0b246IGEuaW5zdGFuY2Uuc2hvd0FjdGlvbkJ1dHRvbigpISxcbiAgICAgICAgICB0eXBlOiBhLmluc3RhbmNlLnR5cGUoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHByaW9yaXR5QiA9IGdldFRvYXN0UHJpb3JpdHkoe1xuICAgICAgICAgIGhhc0FjdGlvbkJ1dHRvbjogYi5pbnN0YW5jZS5zaG93QWN0aW9uQnV0dG9uKCkhLFxuICAgICAgICAgIHR5cGU6IGIuaW5zdGFuY2UudHlwZSgpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByaW9yaXR5QSAtIHByaW9yaXR5QjtcbiAgICAgIH0pLFxuICAgICk7XG4gICAgcmV0dXJuIHRvYXN0Lmluc3RhbmNlLmlkKCk7XG4gIH1cblxuICByZW1vdmVGcm9tUXVldWUodG9hc3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9hc3RRdWV1ZSgpLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnRvYXN0UXVldWUoKS5sZW5ndGggPT09IDEgJiYgdGhpcy50b2FzdFF1ZXVlKClbMF0uaW5zdGFuY2UuaWQoKSA9PT0gdG9hc3RJZCkge1xuICAgICAgY29uc3Qgb25seVRvYXN0ID0gdGhpcy50b2FzdFF1ZXVlKClbMF07XG4gICAgICB0aGlzLnRvYXN0UXVldWUuc2V0KFtdKTtcbiAgICAgIG9ubHlUb2FzdC5zZXRJbnB1dChcImlzT3BlblwiLCBmYWxzZSk7XG4gICAgICB0aGlzLndhaXRFeGl0QW5pbWF0aW9uKG9ubHlUb2FzdCwgKCkgPT4ge1xuICAgICAgICBvbmx5VG9hc3QuZGVzdHJveSgpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRvYXN0VG9IaWRlID0gdGhpcy50b2FzdFF1ZXVlKCkuZmluZCgodG9hc3QpID0+IHRvYXN0Lmluc3RhbmNlLmlkKCkgPT09IHRvYXN0SWQpO1xuICAgIGlmICghdG9hc3RUb0hpZGUpIHJldHVybjtcbiAgICB0aGlzLnRvYXN0UXVldWUudXBkYXRlKChsaXN0KSA9PiBsaXN0LmZpbHRlcigoYykgPT4gYy5pbnN0YW5jZS5pZCgpICE9PSB0b2FzdElkKSk7XG4gICAgdG9hc3RUb0hpZGUuc2V0SW5wdXQoXCJpc09wZW5cIiwgZmFsc2UpO1xuICAgIHRoaXMud2FpdEV4aXRBbmltYXRpb24odG9hc3RUb0hpZGUsICgpID0+IHtcbiAgICAgIHRvYXN0VG9IaWRlLmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGQoY29uZmlnOiBUb2FzdENvbmZpZyk6IENvbXBvbmVudFJlZjxUb2FzdENvbXBvbmVudD4ge1xuICAgIGNvbnN0IHRvYXN0ID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGVXaXRob3V0QXBwZW5kKFRvYXN0Q29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgIHRoaXMuYXNzaWduSW5wdXRzVmFsdWVzKHRvYXN0LCBjb25maWcpO1xuICAgIHJldHVybiB0b2FzdDtcbiAgfVxuXG4gIHByaXZhdGUgYXNzaWduSW5wdXRzVmFsdWVzKHRvYXN0OiBDb21wb25lbnRSZWY8VG9hc3RDb21wb25lbnQ+LCBjb25maWc6IFRvYXN0Q29uZmlnKTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgbWVzc2FnZSxcbiAgICAgIHR5cGUgPSBcImluZm9cIixcbiAgICAgIGNsb3NhYmxlID0gdHJ1ZSxcbiAgICAgIGF1dG9EaXNtaXNzID0gZmFsc2UsXG4gICAgICBkdXJhdGlvbiA9IFwibWVkaXVtXCIsXG4gICAgICBwbGFjZW1lbnQgPSBcImJvdHRvbS1yaWdodFwiLFxuICAgICAgc2hvd0FjdGlvbkJ1dHRvbiA9IHRydWUsXG4gICAgICBzaG93TGVmdEljb24gPSB0cnVlLFxuICAgICAgaWNvbk5hbWUsXG4gICAgICBhY3Rpb25CdXR0b25MYWJlbCxcbiAgICAgIG9uQWN0aW9uQnV0dG9uQ2xpY2ssXG4gICAgfSA9IGNvbmZpZztcbiAgICB0b2FzdC5zZXRJbnB1dChcIm1lc3NhZ2VcIiwgbWVzc2FnZSk7XG4gICAgdG9hc3Quc2V0SW5wdXQoXCJpZFwiLCB1dWlkdjQoKSk7XG4gICAgdG9hc3Quc2V0SW5wdXQoXCJ0eXBlXCIsIHR5cGUpO1xuICAgIHRvYXN0LnNldElucHV0KFwiY2xvc2FibGVcIiwgY2xvc2FibGUpO1xuICAgIHRvYXN0LnNldElucHV0KFwiYXV0b0Rpc21pc3NcIiwgYXV0b0Rpc21pc3MpO1xuICAgIHRvYXN0LnNldElucHV0KFwiZHVyYXRpb25cIiwgZHVyYXRpb24pO1xuICAgIHRvYXN0LnNldElucHV0KFwicGxhY2VtZW50XCIsIHBsYWNlbWVudCk7XG4gICAgdG9hc3Quc2V0SW5wdXQoXCJpY29uTmFtZVwiLCBpY29uTmFtZSk7XG4gICAgdG9hc3Quc2V0SW5wdXQoXCJzaG93TGVmdEljb25cIiwgc2hvd0xlZnRJY29uKTtcbiAgICB0b2FzdC5zZXRJbnB1dChcInNob3dBY3Rpb25CdXR0b25cIiwgc2hvd0FjdGlvbkJ1dHRvbik7XG4gICAgdG9hc3Quc2V0SW5wdXQoXCJhY3Rpb25CdXR0b25MYWJlbFwiLCBhY3Rpb25CdXR0b25MYWJlbCk7XG4gICAgdG9hc3Quc2V0SW5wdXQoXCJvbkFjdGlvbkJ1dHRvbkNsaWNrXCIsIG9uQWN0aW9uQnV0dG9uQ2xpY2spO1xuICB9XG5cbiAgcHJpdmF0ZSB3YWl0RXhpdEFuaW1hdGlvbihyZWY6IENvbXBvbmVudFJlZjxUb2FzdENvbXBvbmVudD4sIGRvbmU6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KGRvbmUsIDMwMCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -10,10 +10,10 @@ export class TooltipComponent {
|
|
|
10
10
|
this.arrow = input(true);
|
|
11
11
|
}
|
|
12
12
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: TooltipComponent, isStandalone: true, selector: "rte-tooltip", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, arrow: { classPropertyName: "arrow", publicName: "arrow", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"tooltip {{ position() }} {{ alignment() }}\"\n [ngClass]=\"{ arrow: arrow() }\"\n>\n <span role=\"tooltip\" class=\"tooltip-label\"> {{ label() }} </span>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:wght,FILL,GRAD@400,0,0&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap\";:host{position:absolute;
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: TooltipComponent, isStandalone: true, selector: "rte-tooltip", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, arrow: { classPropertyName: "arrow", publicName: "arrow", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"tooltip {{ position() }} {{ alignment() }}\"\n [ngClass]=\"{ arrow: arrow() }\"\n>\n <span role=\"tooltip\" class=\"tooltip-label\"> {{ label() }} </span>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:wght,FILL,GRAD@400,0,0&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap\";:host{position:absolute;transition:opacity .15s ease-out}:host:not(:hover){transition:opacity .1s ease-in}.tooltip{color:var(--content-primary-inverse);text-align:center;z-index:1;max-width:160px;max-height:40px;padding-block:4px;padding-inline:16px;border-radius:4px;background:var(--background-inverse)}.tooltip-label{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:14px;line-height:20px;letter-spacing:0px;width:fit-content}.tooltip.top,.tooltip.bottom{transform:translate(-50%)}.tooltip.left,.tooltip.right{transform:translateY(-50%)}.tooltip.top{bottom:0}.tooltip.top:after{top:100%;left:50%;margin-left:-5px;border-color:var(--background-inverse) transparent transparent transparent}.tooltip.top.start:after{left:25%}.tooltip.top.end:after{left:75%}.tooltip.bottom:after{bottom:100%;left:50%;margin-left:-5px;border-color:transparent transparent var(--background-inverse) transparent}.tooltip.bottom.start:after{left:25%}.tooltip.bottom.end:after{left:75%}.tooltip.left{right:0}.tooltip.left:after{top:50%;left:100%;margin-top:-5px;border-color:transparent transparent transparent var(--background-inverse)}.tooltip.left.start:after{top:25%}.tooltip.left.end:after{top:75%}.tooltip.right:after{top:50%;right:100%;margin-top:-5px;border-color:transparent var(--background-inverse) transparent transparent}.tooltip.right.start:after{top:25%}.tooltip.right.end:after{top:75%}.tooltip.arrow:after{content:\"\";position:absolute;border-width:5px;border-style:solid}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
14
14
|
}
|
|
15
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
|
-
args: [{ selector: "rte-tooltip", imports: [CommonModule], standalone: true, template: "<div\n class=\"tooltip {{ position() }} {{ alignment() }}\"\n [ngClass]=\"{ arrow: arrow() }\"\n>\n <span role=\"tooltip\" class=\"tooltip-label\"> {{ label() }} </span>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:wght,FILL,GRAD@400,0,0&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap\";:host{position:absolute;
|
|
17
|
+
args: [{ selector: "rte-tooltip", imports: [CommonModule], standalone: true, template: "<div\n class=\"tooltip {{ position() }} {{ alignment() }}\"\n [ngClass]=\"{ arrow: arrow() }\"\n>\n <span role=\"tooltip\" class=\"tooltip-label\"> {{ label() }} </span>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:wght,FILL,GRAD@400,0,0&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap\";:host{position:absolute;transition:opacity .15s ease-out}:host:not(:hover){transition:opacity .1s ease-in}.tooltip{color:var(--content-primary-inverse);text-align:center;z-index:1;max-width:160px;max-height:40px;padding-block:4px;padding-inline:16px;border-radius:4px;background:var(--background-inverse)}.tooltip-label{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:14px;line-height:20px;letter-spacing:0px;width:fit-content}.tooltip.top,.tooltip.bottom{transform:translate(-50%)}.tooltip.left,.tooltip.right{transform:translateY(-50%)}.tooltip.top{bottom:0}.tooltip.top:after{top:100%;left:50%;margin-left:-5px;border-color:var(--background-inverse) transparent transparent transparent}.tooltip.top.start:after{left:25%}.tooltip.top.end:after{left:75%}.tooltip.bottom:after{bottom:100%;left:50%;margin-left:-5px;border-color:transparent transparent var(--background-inverse) transparent}.tooltip.bottom.start:after{left:25%}.tooltip.bottom.end:after{left:75%}.tooltip.left{right:0}.tooltip.left:after{top:50%;left:100%;margin-top:-5px;border-color:transparent transparent transparent var(--background-inverse)}.tooltip.left.start:after{top:25%}.tooltip.left.end:after{top:75%}.tooltip.right:after{top:50%;right:100%;margin-top:-5px;border-color:transparent var(--background-inverse) transparent transparent}.tooltip.right.start:after{top:25%}.tooltip.right.end:after{top:75%}.tooltip.arrow:after{content:\"\";position:absolute;border-width:5px;border-style:solid}\n"] }]
|
|
18
18
|
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1ydGUtbGliL3NyYy9saWIvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBVWpELE1BQU0sT0FBTyxnQkFBZ0I7SUFQN0I7UUFRVyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxLQUFLLENBQTRCLEtBQUssQ0FBQyxDQUFDO1FBQ25ELGNBQVMsR0FBRyxLQUFLLENBQVksUUFBUSxDQUFDLENBQUM7UUFDdkMsVUFBSyxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztLQUN2QzsrR0FMWSxnQkFBZ0I7bUdBQWhCLGdCQUFnQix1a0JDWDdCLHdMQU1BLDh3RERBWSxZQUFZOzs0RkFLWCxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsYUFBYSxXQUNkLENBQUMsWUFBWSxDQUFDLGNBQ1gsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBQb3NpdGlvbiB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21tb24vY29tbW9uLXR5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJydGUtdG9vbHRpcFwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6IFwiLi90b29sdGlwLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsOiBcIi4vdG9vbHRpcC5jb21wb25lbnQuc2Nzc1wiLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgbGFiZWwgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8RXhjbHVkZTxQb3NpdGlvbiwgXCJhdXRvXCI+PihcInRvcFwiKTtcbiAgcmVhZG9ubHkgYWxpZ25tZW50ID0gaW5wdXQ8QWxpZ25tZW50PihcImNlbnRlclwiKTtcbiAgcmVhZG9ubHkgYXJyb3cgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJ0b29sdGlwIHt7IHBvc2l0aW9uKCkgfX0ge3sgYWxpZ25tZW50KCkgfX1cIlxuICBbbmdDbGFzc109XCJ7IGFycm93OiBhcnJvdygpIH1cIlxuPlxuICA8c3BhbiByb2xlPVwidG9vbHRpcFwiIGNsYXNzPVwidG9vbHRpcC1sYWJlbFwiPiB7eyBsYWJlbCgpIH19IDwvc3Bhbj5cbjwvZGl2PlxuIl19
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Directive, ElementRef, HostListener, inject, input, Renderer2, ViewContainerRef, } from "@angular/core";
|
|
2
|
+
import { TOOLTIP_FADE_OUT_DURATION, TOOLTIP_GAP } from "@design-system-rte/core/components/tooltip/tooltip.constants";
|
|
3
|
+
import { getTooltipGap } from "@design-system-rte/core/components/tooltip/tooltip.utils";
|
|
3
4
|
import { getAutoPlacement, getCoordinates } from "@design-system-rte/core/components/utils/auto-placement";
|
|
4
5
|
import { FOCUSABLE_ELEMENTS_QUERY } from "@design-system-rte/core/constants/dom/dom.constants";
|
|
5
6
|
import { OverlayService } from "../../services/overlay.service";
|
|
@@ -24,11 +25,11 @@ export class TooltipDirective {
|
|
|
24
25
|
this.rteTooltipAlignment = input("center");
|
|
25
26
|
this.rteTooltipArrow = input(true);
|
|
26
27
|
this.rteTooltipShouldFocusTrigger = input(true);
|
|
28
|
+
this.rteTooltipGap = input(TOOLTIP_GAP);
|
|
27
29
|
this.tooltipRef = null;
|
|
28
30
|
this.elementRef = inject(ElementRef);
|
|
29
31
|
this.viewContainerRef = inject(ViewContainerRef);
|
|
30
32
|
this.renderer = inject(Renderer2);
|
|
31
|
-
this.cdr = inject(ChangeDetectorRef);
|
|
32
33
|
this.overlayService = inject(OverlayService);
|
|
33
34
|
this.hostElement = this.elementRef.nativeElement;
|
|
34
35
|
}
|
|
@@ -63,8 +64,9 @@ export class TooltipDirective {
|
|
|
63
64
|
assignDirectiveToComponent() {
|
|
64
65
|
if (this.tooltipRef) {
|
|
65
66
|
const tooltipElement = this.tooltipRef.location.nativeElement;
|
|
67
|
+
const gap = getTooltipGap(this.rteTooltipArrow(), this.rteTooltipGap());
|
|
66
68
|
const position = this.rteTooltipPosition() === "auto"
|
|
67
|
-
? getAutoPlacement(this.hostElement, tooltipElement, "top",
|
|
69
|
+
? getAutoPlacement(this.hostElement, tooltipElement, "top", gap, true)
|
|
68
70
|
: this.rteTooltipPosition();
|
|
69
71
|
this.tooltipRef.setInput("label", this.rteTooltip());
|
|
70
72
|
this.tooltipRef.setInput("position", position);
|
|
@@ -75,7 +77,8 @@ export class TooltipDirective {
|
|
|
75
77
|
positionTooltip() {
|
|
76
78
|
if (this.tooltipRef) {
|
|
77
79
|
const tooltipElement = this.tooltipRef.location.nativeElement;
|
|
78
|
-
const
|
|
80
|
+
const gap = getTooltipGap(this.rteTooltipArrow(), this.rteTooltipGap());
|
|
81
|
+
const positions = getCoordinates(this.tooltipRef.instance.position(), this.hostElement, tooltipElement, gap);
|
|
79
82
|
this.renderer.setStyle(this.hostElement, "position", "relative");
|
|
80
83
|
this.renderer.setStyle(tooltipElement, "top", `${positions.top}px`);
|
|
81
84
|
this.renderer.setStyle(tooltipElement, "left", `${positions.left}px`);
|
|
@@ -91,11 +94,11 @@ export class TooltipDirective {
|
|
|
91
94
|
this.tooltipRef = null;
|
|
92
95
|
this.overlayService.destroy();
|
|
93
96
|
}
|
|
94
|
-
},
|
|
97
|
+
}, TOOLTIP_FADE_OUT_DURATION);
|
|
95
98
|
}
|
|
96
99
|
}
|
|
97
100
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
98
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: TooltipDirective, isStandalone: true, selector: "[rteTooltip]", inputs: { rteTooltip: { classPropertyName: "rteTooltip", publicName: "rteTooltip", isSignal: true, isRequired: true, transformFunction: null }, rteTooltipPosition: { classPropertyName: "rteTooltipPosition", publicName: "rteTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, rteTooltipAlignment: { classPropertyName: "rteTooltipAlignment", publicName: "rteTooltipAlignment", isSignal: true, isRequired: false, transformFunction: null }, rteTooltipArrow: { classPropertyName: "rteTooltipArrow", publicName: "rteTooltipArrow", isSignal: true, isRequired: false, transformFunction: null }, rteTooltipShouldFocusTrigger: { classPropertyName: "rteTooltipShouldFocusTrigger", publicName: "rteTooltipShouldFocusTrigger", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focus": "onFocus()", "blur": "onBlur()" } }, ngImport: i0 }); }
|
|
101
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: TooltipDirective, isStandalone: true, selector: "[rteTooltip]", inputs: { rteTooltip: { classPropertyName: "rteTooltip", publicName: "rteTooltip", isSignal: true, isRequired: true, transformFunction: null }, rteTooltipPosition: { classPropertyName: "rteTooltipPosition", publicName: "rteTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, rteTooltipAlignment: { classPropertyName: "rteTooltipAlignment", publicName: "rteTooltipAlignment", isSignal: true, isRequired: false, transformFunction: null }, rteTooltipArrow: { classPropertyName: "rteTooltipArrow", publicName: "rteTooltipArrow", isSignal: true, isRequired: false, transformFunction: null }, rteTooltipShouldFocusTrigger: { classPropertyName: "rteTooltipShouldFocusTrigger", publicName: "rteTooltipShouldFocusTrigger", isSignal: true, isRequired: false, transformFunction: null }, rteTooltipGap: { classPropertyName: "rteTooltipGap", publicName: "rteTooltipGap", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focus": "onFocus()", "blur": "onBlur()" } }, ngImport: i0 }); }
|
|
99
102
|
}
|
|
100
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TooltipDirective, decorators: [{
|
|
101
104
|
type: Directive,
|
|
@@ -116,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
116
119
|
type: HostListener,
|
|
117
120
|
args: ["blur"]
|
|
118
121
|
}] } });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1ydGUtbGliL3NyYy9saWIvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFFakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDM0csT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFL0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU12RCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDtRQW5DUyxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3RDLHVCQUFrQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyx3QkFBbUIsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENB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TUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRPT0xUSVBfR0FQLCBUT09MVElQX0dBUF9BUlJPVyB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldEF1dG9QbGFjZW1lbnQsIGdldENvb3JkaW5hdGVzIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvdXRpbHMvYXV0by1wbGFjZW1lbnRcIjtcbmltcG9ydCB7IEZPQ1VTQUJMRV9FTEVNRU5UU19RVUVSWSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb25zdGFudHMvZG9tL2RvbS5jb25zdGFudHNcIjtcblxuaW1wb3J0IHsgT3ZlcmxheVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvb3ZlcmxheS5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tIFwiLi90b29sdGlwLmNvbXBvbmVudFwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW3J0ZVRvb2x0aXBdXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICByZWFkb25seSBydGVUb29sdGlwID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBydGVUb29sdGlwUG9zaXRpb24gPSBpbnB1dChcImF1dG9cIik7XG4gIHJlYWRvbmx5IHJ0ZVRvb2x0aXBBbGlnbm1lbnQgPSBpbnB1dChcImNlbnRlclwiKTtcbiAgcmVhZG9ubHkgcnRlVG9vbHRpcEFycm93ID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IHJ0ZVRvb2x0aXBTaG91bGRGb2N1c1RyaWdnZXIgPSBpbnB1dCh0cnVlKTtcblxuICBwcml2YXRlIHRvb2x0aXBSZWY6IENvbXBvbmVudFJlZjxUb29sdGlwQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2U7XG5cbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIEBIb3N0TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIpXG4gIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dUb29sdGlwKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwibW91c2VsZWF2ZVwiKVxuICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcImZvY3VzXCIpXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93VG9vbHRpcCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcImJsdXJcIilcbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMub3ZlcmxheVNlcnZpY2UgPSBpbmplY3QoT3ZlcmxheVNlcnZpY2UpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMucnRlVG9vbHRpcFNob3VsZEZvY3VzVHJpZ2dlcigpKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmhvc3RFbGVtZW50LCBcInRhYmluZGV4XCIsIFwiLTFcIik7XG4gICAgICBjb25zdCBmb2N1c2FibGVUcmlnZ2VyID0gdGhpcy5ob3N0RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKEZPQ1VTQUJMRV9FTEVNRU5UU19RVUVSWSlbMF07XG4gICAgICBmb2N1c2FibGVUcmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCAoKSA9PiB0aGlzLm9uRm9jdXMoKSk7XG4gICAgICBmb2N1c2FibGVUcmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsICgpID0+IHRoaXMub25CbHVyKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmhvc3RFbGVtZW50LCBcInRhYmluZGV4XCIsIFwiMFwiKTtcbiAgICB9XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5wb3NpdGlvblRvb2x0aXAuYmluZCh0aGlzKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAoIXRoaXMucnRlVG9vbHRpcFNob3VsZEZvY3VzVHJpZ2dlcigpKSB7XG4gICAgICBjb25zdCBmb2N1c2FibGVUcmlnZ2VyID0gdGhpcy5ob3N0RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKEZPQ1VTQUJMRV9FTEVNRU5UU19RVUVSWSlbMF07XG4gICAgICBmb2N1c2FibGVUcmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCAoKSA9PiB0aGlzLm9uRm9jdXMoKSk7XG4gICAgICBmb2N1c2FibGVUcmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJibHVyXCIsICgpID0+IHRoaXMub25CbHVyKCkpO1xuICAgIH1cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aGlzLnBvc2l0aW9uVG9vbHRpcC5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHNob3dUb29sdGlwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2x0aXBSZWYpIHtcbiAgICAgIHRoaXMudG9vbHRpcFJlZi5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy50b29sdGlwUmVmID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoVG9vbHRpcENvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICB0aGlzLmFzc2lnbkRpcmVjdGl2ZVRvQ29tcG9uZW50KCk7XG4gICAgdGhpcy5wb3NpdGlvblRvb2x0aXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXNzaWduRGlyZWN0aXZlVG9Db21wb25lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbHRpcFJlZikge1xuICAgICAgY29uc3QgdG9vbHRpcEVsZW1lbnQgPSB0aGlzLnRvb2x0aXBSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcblxuICAgICAgY29uc3QgcG9zaXRpb24gPVxuICAgICAgICB0aGlzLnJ0ZVRvb2x0aXBQb3NpdGlvbigpID09PSBcImF1dG9cIlxuICAgICAgICAgID8gZ2V0QXV0b1BsYWNlbWVudChcbiAgICAgICAgICAgICAgdGhpcy5ob3N0RWxlbWVudCxcbiAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQsXG4gICAgICAgICAgICAgIFwidG9wXCIsXG4gICAgICAgICAgICAgIHRoaXMucnRlVG9vbHRpcEFycm93KCkgPyBUT09MVElQX0dBUF9BUlJPVyA6IFRPT0xUSVBfR0FQLFxuICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogdGhpcy5ydGVUb29sdGlwUG9zaXRpb24oKTtcblxuICAgICAgdGhpcy50b29sdGlwUmVmLnNldElucHV0KFwibGFiZWxcIiwgdGhpcy5ydGVUb29sdGlwKCkpO1xuICAgICAgdGhpcy50b29sdGlwUmVmLnNldElucHV0KFwicG9zaXRpb25cIiwgcG9zaXRpb24pO1xuICAgICAgdGhpcy50b29sdGlwUmVmLnNldElucHV0KFwiYWxpZ25tZW50XCIsIHRoaXMucnRlVG9vbHRpcEFsaWdubWVudCgpKTtcbiAgICAgIHRoaXMudG9vbHRpcFJlZi5zZXRJbnB1dChcImFycm93XCIsIHRoaXMucnRlVG9vbHRpcEFycm93KCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25Ub29sdGlwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2x0aXBSZWYpIHtcbiAgICAgIGNvbnN0IHRvb2x0aXBFbGVtZW50ID0gdGhpcy50b29sdGlwUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IGdldENvb3JkaW5hdGVzKFxuICAgICAgICB0aGlzLnRvb2x0aXBSZWYuaW5zdGFuY2UucG9zaXRpb24oKSxcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudCxcbiAgICAgICAgdG9vbHRpcEVsZW1lbnQsXG4gICAgICAgIHRoaXMucnRlVG9vbHRpcEFycm93KCkgPyBUT09MVElQX0dBUF9BUlJPVyA6IFRPT0xUSVBfR0FQLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50LCBcInBvc2l0aW9uXCIsIFwicmVsYXRpdmVcIik7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodG9vbHRpcEVsZW1lbnQsIFwidG9wXCIsIGAke3Bvc2l0aW9ucy50b3B9cHhgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodG9vbHRpcEVsZW1lbnQsIFwibGVmdFwiLCBgJHtwb3NpdGlvbnMubGVmdH1weGApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlkZVRvb2x0aXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbHRpcFJlZikge1xuICAgICAgY29uc3QgdG9vbHRpcEVsZW1lbnQgPSB0aGlzLnRvb2x0aXBSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcblxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwRWxlbWVudCwgXCJvcGFjaXR5XCIsIFwiMFwiKTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBSZWYpIHtcbiAgICAgICAgICB0aGlzLnRvb2x0aXBSZWYuZGVzdHJveSgpO1xuICAgICAgICAgIHRoaXMudG9vbHRpcFJlZiA9IG51bGw7XG4gICAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1ydGUtbGliL3NyYy9saWIvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3RILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN6RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDM0csT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFL0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU12RCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDtRQW5DUyxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3RDLHVCQUFrQixHQUFHLEtBQUssQ0FBVyxNQUFNLENBQUMsQ0FBQztRQUM3Qyx3QkFB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O3NCQURYLFlBQVk7dUJBQUMsWUFBWTtnQkFNMUIsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU87Z0JBTXJCLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21tb24vY29tbW9uLXR5cGVzXCI7XG5pbXBvcnQgeyBUT09MVElQX0ZBREVfT1VUX0RVUkFUSU9OLCBUT09MVElQX0dBUCB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldFRvb2x0aXBHYXAgfSBmcm9tIFwiQGRlc2lnbi1zeXN0ZW0tcnRlL2NvcmUvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAudXRpbHNcIjtcbmltcG9ydCB7IGdldEF1dG9QbGFjZW1lbnQsIGdldENvb3JkaW5hdGVzIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvdXRpbHMvYXV0by1wbGFjZW1lbnRcIjtcbmltcG9ydCB7IEZPQ1VTQUJMRV9FTEVNRU5UU19RVUVSWSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb25zdGFudHMvZG9tL2RvbS5jb25zdGFudHNcIjtcblxuaW1wb3J0IHsgT3ZlcmxheVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvb3ZlcmxheS5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tIFwiLi90b29sdGlwLmNvbXBvbmVudFwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW3J0ZVRvb2x0aXBdXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICByZWFkb25seSBydGVUb29sdGlwID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBydGVUb29sdGlwUG9zaXRpb24gPSBpbnB1dDxQb3NpdGlvbj4oXCJhdXRvXCIpO1xuICByZWFkb25seSBydGVUb29sdGlwQWxpZ25tZW50ID0gaW5wdXQoXCJjZW50ZXJcIik7XG4gIHJlYWRvbmx5IHJ0ZVRvb2x0aXBBcnJvdyA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBydGVUb29sdGlwU2hvdWxkRm9jdXNUcmlnZ2VyID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IHJ0ZVRvb2x0aXBHYXAgPSBpbnB1dDxudW1iZXI+KFRPT0xUSVBfR0FQKTtcblxuICBwcml2YXRlIHRvb2x0aXBSZWY6IENvbXBvbmVudFJlZjxUb29sdGlwQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2U7XG5cbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICBASG9zdExpc3RlbmVyKFwibW91c2VlbnRlclwiKVxuICBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93VG9vbHRpcCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIilcbiAgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJmb2N1c1wiKVxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJibHVyXCIpXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlID0gaW5qZWN0KE92ZXJsYXlTZXJ2aWNlKTtcbiAgICB0aGlzLmhvc3RFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKCF0aGlzLnJ0ZVRvb2x0aXBTaG91bGRGb2N1c1RyaWdnZXIoKSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5ob3N0RWxlbWVudCwgXCJ0YWJpbmRleFwiLCBcIi0xXCIpO1xuICAgICAgY29uc3QgZm9jdXNhYmxlVHJpZ2dlciA9IHRoaXMuaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChGT0NVU0FCTEVfRUxFTUVOVFNfUVVFUlkpWzBdO1xuICAgICAgZm9jdXNhYmxlVHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgKCkgPT4gdGhpcy5vbkZvY3VzKCkpO1xuICAgICAgZm9jdXNhYmxlVHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCAoKSA9PiB0aGlzLm9uQmx1cigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5ob3N0RWxlbWVudCwgXCJ0YWJpbmRleFwiLCBcIjBcIik7XG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMucG9zaXRpb25Ub29sdGlwLmJpbmQodGhpcykpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKCF0aGlzLnJ0ZVRvb2x0aXBTaG91bGRGb2N1c1RyaWdnZXIoKSkge1xuICAgICAgY29uc3QgZm9jdXNhYmxlVHJpZ2dlciA9IHRoaXMuaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChGT0NVU0FCTEVfRUxFTUVOVFNfUVVFUlkpWzBdO1xuICAgICAgZm9jdXNhYmxlVHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgKCkgPT4gdGhpcy5vbkZvY3VzKCkpO1xuICAgICAgZm9jdXNhYmxlVHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLCAoKSA9PiB0aGlzLm9uQmx1cigpKTtcbiAgICB9XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdGhpcy5wb3NpdGlvblRvb2x0aXAuYmluZCh0aGlzKSk7XG4gIH1cblxuICBzaG93VG9vbHRpcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b29sdGlwUmVmKSB7XG4gICAgICB0aGlzLnRvb2x0aXBSZWYuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMudG9vbHRpcFJlZiA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlKFRvb2x0aXBDb21wb25lbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgdGhpcy5hc3NpZ25EaXJlY3RpdmVUb0NvbXBvbmVudCgpO1xuICAgIHRoaXMucG9zaXRpb25Ub29sdGlwKCk7XG4gIH1cblxuICBwcml2YXRlIGFzc2lnbkRpcmVjdGl2ZVRvQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2x0aXBSZWYpIHtcbiAgICAgIGNvbnN0IHRvb2x0aXBFbGVtZW50ID0gdGhpcy50b29sdGlwUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBnYXAgPSBnZXRUb29sdGlwR2FwKHRoaXMucnRlVG9vbHRpcEFycm93KCksIHRoaXMucnRlVG9vbHRpcEdhcCgpKTtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgdGhpcy5ydGVUb29sdGlwUG9zaXRpb24oKSA9PT0gXCJhdXRvXCJcbiAgICAgICAgICA/IGdldEF1dG9QbGFjZW1lbnQodGhpcy5ob3N0RWxlbWVudCwgdG9vbHRpcEVsZW1lbnQsIFwidG9wXCIsIGdhcCwgdHJ1ZSlcbiAgICAgICAgICA6IHRoaXMucnRlVG9vbHRpcFBvc2l0aW9uKCk7XG5cbiAgICAgIHRoaXMudG9vbHRpcFJlZi5zZXRJbnB1dChcImxhYmVsXCIsIHRoaXMucnRlVG9vbHRpcCgpKTtcbiAgICAgIHRoaXMudG9vbHRpcFJlZi5zZXRJbnB1dChcInBvc2l0aW9uXCIsIHBvc2l0aW9uKTtcbiAgICAgIHRoaXMudG9vbHRpcFJlZi5zZXRJbnB1dChcImFsaWdubWVudFwiLCB0aGlzLnJ0ZVRvb2x0aXBBbGlnbm1lbnQoKSk7XG4gICAgICB0aGlzLnRvb2x0aXBSZWYuc2V0SW5wdXQoXCJhcnJvd1wiLCB0aGlzLnJ0ZVRvb2x0aXBBcnJvdygpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBvc2l0aW9uVG9vbHRpcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b29sdGlwUmVmKSB7XG4gICAgICBjb25zdCB0b29sdGlwRWxlbWVudCA9IHRoaXMudG9vbHRpcFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3QgZ2FwID0gZ2V0VG9vbHRpcEdhcCh0aGlzLnJ0ZVRvb2x0aXBBcnJvdygpLCB0aGlzLnJ0ZVRvb2x0aXBHYXAoKSk7XG4gICAgICBjb25zdCBwb3NpdGlvbnMgPSBnZXRDb29yZGluYXRlcyh0aGlzLnRvb2x0aXBSZWYuaW5zdGFuY2UucG9zaXRpb24oKSwgdGhpcy5ob3N0RWxlbWVudCwgdG9vbHRpcEVsZW1lbnQsIGdhcCk7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudCwgXCJwb3NpdGlvblwiLCBcInJlbGF0aXZlXCIpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwRWxlbWVudCwgXCJ0b3BcIiwgYCR7cG9zaXRpb25zLnRvcH1weGApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwRWxlbWVudCwgXCJsZWZ0XCIsIGAke3Bvc2l0aW9ucy5sZWZ0fXB4YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoaWRlVG9vbHRpcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b29sdGlwUmVmKSB7XG4gICAgICBjb25zdCB0b29sdGlwRWxlbWVudCA9IHRoaXMudG9vbHRpcFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRvb2x0aXBFbGVtZW50LCBcIm9wYWNpdHlcIiwgXCIwXCIpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcFJlZikge1xuICAgICAgICAgIHRoaXMudG9vbHRpcFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgdGhpcy50b29sdGlwUmVmID0gbnVsbDtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgfSwgVE9PTFRJUF9GQURFX09VVF9EVVJBVElPTik7XG4gICAgfVxuICB9XG59XG4iXX0=
|