@provoly/dashboard 0.15.3 → 0.15.4

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 (132) hide show
  1. package/components/card/card.module.d.ts +1 -1
  2. package/dataset/style/_o-pry-dataset-detail.scss +4 -0
  3. package/esm2022/components/card/card.component.mjs +3 -3
  4. package/esm2022/components/card/card.module.mjs +5 -5
  5. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -3
  6. package/esm2022/dataset/style/css.component.mjs +2 -2
  7. package/esm2022/lib/core/components/overlay/overlay.module.mjs +4 -5
  8. package/esm2022/lib/core/components/toggle/toggle.component.mjs +4 -5
  9. package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +2 -5
  10. package/esm2022/lib/core/public-api.mjs +1 -2
  11. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +21 -10
  12. package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +7 -4
  13. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +24 -12
  14. package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +4 -5
  15. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +4 -7
  16. package/esm2022/notification/components/notification/notification.component.mjs +3 -3
  17. package/esm2022/notification/i18n/en.translations.mjs +2 -1
  18. package/esm2022/notification/i18n/fr.translations.mjs +2 -1
  19. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +5 -3
  20. package/esm2022/presentation/components/presentation.component.mjs +5 -4
  21. package/esm2022/presentation/style/css.component.mjs +2 -2
  22. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +3 -3
  23. package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +3 -3
  24. package/esm2022/restitution/style/css.component.mjs +2 -2
  25. package/esm2022/search/i18n/en.translations.mjs +9 -3
  26. package/esm2022/search/i18n/fr.translations.mjs +9 -3
  27. package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +3 -3
  28. package/esm2022/search/search-home/search-home.component.mjs +3 -3
  29. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +6 -3
  30. package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +3 -3
  31. package/esm2022/search/search-tools/search-tools.component.mjs +3 -3
  32. package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +3 -3
  33. package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +3 -3
  34. package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +3 -3
  35. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -3
  36. package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +3 -3
  37. package/esm2022/toolbox/components/named-query/named-query.component.mjs +3 -3
  38. package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +3 -3
  39. package/esm2022/toolbox/components/save-view/save-view.component.mjs +3 -3
  40. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +3 -3
  41. package/esm2022/toolbox/style/css.component.mjs +2 -2
  42. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +22 -7
  43. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +15 -10
  44. package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +2 -1
  45. package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +2 -1
  46. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +1 -1
  47. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +1 -1
  48. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +3 -3
  49. package/esm2022/widgets/widget-graph/style/css.component.mjs +2 -2
  50. package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +1 -1
  51. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +12 -14
  52. package/esm2022/widgets/widget-map/interaction/interaction-manager.class.mjs +8 -12
  53. package/esm2022/widgets/widget-map/style/css.component.mjs +2 -2
  54. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +1 -1
  55. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +1 -1
  56. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +1 -1
  57. package/fesm2022/provoly-dashboard-components-card.mjs +6 -6
  58. package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -1
  59. package/fesm2022/provoly-dashboard-dataset.mjs +4 -4
  60. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  61. package/fesm2022/provoly-dashboard-notification.mjs +4 -2
  62. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  63. package/fesm2022/provoly-dashboard-presentation.mjs +10 -7
  64. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  65. package/fesm2022/provoly-dashboard-restitution.mjs +6 -6
  66. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  67. package/fesm2022/provoly-dashboard-search.mjs +29 -14
  68. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  69. package/fesm2022/provoly-dashboard-toolbox.mjs +20 -20
  70. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  71. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +21 -6
  72. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  73. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +16 -9
  74. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  75. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -1
  76. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  77. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +1 -1
  78. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  79. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +4 -4
  80. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  81. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +1 -1
  82. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
  83. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +21 -26
  84. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  85. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +1 -1
  86. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  87. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -1
  88. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  89. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -1
  90. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  91. package/fesm2022/provoly-dashboard.mjs +70 -167
  92. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  93. package/lib/core/components/overlay/overlay.module.d.ts +8 -9
  94. package/lib/core/public-api.d.ts +0 -1
  95. package/lib/core/store/aggregation/backend-aggregation.service.d.ts +2 -0
  96. package/lib/dashboard/components/widgets/data-widget.component.d.ts +3 -2
  97. package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +8 -5
  98. package/notification/i18n/en.translations.d.ts +1 -0
  99. package/notification/i18n/fr.translations.d.ts +1 -0
  100. package/package.json +37 -38
  101. package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +2 -2
  102. package/presentation/style/_o-pry-presentation.scss +17 -13
  103. package/schematics/migration.json +5 -0
  104. package/schematics/ng-add/index.js +0 -1
  105. package/schematics/ng-add/index.js.map +1 -1
  106. package/schematics/ng-update/version-0-15/index.d.ts +2 -0
  107. package/schematics/ng-update/version-0-15/index.js +19 -0
  108. package/schematics/ng-update/version-0-15/index.js.map +1 -0
  109. package/schematics/ng-update/version-0-15/index.spec.d.ts +1 -0
  110. package/schematics/ng-update/version-0-15/index.spec.js +51 -0
  111. package/schematics/ng-update/version-0-15/index.spec.js.map +1 -0
  112. package/search/i18n/en.translations.d.ts +6 -0
  113. package/search/i18n/fr.translations.d.ts +6 -0
  114. package/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.d.ts +1 -0
  115. package/styles/components/_a-tooltip.scss +76 -0
  116. package/styles/components/_o-dashboard.scss +1 -1
  117. package/styles/components/_o-pry-card.scss +14 -0
  118. package/styles/components/_o-widget.scss +1 -0
  119. package/styles/layout/_o-workspace.scss +0 -1
  120. package/styles/main.scss +2 -0
  121. package/styles-theme/components-theme/_a-tooltip.theme.scss +12 -0
  122. package/styles-theme/main-theme.scss +1 -0
  123. package/toolbox/style/_o-toolbox.scss +6 -0
  124. package/tooltips/attribute/attribute-tooltip.component.d.ts +2 -1
  125. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +2 -0
  126. package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +1 -0
  127. package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +1 -0
  128. package/widgets/widget-graph/style/_o-widget-graph.scss +15 -1
  129. package/widgets/widget-map/component/widget-map.component.d.ts +0 -1
  130. package/widgets/widget-map/style/_o-widget-map.scss +14 -0
  131. package/esm2022/lib/core/components/overlay/tooltip.directive.mjs +0 -121
  132. package/lib/core/components/overlay/tooltip.directive.d.ts +0 -28
@@ -1,6 +1,6 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { BaseTooltipComponent } from '@provoly/dashboard';
3
- import { of } from 'rxjs';
3
+ import { map, of } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@provoly/dashboard";
6
6
  import * as i2 from "@angular/common";
@@ -10,7 +10,22 @@ export class AttributeTooltipComponent extends BaseTooltipComponent {
10
10
  this.translateIdPipe = translateIdPipe;
11
11
  this.context = this.context ?? { attributes: [] };
12
12
  }
13
- getValue(attribute) {
13
+ getValue(attribute, limit = 9999) {
14
+ return this._getValue(attribute).pipe(map((value) => {
15
+ switch (typeof value) {
16
+ case 'undefined':
17
+ return '';
18
+ case 'number':
19
+ return value.toString();
20
+ case 'string':
21
+ return value;
22
+ default:
23
+ const result = JSON.stringify(value);
24
+ return result.length > limit ? `${result.substring(0, limit)}...` : result;
25
+ }
26
+ }));
27
+ }
28
+ _getValue(attribute) {
14
29
  if (!this.data.item.properties) {
15
30
  // This is for Provoly-like items
16
31
  switch (attribute) {
@@ -22,19 +37,19 @@ export class AttributeTooltipComponent extends BaseTooltipComponent {
22
37
  output: 'name'
23
38
  });
24
39
  default:
25
- return of((this.data.item.attributes[attribute]?.value ?? ''));
40
+ return of(this.data.item.attributes[attribute]?.value);
26
41
  }
27
42
  }
28
43
  else {
29
44
  // This is for other items, like WMSFeatures
30
- return of(this.data.item.properties.find((prop) => prop.key === attribute)?.value ?? '');
45
+ return of(this.data.item.properties.find((prop) => prop.key === attribute)?.value);
31
46
  }
32
47
  }
33
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AttributeTooltipComponent, deps: [{ token: i1.TranslateIdPipe }], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AttributeTooltipComponent, selector: "pry-attribute-tooltip", usesInheritance: true, ngImport: i0, template: "<div class=\"m-tooltip__item__content\">\n <h3 class=\"a-h3 -attribute\">\n <img\n [src]=\"data.item | translateItemToSymbol | async\"\n [alt]=\"data.item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n width=\"32\"\n aria-hidden=\"true\"\n />\n <span>{{ data.item.oClass | translateId : { type: 'class', output: 'name' } | async }}</span>\n </h3>\n <ng-container *ngFor=\"let attribute of context.attributes\">\n <p>\n <span>{{ attribute }}:</span> {{ getValue(attribute) | async }}\n </p>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i1.TranslateItemToSymbolPipe, name: "translateItemToSymbol" }] }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AttributeTooltipComponent, selector: "pry-attribute-tooltip", usesInheritance: true, ngImport: i0, template: "<div class=\"m-tooltip__item__content\">\n <h3 class=\"a-h3 -attribute\">\n <img\n [src]=\"data.item | translateItemToSymbol | async\"\n [alt]=\"data.item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n [title]=\"data.item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n width=\"32\"\n aria-hidden=\"true\"\n />\n <span [title]=\"data.item.oClass | translateId : { type: 'class', output: 'name' } | async\">{{\n data.item.oClass | translateId : { type: 'class', output: 'name' } | async\n }}</span>\n </h3>\n <ng-container *ngFor=\"let attribute of context.attributes\">\n <p [title]=\"getValue(attribute) | async\">\n <span>{{ attribute }}:</span> {{ getValue(attribute, 40) | async }}\n </p>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i1.TranslateItemToSymbolPipe, name: "translateItemToSymbol" }] }); }
35
50
  }
36
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AttributeTooltipComponent, decorators: [{
37
52
  type: Component,
38
- args: [{ selector: 'pry-attribute-tooltip', template: "<div class=\"m-tooltip__item__content\">\n <h3 class=\"a-h3 -attribute\">\n <img\n [src]=\"data.item | translateItemToSymbol | async\"\n [alt]=\"data.item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n width=\"32\"\n aria-hidden=\"true\"\n />\n <span>{{ data.item.oClass | translateId : { type: 'class', output: 'name' } | async }}</span>\n </h3>\n <ng-container *ngFor=\"let attribute of context.attributes\">\n <p>\n <span>{{ attribute }}:</span> {{ getValue(attribute) | async }}\n </p>\n </ng-container>\n</div>\n" }]
53
+ args: [{ selector: 'pry-attribute-tooltip', template: "<div class=\"m-tooltip__item__content\">\n <h3 class=\"a-h3 -attribute\">\n <img\n [src]=\"data.item | translateItemToSymbol | async\"\n [alt]=\"data.item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n [title]=\"data.item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n width=\"32\"\n aria-hidden=\"true\"\n />\n <span [title]=\"data.item.oClass | translateId : { type: 'class', output: 'name' } | async\">{{\n data.item.oClass | translateId : { type: 'class', output: 'name' } | async\n }}</span>\n </h3>\n <ng-container *ngFor=\"let attribute of context.attributes\">\n <p [title]=\"getValue(attribute) | async\">\n <span>{{ attribute }}:</span> {{ getValue(attribute, 40) | async }}\n </p>\n </ng-container>\n</div>\n" }]
39
54
  }], ctorParameters: function () { return [{ type: i1.TranslateIdPipe }]; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXRvb2x0aXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbHRpcHMvYXR0cmlidXRlL2F0dHJpYnV0ZS10b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2x0aXBzL2F0dHJpYnV0ZS9hdHRyaWJ1dGUtdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBTXRDLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxvQkFBb0I7SUFDakUsWUFBb0IsZUFBZ0M7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFEVSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFFbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxRQUFRLENBQUMsU0FBaUI7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM5QixpQ0FBaUM7WUFDakMsUUFBUSxTQUFTLEVBQUU7Z0JBQ2pCLEtBQUssSUFBSTtvQkFDUCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxLQUFLLFFBQVE7b0JBQ1gsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTt3QkFDL0QsSUFBSSxFQUFFLE9BQU87d0JBQ2IsTUFBTSxFQUFFLE1BQU07cUJBQ2YsQ0FBdUIsQ0FBQztnQkFDM0I7b0JBQ0UsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBVyxDQUFDLENBQUM7YUFDNUU7U0FDRjthQUFNO1lBQ0wsNENBQTRDO1lBQzVDLE9BQU8sRUFBRSxDQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFvQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQzlHLENBQUM7U0FDSDtJQUNILENBQUM7OEdBMUJVLHlCQUF5QjtrR0FBekIseUJBQXlCLG9GQ1J0Qyx5a0JBZ0JBOzsyRkRSYSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0UsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlVG9vbHRpcENvbXBvbmVudCwgVHJhbnNsYXRlSWRQaXBlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1hdHRyaWJ1dGUtdG9vbHRpcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdHRyaWJ1dGUtdG9vbHRpcC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlVG9vbHRpcENvbXBvbmVudCBleHRlbmRzIEJhc2VUb29sdGlwQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGVJZFBpcGU6IFRyYW5zbGF0ZUlkUGlwZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb250ZXh0ID0gdGhpcy5jb250ZXh0ID8/IHsgYXR0cmlidXRlczogW10gfTtcbiAgfVxuXG4gIGdldFZhbHVlKGF0dHJpYnV0ZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuZGF0YS5pdGVtLnByb3BlcnRpZXMpIHtcbiAgICAgIC8vIFRoaXMgaXMgZm9yIFByb3ZvbHktbGlrZSBpdGVtc1xuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgY2FzZSAnaWQnOlxuICAgICAgICAgIHJldHVybiBvZih0aGlzLmRhdGEuaXRlbVthdHRyaWJ1dGVdKTtcbiAgICAgICAgY2FzZSAnb0NsYXNzJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVJZFBpcGUudHJhbnNmb3JtKHRoaXMuZGF0YS5pdGVtW2F0dHJpYnV0ZV0sIHtcbiAgICAgICAgICAgIHR5cGU6ICdjbGFzcycsXG4gICAgICAgICAgICBvdXRwdXQ6ICduYW1lJ1xuICAgICAgICAgIH0pIGFzIE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gb2YoKHRoaXMuZGF0YS5pdGVtLmF0dHJpYnV0ZXNbYXR0cmlidXRlXT8udmFsdWUgPz8gJycpIGFzIHN0cmluZyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaXMgZm9yIG90aGVyIGl0ZW1zLCBsaWtlIFdNU0ZlYXR1cmVzXG4gICAgICByZXR1cm4gb2YoXG4gICAgICAgIHRoaXMuZGF0YS5pdGVtLnByb3BlcnRpZXMuZmluZCgocHJvcDogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9KSA9PiBwcm9wLmtleSA9PT0gYXR0cmlidXRlKT8udmFsdWUgPz8gJydcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibS10b29sdGlwX19pdGVtX19jb250ZW50XCI+XG4gIDxoMyBjbGFzcz1cImEtaDMgLWF0dHJpYnV0ZVwiPlxuICAgIDxpbWdcbiAgICAgIFtzcmNdPVwiZGF0YS5pdGVtIHwgdHJhbnNsYXRlSXRlbVRvU3ltYm9sIHwgYXN5bmNcIlxuICAgICAgW2FsdF09XCJkYXRhLml0ZW0ub0NsYXNzIHwgdHJhbnNsYXRlSWQgOiB7IHR5cGU6ICdjbGFzcycsIG91dHB1dDogJ25hbWUnIH0gfCBhc3luY1wiXG4gICAgICB3aWR0aD1cIjMyXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgLz5cbiAgICA8c3Bhbj57eyBkYXRhLml0ZW0ub0NsYXNzIHwgdHJhbnNsYXRlSWQgOiB7IHR5cGU6ICdjbGFzcycsIG91dHB1dDogJ25hbWUnIH0gfCBhc3luYyB9fTwvc3Bhbj5cbiAgPC9oMz5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlIG9mIGNvbnRleHQuYXR0cmlidXRlc1wiPlxuICAgIDxwPlxuICAgICAgPHNwYW4+e3sgYXR0cmlidXRlIH19Ojwvc3Bhbj4ge3sgZ2V0VmFsdWUoYXR0cmlidXRlKSB8IGFzeW5jIH19XG4gICAgPC9wPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXRvb2x0aXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbHRpcHMvYXR0cmlidXRlL2F0dHJpYnV0ZS10b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2x0aXBzL2F0dHJpYnV0ZS9hdHRyaWJ1dGUtdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQU0zQyxNQUFNLE9BQU8seUJBQTBCLFNBQVEsb0JBQW9CO0lBQ2pFLFlBQW9CLGVBQWdDO1FBQ2xELEtBQUssRUFBRSxDQUFDO1FBRFUsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRWxELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQWlCLEVBQUUsS0FBSyxHQUFHLElBQUk7UUFDdEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDbkMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixRQUFRLE9BQU8sS0FBSyxFQUFFO2dCQUNwQixLQUFLLFdBQVc7b0JBQ2QsT0FBTyxFQUFFLENBQUM7Z0JBQ1osS0FBSyxRQUFRO29CQUNYLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMxQixLQUFLLFFBQVE7b0JBQ1gsT0FBTyxLQUFLLENBQUM7Z0JBQ2Y7b0JBQ0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckMsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7YUFDOUU7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxTQUFpQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzlCLGlDQUFpQztZQUNqQyxRQUFRLFNBQVMsRUFBRTtnQkFDakIsS0FBSyxJQUFJO29CQUNQLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLEtBQUssUUFBUTtvQkFDWCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO3dCQUMvRCxJQUFJLEVBQUUsT0FBTzt3QkFDYixNQUFNLEVBQUUsTUFBTTtxQkFDZixDQUF1QixDQUFDO2dCQUMzQjtvQkFDRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDMUQ7U0FDRjthQUFNO1lBQ0wsNENBQTRDO1lBQzVDLE9BQU8sRUFBRSxDQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFvQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FDeEcsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs4R0E1Q1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsb0ZDUnRDLHN6QkFtQkE7OzJGRFhhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VUb29sdGlwQ29tcG9uZW50LCBUcmFuc2xhdGVJZFBpcGUgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYXR0cmlidXRlLXRvb2x0aXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXR0cmlidXRlLXRvb2x0aXAuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZVRvb2x0aXBDb21wb25lbnQgZXh0ZW5kcyBCYXNlVG9vbHRpcENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlSWRQaXBlOiBUcmFuc2xhdGVJZFBpcGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29udGV4dCA9IHRoaXMuY29udGV4dCA/PyB7IGF0dHJpYnV0ZXM6IFtdIH07XG4gIH1cblxuICBnZXRWYWx1ZShhdHRyaWJ1dGU6IHN0cmluZywgbGltaXQgPSA5OTk5KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0VmFsdWUoYXR0cmlidXRlKS5waXBlKFxuICAgICAgbWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQubGVuZ3RoID4gbGltaXQgPyBgJHtyZXN1bHQuc3Vic3RyaW5nKDAsIGxpbWl0KX0uLi5gIDogcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBfZ2V0VmFsdWUoYXR0cmlidXRlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bWJlcj4ge1xuICAgIGlmICghdGhpcy5kYXRhLml0ZW0ucHJvcGVydGllcykge1xuICAgICAgLy8gVGhpcyBpcyBmb3IgUHJvdm9seS1saWtlIGl0ZW1zXG4gICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xuICAgICAgICBjYXNlICdpZCc6XG4gICAgICAgICAgcmV0dXJuIG9mKHRoaXMuZGF0YS5pdGVtW2F0dHJpYnV0ZV0pO1xuICAgICAgICBjYXNlICdvQ2xhc3MnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZUlkUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRhLml0ZW1bYXR0cmlidXRlXSwge1xuICAgICAgICAgICAgdHlwZTogJ2NsYXNzJyxcbiAgICAgICAgICAgIG91dHB1dDogJ25hbWUnXG4gICAgICAgICAgfSkgYXMgT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBvZih0aGlzLmRhdGEuaXRlbS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV0/LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyBpcyBmb3Igb3RoZXIgaXRlbXMsIGxpa2UgV01TRmVhdHVyZXNcbiAgICAgIHJldHVybiBvZihcbiAgICAgICAgdGhpcy5kYXRhLml0ZW0ucHJvcGVydGllcy5maW5kKChwcm9wOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0pID0+IHByb3Aua2V5ID09PSBhdHRyaWJ1dGUpPy52YWx1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtLXRvb2x0aXBfX2l0ZW1fX2NvbnRlbnRcIj5cbiAgPGgzIGNsYXNzPVwiYS1oMyAtYXR0cmlidXRlXCI+XG4gICAgPGltZ1xuICAgICAgW3NyY109XCJkYXRhLml0ZW0gfCB0cmFuc2xhdGVJdGVtVG9TeW1ib2wgfCBhc3luY1wiXG4gICAgICBbYWx0XT1cImRhdGEuaXRlbS5vQ2xhc3MgfCB0cmFuc2xhdGVJZCA6IHsgdHlwZTogJ2NsYXNzJywgb3V0cHV0OiAnbmFtZScgfSB8IGFzeW5jXCJcbiAgICAgIFt0aXRsZV09XCJkYXRhLml0ZW0ub0NsYXNzIHwgdHJhbnNsYXRlSWQgOiB7IHR5cGU6ICdjbGFzcycsIG91dHB1dDogJ25hbWUnIH0gfCBhc3luY1wiXG4gICAgICB3aWR0aD1cIjMyXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgLz5cbiAgICA8c3BhbiBbdGl0bGVdPVwiZGF0YS5pdGVtLm9DbGFzcyB8IHRyYW5zbGF0ZUlkIDogeyB0eXBlOiAnY2xhc3MnLCBvdXRwdXQ6ICduYW1lJyB9IHwgYXN5bmNcIj57e1xuICAgICAgZGF0YS5pdGVtLm9DbGFzcyB8IHRyYW5zbGF0ZUlkIDogeyB0eXBlOiAnY2xhc3MnLCBvdXRwdXQ6ICduYW1lJyB9IHwgYXN5bmNcbiAgICB9fTwvc3Bhbj5cbiAgPC9oMz5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXR0cmlidXRlIG9mIGNvbnRleHQuYXR0cmlidXRlc1wiPlxuICAgIDxwIFt0aXRsZV09XCJnZXRWYWx1ZShhdHRyaWJ1dGUpIHwgYXN5bmNcIj5cbiAgICAgIDxzcGFuPnt7IGF0dHJpYnV0ZSB9fTo8L3NwYW4+IHt7IGdldFZhbHVlKGF0dHJpYnV0ZSwgNDApIHwgYXN5bmMgfX1cbiAgICA8L3A+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=