barsa-tiles 2.2.73 → 2.2.75

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 (78) hide show
  1. package/fesm2022/barsa-tiles.mjs +215 -206
  2. package/fesm2022/barsa-tiles.mjs.map +1 -1
  3. package/lib/shellbar/shellbar.component.d.ts +2 -2
  4. package/lib/tiles.service.d.ts +1 -1
  5. package/package.json +3 -5
  6. package/esm2022/barsa-tiles.mjs +0 -5
  7. package/esm2022/lib/action-item/action-item.component.mjs +0 -17
  8. package/esm2022/lib/action-links.pipe.mjs +0 -17
  9. package/esm2022/lib/actions-link/actions-link.component.mjs +0 -50
  10. package/esm2022/lib/app-finder/app-finder.component.mjs +0 -52
  11. package/esm2022/lib/app-finder-app-list/app-finder-app-list.component.mjs +0 -38
  12. package/esm2022/lib/app-finder-group/app-finder-group.component.mjs +0 -41
  13. package/esm2022/lib/app-finder.service.mjs +0 -121
  14. package/esm2022/lib/barsa-pin-app/barsa-pin-app.component.mjs +0 -34
  15. package/esm2022/lib/barsa-shellbar/barsa-shellbar.component.mjs +0 -183
  16. package/esm2022/lib/barsa-tile-group-page/barsa-tile-group-page.component.mjs +0 -85
  17. package/esm2022/lib/barsa-tile-sidebar-page/barsa-tile-sidebar-page.component.mjs +0 -45
  18. package/esm2022/lib/barsa-tiles-routing.module.mjs +0 -58
  19. package/esm2022/lib/barsa-tiles.module.mjs +0 -288
  20. package/esm2022/lib/card-tile/card-tile.component.mjs +0 -34
  21. package/esm2022/lib/change-app-tile/change-app-tile.component.mjs +0 -46
  22. package/esm2022/lib/create-app-group/create-app-group.component.mjs +0 -43
  23. package/esm2022/lib/directives/emptylist.directive.mjs +0 -37
  24. package/esm2022/lib/directives/tile-class.directive.mjs +0 -51
  25. package/esm2022/lib/directives/tile-dynamic-command.directive.mjs +0 -77
  26. package/esm2022/lib/feed-tile/feed-tile.component.mjs +0 -31
  27. package/esm2022/lib/footer-edit-tile/footer-edit-tile.component.mjs +0 -13
  28. package/esm2022/lib/footer-tile/footer-tile.component.mjs +0 -22
  29. package/esm2022/lib/form-app-finder/form-app-finder.component.mjs +0 -96
  30. package/esm2022/lib/form-tile/form-tile.component.mjs +0 -34
  31. package/esm2022/lib/logo-tile/logo-tile.component.mjs +0 -23
  32. package/esm2022/lib/micro-tile-chart-area/micro-tile-chart-area.component.mjs +0 -40
  33. package/esm2022/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.mjs +0 -16
  34. package/esm2022/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.mjs +0 -26
  35. package/esm2022/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.mjs +0 -20
  36. package/esm2022/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.mjs +0 -31
  37. package/esm2022/lib/micro-tile-chart-line/micro-tile-chart-line.component.mjs +0 -32
  38. package/esm2022/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.mjs +0 -27
  39. package/esm2022/lib/models/app-tile-footer-section.mjs +0 -2
  40. package/esm2022/lib/models/app-tile-footer.mjs +0 -2
  41. package/esm2022/lib/models/app-tile-group-pin.mjs +0 -2
  42. package/esm2022/lib/models/base-bt-tile-component.mjs +0 -27
  43. package/esm2022/lib/models/base-tile-component.mjs +0 -59
  44. package/esm2022/lib/models/base-tile-setting.mjs +0 -2
  45. package/esm2022/lib/models/feed-tile-setting.mjs +0 -2
  46. package/esm2022/lib/models/index.mjs +0 -14
  47. package/esm2022/lib/models/logo-tile-setting.mjs +0 -2
  48. package/esm2022/lib/models/micro-tile-chart-bullet-setting.mjs +0 -2
  49. package/esm2022/lib/models/news-tile-setting.mjs +0 -2
  50. package/esm2022/lib/models/numeric-tile-setting.mjs +0 -2
  51. package/esm2022/lib/models/profile-tile-setting.mjs +0 -2
  52. package/esm2022/lib/models/tile-setting.mjs +0 -2
  53. package/esm2022/lib/models/user-portal-settings.mjs +0 -2
  54. package/esm2022/lib/news-tile/news-tile.component.mjs +0 -53
  55. package/esm2022/lib/notification-group/notification-group.component.mjs +0 -111
  56. package/esm2022/lib/notification-group-header/notification-group-header.component.mjs +0 -38
  57. package/esm2022/lib/numeric-tile/numeric-tile.component.mjs +0 -64
  58. package/esm2022/lib/pin-tile/pin-tile.component.mjs +0 -110
  59. package/esm2022/lib/pipes/group-tiles.pipe.mjs +0 -32
  60. package/esm2022/lib/pipes/home-group.pipe.mjs +0 -18
  61. package/esm2022/lib/pipes/tile-home-filter.pipe.mjs +0 -29
  62. package/esm2022/lib/pipes/tile-prop.pipe.mjs +0 -51
  63. package/esm2022/lib/popover-app-finder/filter-apps-grouped.pipe.mjs +0 -36
  64. package/esm2022/lib/popover-app-finder/popover-app-finder.component.mjs +0 -102
  65. package/esm2022/lib/profile-tile/profile-tile.component.mjs +0 -34
  66. package/esm2022/lib/report-tile/report-tile.component.mjs +0 -38
  67. package/esm2022/lib/shellbar/shellbar.component.mjs +0 -234
  68. package/esm2022/lib/simple-tile/simple-tile.component.mjs +0 -28
  69. package/esm2022/lib/tile/tile.component.mjs +0 -51
  70. package/esm2022/lib/tile-renderer.directive.mjs +0 -86
  71. package/esm2022/lib/tile-size.directive.mjs +0 -31
  72. package/esm2022/lib/tile-style.directive.mjs +0 -30
  73. package/esm2022/lib/tiles-viewer/tiles-viewer.component.mjs +0 -188
  74. package/esm2022/lib/tiles-viewer-container/tiles-viewer-container.component.mjs +0 -173
  75. package/esm2022/lib/tiles-viewer-group/tiles-viewer-group.component.mjs +0 -91
  76. package/esm2022/lib/tiles-viewer.service.mjs +0 -130
  77. package/esm2022/lib/tiles.service.mjs +0 -614
  78. package/esm2022/public-api.mjs +0 -52
@@ -1,91 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, inject } 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/router";
6
- import * as i3 from "@angular/cdk/drag-drop";
7
- import * as i4 from "@fundamental-ngx/core/busy-indicator";
8
- import * as i5 from "@fundamental-ngx/core/button";
9
- import * as i6 from "@fundamental-ngx/core/icon";
10
- import * as i7 from "@fundamental-ngx/core/layout-panel";
11
- import * as i8 from "@fundamental-ngx/core/title";
12
- import * as i9 from "@fundamental-ngx/core/tile";
13
- import * as i10 from "@fundamental-ngx/core/toolbar";
14
- import * as i11 from "barsa-novin-ray-core";
15
- import * as i12 from "../actions-link/actions-link.component";
16
- import * as i13 from "../tile-renderer.directive";
17
- import * as i14 from "../directives/tile-class.directive";
18
- export class TilesViewerGroupComponent extends BaseComponent {
19
- constructor() {
20
- super(...arguments);
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
- this._el = inject(ElementRef);
29
- }
30
- ngAfterViewInit() {
31
- super.ngAfterViewInit();
32
- if (this.deviceSize === 's') {
33
- const t = document.body.clientWidth % 154;
34
- this.marginRightTile = t / 3;
35
- }
36
- }
37
- onDrop(appTileGroup, event) {
38
- if (!this.edit || appTileGroup.Locked) {
39
- return;
40
- }
41
- this.tilesDropped.emit({ appTileGroup, event });
42
- }
43
- onAppTileHideClick(appTile) {
44
- this.hideAppTileClick.emit(appTile);
45
- }
46
- onAppTileRenameClick(appTile) {
47
- this.renameAppTileClick.emit(appTile);
48
- }
49
- onDelete(appTileGroup) {
50
- this.deleteGroup.emit(appTileGroup);
51
- }
52
- onToggleShowHide(appTileGroup) {
53
- this.toggleGroup.emit(appTileGroup);
54
- }
55
- onReset(appTileGroup) {
56
- this.resetGroup.emit(appTileGroup);
57
- }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesViewerGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
59
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: { appTileGroup: "appTileGroup", stackContent: "stackContent", edit: "edit", rtl: "rtl", isAppTileSubGroup: "isAppTileSubGroup", deviceSize: "deviceSize", isLast: "isLast" }, outputs: { tilesDropped: "tilesDropped", hideAppTileClick: "hideAppTileClick", renameAppTileClick: "renameAppTileClick", toggleGroup: "toggleGroup", resetGroup: "resetGroup", deleteGroup: "deleteGroup" }, usesInheritance: true, ngImport: i0, template: "<fd-layout-panel\r\n [attr.editHome]=\"edit\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || !stackContent\"\r\n [ngClass]=\"appTileGroup.TileGroupType$Caption\"\r\n [class.empty-tiles-group]=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"\r\n [class.hide-header]=\"appTileGroup.HideHeader\"\r\n [style.background-color]=\"appTileGroup.BackgroundColor ? appTileGroup.BackgroundColor : null\"\r\n [class.custom-color]=\"appTileGroup.BackgroundColor\"\r\n>\r\n @if (edit || stackContent || isAppTileSubGroup || appTileGroup.HideHeader) {\r\n <fd-layout-panel-header>\r\n <fd-layout-panel-head>\r\n <h5 fd-layout-panel-title>{{ appTileGroup.navigatorTitle }}</h5>\r\n </fd-layout-panel-head>\r\n @if (edit) {\r\n <fd-layout-panel-actions class=\"group-btns\">\r\n <fd-toolbar [shouldOverflow]=\"false\" [fdType]=\"'transparent'\" [clearBorder]=\"true\">\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [label]=\"!appTileGroup.navigatorVisible ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\r\n (click)=\"onToggleShowHide(appTileGroup)\"\r\n ></button>\r\n @if (appTileGroup.Predefined && appTileGroup.$TileSettingChanged) {\r\n <button fd-button [label]=\"'Refresh' | bbbTranslate\" (click)=\"onReset(appTileGroup)\"></button>\r\n } @if (!appTileGroup.Predefined) {\r\n <button\r\n fd-button\r\n [label]=\"'Delete' | bbbTranslate\"\r\n [fdType]=\"'negative'\"\r\n (click)=\"onDelete(appTileGroup)\"\r\n ></button>\r\n }\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n }\r\n </fd-layout-panel-header>\r\n }\r\n <fd-layout-panel-body\r\n [class.small-size]=\"deviceSize === 's' || deviceSize === 'm'\"\r\n >\r\n <div\r\n class=\"tile-wrapper\"\r\n tilesCls\r\n [rtl]=\"rtl\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [deviceSize]=\"deviceSize\"\r\n [ngClass]=\"deviceSize\"\r\n #tiles=\"cdkDropList\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListConnectedTo]=\"actionLinks\"\r\n [cdkDropListData]=\"{\r\n isTile: true,\r\n items: appTileGroup.navigatorTiles || []\r\n }\"\r\n >\r\n @if (!edit) { @if (!appTileGroup.$TilesLoaded) {\r\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\r\n } @else if (!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded) {\r\n <h5 fd-title></h5>\r\n } } @for (appTile of appTileGroup?.navigatorTiles; track appTile.Id; let k = $index) {\r\n <div\r\n [class.edit-home]=\"edit\"\r\n [class.isdouble]=\"appTile.Component?.Settings?.TileSetting?.IsDouble\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || appTileGroup.Locked\"\r\n >\r\n <span\r\n [dynamicCommand]=\"appTile.DynamicCommand\"\r\n [setToStorage]=\"true\"\r\n [enableCommand]=\"!edit && appTile.Component\"\r\n tileRenderer\r\n [deviceSize]=\"deviceSize\"\r\n [data]=\"appTile\"\r\n [groupType]=\"appTileGroup.TileGroupType$Caption\"\r\n [edit]=\"edit\"\r\n [component]=\"appTile.Component\"\r\n (hideClick)=\"onAppTileHideClick(appTile)\"\r\n (renameClick)=\"onAppTileRenameClick(appTile)\"\r\n ></span>\r\n </div>\r\n } @if (edit) {\r\n <fd-tile class=\"add-tile\" [routerLink]=\"['/home/appfinder']\">\r\n <div style=\"margin: 0\">\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n </div>\r\n </fd-tile>\r\n }\r\n </div>\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<bt-actions-link\r\n [class.actions-link-edit-home]=\"edit\"\r\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [style.min-height]=\"edit ? '4rem' : 'auto'\"\r\n cdkDropList\r\n #actionLinks=\"cdkDropList\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListConnectedTo]=\"tiles\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListData]=\"{\r\n isTile: false,\r\n items: appTileGroup.navigatorActionLinks || []\r\n }\"\r\n>\r\n</bt-actions-link>\r\n@for (appTileSubGroup of appTileGroup.$Children; track appTileSubGroup.Id;let last=$last) {\r\n<bt-tiles-viewer-group\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileSubGroup\"\r\n [isLast]=\"last\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [stackContent]=\"stackContent\"\r\n [cssStyle]=\"appTileSubGroup.CssStyles\"\r\n [isAppTileSubGroup]=\"true\"\r\n [deviceSize]=\"deviceSize\"\r\n (tilesDropped)=\"tilesDropped.emit($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n></bt-tiles-viewer-group>\r\n}\r\n", styles: [":host{display:block}:host[islast=true]{margin-bottom:1rem}fd-layout-panel.custom-color{margin-top:1rem}fd-layout-panel.empty-tiles-group:not([edithome=true]){display:none}fd-layout-panel fd-layout-panel-header fd-layout-panel-head h5{font-weight:500}fd-layout-panel fd-layout-panel-body.small-size{padding:1rem .5rem}fd-layout-panel.hide-header fd-layout-panel-header{display:none}fd-layout-panel[editHome=false]{background-color: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.TilesGroup{column-gap:.5rem;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.TilesGroup{display:flex;row-gap:.5rem;column-gap:.5rem;justify-content:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.m{justify-content:start}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--s{max-height:6.25rem;min-height:6.25rem;min-width:8.25rem;max-width:8.25rem;display:flex;flex-direction:column;justify-content:space-between}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--s .fd-tile__header{height:1.25rem;max-height:1.25rem;min-height:1.25rem;text-align:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--s .fd-tile__subtitle{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--s .fd-tile__footer{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--launch .fd-tile__content{align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i7.LayoutPanelComponent, selector: "fd-layout-panel", inputs: ["backgroundImage", "id", "transparent"] }, { kind: "component", type: i7.LayoutPanelHeaderComponent, selector: "fd-layout-panel-header" }, { kind: "component", type: i7.LayoutPanelHeadComponent, selector: "fd-layout-panel-head" }, { kind: "directive", type: i7.LayoutPanelTitleDirective, selector: "[fd-layout-panel-title]" }, { kind: "component", type: i7.LayoutPanelActionsComponent, selector: "fd-layout-panel-actions" }, { kind: "component", type: i7.LayoutPanelBodyComponent, selector: "fd-layout-panel-body", inputs: ["bleed"] }, { kind: "component", type: i8.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { 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", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i10.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i11.DynamicStyleDirective, selector: "[cssStyle]", inputs: ["cssStyle"] }, { kind: "component", type: i12.ActionsLinkComponent, selector: "bt-actions-link", inputs: ["actionsLink", "edit", "deviceSize"] }, { kind: "component", type: TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "edit", "rtl", "isAppTileSubGroup", "deviceSize", "isLast"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "directive", type: i13.TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "groupType", "edit", "deviceSize", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["hideClick", "renameClick"] }, { kind: "directive", type: i14.TileClassDirective, selector: "[tilesCls]", inputs: ["rtl", "deviceSize", "appTileGroup"] }, { kind: "pipe", type: i11.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
60
- }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesViewerGroupComponent, decorators: [{
62
- type: Component,
63
- args: [{ selector: 'bt-tiles-viewer-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-layout-panel\r\n [attr.editHome]=\"edit\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || !stackContent\"\r\n [ngClass]=\"appTileGroup.TileGroupType$Caption\"\r\n [class.empty-tiles-group]=\"!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded\"\r\n [class.hide-header]=\"appTileGroup.HideHeader\"\r\n [style.background-color]=\"appTileGroup.BackgroundColor ? appTileGroup.BackgroundColor : null\"\r\n [class.custom-color]=\"appTileGroup.BackgroundColor\"\r\n>\r\n @if (edit || stackContent || isAppTileSubGroup || appTileGroup.HideHeader) {\r\n <fd-layout-panel-header>\r\n <fd-layout-panel-head>\r\n <h5 fd-layout-panel-title>{{ appTileGroup.navigatorTitle }}</h5>\r\n </fd-layout-panel-head>\r\n @if (edit) {\r\n <fd-layout-panel-actions class=\"group-btns\">\r\n <fd-toolbar [shouldOverflow]=\"false\" [fdType]=\"'transparent'\" [clearBorder]=\"true\">\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [label]=\"!appTileGroup.navigatorVisible ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\r\n (click)=\"onToggleShowHide(appTileGroup)\"\r\n ></button>\r\n @if (appTileGroup.Predefined && appTileGroup.$TileSettingChanged) {\r\n <button fd-button [label]=\"'Refresh' | bbbTranslate\" (click)=\"onReset(appTileGroup)\"></button>\r\n } @if (!appTileGroup.Predefined) {\r\n <button\r\n fd-button\r\n [label]=\"'Delete' | bbbTranslate\"\r\n [fdType]=\"'negative'\"\r\n (click)=\"onDelete(appTileGroup)\"\r\n ></button>\r\n }\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n }\r\n </fd-layout-panel-header>\r\n }\r\n <fd-layout-panel-body\r\n [class.small-size]=\"deviceSize === 's' || deviceSize === 'm'\"\r\n >\r\n <div\r\n class=\"tile-wrapper\"\r\n tilesCls\r\n [rtl]=\"rtl\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [deviceSize]=\"deviceSize\"\r\n [ngClass]=\"deviceSize\"\r\n #tiles=\"cdkDropList\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListConnectedTo]=\"actionLinks\"\r\n [cdkDropListData]=\"{\r\n isTile: true,\r\n items: appTileGroup.navigatorTiles || []\r\n }\"\r\n >\r\n @if (!edit) { @if (!appTileGroup.$TilesLoaded) {\r\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\r\n } @else if (!appTileGroup.navigatorTiles.length && appTileGroup.$TilesLoaded) {\r\n <h5 fd-title></h5>\r\n } } @for (appTile of appTileGroup?.navigatorTiles; track appTile.Id; let k = $index) {\r\n <div\r\n [class.edit-home]=\"edit\"\r\n [class.isdouble]=\"appTile.Component?.Settings?.TileSetting?.IsDouble\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!edit || appTileGroup.Locked\"\r\n >\r\n <span\r\n [dynamicCommand]=\"appTile.DynamicCommand\"\r\n [setToStorage]=\"true\"\r\n [enableCommand]=\"!edit && appTile.Component\"\r\n tileRenderer\r\n [deviceSize]=\"deviceSize\"\r\n [data]=\"appTile\"\r\n [groupType]=\"appTileGroup.TileGroupType$Caption\"\r\n [edit]=\"edit\"\r\n [component]=\"appTile.Component\"\r\n (hideClick)=\"onAppTileHideClick(appTile)\"\r\n (renameClick)=\"onAppTileRenameClick(appTile)\"\r\n ></span>\r\n </div>\r\n } @if (edit) {\r\n <fd-tile class=\"add-tile\" [routerLink]=\"['/home/appfinder']\">\r\n <div style=\"margin: 0\">\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n </div>\r\n </fd-tile>\r\n }\r\n </div>\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<bt-actions-link\r\n [class.actions-link-edit-home]=\"edit\"\r\n [actionsLink]=\"appTileGroup.navigatorActionLinks\"\r\n [edit]=\"edit\"\r\n [deviceSize]=\"deviceSize\"\r\n [style.min-height]=\"edit ? '4rem' : 'auto'\"\r\n cdkDropList\r\n #actionLinks=\"cdkDropList\"\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListConnectedTo]=\"tiles\"\r\n (cdkDropListDropped)=\"onDrop(appTileGroup, $event)\"\r\n [cdkDropListData]=\"{\r\n isTile: false,\r\n items: appTileGroup.navigatorActionLinks || []\r\n }\"\r\n>\r\n</bt-actions-link>\r\n@for (appTileSubGroup of appTileGroup.$Children; track appTileSubGroup.Id;let last=$last) {\r\n<bt-tiles-viewer-group\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileSubGroup\"\r\n [isLast]=\"last\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [stackContent]=\"stackContent\"\r\n [cssStyle]=\"appTileSubGroup.CssStyles\"\r\n [isAppTileSubGroup]=\"true\"\r\n [deviceSize]=\"deviceSize\"\r\n (tilesDropped)=\"tilesDropped.emit($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n></bt-tiles-viewer-group>\r\n}\r\n", styles: [":host{display:block}:host[islast=true]{margin-bottom:1rem}fd-layout-panel.custom-color{margin-top:1rem}fd-layout-panel.empty-tiles-group:not([edithome=true]){display:none}fd-layout-panel fd-layout-panel-header fd-layout-panel-head h5{font-weight:500}fd-layout-panel fd-layout-panel-body.small-size{padding:1rem .5rem}fd-layout-panel.hide-header fd-layout-panel-header{display:none}fd-layout-panel[editHome=false]{background-color: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.TilesGroup{column-gap:.5rem;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.TilesGroup{display:flex;row-gap:.5rem;column-gap:.5rem;justify-content:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup.m{justify-content:start}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--s{max-height:6.25rem;min-height:6.25rem;min-width:8.25rem;max-width:8.25rem;display:flex;flex-direction:column;justify-content:space-between}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--s .fd-tile__header{height:1.25rem;max-height:1.25rem;min-height:1.25rem;text-align:center}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--s .fd-tile__subtitle{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--s .fd-tile__footer{display:none}fd-layout-panel-body.small-size .tile-wrapper.TilesGroup ::ng-deep .fd-tile--launch .fd-tile__content{align-items:center;justify-content:center}\n"] }]
64
- }], propDecorators: { appTileGroup: [{
65
- type: Input
66
- }], stackContent: [{
67
- type: Input
68
- }], edit: [{
69
- type: Input
70
- }], rtl: [{
71
- type: Input
72
- }], isAppTileSubGroup: [{
73
- type: Input
74
- }], deviceSize: [{
75
- type: Input
76
- }], isLast: [{
77
- type: Input
78
- }], tilesDropped: [{
79
- type: Output
80
- }], hideAppTileClick: [{
81
- type: Output
82
- }], renameAppTileClick: [{
83
- type: Output
84
- }], toggleGroup: [{
85
- type: Output
86
- }], resetGroup: [{
87
- type: Output
88
- }], deleteGroup: [{
89
- type: Output
90
- }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMtdmlld2VyLWdyb3VwL3RpbGVzLXZpZXdlci1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1ncm91cC90aWxlcy12aWV3ZXItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBILE9BQU8sRUFBRSxhQUFhLEVBQThDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTakcsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGFBQWE7SUFQNUQ7O1FBZ0JjLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBR3JDLENBQUM7UUFDSyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUMzRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUM3RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3RELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNyRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRWhFLG9CQUFlLEdBQWtCLElBQUksQ0FBQztRQUM1QixRQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBb0N0QztJQWxDRyxlQUFlO1FBQ1gsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMxQixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7WUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUNGLFlBQWlDLEVBQ2pDLEtBQXFFO1FBRXJFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNELGtCQUFrQixDQUFDLE9BQTRCO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELG9CQUFvQixDQUFDLE9BQTRCO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELFFBQVEsQ0FBQyxZQUFpQztRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsWUFBaUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxZQUFpQztRQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDOytHQXZEUSx5QkFBeUI7bUdBQXpCLHlCQUF5Qix1ZENadEMsNm1MQW1JQSxnbExEdkhhLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDSSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs4QkFHUixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFJRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIE1ldGFvYmplY3REYXRhTW9kZWwsIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdidC10aWxlcy12aWV3ZXItZ3JvdXAnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbGVzLXZpZXdlci1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90aWxlcy12aWV3ZXItZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbGVzVmlld2VyR3JvdXBDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgIEBJbnB1dCgpIHN0YWNrQ29udGVudDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGVkaXQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc0FwcFRpbGVTdWJHcm91cDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcclxuICAgIEBJbnB1dCgpIGlzTGFzdDogYm9vbGVhbjtcclxuXHJcbiAgICBAT3V0cHV0KCkgdGlsZXNEcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICAgICAgYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgICAgIGV2ZW50OiBDZGtEcmFnRHJvcDx7IGlzVGlsZTogYm9vbGVhbjsgaXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB9PjtcclxuICAgIH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgaGlkZUFwcFRpbGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIEBPdXRwdXQoKSByZW5hbWVBcHBUaWxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgdG9nZ2xlR3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgcmVzZXRHcm91cCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIEBPdXRwdXQoKSBkZWxldGVHcm91cCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuXHJcbiAgICBtYXJnaW5SaWdodFRpbGU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIF9lbCA9IGluamVjdChFbGVtZW50UmVmKTtcclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGV2aWNlU2l6ZSA9PT0gJ3MnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHQgPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoICUgMTU0O1xyXG4gICAgICAgICAgICB0aGlzLm1hcmdpblJpZ2h0VGlsZSA9IHQgLyAzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkRyb3AoXHJcbiAgICAgICAgYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgICAgIGV2ZW50OiBDZGtEcmFnRHJvcDx7IGlzVGlsZTogYm9vbGVhbjsgaXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB9PlxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVkaXQgfHwgYXBwVGlsZUdyb3VwLkxvY2tlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGlsZXNEcm9wcGVkLmVtaXQoeyBhcHBUaWxlR3JvdXAsIGV2ZW50IH0pO1xyXG4gICAgfVxyXG4gICAgb25BcHBUaWxlSGlkZUNsaWNrKGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhpZGVBcHBUaWxlQ2xpY2suZW1pdChhcHBUaWxlKTtcclxuICAgIH1cclxuICAgIG9uQXBwVGlsZVJlbmFtZUNsaWNrKGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJlbmFtZUFwcFRpbGVDbGljay5lbWl0KGFwcFRpbGUpO1xyXG4gICAgfVxyXG4gICAgb25EZWxldGUoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZWxldGVHcm91cC5lbWl0KGFwcFRpbGVHcm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Ub2dnbGVTaG93SGlkZShhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZUdyb3VwLmVtaXQoYXBwVGlsZUdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJlc2V0KGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVzZXRHcm91cC5lbWl0KGFwcFRpbGVHcm91cCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGZkLWxheW91dC1wYW5lbFxyXG4gICAgW2F0dHIuZWRpdEhvbWVdPVwiZWRpdFwiXHJcbiAgICBjZGtEcmFnXHJcbiAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFlZGl0IHx8ICFzdGFja0NvbnRlbnRcIlxyXG4gICAgW25nQ2xhc3NdPVwiYXBwVGlsZUdyb3VwLlRpbGVHcm91cFR5cGUkQ2FwdGlvblwiXHJcbiAgICBbY2xhc3MuZW1wdHktdGlsZXMtZ3JvdXBdPVwiIWFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaWxlcy5sZW5ndGggJiYgYXBwVGlsZUdyb3VwLiRUaWxlc0xvYWRlZFwiXHJcbiAgICBbY2xhc3MuaGlkZS1oZWFkZXJdPVwiYXBwVGlsZUdyb3VwLkhpZGVIZWFkZXJcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYXBwVGlsZUdyb3VwLkJhY2tncm91bmRDb2xvciA/IGFwcFRpbGVHcm91cC5CYWNrZ3JvdW5kQ29sb3IgOiBudWxsXCJcclxuICAgIFtjbGFzcy5jdXN0b20tY29sb3JdPVwiYXBwVGlsZUdyb3VwLkJhY2tncm91bmRDb2xvclwiXHJcbj5cclxuICAgIEBpZiAoZWRpdCB8fCBzdGFja0NvbnRlbnQgfHwgaXNBcHBUaWxlU3ViR3JvdXAgfHwgYXBwVGlsZUdyb3VwLkhpZGVIZWFkZXIpIHtcclxuICAgIDxmZC1sYXlvdXQtcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxmZC1sYXlvdXQtcGFuZWwtaGVhZD5cclxuICAgICAgICAgICAgPGg1IGZkLWxheW91dC1wYW5lbC10aXRsZT57eyBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUgfX08L2g1PlxyXG4gICAgICAgIDwvZmQtbGF5b3V0LXBhbmVsLWhlYWQ+XHJcbiAgICAgICAgQGlmIChlZGl0KSB7XHJcbiAgICAgICAgPGZkLWxheW91dC1wYW5lbC1hY3Rpb25zIGNsYXNzPVwiZ3JvdXAtYnRuc1wiPlxyXG4gICAgICAgICAgICA8ZmQtdG9vbGJhciBbc2hvdWxkT3ZlcmZsb3ddPVwiZmFsc2VcIiBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIiBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIhYXBwVGlsZUdyb3VwLm5hdmlnYXRvclZpc2libGUgPyAoJ1Nob3cnIHwgYmJiVHJhbnNsYXRlKSA6ICgnSGlkZScgfCBiYmJUcmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVTaG93SGlkZShhcHBUaWxlR3JvdXApXCJcclxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIEBpZiAoYXBwVGlsZUdyb3VwLlByZWRlZmluZWQgJiYgYXBwVGlsZUdyb3VwLiRUaWxlU2V0dGluZ0NoYW5nZWQpIHtcclxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtsYWJlbF09XCInUmVmcmVzaCcgfCBiYmJUcmFuc2xhdGVcIiAoY2xpY2spPVwib25SZXNldChhcHBUaWxlR3JvdXApXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICB9IEBpZiAoIWFwcFRpbGVHcm91cC5QcmVkZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidEZWxldGUnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIiduZWdhdGl2ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZShhcHBUaWxlR3JvdXApXCJcclxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9mZC10b29sYmFyPlxyXG4gICAgICAgIDwvZmQtbGF5b3V0LXBhbmVsLWFjdGlvbnM+XHJcbiAgICAgICAgfVxyXG4gICAgPC9mZC1sYXlvdXQtcGFuZWwtaGVhZGVyPlxyXG4gICAgfVxyXG4gICAgPGZkLWxheW91dC1wYW5lbC1ib2R5XHJcbiAgICAgICAgW2NsYXNzLnNtYWxsLXNpemVdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnIHx8IGRldmljZVNpemUgPT09ICdtJ1wiXHJcbiAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInRpbGUtd3JhcHBlclwiXHJcbiAgICAgICAgICAgIHRpbGVzQ2xzXHJcbiAgICAgICAgICAgIFtydGxdPVwicnRsXCJcclxuICAgICAgICAgICAgW2FwcFRpbGVHcm91cF09XCJhcHBUaWxlR3JvdXBcIlxyXG4gICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgICAgICN0aWxlcz1cImNka0Ryb3BMaXN0XCJcclxuICAgICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcChhcHBUaWxlR3JvdXAsICRldmVudClcIlxyXG4gICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJhY3Rpb25MaW5rc1wiXHJcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwie1xyXG4gICAgICAgICAgICAgICAgaXNUaWxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgaXRlbXM6IGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaWxlcyB8fCBbXVxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEBpZiAoIWVkaXQpIHsgQGlmICghYXBwVGlsZUdyb3VwLiRUaWxlc0xvYWRlZCkge1xyXG4gICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwidHJ1ZVwiPjwvZmQtYnVzeS1pbmRpY2F0b3I+XHJcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCFhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGlsZXMubGVuZ3RoICYmIGFwcFRpbGVHcm91cC4kVGlsZXNMb2FkZWQpIHtcclxuICAgICAgICAgICAgPGg1IGZkLXRpdGxlPjwvaDU+XHJcbiAgICAgICAgICAgIH0gfSBAZm9yIChhcHBUaWxlIG9mIGFwcFRpbGVHcm91cD8ubmF2aWdhdG9yVGlsZXM7IHRyYWNrIGFwcFRpbGUuSWQ7IGxldCBrID0gJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5lZGl0LWhvbWVdPVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXNkb3VibGVdPVwiYXBwVGlsZS5Db21wb25lbnQ/LlNldHRpbmdzPy5UaWxlU2V0dGluZz8uSXNEb3VibGVcIlxyXG4gICAgICAgICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhZWRpdCB8fCBhcHBUaWxlR3JvdXAuTG9ja2VkXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBbZHluYW1pY0NvbW1hbmRdPVwiYXBwVGlsZS5EeW5hbWljQ29tbWFuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NldFRvU3RvcmFnZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbZW5hYmxlQ29tbWFuZF09XCIhZWRpdCAmJiBhcHBUaWxlLkNvbXBvbmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdGlsZVJlbmRlcmVyXHJcbiAgICAgICAgICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiYXBwVGlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2dyb3VwVHlwZV09XCJhcHBUaWxlR3JvdXAuVGlsZUdyb3VwVHlwZSRDYXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZWRpdF09XCJlZGl0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY29tcG9uZW50XT1cImFwcFRpbGUuQ29tcG9uZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAoaGlkZUNsaWNrKT1cIm9uQXBwVGlsZUhpZGVDbGljayhhcHBUaWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlbmFtZUNsaWNrKT1cIm9uQXBwVGlsZVJlbmFtZUNsaWNrKGFwcFRpbGUpXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9IEBpZiAoZWRpdCkge1xyXG4gICAgICAgICAgICA8ZmQtdGlsZSBjbGFzcz1cImFkZC10aWxlXCIgW3JvdXRlckxpbmtdPVwiWycvaG9tZS9hcHBmaW5kZXInXVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbjogMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwiYWRkXCI+PC9mZC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZmQtdGlsZT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9mZC1sYXlvdXQtcGFuZWwtYm9keT5cclxuPC9mZC1sYXlvdXQtcGFuZWw+XHJcblxyXG48YnQtYWN0aW9ucy1saW5rXHJcbiAgICBbY2xhc3MuYWN0aW9ucy1saW5rLWVkaXQtaG9tZV09XCJlZGl0XCJcclxuICAgIFthY3Rpb25zTGlua109XCJhcHBUaWxlR3JvdXAubmF2aWdhdG9yQWN0aW9uTGlua3NcIlxyXG4gICAgW2VkaXRdPVwiZWRpdFwiXHJcbiAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cImVkaXQgPyAnNHJlbScgOiAnYXV0bydcIlxyXG4gICAgY2RrRHJvcExpc3RcclxuICAgICNhY3Rpb25MaW5rcz1cImNka0Ryb3BMaXN0XCJcclxuICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cInRpbGVzXCJcclxuICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKGFwcFRpbGVHcm91cCwgJGV2ZW50KVwiXHJcbiAgICBbY2RrRHJvcExpc3REYXRhXT1cIntcclxuICAgICAgICBpc1RpbGU6IGZhbHNlLFxyXG4gICAgICAgIGl0ZW1zOiBhcHBUaWxlR3JvdXAubmF2aWdhdG9yQWN0aW9uTGlua3MgfHwgW11cclxuICAgIH1cIlxyXG4+XHJcbjwvYnQtYWN0aW9ucy1saW5rPlxyXG5AZm9yIChhcHBUaWxlU3ViR3JvdXAgb2YgYXBwVGlsZUdyb3VwLiRDaGlsZHJlbjsgdHJhY2sgYXBwVGlsZVN1Ykdyb3VwLklkO2xldCBsYXN0PSRsYXN0KSB7XHJcbjxidC10aWxlcy12aWV3ZXItZ3JvdXBcclxuICAgIFtjbGFzc109XCJkZXZpY2VTaXplXCJcclxuICAgIFthcHBUaWxlR3JvdXBdPVwiYXBwVGlsZVN1Ykdyb3VwXCJcclxuICAgIFtpc0xhc3RdPVwibGFzdFwiXHJcbiAgICBbZWRpdF09XCJlZGl0XCJcclxuICAgIFtydGxdPVwicnRsXCJcclxuICAgIFtzdGFja0NvbnRlbnRdPVwic3RhY2tDb250ZW50XCJcclxuICAgIFtjc3NTdHlsZV09XCJhcHBUaWxlU3ViR3JvdXAuQ3NzU3R5bGVzXCJcclxuICAgIFtpc0FwcFRpbGVTdWJHcm91cF09XCJ0cnVlXCJcclxuICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgKHRpbGVzRHJvcHBlZCk9XCJ0aWxlc0Ryb3BwZWQuZW1pdCgkZXZlbnQpXCJcclxuICAgIChyZW5hbWVBcHBUaWxlQ2xpY2spPVwicmVuYW1lQXBwVGlsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoaGlkZUFwcFRpbGVDbGljayk9XCJoaWRlQXBwVGlsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAocmVzZXRHcm91cCk9XCJyZXNldEdyb3VwLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoZGVsZXRlR3JvdXApPVwiZGVsZXRlR3JvdXAuZW1pdCgkZXZlbnQpXCJcclxuICAgICh0b2dnbGVHcm91cCk9XCJ0b2dnbGVHcm91cC5lbWl0KCRldmVudClcIlxyXG4+PC9idC10aWxlcy12aWV3ZXItZ3JvdXA+XHJcbn1cclxuIl19
@@ -1,130 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { BehaviorSubject, Subject } from 'rxjs';
3
- import { debounceTime, exhaustMap, finalize, takeUntil, tap } from 'rxjs/operators';
4
- import { ChangeAppTileComponent } from './change-app-tile/change-app-tile.component';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@fundamental-ngx/core";
7
- import * as i2 from "./tiles.service";
8
- export class TilesViewerService {
9
- constructor(dialogService, tilesService) {
10
- this.dialogService = dialogService;
11
- this.tilesService = tilesService;
12
- this._onDestroy$ = new Subject();
13
- this._hideTileSource = new Subject();
14
- this._updateAppTileSettingSource = new Subject();
15
- this._deleteGroupSource = new Subject();
16
- this._loadAppGroupSource = new Subject();
17
- this._saveAppGroupOrdersSource = new Subject();
18
- this.saveAppGroupOrders$ = this._saveAppGroupOrdersSource.asObservable();
19
- this._resetAppGroupSource = new Subject();
20
- this.resetAppGroup$ = this._resetAppGroupSource.asObservable();
21
- this._hideAppGroupSource = new Subject();
22
- this.hideAppGroup$ = this._hideAppGroupSource.asObservable();
23
- this._viewLoadingSource = new BehaviorSubject(false);
24
- this.viewLoading$ = this._viewLoadingSource.asObservable().pipe(debounceTime(200));
25
- this.hideTile$ = this._hideTileSource.asObservable();
26
- this.updateAppTileSetting$ = this._updateAppTileSettingSource.asObservable();
27
- this.deleteAppGroup$ = this._deleteGroupSource.asObservable();
28
- this._loadAppGroupSource
29
- .asObservable()
30
- .pipe(takeUntil(this._onDestroy$))
31
- .subscribe((group) => {
32
- this.tilesService.loadAppTileGroups(group);
33
- });
34
- this.hideTile$
35
- .pipe(tap(() => this.setLoading()), takeUntil(this._onDestroy$), exhaustMap((appTile) => this.tilesService
36
- .singlePinTileChanged(appTile.AppTile ? appTile.AppTile.Id : appTile.Id)
37
- .pipe(finalize(() => this.setLoaded()))), finalize(() => this.setLoaded()))
38
- .subscribe();
39
- this.updateAppTileSetting$
40
- .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appTile) => this.tilesService.changeAppTileSetting(appTile).pipe(finalize(() => {
41
- this.setLoaded();
42
- }))), finalize(() => {
43
- this.setLoaded();
44
- }))
45
- .subscribe();
46
- this.deleteAppGroup$
47
- .pipe(tap(() => this.setLoading()), takeUntil(this._onDestroy$), exhaustMap((appGroup) => this.tilesService.deleteAppGroup(appGroup).pipe(finalize(() => {
48
- this.setLoaded();
49
- }))))
50
- .subscribe();
51
- this.resetAppGroup$
52
- .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this.tilesService.resetAppGroupSetting(appGroup).pipe(finalize(() => {
53
- this.setLoaded();
54
- }))), finalize(() => {
55
- this.setLoaded();
56
- }))
57
- .subscribe();
58
- this.hideAppGroup$
59
- .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroup) => this.tilesService.toggleAppGroupSettingVisible(appGroup).pipe(finalize(() => {
60
- this.setLoaded();
61
- }))), finalize(() => {
62
- this.setLoaded();
63
- }))
64
- .subscribe();
65
- this.saveAppGroupOrders$
66
- .pipe(takeUntil(this._onDestroy$), tap(() => this.setLoading()), exhaustMap((appGroups) => this.tilesService.saveAppGroupOrders(appGroups).pipe(finalize(() => {
67
- this.setLoaded();
68
- }))), finalize(() => {
69
- this.setLoaded();
70
- }))
71
- .subscribe();
72
- }
73
- get selectedAppGroupId() {
74
- return localStorage.getItem('selectedTab') ?? '';
75
- }
76
- set selectedAppGroupId(groupId) {
77
- localStorage.setItem('selectedTab', groupId);
78
- }
79
- setSelectedTab(group) {
80
- this.selectedAppGroupId = group.Id;
81
- }
82
- loadAppGroup(group) {
83
- this._loadAppGroupSource.next(group);
84
- }
85
- ngOnDestroy() {
86
- this._onDestroy$.next();
87
- }
88
- openRenameForm(appTile) {
89
- const newGroupDialogRef = this.dialogService.open(ChangeAppTileComponent, {
90
- data: appTile,
91
- verticalPadding: true,
92
- responsivePadding: true
93
- });
94
- newGroupDialogRef.afterClosed.subscribe((setting) => {
95
- if (setting) {
96
- const newAppTile = { ...appTile };
97
- newAppTile.Title = newAppTile.TileTitle = setting.title;
98
- newAppTile.Subtitle = setting.subtitle;
99
- this._updateAppTileSettingSource.next(newAppTile);
100
- }
101
- });
102
- }
103
- resetAppGroup(appGroup) {
104
- this._resetAppGroupSource.next(appGroup);
105
- }
106
- toggleAppGroupSettingVisible(appGroup) {
107
- this._hideAppGroupSource.next(appGroup);
108
- }
109
- deleteAppGroup(appGroup) {
110
- this._deleteGroupSource.next(appGroup);
111
- }
112
- hideTile(appTile) {
113
- this._hideTileSource.next(appTile);
114
- }
115
- saveAppGroupOrders(appGroups) {
116
- this._saveAppGroupOrdersSource.next(appGroups);
117
- }
118
- setLoaded() {
119
- this._viewLoadingSource.next(false);
120
- }
121
- setLoading() {
122
- this._viewLoadingSource.next(true);
123
- }
124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesViewerService, deps: [{ token: i1.DialogService }, { token: i2.TilesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
125
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesViewerService }); }
126
- }
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesViewerService, decorators: [{
128
- type: Injectable
129
- }], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.TilesService }] });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU1wRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUdyRixNQUFNLE9BQU8sa0JBQWtCO0lBb0IzQixZQUFvQixhQUE0QixFQUFVLFlBQTBCO1FBQWhFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFkakUsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1RCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3JELGdDQUEyQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ2pFLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3hELHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3pELDhCQUF5QixHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO1FBQ2pFLHdCQUFtQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwRSx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUMxRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxRCx3QkFBbUIsR0FBRyxJQUFJLE9BQU8s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c0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGV4aGF1c3RNYXAsIGZpbmFsaXplLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWV0YW9iamVjdERhdGFNb2RlbCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgVGlsZXNTZXJ2aWNlIH0gZnJvbSAnLi90aWxlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhbmdlQXBwVGlsZUNvbXBvbmVudCB9IGZyb20gJy4vY2hhbmdlLWFwcC10aWxlL2NoYW5nZS1hcHAtdGlsZS5jb21wb25lbnQnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVGlsZXNWaWV3ZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIHZpZXdMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGhpZGVUaWxlJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcclxuICAgIHVwZGF0ZUFwcFRpbGVTZXR0aW5nJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcclxuICAgIGRlbGV0ZUFwcEdyb3VwJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2hpZGVUaWxlU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgX3VwZGF0ZUFwcFRpbGVTZXR0aW5nU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgX2RlbGV0ZUdyb3VwU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgX2xvYWRBcHBHcm91cFNvdXJjZSA9IG5ldyBTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBwcml2YXRlIF9zYXZlQXBwR3JvdXBPcmRlcnNTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KCk7XHJcbiAgICBwcml2YXRlIHNhdmVBcHBHcm91cE9yZGVycyQgPSB0aGlzLl9zYXZlQXBwR3JvdXBPcmRlcnNTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwcml2YXRlIF9yZXNldEFwcEdyb3VwU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgcmVzZXRBcHBHcm91cCQgPSB0aGlzLl9yZXNldEFwcEdyb3VwU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHJpdmF0ZSBfaGlkZUFwcEdyb3VwU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgaGlkZUFwcEdyb3VwJCA9IHRoaXMuX2hpZGVBcHBHcm91cFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAgIHByaXZhdGUgX3ZpZXdMb2FkaW5nU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLCBwcml2YXRlIHRpbGVzU2VydmljZTogVGlsZXNTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy52aWV3TG9hZGluZyQgPSB0aGlzLl92aWV3TG9hZGluZ1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKGRlYm91bmNlVGltZSgyMDApKTtcclxuICAgICAgICB0aGlzLmhpZGVUaWxlJCA9IHRoaXMuX2hpZGVUaWxlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQXBwVGlsZVNldHRpbmckID0gdGhpcy5fdXBkYXRlQXBwVGlsZVNldHRpbmdTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5kZWxldGVBcHBHcm91cCQgPSB0aGlzLl9kZWxldGVHcm91cFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAgICAgICB0aGlzLl9sb2FkQXBwR3JvdXBTb3VyY2VcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZ3JvdXApID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGlsZXNTZXJ2aWNlLmxvYWRBcHBUaWxlR3JvdXBzKGdyb3VwKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5oaWRlVGlsZSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRMb2FkaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgZXhoYXVzdE1hcCgoYXBwVGlsZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbGVzU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2luZ2xlUGluVGlsZUNoYW5nZWQoYXBwVGlsZS5BcHBUaWxlID8gYXBwVGlsZS5BcHBUaWxlLklkIDogYXBwVGlsZS5JZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5zZXRMb2FkZWQoKSkpXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5zZXRMb2FkZWQoKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlQXBwVGlsZVNldHRpbmckXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0TG9hZGluZygpKSxcclxuICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKGFwcFRpbGUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2UuY2hhbmdlQXBwVGlsZVNldHRpbmcoYXBwVGlsZSkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kZWxldGVBcHBHcm91cCRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRMb2FkaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgZXhoYXVzdE1hcCgoYXBwR3JvdXApID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2UuZGVsZXRlQXBwR3JvdXAoYXBwR3JvdXApLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZXNldEFwcEdyb3VwJFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldExvYWRpbmcoKSksXHJcbiAgICAgICAgICAgICAgICBleGhhdXN0TWFwKChhcHBHcm91cCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbGVzU2VydmljZS5yZXNldEFwcEdyb3VwU2V0dGluZyhhcHBHcm91cCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5oaWRlQXBwR3JvdXAkXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0TG9hZGluZygpKSxcclxuICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKGFwcEdyb3VwKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGlsZXNTZXJ2aWNlLnRvZ2dsZUFwcEdyb3VwU2V0dGluZ1Zpc2libGUoYXBwR3JvdXApLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRlZCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZUFwcEdyb3VwT3JkZXJzJFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldExvYWRpbmcoKSksXHJcbiAgICAgICAgICAgICAgICBleGhhdXN0TWFwKChhcHBHcm91cHMpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2Uuc2F2ZUFwcEdyb3VwT3JkZXJzKGFwcEdyb3VwcykucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGdldCBzZWxlY3RlZEFwcEdyb3VwSWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkVGFiJykgPz8gJyc7XHJcbiAgICB9XHJcbiAgICBzZXQgc2VsZWN0ZWRBcHBHcm91cElkKGdyb3VwSWQ6IHN0cmluZykge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzZWxlY3RlZFRhYicsIGdyb3VwSWQpO1xyXG4gICAgfVxyXG4gICAgc2V0U2VsZWN0ZWRUYWIoZ3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQXBwR3JvdXBJZCA9IGdyb3VwLklkO1xyXG4gICAgfVxyXG4gICAgbG9hZEFwcEdyb3VwKGdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbG9hZEFwcEdyb3VwU291cmNlLm5leHQoZ3JvdXApO1xyXG4gICAgfVxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblJlbmFtZUZvcm0oYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwRGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2hhbmdlQXBwVGlsZUNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBkYXRhOiBhcHBUaWxlLFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHJlc3BvbnNpdmVQYWRkaW5nOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIG5ld0dyb3VwRGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgoc2V0dGluZykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2V0dGluZykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3QXBwVGlsZSA9IHsgLi4uYXBwVGlsZSB9O1xyXG4gICAgICAgICAgICAgICAgbmV3QXBwVGlsZS5UaXRsZSA9IG5ld0FwcFRpbGUuVGlsZVRpdGxlID0gc2V0dGluZy50aXRsZTtcclxuICAgICAgICAgICAgICAgIG5ld0FwcFRpbGUuU3VidGl0bGUgPSBzZXR0aW5nLnN1YnRpdGxlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwVGlsZVNldHRpbmdTb3VyY2UubmV4dChuZXdBcHBUaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmVzZXRBcHBHcm91cChhcHBHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0QXBwR3JvdXBTb3VyY2UubmV4dChhcHBHcm91cCk7XHJcbiAgICB9XHJcbiAgICB0b2dnbGVBcHBHcm91cFNldHRpbmdWaXNpYmxlKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGlkZUFwcEdyb3VwU291cmNlLm5leHQoYXBwR3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUFwcEdyb3VwKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGVsZXRlR3JvdXBTb3VyY2UubmV4dChhcHBHcm91cCk7XHJcbiAgICB9XHJcbiAgICBoaWRlVGlsZShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGlkZVRpbGVTb3VyY2UubmV4dChhcHBUaWxlKTtcclxuICAgIH1cclxuICAgIHNhdmVBcHBHcm91cE9yZGVycyhhcHBHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NhdmVBcHBHcm91cE9yZGVyc1NvdXJjZS5uZXh0KGFwcEdyb3Vwcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TG9hZGVkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3ZpZXdMb2FkaW5nU291cmNlLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgc2V0TG9hZGluZygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl92aWV3TG9hZGluZ1NvdXJjZS5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==