barsa-tiles 0.0.1
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 +25 -0
- package/esm2020/barsa-tiles.mjs +5 -0
- package/esm2020/lib/action-item/action-item.component.mjs +17 -0
- package/esm2020/lib/action-links.pipe.mjs +16 -0
- package/esm2020/lib/actions-link/actions-link.component.mjs +19 -0
- package/esm2020/lib/app-finder/app-finder.component.mjs +53 -0
- package/esm2020/lib/app-finder-app-list/app-finder-app-list.component.mjs +40 -0
- package/esm2020/lib/app-finder-group/app-finder-group.component.mjs +42 -0
- package/esm2020/lib/app-finder.service.mjs +121 -0
- package/esm2020/lib/barsa-tiles.module.mjs +196 -0
- package/esm2020/lib/change-app-tile/change-app-tile.component.mjs +47 -0
- package/esm2020/lib/create-app-group/create-app-group.component.mjs +44 -0
- package/esm2020/lib/directives/emptylist.directive.mjs +36 -0
- package/esm2020/lib/feed-tile/feed-tile.component.mjs +31 -0
- package/esm2020/lib/footer-edit-tile/footer-edit-tile.component.mjs +13 -0
- package/esm2020/lib/footer-tile/footer-tile.component.mjs +28 -0
- package/esm2020/lib/form-app-finder/form-app-finder.component.mjs +94 -0
- package/esm2020/lib/form-tile/form-tile.component.mjs +34 -0
- package/esm2020/lib/logo-tile/logo-tile.component.mjs +22 -0
- package/esm2020/lib/micro-tile-chart-area/micro-tile-chart-area.component.mjs +39 -0
- package/esm2020/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.mjs +28 -0
- package/esm2020/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.mjs +26 -0
- package/esm2020/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.mjs +19 -0
- package/esm2020/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.mjs +30 -0
- package/esm2020/lib/micro-tile-chart-line/micro-tile-chart-line.component.mjs +31 -0
- package/esm2020/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.mjs +26 -0
- package/esm2020/lib/models/app-tile-footer-section.mjs +2 -0
- package/esm2020/lib/models/app-tile-footer.mjs +2 -0
- package/esm2020/lib/models/app-tile-group-pin.mjs +2 -0
- package/esm2020/lib/models/base-bt-tile-component.mjs +20 -0
- package/esm2020/lib/models/base-tile-component.mjs +57 -0
- package/esm2020/lib/models/base-tile-setting.mjs +2 -0
- package/esm2020/lib/models/feed-tile-setting.mjs +2 -0
- package/esm2020/lib/models/index.mjs +14 -0
- package/esm2020/lib/models/logo-tile-setting.mjs +2 -0
- package/esm2020/lib/models/micro-tile-chart-bullet-setting.mjs +2 -0
- package/esm2020/lib/models/news-tile-setting.mjs +2 -0
- package/esm2020/lib/models/numeric-tile-setting.mjs +2 -0
- package/esm2020/lib/models/profile-tile-setting.mjs +2 -0
- package/esm2020/lib/models/tile-setting.mjs +2 -0
- package/esm2020/lib/models/user-portal-settings.mjs +2 -0
- package/esm2020/lib/news-tile/news-tile.component.mjs +59 -0
- package/esm2020/lib/numeric-tile/numeric-tile.component.mjs +33 -0
- package/esm2020/lib/pin-tile/pin-tile.component.mjs +111 -0
- package/esm2020/lib/pipes/group-tiles.pipe.mjs +31 -0
- package/esm2020/lib/pipes/home-group.pipe.mjs +17 -0
- package/esm2020/lib/pipes/tile-home-filter.pipe.mjs +28 -0
- package/esm2020/lib/profile-tile/profile-tile.component.mjs +25 -0
- package/esm2020/lib/shellbar/shellbar.component.mjs +159 -0
- package/esm2020/lib/simple-tile/simple-tile.component.mjs +17 -0
- package/esm2020/lib/tile/tile.component.mjs +47 -0
- package/esm2020/lib/tile-renderer.directive.mjs +69 -0
- package/esm2020/lib/tiles-viewer/tiles-viewer.component.mjs +118 -0
- package/esm2020/lib/tiles-viewer-container/tiles-viewer-container.component.mjs +158 -0
- package/esm2020/lib/tiles-viewer-group/tiles-viewer-group.component.mjs +75 -0
- package/esm2020/lib/tiles-viewer.service.mjs +130 -0
- package/esm2020/lib/tiles.service.mjs +500 -0
- package/esm2020/public-api.mjs +43 -0
- package/fesm2015/barsa-tiles.mjs +2415 -0
- package/fesm2015/barsa-tiles.mjs.map +1 -0
- package/fesm2020/barsa-tiles.mjs +2386 -0
- package/fesm2020/barsa-tiles.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/action-item/action-item.component.d.ts +6 -0
- package/lib/action-links.pipe.d.ts +7 -0
- package/lib/actions-link/actions-link.component.d.ts +8 -0
- package/lib/app-finder/app-finder.component.d.ts +24 -0
- package/lib/app-finder-app-list/app-finder-app-list.component.d.ts +20 -0
- package/lib/app-finder-group/app-finder-group.component.d.ts +14 -0
- package/lib/app-finder.service.d.ts +33 -0
- package/lib/barsa-tiles.module.d.ts +65 -0
- package/lib/change-app-tile/change-app-tile.component.d.ts +20 -0
- package/lib/create-app-group/create-app-group.component.d.ts +19 -0
- package/lib/directives/emptylist.directive.d.ts +14 -0
- package/lib/feed-tile/feed-tile.component.d.ts +11 -0
- package/lib/footer-edit-tile/footer-edit-tile.component.d.ts +6 -0
- package/lib/footer-tile/footer-tile.component.d.ts +11 -0
- package/lib/form-app-finder/form-app-finder.component.d.ts +38 -0
- package/lib/form-tile/form-tile.component.d.ts +24 -0
- package/lib/logo-tile/logo-tile.component.d.ts +7 -0
- package/lib/micro-tile-chart-area/micro-tile-chart-area.component.d.ts +8 -0
- package/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.d.ts +12 -0
- package/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.d.ts +16 -0
- package/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.d.ts +7 -0
- package/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.d.ts +8 -0
- package/lib/micro-tile-chart-line/micro-tile-chart-line.component.d.ts +8 -0
- package/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.d.ts +8 -0
- package/lib/models/app-tile-footer-section.d.ts +6 -0
- package/lib/models/app-tile-footer.d.ts +8 -0
- package/lib/models/app-tile-group-pin.d.ts +5 -0
- package/lib/models/base-bt-tile-component.d.ts +9 -0
- package/lib/models/base-tile-component.d.ts +26 -0
- package/lib/models/base-tile-setting.d.ts +5 -0
- package/lib/models/feed-tile-setting.d.ts +7 -0
- package/lib/models/index.d.ts +13 -0
- package/lib/models/logo-tile-setting.d.ts +6 -0
- package/lib/models/micro-tile-chart-bullet-setting.d.ts +10 -0
- package/lib/models/news-tile-setting.d.ts +4 -0
- package/lib/models/numeric-tile-setting.d.ts +9 -0
- package/lib/models/profile-tile-setting.d.ts +7 -0
- package/lib/models/tile-setting.d.ts +9 -0
- package/lib/models/user-portal-settings.d.ts +9 -0
- package/lib/news-tile/news-tile.component.d.ts +24 -0
- package/lib/numeric-tile/numeric-tile.component.d.ts +12 -0
- package/lib/pin-tile/pin-tile.component.d.ts +30 -0
- package/lib/pipes/group-tiles.pipe.d.ts +14 -0
- package/lib/pipes/home-group.pipe.d.ts +9 -0
- package/lib/pipes/tile-home-filter.pipe.d.ts +8 -0
- package/lib/profile-tile/profile-tile.component.d.ts +7 -0
- package/lib/shellbar/shellbar.component.d.ts +64 -0
- package/lib/simple-tile/simple-tile.component.d.ts +6 -0
- package/lib/tile/tile.component.d.ts +12 -0
- package/lib/tile-renderer.directive.d.ts +27 -0
- package/lib/tiles-viewer/tiles-viewer.component.d.ts +51 -0
- package/lib/tiles-viewer-container/tiles-viewer-container.component.d.ts +55 -0
- package/lib/tiles-viewer-group/tiles-viewer-group.component.d.ts +34 -0
- package/lib/tiles-viewer.service.d.ts +42 -0
- package/lib/tiles.service.d.ts +68 -0
- package/package.json +31 -0
- package/public-api.d.ts +39 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { BaseComponent, BarsaApi } from 'barsa-novin-ray-core';
|
|
3
|
+
import { TabListComponent } from '@fundamental-ngx/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/cdk/drag-drop";
|
|
7
|
+
import * as i3 from "@fundamental-ngx/core/bar";
|
|
8
|
+
import * as i4 from "@fundamental-ngx/core/button";
|
|
9
|
+
import * as i5 from "@fundamental-ngx/core/dynamic-page";
|
|
10
|
+
import * as i6 from "@fundamental-ngx/core/form";
|
|
11
|
+
import * as i7 from "@fundamental-ngx/core/switch";
|
|
12
|
+
import * as i8 from "@fundamental-ngx/core/tabs";
|
|
13
|
+
import * as i9 from "@fundamental-ngx/core/toolbar";
|
|
14
|
+
import * as i10 from "barsa-sap-ui";
|
|
15
|
+
import * as i11 from "../tiles-viewer-group/tiles-viewer-group.component";
|
|
16
|
+
import * as i12 from "barsa-novin-ray-core";
|
|
17
|
+
export class TilesViewerComponent extends BaseComponent {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.pageContentClass = true;
|
|
21
|
+
this.stackContentChange = new EventEmitter();
|
|
22
|
+
this.closeEditHome = new EventEmitter();
|
|
23
|
+
this.save = new EventEmitter();
|
|
24
|
+
this.listDropped = new EventEmitter();
|
|
25
|
+
this.tabChanged = new EventEmitter();
|
|
26
|
+
this.toggleGroup = new EventEmitter();
|
|
27
|
+
this.resetGroup = new EventEmitter();
|
|
28
|
+
this.deleteGroup = new EventEmitter();
|
|
29
|
+
this.hideAppTileClick = new EventEmitter();
|
|
30
|
+
this.renameAppTileClick = new EventEmitter();
|
|
31
|
+
this.tilesDropped = new EventEmitter();
|
|
32
|
+
this.rtl = BarsaApi.LoginFormData.IsRtl;
|
|
33
|
+
}
|
|
34
|
+
onSelectedTabChange(selectedTab, appTileGroups) {
|
|
35
|
+
this.selectedTabTitle = selectedTab.title;
|
|
36
|
+
if (!this.tabListComponent) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.tabChanged.emit({
|
|
40
|
+
tabPanels: this.tabListComponent.tabPanels.toArray(),
|
|
41
|
+
selectedTab,
|
|
42
|
+
appTileGroups
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
onDropGroup(appTileGroups, event) {
|
|
46
|
+
if (!this.editHome) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
this.listDropped.emit({ appTileGroups, event });
|
|
50
|
+
}
|
|
51
|
+
onDrop($event) {
|
|
52
|
+
this.tilesDropped.emit($event);
|
|
53
|
+
}
|
|
54
|
+
onStackContentChanged(checked) {
|
|
55
|
+
this.stackContentChange.emit(checked);
|
|
56
|
+
}
|
|
57
|
+
onExitEditHome(appGroups) {
|
|
58
|
+
this.save.emit(appGroups);
|
|
59
|
+
}
|
|
60
|
+
onCloseEditHome() {
|
|
61
|
+
this.closeEditHome.emit();
|
|
62
|
+
}
|
|
63
|
+
_trackById(item, index) {
|
|
64
|
+
return item ? item.Id : index;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
TilesViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
TilesViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TilesViewerComponent, selector: "bt-tiles-viewer", inputs: { appTileGroups: "appTileGroups", loading: "loading", editHome: "editHome", stackContent: "stackContent", deviceSize: "deviceSize", selectedAppGroupId: "selectedAppGroupId", DynamicComponents: "DynamicComponents" }, outputs: { stackContentChange: "stackContentChange", closeEditHome: "closeEditHome", save: "save", listDropped: "listDropped", tabChanged: "tabChanged", toggleGroup: "toggleGroup", resetGroup: "resetGroup", deleteGroup: "deleteGroup", hideAppTileClick: "hideAppTileClick", renameAppTileClick: "renameAppTileClick", tilesDropped: "tilesDropped" }, host: { properties: { "class.page-content": "this.pageContentClass", "attr.rtl": "this.rtl" } }, viewQueries: [{ propertyName: "tabListComponent", first: true, predicate: TabListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"appTileGroups; else loadingTpl\">\r\n <bsu-mask *ngIf=\"loading\"></bsu-mask>\r\n <fd-dynamic-page\r\n size=\"large\"\r\n [ariaLabel]=\"'HomeEdit' | bbbTranslate\"\r\n [autoResponsive]=\"true\"\r\n [class.stack-mode]=\"stackContent\"\r\n >\r\n <fd-dynamic-page-header *ngIf=\"editHome\" [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n <fd-toolbar *ngIf=\"editHome\" fdType=\"transparent\" [clearBorder]=\"true\">\r\n <label fd-form-label fd-toolbar-item>Stacked Content </label>\r\n <fd-switch\r\n fd-toolbar-item\r\n [checked]=\"stackContent\"\r\n (checkedChange)=\"onStackContentChanged($event)\"\r\n ></fd-switch>\r\n </fd-toolbar>\r\n </fd-dynamic-page-global-actions>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" title=\"Close\" (click)=\"onCloseEditHome()\">\r\n <i class=\"sap-icon--decline\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n <fd-dynamic-page-content>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n stackContent ? renderTabsStacked : renderTabs;\r\n context: {\r\n $implicit: appTileGroups,\r\n stackContent: stackContent,\r\n editHome: editHome\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n <fd-dynamic-page-footer>\r\n <div fd-bar barDesign=\"footer\" *ngIf=\"editHome\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'SaveAndClose' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"onExitEditHome(appTileGroups)\"\r\n ></fd-button-bar>\r\n </div>\r\n </div>\r\n </fd-dynamic-page-footer>\r\n </fd-dynamic-page>\r\n</ng-container>\r\n\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<ng-template #renderTabs let-appTileGroups let-stackContent=\"stackContent\" let-editHome=\"editHome\">\r\n <fd-tab-list\r\n class=\"tile-tabs\"\r\n [size]=\"deviceSize\"\r\n [collapseOverflow]=\"true\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n (cdkDropListDropped)=\"onDropGroup(appTileGroups, $event)\"\r\n (selectedTabChange)=\"onSelectedTabChange($event, appTileGroups)\"\r\n >\r\n <ng-container *ngFor=\"let appTileGroup of appTileGroups; let i = index; trackBy: _trackById\">\r\n <fd-tab\r\n *ngIf=\"editHome || appTileGroup.navigatorVisible\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [ngClass]=\"'fd-tabs--' + deviceSize\"\r\n [class.is-expanded]=\"selectedTabTitle === (appTileGroup.navigatorTitle | bbbTranslate)\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderGroup;\r\n context: {\r\n $implicit: appTileGroup,\r\n stackContent: stackContent,\r\n editHome: editHome,\r\n isAppTileSubGroup: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n </ng-container>\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template #renderTabsStacked let-appTileGroups let-stackContent=\"stackContent\" let-editHome=\"editHome\">\r\n <fd-tab-list\r\n class=\"tile-tabs\"\r\n [size]=\"deviceSize\"\r\n [collapseOverflow]=\"true\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n [stackContent]=\"true\"\r\n [maxContentHeight]=\"stackContent ? 'calc(99vh - 2.75rem - 44px)' : 'calc(100vh - 44px)'\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n (cdkDropListDropped)=\"onDropGroup(appTileGroups, $event)\"\r\n >\r\n <ng-container *ngFor=\"let appTileGroup of appTileGroups; let i = index; trackBy: _trackById\">\r\n <fd-tab\r\n *ngIf=\"editHome || appTileGroup.navigatorVisible\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [ngClass]=\"'fd-tabs--' + deviceSize\"\r\n [count]=\"appTileGroup.$Children?.length\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderGroup;\r\n context: {\r\n $implicit: appTileGroup,\r\n stackContent: stackContent,\r\n editHome: editHome,\r\n isAppTileSubGroup: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n </ng-container>\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template\r\n #renderGroup\r\n let-appTileGroup\r\n let-stackContent=\"stackContent\"\r\n let-editHome=\"editHome\"\r\n let-isAppTileSubGroup=\"isAppTileSubGroup\"\r\n>\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileGroup\"\r\n [editHome]=\"editHome\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"isAppTileSubGroup\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-tiles-viewer-group>\r\n</ng-template>\r\n", styles: [":host{display:block}:host ::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep .fd-panel__content{border-bottom:none;padding:1px}:host ::ng-deep fd-tab-list[noSpy] .fd-tabs__content{overflow-y:initial}:host ::ng-deep fd-dynamic-page section{height:calc(100vh - 44px)!important}:host ::ng-deep .footer-spacer{height:0}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}fd-dynamic-page-content{padding:0!important}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: i3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["role", "ariaLabel", "background", "autoResponsive", "size", "offset", "expandContent"] }, { kind: "component", type: i5.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "subtitle"] }, { kind: "component", type: i5.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i5.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i5.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i5.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i6.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "id"] }, { kind: "component", type: i7.SwitchComponent, selector: "fd-switch", inputs: ["activeText", "inactiveText", "disabled", "id", "name", "required", "checked", "semantic", "ariaLabel", "ariaLabelledby", "ariaLabelledBy", "semanticAcceptLabel", "semanticDeclineLabel"], outputs: ["checkedChange"] }, { kind: "component", type: i8.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i8.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "component", type: i9.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i9.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i10.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "component", type: i11.TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "editHome", "isAppTileSubGroup"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "pipe", type: i12.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerComponent, decorators: [{
|
|
70
|
+
type: Component,
|
|
71
|
+
args: [{ selector: 'bt-tiles-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"appTileGroups; else loadingTpl\">\r\n <bsu-mask *ngIf=\"loading\"></bsu-mask>\r\n <fd-dynamic-page\r\n size=\"large\"\r\n [ariaLabel]=\"'HomeEdit' | bbbTranslate\"\r\n [autoResponsive]=\"true\"\r\n [class.stack-mode]=\"stackContent\"\r\n >\r\n <fd-dynamic-page-header *ngIf=\"editHome\" [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n <fd-toolbar *ngIf=\"editHome\" fdType=\"transparent\" [clearBorder]=\"true\">\r\n <label fd-form-label fd-toolbar-item>Stacked Content </label>\r\n <fd-switch\r\n fd-toolbar-item\r\n [checked]=\"stackContent\"\r\n (checkedChange)=\"onStackContentChanged($event)\"\r\n ></fd-switch>\r\n </fd-toolbar>\r\n </fd-dynamic-page-global-actions>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" title=\"Close\" (click)=\"onCloseEditHome()\">\r\n <i class=\"sap-icon--decline\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n <fd-dynamic-page-content>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n stackContent ? renderTabsStacked : renderTabs;\r\n context: {\r\n $implicit: appTileGroups,\r\n stackContent: stackContent,\r\n editHome: editHome\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n <fd-dynamic-page-footer>\r\n <div fd-bar barDesign=\"footer\" *ngIf=\"editHome\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'SaveAndClose' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"onExitEditHome(appTileGroups)\"\r\n ></fd-button-bar>\r\n </div>\r\n </div>\r\n </fd-dynamic-page-footer>\r\n </fd-dynamic-page>\r\n</ng-container>\r\n\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<ng-template #renderTabs let-appTileGroups let-stackContent=\"stackContent\" let-editHome=\"editHome\">\r\n <fd-tab-list\r\n class=\"tile-tabs\"\r\n [size]=\"deviceSize\"\r\n [collapseOverflow]=\"true\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n (cdkDropListDropped)=\"onDropGroup(appTileGroups, $event)\"\r\n (selectedTabChange)=\"onSelectedTabChange($event, appTileGroups)\"\r\n >\r\n <ng-container *ngFor=\"let appTileGroup of appTileGroups; let i = index; trackBy: _trackById\">\r\n <fd-tab\r\n *ngIf=\"editHome || appTileGroup.navigatorVisible\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [ngClass]=\"'fd-tabs--' + deviceSize\"\r\n [class.is-expanded]=\"selectedTabTitle === (appTileGroup.navigatorTitle | bbbTranslate)\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderGroup;\r\n context: {\r\n $implicit: appTileGroup,\r\n stackContent: stackContent,\r\n editHome: editHome,\r\n isAppTileSubGroup: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n </ng-container>\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template #renderTabsStacked let-appTileGroups let-stackContent=\"stackContent\" let-editHome=\"editHome\">\r\n <fd-tab-list\r\n class=\"tile-tabs\"\r\n [size]=\"deviceSize\"\r\n [collapseOverflow]=\"true\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n [stackContent]=\"true\"\r\n [maxContentHeight]=\"stackContent ? 'calc(99vh - 2.75rem - 44px)' : 'calc(100vh - 44px)'\"\r\n cdkDropList\r\n cdkDropListOrientation=\"vertical\"\r\n (cdkDropListDropped)=\"onDropGroup(appTileGroups, $event)\"\r\n >\r\n <ng-container *ngFor=\"let appTileGroup of appTileGroups; let i = index; trackBy: _trackById\">\r\n <fd-tab\r\n *ngIf=\"editHome || appTileGroup.navigatorVisible\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [ngClass]=\"'fd-tabs--' + deviceSize\"\r\n [count]=\"appTileGroup.$Children?.length\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderGroup;\r\n context: {\r\n $implicit: appTileGroup,\r\n stackContent: stackContent,\r\n editHome: editHome,\r\n isAppTileSubGroup: false\r\n }\r\n \"\r\n ></ng-container>\r\n </fd-dynamic-page-content>\r\n </fd-tab>\r\n </ng-container>\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template\r\n #renderGroup\r\n let-appTileGroup\r\n let-stackContent=\"stackContent\"\r\n let-editHome=\"editHome\"\r\n let-isAppTileSubGroup=\"isAppTileSubGroup\"\r\n>\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileGroup\"\r\n [editHome]=\"editHome\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"isAppTileSubGroup\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-tiles-viewer-group>\r\n</ng-template>\r\n", styles: [":host{display:block}:host ::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep .fd-panel__content{border-bottom:none;padding:1px}:host ::ng-deep fd-tab-list[noSpy] .fd-tabs__content{overflow-y:initial}:host ::ng-deep fd-dynamic-page section{height:calc(100vh - 44px)!important}:host ::ng-deep .footer-spacer{height:0}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}fd-dynamic-page-content{padding:0!important}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"] }]
|
|
72
|
+
}], propDecorators: { tabListComponent: [{
|
|
73
|
+
type: ViewChild,
|
|
74
|
+
args: [TabListComponent]
|
|
75
|
+
}], pageContentClass: [{
|
|
76
|
+
type: HostBinding,
|
|
77
|
+
args: ['class.page-content']
|
|
78
|
+
}], appTileGroups: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], loading: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], editHome: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], stackContent: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], deviceSize: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], selectedAppGroupId: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], DynamicComponents: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], stackContentChange: [{
|
|
93
|
+
type: Output
|
|
94
|
+
}], closeEditHome: [{
|
|
95
|
+
type: Output
|
|
96
|
+
}], save: [{
|
|
97
|
+
type: Output
|
|
98
|
+
}], listDropped: [{
|
|
99
|
+
type: Output
|
|
100
|
+
}], tabChanged: [{
|
|
101
|
+
type: Output
|
|
102
|
+
}], toggleGroup: [{
|
|
103
|
+
type: Output
|
|
104
|
+
}], resetGroup: [{
|
|
105
|
+
type: Output
|
|
106
|
+
}], deleteGroup: [{
|
|
107
|
+
type: Output
|
|
108
|
+
}], hideAppTileClick: [{
|
|
109
|
+
type: Output
|
|
110
|
+
}], renameAppTileClick: [{
|
|
111
|
+
type: Output
|
|
112
|
+
}], tilesDropped: [{
|
|
113
|
+
type: Output
|
|
114
|
+
}], rtl: [{
|
|
115
|
+
type: HostBinding,
|
|
116
|
+
args: ['attr.rtl']
|
|
117
|
+
}] } });
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMtdmlld2VyL3RpbGVzLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci90aWxlcy12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFBRSxhQUFhLEVBQXVCLFFBQVEsRUFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRyxPQUFPLEVBQVksZ0JBQWdCLEVBQXFCLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUXRGLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxhQUFhO0lBTnZEOztRQVF1QyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFVakQsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFHcEMsQ0FBQztRQUNLLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFJbkMsQ0FBQztRQUVLLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDdEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3JELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDdEQscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDM0QsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFFN0QsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFHckMsQ0FBQztRQUVvQixRQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7S0FvQy9EO0lBbENHLG1CQUFtQixDQUFDLFdBQThCLEVBQUUsYUFBb0M7UUFDcEYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFFMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDcEQsV0FBVztZQUNYLGFBQWE7U0FDaEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELFdBQVcsQ0FBQyxhQUFvQyxFQUFFLEtBQXlDO1FBQ3ZGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELHFCQUFxQixDQUFDLE9BQU87UUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQWdDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQzs7aUhBdkVRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHF3QkFDbEIsZ0JBQWdCLHVFQ2IvQixpa05Bb0pBOzJGRHhJYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07OEJBR2xCLGdCQUFnQjtzQkFBNUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ1EsZ0JBQWdCO3NCQUFsRCxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDeEIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFJRyxVQUFVO3NCQUFuQixNQUFNO2dCQU1HLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFLa0IsR0FBRztzQkFBM0IsV0FBVzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBNZXRhb2JqZWN0RGF0YU1vZGVsLCBCYXJzYUFwaSwgQWJicmV2YXRpb25EZXZpY2VTaXplIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFRhYkxpc3RDb21wb25lbnQsIFRhYlBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdidC10aWxlcy12aWV3ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aWxlcy12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RpbGVzLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRpbGVzVmlld2VyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gICAgQFZpZXdDaGlsZChUYWJMaXN0Q29tcG9uZW50KSB0YWJMaXN0Q29tcG9uZW50OiBUYWJMaXN0Q29tcG9uZW50O1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MucGFnZS1jb250ZW50JykgcGFnZUNvbnRlbnRDbGFzcyA9IHRydWU7XG4gICAgQElucHV0KCkgYXBwVGlsZUdyb3VwczogQXJyYXk8TWV0YW9iamVjdERhdGFNb2RlbD47XG4gICAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBlZGl0SG9tZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzdGFja0NvbnRlbnQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQXBwR3JvdXBJZDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgRHluYW1pY0NvbXBvbmVudHM6IGFueTtcblxuICAgIEBPdXRwdXQoKSBzdGFja0NvbnRlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIGNsb3NlRWRpdEhvbWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGxpc3REcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGFwcFRpbGVHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcbiAgICAgICAgZXZlbnQ6IENka0RyYWdEcm9wPE1ldGFvYmplY3REYXRhTW9kZWxbXT47XG4gICAgfT4oKTtcbiAgICBAT3V0cHV0KCkgdGFiQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBzZWxlY3RlZFRhYjogVGFiUGFuZWxDb21wb25lbnQ7XG4gICAgICAgIHRhYlBhbmVsczogVGFiUGFuZWxDb21wb25lbnRbXTtcbiAgICAgICAgYXBwVGlsZUdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdO1xuICAgIH0+KCk7XG5cbiAgICBAT3V0cHV0KCkgdG9nZ2xlR3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHJlc2V0R3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIGRlbGV0ZUdyb3VwID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBoaWRlQXBwVGlsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSByZW5hbWVBcHBUaWxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG5cbiAgICBAT3V0cHV0KCkgdGlsZXNEcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICAgICAgZXZlbnQ6IENka0RyYWdEcm9wPHsgaXNUaWxlOiBib29sZWFuOyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdIH0+O1xuICAgIH0+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucnRsJykgcnRsID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1J0bDtcbiAgICBzZWxlY3RlZFRhYlRpdGxlOiBOdWxsYWJsZTxzdHJpbmc+O1xuICAgIG9uU2VsZWN0ZWRUYWJDaGFuZ2Uoc2VsZWN0ZWRUYWI6IFRhYlBhbmVsQ29tcG9uZW50LCBhcHBUaWxlR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYlRpdGxlID0gc2VsZWN0ZWRUYWIudGl0bGU7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRhYkxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICB0YWJQYW5lbHM6IHRoaXMudGFiTGlzdENvbXBvbmVudC50YWJQYW5lbHMudG9BcnJheSgpLFxuICAgICAgICAgICAgc2VsZWN0ZWRUYWIsXG4gICAgICAgICAgICBhcHBUaWxlR3JvdXBzXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvbkRyb3BHcm91cChhcHBUaWxlR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sIGV2ZW50OiBDZGtEcmFnRHJvcDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lZGl0SG9tZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlzdERyb3BwZWQuZW1pdCh7IGFwcFRpbGVHcm91cHMsIGV2ZW50IH0pO1xuICAgIH1cbiAgICBvbkRyb3AoJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMudGlsZXNEcm9wcGVkLmVtaXQoJGV2ZW50KTtcbiAgICB9XG4gICAgb25TdGFja0NvbnRlbnRDaGFuZ2VkKGNoZWNrZWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGFja0NvbnRlbnRDaGFuZ2UuZW1pdChjaGVja2VkKTtcbiAgICB9XG5cbiAgICBvbkV4aXRFZGl0SG9tZShhcHBHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhdmUuZW1pdChhcHBHcm91cHMpO1xuICAgIH1cbiAgICBvbkNsb3NlRWRpdEhvbWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VFZGl0SG9tZS5lbWl0KCk7XG4gICAgfVxuICAgIF90cmFja0J5SWQoaXRlbSwgaW5kZXgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gaXRlbSA/IGl0ZW0uSWQgOiBpbmRleDtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwVGlsZUdyb3VwczsgZWxzZSBsb2FkaW5nVHBsXCI+XHJcbiAgICA8YnN1LW1hc2sgKm5nSWY9XCJsb2FkaW5nXCI+PC9ic3UtbWFzaz5cclxuICAgIDxmZC1keW5hbWljLXBhZ2VcclxuICAgICAgICBzaXplPVwibGFyZ2VcIlxyXG4gICAgICAgIFthcmlhTGFiZWxdPVwiJ0hvbWVFZGl0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2F1dG9SZXNwb25zaXZlXT1cInRydWVcIlxyXG4gICAgICAgIFtjbGFzcy5zdGFjay1tb2RlXT1cInN0YWNrQ29udGVudFwiXHJcbiAgICA+XHJcbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1oZWFkZXIgKm5nSWY9XCJlZGl0SG9tZVwiIFt0aXRsZV09XCInSG9tZUVkaXQnIHwgYmJiVHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDxmZC1keW5hbWljLXBhZ2UtZ2xvYmFsLWFjdGlvbnM+XHJcbiAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhciAqbmdJZj1cImVkaXRIb21lXCIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsIGZkLXRvb2xiYXItaXRlbT5TdGFja2VkIENvbnRlbnQgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtc3dpdGNoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzdGFja0NvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJvblN0YWNrQ29udGVudENoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtc3dpdGNoPlxyXG4gICAgICAgICAgICAgICAgPC9mZC10b29sYmFyPlxyXG4gICAgICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1nbG9iYWwtYWN0aW9ucz5cclxuICAgICAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cclxuICAgICAgICAgICAgICAgIDxmZC10b29sYmFyIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgW2NsZWFyQm9yZGVyXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIHRpdGxlPVwiQ2xvc2VcIiAoY2xpY2spPVwib25DbG9zZUVkaXRIb21lKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzYXAtaWNvbi0tZGVjbGluZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cclxuICAgICAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtbGF5b3V0LWFjdGlvbnM+XHJcbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtaGVhZGVyPlxyXG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtY29udGVudD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICBzdGFja0NvbnRlbnQgPyByZW5kZXJUYWJzU3RhY2tlZCA6IHJlbmRlclRhYnM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGFwcFRpbGVHcm91cHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQ29udGVudDogc3RhY2tDb250ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0SG9tZTogZWRpdEhvbWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtY29udGVudD5cclxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWZvb3Rlcj5cclxuICAgICAgICAgICAgPGRpdiBmZC1iYXIgYmFyRGVzaWduPVwiZm9vdGVyXCIgKm5nSWY9XCJlZGl0SG9tZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTYXZlQW5kQ2xvc2UnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkV4aXRFZGl0SG9tZShhcHBUaWxlR3JvdXBzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1mb290ZXI+XHJcbiAgICA8L2ZkLWR5bmFtaWMtcGFnZT5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvYWRpbmdUcGw+XHJcbiAgICA8YnN1LW1hc2s+PC9ic3UtbWFzaz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmVuZGVyVGFicyBsZXQtYXBwVGlsZUdyb3VwcyBsZXQtc3RhY2tDb250ZW50PVwic3RhY2tDb250ZW50XCIgbGV0LWVkaXRIb21lPVwiZWRpdEhvbWVcIj5cclxuICAgIDxmZC10YWItbGlzdFxyXG4gICAgICAgIGNsYXNzPVwidGlsZS10YWJzXCJcclxuICAgICAgICBbc2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgICAgICBbY29sbGFwc2VPdmVyZmxvd109XCJ0cnVlXCJcclxuICAgICAgICBbZXhwYW5kT3ZlcmZsb3dUZXh0XT1cIidNb3JlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwidmVydGljYWxcIlxyXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoYXBwVGlsZUdyb3VwcywgJGV2ZW50KVwiXHJcbiAgICAgICAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uU2VsZWN0ZWRUYWJDaGFuZ2UoJGV2ZW50LCBhcHBUaWxlR3JvdXBzKVwiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXBwVGlsZUdyb3VwIG9mIGFwcFRpbGVHcm91cHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IF90cmFja0J5SWRcIj5cclxuICAgICAgICAgICAgPGZkLXRhYlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0SG9tZSB8fCBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmZC10YWJzLS0nICsgZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZXhwYW5kZWRdPVwic2VsZWN0ZWRUYWJUaXRsZSA9PT0gKGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSB8IGJiYlRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQgW2lkXT1cImFwcFRpbGVHcm91cC5JZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckdyb3VwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogYXBwVGlsZUdyb3VwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQ29udGVudDogc3RhY2tDb250ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRIb21lOiBlZGl0SG9tZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FwcFRpbGVTdWJHcm91cDogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxyXG4gICAgICAgICAgICA8L2ZkLXRhYj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZmQtdGFiLWxpc3Q+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcmVuZGVyVGFic1N0YWNrZWQgbGV0LWFwcFRpbGVHcm91cHMgbGV0LXN0YWNrQ29udGVudD1cInN0YWNrQ29udGVudFwiIGxldC1lZGl0SG9tZT1cImVkaXRIb21lXCI+XHJcbiAgICA8ZmQtdGFiLWxpc3RcclxuICAgICAgICBjbGFzcz1cInRpbGUtdGFic1wiXHJcbiAgICAgICAgW3NpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgW2NvbGxhcHNlT3ZlcmZsb3ddPVwidHJ1ZVwiXHJcbiAgICAgICAgW2V4cGFuZE92ZXJmbG93VGV4dF09XCInTW9yZScgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIFtzdGFja0NvbnRlbnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW21heENvbnRlbnRIZWlnaHRdPVwic3RhY2tDb250ZW50ID8gJ2NhbGMoOTl2aCAtIDIuNzVyZW0gLSA0NHB4KScgOiAnY2FsYygxMDB2aCAtIDQ0cHgpJ1wiXHJcbiAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwidmVydGljYWxcIlxyXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoYXBwVGlsZUdyb3VwcywgJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXBwVGlsZUdyb3VwIG9mIGFwcFRpbGVHcm91cHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IF90cmFja0J5SWRcIj5cclxuICAgICAgICAgICAgPGZkLXRhYlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0SG9tZSB8fCBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmZC10YWJzLS0nICsgZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICBbY291bnRdPVwiYXBwVGlsZUdyb3VwLiRDaGlsZHJlbj8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1jb250ZW50IFtpZF09XCJhcHBUaWxlR3JvdXAuSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJHcm91cDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGFwcFRpbGVHcm91cCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0NvbnRlbnQ6IHN0YWNrQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0SG9tZTogZWRpdEhvbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBcHBUaWxlU3ViR3JvdXA6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtY29udGVudD5cclxuICAgICAgICAgICAgPC9mZC10YWI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2ZkLXRhYi1saXN0PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGVcclxuICAgICNyZW5kZXJHcm91cFxyXG4gICAgbGV0LWFwcFRpbGVHcm91cFxyXG4gICAgbGV0LXN0YWNrQ29udGVudD1cInN0YWNrQ29udGVudFwiXHJcbiAgICBsZXQtZWRpdEhvbWU9XCJlZGl0SG9tZVwiXHJcbiAgICBsZXQtaXNBcHBUaWxlU3ViR3JvdXA9XCJpc0FwcFRpbGVTdWJHcm91cFwiXHJcbj5cclxuICAgIDxidC10aWxlcy12aWV3ZXItZ3JvdXBcclxuICAgICAgICBbYXBwVGlsZUdyb3VwXT1cImFwcFRpbGVHcm91cFwiXHJcbiAgICAgICAgW2VkaXRIb21lXT1cImVkaXRIb21lXCJcclxuICAgICAgICBbc3RhY2tDb250ZW50XT1cInN0YWNrQ29udGVudFwiXHJcbiAgICAgICAgW2lzQXBwVGlsZVN1Ykdyb3VwXT1cImlzQXBwVGlsZVN1Ykdyb3VwXCJcclxuICAgICAgICAodGlsZXNEcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCJcclxuICAgICAgICAocmVuYW1lQXBwVGlsZUNsaWNrKT1cInJlbmFtZUFwcFRpbGVDbGljay5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChoaWRlQXBwVGlsZUNsaWNrKT1cImhpZGVBcHBUaWxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAocmVzZXRHcm91cCk9XCJyZXNldEdyb3VwLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGRlbGV0ZUdyb3VwKT1cImRlbGV0ZUdyb3VwLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHRvZ2dsZUdyb3VwKT1cInRvZ2dsZUdyb3VwLmVtaXQoJGV2ZW50KVwiXHJcbiAgICA+PC9idC10aWxlcy12aWV3ZXItZ3JvdXA+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
|
|
2
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { takeUntil, map, distinctUntilChanged, withLatestFrom } from 'rxjs/operators';
|
|
4
|
+
import { BaseComponent } from 'barsa-novin-ray-core';
|
|
5
|
+
import { TilesViewerService } from '../tiles-viewer.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "barsa-novin-ray-core";
|
|
8
|
+
import * as i2 from "../tiles.service";
|
|
9
|
+
import * as i3 from "../tiles-viewer.service";
|
|
10
|
+
import * as i4 from "../tiles-viewer/tiles-viewer.component";
|
|
11
|
+
import * as i5 from "@angular/common";
|
|
12
|
+
export class TilesViewerContainerComponent extends BaseComponent {
|
|
13
|
+
constructor(_portalService, _tilesService, _tilesViewerService) {
|
|
14
|
+
super();
|
|
15
|
+
this._portalService = _portalService;
|
|
16
|
+
this._tilesService = _tilesService;
|
|
17
|
+
this._tilesViewerService = _tilesViewerService;
|
|
18
|
+
this.changedOrder = false;
|
|
19
|
+
this.userStackContent = false;
|
|
20
|
+
this.initialStackContentValue = false;
|
|
21
|
+
this.firstSelected = false;
|
|
22
|
+
this.stackContent$ = this._portalService.userPortalSettings$.pipe(takeUntil(this._onDestroy$), map((settings) => settings?.TilesStackContent), distinctUntilChanged());
|
|
23
|
+
this.stackContent$.subscribe((stackContent) => {
|
|
24
|
+
this.initialStackContentValue = this.userStackContent = stackContent;
|
|
25
|
+
if (stackContent) {
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
super.ngOnInit();
|
|
31
|
+
this.viewLoading$ = this._tilesViewerService.viewLoading$;
|
|
32
|
+
this.deviceSize$ = this._portalService.deviceSize$;
|
|
33
|
+
this.editHome$ = this._tilesService.editHome$;
|
|
34
|
+
this.appTileGroups$ = this._tilesService.homeAppTileGroups$;
|
|
35
|
+
this.appTileGroups$.pipe(withLatestFrom(this.stackContent$)).subscribe(([tiles, stackContent]) => {
|
|
36
|
+
if (tiles && stackContent) {
|
|
37
|
+
tiles.forEach((c) => {
|
|
38
|
+
this._tilesService.loadAppTileGroups(c);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
ngOnDestroy() {
|
|
44
|
+
super.ngOnDestroy();
|
|
45
|
+
this._tilesService.setEditHome(false);
|
|
46
|
+
}
|
|
47
|
+
onSelectedTabChange(e) {
|
|
48
|
+
const { selectedTab, appTileGroups: appGroups, tabPanels } = e;
|
|
49
|
+
const appTileGroupTitle = selectedTab.title;
|
|
50
|
+
let appTileGroup;
|
|
51
|
+
if (!this.firstSelected) {
|
|
52
|
+
this.firstSelected = true;
|
|
53
|
+
const lastSelectedAppGroupId = this._tilesViewerService.selectedAppGroupId;
|
|
54
|
+
if (lastSelectedAppGroupId) {
|
|
55
|
+
appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
|
|
56
|
+
if (appTileGroup) {
|
|
57
|
+
const lastTab = tabPanels.find((c) => c.title === appTileGroup?.navigatorTitle);
|
|
58
|
+
if (lastTab) {
|
|
59
|
+
appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
|
|
60
|
+
lastTab.open(true);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (!appTileGroup) {
|
|
66
|
+
appTileGroup = appGroups.find((c) => c.navigatorTitle === appTileGroupTitle);
|
|
67
|
+
}
|
|
68
|
+
if (appTileGroup) {
|
|
69
|
+
this._tilesViewerService.setSelectedTab(appTileGroup);
|
|
70
|
+
this._tilesViewerService.loadAppGroup(appTileGroup);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
onDropGroup(e) {
|
|
74
|
+
const { event, appTileGroups: appGroups } = e;
|
|
75
|
+
moveItemInArray(appGroups, event.previousIndex, event.currentIndex);
|
|
76
|
+
this.changedOrder = true;
|
|
77
|
+
// this.saveOrderAppTiles(allApps, group);
|
|
78
|
+
}
|
|
79
|
+
onDrop(e) {
|
|
80
|
+
const { appTileGroup: group, event } = e;
|
|
81
|
+
const previousContainer = event.previousContainer;
|
|
82
|
+
const container = event.container;
|
|
83
|
+
const containerIsTile = container.data.isTile;
|
|
84
|
+
const previousItems = previousContainer.data.items;
|
|
85
|
+
const containerItems = container.data.items;
|
|
86
|
+
const { previousIndex, currentIndex } = event;
|
|
87
|
+
if (previousContainer === container) {
|
|
88
|
+
moveItemInArray(previousItems, previousIndex, currentIndex);
|
|
89
|
+
if (containerIsTile) {
|
|
90
|
+
this._saveOrderAppTiles(group);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this._saveOrderActionLinks(group);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
transferArrayItem(previousItems, containerItems, previousIndex, currentIndex);
|
|
98
|
+
const appTileIdTransferedId = containerItems[currentIndex]?.AppTile?.Id ?? containerItems[currentIndex].Id;
|
|
99
|
+
if (containerIsTile) {
|
|
100
|
+
this._saveOrderActionLinks(group);
|
|
101
|
+
this._saveOrderAppTiles(group, appTileIdTransferedId);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this._saveOrderAppTiles(group);
|
|
105
|
+
this._saveOrderActionLinks(group, appTileIdTransferedId);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
onStackContentChanged(checked) {
|
|
110
|
+
this.userStackContent = checked;
|
|
111
|
+
}
|
|
112
|
+
onExitEditHome(appTileGroups) {
|
|
113
|
+
if (this.changedOrder) {
|
|
114
|
+
this._tilesViewerService.saveAppGroupOrders(appTileGroups);
|
|
115
|
+
this.changedOrder = false;
|
|
116
|
+
}
|
|
117
|
+
if (this.userStackContent !== this.initialStackContentValue) {
|
|
118
|
+
this._tilesService.saveTilesStackContent(this.userStackContent);
|
|
119
|
+
}
|
|
120
|
+
this._setEditHome(false);
|
|
121
|
+
}
|
|
122
|
+
onCloseEditHome() {
|
|
123
|
+
this._setEditHome(false);
|
|
124
|
+
}
|
|
125
|
+
onDelete(appTileGroup) {
|
|
126
|
+
this._tilesViewerService.deleteAppGroup(appTileGroup);
|
|
127
|
+
}
|
|
128
|
+
onToggleShowHide(appTileGroup) {
|
|
129
|
+
this._tilesViewerService.toggleAppGroupSettingVisible(appTileGroup);
|
|
130
|
+
}
|
|
131
|
+
onReset(appTileGroup) {
|
|
132
|
+
this._tilesViewerService.resetAppGroup(appTileGroup);
|
|
133
|
+
}
|
|
134
|
+
onHideAppTile(appTile) {
|
|
135
|
+
this._tilesViewerService.hideTile(appTile);
|
|
136
|
+
}
|
|
137
|
+
onRenameAppTile(appTile) {
|
|
138
|
+
this._tilesViewerService.openRenameForm(appTile);
|
|
139
|
+
}
|
|
140
|
+
_setEditHome(val) {
|
|
141
|
+
this._tilesService.setEditHome(val);
|
|
142
|
+
}
|
|
143
|
+
_saveOrderAppTiles(appTileGroup, appTileIdTransferedId = '0') {
|
|
144
|
+
const appTiles = appTileGroup.navigatorTiles.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
|
|
145
|
+
this._tilesService.saveOrderAppTiles(appTileGroup, appTiles, false, appTileIdTransferedId);
|
|
146
|
+
}
|
|
147
|
+
_saveOrderActionLinks(appTileGroup, appTileIdTransferedId = '0') {
|
|
148
|
+
const actionLinks = appTileGroup.navigatorActionLinks.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
|
|
149
|
+
this._tilesService.saveOrderAppTiles(appTileGroup, actionLinks, true, appTileIdTransferedId);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
TilesViewerContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerContainerComponent, deps: [{ token: i1.PortalService }, { token: i2.TilesService }, { token: i3.TilesViewerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
153
|
+
TilesViewerContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TilesViewerContainerComponent, selector: "bt-tiles-viewer-container", providers: [TilesViewerService], usesInheritance: true, ngImport: i0, template: "<bt-tiles-viewer\r\n [appTileGroups]=\"(appTileGroups$ | async)!!\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [editHome]=\"(editHome$ | async)!!\"\r\n [stackContent]=\"(stackContent$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n (stackContentChange)=\"onStackContentChanged($event)\"\r\n (closeEditHome)=\"onCloseEditHome()\"\r\n (save)=\"onExitEditHome($event)\"\r\n (listDropped)=\"onDropGroup($event)\"\r\n (tabChanged)=\"onSelectedTabChange($event)\"\r\n (toggleGroup)=\"onToggleShowHide($event)\"\r\n (resetGroup)=\"onReset($event)\"\r\n (deleteGroup)=\"onDelete($event)\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (hideAppTileClick)=\"onHideAppTile($event)\"\r\n (renameAppTileClick)=\"onRenameAppTile($event)\"\r\n></bt-tiles-viewer>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i4.TilesViewerComponent, selector: "bt-tiles-viewer", inputs: ["appTileGroups", "loading", "editHome", "stackContent", "deviceSize", "selectedAppGroupId", "DynamicComponents"], outputs: ["stackContentChange", "closeEditHome", "save", "listDropped", "tabChanged", "toggleGroup", "resetGroup", "deleteGroup", "hideAppTileClick", "renameAppTileClick", "tilesDropped"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerContainerComponent, decorators: [{
|
|
155
|
+
type: Component,
|
|
156
|
+
args: [{ selector: 'bt-tiles-viewer-container', providers: [TilesViewerService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<bt-tiles-viewer\r\n [appTileGroups]=\"(appTileGroups$ | async)!!\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [editHome]=\"(editHome$ | async)!!\"\r\n [stackContent]=\"(stackContent$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n (stackContentChange)=\"onStackContentChanged($event)\"\r\n (closeEditHome)=\"onCloseEditHome()\"\r\n (save)=\"onExitEditHome($event)\"\r\n (listDropped)=\"onDropGroup($event)\"\r\n (tabChanged)=\"onSelectedTabChange($event)\"\r\n (toggleGroup)=\"onToggleShowHide($event)\"\r\n (resetGroup)=\"onReset($event)\"\r\n (deleteGroup)=\"onDelete($event)\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (hideAppTileClick)=\"onHideAppTile($event)\"\r\n (renameAppTileClick)=\"onRenameAppTile($event)\"\r\n></bt-tiles-viewer>\r\n", styles: [":host{display:block}\n"] }]
|
|
157
|
+
}], ctorParameters: function () { return [{ type: i1.PortalService }, { type: i2.TilesService }, { type: i3.TilesViewerService }]; } });
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1jb250YWluZXIvdGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1jb250YWluZXIvdGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEYsT0FBTyxFQUFFLGFBQWEsRUFBNkQsTUFBTSxzQkFBc0IsQ0FBQztBQUVoSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7OztBQVM3RCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsYUFBYTtJQVk1RCxZQUNjLGNBQTZCLEVBQzdCLGFBQTJCLEVBQzNCLG1CQUF1QztRQUVqRCxLQUFLLEVBQUUsQ0FBQztRQUpFLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFWckQsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUdqQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQVFsQixJQUFJ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SyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFlBQWlDLEVBQUUsd0JBQWdDLEdBQUc7UUFDaEcsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ2xFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUNwRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7OzBIQXJLUSw2QkFBNkI7OEdBQTdCLDZCQUE2QixvREFIM0IsQ0FBQyxrQkFBa0IsQ0FBQyxpRENkbkMsK3lCQWtCQTsyRkREYSw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0ksMkJBQTJCLGFBRzFCLENBQUMsa0JBQWtCLENBQUMsbUJBQ2QsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXksIHRyYW5zZmVyQXJyYXlJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBtYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYlBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgTWV0YW9iamVjdERhdGFNb2RlbCwgUG9ydGFsU2VydmljZSwgQWJicmV2YXRpb25EZXZpY2VTaXplIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgVGlsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vdGlsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBUaWxlc1ZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi90aWxlcy12aWV3ZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnQtdGlsZXMtdmlld2VyLWNvbnRhaW5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbGVzLXZpZXdlci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RpbGVzLXZpZXdlci1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtUaWxlc1ZpZXdlclNlcnZpY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRpbGVzVmlld2VyQ29udGFpbmVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBhcHBUaWxlR3JvdXBzJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsW10+O1xuICAgIHZpZXdMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTxBYmJyZXZhdGlvbkRldmljZVNpemU+O1xuICAgIGVkaXRIb21lJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBjaGFuZ2VkT3JkZXIgPSBmYWxzZTtcbiAgICB1c2VyU3RhY2tDb250ZW50ID0gZmFsc2U7XG4gICAgaW5pdGlhbFN0YWNrQ29udGVudFZhbHVlID0gZmFsc2U7XG4gICAgdXNlclBvcnRhbFNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIHN0YWNrQ29udGVudCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgZmlyc3RTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF90aWxlc1NlcnZpY2U6IFRpbGVzU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF90aWxlc1ZpZXdlclNlcnZpY2U6IFRpbGVzVmlld2VyU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnN0YWNrQ29udGVudCQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLnVzZXJQb3J0YWxTZXR0aW5ncyQucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgIG1hcCgoc2V0dGluZ3MpID0+IHNldHRpbmdzPy5UaWxlc1N0YWNrQ29udGVudCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3RhY2tDb250ZW50JC5zdWJzY3JpYmUoKHN0YWNrQ29udGVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsU3RhY2tDb250ZW50VmFsdWUgPSB0aGlzLnVzZXJTdGFja0NvbnRlbnQgPSBzdGFja0NvbnRlbnQ7XG4gICAgICAgICAgICBpZiAoc3RhY2tDb250ZW50KSB7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnZpZXdMb2FkaW5nJCA9IHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS52aWV3TG9hZGluZyQ7XG5cbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQ7XG4gICAgICAgIHRoaXMuZWRpdEhvbWUkID0gdGhpcy5fdGlsZXNTZXJ2aWNlLmVkaXRIb21lJDtcbiAgICAgICAgdGhpcy5hcHBUaWxlR3JvdXBzJCA9IHRoaXMuX3RpbGVzU2VydmljZS5ob21lQXBwVGlsZUdyb3VwcyQ7XG4gICAgICAgIHRoaXMuYXBwVGlsZUdyb3VwcyQucGlwZSh3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0YWNrQ29udGVudCQpKS5zdWJzY3JpYmUoKFt0aWxlcywgc3RhY2tDb250ZW50XSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRpbGVzICYmIHN0YWNrQ29udGVudCkge1xuICAgICAgICAgICAgICAgIHRpbGVzLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLmxvYWRBcHBUaWxlR3JvdXBzKGMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zZXRFZGl0SG9tZShmYWxzZSk7XG4gICAgfVxuICAgIG9uU2VsZWN0ZWRUYWJDaGFuZ2UoZToge1xuICAgICAgICBzZWxlY3RlZFRhYjogVGFiUGFuZWxDb21wb25lbnQ7XG4gICAgICAgIHRhYlBhbmVsczogVGFiUGFuZWxDb21wb25lbnRbXTtcbiAgICAgICAgYXBwVGlsZUdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdO1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBzZWxlY3RlZFRhYiwgYXBwVGlsZUdyb3VwczogYXBwR3JvdXBzLCB0YWJQYW5lbHMgfSA9IGU7XG4gICAgICAgIGNvbnN0IGFwcFRpbGVHcm91cFRpdGxlID0gc2VsZWN0ZWRUYWIudGl0bGU7XG4gICAgICAgIGxldCBhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghdGhpcy5maXJzdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZpcnN0U2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgbGFzdFNlbGVjdGVkQXBwR3JvdXBJZCA9IHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5zZWxlY3RlZEFwcEdyb3VwSWQ7XG4gICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkQXBwR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgIGFwcFRpbGVHcm91cCA9IGFwcEdyb3Vwcy5maW5kKChjKSA9PiBjLklkID09PSBsYXN0U2VsZWN0ZWRBcHBHcm91cElkKTtcbiAgICAgICAgICAgICAgICBpZiAoYXBwVGlsZUdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RUYWIgPSB0YWJQYW5lbHMuZmluZCgoYykgPT4gYy50aXRsZSA9PT0gYXBwVGlsZUdyb3VwPy5uYXZpZ2F0b3JUaXRsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0VGFiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBUaWxlR3JvdXAgPSBhcHBHcm91cHMuZmluZCgoYykgPT4gYy5JZCA9PT0gbGFzdFNlbGVjdGVkQXBwR3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0VGFiLm9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhcHBUaWxlR3JvdXApIHtcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cCA9IGFwcEdyb3Vwcy5maW5kKChjKSA9PiBjLm5hdmlnYXRvclRpdGxlID09PSBhcHBUaWxlR3JvdXBUaXRsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwcFRpbGVHcm91cCkge1xuICAgICAgICAgICAgdGhpcy5fdGlsZXNWaWV3ZXJTZXJ2aWNlLnNldFNlbGVjdGVkVGFiKGFwcFRpbGVHcm91cCk7XG4gICAgICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2UubG9hZEFwcEdyb3VwKGFwcFRpbGVHcm91cCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25Ecm9wR3JvdXAoZTogeyBhcHBUaWxlR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107IGV2ZW50OiBDZGtEcmFnRHJvcDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+IH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBldmVudCwgYXBwVGlsZUdyb3VwczogYXBwR3JvdXBzIH0gPSBlO1xuXG4gICAgICAgIG1vdmVJdGVtSW5BcnJheShhcHBHcm91cHMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VkT3JkZXIgPSB0cnVlO1xuICAgICAgICAvLyB0aGlzLnNhdmVPcmRlckFwcFRpbGVzKGFsbEFwcHMsIGdyb3VwKTtcbiAgICB9XG4gICAgb25Ecm9wKGU6IHsgYXBwVGlsZUdyb3VwOyBldmVudDogQ2RrRHJhZ0Ryb3A8eyBpc1RpbGU6IGJvb2xlYW47IGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gfT4gfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGFwcFRpbGVHcm91cDogZ3JvdXAsIGV2ZW50IH0gPSBlO1xuICAgICAgICBjb25zdCBwcmV2aW91c0NvbnRhaW5lciA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyO1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBldmVudC5jb250YWluZXI7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcklzVGlsZSA9IGNvbnRhaW5lci5kYXRhLmlzVGlsZTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNJdGVtcyA9IHByZXZpb3VzQ29udGFpbmVyLmRhdGEuaXRlbXM7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckl0ZW1zID0gY29udGFpbmVyLmRhdGEuaXRlbXM7XG4gICAgICAgIGNvbnN0IHsgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4IH0gPSBldmVudDtcbiAgICAgICAgaWYgKHByZXZpb3VzQ29udGFpbmVyID09PSBjb250YWluZXIpIHtcbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShwcmV2aW91c0l0ZW1zLCBwcmV2aW91c0luZGV4LCBjdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcklzVGlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVPcmRlckFwcFRpbGVzKGdyb3VwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZU9yZGVyQWN0aW9uTGlua3MoZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0ocHJldmlvdXNJdGVtcywgY29udGFpbmVySXRlbXMsIHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICBjb25zdCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQgPSBjb250YWluZXJJdGVtc1tjdXJyZW50SW5kZXhdPy5BcHBUaWxlPy5JZCA/PyBjb250YWluZXJJdGVtc1tjdXJyZW50SW5kZXhdLklkO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcklzVGlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVPcmRlckFjdGlvbkxpbmtzKGdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlT3JkZXJBcHBUaWxlcyhncm91cCwgYXBwVGlsZUlkVHJhbnNmZXJlZElkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZU9yZGVyQXBwVGlsZXMoZ3JvdXApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVPcmRlckFjdGlvbkxpbmtzKGdyb3VwLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG9uU3RhY2tDb250ZW50Q2hhbmdlZChjaGVja2VkKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlclN0YWNrQ29udGVudCA9IGNoZWNrZWQ7XG4gICAgfVxuXG4gICAgb25FeGl0RWRpdEhvbWUoYXBwVGlsZUdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNoYW5nZWRPcmRlcikge1xuICAgICAgICAgICAgdGhpcy5fdGlsZXNWaWV3ZXJTZXJ2aWNlLnNhdmVBcHBHcm91cE9yZGVycyhhcHBUaWxlR3JvdXBzKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZE9yZGVyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudXNlclN0YWNrQ29udGVudCAhPT0gdGhpcy5pbml0aWFsU3RhY2tDb250ZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zYXZlVGlsZXNTdGFja0NvbnRlbnQodGhpcy51c2VyU3RhY2tDb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRFZGl0SG9tZShmYWxzZSk7XG4gICAgfVxuICAgIG9uQ2xvc2VFZGl0SG9tZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0RWRpdEhvbWUoZmFsc2UpO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2UuZGVsZXRlQXBwR3JvdXAoYXBwVGlsZUdyb3VwKTtcbiAgICB9XG5cbiAgICBvblRvZ2dsZVNob3dIaWRlKGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2UudG9nZ2xlQXBwR3JvdXBTZXR0aW5nVmlzaWJsZShhcHBUaWxlR3JvdXApO1xuICAgIH1cblxuICAgIG9uUmVzZXQoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5yZXNldEFwcEdyb3VwKGFwcFRpbGVHcm91cCk7XG4gICAgfVxuICAgIG9uSGlkZUFwcFRpbGUoYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2UuaGlkZVRpbGUoYXBwVGlsZSk7XG4gICAgfVxuICAgIG9uUmVuYW1lQXBwVGlsZShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5vcGVuUmVuYW1lRm9ybShhcHBUaWxlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0RWRpdEhvbWUodmFsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zZXRFZGl0SG9tZSh2YWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NhdmVPcmRlckFwcFRpbGVzKGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCwgYXBwVGlsZUlkVHJhbnNmZXJlZElkOiBzdHJpbmcgPSAnMCcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXBwVGlsZXMgPSBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGlsZXMubWFwKChhcHBUaWxlKSA9PlxuICAgICAgICAgICAgYXBwVGlsZS5BcHBUaWxlID8gYXBwVGlsZS5BcHBUaWxlLklkIDogYXBwVGlsZS5JZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2Uuc2F2ZU9yZGVyQXBwVGlsZXMoYXBwVGlsZUdyb3VwLCBhcHBUaWxlcywgZmFsc2UsIGFwcFRpbGVJZFRyYW5zZmVyZWRJZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2F2ZU9yZGVyQWN0aW9uTGlua3MoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQ6IHN0cmluZyA9ICcwJyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3Rpb25MaW5rcyA9IGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JBY3Rpb25MaW5rcy5tYXAoKGFwcFRpbGUpID0+XG4gICAgICAgICAgICBhcHBUaWxlLkFwcFRpbGUgPyBhcHBUaWxlLkFwcFRpbGUuSWQgOiBhcHBUaWxlLklkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zYXZlT3JkZXJBcHBUaWxlcyhhcHBUaWxlR3JvdXAsIGFjdGlvbkxpbmtzLCB0cnVlLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQpO1xuICAgIH1cbn1cbiIsIjxidC10aWxlcy12aWV3ZXJcclxuICAgIFthcHBUaWxlR3JvdXBzXT1cIihhcHBUaWxlR3JvdXBzJCB8IGFzeW5jKSEhXCJcclxuICAgIFtsb2FkaW5nXT1cIih2aWV3TG9hZGluZyQgfCBhc3luYykhIVwiXHJcbiAgICBbZWRpdEhvbWVdPVwiKGVkaXRIb21lJCB8IGFzeW5jKSEhXCJcclxuICAgIFtzdGFja0NvbnRlbnRdPVwiKHN0YWNrQ29udGVudCQgfCBhc3luYykhIVwiXHJcbiAgICBbZGV2aWNlU2l6ZV09XCIoZGV2aWNlU2l6ZSQgfCBhc3luYykhIVwiXHJcbiAgICAoc3RhY2tDb250ZW50Q2hhbmdlKT1cIm9uU3RhY2tDb250ZW50Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIChjbG9zZUVkaXRIb21lKT1cIm9uQ2xvc2VFZGl0SG9tZSgpXCJcclxuICAgIChzYXZlKT1cIm9uRXhpdEVkaXRIb21lKCRldmVudClcIlxyXG4gICAgKGxpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKCRldmVudClcIlxyXG4gICAgKHRhYkNoYW5nZWQpPVwib25TZWxlY3RlZFRhYkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICh0b2dnbGVHcm91cCk9XCJvblRvZ2dsZVNob3dIaWRlKCRldmVudClcIlxyXG4gICAgKHJlc2V0R3JvdXApPVwib25SZXNldCgkZXZlbnQpXCJcclxuICAgIChkZWxldGVHcm91cCk9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcclxuICAgICh0aWxlc0Ryb3BwZWQpPVwib25Ecm9wKCRldmVudClcIlxyXG4gICAgKGhpZGVBcHBUaWxlQ2xpY2spPVwib25IaWRlQXBwVGlsZSgkZXZlbnQpXCJcclxuICAgIChyZW5hbWVBcHBUaWxlQ2xpY2spPVwib25SZW5hbWVBcHBUaWxlKCRldmVudClcIlxyXG4+PC9idC10aWxlcy12aWV3ZXI+XHJcbiJdfQ==
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { BaseComponent } from 'barsa-novin-ray-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/cdk/drag-drop";
|
|
6
|
+
import * as i3 from "@fundamental-ngx/core/busy-indicator";
|
|
7
|
+
import * as i4 from "@fundamental-ngx/core/button";
|
|
8
|
+
import * as i5 from "@fundamental-ngx/core/icon";
|
|
9
|
+
import * as i6 from "@fundamental-ngx/core/layout-panel";
|
|
10
|
+
import * as i7 from "@fundamental-ngx/core/title";
|
|
11
|
+
import * as i8 from "@fundamental-ngx/core/panel";
|
|
12
|
+
import * as i9 from "@fundamental-ngx/core/tile";
|
|
13
|
+
import * as i10 from "@fundamental-ngx/core/toolbar";
|
|
14
|
+
import * as i11 from "../actions-link/actions-link.component";
|
|
15
|
+
import * as i12 from "../tile-renderer.directive";
|
|
16
|
+
import * as i13 from "barsa-novin-ray-core";
|
|
17
|
+
export class TilesViewerGroupComponent extends BaseComponent {
|
|
18
|
+
constructor() {
|
|
19
|
+
super();
|
|
20
|
+
this.tilesDropped = new EventEmitter();
|
|
21
|
+
this.hideAppTileClick = new EventEmitter();
|
|
22
|
+
this.renameAppTileClick = new EventEmitter();
|
|
23
|
+
this.toggleGroup = new EventEmitter();
|
|
24
|
+
this.resetGroup = new EventEmitter();
|
|
25
|
+
this.deleteGroup = new EventEmitter();
|
|
26
|
+
}
|
|
27
|
+
onDrop(appTileGroup, event) {
|
|
28
|
+
if (!this.editHome || appTileGroup.Locked) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.tilesDropped.emit({ appTileGroup, event });
|
|
32
|
+
}
|
|
33
|
+
onAppTileHideClick(appTile) {
|
|
34
|
+
this.hideAppTileClick.emit(appTile);
|
|
35
|
+
}
|
|
36
|
+
onAppTileRenameClick(appTile) {
|
|
37
|
+
this.renameAppTileClick.emit(appTile);
|
|
38
|
+
}
|
|
39
|
+
onDelete(appTileGroup) {
|
|
40
|
+
this.deleteGroup.emit(appTileGroup);
|
|
41
|
+
}
|
|
42
|
+
onToggleShowHide(appTileGroup) {
|
|
43
|
+
this.toggleGroup.emit(appTileGroup);
|
|
44
|
+
}
|
|
45
|
+
onReset(appTileGroup) {
|
|
46
|
+
this.resetGroup.emit(appTileGroup);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
TilesViewerGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
+
TilesViewerGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: { appTileGroup: "appTileGroup", stackContent: "stackContent", editHome: "editHome", isAppTileSubGroup: "isAppTileSubGroup" }, outputs: { tilesDropped: "tilesDropped", hideAppTileClick: "hideAppTileClick", renameAppTileClick: "renameAppTileClick", toggleGroup: "toggleGroup", resetGroup: "resetGroup", deleteGroup: "deleteGroup" }, usesInheritance: true, ngImport: i0, template: "<fd-layout-panel [fixed]=\"true\" [attr.editHome]=\"editHome\" cdkDrag [cdkDragDisabled]=\"!editHome || !stackContent\">\r\n <fd-layout-panel-header *ngIf=\"editHome || stackContent || isAppTileSubGroup\">\r\n <fd-layout-panel-head>\r\n <h2 fd-layout-panel-title>{{ appTileGroup.navigatorTitle }}</h2>\r\n </fd-layout-panel-head>\r\n <fd-layout-panel-actions *ngIf=\"editHome\" class=\"group-btns\">\r\n <fd-toolbar [shouldOverflow]=\"false\" [fdType]=\"'transparent'\" [clearBorder]=\"true\">\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [label]=\"!appTileGroup.navigatorVisible ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\r\n (click)=\"onToggleShowHide(appTileGroup)\"\r\n ></button>\r\n <button\r\n fd-button\r\n *ngIf=\"appTileGroup.Predefined && appTileGroup.$TileSettingChanged\"\r\n [label]=\"'Refresh' | bbbTranslate\"\r\n (click)=\"onReset(appTileGroup)\"\r\n ></button>\r\n <button\r\n *ngIf=\"!appTileGroup.Predefined\"\r\n fd-button\r\n [label]=\"'Delete' | bbbTranslate\"\r\n [fdType]=\"'negative'\"\r\n (click)=\"onDelete(appTileGroup)\"\r\n ></button>\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n </fd-layout-panel-header>\r\n <fd-layout-panel-body [bleed]=\"!stackContent\">\r\n <div\r\n class=\"tile-wrapper\"\r\n fd-panel-content\r\n #tiles=\"cdkDropList\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListConnectedTo]=\"actionLinks\"\r\n [cdkDropListData]=\"{\r\n isTile: true,\r\n items: appTileGroup.navigatorTiles || []\r\n }\"\r\n >\r\n <ng-container *ngIf=\"!editHome\">\r\n <fd-busy-indicator fd-title *ngIf=\"!appTileGroup.$TilesLoaded\" [loading]=\"true\"></fd-busy-indicator>\r\n\r\n <h5 fd-title *ngIf=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"></h5>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let appTile of appTileGroup.navigatorTiles; let k = index\"\r\n [class.edit-home]=\"editHome\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!editHome || appTileGroup.Locked\"\r\n [dynamicCommand]=\"appTile.DynamicCommand\"\r\n [enableCommand]=\"!editHome && appTile.Component\"\r\n tileRenderer\r\n [data]=\"appTile\"\r\n [editHome]=\"editHome\"\r\n [component]=\"appTile.Component\"\r\n (hideClick)=\"onAppTileHideClick(appTile)\"\r\n (renameClick)=\"onAppTileRenameClick(appTile)\"\r\n ></div>\r\n <fd-tile class=\"add-tile\" *ngIf=\"editHome\" [routerLink]=\"['/home/appfinder']\">\r\n <div>\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n </div>\r\n </fd-tile>\r\n </div>\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<bt-actions-link\r\n [class.actions-link-edit-home]=\"editHome\"\r\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\r\n [editHome]=\"editHome\"\r\n [style.min-height]=\"editHome ? '4rem' : 'auto'\"\r\n cdkDropList\r\n #actionLinks=\"cdkDropList\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListConnectedTo]=\"tiles\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListData]=\"{\r\n isTile: false,\r\n items: appTileGroup.navigatorActionLinks || []\r\n }\"\r\n>\r\n</bt-actions-link>\r\n<ng-container *ngFor=\"let appTileSubGroup of appTileGroup.$Children\">\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileSubGroup\"\r\n [editHome]=\"editHome\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"true\"\r\n (tilesDropped)=\"tilesDropped.emit($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-tiles-viewer-group>\r\n</ng-container>\r\n", styles: [":host{display:block}fd-layout-panel{margin-top:1rem;box-shadow:none}fd-layout-panel fd-layout-panel-body{padding:0}fd-layout-panel[editHome=false]{background:transparent}::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}::ng-deep .fd-panel__content{border-bottom:none;padding:1px}.tile-wrapper{--gap: 12px;display:inline-flex;flex-wrap:wrap}.tile-wrapper ::ng-deep .barsa-tile{margin:10px}.actions-link-edit-home{background-color:var(--sapGroup_ContentBackground, #fff);border-color:var(--sapGroup_ContentBorderColor, #d9d9d9);border-width:var(--sapElement_BorderWidth, .0625rem);border-style:solid}.add-tile{background-color:transparent!important}.add-tile ::ng-deep div{background-color:transparent!important;margin:10px 0}.add-tile div:first-child{display:flex;align-items:center;justify-content:center;height:100%;width:100%}.add-tile fd-icon{font-size:1.5rem;color:#3c4043}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i3.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i6.LayoutPanelComponent, selector: "fd-layout-panel", inputs: ["backgroundImage"] }, { kind: "component", type: i6.LayoutPanelHeaderComponent, selector: "fd-layout-panel-header" }, { kind: "component", type: i6.LayoutPanelHeadComponent, selector: "fd-layout-panel-head" }, { kind: "directive", type: i6.LayoutPanelTitleDirective, selector: "[fd-layout-panel-title]" }, { kind: "component", type: i6.LayoutPanelActionsComponent, selector: "fd-layout-panel-actions" }, { kind: "component", type: i6.LayoutPanelBodyComponent, selector: "fd-layout-panel-body", inputs: ["bleed"] }, { kind: "component", type: i7.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i8.PanelContentDirective, selector: "[fd-panel-content]", inputs: ["height", "minHeight", "maxHeight", "ariaLabel", "ariaLabelledBy", "role", "id"] }, { kind: "component", type: i9.TileComponent, selector: "fd-tile", inputs: ["class", "size", "double", "type", "action", "clickable"], outputs: ["tileClick"] }, { kind: "component", type: i10.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i10.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i11.ActionsLinkComponent, selector: "bt-actions-link", inputs: ["actionsLink", "editHome"] }, { kind: "component", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "editHome", "isAppTileSubGroup"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "directive", type: i12.TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "editHome"], outputs: ["hideClick", "renameClick"] }, { kind: "pipe", type: i13.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TilesViewerGroupComponent, decorators: [{
|
|
52
|
+
type: Component,
|
|
53
|
+
args: [{ selector: 'bt-tiles-viewer-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-layout-panel [fixed]=\"true\" [attr.editHome]=\"editHome\" cdkDrag [cdkDragDisabled]=\"!editHome || !stackContent\">\r\n <fd-layout-panel-header *ngIf=\"editHome || stackContent || isAppTileSubGroup\">\r\n <fd-layout-panel-head>\r\n <h2 fd-layout-panel-title>{{ appTileGroup.navigatorTitle }}</h2>\r\n </fd-layout-panel-head>\r\n <fd-layout-panel-actions *ngIf=\"editHome\" class=\"group-btns\">\r\n <fd-toolbar [shouldOverflow]=\"false\" [fdType]=\"'transparent'\" [clearBorder]=\"true\">\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [label]=\"!appTileGroup.navigatorVisible ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\r\n (click)=\"onToggleShowHide(appTileGroup)\"\r\n ></button>\r\n <button\r\n fd-button\r\n *ngIf=\"appTileGroup.Predefined && appTileGroup.$TileSettingChanged\"\r\n [label]=\"'Refresh' | bbbTranslate\"\r\n (click)=\"onReset(appTileGroup)\"\r\n ></button>\r\n <button\r\n *ngIf=\"!appTileGroup.Predefined\"\r\n fd-button\r\n [label]=\"'Delete' | bbbTranslate\"\r\n [fdType]=\"'negative'\"\r\n (click)=\"onDelete(appTileGroup)\"\r\n ></button>\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n </fd-layout-panel-header>\r\n <fd-layout-panel-body [bleed]=\"!stackContent\">\r\n <div\r\n class=\"tile-wrapper\"\r\n fd-panel-content\r\n #tiles=\"cdkDropList\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListConnectedTo]=\"actionLinks\"\r\n [cdkDropListData]=\"{\r\n isTile: true,\r\n items: appTileGroup.navigatorTiles || []\r\n }\"\r\n >\r\n <ng-container *ngIf=\"!editHome\">\r\n <fd-busy-indicator fd-title *ngIf=\"!appTileGroup.$TilesLoaded\" [loading]=\"true\"></fd-busy-indicator>\r\n\r\n <h5 fd-title *ngIf=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"></h5>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let appTile of appTileGroup.navigatorTiles; let k = index\"\r\n [class.edit-home]=\"editHome\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!editHome || appTileGroup.Locked\"\r\n [dynamicCommand]=\"appTile.DynamicCommand\"\r\n [enableCommand]=\"!editHome && appTile.Component\"\r\n tileRenderer\r\n [data]=\"appTile\"\r\n [editHome]=\"editHome\"\r\n [component]=\"appTile.Component\"\r\n (hideClick)=\"onAppTileHideClick(appTile)\"\r\n (renameClick)=\"onAppTileRenameClick(appTile)\"\r\n ></div>\r\n <fd-tile class=\"add-tile\" *ngIf=\"editHome\" [routerLink]=\"['/home/appfinder']\">\r\n <div>\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n </div>\r\n </fd-tile>\r\n </div>\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<bt-actions-link\r\n [class.actions-link-edit-home]=\"editHome\"\r\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\r\n [editHome]=\"editHome\"\r\n [style.min-height]=\"editHome ? '4rem' : 'auto'\"\r\n cdkDropList\r\n #actionLinks=\"cdkDropList\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListConnectedTo]=\"tiles\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListData]=\"{\r\n isTile: false,\r\n items: appTileGroup.navigatorActionLinks || []\r\n }\"\r\n>\r\n</bt-actions-link>\r\n<ng-container *ngFor=\"let appTileSubGroup of appTileGroup.$Children\">\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileSubGroup\"\r\n [editHome]=\"editHome\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"true\"\r\n (tilesDropped)=\"tilesDropped.emit($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-tiles-viewer-group>\r\n</ng-container>\r\n", styles: [":host{display:block}fd-layout-panel{margin-top:1rem;box-shadow:none}fd-layout-panel fd-layout-panel-body{padding:0}fd-layout-panel[editHome=false]{background:transparent}::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}::ng-deep .fd-panel__content{border-bottom:none;padding:1px}.tile-wrapper{--gap: 12px;display:inline-flex;flex-wrap:wrap}.tile-wrapper ::ng-deep .barsa-tile{margin:10px}.actions-link-edit-home{background-color:var(--sapGroup_ContentBackground, #fff);border-color:var(--sapGroup_ContentBorderColor, #d9d9d9);border-width:var(--sapElement_BorderWidth, .0625rem);border-style:solid}.add-tile{background-color:transparent!important}.add-tile ::ng-deep div{background-color:transparent!important;margin:10px 0}.add-tile div:first-child{display:flex;align-items:center;justify-content:center;height:100%;width:100%}.add-tile fd-icon{font-size:1.5rem;color:#3c4043}\n"] }]
|
|
54
|
+
}], ctorParameters: function () { return []; }, propDecorators: { appTileGroup: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], stackContent: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], editHome: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], isAppTileSubGroup: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], tilesDropped: [{
|
|
63
|
+
type: Output
|
|
64
|
+
}], hideAppTileClick: [{
|
|
65
|
+
type: Output
|
|
66
|
+
}], renameAppTileClick: [{
|
|
67
|
+
type: Output
|
|
68
|
+
}], toggleGroup: [{
|
|
69
|
+
type: Output
|
|
70
|
+
}], resetGroup: [{
|
|
71
|
+
type: Output
|
|
72
|
+
}], deleteGroup: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMtdmlld2VyLWdyb3VwL3RpbGVzLXZpZXdlci1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1ncm91cC90aWxlcy12aWV3ZXItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQUUsYUFBYSxFQUF1QixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFRMUUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGFBQWE7SUFleEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQVZGLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBR3JDLENBQUM7UUFDSyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUMzRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUM3RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3RELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNyRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO0lBR2hFLENBQUM7SUFFRCxNQUFNLENBQ0YsWUFBaUMsRUFDakMsS0FBcUU7UUFFckUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN2QyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxPQUE0QjtRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxPQUE0QjtRQUM3QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxRQUFRLENBQUMsWUFBaUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQWlDO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxPQUFPLENBQUMsWUFBaUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7c0hBNUNRLHlCQUF5QjswR0FBekIseUJBQXlCLHVhQ1h0Qyw0bEpBcUdBLCtrSUQxRmEseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0ksdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNOzBFQUd0QyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFJRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2J0LXRpbGVzLXZpZXdlci1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbGVzLXZpZXdlci1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGlsZXMtdmlld2VyLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGlsZXNWaWV3ZXJHcm91cENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSBzdGFja0NvbnRlbnQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZWRpdEhvbWU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNBcHBUaWxlU3ViR3JvdXA6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgdGlsZXNEcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICAgICAgZXZlbnQ6IENka0RyYWdEcm9wPHsgaXNUaWxlOiBib29sZWFuOyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdIH0+O1xuICAgIH0+KCk7XG4gICAgQE91dHB1dCgpIGhpZGVBcHBUaWxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHJlbmFtZUFwcFRpbGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgdG9nZ2xlR3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHJlc2V0R3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIGRlbGV0ZUdyb3VwID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG9uRHJvcChcbiAgICAgICAgYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgICAgICBldmVudDogQ2RrRHJhZ0Ryb3A8eyBpc1RpbGU6IGJvb2xlYW47IGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gfT5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRIb21lIHx8IGFwcFRpbGVHcm91cC5Mb2NrZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbGVzRHJvcHBlZC5lbWl0KHsgYXBwVGlsZUdyb3VwLCBldmVudCB9KTtcbiAgICB9XG4gICAgb25BcHBUaWxlSGlkZUNsaWNrKGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRlQXBwVGlsZUNsaWNrLmVtaXQoYXBwVGlsZSk7XG4gICAgfVxuICAgIG9uQXBwVGlsZVJlbmFtZUNsaWNrKGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5hbWVBcHBUaWxlQ2xpY2suZW1pdChhcHBUaWxlKTtcbiAgICB9XG4gICAgb25EZWxldGUoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVsZXRlR3JvdXAuZW1pdChhcHBUaWxlR3JvdXApO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlU2hvd0hpZGUoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMudG9nZ2xlR3JvdXAuZW1pdChhcHBUaWxlR3JvdXApO1xuICAgIH1cblxuICAgIG9uUmVzZXQoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRHcm91cC5lbWl0KGFwcFRpbGVHcm91cCk7XG4gICAgfVxufVxuIiwiPGZkLWxheW91dC1wYW5lbCBbZml4ZWRdPVwidHJ1ZVwiIFthdHRyLmVkaXRIb21lXT1cImVkaXRIb21lXCIgY2RrRHJhZyBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFlZGl0SG9tZSB8fCAhc3RhY2tDb250ZW50XCI+XHJcbiAgICA8ZmQtbGF5b3V0LXBhbmVsLWhlYWRlciAqbmdJZj1cImVkaXRIb21lIHx8IHN0YWNrQ29udGVudCB8fCBpc0FwcFRpbGVTdWJHcm91cFwiPlxyXG4gICAgICAgIDxmZC1sYXlvdXQtcGFuZWwtaGVhZD5cclxuICAgICAgICAgICAgPGgyIGZkLWxheW91dC1wYW5lbC10aXRsZT57eyBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUgfX08L2gyPlxyXG4gICAgICAgIDwvZmQtbGF5b3V0LXBhbmVsLWhlYWQ+XHJcbiAgICAgICAgPGZkLWxheW91dC1wYW5lbC1hY3Rpb25zICpuZ0lmPVwiZWRpdEhvbWVcIiBjbGFzcz1cImdyb3VwLWJ0bnNcIj5cclxuICAgICAgICAgICAgPGZkLXRvb2xiYXIgW3Nob3VsZE92ZXJmbG93XT1cImZhbHNlXCIgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCIgW2NsZWFyQm9yZGVyXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiIWFwcFRpbGVHcm91cC5uYXZpZ2F0b3JWaXNpYmxlID8gKCdTaG93JyB8IGJiYlRyYW5zbGF0ZSkgOiAoJ0hpZGUnIHwgYmJiVHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlU2hvd0hpZGUoYXBwVGlsZUdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhcHBUaWxlR3JvdXAuUHJlZGVmaW5lZCAmJiBhcHBUaWxlR3JvdXAuJFRpbGVTZXR0aW5nQ2hhbmdlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidSZWZyZXNoJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVzZXQoYXBwVGlsZUdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYXBwVGlsZUdyb3VwLlByZWRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInRGVsZXRlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCInbmVnYXRpdmUnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoYXBwVGlsZUdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cclxuICAgICAgICA8L2ZkLWxheW91dC1wYW5lbC1hY3Rpb25zPlxyXG4gICAgPC9mZC1sYXlvdXQtcGFuZWwtaGVhZGVyPlxyXG4gICAgPGZkLWxheW91dC1wYW5lbC1ib2R5IFtibGVlZF09XCIhc3RhY2tDb250ZW50XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInRpbGUtd3JhcHBlclwiXHJcbiAgICAgICAgICAgIGZkLXBhbmVsLWNvbnRlbnRcclxuICAgICAgICAgICAgI3RpbGVzPVwiY2RrRHJvcExpc3RcIlxyXG4gICAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKGFwcFRpbGVHcm91cCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cImFjdGlvbkxpbmtzXCJcclxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJ7XHJcbiAgICAgICAgICAgICAgICBpc1RpbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBpdGVtczogYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpbGVzIHx8IFtdXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlZGl0SG9tZVwiPlxyXG4gICAgICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yIGZkLXRpdGxlICpuZ0lmPVwiIWFwcFRpbGVHcm91cC4kVGlsZXNMb2FkZWRcIiBbbG9hZGluZ109XCJ0cnVlXCI+PC9mZC1idXN5LWluZGljYXRvcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8aDUgZmQtdGl0bGUgKm5nSWY9XCIhYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpbGVzLmxlbmd0aCAmJiBhcHBUaWxlR3JvdXAuJFRpbGVzTG9hZGVkXCI+PC9oNT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhcHBUaWxlIG9mIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaWxlczsgbGV0IGsgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZWRpdC1ob21lXT1cImVkaXRIb21lXCJcclxuICAgICAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWVkaXRIb21lIHx8IGFwcFRpbGVHcm91cC5Mb2NrZWRcIlxyXG4gICAgICAgICAgICAgICAgW2R5bmFtaWNDb21tYW5kXT1cImFwcFRpbGUuRHluYW1pY0NvbW1hbmRcIlxyXG4gICAgICAgICAgICAgICAgW2VuYWJsZUNvbW1hbmRdPVwiIWVkaXRIb21lICYmIGFwcFRpbGUuQ29tcG9uZW50XCJcclxuICAgICAgICAgICAgICAgIHRpbGVSZW5kZXJlclxyXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwiYXBwVGlsZVwiXHJcbiAgICAgICAgICAgICAgICBbZWRpdEhvbWVdPVwiZWRpdEhvbWVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbXBvbmVudF09XCJhcHBUaWxlLkNvbXBvbmVudFwiXHJcbiAgICAgICAgICAgICAgICAoaGlkZUNsaWNrKT1cIm9uQXBwVGlsZUhpZGVDbGljayhhcHBUaWxlKVwiXHJcbiAgICAgICAgICAgICAgICAocmVuYW1lQ2xpY2spPVwib25BcHBUaWxlUmVuYW1lQ2xpY2soYXBwVGlsZSlcIlxyXG4gICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgIDxmZC10aWxlIGNsYXNzPVwiYWRkLXRpbGVcIiAqbmdJZj1cImVkaXRIb21lXCIgW3JvdXRlckxpbmtdPVwiWycvaG9tZS9hcHBmaW5kZXInXVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cImFkZFwiPjwvZmQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2ZkLXRpbGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2ZkLWxheW91dC1wYW5lbC1ib2R5PlxyXG48L2ZkLWxheW91dC1wYW5lbD5cclxuXHJcbjxidC1hY3Rpb25zLWxpbmtcclxuICAgIFtjbGFzcy5hY3Rpb25zLWxpbmstZWRpdC1ob21lXT1cImVkaXRIb21lXCJcclxuICAgIFthY3Rpb25zTGlua109XCJhcHBUaWxlR3JvdXAubmF2aWdhdG9yQWN0aW9uTGlua3NcIlxyXG4gICAgW2VkaXRIb21lXT1cImVkaXRIb21lXCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cImVkaXRIb21lID8gJzRyZW0nIDogJ2F1dG8nXCJcclxuICAgIGNka0Ryb3BMaXN0XHJcbiAgICAjYWN0aW9uTGlua3M9XCJjZGtEcm9wTGlzdFwiXHJcbiAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJ0aWxlc1wiXHJcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcChhcHBUaWxlR3JvdXAsICRldmVudClcIlxyXG4gICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJ7XHJcbiAgICAgICAgaXNUaWxlOiBmYWxzZSxcclxuICAgICAgICBpdGVtczogYXBwVGlsZUdyb3VwLm5hdmlnYXRvckFjdGlvbkxpbmtzIHx8IFtdXHJcbiAgICB9XCJcclxuPlxyXG48L2J0LWFjdGlvbnMtbGluaz5cclxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXBwVGlsZVN1Ykdyb3VwIG9mIGFwcFRpbGVHcm91cC4kQ2hpbGRyZW5cIj5cclxuICAgIDxidC10aWxlcy12aWV3ZXItZ3JvdXBcclxuICAgICAgICBbYXBwVGlsZUdyb3VwXT1cImFwcFRpbGVTdWJHcm91cFwiXHJcbiAgICAgICAgW2VkaXRIb21lXT1cImVkaXRIb21lXCJcclxuICAgICAgICBbc3RhY2tDb250ZW50XT1cInN0YWNrQ29udGVudFwiXHJcbiAgICAgICAgW2lzQXBwVGlsZVN1Ykdyb3VwXT1cInRydWVcIlxyXG4gICAgICAgICh0aWxlc0Ryb3BwZWQpPVwidGlsZXNEcm9wcGVkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHJlbmFtZUFwcFRpbGVDbGljayk9XCJyZW5hbWVBcHBUaWxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoaGlkZUFwcFRpbGVDbGljayk9XCJoaWRlQXBwVGlsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHJlc2V0R3JvdXApPVwicmVzZXRHcm91cC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChkZWxldGVHcm91cCk9XCJkZWxldGVHcm91cC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICh0b2dnbGVHcm91cCk9XCJ0b2dnbGVHcm91cC5lbWl0KCRldmVudClcIlxyXG4gICAgPjwvYnQtdGlsZXMtdmlld2VyLWdyb3VwPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
|