@schneideress/dashboardframework 0.0.76 → 0.0.78

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 (113) hide show
  1. package/README.md +24 -24
  2. package/bundles/schneideress-dashboardframework.umd.js +7013 -7030
  3. package/bundles/schneideress-dashboardframework.umd.js.map +1 -1
  4. package/bundles/schneideress-dashboardframework.umd.min.js +2 -2
  5. package/bundles/schneideress-dashboardframework.umd.min.js.map +1 -1
  6. package/esm2015/gridster/index.js +18 -19
  7. package/esm2015/gridster/lib/gridster.component.js +700 -701
  8. package/esm2015/gridster/lib/gridster.interface.js +84 -85
  9. package/esm2015/gridster/lib/gridster.module.js +27 -28
  10. package/esm2015/gridster/lib/gridsterCompact.service.js +223 -224
  11. package/esm2015/gridster/lib/gridsterConfig.constant.js +179 -180
  12. package/esm2015/gridster/lib/gridsterConfig.interface.js +219 -220
  13. package/esm2015/gridster/lib/gridsterConfigS.interface.js +161 -162
  14. package/esm2015/gridster/lib/gridsterDraggable.service.js +510 -511
  15. package/esm2015/gridster/lib/gridsterEmptyCell.service.js +317 -318
  16. package/esm2015/gridster/lib/gridsterItem.component.js +213 -214
  17. package/esm2015/gridster/lib/gridsterItem.interface.js +46 -47
  18. package/esm2015/gridster/lib/gridsterItemComponent.interface.js +48 -49
  19. package/esm2015/gridster/lib/gridsterPreview.component.js +66 -67
  20. package/esm2015/gridster/lib/gridsterPush.service.js +467 -468
  21. package/esm2015/gridster/lib/gridsterPushResize.service.js +358 -359
  22. package/esm2015/gridster/lib/gridsterRenderer.service.js +277 -278
  23. package/esm2015/gridster/lib/gridsterResizable.service.js +552 -553
  24. package/esm2015/gridster/lib/gridsterResizeEventType.interface.js +19 -20
  25. package/esm2015/gridster/lib/gridsterScroll.service.js +195 -196
  26. package/esm2015/gridster/lib/gridsterSwap.service.js +134 -135
  27. package/esm2015/gridster/lib/gridsterUtils.service.js +137 -138
  28. package/esm2015/lib/custom.notifier.options.js +46 -47
  29. package/esm2015/lib/ra-dashboard-area/ra.dashboard.area.js +496 -497
  30. package/esm2015/lib/ra-widget-container/ra.widget.container.component.js +471 -462
  31. package/esm2015/lib/ra.base.dashboard.filter.js +75 -76
  32. package/esm2015/lib/ra.base.dashboard.template.js +71 -72
  33. package/esm2015/lib/ra.dashbard.event.bus.js +85 -86
  34. package/esm2015/lib/ra.dashboard.module.js +51 -50
  35. package/esm2015/lib/ra.dashboard.service.js +144 -145
  36. package/esm2015/lib/ra.event.enum.js +51 -52
  37. package/esm2015/lib/ra.gridster.config.js +67 -68
  38. package/esm2015/public-api.js +16 -17
  39. package/esm2015/schneideress-dashboardframework.js +14 -15
  40. package/esm5/gridster/index.js +18 -19
  41. package/esm5/gridster/lib/gridster.component.js +803 -804
  42. package/esm5/gridster/lib/gridster.interface.js +94 -95
  43. package/esm5/gridster/lib/gridster.module.js +31 -32
  44. package/esm5/gridster/lib/gridsterCompact.service.js +253 -254
  45. package/esm5/gridster/lib/gridsterConfig.constant.js +179 -180
  46. package/esm5/gridster/lib/gridsterConfig.interface.js +219 -220
  47. package/esm5/gridster/lib/gridsterConfigS.interface.js +161 -162
  48. package/esm5/gridster/lib/gridsterDraggable.service.js +549 -550
  49. package/esm5/gridster/lib/gridsterEmptyCell.service.js +358 -359
  50. package/esm5/gridster/lib/gridsterItem.component.js +238 -239
  51. package/esm5/gridster/lib/gridsterItem.interface.js +46 -47
  52. package/esm5/gridster/lib/gridsterItemComponent.interface.js +58 -59
  53. package/esm5/gridster/lib/gridsterPreview.component.js +70 -71
  54. package/esm5/gridster/lib/gridsterPush.service.js +547 -548
  55. package/esm5/gridster/lib/gridsterPushResize.service.js +423 -424
  56. package/esm5/gridster/lib/gridsterRenderer.service.js +323 -324
  57. package/esm5/gridster/lib/gridsterResizable.service.js +629 -630
  58. package/esm5/gridster/lib/gridsterResizeEventType.interface.js +19 -20
  59. package/esm5/gridster/lib/gridsterScroll.service.js +195 -196
  60. package/esm5/gridster/lib/gridsterSwap.service.js +152 -153
  61. package/esm5/gridster/lib/gridsterUtils.service.js +177 -178
  62. package/esm5/lib/custom.notifier.options.js +46 -47
  63. package/esm5/lib/ra-dashboard-area/ra.dashboard.area.js +588 -589
  64. package/esm5/lib/ra-widget-container/ra.widget.container.component.js +584 -575
  65. package/esm5/lib/ra.base.dashboard.filter.js +81 -82
  66. package/esm5/lib/ra.base.dashboard.template.js +74 -75
  67. package/esm5/lib/ra.dashbard.event.bus.js +125 -126
  68. package/esm5/lib/ra.dashboard.module.js +55 -54
  69. package/esm5/lib/ra.dashboard.service.js +221 -222
  70. package/esm5/lib/ra.event.enum.js +51 -52
  71. package/esm5/lib/ra.gridster.config.js +67 -68
  72. package/esm5/public-api.js +16 -17
  73. package/esm5/schneideress-dashboardframework.js +14 -15
  74. package/fesm2015/schneideress-dashboardframework.js +6118 -6136
  75. package/fesm2015/schneideress-dashboardframework.js.map +1 -1
  76. package/fesm5/schneideress-dashboardframework.js +7015 -7033
  77. package/fesm5/schneideress-dashboardframework.js.map +1 -1
  78. package/gridster/index.d.ts +11 -11
  79. package/gridster/lib/gridster.component.d.ts +67 -67
  80. package/gridster/lib/gridster.interface.d.ts +46 -46
  81. package/gridster/lib/gridster.module.d.ts +2 -2
  82. package/gridster/lib/gridsterCompact.service.d.ts +15 -15
  83. package/gridster/lib/gridsterConfig.constant.d.ts +2 -2
  84. package/gridster/lib/gridsterConfig.interface.d.ts +133 -133
  85. package/gridster/lib/gridsterConfigS.interface.d.ts +93 -93
  86. package/gridster/lib/gridsterDraggable.service.d.ts +59 -59
  87. package/gridster/lib/gridsterEmptyCell.service.d.ts +29 -29
  88. package/gridster/lib/gridsterItem.component.d.ts +32 -32
  89. package/gridster/lib/gridsterItem.interface.d.ts +21 -21
  90. package/gridster/lib/gridsterItemComponent.interface.d.ts +25 -25
  91. package/gridster/lib/gridsterPreview.component.d.ts +10 -10
  92. package/gridster/lib/gridsterPush.service.d.ts +33 -33
  93. package/gridster/lib/gridsterPushResize.service.d.ts +26 -26
  94. package/gridster/lib/gridsterRenderer.service.d.ts +38 -38
  95. package/gridster/lib/gridsterResizable.service.d.ts +67 -67
  96. package/gridster/lib/gridsterResizeEventType.interface.d.ts +6 -6
  97. package/gridster/lib/gridsterScroll.service.d.ts +4 -4
  98. package/gridster/lib/gridsterSwap.service.d.ts +13 -13
  99. package/gridster/lib/gridsterUtils.service.d.ts +16 -16
  100. package/lib/custom.notifier.options.d.ts +2 -2
  101. package/lib/ra-dashboard-area/ra.dashboard.area.d.ts +64 -64
  102. package/lib/ra-widget-container/ra.widget.container.component.d.ts +64 -63
  103. package/lib/ra.base.dashboard.filter.d.ts +10 -10
  104. package/lib/ra.base.dashboard.template.d.ts +15 -15
  105. package/lib/ra.dashbard.event.bus.d.ts +20 -20
  106. package/lib/ra.dashboard.module.d.ts +2 -2
  107. package/lib/ra.dashboard.service.d.ts +22 -22
  108. package/lib/ra.event.enum.d.ts +42 -42
  109. package/lib/ra.gridster.config.d.ts +2 -2
  110. package/package.json +1 -1
  111. package/public-api.d.ts +8 -8
  112. package/schneideress-dashboardframework.d.ts +9 -9
  113. package/schneideress-dashboardframework.metadata.json +1 -1
@@ -1,575 +1,584 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: lib/ra-widget-container/ra.widget.container.component.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- import * as tslib_1 from "tslib";
7
- import { Component, Input, ViewChild, ElementRef, EventEmitter, Output, NgZone, Renderer2 } from '@angular/core';
8
- import { RaDashboardService } from './../ra.dashboard.service';
9
- import { RADashboardEventBus } from '../ra.dashbard.event.bus';
10
- import { RAEvent, RAEventKey } from '../ra.event.enum';
11
- import { RADownloadType, RADownloadOption } from '@schneideress/widgetframework';
12
- import { NgxUiLoaderService } from 'ngx-ui-loader';
13
- import { NotifierService } from 'angular-notifier';
14
- import { RATranslateService } from '@schneideress/ra-common';
15
- var RAWidgetContainer = /** @class */ (function () {
16
- function RAWidgetContainer(dashboardService, ngxService, translateService, ngZone, notifier, renderer) {
17
- var _this = this;
18
- this.dashboardService = dashboardService;
19
- this.ngxService = ngxService;
20
- this.translateService = translateService;
21
- this.ngZone = ngZone;
22
- this.notifier = notifier;
23
- this.renderer = renderer;
24
- this.showPanel = false;
25
- this.isWidgetLoaded = false;
26
- this.isIEOrEdge = /msie\s|trident\/|edge\//i.test(window.navigator.userAgent);
27
- this.lockClass = "unlocked";
28
- this.lockStatus = "unlock";
29
- this.isDownloadIconVisible = false;
30
- this.dropDownShown = false;
31
- this.isDownloadChartVisible = false;
32
- this.widgetDeleted = new EventEmitter();
33
- this.renderer.listen('window', 'click', (/**
34
- * @param {?} e
35
- * @return {?}
36
- */
37
- function (e) {
38
- if (e.target !== _this.widgetDropdown.nativeElement) {
39
- _this.dropDownShown = false;
40
- }
41
- }));
42
- this.renderer.listen('window', 'click', (/**
43
- * @param {?} e
44
- * @return {?}
45
- */
46
- function (e) {
47
- if (_this.widgetDownload && e.target !== _this.widgetDownload.nativeElement) {
48
- _this.isDownloadChartVisible = false;
49
- }
50
- }));
51
- }
52
- /**
53
- * @param {?} changes
54
- * @return {?}
55
- */
56
- RAWidgetContainer.prototype.ngOnChanges = /**
57
- * @param {?} changes
58
- * @return {?}
59
- */
60
- function (changes) {
61
- var _this = this;
62
- if (changes.raDashboardEventBus && changes.raDashboardEventBus.currentValue != changes.raDashboardEventBus.previousValue) {
63
- this.configChanged = this.raDashboardEventBus.subscribeWithKey(RAEvent.ConfigChanged, RAEventKey.WidgetInstanceId, this.data.widgetInfo.widgetInstanceId.toString()).subscribe((/**
64
- * @param {?} e
65
- * @return {?}
66
- */
67
- function (e) {
68
- _this.ngZone.run((/**
69
- * @return {?}
70
- */
71
- function () {
72
- _this.configChangeEventHandler(e);
73
- }));
74
- }));
75
- }
76
- if (this.widgetElement && changes.globalFilter && changes.globalFilter.currentValue != changes.globalFilter.previousValue) {
77
- this.refreshWidget(this.data.widgetInfo);
78
- }
79
- if (changes.width && changes.width.currentValue != changes.width.previousValue ||
80
- (changes.height && changes.height.currentValue != changes.height.previousValue)) {
81
- if (this.widgetElement) {
82
- /** @type {?} */
83
- var size = {};
84
- size.height = this.height;
85
- size.width = this.width;
86
- this.widgetElement.widgetResized(size);
87
- }
88
- }
89
- };
90
- /**
91
- * @return {?}
92
- */
93
- RAWidgetContainer.prototype.ngAfterViewInit = /**
94
- * @return {?}
95
- */
96
- function () {
97
- var _this = this;
98
- setTimeout((/**
99
- * @return {?}
100
- */
101
- function () {
102
- _this.loadWidget(_this.data.widgetInfo);
103
- }));
104
- };
105
- /**
106
- * @return {?}
107
- */
108
- RAWidgetContainer.prototype.ngOnDestroy = /**
109
- * @return {?}
110
- */
111
- function () {
112
- if (this.configChanged)
113
- this.configChanged.unsubscribe();
114
- };
115
- /** To Edit current widget configuration*/
116
- /**
117
- * To Edit current widget configuration
118
- * @return {?}
119
- */
120
- RAWidgetContainer.prototype.editWidget = /**
121
- * To Edit current widget configuration
122
- * @return {?}
123
- */
124
- function () {
125
- this.raDashboardEventBus.publish(RAEvent.WidgetEditClicked, this.data.widgetInfo);
126
- };
127
- /** To Delete current widget from DOM*/
128
- /**
129
- * To Delete current widget from DOM
130
- * @return {?}
131
- */
132
- RAWidgetContainer.prototype.deleteWidget = /**
133
- * To Delete current widget from DOM
134
- * @return {?}
135
- */
136
- function () {
137
- var _this = this;
138
- /** @type {?} */
139
- var widgetContainerContext = this;
140
- widgetContainerContext.ngxService.start();
141
- widgetContainerContext.dashboardService.deleteWidget(this.data.widgetInfo, this.appConfig).subscribe((/**
142
- * @param {?} status
143
- * @return {?}
144
- */
145
- function (status) {
146
- widgetContainerContext.ngxService.stop();
147
- if (status) {
148
- widgetContainerContext.widgetDeleted.emit(_this.data.widgetInfo.widgetInstanceId);
149
- }
150
- else {
151
- widgetContainerContext.notifier.notify('error', " " + _this.translateService.translate('FailedToRemoveWidget') + " (" + _this.data.widgetInfo.widgetTitle + ")!");
152
- }
153
- }));
154
- };
155
- /** To Move or change position if current widget container*/
156
- /**
157
- * To Move or change position if current widget container
158
- * @return {?}
159
- */
160
- RAWidgetContainer.prototype.moveWidget = /**
161
- * To Move or change position if current widget container
162
- * @return {?}
163
- */
164
- function () {
165
- this.raDashboardEventBus.publish(RAEvent.MoveWidget, this.data.widgetInfo);
166
- // this.dashboardService.moveWidget(widgetInfo);
167
- };
168
- /** To Copy Current widget with same configuration*/
169
- /**
170
- * To Copy Current widget with same configuration
171
- * @return {?}
172
- */
173
- RAWidgetContainer.prototype.copyWidget = /**
174
- * To Copy Current widget with same configuration
175
- * @return {?}
176
- */
177
- function () {
178
- this.raDashboardEventBus.publish(RAEvent.CopyWidget, this.data.widgetInfo);
179
- //this.dashboardService.copyWidget(widgetInfo);
180
- };
181
- /**
182
- * @param {?} widgetInfo
183
- * @return {?}
184
- */
185
- RAWidgetContainer.prototype.configChangeEventHandler = /**
186
- * @param {?} widgetInfo
187
- * @return {?}
188
- */
189
- function (widgetInfo) {
190
- this.data.widgetInfo = widgetInfo;
191
- this.refreshWidget(this.data.widgetInfo);
192
- // this.updateWidget(widgetInfo);
193
- };
194
- /** To load external custom element to the widget container*/
195
- /**
196
- * To load external custom element to the widget container
197
- * @param {?} widgetInfo
198
- * @return {?}
199
- */
200
- RAWidgetContainer.prototype.loadWidget = /**
201
- * To load external custom element to the widget container
202
- * @param {?} widgetInfo
203
- * @return {?}
204
- */
205
- function (widgetInfo) {
206
- return tslib_1.__awaiter(this, void 0, void 0, function () {
207
- var widgetConfigFilter, widgetContainer;
208
- var _this = this;
209
- return tslib_1.__generator(this, function (_a) {
210
- widgetConfigFilter = (/** @type {?} */ ({
211
- config: widgetInfo.widgetConfigInfo.config,
212
- globalFilter: this.globalFilter
213
- }));
214
- widgetContainer = this;
215
- this.dashboardService.loadExternalScript(widgetInfo.scriptUrl, (/**
216
- * @return {?}
217
- */
218
- function () {
219
- _this.translateService.loadTranslations(_this.appConfig.appManagementBaseUrl, _this.data.widgetInfo.widgetName).then((/**
220
- * @return {?}
221
- */
222
- function () {
223
- widgetContainer.widgetElement = document.createElement(widgetInfo.customTag);
224
- widgetContainer.widgetElement.setAttribute("widget-instance-id", widgetInfo.widgetInstanceId);
225
- document.body.addEventListener('widgetinitiated' + widgetInfo.widgetInstanceId, (/**
226
- * @return {?}
227
- */
228
- function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
229
- var _this = this;
230
- return tslib_1.__generator(this, function (_a) {
231
- setTimeout((/**
232
- * @return {?}
233
- */
234
- function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
235
- var _this = this;
236
- return tslib_1.__generator(this, function (_a) {
237
- switch (_a.label) {
238
- case 0:
239
- this.widgetElement.addEventListener('on-data-load', (/**
240
- * @param {?} e
241
- * @return {?}
242
- */
243
- function (e) {
244
- if (e.detail)
245
- _this.showPanel = true;
246
- else
247
- _this.showPanel = false;
248
- }));
249
- widgetContainer.isWidgetLoaded = true;
250
- widgetConfigFilter.appConfig = this.appConfig;
251
- widgetConfigFilter.widgetInfo = widgetInfo;
252
- // widgetConfigFilter.widgetInfo = <IWidgetInfo>{};
253
- widgetConfigFilter.widgetInfo.widgetName = widgetInfo.widgetName;
254
- widgetContainer.widgetElement.loadContent(widgetConfigFilter);
255
- return [4 /*yield*/, widgetContainer.setLock(widgetConfigFilter.config)];
256
- case 1:
257
- _a.sent();
258
- return [4 /*yield*/, widgetContainer.setDownloadIcon()];
259
- case 2:
260
- _a.sent();
261
- return [2 /*return*/];
262
- }
263
- });
264
- }); }));
265
- return [2 /*return*/];
266
- });
267
- }); }));
268
- _this.ctlWidget.nativeElement.appendChild(_this.widgetElement);
269
- }));
270
- }));
271
- return [2 /*return*/];
272
- });
273
- });
274
- };
275
- /** To refresh widget on input config changes */
276
- /**
277
- * To refresh widget on input config changes
278
- * @param {?} widgetInfo
279
- * @return {?}
280
- */
281
- RAWidgetContainer.prototype.refreshWidget = /**
282
- * To refresh widget on input config changes
283
- * @param {?} widgetInfo
284
- * @return {?}
285
- */
286
- function (widgetInfo) {
287
- return tslib_1.__awaiter(this, void 0, void 0, function () {
288
- var widgetContainerContext, widgetConfigFilter;
289
- return tslib_1.__generator(this, function (_a) {
290
- switch (_a.label) {
291
- case 0:
292
- widgetContainerContext = this;
293
- widgetConfigFilter = (/** @type {?} */ ({
294
- config: widgetInfo.widgetConfigInfo.config,
295
- globalFilter: this.globalFilter,
296
- appConfig: this.appConfig,
297
- widgetInfo: widgetInfo
298
- }));
299
- if (!widgetContainerContext.isWidgetLoaded) return [3 /*break*/, 3];
300
- widgetContainerContext.widgetElement.loadContent(widgetConfigFilter);
301
- return [4 /*yield*/, this.setLock(widgetConfigFilter.config)];
302
- case 1:
303
- _a.sent();
304
- return [4 /*yield*/, this.setDownloadIcon()];
305
- case 2:
306
- _a.sent();
307
- _a.label = 3;
308
- case 3: return [2 /*return*/];
309
- }
310
- });
311
- });
312
- };
313
- /**
314
- * @private
315
- * @param {?} config
316
- * @return {?}
317
- */
318
- RAWidgetContainer.prototype.setLock = /**
319
- * @private
320
- * @param {?} config
321
- * @return {?}
322
- */
323
- function (config) {
324
- return tslib_1.__awaiter(this, void 0, void 0, function () {
325
- var _a;
326
- return tslib_1.__generator(this, function (_b) {
327
- switch (_b.label) {
328
- case 0:
329
- _a = this;
330
- return [4 /*yield*/, this.widgetElement.loadLockStatus(config)];
331
- case 1:
332
- _a.lockStatus = _b.sent();
333
- if (this.lockStatus) {
334
- switch (this.lockStatus) {
335
- case "lock": {
336
- this.lockClass = "fas fa-lock locked";
337
- break;
338
- }
339
- case "unlock": {
340
- this.lockClass = "unlocked";
341
- break;
342
- }
343
- case "partiallock": {
344
- this.lockClass = "fas fa-lock partiallocked";
345
- break;
346
- }
347
- default: {
348
- this.lockClass = "unlocked";
349
- break;
350
- }
351
- }
352
- }
353
- return [2 /*return*/];
354
- }
355
- });
356
- });
357
- };
358
- /**
359
- * @return {?}
360
- */
361
- RAWidgetContainer.prototype.setDownloadIcon = /**
362
- * @return {?}
363
- */
364
- function () {
365
- return tslib_1.__awaiter(this, void 0, void 0, function () {
366
- var downloadType;
367
- return tslib_1.__generator(this, function (_a) {
368
- switch (_a.label) {
369
- case 0: return [4 /*yield*/, this.widgetElement.getDownloadType()];
370
- case 1:
371
- downloadType = _a.sent();
372
- this.downloadIconType = downloadType;
373
- if (downloadType != RADownloadType.None) {
374
- this.isDownloadIconVisible = true;
375
- }
376
- return [2 /*return*/];
377
- }
378
- });
379
- });
380
- };
381
- /**
382
- * @return {?}
383
- */
384
- RAWidgetContainer.prototype.downloadClicked = /**
385
- * @return {?}
386
- */
387
- function () {
388
- switch (this.downloadIconType) {
389
- case RADownloadType.Grid:
390
- this.downloadIconClicked('CSV');
391
- break;
392
- case RADownloadType.Chart:
393
- this.isDownloadChartVisible = true;
394
- break;
395
- case RADownloadType.Custom:
396
- break;
397
- }
398
- };
399
- /**
400
- * @param {?} type
401
- * @return {?}
402
- */
403
- RAWidgetContainer.prototype.downloadIconClicked = /**
404
- * @param {?} type
405
- * @return {?}
406
- */
407
- function (type) {
408
- switch (type) {
409
- case "CSV":
410
- this.widgetElement.downloadClicked(this.downloadIconType, RADownloadOption.CSV);
411
- break;
412
- case "PNG":
413
- this.widgetElement.downloadClicked(this.downloadIconType, RADownloadOption.PNG);
414
- break;
415
- case "PDF":
416
- this.widgetElement.downloadClicked(this.downloadIconType, RADownloadOption.PDF);
417
- break;
418
- case "SVG":
419
- this.widgetElement.downloadClicked(this.downloadIconType, RADownloadOption.SVG);
420
- break;
421
- case "JPEG":
422
- this.widgetElement.downloadClicked(this.downloadIconType, RADownloadOption.JPEG);
423
- break;
424
- }
425
- };
426
- /**Show dropdown on gear icon click */
427
- /**
428
- * Show dropdown on gear icon click
429
- * @return {?}
430
- */
431
- RAWidgetContainer.prototype.showDropDown = /**
432
- * Show dropdown on gear icon click
433
- * @return {?}
434
- */
435
- function () {
436
- this.dropDownShown = !this.dropDownShown;
437
- };
438
- /**Hide dropdown on outside click */
439
- /**
440
- * Hide dropdown on outside click
441
- * @return {?}
442
- */
443
- RAWidgetContainer.prototype.hideDropDown = /**
444
- * Hide dropdown on outside click
445
- * @return {?}
446
- */
447
- function () {
448
- if (this.dropDownShown) {
449
- this.dropDownShown = false;
450
- }
451
- this.isDownloadChartVisible = false;
452
- };
453
- RAWidgetContainer.decorators = [
454
- { type: Component, args: [{
455
- selector: 'ra-widget-container',
456
- template: "<div class=\"wc-wrapper\" (mouseleave)=\"hideDropDown()\">\r\n <div class=\"wcheader widget-move\">\r\n <div class=\"col-md-12 wc-mover\" style=\"padding-left: 0px;height:inherit;\">\r\n <div style=\"display:flex;margin-top:10px;\">\r\n <div class=\"col-md-11 float-left\" style=\"width:96%;padding-left: 0px\">{{data.widgetInfo.widgetTitle}}\r\n </div>\r\n <div class=\"col-md-1\" style=\"cursor:default;padding-right: 0px;\">\r\n <div class=\"float-right\" style=\"display: flex;\">\r\n <div class=\"title-bar-icon download download-icon\" *ngIf=\"isDownloadIconVisible\">\r\n <i class=\"fas fa-download\" (mouseover)=\"setDownloadIcon()\" #widgetDownload (click)=\"downloadClicked()\"></i>\r\n <div class=\"download-content\" [ngClass]=\"{'dropdown-click': isDownloadChartVisible}\">\r\n <a (click)=\"downloadIconClicked('PNG')\">\r\n <i class=\"fal fa-file-image\"></i>\r\n <span>{{'PNG'|translate}}</span>\r\n </a>\r\n <a (click)=\"downloadIconClicked('JPEG')\">\r\n <i class=\"fal fa-file\"></i>\r\n <span>{{'JPEG'|translate}}</span>\r\n </a>\r\n <a (click)=\"downloadIconClicked('PDF')\">\r\n <i class=\"fal fa-file-pdf\"></i>\r\n <span>{{'PDF'|translate}}</span>\r\n </a> \r\n <a (click)=\"downloadIconClicked('SVG')\">\r\n <i class=\"fal fa-file-alt\"></i>\r\n <span>{{'SVG'|translate}}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"dropdown\">\r\n <div class=\"dropbtn title-bar-icon\"> <i #widgetDropdown class=\"fas fa-cog\" (click)=\"showDropDown()\"></i>\r\n </div>\r\n <div class=\"dropdown-content widget-config-item\" [ngClass]=\"{'dropdown-click': dropDownShown}\">\r\n <a (click)=\"editWidget()\">\r\n <i class=\"fal fa-edit\"></i>\r\n <span>{{'Edit'|translate}}</span>\r\n </a>\r\n <a (click)=\"copyWidget()\">\r\n <i class=\"fal fa-copy\"></i>\r\n <span>{{'Copy'|translate}}</span>\r\n </a>\r\n <a (click)=\"moveWidget()\">\r\n <i class=\"fal fa-arrows-alt\"></i>\r\n <span>{{'Move'|translate}}</span>\r\n </a>\r\n <hr class=\"hr\">\r\n <a (click)=\"deleteWidget()\">\r\n <i class=\"fal fa-times\" style=\"padding-left: 3px;\"></i>\r\n <span>{{'Delete'|translate}}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"title-bar-lock-icon\"><i [ngClass]=\"lockClass\"\r\n [attr.title]=\"lockStatus=='lock' ? 'Locked' : 'Partially Locked'\"></i></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"wcBody\">\r\n <div class=\"m-fadeOut widget-overlay\" [ngClass]=\"{'m-fadeIn': showPanel}\">\r\n <div class=\"lds-roller\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n </div>\r\n <perfect-scrollbar [scrollIndicators]=\"true\">\r\n <div #ctlWidget></div>\r\n </perfect-scrollbar>\r\n </div>\r\n</div>\r\n",
457
- styles: [".wcheader{width:100%;height:24px;background:#fff;color:#3dcd58;font-family:\"Arial Rounded MT\";font-size:16px;position:absolute;left:0;top:0}.wc-wrapper{height:100%;position:relative;margin:auto 15px}.wc-mover{cursor:all-scroll}.wcBody{width:100%;position:absolute;top:46px;left:0;bottom:15px}.wcBodyBorder{border:1px dashed #e6e2e2}.sp_icon{float:left;margin:0 15% 0 0}.dropbtn{cursor:pointer;color:#42b4e6}.dropdown{visibility:hidden;opacity:0;-webkit-transition:visibility,opacity .5s linear;transition:visibility,opacity .5s linear;position:relative}.dropdown hr{margin:0!important}.dropdown-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:100px;box-shadow:0 8px 16px 8px rgba(0,0,0,.2);z-index:2;font-size:12px;font-weight:400}.dropdown-content a{color:#000;padding:5px 16px;text-decoration:none;display:block;cursor:pointer}.dropdown-content a:hover{background-color:#f1f1f1}.dropdown-click{display:block!important;-webkit-animation:.3s ease-out slide-down;animation:.3s ease-out slide-down}.download-icon{cursor:pointer}.dropdown:hover .dropdown-content{color:#fff}.wc-wrapper:hover .dropdown{visibility:visible;opacity:1}.title-bar-icon{margin:0 3px;color:#42b4e6}.title-bar-lock-icon{margin:0 3px}.hr{border:0;border-top:1px solid rgba(0,0,0,.1)}@keyframes slide-down{0%{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes slide-down{0%{opacity:0;-webkit-transform:translateY(-20%)}100%{opacity:1;-webkit-transform:translateY(0)}}.widget-config-item i{font-size:17px;color:#42b4e6}.widget-config-item span{font-size:12px;font:inherit;padding-left:12px;color:#42b4e6}.locked{color:#42b4e6}.partiallocked{color:#a0d9f2}.unlocked{display:none}.download{visibility:hidden;opacity:0;-webkit-transition:visibility,opacity .5s linear;transition:visibility,opacity .5s linear;position:relative}.wc-wrapper:hover .download{visibility:visible;opacity:1}.download-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:100px;box-shadow:0 8px 16px 8px rgba(0,0,0,.2);z-index:2;font-size:12px;font-weight:400}.download-content a{color:#000;padding:5px 16px;text-decoration:none;display:block;cursor:pointer}.download-content a:hover{background-color:#f1f1f1}.download-content a i{font-size:17px;color:#42b4e6}.download-content a span{font-size:12px;font:inherit;padding-left:12px;color:#42b4e6}"]
458
- }] }
459
- ];
460
- /** @nocollapse */
461
- RAWidgetContainer.ctorParameters = function () { return [
462
- { type: RaDashboardService },
463
- { type: NgxUiLoaderService },
464
- { type: RATranslateService },
465
- { type: NgZone },
466
- { type: NotifierService },
467
- { type: Renderer2 }
468
- ]; };
469
- RAWidgetContainer.propDecorators = {
470
- ctlWidget: [{ type: ViewChild, args: ['ctlWidget', { static: false },] }],
471
- widgetDropdown: [{ type: ViewChild, args: ['widgetDropdown', { static: false },] }],
472
- widgetDownload: [{ type: ViewChild, args: ['widgetDownload', { static: false },] }],
473
- widgetInstanceId: [{ type: Input, args: ['widget-instance-id',] }],
474
- globalFilter: [{ type: Input, args: ['global-filter',] }],
475
- data: [{ type: Input, args: ['data',] }],
476
- raDashboardEventBus: [{ type: Input, args: ['event-bus',] }],
477
- appConfig: [{ type: Input, args: ['app-config',] }],
478
- width: [{ type: Input, args: ['widget-width',] }],
479
- height: [{ type: Input, args: ['widget-height',] }],
480
- widgetDeleted: [{ type: Output }]
481
- };
482
- return RAWidgetContainer;
483
- }());
484
- export { RAWidgetContainer };
485
- if (false) {
486
- /** @type {?} */
487
- RAWidgetContainer.prototype.showPanel;
488
- /**
489
- * @type {?}
490
- * @private
491
- */
492
- RAWidgetContainer.prototype.isWidgetLoaded;
493
- /**
494
- * @type {?}
495
- * @private
496
- */
497
- RAWidgetContainer.prototype.widgetElement;
498
- /**
499
- * @type {?}
500
- * @private
501
- */
502
- RAWidgetContainer.prototype.configChanged;
503
- /**
504
- * @type {?}
505
- * @private
506
- */
507
- RAWidgetContainer.prototype.isIEOrEdge;
508
- /** @type {?} */
509
- RAWidgetContainer.prototype.widgetHeight;
510
- /** @type {?} */
511
- RAWidgetContainer.prototype.lockClass;
512
- /** @type {?} */
513
- RAWidgetContainer.prototype.lockStatus;
514
- /** @type {?} */
515
- RAWidgetContainer.prototype.isDownloadIconVisible;
516
- /** @type {?} */
517
- RAWidgetContainer.prototype.dropDownShown;
518
- /** @type {?} */
519
- RAWidgetContainer.prototype.isDownloadChartVisible;
520
- /** @type {?} */
521
- RAWidgetContainer.prototype.downloadIconType;
522
- /** @type {?} */
523
- RAWidgetContainer.prototype.ctlWidget;
524
- /** @type {?} */
525
- RAWidgetContainer.prototype.widgetDropdown;
526
- /** @type {?} */
527
- RAWidgetContainer.prototype.widgetDownload;
528
- /** @type {?} */
529
- RAWidgetContainer.prototype.widgetInstanceId;
530
- /** @type {?} */
531
- RAWidgetContainer.prototype.globalFilter;
532
- /** @type {?} */
533
- RAWidgetContainer.prototype.data;
534
- /** @type {?} */
535
- RAWidgetContainer.prototype.raDashboardEventBus;
536
- /** @type {?} */
537
- RAWidgetContainer.prototype.appConfig;
538
- /** @type {?} */
539
- RAWidgetContainer.prototype.width;
540
- /** @type {?} */
541
- RAWidgetContainer.prototype.height;
542
- /** @type {?} */
543
- RAWidgetContainer.prototype.widgetDeleted;
544
- /**
545
- * @type {?}
546
- * @private
547
- */
548
- RAWidgetContainer.prototype.dashboardService;
549
- /**
550
- * @type {?}
551
- * @private
552
- */
553
- RAWidgetContainer.prototype.ngxService;
554
- /**
555
- * @type {?}
556
- * @private
557
- */
558
- RAWidgetContainer.prototype.translateService;
559
- /**
560
- * @type {?}
561
- * @private
562
- */
563
- RAWidgetContainer.prototype.ngZone;
564
- /**
565
- * @type {?}
566
- * @private
567
- */
568
- RAWidgetContainer.prototype.notifier;
569
- /**
570
- * @type {?}
571
- * @private
572
- */
573
- RAWidgetContainer.prototype.renderer;
574
- }
575
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEud2lkZ2V0LmNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2NobmVpZGVyZXNzL2Rhc2hib2FyZGZyYW1ld29yay8iLCJzb3VyY2VzIjpbImxpYi9yYS13aWRnZXQtY29udGFpbmVyL3JhLndpZGdldC5jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBb0UsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzTCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBZ0QsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0gsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc3RDtJQW9DRSwyQkFBb0IsZ0JBQW9DLEVBQzlDLFVBQThCLEVBQzlCLGdCQUFvQyxFQUNwQyxNQUFjLEVBQ2QsUUFBeUIsRUFDekIsUUFBbUI7UUFMN0IsaUJBb0JDO1FBcEJtQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQzlDLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGFB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RSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7aUNBQ3hDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7aUNBQzdDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7bUNBRzdDLEtBQUssU0FBQyxvQkFBb0I7K0JBQzFCLEtBQUssU0FBQyxlQUFlO3VCQUNyQixLQUFLLFNBQUMsTUFBTTtzQ0FDWixLQUFLLFNBQUMsV0FBVzs0QkFDakIsS0FBSyxTQUFDLFlBQVk7d0JBQ2xCLEtBQUssU0FBQyxjQUFjO3lCQUNwQixLQUFLLFNBQUMsZUFBZTtnQ0FFckIsTUFBTTs7SUF5T1Qsd0JBQUM7Q0FBQSxBQTFRRCxJQTBRQztTQXJRWSxpQkFBaUI7OztJQUU1QixzQ0FBa0M7Ozs7O0lBQ2xDLDJDQUF3Qzs7Ozs7SUFDeEMsMENBQTJCOzs7OztJQUMzQiwwQ0FBMkI7Ozs7O0lBQzNCLHVDQUFpRjs7SUFDakYseUNBQTRCOztJQUM1QixzQ0FBc0M7O0lBQ3RDLHVDQUFxQzs7SUFDckMsa0RBQThDOztJQUM5QywwQ0FBc0M7O0lBQ3RDLG1EQUErQzs7SUFDL0MsNkNBQXdDOztJQUV4QyxzQ0FBaUU7O0lBQ2pFLDJDQUEyRTs7SUFDM0UsMkNBQTJFOztJQUczRSw2Q0FBc0Q7O0lBQ3RELHlDQUEwQzs7SUFDMUMsaUNBQXlCOztJQUN6QixnREFBNkQ7O0lBQzdELHNDQUEyQzs7SUFDM0Msa0NBQXFDOztJQUNyQyxtQ0FBdUM7O0lBRXZDLDBDQUFxRDs7Ozs7SUFHekMsNkNBQTRDOzs7OztJQUN0RCx1Q0FBc0M7Ozs7O0lBQ3RDLDZDQUE0Qzs7Ozs7SUFDNUMsbUNBQXNCOzs7OztJQUN0QixxQ0FBaUM7Ozs7O0lBQ2pDLHFDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBTaW1wbGVDaGFuZ2UsIE9uRGVzdHJveSwgTmdab25lLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmFEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi8uLi9yYS5kYXNoYm9hcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFJBRGFzaGJvYXJkRXZlbnRCdXMgfSBmcm9tICcuLi9yYS5kYXNoYmFyZC5ldmVudC5idXMnO1xyXG5pbXBvcnQgeyBSQUV2ZW50LCBSQUV2ZW50S2V5IH0gZnJvbSAnLi4vcmEuZXZlbnQuZW51bSc7XHJcbmltcG9ydCB7IElBcHBDb25maWcsIElXaWRnZXRDb25maWdGaWx0ZXIsIElXaWRnZXRJbmZvLCBSQURvd25sb2FkVHlwZSwgUkFEb3dubG9hZE9wdGlvbiB9IGZyb20gJ0BzY2huZWlkZXJlc3Mvd2lkZ2V0ZnJhbWV3b3JrJztcclxuaW1wb3J0IHsgTmd4VWlMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnbmd4LXVpLWxvYWRlcic7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItbm90aWZpZXInO1xyXG5cclxuaW1wb3J0IHsgUkFUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQHNjaG5laWRlcmVzcy9yYS1jb21tb24nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmEtd2lkZ2V0LWNvbnRhaW5lcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JhLndpZGdldC5jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JhLndpZGdldC5jb250YWluZXIuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSQVdpZGdldENvbnRhaW5lciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgcHVibGljIHNob3dQYW5lbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaXNXaWRnZXRMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIHdpZGdldEVsZW1lbnQ6IGFueTtcclxuICBwcml2YXRlIGNvbmZpZ0NoYW5nZWQ6IGFueTtcclxuICBwcml2YXRlIGlzSUVPckVkZ2UgPSAvbXNpZVxcc3x0cmlkZW50XFwvfGVkZ2VcXC8vaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcclxuICBwdWJsaWMgd2lkZ2V0SGVpZ2h0OiBudW1iZXI7XHJcbiAgcHVibGljIGxvY2tDbGFzczogc3RyaW5nID0gXCJ1bmxvY2tlZFwiO1xyXG4gIHB1YmxpYyBsb2NrU3RhdHVzOiBzdHJpbmcgPSBcInVubG9ja1wiO1xyXG4gIHB1YmxpYyBpc0Rvd25sb2FkSWNvblZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZHJvcERvd25TaG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc0Rvd25sb2FkQ2hhcnRWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGRvd25sb2FkSWNvblR5cGU6IFJBRG93bmxvYWRUeXBlO1xyXG5cclxuICBAVmlld0NoaWxkKCdjdGxXaWRnZXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgY3RsV2lkZ2V0OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3dpZGdldERyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHdpZGdldERyb3Bkb3duOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3dpZGdldERvd25sb2FkJywgeyBzdGF0aWM6IGZhbHNlIH0pIHdpZGdldERvd25sb2FkOiBFbGVtZW50UmVmO1xyXG5cclxuXHJcbiAgQElucHV0KCd3aWRnZXQtaW5zdGFuY2UtaWQnKSB3aWRnZXRJbnN0YW5jZUlkOiBudW1iZXI7XHJcbiAgQElucHV0KCdnbG9iYWwtZmlsdGVyJykgZ2xvYmFsRmlsdGVyOiBhbnk7XHJcbiAgQElucHV0KCdkYXRhJykgZGF0YTogYW55O1xyXG4gIEBJbnB1dCgnZXZlbnQtYnVzJykgcmFEYXNoYm9hcmRFdmVudEJ1czogUkFEYXNoYm9hcmRFdmVudEJ1cztcclxuICBASW5wdXQoJ2FwcC1jb25maWcnKSBhcHBDb25maWc6IElBcHBDb25maWc7XHJcbiAgQElucHV0KCd3aWRnZXQtd2lkdGgnKSB3aWR0aDogbnVtYmVyO1xyXG4gIEBJbnB1dCgnd2lkZ2V0LWhlaWdodCcpIGhlaWdodDogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgd2lkZ2V0RGVsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXNoYm9hcmRTZXJ2aWNlOiBSYURhc2hib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5neFNlcnZpY2U6IE5neFVpTG9hZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogUkFUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgbm90aWZpZXI6IE5vdGlmaWVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAnY2xpY2snLCAoZTogRXZlbnQpID0+IHtcclxuICAgICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzLndpZGdldERyb3Bkb3duLm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmRyb3BEb3duU2hvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdjbGljaycsIChlOiBFdmVudCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy53aWRnZXREb3dubG9hZCAmJiBlLnRhcmdldCAhPT0gdGhpcy53aWRnZXREb3dubG9hZC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5pc0Rvd25sb2FkQ2hhcnRWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5yYURhc2hib2FyZEV2ZW50QnVzICYmIGNoYW5nZXMucmFEYXNoYm9hcmRFdmVudEJ1cy5jdXJyZW50VmFsdWUgIT0gY2hhbmdlcy5yYURhc2hib2FyZEV2ZW50QnVzLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgdGhpcy5jb25maWdDaGFuZ2VkID0gdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnN1YnNjcmliZVdpdGhLZXkoUkFFdmVudC5Db25maWdDaGFuZ2VkLCBSQUV2ZW50S2V5LldpZGdldEluc3RhbmNlSWQsIHRoaXMuZGF0YS53aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQudG9TdHJpbmcoKSkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnQ2hhbmdlRXZlbnRIYW5kbGVyKGUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy53aWRnZXRFbGVtZW50ICYmIGNoYW5nZXMuZ2xvYmFsRmlsdGVyICYmIGNoYW5nZXMuZ2xvYmFsRmlsdGVyLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLmdsb2JhbEZpbHRlci5wcmV2aW91c1ZhbHVlKSB7XHJcblxyXG4gICAgICB0aGlzLnJlZnJlc2hXaWRnZXQodGhpcy5kYXRhLndpZGdldEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLndpZHRoICYmIGNoYW5nZXMud2lkdGguY3VycmVudFZhbHVlICE9IGNoYW5nZXMud2lkdGgucHJldmlvdXNWYWx1ZSB8fFxyXG4gICAgICAoY2hhbmdlcy5oZWlnaHQgJiYgY2hhbmdlcy5oZWlnaHQuY3VycmVudFZhbHVlICE9IGNoYW5nZXMuaGVpZ2h0LnByZXZpb3VzVmFsdWUpKSB7XHJcbiAgICAgIGlmICh0aGlzLndpZGdldEVsZW1lbnQpIHtcclxuICAgICAgICBsZXQgc2l6ZTogYW55ID0ge307XHJcbiAgICAgICAgc2l6ZS5oZWlnaHQgPSB0aGlzLmhlaWdodDtcclxuICAgICAgICBzaXplLndpZHRoID0gdGhpcy53aWR0aDtcclxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQud2lkZ2V0UmVzaXplZChzaXplKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRXaWRnZXQodGhpcy5kYXRhLndpZGdldEluZm8pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ0NoYW5nZWQpXHJcbiAgICAgIHRoaXMuY29uZmlnQ2hhbmdlZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKiBUbyBFZGl0IGN1cnJlbnQgd2lkZ2V0IGNvbmZpZ3VyYXRpb24qL1xyXG4gIHB1YmxpYyBlZGl0V2lkZ2V0KCkge1xyXG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5XaWRnZXRFZGl0Q2xpY2tlZCwgdGhpcy5kYXRhLndpZGdldEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIERlbGV0ZSBjdXJyZW50IHdpZGdldCBmcm9tIERPTSovXHJcbiAgcHVibGljIGRlbGV0ZVdpZGdldCgpIHtcclxuICAgIGxldCB3aWRnZXRDb250YWluZXJDb250ZXh0ID0gdGhpcztcclxuICAgIHdpZGdldENvbnRhaW5lckNvbnRleHQubmd4U2VydmljZS5zdGFydCgpO1xyXG4gICAgd2lkZ2V0Q29udGFpbmVyQ29udGV4dC5kYXNoYm9hcmRTZXJ2aWNlLmRlbGV0ZVdpZGdldCh0aGlzLmRhdGEud2lkZ2V0SW5mbywgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICB3aWRnZXRDb250YWluZXJDb250ZXh0Lm5neFNlcnZpY2Uuc3RvcCgpO1xyXG4gICAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgICAgd2lkZ2V0Q29udGFpbmVyQ29udGV4dC53aWRnZXREZWxldGVkLmVtaXQodGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgd2lkZ2V0Q29udGFpbmVyQ29udGV4dC5ub3RpZmllci5ub3RpZnkoJ2Vycm9yJywgXCIgXCIgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdGYWlsZWRUb1JlbW92ZVdpZGdldCcpICsgXCIgIChcIiArIHRoaXMuZGF0YS53aWRnZXRJbmZvLndpZGdldFRpdGxlICsgXCIpIVwiKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIE1vdmUgb3IgY2hhbmdlIHBvc2l0aW9uIGlmIGN1cnJlbnQgd2lkZ2V0IGNvbnRhaW5lciovXHJcbiAgcHVibGljIG1vdmVXaWRnZXQoKSB7XHJcbiAgICB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHVibGlzaChSQUV2ZW50Lk1vdmVXaWRnZXQsIHRoaXMuZGF0YS53aWRnZXRJbmZvKTtcclxuICAgIC8vIHRoaXMuZGFzaGJvYXJkU2VydmljZS5tb3ZlV2lkZ2V0KHdpZGdldEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIENvcHkgQ3VycmVudCB3aWRnZXQgd2l0aCBzYW1lIGNvbmZpZ3VyYXRpb24qL1xyXG4gIHB1YmxpYyBjb3B5V2lkZ2V0KCkge1xyXG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5Db3B5V2lkZ2V0LCB0aGlzLmRhdGEud2lkZ2V0SW5mbyk7XHJcbiAgICAvL3RoaXMuZGFzaGJvYXJkU2VydmljZS5jb3B5V2lkZ2V0KHdpZGdldEluZm8pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbmZpZ0NoYW5nZUV2ZW50SGFuZGxlcih3aWRnZXRJbmZvKSB7XHJcbiAgICB0aGlzLmRhdGEud2lkZ2V0SW5mbyA9IHdpZGdldEluZm87XHJcbiAgICB0aGlzLnJlZnJlc2hXaWRnZXQodGhpcy5kYXRhLndpZGdldEluZm8pO1xyXG4gICAgLy8gdGhpcy51cGRhdGVXaWRnZXQod2lkZ2V0SW5mbyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqICBUbyBsb2FkIGV4dGVybmFsIGN1c3RvbSBlbGVtZW50IHRvIHRoZSB3aWRnZXQgY29udGFpbmVyKi9cclxuICBhc3luYyBsb2FkV2lkZ2V0KHdpZGdldEluZm86IGFueSkge1xyXG4gICAgbGV0IHdpZGdldENvbmZpZ0ZpbHRlciA9IDxJV2lkZ2V0Q29uZmlnRmlsdGVyPntcclxuICAgICAgY29uZmlnOiB3aWRnZXRJbmZvLndpZGdldENvbmZpZ0luZm8uY29uZmlnLFxyXG4gICAgICBnbG9iYWxGaWx0ZXI6IHRoaXMuZ2xvYmFsRmlsdGVyXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHdpZGdldENvbnRhaW5lciA9IHRoaXM7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UubG9hZEV4dGVybmFsU2NyaXB0KHdpZGdldEluZm8uc2NyaXB0VXJsLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5sb2FkVHJhbnNsYXRpb25zKHRoaXMuYXBwQ29uZmlnLmFwcE1hbmFnZW1lbnRCYXNlVXJsLCB0aGlzLmRhdGEud2lkZ2V0SW5mby53aWRnZXROYW1lKS50aGVuKCgpID0+IHtcclxuICAgICAgICB3aWRnZXRDb250YWluZXIud2lkZ2V0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQod2lkZ2V0SW5mby5jdXN0b21UYWcpO1xyXG4gICAgICAgIHdpZGdldENvbnRhaW5lci53aWRnZXRFbGVtZW50LnNldEF0dHJpYnV0ZShcIndpZGdldC1pbnN0YW5jZS1pZFwiLCB3aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignd2lkZ2V0aW5pdGlhdGVkJyArIHdpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCwgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdvbi1kYXRhLWxvYWQnLCAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93UGFuZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1BhbmVsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB3aWRnZXRDb250YWluZXIuaXNXaWRnZXRMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB3aWRnZXRDb25maWdGaWx0ZXIuYXBwQ29uZmlnID0gdGhpcy5hcHBDb25maWc7XHJcbiAgICAgICAgICAgIHdpZGdldENvbmZpZ0ZpbHRlci53aWRnZXRJbmZvID0gd2lkZ2V0SW5mbztcclxuICAgICAgICAgICAgLy8gd2lkZ2V0Q29uZmlnRmlsdGVyLndpZGdldEluZm8gPSA8SVdpZGdldEluZm8+e307XHJcbiAgICAgICAgICAgIHdpZGdldENvbmZpZ0ZpbHRlci53aWRnZXRJbmZvLndpZGdldE5hbWUgPSB3aWRnZXRJbmZvLndpZGdldE5hbWU7XHJcbiAgICAgICAgICAgIHdpZGdldENvbnRhaW5lci53aWRnZXRFbGVtZW50LmxvYWRDb250ZW50KHdpZGdldENvbmZpZ0ZpbHRlcik7XHJcbiAgICAgICAgICAgIGF3YWl0IHdpZGdldENvbnRhaW5lci5zZXRMb2NrKHdpZGdldENvbmZpZ0ZpbHRlci5jb25maWcpO1xyXG4gICAgICAgICAgICBhd2FpdCB3aWRnZXRDb250YWluZXIuc2V0RG93bmxvYWRJY29uKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmN0bFdpZGdldC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMud2lkZ2V0RWxlbWVudCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogVG8gcmVmcmVzaCB3aWRnZXQgb24gaW5wdXQgY29uZmlnIGNoYW5nZXMgKi9cclxuICBhc3luYyByZWZyZXNoV2lkZ2V0KHdpZGdldEluZm86IElXaWRnZXRJbmZvKSB7XHJcbiAgICBsZXQgd2lkZ2V0Q29udGFpbmVyQ29udGV4dCA9IHRoaXM7XHJcbiAgICBsZXQgd2lkZ2V0Q29uZmlnRmlsdGVyID0gPElXaWRnZXRDb25maWdGaWx0ZXI+e1xyXG4gICAgICBjb25maWc6IHdpZGdldEluZm8ud2lkZ2V0Q29uZmlnSW5mby5jb25maWcsXHJcbiAgICAgIGdsb2JhbEZpbHRlcjogdGhpcy5nbG9iYWxGaWx0ZXIsXHJcbiAgICAgIGFwcENvbmZpZzogdGhpcy5hcHBDb25maWcsXHJcbiAgICAgIHdpZGdldEluZm86IHdpZGdldEluZm9cclxuICAgIH1cclxuICAgIGlmICh3aWRnZXRDb250YWluZXJDb250ZXh0LmlzV2lkZ2V0TG9hZGVkKSB7XHJcbiAgICAgIHdpZGdldENvbnRhaW5lckNvbnRleHQud2lkZ2V0RWxlbWVudC5sb2FkQ29udGVudCh3aWRnZXRDb25maWdGaWx0ZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLnNldExvY2sod2lkZ2V0Q29uZmlnRmlsdGVyLmNvbmZpZyk7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2V0RG93bmxvYWRJY29uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNldExvY2soY29uZmlnOiBzdHJpbmcpIHtcclxuICAgIHRoaXMubG9ja1N0YXR1cyA9IGF3YWl0IHRoaXMud2lkZ2V0RWxlbWVudC5sb2FkTG9ja1N0YXR1cyhjb25maWcpO1xyXG4gICAgaWYgKHRoaXMubG9ja1N0YXR1cykge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMubG9ja1N0YXR1cykge1xyXG4gICAgICAgIGNhc2UgXCJsb2NrXCI6IHtcclxuICAgICAgICAgIHRoaXMubG9ja0NsYXNzID0gXCJmYXMgZmEtbG9jayBsb2NrZWRcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwidW5sb2NrXCI6IHtcclxuICAgICAgICAgIHRoaXMubG9ja0NsYXNzID0gXCJ1bmxvY2tlZFwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgXCJwYXJ0aWFsbG9ja1wiOiB7XHJcbiAgICAgICAgICB0aGlzLmxvY2tDbGFzcyA9IFwiZmFzIGZhLWxvY2sgcGFydGlhbGxvY2tlZFwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgIHRoaXMubG9ja0NsYXNzID0gXCJ1bmxvY2tlZFwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2V0RG93bmxvYWRJY29uKCkge1xyXG4gICAgbGV0IGRvd25sb2FkVHlwZSA9IGF3YWl0IHRoaXMud2lkZ2V0RWxlbWVudC5nZXREb3dubG9hZFR5cGUoKTtcclxuICAgIHRoaXMuZG93bmxvYWRJY29uVHlwZSA9IGRvd25sb2FkVHlwZTtcclxuXHJcblxyXG4gICAgaWYgKGRvd25sb2FkVHlwZSAhPSBSQURvd25sb2FkVHlwZS5Ob25lKSB7XHJcbiAgICAgIHRoaXMuaXNEb3dubG9hZEljb25WaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZENsaWNrZWQoKSB7XHJcbiAgICBzd2l0Y2ggKHRoaXMuZG93bmxvYWRJY29uVHlwZSkge1xyXG4gICAgICBjYXNlIFJBRG93bmxvYWRUeXBlLkdyaWQ6XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZEljb25DbGlja2VkKCdDU1YnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBSQURvd25sb2FkVHlwZS5DaGFydDpcclxuICAgICAgICB0aGlzLmlzRG93bmxvYWRDaGFydFZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFJBRG93bmxvYWRUeXBlLkN1c3RvbTpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZEljb25DbGlja2VkKHR5cGU6IHN0cmluZykge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJDU1ZcIjpcclxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQuZG93bmxvYWRDbGlja2VkKHRoaXMuZG93bmxvYWRJY29uVHlwZSwgUkFEb3dubG9hZE9wdGlvbi5DU1YpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiUE5HXCI6XHJcbiAgICAgICAgdGhpcy53aWRnZXRFbGVtZW50LmRvd25sb2FkQ2xpY2tlZCh0aGlzLmRvd25sb2FkSWNvblR5cGUsIFJBRG93bmxvYWRPcHRpb24uUE5HKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlBERlwiOlxyXG4gICAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC5kb3dubG9hZENsaWNrZWQodGhpcy5kb3dubG9hZEljb25UeXBlLCBSQURvd25sb2FkT3B0aW9uLlBERik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJTVkdcIjpcclxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQuZG93bmxvYWRDbGlja2VkKHRoaXMuZG93bmxvYWRJY29uVHlwZSwgUkFEb3dubG9hZE9wdGlvbi5TVkcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiSlBFR1wiOlxyXG4gICAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC5kb3dubG9hZENsaWNrZWQodGhpcy5kb3dubG9hZEljb25UeXBlLCBSQURvd25sb2FkT3B0aW9uLkpQRUcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqU2hvdyBkcm9wZG93biBvbiBnZWFyIGljb24gY2xpY2sgICovXHJcbiAgcHVibGljIHNob3dEcm9wRG93bigpIHtcclxuICAgIHRoaXMuZHJvcERvd25TaG93biA9ICF0aGlzLmRyb3BEb3duU2hvd247XHJcbiAgfVxyXG5cclxuICAvKipIaWRlIGRyb3Bkb3duIG9uIG91dHNpZGUgY2xpY2sgKi9cclxuICBwdWJsaWMgaGlkZURyb3BEb3duKCkge1xyXG4gICAgaWYgKHRoaXMuZHJvcERvd25TaG93bikge1xyXG4gICAgICB0aGlzLmRyb3BEb3duU2hvd24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNEb3dubG9hZENoYXJ0VmlzaWJsZSA9IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iXX0=
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { Component, Input, ViewChild, ElementRef, EventEmitter, Output, NgZone, Renderer2 } from '@angular/core';
7
+ import { RaDashboardService } from './../ra.dashboard.service';
8
+ import { RADashboardEventBus } from '../ra.dashbard.event.bus';
9
+ import { RAEvent, RAEventKey } from '../ra.event.enum';
10
+ import { RADownloadType, RADownloadOption } from '@schneideress/widgetframework';
11
+ import { NgxUiLoaderService } from 'ngx-ui-loader';
12
+ import { NotifierService } from 'angular-notifier';
13
+ import { RATranslateService } from '@schneideress/ra-common';
14
+ var RAWidgetContainer = /** @class */ (function () {
15
+ function RAWidgetContainer(dashboardService, ngxService, translateService, ngZone, notifier, renderer) {
16
+ var _this = this;
17
+ this.dashboardService = dashboardService;
18
+ this.ngxService = ngxService;
19
+ this.translateService = translateService;
20
+ this.ngZone = ngZone;
21
+ this.notifier = notifier;
22
+ this.renderer = renderer;
23
+ this.showPanel = false;
24
+ this.isWidgetLoaded = false;
25
+ this.isIEOrEdge = /msie\s|trident\/|edge\//i.test(window.navigator.userAgent);
26
+ this.lockClass = "unlocked";
27
+ this.lockStatus = "unlock";
28
+ this.isDownloadIconVisible = false;
29
+ this.dropDownShown = false;
30
+ this.isDownloadChartVisible = false;
31
+ this.widgetDeleted = new EventEmitter();
32
+ this.renderer.listen('window', 'click', (/**
33
+ * @param {?} e
34
+ * @return {?}
35
+ */
36
+ function (e) {
37
+ if (e.target !== _this.widgetDropdown.nativeElement) {
38
+ _this.dropDownShown = false;
39
+ }
40
+ }));
41
+ this.renderer.listen('window', 'click', (/**
42
+ * @param {?} e
43
+ * @return {?}
44
+ */
45
+ function (e) {
46
+ if (_this.widgetDownload && e.target !== _this.widgetDownload.nativeElement) {
47
+ _this.isDownloadChartVisible = false;
48
+ }
49
+ }));
50
+ }
51
+ /**
52
+ * @param {?} changes
53
+ * @return {?}
54
+ */
55
+ RAWidgetContainer.prototype.ngOnChanges = /**
56
+ * @param {?} changes
57
+ * @return {?}
58
+ */
59
+ function (changes) {
60
+ var _this = this;
61
+ if (changes.raDashboardEventBus && changes.raDashboardEventBus.currentValue != changes.raDashboardEventBus.previousValue) {
62
+ this.configChanged = this.raDashboardEventBus.subscribeWithKey(RAEvent.ConfigChanged, RAEventKey.WidgetInstanceId, this.data.widgetInfo.widgetInstanceId.toString()).subscribe((/**
63
+ * @param {?} e
64
+ * @return {?}
65
+ */
66
+ function (e) {
67
+ _this.ngZone.run((/**
68
+ * @return {?}
69
+ */
70
+ function () {
71
+ _this.configChangeEventHandler(e);
72
+ }));
73
+ }));
74
+ }
75
+ if (this.widgetElement && changes.globalFilter && changes.globalFilter.currentValue != changes.globalFilter.previousValue) {
76
+ this.refreshWidget(this.data.widgetInfo);
77
+ }
78
+ if (changes.width && changes.width.currentValue != changes.width.previousValue ||
79
+ (changes.height && changes.height.currentValue != changes.height.previousValue)) {
80
+ if (this.widgetElement) {
81
+ /** @type {?} */
82
+ var size = {};
83
+ size.height = this.height;
84
+ size.width = this.width;
85
+ this.widgetElement.widgetResized(size);
86
+ }
87
+ }
88
+ };
89
+ /**
90
+ * @return {?}
91
+ */
92
+ RAWidgetContainer.prototype.ngAfterViewInit = /**
93
+ * @return {?}
94
+ */
95
+ function () {
96
+ var _this = this;
97
+ setTimeout((/**
98
+ * @return {?}
99
+ */
100
+ function () {
101
+ _this.loadWidget(_this.data.widgetInfo);
102
+ }));
103
+ };
104
+ /**
105
+ * @return {?}
106
+ */
107
+ RAWidgetContainer.prototype.ngOnDestroy = /**
108
+ * @return {?}
109
+ */
110
+ function () {
111
+ if (this.configChanged)
112
+ this.configChanged.unsubscribe();
113
+ };
114
+ /** To Edit current widget configuration*/
115
+ /**
116
+ * To Edit current widget configuration
117
+ * @return {?}
118
+ */
119
+ RAWidgetContainer.prototype.editWidget = /**
120
+ * To Edit current widget configuration
121
+ * @return {?}
122
+ */
123
+ function () {
124
+ this.raDashboardEventBus.publish(RAEvent.WidgetEditClicked, this.data.widgetInfo);
125
+ };
126
+ /** To Delete current widget from DOM*/
127
+ /**
128
+ * To Delete current widget from DOM
129
+ * @return {?}
130
+ */
131
+ RAWidgetContainer.prototype.deleteWidget = /**
132
+ * To Delete current widget from DOM
133
+ * @return {?}
134
+ */
135
+ function () {
136
+ var _this = this;
137
+ /** @type {?} */
138
+ var widgetContainerContext = this;
139
+ widgetContainerContext.ngxService.start();
140
+ widgetContainerContext.dashboardService.deleteWidget(this.data.widgetInfo, this.appConfig).subscribe((/**
141
+ * @param {?} status
142
+ * @return {?}
143
+ */
144
+ function (status) {
145
+ widgetContainerContext.ngxService.stop();
146
+ if (status) {
147
+ widgetContainerContext.widgetDeleted.emit(_this.data.widgetInfo.widgetInstanceId);
148
+ }
149
+ else {
150
+ widgetContainerContext.notifier.notify('error', " " + _this.translateService.translate('FailedToRemoveWidget') + " (" + _this.data.widgetInfo.widgetTitle + ")!");
151
+ }
152
+ }));
153
+ };
154
+ /** To Move or change position if current widget container*/
155
+ /**
156
+ * To Move or change position if current widget container
157
+ * @return {?}
158
+ */
159
+ RAWidgetContainer.prototype.moveWidget = /**
160
+ * To Move or change position if current widget container
161
+ * @return {?}
162
+ */
163
+ function () {
164
+ this.raDashboardEventBus.publish(RAEvent.MoveWidget, this.data.widgetInfo);
165
+ // this.dashboardService.moveWidget(widgetInfo);
166
+ };
167
+ /** To Copy Current widget with same configuration*/
168
+ /**
169
+ * To Copy Current widget with same configuration
170
+ * @return {?}
171
+ */
172
+ RAWidgetContainer.prototype.copyWidget = /**
173
+ * To Copy Current widget with same configuration
174
+ * @return {?}
175
+ */
176
+ function () {
177
+ this.raDashboardEventBus.publish(RAEvent.CopyWidget, this.data.widgetInfo);
178
+ //this.dashboardService.copyWidget(widgetInfo);
179
+ };
180
+ /**
181
+ * @param {?} widgetInfo
182
+ * @return {?}
183
+ */
184
+ RAWidgetContainer.prototype.configChangeEventHandler = /**
185
+ * @param {?} widgetInfo
186
+ * @return {?}
187
+ */
188
+ function (widgetInfo) {
189
+ this.data.widgetInfo = widgetInfo;
190
+ this.refreshWidget(this.data.widgetInfo);
191
+ // this.updateWidget(widgetInfo);
192
+ };
193
+ /** To load external custom element to the widget container*/
194
+ /**
195
+ * To load external custom element to the widget container
196
+ * @param {?} widgetInfo
197
+ * @return {?}
198
+ */
199
+ RAWidgetContainer.prototype.loadWidget = /**
200
+ * To load external custom element to the widget container
201
+ * @param {?} widgetInfo
202
+ * @return {?}
203
+ */
204
+ function (widgetInfo) {
205
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
206
+ var widgetConfigFilter, widgetContainer;
207
+ var _this = this;
208
+ return tslib_1.__generator(this, function (_a) {
209
+ widgetConfigFilter = (/** @type {?} */ ({
210
+ config: widgetInfo.widgetConfigInfo.config,
211
+ globalFilter: this.globalFilter
212
+ }));
213
+ widgetContainer = this;
214
+ this.dashboardService.loadExternalScript(widgetInfo.scriptUrl, (/**
215
+ * @return {?}
216
+ */
217
+ function () {
218
+ _this.translateService.loadTranslations(_this.appConfig.appManagementBaseUrl, _this.data.widgetInfo.widgetName, false).then((/**
219
+ * @return {?}
220
+ */
221
+ function () {
222
+ widgetContainer.widgetElement = document.createElement(widgetInfo.customTag);
223
+ widgetContainer.widgetElement.setAttribute("widget-instance-id", widgetInfo.widgetInstanceId);
224
+ document.body.addEventListener('widgetinitiated' + widgetInfo.widgetInstanceId, (/**
225
+ * @return {?}
226
+ */
227
+ function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
228
+ var _this = this;
229
+ return tslib_1.__generator(this, function (_a) {
230
+ setTimeout((/**
231
+ * @return {?}
232
+ */
233
+ function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
234
+ var _this = this;
235
+ return tslib_1.__generator(this, function (_a) {
236
+ switch (_a.label) {
237
+ case 0:
238
+ this.widgetElement.addEventListener('on-data-load', (/**
239
+ * @param {?} e
240
+ * @return {?}
241
+ */
242
+ function (e) {
243
+ if (e.detail)
244
+ _this.showPanel = true;
245
+ else
246
+ _this.showPanel = false;
247
+ }));
248
+ widgetContainer.isWidgetLoaded = true;
249
+ widgetConfigFilter.appConfig = this.appConfig;
250
+ widgetConfigFilter.widgetInfo = widgetInfo;
251
+ // widgetConfigFilter.widgetInfo = <IWidgetInfo>{};
252
+ widgetConfigFilter.widgetInfo.widgetName = widgetInfo.widgetName;
253
+ widgetContainer.widgetElement.loadContent(widgetConfigFilter);
254
+ return [4 /*yield*/, widgetContainer.setLock(widgetConfigFilter.config)];
255
+ case 1:
256
+ _a.sent();
257
+ return [4 /*yield*/, widgetContainer.setDownloadIcon()];
258
+ case 2:
259
+ _a.sent();
260
+ return [2 /*return*/];
261
+ }
262
+ });
263
+ }); }));
264
+ return [2 /*return*/];
265
+ });
266
+ }); }));
267
+ _this.ctlWidget.nativeElement.appendChild(_this.widgetElement);
268
+ }));
269
+ }));
270
+ return [2 /*return*/];
271
+ });
272
+ });
273
+ };
274
+ /** To refresh widget on input config changes */
275
+ /**
276
+ * To refresh widget on input config changes
277
+ * @param {?} widgetInfo
278
+ * @return {?}
279
+ */
280
+ RAWidgetContainer.prototype.refreshWidget = /**
281
+ * To refresh widget on input config changes
282
+ * @param {?} widgetInfo
283
+ * @return {?}
284
+ */
285
+ function (widgetInfo) {
286
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
287
+ var widgetContainerContext, widgetConfigFilter;
288
+ return tslib_1.__generator(this, function (_a) {
289
+ switch (_a.label) {
290
+ case 0:
291
+ widgetContainerContext = this;
292
+ widgetConfigFilter = (/** @type {?} */ ({
293
+ config: widgetInfo.widgetConfigInfo.config,
294
+ globalFilter: this.globalFilter,
295
+ appConfig: this.appConfig,
296
+ widgetInfo: widgetInfo
297
+ }));
298
+ if (!widgetContainerContext.isWidgetLoaded) return [3 /*break*/, 3];
299
+ widgetContainerContext.widgetElement.loadContent(widgetConfigFilter);
300
+ return [4 /*yield*/, this.setLock(widgetConfigFilter.config)];
301
+ case 1:
302
+ _a.sent();
303
+ return [4 /*yield*/, this.setDownloadIcon()];
304
+ case 2:
305
+ _a.sent();
306
+ _a.label = 3;
307
+ case 3: return [2 /*return*/];
308
+ }
309
+ });
310
+ });
311
+ };
312
+ /**
313
+ * @private
314
+ * @param {?} config
315
+ * @return {?}
316
+ */
317
+ RAWidgetContainer.prototype.setLock = /**
318
+ * @private
319
+ * @param {?} config
320
+ * @return {?}
321
+ */
322
+ function (config) {
323
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
324
+ var _a;
325
+ return tslib_1.__generator(this, function (_b) {
326
+ switch (_b.label) {
327
+ case 0:
328
+ debugger;
329
+ _a = this;
330
+ return [4 /*yield*/, this.widgetElement.loadLockStatus(config)];
331
+ case 1:
332
+ _a.lockStatus = _b.sent();
333
+ if (this.lockStatus == 'lock') {
334
+ this.lockTitle = 'Locked';
335
+ console.log(this.lockTitle);
336
+ }
337
+ else {
338
+ this.lockTitle = 'Partially Locked';
339
+ }
340
+ if (this.lockStatus) {
341
+ switch (this.lockStatus) {
342
+ case "lock": {
343
+ this.lockClass = "fas fa-lock locked";
344
+ break;
345
+ }
346
+ case "unlock": {
347
+ this.lockClass = "unlocked";
348
+ break;
349
+ }
350
+ case "partiallock": {
351
+ this.lockClass = "fas fa-lock partiallocked";
352
+ break;
353
+ }
354
+ default: {
355
+ this.lockClass = "unlocked";
356
+ break;
357
+ }
358
+ }
359
+ }
360
+ return [2 /*return*/];
361
+ }
362
+ });
363
+ });
364
+ };
365
+ /**
366
+ * @return {?}
367
+ */
368
+ RAWidgetContainer.prototype.setDownloadIcon = /**
369
+ * @return {?}
370
+ */
371
+ function () {
372
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
373
+ var downloadType;
374
+ return tslib_1.__generator(this, function (_a) {
375
+ switch (_a.label) {
376
+ case 0: return [4 /*yield*/, this.widgetElement.getDownloadType()];
377
+ case 1:
378
+ downloadType = _a.sent();
379
+ this.downloadIconType = downloadType;
380
+ if (downloadType != RADownloadType.None) {
381
+ this.isDownloadIconVisible = true;
382
+ }
383
+ return [2 /*return*/];
384
+ }
385
+ });
386
+ });
387
+ };
388
+ /**
389
+ * @return {?}
390
+ */
391
+ RAWidgetContainer.prototype.downloadClicked = /**
392
+ * @return {?}
393
+ */
394
+ function () {
395
+ switch (this.downloadIconType) {
396
+ case RADownloadType.Grid:
397
+ this.downloadIconClicked('CSV');
398
+ break;
399
+ case RADownloadType.Chart:
400
+ this.isDownloadChartVisible = true;
401
+ break;
402
+ case RADownloadType.Custom:
403
+ break;
404
+ }
405
+ };
406
+ /**
407
+ * @param {?} type
408
+ * @return {?}
409
+ */
410
+ RAWidgetContainer.prototype.downloadIconClicked = /**
411
+ * @param {?} type
412
+ * @return {?}
413
+ */
414
+ function (type) {
415
+ switch (type) {
416
+ case "CSV":
417
+ this.widgetElement.downloadClicked(this.downloadIconType, RADownloadOption.CSV);
418
+ break;
419
+ case "PNG":
420
+ this.widgetElement.downloadClicked(this.downloadIconType, RADownloadOption.PNG);
421
+ break;
422
+ case "PDF":
423
+ this.widgetElement.downloadClicked(this.downloadIconType, RADownloadOption.PDF);
424
+ break;
425
+ case "SVG":
426
+ this.widgetElement.downloadClicked(this.downloadIconType, RADownloadOption.SVG);
427
+ break;
428
+ case "JPEG":
429
+ this.widgetElement.downloadClicked(this.downloadIconType, RADownloadOption.JPEG);
430
+ break;
431
+ }
432
+ };
433
+ /**Show dropdown on gear icon click */
434
+ /**
435
+ * Show dropdown on gear icon click
436
+ * @return {?}
437
+ */
438
+ RAWidgetContainer.prototype.showDropDown = /**
439
+ * Show dropdown on gear icon click
440
+ * @return {?}
441
+ */
442
+ function () {
443
+ this.dropDownShown = !this.dropDownShown;
444
+ };
445
+ /**Hide dropdown on outside click */
446
+ /**
447
+ * Hide dropdown on outside click
448
+ * @return {?}
449
+ */
450
+ RAWidgetContainer.prototype.hideDropDown = /**
451
+ * Hide dropdown on outside click
452
+ * @return {?}
453
+ */
454
+ function () {
455
+ if (this.dropDownShown) {
456
+ this.dropDownShown = false;
457
+ }
458
+ this.isDownloadChartVisible = false;
459
+ };
460
+ RAWidgetContainer.decorators = [
461
+ { type: Component, args: [{
462
+ selector: 'ra-widget-container',
463
+ template: "<div class=\"wc-wrapper\" (mouseleave)=\"hideDropDown()\">\n <div class=\"wcheader widget-move\">\n <div class=\"col-md-12 wc-mover\" style=\"padding-left: 0px;height:inherit;\">\n <div style=\"display:flex;margin-top:10px;\">\n <div class=\"col-md-11 float-left\" style=\"width:96%;padding-left: 0px\">{{data.widgetInfo.widgetTitle}}\n </div>\n <div class=\"col-md-1\" style=\"cursor:default;padding-right: 0px;\">\n <div class=\"float-right\" style=\"display: flex;\">\n <div class=\"title-bar-icon download download-icon\" *ngIf=\"isDownloadIconVisible\">\n <i class=\"fas fa-download\" (mouseover)=\"setDownloadIcon()\" #widgetDownload\n (click)=\"downloadClicked()\"></i>\n <div class=\"download-content\" [ngClass]=\"{'dropdown-click': isDownloadChartVisible}\">\n <a (click)=\"downloadIconClicked('PNG')\">\n <i class=\"fal fa-file-image\"></i>\n <span>{{'PNG'|translate}}</span>\n </a>\n <a (click)=\"downloadIconClicked('JPEG')\">\n <i class=\"fal fa-file\"></i>\n <span>{{'JPEG'|translate}}</span>\n </a>\n <a (click)=\"downloadIconClicked('PDF')\">\n <i class=\"fal fa-file-pdf\"></i>\n <span>{{'PDF'|translate}}</span>\n </a>\n <a (click)=\"downloadIconClicked('SVG')\">\n <i class=\"fal fa-file-alt\"></i>\n <span>{{'SVG'|translate}}</span>\n </a>\n </div>\n </div>\n <div class=\"dropdown\">\n <div class=\"dropbtn title-bar-icon\"> <i #widgetDropdown class=\"fas fa-cog\" (click)=\"showDropDown()\"></i>\n </div>\n <div class=\"dropdown-content widget-config-item\" [ngClass]=\"{'dropdown-click': dropDownShown}\">\n <a (click)=\"editWidget()\">\n <i class=\"fal fa-edit\"></i>\n <span>{{'Edit'|translate}}</span>\n </a>\n <a (click)=\"copyWidget()\">\n <i class=\"fal fa-copy\"></i>\n <span>{{'Copy'|translate}}</span>\n </a>\n <a (click)=\"moveWidget()\">\n <i class=\"fal fa-arrows-alt\"></i>\n <span>{{'Move'|translate}}</span>\n </a>\n <hr class=\"hr\">\n <a (click)=\"deleteWidget()\">\n <i class=\"fal fa-times\" style=\"padding-left: 3px;\"></i>\n <span>{{'Delete'|translate}}</span>\n </a>\n </div>\n </div>\n <ra-tooltip [value]=\"lockTitle\" [width]=\"'300px'\">\n <div class=\"title-bar-lock-icon\">\n \n <i [ngClass]=\"lockClass\" ></i>\n \n <!-- <i [ngClass]=\"lockClass\"\n [attr.title]=\"lockStatus=='lock' ? 'Locked' : 'Partially Locked'\"></i> -->\n </div>\n </ra-tooltip>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"wcBody\">\n <div class=\"m-fadeOut widget-overlay\" [ngClass]=\"{'m-fadeIn': showPanel}\">\n <div class=\"lds-roller\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n <perfect-scrollbar [scrollIndicators]=\"true\">\n <div #ctlWidget></div>\n </perfect-scrollbar>\n </div>\n</div>",
464
+ styles: [".wcheader{width:100%;height:24px;background:#fff;color:#3dcd58;font-family:\"Arial Rounded MT\";font-size:16px;position:absolute;left:0;top:0}.wc-wrapper{height:100%;position:relative;margin:auto 15px}.wc-mover{cursor:all-scroll}.wcBody{width:100%;position:absolute;top:46px;left:0;bottom:15px}.wcBodyBorder{border:1px dashed #e6e2e2}.sp_icon{float:left;margin:0 15% 0 0}.dropbtn{cursor:pointer;color:#42b4e6}.dropdown{visibility:hidden;opacity:0;-webkit-transition:visibility,opacity .5s linear;transition:visibility,opacity .5s linear;position:relative}.dropdown hr{margin:0!important}.dropdown-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:100px;box-shadow:0 8px 16px 8px rgba(0,0,0,.2);z-index:2;font-size:12px;font-weight:400}.dropdown-content a{color:#000;padding:5px 16px;text-decoration:none;display:block;cursor:pointer}.dropdown-content a:hover{background-color:#f1f1f1}.dropdown-click{display:block!important;-webkit-animation:.3s ease-out slide-down;animation:.3s ease-out slide-down}.download-icon{cursor:pointer}.dropdown:hover .dropdown-content{color:#fff}.wc-wrapper:hover .dropdown{visibility:visible;opacity:1}.title-bar-icon{margin:0 3px;color:#42b4e6}.title-bar-lock-icon{margin:0 3px}.hr{border:0;border-top:1px solid rgba(0,0,0,.1)}@keyframes slide-down{0%{opacity:0;-webkit-transform:translateY(-20%);transform:translateY(-20%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes slide-down{0%{opacity:0;-webkit-transform:translateY(-20%)}100%{opacity:1;-webkit-transform:translateY(0)}}.widget-config-item i{font-size:17px;color:#42b4e6}.widget-config-item span{font-size:12px;font:inherit;padding-left:12px;color:#42b4e6}.locked{color:#42b4e6}.partiallocked{color:#a0d9f2}.unlocked{display:none}.download{visibility:hidden;opacity:0;-webkit-transition:visibility,opacity .5s linear;transition:visibility,opacity .5s linear;position:relative}.wc-wrapper:hover .download{visibility:visible;opacity:1}.download-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:100px;box-shadow:0 8px 16px 8px rgba(0,0,0,.2);z-index:2;font-size:12px;font-weight:400}.download-content a{color:#000;padding:5px 16px;text-decoration:none;display:block;cursor:pointer}.download-content a:hover{background-color:#f1f1f1}.download-content a i{font-size:17px;color:#42b4e6}.download-content a span{font-size:12px;font:inherit;padding-left:12px;color:#42b4e6}"]
465
+ }] }
466
+ ];
467
+ /** @nocollapse */
468
+ RAWidgetContainer.ctorParameters = function () { return [
469
+ { type: RaDashboardService },
470
+ { type: NgxUiLoaderService },
471
+ { type: RATranslateService },
472
+ { type: NgZone },
473
+ { type: NotifierService },
474
+ { type: Renderer2 }
475
+ ]; };
476
+ RAWidgetContainer.propDecorators = {
477
+ ctlWidget: [{ type: ViewChild, args: ['ctlWidget', { static: false },] }],
478
+ widgetDropdown: [{ type: ViewChild, args: ['widgetDropdown', { static: false },] }],
479
+ widgetDownload: [{ type: ViewChild, args: ['widgetDownload', { static: false },] }],
480
+ widgetInstanceId: [{ type: Input, args: ['widget-instance-id',] }],
481
+ globalFilter: [{ type: Input, args: ['global-filter',] }],
482
+ data: [{ type: Input, args: ['data',] }],
483
+ raDashboardEventBus: [{ type: Input, args: ['event-bus',] }],
484
+ appConfig: [{ type: Input, args: ['app-config',] }],
485
+ width: [{ type: Input, args: ['widget-width',] }],
486
+ height: [{ type: Input, args: ['widget-height',] }],
487
+ widgetDeleted: [{ type: Output }]
488
+ };
489
+ return RAWidgetContainer;
490
+ }());
491
+ export { RAWidgetContainer };
492
+ if (false) {
493
+ /** @type {?} */
494
+ RAWidgetContainer.prototype.showPanel;
495
+ /**
496
+ * @type {?}
497
+ * @private
498
+ */
499
+ RAWidgetContainer.prototype.isWidgetLoaded;
500
+ /**
501
+ * @type {?}
502
+ * @private
503
+ */
504
+ RAWidgetContainer.prototype.widgetElement;
505
+ /**
506
+ * @type {?}
507
+ * @private
508
+ */
509
+ RAWidgetContainer.prototype.configChanged;
510
+ /**
511
+ * @type {?}
512
+ * @private
513
+ */
514
+ RAWidgetContainer.prototype.isIEOrEdge;
515
+ /** @type {?} */
516
+ RAWidgetContainer.prototype.widgetHeight;
517
+ /** @type {?} */
518
+ RAWidgetContainer.prototype.lockClass;
519
+ /** @type {?} */
520
+ RAWidgetContainer.prototype.lockStatus;
521
+ /** @type {?} */
522
+ RAWidgetContainer.prototype.isDownloadIconVisible;
523
+ /** @type {?} */
524
+ RAWidgetContainer.prototype.dropDownShown;
525
+ /** @type {?} */
526
+ RAWidgetContainer.prototype.isDownloadChartVisible;
527
+ /** @type {?} */
528
+ RAWidgetContainer.prototype.downloadIconType;
529
+ /** @type {?} */
530
+ RAWidgetContainer.prototype.ctlWidget;
531
+ /** @type {?} */
532
+ RAWidgetContainer.prototype.widgetDropdown;
533
+ /** @type {?} */
534
+ RAWidgetContainer.prototype.widgetDownload;
535
+ /** @type {?} */
536
+ RAWidgetContainer.prototype.widgetInstanceId;
537
+ /** @type {?} */
538
+ RAWidgetContainer.prototype.globalFilter;
539
+ /** @type {?} */
540
+ RAWidgetContainer.prototype.data;
541
+ /** @type {?} */
542
+ RAWidgetContainer.prototype.raDashboardEventBus;
543
+ /** @type {?} */
544
+ RAWidgetContainer.prototype.appConfig;
545
+ /** @type {?} */
546
+ RAWidgetContainer.prototype.width;
547
+ /** @type {?} */
548
+ RAWidgetContainer.prototype.height;
549
+ /** @type {?} */
550
+ RAWidgetContainer.prototype.widgetDeleted;
551
+ /** @type {?} */
552
+ RAWidgetContainer.prototype.lockTitle;
553
+ /**
554
+ * @type {?}
555
+ * @private
556
+ */
557
+ RAWidgetContainer.prototype.dashboardService;
558
+ /**
559
+ * @type {?}
560
+ * @private
561
+ */
562
+ RAWidgetContainer.prototype.ngxService;
563
+ /**
564
+ * @type {?}
565
+ * @private
566
+ */
567
+ RAWidgetContainer.prototype.translateService;
568
+ /**
569
+ * @type {?}
570
+ * @private
571
+ */
572
+ RAWidgetContainer.prototype.ngZone;
573
+ /**
574
+ * @type {?}
575
+ * @private
576
+ */
577
+ RAWidgetContainer.prototype.notifier;
578
+ /**
579
+ * @type {?}
580
+ * @private
581
+ */
582
+ RAWidgetContainer.prototype.renderer;
583
+ }
584
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEud2lkZ2V0LmNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2NobmVpZGVyZXNzL2Rhc2hib2FyZGZyYW1ld29yay8iLCJzb3VyY2VzIjpbImxpYi9yYS13aWRnZXQtY29udGFpbmVyL3JhLndpZGdldC5jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFvRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNMLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFnRCxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzdEO0lBcUNFLDJCQUFvQixnQkFBb0MsRUFDOUMsVUFBOEIsRUFDOUIsZ0JBQW9DLEVBQ3BDLE1BQWMsRUFDZCxRQUF5QixFQUN6QixRQUFtQjtRQUw3QixpQkFvQkM7UUFwQm1CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDOUMsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQW5DdEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUdoQyxlQUFVLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUUsY0FBUyxHQUFXLFVBQVUsQ0FBQztRQUMvQixlQUFVLEdBQVcsUUFBUSxDQUFDO1FBQzlCLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFnQnJDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQVduRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTzs7OztRQUFFLFVBQUMsQ0FBUTtZQUMvQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssS0FBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ2xELEtBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxFQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTzs7OztRQUFFLFVBQUMsQ0FBUTtZQUMvQyxJQUFJLEtBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxLQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRTtnQkFDekUsS0FBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQzthQUNyQztRQUNILENBQUMsRUFBQyxDQUFDO0lBR0wsQ0FBQzs7Ozs7SUFFRCx1Q0FBVzs7OztJQUFYLFVBQVksT0FBc0I7UUFBbEMsaUJBd0JDO1FBdkJDLElBQUksT0FBTyxDQUFDLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRTtZQUN4SCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFDLENBQUM7Z0JBQy9LLEtBQUksQ0FBQyxNQUFNLENBQUMsR0FBRzs7O2dCQUFDO29CQUNkLEtBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkMsQ0FBQyxFQUFDLENBQUM7WUFFTCxDQUFDLEVBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUU7WUFFekgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzFDO1FBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUM1RSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNqRixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7O29CQUNsQixJQUFJLEdBQVEsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hDO1NBQ0Y7SUFFSCxDQUFDOzs7O0lBRUQsMkNBQWU7OztJQUFmO1FBQUEsaUJBSUM7UUFIQyxVQUFVOzs7UUFBQztZQUNULEtBQUksQ0FBQyxVQUFVLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7SUFFRCx1Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLElBQUksQ0FBQyxhQUFhO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUdELDBDQUEwQzs7Ozs7SUFDbkMsc0NBQVU7Ozs7SUFBakI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCx1Q0FBdUM7Ozs7O0lBQ2hDLHdDQUFZOzs7O0lBQW5CO1FBQUEsaUJBYUM7O1lBWkssc0JBQXNCLEdBQUcsSUFBSTtRQUNqQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQSxNQUFNO1lBQ3pHLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QyxJQUFJLE1BQU0sRUFBRTtnQkFDVixzQkFBc0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDbEY7aUJBQ0k7Z0JBQ0gsc0JBQXNCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsR0FBRyxLQUFLLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDO2FBRWxLO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsNERBQTREOzs7OztJQUNyRCxzQ0FBVTs7OztJQUFqQjtRQUNFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNFLGdEQUFnRDtJQUNsRCxDQUFDO0lBRUQsb0RBQW9EOzs7OztJQUM3QyxzQ0FBVTs7OztJQUFqQjtRQUNFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNFLCtDQUErQztJQUNqRCxDQUFDOzs7OztJQUVNLG9EQUF3Qjs7OztJQUEvQixVQUFnQyxVQUFVO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsaUNBQWlDO0lBQ25DLENBQUM7SUFHRCw4REFBOEQ7Ozs7OztJQUN4RCxzQ0FBVTs7Ozs7SUFBaEIsVUFBaUIsVUFBZTs7Ozs7Z0JBQzFCLGtCQUFrQixHQUFHLG1CQUFxQjtvQkFDNUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNO29CQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7aUJBQ2hDLEVBQUE7Z0JBRUcsZUFBZSxHQUFHLElBQUk7Z0JBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsU0FBUzs7O2dCQUFFO29CQUM3RCxLQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxLQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSTs7O29CQUFDO3dCQUN2SCxlQUFlLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUM3RSxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt3QkFDOUYsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsZ0JBQWdCOzs7d0JBQUU7OztnQ0FDOUUsVUFBVTs7O2dDQUFDOzs7OztnREFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGNBQWM7Ozs7Z0RBQUUsVUFBQyxDQUFNO29EQUN6RCxJQUFJLENBQUMsQ0FBQyxNQUFNO3dEQUNWLEtBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDOzt3REFFdEIsS0FBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0RBQzNCLENBQUMsRUFBQyxDQUFDO2dEQUNILGVBQWUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO2dEQUN0QyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnREFDOUMsa0JBQWtCLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztnREFDM0MsbURBQW1EO2dEQUNuRCxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0RBQ2pFLGVBQWUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0RBQzlELHFCQUFNLGVBQWUsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUE7O2dEQUF4RCxTQUF3RCxDQUFDO2dEQUN6RCxxQkFBTSxlQUFlLENBQUMsZUFBZSxFQUFFLEVBQUE7O2dEQUF2QyxTQUF1QyxDQUFDOzs7O3FDQUN6QyxFQUFDLENBQUM7Ozs2QkFDSixFQUFDLENBQUM7d0JBQ0gsS0FBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDL0QsQ0FBQyxFQUFDLENBQUM7Z0JBQ0wsQ0FBQyxFQUFDLENBQUM7Ozs7S0FDSjtJQUVELGdEQUFnRDs7Ozs7O0lBQzFDLHlDQUFhOzs7OztJQUFuQixVQUFvQixVQUF1Qjs7Ozs7O3dCQUNyQyxzQkFBc0IsR0FBRyxJQUFJO3dCQUM3QixrQkFBa0IsR0FBRyxtQkFBcUI7NEJBQzVDLE1BQU0sRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsTUFBTTs0QkFDMUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZOzRCQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7NEJBQ3pCLFVBQVUsRUFBRSxVQUFVO3lCQUN2QixFQUFBOzZCQUNHLHNCQUFzQixDQUFDLGNBQWMsRUFBckMsd0JBQXFDO3dCQUN2QyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7d0JBQ3JFLHFCQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUE7O3dCQUE3QyxTQUE2QyxDQUFDO3dCQUM5QyxxQkFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUE7O3dCQUE1QixTQUE0QixDQUFDOzs7Ozs7S0FFaEM7Ozs7OztJQUVhLG1DQUFPOzs7OztJQUFyQixVQUFzQixNQUFjOzs7Ozs7d0JBQUcsUUFBUSxDQUFBO3dCQUM3QyxLQUFBLElBQUksQ0FBQTt3QkFBYyxxQkFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQTs7d0JBQWpFLEdBQUssVUFBVSxHQUFHLFNBQStDLENBQUM7d0JBQ2xFLElBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxNQUFNLEVBQUM7NEJBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDOzRCQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzt5QkFDN0I7NkJBQ0c7NEJBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQzt5QkFDckM7d0JBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFOzRCQUNuQixRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0NBQ3ZCLEtBQUssTUFBTSxDQUFDLENBQUM7b0NBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQztvQ0FDdEMsTUFBTTtpQ0FDUDtnQ0FDRCxLQUFLLFFBQVEsQ0FBQyxDQUFDO29DQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO29DQUM1QixNQUFNO2lDQUNQO2dDQUNELEtBQUssYUFBYSxDQUFDLENBQUM7b0NBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsMkJBQTJCLENBQUM7b0NBQzdDLE1BQU07aUNBQ1A7Z0NBQ0QsT0FBTyxDQUFDLENBQUM7b0NBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7b0NBQzVCLE1BQU07aUNBQ1A7NkJBQ0Y7eUJBQ0Y7Ozs7O0tBQ0Y7Ozs7SUFFWSwyQ0FBZTs7O0lBQTVCOzs7Ozs0QkFDcUIscUJBQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsRUFBQTs7d0JBQXpELFlBQVksR0FBRyxTQUEwQzt3QkFDN0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQzt3QkFHckMsSUFBSSxZQUFZLElBQUksY0FBYyxDQUFDLElBQUksRUFBRTs0QkFDdkMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQzt5QkFDbkM7Ozs7O0tBQ0Y7Ozs7SUFFTSwyQ0FBZTs7O0lBQXRCO1FBQ0UsUUFBUSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDN0IsS0FBSyxjQUFjLENBQUMsSUFBSTtnQkFDdEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO1lBQ1IsS0FBSyxjQUFjLENBQUMsS0FBSztnQkFDdkIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssY0FBYyxDQUFDLE1BQU07Z0JBQ3hCLE1BQU07U0FDVDtJQUNILENBQUM7Ozs7O0lBRU0sK0NBQW1COzs7O0lBQTFCLFVBQTJCLElBQVk7UUFDckMsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRixNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEYsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hGLE1BQU07WUFDUixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRixNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakYsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVELHVDQUF1Qzs7Ozs7SUFDaEMsd0NBQVk7Ozs7SUFBbkI7UUFDRSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMzQyxDQUFDO0lBRUQsb0NBQW9DOzs7OztJQUM3Qix3Q0FBWTs7OztJQUFuQjtRQUNFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQzs7Z0JBalJGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQiwrbEhBQW1EOztpQkFFcEQ7Ozs7Z0JBZFEsa0JBQWtCO2dCQUlsQixrQkFBa0I7Z0JBR2xCLGtCQUFrQjtnQkFSdUgsTUFBTTtnQkFNL0ksZUFBZTtnQkFOa0ksU0FBUzs7OzRCQStCaEssU0FBUyxTQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7aUNBQ3hDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7aUNBQzdDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7bUNBRzdDLEtBQUssU0FBQyxvQkFBb0I7K0JBQzFCLEtBQUssU0FBQyxlQUFlO3VCQUNyQixLQUFLLFNBQUMsTUFBTTtzQ0FDWixLQUFLLFNBQUMsV0FBVzs0QkFDakIsS0FBSyxTQUFDLFlBQVk7d0JBQ2xCLEtBQUssU0FBQyxjQUFjO3lCQUNwQixLQUFLLFNBQUMsZUFBZTtnQ0FFckIsTUFBTTs7SUFpUFQsd0JBQUM7Q0FBQSxBQWxSRCxJQWtSQztTQTdRWSxpQkFBaUI7OztJQUU1QixzQ0FBa0M7Ozs7O0lBQ2xDLDJDQUF3Qzs7Ozs7SUFDeEMsMENBQTJCOzs7OztJQUMzQiwwQ0FBMkI7Ozs7O0lBQzNCLHVDQUFpRjs7SUFDakYseUNBQTRCOztJQUM1QixzQ0FBc0M7O0lBQ3RDLHVDQUFxQzs7SUFDckMsa0RBQThDOztJQUM5QywwQ0FBc0M7O0lBQ3RDLG1EQUErQzs7SUFDL0MsNkNBQXdDOztJQUV4QyxzQ0FBaUU7O0lBQ2pFLDJDQUEyRTs7SUFDM0UsMkNBQTJFOztJQUczRSw2Q0FBc0Q7O0lBQ3RELHlDQUEwQzs7SUFDMUMsaUNBQXlCOztJQUN6QixnREFBNkQ7O0lBQzdELHNDQUEyQzs7SUFDM0Msa0NBQXFDOztJQUNyQyxtQ0FBdUM7O0lBRXZDLDBDQUFxRDs7SUFDckQsc0NBQXlCOzs7OztJQUdiLDZDQUE0Qzs7Ozs7SUFDdEQsdUNBQXNDOzs7OztJQUN0Qyw2Q0FBNEM7Ozs7O0lBQzVDLG1DQUFzQjs7Ozs7SUFDdEIscUNBQWlDOzs7OztJQUNqQyxxQ0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgU2ltcGxlQ2hhbmdlLCBPbkRlc3Ryb3ksIE5nWm9uZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSYURhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuLy4uL3JhLmRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IFJBRGFzaGJvYXJkRXZlbnRCdXMgfSBmcm9tICcuLi9yYS5kYXNoYmFyZC5ldmVudC5idXMnO1xuaW1wb3J0IHsgUkFFdmVudCwgUkFFdmVudEtleSB9IGZyb20gJy4uL3JhLmV2ZW50LmVudW0nO1xuaW1wb3J0IHsgSUFwcENvbmZpZywgSVdpZGdldENvbmZpZ0ZpbHRlciwgSVdpZGdldEluZm8sIFJBRG93bmxvYWRUeXBlLCBSQURvd25sb2FkT3B0aW9uIH0gZnJvbSAnQHNjaG5laWRlcmVzcy93aWRnZXRmcmFtZXdvcmsnO1xuaW1wb3J0IHsgTmd4VWlMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnbmd4LXVpLWxvYWRlcic7XG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW5vdGlmaWVyJztcblxuaW1wb3J0IHsgUkFUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQHNjaG5laWRlcmVzcy9yYS1jb21tb24nO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JhLXdpZGdldC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmEud2lkZ2V0LmNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhLndpZGdldC5jb250YWluZXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJBV2lkZ2V0Q29udGFpbmVyIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBzaG93UGFuZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1dpZGdldExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIHdpZGdldEVsZW1lbnQ6IGFueTtcbiAgcHJpdmF0ZSBjb25maWdDaGFuZ2VkOiBhbnk7XG4gIHByaXZhdGUgaXNJRU9yRWRnZSA9IC9tc2llXFxzfHRyaWRlbnRcXC98ZWRnZVxcLy9pLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpO1xuICBwdWJsaWMgd2lkZ2V0SGVpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyBsb2NrQ2xhc3M6IHN0cmluZyA9IFwidW5sb2NrZWRcIjtcbiAgcHVibGljIGxvY2tTdGF0dXM6IHN0cmluZyA9IFwidW5sb2NrXCI7XG4gIHB1YmxpYyBpc0Rvd25sb2FkSWNvblZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGRyb3BEb3duU2hvd246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzRG93bmxvYWRDaGFydFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGRvd25sb2FkSWNvblR5cGU6IFJBRG93bmxvYWRUeXBlO1xuXG4gIEBWaWV3Q2hpbGQoJ2N0bFdpZGdldCcsIHsgc3RhdGljOiBmYWxzZSB9KSBjdGxXaWRnZXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3dpZGdldERyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHdpZGdldERyb3Bkb3duOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd3aWRnZXREb3dubG9hZCcsIHsgc3RhdGljOiBmYWxzZSB9KSB3aWRnZXREb3dubG9hZDogRWxlbWVudFJlZjtcblxuXG4gIEBJbnB1dCgnd2lkZ2V0LWluc3RhbmNlLWlkJykgd2lkZ2V0SW5zdGFuY2VJZDogbnVtYmVyO1xuICBASW5wdXQoJ2dsb2JhbC1maWx0ZXInKSBnbG9iYWxGaWx0ZXI6IGFueTtcbiAgQElucHV0KCdkYXRhJykgZGF0YTogYW55O1xuICBASW5wdXQoJ2V2ZW50LWJ1cycpIHJhRGFzaGJvYXJkRXZlbnRCdXM6IFJBRGFzaGJvYXJkRXZlbnRCdXM7XG4gIEBJbnB1dCgnYXBwLWNvbmZpZycpIGFwcENvbmZpZzogSUFwcENvbmZpZztcbiAgQElucHV0KCd3aWRnZXQtd2lkdGgnKSB3aWR0aDogbnVtYmVyO1xuICBASW5wdXQoJ3dpZGdldC1oZWlnaHQnKSBoZWlnaHQ6IG51bWJlcjtcblxuICBAT3V0cHV0KCkgd2lkZ2V0RGVsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBwdWJsaWMgbG9ja1RpdGxlOiBzdHJpbmc7XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhc2hib2FyZFNlcnZpY2U6IFJhRGFzaGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIG5neFNlcnZpY2U6IE5neFVpTG9hZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFJBVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgbm90aWZpZXI6IE5vdGlmaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcblxuICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAnY2xpY2snLCAoZTogRXZlbnQpID0+IHtcbiAgICAgIGlmIChlLnRhcmdldCAhPT0gdGhpcy53aWRnZXREcm9wZG93bi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuZHJvcERvd25TaG93biA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdjbGljaycsIChlOiBFdmVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMud2lkZ2V0RG93bmxvYWQgJiYgZS50YXJnZXQgIT09IHRoaXMud2lkZ2V0RG93bmxvYWQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLmlzRG93bmxvYWRDaGFydFZpc2libGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMucmFEYXNoYm9hcmRFdmVudEJ1cyAmJiBjaGFuZ2VzLnJhRGFzaGJvYXJkRXZlbnRCdXMuY3VycmVudFZhbHVlICE9IGNoYW5nZXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLmNvbmZpZ0NoYW5nZWQgPSB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMuc3Vic2NyaWJlV2l0aEtleShSQUV2ZW50LkNvbmZpZ0NoYW5nZWQsIFJBRXZlbnRLZXkuV2lkZ2V0SW5zdGFuY2VJZCwgdGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZC50b1N0cmluZygpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNvbmZpZ0NoYW5nZUV2ZW50SGFuZGxlcihlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy53aWRnZXRFbGVtZW50ICYmIGNoYW5nZXMuZ2xvYmFsRmlsdGVyICYmIGNoYW5nZXMuZ2xvYmFsRmlsdGVyLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLmdsb2JhbEZpbHRlci5wcmV2aW91c1ZhbHVlKSB7XG5cbiAgICAgIHRoaXMucmVmcmVzaFdpZGdldCh0aGlzLmRhdGEud2lkZ2V0SW5mbyk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMud2lkdGggJiYgY2hhbmdlcy53aWR0aC5jdXJyZW50VmFsdWUgIT0gY2hhbmdlcy53aWR0aC5wcmV2aW91c1ZhbHVlIHx8XG4gICAgICAoY2hhbmdlcy5oZWlnaHQgJiYgY2hhbmdlcy5oZWlnaHQuY3VycmVudFZhbHVlICE9IGNoYW5nZXMuaGVpZ2h0LnByZXZpb3VzVmFsdWUpKSB7XG4gICAgICBpZiAodGhpcy53aWRnZXRFbGVtZW50KSB7XG4gICAgICAgIGxldCBzaXplOiBhbnkgPSB7fTtcbiAgICAgICAgc2l6ZS5oZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgICAgc2l6ZS53aWR0aCA9IHRoaXMud2lkdGg7XG4gICAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC53aWRnZXRSZXNpemVkKHNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkV2lkZ2V0KHRoaXMuZGF0YS53aWRnZXRJbmZvKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZ0NoYW5nZWQpXG4gICAgICB0aGlzLmNvbmZpZ0NoYW5nZWQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG5cbiAgLyoqIFRvIEVkaXQgY3VycmVudCB3aWRnZXQgY29uZmlndXJhdGlvbiovXG4gIHB1YmxpYyBlZGl0V2lkZ2V0KCkge1xuICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuV2lkZ2V0RWRpdENsaWNrZWQsIHRoaXMuZGF0YS53aWRnZXRJbmZvKTtcbiAgfVxuXG4gIC8qKiBUbyBEZWxldGUgY3VycmVudCB3aWRnZXQgZnJvbSBET00qL1xuICBwdWJsaWMgZGVsZXRlV2lkZ2V0KCkge1xuICAgIGxldCB3aWRnZXRDb250YWluZXJDb250ZXh0ID0gdGhpcztcbiAgICB3aWRnZXRDb250YWluZXJDb250ZXh0Lm5neFNlcnZpY2Uuc3RhcnQoKTtcbiAgICB3aWRnZXRDb250YWluZXJDb250ZXh0LmRhc2hib2FyZFNlcnZpY2UuZGVsZXRlV2lkZ2V0KHRoaXMuZGF0YS53aWRnZXRJbmZvLCB0aGlzLmFwcENvbmZpZykuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XG4gICAgICB3aWRnZXRDb250YWluZXJDb250ZXh0Lm5neFNlcnZpY2Uuc3RvcCgpO1xuICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICB3aWRnZXRDb250YWluZXJDb250ZXh0LndpZGdldERlbGV0ZWQuZW1pdCh0aGlzLmRhdGEud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB3aWRnZXRDb250YWluZXJDb250ZXh0Lm5vdGlmaWVyLm5vdGlmeSgnZXJyb3InLCBcIiBcIiArIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0ZhaWxlZFRvUmVtb3ZlV2lkZ2V0JykgKyBcIiAgKFwiICsgdGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0VGl0bGUgKyBcIikhXCIpO1xuXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogVG8gTW92ZSBvciBjaGFuZ2UgcG9zaXRpb24gaWYgY3VycmVudCB3aWRnZXQgY29udGFpbmVyKi9cbiAgcHVibGljIG1vdmVXaWRnZXQoKSB7XG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5Nb3ZlV2lkZ2V0LCB0aGlzLmRhdGEud2lkZ2V0SW5mbyk7XG4gICAgLy8gdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLm1vdmVXaWRnZXQod2lkZ2V0SW5mbyk7XG4gIH1cblxuICAvKiogVG8gQ29weSBDdXJyZW50IHdpZGdldCB3aXRoIHNhbWUgY29uZmlndXJhdGlvbiovXG4gIHB1YmxpYyBjb3B5V2lkZ2V0KCkge1xuICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuQ29weVdpZGdldCwgdGhpcy5kYXRhLndpZGdldEluZm8pO1xuICAgIC8vdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmNvcHlXaWRnZXQod2lkZ2V0SW5mbyk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlnQ2hhbmdlRXZlbnRIYW5kbGVyKHdpZGdldEluZm8pIHtcbiAgICB0aGlzLmRhdGEud2lkZ2V0SW5mbyA9IHdpZGdldEluZm87XG4gICAgdGhpcy5yZWZyZXNoV2lkZ2V0KHRoaXMuZGF0YS53aWRnZXRJbmZvKTtcbiAgICAvLyB0aGlzLnVwZGF0ZVdpZGdldCh3aWRnZXRJbmZvKTtcbiAgfVxuXG5cbiAgLyoqICBUbyBsb2FkIGV4dGVybmFsIGN1c3RvbSBlbGVtZW50IHRvIHRoZSB3aWRnZXQgY29udGFpbmVyKi9cbiAgYXN5bmMgbG9hZFdpZGdldCh3aWRnZXRJbmZvOiBhbnkpIHtcbiAgICBsZXQgd2lkZ2V0Q29uZmlnRmlsdGVyID0gPElXaWRnZXRDb25maWdGaWx0ZXI+e1xuICAgICAgY29uZmlnOiB3aWRnZXRJbmZvLndpZGdldENvbmZpZ0luZm8uY29uZmlnLFxuICAgICAgZ2xvYmFsRmlsdGVyOiB0aGlzLmdsb2JhbEZpbHRlclxuICAgIH1cblxuICAgIGxldCB3aWRnZXRDb250YWluZXIgPSB0aGlzO1xuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5sb2FkRXh0ZXJuYWxTY3JpcHQod2lkZ2V0SW5mby5zY3JpcHRVcmwsICgpID0+IHtcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5sb2FkVHJhbnNsYXRpb25zKHRoaXMuYXBwQ29uZmlnLmFwcE1hbmFnZW1lbnRCYXNlVXJsLCB0aGlzLmRhdGEud2lkZ2V0SW5mby53aWRnZXROYW1lLCBmYWxzZSkudGhlbigoKSA9PiB7XG4gICAgICAgIHdpZGdldENvbnRhaW5lci53aWRnZXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh3aWRnZXRJbmZvLmN1c3RvbVRhZyk7XG4gICAgICAgIHdpZGdldENvbnRhaW5lci53aWRnZXRFbGVtZW50LnNldEF0dHJpYnV0ZShcIndpZGdldC1pbnN0YW5jZS1pZFwiLCB3aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ3dpZGdldGluaXRpYXRlZCcgKyB3aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdvbi1kYXRhLWxvYWQnLCAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChlLmRldGFpbClcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dQYW5lbCA9IHRydWU7XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dQYW5lbCA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB3aWRnZXRDb250YWluZXIuaXNXaWRnZXRMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgd2lkZ2V0Q29uZmlnRmlsdGVyLmFwcENvbmZpZyA9IHRoaXMuYXBwQ29uZmlnO1xuICAgICAgICAgICAgd2lkZ2V0Q29uZmlnRmlsdGVyLndpZGdldEluZm8gPSB3aWRnZXRJbmZvO1xuICAgICAgICAgICAgLy8gd2lkZ2V0Q29uZmlnRmlsdGVyLndpZGdldEluZm8gPSA8SVdpZGdldEluZm8+e307XG4gICAgICAgICAgICB3aWRnZXRDb25maWdGaWx0ZXIud2lkZ2V0SW5mby53aWRnZXROYW1lID0gd2lkZ2V0SW5mby53aWRnZXROYW1lO1xuICAgICAgICAgICAgd2lkZ2V0Q29udGFpbmVyLndpZGdldEVsZW1lbnQubG9hZENvbnRlbnQod2lkZ2V0Q29uZmlnRmlsdGVyKTtcbiAgICAgICAgICAgIGF3YWl0IHdpZGdldENvbnRhaW5lci5zZXRMb2NrKHdpZGdldENvbmZpZ0ZpbHRlci5jb25maWcpO1xuICAgICAgICAgICAgYXdhaXQgd2lkZ2V0Q29udGFpbmVyLnNldERvd25sb2FkSWNvbigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdGxXaWRnZXQubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLndpZGdldEVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogVG8gcmVmcmVzaCB3aWRnZXQgb24gaW5wdXQgY29uZmlnIGNoYW5nZXMgKi9cbiAgYXN5bmMgcmVmcmVzaFdpZGdldCh3aWRnZXRJbmZvOiBJV2lkZ2V0SW5mbykge1xuICAgIGxldCB3aWRnZXRDb250YWluZXJDb250ZXh0ID0gdGhpcztcbiAgICBsZXQgd2lkZ2V0Q29uZmlnRmlsdGVyID0gPElXaWRnZXRDb25maWdGaWx0ZXI+e1xuICAgICAgY29uZmlnOiB3aWRnZXRJbmZvLndpZGdldENvbmZpZ0luZm8uY29uZmlnLFxuICAgICAgZ2xvYmFsRmlsdGVyOiB0aGlzLmdsb2JhbEZpbHRlcixcbiAgICAgIGFwcENvbmZpZzogdGhpcy5hcHBDb25maWcsXG4gICAgICB3aWRnZXRJbmZvOiB3aWRnZXRJbmZvXG4gICAgfVxuICAgIGlmICh3aWRnZXRDb250YWluZXJDb250ZXh0LmlzV2lkZ2V0TG9hZGVkKSB7XG4gICAgICB3aWRnZXRDb250YWluZXJDb250ZXh0LndpZGdldEVsZW1lbnQubG9hZENvbnRlbnQod2lkZ2V0Q29uZmlnRmlsdGVyKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0TG9jayh3aWRnZXRDb25maWdGaWx0ZXIuY29uZmlnKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0RG93bmxvYWRJY29uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRMb2NrKGNvbmZpZzogc3RyaW5nKSB7ZGVidWdnZXJcbiAgICB0aGlzLmxvY2tTdGF0dXMgPSBhd2FpdCB0aGlzLndpZGdldEVsZW1lbnQubG9hZExvY2tTdGF0dXMoY29uZmlnKTtcbiAgICBpZih0aGlzLmxvY2tTdGF0dXMgPT0gJ2xvY2snKXtcbiAgICAgIHRoaXMubG9ja1RpdGxlID0gJ0xvY2tlZCc7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmxvY2tUaXRsZSk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICB0aGlzLmxvY2tUaXRsZSA9ICdQYXJ0aWFsbHkgTG9ja2VkJztcbiAgICB9XG4gICAgaWYgKHRoaXMubG9ja1N0YXR1cykge1xuICAgICAgc3dpdGNoICh0aGlzLmxvY2tTdGF0dXMpIHtcbiAgICAgICAgY2FzZSBcImxvY2tcIjoge1xuICAgICAgICAgIHRoaXMubG9ja0NsYXNzID0gXCJmYXMgZmEtbG9jayBsb2NrZWRcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidW5sb2NrXCI6IHtcbiAgICAgICAgICB0aGlzLmxvY2tDbGFzcyA9IFwidW5sb2NrZWRcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwicGFydGlhbGxvY2tcIjoge1xuICAgICAgICAgIHRoaXMubG9ja0NsYXNzID0gXCJmYXMgZmEtbG9jayBwYXJ0aWFsbG9ja2VkXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRoaXMubG9ja0NsYXNzID0gXCJ1bmxvY2tlZFwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldERvd25sb2FkSWNvbigpIHtcbiAgICBsZXQgZG93bmxvYWRUeXBlID0gYXdhaXQgdGhpcy53aWRnZXRFbGVtZW50LmdldERvd25sb2FkVHlwZSgpO1xuICAgIHRoaXMuZG93bmxvYWRJY29uVHlwZSA9IGRvd25sb2FkVHlwZTtcblxuXG4gICAgaWYgKGRvd25sb2FkVHlwZSAhPSBSQURvd25sb2FkVHlwZS5Ob25lKSB7XG4gICAgICB0aGlzLmlzRG93bmxvYWRJY29uVmlzaWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRvd25sb2FkQ2xpY2tlZCgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZG93bmxvYWRJY29uVHlwZSkge1xuICAgICAgY2FzZSBSQURvd25sb2FkVHlwZS5HcmlkOlxuICAgICAgICB0aGlzLmRvd25sb2FkSWNvbkNsaWNrZWQoJ0NTVicpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUkFEb3dubG9hZFR5cGUuQ2hhcnQ6XG4gICAgICAgIHRoaXMuaXNEb3dubG9hZENoYXJ0VmlzaWJsZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSQURvd25sb2FkVHlwZS5DdXN0b206XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEljb25DbGlja2VkKHR5cGU6IHN0cmluZykge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcIkNTVlwiOlxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQuZG93bmxvYWRDbGlja2VkKHRoaXMuZG93bmxvYWRJY29uVHlwZSwgUkFEb3dubG9hZE9wdGlvbi5DU1YpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJQTkdcIjpcbiAgICAgICAgdGhpcy53aWRnZXRFbGVtZW50LmRvd25sb2FkQ2xpY2tlZCh0aGlzLmRvd25sb2FkSWNvblR5cGUsIFJBRG93bmxvYWRPcHRpb24uUE5HKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiUERGXCI6XG4gICAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC5kb3dubG9hZENsaWNrZWQodGhpcy5kb3dubG9hZEljb25UeXBlLCBSQURvd25sb2FkT3B0aW9uLlBERik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlNWR1wiOlxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQuZG93bmxvYWRDbGlja2VkKHRoaXMuZG93bmxvYWRJY29uVHlwZSwgUkFEb3dubG9hZE9wdGlvbi5TVkcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJKUEVHXCI6XG4gICAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC5kb3dubG9hZENsaWNrZWQodGhpcy5kb3dubG9hZEljb25UeXBlLCBSQURvd25sb2FkT3B0aW9uLkpQRUcpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipTaG93IGRyb3Bkb3duIG9uIGdlYXIgaWNvbiBjbGljayAgKi9cbiAgcHVibGljIHNob3dEcm9wRG93bigpIHtcbiAgICB0aGlzLmRyb3BEb3duU2hvd24gPSAhdGhpcy5kcm9wRG93blNob3duO1xuICB9XG5cbiAgLyoqSGlkZSBkcm9wZG93biBvbiBvdXRzaWRlIGNsaWNrICovXG4gIHB1YmxpYyBoaWRlRHJvcERvd24oKSB7XG4gICAgaWYgKHRoaXMuZHJvcERvd25TaG93bikge1xuICAgICAgdGhpcy5kcm9wRG93blNob3duID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuaXNEb3dubG9hZENoYXJ0VmlzaWJsZSA9IGZhbHNlO1xuICB9XG59XG4iXX0=