geonetwork-ui 2.4.0 → 2.4.1-dev.1d2ade24e

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 (181) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +4 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +5 -2
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.mjs +6 -62
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +19 -1
  6. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +27 -16
  7. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +27 -1
  8. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  9. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +7 -1
  10. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +3 -1
  11. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +18 -14
  12. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +15 -5
  13. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +10 -4
  14. package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +6 -5
  15. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +3 -3
  16. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +3 -3
  17. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +2 -2
  18. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +118 -12
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +36 -23
  20. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +7 -12
  21. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +17 -12
  22. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +7 -13
  23. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +3 -3
  24. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +36 -60
  25. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +3 -3
  26. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +3 -3
  27. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +11 -15
  28. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +9 -5
  29. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +3 -4
  30. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +3 -3
  31. package/esm2022/libs/ui/elements/src/index.mjs +3 -2
  32. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +213 -0
  33. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +19 -13
  34. package/esm2022/libs/ui/inputs/src/index.mjs +5 -6
  35. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -1
  36. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +5 -5
  37. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +19 -25
  38. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +11 -6
  39. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +9 -4
  40. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -10
  41. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +37 -1
  42. package/esm2022/translations/de.json +53 -17
  43. package/esm2022/translations/en.json +33 -16
  44. package/esm2022/translations/es.json +51 -15
  45. package/esm2022/translations/fr.json +37 -20
  46. package/esm2022/translations/it.json +266 -228
  47. package/esm2022/translations/nl.json +51 -15
  48. package/esm2022/translations/pt.json +51 -15
  49. package/fesm2022/geonetwork-ui.mjs +1805 -1420
  50. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  51. package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +1 -1
  52. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  53. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +1 -0
  54. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  55. package/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.d.ts.map +1 -1
  56. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  57. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +4 -3
  58. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  59. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +2 -1
  60. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  61. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +4 -3
  62. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  63. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +3 -0
  64. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  65. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +10 -2
  66. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  67. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +6 -2
  68. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  69. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +5 -2
  70. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  71. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +2 -1
  72. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  73. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +2 -1
  74. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  75. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +52 -4
  76. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  77. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +4 -4
  78. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -1
  79. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +1 -4
  80. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  81. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +6 -5
  82. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
  83. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +1 -4
  84. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  85. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +1 -1
  86. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -1
  87. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  88. package/libs/feature/editor/src/lib/services/editor.service.d.ts +1 -1
  89. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  90. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +0 -1
  91. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  92. package/libs/ui/elements/src/index.d.ts +2 -1
  93. package/libs/ui/elements/src/index.d.ts.map +1 -1
  94. package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts.map +1 -0
  95. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
  96. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
  97. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  98. package/libs/ui/inputs/src/index.d.ts +4 -5
  99. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  100. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  101. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  102. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts +1 -1
  103. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
  104. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +6 -7
  105. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  106. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +5 -4
  107. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
  108. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -1
  109. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  110. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -3
  111. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  112. package/libs/util/shared/src/lib/links/link-utils.d.ts +2 -1
  113. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  114. package/package.json +1 -1
  115. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.converter.ts +4 -3
  116. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +8 -1
  117. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +1 -0
  118. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.ts +9 -62
  119. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +18 -0
  120. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +53 -27
  121. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +29 -7
  122. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +5 -4
  123. package/src/libs/common/fixtures/src/lib/elasticsearch/full-response.fixtures.ts +2 -2
  124. package/src/libs/common/fixtures/src/lib/elasticsearch/search-responses.fixtures.ts +16 -16
  125. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +163 -0
  126. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +24 -4
  127. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +10 -1
  128. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +57 -31
  129. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +15 -9
  130. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +18 -12
  131. package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +13 -8
  132. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  133. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.html +1 -1
  134. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +63 -6
  135. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +145 -4
  136. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.html +1 -1
  137. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +31 -19
  138. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +1 -10
  139. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +1 -7
  140. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +12 -25
  141. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +15 -10
  142. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +0 -9
  143. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +3 -9
  144. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +6 -6
  145. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +46 -74
  146. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +6 -3
  147. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +3 -6
  148. package/src/libs/feature/editor/src/lib/fields.config.ts +10 -14
  149. package/src/libs/feature/editor/src/lib/services/editor.service.ts +18 -16
  150. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +0 -1
  151. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +0 -3
  152. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +1 -0
  153. package/src/libs/ui/elements/src/index.ts +2 -1
  154. package/src/libs/ui/{inputs → elements}/src/lib/image-input/image-input.component.html +4 -19
  155. package/src/libs/ui/{inputs → elements}/src/lib/image-input/image-input.component.ts +13 -9
  156. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +13 -10
  157. package/src/libs/ui/inputs/src/index.ts +4 -5
  158. package/src/libs/ui/inputs/src/lib/button/button.component.ts +2 -1
  159. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +1 -1
  160. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +22 -25
  161. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.html +5 -3
  162. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +10 -2
  163. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +12 -1
  164. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +4 -6
  165. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +23 -6
  166. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -6
  167. package/src/libs/util/shared/src/lib/links/link-utils.ts +48 -1
  168. package/tailwind.base.config.js +2 -0
  169. package/translations/de.json +53 -17
  170. package/translations/en.json +33 -16
  171. package/translations/es.json +51 -15
  172. package/translations/fr.json +37 -20
  173. package/translations/it.json +266 -228
  174. package/translations/nl.json +51 -15
  175. package/translations/pt.json +51 -15
  176. package/translations/sk.json +51 -15
  177. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +0 -214
  178. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +0 -1
  179. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/update-frequency.mapper.ts +0 -67
  180. /package/libs/ui/{inputs → elements}/src/lib/image-input/image-input.component.d.ts +0 -0
  181. /package/src/libs/ui/{inputs → elements}/src/lib/image-input/image-input.component.css +0 -0
@@ -1,214 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { HttpClient } from '@angular/common/http';
3
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, } from '@angular/core';
4
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
5
- import { downgradeImage, megabytesToBytes } from '../../../../../../libs/util/shared/src';
6
- import { firstValueFrom } from 'rxjs';
7
- import { ButtonComponent } from '../button/button.component';
8
- import { FilesDropDirective } from '../files-drop/files-drop.directive';
9
- import { TranslateModule } from '@ngx-translate/core';
10
- import { marker } from '@biesbjerg/ngx-translate-extract-marker';
11
- import { UrlInputComponent } from '../url-input/url-input.component';
12
- import { TextInputComponent } from '../text-input/text-input.component';
13
- import { NgIconComponent, provideIcons, provideNgIconsConfig, } from '@ng-icons/core';
14
- import { iconoirFramePlusIn, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirLink, } from '@ng-icons/iconoir';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@angular/common/http";
17
- import * as i2 from "@angular/common";
18
- import * as i3 from "@angular/material/progress-spinner";
19
- import * as i4 from "@ngx-translate/core";
20
- export class ImageInputComponent {
21
- get isUploadInProgress() {
22
- return this.uploadProgress !== undefined;
23
- }
24
- constructor(http, cd) {
25
- this.http = http;
26
- this.cd = cd;
27
- this.disabled = false;
28
- this.fileChange = new EventEmitter();
29
- this.urlChange = new EventEmitter();
30
- this.uploadCancel = new EventEmitter();
31
- this.delete = new EventEmitter();
32
- this.altTextChange = new EventEmitter();
33
- this.dragFilesOver = false;
34
- this.showUrlInput = false;
35
- this.downloadError = false;
36
- this.showAltTextInput = false;
37
- }
38
- getPrimaryText() {
39
- if (this.uploadError) {
40
- return marker('input.image.uploadErrorLabel');
41
- }
42
- if (this.uploadProgress) {
43
- return marker('input.image.uploadProgressLabel');
44
- }
45
- return marker('input.image.selectFileLabel');
46
- }
47
- getSecondaryText() {
48
- if (this.uploadError) {
49
- return marker('input.image.uploadErrorRetry');
50
- }
51
- if (this.uploadProgress) {
52
- return marker('input.image.uploadProgressCancel');
53
- }
54
- return marker('input.image.dropFileLabel');
55
- }
56
- handleDragFilesOver(dragFilesOver) {
57
- if (!this.showUrlInput) {
58
- this.dragFilesOver = dragFilesOver;
59
- this.cd.markForCheck();
60
- }
61
- }
62
- handleDropFiles(files) {
63
- if (!this.showUrlInput) {
64
- const validFiles = this.filterTypeImage(files);
65
- if (validFiles.length > 0) {
66
- this.resizeAndEmit(validFiles[0]);
67
- }
68
- }
69
- }
70
- handleFileInput(event) {
71
- const inputFiles = Array.from(event.target.files);
72
- const validFiles = this.filterTypeImage(inputFiles);
73
- if (validFiles.length > 0) {
74
- this.resizeAndEmit(validFiles[0]);
75
- }
76
- }
77
- displayUrlInput() {
78
- this.uploadCancel.emit();
79
- this.showUrlInput = true;
80
- }
81
- async downloadUrl(url) {
82
- this.downloadError = false;
83
- const name = url.split('/').pop();
84
- try {
85
- const response = await firstValueFrom(this.http.head(url, { observe: 'response' }));
86
- if (response.headers.get('content-type')?.startsWith('image/') &&
87
- parseInt(response.headers.get('content-length')) <
88
- megabytesToBytes(this.maxSizeMB)) {
89
- this.http.get(url, { responseType: 'blob' }).subscribe({
90
- next: (blob) => {
91
- this.cd.markForCheck();
92
- const file = new File([blob], name);
93
- this.fileChange.emit(file);
94
- },
95
- error: () => {
96
- this.downloadError = true;
97
- this.cd.markForCheck();
98
- this.urlChange.emit(url);
99
- },
100
- });
101
- }
102
- }
103
- catch {
104
- this.downloadError = true;
105
- this.cd.markForCheck();
106
- return;
107
- }
108
- }
109
- handleSecondaryTextClick(event) {
110
- if (this.uploadError) {
111
- this.handleRetry();
112
- }
113
- else if (this.uploadProgress) {
114
- this.handleCancel();
115
- event.preventDefault();
116
- }
117
- }
118
- handleCancel() {
119
- this.uploadCancel.emit();
120
- }
121
- handleRetry() {
122
- switch (this.lastUploadType) {
123
- case 'file':
124
- this.fileChange.emit(this.lastUploadContent);
125
- break;
126
- case 'url':
127
- this.urlChange.emit(this.lastUploadContent);
128
- break;
129
- }
130
- }
131
- handleDelete() {
132
- this.delete.emit();
133
- }
134
- toggleAltTextInput() {
135
- this.showAltTextInput = !this.showAltTextInput;
136
- }
137
- handleAltTextChange(altText) {
138
- this.altTextChange.emit(altText);
139
- }
140
- filterTypeImage(files) {
141
- return files.filter((file) => {
142
- return file.type.startsWith('image/');
143
- });
144
- }
145
- resizeAndEmit(imageToResize) {
146
- const maxSizeBytes = megabytesToBytes(this.maxSizeMB);
147
- downgradeImage(imageToResize, maxSizeBytes).then((resizedImage) => {
148
- const fileToEmit = new File([resizedImage], imageToResize.name);
149
- this.fileChange.emit(fileToEmit);
150
- });
151
- }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageInputComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError", disabled: "disabled" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, providers: [
154
- provideIcons({
155
- iconoirMediaImage,
156
- iconoirFramePlusIn,
157
- iconoirMediaImageXmark,
158
- iconoirBin,
159
- iconoirPlus,
160
- iconoirLink,
161
- }),
162
- provideNgIconsConfig({
163
- size: '1.5rem',
164
- }),
165
- ], ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full object-cover border-2 border-gray-300 rounded-lg h-[172px]\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n type=\"outline\"\n style=\"--gn-ui-button-height: 40px; --gn-ui-button-width: 40px\"\n extraClass=\"absolute right-2 bottom-2 invisible group-hover:visible bg-background\"\n (buttonClick)=\"handleDelete()\"\n [disabled]=\"disabled\"\n >\n <ng-icon name=\"iconoirBin\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-text-input\n *ngIf=\"showAltTextInput\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText ?? ''\"\n (valueChange)=\"handleAltTextChange($event)\"\n extraClass=\"gn-ui-editor-textarea\"\n [disabled]=\"disabled\"\n ></gn-ui-text-input>\n <div class=\"flex flex-row gap-2 mt-2\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"handleDelete()\">\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirBin\"></ng-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n type=\"gray\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"me-1 text-primary\"></ng-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"flex-1 border-2 border-dashed rounded-lg p-6 flex flex-col items-center justify-center gap-4 transition-colors duration-100\"\n [ngClass]=\"{\n 'border-primary-lighter bg-primary-white': dragFilesOver,\n 'border-gray-300': !dragFilesOver,\n 'cursor-pointer hover:border-gray-500':\n !isUploadInProgress && !uploadError && !showUrlInput && !disabled,\n 'cursor-not-allowed': disabled,\n }\"\n [attr.tabindex]=\"\n isUploadInProgress || uploadError || showUrlInput || disabled ? null : 0\n \"\n (keydown.enter)=\"fileInput.click()\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div\n class=\"w-14 h-14 rounded-md bg-gray-50 grid\"\n *ngIf=\"!isUploadInProgress && !uploadError\"\n >\n <ng-icon\n *ngIf=\"!dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirMediaImage\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirFramePlusIn\"\n ></ng-icon>\n </div>\n\n <div\n *ngIf=\"isUploadInProgress && !uploadError\"\n class=\"w-14 h-14 grid items-center justify-center relative\"\n >\n <div class=\"text-gray-100 absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"100\"\n ></mat-progress-spinner>\n </div>\n <div class=\"text-primary absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n </div>\n <span class=\"text-sm text-main font-bold\">{{ uploadProgress }}%</span>\n </div>\n\n <div class=\"w-14 h-14 rounded-md bg-gray-50 grid\" *ngIf=\"uploadError\">\n <ng-icon\n name=\"iconoirMediaImageXmark\"\n class=\"place-self-center text-rose-500\"\n ></ng-icon>\n </div>\n\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n isUploadInProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick($event)\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"\n showUrlInput || isUploadInProgress || uploadError || disabled\n \"\n />\n </label>\n\n <div *ngIf=\"!showUrlInput\" class=\"flex-none mt-2\">\n <gn-ui-button\n (buttonClick)=\"displayUrlInput()\"\n type=\"gray\"\n [disabled]=\"disabled\"\n [extraClass]=\"disabled && 'cursor-not-allowed'\"\n >\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirLink\"></ng-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n\n <gn-ui-url-input\n *ngIf=\"showUrlInput\"\n class=\"mt-3.5\"\n (uploadClick)=\"downloadUrl($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n >\n </gn-ui-url-input>\n </div>\n</ng-template>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showUploadButton"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
166
- }
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageInputComponent, decorators: [{
168
- type: Component,
169
- args: [{ selector: 'gn-ui-image-input', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
170
- CommonModule,
171
- ButtonComponent,
172
- FilesDropDirective,
173
- MatProgressSpinnerModule,
174
- TranslateModule,
175
- UrlInputComponent,
176
- TextInputComponent,
177
- NgIconComponent,
178
- ], providers: [
179
- provideIcons({
180
- iconoirMediaImage,
181
- iconoirFramePlusIn,
182
- iconoirMediaImageXmark,
183
- iconoirBin,
184
- iconoirPlus,
185
- iconoirLink,
186
- }),
187
- provideNgIconsConfig({
188
- size: '1.5rem',
189
- }),
190
- ], template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full object-cover border-2 border-gray-300 rounded-lg h-[172px]\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n type=\"outline\"\n style=\"--gn-ui-button-height: 40px; --gn-ui-button-width: 40px\"\n extraClass=\"absolute right-2 bottom-2 invisible group-hover:visible bg-background\"\n (buttonClick)=\"handleDelete()\"\n [disabled]=\"disabled\"\n >\n <ng-icon name=\"iconoirBin\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-text-input\n *ngIf=\"showAltTextInput\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText ?? ''\"\n (valueChange)=\"handleAltTextChange($event)\"\n extraClass=\"gn-ui-editor-textarea\"\n [disabled]=\"disabled\"\n ></gn-ui-text-input>\n <div class=\"flex flex-row gap-2 mt-2\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"handleDelete()\">\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirBin\"></ng-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n type=\"gray\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"me-1 text-primary\"></ng-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"flex-1 border-2 border-dashed rounded-lg p-6 flex flex-col items-center justify-center gap-4 transition-colors duration-100\"\n [ngClass]=\"{\n 'border-primary-lighter bg-primary-white': dragFilesOver,\n 'border-gray-300': !dragFilesOver,\n 'cursor-pointer hover:border-gray-500':\n !isUploadInProgress && !uploadError && !showUrlInput && !disabled,\n 'cursor-not-allowed': disabled,\n }\"\n [attr.tabindex]=\"\n isUploadInProgress || uploadError || showUrlInput || disabled ? null : 0\n \"\n (keydown.enter)=\"fileInput.click()\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div\n class=\"w-14 h-14 rounded-md bg-gray-50 grid\"\n *ngIf=\"!isUploadInProgress && !uploadError\"\n >\n <ng-icon\n *ngIf=\"!dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirMediaImage\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirFramePlusIn\"\n ></ng-icon>\n </div>\n\n <div\n *ngIf=\"isUploadInProgress && !uploadError\"\n class=\"w-14 h-14 grid items-center justify-center relative\"\n >\n <div class=\"text-gray-100 absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"100\"\n ></mat-progress-spinner>\n </div>\n <div class=\"text-primary absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n </div>\n <span class=\"text-sm text-main font-bold\">{{ uploadProgress }}%</span>\n </div>\n\n <div class=\"w-14 h-14 rounded-md bg-gray-50 grid\" *ngIf=\"uploadError\">\n <ng-icon\n name=\"iconoirMediaImageXmark\"\n class=\"place-self-center text-rose-500\"\n ></ng-icon>\n </div>\n\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n isUploadInProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick($event)\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"\n showUrlInput || isUploadInProgress || uploadError || disabled\n \"\n />\n </label>\n\n <div *ngIf=\"!showUrlInput\" class=\"flex-none mt-2\">\n <gn-ui-button\n (buttonClick)=\"displayUrlInput()\"\n type=\"gray\"\n [disabled]=\"disabled\"\n [extraClass]=\"disabled && 'cursor-not-allowed'\"\n >\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirLink\"></ng-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n\n <gn-ui-url-input\n *ngIf=\"showUrlInput\"\n class=\"mt-3.5\"\n (uploadClick)=\"downloadUrl($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n >\n </gn-ui-url-input>\n </div>\n</ng-template>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"] }]
191
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { maxSizeMB: [{
192
- type: Input
193
- }], previewUrl: [{
194
- type: Input
195
- }], altText: [{
196
- type: Input
197
- }], uploadProgress: [{
198
- type: Input
199
- }], uploadError: [{
200
- type: Input
201
- }], disabled: [{
202
- type: Input
203
- }], fileChange: [{
204
- type: Output
205
- }], urlChange: [{
206
- type: Output
207
- }], uploadCancel: [{
208
- type: Output
209
- }], delete: [{
210
- type: Output
211
- }], altTextChange: [{
212
- type: Output
213
- }] } });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjL2xpYi9pbWFnZS1pbnB1dC9pbWFnZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL2ltYWdlLWlucHV0L2ltYWdlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUN6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQ3ZFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsWUFBWSxFQUNaLG9CQUFv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Z0JOLG1CQUFtQjtrQkE5Qi9CLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLHdCQUF3Qjt3QkFDeEIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsZUFBZTtxQkFDaEIsYUFDVTt3QkFDVCxZQUFZLENBQUM7NEJBQ1gsaUJBQWlCOzRCQUNqQixrQkFBa0I7NEJBQ2xCLHNCQUFzQjs0QkFDdEIsVUFBVTs0QkFDVixXQUFXOzRCQUNYLFdBQVc7eUJBQ1osQ0FBQzt3QkFDRixvQkFBb0IsQ0FBQzs0QkFDbkIsSUFBSSxFQUFFLFFBQVE7eUJBQ2YsQ0FBQztxQkFDSDsrR0FHUSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInXG5pbXBvcnQgeyBkb3duZ3JhZGVJbWFnZSwgbWVnYWJ5dGVzVG9CeXRlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnXG5pbXBvcnQgeyBGaWxlc0Ryb3BEaXJlY3RpdmUgfSBmcm9tICcuLi9maWxlcy1kcm9wL2ZpbGVzLWRyb3AuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB7IFVybElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vdXJsLWlucHV0L3VybC1pbnB1dC5jb21wb25lbnQnXG5pbXBvcnQgeyBUZXh0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0LWlucHV0L3RleHQtaW5wdXQuY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgTmdJY29uQ29tcG9uZW50LFxuICBwcm92aWRlSWNvbnMsXG4gIHByb3ZpZGVOZ0ljb25zQ29uZmlnLFxufSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7XG4gIGljb25vaXJGcmFtZVBsdXNJbixcbiAgaWNvbm9pck1lZGlhSW1hZ2UsXG4gIGljb25vaXJNZWRpYUltYWdlWG1hcmssXG4gIGljb25vaXJCaW4sXG4gIGljb25vaXJQbHVzLFxuICBpY29ub2lyTGluayxcbn0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWltYWdlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtaW5wdXQuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgRmlsZXNEcm9wRGlyZWN0aXZlLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgVXJsSW5wdXRDb21wb25lbnQsXG4gICAgVGV4dElucHV0Q29tcG9uZW50LFxuICAgIE5nSWNvbkNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHtcbiAgICAgIGljb25vaXJNZWRpYUltYWdlLFxuICAgICAgaWNvbm9pckZyYW1lUGx1c0luLFxuICAgICAgaWNvbm9pck1lZGlhSW1hZ2VYbWFyayxcbiAgICAgIGljb25vaXJCaW4sXG4gICAgICBpY29ub2lyUGx1cyxcbiAgICAgIGljb25vaXJMaW5rLFxuICAgIH0pLFxuICAgIHByb3ZpZGVOZ0ljb25zQ29uZmlnKHtcbiAgICAgIHNpemU6ICcxLjVyZW0nLFxuICAgIH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZUlucHV0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgbWF4U2l6ZU1COiBudW1iZXJcbiAgQElucHV0KCkgcHJldmlld1VybD86IHN0cmluZ1xuICBASW5wdXQoKSBhbHRUZXh0Pzogc3RyaW5nXG4gIEBJbnB1dCgpIHVwbG9hZFByb2dyZXNzPzogbnVtYmVyXG4gIEBJbnB1dCgpIHVwbG9hZEVycm9yPzogYm9vbGVhblxuICBASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZVxuICBAT3V0cHV0KCkgZmlsZUNoYW5nZTogRXZlbnRFbWl0dGVyPEZpbGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSB1cmxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSB1cGxvYWRDYW5jZWw6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgZGVsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIGFsdFRleHRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgZHJhZ0ZpbGVzT3ZlciA9IGZhbHNlXG4gIHNob3dVcmxJbnB1dCA9IGZhbHNlXG4gIGRvd25sb2FkRXJyb3IgPSBmYWxzZVxuICBzaG93QWx0VGV4dElucHV0ID0gZmFsc2VcblxuICBsYXN0VXBsb2FkVHlwZT86ICdmaWxlJyB8ICd1cmwnXG4gIGxhc3RVcGxvYWRDb250ZW50Pzogc3RyaW5nIHwgRmlsZVxuXG4gIGdldCBpc1VwbG9hZEluUHJvZ3Jlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBsb2FkUHJvZ3Jlc3MgIT09IHVuZGVmaW5lZFxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBnZXRQcmltYXJ5VGV4dCgpIHtcbiAgICBpZiAodGhpcy51cGxvYWRFcnJvcikge1xuICAgICAgcmV0dXJuIG1hcmtlcignaW5wdXQuaW1hZ2UudXBsb2FkRXJyb3JMYWJlbCcpXG4gICAgfVxuICAgIGlmICh0aGlzLnVwbG9hZFByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gbWFya2VyKCdpbnB1dC5pbWFnZS51cGxvYWRQcm9ncmVzc0xhYmVsJylcbiAgICB9XG4gICAgcmV0dXJuIG1hcmtlcignaW5wdXQuaW1hZ2Uuc2VsZWN0RmlsZUxhYmVsJylcbiAgfVxuXG4gIGdldFNlY29uZGFyeVRleHQoKSB7XG4gICAgaWYgKHRoaXMudXBsb2FkRXJyb3IpIHtcbiAgICAgIHJldHVybiBtYXJrZXIoJ2lucHV0LmltYWdlLnVwbG9hZEVycm9yUmV0cnknKVxuICAgIH1cbiAgICBpZiAodGhpcy51cGxvYWRQcm9ncmVzcykge1xuICAgICAgcmV0dXJuIG1hcmtlcignaW5wdXQuaW1hZ2UudXBsb2FkUHJvZ3Jlc3NDYW5jZWwnKVxuICAgIH1cbiAgICByZXR1cm4gbWFya2VyKCdpbnB1dC5pbWFnZS5kcm9wRmlsZUxhYmVsJylcbiAgfVxuXG4gIGhhbmRsZURyYWdGaWxlc092ZXIoZHJhZ0ZpbGVzT3ZlcjogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5zaG93VXJsSW5wdXQpIHtcbiAgICAgIHRoaXMuZHJhZ0ZpbGVzT3ZlciA9IGRyYWdGaWxlc092ZXJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKClcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEcm9wRmlsZXMoZmlsZXM6IEZpbGVbXSkge1xuICAgIGlmICghdGhpcy5zaG93VXJsSW5wdXQpIHtcbiAgICAgIGNvbnN0IHZhbGlkRmlsZXMgPSB0aGlzLmZpbHRlclR5cGVJbWFnZShmaWxlcylcbiAgICAgIGlmICh2YWxpZEZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5yZXNpemVBbmRFbWl0KHZhbGlkRmlsZXNbMF0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRmlsZUlucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGlucHV0RmlsZXMgPSBBcnJheS5mcm9tKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXMpXG4gICAgY29uc3QgdmFsaWRGaWxlcyA9IHRoaXMuZmlsdGVyVHlwZUltYWdlKGlucHV0RmlsZXMpXG4gICAgaWYgKHZhbGlkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5yZXNpemVBbmRFbWl0KHZhbGlkRmlsZXNbMF0pXG4gICAgfVxuICB9XG5cbiAgZGlzcGxheVVybElucHV0KCkge1xuICAgIHRoaXMudXBsb2FkQ2FuY2VsLmVtaXQoKVxuICAgIHRoaXMuc2hvd1VybElucHV0ID0gdHJ1ZVxuICB9XG5cbiAgYXN5bmMgZG93bmxvYWRVcmwodXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRvd25sb2FkRXJyb3IgPSBmYWxzZVxuICAgIGNvbnN0IG5hbWUgPSB1cmwuc3BsaXQoJy8nKS5wb3AoKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5oZWFkKHVybCwgeyBvYnNlcnZlOiAncmVzcG9uc2UnIH0pXG4gICAgICApXG4gICAgICBpZiAoXG4gICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKT8uc3RhcnRzV2l0aCgnaW1hZ2UvJykgJiZcbiAgICAgICAgcGFyc2VJbnQocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJykpIDxcbiAgICAgICAgICBtZWdhYnl0ZXNUb0J5dGVzKHRoaXMubWF4U2l6ZU1CKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKGJsb2IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIG5hbWUpXG4gICAgICAgICAgICB0aGlzLmZpbGVDaGFuZ2UuZW1pdChmaWxlKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWRFcnJvciA9IHRydWVcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIHRoaXMudXJsQ2hhbmdlLmVtaXQodXJsKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmRvd25sb2FkRXJyb3IgPSB0cnVlXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICBoYW5kbGVTZWNvbmRhcnlUZXh0Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMudXBsb2FkRXJyb3IpIHtcbiAgICAgIHRoaXMuaGFuZGxlUmV0cnkoKVxuICAgIH0gZWxzZSBpZiAodGhpcy51cGxvYWRQcm9ncmVzcykge1xuICAgICAgdGhpcy5oYW5kbGVDYW5jZWwoKVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNhbmNlbCgpIHtcbiAgICB0aGlzLnVwbG9hZENhbmNlbC5lbWl0KClcbiAgfVxuXG4gIGhhbmRsZVJldHJ5KCkge1xuICAgIHN3aXRjaCAodGhpcy5sYXN0VXBsb2FkVHlwZSkge1xuICAgICAgY2FzZSAnZmlsZSc6XG4gICAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHRoaXMubGFzdFVwbG9hZENvbnRlbnQgYXMgRmlsZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3VybCc6XG4gICAgICAgIHRoaXMudXJsQ2hhbmdlLmVtaXQodGhpcy5sYXN0VXBsb2FkQ29udGVudCBhcyBzdHJpbmcpXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRGVsZXRlKCkge1xuICAgIHRoaXMuZGVsZXRlLmVtaXQoKVxuICB9XG5cbiAgdG9nZ2xlQWx0VGV4dElucHV0KCkge1xuICAgIHRoaXMuc2hvd0FsdFRleHRJbnB1dCA9ICF0aGlzLnNob3dBbHRUZXh0SW5wdXRcbiAgfVxuXG4gIGhhbmRsZUFsdFRleHRDaGFuZ2UoYWx0VGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5hbHRUZXh0Q2hhbmdlLmVtaXQoYWx0VGV4dClcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyVHlwZUltYWdlKGZpbGVzOiBGaWxlW10pIHtcbiAgICByZXR1cm4gZmlsZXMuZmlsdGVyKChmaWxlKSA9PiB7XG4gICAgICByZXR1cm4gZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgcmVzaXplQW5kRW1pdChpbWFnZVRvUmVzaXplOiBGaWxlKSB7XG4gICAgY29uc3QgbWF4U2l6ZUJ5dGVzID0gbWVnYWJ5dGVzVG9CeXRlcyh0aGlzLm1heFNpemVNQilcbiAgICBkb3duZ3JhZGVJbWFnZShpbWFnZVRvUmVzaXplLCBtYXhTaXplQnl0ZXMpLnRoZW4oKHJlc2l6ZWRJbWFnZSkgPT4ge1xuICAgICAgY29uc3QgZmlsZVRvRW1pdCA9IG5ldyBGaWxlKFtyZXNpemVkSW1hZ2VdLCBpbWFnZVRvUmVzaXplLm5hbWUpXG4gICAgICB0aGlzLmZpbGVDaGFuZ2UuZW1pdChmaWxlVG9FbWl0KVxuICAgIH0pXG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJwcmV2aWV3VXJsOyB0aGVuIHdpdGhJbWFnZTsgZWxzZSB3aXRob3V0SW1hZ2VcIj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3dpdGhJbWFnZT5cbiAgPGRpdiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgZmxleCBmbGV4LWNvbCBnYXAtMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgZ3JvdXAgcmVsYXRpdmVcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgb2JqZWN0LWNvdmVyIGJvcmRlci0yIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGgtWzE3MnB4XVwiXG4gICAgICAgIFthbHRdPVwiYWx0VGV4dFwiXG4gICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgW3NyY109XCJwcmV2aWV3VXJsXCJcbiAgICAgIC8+XG4gICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgIHR5cGU9XCJvdXRsaW5lXCJcbiAgICAgICAgc3R5bGU9XCItLWduLXVpLWJ1dHRvbi1oZWlnaHQ6IDQwcHg7IC0tZ24tdWktYnV0dG9uLXdpZHRoOiA0MHB4XCJcbiAgICAgICAgZXh0cmFDbGFzcz1cImFic29sdXRlIHJpZ2h0LTIgYm90dG9tLTIgaW52aXNpYmxlIGdyb3VwLWhvdmVyOnZpc2libGUgYmctYmFja2dyb3VuZFwiXG4gICAgICAgIChidXR0b25DbGljayk9XCJoYW5kbGVEZWxldGUoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1pY29uIG5hbWU9XCJpY29ub2lyQmluXCI+PC9uZy1pY29uPlxuICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGduLXVpLXRleHQtaW5wdXRcbiAgICAgICpuZ0lmPVwic2hvd0FsdFRleHRJbnB1dFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lucHV0LmltYWdlLmFsdFRleHRQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3ZhbHVlXT1cImFsdFRleHQgPz8gJydcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUFsdFRleHRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBleHRyYUNsYXNzPVwiZ24tdWktZWRpdG9yLXRleHRhcmVhXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPjwvZ24tdWktdGV4dC1pbnB1dD5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMiBtdC0yXCI+XG4gICAgICA8Z24tdWktYnV0dG9uIHR5cGU9XCJncmF5XCIgKGJ1dHRvbkNsaWNrKT1cImhhbmRsZURlbGV0ZSgpXCI+XG4gICAgICAgIDxuZy1pY29uIGNsYXNzPVwibWUtMSB0ZXh0LXByaW1hcnlcIiBuYW1lPVwiaWNvbm9pckJpblwiPjwvbmctaWNvbj5cbiAgICAgICAge3sgJ2lucHV0LmltYWdlLmRlbGV0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAqbmdJZj1cIiFzaG93QWx0VGV4dElucHV0XCJcbiAgICAgICAgdHlwZT1cImdyYXlcIlxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwidG9nZ2xlQWx0VGV4dElucHV0KClcIlxuICAgICAgPlxuICAgICAgICA8bmctaWNvbiBuYW1lPVwiaWNvbm9pclBsdXNcIiBjbGFzcz1cIm1lLTEgdGV4dC1wcmltYXJ5XCI+PC9uZy1pY29uPlxuICAgICAgICB7eyAnaW5wdXQuaW1hZ2UuZGlzcGxheUFsdFRleHRJbnB1dCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjd2l0aG91dEltYWdlPlxuICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgPGxhYmVsXG4gICAgICBnblVpRmlsZXNEcm9wXG4gICAgICBjbGFzcz1cImZsZXgtMSBib3JkZXItMiBib3JkZXItZGFzaGVkIHJvdW5kZWQtbGcgcC02IGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC00IHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTEwMFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdib3JkZXItcHJpbWFyeS1saWdodGVyIGJnLXByaW1hcnktd2hpdGUnOiBkcmFnRmlsZXNPdmVyLFxuICAgICAgICAnYm9yZGVyLWdyYXktMzAwJzogIWRyYWdGaWxlc092ZXIsXG4gICAgICAgICdjdXJzb3ItcG9pbnRlciBob3Zlcjpib3JkZXItZ3JheS01MDAnOlxuICAgICAgICAgICFpc1VwbG9hZEluUHJvZ3Jlc3MgJiYgIXVwbG9hZEVycm9yICYmICFzaG93VXJsSW5wdXQgJiYgIWRpc2FibGVkLFxuICAgICAgICAnY3Vyc29yLW5vdC1hbGxvd2VkJzogZGlzYWJsZWQsXG4gICAgICB9XCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cIlxuICAgICAgICBpc1VwbG9hZEluUHJvZ3Jlc3MgfHwgdXBsb2FkRXJyb3IgfHwgc2hvd1VybElucHV0IHx8IGRpc2FibGVkID8gbnVsbCA6IDBcbiAgICAgIFwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAoZHJhZ0ZpbGVzT3Zlcik9XCJoYW5kbGVEcmFnRmlsZXNPdmVyKCRldmVudClcIlxuICAgICAgKGRyb3BGaWxlcyk9XCJoYW5kbGVEcm9wRmlsZXMoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInctMTQgaC0xNCByb3VuZGVkLW1kIGJnLWdyYXktNTAgZ3JpZFwiXG4gICAgICAgICpuZ0lmPVwiIWlzVXBsb2FkSW5Qcm9ncmVzcyAmJiAhdXBsb2FkRXJyb3JcIlxuICAgICAgPlxuICAgICAgICA8bmctaWNvblxuICAgICAgICAgICpuZ0lmPVwiIWRyYWdGaWxlc092ZXJcIlxuICAgICAgICAgIGNsYXNzPVwicGxhY2Utc2VsZi1jZW50ZXIgdGV4dC1wcmltYXJ5XCJcbiAgICAgICAgICBuYW1lPVwiaWNvbm9pck1lZGlhSW1hZ2VcIlxuICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgICA8bmctaWNvblxuICAgICAgICAgICpuZ0lmPVwiZHJhZ0ZpbGVzT3ZlclwiXG4gICAgICAgICAgY2xhc3M9XCJwbGFjZS1zZWxmLWNlbnRlciB0ZXh0LXByaW1hcnlcIlxuICAgICAgICAgIG5hbWU9XCJpY29ub2lyRnJhbWVQbHVzSW5cIlxuICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpc1VwbG9hZEluUHJvZ3Jlc3MgJiYgIXVwbG9hZEVycm9yXCJcbiAgICAgICAgY2xhc3M9XCJ3LTE0IGgtMTQgZ3JpZCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcmVsYXRpdmVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTEwMCBhYnNvbHV0ZVwiPlxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgICAgICAgY2xhc3M9XCJwbGFjZS1zZWxmLWNlbnRlclwiXG4gICAgICAgICAgICBbZGlhbWV0ZXJdPVwiNTZcIlxuICAgICAgICAgICAgbW9kZT1cImRldGVybWluYXRlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCIxMDBcIlxuICAgICAgICAgID48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSBhYnNvbHV0ZVwiPlxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgICAgICAgY2xhc3M9XCJwbGFjZS1zZWxmLWNlbnRlclwiXG4gICAgICAgICAgICBbZGlhbWV0ZXJdPVwiNTZcIlxuICAgICAgICAgICAgbW9kZT1cImRldGVybWluYXRlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ1cGxvYWRQcm9ncmVzc1wiXG4gICAgICAgICAgPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1tYWluIGZvbnQtYm9sZFwiPnt7IHVwbG9hZFByb2dyZXNzIH19JTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidy0xNCBoLTE0IHJvdW5kZWQtbWQgYmctZ3JheS01MCBncmlkXCIgKm5nSWY9XCJ1cGxvYWRFcnJvclwiPlxuICAgICAgICA8bmctaWNvblxuICAgICAgICAgIG5hbWU9XCJpY29ub2lyTWVkaWFJbWFnZVhtYXJrXCJcbiAgICAgICAgICBjbGFzcz1cInBsYWNlLXNlbGYtY2VudGVyIHRleHQtcm9zZS01MDBcIlxuICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICA8cCBjbGFzcz1cImZvbnQtbWVkaXVtXCI+e3sgZ2V0UHJpbWFyeVRleHQoKSB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPHBcbiAgICAgICAgICBjbGFzcz1cInRleHQtc21cIlxuICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgIGlzVXBsb2FkSW5Qcm9ncmVzcyB8fCB1cGxvYWRFcnJvclxuICAgICAgICAgICAgICA/ICdmb250LWJvbGQgdGV4dC1ibHVlLTUwMCBjdXJzb3ItcG9pbnRlcidcbiAgICAgICAgICAgICAgOiAnZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVTZWNvbmRhcnlUZXh0Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRTZWNvbmRhcnlUZXh0KCkgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIGNsYXNzPVwiaGlkZGVuXCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVGaWxlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICBzaG93VXJsSW5wdXQgfHwgaXNVcGxvYWRJblByb2dyZXNzIHx8IHVwbG9hZEVycm9yIHx8IGRpc2FibGVkXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIXNob3dVcmxJbnB1dFwiIGNsYXNzPVwiZmxleC1ub25lIG10LTJcIj5cbiAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgKGJ1dHRvbkNsaWNrKT1cImRpc3BsYXlVcmxJbnB1dCgpXCJcbiAgICAgICAgdHlwZT1cImdyYXlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbZXh0cmFDbGFzc109XCJkaXNhYmxlZCAmJiAnY3Vyc29yLW5vdC1hbGxvd2VkJ1wiXG4gICAgICA+XG4gICAgICAgIDxuZy1pY29uIGNsYXNzPVwibWUtMSB0ZXh0LXByaW1hcnlcIiBuYW1lPVwiaWNvbm9pckxpbmtcIj48L25nLWljb24+XG4gICAgICAgIHt7ICdpbnB1dC5pbWFnZS5kaXNwbGF5VXJsSW5wdXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2duLXVpLWJ1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxnbi11aS11cmwtaW5wdXRcbiAgICAgICpuZ0lmPVwic2hvd1VybElucHV0XCJcbiAgICAgIGNsYXNzPVwibXQtMy41XCJcbiAgICAgICh1cGxvYWRDbGljayk9XCJkb3dubG9hZFVybCgkZXZlbnQpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1VwbG9hZEluUHJvZ3Jlc3MgfHwgZGlzYWJsZWRcIlxuICAgID5cbiAgICA8L2duLXVpLXVybC1pbnB1dD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-input.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/image-input/image-input.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAEL,iBAAiB,EAEjB,YAAY,EAGb,MAAM,eAAe,CAAA;;AAwBtB,qBA8Ba,mBAAmB;IA0B5B,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,EAAE;IA1BH,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAQ;IACzB,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IACnD,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IACpD,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IACrD,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAqB;IAC/C,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,CAAqB;IAElE,aAAa,UAAQ;IACrB,YAAY,UAAQ;IACpB,aAAa,UAAQ;IACrB,gBAAgB,UAAQ;IAExB,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEjC,IAAI,kBAAkB,YAErB;gBAGS,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,iBAAiB;IAG/B,cAAc;IAUd,gBAAgB;IAUhB,mBAAmB,CAAC,aAAa,EAAE,OAAO;IAO1C,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE;IAS7B,eAAe,CAAC,KAAK,EAAE,KAAK;IAQ5B,eAAe;IAKT,WAAW,CAAC,GAAG,EAAE,MAAM;IAiC7B,wBAAwB,CAAC,KAAK,EAAE,KAAK;IASrC,YAAY;IAIZ,WAAW;IAWX,YAAY;IAIZ,kBAAkB;IAIlB,mBAAmB,CAAC,OAAO,EAAE,MAAM;IAInC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;yCA1JV,mBAAmB;2CAAnB,mBAAmB;CAiK/B"}
@@ -1,67 +0,0 @@
1
- import { UpdateFrequency } from '../../../../../../../libs/common/domain/src/lib/model/record'
2
-
3
- export function getUpdateFrequencyFromFrequencyCode(
4
- frequencyCode: string
5
- ): UpdateFrequency {
6
- switch (frequencyCode) {
7
- case 'asNeeded':
8
- return 'asNeeded'
9
- case 'unknown':
10
- return 'unknown'
11
- case 'irregular':
12
- return 'irregular'
13
- case 'notPlanned':
14
- return 'notPlanned'
15
- case 'continual':
16
- return 'continual'
17
- case 'periodic':
18
- return 'periodic'
19
- case 'daily':
20
- return {
21
- updatedTimes: 1,
22
- per: 'day',
23
- }
24
- case 'weekly':
25
- return {
26
- updatedTimes: 1,
27
- per: 'week',
28
- }
29
- case 'fortnightly':
30
- return {
31
- updatedTimes: 0.5,
32
- per: 'week',
33
- }
34
- case 'semimonthly':
35
- return {
36
- updatedTimes: 2,
37
- per: 'month',
38
- }
39
- case 'monthly':
40
- return {
41
- updatedTimes: 1,
42
- per: 'month',
43
- }
44
- case 'quarterly':
45
- return {
46
- updatedTimes: 4,
47
- per: 'year',
48
- }
49
- case 'biannually':
50
- return {
51
- updatedTimes: 2,
52
- per: 'year',
53
- }
54
- case 'annually':
55
- return {
56
- updatedTimes: 1,
57
- per: 'year',
58
- }
59
- case 'biennially':
60
- return {
61
- updatedTimes: 0.5,
62
- per: 'year',
63
- }
64
- default:
65
- return null
66
- }
67
- }