@schneideress/dashboardframework 0.0.79 → 0.0.81

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