geonetwork-ui 2.3.0-dev.287bf00c → 2.3.0-dev.2b3239d3

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 (142) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +2 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +2 -2
  3. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +1 -1
  4. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +3 -21
  5. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +1 -1
  6. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +104 -0
  7. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +8 -3
  8. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
  9. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +8 -1
  10. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +73 -20
  11. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
  12. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
  13. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +1 -1
  14. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +29 -8
  15. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
  16. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +1 -1
  17. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +1 -1
  18. package/esm2022/libs/feature/search/src/index.mjs +2 -1
  19. package/esm2022/libs/feature/search/src/lib/results-layout/results-layout.component.mjs +1 -1
  20. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +1 -1
  21. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +1 -1
  22. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +1 -1
  23. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +1 -1
  24. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -2
  25. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +2 -2
  26. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +16 -3
  27. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +90 -54
  28. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +1 -6
  29. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  30. package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +4 -3
  31. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +5 -3
  32. package/esm2022/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +29 -0
  33. package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +5 -3
  34. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +6 -5
  35. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  36. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +76 -0
  37. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +42 -18
  38. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +3 -8
  39. package/esm2022/translations/de.json +11 -14
  40. package/esm2022/translations/en.json +11 -14
  41. package/esm2022/translations/es.json +11 -14
  42. package/esm2022/translations/fr.json +11 -14
  43. package/esm2022/translations/it.json +11 -14
  44. package/esm2022/translations/nl.json +11 -14
  45. package/esm2022/translations/pt.json +11 -14
  46. package/fesm2022/geonetwork-ui.mjs +569 -264
  47. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  48. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  49. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  50. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +21 -0
  51. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -0
  52. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +1 -0
  53. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  54. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  55. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +10 -5
  56. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  57. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +1 -0
  58. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  59. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  60. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  61. package/libs/feature/search/src/index.d.ts +1 -0
  62. package/libs/feature/search/src/index.d.ts.map +1 -1
  63. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts +3 -3
  64. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  65. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  66. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +3 -1
  67. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  68. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +22 -4
  69. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  70. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +29 -30
  71. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  72. package/libs/ui/inputs/src/index.d.ts +1 -0
  73. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  74. package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts +1 -1
  75. package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts.map +1 -1
  76. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +2 -1
  77. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  78. package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +12 -0
  79. package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -0
  80. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +2 -1
  81. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
  82. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -27
  83. package/libs/ui/layout/src/index.d.ts +1 -0
  84. package/libs/ui/layout/src/index.d.ts.map +1 -1
  85. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +25 -0
  86. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -0
  87. package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts +13 -6
  88. package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts.map +1 -1
  89. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +4 -5
  90. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  91. package/package.json +2 -2
  92. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +1 -1
  93. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +1 -4
  94. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +8 -0
  95. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +2 -19
  96. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +0 -0
  97. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +14 -0
  98. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +143 -0
  99. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +5 -0
  100. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +5 -0
  101. package/src/libs/feature/editor/src/lib/fields.config.ts +7 -0
  102. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +7 -0
  103. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +32 -18
  104. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +72 -17
  105. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +1 -0
  106. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +26 -8
  107. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +0 -1
  108. package/src/libs/feature/search/src/index.ts +1 -0
  109. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -2
  110. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +2 -1
  111. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +1 -1
  112. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +38 -20
  113. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +12 -0
  114. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +25 -9
  115. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +117 -57
  116. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -2
  117. package/src/libs/ui/inputs/src/index.ts +1 -0
  118. package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.ts +3 -0
  119. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -0
  120. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +1 -0
  121. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.css +6 -0
  122. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.html +26 -0
  123. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.ts +32 -0
  124. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +1 -0
  125. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +1 -0
  126. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +1 -1
  127. package/src/libs/ui/layout/src/index.ts +1 -0
  128. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +23 -0
  129. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +20 -0
  130. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +84 -0
  131. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +8 -4
  132. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +4 -4
  133. package/src/libs/ui/layout/src/lib/carousel/carousel.component.ts +45 -15
  134. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -2
  135. package/translations/de.json +11 -14
  136. package/translations/en.json +11 -14
  137. package/translations/es.json +11 -14
  138. package/translations/fr.json +11 -14
  139. package/translations/it.json +11 -14
  140. package/translations/nl.json +11 -14
  141. package/translations/pt.json +11 -14
  142. package/translations/sk.json +11 -14
@@ -8,36 +8,35 @@ import { CommonModule } from '@angular/common';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/common";
10
10
  import * as i2 from "@ngx-translate/core";
11
- import * as i3 from "../../../../../ui/inputs/src/lib/button/button.component";
12
- import * as i4 from "../../../../../ui/inputs/src/lib/text-input/text-input.component";
11
+ import * as i3 from "../../../../../ui/inputs/src/lib/dropdown-selector/dropdown-selector.component";
12
+ import * as i4 from "../../../../../ui/inputs/src/lib/button/button.component";
13
+ import * as i5 from "../../../../../ui/inputs/src/lib/text-input/text-input.component";
13
14
  export class AddLayerFromOgcApiComponent {
14
15
  constructor(changeDetectorRef) {
15
16
  this.changeDetectorRef = changeDetectorRef;
16
17
  this.layerAdded = new EventEmitter();
17
18
  this.urlChange = new Subject();
18
- this.layerUrl = '';
19
19
  this.loading = false;
20
20
  this.layers = [];
21
- this.ogcEndpoint = null;
22
21
  this.errorMessage = null;
22
+ this.selectedLayerTypes = {};
23
23
  }
24
24
  ngOnInit() {
25
25
  this.urlChange.pipe(debounceTime(700)).subscribe(() => {
26
26
  this.loadLayers();
27
- this.changeDetectorRef.detectChanges(); // manually trigger change detection
28
27
  });
29
28
  }
30
29
  async loadLayers() {
31
30
  this.errorMessage = null;
32
31
  try {
33
32
  this.loading = true;
34
- if (this.ogcUrl.trim() === '') {
33
+ if (!this.ogcUrl.trim()) {
35
34
  this.layers = [];
36
35
  return;
37
36
  }
38
- this.ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
39
- // Currently only supports feature collections
40
- this.layers = await this.ogcEndpoint.featureCollections;
37
+ const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
38
+ this.layers = await ogcEndpoint.allCollections;
39
+ this.setDefaultLayerTypes();
41
40
  }
42
41
  catch (error) {
43
42
  const err = error;
@@ -49,24 +48,78 @@ export class AddLayerFromOgcApiComponent {
49
48
  this.changeDetectorRef.markForCheck();
50
49
  }
51
50
  }
52
- async addLayer(layer) {
53
- this.layerUrl = await this.ogcEndpoint.getCollectionItemsUrl(layer);
54
- const layerToAdd = {
55
- name: layer,
56
- url: this.layerUrl,
57
- type: MapContextLayerTypeEnum.OGCAPI,
58
- };
59
- this.layerAdded.emit({ ...layerToAdd, title: layer });
51
+ setDefaultLayerTypes() {
52
+ this.layers.forEach((layer) => {
53
+ const choices = this.getLayerChoices(layer);
54
+ if (choices.length > 0) {
55
+ this.selectedLayerTypes[layer.name] = choices[0].value;
56
+ }
57
+ });
58
+ }
59
+ getLayerChoices(layer) {
60
+ const choices = [];
61
+ if (layer.hasRecords) {
62
+ choices.push({ label: 'Records', value: 'record' });
63
+ }
64
+ if (layer.hasFeatures) {
65
+ choices.push({ label: 'Features', value: 'features' });
66
+ }
67
+ if (layer.hasVectorTiles) {
68
+ choices.push({ label: 'Vector Tiles', value: 'vectorTiles' });
69
+ }
70
+ if (layer.hasMapTiles) {
71
+ choices.push({ label: 'Map Tiles', value: 'mapTiles' });
72
+ }
73
+ return choices;
74
+ }
75
+ shouldDisplayLayer(layer) {
76
+ return (layer.hasRecords ||
77
+ layer.hasFeatures ||
78
+ layer.hasVectorTiles ||
79
+ layer.hasMapTiles);
80
+ }
81
+ onLayerTypeSelect(layerName, selectedType) {
82
+ this.selectedLayerTypes[layerName] = selectedType
83
+ ? selectedType
84
+ : this.getLayerChoices(layerName)[0]?.value;
85
+ }
86
+ async addLayer(layer, layerType) {
87
+ try {
88
+ const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
89
+ let layerUrl;
90
+ if (layerType === 'vectorTiles') {
91
+ layerUrl = await ogcEndpoint.getVectorTilesetUrl(layer);
92
+ }
93
+ else if (layerType === 'mapTiles') {
94
+ layerUrl = await ogcEndpoint.getMapTilesetUrl(layer);
95
+ }
96
+ else {
97
+ layerUrl = await ogcEndpoint.getCollectionItemsUrl(layer, {
98
+ outputFormat: 'json',
99
+ });
100
+ }
101
+ const layerToAdd = {
102
+ name: layer,
103
+ url: layerUrl,
104
+ type: MapContextLayerTypeEnum.OGCAPI,
105
+ layerType: layerType,
106
+ };
107
+ this.layerAdded.emit({ ...layerToAdd, title: layer });
108
+ }
109
+ catch (error) {
110
+ const err = error;
111
+ console.error('Error adding layer:', err.message);
112
+ }
60
113
  }
61
114
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer }}\n </p>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i4.TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }] }); }
115
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n ></gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<ng-container *ngFor=\"let layer of layers\">\n <div\n *ngIf=\"shouldDisplayLayer(layer)\"\n class=\"flex items-center justify-between my-2 layer-item-tree\"\n >\n <div class=\"flex flex-col items-start w-full\">\n <p\n class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\"\n [title]=\"layer.name\"\n >\n {{ layer.name }}\n </p>\n <div class=\"flex justify-between items-center w-full\">\n <gn-ui-dropdown-selector\n [title]=\"'Add Layer As' | translate\"\n [choices]=\"getLayerChoices(layer)\"\n (selectValue)=\"onLayerTypeSelect(layer.name, $event)\"\n [selected]=\"selectedLayerTypes[layer.name]\"\n extraBtnClass=\"w-6 h-5 !text-sm !px-2 !py-1\"\n ></gn-ui-dropdown-selector>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer.name, selectedLayerTypes[layer.name])\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n >\n <span translate>map.layer.add</span>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".dropdown-content{display:none}.relative:hover .dropdown-content{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: i3.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: i4.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i5.TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }] }); }
63
116
  }
64
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
65
118
  type: Component,
66
- args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer }}\n </p>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n" }]
119
+ args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n ></gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<ng-container *ngFor=\"let layer of layers\">\n <div\n *ngIf=\"shouldDisplayLayer(layer)\"\n class=\"flex items-center justify-between my-2 layer-item-tree\"\n >\n <div class=\"flex flex-col items-start w-full\">\n <p\n class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\"\n [title]=\"layer.name\"\n >\n {{ layer.name }}\n </p>\n <div class=\"flex justify-between items-center w-full\">\n <gn-ui-dropdown-selector\n [title]=\"'Add Layer As' | translate\"\n [choices]=\"getLayerChoices(layer)\"\n (selectValue)=\"onLayerTypeSelect(layer.name, $event)\"\n [selected]=\"selectedLayerTypes[layer.name]\"\n extraBtnClass=\"w-6 h-5 !text-sm !px-2 !py-1\"\n ></gn-ui-dropdown-selector>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer.name, selectedLayerTypes[layer.name])\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n >\n <span translate>map.layer.add</span>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".dropdown-content{display:none}.relative:hover .dropdown-content{display:block}\n"] }]
67
120
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { ogcUrl: [{
68
121
  type: Input
69
122
  }], layerAdded: [{
70
123
  type: Output
71
124
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWxheWVyLWZyb20tb2djLWFwaS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvYWRkLWxheWVyLWZyb20tb2djLWFwaS9hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpL2FkZC1sYXllci1mcm9tLW9nYy1hcGkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUVaLEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzVDLE9BQU8sRUFFTCx1QkFBdUIsR0FDeEIsTUFBTSxrQ0FBa0MsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7Ozs7O0FBVTlDLE1BQU0sT0FBTywyQkFBMkI7SUFXdEMsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFUOUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFZLENBQUE7UUFFbkQsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUE7UUFDakMsYUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNiLFlBQU8sR0FBRyxLQUFLLENBQUE7UUFDZixXQUFNLEdBQWEsRUFBRSxDQUFBO1FBQ3JCLGdCQUFXLEdBQW1CLElBQUksQ0FBQTtRQUNsQyxpQkFBWSxHQUFrQixJQUFJLENBQUE7SUFFeUIsQ0FBQztJQUU1RCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNwRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFBLENBQUMsb0NBQW9DO1FBQzdFLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUE7UUFDeEIsSUFBSTtZQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO2dCQUNoQixPQUFNO2FBQ1A7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBRXhELDhDQUE4QztZQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQTtTQUN4RDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsTUFBTSxHQUFHLEdBQUcsS0FBYyxDQUFBO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsd0JBQXdCLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQTtTQUMzRDtnQkFBUztZQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtTQUN0QztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFbkUsTUFBTSxVQUFVLEdBQXlCO1lBQ3ZDLElBQUksRUFBRSxLQUFLO1lBQ1gsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ2xCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1NBQ3JDLENBQUE7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZELENBQUM7OEdBbkRVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDZKQzNCeEMsMmpDQW9DQSx5RERYWSxZQUFZLCtQQUFFLGVBQWUsa09BQUUsY0FBYzs7MkZBRTVDLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSw4QkFBOEIsY0FHNUIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUM7d0dBRy9DLE1BQU07c0JBQWQsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgT2djQXBpRW5kcG9pbnQgfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIE1hcENvbnRleHRMYXllck1vZGVsLFxuICBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bSxcbn0gZnJvbSAnLi4vbWFwLWNvbnRleHQvbWFwLWNvbnRleHQubW9kZWwnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgVWlJbnB1dHNNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBNYXBMYXllciB9IGZyb20gJy4uLytzdGF0ZS9tYXAubW9kZWxzJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1sYXllci1mcm9tLW9nYy1hcGkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBVaUlucHV0c01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFkZExheWVyRnJvbU9nY0FwaUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9nY1VybDogc3RyaW5nXG4gIEBPdXRwdXQoKSBsYXllckFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxNYXBMYXllcj4oKVxuXG4gIHVybENoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKVxuICBsYXllclVybCA9ICcnXG4gIGxvYWRpbmcgPSBmYWxzZVxuICBsYXllcnM6IHN0cmluZ1tdID0gW11cbiAgb2djRW5kcG9pbnQ6IE9nY0FwaUVuZHBvaW50ID0gbnVsbFxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cmxDaGFuZ2UucGlwZShkZWJvdW5jZVRpbWUoNzAwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZExheWVycygpXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSAvLyBtYW51YWxseSB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgbG9hZExheWVycygpIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGxcbiAgICB0cnkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgICAgaWYgKHRoaXMub2djVXJsLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy5sYXllcnMgPSBbXVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMub2djRW5kcG9pbnQgPSBhd2FpdCBuZXcgT2djQXBpRW5kcG9pbnQodGhpcy5vZ2NVcmwpXG5cbiAgICAgIC8vIEN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGZlYXR1cmUgY29sbGVjdGlvbnNcbiAgICAgIHRoaXMubGF5ZXJzID0gYXdhaXQgdGhpcy5vZ2NFbmRwb2ludC5mZWF0dXJlQ29sbGVjdGlvbnNcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyID0gZXJyb3IgYXMgRXJyb3JcbiAgICAgIHRoaXMubGF5ZXJzID0gW11cbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0Vycm9yIGxvYWRpbmcgbGF5ZXJzOiAnICsgZXJyLm1lc3NhZ2VcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKClcbiAgICB9XG4gIH1cblxuICBhc3luYyBhZGRMYXllcihsYXllcjogc3RyaW5nKSB7XG4gICAgdGhpcy5sYXllclVybCA9IGF3YWl0IHRoaXMub2djRW5kcG9pbnQuZ2V0Q29sbGVjdGlvbkl0ZW1zVXJsKGxheWVyKVxuXG4gICAgY29uc3QgbGF5ZXJUb0FkZDogTWFwQ29udGV4dExheWVyTW9kZWwgPSB7XG4gICAgICBuYW1lOiBsYXllcixcbiAgICAgIHVybDogdGhpcy5sYXllclVybCxcbiAgICAgIHR5cGU6IE1hcENvbnRleHRMYXllclR5cGVFbnVtLk9HQ0FQSSxcbiAgICB9XG4gICAgdGhpcy5sYXllckFkZGVkLmVtaXQoeyAuLi5sYXllclRvQWRkLCB0aXRsZTogbGF5ZXIgfSlcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG1iLTVcIj5cbiAgPGduLXVpLXRleHQtaW5wdXRcbiAgICBbKHZhbHVlKV09XCJvZ2NVcmxcIlxuICAgICh2YWx1ZUNoYW5nZSk9XCJ1cmxDaGFuZ2UubmV4dCgkZXZlbnQpXCJcbiAgICBbaGludF09XCInbWFwLm9nYy51cmxJbnB1dC5oaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgY2xhc3M9XCJ3LTk2XCJcbiAgPlxuICA8L2duLXVpLXRleHQtaW5wdXQ+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIG10LTJcIj5cbiAge3sgZXJyb3JNZXNzYWdlIH19XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgPHAgY2xhc3M9XCJsb2FkaW5nLW1lc3NhZ2VcIiB0cmFuc2xhdGU+bWFwLmxvYWRpbmcuc2VydmljZTwvcD5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgbGF5ZXJzLmxlbmd0aCA+IDBcIj5cbiAgPGgyIGNsYXNzPVwiZm9udC1ib2xkXCIgdHJhbnNsYXRlPm1hcC5sYXllcnMuYXZhaWxhYmxlPC9oMj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGF5ZXIgb2YgbGF5ZXJzXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBteS0yIGxheWVyLWl0ZW0tdHJlZVwiPlxuICAgICAgPHAgY2xhc3M9XCJtYXgtdy14cyBvdmVyZmxvdy1oaWRkZW4gb3ZlcmZsb3ctZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAge3sgbGF5ZXIgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgY2xhc3M9XCJsYXllci1hZGQtYnRuXCJcbiAgICAgICAgdHlwZT1cInByaW1hcnlcIlxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwiYWRkTGF5ZXIobGF5ZXIpXCJcbiAgICAgICAgZXh0cmFDbGFzcz1cInRleHQtc20gIXB4LTIgIXB5LTFcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPjxzcGFuIHRyYW5zbGF0ZT4gbWFwLmxheWVyLmFkZCA8L3NwYW4+PC9nbi11aS1idXR0b25cbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWxheWVyLWZyb20tb2djLWFwaS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvYWRkLWxheWVyLWZyb20tb2djLWFwaS9hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpL2FkZC1sYXllci1mcm9tLW9nYy1hcGkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUVaLEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzVDLE9BQU8sRUFFTCx1QkFBdUIsR0FDeEIsTUFBTSxrQ0FBa0MsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFrQixjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7Ozs7Ozs7QUFVOUMsTUFBTSxPQUFPLDJCQUEyQjtJQVV0QyxZQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVI5QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQTtRQUVuRCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQTtRQUNqQyxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ2YsV0FBTSxHQUFVLEVBQUUsQ0FBQTtRQUNsQixpQkFBWSxH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T0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDbEQ7SUFDSCxDQUFDOzhHQTFHVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiw2SkMzQnhDLDZrREFrREEsMElEekJZLFlBQVksK1BBQUUsZUFBZSxrT0FBRSxjQUFjOzsyRkFFNUMsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDhCQUE4QixjQUc1QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQzt3R0FHL0MsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBPZ2NBcGlFbmRwb2ludCB9IGZyb20gJ0BjYW1wdG9jYW1wL29nYy1jbGllbnQnXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHtcbiAgTWFwQ29udGV4dExheWVyTW9kZWwsXG4gIE1hcENvbnRleHRMYXllclR5cGVFbnVtLFxufSBmcm9tICcuLi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5tb2RlbCdcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBEcm9wZG93bkNob2ljZSwgVWlJbnB1dHNNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBNYXBMYXllciB9IGZyb20gJy4uLytzdGF0ZS9tYXAubW9kZWxzJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1sYXllci1mcm9tLW9nYy1hcGkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBVaUlucHV0c01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFkZExheWVyRnJvbU9nY0FwaUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9nY1VybDogc3RyaW5nXG4gIEBPdXRwdXQoKSBsYXllckFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxNYXBMYXllcj4oKVxuXG4gIHVybENoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKVxuICBsb2FkaW5nID0gZmFsc2VcbiAgbGF5ZXJzOiBhbnlbXSA9IFtdXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgc2VsZWN0ZWRMYXllclR5cGVzOiB7IFtrZXk6IHN0cmluZ106IERyb3Bkb3duQ2hvaWNlWyd2YWx1ZSddIH0gPSB7fVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXJsQ2hhbmdlLnBpcGUoZGVib3VuY2VUaW1lKDcwMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRMYXllcnMoKVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBsb2FkTGF5ZXJzKCkge1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbFxuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgICBpZiAoIXRoaXMub2djVXJsLnRyaW0oKSkge1xuICAgICAgICB0aGlzLmxheWVycyA9IFtdXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3Qgb2djRW5kcG9pbnQgPSBhd2FpdCBuZXcgT2djQXBpRW5kcG9pbnQodGhpcy5vZ2NVcmwpXG4gICAgICB0aGlzLmxheWVycyA9IGF3YWl0IG9nY0VuZHBvaW50LmFsbENvbGxlY3Rpb25zXG4gICAgICB0aGlzLnNldERlZmF1bHRMYXllclR5cGVzKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyID0gZXJyb3IgYXMgRXJyb3JcbiAgICAgIHRoaXMubGF5ZXJzID0gW11cbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0Vycm9yIGxvYWRpbmcgbGF5ZXJzOiAnICsgZXJyLm1lc3NhZ2VcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKClcbiAgICB9XG4gIH1cblxuICBzZXREZWZhdWx0TGF5ZXJUeXBlcygpIHtcbiAgICB0aGlzLmxheWVycy5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgY29uc3QgY2hvaWNlcyA9IHRoaXMuZ2V0TGF5ZXJDaG9pY2VzKGxheWVyKVxuICAgICAgaWYgKGNob2ljZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGF5ZXJUeXBlc1tsYXllci5uYW1lXSA9IGNob2ljZXNbMF0udmFsdWVcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZ2V0TGF5ZXJDaG9pY2VzKGxheWVyOiBhbnkpIHtcbiAgICBjb25zdCBjaG9pY2VzID0gW11cbiAgICBpZiAobGF5ZXIuaGFzUmVjb3Jkcykge1xuICAgICAgY2hvaWNlcy5wdXNoKHsgbGFiZWw6ICdSZWNvcmRzJywgdmFsdWU6ICdyZWNvcmQnIH0pXG4gICAgfVxuICAgIGlmIChsYXllci5oYXNGZWF0dXJlcykge1xuICAgICAgY2hvaWNlcy5wdXNoKHsgbGFiZWw6ICdGZWF0dXJlcycsIHZhbHVlOiAnZmVhdHVyZXMnIH0pXG4gICAgfVxuICAgIGlmIChsYXllci5oYXNWZWN0b3JUaWxlcykge1xuICAgICAgY2hvaWNlcy5wdXNoKHsgbGFiZWw6ICdWZWN0b3IgVGlsZXMnLCB2YWx1ZTogJ3ZlY3RvclRpbGVzJyB9KVxuICAgIH1cbiAgICBpZiAobGF5ZXIuaGFzTWFwVGlsZXMpIHtcbiAgICAgIGNob2ljZXMucHVzaCh7IGxhYmVsOiAnTWFwIFRpbGVzJywgdmFsdWU6ICdtYXBUaWxlcycgfSlcbiAgICB9XG4gICAgcmV0dXJuIGNob2ljZXNcbiAgfVxuXG4gIHNob3VsZERpc3BsYXlMYXllcihsYXllcjogYW55KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGxheWVyLmhhc1JlY29yZHMgfHxcbiAgICAgIGxheWVyLmhhc0ZlYXR1cmVzIHx8XG4gICAgICBsYXllci5oYXNWZWN0b3JUaWxlcyB8fFxuICAgICAgbGF5ZXIuaGFzTWFwVGlsZXNcbiAgICApXG4gIH1cblxuICBvbkxheWVyVHlwZVNlbGVjdChsYXllck5hbWU6IHN0cmluZywgc2VsZWN0ZWRUeXBlOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkTGF5ZXJUeXBlc1tsYXllck5hbWVdID0gc2VsZWN0ZWRUeXBlXG4gICAgICA/IHNlbGVjdGVkVHlwZVxuICAgICAgOiB0aGlzLmdldExheWVyQ2hvaWNlcyhsYXllck5hbWUpWzBdPy52YWx1ZVxuICB9XG5cbiAgYXN5bmMgYWRkTGF5ZXIobGF5ZXI6IHN0cmluZywgbGF5ZXJUeXBlOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb2djRW5kcG9pbnQgPSBhd2FpdCBuZXcgT2djQXBpRW5kcG9pbnQodGhpcy5vZ2NVcmwpXG4gICAgICBsZXQgbGF5ZXJVcmw6IHN0cmluZ1xuXG4gICAgICBpZiAobGF5ZXJUeXBlID09PSAndmVjdG9yVGlsZXMnKSB7XG4gICAgICAgIGxheWVyVXJsID0gYXdhaXQgb2djRW5kcG9pbnQuZ2V0VmVjdG9yVGlsZXNldFVybChsYXllcilcbiAgICAgIH0gZWxzZSBpZiAobGF5ZXJUeXBlID09PSAnbWFwVGlsZXMnKSB7XG4gICAgICAgIGxheWVyVXJsID0gYXdhaXQgb2djRW5kcG9pbnQuZ2V0TWFwVGlsZXNldFVybChsYXllcilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxheWVyVXJsID0gYXdhaXQgb2djRW5kcG9pbnQuZ2V0Q29sbGVjdGlvbkl0ZW1zVXJsKGxheWVyLCB7XG4gICAgICAgICAgb3V0cHV0Rm9ybWF0OiAnanNvbicsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxheWVyVG9BZGQ6IE1hcENvbnRleHRMYXllck1vZGVsID0ge1xuICAgICAgICBuYW1lOiBsYXllcixcbiAgICAgICAgdXJsOiBsYXllclVybCxcbiAgICAgICAgdHlwZTogTWFwQ29udGV4dExheWVyVHlwZUVudW0uT0dDQVBJLFxuICAgICAgICBsYXllclR5cGU6IGxheWVyVHlwZSxcbiAgICAgIH1cbiAgICAgIHRoaXMubGF5ZXJBZGRlZC5lbWl0KHsgLi4ubGF5ZXJUb0FkZCwgdGl0bGU6IGxheWVyIH0pXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGVyciA9IGVycm9yIGFzIEVycm9yXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhZGRpbmcgbGF5ZXI6JywgZXJyLm1lc3NhZ2UpXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItNVwiPlxuICA8Z24tdWktdGV4dC1pbnB1dFxuICAgIFsodmFsdWUpXT1cIm9nY1VybFwiXG4gICAgKHZhbHVlQ2hhbmdlKT1cInVybENoYW5nZS5uZXh0KCRldmVudClcIlxuICAgIFtoaW50XT1cIidtYXAub2djLnVybElucHV0LmhpbnQnIHwgdHJhbnNsYXRlXCJcbiAgICBjbGFzcz1cInctOTZcIlxuICA+PC9nbi11aS10ZXh0LWlucHV0PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIiBjbGFzcz1cInRleHQtcmVkLTUwMCBtdC0yXCI+XG4gIHt7IGVycm9yTWVzc2FnZSB9fVxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJsb2FkaW5nXCI+XG4gIDxwIGNsYXNzPVwibG9hZGluZy1tZXNzYWdlXCIgdHJhbnNsYXRlPm1hcC5sb2FkaW5nLnNlcnZpY2U8L3A+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGF5ZXIgb2YgbGF5ZXJzXCI+XG4gIDxkaXZcbiAgICAqbmdJZj1cInNob3VsZERpc3BsYXlMYXllcihsYXllcilcIlxuICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG15LTIgbGF5ZXItaXRlbS10cmVlXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IHctZnVsbFwiPlxuICAgICAgPHBcbiAgICAgICAgY2xhc3M9XCJtYXgtdy14cyBvdmVyZmxvdy1oaWRkZW4gb3ZlcmZsb3ctZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcIlxuICAgICAgICBbdGl0bGVdPVwibGF5ZXIubmFtZVwiXG4gICAgICA+XG4gICAgICAgIHt7IGxheWVyLm5hbWUgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgdy1mdWxsXCI+XG4gICAgICAgIDxnbi11aS1kcm9wZG93bi1zZWxlY3RvclxuICAgICAgICAgIFt0aXRsZV09XCInQWRkIExheWVyIEFzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2Nob2ljZXNdPVwiZ2V0TGF5ZXJDaG9pY2VzKGxheWVyKVwiXG4gICAgICAgICAgKHNlbGVjdFZhbHVlKT1cIm9uTGF5ZXJUeXBlU2VsZWN0KGxheWVyLm5hbWUsICRldmVudClcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZExheWVyVHlwZXNbbGF5ZXIubmFtZV1cIlxuICAgICAgICAgIGV4dHJhQnRuQ2xhc3M9XCJ3LTYgaC01ICF0ZXh0LXNtICFweC0yICFweS0xXCJcbiAgICAgICAgPjwvZ24tdWktZHJvcGRvd24tc2VsZWN0b3I+XG4gICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICBjbGFzcz1cImxheWVyLWFkZC1idG5cIlxuICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwiYWRkTGF5ZXIobGF5ZXIubmFtZSwgc2VsZWN0ZWRMYXllclR5cGVzW2xheWVyLm5hbWVdKVwiXG4gICAgICAgICAgZXh0cmFDbGFzcz1cInRleHQtc20gIXB4LTIgIXB5LTFcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPm1hcC5sYXllci5hZGQ8L3NwYW4+XG4gICAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -55,7 +55,7 @@ export class AddLayerFromWfsComponent {
55
55
  this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
56
56
  }
57
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, deps: [{ token: i1.MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i5.TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i5.TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
59
59
  }
60
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, decorators: [{
61
61
  type: Component,
@@ -54,7 +54,7 @@ export class AddLayerFromWmsComponent {
54
54
  this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
55
55
  }
56
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, deps: [{ token: i1.MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i5.TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i5.TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
58
58
  }
59
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, decorators: [{
60
60
  type: Component,
@@ -7,4 +7,4 @@ export var MapContextLayerTypeEnum;
7
7
  MapContextLayerTypeEnum["GEOJSON"] = "geojson";
8
8
  MapContextLayerTypeEnum["OGCAPI"] = "ogcapi";
9
9
  })(MapContextLayerTypeEnum || (MapContextLayerTypeEnum = {}));
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvbWFwLWNvbnRleHQvbWFwLWNvbnRleHQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFOLElBQVksdUJBT1g7QUFQRCxXQUFZLHVCQUF1QjtJQUNqQyxzQ0FBVyxDQUFBO0lBQ1gsc0NBQVcsQ0FBQTtJQUNYLHdDQUFhLENBQUE7SUFDYixzQ0FBVyxDQUFBO0lBQ1gsOENBQW1CLENBQUE7SUFDbkIsNENBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVBXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFPbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IENvb3JkaW5hdGUgfSBmcm9tICdvbC9jb29yZGluYXRlJ1xuaW1wb3J0IHR5cGUgeyBFeHRlbnQgfSBmcm9tICdvbC9leHRlbnQnXG5cbmV4cG9ydCBlbnVtIE1hcENvbnRleHRMYXllclR5cGVFbnVtIHtcbiAgWFlaID0gJ3h5eicsXG4gIFdNUyA9ICd3bXMnLFxuICBXTVRTID0gJ3dtdHMnLFxuICBXRlMgPSAnd2ZzJyxcbiAgR0VPSlNPTiA9ICdnZW9qc29uJyxcbiAgT0dDQVBJID0gJ29nY2FwaScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dE1vZGVsIHtcbiAgbGF5ZXJzOiBNYXBDb250ZXh0TGF5ZXJNb2RlbFtdXG4gIHZpZXc/OiBNYXBDb250ZXh0Vmlld01vZGVsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dExheWVyV21zTW9kZWwge1xuICB0eXBlOiAnd21zJ1xuICB1cmw6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBDb250ZXh0TGF5ZXJXbXRzTW9kZWwge1xuICB0eXBlOiAnd210cydcbiAgdXJsOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG59XG5cbmludGVyZmFjZSBNYXBDb250ZXh0TGF5ZXJXZnNNb2RlbCB7XG4gIHR5cGU6ICd3ZnMnXG4gIHVybDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcENvbnRleHRMYXllck9nY2FwaU1vZGVsIHtcbiAgdHlwZTogJ29nY2FwaSdcbiAgdXJsOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG59XG5cbmludGVyZmFjZSBMYXllclh5ek1vZGVsIHtcbiAgdHlwZTogJ3h5eidcbiAgbmFtZT86IHN0cmluZ1xufVxuaW50ZXJmYWNlIExheWVyWHl6TW9kZWxXaXRoVXJsIGV4dGVuZHMgTGF5ZXJYeXpNb2RlbCB7XG4gIHVybDogc3RyaW5nXG4gIHVybHM/OiBuZXZlclxufVxuaW50ZXJmYWNlIExheWVyWHl6TW9kZWxXaXRoVXJscyBleHRlbmRzIExheWVyWHl6TW9kZWwge1xuICB1cmxzOiBzdHJpbmdbXVxuICB1cmw/OiBuZXZlclxufVxuZXhwb3J0IHR5cGUgTWFwQ29udGV4dExheWVyWHl6TW9kZWwgPVxuICB8IExheWVyWHl6TW9kZWxXaXRoVXJsXG4gIHwgTGF5ZXJYeXpNb2RlbFdpdGhVcmxzXG5cbmludGVyZmFjZSBMYXllckdlb2pzb24ge1xuICB0eXBlOiAnZ2VvanNvbidcbn1cbmludGVyZmFjZSBMYXllckdlb2pzb25XaXRoVXJsIGV4dGVuZHMgTGF5ZXJHZW9qc29uIHtcbiAgdXJsOiBzdHJpbmdcbiAgZGF0YT86IG5ldmVyXG59XG5pbnRlcmZhY2UgTGF5ZXJHZW9qc29uV2l0aERhdGEgZXh0ZW5kcyBMYXllckdlb2pzb24ge1xuICBkYXRhOiBGZWF0dXJlQ29sbGVjdGlvbiB8IHN0cmluZ1xuICB1cmw/OiBuZXZlclxufVxuZXhwb3J0IHR5cGUgTWFwQ29udGV4dExheWVyR2VvanNvbk1vZGVsID1cbiAgfCBMYXllckdlb2pzb25XaXRoVXJsXG4gIHwgTGF5ZXJHZW9qc29uV2l0aERhdGFcblxuZXhwb3J0IHR5cGUgTWFwQ29udGV4dExheWVyTW9kZWwgPVxuICB8IE1hcENvbnRleHRMYXllcldtc01vZGVsXG4gIHwgTWFwQ29udGV4dExheWVyV210c01vZGVsXG4gIHwgTWFwQ29udGV4dExheWVyV2ZzTW9kZWxcbiAgfCBNYXBDb250ZXh0TGF5ZXJYeXpNb2RlbFxuICB8IE1hcENvbnRleHRMYXllckdlb2pzb25Nb2RlbFxuICB8IE1hcENvbnRleHRMYXllck9nY2FwaU1vZGVsXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dFZpZXdNb2RlbCB7XG4gIGNlbnRlcj86IENvb3JkaW5hdGUgLy8gZXhwcmVzc2VkIGluIGxvbmcvbGF0IChFUFNHOjQzMjYpXG4gIHpvb20/OiBudW1iZXJcbiAgZXh0ZW50PzogRXh0ZW50IC8vIGV4cHJlc3NlZCBpbiBsb25nL2xhdCAoRVBTRzo0MzI2KVxuICBtYXhab29tPzogbnVtYmVyXG4gIG1heEV4dGVudD86IEV4dGVudCAvLyBleHByZXNzZWQgaW4gbG9uZy9sYXQgKEVQU0c6NDMyNilcbn1cbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvbWFwLWNvbnRleHQvbWFwLWNvbnRleHQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFOLElBQVksdUJBT1g7QUFQRCxXQUFZLHVCQUF1QjtJQUNqQyxzQ0FBVyxDQUFBO0lBQ1gsc0NBQVcsQ0FBQTtJQUNYLHdDQUFhLENBQUE7SUFDYixzQ0FBVyxDQUFBO0lBQ1gsOENBQW1CLENBQUE7SUFDbkIsNENBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVBXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFPbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IENvb3JkaW5hdGUgfSBmcm9tICdvbC9jb29yZGluYXRlJ1xuaW1wb3J0IHR5cGUgeyBFeHRlbnQgfSBmcm9tICdvbC9leHRlbnQnXG5cbmV4cG9ydCBlbnVtIE1hcENvbnRleHRMYXllclR5cGVFbnVtIHtcbiAgWFlaID0gJ3h5eicsXG4gIFdNUyA9ICd3bXMnLFxuICBXTVRTID0gJ3dtdHMnLFxuICBXRlMgPSAnd2ZzJyxcbiAgR0VPSlNPTiA9ICdnZW9qc29uJyxcbiAgT0dDQVBJID0gJ29nY2FwaScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dE1vZGVsIHtcbiAgbGF5ZXJzOiBNYXBDb250ZXh0TGF5ZXJNb2RlbFtdXG4gIHZpZXc/OiBNYXBDb250ZXh0Vmlld01vZGVsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dExheWVyV21zTW9kZWwge1xuICB0eXBlOiAnd21zJ1xuICB1cmw6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBDb250ZXh0TGF5ZXJXbXRzTW9kZWwge1xuICB0eXBlOiAnd210cydcbiAgdXJsOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG59XG5cbmludGVyZmFjZSBNYXBDb250ZXh0TGF5ZXJXZnNNb2RlbCB7XG4gIHR5cGU6ICd3ZnMnXG4gIHVybDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcENvbnRleHRMYXllck9nY2FwaU1vZGVsIHtcbiAgdHlwZTogJ29nY2FwaSdcbiAgdXJsOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGxheWVyVHlwZTogJ2ZlYXR1cmUnIHwgJ3ZlY3RvclRpbGVzJyB8ICdtYXBUaWxlcycgfCAncmVjb3JkJ1xufVxuXG5pbnRlcmZhY2UgTGF5ZXJYeXpNb2RlbCB7XG4gIHR5cGU6ICd4eXonXG4gIG5hbWU/OiBzdHJpbmdcbn1cbmludGVyZmFjZSBMYXllclh5ek1vZGVsV2l0aFVybCBleHRlbmRzIExheWVyWHl6TW9kZWwge1xuICB1cmw6IHN0cmluZ1xuICB1cmxzPzogbmV2ZXJcbn1cbmludGVyZmFjZSBMYXllclh5ek1vZGVsV2l0aFVybHMgZXh0ZW5kcyBMYXllclh5ek1vZGVsIHtcbiAgdXJsczogc3RyaW5nW11cbiAgdXJsPzogbmV2ZXJcbn1cbmV4cG9ydCB0eXBlIE1hcENvbnRleHRMYXllclh5ek1vZGVsID1cbiAgfCBMYXllclh5ek1vZGVsV2l0aFVybFxuICB8IExheWVyWHl6TW9kZWxXaXRoVXJsc1xuXG5pbnRlcmZhY2UgTGF5ZXJHZW9qc29uIHtcbiAgdHlwZTogJ2dlb2pzb24nXG59XG5pbnRlcmZhY2UgTGF5ZXJHZW9qc29uV2l0aFVybCBleHRlbmRzIExheWVyR2VvanNvbiB7XG4gIHVybDogc3RyaW5nXG4gIGRhdGE/OiBuZXZlclxufVxuaW50ZXJmYWNlIExheWVyR2VvanNvbldpdGhEYXRhIGV4dGVuZHMgTGF5ZXJHZW9qc29uIHtcbiAgZGF0YTogRmVhdHVyZUNvbGxlY3Rpb24gfCBzdHJpbmdcbiAgdXJsPzogbmV2ZXJcbn1cbmV4cG9ydCB0eXBlIE1hcENvbnRleHRMYXllckdlb2pzb25Nb2RlbCA9XG4gIHwgTGF5ZXJHZW9qc29uV2l0aFVybFxuICB8IExheWVyR2VvanNvbldpdGhEYXRhXG5cbmV4cG9ydCB0eXBlIE1hcENvbnRleHRMYXllck1vZGVsID1cbiAgfCBNYXBDb250ZXh0TGF5ZXJXbXNNb2RlbFxuICB8IE1hcENvbnRleHRMYXllcldtdHNNb2RlbFxuICB8IE1hcENvbnRleHRMYXllcldmc01vZGVsXG4gIHwgTWFwQ29udGV4dExheWVyWHl6TW9kZWxcbiAgfCBNYXBDb250ZXh0TGF5ZXJHZW9qc29uTW9kZWxcbiAgfCBNYXBDb250ZXh0TGF5ZXJPZ2NhcGlNb2RlbFxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcENvbnRleHRWaWV3TW9kZWwge1xuICBjZW50ZXI/OiBDb29yZGluYXRlIC8vIGV4cHJlc3NlZCBpbiBsb25nL2xhdCAoRVBTRzo0MzI2KVxuICB6b29tPzogbnVtYmVyXG4gIGV4dGVudD86IEV4dGVudCAvLyBleHByZXNzZWQgaW4gbG9uZy9sYXQgKEVQU0c6NDMyNilcbiAgbWF4Wm9vbT86IG51bWJlclxuICBtYXhFeHRlbnQ/OiBFeHRlbnQgLy8gZXhwcmVzc2VkIGluIGxvbmcvbGF0IChFUFNHOjQzMjYpXG59XG4iXX0=
@@ -13,6 +13,10 @@ import { bbox as bboxStrategy } from 'ol/loadingstrategy';
13
13
  import { fromLonLat } from 'ol/proj';
14
14
  import WMTS from 'ol/source/WMTS';
15
15
  import { WfsEndpoint, WmtsEndpoint } from '@camptocamp/ogc-client';
16
+ import OGCVectorTile from 'ol/source/OGCVectorTile.js';
17
+ import { MVT } from 'ol/format';
18
+ import VectorTileLayer from 'ol/layer/VectorTile';
19
+ import OGCMapTile from 'ol/source/OGCMapTile.js';
16
20
  import * as i0 from "@angular/core";
17
21
  import * as i1 from "../utils/map-utils.service";
18
22
  import * as i2 from "../style/map-style.service";
@@ -55,13 +59,30 @@ export class MapContextService {
55
59
  const style = this.styleService.styles.default;
56
60
  switch (type) {
57
61
  case MapContextLayerTypeEnum.OGCAPI:
58
- return new VectorLayer({
59
- source: new VectorSource({
60
- format: new GeoJSON(),
61
- url: layerModel.url,
62
- }),
63
- style,
64
- });
62
+ if (layerModel.layerType === 'vectorTiles') {
63
+ return new VectorTileLayer({
64
+ source: new OGCVectorTile({
65
+ url: layerModel.url,
66
+ format: new MVT(),
67
+ }),
68
+ });
69
+ }
70
+ else if (layerModel.layerType === 'mapTiles') {
71
+ return new TileLayer({
72
+ source: new OGCMapTile({
73
+ url: layerModel.url,
74
+ }),
75
+ });
76
+ }
77
+ else {
78
+ return new VectorLayer({
79
+ source: new VectorSource({
80
+ format: new GeoJSON(),
81
+ url: layerModel.url,
82
+ }),
83
+ style,
84
+ });
85
+ }
65
86
  case MapContextLayerTypeEnum.XYZ:
66
87
  return new TileLayer({
67
88
  source: new XYZ({
@@ -245,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
245
266
  providedIn: 'root',
246
267
  }]
247
268
  }], ctorParameters: function () { return [{ type: i1.MapUtilsService }, { type: i2.MapStyleService }]; } });
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzVELE9BQU8sRUFFTCx1QkFBdUIsR0FJeEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUU1QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFFMUIsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFBO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQTtBQUMvQixPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQTtBQUMzQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDNUQsT0FBTyxFQUFFLElBQUksSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBR2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7Ozs7QUFFbEUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQTRCO0lBQ2hFLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxHQUFHO0lBQ2pDLElBQUksRUFBRTtRQUNKLHFFQUFxRTtRQUNyRSxxRUFBcUU7UUFDckUscUVBQXFFO0tBQ3RFO0NBQ0YsQ0FBQTtB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWFwU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vc3R5bGUvbWFwLXN0eWxlLnNlcnZpY2UnXG5pbXBvcnQge1xuICBNYXBDb250ZXh0TGF5ZXJNb2RlbCxcbiAgTWFwQ29udGV4dExheWVyVHlwZUVudW0sXG4gIE1hcENvbnRleHRMYXllclh5ek1vZGVsLFxuICBNYXBDb250ZXh0TW9kZWwsXG4gIE1hcENvbnRleHRWaWV3TW9kZWwsXG59IGZyb20gJy4vbWFwLWNvbnRleHQubW9kZWwnXG5pbXBvcnQgTWFwIGZyb20gJ29sL01hcCdcbmltcG9ydCBWaWV3IGZyb20gJ29sL1ZpZXcnXG5pbXBvcnQgTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvQmFzZSdcbmltcG9ydCBWZWN0b3JMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3InXG5pbXBvcnQgVGlsZVdNUyBmcm9tICdvbC9zb3VyY2UvVGlsZVdNUydcbmltcG9ydCBUaWxlTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvVGlsZSdcbmltcG9ydCBYWVogZnJvbSAnb2wvc291cmNlL1hZWidcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvcidcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJ1xuaW1wb3J0IHsgTWFwVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvbWFwLXV0aWxzLnNlcnZpY2UnXG5pbXBvcnQgeyBiYm94IGFzIGJib3hTdHJhdGVneSB9IGZyb20gJ29sL2xvYWRpbmdzdHJhdGVneSdcbmltcG9ydCB7IExheWVyQ29uZmlnLCBNYXBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvYXBwLWNvbmZpZy9zcmMnXG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJ2dlb2pzb24nXG5pbXBvcnQgeyBmcm9tTG9uTGF0IH0gZnJvbSAnb2wvcHJvaidcbmltcG9ydCBXTVRTIGZyb20gJ29sL3NvdXJjZS9XTVRTJ1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tJ1xuaW1wb3J0IEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSdcbmltcG9ydCB7IFdmc0VuZHBvaW50LCBXbXRzRW5kcG9pbnQgfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQVNFTEFZRVJfQ09OVEVYVDogTWFwQ29udGV4dExheWVyWHl6TW9kZWwgPSB7XG4gIHR5cGU6IE1hcENvbnRleHRMYXllclR5cGVFbnVtLlhZWixcbiAgdXJsczogW1xuICAgIGBodHRwczovL2EuYmFzZW1hcHMuY2FydG9jZG4uY29tL3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9L3t4fS97eX0ucG5nYCxcbiAgICBgaHR0cHM6Ly9iLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9yYXN0ZXJ0aWxlcy92b3lhZ2VyL3t6fS97eH0ve3l9LnBuZ2AsXG4gICAgYGh0dHBzOi8vYy5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fS5wbmdgLFxuICBdLFxufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9WSUVXOiBNYXBDb250ZXh0Vmlld01vZGVsID0ge1xuICBjZW50ZXI6IFswLCAxNV0sXG4gIHpvb206IDIsXG59XG5cbmV4cG9ydCBjb25zdCBXRlNfTUFYX0ZFQVRVUkVTID0gMTAwMDBcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcENvbnRleHRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXBVdGlsczogTWFwVXRpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3R5bGVTZXJ2aWNlOiBNYXBTdHlsZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHJlc2V0TWFwRnJvbUNvbnRleHQoXG4gICAgbWFwOiBNYXAsXG4gICAgbWFwQ29udGV4dDogTWFwQ29udGV4dE1vZGVsLFxuICAgIG1hcENvbmZpZz86IE1hcENvbmZpZ1xuICApOiBNYXAge1xuICAgIGlmIChtYXBDb25maWcpIHtcbiAgICAgIG1hcENvbnRleHQgPSB0aGlzLm1lcmdlTWFwQ29uZmlnV2l0aENvbnRleHQobWFwQ29udGV4dCwgbWFwQ29uZmlnKVxuICAgIH0gZWxzZSB7XG4gICAgICBtYXBDb250ZXh0LmxheWVycyA9IHRoaXMuYWRkRGVmYXVsdEJhc2VsYXllckNvbnRleHQobWFwQ29udGV4dC5sYXllcnMpXG4gICAgfVxuICAgIGlmIChcbiAgICAgICFtYXBDb250ZXh0LnZpZXc/LmV4dGVudCAmJlxuICAgICAgKCFtYXBDb250ZXh0LnZpZXc/LmNlbnRlciB8fCAhbWFwQ29udGV4dC52aWV3Py56b29tKVxuICAgICkge1xuICAgICAgbWFwQ29udGV4dC52aWV3ID0gdGhpcy5nZXRGYWxsYmFja1ZpZXcobWFwQ29uZmlnKVxuICAgIH1cbiAgICBtYXAuc2V0Vmlldyh0aGlzLmNyZWF0ZVZpZXcobWFwQ29udGV4dC52aWV3LCBtYXApKVxuICAgIG1hcC5nZXRMYXllcnMoKS5jbGVhcigpXG4gICAgbWFwQ29udGV4dC5sYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+IG1hcC5hZGRMYXllcih0aGlzLmNyZWF0ZUxheWVyKGxheWVyKSkpXG4gICAgcmV0dXJuIG1hcFxuICB9XG5cbiAgY3JlYXRlTGF5ZXIobGF5ZXJNb2RlbDogTWFwQ29udGV4dExheWVyTW9kZWwpOiBMYXllciB7XG4gICAgY29uc3QgeyB0eXBlIH0gPSBsYXllck1vZGVsXG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLnN0eWxlU2VydmljZS5zdHlsZXMuZGVmYXVsdFxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5PR0NBUEk6XG4gICAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgICB1cmw6IGxheWVyTW9kZWwudXJsLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN0eWxlLFxuICAgICAgICB9KVxuXG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLlhZWjpcbiAgICAgICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFhZWih7XG4gICAgICAgICAgICB1cmw6ICd1cmwnIGluIGxheWVyTW9kZWwgPyBsYXllck1vZGVsLnVybCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVybHM6ICd1cmxzJyBpbiBsYXllck1vZGVsID8gbGF5ZXJNb2RlbC51cmxzIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5XTVM6XG4gICAgICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgICAgICBzb3VyY2U6IG5ldyBUaWxlV01TKHtcbiAgICAgICAgICAgIHVybDogbGF5ZXJNb2RlbC51cmwsXG4gICAgICAgICAgICBwYXJhbXM6IHsgTEFZRVJTOiBsYXllck1vZGVsLm5hbWUgfSxcbiAgICAgICAgICAgIGd1dHRlcjogMjAsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLldNVFM6IHtcbiAgICAgICAgLy8gVE9ETzogaXNvbGF0ZSB0aGlzIGluIHV0aWxzIHNlcnZpY2VcbiAgICAgICAgY29uc3Qgb2xMYXllciA9IG5ldyBUaWxlTGF5ZXIoe30pXG4gICAgICAgIGNvbnN0IGVuZHBvaW50ID0gbmV3IFdtdHNFbmRwb2ludChsYXllck1vZGVsLnVybClcbiAgICAgICAgZW5kcG9pbnQuaXNSZWFkeSgpLnRoZW4oYXN5bmMgKGVuZHBvaW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJOYW1lID0gZW5kcG9pbnQuZ2V0U2luZ2xlTGF5ZXJOYW1lKCkgPz8gbGF5ZXJNb2RlbC5uYW1lXG4gICAgICAgICAgY29uc3QgbGF5ZXIgPSBlbmRwb2ludC5nZXRMYXllckJ5TmFtZShsYXllck5hbWUpXG4gICAgICAgICAgY29uc3QgbWF0cml4U2V0ID0gbGF5ZXIubWF0cml4U2V0c1swXVxuICAgICAgICAgIGNvbnN0IHRpbGVHcmlkID0gYXdhaXQgZW5kcG9pbnQuZ2V0T3BlbkxheWVyc1RpbGVHcmlkKGxheWVyLm5hbWUpXG4gICAgICAgICAgY29uc3QgcmVzb3VyY2VVcmwgPSBsYXllci5yZXNvdXJjZUxpbmtzWzBdXG4gICAgICAgICAgY29uc3QgZGltZW5zaW9ucyA9IGVuZHBvaW50LmdldERlZmF1bHREaW1lbnNpb25zKGxheWVyLm5hbWUpXG4gICAgICAgICAgb2xMYXllci5zZXRTb3VyY2UoXG4gICAgICAgICAgICBuZXcgV01UUyh7XG4gICAgICAgICAgICAgIGxheWVyOiBsYXllci5uYW1lLFxuICAgICAgICAgICAgICBzdHlsZTogbGF5ZXIuZGVmYXVsdFN0eWxlLFxuICAgICAgICAgICAgICBtYXRyaXhTZXQ6IG1hdHJpeFNldC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICBmb3JtYXQ6IHJlc291cmNlVXJsLmZvcm1hdCxcbiAgICAgICAgICAgICAgdXJsOiByZXNvdXJjZVVybC51cmwsXG4gICAgICAgICAgICAgIHJlcXVlc3RFbmNvZGluZzogcmVzb3VyY2VVcmwuZW5jb2RpbmcsXG4gICAgICAgICAgICAgIHRpbGVHcmlkLFxuICAgICAgICAgICAgICBwcm9qZWN0aW9uOiBtYXRyaXhTZXQuY3JzLFxuICAgICAgICAgICAgICBkaW1lbnNpb25zLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBvbExheWVyXG4gICAgICB9XG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLldGUzoge1xuICAgICAgICBjb25zdCBvbExheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICBzdHlsZSxcbiAgICAgICAgfSlcbiAgICAgICAgbmV3IFdmc0VuZHBvaW50KGxheWVyTW9kZWwudXJsKS5pc1JlYWR5KCkudGhlbigoZW5kcG9pbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlVHlwZSA9XG4gICAgICAgICAgICBlbmRwb2ludC5nZXRTaW5nbGVGZWF0dXJlVHlwZU5hbWUoKSA/PyBsYXllck1vZGVsLm5hbWVcbiAgICAgICAgICBvbExheWVyLnNldFNvdXJjZShcbiAgICAgICAgICAgIG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgICAgIHVybDogZnVuY3Rpb24gKGV4dGVudDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZSwge1xuICAgICAgICAgICAgICAgICAgbWF4RmVhdHVyZXM6IFdGU19NQVhfRkVBVFVSRVMsXG4gICAgICAgICAgICAgICAgICBhc0pzb246IHRydWUsXG4gICAgICAgICAgICAgICAgICBvdXRwdXRDcnM6ICdFUFNHOjM4NTcnLFxuICAgICAgICAgICAgICAgICAgZXh0ZW50LFxuICAgICAgICAgICAgICAgICAgZXh0ZW50Q3JzOiAnRVBTRzozODU3JyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzdHJhdGVneTogYmJveFN0cmF0ZWd5LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBvbExheWVyXG4gICAgICB9XG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLkdFT0pTT046IHtcbiAgICAgICAgaWYgKCd1cmwnIGluIGxheWVyTW9kZWwpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgICAgICAgIGZvcm1hdDogbmV3IEdlb0pTT04oKSxcbiAgICAgICAgICAgICAgdXJsOiBsYXllck1vZGVsLnVybCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgZ2VvanNvbiA9IGxheWVyTW9kZWwuZGF0YVxuICAgICAgICAgIGlmICh0eXBlb2YgZ2VvanNvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGdlb2pzb24gPSBKU09OLnBhcnNlKGdlb2pzb24pXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignQSBsYXllciBjb3VsZCBub3QgYmUgY3JlYXRlZCcsIGxheWVyTW9kZWwsIGUpXG4gICAgICAgICAgICAgIGdlb2pzb24gPSB7IHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsIGZlYXR1cmVzOiBbXSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzID0gdGhpcy5tYXBVdGlscy5yZWFkRmVhdHVyZUNvbGxlY3Rpb24oXG4gICAgICAgICAgICBnZW9qc29uIGFzIEZlYXR1cmVDb2xsZWN0aW9uXG4gICAgICAgICAgKSBhcyBGZWF0dXJlPEdlb21ldHJ5PltdXG4gICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgICBmZWF0dXJlcyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgbGF5ZXIgdHlwZTogJHtsYXllck1vZGVsLnR5cGV9YClcbiAgICB9XG4gIH1cblxuICBjcmVhdGVWaWV3KHZpZXdNb2RlbDogTWFwQ29udGV4dFZpZXdNb2RlbCwgbWFwPzogTWFwKTogVmlldyB7XG4gICAgY29uc3QgeyBjZW50ZXI6IGNlbnRlckluVmlld1Byb2osIHpvb20sIG1heFpvb20sIG1heEV4dGVudCB9ID0gdmlld01vZGVsXG4gICAgY29uc3QgY2VudGVyID0gY2VudGVySW5WaWV3UHJvalxuICAgICAgPyBmcm9tTG9uTGF0KGNlbnRlckluVmlld1Byb2osICdFUFNHOjM4NTcnKVxuICAgICAgOiBbMCwgMF1cbiAgICBjb25zdCB2aWV3ID0gbmV3IFZpZXcoe1xuICAgICAgY2VudGVyLFxuICAgICAgem9vbSxcbiAgICAgIG1heFpvb20sXG4gICAgICBleHRlbnQ6IG1heEV4dGVudCxcbiAgICAgIG11bHRpV29ybGQ6IGZhbHNlLFxuICAgICAgY29uc3RyYWluUmVzb2x1dGlvbjogdHJ1ZSxcbiAgICB9KVxuICAgIGlmICh2aWV3TW9kZWwuZXh0ZW50ICYmIG1hcCkge1xuICAgICAgdmlldy5maXQodmlld01vZGVsLmV4dGVudCwge1xuICAgICAgICBzaXplOiBtYXAuZ2V0U2l6ZSgpLFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHZpZXdcbiAgfVxuXG4gIGFkZERlZmF1bHRCYXNlbGF5ZXJDb250ZXh0KFxuICAgIGxheWVyczogTWFwQ29udGV4dExheWVyTW9kZWxbXVxuICApOiBNYXBDb250ZXh0TGF5ZXJNb2RlbFtdIHtcbiAgICByZXR1cm4gbGF5ZXJzLmluY2x1ZGVzKERFRkFVTFRfQkFTRUxBWUVSX0NPTlRFWFQpXG4gICAgICA/IGxheWVyc1xuICAgICAgOiBbREVGQVVMVF9CQVNFTEFZRVJfQ09OVEVYVCwgLi4ubGF5ZXJzXVxuICB9XG5cbiAgbWVyZ2VNYXBDb25maWdXaXRoQ29udGV4dChcbiAgICBtYXBDb250ZXh0OiBNYXBDb250ZXh0TW9kZWwsXG4gICAgbWFwQ29uZmlnOiBNYXBDb25maWdcbiAgKTogTWFwQ29udGV4dE1vZGVsIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWFwQ29udGV4dCxcbiAgICAgIHZpZXc6IHtcbiAgICAgICAgLi4ubWFwQ29udGV4dC52aWV3LFxuICAgICAgICAuLi4obWFwQ29uZmlnLk1BWF9aT09NICYmIHtcbiAgICAgICAgICBtYXhab29tOiBtYXBDb25maWcuTUFYX1pPT00sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4obWFwQ29uZmlnLk1BWF9FWFRFTlQgJiYge1xuICAgICAgICAgIG1heEV4dGVudDogbWFwQ29uZmlnLk1BWF9FWFRFTlQsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIGxheWVyczogW1xuICAgICAgICAuLi4obWFwQ29uZmlnLkRPX05PVF9VU0VfREVGQVVMVF9CQVNFTUFQXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW0RFRkFVTFRfQkFTRUxBWUVSX0NPTlRFWFRdKSxcbiAgICAgICAgLi4ubWFwQ29uZmlnLk1BUF9MQVlFUlMubWFwKHRoaXMuZ2V0Q29udGV4dExheWVyRnJvbUNvbmZpZyksXG4gICAgICAgIC4uLm1hcENvbnRleHQubGF5ZXJzLFxuICAgICAgXSxcbiAgICB9XG4gIH1cblxuICBnZXRGYWxsYmFja1ZpZXcobWFwQ29uZmlnOiBNYXBDb25maWcpOiBNYXBDb250ZXh0Vmlld01vZGVsIHtcbiAgICByZXR1cm4gbWFwQ29uZmlnPy5NQVhfRVhURU5UXG4gICAgICA/IHsgZXh0ZW50OiBtYXBDb25maWcuTUFYX0VYVEVOVCB9XG4gICAgICA6IERFRkFVTFRfVklFV1xuICB9XG5cbiAgZ2V0Q29udGV4dExheWVyRnJvbUNvbmZpZyhjb25maWc6IExheWVyQ29uZmlnKTogTWFwQ29udGV4dExheWVyTW9kZWwge1xuICAgIHN3aXRjaCAoY29uZmlnLlRZUEUpIHtcbiAgICAgIGNhc2UgJ3dtcyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3dtcycsXG4gICAgICAgICAgdXJsOiBjb25maWcuVVJMLFxuICAgICAgICAgIG5hbWU6IGNvbmZpZy5OQU1FLFxuICAgICAgICB9XG4gICAgICBjYXNlICd3ZnMnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICd3ZnMnLFxuICAgICAgICAgIHVybDogY29uZmlnLlVSTCxcbiAgICAgICAgICBuYW1lOiBjb25maWcuTkFNRSxcbiAgICAgICAgfVxuICAgICAgY2FzZSAneHl6JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBjb25maWcuVFlQRSxcbiAgICAgICAgICB1cmw6IGNvbmZpZy5VUkwsXG4gICAgICAgICAgbmFtZTogY29uZmlnLk5BTUUsXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ2dlb2pzb24nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IGNvbmZpZy5UWVBFLFxuICAgICAgICAgIC4uLihjb25maWcuREFUQSA/IHsgZGF0YTogY29uZmlnLkRBVEEgfSA6IHsgdXJsOiBjb25maWcuVVJMIH0pLFxuICAgICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzVELE9BQU8sRUFFTCx1QkFBdUIsR0FJeEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUU1QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFFMUIsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFBO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQTtBQUMvQixPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQTtBQUMzQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDNUQsT0FBTyxFQUFFLElBQUksSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBR2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDbEUsT0FBTyxhQUFhLE1BQU0sNEJBQTRCLENBQUE7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMvQixPQUFPLGVBQWUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNqRCxPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQTs7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RUFBRSxNQUFNLENBQUMsR0FBRztvQkFDZixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7aUJBQ2xCLENBQUE7WUFDSCxLQUFLLEtBQUs7Z0JBQ1IsT0FBTztvQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7b0JBQ2pCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztvQkFDZixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7aUJBQ2xCLENBQUE7WUFDSCxLQUFLLFNBQVM7Z0JBQ1osT0FBTztvQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7b0JBQ2pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDL0QsQ0FBQTtTQUNKO0lBQ0gsQ0FBQzs4R0FuUFUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWFwU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vc3R5bGUvbWFwLXN0eWxlLnNlcnZpY2UnXG5pbXBvcnQge1xuICBNYXBDb250ZXh0TGF5ZXJNb2RlbCxcbiAgTWFwQ29udGV4dExheWVyVHlwZUVudW0sXG4gIE1hcENvbnRleHRMYXllclh5ek1vZGVsLFxuICBNYXBDb250ZXh0TW9kZWwsXG4gIE1hcENvbnRleHRWaWV3TW9kZWwsXG59IGZyb20gJy4vbWFwLWNvbnRleHQubW9kZWwnXG5pbXBvcnQgTWFwIGZyb20gJ29sL01hcCdcbmltcG9ydCBWaWV3IGZyb20gJ29sL1ZpZXcnXG5pbXBvcnQgTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvQmFzZSdcbmltcG9ydCBWZWN0b3JMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3InXG5pbXBvcnQgVGlsZVdNUyBmcm9tICdvbC9zb3VyY2UvVGlsZVdNUydcbmltcG9ydCBUaWxlTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvVGlsZSdcbmltcG9ydCBYWVogZnJvbSAnb2wvc291cmNlL1hZWidcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvcidcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJ1xuaW1wb3J0IHsgTWFwVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvbWFwLXV0aWxzLnNlcnZpY2UnXG5pbXBvcnQgeyBiYm94IGFzIGJib3hTdHJhdGVneSB9IGZyb20gJ29sL2xvYWRpbmdzdHJhdGVneSdcbmltcG9ydCB7IExheWVyQ29uZmlnLCBNYXBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvYXBwLWNvbmZpZy9zcmMnXG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJ2dlb2pzb24nXG5pbXBvcnQgeyBmcm9tTG9uTGF0IH0gZnJvbSAnb2wvcHJvaidcbmltcG9ydCBXTVRTIGZyb20gJ29sL3NvdXJjZS9XTVRTJ1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tJ1xuaW1wb3J0IEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSdcbmltcG9ydCB7IFdmc0VuZHBvaW50LCBXbXRzRW5kcG9pbnQgfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IE9HQ1ZlY3RvclRpbGUgZnJvbSAnb2wvc291cmNlL09HQ1ZlY3RvclRpbGUuanMnXG5pbXBvcnQgeyBNVlQgfSBmcm9tICdvbC9mb3JtYXQnXG5pbXBvcnQgVmVjdG9yVGlsZUxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3RvclRpbGUnXG5pbXBvcnQgT0dDTWFwVGlsZSBmcm9tICdvbC9zb3VyY2UvT0dDTWFwVGlsZS5qcydcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFTRUxBWUVSX0NPTlRFWFQ6IE1hcENvbnRleHRMYXllclh5ek1vZGVsID0ge1xuICB0eXBlOiBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5YWVosXG4gIHVybHM6IFtcbiAgICBgaHR0cHM6Ly9hLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9yYXN0ZXJ0aWxlcy92b3lhZ2VyL3t6fS97eH0ve3l9LnBuZ2AsXG4gICAgYGh0dHBzOi8vYi5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fS5wbmdgLFxuICAgIGBodHRwczovL2MuYmFzZW1hcHMuY2FydG9jZG4uY29tL3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9L3t4fS97eX0ucG5nYCxcbiAgXSxcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVklFVzogTWFwQ29udGV4dFZpZXdNb2RlbCA9IHtcbiAgY2VudGVyOiBbMCwgMTVdLFxuICB6b29tOiAyLFxufVxuXG5leHBvcnQgY29uc3QgV0ZTX01BWF9GRUFUVVJFUyA9IDEwMDAwXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBDb250ZXh0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwVXRpbHM6IE1hcFV0aWxzU2VydmljZSxcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogTWFwU3R5bGVTZXJ2aWNlXG4gICkge31cblxuICByZXNldE1hcEZyb21Db250ZXh0KFxuICAgIG1hcDogTWFwLFxuICAgIG1hcENvbnRleHQ6IE1hcENvbnRleHRNb2RlbCxcbiAgICBtYXBDb25maWc/OiBNYXBDb25maWdcbiAgKTogTWFwIHtcbiAgICBpZiAobWFwQ29uZmlnKSB7XG4gICAgICBtYXBDb250ZXh0ID0gdGhpcy5tZXJnZU1hcENvbmZpZ1dpdGhDb250ZXh0KG1hcENvbnRleHQsIG1hcENvbmZpZylcbiAgICB9IGVsc2Uge1xuICAgICAgbWFwQ29udGV4dC5sYXllcnMgPSB0aGlzLmFkZERlZmF1bHRCYXNlbGF5ZXJDb250ZXh0KG1hcENvbnRleHQubGF5ZXJzKVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAhbWFwQ29udGV4dC52aWV3Py5leHRlbnQgJiZcbiAgICAgICghbWFwQ29udGV4dC52aWV3Py5jZW50ZXIgfHwgIW1hcENvbnRleHQudmlldz8uem9vbSlcbiAgICApIHtcbiAgICAgIG1hcENvbnRleHQudmlldyA9IHRoaXMuZ2V0RmFsbGJhY2tWaWV3KG1hcENvbmZpZylcbiAgICB9XG4gICAgbWFwLnNldFZpZXcodGhpcy5jcmVhdGVWaWV3KG1hcENvbnRleHQudmlldywgbWFwKSlcbiAgICBtYXAuZ2V0TGF5ZXJzKCkuY2xlYXIoKVxuICAgIG1hcENvbnRleHQubGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiBtYXAuYWRkTGF5ZXIodGhpcy5jcmVhdGVMYXllcihsYXllcikpKVxuICAgIHJldHVybiBtYXBcbiAgfVxuXG4gIGNyZWF0ZUxheWVyKGxheWVyTW9kZWw6IE1hcENvbnRleHRMYXllck1vZGVsKTogTGF5ZXIge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gbGF5ZXJNb2RlbFxuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5zdHlsZVNlcnZpY2Uuc3R5bGVzLmRlZmF1bHRcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uT0dDQVBJOlxuICAgICAgICBpZiAobGF5ZXJNb2RlbC5sYXllclR5cGUgPT09ICd2ZWN0b3JUaWxlcycpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFZlY3RvclRpbGVMYXllcih7XG4gICAgICAgICAgICBzb3VyY2U6IG5ldyBPR0NWZWN0b3JUaWxlKHtcbiAgICAgICAgICAgICAgdXJsOiBsYXllck1vZGVsLnVybCxcbiAgICAgICAgICAgICAgZm9ybWF0OiBuZXcgTVZUKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKGxheWVyTW9kZWwubGF5ZXJUeXBlID09PSAnbWFwVGlsZXMnKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICAgICAgc291cmNlOiBuZXcgT0dDTWFwVGlsZSh7XG4gICAgICAgICAgICAgIHVybDogbGF5ZXJNb2RlbC51cmwsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHtcbiAgICAgICAgICAgICAgZm9ybWF0OiBuZXcgR2VvSlNPTigpLFxuICAgICAgICAgICAgICB1cmw6IGxheWVyTW9kZWwudXJsLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLlhZWjpcbiAgICAgICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFhZWih7XG4gICAgICAgICAgICB1cmw6ICd1cmwnIGluIGxheWVyTW9kZWwgPyBsYXllck1vZGVsLnVybCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVybHM6ICd1cmxzJyBpbiBsYXllck1vZGVsID8gbGF5ZXJNb2RlbC51cmxzIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5XTVM6XG4gICAgICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgICAgICBzb3VyY2U6IG5ldyBUaWxlV01TKHtcbiAgICAgICAgICAgIHVybDogbGF5ZXJNb2RlbC51cmwsXG4gICAgICAgICAgICBwYXJhbXM6IHsgTEFZRVJTOiBsYXllck1vZGVsLm5hbWUgfSxcbiAgICAgICAgICAgIGd1dHRlcjogMjAsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLldNVFM6IHtcbiAgICAgICAgLy8gVE9ETzogaXNvbGF0ZSB0aGlzIGluIHV0aWxzIHNlcnZpY2VcbiAgICAgICAgY29uc3Qgb2xMYXllciA9IG5ldyBUaWxlTGF5ZXIoe30pXG4gICAgICAgIGNvbnN0IGVuZHBvaW50ID0gbmV3IFdtdHNFbmRwb2ludChsYXllck1vZGVsLnVybClcbiAgICAgICAgZW5kcG9pbnQuaXNSZWFkeSgpLnRoZW4oYXN5bmMgKGVuZHBvaW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJOYW1lID0gZW5kcG9pbnQuZ2V0U2luZ2xlTGF5ZXJOYW1lKCkgPz8gbGF5ZXJNb2RlbC5uYW1lXG4gICAgICAgICAgY29uc3QgbGF5ZXIgPSBlbmRwb2ludC5nZXRMYXllckJ5TmFtZShsYXllck5hbWUpXG4gICAgICAgICAgY29uc3QgbWF0cml4U2V0ID0gbGF5ZXIubWF0cml4U2V0c1swXVxuICAgICAgICAgIGNvbnN0IHRpbGVHcmlkID0gYXdhaXQgZW5kcG9pbnQuZ2V0T3BlbkxheWVyc1RpbGVHcmlkKGxheWVyLm5hbWUpXG4gICAgICAgICAgY29uc3QgcmVzb3VyY2VVcmwgPSBsYXllci5yZXNvdXJjZUxpbmtzWzBdXG4gICAgICAgICAgY29uc3QgZGltZW5zaW9ucyA9IGVuZHBvaW50LmdldERlZmF1bHREaW1lbnNpb25zKGxheWVyLm5hbWUpXG4gICAgICAgICAgb2xMYXllci5zZXRTb3VyY2UoXG4gICAgICAgICAgICBuZXcgV01UUyh7XG4gICAgICAgICAgICAgIGxheWVyOiBsYXllci5uYW1lLFxuICAgICAgICAgICAgICBzdHlsZTogbGF5ZXIuZGVmYXVsdFN0eWxlLFxuICAgICAgICAgICAgICBtYXRyaXhTZXQ6IG1hdHJpeFNldC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICBmb3JtYXQ6IHJlc291cmNlVXJsLmZvcm1hdCxcbiAgICAgICAgICAgICAgdXJsOiByZXNvdXJjZVVybC51cmwsXG4gICAgICAgICAgICAgIHJlcXVlc3RFbmNvZGluZzogcmVzb3VyY2VVcmwuZW5jb2RpbmcsXG4gICAgICAgICAgICAgIHRpbGVHcmlkLFxuICAgICAgICAgICAgICBwcm9qZWN0aW9uOiBtYXRyaXhTZXQuY3JzLFxuICAgICAgICAgICAgICBkaW1lbnNpb25zLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBvbExheWVyXG4gICAgICB9XG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLldGUzoge1xuICAgICAgICBjb25zdCBvbExheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICBzdHlsZSxcbiAgICAgICAgfSlcbiAgICAgICAgbmV3IFdmc0VuZHBvaW50KGxheWVyTW9kZWwudXJsKS5pc1JlYWR5KCkudGhlbigoZW5kcG9pbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlVHlwZSA9XG4gICAgICAgICAgICBlbmRwb2ludC5nZXRTaW5nbGVGZWF0dXJlVHlwZU5hbWUoKSA/PyBsYXllck1vZGVsLm5hbWVcbiAgICAgICAgICBvbExheWVyLnNldFNvdXJjZShcbiAgICAgICAgICAgIG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgICAgIHVybDogZnVuY3Rpb24gKGV4dGVudDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZSwge1xuICAgICAgICAgICAgICAgICAgbWF4RmVhdHVyZXM6IFdGU19NQVhfRkVBVFVSRVMsXG4gICAgICAgICAgICAgICAgICBhc0pzb246IHRydWUsXG4gICAgICAgICAgICAgICAgICBvdXRwdXRDcnM6ICdFUFNHOjM4NTcnLFxuICAgICAgICAgICAgICAgICAgZXh0ZW50LFxuICAgICAgICAgICAgICAgICAgZXh0ZW50Q3JzOiAnRVBTRzozODU3JyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzdHJhdGVneTogYmJveFN0cmF0ZWd5LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBvbExheWVyXG4gICAgICB9XG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLkdFT0pTT046IHtcbiAgICAgICAgaWYgKCd1cmwnIGluIGxheWVyTW9kZWwpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgICAgICAgIGZvcm1hdDogbmV3IEdlb0pTT04oKSxcbiAgICAgICAgICAgICAgdXJsOiBsYXllck1vZGVsLnVybCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgZ2VvanNvbiA9IGxheWVyTW9kZWwuZGF0YVxuICAgICAgICAgIGlmICh0eXBlb2YgZ2VvanNvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGdlb2pzb24gPSBKU09OLnBhcnNlKGdlb2pzb24pXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignQSBsYXllciBjb3VsZCBub3QgYmUgY3JlYXRlZCcsIGxheWVyTW9kZWwsIGUpXG4gICAgICAgICAgICAgIGdlb2pzb24gPSB7IHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsIGZlYXR1cmVzOiBbXSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzID0gdGhpcy5tYXBVdGlscy5yZWFkRmVhdHVyZUNvbGxlY3Rpb24oXG4gICAgICAgICAgICBnZW9qc29uIGFzIEZlYXR1cmVDb2xsZWN0aW9uXG4gICAgICAgICAgKSBhcyBGZWF0dXJlPEdlb21ldHJ5PltdXG4gICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgICBmZWF0dXJlcyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgbGF5ZXIgdHlwZTogJHtsYXllck1vZGVsLnR5cGV9YClcbiAgICB9XG4gIH1cblxuICBjcmVhdGVWaWV3KHZpZXdNb2RlbDogTWFwQ29udGV4dFZpZXdNb2RlbCwgbWFwPzogTWFwKTogVmlldyB7XG4gICAgY29uc3QgeyBjZW50ZXI6IGNlbnRlckluVmlld1Byb2osIHpvb20sIG1heFpvb20sIG1heEV4dGVudCB9ID0gdmlld01vZGVsXG4gICAgY29uc3QgY2VudGVyID0gY2VudGVySW5WaWV3UHJvalxuICAgICAgPyBmcm9tTG9uTGF0KGNlbnRlckluVmlld1Byb2osICdFUFNHOjM4NTcnKVxuICAgICAgOiBbMCwgMF1cbiAgICBjb25zdCB2aWV3ID0gbmV3IFZpZXcoe1xuICAgICAgY2VudGVyLFxuICAgICAgem9vbSxcbiAgICAgIG1heFpvb20sXG4gICAgICBleHRlbnQ6IG1heEV4dGVudCxcbiAgICAgIG11bHRpV29ybGQ6IGZhbHNlLFxuICAgICAgY29uc3RyYWluUmVzb2x1dGlvbjogdHJ1ZSxcbiAgICB9KVxuICAgIGlmICh2aWV3TW9kZWwuZXh0ZW50ICYmIG1hcCkge1xuICAgICAgdmlldy5maXQodmlld01vZGVsLmV4dGVudCwge1xuICAgICAgICBzaXplOiBtYXAuZ2V0U2l6ZSgpLFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHZpZXdcbiAgfVxuXG4gIGFkZERlZmF1bHRCYXNlbGF5ZXJDb250ZXh0KFxuICAgIGxheWVyczogTWFwQ29udGV4dExheWVyTW9kZWxbXVxuICApOiBNYXBDb250ZXh0TGF5ZXJNb2RlbFtdIHtcbiAgICByZXR1cm4gbGF5ZXJzLmluY2x1ZGVzKERFRkFVTFRfQkFTRUxBWUVSX0NPTlRFWFQpXG4gICAgICA/IGxheWVyc1xuICAgICAgOiBbREVGQVVMVF9CQVNFTEFZRVJfQ09OVEVYVCwgLi4ubGF5ZXJzXVxuICB9XG5cbiAgbWVyZ2VNYXBDb25maWdXaXRoQ29udGV4dChcbiAgICBtYXBDb250ZXh0OiBNYXBDb250ZXh0TW9kZWwsXG4gICAgbWFwQ29uZmlnOiBNYXBDb25maWdcbiAgKTogTWFwQ29udGV4dE1vZGVsIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWFwQ29udGV4dCxcbiAgICAgIHZpZXc6IHtcbiAgICAgICAgLi4ubWFwQ29udGV4dC52aWV3LFxuICAgICAgICAuLi4obWFwQ29uZmlnLk1BWF9aT09NICYmIHtcbiAgICAgICAgICBtYXhab29tOiBtYXBDb25maWcuTUFYX1pPT00sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4obWFwQ29uZmlnLk1BWF9FWFRFTlQgJiYge1xuICAgICAgICAgIG1heEV4dGVudDogbWFwQ29uZmlnLk1BWF9FWFRFTlQsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIGxheWVyczogW1xuICAgICAgICAuLi4obWFwQ29uZmlnLkRPX05PVF9VU0VfREVGQVVMVF9CQVNFTUFQXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW0RFRkFVTFRfQkFTRUxBWUVSX0NPTlRFWFRdKSxcbiAgICAgICAgLi4ubWFwQ29uZmlnLk1BUF9MQVlFUlMubWFwKHRoaXMuZ2V0Q29udGV4dExheWVyRnJvbUNvbmZpZyksXG4gICAgICAgIC4uLm1hcENvbnRleHQubGF5ZXJzLFxuICAgICAgXSxcbiAgICB9XG4gIH1cblxuICBnZXRGYWxsYmFja1ZpZXcobWFwQ29uZmlnOiBNYXBDb25maWcpOiBNYXBDb250ZXh0Vmlld01vZGVsIHtcbiAgICByZXR1cm4gbWFwQ29uZmlnPy5NQVhfRVhURU5UXG4gICAgICA/IHsgZXh0ZW50OiBtYXBDb25maWcuTUFYX0VYVEVOVCB9XG4gICAgICA6IERFRkFVTFRfVklFV1xuICB9XG5cbiAgZ2V0Q29udGV4dExheWVyRnJvbUNvbmZpZyhjb25maWc6IExheWVyQ29uZmlnKTogTWFwQ29udGV4dExheWVyTW9kZWwge1xuICAgIHN3aXRjaCAoY29uZmlnLlRZUEUpIHtcbiAgICAgIGNhc2UgJ3dtcyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3dtcycsXG4gICAgICAgICAgdXJsOiBjb25maWcuVVJMLFxuICAgICAgICAgIG5hbWU6IGNvbmZpZy5OQU1FLFxuICAgICAgICB9XG4gICAgICBjYXNlICd3ZnMnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICd3ZnMnLFxuICAgICAgICAgIHVybDogY29uZmlnLlVSTCxcbiAgICAgICAgICBuYW1lOiBjb25maWcuTkFNRSxcbiAgICAgICAgfVxuICAgICAgY2FzZSAneHl6JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBjb25maWcuVFlQRSxcbiAgICAgICAgICB1cmw6IGNvbmZpZy5VUkwsXG4gICAgICAgICAgbmFtZTogY29uZmlnLk5BTUUsXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ2dlb2pzb24nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IGNvbmZpZy5UWVBFLFxuICAgICAgICAgIC4uLihjb25maWcuREFUQSA/IHsgZGF0YTogY29uZmlnLkRBVEEgfSA6IHsgdXJsOiBjb25maWcuVVJMIH0pLFxuICAgICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -41,7 +41,7 @@ export class DataViewComponent {
41
41
  this.selectedLink$.next(link);
42
42
  }
43
43
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewComponent, deps: [{ token: i1.MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewComponent, selector: "gn-ui-data-view", inputs: { mode: "mode" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: i4.TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "component", type: i5.ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewComponent, selector: "gn-ui-data-view", inputs: { mode: "mode" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: i4.TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "component", type: i5.ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
45
45
  }
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewComponent, decorators: [{
47
47
  type: Component,
@@ -137,7 +137,7 @@ export class MapViewComponent {
137
137
  this.selectedLinkIndex$.next(link);
138
138
  }
139
139
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, deps: [{ token: i1.MdViewFacade }, { token: i2.MapManagerService }, { token: i2.MapUtilsService }, { token: i3.DataService }, { token: i2.FeatureInfoService }, { token: i0.ChangeDetectorRef }, { token: i2.MapStyleService }], target: i0.ɵɵFactoryTarget.Component }); }
140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MapViewComponent, selector: "gn-ui-map-view", ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MapContextComponent, selector: "gn-ui-map-context", inputs: ["context", "mapConfig"], outputs: ["featureClicked"] }, { kind: "component", type: i6.FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: i7.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: i10.PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i12.ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "mapConfig"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
140
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MapViewComponent, selector: "gn-ui-map-view", ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MapContextComponent, selector: "gn-ui-map-context", inputs: ["context", "mapConfig"], outputs: ["featureClicked"] }, { kind: "component", type: i6.FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: i7.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: i10.PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i12.ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "mapConfig"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
141
141
  }
142
142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, decorators: [{
143
143
  type: Component,
@@ -73,4 +73,4 @@ export class MdViewFacade {
73
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade, decorators: [{
74
74
  type: Injectable
75
75
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.LinkClassifierService }, { type: i3.AvatarServiceInterface }]; } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWR2aWV3LmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9zdGF0ZS9tZHZpZXcuZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sS0FBSyxlQUFlLE1BQU0sb0JBQW9CLENBQUE7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBT3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFBOzs7OztBQUdsRjs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQ1UsS0FBWSxFQUNaLGNBQXFDLEVBQ3JDLGFBQXFDO1FBRnJDLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBRy9DLGVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDMUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFDdkMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3RCLENBQUE7UUFFRCx1QkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDbEMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUM3QyxDQUFBO1FBRUQsY0FBUyxHQUFH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QUVELGFBQWE7UUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUNwRCxDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQXNDO1FBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZSxDQUFDLFlBQTBCO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLFdBQW1CO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN2RSxDQUFDOzhHQTVIVSxZQUFZO2tIQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBUHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSdcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgKiBhcyBNZFZpZXdBY3Rpb25zIGZyb20gJy4vbWR2aWV3LmFjdGlvbnMnXG5pbXBvcnQgKiBhcyBNZFZpZXdTZWxlY3RvcnMgZnJvbSAnLi9tZHZpZXcuc2VsZWN0b3JzJ1xuaW1wb3J0IHsgTGlua0NsYXNzaWZpZXJTZXJ2aWNlLCBMaW5rVXNhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IERhdGF2aXpDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9kYXRhdml6L2RhdGF2aXotY29uZmlndXJhdGlvbi5tb2RlbCdcbmltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIFVzZXJGZWVkYmFjayxcbiAgVXNlckZlZWRiYWNrVmlld01vZGVsLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBBdmF0YXJTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMnXG5cbkBJbmplY3RhYmxlKClcbi8qKlxuICogVGhlIE1ldGFkYXRhIFZpZXcgRmFjYWRlIGlzIHVzZWQgdG8gcmVuZGVyIGNvbXBsZXRlIG1ldGFkYXRhIHJlY29yZHMuXG4gKiBTdXBwbHkgaXQgd2l0aCBhbiBpbmNvbXBsZXRlIHJlY29yZCAoYXQgbGVhc3QgY29udGFpbmluZyB0aGUgdXVpZCkgYW5kIHRoZVxuICogY29ycmVzcG9uZGluZyBmdWxsIHJlY29yZCB3aWxsIGJlIGxvYWRlZC5cbiAqIFRvIGNsZWFyIHRoZSBjdXJyZW50IHJlY29yZCB1c2UgdGhlIGBjbG9zZSgpYCBtZXRob2QuXG4gKi9cbmV4cG9ydCBjbGFzcyBNZFZpZXdGYWNhZGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIGxpbmtDbGFzc2lmaWVyOiBMaW5rQ2xhc3NpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdmF0YXJTZXJ2aWNlOiBBdmF0YXJTZXJ2aWNlSW50ZXJmYWNlXG4gICkge31cblxuICBpc1ByZXNlbnQkID0gdGhpcy5zdG9yZS5waXBlKFxuICAgIHNlbGVjdChNZFZpZXdTZWxlY3RvcnMuZ2V0TWV0YWRhdGFVdWlkKSxcbiAgICBtYXAoKHV1aWQpID0+ICEhdXVpZClcbiAgKVxuXG4gIGlzTWV0YWRhdGFMb2FkaW5nJCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICBzZWxlY3QoTWRWaWV3U2VsZWN0b3JzLmdldE1ldGFkYXRhSXNMb2FkaW5nKVxuICApXG5cbiAgbWV0YWRhdGEkID0gdGhpcy5zdG9yZS5waXBlKFxuICAgIHNlbGVjdChNZFZpZXdTZWxlY3RvcnMuZ2V0TWV0YWRhdGEpLFxuICAgIGZpbHRlcigobWQpID0+ICEhbWQpXG4gIClcblxuICBpc0luY29tcGxldGUkID0gdGhpcy5zdG9yZS5waXBlKFxuICAgIHNlbGVjdChNZFZpZXdTZWxlY3RvcnMuZ2V0TWV0YWRhdGFJc0luY29tcGxldGUpLFxuICAgIGZpbHRlcigoaW5jb21wbGV0ZSkgPT4gaW5jb21wbGV0ZSAhPT0gbnVsbClcbiAgKVxuXG4gIGVycm9yJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoTWRWaWV3U2VsZWN0b3JzLmdldE1ldGFkYXRhRXJyb3IpKVxuXG4gIHJlbGF0ZWQkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChNZFZpZXdTZWxlY3RvcnMuZ2V0UmVsYXRlZCkpXG5cbiAgY2hhcnRDb25maWckID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChNZFZpZXdTZWxlY3RvcnMuZ2V0Q2hhcnRDb25maWcpKVxuXG4gIGFsbExpbmtzJCA9IHRoaXMubWV0YWRhdGEkLnBpcGUoXG4gICAgbWFwKChyZWNvcmQpID0+ICgnZGlzdHJpYnV0aW9ucycgaW4gcmVjb3JkID8gcmVjb3JkLmRpc3RyaWJ1dGlvbnMgOiBbXSkpXG4gIClcblxuICBhcGlMaW5rcyQgPSB0aGlzLmFsbExpbmtzJC5waXBlKFxuICAgIG1hcCgobGlua3MpID0+XG4gICAgICBsaW5rcy5maWx0ZXIoKGxpbmspID0+IHRoaXMubGlua0NsYXNzaWZpZXIuaGFzVXNhZ2UobGluaywgTGlua1VzYWdlLkFQSSkpXG4gICAgKVxuICApXG5cbiAgbWFwQXBpTGlua3MkID0gdGhpcy5hbGxMaW5rcyQucGlwZShcbiAgICBtYXAoKGxpbmtzKSA9PlxuICAgICAgbGlua3MuZmlsdGVyKChsaW5rKSA9PlxuICAgICAgICB0aGlzLmxpbmtDbGFzc2lmaWVyLmhhc1VzYWdlKGxpbmssIExpbmtVc2FnZS5NQVBfQVBJKVxuICAgICAgKVxuICAgIClcbiAgKVxuXG4gIGRvd25sb2FkTGlua3MkID0gdGhpcy5hbGxMaW5rcyQucGlwZShcbiAgICBtYXAoKGxpbmtzKSA9PlxuICAgICAgbGlua3MuZmlsdGVyKChsaW5rKSA9PlxuICAgICAgICB0aGlzLmxpbmtDbGFzc2lmaWVyLmhhc1VzYWdlKGxpbmssIExpbmtVc2FnZS5ET1dOTE9BRClcbiAgICAgIClcbiAgICApXG4gIClcblxuICBkYXRhTGlua3MkID0gdGhpcy5hbGxMaW5rcyQucGlwZShcbiAgICBtYXAoKGxpbmtzKSA9PlxuICAgICAgbGlua3MuZmlsdGVyKChsaW5rKSA9PiB0aGlzLmxpbmtDbGFzc2lmaWVyLmhhc1VzYWdlKGxpbmssIExpbmtVc2FnZS5EQVRBKSlcbiAgICApXG4gIClcblxuICBnZW9EYXRhTGlua3MkID0gdGhpcy5hbGxMaW5rcyQucGlwZShcbiAgICBtYXAoKGxpbmtzKSA9PlxuICAgICAgbGlua3MuZmlsdGVyKChsaW5rKSA9PlxuICAgICAgICB0aGlzLmxpbmtDbGFzc2lmaWVyLmhhc1VzYWdlKGxpbmssIExpbmtVc2FnZS5HRU9EQVRBKVxuICAgICAgKVxuICAgIClcbiAgKVxuXG4gIGxhbmRpbmdQYWdlTGlua3MkID0gdGhpcy5tZXRhZGF0YSQucGlwZShcbiAgICBtYXAoKHJlY29yZCkgPT4gKCdsYW5kaW5nUGFnZScgaW4gcmVjb3JkID8gW3JlY29yZC5sYW5kaW5nUGFnZV0gOiBbXSkpXG4gIClcblxuICBvdGhlckxpbmtzJCA9IHRoaXMuYWxsTGlua3MkLnBpcGUoXG4gICAgbWFwKChsaW5rcykgPT5cbiAgICAgIGxpbmtzLmZpbHRlcigobGluaykgPT5cbiAgICAgICAgdGhpcy5saW5rQ2xhc3NpZmllci5oYXNVc2FnZShsaW5rLCBMaW5rVXNhZ2UuVU5LTk9XTilcbiAgICAgIClcbiAgICApXG4gIClcblxuICB1c2VyRmVlZGJhY2tzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoTWRWaWV3U2VsZWN0b3JzLmdldFVzZXJGZWVkYmFja3MpKVxuICBpc0FsbFVzZXJGZWVkYmFja0xvYWRpbmckID0gdGhpcy5zdG9yZS5waXBlKFxuICAgIHNlbGVjdChNZFZpZXdTZWxlY3RvcnMuZ2V0QWxsVXNlckZlZWRiYWNrc0xvYWRpbmcpXG4gIClcbiAgaXNBZGRVc2VyRmVlZGJhY2tMb2FkaW5nJCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICBzZWxlY3QoTWRWaWV3U2VsZWN0b3JzLmdldEFkZFVzZXJGZWVkYmFja3NMb2FkaW5nKVxuICApXG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBzaG93IGFuIGluY29tcGxldGUgcmVjb3JkIChlLmcuIGZyb20gYSBzZWFyY2ggcmVzdWx0KSBhcyBhIHByZXZpZXdcbiAgICogTm90ZTogdGhlIGZ1bGwgcmVjb3JkIHdpbGwgbm90IGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5OyB1c2UgdGhlIGBsb2FkRnVsbGAgbWV0aG9kIGZvciB0aGF0XG4gICAqL1xuICBzZXRJbmNvbXBsZXRlTWV0YWRhdGEoaW5jb21wbGV0ZTogQ2F0YWxvZ1JlY29yZCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWRWaWV3QWN0aW9ucy5zZXRJbmNvbXBsZXRlTWV0YWRhdGEoeyBpbmNvbXBsZXRlIH0pKVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBsb2FkIG9mIGEgZnVsbCBtZXRhZGF0YSByZWNvcmRcbiAgICovXG4gIGxvYWRGdWxsKHV1aWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWRWaWV3QWN0aW9ucy5sb2FkRnVsbE1ldGFkYXRhKHsgdXVpZCB9KSlcbiAgfVxuXG4gIGNsb3NlTWV0YWRhdGEoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNZFZpZXdBY3Rpb25zLmNsb3NlTWV0YWRhdGEoKSlcbiAgfVxuXG4gIHNldENoYXJ0Q29uZmlnKGNoYXJ0Q29uZmlnOiBEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNZFZpZXdBY3Rpb25zLnNldENoYXJ0Q29uZmlnKHsgY2hhcnRDb25maWcgfSkpXG4gIH1cblxuICAvKipcbiAgICogVXNlckZlZWRiYWNrc1xuICAgKi9cbiAgYWRkVXNlckZlZWRiYWNrKHVzZXJGZWVkYmFjazogVXNlckZlZWRiYWNrKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNZFZpZXdBY3Rpb25zLmFkZFVzZXJGZWVkYmFjayh7IHVzZXJGZWVkYmFjayB9KSlcbiAgfVxuXG4gIGxvYWRVc2VyRmVlZGJhY2tzKGRhdGFzZXRVdWlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKE1kVmlld0FjdGlvbnMubG9hZFVzZXJGZWVkYmFja3MoeyBkYXRhc2V0VXVpZCB9KSlcbiAgfVxufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWR2aWV3LmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9zdGF0ZS9tZHZpZXcuZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sS0FBSyxlQUFlLE1BQU0sb0JBQW9CLENBQUE7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBTXpGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFBOzs7OztBQUdsRjs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQ1UsS0FBWSxFQUNaLGNBQXFDLEVBQ3JDLGFBQXFDO1FBRnJDLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBRy9DLGVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDMUIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFDdkMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3RCLENBQUE7UUFFRCx1QkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDbEMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUM3QyxDQUFBO1FBRUQsY0FBUyxHQUFH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QUVELGFBQWE7UUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUNwRCxDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQXNDO1FBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZSxDQUFDLFlBQTBCO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLFdBQW1CO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN2RSxDQUFDOzhHQTVIVSxZQUFZO2tIQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBUHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSdcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgKiBhcyBNZFZpZXdBY3Rpb25zIGZyb20gJy4vbWR2aWV3LmFjdGlvbnMnXG5pbXBvcnQgKiBhcyBNZFZpZXdTZWxlY3RvcnMgZnJvbSAnLi9tZHZpZXcuc2VsZWN0b3JzJ1xuaW1wb3J0IHsgTGlua0NsYXNzaWZpZXJTZXJ2aWNlLCBMaW5rVXNhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IERhdGF2aXpDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9kYXRhdml6L2RhdGF2aXotY29uZmlndXJhdGlvbi5tb2RlbCdcbmltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIFVzZXJGZWVkYmFjayxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgQXZhdGFyU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjJ1xuXG5ASW5qZWN0YWJsZSgpXG4vKipcbiAqIFRoZSBNZXRhZGF0YSBWaWV3IEZhY2FkZSBpcyB1c2VkIHRvIHJlbmRlciBjb21wbGV0ZSBtZXRhZGF0YSByZWNvcmRzLlxuICogU3VwcGx5IGl0IHdpdGggYW4gaW5jb21wbGV0ZSByZWNvcmQgKGF0IGxlYXN0IGNvbnRhaW5pbmcgdGhlIHV1aWQpIGFuZCB0aGVcbiAqIGNvcnJlc3BvbmRpbmcgZnVsbCByZWNvcmQgd2lsbCBiZSBsb2FkZWQuXG4gKiBUbyBjbGVhciB0aGUgY3VycmVudCByZWNvcmQgdXNlIHRoZSBgY2xvc2UoKWAgbWV0aG9kLlxuICovXG5leHBvcnQgY2xhc3MgTWRWaWV3RmFjYWRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBsaW5rQ2xhc3NpZmllcjogTGlua0NsYXNzaWZpZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXZhdGFyU2VydmljZTogQXZhdGFyU2VydmljZUludGVyZmFjZVxuICApIHt9XG5cbiAgaXNQcmVzZW50JCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICBzZWxlY3QoTWRWaWV3U2VsZWN0b3JzLmdldE1ldGFkYXRhVXVpZCksXG4gICAgbWFwKCh1dWlkKSA9PiAhIXV1aWQpXG4gIClcblxuICBpc01ldGFkYXRhTG9hZGluZyQgPSB0aGlzLnN0b3JlLnBpcGUoXG4gICAgc2VsZWN0KE1kVmlld1NlbGVjdG9ycy5nZXRNZXRhZGF0YUlzTG9hZGluZylcbiAgKVxuXG4gIG1ldGFkYXRhJCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICBzZWxlY3QoTWRWaWV3U2VsZWN0b3JzLmdldE1ldGFkYXRhKSxcbiAgICBmaWx0ZXIoKG1kKSA9PiAhIW1kKVxuICApXG5cbiAgaXNJbmNvbXBsZXRlJCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICBzZWxlY3QoTWRWaWV3U2VsZWN0b3JzLmdldE1ldGFkYXRhSXNJbmNvbXBsZXRlKSxcbiAgICBmaWx0ZXIoKGluY29tcGxldGUpID0+IGluY29tcGxldGUgIT09IG51bGwpXG4gIClcblxuICBlcnJvciQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KE1kVmlld1NlbGVjdG9ycy5nZXRNZXRhZGF0YUVycm9yKSlcblxuICByZWxhdGVkJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoTWRWaWV3U2VsZWN0b3JzLmdldFJlbGF0ZWQpKVxuXG4gIGNoYXJ0Q29uZmlnJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoTWRWaWV3U2VsZWN0b3JzLmdldENoYXJ0Q29uZmlnKSlcblxuICBhbGxMaW5rcyQgPSB0aGlzLm1ldGFkYXRhJC5waXBlKFxuICAgIG1hcCgocmVjb3JkKSA9PiAoJ2Rpc3RyaWJ1dGlvbnMnIGluIHJlY29yZCA/IHJlY29yZC5kaXN0cmlidXRpb25zIDogW10pKVxuICApXG5cbiAgYXBpTGlua3MkID0gdGhpcy5hbGxMaW5rcyQucGlwZShcbiAgICBtYXAoKGxpbmtzKSA9PlxuICAgICAgbGlua3MuZmlsdGVyKChsaW5rKSA9PiB0aGlzLmxpbmtDbGFzc2lmaWVyLmhhc1VzYWdlKGxpbmssIExpbmtVc2FnZS5BUEkpKVxuICAgIClcbiAgKVxuXG4gIG1hcEFwaUxpbmtzJCA9IHRoaXMuYWxsTGlua3MkLnBpcGUoXG4gICAgbWFwKChsaW5rcykgPT5cbiAgICAgIGxpbmtzLmZpbHRlcigobGluaykgPT5cbiAgICAgICAgdGhpcy5saW5rQ2xhc3NpZmllci5oYXNVc2FnZShsaW5rLCBMaW5rVXNhZ2UuTUFQX0FQSSlcbiAgICAgIClcbiAgICApXG4gIClcblxuICBkb3dubG9hZExpbmtzJCA9IHRoaXMuYWxsTGlua3MkLnBpcGUoXG4gICAgbWFwKChsaW5rcykgPT5cbiAgICAgIGxpbmtzLmZpbHRlcigobGluaykgPT5cbiAgICAgICAgdGhpcy5saW5rQ2xhc3NpZmllci5oYXNVc2FnZShsaW5rLCBMaW5rVXNhZ2UuRE9XTkxPQUQpXG4gICAgICApXG4gICAgKVxuICApXG5cbiAgZGF0YUxpbmtzJCA9IHRoaXMuYWxsTGlua3MkLnBpcGUoXG4gICAgbWFwKChsaW5rcykgPT5cbiAgICAgIGxpbmtzLmZpbHRlcigobGluaykgPT4gdGhpcy5saW5rQ2xhc3NpZmllci5oYXNVc2FnZShsaW5rLCBMaW5rVXNhZ2UuREFUQSkpXG4gICAgKVxuICApXG5cbiAgZ2VvRGF0YUxpbmtzJCA9IHRoaXMuYWxsTGlua3MkLnBpcGUoXG4gICAgbWFwKChsaW5rcykgPT5cbiAgICAgIGxpbmtzLmZpbHRlcigobGluaykgPT5cbiAgICAgICAgdGhpcy5saW5rQ2xhc3NpZmllci5oYXNVc2FnZShsaW5rLCBMaW5rVXNhZ2UuR0VPREFUQSlcbiAgICAgIClcbiAgICApXG4gIClcblxuICBsYW5kaW5nUGFnZUxpbmtzJCA9IHRoaXMubWV0YWRhdGEkLnBpcGUoXG4gICAgbWFwKChyZWNvcmQpID0+ICgnbGFuZGluZ1BhZ2UnIGluIHJlY29yZCA/IFtyZWNvcmQubGFuZGluZ1BhZ2VdIDogW10pKVxuICApXG5cbiAgb3RoZXJMaW5rcyQgPSB0aGlzLmFsbExpbmtzJC5waXBlKFxuICAgIG1hcCgobGlua3MpID0+XG4gICAgICBsaW5rcy5maWx0ZXIoKGxpbmspID0+XG4gICAgICAgIHRoaXMubGlua0NsYXNzaWZpZXIuaGFzVXNhZ2UobGluaywgTGlua1VzYWdlLlVOS05PV04pXG4gICAgICApXG4gICAgKVxuICApXG5cbiAgdXNlckZlZWRiYWNrcyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KE1kVmlld1NlbGVjdG9ycy5nZXRVc2VyRmVlZGJhY2tzKSlcbiAgaXNBbGxVc2VyRmVlZGJhY2tMb2FkaW5nJCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICBzZWxlY3QoTWRWaWV3U2VsZWN0b3JzLmdldEFsbFVzZXJGZWVkYmFja3NMb2FkaW5nKVxuICApXG4gIGlzQWRkVXNlckZlZWRiYWNrTG9hZGluZyQgPSB0aGlzLnN0b3JlLnBpcGUoXG4gICAgc2VsZWN0KE1kVmlld1NlbGVjdG9ycy5nZXRBZGRVc2VyRmVlZGJhY2tzTG9hZGluZylcbiAgKVxuXG4gIC8qKlxuICAgKiBUaGlzIHdpbGwgc2hvdyBhbiBpbmNvbXBsZXRlIHJlY29yZCAoZS5nLiBmcm9tIGEgc2VhcmNoIHJlc3VsdCkgYXMgYSBwcmV2aWV3XG4gICAqIE5vdGU6IHRoZSBmdWxsIHJlY29yZCB3aWxsIG5vdCBiZSBsb2FkZWQgYXV0b21hdGljYWxseTsgdXNlIHRoZSBgbG9hZEZ1bGxgIG1ldGhvZCBmb3IgdGhhdFxuICAgKi9cbiAgc2V0SW5jb21wbGV0ZU1ldGFkYXRhKGluY29tcGxldGU6IENhdGFsb2dSZWNvcmQpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKE1kVmlld0FjdGlvbnMuc2V0SW5jb21wbGV0ZU1ldGFkYXRhKHsgaW5jb21wbGV0ZSB9KSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHdpbGwgdHJpZ2dlciB0aGUgbG9hZCBvZiBhIGZ1bGwgbWV0YWRhdGEgcmVjb3JkXG4gICAqL1xuICBsb2FkRnVsbCh1dWlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKE1kVmlld0FjdGlvbnMubG9hZEZ1bGxNZXRhZGF0YSh7IHV1aWQgfSkpXG4gIH1cblxuICBjbG9zZU1ldGFkYXRhKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWRWaWV3QWN0aW9ucy5jbG9zZU1ldGFkYXRhKCkpXG4gIH1cblxuICBzZXRDaGFydENvbmZpZyhjaGFydENvbmZpZzogRGF0YXZpekNvbmZpZ3VyYXRpb25Nb2RlbCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWRWaWV3QWN0aW9ucy5zZXRDaGFydENvbmZpZyh7IGNoYXJ0Q29uZmlnIH0pKVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZXJGZWVkYmFja3NcbiAgICovXG4gIGFkZFVzZXJGZWVkYmFjayh1c2VyRmVlZGJhY2s6IFVzZXJGZWVkYmFjaykge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWRWaWV3QWN0aW9ucy5hZGRVc2VyRmVlZGJhY2soeyB1c2VyRmVlZGJhY2sgfSkpXG4gIH1cblxuICBsb2FkVXNlckZlZWRiYWNrcyhkYXRhc2V0VXVpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNZFZpZXdBY3Rpb25zLmxvYWRVc2VyRmVlZGJhY2tzKHsgZGF0YXNldFV1aWQgfSkpXG4gIH1cbn1cbiJdfQ==
@@ -8,6 +8,7 @@ export * from './lib/state/effects';
8
8
  export * from './lib/state/reducer';
9
9
  export * from './lib/utils/service/search.service';
10
10
  export * from './lib/utils/service/fields.service';
11
+ export * from './lib/utils/service/fields';
11
12
  export * from './lib/results-list/results-list.container.component';
12
13
  export * from './lib/filter-dropdown/filter-dropdown.component';
13
14
  export * from './lib/constants';
@@ -21,4 +22,4 @@ export * from './lib/results-layout/results-layout.component';
21
22
  export * from './lib/sort-by/sort-by.component';
22
23
  export * from './lib/state/container/search-state.container.directive';
23
24
  export * from './lib/results-table/results-table.component';
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvc2VhcmNoL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyxvQ0FBb0MsQ0FBQTtBQUNsRCxjQUFjLG9DQUFvQyxDQUFBO0FBQ2xELGNBQWMscURBQXFELENBQUE7QUFDbkUsY0FBYyxpREFBaUQsQ0FBQTtBQUMvRCxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsMkNBQTJDLENBQUE7QUFDekQsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLDBEQUEwRCxDQUFBO0FBQ3hFLGNBQWMsaURBQWlELENBQUE7QUFDL0QsY0FBYyx1REFBdUQsQ0FBQTtBQUNyRSxjQUFjLDREQUE0RCxDQUFBO0FBQzFFLGNBQWMsK0NBQStDLENBQUE7QUFDN0QsY0FBYyxpQ0FBaUMsQ0FBQTtBQUMvQyxjQUFjLHdEQUF3RCxDQUFBO0FBQ3RFLGNBQWMsNkNBQTZDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9mZWF0dXJlLXNlYXJjaC5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWx0ZXItZ2VvbWV0cnkudG9rZW4nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQtdXJsLnRva2VuJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGUvYWN0aW9ucydcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlL3NlbGVjdG9ycydcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlL3NlYXJjaC5mYWNhZGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGF0ZS9lZmZlY3RzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGUvcmVkdWNlcidcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3NlcnZpY2Uvc2VhcmNoLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9zZXJ2aWNlL2ZpZWxkcy5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzdWx0cy1saXN0L3Jlc3VsdHMtbGlzdC5jb250YWluZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsdGVyLWRyb3Bkb3duL2ZpbHRlci1kcm9wZG93bi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25zdGFudHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mdXp6eS1zZWFyY2gvZnV6enktc2VhcmNoLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZhY2V0cy9mYWNldHMubW9kdWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmFjZXRzL2ZhY2V0cy1jb250YWluZXIvZmFjZXRzLWNvbnRhaW5lci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmRzLW1ldHJpY3MvcmVjb3Jkcy1tZXRyaWNzLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zhdm9yaXRlcy9mYXZvcml0ZS1zdGFyL2Zhdm9yaXRlLXN0YXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzdWx0cy1oaXRzLW51bWJlci9yZXN1bHRzLWhpdHMuY29udGFpbmVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc3VsdHMtbGF5b3V0L3Jlc3VsdHMtbGF5b3V0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NvcnQtYnkvc29ydC1ieS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGF0ZS9jb250YWluZXIvc2VhcmNoLXN0YXRlLmNvbnRhaW5lci5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXN1bHRzLXRhYmxlL3Jlc3VsdHMtdGFibGUuY29tcG9uZW50J1xuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvc2VhcmNoL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyxvQ0FBb0MsQ0FBQTtBQUNsRCxjQUFjLG9DQUFvQyxDQUFBO0FBQ2xELGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyxxREFBcUQsQ0FBQTtBQUNuRSxjQUFjLGlEQUFpRCxDQUFBO0FBQy9ELGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsMERBQTBELENBQUE7QUFDeEUsY0FBYyxpREFBaUQsQ0FBQTtBQUMvRCxjQUFjLHVEQUF1RCxDQUFBO0FBQ3JFLGNBQWMsNERBQTRELENBQUE7QUFDMUUsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLGlDQUFpQyxDQUFBO0FBQy9DLGNBQWMsd0RBQXdELENBQUE7QUFDdEUsY0FBYyw2Q0FBNkMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2ZlYXR1cmUtc2VhcmNoLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbHRlci1nZW9tZXRyeS50b2tlbidcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC11cmwudG9rZW4nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGF0ZS9hY3Rpb25zJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGUvc2VsZWN0b3JzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGUvc2VhcmNoLmZhY2FkZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlL2VmZmVjdHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGF0ZS9yZWR1Y2VyJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvc2VydmljZS9zZWFyY2guc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3NlcnZpY2UvZmllbGRzLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9zZXJ2aWNlL2ZpZWxkcydcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc3VsdHMtbGlzdC9yZXN1bHRzLWxpc3QuY29udGFpbmVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbHRlci1kcm9wZG93bi9maWx0ZXItZHJvcGRvd24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc3RhbnRzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZnV6enktc2VhcmNoL2Z1enp5LXNlYXJjaC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYWNldHMvZmFjZXRzLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZhY2V0cy9mYWNldHMtY29udGFpbmVyL2ZhY2V0cy1jb250YWluZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVjb3Jkcy1tZXRyaWNzL3JlY29yZHMtbWV0cmljcy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYXZvcml0ZXMvZmF2b3JpdGUtc3Rhci9mYXZvcml0ZS1zdGFyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc3VsdHMtaGl0cy1udW1iZXIvcmVzdWx0cy1oaXRzLmNvbnRhaW5lci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXN1bHRzLWxheW91dC9yZXN1bHRzLWxheW91dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zb3J0LWJ5L3NvcnQtYnkuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGUvY29udGFpbmVyL3NlYXJjaC1zdGF0ZS5jb250YWluZXIuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzdWx0cy10YWJsZS9yZXN1bHRzLXRhYmxlLmNvbXBvbmVudCdcbiJdfQ==
@@ -21,7 +21,7 @@ export class ResultsLayoutComponent {
21
21
  this.searchFacade.setResultsLayout(layout);
22
22
  }
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsLayoutComponent, deps: [{ token: i1.SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsLayoutComponent, selector: "gn-ui-results-layout", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'results.layout.selectOne' | translate\"\n [ariaName]=\"'results.layout.selectOne' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"change($event)\"\n [selected]=\"searchFacade.layout$ | async\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: i2.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsLayoutComponent, selector: "gn-ui-results-layout", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'results.layout.selectOne' | translate\"\n [ariaName]=\"'results.layout.selectOne' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"change($event)\"\n [selected]=\"searchFacade.layout$ | async\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: i2.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsLayoutComponent, decorators: [{
27
27
  type: Component,
@@ -42,7 +42,7 @@ export class SortByComponent {
42
42
  this.searchService.setSortBy(criteriaAsString.split(','));
43
43
  }
44
44
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SortByComponent, deps: [{ token: i1.SearchFacade }, { token: i2.SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SortByComponent, selector: "gn-ui-sort-by", inputs: { isQualitySortable: "isQualitySortable" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'search.field.sortBy' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"changeSortBy($event)\"\n [selected]=\"currentSortBy$ | async\"\n ariaName=\"search-sort-by\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: i3.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
45
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SortByComponent, selector: "gn-ui-sort-by", inputs: { isQualitySortable: "isQualitySortable" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'search.field.sortBy' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"changeSortBy($event)\"\n [selected]=\"currentSortBy$ | async\"\n ariaName=\"search-sort-by\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: i3.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
46
46
  }
47
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SortByComponent, decorators: [{
48
48
  type: Component,