raise-common-lib-new 0.0.2
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 +24 -0
- package/assets/language/fr.d.ts +3377 -0
- package/assets/language/ja.d.ts +3351 -0
- package/assets/language/ko.d.ts +3351 -0
- package/assets/language/zh-CN.d.ts +3064 -0
- package/assets/language/zh-TW.d.ts +3354 -0
- package/esm2022/assets/language/fr.mjs +3378 -0
- package/esm2022/assets/language/ja.mjs +3352 -0
- package/esm2022/assets/language/ko.mjs +3352 -0
- package/esm2022/assets/language/zh-CN.mjs +3065 -0
- package/esm2022/assets/language/zh-TW.mjs +3355 -0
- package/esm2022/lib/commentary/constants.mjs +2 -0
- package/esm2022/lib/commentary/index.component.mjs +146 -0
- package/esm2022/lib/common-grid/grid-action/grid-action-item/grid-action-item.component.mjs +44 -0
- package/esm2022/lib/common-grid/grid-action/grid-action.component.mjs +18 -0
- package/esm2022/lib/common-grid/index.component.mjs +461 -0
- package/esm2022/lib/constant/index.mjs +11 -0
- package/esm2022/lib/dialog/common-delete-dialog/index.component.mjs +46 -0
- package/esm2022/lib/dialog/common-dialog/index.component.mjs +85 -0
- package/esm2022/lib/dialog/new-action-notification/new-action-notification.component.mjs +51 -0
- package/esm2022/lib/float-box/index.component.mjs +217 -0
- package/esm2022/lib/form/checkbox-group/index.component.mjs +57 -0
- package/esm2022/lib/form/drawer-form/constants.mjs +10 -0
- package/esm2022/lib/form/drawer-form/drawer-form.component.mjs +336 -0
- package/esm2022/lib/form/encrypted-input/index.component.mjs +35 -0
- package/esm2022/lib/form/radio-group/index.component.mjs +42 -0
- package/esm2022/lib/form/switch-input/index.component.mjs +42 -0
- package/esm2022/lib/form/tag-input/index.component.mjs +82 -0
- package/esm2022/lib/form/toolbar-item/index.component.mjs +56 -0
- package/esm2022/lib/layout/drawer/index.component.mjs +165 -0
- package/esm2022/lib/layout/grid-box/index.component.mjs +67 -0
- package/esm2022/lib/layout/main-container/index.component.mjs +60 -0
- package/esm2022/lib/layout/multi-tab/index.component.mjs +263 -0
- package/esm2022/lib/layout/nav-card-group/constants.mjs +2 -0
- package/esm2022/lib/layout/nav-card-group/index.component.mjs +37 -0
- package/esm2022/lib/layout/page-list/index.component.mjs +73 -0
- package/esm2022/lib/layout/page-tab/index.component.mjs +56 -0
- package/esm2022/lib/layout/rs-aside/index.component.mjs +76 -0
- package/esm2022/lib/layout/rs-footer/index.component.mjs +16 -0
- package/esm2022/lib/layout/rs-header/index.component.mjs +56 -0
- package/esm2022/lib/layout/toolbar/constants.mjs +2 -0
- package/esm2022/lib/layout/toolbar/index.component.mjs +79 -0
- package/esm2022/lib/raise-common-lib.module.mjs +505 -0
- package/esm2022/lib/service/common-function.service.mjs +141 -0
- package/esm2022/lib/service/dialog.service.mjs +132 -0
- package/esm2022/lib/service/drawer.service.mjs +111 -0
- package/esm2022/lib/service/icon-loader.service.mjs +23 -0
- package/esm2022/lib/service/keep-alive.service.mjs +83 -0
- package/esm2022/lib/service/translation.service.mjs +98 -0
- package/esm2022/lib/utils/decorator.mjs +14 -0
- package/esm2022/public-api.mjs +35 -0
- package/esm2022/raise-common-lib-new.mjs +5 -0
- package/fesm2022/raise-common-lib-new.mjs +20114 -0
- package/fesm2022/raise-common-lib-new.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/commentary/constants.d.ts +15 -0
- package/lib/commentary/index.component.d.ts +38 -0
- package/lib/common-grid/grid-action/grid-action-item/grid-action-item.component.d.ts +10 -0
- package/lib/common-grid/grid-action/grid-action.component.d.ts +14 -0
- package/lib/common-grid/index.component.d.ts +122 -0
- package/lib/constant/index.d.ts +54 -0
- package/lib/dialog/common-delete-dialog/index.component.d.ts +29 -0
- package/lib/dialog/common-dialog/index.component.d.ts +29 -0
- package/lib/dialog/new-action-notification/new-action-notification.component.d.ts +33 -0
- package/lib/float-box/index.component.d.ts +33 -0
- package/lib/form/checkbox-group/index.component.d.ts +22 -0
- package/lib/form/drawer-form/constants.d.ts +34 -0
- package/lib/form/drawer-form/drawer-form.component.d.ts +67 -0
- package/lib/form/encrypted-input/index.component.d.ts +14 -0
- package/lib/form/radio-group/index.component.d.ts +19 -0
- package/lib/form/switch-input/index.component.d.ts +15 -0
- package/lib/form/tag-input/index.component.d.ts +25 -0
- package/lib/form/toolbar-item/index.component.d.ts +17 -0
- package/lib/layout/drawer/index.component.d.ts +45 -0
- package/lib/layout/grid-box/index.component.d.ts +19 -0
- package/lib/layout/main-container/index.component.d.ts +18 -0
- package/lib/layout/multi-tab/index.component.d.ts +52 -0
- package/lib/layout/nav-card-group/constants.d.ts +14 -0
- package/lib/layout/nav-card-group/index.component.d.ts +16 -0
- package/lib/layout/page-list/index.component.d.ts +21 -0
- package/lib/layout/page-tab/index.component.d.ts +18 -0
- package/lib/layout/rs-aside/index.component.d.ts +19 -0
- package/lib/layout/rs-footer/index.component.d.ts +8 -0
- package/lib/layout/rs-header/index.component.d.ts +21 -0
- package/lib/layout/toolbar/constants.d.ts +8 -0
- package/lib/layout/toolbar/index.component.d.ts +22 -0
- package/lib/raise-common-lib.module.d.ts +54 -0
- package/lib/service/common-function.service.d.ts +18 -0
- package/lib/service/dialog.service.d.ts +55 -0
- package/lib/service/drawer.service.d.ts +46 -0
- package/lib/service/icon-loader.service.d.ts +11 -0
- package/lib/service/keep-alive.service.d.ts +15 -0
- package/lib/service/translation.service.d.ts +12 -0
- package/lib/utils/decorator.d.ts +1 -0
- package/package.json +25 -0
- package/public-api.d.ts +31 -0
- package/src/assets/img/arrow_right.svg +4 -0
- package/src/assets/img/calendar-disabled.svg +6 -0
- package/src/assets/img/calendar.svg +6 -0
- package/src/assets/img/calendar_arrow_left.svg +3 -0
- package/src/assets/img/calendar_arrow_right.svg +3 -0
- package/src/assets/img/checked-vector.svg +3 -0
- package/src/assets/img/close-url.svg +10 -0
- package/src/assets/img/close.svg +10 -0
- package/src/assets/img/comment-cancel.svg +4 -0
- package/src/assets/img/comment-check.svg +5 -0
- package/src/assets/img/delete.svg +14 -0
- package/src/assets/img/desktop-refresh-btn.svg +6 -0
- package/src/assets/img/down-arrow.svg +3 -0
- package/src/assets/img/drawer-back.svg +4 -0
- package/src/assets/img/dropdown-arrow-disabled.svg +3 -0
- package/src/assets/img/dropdown-arrow.svg +3 -0
- package/src/assets/img/export.svg +5 -0
- package/src/assets/img/eye-close.svg +4 -0
- package/src/assets/img/eye-open.svg +4 -0
- package/src/assets/img/grid-action-copy.svg +6 -0
- package/src/assets/img/grid-action-delete.svg +14 -0
- package/src/assets/img/grid-action-detail.svg +7 -0
- package/src/assets/img/grid-action-download.svg +7 -0
- package/src/assets/img/grid-action-edit.svg +4 -0
- package/src/assets/img/grid-action-export.svg +12 -0
- package/src/assets/img/grid-action-move.svg +8 -0
- package/src/assets/img/grid-action-note.svg +10 -0
- package/src/assets/img/grid-action-send.svg +5 -0
- package/src/assets/img/grid-action-settle.svg +13 -0
- package/src/assets/img/grid-menu-arrow-right.svg +3 -0
- package/src/assets/img/grid-pager-arrow-left.svg +3 -0
- package/src/assets/img/grid-pager-arrows-left.svg +4 -0
- package/src/assets/img/icon-more-active.svg +7 -0
- package/src/assets/img/icon-more.svg +7 -0
- package/src/assets/img/more.svg +5 -0
- package/src/assets/img/notification-close.svg +4 -0
- package/src/assets/img/notification-collapse.svg +14 -0
- package/src/assets/img/notification-status-error.svg +5 -0
- package/src/assets/img/notification-status-loading.svg +9 -0
- package/src/assets/img/notification-status-success.svg +4 -0
- package/src/assets/img/notification-status-warning.svg +5 -0
- package/src/assets/img/plus.svg +4 -0
- package/src/assets/img/raise_loading.gif +0 -0
- package/src/assets/img/raise_logo_main.svg +13 -0
- package/src/assets/img/search.svg +4 -0
- package/src/assets/img/split-button-arrow.svg +3 -0
- package/src/assets/img/table-column-menu.svg +5 -0
- package/src/assets/img/table-sort-arrow.svg +6 -0
- package/src/assets/img/tag-remove.svg +4 -0
- package/src/assets/img/toggle-menu-icon.svg +3 -0
- package/src/assets/img/toolbar-action-add.svg +4 -0
- package/src/assets/img/toolbar-action-delete.svg +14 -0
- package/src/assets/img/toolbar-action-download.svg +5 -0
- package/src/assets/img/toolbar-action-duplicate.svg +6 -0
- package/src/assets/img/toolbar-action-export.svg +5 -0
- package/src/assets/img/toolbar-action-import.svg +5 -0
- package/src/assets/img/toolbar-action-refresh.svg +14 -0
- package/src/assets/img/toolbar-action-upload.svg +5 -0
- package/src/assets/img/tooltip-icon.svg +4 -0
- package/src/assets/language/fr.ts +3603 -0
- package/src/assets/language/ja.ts +3501 -0
- package/src/assets/language/ko.ts +3478 -0
- package/src/assets/language/zh-CN.ts +3115 -0
- package/src/assets/language/zh-TW.ts +3411 -0
- package/src/assets/style/reset/button.scss +187 -0
- package/src/assets/style/reset/checkbox.scss +33 -0
- package/src/assets/style/reset/dropdown.scss +564 -0
- package/src/assets/style/reset/grid.scss +845 -0
- package/src/assets/style/reset/input.scss +97 -0
- package/src/assets/style/reset/mat-dialog.scss +7 -0
- package/src/assets/style/reset/radio.scss +37 -0
- package/src/assets/style/reset/switch.scss +32 -0
- package/src/assets/style/style.scss +63 -0
- package/src/assets/style/syncfusion.min.css +1 -0
- package/src/assets/style/variables.scss +60 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// 组件类
|
|
2
|
+
import { Component, ContentChild, HostListener, Input, ViewChild, } from "@angular/core";
|
|
3
|
+
import { RSHeaderComponent } from "../rs-header/index.component";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../service/drawer.service";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "../rs-footer/index.component";
|
|
8
|
+
import * as i4 from "../drawer/index.component";
|
|
9
|
+
export class MainContainerComponent {
|
|
10
|
+
globalDrawer;
|
|
11
|
+
headerRef;
|
|
12
|
+
drawer;
|
|
13
|
+
isCollapsed = false; // 接收输入属性
|
|
14
|
+
singleReuseUrls = []; //只能单个缓存的url
|
|
15
|
+
constructor(globalDrawer) {
|
|
16
|
+
this.globalDrawer = globalDrawer;
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() { }
|
|
19
|
+
onResize(event) {
|
|
20
|
+
const screenWidth = window.innerWidth; // 更新屏幕宽度
|
|
21
|
+
if (screenWidth <= 992) {
|
|
22
|
+
this.headerRef && this.headerRef.onToggleMenu(false);
|
|
23
|
+
}
|
|
24
|
+
else if (screenWidth < 1200) {
|
|
25
|
+
this.headerRef && this.headerRef.onToggleMenu(true);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.headerRef && this.headerRef.onToggleMenu(false);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
ngAfterViewInit() {
|
|
32
|
+
this.globalDrawer.setDrawer(this.drawer); // 设置抽屉组件
|
|
33
|
+
}
|
|
34
|
+
onRightAsideClick() {
|
|
35
|
+
const screenWidth = window.innerWidth;
|
|
36
|
+
if (screenWidth <= 992 && this.isCollapsed) {
|
|
37
|
+
this.headerRef && this.headerRef.onToggleMenu();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MainContainerComponent, deps: [{ token: i1.DrawerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MainContainerComponent, selector: "rs-main-container", inputs: { isCollapsed: "isCollapsed", singleReuseUrls: "singleReuseUrls" }, host: { listeners: { "window:resize": "onResize($event)" } }, queries: [{ propertyName: "headerRef", first: true, predicate: RSHeaderComponent, descendants: true, static: true }], viewQueries: [{ propertyName: "drawer", first: true, predicate: ["drawer"], descendants: true }], ngImport: i0, template: "<div class=\"app-main-container\">\r\n <ng-content select=\"[headerSlot]\"></ng-content>\r\n <div class=\"main-page\">\r\n <div class=\"left-aside\">\r\n <ng-content select=\"[leftAsideSlot]\"></ng-content>\r\n </div>\r\n <div\r\n class=\"right-aside\"\r\n [ngClass]=\"{ isCollapsed: isCollapsed }\"\r\n (click)=\"onRightAsideClick()\"\r\n >\r\n <ng-content select=\"[multiTabSlot]\"></ng-content>\r\n <!-- <rs-multi-tab [singleReuseUrls]=\"singleReuseUrls\"></rs-multi-tab> -->\r\n <div class=\"router-content\">\r\n <rs-drawer #drawer>\r\n <ng-content select=\"[routerSlot]\"></ng-content>\r\n </rs-drawer>\r\n </div>\r\n <rs-footer></rs-footer>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".app-main-container{display:flex;flex-direction:column;height:100vh}.app-main-container .main-page{flex:1;height:0;display:flex;background-color:var(--rs-container-bg)}.app-main-container .left-aside{height:100%}.app-main-container .right-aside{width:0;flex:1;display:flex;flex-direction:column;padding-right:12px}.app-main-container .right-aside .router-content{flex:1;overflow:auto;max-width:1886px;width:100%;margin:0 auto}@media (max-width: 992px){.app-main-container .right-aside.isCollapsed{position:relative}.app-main-container .right-aside.isCollapsed:after{content:\" \";position:absolute;z-index:5;inset:0;background-color:#0003}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.RSFooterComponent, selector: "rs-footer" }, { kind: "component", type: i4.DrawerComponent, selector: "rs-drawer" }] });
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MainContainerComponent, decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{ selector: "rs-main-container", template: "<div class=\"app-main-container\">\r\n <ng-content select=\"[headerSlot]\"></ng-content>\r\n <div class=\"main-page\">\r\n <div class=\"left-aside\">\r\n <ng-content select=\"[leftAsideSlot]\"></ng-content>\r\n </div>\r\n <div\r\n class=\"right-aside\"\r\n [ngClass]=\"{ isCollapsed: isCollapsed }\"\r\n (click)=\"onRightAsideClick()\"\r\n >\r\n <ng-content select=\"[multiTabSlot]\"></ng-content>\r\n <!-- <rs-multi-tab [singleReuseUrls]=\"singleReuseUrls\"></rs-multi-tab> -->\r\n <div class=\"router-content\">\r\n <rs-drawer #drawer>\r\n <ng-content select=\"[routerSlot]\"></ng-content>\r\n </rs-drawer>\r\n </div>\r\n <rs-footer></rs-footer>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".app-main-container{display:flex;flex-direction:column;height:100vh}.app-main-container .main-page{flex:1;height:0;display:flex;background-color:var(--rs-container-bg)}.app-main-container .left-aside{height:100%}.app-main-container .right-aside{width:0;flex:1;display:flex;flex-direction:column;padding-right:12px}.app-main-container .right-aside .router-content{flex:1;overflow:auto;max-width:1886px;width:100%;margin:0 auto}@media (max-width: 992px){.app-main-container .right-aside.isCollapsed{position:relative}.app-main-container .right-aside.isCollapsed:after{content:\" \";position:absolute;z-index:5;inset:0;background-color:#0003}}\n"] }]
|
|
46
|
+
}], ctorParameters: function () { return [{ type: i1.DrawerService }]; }, propDecorators: { headerRef: [{
|
|
47
|
+
type: ContentChild,
|
|
48
|
+
args: [RSHeaderComponent, { static: true }]
|
|
49
|
+
}], drawer: [{
|
|
50
|
+
type: ViewChild,
|
|
51
|
+
args: ["drawer", { static: false }]
|
|
52
|
+
}], isCollapsed: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], singleReuseUrls: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], onResize: [{
|
|
57
|
+
type: HostListener,
|
|
58
|
+
args: ["window:resize", ["$event"]]
|
|
59
|
+
}] } });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2xheW91dC9tYWluLWNvbnRhaW5lci9pbmRleC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvbGF5b3V0L21haW4tY29udGFpbmVyL2luZGV4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFDTixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBU2pFLE1BQU0sT0FBTyxzQkFBc0I7SUFPYjtJQU4rQixTQUFTLENBQUM7SUFDckIsTUFBTSxDQUFrQjtJQUV2RCxXQUFXLEdBQVksS0FBSyxDQUFDLENBQUMsU0FBUztJQUN2QyxlQUFlLEdBQWEsRUFBRSxDQUFDLENBQUMsWUFBWTtJQUVyRCxZQUFvQixZQUEyQjtRQUEzQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtJQUFHLENBQUM7SUFFbkQsUUFBUSxLQUFJLENBQUM7SUFHYixRQUFRLENBQUMsS0FBSztRQUNaLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTO1FBQ2hELElBQUksV0FBVyxJQUFJLEdBQUcsRUFBRTtZQUN0QixJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3REO2FBQU0sSUFBSSxXQUFXLEdBQUcsSUFBSSxFQUFFO1lBQzdCLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEQ7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDckQsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDdEMsSUFBSSxXQUFXLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQzt3R0FoQ1Usc0JBQXNCOzRGQUF0QixzQkFBc0IsME9BQ25CLGlCQUFpQixnS0NuQmpDLG13QkFzQkE7OzRGREphLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxtQkFBbUI7b0dBS3NCLFNBQVM7c0JBQTNELFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNULE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFN0IsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQU9OLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDnu4Tku7bnsbtcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJTSGVhZGVyQ29tcG9uZW50IH0gZnJvbSBcIi4uL3JzLWhlYWRlci9pbmRleC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRHJhd2VyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2RyYXdlci9pbmRleC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRHJhd2VyU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2RyYXdlci5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1tYWluLWNvbnRhaW5lclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYWluQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAQ29udGVudENoaWxkKFJTSGVhZGVyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBoZWFkZXJSZWY7XHJcbiAgQFZpZXdDaGlsZChcImRyYXdlclwiLCB7IHN0YXRpYzogZmFsc2UgfSkgZHJhd2VyOiBEcmF3ZXJDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpIGlzQ29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7IC8vIOaOpeaUtui+k+WFpeWxnuaAp1xyXG4gIEBJbnB1dCgpIHNpbmdsZVJldXNlVXJsczogc3RyaW5nW10gPSBbXTsgLy/lj6rog73ljZXkuKrnvJPlrZjnmoR1cmxcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnbG9iYWxEcmF3ZXI6IERyYXdlclNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIG9uUmVzaXplKGV2ZW50KSB7XHJcbiAgICBjb25zdCBzY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOyAvLyDmm7TmlrDlsY/luZXlrr3luqZcclxuICAgIGlmIChzY3JlZW5XaWR0aCA8PSA5OTIpIHtcclxuICAgICAgdGhpcy5oZWFkZXJSZWYgJiYgdGhpcy5oZWFkZXJSZWYub25Ub2dnbGVNZW51KGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZiAoc2NyZWVuV2lkdGggPCAxMjAwKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVyUmVmICYmIHRoaXMuaGVhZGVyUmVmLm9uVG9nZ2xlTWVudSh0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGVhZGVyUmVmICYmIHRoaXMuaGVhZGVyUmVmLm9uVG9nZ2xlTWVudShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmdsb2JhbERyYXdlci5zZXREcmF3ZXIodGhpcy5kcmF3ZXIpOyAvLyDorr7nva7mir3lsYnnu4Tku7ZcclxuICB9XHJcblxyXG4gIG9uUmlnaHRBc2lkZUNsaWNrKCkge1xyXG4gICAgY29uc3Qgc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIGlmIChzY3JlZW5XaWR0aCA8PSA5OTIgJiYgdGhpcy5pc0NvbGxhcHNlZCkge1xyXG4gICAgICB0aGlzLmhlYWRlclJlZiAmJiB0aGlzLmhlYWRlclJlZi5vblRvZ2dsZU1lbnUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFwcC1tYWluLWNvbnRhaW5lclwiPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkZXJTbG90XVwiPjwvbmctY29udGVudD5cclxuICA8ZGl2IGNsYXNzPVwibWFpbi1wYWdlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdC1hc2lkZVwiPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGVmdEFzaWRlU2xvdF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJyaWdodC1hc2lkZVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgaXNDb2xsYXBzZWQ6IGlzQ29sbGFwc2VkIH1cIlxyXG4gICAgICAoY2xpY2spPVwib25SaWdodEFzaWRlQ2xpY2soKVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttdWx0aVRhYlNsb3RdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8IS0tIDxycy1tdWx0aS10YWIgW3NpbmdsZVJldXNlVXJsc109XCJzaW5nbGVSZXVzZVVybHNcIj48L3JzLW11bHRpLXRhYj4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3V0ZXItY29udGVudFwiPlxyXG4gICAgICAgIDxycy1kcmF3ZXIgI2RyYXdlcj5cclxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltyb3V0ZXJTbG90XVwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L3JzLWRyYXdlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxycy1mb290ZXI+PC9ycy1mb290ZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
// 组件类
|
|
2
|
+
import { Component, EventEmitter, HostListener, Input, Output, } from "@angular/core";
|
|
3
|
+
import { NavigationEnd, } from "@angular/router";
|
|
4
|
+
import { filter } from "rxjs/operators";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/router";
|
|
7
|
+
import * as i2 from "../../service/common-function.service";
|
|
8
|
+
import * as i3 from "../../service/drawer.service";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
import * as i5 from "@syncfusion/ej2-angular-popups";
|
|
11
|
+
export class MultiTabComponent {
|
|
12
|
+
router;
|
|
13
|
+
cf;
|
|
14
|
+
activatedRoute;
|
|
15
|
+
ref;
|
|
16
|
+
drawer;
|
|
17
|
+
routeReuseStrategy;
|
|
18
|
+
constructor(router, cf, activatedRoute, ref, drawer, routeReuseStrategy) {
|
|
19
|
+
this.router = router;
|
|
20
|
+
this.cf = cf;
|
|
21
|
+
this.activatedRoute = activatedRoute;
|
|
22
|
+
this.ref = ref;
|
|
23
|
+
this.drawer = drawer;
|
|
24
|
+
this.routeReuseStrategy = routeReuseStrategy;
|
|
25
|
+
this.keepAlive = this.routeReuseStrategy;
|
|
26
|
+
}
|
|
27
|
+
keepAlive;
|
|
28
|
+
singleReuseUrls = []; //只能单个缓存的url
|
|
29
|
+
noGenerateTabUrls = []; //不生成tab的url
|
|
30
|
+
onRefreshTab = new EventEmitter();
|
|
31
|
+
subscriptions = [];
|
|
32
|
+
TAB_WIDTH = 164;
|
|
33
|
+
GAP_NORMAL = 54;
|
|
34
|
+
GAP_SMALL = 30;
|
|
35
|
+
textGap; // 文本与边框的总间距
|
|
36
|
+
foo;
|
|
37
|
+
comRef;
|
|
38
|
+
tabList = [];
|
|
39
|
+
selectedTab = 0;
|
|
40
|
+
maxTabs = 10;
|
|
41
|
+
screenWidth = window.innerWidth; // 初始化屏幕宽度
|
|
42
|
+
onResize(event) {
|
|
43
|
+
this.screenWidth = window.innerWidth; // 更新屏幕宽度
|
|
44
|
+
this.setEllipsisTitle();
|
|
45
|
+
}
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
this.initTab();
|
|
48
|
+
// 解决刷新页面后,选中的 tab 丢失问题
|
|
49
|
+
const isExistIdx = this.tabList.findIndex((ele) => this.urlWithoutQuery(ele.url) ===
|
|
50
|
+
this.urlWithoutQuery(this.router.url));
|
|
51
|
+
if (isExistIdx !== -1) {
|
|
52
|
+
this.selectedTab = isExistIdx;
|
|
53
|
+
}
|
|
54
|
+
this.subscriptions.push(this.router.events
|
|
55
|
+
.pipe(filter((event) => event instanceof NavigationEnd))
|
|
56
|
+
.subscribe(() => {
|
|
57
|
+
const navigation = this.router.getCurrentNavigation(); // 获取当前导航
|
|
58
|
+
if (navigation) {
|
|
59
|
+
const tooltipElements = document.querySelectorAll(".e-popup-open");
|
|
60
|
+
// 删除tooltips
|
|
61
|
+
tooltipElements.forEach((element) => {
|
|
62
|
+
const htmlElement = element;
|
|
63
|
+
htmlElement.style.display = "none";
|
|
64
|
+
});
|
|
65
|
+
const state = navigation.extras.state; // 获取传递的 state
|
|
66
|
+
const skipLocationChange = navigation.extras.skipLocationChange; // 获取是否跳过 location change
|
|
67
|
+
const currentRoute = this.router.routerState.root.firstChild;
|
|
68
|
+
const navigationInfo = JSON.parse(sessionStorage.getItem("navigationInfo") || "{}");
|
|
69
|
+
let title = (state && state.title) ||
|
|
70
|
+
navigationInfo.title ||
|
|
71
|
+
navigationInfo.subTitle ||
|
|
72
|
+
navigationInfo.name;
|
|
73
|
+
let noReused = (state && state.noReused) || false; // 当前tab不复用,新开一个tab,当有已经存在的tab时候也是新开
|
|
74
|
+
if (currentRoute && !skipLocationChange) {
|
|
75
|
+
if (this.noGenerateTabUrls.includes(this.urlWithoutQuery(this.router.url))) {
|
|
76
|
+
return; // 排除不生成tab的url
|
|
77
|
+
}
|
|
78
|
+
this.setTab(this.router.url, currentRoute.snapshot.routeConfig.path, title, noReused);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
ngAfterViewInit() {
|
|
84
|
+
setTimeout(() => {
|
|
85
|
+
this.setEllipsisTitle();
|
|
86
|
+
}, 50);
|
|
87
|
+
}
|
|
88
|
+
ngOnDestroy() {
|
|
89
|
+
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
90
|
+
}
|
|
91
|
+
setEllipsisTitle(title) {
|
|
92
|
+
this.textGap = this.GAP_NORMAL;
|
|
93
|
+
if (this.screenWidth <= 1100) {
|
|
94
|
+
this.textGap = this.GAP_SMALL;
|
|
95
|
+
}
|
|
96
|
+
let { allWidth, leftWidth, rightWidth } = this.calcTabWidth();
|
|
97
|
+
let width = Math.floor((allWidth - rightWidth) / (this.tabList && this.tabList.length));
|
|
98
|
+
if (title) {
|
|
99
|
+
return this.cf.setMiddleEllipsis(title, width > this.TAB_WIDTH
|
|
100
|
+
? this.TAB_WIDTH - this.textGap
|
|
101
|
+
: width - this.textGap, 12);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this.tabList.forEach((ele, idx) => {
|
|
105
|
+
ele.displayTitle = this.cf.setMiddleEllipsis(ele.title, width > this.TAB_WIDTH
|
|
106
|
+
? this.TAB_WIDTH - this.textGap
|
|
107
|
+
: width - this.textGap, 12);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
calcTabWidth() {
|
|
112
|
+
const wrap = document.querySelector(".rs-multi-tab");
|
|
113
|
+
const ulElement = document.querySelector(".rs-multi-tab > ul");
|
|
114
|
+
const refreshTabDiv = document.querySelector(".rs-multi-tab .refresh-tab");
|
|
115
|
+
let allWidth;
|
|
116
|
+
let leftWidth;
|
|
117
|
+
let rightWidth;
|
|
118
|
+
if (wrap && ulElement) {
|
|
119
|
+
// 获取元素的位置信息
|
|
120
|
+
const wrapRect = wrap.getBoundingClientRect();
|
|
121
|
+
const ulRect = ulElement.getBoundingClientRect();
|
|
122
|
+
const refreshTabRect = refreshTabDiv && refreshTabDiv.getBoundingClientRect();
|
|
123
|
+
allWidth = wrapRect.width;
|
|
124
|
+
leftWidth = ulRect.width;
|
|
125
|
+
rightWidth = (refreshTabRect && refreshTabRect.width) || 100;
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
allWidth,
|
|
129
|
+
leftWidth,
|
|
130
|
+
rightWidth,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
initTab() {
|
|
134
|
+
let TabCache = JSON.parse(sessionStorage.getItem("TabCache"));
|
|
135
|
+
this.tabList = TabCache || [];
|
|
136
|
+
if (this.tabList.length === 0) {
|
|
137
|
+
const title = sessionStorage.getItem("firstTabTitle");
|
|
138
|
+
if (title) {
|
|
139
|
+
sessionStorage.removeItem("firstTabTitle");
|
|
140
|
+
const url = this.router.url;
|
|
141
|
+
this.addTab(url, title);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
closeTab(idx, isExternal) {
|
|
146
|
+
const tab = this.tabList[idx];
|
|
147
|
+
this.tabList = this.tabList.filter((ele) => ele.url !== tab.url);
|
|
148
|
+
this.clearCache(this.urlWithoutQuery(tab.url));
|
|
149
|
+
if (!isExternal && this.selectedTab === idx) {
|
|
150
|
+
const targetIdx = Math.max(0, idx - 1);
|
|
151
|
+
this.changeTab(this.tabList[targetIdx], targetIdx);
|
|
152
|
+
}
|
|
153
|
+
if (idx < this.selectedTab) {
|
|
154
|
+
this.selectedTab = this.selectedTab - 1; // 如果关闭的tab在当前选中的tab之前,选中tab索引减1
|
|
155
|
+
}
|
|
156
|
+
this.setEllipsisTitle();
|
|
157
|
+
sessionStorage.setItem("TabCache", JSON.stringify(this.tabList));
|
|
158
|
+
this.ref.markForCheck();
|
|
159
|
+
}
|
|
160
|
+
changeTab(tab, idx) {
|
|
161
|
+
this.router.navigateByUrl(tab.url);
|
|
162
|
+
if (tab.navigationInfo) {
|
|
163
|
+
sessionStorage.setItem("navigationInfo", JSON.stringify(tab.navigationInfo));
|
|
164
|
+
}
|
|
165
|
+
if (tab.fromUrl) {
|
|
166
|
+
sessionStorage.setItem("fromUrl", tab.fromUrl);
|
|
167
|
+
}
|
|
168
|
+
if (tab.permissions) {
|
|
169
|
+
sessionStorage.setItem("permissions", JSON.stringify(tab.permissions));
|
|
170
|
+
}
|
|
171
|
+
this.selectedTab = idx;
|
|
172
|
+
this.ref.markForCheck();
|
|
173
|
+
}
|
|
174
|
+
addTab(url, title) {
|
|
175
|
+
if (this.tabList.length >= this.maxTabs) {
|
|
176
|
+
this.closeTab(1); // 删除第二个,第一个固定
|
|
177
|
+
}
|
|
178
|
+
const localPermissions = sessionStorage.getItem("permissions") ||
|
|
179
|
+
localStorage.getItem("permissions");
|
|
180
|
+
const navigationInfo = JSON.parse(sessionStorage.getItem("navigationInfo"));
|
|
181
|
+
const fromUrl = sessionStorage.getItem("fromUrl");
|
|
182
|
+
const permissions = JSON.parse(localPermissions);
|
|
183
|
+
this.tabList.push({
|
|
184
|
+
url: url,
|
|
185
|
+
title: title || "default",
|
|
186
|
+
displayTitle: title,
|
|
187
|
+
navigationInfo: navigationInfo,
|
|
188
|
+
permissions: permissions,
|
|
189
|
+
fromUrl: fromUrl,
|
|
190
|
+
});
|
|
191
|
+
this.selectedTab = this.tabList.length - 1;
|
|
192
|
+
this.setEllipsisTitle();
|
|
193
|
+
sessionStorage.setItem("TabCache", JSON.stringify(this.tabList));
|
|
194
|
+
this.ref.markForCheck();
|
|
195
|
+
}
|
|
196
|
+
setTab(url, pureUrl, title, noReused) {
|
|
197
|
+
const isExistIdx = this.tabList.findIndex((ele) => this.urlWithoutQuery(ele.url) === this.urlWithoutQuery(url));
|
|
198
|
+
if (isExistIdx === -1) {
|
|
199
|
+
const singleIdx = this.singleReuseUrls.findIndex((ele) => ele === pureUrl);
|
|
200
|
+
if (singleIdx !== -1) {
|
|
201
|
+
this.tabList = this.tabList.filter((ele) => !ele.url.includes(this.singleReuseUrls[singleIdx]));
|
|
202
|
+
this.keepAlive.clearCache(url);
|
|
203
|
+
this.drawer.deleteCache(url);
|
|
204
|
+
}
|
|
205
|
+
this.addTab(url, title);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
const targetTabUrl = this.tabList[isExistIdx].url;
|
|
209
|
+
if (targetTabUrl !== url || noReused) {
|
|
210
|
+
// 当缓存一致时候,但是url不一致,重新按照新的url生成tab
|
|
211
|
+
this.closeTab(isExistIdx, true);
|
|
212
|
+
this.addTab(url, title);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
this.changeTab(this.tabList[isExistIdx], isExistIdx);
|
|
216
|
+
}
|
|
217
|
+
this.ref.markForCheck();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
timer = null;
|
|
221
|
+
refreshTab() {
|
|
222
|
+
const loadingIcon = document.getElementById("loadingIcon");
|
|
223
|
+
loadingIcon.classList.add("refresh-tab-loading");
|
|
224
|
+
if (this.timer) {
|
|
225
|
+
clearInterval(this.timer);
|
|
226
|
+
}
|
|
227
|
+
// 模拟加载过程,1秒后移除动画
|
|
228
|
+
this.timer = setTimeout(() => {
|
|
229
|
+
loadingIcon.classList.remove("refresh-tab-loading");
|
|
230
|
+
this.timer = null;
|
|
231
|
+
}, 1500);
|
|
232
|
+
// this.keepAlive.clearCache(this.tabList[this.selectedTab].url);
|
|
233
|
+
// this.drawer.deleteCache(this.tabList[this.selectedTab].url);
|
|
234
|
+
const currentUrl = this.router.url; // 获取当前 URL
|
|
235
|
+
this.onRefreshTab.emit(currentUrl);
|
|
236
|
+
// this.router.navigateByUrl("/", { skipLocationChange: true }).then(() => {
|
|
237
|
+
// this.router.navigateByUrl(currentUrl); // 重新导航到当前 URL
|
|
238
|
+
// });
|
|
239
|
+
}
|
|
240
|
+
clearCache(url) {
|
|
241
|
+
this.keepAlive.clearCache(url); // 调用自定义策略的清除缓存方法
|
|
242
|
+
this.drawer.deleteCache(url);
|
|
243
|
+
}
|
|
244
|
+
urlWithoutQuery(url) {
|
|
245
|
+
return url.split("?")[0];
|
|
246
|
+
}
|
|
247
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiTabComponent, deps: [{ token: i1.Router }, { token: i2.CommonFunctionService }, { token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i3.DrawerService }, { token: i1.RouteReuseStrategy }], target: i0.ɵɵFactoryTarget.Component });
|
|
248
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiTabComponent, selector: "rs-multi-tab", inputs: { singleReuseUrls: "singleReuseUrls", noGenerateTabUrls: "noGenerateTabUrls" }, outputs: { onRefreshTab: "onRefreshTab" }, host: { listeners: { "window:resize": "onResize($event)" } }, ngImport: i0, template: "<div class=\"rs-multi-tab\" [ngClass]=\"{ 'b-line': tabList.length > 0 }\">\r\n\t<ul>\r\n\t\t<ng-container *ngFor=\"let tab of tabList; let i = index\">\r\n\t\t\t<li\r\n\t\t\t\t[ngClass]=\"selectedTab === i ? 'isSelect' : 'notSelect'\"\r\n\t\t\t\t(click)=\"changeTab(tab, i)\"\r\n\t\t\t>\r\n\t\t\t\t<ejs-tooltip\r\n\t\t\t\t\tid=\"notSelectTooltip\"\r\n\t\t\t\t\t[showTipPointer]=\"false\"\r\n\t\t\t\t\t[openDelay]=\"500\"\r\n\t\t\t\t\t*ngIf=\"tab.displayTitle !== tab.title; else originText\"\r\n\t\t\t\t\tstyle=\"height: 27px\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<ng-template #content>\r\n\t\t\t\t\t\t<div class=\"tooltip-content\">\r\n\t\t\t\t\t\t\t{{ tab.title }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<span class=\"tabTitle\">{{ tab.displayTitle }}</span>\r\n\t\t\t\t</ejs-tooltip>\r\n\t\t\t\t<ng-template #originText>\r\n\t\t\t\t\t<span class=\"tabTitle\">\r\n\t\t\t\t\t\t{{ tab.displayTitle }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<span\r\n\t\t\t\t\tclass=\"img-block\"\r\n\t\t\t\t\t*ngIf=\"selectedTab !== i && i !== 0\"\r\n\t\t\t\t></span>\r\n\t\t\t\t<img\r\n\t\t\t\t\t*ngIf=\"i !== 0\"\r\n\t\t\t\t\tsrc=\"../../../assets/img/close-url.svg\"\r\n\t\t\t\t\t(click)=\"closeTab(i)\"\r\n\t\t\t\t/>\r\n\t\t\t</li>\r\n\t\t</ng-container>\r\n\t</ul>\r\n\t<div class=\"refresh-tab\" (click)=\"refreshTab()\" *ngIf=\"tabList.length > 0\">\r\n\t\t<ejs-tooltip\r\n\t\t\tid=\"notSelectTooltip\"\r\n\t\t\tcssClass=\"notSelectTooltip\"\r\n\t\t\t[showTipPointer]=\"false\"\r\n\t\t\t[openDelay]=\"500\"\r\n\t\t\tstyle=\"height: 27px\"\r\n\t\t>\r\n\t\t\t<ng-template #content>\r\n\t\t\t\t<div class=\"tooltip-content\">Refresh Current Tab</div>\r\n\t\t\t</ng-template>\r\n\t\t\t<img\r\n\t\t\t\tid=\"loadingIcon\"\r\n\t\t\t\talt\r\n\t\t\t\tclass=\"refresh-btn\"\r\n\t\t\t\tsrc=\"../../../assets/img/desktop-refresh-btn.svg\"\r\n\t\t\t/>\r\n\t\t</ejs-tooltip>\r\n\t</div>\r\n</div>\r\n", styles: [".rs-multi-tab{width:100%;display:flex;justify-content:space-between;margin:0 auto;max-width:1886px}.rs-multi-tab.b-line{border-bottom:1px solid #e5eaef}.rs-multi-tab ul{display:flex;margin:0 8px;padding:0;overflow:hidden;height:100%}.rs-multi-tab ul li{max-width:164px;padding:0 12px;display:flex;align-items:center;flex:auto;border:1px solid #e5eaef;border-bottom:none;color:#5f6f81;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:28px;height:28px;background:#f8fafb;vertical-align:top;position:relative;cursor:default}.rs-multi-tab ul li .tabTitle{display:inline-block;white-space:nowrap;font-size:11px;font-family:Arial;font-style:normal;font-weight:400;line-height:16px;transition:width .3s ease}.rs-multi-tab ul li img{border-radius:4px;padding:4px;margin-left:6px;margin-top:1px;vertical-align:top;cursor:pointer}.rs-multi-tab ul li img:hover{background:#dce8f6}.rs-multi-tab ul li:not(:last-child){border-right:none}.rs-multi-tab ul li:first-of-type{border-top-left-radius:8px}.rs-multi-tab ul li:last-child{border-top-right-radius:8px}.rs-multi-tab ul .isSelect{color:#1f3f5c;background:#fff}.rs-multi-tab ul .notSelect img{display:none}.rs-multi-tab ul .notSelect .img-block{display:inline-block;width:22px}.rs-multi-tab ul .notSelect:hover{color:#1f3f5c;background-color:#1f7bff0a}.rs-multi-tab ul .notSelect:hover .img-block{display:none}.rs-multi-tab ul .notSelect:hover img{display:inline-block}.rs-multi-tab .refresh-tab{cursor:pointer;text-align:right;color:#6c7c90;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:28px;padding-right:12px}.rs-multi-tab .refresh-tab img{vertical-align:middle;margin-right:4px}.refresh-tab-loading{animation:spin 1s linear infinite}.notSelectTooltip{transform:translate(-12px)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tooltip-content{padding:4px;color:#f8fafb;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:14px}@media (max-width: 1400px){.refresh-tab{padding-right:0!important}.refresh-tab span{display:none!important}}@media (max-width: 1100px){.rs-multi-tab ul li img{position:absolute;right:3px;background-color:#fff}.notSelect:hover img{position:absolute;right:3px;background-color:#eff5fb}.img-block{display:none!important}.isSelect:not(:first-child){padding-right:20px!important}}@media (max-width: 600px){.rs-multi-tab ul li{padding:0 8px}.rs-multi-tab ul .notSelect .img-block{width:0px!important}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TooltipComponent, selector: "ejs-tooltip", inputs: ["animation", "closeDelay", "container", "content", "cssClass", "enableHtmlParse", "enableHtmlSanitizer", "enablePersistence", "enableRtl", "height", "htmlAttributes", "isSticky", "locale", "mouseTrail", "offsetX", "offsetY", "openDelay", "opensOn", "position", "showTipPointer", "target", "tipPointerPosition", "width", "windowCollision"], outputs: ["afterClose", "afterOpen", "beforeClose", "beforeCollision", "beforeOpen", "beforeRender", "created", "destroyed"] }] });
|
|
249
|
+
}
|
|
250
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiTabComponent, decorators: [{
|
|
251
|
+
type: Component,
|
|
252
|
+
args: [{ selector: "rs-multi-tab", template: "<div class=\"rs-multi-tab\" [ngClass]=\"{ 'b-line': tabList.length > 0 }\">\r\n\t<ul>\r\n\t\t<ng-container *ngFor=\"let tab of tabList; let i = index\">\r\n\t\t\t<li\r\n\t\t\t\t[ngClass]=\"selectedTab === i ? 'isSelect' : 'notSelect'\"\r\n\t\t\t\t(click)=\"changeTab(tab, i)\"\r\n\t\t\t>\r\n\t\t\t\t<ejs-tooltip\r\n\t\t\t\t\tid=\"notSelectTooltip\"\r\n\t\t\t\t\t[showTipPointer]=\"false\"\r\n\t\t\t\t\t[openDelay]=\"500\"\r\n\t\t\t\t\t*ngIf=\"tab.displayTitle !== tab.title; else originText\"\r\n\t\t\t\t\tstyle=\"height: 27px\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<ng-template #content>\r\n\t\t\t\t\t\t<div class=\"tooltip-content\">\r\n\t\t\t\t\t\t\t{{ tab.title }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<span class=\"tabTitle\">{{ tab.displayTitle }}</span>\r\n\t\t\t\t</ejs-tooltip>\r\n\t\t\t\t<ng-template #originText>\r\n\t\t\t\t\t<span class=\"tabTitle\">\r\n\t\t\t\t\t\t{{ tab.displayTitle }}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<span\r\n\t\t\t\t\tclass=\"img-block\"\r\n\t\t\t\t\t*ngIf=\"selectedTab !== i && i !== 0\"\r\n\t\t\t\t></span>\r\n\t\t\t\t<img\r\n\t\t\t\t\t*ngIf=\"i !== 0\"\r\n\t\t\t\t\tsrc=\"../../../assets/img/close-url.svg\"\r\n\t\t\t\t\t(click)=\"closeTab(i)\"\r\n\t\t\t\t/>\r\n\t\t\t</li>\r\n\t\t</ng-container>\r\n\t</ul>\r\n\t<div class=\"refresh-tab\" (click)=\"refreshTab()\" *ngIf=\"tabList.length > 0\">\r\n\t\t<ejs-tooltip\r\n\t\t\tid=\"notSelectTooltip\"\r\n\t\t\tcssClass=\"notSelectTooltip\"\r\n\t\t\t[showTipPointer]=\"false\"\r\n\t\t\t[openDelay]=\"500\"\r\n\t\t\tstyle=\"height: 27px\"\r\n\t\t>\r\n\t\t\t<ng-template #content>\r\n\t\t\t\t<div class=\"tooltip-content\">Refresh Current Tab</div>\r\n\t\t\t</ng-template>\r\n\t\t\t<img\r\n\t\t\t\tid=\"loadingIcon\"\r\n\t\t\t\talt\r\n\t\t\t\tclass=\"refresh-btn\"\r\n\t\t\t\tsrc=\"../../../assets/img/desktop-refresh-btn.svg\"\r\n\t\t\t/>\r\n\t\t</ejs-tooltip>\r\n\t</div>\r\n</div>\r\n", styles: [".rs-multi-tab{width:100%;display:flex;justify-content:space-between;margin:0 auto;max-width:1886px}.rs-multi-tab.b-line{border-bottom:1px solid #e5eaef}.rs-multi-tab ul{display:flex;margin:0 8px;padding:0;overflow:hidden;height:100%}.rs-multi-tab ul li{max-width:164px;padding:0 12px;display:flex;align-items:center;flex:auto;border:1px solid #e5eaef;border-bottom:none;color:#5f6f81;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:28px;height:28px;background:#f8fafb;vertical-align:top;position:relative;cursor:default}.rs-multi-tab ul li .tabTitle{display:inline-block;white-space:nowrap;font-size:11px;font-family:Arial;font-style:normal;font-weight:400;line-height:16px;transition:width .3s ease}.rs-multi-tab ul li img{border-radius:4px;padding:4px;margin-left:6px;margin-top:1px;vertical-align:top;cursor:pointer}.rs-multi-tab ul li img:hover{background:#dce8f6}.rs-multi-tab ul li:not(:last-child){border-right:none}.rs-multi-tab ul li:first-of-type{border-top-left-radius:8px}.rs-multi-tab ul li:last-child{border-top-right-radius:8px}.rs-multi-tab ul .isSelect{color:#1f3f5c;background:#fff}.rs-multi-tab ul .notSelect img{display:none}.rs-multi-tab ul .notSelect .img-block{display:inline-block;width:22px}.rs-multi-tab ul .notSelect:hover{color:#1f3f5c;background-color:#1f7bff0a}.rs-multi-tab ul .notSelect:hover .img-block{display:none}.rs-multi-tab ul .notSelect:hover img{display:inline-block}.rs-multi-tab .refresh-tab{cursor:pointer;text-align:right;color:#6c7c90;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:28px;padding-right:12px}.rs-multi-tab .refresh-tab img{vertical-align:middle;margin-right:4px}.refresh-tab-loading{animation:spin 1s linear infinite}.notSelectTooltip{transform:translate(-12px)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tooltip-content{padding:4px;color:#f8fafb;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:14px}@media (max-width: 1400px){.refresh-tab{padding-right:0!important}.refresh-tab span{display:none!important}}@media (max-width: 1100px){.rs-multi-tab ul li img{position:absolute;right:3px;background-color:#fff}.notSelect:hover img{position:absolute;right:3px;background-color:#eff5fb}.img-block{display:none!important}.isSelect:not(:first-child){padding-right:20px!important}}@media (max-width: 600px){.rs-multi-tab ul li{padding:0 8px}.rs-multi-tab ul .notSelect .img-block{width:0px!important}}\n"] }]
|
|
253
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.CommonFunctionService }, { type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.DrawerService }, { type: i1.RouteReuseStrategy }]; }, propDecorators: { singleReuseUrls: [{
|
|
254
|
+
type: Input
|
|
255
|
+
}], noGenerateTabUrls: [{
|
|
256
|
+
type: Input
|
|
257
|
+
}], onRefreshTab: [{
|
|
258
|
+
type: Output
|
|
259
|
+
}], onResize: [{
|
|
260
|
+
type: HostListener,
|
|
261
|
+
args: ["window:resize", ["$event"]]
|
|
262
|
+
}] } });
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2xheW91dC9tdWx0aS10YWIvaW5kZXguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2xheW91dC9tdWx0aS10YWIvaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLE9BQU8sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTixhQUFhLEdBR2IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFZeEMsTUFBTSxPQUFPLGlCQUFpQjtJQUVyQjtJQUNBO0lBQ0E7SUFDQztJQUNBO0lBQ0E7SUFOVCxZQUNRLE1BQWMsRUFDZCxFQUF5QixFQUN6QixjQUE4QixFQUM3QixHQUFzQixFQUN0QixNQUFxQixFQUNyQixrQkFBc0M7UUFMdkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLE9BQUUsR0FBRixFQUFFLENBQXVCO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM3QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFFOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQXNDLENBQUM7SUFDOUQsQ0FBQztJQUNELFNBQVMsQ0FBbUI7SUFDbkIsZUFBZSxHQUFhLEVBQUUsQ0FBQyxDQUFDLFlBQVk7SUFDNUMsaUJBQWlCLEdBQWEsRUFBRSxDQUFDLENBQUMsWUFBWTtJ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NUUsMERBQTBEO1FBQzFELE1BQU07SUFDUCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQUc7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtRQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sZUFBZSxDQUFDLEdBQUc7UUFDMUIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7d0dBalNXLGlCQUFpQjs0RkFBakIsaUJBQWlCLHFQQzlCOUIsdzNEQTBEQTs7NEZENUJhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDQyxjQUFjOzJQQWdCZixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQWNQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDnu4Tku7bnsbtcclxuaW1wb3J0IHtcclxuXHRBZnRlclZpZXdJbml0LFxyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SG9zdExpc3RlbmVyLFxyXG5cdElucHV0LFxyXG5cdE9uRGVzdHJveSxcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcblx0QWN0aXZhdGVkUm91dGUsXHJcblx0TmF2aWdhdGlvbkVuZCxcclxuXHRSb3V0ZXIsXHJcblx0Um91dGVyT3V0bGV0LFxyXG59IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFJvdXRlUmV1c2VTdHJhdGVneSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgQ29tbW9uRnVuY3Rpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvY29tbW9uLWZ1bmN0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHJhd2VyU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2RyYXdlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEtlZXBBbGl2ZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZS9rZWVwLWFsaXZlLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcInJzLW11bHRpLXRhYlwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuXHRzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aVRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuXHRcdHB1YmxpYyBjZjogQ29tbW9uRnVuY3Rpb25TZXJ2aWNlLFxyXG5cdFx0cHVibGljIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuXHRcdHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdHByaXZhdGUgZHJhd2VyOiBEcmF3ZXJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByb3V0ZVJldXNlU3RyYXRlZ3k6IFJvdXRlUmV1c2VTdHJhdGVneVxyXG5cdCkge1xyXG5cdFx0dGhpcy5rZWVwQWxpdmUgPSB0aGlzLnJvdXRlUmV1c2VTdHJhdGVneSBhcyBLZWVwQWxpdmVTZXJ2aWNlO1xyXG5cdH1cclxuXHRrZWVwQWxpdmU6IEtlZXBBbGl2ZVNlcnZpY2U7XHJcblx0QElucHV0KCkgc2luZ2xlUmV1c2VVcmxzOiBzdHJpbmdbXSA9IFtdOyAvL+WPquiDveWNleS4que8k+WtmOeahHVybFxyXG5cdEBJbnB1dCgpIG5vR2VuZXJhdGVUYWJVcmxzOiBzdHJpbmdbXSA9IFtdOyAvL+S4jeeUn+aIkHRhYueahHVybFxyXG5cdEBPdXRwdXQoKSBvblJlZnJlc2hUYWIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cdHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHRUQUJfV0lEVEggPSAxNjQ7XHJcblx0R0FQX05PUk1BTCA9IDU0O1xyXG5cdEdBUF9TTUFMTCA9IDMwO1xyXG5cdHRleHRHYXA7IC8vIOaWh+acrOS4jui+ueahhueahOaAu+mXtOi3nVxyXG5cdGZvbzogUm91dGVyT3V0bGV0O1xyXG5cdGNvbVJlZjogYW55O1xyXG5cdHRhYkxpc3QgPSBbXTtcclxuXHRzZWxlY3RlZFRhYjogbnVtYmVyID0gMDtcclxuXHRtYXhUYWJzOiBudW1iZXIgPSAxMDtcclxuXHRzY3JlZW5XaWR0aDogbnVtYmVyID0gd2luZG93LmlubmVyV2lkdGg7IC8vIOWIneWni+WMluWxj+W5leWuveW6plxyXG5cdEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIsIFtcIiRldmVudFwiXSlcclxuXHRvblJlc2l6ZShldmVudCkge1xyXG5cdFx0dGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOyAvLyDmm7TmlrDlsY/luZXlrr3luqZcclxuXHRcdHRoaXMuc2V0RWxsaXBzaXNUaXRsZSgpO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmluaXRUYWIoKTtcclxuXHRcdC8vIOino+WGs+WIt+aWsOmhtemdouWQju+8jOmAieS4reeahCB0YWIg5Lii5aSx6Zeu6aKYXHJcblx0XHRjb25zdCBpc0V4aXN0SWR4ID0gdGhpcy50YWJMaXN0LmZpbmRJbmRleChcclxuXHRcdFx0KGVsZSkgPT5cclxuXHRcdFx0XHR0aGlzLnVybFdpdGhvdXRRdWVyeShlbGUudXJsKSA9PT1cclxuXHRcdFx0XHR0aGlzLnVybFdpdGhvdXRRdWVyeSh0aGlzLnJvdXRlci51cmwpXHJcblx0XHQpO1xyXG5cdFx0aWYgKGlzRXhpc3RJZHggIT09IC0xKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUYWIgPSBpc0V4aXN0SWR4O1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLnJvdXRlci5ldmVudHNcclxuXHRcdFx0XHQucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgbmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7IC8vIOiOt+WPluW9k+WJjeWvvOiIqlxyXG5cdFx0XHRcdFx0aWYgKG5hdmlnYXRpb24pIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgdG9vbHRpcEVsZW1lbnRzID1cclxuXHRcdFx0XHRcdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmUtcG9wdXAtb3BlblwiKTtcclxuXHRcdFx0XHRcdFx0Ly8g5Yig6ZmkdG9vbHRpcHNcclxuXHRcdFx0XHRcdFx0dG9vbHRpcEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBodG1sRWxlbWVudCA9IGVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcblx0XHRcdFx0XHRcdFx0aHRtbEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSBuYXZpZ2F0aW9uLmV4dHJhcy5zdGF0ZTsgLy8g6I635Y+W5Lyg6YCS55qEIHN0YXRlXHJcblx0XHRcdFx0XHRcdGNvbnN0IHNraXBMb2NhdGlvbkNoYW5nZSA9XHJcblx0XHRcdFx0XHRcdFx0bmF2aWdhdGlvbi5leHRyYXMuc2tpcExvY2F0aW9uQ2hhbmdlOyAvLyDojrflj5bmmK/lkKbot7Pov4cgbG9jYXRpb24gY2hhbmdlXHJcblx0XHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRSb3V0ZSA9XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5yb3V0ZXIucm91dGVyU3RhdGUucm9vdC5maXJzdENoaWxkO1xyXG5cdFx0XHRcdFx0XHRjb25zdCBuYXZpZ2F0aW9uSW5mbyA9IEpTT04ucGFyc2UoXHJcblx0XHRcdFx0XHRcdFx0c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcIm5hdmlnYXRpb25JbmZvXCIpIHx8IFwie31cIlxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRsZXQgdGl0bGUgPVxyXG5cdFx0XHRcdFx0XHRcdChzdGF0ZSAmJiBzdGF0ZS50aXRsZSkgfHxcclxuXHRcdFx0XHRcdFx0XHRuYXZpZ2F0aW9uSW5mby50aXRsZSB8fFxyXG5cdFx0XHRcdFx0XHRcdG5hdmlnYXRpb25JbmZvLnN1YlRpdGxlIHx8XHJcblx0XHRcdFx0XHRcdFx0bmF2aWdhdGlvbkluZm8ubmFtZTtcclxuXHJcblx0XHRcdFx0XHRcdGxldCBub1JldXNlZCA9IChzdGF0ZSAmJiBzdGF0ZS5ub1JldXNlZCkgfHwgZmFsc2U7IC8vIOW9k+WJjXRhYuS4jeWkjeeUqO+8jOaWsOW8gOS4gOS4qnRhYizlvZPmnInlt7Lnu4/lrZjlnKjnmoR0YWLml7blgJnkuZ/mmK/mlrDlvIBcclxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnRSb3V0ZSAmJiAhc2tpcExvY2F0aW9uQ2hhbmdlKSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ub0dlbmVyYXRlVGFiVXJscy5pbmNsdWRlcyhcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy51cmxXaXRob3V0UXVlcnkodGhpcy5yb3V0ZXIudXJsKVxyXG5cdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuOyAvLyDmjpLpmaTkuI3nlJ/miJB0YWLnmoR1cmxcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXRUYWIoXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdXRlci51cmwsXHJcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50Um91dGUuc25hcHNob3Qucm91dGVDb25maWcucGF0aCxcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0bm9SZXVzZWRcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLnNldEVsbGlwc2lzVGl0bGUoKTtcclxuXHRcdH0sIDUwKTtcclxuXHR9XHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG5cclxuXHRzZXRFbGxpcHNpc1RpdGxlKHRpdGxlPykge1xyXG5cdFx0dGhpcy50ZXh0R2FwID0gdGhpcy5HQVBfTk9STUFMO1xyXG5cdFx0aWYgKHRoaXMuc2NyZWVuV2lkdGggPD0gMTEwMCkge1xyXG5cdFx0XHR0aGlzLnRleHRHYXAgPSB0aGlzLkdBUF9TTUFMTDtcclxuXHRcdH1cclxuXHRcdGxldCB7IGFsbFdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lkdGggfSA9IHRoaXMuY2FsY1RhYldpZHRoKCk7XHJcblx0XHRsZXQgd2lkdGggPSBNYXRoLmZsb29yKFxyXG5cdFx0XHQoYWxsV2lkdGggLSByaWdodFdpZHRoKSAvICh0aGlzLnRhYkxpc3QgJiYgdGhpcy50YWJMaXN0Lmxlbmd0aClcclxuXHRcdCk7XHJcblx0XHRpZiAodGl0bGUpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuY2Yuc2V0TWlkZGxlRWxsaXBzaXMoXHJcblx0XHRcdFx0dGl0bGUsXHJcblx0XHRcdFx0d2lkdGggPiB0aGlzLlRBQl9XSURUSFxyXG5cdFx0XHRcdFx0PyB0aGlzLlRBQl9XSURUSCAtIHRoaXMudGV4dEdhcFxyXG5cdFx0XHRcdFx0OiB3aWR0aCAtIHRoaXMudGV4dEdhcCxcclxuXHRcdFx0XHQxMlxyXG5cdFx0XHQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy50YWJMaXN0LmZvckVhY2goKGVsZSwgaWR4KSA9PiB7XHJcblx0XHRcdFx0ZWxlLmRpc3BsYXlUaXRsZSA9IHRoaXMuY2Yuc2V0TWlkZGxlRWxsaXBzaXMoXHJcblx0XHRcdFx0XHRlbGUudGl0bGUsXHJcblx0XHRcdFx0XHR3aWR0aCA+IHRoaXMuVEFCX1dJRFRIXHJcblx0XHRcdFx0XHRcdD8gdGhpcy5UQUJfV0lEVEggLSB0aGlzLnRleHRHYXBcclxuXHRcdFx0XHRcdFx0OiB3aWR0aCAtIHRoaXMudGV4dEdhcCxcclxuXHRcdFx0XHRcdDEyXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjYWxjVGFiV2lkdGgoKSB7XHJcblx0XHRjb25zdCB3cmFwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5ycy1tdWx0aS10YWJcIik7XHJcblx0XHRjb25zdCB1bEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnJzLW11bHRpLXRhYiA+IHVsXCIpO1xyXG5cdFx0Y29uc3QgcmVmcmVzaFRhYkRpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFwiLnJzLW11bHRpLXRhYiAucmVmcmVzaC10YWJcIlxyXG5cdFx0KTtcclxuXHRcdGxldCBhbGxXaWR0aDtcclxuXHRcdGxldCBsZWZ0V2lkdGg7XHJcblx0XHRsZXQgcmlnaHRXaWR0aDtcclxuXHRcdGlmICh3cmFwICYmIHVsRWxlbWVudCkge1xyXG5cdFx0XHQvLyDojrflj5blhYPntKDnmoTkvY3nva7kv6Hmga9cclxuXHRcdFx0Y29uc3Qgd3JhcFJlY3QgPSB3cmFwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdFx0XHRjb25zdCB1bFJlY3QgPSB1bEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRcdGNvbnN0IHJlZnJlc2hUYWJSZWN0ID1cclxuXHRcdFx0XHRyZWZyZXNoVGFiRGl2ICYmIHJlZnJlc2hUYWJEaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRcdGFsbFdpZHRoID0gd3JhcFJlY3Qud2lkdGg7XHJcblx0XHRcdGxlZnRXaWR0aCA9IHVsUmVjdC53aWR0aDtcclxuXHRcdFx0cmlnaHRXaWR0aCA9IChyZWZyZXNoVGFiUmVjdCAmJiByZWZyZXNoVGFiUmVjdC53aWR0aCkgfHwgMTAwO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0YWxsV2lkdGgsXHJcblx0XHRcdGxlZnRXaWR0aCxcclxuXHRcdFx0cmlnaHRXaWR0aCxcclxuXHRcdH07XHJcblx0fVxyXG5cdGluaXRUYWIoKSB7XHJcblx0XHRsZXQgVGFiQ2FjaGUgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJUYWJDYWNoZVwiKSk7XHJcblx0XHR0aGlzLnRhYkxpc3QgPSBUYWJDYWNoZSB8fCBbXTtcclxuXHRcdGlmICh0aGlzLnRhYkxpc3QubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdGNvbnN0IHRpdGxlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImZpcnN0VGFiVGl0bGVcIik7XHJcblx0XHRcdGlmICh0aXRsZSkge1xyXG5cdFx0XHRcdHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oXCJmaXJzdFRhYlRpdGxlXCIpO1xyXG5cdFx0XHRcdGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdFx0XHR0aGlzLmFkZFRhYih1cmwsIHRpdGxlKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y2xvc2VUYWIoaWR4LCBpc0V4dGVybmFsPykge1xyXG5cdFx0Y29uc3QgdGFiID0gdGhpcy50YWJMaXN0W2lkeF07XHJcblx0XHR0aGlzLnRhYkxpc3QgPSB0aGlzLnRhYkxpc3QuZmlsdGVyKChlbGUpID0+IGVsZS51cmwgIT09IHRhYi51cmwpO1xyXG5cdFx0dGhpcy5jbGVhckNhY2hlKHRoaXMudXJsV2l0aG91dFF1ZXJ5KHRhYi51cmwpKTtcclxuXHRcdGlmICghaXNFeHRlcm5hbCAmJiB0aGlzLnNlbGVjdGVkVGFiID09PSBpZHgpIHtcclxuXHRcdFx0Y29uc3QgdGFyZ2V0SWR4ID0gTWF0aC5tYXgoMCwgaWR4IC0gMSk7XHJcblx0XHRcdHRoaXMuY2hhbmdlVGFiKHRoaXMudGFiTGlzdFt0YXJnZXRJZHhdLCB0YXJnZXRJZHgpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGlkeCA8IHRoaXMuc2VsZWN0ZWRUYWIpIHtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZFRhYiA9IHRoaXMuc2VsZWN0ZWRUYWIgLSAxOyAvLyDlpoLmnpzlhbPpl63nmoR0YWLlnKjlvZPliY3pgInkuK3nmoR0YWLkuYvliY3vvIzpgInkuK10YWLntKLlvJXlh48xXHJcblx0XHR9XHJcblx0XHR0aGlzLnNldEVsbGlwc2lzVGl0bGUoKTtcclxuXHRcdHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJUYWJDYWNoZVwiLCBKU09OLnN0cmluZ2lmeSh0aGlzLnRhYkxpc3QpKTtcclxuXHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdH1cclxuXHJcblx0Y2hhbmdlVGFiKHRhYiwgaWR4KSB7XHJcblx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhYi51cmwpO1xyXG5cdFx0aWYgKHRhYi5uYXZpZ2F0aW9uSW5mbykge1xyXG5cdFx0XHRzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG5cdFx0XHRcdFwibmF2aWdhdGlvbkluZm9cIixcclxuXHRcdFx0XHRKU09OLnN0cmluZ2lmeSh0YWIubmF2aWdhdGlvbkluZm8pXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0XHRpZiAodGFiLmZyb21VcmwpIHtcclxuXHRcdFx0c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcImZyb21VcmxcIiwgdGFiLmZyb21VcmwpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRhYi5wZXJtaXNzaW9ucykge1xyXG5cdFx0XHRzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxyXG5cdFx0XHRcdFwicGVybWlzc2lvbnNcIixcclxuXHRcdFx0XHRKU09OLnN0cmluZ2lmeSh0YWIucGVybWlzc2lvbnMpXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLnNlbGVjdGVkVGFiID0gaWR4O1xyXG5cdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0fVxyXG5cclxuXHRhZGRUYWIodXJsLCB0aXRsZSkge1xyXG5cdFx0aWYgKHRoaXMudGFiTGlzdC5sZW5ndGggPj0gdGhpcy5tYXhUYWJzKSB7XHJcblx0XHRcdHRoaXMuY2xvc2VUYWIoMSk7IC8vIOWIoOmZpOesrOS6jOS4qu+8jOesrOS4gOS4quWbuuWumlxyXG5cdFx0fVxyXG5cdFx0Y29uc3QgbG9jYWxQZXJtaXNzaW9ucyA9XHJcblx0XHRcdHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJwZXJtaXNzaW9uc1wiKSB8fFxyXG5cdFx0XHRsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInBlcm1pc3Npb25zXCIpO1xyXG5cdFx0Y29uc3QgbmF2aWdhdGlvbkluZm8gPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwibmF2aWdhdGlvbkluZm9cIilcclxuXHRcdCk7XHJcblx0XHRjb25zdCBmcm9tVXJsID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImZyb21VcmxcIik7XHJcblx0XHRjb25zdCBwZXJtaXNzaW9ucyA9IEpTT04ucGFyc2UobG9jYWxQZXJtaXNzaW9ucyk7XHJcblxyXG5cdFx0dGhpcy50YWJMaXN0LnB1c2goe1xyXG5cdFx0XHR1cmw6IHVybCxcclxuXHRcdFx0dGl0bGU6IHRpdGxlIHx8IFwiZGVmYXVsdFwiLFxyXG5cdFx0XHRkaXNwbGF5VGl0bGU6IHRpdGxlLFxyXG5cdFx0XHRuYXZpZ2F0aW9uSW5mbzogbmF2aWdhdGlvbkluZm8sXHJcblx0XHRcdHBlcm1pc3Npb25zOiBwZXJtaXNzaW9ucyxcclxuXHRcdFx0ZnJvbVVybDogZnJvbVVybCxcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5zZWxlY3RlZFRhYiA9IHRoaXMudGFiTGlzdC5sZW5ndGggLSAxO1xyXG5cdFx0dGhpcy5zZXRFbGxpcHNpc1RpdGxlKCk7XHJcblx0XHRzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwiVGFiQ2FjaGVcIiwgSlNPTi5zdHJpbmdpZnkodGhpcy50YWJMaXN0KSk7XHJcblx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBzZXRUYWIodXJsLCBwdXJlVXJsLCB0aXRsZSwgbm9SZXVzZWQpIHtcclxuXHRcdGNvbnN0IGlzRXhpc3RJZHggPSB0aGlzLnRhYkxpc3QuZmluZEluZGV4KFxyXG5cdFx0XHQoZWxlKSA9PiB0aGlzLnVybFdpdGhvdXRRdWVyeShlbGUudXJsKSA9PT0gdGhpcy51cmxXaXRob3V0UXVlcnkodXJsKVxyXG5cdFx0KTtcclxuXHRcdGlmIChpc0V4aXN0SWR4ID09PSAtMSkge1xyXG5cdFx0XHRjb25zdCBzaW5nbGVJZHggPSB0aGlzLnNpbmdsZVJldXNlVXJscy5maW5kSW5kZXgoXHJcblx0XHRcdFx0KGVsZSkgPT4gZWxlID09PSBwdXJlVXJsXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChzaW5nbGVJZHggIT09IC0xKSB7XHJcblx0XHRcdFx0dGhpcy50YWJMaXN0ID0gdGhpcy50YWJMaXN0LmZpbHRlcihcclxuXHRcdFx0XHRcdChlbGUpID0+ICFlbGUudXJsLmluY2x1ZGVzKHRoaXMuc2luZ2xlUmV1c2VVcmxzW3NpbmdsZUlkeF0pXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHR0aGlzLmtlZXBBbGl2ZS5jbGVhckNhY2hlKHVybCk7XHJcblx0XHRcdFx0dGhpcy5kcmF3ZXIuZGVsZXRlQ2FjaGUodXJsKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmFkZFRhYih1cmwsIHRpdGxlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IHRhcmdldFRhYlVybCA9IHRoaXMudGFiTGlzdFtpc0V4aXN0SWR4XS51cmw7XHJcblx0XHRcdGlmICh0YXJnZXRUYWJVcmwgIT09IHVybCB8fCBub1JldXNlZCkge1xyXG5cdFx0XHRcdC8vIOW9k+e8k+WtmOS4gOiHtOaXtuWAme+8jOS9huaYr3VybOS4jeS4gOiHtO+8jOmHjeaWsOaMieeFp+aWsOeahHVybOeUn+aIkHRhYlxyXG5cdFx0XHRcdHRoaXMuY2xvc2VUYWIoaXNFeGlzdElkeCwgdHJ1ZSk7XHJcblx0XHRcdFx0dGhpcy5hZGRUYWIodXJsLCB0aXRsZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jaGFuZ2VUYWIodGhpcy50YWJMaXN0W2lzRXhpc3RJZHhdLCBpc0V4aXN0SWR4KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHR9XHJcblx0dGltZXIgPSBudWxsO1xyXG5cdHJlZnJlc2hUYWIoKSB7XHJcblx0XHRjb25zdCBsb2FkaW5nSWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibG9hZGluZ0ljb25cIik7XHJcblx0XHRsb2FkaW5nSWNvbi5jbGFzc0xpc3QuYWRkKFwicmVmcmVzaC10YWItbG9hZGluZ1wiKTtcclxuXHRcdGlmICh0aGlzLnRpbWVyKSB7XHJcblx0XHRcdGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XHJcblx0XHR9XHJcblx0XHQvLyDmqKHmi5/liqDovb3ov4fnqIvvvIwx56eS5ZCO56e76Zmk5Yqo55S7XHJcblx0XHR0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdGxvYWRpbmdJY29uLmNsYXNzTGlzdC5yZW1vdmUoXCJyZWZyZXNoLXRhYi1sb2FkaW5nXCIpO1xyXG5cdFx0XHR0aGlzLnRpbWVyID0gbnVsbDtcclxuXHRcdH0sIDE1MDApO1xyXG5cdFx0Ly8gdGhpcy5rZWVwQWxpdmUuY2xlYXJDYWNoZSh0aGlzLnRhYkxpc3RbdGhpcy5zZWxlY3RlZFRhYl0udXJsKTtcclxuXHRcdC8vIHRoaXMuZHJhd2VyLmRlbGV0ZUNhY2hlKHRoaXMudGFiTGlzdFt0aGlzLnNlbGVjdGVkVGFiXS51cmwpO1xyXG5cdFx0Y29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDsgLy8g6I635Y+W5b2T5YmNIFVSTFxyXG5cdFx0dGhpcy5vblJlZnJlc2hUYWIuZW1pdChjdXJyZW50VXJsKTtcclxuXHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXCIvXCIsIHsgc2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlIH0pLnRoZW4oKCkgPT4ge1xyXG5cdFx0Ly8gICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGN1cnJlbnRVcmwpOyAvLyDph43mlrDlr7zoiKrliLDlvZPliY0gVVJMXHJcblx0XHQvLyB9KTtcclxuXHR9XHJcblxyXG5cdGNsZWFyQ2FjaGUodXJsKSB7XHJcblx0XHR0aGlzLmtlZXBBbGl2ZS5jbGVhckNhY2hlKHVybCk7IC8vIOiwg+eUqOiHquWumuS5ieetlueVpeeahOa4hemZpOe8k+WtmOaWueazlVxyXG5cdFx0dGhpcy5kcmF3ZXIuZGVsZXRlQ2FjaGUodXJsKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdXJsV2l0aG91dFF1ZXJ5KHVybCkge1xyXG5cdFx0cmV0dXJuIHVybC5zcGxpdChcIj9cIilbMF07XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJycy1tdWx0aS10YWJcIiBbbmdDbGFzc109XCJ7ICdiLWxpbmUnOiB0YWJMaXN0Lmxlbmd0aCA+IDAgfVwiPlxyXG5cdDx1bD5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJMaXN0OyBsZXQgaSA9IGluZGV4XCI+XHJcblx0XHRcdDxsaVxyXG5cdFx0XHRcdFtuZ0NsYXNzXT1cInNlbGVjdGVkVGFiID09PSBpID8gJ2lzU2VsZWN0JyA6ICdub3RTZWxlY3QnXCJcclxuXHRcdFx0XHQoY2xpY2spPVwiY2hhbmdlVGFiKHRhYiwgaSlcIlxyXG5cdFx0XHQ+XHJcblx0XHRcdFx0PGVqcy10b29sdGlwXHJcblx0XHRcdFx0XHRpZD1cIm5vdFNlbGVjdFRvb2x0aXBcIlxyXG5cdFx0XHRcdFx0W3Nob3dUaXBQb2ludGVyXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFtvcGVuRGVsYXldPVwiNTAwXCJcclxuXHRcdFx0XHRcdCpuZ0lmPVwidGFiLmRpc3BsYXlUaXRsZSAhPT0gdGFiLnRpdGxlOyBlbHNlIG9yaWdpblRleHRcIlxyXG5cdFx0XHRcdFx0c3R5bGU9XCJoZWlnaHQ6IDI3cHhcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAjY29udGVudD5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRvb2x0aXAtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRcdHt7IHRhYi50aXRsZSB9fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRhYlRpdGxlXCI+e3sgdGFiLmRpc3BsYXlUaXRsZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8L2Vqcy10b29sdGlwPlxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAjb3JpZ2luVGV4dD5cclxuXHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGFiVGl0bGVcIj5cclxuXHRcdFx0XHRcdFx0e3sgdGFiLmRpc3BsYXlUaXRsZSB9fVxyXG5cdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PHNwYW5cclxuXHRcdFx0XHRcdGNsYXNzPVwiaW1nLWJsb2NrXCJcclxuXHRcdFx0XHRcdCpuZ0lmPVwic2VsZWN0ZWRUYWIgIT09IGkgJiYgaSAhPT0gMFwiXHJcblx0XHRcdFx0Pjwvc3Bhbj5cclxuXHRcdFx0XHQ8aW1nXHJcblx0XHRcdFx0XHQqbmdJZj1cImkgIT09IDBcIlxyXG5cdFx0XHRcdFx0c3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltZy9jbG9zZS11cmwuc3ZnXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJjbG9zZVRhYihpKVwiXHJcblx0XHRcdFx0Lz5cclxuXHRcdFx0PC9saT5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cdDwvdWw+XHJcblx0PGRpdiBjbGFzcz1cInJlZnJlc2gtdGFiXCIgKGNsaWNrKT1cInJlZnJlc2hUYWIoKVwiICpuZ0lmPVwidGFiTGlzdC5sZW5ndGggPiAwXCI+XHJcblx0XHQ8ZWpzLXRvb2x0aXBcclxuXHRcdFx0aWQ9XCJub3RTZWxlY3RUb29sdGlwXCJcclxuXHRcdFx0Y3NzQ2xhc3M9XCJub3RTZWxlY3RUb29sdGlwXCJcclxuXHRcdFx0W3Nob3dUaXBQb2ludGVyXT1cImZhbHNlXCJcclxuXHRcdFx0W29wZW5EZWxheV09XCI1MDBcIlxyXG5cdFx0XHRzdHlsZT1cImhlaWdodDogMjdweFwiXHJcblx0XHQ+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZSAjY29udGVudD5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidG9vbHRpcC1jb250ZW50XCI+UmVmcmVzaCBDdXJyZW50IFRhYjwvZGl2PlxyXG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHQ8aW1nXHJcblx0XHRcdFx0aWQ9XCJsb2FkaW5nSWNvblwiXHJcblx0XHRcdFx0YWx0XHJcblx0XHRcdFx0Y2xhc3M9XCJyZWZyZXNoLWJ0blwiXHJcblx0XHRcdFx0c3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltZy9kZXNrdG9wLXJlZnJlc2gtYnRuLnN2Z1wiXHJcblx0XHRcdC8+XHJcblx0XHQ8L2Vqcy10b29sdGlwPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2xheW91dC9uYXYtY2FyZC1ncm91cC9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTmF2SXRlbSB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICB1cmw6IHN0cmluZztcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmF2R3JvdXAge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgc3ViVGl0bGU/OiBzdHJpbmc7XHJcbiAgaW1nPzogc3RyaW5nO1xyXG4gIGRlc2M/OiBzdHJpbmc7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIHN1Ykxpc3Q/OiBOYXZJdGVtW107XHJcbiAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// 组件类
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/router";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class RSNavCardGroupComponent {
|
|
7
|
+
router;
|
|
8
|
+
constructor(router) {
|
|
9
|
+
this.router = router;
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() { }
|
|
12
|
+
navClick = new EventEmitter();
|
|
13
|
+
navList = [];
|
|
14
|
+
customNavClick = false; // 接收输入属性
|
|
15
|
+
title = "";
|
|
16
|
+
onNavClick(item) {
|
|
17
|
+
if (!this.customNavClick) {
|
|
18
|
+
this.router.navigate([item.url], { state: { title: item.title } });
|
|
19
|
+
}
|
|
20
|
+
this.navClick.emit(item);
|
|
21
|
+
}
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RSNavCardGroupComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RSNavCardGroupComponent, selector: "nav-card-group", inputs: { navList: "navList", customNavClick: "customNavClick", title: "title" }, outputs: { navClick: "navClick" }, ngImport: i0, template: "<div class=\"rs-setting\">\r\n <h1 class=\"rs-page-title\">{{ title }}</h1>\r\n <div class=\"setting-content\">\r\n <div\r\n class=\"setting-group-card\"\r\n *ngFor=\"let group of navList\"\r\n [ngClass]=\"{ pointer: !group.subList }\"\r\n (click)=\"!group.subList && onNavClick(group)\"\r\n >\r\n <header class=\"setting-card-header\">\r\n <div class=\"setting-card-logo\">\r\n <img [src]=\"group.img\" alt=\"\" />\r\n </div>\r\n <h4 class=\"setting-card-title\">{{ group.title }}</h4>\r\n <div\r\n class=\"setting-card-sub-title\"\r\n *ngIf=\"!group.subList\"\r\n >\r\n {{ group.subTitle }}\r\n </div>\r\n </header>\r\n <div class=\"setting-card-desc\" *ngIf=\"!group.subList\">\r\n {{ group.desc }}\r\n </div>\r\n <div\r\n class=\"setting-item\"\r\n *ngFor=\"let item of group.subList\"\r\n (click)=\"onNavClick(item)\"\r\n >\r\n {{ item.title }}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".rs-setting{height:100%;display:flex;flex-direction:column;position:relative;margin:0 auto;max-width:1885px}.rs-setting .rs-page-title{font-family:var(--rs-font-family);font-size:var(--rs-page-title-font-size);font-weight:700;text-align:left;color:var(--rs-page-title-color);display:flex;align-items:center;padding:16px 8px 12px 20px}.rs-setting .setting-content{flex:1;height:0;overflow:auto;display:flex;flex-flow:row wrap;gap:20px;padding:4px 20px 40px}.rs-setting .setting-content .setting-group-card{width:100%;min-width:320px;padding:0 12px 16px;border-radius:10px;border:1px solid #eaedf0;background-color:#fff;display:flex;flex-flow:column nowrap}.rs-setting .setting-content .setting-group-card.pointer{cursor:pointer}.rs-setting .setting-content .setting-group-card .setting-card-header{padding:12px 8px;display:flex;flex-flow:column nowrap}.rs-setting .setting-content .setting-group-card .setting-card-header .setting-card-logo{display:flex;flex-flow:column nowrap;gap:4px}.rs-setting .setting-content .setting-group-card .setting-card-header .setting-card-logo img{width:24px;height:24px}.rs-setting .setting-content .setting-group-card .setting-card-header .setting-card-logo:after{content:\" \";width:24px;height:3px;background-color:#ff9618;border-radius:2px}.rs-setting .setting-content .setting-group-card .setting-card-header .setting-card-title{padding:0;margin:12px 0 0;color:#1f3f5c;font-family:Arial;font-size:15px;font-style:normal;font-weight:700;line-height:18px}.rs-setting .setting-content .setting-group-card .setting-card-header .setting-card-sub-title{color:#6c7c90;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;margin-top:6px}.rs-setting .setting-content .setting-group-card .setting-card-desc{padding:6px 8px;color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.rs-setting .setting-content .setting-group-card .setting-item{padding:6px 8px;border-radius:4px;cursor:pointer;color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.rs-setting .setting-content .setting-group-card .setting-item:hover{background-color:#1364b30d}@media screen and (min-width: 741px){.rs-setting .setting-content .setting-group-card{width:calc((100% - 20px)/2)}}@media screen and (min-width: 1297px){.rs-setting .setting-content .setting-group-card{width:calc((100% - 40px) / 3)}}@media screen and (min-width: 1632px){.rs-setting .setting-content .setting-group-card{width:calc((100% - 60px)/4)}}@media screen and (min-width: 1972px){.rs-setting .setting-content .setting-group-card{width:calc((100% - 80px)/5)}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RSNavCardGroupComponent, decorators: [{
|
|
26
|
+
type: Component,
|
|
27
|
+
args: [{ selector: "nav-card-group", template: "<div class=\"rs-setting\">\r\n <h1 class=\"rs-page-title\">{{ title }}</h1>\r\n <div class=\"setting-content\">\r\n <div\r\n class=\"setting-group-card\"\r\n *ngFor=\"let group of navList\"\r\n [ngClass]=\"{ pointer: !group.subList }\"\r\n (click)=\"!group.subList && onNavClick(group)\"\r\n >\r\n <header class=\"setting-card-header\">\r\n <div class=\"setting-card-logo\">\r\n <img [src]=\"group.img\" alt=\"\" />\r\n </div>\r\n <h4 class=\"setting-card-title\">{{ group.title }}</h4>\r\n <div\r\n class=\"setting-card-sub-title\"\r\n *ngIf=\"!group.subList\"\r\n >\r\n {{ group.subTitle }}\r\n </div>\r\n </header>\r\n <div class=\"setting-card-desc\" *ngIf=\"!group.subList\">\r\n {{ group.desc }}\r\n </div>\r\n <div\r\n class=\"setting-item\"\r\n *ngFor=\"let item of group.subList\"\r\n (click)=\"onNavClick(item)\"\r\n >\r\n {{ item.title }}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".rs-setting{height:100%;display:flex;flex-direction:column;position:relative;margin:0 auto;max-width:1885px}.rs-setting .rs-page-title{font-family:var(--rs-font-family);font-size:var(--rs-page-title-font-size);font-weight:700;text-align:left;color:var(--rs-page-title-color);display:flex;align-items:center;padding:16px 8px 12px 20px}.rs-setting .setting-content{flex:1;height:0;overflow:auto;display:flex;flex-flow:row wrap;gap:20px;padding:4px 20px 40px}.rs-setting .setting-content .setting-group-card{width:100%;min-width:320px;padding:0 12px 16px;border-radius:10px;border:1px solid #eaedf0;background-color:#fff;display:flex;flex-flow:column nowrap}.rs-setting .setting-content .setting-group-card.pointer{cursor:pointer}.rs-setting .setting-content .setting-group-card .setting-card-header{padding:12px 8px;display:flex;flex-flow:column nowrap}.rs-setting .setting-content .setting-group-card .setting-card-header .setting-card-logo{display:flex;flex-flow:column nowrap;gap:4px}.rs-setting .setting-content .setting-group-card .setting-card-header .setting-card-logo img{width:24px;height:24px}.rs-setting .setting-content .setting-group-card .setting-card-header .setting-card-logo:after{content:\" \";width:24px;height:3px;background-color:#ff9618;border-radius:2px}.rs-setting .setting-content .setting-group-card .setting-card-header .setting-card-title{padding:0;margin:12px 0 0;color:#1f3f5c;font-family:Arial;font-size:15px;font-style:normal;font-weight:700;line-height:18px}.rs-setting .setting-content .setting-group-card .setting-card-header .setting-card-sub-title{color:#6c7c90;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;margin-top:6px}.rs-setting .setting-content .setting-group-card .setting-card-desc{padding:6px 8px;color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.rs-setting .setting-content .setting-group-card .setting-item{padding:6px 8px;border-radius:4px;cursor:pointer;color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.rs-setting .setting-content .setting-group-card .setting-item:hover{background-color:#1364b30d}@media screen and (min-width: 741px){.rs-setting .setting-content .setting-group-card{width:calc((100% - 20px)/2)}}@media screen and (min-width: 1297px){.rs-setting .setting-content .setting-group-card{width:calc((100% - 40px) / 3)}}@media screen and (min-width: 1632px){.rs-setting .setting-content .setting-group-card{width:calc((100% - 60px)/4)}}@media screen and (min-width: 1972px){.rs-setting .setting-content .setting-group-card{width:calc((100% - 80px)/5)}}\n"] }]
|
|
28
|
+
}], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { navClick: [{
|
|
29
|
+
type: Output
|
|
30
|
+
}], navList: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], customNavClick: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], title: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}] } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2xheW91dC9uYXYtY2FyZC1ncm91cC9pbmRleC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvbGF5b3V0L25hdi1jYXJkLWdyb3VwL2luZGV4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFDTixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUy9FLE1BQU0sT0FBTyx1QkFBdUI7SUFDZjtJQUFuQixZQUFtQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFDckMsUUFBUSxLQUFVLENBQUM7SUFHbkIsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFMUIsT0FBTyxHQUFlLEVBQUUsQ0FBQztJQUN6QixjQUFjLEdBQVksS0FBSyxDQUFDLENBQUMsU0FBUztJQUMxQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBRXBCLFVBQVUsQ0FBQyxJQUFJO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNwRTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7d0dBaEJVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLDJLQ1ZwQyxzakNBa0NBOzs0RkR4QmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGdCQUFnQjs2RkFTMUIsUUFBUTtzQkFEUCxNQUFNO2dCQUdFLE9BQU87c0JBQWYsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIOe7hOS7tuexu1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBOYXZHcm91cCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibmF2LWNhcmQtZ3JvdXBcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUlNOYXZDYXJkR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByb3V0ZXI6IFJvdXRlcikge31cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG5hdkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBJbnB1dCgpIG5hdkxpc3Q6IE5hdkdyb3VwW10gPSBbXTtcclxuICBASW5wdXQoKSBjdXN0b21OYXZDbGljazogYm9vbGVhbiA9IGZhbHNlOyAvLyDmjqXmlLbovpPlhaXlsZ7mgKdcclxuICBASW5wdXQoKSB0aXRsZSA9IFwiXCI7XHJcblxyXG4gIG9uTmF2Q2xpY2soaXRlbSkge1xyXG4gICAgaWYgKCF0aGlzLmN1c3RvbU5hdkNsaWNrKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnVybF0sIHsgc3RhdGU6IHsgdGl0bGU6IGl0ZW0udGl0bGUgfSB9KTtcclxuICAgIH1cclxuICAgIHRoaXMubmF2Q2xpY2suZW1pdChpdGVtKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJzLXNldHRpbmdcIj5cclxuICA8aDEgY2xhc3M9XCJycy1wYWdlLXRpdGxlXCI+e3sgdGl0bGUgfX08L2gxPlxyXG4gIDxkaXYgY2xhc3M9XCJzZXR0aW5nLWNvbnRlbnRcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJzZXR0aW5nLWdyb3VwLWNhcmRcIlxyXG4gICAgICAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgbmF2TGlzdFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgcG9pbnRlcjogIWdyb3VwLnN1Ykxpc3QgfVwiXHJcbiAgICAgIChjbGljayk9XCIhZ3JvdXAuc3ViTGlzdCAmJiBvbk5hdkNsaWNrKGdyb3VwKVwiXHJcbiAgICA+XHJcbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJzZXR0aW5nLWNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmctY2FyZC1sb2dvXCI+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiZ3JvdXAuaW1nXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJzZXR0aW5nLWNhcmQtdGl0bGVcIj57eyBncm91cC50aXRsZSB9fTwvaDQ+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJzZXR0aW5nLWNhcmQtc3ViLXRpdGxlXCJcclxuICAgICAgICAgICpuZ0lmPVwiIWdyb3VwLnN1Ykxpc3RcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdyb3VwLnN1YlRpdGxlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaGVhZGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZy1jYXJkLWRlc2NcIiAqbmdJZj1cIiFncm91cC5zdWJMaXN0XCI+XHJcbiAgICAgICAge3sgZ3JvdXAuZGVzYyB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwic2V0dGluZy1pdGVtXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cC5zdWJMaXN0XCJcclxuICAgICAgICAoY2xpY2spPVwib25OYXZDbGljayhpdGVtKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBpdGVtLnRpdGxlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// 组件类
|
|
2
|
+
import { Component, ContentChild, Input, } from "@angular/core";
|
|
3
|
+
import { CommonGridComponent } from "../../common-grid/index.component";
|
|
4
|
+
import { debounce } from "lodash";
|
|
5
|
+
import { GridComponent } from "@syncfusion/ej2-angular-grids";
|
|
6
|
+
import { TreeGridComponent } from "@syncfusion/ej2-angular-treegrid";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
import * as i2 from "@angular/forms";
|
|
10
|
+
import * as i3 from "@syncfusion/ej2-angular-inputs";
|
|
11
|
+
export class RsPageListComponent {
|
|
12
|
+
gridContent;
|
|
13
|
+
orignGrid;
|
|
14
|
+
treeGrid;
|
|
15
|
+
wholeToolbarSlot;
|
|
16
|
+
pageTitle;
|
|
17
|
+
customPageTitle = false;
|
|
18
|
+
hideSearch = false;
|
|
19
|
+
isInner = false;
|
|
20
|
+
debouncedInput;
|
|
21
|
+
hasWholeToolbarSlot = false;
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
this.debouncedInput = debounce(() => {
|
|
24
|
+
this.onSeach();
|
|
25
|
+
}, 300);
|
|
26
|
+
}
|
|
27
|
+
ngAfterContentInit() {
|
|
28
|
+
// 检测是否传入了 wholeToolbarSlot
|
|
29
|
+
this.hasWholeToolbarSlot = !!this.wholeToolbarSlot;
|
|
30
|
+
}
|
|
31
|
+
searchValue;
|
|
32
|
+
onSeach() {
|
|
33
|
+
if (this.gridContent) {
|
|
34
|
+
this.gridContent.grid.search(this.searchValue);
|
|
35
|
+
}
|
|
36
|
+
else if (this.orignGrid) {
|
|
37
|
+
this.orignGrid.search(this.searchValue);
|
|
38
|
+
}
|
|
39
|
+
else if (this.treeGrid) {
|
|
40
|
+
this.treeGrid.search(this.searchValue);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
onInput() {
|
|
44
|
+
this.debouncedInput();
|
|
45
|
+
}
|
|
46
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RsPageListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RsPageListComponent, selector: "rs-page-list", inputs: { pageTitle: "pageTitle", customPageTitle: "customPageTitle", hideSearch: "hideSearch", isInner: "isInner" }, queries: [{ propertyName: "gridContent", first: true, predicate: CommonGridComponent, descendants: true }, { propertyName: "orignGrid", first: true, predicate: GridComponent, descendants: true }, { propertyName: "treeGrid", first: true, predicate: TreeGridComponent, descendants: true }, { propertyName: "wholeToolbarSlot", first: true, predicate: ["wholeToolbarSlot"], descendants: true }], ngImport: i0, template: "<div class=\"rs-page-list-wrap\" [ngClass]=\"{ 'is-not-inner': !isInner }\">\r\n <ng-container *ngIf=\"customPageTitle; else defaultTitle\">\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultTitle>\r\n <h1 class=\"rs-page-title\" *ngIf=\"pageTitle\">{{ pageTitle }}</h1>\r\n </ng-template>\r\n <div class=\"rs-sub-section\">\r\n <ng-content select=\"[subSectionSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-content-wrap\">\r\n <div class=\"rs-content-tab\">\r\n <ng-content select=\"[contentTabSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"rs-whole-bar\" *ngIf=\"hasWholeToolbarSlot\">\r\n <ng-content select=\"[wholeToolbarSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-left-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[leftToolbarBtnSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-right-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[rightToolbarBtnSlot]\"></ng-content>\r\n <div class=\"rs-search-input\" *ngIf=\"!hideSearch\">\r\n <ejs-textbox\r\n type=\"text\"\r\n class=\"e-input\"\r\n [(ngModel)]=\"searchValue\"\r\n (input)=\"onInput()\"\r\n placeholder=\"Search all fields\"\r\n [showClearButton]=\"true\"\r\n autocomplete=\"off\"\r\n ></ejs-textbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"rs-grid-wrap\">\r\n <ng-content select=\"[gridSlot]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".rs-page-list-wrap{height:100%;display:flex;flex-direction:column;position:relative;margin:0 auto;max-width:1885px}.rs-page-list-wrap .rs-page-title{font-family:var(--rs-font-family);font-size:var(--rs-page-title-font-size);font-weight:700;text-align:left;color:var(--rs-page-title-color);display:flex;align-items:center;padding:16px 8px 12px 20px}.rs-page-list-wrap .rs-sub-section{width:100%}.rs-page-list-wrap .rs-content-wrap{display:flex;flex-direction:column;flex:1;height:0}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap{display:flex;justify-content:space-between;align-items:center;padding-bottom:4px;border-bottom:1px solid #eaedf0}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-whole-bar{width:100%}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-left-col,.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col{display:flex;align-items:center}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-left-col ::ng-deep .e-btn,.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col ::ng-deep .e-btn{height:24px!important;min-width:auto!important}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col{gap:12px}.rs-page-list-wrap .rs-content-wrap .rs-left-col{flex:1;width:0;gap:4px}.rs-page-list-wrap .rs-content-wrap .rs-grid-wrap{flex:1;height:0}.rs-page-list-wrap.is-not-inner .rs-content-wrap{border-radius:15px;padding:12px 20px;background:#fff;border:1px solid var(--rs-border-color);box-shadow:0 0 4px #0000001a}.rs-page-list-wrap .rs-search-input{width:240px}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group{border-radius:14px!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group.e-input-focus,.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group:hover{box-shadow:0 0 3px #1f7bff66!important;border-color:var(--rs-input-hover-border-color)!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group.e-input-focus input.e-input,.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group:hover input.e-input{box-shadow:none!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group input.e-input{width:calc(100% - 50px);height:26px}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group input.e-input:hover{box-shadow:none!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group:before{content:\"\"!important;margin:6px 0 0 8px;display:block;width:16px;height:16px;background-image:url(/assets/img/search.svg);background-size:cover;background-position:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.TextBoxComponent, selector: "ejs-textbox", inputs: ["autocomplete", "cssClass", "enablePersistence", "enableRtl", "enabled", "floatLabelType", "htmlAttributes", "locale", "multiline", "placeholder", "readonly", "showClearButton", "type", "value", "width"], outputs: ["blur", "change", "created", "destroyed", "focus", "input", "valueChange"] }] });
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RsPageListComponent, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{ selector: "rs-page-list", template: "<div class=\"rs-page-list-wrap\" [ngClass]=\"{ 'is-not-inner': !isInner }\">\r\n <ng-container *ngIf=\"customPageTitle; else defaultTitle\">\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultTitle>\r\n <h1 class=\"rs-page-title\" *ngIf=\"pageTitle\">{{ pageTitle }}</h1>\r\n </ng-template>\r\n <div class=\"rs-sub-section\">\r\n <ng-content select=\"[subSectionSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-content-wrap\">\r\n <div class=\"rs-content-tab\">\r\n <ng-content select=\"[contentTabSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"rs-whole-bar\" *ngIf=\"hasWholeToolbarSlot\">\r\n <ng-content select=\"[wholeToolbarSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-left-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[leftToolbarBtnSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-right-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[rightToolbarBtnSlot]\"></ng-content>\r\n <div class=\"rs-search-input\" *ngIf=\"!hideSearch\">\r\n <ejs-textbox\r\n type=\"text\"\r\n class=\"e-input\"\r\n [(ngModel)]=\"searchValue\"\r\n (input)=\"onInput()\"\r\n placeholder=\"Search all fields\"\r\n [showClearButton]=\"true\"\r\n autocomplete=\"off\"\r\n ></ejs-textbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"rs-grid-wrap\">\r\n <ng-content select=\"[gridSlot]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".rs-page-list-wrap{height:100%;display:flex;flex-direction:column;position:relative;margin:0 auto;max-width:1885px}.rs-page-list-wrap .rs-page-title{font-family:var(--rs-font-family);font-size:var(--rs-page-title-font-size);font-weight:700;text-align:left;color:var(--rs-page-title-color);display:flex;align-items:center;padding:16px 8px 12px 20px}.rs-page-list-wrap .rs-sub-section{width:100%}.rs-page-list-wrap .rs-content-wrap{display:flex;flex-direction:column;flex:1;height:0}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap{display:flex;justify-content:space-between;align-items:center;padding-bottom:4px;border-bottom:1px solid #eaedf0}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-whole-bar{width:100%}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-left-col,.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col{display:flex;align-items:center}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-left-col ::ng-deep .e-btn,.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col ::ng-deep .e-btn{height:24px!important;min-width:auto!important}.rs-page-list-wrap .rs-content-wrap .rs-toolbar-wrap .rs-right-col{gap:12px}.rs-page-list-wrap .rs-content-wrap .rs-left-col{flex:1;width:0;gap:4px}.rs-page-list-wrap .rs-content-wrap .rs-grid-wrap{flex:1;height:0}.rs-page-list-wrap.is-not-inner .rs-content-wrap{border-radius:15px;padding:12px 20px;background:#fff;border:1px solid var(--rs-border-color);box-shadow:0 0 4px #0000001a}.rs-page-list-wrap .rs-search-input{width:240px}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group{border-radius:14px!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group.e-input-focus,.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group:hover{box-shadow:0 0 3px #1f7bff66!important;border-color:var(--rs-input-hover-border-color)!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group.e-input-focus input.e-input,.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group:hover input.e-input{box-shadow:none!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group input.e-input{width:calc(100% - 50px);height:26px}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group input.e-input:hover{box-shadow:none!important}.rs-page-list-wrap .rs-search-input ::ng-deep .e-input-group:before{content:\"\"!important;margin:6px 0 0 8px;display:block;width:16px;height:16px;background-image:url(/assets/img/search.svg);background-size:cover;background-position:center}\n"] }]
|
|
52
|
+
}], propDecorators: { gridContent: [{
|
|
53
|
+
type: ContentChild,
|
|
54
|
+
args: [CommonGridComponent, { static: false }]
|
|
55
|
+
}], orignGrid: [{
|
|
56
|
+
type: ContentChild,
|
|
57
|
+
args: [GridComponent, { static: false }]
|
|
58
|
+
}], treeGrid: [{
|
|
59
|
+
type: ContentChild,
|
|
60
|
+
args: [TreeGridComponent, { static: false }]
|
|
61
|
+
}], wholeToolbarSlot: [{
|
|
62
|
+
type: ContentChild,
|
|
63
|
+
args: ["wholeToolbarSlot", { static: false }]
|
|
64
|
+
}], pageTitle: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], customPageTitle: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], hideSearch: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], isInner: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}] } });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2xheW91dC9wYWdlLWxpc3QvaW5kZXguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2xheW91dC9wYWdlLWxpc3QvaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFPckUsTUFBTSxPQUFPLG1CQUFtQjtJQUN3QixXQUFXLENBQUM7SUFDbEIsU0FBUyxDQUFDO0lBQ04sUUFBUSxDQUFDO0lBQ1IsZ0JBQWdCLENBQU07SUFDbEUsU0FBUyxDQUFDO0lBRVYsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFakIsY0FBYyxDQUFXO0lBQ2pDLG1CQUFtQixHQUFZLEtBQUssQ0FBQztJQUNyQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDO0lBQ1osT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2hEO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN6QzthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO3dHQXJDVSxtQkFBbUI7NEZBQW5CLG1CQUFtQixtTkFDaEIsbUJBQW1CLDRFQUNuQixhQUFhLDJFQUNiLGlCQUFpQix1SkNyQmpDLDhuREF5Q0E7OzRGRHZCYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsY0FBYzs4QkFLOEIsV0FBVztzQkFBaEUsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0osU0FBUztzQkFBeEQsWUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNNLFFBQVE7c0JBQTNELFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNHLGdCQUFnQjtzQkFBcEUsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQzFDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIOe7hOS7tuexu1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyQ29udGVudEluaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29tbW9uR3JpZENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IEdyaWRDb21wb25lbnQgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZ3JpZHNcIjtcclxuaW1wb3J0IHsgVHJlZUdyaWRDb21wb25lbnQgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItdHJlZWdyaWRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLXBhZ2UtbGlzdFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSc1BhZ2VMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcclxuICBAQ29udGVudENoaWxkKENvbW1vbkdyaWRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBncmlkQ29udGVudDtcclxuICBAQ29udGVudENoaWxkKEdyaWRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBvcmlnbkdyaWQ7XHJcbiAgQENvbnRlbnRDaGlsZChUcmVlR3JpZENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIHRyZWVHcmlkO1xyXG4gIEBDb250ZW50Q2hpbGQoXCJ3aG9sZVRvb2xiYXJTbG90XCIsIHsgc3RhdGljOiBmYWxzZSB9KSB3aG9sZVRvb2xiYXJTbG90OiBhbnk7XHJcbiAgQElucHV0KCkgcGFnZVRpdGxlO1xyXG5cclxuICBASW5wdXQoKSBjdXN0b21QYWdlVGl0bGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRlU2VhcmNoID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNJbm5lciA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGRlYm91bmNlZElucHV0OiBGdW5jdGlvbjtcclxuICBoYXNXaG9sZVRvb2xiYXJTbG90OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmRlYm91bmNlZElucHV0ID0gZGVib3VuY2UoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhY2goKTtcclxuICAgIH0sIDMwMCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAvLyDmo4DmtYvmmK/lkKbkvKDlhaXkuoYgd2hvbGVUb29sYmFyU2xvdFxyXG4gICAgdGhpcy5oYXNXaG9sZVRvb2xiYXJTbG90ID0gISF0aGlzLndob2xlVG9vbGJhclNsb3Q7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hWYWx1ZTtcclxuICBvblNlYWNoKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZENvbnRlbnQpIHtcclxuICAgICAgdGhpcy5ncmlkQ29udGVudC5ncmlkLnNlYXJjaCh0aGlzLnNlYXJjaFZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcmlnbkdyaWQpIHtcclxuICAgICAgdGhpcy5vcmlnbkdyaWQuc2VhcmNoKHRoaXMuc2VhcmNoVmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnRyZWVHcmlkKSB7XHJcbiAgICAgIHRoaXMudHJlZUdyaWQuc2VhcmNoKHRoaXMuc2VhcmNoVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dCgpIHtcclxuICAgIHRoaXMuZGVib3VuY2VkSW5wdXQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJzLXBhZ2UtbGlzdC13cmFwXCIgW25nQ2xhc3NdPVwieyAnaXMtbm90LWlubmVyJzogIWlzSW5uZXIgfVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21QYWdlVGl0bGU7IGVsc2UgZGVmYXVsdFRpdGxlXCI+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdGl0bGVTbG90XVwiPjwvbmctY29udGVudD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUaXRsZT5cclxuICAgIDxoMSBjbGFzcz1cInJzLXBhZ2UtdGl0bGVcIiAqbmdJZj1cInBhZ2VUaXRsZVwiPnt7IHBhZ2VUaXRsZSB9fTwvaDE+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwicnMtc3ViLXNlY3Rpb25cIj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdWJTZWN0aW9uU2xvdF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInJzLWNvbnRlbnQtd3JhcFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJzLWNvbnRlbnQtdGFiXCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjb250ZW50VGFiU2xvdF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJycy10b29sYmFyLXdyYXBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJzLXdob2xlLWJhclwiICpuZ0lmPVwiaGFzV2hvbGVUb29sYmFyU2xvdFwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt3aG9sZVRvb2xiYXJTbG90XVwiPjwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJycy1sZWZ0LWNvbFwiICpuZ0lmPVwiIWhhc1dob2xlVG9vbGJhclNsb3RcIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGVmdFRvb2xiYXJCdG5TbG90XVwiPjwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJycy1yaWdodC1jb2xcIiAqbmdJZj1cIiFoYXNXaG9sZVRvb2xiYXJTbG90XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3JpZ2h0VG9vbGJhckJ0blNsb3RdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJycy1zZWFyY2gtaW5wdXRcIiAqbmdJZj1cIiFoaWRlU2VhcmNoXCI+XHJcbiAgICAgICAgICA8ZWpzLXRleHRib3hcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImUtaW5wdXRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGFsbCBmaWVsZHNcIlxyXG4gICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgPjwvZWpzLXRleHRib3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicnMtZ3JpZC13cmFwXCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltncmlkU2xvdF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|