@ascentgl/ads-ui 0.0.10 → 0.0.11
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/esm2022/lib/components/avatar/avatar.component.mjs +2 -2
- package/esm2022/lib/components/error-page/error-page.component.mjs +2 -2
- package/esm2022/lib/components/nav-bar/side-nav-bar/side-nav-bar.component.mjs +13 -4
- package/esm2022/lib/components/progress-indicators/progress-indicator-spinner/progress-indicator-spinner.component.mjs +2 -2
- package/esm2022/lib/components/steppers/vertical-stepper/vertical-stepper.component.mjs +2 -2
- package/esm2022/lib/components/tags/create-tag/create-tag.component.mjs +2 -2
- package/esm2022/src/lib/components/avatar/avatar.component.mjs +2 -2
- package/esm2022/src/lib/components/progress-indicators/progress-indicator-spinner/progress-indicator-spinner.component.mjs +2 -2
- package/fesm2022/ascentgl-ads-ui-src-lib-components-avatar.mjs +2 -2
- package/fesm2022/ascentgl-ads-ui-src-lib-components-progress-indicators-progress-indicator-spinner.mjs +2 -2
- package/fesm2022/ascentgl-ads-ui-src-lib-components-progress-indicators-progress-indicator-spinner.mjs.map +1 -1
- package/fesm2022/ascentgl-ads-ui.mjs +22 -13
- package/fesm2022/ascentgl-ads-ui.mjs.map +1 -1
- package/lib/components/nav-bar/side-nav-bar/side-nav-bar.component.d.ts +2 -0
- package/package.json +43 -43
- package/src/assets/sass/ads-ui/base/_reset.scss +8 -30
|
@@ -27,6 +27,8 @@ export class AdsSideNavBarComponent {
|
|
|
27
27
|
this.localStorageName = 'side-nav-bar-width';
|
|
28
28
|
/** @ignore */
|
|
29
29
|
this.widthToCollapsed = 70;
|
|
30
|
+
/** @ignore */
|
|
31
|
+
this.minWidth = 50;
|
|
30
32
|
this.registry.register([adsIconSearch]);
|
|
31
33
|
}
|
|
32
34
|
/** @ignore */
|
|
@@ -44,7 +46,7 @@ export class AdsSideNavBarComponent {
|
|
|
44
46
|
/** Expand the sidebar between collapsed and expanded */
|
|
45
47
|
/** @ignore */
|
|
46
48
|
expandSidebar() {
|
|
47
|
-
if (this.isCollapsed) {
|
|
49
|
+
if (this.isCollapsed()) {
|
|
48
50
|
this.sidebarSize.set(this.widthToCollapsed);
|
|
49
51
|
setTimeout(() => {
|
|
50
52
|
this.isCollapsed.set(false);
|
|
@@ -52,6 +54,13 @@ export class AdsSideNavBarComponent {
|
|
|
52
54
|
this.sidebarSize.set(this.defaultExpandedWidth());
|
|
53
55
|
});
|
|
54
56
|
}
|
|
57
|
+
else {
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
this.isCollapsed.set(true);
|
|
60
|
+
this.saveLocalStorage(this.minWidth);
|
|
61
|
+
this.sidebarSize.set(this.minWidth);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
55
64
|
}
|
|
56
65
|
/** Save current width to the local storage */
|
|
57
66
|
/** @ignore */
|
|
@@ -59,13 +68,13 @@ export class AdsSideNavBarComponent {
|
|
|
59
68
|
localStorage.setItem(this.localStorageName, JSON.stringify(size));
|
|
60
69
|
}
|
|
61
70
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsSideNavBarComponent, deps: [{ token: i1.AdsIconRegistry }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
62
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: AdsSideNavBarComponent, selector: "ads-side-nav-bar", inputs: { defaultExpandedWidth: { classPropertyName: "defaultExpandedWidth", publicName: "defaultExpandedWidth", isSignal: true, isRequired: false, transformFunction: null }, searchTemplate: { classPropertyName: "searchTemplate", publicName: "searchTemplate", isSignal: true, isRequired: false, transformFunction: null }, extraDataTemplate: { classPropertyName: "extraDataTemplate", publicName: "extraDataTemplate", isSignal: true, isRequired: false, transformFunction: null }, navItems: { classPropertyName: "navItems", publicName: "navItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "sideNavArea", first: true, predicate: ["sideNavArea"], descendants: true, read: ElementRef }], ngImport: i0, template: "<as-split
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: AdsSideNavBarComponent, selector: "ads-side-nav-bar", inputs: { defaultExpandedWidth: { classPropertyName: "defaultExpandedWidth", publicName: "defaultExpandedWidth", isSignal: true, isRequired: false, transformFunction: null }, searchTemplate: { classPropertyName: "searchTemplate", publicName: "searchTemplate", isSignal: true, isRequired: false, transformFunction: null }, extraDataTemplate: { classPropertyName: "extraDataTemplate", publicName: "extraDataTemplate", isSignal: true, isRequired: false, transformFunction: null }, navItems: { classPropertyName: "navItems", publicName: "navItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "sideNavArea", first: true, predicate: ["sideNavArea"], descendants: true, read: ElementRef }], ngImport: i0, template: "<as-split\n [useTransition]=\"true\"\n unit=\"pixel\"\n [gutterSize]=\"10\"\n (dragEnd)=\"onDragEnd($event)\"\n (gutterDblClick)=\"expandSidebar()\"\n [gutterDblClickDuration]=\"500\"\n>\n <as-split-area [size]=\"sidebarSize()\" [minSize]=\"50\" [maxSize]=\"600\" #sideNavArea>\n <div class=\"left-side-content-container\">\n <div class=\"logo-container\">\n <a [routerLink]=\"'/'\">\n <ads-primary-logo [isCollapsed]=\"true\" class=\"show-on-collapsed\" />\n <ads-primary-logo [isCollapsed]=\"false\" class=\"hide-on-collapsed\" />\n </a>\n </div>\n\n <div class=\"nav-items-container\">\n @for (item of navItems(); track item) {\n <a\n [routerLink]=\"item.href\"\n routerLinkActive=\"active-nav-link\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"ads-nav-link\"\n >\n <div class=\"ads-nav-item-container\">\n @if (!!item.icon) {\n <ads-icon\n [name]=\"item.icon!\"\n size=\"sm\"\n theme=\"iconPrimary\"\n stroke=\"iconPrimary\"\n color=\"--color-medium\"\n />\n }\n\n <span class=\"hide-on-collapsed\">{{ item.label }}</span>\n </div>\n </a>\n }\n </div>\n <div class=\"bottom-container\" (click)=\"!!searchTemplate() && isCollapsed() ? expandSidebar() : null\">\n @if (!!searchTemplate()) {\n <ads-icon name=\"search\" size=\"sm\" theme=\"iconPrimary\" class=\"show-on-collapsed\" />\n <div class=\"hide-on-collapsed\">\n <ng-container *ngTemplateOutlet=\"searchTemplate()!\" />\n </div>\n }\n\n @if (!!extraDataTemplate()) {\n <div class=\"hide-on-collapsed\">\n <ng-container *ngTemplateOutlet=\"extraDataTemplate()!\" />\n </div>\n }\n </div>\n </div>\n </as-split-area>\n\n <as-split-area>\n <router-outlet></router-outlet>\n </as-split-area>\n</as-split>\n", styles: [".nav-items-container{display:flex;flex-direction:column;border-bottom:1px solid var(--color-light)}.nav-items-container .ads-nav-item-container{display:flex;padding:12px;gap:12px;background-color:var(--color-white);align-items:center}.nav-items-container .ads-nav-item-container span{font-weight:400;line-height:21px;color:var(--color-medium);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-decoration:unset}.nav-items-container .ads-nav-item-container ads-icon{flex-shrink:0}.nav-items-container .ads-nav-item-container:hover span,.nav-items-container .ads-nav-item-container:focus span,.nav-items-container .ads-nav-item-container:active span{color:var(--color-white)}.nav-items-container .ads-nav-item-container:hover ads-icon ::ng-deep svg,.nav-items-container .ads-nav-item-container:focus ads-icon ::ng-deep svg,.nav-items-container .ads-nav-item-container:active ads-icon ::ng-deep svg{stroke:var(--color-white);fill:var(--color-white)!important}.nav-items-container .ads-nav-item-container:hover{background-color:var(--color-secondary-hover)}.nav-items-container .ads-nav-item-container:active{background-color:var(--color-secondary-pressed)}.nav-items-container .ads-nav-item-container:focus{background-color:var(--color-secondary)}as-split-area{background-color:var(--color-white)}.logo-container{padding:16px 12px;border-bottom:1px solid var(--color-light);height:auto}.ads-nav-link.active-nav-link .ads-nav-item-container{background-color:var(--color-secondary)!important}.ads-nav-link.active-nav-link .ads-nav-item-container span{color:var(--color-white)!important}.ads-nav-link.active-nav-link .ads-nav-item-container ads-icon ::ng-deep svg{stroke:var(--color-white)!important;fill:var(--color-white)!important}.ads-nav-link{text-decoration:none}.left-side-content-container{container-type:inline-size;display:flex;flex-direction:column;height:100vh}::ng-deep as-split .as-split-gutter,::ng-deep as-split .as-split-gutter-icon{background-color:var(--color-light-30)}::ng-deep as-split .as-split-gutter:hover,::ng-deep as-split .as-split-gutter-icon:hover{background-color:var(--color-light-80)}::ng-deep as-split .as-split-gutter:active,::ng-deep as-split .as-split-gutter-icon:active{background-color:var(--color-light)}::ng-deep as-split .as-split-gutter-icon{width:8px;background-color:var(--color-light-30);background-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"6\" height=\"11\" viewBox=\"0 0 6 11\" fill=\"none\"><path d=\"M4.7142 2.92855C5.42428 2.92855 5.99991 2.35291 5.99991 1.64283C5.99991 0.932751 5.42428 0.357117 4.7142 0.357117C4.00412 0.357117 3.42848 0.932751 3.42848 1.64283C3.42848 2.35291 4.00412 2.92855 4.7142 2.92855Z\" fill=\"%23041F41\"/><path d=\"M4.7142 6.78566C5.42428 6.78566 5.99991 6.21003 5.99991 5.49995C5.99991 4.78987 5.42428 4.21423 4.7142 4.21423C4.00412 4.21423 3.42848 4.78987 3.42848 5.49995C3.42848 6.21003 4.00412 6.78566 4.7142 6.78566Z\" fill=\"%23041F41\"/><path d=\"M4.7142 10.6428C5.42428 10.6428 5.99991 10.0672 5.99991 9.35713C5.99991 8.64704 5.42428 8.07141 4.7142 8.07141C4.00412 8.07141 3.42848 8.64704 3.42848 9.35713C3.42848 10.0672 4.00412 10.6428 4.7142 10.6428Z\" fill=\"%23041F41\"/><path d=\"M1.28571 2.92855C1.99579 2.92855 2.57143 2.35291 2.57143 1.64283C2.57143 0.932751 1.99579 0.357117 1.28571 0.357117C0.575634 0.357117 0 0.932751 0 1.64283C0 2.35291 0.575634 2.92855 1.28571 2.92855Z\" fill=\"%23041F41\"/><path d=\"M1.28571 6.78566C1.99579 6.78566 2.57143 6.21003 2.57143 5.49995C2.57143 4.78987 1.99579 4.21423 1.28571 4.21423C0.575634 4.21423 0 4.78987 0 5.49995C0 6.21003 0.575634 6.78566 1.28571 6.78566Z\" fill=\"%23041F41\"/><path d=\"M1.28571 10.6428C1.99579 10.6428 2.57143 10.0672 2.57143 9.35713C2.57143 8.64704 1.99579 8.07141 1.28571 8.07141C0.575634 8.07141 0 8.64704 0 9.35713C0 10.0672 0.575634 10.6428 1.28571 10.6428Z\" fill=\"%23041F41\"/></svg>')!important}.bottom-container{padding:16px 12px;flex-grow:1;display:flex;flex-direction:column}@container (max-width: 70px){.bottom-container{flex-grow:unset}.bottom-container:hover{background-color:var(--color-secondary-hover)}.bottom-container:hover ads-icon ::ng-deep svg{stroke:var(--color-white)}.bottom-container:active{background-color:var(--color-secondary-pressed)}.hide-on-collapsed{display:none}.show-on-collapsed{display:contents}}@container (min-width: 71px){.hide-on-collapsed{display:contents}.show-on-collapsed{display:none}}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.AdsPrimaryLogoComponent, selector: "ads-primary-logo", inputs: ["mobileWidth", "isCollapsed"] }, { kind: "component", type: i4.SplitComponent, selector: "as-split", inputs: ["gutterSize", "gutterStep", "disabled", "gutterClickDeltaPx", "direction", "dir", "unit", "gutterAriaLabel", "restrictMove", "useTransition", "gutterDblClickDuration"], outputs: ["gutterClick", "gutterDblClick", "dragStart", "dragEnd", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "component", type: i4.SplitAreaComponent, selector: "as-split-area", inputs: ["size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "directive", type: i5.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i1.AdsIconComponent, selector: "ads-icon", inputs: ["size", "name", "color", "theme", "stroke"] }] }); }
|
|
63
72
|
}
|
|
64
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: AdsSideNavBarComponent, decorators: [{
|
|
65
74
|
type: Component,
|
|
66
|
-
args: [{ selector: 'ads-side-nav-bar', template: "<as-split
|
|
75
|
+
args: [{ selector: 'ads-side-nav-bar', template: "<as-split\n [useTransition]=\"true\"\n unit=\"pixel\"\n [gutterSize]=\"10\"\n (dragEnd)=\"onDragEnd($event)\"\n (gutterDblClick)=\"expandSidebar()\"\n [gutterDblClickDuration]=\"500\"\n>\n <as-split-area [size]=\"sidebarSize()\" [minSize]=\"50\" [maxSize]=\"600\" #sideNavArea>\n <div class=\"left-side-content-container\">\n <div class=\"logo-container\">\n <a [routerLink]=\"'/'\">\n <ads-primary-logo [isCollapsed]=\"true\" class=\"show-on-collapsed\" />\n <ads-primary-logo [isCollapsed]=\"false\" class=\"hide-on-collapsed\" />\n </a>\n </div>\n\n <div class=\"nav-items-container\">\n @for (item of navItems(); track item) {\n <a\n [routerLink]=\"item.href\"\n routerLinkActive=\"active-nav-link\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"ads-nav-link\"\n >\n <div class=\"ads-nav-item-container\">\n @if (!!item.icon) {\n <ads-icon\n [name]=\"item.icon!\"\n size=\"sm\"\n theme=\"iconPrimary\"\n stroke=\"iconPrimary\"\n color=\"--color-medium\"\n />\n }\n\n <span class=\"hide-on-collapsed\">{{ item.label }}</span>\n </div>\n </a>\n }\n </div>\n <div class=\"bottom-container\" (click)=\"!!searchTemplate() && isCollapsed() ? expandSidebar() : null\">\n @if (!!searchTemplate()) {\n <ads-icon name=\"search\" size=\"sm\" theme=\"iconPrimary\" class=\"show-on-collapsed\" />\n <div class=\"hide-on-collapsed\">\n <ng-container *ngTemplateOutlet=\"searchTemplate()!\" />\n </div>\n }\n\n @if (!!extraDataTemplate()) {\n <div class=\"hide-on-collapsed\">\n <ng-container *ngTemplateOutlet=\"extraDataTemplate()!\" />\n </div>\n }\n </div>\n </div>\n </as-split-area>\n\n <as-split-area>\n <router-outlet></router-outlet>\n </as-split-area>\n</as-split>\n", styles: [".nav-items-container{display:flex;flex-direction:column;border-bottom:1px solid var(--color-light)}.nav-items-container .ads-nav-item-container{display:flex;padding:12px;gap:12px;background-color:var(--color-white);align-items:center}.nav-items-container .ads-nav-item-container span{font-weight:400;line-height:21px;color:var(--color-medium);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-decoration:unset}.nav-items-container .ads-nav-item-container ads-icon{flex-shrink:0}.nav-items-container .ads-nav-item-container:hover span,.nav-items-container .ads-nav-item-container:focus span,.nav-items-container .ads-nav-item-container:active span{color:var(--color-white)}.nav-items-container .ads-nav-item-container:hover ads-icon ::ng-deep svg,.nav-items-container .ads-nav-item-container:focus ads-icon ::ng-deep svg,.nav-items-container .ads-nav-item-container:active ads-icon ::ng-deep svg{stroke:var(--color-white);fill:var(--color-white)!important}.nav-items-container .ads-nav-item-container:hover{background-color:var(--color-secondary-hover)}.nav-items-container .ads-nav-item-container:active{background-color:var(--color-secondary-pressed)}.nav-items-container .ads-nav-item-container:focus{background-color:var(--color-secondary)}as-split-area{background-color:var(--color-white)}.logo-container{padding:16px 12px;border-bottom:1px solid var(--color-light);height:auto}.ads-nav-link.active-nav-link .ads-nav-item-container{background-color:var(--color-secondary)!important}.ads-nav-link.active-nav-link .ads-nav-item-container span{color:var(--color-white)!important}.ads-nav-link.active-nav-link .ads-nav-item-container ads-icon ::ng-deep svg{stroke:var(--color-white)!important;fill:var(--color-white)!important}.ads-nav-link{text-decoration:none}.left-side-content-container{container-type:inline-size;display:flex;flex-direction:column;height:100vh}::ng-deep as-split .as-split-gutter,::ng-deep as-split .as-split-gutter-icon{background-color:var(--color-light-30)}::ng-deep as-split .as-split-gutter:hover,::ng-deep as-split .as-split-gutter-icon:hover{background-color:var(--color-light-80)}::ng-deep as-split .as-split-gutter:active,::ng-deep as-split .as-split-gutter-icon:active{background-color:var(--color-light)}::ng-deep as-split .as-split-gutter-icon{width:8px;background-color:var(--color-light-30);background-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"6\" height=\"11\" viewBox=\"0 0 6 11\" fill=\"none\"><path d=\"M4.7142 2.92855C5.42428 2.92855 5.99991 2.35291 5.99991 1.64283C5.99991 0.932751 5.42428 0.357117 4.7142 0.357117C4.00412 0.357117 3.42848 0.932751 3.42848 1.64283C3.42848 2.35291 4.00412 2.92855 4.7142 2.92855Z\" fill=\"%23041F41\"/><path d=\"M4.7142 6.78566C5.42428 6.78566 5.99991 6.21003 5.99991 5.49995C5.99991 4.78987 5.42428 4.21423 4.7142 4.21423C4.00412 4.21423 3.42848 4.78987 3.42848 5.49995C3.42848 6.21003 4.00412 6.78566 4.7142 6.78566Z\" fill=\"%23041F41\"/><path d=\"M4.7142 10.6428C5.42428 10.6428 5.99991 10.0672 5.99991 9.35713C5.99991 8.64704 5.42428 8.07141 4.7142 8.07141C4.00412 8.07141 3.42848 8.64704 3.42848 9.35713C3.42848 10.0672 4.00412 10.6428 4.7142 10.6428Z\" fill=\"%23041F41\"/><path d=\"M1.28571 2.92855C1.99579 2.92855 2.57143 2.35291 2.57143 1.64283C2.57143 0.932751 1.99579 0.357117 1.28571 0.357117C0.575634 0.357117 0 0.932751 0 1.64283C0 2.35291 0.575634 2.92855 1.28571 2.92855Z\" fill=\"%23041F41\"/><path d=\"M1.28571 6.78566C1.99579 6.78566 2.57143 6.21003 2.57143 5.49995C2.57143 4.78987 1.99579 4.21423 1.28571 4.21423C0.575634 4.21423 0 4.78987 0 5.49995C0 6.21003 0.575634 6.78566 1.28571 6.78566Z\" fill=\"%23041F41\"/><path d=\"M1.28571 10.6428C1.99579 10.6428 2.57143 10.0672 2.57143 9.35713C2.57143 8.64704 1.99579 8.07141 1.28571 8.07141C0.575634 8.07141 0 8.64704 0 9.35713C0 10.0672 0.575634 10.6428 1.28571 10.6428Z\" fill=\"%23041F41\"/></svg>')!important}.bottom-container{padding:16px 12px;flex-grow:1;display:flex;flex-direction:column}@container (max-width: 70px){.bottom-container{flex-grow:unset}.bottom-container:hover{background-color:var(--color-secondary-hover)}.bottom-container:hover ads-icon ::ng-deep svg{stroke:var(--color-white)}.bottom-container:active{background-color:var(--color-secondary-pressed)}.hide-on-collapsed{display:none}.show-on-collapsed{display:contents}}@container (min-width: 71px){.hide-on-collapsed{display:contents}.show-on-collapsed{display:none}}\n"] }]
|
|
67
76
|
}], ctorParameters: () => [{ type: i1.AdsIconRegistry }], propDecorators: { sideNavArea: [{
|
|
68
77
|
type: ViewChild,
|
|
69
78
|
args: ['sideNavArea', { read: ElementRef }]
|
|
70
79
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRzLXVpL3NyYy9saWIvY29tcG9uZW50cy9uYXYtYmFyL3NpZGUtbmF2LWJhci9zaWRlLW5hdi1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZHMtdWkvc3JjL2xpYi9jb21wb25lbnRzL25hdi1iYXIvc2lkZS1uYXYtYmFyL3NpZGUtbmF2LWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBUzFELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsY0FBYztJQUNkLFlBQW9CLFFBQXlCO1FBQXpCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBSTdDLGlEQUFpRDtRQUNqRCx5QkFBb0IsR0FBRyxLQUFLLENBQVMsR0FBRyxDQUFDLENBQUM7UUFFMUMsMEJBQTBCO1FBQzFCLG1CQUFjLEdBQUcsS0FBSyxFQUF3QixDQUFDO1FBRS9DLDRDQUE0QztRQUM1QyxzQkFBaUIsR0FBRyxLQUFLLEVBQXdCLENBQUM7UUFFbEQsNEJBQTRCO1FBQzVCLGFBQVEsR0FBRyxLQUFLLENBQVksRUFBRSxDQUFDLENBQUM7UUFFaEMsY0FBYztRQUNkLGdCQUFXLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXJDLGNBQWM7UUFDZCxnQkFBVyxHQUFHLE1BQU0sQ0FBUyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRTFELGNBQWM7UUFDTixxQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQztRQUVoRCxjQUFjO1FBQ04scUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRTlCLGNBQWM7UUFDTixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBNUJwQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQWdDRCxjQUFjO0lBQ2QsUUFBUTtRQUNOLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsY0FBYztJQUNkLFNBQVMsQ0FBQyxLQUFrQztRQUMxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxjQUFjO0lBQ2QsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDNUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsOENBQThDO0lBQzlDLGNBQWM7SUFDZCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDOzhHQXpFVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixndkJBa0NDLFVBQVUsNkJDN0M5Qyxva0VBOERBOzsyRkRuRGEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGtCQUFrQjtvRkFzQ29CLFdBQVc7c0JBQTFELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5wdXQsIE9uSW5pdCwgc2lnbmFsLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZHNJY29uUmVnaXN0cnkgfSBmcm9tICdAYXNjZW50Z2wvYWRzLWljb25zJztcbmltcG9ydCB7IGFkc0ljb25TZWFyY2ggfSBmcm9tICdAYXNjZW50Z2wvYWRzLWljb25zL2ljb25zJztcbmltcG9ydCB7IE5hdkl0ZW0gfSBmcm9tICcuL25hdi1pdGVtLnR5cGVzJztcbmltcG9ydCB7IFNwbGl0R3V0dGVySW50ZXJhY3Rpb25FdmVudCB9IGZyb20gJ2FuZ3VsYXItc3BsaXQvbGliL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Fkcy1zaWRlLW5hdi1iYXInLFxuICBzdHlsZVVybHM6IFsnc2lkZS1uYXYtYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnc2lkZS1uYXYtYmFyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQWRzU2lkZU5hdkJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKiBAaWdub3JlICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVnaXN0cnk6IEFkc0ljb25SZWdpc3RyeSkge1xuICAgIHRoaXMucmVnaXN0cnkucmVnaXN0ZXIoW2Fkc0ljb25TZWFyY2hdKTtcbiAgfVxuXG4gIC8qKiBUaGUgZGVmYXVsdCBleHBhbmRlZCB3aWR0aCBmb3IgdGhlIHNpZGViYXIgKi9cbiAgZGVmYXVsdEV4cGFuZGVkV2lkdGggPSBpbnB1dDxudW1iZXI+KDIyMCk7XG5cbiAgLyoqIFRoZSBzZWFyY2ggdGVtcGxhdGUgKi9cbiAgc2VhcmNoVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oKTtcblxuICAvKiogVGhlIGV4dHJhIGRhdGEgIHRlbXBsYXRlIGJlbG93IHNlYXJjaCAqL1xuICBleHRyYURhdGFUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPHVua25vd24+PigpO1xuXG4gIC8qKiBBcnJheSBvZiBuYXYgZWxlbWVudHMgKi9cbiAgbmF2SXRlbXMgPSBpbnB1dDxOYXZJdGVtW10+KFtdKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBpc0NvbGxhcHNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgc2lkZWJhclNpemUgPSBzaWduYWw8bnVtYmVyPih0aGlzLmRlZmF1bHRFeHBhbmRlZFdpZHRoKCkpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgbG9jYWxTdG9yYWdlTmFtZSA9ICdzaWRlLW5hdi1iYXItd2lkdGgnO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgd2lkdGhUb0NvbGxhcHNlZCA9IDcwO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgbWluV2lkdGggPSA1MDtcblxuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKCdzaWRlTmF2QXJlYScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBzaWRlTmF2QXJlYSE6IEVsZW1lbnRSZWY7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlTmFtZSkpIHtcbiAgICAgIHRoaXMuc2lkZWJhclNpemUuc2V0KEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VOYW1lKSEpKTtcbiAgICB9XG4gICAgdGhpcy5pc0NvbGxhcHNlZC5zZXQodGhpcy5zaWRlYmFyU2l6ZSgpIDw9IHRoaXMud2lkdGhUb0NvbGxhcHNlZCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBvbkRyYWdFbmQoZXZlbnQ6IFNwbGl0R3V0dGVySW50ZXJhY3Rpb25FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZUxvY2FsU3RvcmFnZShOdW1iZXIoZXZlbnQuc2l6ZXNbMF0pKTtcbiAgICB0aGlzLmlzQ29sbGFwc2VkLnNldChOdW1iZXIoZXZlbnQuc2l6ZXNbMF0pIDw9IHRoaXMud2lkdGhUb0NvbGxhcHNlZCk7XG4gIH1cblxuICAvKiogRXhwYW5kIHRoZSBzaWRlYmFyIGJldHdlZW4gY29sbGFwc2VkIGFuZCBleHBhbmRlZCAqL1xuICAvKiogQGlnbm9yZSAqL1xuICBleHBhbmRTaWRlYmFyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkKCkpIHtcbiAgICAgIHRoaXMuc2lkZWJhclNpemUuc2V0KHRoaXMud2lkdGhUb0NvbGxhcHNlZCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0NvbGxhcHNlZC5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnNhdmVMb2NhbFN0b3JhZ2UodGhpcy5kZWZhdWx0RXhwYW5kZWRXaWR0aCgpKTtcbiAgICAgICAgdGhpcy5zaWRlYmFyU2l6ZS5zZXQodGhpcy5kZWZhdWx0RXhwYW5kZWRXaWR0aCgpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0NvbGxhcHNlZC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2F2ZUxvY2FsU3RvcmFnZSh0aGlzLm1pbldpZHRoKTtcbiAgICAgICAgdGhpcy5zaWRlYmFyU2l6ZS5zZXQodGhpcy5taW5XaWR0aCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogU2F2ZSBjdXJyZW50IHdpZHRoIHRvIHRoZSBsb2NhbCBzdG9yYWdlICovXG4gIC8qKiBAaWdub3JlICovXG4gIHNhdmVMb2NhbFN0b3JhZ2Uoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VOYW1lLCBKU09OLnN0cmluZ2lmeShzaXplKSk7XG4gIH1cbn1cbiIsIjxhcy1zcGxpdFxuICBbdXNlVHJhbnNpdGlvbl09XCJ0cnVlXCJcbiAgdW5pdD1cInBpeGVsXCJcbiAgW2d1dHRlclNpemVdPVwiMTBcIlxuICAoZHJhZ0VuZCk9XCJvbkRyYWdFbmQoJGV2ZW50KVwiXG4gIChndXR0ZXJEYmxDbGljayk9XCJleHBhbmRTaWRlYmFyKClcIlxuICBbZ3V0dGVyRGJsQ2xpY2tEdXJhdGlvbl09XCI1MDBcIlxuPlxuICA8YXMtc3BsaXQtYXJlYSBbc2l6ZV09XCJzaWRlYmFyU2l6ZSgpXCIgW21pblNpemVdPVwiNTBcIiBbbWF4U2l6ZV09XCI2MDBcIiAjc2lkZU5hdkFyZWE+XG4gICAgPGRpdiBjbGFzcz1cImxlZnQtc2lkZS1jb250ZW50LWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxvZ28tY29udGFpbmVyXCI+XG4gICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIicvJ1wiPlxuICAgICAgICAgIDxhZHMtcHJpbWFyeS1sb2dvIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCIgY2xhc3M9XCJzaG93LW9uLWNvbGxhcHNlZFwiIC8+XG4gICAgICAgICAgPGFkcy1wcmltYXJ5LWxvZ28gW2lzQ29sbGFwc2VkXT1cImZhbHNlXCIgY2xhc3M9XCJoaWRlLW9uLWNvbGxhcHNlZFwiIC8+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibmF2LWl0ZW1zLWNvbnRhaW5lclwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIG5hdkl0ZW1zKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS5ocmVmXCJcbiAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmUtbmF2LWxpbmtcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6IHRydWUgfVwiXG4gICAgICAgICAgICBjbGFzcz1cImFkcy1uYXYtbGlua1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkcy1uYXYtaXRlbS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgQGlmICghIWl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICAgIDxhZHMtaWNvblxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5pY29uIVwiXG4gICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgdGhlbWU9XCJpY29uUHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBzdHJva2U9XCJpY29uUHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cIi0tY29sb3ItbWVkaXVtXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRlLW9uLWNvbGxhcHNlZFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1jb250YWluZXJcIiAoY2xpY2spPVwiISFzZWFyY2hUZW1wbGF0ZSgpICYmIGlzQ29sbGFwc2VkKCkgPyBleHBhbmRTaWRlYmFyKCkgOiBudWxsXCI+XG4gICAgICAgIEBpZiAoISFzZWFyY2hUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPGFkcy1pY29uIG5hbWU9XCJzZWFyY2hcIiBzaXplPVwic21cIiB0aGVtZT1cImljb25QcmltYXJ5XCIgY2xhc3M9XCJzaG93LW9uLWNvbGxhcHNlZFwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhpZGUtb24tY29sbGFwc2VkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoVGVtcGxhdGUoKSFcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICghIWV4dHJhRGF0YVRlbXBsYXRlKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZS1vbi1jb2xsYXBzZWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHRyYURhdGFUZW1wbGF0ZSgpIVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2FzLXNwbGl0LWFyZWE+XG5cbiAgPGFzLXNwbGl0LWFyZWE+XG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICA8L2FzLXNwbGl0LWFyZWE+XG48L2FzLXNwbGl0PlxuIl19
|