barsa-tiles 1.0.455 → 2.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.
Files changed (172) hide show
  1. package/{esm2020 → esm2022}/barsa-tiles.mjs +4 -4
  2. package/esm2022/lib/action-item/action-item.component.mjs +17 -0
  3. package/{esm2020 → esm2022}/lib/action-links.pipe.mjs +16 -16
  4. package/esm2022/lib/actions-link/actions-link.component.mjs +41 -0
  5. package/esm2022/lib/app-finder/app-finder.component.mjs +52 -0
  6. package/esm2022/lib/app-finder-app-list/app-finder-app-list.component.mjs +39 -0
  7. package/esm2022/lib/app-finder-group/app-finder-group.component.mjs +41 -0
  8. package/esm2022/lib/app-finder.service.mjs +121 -0
  9. package/esm2022/lib/barsa-shellbar/barsa-shellbar.component.mjs +183 -0
  10. package/esm2022/lib/barsa-tiles.module.mjs +225 -0
  11. package/esm2022/lib/change-app-tile/change-app-tile.component.mjs +46 -0
  12. package/esm2022/lib/create-app-group/create-app-group.component.mjs +43 -0
  13. package/esm2022/lib/directives/emptylist.directive.mjs +36 -0
  14. package/esm2022/lib/feed-tile/feed-tile.component.mjs +31 -0
  15. package/{esm2020 → esm2022}/lib/footer-edit-tile/footer-edit-tile.component.mjs +13 -13
  16. package/esm2022/lib/footer-tile/footer-tile.component.mjs +27 -0
  17. package/esm2022/lib/form-app-finder/form-app-finder.component.mjs +95 -0
  18. package/esm2022/lib/form-tile/form-tile.component.mjs +34 -0
  19. package/esm2022/lib/logo-tile/logo-tile.component.mjs +23 -0
  20. package/{esm2020 → esm2022}/lib/micro-tile-chart-area/micro-tile-chart-area.component.mjs +40 -40
  21. package/{esm2020 → esm2022}/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.mjs +29 -29
  22. package/esm2022/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.mjs +26 -0
  23. package/{esm2020 → esm2022}/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.mjs +20 -20
  24. package/{esm2020 → esm2022}/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.mjs +31 -31
  25. package/{esm2020 → esm2022}/lib/micro-tile-chart-line/micro-tile-chart-line.component.mjs +32 -32
  26. package/{esm2020 → esm2022}/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.mjs +27 -27
  27. package/{esm2020 → esm2022}/lib/models/app-tile-footer-section.mjs +1 -1
  28. package/{esm2020 → esm2022}/lib/models/app-tile-footer.mjs +1 -1
  29. package/{esm2020 → esm2022}/lib/models/app-tile-group-pin.mjs +1 -1
  30. package/esm2022/lib/models/base-bt-tile-component.mjs +26 -0
  31. package/{esm2020 → esm2022}/lib/models/base-tile-component.mjs +58 -58
  32. package/{esm2020 → esm2022}/lib/models/base-tile-setting.mjs +1 -1
  33. package/{esm2020 → esm2022}/lib/models/feed-tile-setting.mjs +1 -1
  34. package/{esm2020 → esm2022}/lib/models/index.mjs +13 -13
  35. package/{esm2020 → esm2022}/lib/models/logo-tile-setting.mjs +1 -1
  36. package/{esm2020 → esm2022}/lib/models/micro-tile-chart-bullet-setting.mjs +1 -1
  37. package/{esm2020 → esm2022}/lib/models/news-tile-setting.mjs +1 -1
  38. package/{esm2020 → esm2022}/lib/models/numeric-tile-setting.mjs +1 -1
  39. package/{esm2020 → esm2022}/lib/models/profile-tile-setting.mjs +1 -1
  40. package/esm2022/lib/models/tile-setting.mjs +2 -0
  41. package/{esm2020 → esm2022}/lib/models/user-portal-settings.mjs +1 -1
  42. package/esm2022/lib/news-tile/news-tile.component.mjs +53 -0
  43. package/esm2022/lib/notification-group/notification-group.component.mjs +116 -0
  44. package/esm2022/lib/notification-group-header/notification-group-header.component.mjs +38 -0
  45. package/esm2022/lib/numeric-tile/numeric-tile.component.mjs +34 -0
  46. package/esm2022/lib/pin-tile/pin-tile.component.mjs +110 -0
  47. package/esm2022/lib/pipes/group-tiles.pipe.mjs +31 -0
  48. package/{esm2020 → esm2022}/lib/pipes/home-group.pipe.mjs +17 -17
  49. package/esm2022/lib/pipes/tile-home-filter.pipe.mjs +28 -0
  50. package/esm2022/lib/pipes/tile-prop.pipe.mjs +32 -0
  51. package/esm2022/lib/popover-app-finder/filter-apps-grouped.pipe.mjs +36 -0
  52. package/esm2022/lib/popover-app-finder/popover-app-finder.component.mjs +112 -0
  53. package/esm2022/lib/profile-tile/profile-tile.component.mjs +25 -0
  54. package/esm2022/lib/shellbar/shellbar.component.mjs +201 -0
  55. package/esm2022/lib/simple-tile/simple-tile.component.mjs +22 -0
  56. package/esm2022/lib/tile/tile.component.mjs +70 -0
  57. package/esm2022/lib/tile-renderer.directive.mjs +70 -0
  58. package/esm2022/lib/tile-style.directive.mjs +29 -0
  59. package/esm2022/lib/tiles-viewer/tiles-viewer.component.mjs +167 -0
  60. package/esm2022/lib/tiles-viewer-container/tiles-viewer-container.component.mjs +164 -0
  61. package/esm2022/lib/tiles-viewer-group/tiles-viewer-group.component.mjs +88 -0
  62. package/esm2022/lib/tiles-viewer.service.mjs +130 -0
  63. package/esm2022/lib/tiles.service.mjs +589 -0
  64. package/{esm2020 → esm2022}/public-api.mjs +46 -45
  65. package/fesm2022/barsa-tiles.mjs +3149 -0
  66. package/fesm2022/barsa-tiles.mjs.map +1 -0
  67. package/index.d.ts +5 -5
  68. package/lib/action-item/action-item.component.d.ts +6 -6
  69. package/lib/action-links.pipe.d.ts +7 -7
  70. package/lib/actions-link/actions-link.component.d.ts +17 -17
  71. package/lib/app-finder/app-finder.component.d.ts +24 -24
  72. package/lib/app-finder-app-list/app-finder-app-list.component.d.ts +20 -20
  73. package/lib/app-finder-group/app-finder-group.component.d.ts +14 -14
  74. package/lib/app-finder.service.d.ts +33 -33
  75. package/lib/barsa-shellbar/barsa-shellbar.component.d.ts +104 -97
  76. package/lib/barsa-tiles.module.d.ts +91 -86
  77. package/lib/change-app-tile/change-app-tile.component.d.ts +20 -20
  78. package/lib/create-app-group/create-app-group.component.d.ts +19 -19
  79. package/lib/directives/emptylist.directive.d.ts +14 -14
  80. package/lib/feed-tile/feed-tile.component.d.ts +11 -11
  81. package/lib/footer-edit-tile/footer-edit-tile.component.d.ts +6 -6
  82. package/lib/footer-tile/footer-tile.component.d.ts +11 -11
  83. package/lib/form-app-finder/form-app-finder.component.d.ts +38 -38
  84. package/lib/form-tile/form-tile.component.d.ts +24 -24
  85. package/lib/logo-tile/logo-tile.component.d.ts +7 -7
  86. package/lib/micro-tile-chart-area/micro-tile-chart-area.component.d.ts +8 -8
  87. package/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.d.ts +12 -12
  88. package/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.d.ts +16 -16
  89. package/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.d.ts +7 -7
  90. package/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.d.ts +8 -8
  91. package/lib/micro-tile-chart-line/micro-tile-chart-line.component.d.ts +8 -8
  92. package/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.d.ts +8 -8
  93. package/lib/models/app-tile-footer-section.d.ts +6 -6
  94. package/lib/models/app-tile-footer.d.ts +8 -8
  95. package/lib/models/app-tile-group-pin.d.ts +5 -5
  96. package/lib/models/base-bt-tile-component.d.ts +9 -9
  97. package/lib/models/base-tile-component.d.ts +26 -26
  98. package/lib/models/base-tile-setting.d.ts +5 -5
  99. package/lib/models/feed-tile-setting.d.ts +7 -7
  100. package/lib/models/index.d.ts +13 -13
  101. package/lib/models/logo-tile-setting.d.ts +6 -6
  102. package/lib/models/micro-tile-chart-bullet-setting.d.ts +10 -10
  103. package/lib/models/news-tile-setting.d.ts +4 -4
  104. package/lib/models/numeric-tile-setting.d.ts +9 -9
  105. package/lib/models/profile-tile-setting.d.ts +7 -7
  106. package/lib/models/tile-setting.d.ts +10 -10
  107. package/lib/models/user-portal-settings.d.ts +9 -9
  108. package/lib/news-tile/news-tile.component.d.ts +19 -19
  109. package/lib/notification-group/notification-group.component.d.ts +54 -55
  110. package/lib/notification-group-header/notification-group-header.component.d.ts +15 -15
  111. package/lib/numeric-tile/numeric-tile.component.d.ts +12 -12
  112. package/lib/pin-tile/pin-tile.component.d.ts +30 -30
  113. package/lib/pipes/group-tiles.pipe.d.ts +14 -14
  114. package/lib/pipes/home-group.pipe.d.ts +9 -9
  115. package/lib/pipes/tile-home-filter.pipe.d.ts +8 -8
  116. package/lib/pipes/tile-prop.pipe.d.ts +8 -8
  117. package/lib/popover-app-finder/filter-apps-grouped.pipe.d.ts +13 -0
  118. package/lib/popover-app-finder/popover-app-finder.component.d.ts +39 -0
  119. package/lib/profile-tile/profile-tile.component.d.ts +7 -7
  120. package/lib/shellbar/shellbar.component.d.ts +94 -94
  121. package/lib/simple-tile/simple-tile.component.d.ts +10 -10
  122. package/lib/tile/tile.component.d.ts +22 -20
  123. package/lib/tile-renderer.directive.d.ts +28 -28
  124. package/lib/tile-style.directive.d.ts +12 -0
  125. package/lib/tiles-viewer/tiles-viewer.component.d.ts +65 -63
  126. package/lib/tiles-viewer-container/tiles-viewer-container.component.d.ts +59 -57
  127. package/lib/tiles-viewer-group/tiles-viewer-group.component.d.ts +39 -39
  128. package/lib/tiles-viewer.service.d.ts +42 -42
  129. package/lib/tiles.service.d.ts +75 -75
  130. package/package.json +7 -13
  131. package/public-api.d.ts +42 -41
  132. package/esm2020/lib/action-item/action-item.component.mjs +0 -18
  133. package/esm2020/lib/actions-link/actions-link.component.mjs +0 -42
  134. package/esm2020/lib/app-finder/app-finder.component.mjs +0 -53
  135. package/esm2020/lib/app-finder-app-list/app-finder-app-list.component.mjs +0 -40
  136. package/esm2020/lib/app-finder-group/app-finder-group.component.mjs +0 -42
  137. package/esm2020/lib/app-finder.service.mjs +0 -121
  138. package/esm2020/lib/barsa-shellbar/barsa-shellbar.component.mjs +0 -166
  139. package/esm2020/lib/barsa-tiles.module.mjs +0 -206
  140. package/esm2020/lib/change-app-tile/change-app-tile.component.mjs +0 -47
  141. package/esm2020/lib/create-app-group/create-app-group.component.mjs +0 -44
  142. package/esm2020/lib/directives/emptylist.directive.mjs +0 -36
  143. package/esm2020/lib/feed-tile/feed-tile.component.mjs +0 -32
  144. package/esm2020/lib/footer-tile/footer-tile.component.mjs +0 -28
  145. package/esm2020/lib/form-app-finder/form-app-finder.component.mjs +0 -95
  146. package/esm2020/lib/form-tile/form-tile.component.mjs +0 -35
  147. package/esm2020/lib/logo-tile/logo-tile.component.mjs +0 -23
  148. package/esm2020/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.mjs +0 -27
  149. package/esm2020/lib/models/base-bt-tile-component.mjs +0 -30
  150. package/esm2020/lib/models/tile-setting.mjs +0 -2
  151. package/esm2020/lib/news-tile/news-tile.component.mjs +0 -54
  152. package/esm2020/lib/notification-group/notification-group.component.mjs +0 -116
  153. package/esm2020/lib/notification-group-header/notification-group-header.component.mjs +0 -39
  154. package/esm2020/lib/numeric-tile/numeric-tile.component.mjs +0 -34
  155. package/esm2020/lib/pin-tile/pin-tile.component.mjs +0 -111
  156. package/esm2020/lib/pipes/group-tiles.pipe.mjs +0 -31
  157. package/esm2020/lib/pipes/tile-home-filter.pipe.mjs +0 -28
  158. package/esm2020/lib/pipes/tile-prop.pipe.mjs +0 -32
  159. package/esm2020/lib/profile-tile/profile-tile.component.mjs +0 -26
  160. package/esm2020/lib/shellbar/shellbar.component.mjs +0 -200
  161. package/esm2020/lib/simple-tile/simple-tile.component.mjs +0 -23
  162. package/esm2020/lib/tile/tile.component.mjs +0 -61
  163. package/esm2020/lib/tile-renderer.directive.mjs +0 -70
  164. package/esm2020/lib/tiles-viewer/tiles-viewer.component.mjs +0 -157
  165. package/esm2020/lib/tiles-viewer-container/tiles-viewer-container.component.mjs +0 -158
  166. package/esm2020/lib/tiles-viewer-group/tiles-viewer-group.component.mjs +0 -88
  167. package/esm2020/lib/tiles-viewer.service.mjs +0 -130
  168. package/esm2020/lib/tiles.service.mjs +0 -589
  169. package/fesm2015/barsa-tiles.mjs +0 -2977
  170. package/fesm2015/barsa-tiles.mjs.map +0 -1
  171. package/fesm2020/barsa-tiles.mjs +0 -2941
  172. package/fesm2020/barsa-tiles.mjs.map +0 -1
@@ -0,0 +1,167 @@
1
+ import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';
2
+ import { BaseComponent, BarsaApi, IntersectionStatus, fromIntersectionObserver } from 'barsa-novin-ray-core';
3
+ import { TabListComponent } from '@fundamental-ngx/core';
4
+ import { takeUntil } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "barsa-novin-ray-core";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@angular/cdk/drag-drop";
9
+ import * as i4 from "@fundamental-ngx/core/bar";
10
+ import * as i5 from "@fundamental-ngx/core/button";
11
+ import * as i6 from "@fundamental-ngx/core/dynamic-page";
12
+ import * as i7 from "@fundamental-ngx/core/form";
13
+ import * as i8 from "@fundamental-ngx/core/switch";
14
+ import * as i9 from "@fundamental-ngx/core/tabs";
15
+ import * as i10 from "@fundamental-ngx/core/toolbar";
16
+ import * as i11 from "barsa-sap-ui";
17
+ import * as i12 from "../tiles-viewer-group/tiles-viewer-group.component";
18
+ export class TilesViewerComponent extends BaseComponent {
19
+ constructor(_cdr, _saveScrollPosition) {
20
+ super();
21
+ this._cdr = _cdr;
22
+ this._saveScrollPosition = _saveScrollPosition;
23
+ this.pageContentClass = true;
24
+ this.stackContentChange = new EventEmitter();
25
+ this.closeEditHome = new EventEmitter();
26
+ this.save = new EventEmitter();
27
+ this.listDropped = new EventEmitter();
28
+ this.tabChanged = new EventEmitter();
29
+ this.toggleGroup = new EventEmitter();
30
+ this.resetGroup = new EventEmitter();
31
+ this.deleteGroup = new EventEmitter();
32
+ this.hideAppTileClick = new EventEmitter();
33
+ this.renameAppTileClick = new EventEmitter();
34
+ this.tilesDropped = new EventEmitter();
35
+ this._rtl = BarsaApi.LoginFormData.IsRtl;
36
+ this.id = 'tilesviewer';
37
+ }
38
+ ngOnInit() {
39
+ super.ngOnInit();
40
+ if (this.contentPageRef) {
41
+ const elDom = this.contentPageRef.nativeElement;
42
+ elDom.addEventListener('scroll', () => {
43
+ this._saveScrollPosition.setScrollPosition(this.id, elDom.scrollTop);
44
+ });
45
+ this._tilesIntersection = fromIntersectionObserver(elDom, {
46
+ root: null,
47
+ rootMargin: '0px',
48
+ threshold: 0
49
+ }, 0, false)
50
+ .pipe(takeUntil(this._onDestroy$))
51
+ .subscribe((e) => {
52
+ this._onInView(e);
53
+ });
54
+ }
55
+ }
56
+ ngAfterViewInit() {
57
+ super.ngAfterViewInit();
58
+ if (this.tabListComponent) {
59
+ this.tabListComponent._disableScrollSpy = true;
60
+ }
61
+ }
62
+ onSelectedTabChange(selectedTab, appTileGroups) {
63
+ let firstSelected = false;
64
+ if (!this.selectedTabTitle) {
65
+ firstSelected = true;
66
+ }
67
+ const selectedTabTitle = selectedTab.title || '';
68
+ this.selectedTabTitle = selectedTabTitle;
69
+ setTimeout(() => {
70
+ this.tabChanged.emit({
71
+ firstSelected,
72
+ selectedTabTitle,
73
+ tabPanels: this.tabListComponent.tabPanels.toArray(),
74
+ appTileGroups
75
+ });
76
+ });
77
+ }
78
+ onDropGroup(appTileGroups, event) {
79
+ if (!this.edit) {
80
+ return;
81
+ }
82
+ this.listDropped.emit({ appTileGroups, event });
83
+ }
84
+ onDrop($event) {
85
+ this.tilesDropped.emit($event);
86
+ }
87
+ onStackContentChanged(checked) {
88
+ this.stackContentChange.emit(checked);
89
+ }
90
+ onExitEditHome(appGroups) {
91
+ this.save.emit(appGroups);
92
+ }
93
+ onCloseEditHome() {
94
+ this.closeEditHome.emit();
95
+ }
96
+ _trackById(index, item) {
97
+ return item ? item.Id : index;
98
+ }
99
+ _onInView(e) {
100
+ this.formVisibilityStatus = e;
101
+ if (this.formVisibilityStatus === IntersectionStatus.Visible) {
102
+ const scrollTop = this._saveScrollPosition.getScrollPosition(this.id);
103
+ // window.scrollTo({ top: scrollTop, behavior: 'smooth' });
104
+ this.contentPageRef.nativeElement.scrollTop = scrollTop;
105
+ // this._cdr.detectChanges();
106
+ }
107
+ }
108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TilesViewerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SaveScrollPositionService }], target: i0.ɵɵFactoryTarget.Component }); }
109
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TilesViewerComponent, selector: "bt-tiles-viewer", inputs: { appTileGroups: "appTileGroups", loading: "loading", edit: "edit", rtl: "rtl", defaultTab: "defaultTab", 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 }, { propertyName: "contentPageRef", first: true, predicate: ["contentPage"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<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 @if (edit) {\r\n <fd-dynamic-page-header [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n @if (edit) {\r\n <fd-toolbar 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 }\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 }\r\n <fd-tab-list\r\n class=\"tile-tabs\"\r\n [size]=\"deviceSize\"\r\n [collapseOverflow]=\"true\"\r\n [stackContent]=\"stackContent\"\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 [defaultTab]=\"defaultTab\"\r\n >\r\n @for (appTileGroup of appTileGroups; track _trackById(i, appTileGroup); let i = $index) { @if (edit ||\r\n appTileGroup.navigatorVisible) {\r\n <fd-tab\r\n [id]=\"appTileGroup.Id\"\r\n [label]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [ngClass]=\"'fd-tabs--' + deviceSize\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\">\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [deviceSize]=\"deviceSize\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"false\"\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 </fd-dynamic-page-content>\r\n </fd-tab>\r\n } }\r\n </fd-tab-list>\r\n\r\n <fd-dynamic-page-footer>\r\n @if (edit) {\r\n <div fd-bar barDesign=\"footer\">\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 }\r\n </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<ng-template\r\n #renderGroup\r\n let-appTileGroup\r\n let-stackContent=\"stackContent\"\r\n let-edit=\"edit\"\r\n let-isAppTileSubGroup=\"isAppTileSubGroup\"\r\n>\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [deviceSize]=\"deviceSize\"\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: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.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: i4.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i4.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i4.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "background", "autoResponsive", "size", "offset", "expandContent"] }, { kind: "component", type: i6.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap"] }, { kind: "component", type: i6.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i6.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i6.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i6.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i8.SwitchComponent, selector: "fd-switch", inputs: ["activeText", "inactiveText", "id", "required", "checked", "semantic", "ariaLabel", "ariaLabelledBy"], outputs: ["checkedChange"] }, { kind: "component", type: i9.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i9.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "component", type: i10.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i10.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i11.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i12.TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "edit", "rtl", "isAppTileSubGroup", "deviceSize"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
110
+ }
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TilesViewerComponent, decorators: [{
112
+ type: Component,
113
+ args: [{ selector: 'bt-tiles-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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 @if (edit) {\r\n <fd-dynamic-page-header [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n @if (edit) {\r\n <fd-toolbar 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 }\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 }\r\n <fd-tab-list\r\n class=\"tile-tabs\"\r\n [size]=\"deviceSize\"\r\n [collapseOverflow]=\"true\"\r\n [stackContent]=\"stackContent\"\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 [defaultTab]=\"defaultTab\"\r\n >\r\n @for (appTileGroup of appTileGroups; track _trackById(i, appTileGroup); let i = $index) { @if (edit ||\r\n appTileGroup.navigatorVisible) {\r\n <fd-tab\r\n [id]=\"appTileGroup.Id\"\r\n [label]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [ngClass]=\"'fd-tabs--' + deviceSize\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\">\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [deviceSize]=\"deviceSize\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"false\"\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 </fd-dynamic-page-content>\r\n </fd-tab>\r\n } }\r\n </fd-tab-list>\r\n\r\n <fd-dynamic-page-footer>\r\n @if (edit) {\r\n <div fd-bar barDesign=\"footer\">\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 }\r\n </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n\r\n<ng-template\r\n #renderGroup\r\n let-appTileGroup\r\n let-stackContent=\"stackContent\"\r\n let-edit=\"edit\"\r\n let-isAppTileSubGroup=\"isAppTileSubGroup\"\r\n>\r\n <bt-tiles-viewer-group\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [deviceSize]=\"deviceSize\"\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"] }]
114
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SaveScrollPositionService }], propDecorators: { tabListComponent: [{
115
+ type: ViewChild,
116
+ args: [TabListComponent]
117
+ }], contentPageRef: [{
118
+ type: ViewChild,
119
+ args: ['contentPage', { static: true, read: ElementRef }]
120
+ }], pageContentClass: [{
121
+ type: HostBinding,
122
+ args: ['class.page-content']
123
+ }], appTileGroups: [{
124
+ type: Input
125
+ }], loading: [{
126
+ type: Input
127
+ }], edit: [{
128
+ type: Input
129
+ }], rtl: [{
130
+ type: Input
131
+ }], defaultTab: [{
132
+ type: Input
133
+ }], stackContent: [{
134
+ type: Input
135
+ }], deviceSize: [{
136
+ type: Input
137
+ }], selectedAppGroupId: [{
138
+ type: Input
139
+ }], DynamicComponents: [{
140
+ type: Input
141
+ }], stackContentChange: [{
142
+ type: Output
143
+ }], closeEditHome: [{
144
+ type: Output
145
+ }], save: [{
146
+ type: Output
147
+ }], listDropped: [{
148
+ type: Output
149
+ }], tabChanged: [{
150
+ type: Output
151
+ }], toggleGroup: [{
152
+ type: Output
153
+ }], resetGroup: [{
154
+ type: Output
155
+ }], deleteGroup: [{
156
+ type: Output
157
+ }], hideAppTileClick: [{
158
+ type: Output
159
+ }], renameAppTileClick: [{
160
+ type: Output
161
+ }], tilesDropped: [{
162
+ type: Output
163
+ }], _rtl: [{
164
+ type: HostBinding,
165
+ args: ['attr.rtl']
166
+ }] } });
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMtdmlld2VyL3RpbGVzLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci90aWxlcy12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILGFBQWEsRUFFYixRQUFRLEVBR1Isa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUMzQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBWSxnQkFBZ0IsRUFBcUIsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVFqQyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsYUFBYTtJQTZDbkQsWUFBc0IsSUFBdUIsRUFBWSxtQkFBOEM7UUFDbkcsS0FBSyxFQUFFLENBQUM7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUFZLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMkI7UUExQ3BFLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQVlqRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2pELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUdwQyxDQUFDO1FBQ0ssZUFBVSxHQUFHLElB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QkFBQyxvQkFBb0I7Z0JBQ3hCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFJRyxVQUFVO3NCQUFuQixNQUFNO2dCQU9HLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFLa0IsSUFBSTtzQkFBNUIsV0FBVzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBCYXJzYUFwaSxcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXG4gICAgU2F2ZVNjcm9sbFBvc2l0aW9uU2VydmljZSxcbiAgICBJbnRlcnNlY3Rpb25TdGF0dXMsXG4gICAgZnJvbUludGVyc2VjdGlvbk9ic2VydmVyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IE51bGxhYmxlLCBUYWJMaXN0Q29tcG9uZW50LCBUYWJQYW5lbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdidC10aWxlcy12aWV3ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aWxlcy12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RpbGVzLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRpbGVzVmlld2VyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZChUYWJMaXN0Q29tcG9uZW50KSB0YWJMaXN0Q29tcG9uZW50OiBUYWJMaXN0Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnRQYWdlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgY29udGVudFBhZ2VSZWY6IEVsZW1lbnRSZWY8YW55PjtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhZ2UtY29udGVudCcpIHBhZ2VDb250ZW50Q2xhc3MgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGFwcFRpbGVHcm91cHM6IEFycmF5PE1ldGFvYmplY3REYXRhTW9kZWw+O1xuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZWRpdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGVmYXVsdFRhYjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN0YWNrQ29udGVudDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkZXZpY2VTaXplOiBBYmJyZXZhdGlvbkRldmljZVNpemU7XG4gICAgQElucHV0KCkgc2VsZWN0ZWRBcHBHcm91cElkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBEeW5hbWljQ29tcG9uZW50czogYW55O1xuXG4gICAgQE91dHB1dCgpIHN0YWNrQ29udGVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgY2xvc2VFZGl0SG9tZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgbGlzdERyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgYXBwVGlsZUdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdO1xuICAgICAgICBldmVudDogQ2RrRHJhZ0Ryb3A8TWV0YW9iamVjdERhdGFNb2RlbFtdPjtcbiAgICB9PigpO1xuICAgIEBPdXRwdXQoKSB0YWJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGZpcnN0U2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgICAgIHNlbGVjdGVkVGFiVGl0bGU6IHN0cmluZztcbiAgICAgICAgdGFiUGFuZWxzOiBUYWJQYW5lbENvbXBvbmVudFtdO1xuICAgICAgICBhcHBUaWxlR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgfT4oKTtcblxuICAgIEBPdXRwdXQoKSB0b2dnbGVHcm91cCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgcmVzZXRHcm91cCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBAT3V0cHV0KCkgZGVsZXRlR3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIGhpZGVBcHBUaWxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHJlbmFtZUFwcFRpbGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcblxuICAgIEBPdXRwdXQoKSB0aWxlc0Ryb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgICAgICBldmVudDogQ2RrRHJhZ0Ryb3A8eyBpc1RpbGU6IGJvb2xlYW47IGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gfT47XG4gICAgfT4oKTtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5ydGwnKSBfcnRsID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1J0bDtcbiAgICBzZWxlY3RlZFRhYlRpdGxlOiBOdWxsYWJsZTxzdHJpbmc+O1xuICAgIHNlbGVjdGVkVGFiSWQ6IHN0cmluZztcbiAgICBfdGlsZXNJbnRlcnNlY3Rpb246IGFueTtcbiAgICBmb3JtVmlzaWJpbGl0eVN0YXR1czogSW50ZXJzZWN0aW9uU3RhdHVzO1xuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJvdGVjdGVkIF9zYXZlU2Nyb2xsUG9zaXRpb246IFNhdmVTY3JvbGxQb3NpdGlvblNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgaWQgPSAndGlsZXN2aWV3ZXInO1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRQYWdlUmVmKSB7XG4gICAgICAgICAgICBjb25zdCBlbERvbSA9IHRoaXMuY29udGVudFBhZ2VSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGVsRG9tLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlU2Nyb2xsUG9zaXRpb24uc2V0U2Nyb2xsUG9zaXRpb24odGhpcy5pZCwgZWxEb20uc2Nyb2xsVG9wKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fdGlsZXNJbnRlcnNlY3Rpb24gPSBmcm9tSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgICAgICAgICAgZWxEb20sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByb290OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICAgICAgICAgICAgICAgICAgdGhyZXNob2xkOiAwXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25JblZpZXcoZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgaWYgKHRoaXMudGFiTGlzdENvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy50YWJMaXN0Q29tcG9uZW50Ll9kaXNhYmxlU2Nyb2xsU3B5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvblNlbGVjdGVkVGFiQ2hhbmdlKHNlbGVjdGVkVGFiOiBUYWJQYW5lbENvbXBvbmVudCwgYXBwVGlsZUdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGxldCBmaXJzdFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRhYlRpdGxlKSB7XG4gICAgICAgICAgICBmaXJzdFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3RlZFRhYlRpdGxlID0gc2VsZWN0ZWRUYWIudGl0bGUgfHwgJyc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJUaXRsZSA9IHNlbGVjdGVkVGFiVGl0bGU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YWJDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgICAgIGZpcnN0U2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRUYWJUaXRsZSxcbiAgICAgICAgICAgICAgICB0YWJQYW5lbHM6IHRoaXMudGFiTGlzdENvbXBvbmVudC50YWJQYW5lbHMudG9BcnJheSgpLFxuICAgICAgICAgICAgICAgIGFwcFRpbGVHcm91cHNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25Ecm9wR3JvdXAoYXBwVGlsZUdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBldmVudDogQ2RrRHJhZ0Ryb3A8TWV0YW9iamVjdERhdGFNb2RlbFtdPik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlzdERyb3BwZWQuZW1pdCh7IGFwcFRpbGVHcm91cHMsIGV2ZW50IH0pO1xuICAgIH1cbiAgICBvbkRyb3AoJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMudGlsZXNEcm9wcGVkLmVtaXQoJGV2ZW50KTtcbiAgICB9XG4gICAgb25TdGFja0NvbnRlbnRDaGFuZ2VkKGNoZWNrZWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGFja0NvbnRlbnRDaGFuZ2UuZW1pdChjaGVja2VkKTtcbiAgICB9XG4gICAgb25FeGl0RWRpdEhvbWUoYXBwR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlLmVtaXQoYXBwR3JvdXBzKTtcbiAgICB9XG4gICAgb25DbG9zZUVkaXRIb21lKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlRWRpdEhvbWUuZW1pdCgpO1xuICAgIH1cbiAgICBfdHJhY2tCeUlkKGluZGV4LCBpdGVtKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLklkIDogaW5kZXg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9vbkluVmlldyhlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybVZpc2liaWxpdHlTdGF0dXMgPSBlO1xuICAgICAgICBpZiAodGhpcy5mb3JtVmlzaWJpbGl0eVN0YXR1cyA9PT0gSW50ZXJzZWN0aW9uU3RhdHVzLlZpc2libGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuX3NhdmVTY3JvbGxQb3NpdGlvbi5nZXRTY3JvbGxQb3NpdGlvbih0aGlzLmlkKTtcbiAgICAgICAgICAgIC8vIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogc2Nyb2xsVG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgICAodGhpcy5jb250ZW50UGFnZVJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgICAgICAgICAvLyB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGZkLWR5bmFtaWMtcGFnZVxyXG4gICAgc2l6ZT1cImxhcmdlXCJcclxuICAgIFthcmlhTGFiZWxdPVwiJ0hvbWVFZGl0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICBbYXV0b1Jlc3BvbnNpdmVdPVwidHJ1ZVwiXHJcbiAgICBbY2xhc3Muc3RhY2stbW9kZV09XCJzdGFja0NvbnRlbnRcIlxyXG4+XHJcbiAgICBAaWYgKGVkaXQpIHtcclxuICAgIDxmZC1keW5hbWljLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCInSG9tZUVkaXQnIHwgYmJiVHJhbnNsYXRlXCI+XHJcbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1nbG9iYWwtYWN0aW9ucz5cclxuICAgICAgICAgICAgQGlmIChlZGl0KSB7XHJcbiAgICAgICAgICAgIDxmZC10b29sYmFyIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgW2NsZWFyQm9yZGVyXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsIGZkLXRvb2xiYXItaXRlbT5TdGFja2VkIENvbnRlbnQgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxmZC1zd2l0Y2hcclxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzdGFja0NvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uU3RhY2tDb250ZW50Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgID48L2ZkLXN3aXRjaD5cclxuICAgICAgICAgICAgPC9mZC10b29sYmFyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtZ2xvYmFsLWFjdGlvbnM+XHJcbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cclxuICAgICAgICAgICAgPGZkLXRvb2xiYXIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiB0aXRsZT1cIkNsb3NlXCIgKGNsaWNrKT1cIm9uQ2xvc2VFZGl0SG9tZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzYXAtaWNvbi0tZGVjbGluZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2ZkLXRvb2xiYXI+XHJcbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtbGF5b3V0LWFjdGlvbnM+XHJcbiAgICA8L2ZkLWR5bmFtaWMtcGFnZS1oZWFkZXI+XHJcbiAgICB9XHJcbiAgICA8ZmQtdGFiLWxpc3RcclxuICAgICAgICBjbGFzcz1cInRpbGUtdGFic1wiXHJcbiAgICAgICAgW3NpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgW2NvbGxhcHNlT3ZlcmZsb3ddPVwidHJ1ZVwiXHJcbiAgICAgICAgW3N0YWNrQ29udGVudF09XCJzdGFja0NvbnRlbnRcIlxyXG4gICAgICAgIFtleHBhbmRPdmVyZmxvd1RleHRdPVwiJ01vcmUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BHcm91cChhcHBUaWxlR3JvdXBzLCAkZXZlbnQpXCJcclxuICAgICAgICAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25TZWxlY3RlZFRhYkNoYW5nZSgkZXZlbnQsIGFwcFRpbGVHcm91cHMpXCJcclxuICAgICAgICBbZGVmYXVsdFRhYl09XCJkZWZhdWx0VGFiXCJcclxuICAgID5cclxuICAgICAgICBAZm9yIChhcHBUaWxlR3JvdXAgb2YgYXBwVGlsZUdyb3VwczsgdHJhY2sgX3RyYWNrQnlJZChpLCBhcHBUaWxlR3JvdXApOyBsZXQgaSA9ICRpbmRleCkgeyBAaWYgKGVkaXQgfHxcclxuICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVmlzaWJsZSkge1xyXG4gICAgICAgIDxmZC10YWJcclxuICAgICAgICAgICAgW2lkXT1cImFwcFRpbGVHcm91cC5JZFwiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCJhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbdGl0bGVdPVwiYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZkLXRhYnMtLScgKyBkZXZpY2VTaXplXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxmZC1keW5hbWljLXBhZ2UtY29udGVudCBbaWRdPVwiYXBwVGlsZUdyb3VwLklkXCI+XHJcbiAgICAgICAgICAgICAgICA8YnQtdGlsZXMtdmlld2VyLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRpbGVHcm91cF09XCJhcHBUaWxlR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtlZGl0XT1cImVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtydGxdPVwicnRsXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3RhY2tDb250ZW50XT1cInN0YWNrQ29udGVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lzQXBwVGlsZVN1Ykdyb3VwXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAodGlsZXNEcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAocmVuYW1lQXBwVGlsZUNsaWNrKT1cInJlbmFtZUFwcFRpbGVDbGljay5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChoaWRlQXBwVGlsZUNsaWNrKT1cImhpZGVBcHBUaWxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAocmVzZXRHcm91cCk9XCJyZXNldEdyb3VwLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUdyb3VwKT1cImRlbGV0ZUdyb3VwLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHRvZ2dsZUdyb3VwKT1cInRvZ2dsZUdyb3VwLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9idC10aWxlcy12aWV3ZXItZ3JvdXA+XHJcbiAgICAgICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9mZC10YWI+XHJcbiAgICAgICAgfSB9XHJcbiAgICA8L2ZkLXRhYi1saXN0PlxyXG5cclxuICAgIDxmZC1keW5hbWljLXBhZ2UtZm9vdGVyPlxyXG4gICAgICAgIEBpZiAoZWRpdCkge1xyXG4gICAgICAgIDxkaXYgZmQtYmFyIGJhckRlc2lnbj1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cclxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTYXZlQW5kQ2xvc2UnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FeGl0RWRpdEhvbWUoYXBwVGlsZUdyb3VwcylcIlxyXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9mZC1keW5hbWljLXBhZ2UtZm9vdGVyPlxyXG48L2ZkLWR5bmFtaWMtcGFnZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cclxuICAgIDxic3UtbWFzaz48L2JzdS1tYXNrPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgICAjcmVuZGVyR3JvdXBcclxuICAgIGxldC1hcHBUaWxlR3JvdXBcclxuICAgIGxldC1zdGFja0NvbnRlbnQ9XCJzdGFja0NvbnRlbnRcIlxyXG4gICAgbGV0LWVkaXQ9XCJlZGl0XCJcclxuICAgIGxldC1pc0FwcFRpbGVTdWJHcm91cD1cImlzQXBwVGlsZVN1Ykdyb3VwXCJcclxuPlxyXG4gICAgPGJ0LXRpbGVzLXZpZXdlci1ncm91cFxyXG4gICAgICAgIFthcHBUaWxlR3JvdXBdPVwiYXBwVGlsZUdyb3VwXCJcclxuICAgICAgICBbZWRpdF09XCJlZGl0XCJcclxuICAgICAgICBbcnRsXT1cInJ0bFwiXHJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgW3N0YWNrQ29udGVudF09XCJzdGFja0NvbnRlbnRcIlxyXG4gICAgICAgIFtpc0FwcFRpbGVTdWJHcm91cF09XCJpc0FwcFRpbGVTdWJHcm91cFwiXHJcbiAgICAgICAgKHRpbGVzRHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgICAgICAgKHJlbmFtZUFwcFRpbGVDbGljayk9XCJyZW5hbWVBcHBUaWxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAoaGlkZUFwcFRpbGVDbGljayk9XCJoaWRlQXBwVGlsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHJlc2V0R3JvdXApPVwicmVzZXRHcm91cC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChkZWxldGVHcm91cCk9XCJkZWxldGVHcm91cC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICh0b2dnbGVHcm91cCk9XCJ0b2dnbGVHcm91cC5lbWl0KCRldmVudClcIlxyXG4gICAgPjwvYnQtdGlsZXMtdmlld2VyLWdyb3VwPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -0,0 +1,164 @@
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 "barsa-sap-ui";
11
+ import * as i5 from "../tiles-viewer/tiles-viewer.component";
12
+ import * as i6 from "@angular/common";
13
+ export class TilesViewerContainerComponent extends BaseComponent {
14
+ constructor(_portalService, _tilesService, _tilesViewerService) {
15
+ super();
16
+ this._portalService = _portalService;
17
+ this._tilesService = _tilesService;
18
+ this._tilesViewerService = _tilesViewerService;
19
+ this.changedOrder = false;
20
+ this.userStackContent = false;
21
+ this.initialStackContentValue = false;
22
+ this.firstSelected = false;
23
+ this.stackContent = false;
24
+ this.stackContent$ = this._portalService.userPortalSettings$.pipe(takeUntil(this._onDestroy$), map((settings) => settings['UserPortalSettings']), map((settings) => settings?.TilesStackContent), distinctUntilChanged());
25
+ this.stackContent$.subscribe((stackContent) => {
26
+ this.initialStackContentValue = this.userStackContent = stackContent;
27
+ if (stackContent) {
28
+ this.stackContent = stackContent;
29
+ }
30
+ });
31
+ }
32
+ ngOnInit() {
33
+ super.ngOnInit();
34
+ this.viewLoading$ = this._tilesViewerService.viewLoading$;
35
+ this.selectedAppGroupId = this._tilesViewerService.selectedAppGroupId;
36
+ this.rtl$ = this._portalService.rtl$;
37
+ this.deviceSize$ = this._portalService.deviceSize$;
38
+ this.edit$ = this._tilesService.edit$;
39
+ this.appTileGroups$ = this._tilesService.homeAppTileGroups$;
40
+ this.appTileGroups$.pipe(withLatestFrom(this.stackContent$)).subscribe(([tiles, stackContent]) => {
41
+ if (tiles && stackContent) {
42
+ tiles.forEach((c) => {
43
+ this._tilesService.loadAppTileGroups(c);
44
+ });
45
+ }
46
+ });
47
+ }
48
+ ngOnDestroy() {
49
+ super.ngOnDestroy();
50
+ this._tilesService.setEditHome(false);
51
+ }
52
+ onSelectedTabChange(e) {
53
+ const { firstSelected, selectedTabTitle, appTileGroups: appGroups, tabPanels } = e;
54
+ let appTileGroup;
55
+ if (this.stackContent) {
56
+ return;
57
+ }
58
+ if (firstSelected) {
59
+ const lastSelectedAppGroupId = this._tilesViewerService.selectedAppGroupId;
60
+ if (lastSelectedAppGroupId) {
61
+ appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
62
+ if (appTileGroup) {
63
+ const lastTab = tabPanels.find((c) => c.title === appTileGroup?.navigatorTitle);
64
+ if (lastTab && selectedTabTitle !== lastTab.title) {
65
+ appTileGroup = appGroups.find((c) => c.Id === lastSelectedAppGroupId);
66
+ lastTab.open(true);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ if (!appTileGroup) {
72
+ appTileGroup = appGroups.find((c) => c.navigatorTitle === selectedTabTitle);
73
+ }
74
+ if (appTileGroup) {
75
+ this._tilesViewerService.setSelectedTab(appTileGroup);
76
+ this._tilesViewerService.loadAppGroup(appTileGroup);
77
+ }
78
+ }
79
+ onDropGroup(e) {
80
+ const { event, appTileGroups: appGroups } = e;
81
+ moveItemInArray(appGroups, event.previousIndex, event.currentIndex);
82
+ this.changedOrder = true;
83
+ // this.saveOrderAppTiles(allApps, group);
84
+ }
85
+ onDrop(e) {
86
+ const { appTileGroup: group, event } = e;
87
+ const previousContainer = event.previousContainer;
88
+ const container = event.container;
89
+ const containerIsTile = container.data.isTile;
90
+ const previousItems = previousContainer.data.items;
91
+ const containerItems = container.data.items;
92
+ const { previousIndex, currentIndex } = event;
93
+ if (previousContainer === container) {
94
+ moveItemInArray(previousItems, previousIndex, currentIndex);
95
+ if (containerIsTile) {
96
+ this._saveOrderAppTiles(group);
97
+ }
98
+ else {
99
+ this._saveOrderActionLinks(group);
100
+ }
101
+ }
102
+ else {
103
+ transferArrayItem(previousItems, containerItems, previousIndex, currentIndex);
104
+ const appTileIdTransferedId = containerItems[currentIndex]?.AppTile?.Id ?? containerItems[currentIndex].Id;
105
+ if (containerIsTile) {
106
+ this._saveOrderActionLinks(group);
107
+ this._saveOrderAppTiles(group, appTileIdTransferedId);
108
+ }
109
+ else {
110
+ this._saveOrderAppTiles(group);
111
+ this._saveOrderActionLinks(group, appTileIdTransferedId);
112
+ }
113
+ }
114
+ }
115
+ onStackContentChanged(checked) {
116
+ this.userStackContent = checked;
117
+ }
118
+ onExitEditHome(appTileGroups) {
119
+ if (this.changedOrder) {
120
+ this._tilesViewerService.saveAppGroupOrders(appTileGroups);
121
+ this.changedOrder = false;
122
+ }
123
+ if (this.userStackContent !== this.initialStackContentValue) {
124
+ this._tilesService.saveTilesStackContent(this.userStackContent);
125
+ }
126
+ this._setEditHome(false);
127
+ }
128
+ onCloseEditHome() {
129
+ this._setEditHome(false);
130
+ }
131
+ onDelete(appTileGroup) {
132
+ this._tilesViewerService.deleteAppGroup(appTileGroup);
133
+ }
134
+ onToggleShowHide(appTileGroup) {
135
+ this._tilesViewerService.toggleAppGroupSettingVisible(appTileGroup);
136
+ }
137
+ onReset(appTileGroup) {
138
+ this._tilesViewerService.resetAppGroup(appTileGroup);
139
+ }
140
+ onHideAppTile(appTile) {
141
+ this._tilesViewerService.hideTile(appTile);
142
+ }
143
+ onRenameAppTile(appTile) {
144
+ this._tilesViewerService.openRenameForm(appTile);
145
+ }
146
+ _setEditHome(val) {
147
+ this._tilesService.setEditHome(val);
148
+ }
149
+ _saveOrderAppTiles(appTileGroup, appTileIdTransferedId = '0') {
150
+ const appTiles = appTileGroup.navigatorTiles.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
151
+ this._tilesService.saveOrderAppTiles(appTileGroup, appTiles, false, appTileIdTransferedId);
152
+ }
153
+ _saveOrderActionLinks(appTileGroup, appTileIdTransferedId = '0') {
154
+ const actionLinks = appTileGroup.navigatorActionLinks.map((appTile) => appTile.AppTile ? appTile.AppTile.Id : appTile.Id);
155
+ this._tilesService.saveOrderAppTiles(appTileGroup, actionLinks, true, appTileIdTransferedId);
156
+ }
157
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TilesViewerContainerComponent, deps: [{ token: i1.PortalService }, { token: i2.TilesService }, { token: i3.TilesViewerService }], target: i0.ɵɵFactoryTarget.Component }); }
158
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TilesViewerContainerComponent, selector: "bt-tiles-viewer-container", providers: [TilesViewerService], usesInheritance: true, ngImport: i0, template: "@if (appTileGroups$ | async; as appTileGroups) { @if (appTileGroups) {\n<bt-tiles-viewer\n [appTileGroups]=\"appTileGroups\"\n [loading]=\"(viewLoading$ | async)!!\"\n [edit]=\"(edit$ | async)!!\"\n [rtl]=\"(rtl$ | async)!!\"\n [stackContent]=\"(stackContent$ | async)!!\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [defaultTab]=\"selectedAppGroupId\"\n (stackContentChange)=\"onStackContentChanged($event)\"\n (closeEditHome)=\"onCloseEditHome()\"\n (save)=\"onExitEditHome($event)\"\n (listDropped)=\"onDropGroup($event)\"\n (tabChanged)=\"onSelectedTabChange($event)\"\n (toggleGroup)=\"onToggleShowHide($event)\"\n (resetGroup)=\"onReset($event)\"\n (deleteGroup)=\"onDelete($event)\"\n (tilesDropped)=\"onDrop($event)\"\n (hideAppTileClick)=\"onHideAppTile($event)\"\n (renameAppTileClick)=\"onRenameAppTile($event)\"\n></bt-tiles-viewer>\n} @else {\n<bsu-no-data></bsu-no-data>\n} } @else {\n<bsu-mask></bsu-mask>\n}\n\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i4.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i4.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: i5.TilesViewerComponent, selector: "bt-tiles-viewer", inputs: ["appTileGroups", "loading", "edit", "rtl", "defaultTab", "stackContent", "deviceSize", "selectedAppGroupId", "DynamicComponents"], outputs: ["stackContentChange", "closeEditHome", "save", "listDropped", "tabChanged", "toggleGroup", "resetGroup", "deleteGroup", "hideAppTileClick", "renameAppTileClick", "tilesDropped"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
159
+ }
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TilesViewerContainerComponent, decorators: [{
161
+ type: Component,
162
+ args: [{ selector: 'bt-tiles-viewer-container', providers: [TilesViewerService], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (appTileGroups$ | async; as appTileGroups) { @if (appTileGroups) {\n<bt-tiles-viewer\n [appTileGroups]=\"appTileGroups\"\n [loading]=\"(viewLoading$ | async)!!\"\n [edit]=\"(edit$ | async)!!\"\n [rtl]=\"(rtl$ | async)!!\"\n [stackContent]=\"(stackContent$ | async)!!\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [defaultTab]=\"selectedAppGroupId\"\n (stackContentChange)=\"onStackContentChanged($event)\"\n (closeEditHome)=\"onCloseEditHome()\"\n (save)=\"onExitEditHome($event)\"\n (listDropped)=\"onDropGroup($event)\"\n (tabChanged)=\"onSelectedTabChange($event)\"\n (toggleGroup)=\"onToggleShowHide($event)\"\n (resetGroup)=\"onReset($event)\"\n (deleteGroup)=\"onDelete($event)\"\n (tilesDropped)=\"onDrop($event)\"\n (hideAppTileClick)=\"onHideAppTile($event)\"\n (renameAppTileClick)=\"onRenameAppTile($event)\"\n></bt-tiles-viewer>\n} @else {\n<bsu-no-data></bsu-no-data>\n} } @else {\n<bsu-mask></bsu-mask>\n}\n\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
163
+ }], ctorParameters: () => [{ type: i1.PortalService }, { type: i2.TilesService }, { type: i3.TilesViewerService }] });
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1jb250YWluZXIvdGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1jb250YWluZXIvdGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEYsT0FBTyxFQUFFLGFBQWEsRUFBNkQsTUFBTSxzQkFBc0IsQ0FBQztBQUVoSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7QUFTN0QsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGFBQWE7SUFjNUQsWUFDYyxjQUE2QixFQUM3QixhQUEyQixFQUMzQixtQkFBdUM7UUFFakQsS0FBSyxFQUFFLENBQUM7UUFKRSxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBWnJELGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6Qiw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFHakMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHdEIsaUJB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dUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXksIHRyYW5zZmVyQXJyYXlJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBtYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYlBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgTWV0YW9iamVjdERhdGFNb2RlbCwgUG9ydGFsU2VydmljZSwgQWJicmV2YXRpb25EZXZpY2VTaXplIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgVGlsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vdGlsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBUaWxlc1ZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi90aWxlcy12aWV3ZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnQtdGlsZXMtdmlld2VyLWNvbnRhaW5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbGVzLXZpZXdlci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RpbGVzLXZpZXdlci1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtUaWxlc1ZpZXdlclNlcnZpY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRpbGVzVmlld2VyQ29udGFpbmVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBhcHBUaWxlR3JvdXBzJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsW10+O1xuICAgIHZpZXdMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTxBYmJyZXZhdGlvbkRldmljZVNpemU+O1xuICAgIGVkaXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNoYW5nZWRPcmRlciA9IGZhbHNlO1xuICAgIHVzZXJTdGFja0NvbnRlbnQgPSBmYWxzZTtcbiAgICBpbml0aWFsU3RhY2tDb250ZW50VmFsdWUgPSBmYWxzZTtcbiAgICB1c2VyUG9ydGFsU2V0dGluZ3M6IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgc3RhY2tDb250ZW50JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBmaXJzdFNlbGVjdGVkID0gZmFsc2U7XG4gICAgcnRsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBzZWxlY3RlZEFwcEdyb3VwSWQ6IHN0cmluZztcbiAgICBzdGFja0NvbnRlbnQgPSBmYWxzZTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX3RpbGVzU2VydmljZTogVGlsZXNTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX3RpbGVzVmlld2VyU2VydmljZTogVGlsZXNWaWV3ZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc3RhY2tDb250ZW50JCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UudXNlclBvcnRhbFNldHRpbmdzJC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgbWFwKChzZXR0aW5nczogUmVjb3JkPHN0cmluZywgTWV0YW9iamVjdERhdGFNb2RlbD4pID0+IHNldHRpbmdzWydVc2VyUG9ydGFsU2V0dGluZ3MnXSksXG4gICAgICAgICAgICBtYXAoKHNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSA9PiBzZXR0aW5ncz8uVGlsZXNTdGFja0NvbnRlbnQpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0YWNrQ29udGVudCQuc3Vic2NyaWJlKChzdGFja0NvbnRlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFN0YWNrQ29udGVudFZhbHVlID0gdGhpcy51c2VyU3RhY2tDb250ZW50ID0gc3RhY2tDb250ZW50O1xuICAgICAgICAgICAgaWYgKHN0YWNrQ29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tDb250ZW50ID0gc3RhY2tDb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy52aWV3TG9hZGluZyQgPSB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2Uudmlld0xvYWRpbmckO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQXBwR3JvdXBJZCA9IHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5zZWxlY3RlZEFwcEdyb3VwSWQ7XG4gICAgICAgIHRoaXMucnRsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UucnRsJDtcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQ7XG4gICAgICAgIHRoaXMuZWRpdCQgPSB0aGlzLl90aWxlc1NlcnZpY2UuZWRpdCQ7XG4gICAgICAgIHRoaXMuYXBwVGlsZUdyb3VwcyQgPSB0aGlzLl90aWxlc1NlcnZpY2UuaG9tZUFwcFRpbGVHcm91cHMkO1xuICAgICAgICB0aGlzLmFwcFRpbGVHcm91cHMkLnBpcGUod2l0aExhdGVzdEZyb20odGhpcy5zdGFja0NvbnRlbnQkKSkuc3Vic2NyaWJlKChbdGlsZXMsIHN0YWNrQ29udGVudF0pID0+IHtcbiAgICAgICAgICAgIGlmICh0aWxlcyAmJiBzdGFja0NvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICB0aWxlcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5sb2FkQXBwVGlsZUdyb3VwcyhjKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2Uuc2V0RWRpdEhvbWUoZmFsc2UpO1xuICAgIH1cbiAgICBvblNlbGVjdGVkVGFiQ2hhbmdlKGU6IHtcbiAgICAgICAgZmlyc3RTZWxlY3RlZDogYm9vbGVhbjtcbiAgICAgICAgc2VsZWN0ZWRUYWJUaXRsZTogc3RyaW5nO1xuICAgICAgICB0YWJQYW5lbHM6IFRhYlBhbmVsQ29tcG9uZW50W107XG4gICAgICAgIGFwcFRpbGVHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcbiAgICB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlyc3RTZWxlY3RlZCwgc2VsZWN0ZWRUYWJUaXRsZSwgYXBwVGlsZUdyb3VwczogYXBwR3JvdXBzLCB0YWJQYW5lbHMgfSA9IGU7XG5cbiAgICAgICAgbGV0IGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMuc3RhY2tDb250ZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpcnN0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTZWxlY3RlZEFwcEdyb3VwSWQgPSB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2Uuc2VsZWN0ZWRBcHBHcm91cElkO1xuICAgICAgICAgICAgaWYgKGxhc3RTZWxlY3RlZEFwcEdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICBhcHBUaWxlR3JvdXAgPSBhcHBHcm91cHMuZmluZCgoYykgPT4gYy5JZCA9PT0gbGFzdFNlbGVjdGVkQXBwR3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgaWYgKGFwcFRpbGVHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0VGFiID0gdGFiUGFuZWxzLmZpbmQoKGMpID0+IGMudGl0bGUgPT09IGFwcFRpbGVHcm91cD8ubmF2aWdhdG9yVGl0bGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFRhYiAmJiBzZWxlY3RlZFRhYlRpdGxlICE9PSBsYXN0VGFiLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBUaWxlR3JvdXAgPSBhcHBHcm91cHMuZmluZCgoYykgPT4gYy5JZCA9PT0gbGFzdFNlbGVjdGVkQXBwR3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0VGFiLm9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhcHBUaWxlR3JvdXApIHtcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cCA9IGFwcEdyb3Vwcy5maW5kKChjKSA9PiBjLm5hdmlnYXRvclRpdGxlID09PSBzZWxlY3RlZFRhYlRpdGxlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXBwVGlsZUdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2Uuc2V0U2VsZWN0ZWRUYWIoYXBwVGlsZUdyb3VwKTtcbiAgICAgICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5sb2FkQXBwR3JvdXAoYXBwVGlsZUdyb3VwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkRyb3BHcm91cChlOiB7IGFwcFRpbGVHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTsgZXZlbnQ6IENka0RyYWdEcm9wPE1ldGFvYmplY3REYXRhTW9kZWxbXT4gfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGV2ZW50LCBhcHBUaWxlR3JvdXBzOiBhcHBHcm91cHMgfSA9IGU7XG5cbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGFwcEdyb3VwcywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcblxuICAgICAgICB0aGlzLmNoYW5nZWRPcmRlciA9IHRydWU7XG4gICAgICAgIC8vIHRoaXMuc2F2ZU9yZGVyQXBwVGlsZXMoYWxsQXBwcywgZ3JvdXApO1xuICAgIH1cbiAgICBvbkRyb3AoZTogeyBhcHBUaWxlR3JvdXA7IGV2ZW50OiBDZGtEcmFnRHJvcDx7IGlzVGlsZTogYm9vbGVhbjsgaXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB9PiB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgYXBwVGlsZUdyb3VwOiBncm91cCwgZXZlbnQgfSA9IGU7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzQ29udGFpbmVyID0gZXZlbnQucHJldmlvdXNDb250YWluZXI7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LmNvbnRhaW5lcjtcbiAgICAgICAgY29uc3QgY29udGFpbmVySXNUaWxlID0gY29udGFpbmVyLmRhdGEuaXNUaWxlO1xuICAgICAgICBjb25zdCBwcmV2aW91c0l0ZW1zID0gcHJldmlvdXNDb250YWluZXIuZGF0YS5pdGVtcztcbiAgICAgICAgY29uc3QgY29udGFpbmVySXRlbXMgPSBjb250YWluZXIuZGF0YS5pdGVtcztcbiAgICAgICAgY29uc3QgeyBwcmV2aW91c0luZGV4LCBjdXJyZW50SW5kZXggfSA9IGV2ZW50O1xuICAgICAgICBpZiAocHJldmlvdXNDb250YWluZXIgPT09IGNvbnRhaW5lcikge1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHByZXZpb3VzSXRlbXMsIHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVySXNUaWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZU9yZGVyQXBwVGlsZXMoZ3JvdXApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlT3JkZXJBY3Rpb25MaW5rcyhncm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShwcmV2aW91c0l0ZW1zLCBjb250YWluZXJJdGVtcywgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IGFwcFRpbGVJZFRyYW5zZmVyZWRJZCA9IGNvbnRhaW5lckl0ZW1zW2N1cnJlbnRJbmRleF0/LkFwcFRpbGU/LklkID8/IGNvbnRhaW5lckl0ZW1zW2N1cnJlbnRJbmRleF0uSWQ7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVySXNUaWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZU9yZGVyQWN0aW9uTGlua3MoZ3JvdXApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVPcmRlckFwcFRpbGVzKGdyb3VwLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlT3JkZXJBcHBUaWxlcyhncm91cCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZU9yZGVyQWN0aW9uTGlua3MoZ3JvdXAsIGFwcFRpbGVJZFRyYW5zZmVyZWRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25TdGFja0NvbnRlbnRDaGFuZ2VkKGNoZWNrZWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51c2VyU3RhY2tDb250ZW50ID0gY2hlY2tlZDtcbiAgICB9XG5cbiAgICBvbkV4aXRFZGl0SG9tZShhcHBUaWxlR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlZE9yZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2Uuc2F2ZUFwcEdyb3VwT3JkZXJzKGFwcFRpbGVHcm91cHMpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkT3JkZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy51c2VyU3RhY2tDb250ZW50ICE9PSB0aGlzLmluaXRpYWxTdGFja0NvbnRlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLnNhdmVUaWxlc1N0YWNrQ29udGVudCh0aGlzLnVzZXJTdGFja0NvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldEVkaXRIb21lKGZhbHNlKTtcbiAgICB9XG4gICAgb25DbG9zZUVkaXRIb21lKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRFZGl0SG9tZShmYWxzZSk7XG4gICAgfVxuXG4gICAgb25EZWxldGUoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5kZWxldGVBcHBHcm91cChhcHBUaWxlR3JvdXApO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlU2hvd0hpZGUoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS50b2dnbGVBcHBHcm91cFNldHRpbmdWaXNpYmxlKGFwcFRpbGVHcm91cCk7XG4gICAgfVxuXG4gICAgb25SZXNldChhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGlsZXNWaWV3ZXJTZXJ2aWNlLnJlc2V0QXBwR3JvdXAoYXBwVGlsZUdyb3VwKTtcbiAgICB9XG4gICAgb25IaWRlQXBwVGlsZShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5oaWRlVGlsZShhcHBUaWxlKTtcbiAgICB9XG4gICAgb25SZW5hbWVBcHBUaWxlKGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGlsZXNWaWV3ZXJTZXJ2aWNlLm9wZW5SZW5hbWVGb3JtKGFwcFRpbGUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRFZGl0SG9tZSh2YWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLnNldEVkaXRIb21lKHZhbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2F2ZU9yZGVyQXBwVGlsZXMoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQ6IHN0cmluZyA9ICcwJyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcHBUaWxlcyA9IGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaWxlcy5tYXAoKGFwcFRpbGUpID0+XG4gICAgICAgICAgICBhcHBUaWxlLkFwcFRpbGUgPyBhcHBUaWxlLkFwcFRpbGUuSWQgOiBhcHBUaWxlLklkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zYXZlT3JkZXJBcHBUaWxlcyhhcHBUaWxlR3JvdXAsIGFwcFRpbGVzLCBmYWxzZSwgYXBwVGlsZUlkVHJhbnNmZXJlZElkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zYXZlT3JkZXJBY3Rpb25MaW5rcyhhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGFwcFRpbGVJZFRyYW5zZmVyZWRJZDogc3RyaW5nID0gJzAnKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFjdGlvbkxpbmtzID0gYXBwVGlsZUdyb3VwLm5hdmlnYXRvckFjdGlvbkxpbmtzLm1hcCgoYXBwVGlsZSkgPT5cbiAgICAgICAgICAgIGFwcFRpbGUuQXBwVGlsZSA/IGFwcFRpbGUuQXBwVGlsZS5JZCA6IGFwcFRpbGUuSWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLnNhdmVPcmRlckFwcFRpbGVzKGFwcFRpbGVHcm91cCwgYWN0aW9uTGlua3MsIHRydWUsIGFwcFRpbGVJZFRyYW5zZmVyZWRJZCk7XG4gICAgfVxufVxuIiwiQGlmIChhcHBUaWxlR3JvdXBzJCB8IGFzeW5jOyBhcyBhcHBUaWxlR3JvdXBzKSB7IEBpZiAoYXBwVGlsZUdyb3Vwcykge1xuPGJ0LXRpbGVzLXZpZXdlclxuICAgIFthcHBUaWxlR3JvdXBzXT1cImFwcFRpbGVHcm91cHNcIlxuICAgIFtsb2FkaW5nXT1cIih2aWV3TG9hZGluZyQgfCBhc3luYykhIVwiXG4gICAgW2VkaXRdPVwiKGVkaXQkIHwgYXN5bmMpISFcIlxuICAgIFtydGxdPVwiKHJ0bCQgfCBhc3luYykhIVwiXG4gICAgW3N0YWNrQ29udGVudF09XCIoc3RhY2tDb250ZW50JCB8IGFzeW5jKSEhXCJcbiAgICBbZGV2aWNlU2l6ZV09XCIoZGV2aWNlU2l6ZSQgfCBhc3luYykhIVwiXG4gICAgW2RlZmF1bHRUYWJdPVwic2VsZWN0ZWRBcHBHcm91cElkXCJcbiAgICAoc3RhY2tDb250ZW50Q2hhbmdlKT1cIm9uU3RhY2tDb250ZW50Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAoY2xvc2VFZGl0SG9tZSk9XCJvbkNsb3NlRWRpdEhvbWUoKVwiXG4gICAgKHNhdmUpPVwib25FeGl0RWRpdEhvbWUoJGV2ZW50KVwiXG4gICAgKGxpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKCRldmVudClcIlxuICAgICh0YWJDaGFuZ2VkKT1cIm9uU2VsZWN0ZWRUYWJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKHRvZ2dsZUdyb3VwKT1cIm9uVG9nZ2xlU2hvd0hpZGUoJGV2ZW50KVwiXG4gICAgKHJlc2V0R3JvdXApPVwib25SZXNldCgkZXZlbnQpXCJcbiAgICAoZGVsZXRlR3JvdXApPVwib25EZWxldGUoJGV2ZW50KVwiXG4gICAgKHRpbGVzRHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgKGhpZGVBcHBUaWxlQ2xpY2spPVwib25IaWRlQXBwVGlsZSgkZXZlbnQpXCJcbiAgICAocmVuYW1lQXBwVGlsZUNsaWNrKT1cIm9uUmVuYW1lQXBwVGlsZSgkZXZlbnQpXCJcbj48L2J0LXRpbGVzLXZpZXdlcj5cbn0gQGVsc2Uge1xuPGJzdS1uby1kYXRhPjwvYnN1LW5vLWRhdGE+XG59IH0gQGVsc2Uge1xuPGJzdS1tYXNrPjwvYnN1LW1hc2s+XG59XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgICA8YnN1LW1hc2s+PC9ic3UtbWFzaz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,88 @@
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(_el) {
19
+ super();
20
+ this._el = _el;
21
+ this.tilesDropped = new EventEmitter();
22
+ this.hideAppTileClick = new EventEmitter();
23
+ this.renameAppTileClick = new EventEmitter();
24
+ this.toggleGroup = new EventEmitter();
25
+ this.resetGroup = new EventEmitter();
26
+ this.deleteGroup = new EventEmitter();
27
+ this.marginRightTile = null;
28
+ }
29
+ ngAfterViewInit() {
30
+ super.ngAfterViewInit();
31
+ if (this.deviceSize === 's') {
32
+ const t = document.body.clientWidth % 154;
33
+ this.marginRightTile = t / 3;
34
+ }
35
+ }
36
+ onDrop(appTileGroup, event) {
37
+ if (!this.edit || appTileGroup.Locked) {
38
+ return;
39
+ }
40
+ this.tilesDropped.emit({ appTileGroup, event });
41
+ }
42
+ onAppTileHideClick(appTile) {
43
+ this.hideAppTileClick.emit(appTile);
44
+ }
45
+ onAppTileRenameClick(appTile) {
46
+ this.renameAppTileClick.emit(appTile);
47
+ }
48
+ onDelete(appTileGroup) {
49
+ this.deleteGroup.emit(appTileGroup);
50
+ }
51
+ onToggleShowHide(appTileGroup) {
52
+ this.toggleGroup.emit(appTileGroup);
53
+ }
54
+ onReset(appTileGroup) {
55
+ this.resetGroup.emit(appTileGroup);
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TilesViewerGroupComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: { appTileGroup: "appTileGroup", stackContent: "stackContent", edit: "edit", rtl: "rtl", isAppTileSubGroup: "isAppTileSubGroup", deviceSize: "deviceSize" }, 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]=\"edit\" cdkDrag [cdkDragDisabled]=\"!edit || !stackContent\">\n @if (edit || stackContent || isAppTileSubGroup) {\n <fd-layout-panel-header>\n <fd-layout-panel-head>\n <h2 fd-layout-panel-title>{{ appTileGroup.navigatorTitle }}</h2>\n </fd-layout-panel-head>\n @if (edit) {\n <fd-layout-panel-actions class=\"group-btns\">\n <fd-toolbar [shouldOverflow]=\"false\" [fdType]=\"'transparent'\" [clearBorder]=\"true\">\n <button\n fd-button\n fd-toolbar-item\n [label]=\"!appTileGroup.navigatorVisible ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\n (click)=\"onToggleShowHide(appTileGroup)\"\n ></button>\n @if (appTileGroup.Predefined && appTileGroup.$TileSettingChanged) {\n <button fd-button [label]=\"'Refresh' | bbbTranslate\" (click)=\"onReset(appTileGroup)\"></button>\n } @if (!appTileGroup.Predefined) {\n <button\n fd-button\n [label]=\"'Delete' | bbbTranslate\"\n [fdType]=\"'negative'\"\n (click)=\"onDelete(appTileGroup)\"\n ></button>\n }\n </fd-toolbar>\n </fd-layout-panel-actions>\n }\n </fd-layout-panel-header>\n }\n <fd-layout-panel-body [bleed]=\"!stackContent\" [class.small-size]=\"deviceSize === 's'\">\n <div\n class=\"tile-wrapper\"\n [ngClass]=\"{ rtl: rtl, ltr: !rtl, s: deviceSize === 's' }\"\n fd-panel-content\n #tiles=\"cdkDropList\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\n [cdkDropListConnectedTo]=\"actionLinks\"\n [cdkDropListData]=\"{\n isTile: true,\n items: appTileGroup.navigatorTiles || []\n }\"\n >\n @if (!edit) { @if (!appTileGroup.$TilesLoaded) {\n <fd-busy-indicator fd-title [loading]=\"true\"></fd-busy-indicator>\n } @else if (!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded) {\n <h5 fd-title></h5>\n } } @for (appTile of appTileGroup.navigatorTiles; track appTile; let k = $index) {\n <div\n [class.edit-home]=\"edit\"\n [class.isdouble]=\"appTile.Component?.Settings?.TileSetting?.IsDouble\"\n cdkDrag\n [cdkDragDisabled]=\"!edit || appTileGroup.Locked\"\n >\n <span\n [dynamicCommand]=\"appTile.DynamicCommand\"\n [enableCommand]=\"!edit && appTile.Component\"\n tileRenderer\n [data]=\"appTile\"\n [edit]=\"edit\"\n [component]=\"appTile.Component\"\n (hideClick)=\"onAppTileHideClick(appTile)\"\n (renameClick)=\"onAppTileRenameClick(appTile)\"\n ></span>\n </div>\n } @if (edit) {\n <fd-tile class=\"add-tile\" [routerLink]=\"['/home/appfinder']\">\n <div>\n <fd-icon glyph=\"add\"></fd-icon>\n </div>\n </fd-tile>\n }\n </div>\n </fd-layout-panel-body>\n</fd-layout-panel>\n\n<bt-actions-link\n [class.actions-link-edit-home]=\"edit\"\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\n [edit]=\"edit\"\n [style.min-height]=\"edit ? '4rem' : 'auto'\"\n cdkDropList\n #actionLinks=\"cdkDropList\"\n cdkDropListOrientation=\"horizontal\"\n [cdkDropListConnectedTo]=\"tiles\"\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\n [cdkDropListData]=\"{\n isTile: false,\n items: appTileGroup.navigatorActionLinks || []\n }\"\n>\n</bt-actions-link>\n@for (appTileSubGroup of appTileGroup.$Children; track appTileSubGroup) {\n<bt-tiles-viewer-group\n [appTileGroup]=\"appTileSubGroup\"\n [edit]=\"edit\"\n [rtl]=\"rtl\"\n [stackContent]=\"stackContent\"\n [isAppTileSubGroup]=\"true\"\n [deviceSize]=\"deviceSize\"\n (tilesDropped)=\"tilesDropped.emit($event)\"\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\n (resetGroup)=\"resetGroup.emit($event)\"\n (deleteGroup)=\"deleteGroup.emit($event)\"\n (toggleGroup)=\"toggleGroup.emit($event)\"\n></bt-tiles-viewer-group>\n}\n", styles: [":host{display:block}fd-layout-panel{box-shadow:none}fd-layout-panel fd-layout-panel-body:not(.small-size){margin-top:.5rem}fd-layout-panel fd-layout-panel-body.small-size{padding:1rem .5rem}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{column-gap:3px;row-gap:1rem;display:inline-flex;flex-wrap:wrap;align-items:center}.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}fd-layout-panel-body.small-size{display:flex;justify-content:center}fd-layout-panel-body.small-size .tile-wrapper{display:grid;grid-template-columns:154px 154px;gap:1rem}fd-layout-panel-body.small-size .tile-wrapper .isdouble{grid-column-start:1;grid-column-end:3}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i6.LayoutPanelComponent, selector: "fd-layout-panel", inputs: ["backgroundImage", "id", "transparent"] }, { 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: "[fd-title], [fdTitle]", 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: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i10.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i11.ActionsLinkComponent, selector: "bt-actions-link", inputs: ["actionsLink", "edit"] }, { kind: "component", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "edit", "rtl", "isAppTileSubGroup", "deviceSize"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "directive", type: i12.TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "edit"], outputs: ["hideClick", "renameClick"] }, { kind: "pipe", type: i13.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TilesViewerGroupComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ selector: 'bt-tiles-viewer-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-layout-panel [fixed]=\"true\" [attr.editHome]=\"edit\" cdkDrag [cdkDragDisabled]=\"!edit || !stackContent\">\n @if (edit || stackContent || isAppTileSubGroup) {\n <fd-layout-panel-header>\n <fd-layout-panel-head>\n <h2 fd-layout-panel-title>{{ appTileGroup.navigatorTitle }}</h2>\n </fd-layout-panel-head>\n @if (edit) {\n <fd-layout-panel-actions class=\"group-btns\">\n <fd-toolbar [shouldOverflow]=\"false\" [fdType]=\"'transparent'\" [clearBorder]=\"true\">\n <button\n fd-button\n fd-toolbar-item\n [label]=\"!appTileGroup.navigatorVisible ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\n (click)=\"onToggleShowHide(appTileGroup)\"\n ></button>\n @if (appTileGroup.Predefined && appTileGroup.$TileSettingChanged) {\n <button fd-button [label]=\"'Refresh' | bbbTranslate\" (click)=\"onReset(appTileGroup)\"></button>\n } @if (!appTileGroup.Predefined) {\n <button\n fd-button\n [label]=\"'Delete' | bbbTranslate\"\n [fdType]=\"'negative'\"\n (click)=\"onDelete(appTileGroup)\"\n ></button>\n }\n </fd-toolbar>\n </fd-layout-panel-actions>\n }\n </fd-layout-panel-header>\n }\n <fd-layout-panel-body [bleed]=\"!stackContent\" [class.small-size]=\"deviceSize === 's'\">\n <div\n class=\"tile-wrapper\"\n [ngClass]=\"{ rtl: rtl, ltr: !rtl, s: deviceSize === 's' }\"\n fd-panel-content\n #tiles=\"cdkDropList\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\n [cdkDropListConnectedTo]=\"actionLinks\"\n [cdkDropListData]=\"{\n isTile: true,\n items: appTileGroup.navigatorTiles || []\n }\"\n >\n @if (!edit) { @if (!appTileGroup.$TilesLoaded) {\n <fd-busy-indicator fd-title [loading]=\"true\"></fd-busy-indicator>\n } @else if (!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded) {\n <h5 fd-title></h5>\n } } @for (appTile of appTileGroup.navigatorTiles; track appTile; let k = $index) {\n <div\n [class.edit-home]=\"edit\"\n [class.isdouble]=\"appTile.Component?.Settings?.TileSetting?.IsDouble\"\n cdkDrag\n [cdkDragDisabled]=\"!edit || appTileGroup.Locked\"\n >\n <span\n [dynamicCommand]=\"appTile.DynamicCommand\"\n [enableCommand]=\"!edit && appTile.Component\"\n tileRenderer\n [data]=\"appTile\"\n [edit]=\"edit\"\n [component]=\"appTile.Component\"\n (hideClick)=\"onAppTileHideClick(appTile)\"\n (renameClick)=\"onAppTileRenameClick(appTile)\"\n ></span>\n </div>\n } @if (edit) {\n <fd-tile class=\"add-tile\" [routerLink]=\"['/home/appfinder']\">\n <div>\n <fd-icon glyph=\"add\"></fd-icon>\n </div>\n </fd-tile>\n }\n </div>\n </fd-layout-panel-body>\n</fd-layout-panel>\n\n<bt-actions-link\n [class.actions-link-edit-home]=\"edit\"\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\n [edit]=\"edit\"\n [style.min-height]=\"edit ? '4rem' : 'auto'\"\n cdkDropList\n #actionLinks=\"cdkDropList\"\n cdkDropListOrientation=\"horizontal\"\n [cdkDropListConnectedTo]=\"tiles\"\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\n [cdkDropListData]=\"{\n isTile: false,\n items: appTileGroup.navigatorActionLinks || []\n }\"\n>\n</bt-actions-link>\n@for (appTileSubGroup of appTileGroup.$Children; track appTileSubGroup) {\n<bt-tiles-viewer-group\n [appTileGroup]=\"appTileSubGroup\"\n [edit]=\"edit\"\n [rtl]=\"rtl\"\n [stackContent]=\"stackContent\"\n [isAppTileSubGroup]=\"true\"\n [deviceSize]=\"deviceSize\"\n (tilesDropped)=\"tilesDropped.emit($event)\"\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\n (resetGroup)=\"resetGroup.emit($event)\"\n (deleteGroup)=\"deleteGroup.emit($event)\"\n (toggleGroup)=\"toggleGroup.emit($event)\"\n></bt-tiles-viewer-group>\n}\n", styles: [":host{display:block}fd-layout-panel{box-shadow:none}fd-layout-panel fd-layout-panel-body:not(.small-size){margin-top:.5rem}fd-layout-panel fd-layout-panel-body.small-size{padding:1rem .5rem}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{column-gap:3px;row-gap:1rem;display:inline-flex;flex-wrap:wrap;align-items:center}.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}fd-layout-panel-body.small-size{display:flex;justify-content:center}fd-layout-panel-body.small-size .tile-wrapper{display:grid;grid-template-columns:154px 154px;gap:1rem}fd-layout-panel-body.small-size .tile-wrapper .isdouble{grid-column-start:1;grid-column-end:3}\n"] }]
63
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { appTileGroup: [{
64
+ type: Input
65
+ }], stackContent: [{
66
+ type: Input
67
+ }], edit: [{
68
+ type: Input
69
+ }], rtl: [{
70
+ type: Input
71
+ }], isAppTileSubGroup: [{
72
+ type: Input
73
+ }], deviceSize: [{
74
+ type: Input
75
+ }], tilesDropped: [{
76
+ type: Output
77
+ }], hideAppTileClick: [{
78
+ type: Output
79
+ }], renameAppTileClick: [{
80
+ type: Output
81
+ }], toggleGroup: [{
82
+ type: Output
83
+ }], resetGroup: [{
84
+ type: Output
85
+ }], deleteGroup: [{
86
+ type: Output
87
+ }] } });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMtdmlld2VyLWdyb3VwL3RpbGVzLXZpZXdlci1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1ncm91cC90aWxlcy12aWV3ZXItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RyxPQUFPLEVBQUUsYUFBYSxFQUE4QyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFRakcsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGFBQWE7SUFtQnhELFlBQXNCLEdBQWU7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFEVSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBWDNCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBR3JDLENBQUM7UUFDSyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUMzRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUM3RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3RELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNyRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRWhFLG9CQUFlLEdBQWtCLElBQUksQ0FBQztJQUd0QyxDQUFDO0lBRUQsZUFBZTtRQUNYLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDMUIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1lBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FDRixZQUFpQyxFQUNqQyxLQUFxRTtRQUVyRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxPQUE0QjtRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxPQUE0QjtRQUM3QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxRQUFRLENBQUMsWUFBaUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQWlDO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxPQUFPLENBQUMsWUFBaUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs4R0F4RFEseUJBQXlCO2tHQUF6Qix5QkFBeUIscWNDWHRDLG9rSkE4R0EscTRJRG5HYSx5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0ksdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNOytFQUd0QyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUlHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIE1ldGFvYmplY3REYXRhTW9kZWwsIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdidC10aWxlcy12aWV3ZXItZ3JvdXAnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbGVzLXZpZXdlci1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90aWxlcy12aWV3ZXItZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaWxlc1ZpZXdlckdyb3VwQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSBhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcbiAgICBASW5wdXQoKSBzdGFja0NvbnRlbnQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBlZGl0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcnRsOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaXNBcHBUaWxlU3ViR3JvdXA6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBkZXZpY2VTaXplOiBBYmJyZXZhdGlvbkRldmljZVNpemU7XHJcblxyXG4gICAgQE91dHB1dCgpIHRpbGVzRHJvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICAgIGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgICAgICBldmVudDogQ2RrRHJhZ0Ryb3A8eyBpc1RpbGU6IGJvb2xlYW47IGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gfT47XHJcbiAgICB9PigpO1xyXG4gICAgQE91dHB1dCgpIGhpZGVBcHBUaWxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgcmVuYW1lQXBwVGlsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xyXG4gICAgQE91dHB1dCgpIHRvZ2dsZUdyb3VwID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xyXG4gICAgQE91dHB1dCgpIHJlc2V0R3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgZGVsZXRlR3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcblxyXG4gICAgbWFyZ2luUmlnaHRUaWxlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcclxuICAgICAgICBpZiAodGhpcy5kZXZpY2VTaXplID09PSAncycpIHtcclxuICAgICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggJSAxNTQ7XHJcbiAgICAgICAgICAgIHRoaXMubWFyZ2luUmlnaHRUaWxlID0gdCAvIDM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uRHJvcChcclxuICAgICAgICBhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsXHJcbiAgICAgICAgZXZlbnQ6IENka0RyYWdEcm9wPHsgaXNUaWxlOiBib29sZWFuOyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdIH0+XHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuZWRpdCB8fCBhcHBUaWxlR3JvdXAuTG9ja2VkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aWxlc0Ryb3BwZWQuZW1pdCh7IGFwcFRpbGVHcm91cCwgZXZlbnQgfSk7XHJcbiAgICB9XHJcbiAgICBvbkFwcFRpbGVIaWRlQ2xpY2soYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGlkZUFwcFRpbGVDbGljay5lbWl0KGFwcFRpbGUpO1xyXG4gICAgfVxyXG4gICAgb25BcHBUaWxlUmVuYW1lQ2xpY2soYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVuYW1lQXBwVGlsZUNsaWNrLmVtaXQoYXBwVGlsZSk7XHJcbiAgICB9XHJcbiAgICBvbkRlbGV0ZShhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlbGV0ZUdyb3VwLmVtaXQoYXBwVGlsZUdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBvblRvZ2dsZVNob3dIaWRlKGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlR3JvdXAuZW1pdChhcHBUaWxlR3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUmVzZXQoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yZXNldEdyb3VwLmVtaXQoYXBwVGlsZUdyb3VwKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZmQtbGF5b3V0LXBhbmVsIFtmaXhlZF09XCJ0cnVlXCIgW2F0dHIuZWRpdEhvbWVdPVwiZWRpdFwiIGNka0RyYWcgW2Nka0RyYWdEaXNhYmxlZF09XCIhZWRpdCB8fCAhc3RhY2tDb250ZW50XCI+XG4gICAgQGlmIChlZGl0IHx8IHN0YWNrQ29udGVudCB8fCBpc0FwcFRpbGVTdWJHcm91cCkge1xuICAgIDxmZC1sYXlvdXQtcGFuZWwtaGVhZGVyPlxuICAgICAgICA8ZmQtbGF5b3V0LXBhbmVsLWhlYWQ+XG4gICAgICAgICAgICA8aDIgZmQtbGF5b3V0LXBhbmVsLXRpdGxlPnt7IGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSB9fTwvaDI+XG4gICAgICAgIDwvZmQtbGF5b3V0LXBhbmVsLWhlYWQ+XG4gICAgICAgIEBpZiAoZWRpdCkge1xuICAgICAgICA8ZmQtbGF5b3V0LXBhbmVsLWFjdGlvbnMgY2xhc3M9XCJncm91cC1idG5zXCI+XG4gICAgICAgICAgICA8ZmQtdG9vbGJhciBbc2hvdWxkT3ZlcmZsb3ddPVwiZmFsc2VcIiBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIiBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiIWFwcFRpbGVHcm91cC5uYXZpZ2F0b3JWaXNpYmxlID8gKCdTaG93JyB8IGJiYlRyYW5zbGF0ZSkgOiAoJ0hpZGUnIHwgYmJiVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZVNob3dIaWRlKGFwcFRpbGVHcm91cClcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICBAaWYgKGFwcFRpbGVHcm91cC5QcmVkZWZpbmVkICYmIGFwcFRpbGVHcm91cC4kVGlsZVNldHRpbmdDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gW2xhYmVsXT1cIidSZWZyZXNoJyB8IGJiYlRyYW5zbGF0ZVwiIChjbGljayk9XCJvblJlc2V0KGFwcFRpbGVHcm91cClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9IEBpZiAoIWFwcFRpbGVHcm91cC5QcmVkZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidEZWxldGUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCInbmVnYXRpdmUnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKGFwcFRpbGVHcm91cClcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2ZkLXRvb2xiYXI+XG4gICAgICAgIDwvZmQtbGF5b3V0LXBhbmVsLWFjdGlvbnM+XG4gICAgICAgIH1cbiAgICA8L2ZkLWxheW91dC1wYW5lbC1oZWFkZXI+XG4gICAgfVxuICAgIDxmZC1sYXlvdXQtcGFuZWwtYm9keSBbYmxlZWRdPVwiIXN0YWNrQ29udGVudFwiIFtjbGFzcy5zbWFsbC1zaXplXT1cImRldmljZVNpemUgPT09ICdzJ1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInRpbGUtd3JhcHBlclwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IHJ0bDogcnRsLCBsdHI6ICFydGwsIHM6IGRldmljZVNpemUgPT09ICdzJyB9XCJcbiAgICAgICAgICAgIGZkLXBhbmVsLWNvbnRlbnRcbiAgICAgICAgICAgICN0aWxlcz1cImNka0Ryb3BMaXN0XCJcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcChhcHBUaWxlR3JvdXAsICRldmVudClcIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiYWN0aW9uTGlua3NcIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJ7XG4gICAgICAgICAgICAgICAgaXNUaWxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGlsZXMgfHwgW11cbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKCFlZGl0KSB7IEBpZiAoIWFwcFRpbGVHcm91cC4kVGlsZXNMb2FkZWQpIHtcbiAgICAgICAgICAgIDxmZC1idXN5LWluZGljYXRvciBmZC10aXRsZSBbbG9hZGluZ109XCJ0cnVlXCI+PC9mZC1idXN5LWluZGljYXRvcj5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCFhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGlsZXMubGVuZ3RoICYmIGFwcFRpbGVHcm91cC4kVGlsZXNMb2FkZWQpIHtcbiAgICAgICAgICAgIDxoNSBmZC10aXRsZT48L2g1PlxuICAgICAgICAgICAgfSB9IEBmb3IgKGFwcFRpbGUgb2YgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpbGVzOyB0cmFjayBhcHBUaWxlOyBsZXQgayA9ICRpbmRleCkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIFtjbGFzcy5lZGl0LWhvbWVdPVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzZG91YmxlXT1cImFwcFRpbGUuQ29tcG9uZW50Py5TZXR0aW5ncz8uVGlsZVNldHRpbmc/LklzRG91YmxlXCJcbiAgICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhZWRpdCB8fCBhcHBUaWxlR3JvdXAuTG9ja2VkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbZHluYW1pY0NvbW1hbmRdPVwiYXBwVGlsZS5EeW5hbWljQ29tbWFuZFwiXG4gICAgICAgICAgICAgICAgICAgIFtlbmFibGVDb21tYW5kXT1cIiFlZGl0ICYmIGFwcFRpbGUuQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgdGlsZVJlbmRlcmVyXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImFwcFRpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbZWRpdF09XCJlZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbXBvbmVudF09XCJhcHBUaWxlLkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICAgIChoaWRlQ2xpY2spPVwib25BcHBUaWxlSGlkZUNsaWNrKGFwcFRpbGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKHJlbmFtZUNsaWNrKT1cIm9uQXBwVGlsZVJlbmFtZUNsaWNrKGFwcFRpbGUpXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBpZiAoZWRpdCkge1xuICAgICAgICAgICAgPGZkLXRpbGUgY2xhc3M9XCJhZGQtdGlsZVwiIFtyb3V0ZXJMaW5rXT1cIlsnL2hvbWUvYXBwZmluZGVyJ11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cImFkZFwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZmQtdGlsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mZC1sYXlvdXQtcGFuZWwtYm9keT5cbjwvZmQtbGF5b3V0LXBhbmVsPlxuXG48YnQtYWN0aW9ucy1saW5rXG4gICAgW2NsYXNzLmFjdGlvbnMtbGluay1lZGl0LWhvbWVdPVwiZWRpdFwiXG4gICAgW2FjdGlvbnNMaW5rXT1cImFwcFRpbGVHcm91cC5uYXZpZ2F0b3JBY3Rpb25MaW5rc1wiXG4gICAgW2VkaXRdPVwiZWRpdFwiXG4gICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwiZWRpdCA/ICc0cmVtJyA6ICdhdXRvJ1wiXG4gICAgY2RrRHJvcExpc3RcbiAgICAjYWN0aW9uTGlua3M9XCJjZGtEcm9wTGlzdFwiXG4gICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cInRpbGVzXCJcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcChhcHBUaWxlR3JvdXAsICRldmVudClcIlxuICAgIFtjZGtEcm9wTGlzdERhdGFdPVwie1xuICAgICAgICBpc1RpbGU6IGZhbHNlLFxuICAgICAgICBpdGVtczogYXBwVGlsZUdyb3VwLm5hdmlnYXRvckFjdGlvbkxpbmtzIHx8IFtdXG4gICAgfVwiXG4+XG48L2J0LWFjdGlvbnMtbGluaz5cbkBmb3IgKGFwcFRpbGVTdWJHcm91cCBvZiBhcHBUaWxlR3JvdXAuJENoaWxkcmVuOyB0cmFjayBhcHBUaWxlU3ViR3JvdXApIHtcbjxidC10aWxlcy12aWV3ZXItZ3JvdXBcbiAgICBbYXBwVGlsZUdyb3VwXT1cImFwcFRpbGVTdWJHcm91cFwiXG4gICAgW2VkaXRdPVwiZWRpdFwiXG4gICAgW3J0bF09XCJydGxcIlxuICAgIFtzdGFja0NvbnRlbnRdPVwic3RhY2tDb250ZW50XCJcbiAgICBbaXNBcHBUaWxlU3ViR3JvdXBdPVwidHJ1ZVwiXG4gICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgKHRpbGVzRHJvcHBlZCk9XCJ0aWxlc0Ryb3BwZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAocmVuYW1lQXBwVGlsZUNsaWNrKT1cInJlbmFtZUFwcFRpbGVDbGljay5lbWl0KCRldmVudClcIlxuICAgIChoaWRlQXBwVGlsZUNsaWNrKT1cImhpZGVBcHBUaWxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAocmVzZXRHcm91cCk9XCJyZXNldEdyb3VwLmVtaXQoJGV2ZW50KVwiXG4gICAgKGRlbGV0ZUdyb3VwKT1cImRlbGV0ZUdyb3VwLmVtaXQoJGV2ZW50KVwiXG4gICAgKHRvZ2dsZUdyb3VwKT1cInRvZ2dsZUdyb3VwLmVtaXQoJGV2ZW50KVwiXG4+PC9idC10aWxlcy12aWV3ZXItZ3JvdXA+XG59XG4iXX0=