@colijnit/relation 12.1.1

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 (188) hide show
  1. package/README.md +24 -0
  2. package/bundles/colijnit-relation.umd.js +4832 -0
  3. package/bundles/colijnit-relation.umd.js.map +1 -0
  4. package/colijnit-relation.d.ts +21 -0
  5. package/colijnit-relation.metadata.json +1 -0
  6. package/esm2015/colijnit-relation.js +22 -0
  7. package/esm2015/lib/component/base/relation-base.component.js +52 -0
  8. package/esm2015/lib/component/base/relation-loader.component.js +50 -0
  9. package/esm2015/lib/component/base/relation-screen-config-base.component.js +16 -0
  10. package/esm2015/lib/component/relation/relation.component.js +100 -0
  11. package/esm2015/lib/component/relation/relation.module.js +58 -0
  12. package/esm2015/lib/component/relation-address/relation-address.component.js +166 -0
  13. package/esm2015/lib/component/relation-address/relation-address.module.js +24 -0
  14. package/esm2015/lib/component/relation-address-tile/relation-address-tile.component.js +72 -0
  15. package/esm2015/lib/component/relation-address-tile/relation-address-tile.module.js +25 -0
  16. package/esm2015/lib/component/relation-addresses/relation-addresses.component.js +158 -0
  17. package/esm2015/lib/component/relation-addresses/relation-addresses.module.js +31 -0
  18. package/esm2015/lib/component/relation-avatar/relation-avatar.component.js +222 -0
  19. package/esm2015/lib/component/relation-avatar/relation-avatar.module.js +22 -0
  20. package/esm2015/lib/component/relation-contact-options/relation-contact-option-list.component.js +101 -0
  21. package/esm2015/lib/component/relation-contact-options/relation-contact-option.component.js +100 -0
  22. package/esm2015/lib/component/relation-contact-options/relation-contact-options-other-types-popup.component.js +44 -0
  23. package/esm2015/lib/component/relation-contact-options/relation-contact-options.component.js +154 -0
  24. package/esm2015/lib/component/relation-contact-options/relation-contact-options.module.js +34 -0
  25. package/esm2015/lib/component/relation-first-name/relation-first-name.component.js +25 -0
  26. package/esm2015/lib/component/relation-first-name/relation-first-name.module.js +24 -0
  27. package/esm2015/lib/component/relation-gender/relation-gender.component.js +45 -0
  28. package/esm2015/lib/component/relation-gender/relation-gender.module.js +23 -0
  29. package/esm2015/lib/component/relation-initials/relation-initials.component.js +24 -0
  30. package/esm2015/lib/component/relation-initials/relation-initials.module.js +24 -0
  31. package/esm2015/lib/component/relation-language/relation-language.component.js +56 -0
  32. package/esm2015/lib/component/relation-language/relation-language.module.js +24 -0
  33. package/esm2015/lib/component/relation-last-name/relation-last-name.component.js +23 -0
  34. package/esm2015/lib/component/relation-last-name/relation-last-name.module.js +24 -0
  35. package/esm2015/lib/component/relation-preferences/relation-preferences.component.js +69 -0
  36. package/esm2015/lib/component/relation-preferences/relation-preferences.module.js +23 -0
  37. package/esm2015/lib/component/relation-prefix-name/relation-prefix-name.component.js +24 -0
  38. package/esm2015/lib/component/relation-prefix-name/relation-prefix-name.module.js +24 -0
  39. package/esm2015/lib/component/relation-title/relation-title.component.js +56 -0
  40. package/esm2015/lib/component/relation-title/relation-title.module.js +24 -0
  41. package/esm2015/lib/enum/icon.enum.js +16 -0
  42. package/esm2015/lib/enum/language-code.enum.js +8 -0
  43. package/esm2015/lib/enum/relman-cfg-name.enum.js +862 -0
  44. package/esm2015/lib/enum/relman-contact-options-cfg-names.js +2 -0
  45. package/esm2015/lib/enum/relman-sub-category.enum.js +13 -0
  46. package/esm2015/lib/interface/relation-address-cfg-names.interface.js +2 -0
  47. package/esm2015/lib/model/icon-svg.js +15 -0
  48. package/esm2015/lib/model/relation-settings-options.js +7 -0
  49. package/esm2015/lib/model/relation-settings.js +9 -0
  50. package/esm2015/lib/relation-version.js +10 -0
  51. package/esm2015/lib/res/dictionary/dictionaries.js +9 -0
  52. package/esm2015/lib/service/dictionary.service.js +68 -0
  53. package/esm2015/lib/service/error.service.js +75 -0
  54. package/esm2015/lib/service/icon-cache.service.js +51 -0
  55. package/esm2015/lib/service/relation-base.service.js +268 -0
  56. package/esm2015/lib/service/relation-connector-adapter.service.js +401 -0
  57. package/esm2015/lib/service/relation-connector.service.js +155 -0
  58. package/esm2015/lib/service/relation-event.service.js +16 -0
  59. package/esm2015/lib/service/relation-screen-configuration.service.js +51 -0
  60. package/esm2015/lib/service/relation-settings.service.js +65 -0
  61. package/esm2015/lib/service/relation.service.js +42 -0
  62. package/esm2015/lib/translation/relation-dictionary.service.js +77 -0
  63. package/esm2015/lib/translation/relation-localize.pipe.js +26 -0
  64. package/esm2015/lib/translation/relation-translation.module.js +29 -0
  65. package/esm2015/lib/translation/relation-translation.service.js +17 -0
  66. package/esm2015/public_api.js +33 -0
  67. package/fesm2015/colijnit-relation.js +3980 -0
  68. package/fesm2015/colijnit-relation.js.map +1 -0
  69. package/lib/component/base/relation-base.component.d.ts +24 -0
  70. package/lib/component/base/relation-loader.component.d.ts +12 -0
  71. package/lib/component/base/relation-screen-config-base.component.d.ts +14 -0
  72. package/lib/component/relation/relation.component.d.ts +21 -0
  73. package/lib/component/relation/relation.module.d.ts +2 -0
  74. package/lib/component/relation/style/_layout.scss +46 -0
  75. package/lib/component/relation/style/_material-definition.scss +15 -0
  76. package/lib/component/relation/style/_theme.scss +12 -0
  77. package/lib/component/relation/style/material.scss +4 -0
  78. package/lib/component/relation-address/relation-address.component.d.ts +35 -0
  79. package/lib/component/relation-address/relation-address.module.d.ts +2 -0
  80. package/lib/component/relation-address/style/_layout.scss +16 -0
  81. package/lib/component/relation-address/style/_material-definition.scss +5 -0
  82. package/lib/component/relation-address/style/_theme.scss +5 -0
  83. package/lib/component/relation-address/style/material.scss +4 -0
  84. package/lib/component/relation-address-tile/relation-address-tile.component.d.ts +19 -0
  85. package/lib/component/relation-address-tile/relation-address-tile.module.d.ts +2 -0
  86. package/lib/component/relation-address-tile/style/_layout.scss +46 -0
  87. package/lib/component/relation-address-tile/style/_material-definition.scss +18 -0
  88. package/lib/component/relation-address-tile/style/_theme.scss +19 -0
  89. package/lib/component/relation-address-tile/style/material.scss +4 -0
  90. package/lib/component/relation-addresses/relation-addresses.component.d.ts +31 -0
  91. package/lib/component/relation-addresses/relation-addresses.module.d.ts +2 -0
  92. package/lib/component/relation-addresses/style/_layout.scss +26 -0
  93. package/lib/component/relation-addresses/style/_material-definition.scss +12 -0
  94. package/lib/component/relation-addresses/style/_theme.scss +20 -0
  95. package/lib/component/relation-addresses/style/material.scss +4 -0
  96. package/lib/component/relation-avatar/relation-avatar.component.d.ts +47 -0
  97. package/lib/component/relation-avatar/relation-avatar.module.d.ts +2 -0
  98. package/lib/component/relation-avatar/style/_layout.scss +44 -0
  99. package/lib/component/relation-avatar/style/_material-definition.scss +4 -0
  100. package/lib/component/relation-avatar/style/_theme.scss +9 -0
  101. package/lib/component/relation-avatar/style/material.scss +4 -0
  102. package/lib/component/relation-contact-options/relation-contact-option-list.component.d.ts +22 -0
  103. package/lib/component/relation-contact-options/relation-contact-option.component.d.ts +30 -0
  104. package/lib/component/relation-contact-options/relation-contact-options-other-types-popup.component.d.ts +22 -0
  105. package/lib/component/relation-contact-options/relation-contact-options.component.d.ts +40 -0
  106. package/lib/component/relation-contact-options/relation-contact-options.module.d.ts +2 -0
  107. package/lib/component/relation-contact-options/style/_layout.scss +113 -0
  108. package/lib/component/relation-contact-options/style/_material-definition.scss +35 -0
  109. package/lib/component/relation-contact-options/style/_theme.scss +48 -0
  110. package/lib/component/relation-contact-options/style/material.scss +4 -0
  111. package/lib/component/relation-first-name/relation-first-name.component.d.ts +4 -0
  112. package/lib/component/relation-first-name/relation-first-name.module.d.ts +2 -0
  113. package/lib/component/relation-first-name/style/_layout.scss +9 -0
  114. package/lib/component/relation-first-name/style/_material-definition.scss +3 -0
  115. package/lib/component/relation-first-name/style/_theme.scss +5 -0
  116. package/lib/component/relation-first-name/style/material.scss +4 -0
  117. package/lib/component/relation-gender/relation-gender.component.d.ts +7 -0
  118. package/lib/component/relation-gender/relation-gender.module.d.ts +2 -0
  119. package/lib/component/relation-gender/style/_layout.scss +8 -0
  120. package/lib/component/relation-gender/style/_material-definition.scss +4 -0
  121. package/lib/component/relation-gender/style/_theme.scss +5 -0
  122. package/lib/component/relation-gender/style/material.scss +4 -0
  123. package/lib/component/relation-initials/relation-initials.component.d.ts +4 -0
  124. package/lib/component/relation-initials/relation-initials.module.d.ts +2 -0
  125. package/lib/component/relation-initials/style/_layout.scss +9 -0
  126. package/lib/component/relation-initials/style/_material-definition.scss +3 -0
  127. package/lib/component/relation-initials/style/_theme.scss +5 -0
  128. package/lib/component/relation-initials/style/material.scss +4 -0
  129. package/lib/component/relation-language/relation-language.component.d.ts +12 -0
  130. package/lib/component/relation-language/relation-language.module.d.ts +2 -0
  131. package/lib/component/relation-language/style/_layout.scss +9 -0
  132. package/lib/component/relation-language/style/_material-definition.scss +3 -0
  133. package/lib/component/relation-language/style/_theme.scss +5 -0
  134. package/lib/component/relation-language/style/material.scss +4 -0
  135. package/lib/component/relation-last-name/relation-last-name.component.d.ts +4 -0
  136. package/lib/component/relation-last-name/relation-last-name.module.d.ts +2 -0
  137. package/lib/component/relation-last-name/style/_layout.scss +9 -0
  138. package/lib/component/relation-last-name/style/_material-definition.scss +3 -0
  139. package/lib/component/relation-last-name/style/_theme.scss +5 -0
  140. package/lib/component/relation-last-name/style/material.scss +4 -0
  141. package/lib/component/relation-preferences/relation-preferences.component.d.ts +13 -0
  142. package/lib/component/relation-preferences/relation-preferences.module.d.ts +2 -0
  143. package/lib/component/relation-preferences/style/_layout.scss +16 -0
  144. package/lib/component/relation-preferences/style/_material-definition.scss +8 -0
  145. package/lib/component/relation-preferences/style/_theme.scss +5 -0
  146. package/lib/component/relation-preferences/style/material.scss +4 -0
  147. package/lib/component/relation-prefix-name/relation-prefix-name.component.d.ts +4 -0
  148. package/lib/component/relation-prefix-name/relation-prefix-name.module.d.ts +2 -0
  149. package/lib/component/relation-prefix-name/style/_layout.scss +9 -0
  150. package/lib/component/relation-prefix-name/style/_material-definition.scss +3 -0
  151. package/lib/component/relation-prefix-name/style/_theme.scss +5 -0
  152. package/lib/component/relation-prefix-name/style/material.scss +4 -0
  153. package/lib/component/relation-title/relation-title.component.d.ts +13 -0
  154. package/lib/component/relation-title/relation-title.module.d.ts +2 -0
  155. package/lib/component/relation-title/style/_layout.scss +9 -0
  156. package/lib/component/relation-title/style/_material-definition.scss +3 -0
  157. package/lib/component/relation-title/style/_theme.scss +5 -0
  158. package/lib/component/relation-title/style/material.scss +4 -0
  159. package/lib/enum/icon.enum.d.ts +14 -0
  160. package/lib/enum/language-code.enum.d.ts +6 -0
  161. package/lib/enum/relman-cfg-name.enum.d.ts +857 -0
  162. package/lib/enum/relman-contact-options-cfg-names.d.ts +6 -0
  163. package/lib/enum/relman-sub-category.enum.d.ts +10 -0
  164. package/lib/interface/relation-address-cfg-names.interface.d.ts +8 -0
  165. package/lib/model/icon-svg.d.ts +4 -0
  166. package/lib/model/relation-settings-options.d.ts +4 -0
  167. package/lib/model/relation-settings.d.ts +5 -0
  168. package/lib/relation-version.d.ts +6 -0
  169. package/lib/res/dictionary/dictionaries.d.ts +17184 -0
  170. package/lib/service/dictionary.service.d.ts +18 -0
  171. package/lib/service/error.service.d.ts +11 -0
  172. package/lib/service/icon-cache.service.d.ts +18 -0
  173. package/lib/service/relation-base.service.d.ts +64 -0
  174. package/lib/service/relation-connector-adapter.service.d.ts +66 -0
  175. package/lib/service/relation-connector.service.d.ts +51 -0
  176. package/lib/service/relation-event.service.d.ts +6 -0
  177. package/lib/service/relation-screen-configuration.service.d.ts +13 -0
  178. package/lib/service/relation-settings.service.d.ts +16 -0
  179. package/lib/service/relation.service.d.ts +10 -0
  180. package/lib/style/_mixin.scss +15 -0
  181. package/lib/style/_variables.scss +15 -0
  182. package/lib/style/relation-globals.scss +7 -0
  183. package/lib/translation/relation-dictionary.service.d.ts +19 -0
  184. package/lib/translation/relation-localize.pipe.d.ts +7 -0
  185. package/lib/translation/relation-translation.module.d.ts +4 -0
  186. package/lib/translation/relation-translation.service.d.ts +6 -0
  187. package/package.json +30 -0
  188. package/public_api.d.ts +32 -0
@@ -0,0 +1,222 @@
1
+ import { __awaiter } from "tslib";
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, HostListener, Input, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { RelationConnectorService } from '../../service/relation-connector.service';
4
+ import { ColorSequenceService, CoreDialogService } from '@colijnit/corecomponents_v12';
5
+ import { FileUtils } from '@colijnit/mainapi/build/utils/file-utils';
6
+ import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
7
+ import { CoDocumentImageDisplayKind } from '@colijnit/mainapi/build/enum/co-document-image-display-kind.enum';
8
+ import { IconCacheService } from '../../service/icon-cache.service';
9
+ import { Icon } from '../../enum/icon.enum';
10
+ export class RelationAvatarComponent {
11
+ constructor(iconCacheService, _relationConnectorService, _colorSequenceService, _changeDetector, _dialogService) {
12
+ this.iconCacheService = iconCacheService;
13
+ this._relationConnectorService = _relationConnectorService;
14
+ this._colorSequenceService = _colorSequenceService;
15
+ this._changeDetector = _changeDetector;
16
+ this._dialogService = _dialogService;
17
+ this.icons = Icon;
18
+ this.canChangeAvatar = false;
19
+ this.maxUploadSizeInMb = 3;
20
+ this.maxAvatarSize = 200;
21
+ }
22
+ set image(value) {
23
+ this._image = value;
24
+ this._setImageForAvatar();
25
+ }
26
+ get image() {
27
+ return this._image;
28
+ }
29
+ set relationId(value) {
30
+ if (this.relationId !== value) {
31
+ this._image = undefined;
32
+ this._relation = undefined;
33
+ this._relationId = value;
34
+ this._setImageForAvatar();
35
+ }
36
+ }
37
+ get relationId() {
38
+ return this._relationId;
39
+ }
40
+ set relation(value) {
41
+ if (!this._relation || (this._relation && value && this._relation.relationId !== value.relationId)) {
42
+ this._image = undefined;
43
+ this._relationId = undefined;
44
+ this._relation = value;
45
+ this._setImageForAvatar();
46
+ }
47
+ }
48
+ get relation() {
49
+ return this._relation;
50
+ }
51
+ showClass() {
52
+ return true;
53
+ }
54
+ onClick() {
55
+ this.uploadTheAvatar();
56
+ }
57
+ set initials(value) {
58
+ this._initials = value;
59
+ this._setBackgroundColor();
60
+ }
61
+ get initials() {
62
+ return this._initials;
63
+ }
64
+ ngOnInit() {
65
+ this._setImageForAvatar();
66
+ }
67
+ ngOnDestroy() {
68
+ this.input = undefined;
69
+ }
70
+ uploadTheAvatar() {
71
+ if (this.canChangeAvatar && this.input) {
72
+ this.input.nativeElement.click();
73
+ }
74
+ }
75
+ // Take File from event and save it internally as a CoDocument.
76
+ onFileChangeEvent(event) {
77
+ if (event && event.target && event.target.files && event.target.files.length > 0) {
78
+ const fileToUpload = event.target.files[0];
79
+ if (!FileUtils.CheckMaxUploadSize(fileToUpload)) {
80
+ this._dialogService.showWarning(StringUtils.Format("File is to large to upload. Maximum file size is {0} Mb", [this.maxUploadSizeInMb]));
81
+ }
82
+ else if (!FileUtils.IsImageFile(fileToUpload)) {
83
+ this._dialogService.showWarning("Please select an image");
84
+ }
85
+ else {
86
+ this._setFileAsAvatarToCurrentRelation(fileToUpload);
87
+ }
88
+ if (this.input && this.input.nativeElement) {
89
+ this.input.nativeElement.value = null;
90
+ }
91
+ }
92
+ }
93
+ _setFileAsAvatarToCurrentRelation(file) {
94
+ return __awaiter(this, void 0, void 0, function* () {
95
+ const document = yield FileUtils.ReadFileAsNewCoDocument(file, true, this.maxAvatarSize);
96
+ yield this.setDocProperties(document);
97
+ });
98
+ }
99
+ setDocProperties(document) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ document.thumbnailBody = document.documentBody;
102
+ document.creationDate = new Date();
103
+ document.creationUser = this._relationConnectorService.loginResponse.userName;
104
+ document.imageDisplayKind = CoDocumentImageDisplayKind.Avatar;
105
+ if (this._relation) {
106
+ this._relation.avatarImage = document;
107
+ }
108
+ this.imageSrc = document.thumbnailBodyAsDataUri;
109
+ this._changeDetector.detectChanges();
110
+ });
111
+ }
112
+ _setImageForAvatar() {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ if (this.image && this.image.documentId) {
115
+ if (!(yield this._getImageContent(this.image.documentId))) {
116
+ this._setImageFromRelation();
117
+ }
118
+ }
119
+ else {
120
+ this._setImageFromRelation();
121
+ }
122
+ this._changeDetector.detectChanges();
123
+ });
124
+ }
125
+ _setImageFromRelation() {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ if (this.relation) {
128
+ if (this.relation.avatarImage && this.relation.avatarImage.documentId) {
129
+ this._image = this.relation.avatarImage;
130
+ if (!(yield this._getImageContent(this.image.documentId))) {
131
+ this._setRelationInitials();
132
+ }
133
+ }
134
+ else {
135
+ this._setRelationInitials();
136
+ }
137
+ }
138
+ else if (this.relationId) {
139
+ this._relationConnectorService.getRelationSmallObject(this.relationId).then((relationSmallObject) => __awaiter(this, void 0, void 0, function* () {
140
+ if (relationSmallObject) {
141
+ if (relationSmallObject.avatarImage && relationSmallObject.avatarImage.documentId) {
142
+ this._image = relationSmallObject.avatarImage;
143
+ if (!(yield this._getImageContent(this.image.documentId))) {
144
+ this._setRelationInitials();
145
+ }
146
+ }
147
+ else {
148
+ this._setRelationInitials();
149
+ }
150
+ }
151
+ }));
152
+ }
153
+ });
154
+ }
155
+ _setRelationInitials() {
156
+ if (this.relation) {
157
+ this.initials = this.relation.displayInitials;
158
+ }
159
+ }
160
+ _getImageContent(docId) {
161
+ return __awaiter(this, void 0, void 0, function* () {
162
+ const content = yield this._relationConnectorService.getDocumentContent(docId);
163
+ if (content && this._image) {
164
+ this._image.thumbnailBody = content;
165
+ this.imageSrc = this.image.thumbnailBodyAsDataUri;
166
+ this._changeDetector.detectChanges();
167
+ return true;
168
+ }
169
+ else {
170
+ return false;
171
+ }
172
+ });
173
+ }
174
+ _setBackgroundColor() {
175
+ this.imageSrc = "";
176
+ if (this.relation) {
177
+ this.backgroundColor = this._colorSequenceService.getRandomColor(this.relation.relationId);
178
+ }
179
+ this._changeDetector.detectChanges();
180
+ }
181
+ }
182
+ RelationAvatarComponent.decorators = [
183
+ { type: Component, args: [{
184
+ selector: 'co-relation-avatar',
185
+ template: `
186
+ <co-image [source]="imageSrc" *ngIf="imageSrc; else showInitials"></co-image>
187
+ <ng-template #showInitials>
188
+ <svg viewBox="0 0 30 30">
189
+ <text x="50%" y="50%" dominant-baseline="central" text-anchor="middle">{{ initials }}</text>
190
+ </svg>
191
+ </ng-template>
192
+ <ng-container *ngIf="canChangeAvatar">
193
+ <div class="relation-avatar-pencil-wrapper">
194
+ <co-icon [iconData]="iconCacheService.getIcon(icons.PencilRoundOpen)" class="pencil-icon"></co-icon>
195
+ </div>
196
+ <input #uploadAvatar class="value-text" type="file" (change)="onFileChangeEvent($event)" accept=".jpg, .png, .jpeg">
197
+ </ng-container>
198
+ `,
199
+ changeDetection: ChangeDetectionStrategy.OnPush,
200
+ encapsulation: ViewEncapsulation.None
201
+ },] }
202
+ ];
203
+ RelationAvatarComponent.ctorParameters = () => [
204
+ { type: IconCacheService },
205
+ { type: RelationConnectorService },
206
+ { type: ColorSequenceService },
207
+ { type: ChangeDetectorRef },
208
+ { type: CoreDialogService }
209
+ ];
210
+ RelationAvatarComponent.propDecorators = {
211
+ input: [{ type: ViewChild, args: ["uploadAvatar",] }],
212
+ image: [{ type: Input }],
213
+ relationId: [{ type: Input }],
214
+ relation: [{ type: Input }],
215
+ canChangeAvatar: [{ type: Input }, { type: HostBinding, args: ["class.can-change",] }],
216
+ maxUploadSizeInMb: [{ type: Input }],
217
+ maxAvatarSize: [{ type: Input }],
218
+ showClass: [{ type: HostBinding, args: ['class.co-relation-avatar',] }],
219
+ backgroundColor: [{ type: HostBinding, args: ["style.background-color",] }],
220
+ onClick: [{ type: HostListener, args: ["click",] }]
221
+ };
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlbGF0aW9uL3NyYy9saWIvY29tcG9uZW50L3JlbGF0aW9uLWF2YXRhci9yZWxhdGlvbi1hdmF0YXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0csU0FBUyxFQUNqQixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHckYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUM3RSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQztBQUM1RyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFxQjFDLE1BQU0sT0FBTyx1QkFBdUI7SUFrRmxDLFlBQ1MsZ0JBQWtDLEVBQ2pDLHlCQUFtRCxFQUNuRCxxQkFBMkMsRUFDM0MsZUFBa0MsRUFDbEMsY0FBaUM7UUFKbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTBCO1FBQ25ELDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0Msb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQXRGM0IsVUFB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YyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDNUY7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7OztZQTdORixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7O0dBYVQ7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFyQk8sZ0JBQWdCO1lBUGhCLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFWMUIsaUJBQWlCO1lBVVcsaUJBQWlCOzs7b0JBK0I1QyxTQUFTLFNBQUMsY0FBYztvQkFHeEIsS0FBSzt5QkFVTCxLQUFLO3VCQWNMLEtBQUs7OEJBY0wsS0FBSyxZQUFJLFdBQVcsU0FBQyxrQkFBa0I7Z0NBR3ZDLEtBQUs7NEJBR0wsS0FBSzt3QkFHTCxXQUFXLFNBQUMsMEJBQTBCOzhCQU90QyxXQUFXLFNBQUMsd0JBQXdCO3NCQUdwQyxZQUFZLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCwgT25EZXN0cm95LFxyXG4gIE9uSW5pdCwgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29Eb2N1bWVudH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnQnO1xyXG5pbXBvcnQge1JlbGF0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9yZWxhdGlvbi1jb25uZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7Q29sb3JTZXF1ZW5jZVNlcnZpY2UsIENvcmVEaWFsb2dTZXJ2aWNlfSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcclxuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZSc7XHJcbmltcG9ydCB7UmVsYXRpb25TbWFsbE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXNtYWxsLW9iamVjdC5ibyc7XHJcbmltcG9ydCB7RmlsZVV0aWxzfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC91dGlscy9maWxlLXV0aWxzJztcclxuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvdXRpbHMvc3RyaW5nLXV0aWxzJztcclxuaW1wb3J0IHtDb0RvY3VtZW50SW1hZ2VEaXNwbGF5S2luZH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9jby1kb2N1bWVudC1pbWFnZS1kaXNwbGF5LWtpbmQuZW51bSc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tcmVsYXRpb24tYXZhdGFyJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8Y28taW1hZ2UgW3NvdXJjZV09XCJpbWFnZVNyY1wiICpuZ0lmPVwiaW1hZ2VTcmM7IGVsc2Ugc2hvd0luaXRpYWxzXCI+PC9jby1pbWFnZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzaG93SW5pdGlhbHM+XHJcbiAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMzAgMzBcIj5cclxuICAgICAgICAgICAgICA8dGV4dCB4PVwiNTAlXCIgeT1cIjUwJVwiIGRvbWluYW50LWJhc2VsaW5lPVwiY2VudHJhbFwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCI+e3sgaW5pdGlhbHMgfX08L3RleHQ+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbkNoYW5nZUF2YXRhclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aW9uLWF2YXRhci1wZW5jaWwtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxjby1pY29uIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuUGVuY2lsUm91bmRPcGVuKVwiIGNsYXNzPVwicGVuY2lsLWljb25cIj48L2NvLWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxpbnB1dCAjdXBsb2FkQXZhdGFyIGNsYXNzPVwidmFsdWUtdGV4dFwiIHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2VFdmVudCgkZXZlbnQpXCIgYWNjZXB0PVwiLmpwZywgLnBuZywgLmpwZWdcIj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgYCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWxhdGlvbkF2YXRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgQFZpZXdDaGlsZChcInVwbG9hZEF2YXRhclwiKVxyXG4gIHB1YmxpYyBpbnB1dDogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGltYWdlKHZhbHVlOiBDb0RvY3VtZW50KSB7XHJcbiAgICB0aGlzLl9pbWFnZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fc2V0SW1hZ2VGb3JBdmF0YXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaW1hZ2UoKTogQ29Eb2N1bWVudCB7XHJcbiAgICByZXR1cm4gdGhpcy5faW1hZ2U7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcmVsYXRpb25JZCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5yZWxhdGlvbklkICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9pbWFnZSA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5fcmVsYXRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuX3JlbGF0aW9uSWQgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5fc2V0SW1hZ2VGb3JBdmF0YXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcmVsYXRpb25JZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlbGF0aW9uSWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcmVsYXRpb24odmFsdWU6IFJlbGF0aW9uQW55VHlwZSkge1xyXG4gICAgaWYgKCF0aGlzLl9yZWxhdGlvbiB8fCAodGhpcy5fcmVsYXRpb24gJiYgdmFsdWUgJiYgdGhpcy5fcmVsYXRpb24ucmVsYXRpb25JZCAhPT0gdmFsdWUucmVsYXRpb25JZCkpIHtcclxuICAgICAgdGhpcy5faW1hZ2UgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuX3JlbGF0aW9uSWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuX3JlbGF0aW9uID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuX3NldEltYWdlRm9yQXZhdGFyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlbGF0aW9uKCk6IFJlbGF0aW9uQW55VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVsYXRpb247XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoXCJjbGFzcy5jYW4tY2hhbmdlXCIpXHJcbiAgcHVibGljIGNhbkNoYW5nZUF2YXRhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtYXhVcGxvYWRTaXplSW5NYjogbnVtYmVyID0gMztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWF4QXZhdGFyU2l6ZTogbnVtYmVyID0gMjAwO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXJlbGF0aW9uLWF2YXRhcicpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGltYWdlU3JjOiBzdHJpbmc7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcInN0eWxlLmJhY2tncm91bmQtY29sb3JcIilcclxuICBwdWJsaWMgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJjbGlja1wiKVxyXG4gIHB1YmxpYyBvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGxvYWRUaGVBdmF0YXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgaW5pdGlhbHModmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5faW5pdGlhbHMgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3NldEJhY2tncm91bmRDb2xvcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpbml0aWFscygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdGlhbHM6IHN0cmluZztcclxuICBwcml2YXRlIF9yZWxhdGlvbklkOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfcmVsYXRpb246IFJlbGF0aW9uQW55VHlwZTtcclxuICBwcml2YXRlIF9pbWFnZTogQ29Eb2N1bWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JlbGF0aW9uQ29ubmVjdG9yU2VydmljZTogUmVsYXRpb25Db25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29sb3JTZXF1ZW5jZVNlcnZpY2U6IENvbG9yU2VxdWVuY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogQ29yZURpYWxvZ1NlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fc2V0SW1hZ2VGb3JBdmF0YXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5pbnB1dCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGxvYWRUaGVBdmF0YXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYW5DaGFuZ2VBdmF0YXIgJiYgdGhpcy5pbnB1dCkge1xyXG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRha2UgRmlsZSBmcm9tIGV2ZW50IGFuZCBzYXZlIGl0IGludGVybmFsbHkgYXMgYSBDb0RvY3VtZW50LlxyXG4gIHB1YmxpYyBvbkZpbGVDaGFuZ2VFdmVudChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC5maWxlcyAmJiBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmaWxlVG9VcGxvYWQ6IEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcblxyXG4gICAgICBpZiAoIUZpbGVVdGlscy5DaGVja01heFVwbG9hZFNpemUoZmlsZVRvVXBsb2FkKSkge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2Uuc2hvd1dhcm5pbmcoU3RyaW5nVXRpbHMuRm9ybWF0KFxyXG4gICAgICAgICAgXCJGaWxlIGlzIHRvIGxhcmdlIHRvIHVwbG9hZC4gTWF4aW11bSBmaWxlIHNpemUgaXMgezB9IE1iXCIsIFt0aGlzLm1heFVwbG9hZFNpemVJbk1iXSkpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFGaWxlVXRpbHMuSXNJbWFnZUZpbGUoZmlsZVRvVXBsb2FkKSkge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2Uuc2hvd1dhcm5pbmcoXCJQbGVhc2Ugc2VsZWN0IGFuIGltYWdlXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3NldEZpbGVBc0F2YXRhclRvQ3VycmVudFJlbGF0aW9uKGZpbGVUb1VwbG9hZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaW5wdXQgJiYgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfc2V0RmlsZUFzQXZhdGFyVG9DdXJyZW50UmVsYXRpb24oZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgZG9jdW1lbnQ6IENvRG9jdW1lbnQgPSBhd2FpdCBGaWxlVXRpbHMuUmVhZEZpbGVBc05ld0NvRG9jdW1lbnQoZmlsZSwgdHJ1ZSwgdGhpcy5tYXhBdmF0YXJTaXplKTtcclxuICAgIGF3YWl0IHRoaXMuc2V0RG9jUHJvcGVydGllcyhkb2N1bWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNldERvY1Byb3BlcnRpZXMoZG9jdW1lbnQ6IENvRG9jdW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGRvY3VtZW50LnRodW1ibmFpbEJvZHkgPSBkb2N1bWVudC5kb2N1bWVudEJvZHk7XHJcbiAgICBkb2N1bWVudC5jcmVhdGlvbkRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZG9jdW1lbnQuY3JlYXRpb25Vc2VyID0gdGhpcy5fcmVsYXRpb25Db25uZWN0b3JTZXJ2aWNlLmxvZ2luUmVzcG9uc2UudXNlck5hbWU7XHJcbiAgICBkb2N1bWVudC5pbWFnZURpc3BsYXlLaW5kID0gQ29Eb2N1bWVudEltYWdlRGlzcGxheUtpbmQuQXZhdGFyO1xyXG4gICAgaWYgKHRoaXMuX3JlbGF0aW9uKSB7XHJcbiAgICAgIHRoaXMuX3JlbGF0aW9uLmF2YXRhckltYWdlID0gZG9jdW1lbnQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmltYWdlU3JjID0gZG9jdW1lbnQudGh1bWJuYWlsQm9keUFzRGF0YVVyaTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3NldEltYWdlRm9yQXZhdGFyKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuaW1hZ2UgJiYgdGhpcy5pbWFnZS5kb2N1bWVudElkKSB7XHJcbiAgICAgIGlmICghYXdhaXQgdGhpcy5fZ2V0SW1hZ2VDb250ZW50KHRoaXMuaW1hZ2UuZG9jdW1lbnRJZCkpIHtcclxuICAgICAgICB0aGlzLl9zZXRJbWFnZUZyb21SZWxhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zZXRJbWFnZUZyb21SZWxhdGlvbigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfc2V0SW1hZ2VGcm9tUmVsYXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5yZWxhdGlvbikge1xyXG4gICAgICBpZiAodGhpcy5yZWxhdGlvbi5hdmF0YXJJbWFnZSAmJiB0aGlzLnJlbGF0aW9uLmF2YXRhckltYWdlLmRvY3VtZW50SWQpIHtcclxuICAgICAgICB0aGlzLl9pbWFnZSA9IHRoaXMucmVsYXRpb24uYXZhdGFySW1hZ2U7XHJcbiAgICAgICAgaWYgKCFhd2FpdCB0aGlzLl9nZXRJbWFnZUNvbnRlbnQodGhpcy5pbWFnZS5kb2N1bWVudElkKSkge1xyXG4gICAgICAgICAgdGhpcy5fc2V0UmVsYXRpb25Jbml0aWFscygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9zZXRSZWxhdGlvbkluaXRpYWxzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5yZWxhdGlvbklkKSB7XHJcbiAgICAgIHRoaXMuX3JlbGF0aW9uQ29ubmVjdG9yU2VydmljZS5nZXRSZWxhdGlvblNtYWxsT2JqZWN0KHRoaXMucmVsYXRpb25JZCkudGhlbihhc3luYyAocmVsYXRpb25TbWFsbE9iamVjdDogUmVsYXRpb25TbWFsbE9iamVjdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZWxhdGlvblNtYWxsT2JqZWN0KSB7XHJcbiAgICAgICAgICBpZiAocmVsYXRpb25TbWFsbE9iamVjdC5hdmF0YXJJbWFnZSAmJiByZWxhdGlvblNtYWxsT2JqZWN0LmF2YXRhckltYWdlLmRvY3VtZW50SWQpIHtcclxuICAgICAgICAgICAgdGhpcy5faW1hZ2UgPSByZWxhdGlvblNtYWxsT2JqZWN0LmF2YXRhckltYWdlO1xyXG4gICAgICAgICAgICBpZiAoIWF3YWl0IHRoaXMuX2dldEltYWdlQ29udGVudCh0aGlzLmltYWdlLmRvY3VtZW50SWQpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fc2V0UmVsYXRpb25Jbml0aWFscygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXRSZWxhdGlvbkluaXRpYWxzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldFJlbGF0aW9uSW5pdGlhbHMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZWxhdGlvbikge1xyXG4gICAgICB0aGlzLmluaXRpYWxzID0gdGhpcy5yZWxhdGlvbi5kaXNwbGF5SW5pdGlhbHM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRJbWFnZUNvbnRlbnQoZG9jSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgY29udGVudDogc3RyaW5nID0gYXdhaXQgdGhpcy5fcmVsYXRpb25Db25uZWN0b3JTZXJ2aWNlLmdldERvY3VtZW50Q29udGVudChkb2NJZCk7XHJcbiAgICBpZiAoY29udGVudCAmJiB0aGlzLl9pbWFnZSkge1xyXG4gICAgICB0aGlzLl9pbWFnZS50aHVtYm5haWxCb2R5ID0gY29udGVudDtcclxuICAgICAgdGhpcy5pbWFnZVNyYyA9IHRoaXMuaW1hZ2UudGh1bWJuYWlsQm9keUFzRGF0YVVyaTtcclxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEJhY2tncm91bmRDb2xvcigpOiB2b2lkIHtcclxuICAgIHRoaXMuaW1hZ2VTcmMgPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMucmVsYXRpb24pIHtcclxuICAgICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLl9jb2xvclNlcXVlbmNlU2VydmljZS5nZXRSYW5kb21Db2xvcih0aGlzLnJlbGF0aW9uLnJlbGF0aW9uSWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufSBcclxuIl19
@@ -0,0 +1,22 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { RelationAvatarComponent } from './relation-avatar.component';
4
+ import { IconModule, ImageModule } from '@colijnit/corecomponents_v12';
5
+ export class RelationAvatarModule {
6
+ }
7
+ RelationAvatarModule.decorators = [
8
+ { type: NgModule, args: [{
9
+ imports: [
10
+ CommonModule,
11
+ ImageModule,
12
+ IconModule
13
+ ],
14
+ declarations: [
15
+ RelationAvatarComponent
16
+ ],
17
+ exports: [
18
+ RelationAvatarComponent
19
+ ]
20
+ },] }
21
+ ];
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tYXZhdGFyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlbGF0aW9uL3NyYy9saWIvY29tcG9uZW50L3JlbGF0aW9uLWF2YXRhci9yZWxhdGlvbi1hdmF0YXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFlckUsTUFBTSxPQUFPLG9CQUFvQjs7O1lBYmhDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixXQUFXO29CQUNYLFVBQVU7aUJBQ1g7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLHVCQUF1QjtpQkFDeEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLHVCQUF1QjtpQkFDeEI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtSZWxhdGlvbkF2YXRhckNvbXBvbmVudH0gZnJvbSAnLi9yZWxhdGlvbi1hdmF0YXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtJY29uTW9kdWxlLCBJbWFnZU1vZHVsZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEltYWdlTW9kdWxlLFxyXG4gICAgSWNvbk1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBSZWxhdGlvbkF2YXRhckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgUmVsYXRpb25BdmF0YXJDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWxhdGlvbkF2YXRhck1vZHVsZSB7XHJcbn1cclxuIl19
@@ -0,0 +1,101 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
3
+ import { CDK_DRAG_CONFIG, moveItemInArray } from '@angular/cdk/drag-drop';
4
+ const DragConfig = {
5
+ dragStartThreshold: 0,
6
+ pointerDirectionChangeThreshold: 5,
7
+ zIndex: 10000
8
+ };
9
+ const ɵ0 = DragConfig;
10
+ export class RelationContactOptionListComponent {
11
+ constructor() {
12
+ this.dragDropDisabled = false;
13
+ this.collection = [];
14
+ this.deleteClick = new EventEmitter();
15
+ this.showClass = true;
16
+ this.dragStartDelay = 500;
17
+ this.handleCanDragDrop = (drag, drop) => {
18
+ return (drag.data.type === this.type);
19
+ };
20
+ }
21
+ handleDrop(event) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ try {
24
+ const from = event.previousIndex;
25
+ const to = event.currentIndex;
26
+ if (from === to) {
27
+ return;
28
+ }
29
+ // set items in correct order
30
+ moveItemInArray(this.collection, from, to);
31
+ this._reArrangeSequences();
32
+ }
33
+ catch (e) {
34
+ console.error(e);
35
+ }
36
+ });
37
+ }
38
+ /**
39
+ * Hack to make sure that dragged item has the right css when not moving the mouse
40
+ * @param event
41
+ */
42
+ handleOptionMouseDown(event) {
43
+ clearTimeout(this._mouseDownTimeout);
44
+ this._mouseDownTimeout = setTimeout(() => {
45
+ let mouseMoveEvent;
46
+ if ("createEvent" in document) {
47
+ mouseMoveEvent = document.createEvent("Event");
48
+ mouseMoveEvent.initEvent('mousemove', true, true);
49
+ }
50
+ else if ("Event" in window) {
51
+ mouseMoveEvent = new Event('mousemove', { bubbles: true, cancelable: true });
52
+ }
53
+ // @ts-ignore
54
+ mouseMoveEvent.pageX = event.pageX;
55
+ // @ts-ignore
56
+ mouseMoveEvent.pageY = event.pageY;
57
+ document.dispatchEvent(mouseMoveEvent);
58
+ }, this.dragStartDelay);
59
+ }
60
+ handleOptionMouseUp(event) {
61
+ clearTimeout(this._mouseDownTimeout);
62
+ }
63
+ _reArrangeSequences() {
64
+ for (let i = 0; i < this.collection.length; i++) {
65
+ this.collection[i].sequence = i;
66
+ }
67
+ }
68
+ }
69
+ RelationContactOptionListComponent.decorators = [
70
+ { type: Component, args: [{
71
+ selector: 'co-relation-contact-option-list',
72
+ template: `
73
+ <div #dropListContactOptions class="contact-option-wrapper drag-drop-list" cdkDropList cdkDropListOrientation="vertical"
74
+ [cdkDropListDisabled]="dragDropDisabled"
75
+ [cdkDropListData]="collection"
76
+ [cdkDropListEnterPredicate]="handleCanDragDrop"
77
+ (cdkDropListDropped)="handleDrop($event)"
78
+ >
79
+ <co-relation-contact-option class="draggable-contact-option" *ngFor="let option of collection" [model]="option"
80
+ cdkDrag [cdkDragStartDelay]="dragStartDelay"
81
+ (mousedown)="handleOptionMouseDown($event)"
82
+ (mouseup)="handleOptionMouseUp($event)"
83
+ (deleteClick)="deleteClick.emit($event)"
84
+ ></co-relation-contact-option>
85
+ </div>
86
+ `,
87
+ providers: [
88
+ { provide: CDK_DRAG_CONFIG, useValue: ɵ0 }
89
+ ],
90
+ encapsulation: ViewEncapsulation.None
91
+ },] }
92
+ ];
93
+ RelationContactOptionListComponent.propDecorators = {
94
+ dragDropDisabled: [{ type: Input }],
95
+ type: [{ type: Input }],
96
+ collection: [{ type: Input }],
97
+ deleteClick: [{ type: Output }],
98
+ showClass: [{ type: HostBinding, args: ['class.co-relation-contact-option-list',] }]
99
+ };
100
+ export { ɵ0 };
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tY29udGFjdC1vcHRpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZWxhdGlvbi9zcmMvbGliL2NvbXBvbmVudC9yZWxhdGlvbi1jb250YWN0LW9wdGlvbnMvcmVsYXRpb24tY29udGFjdC1vcHRpb24tbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzdHLE9BQU8sRUFBQyxlQUFlLEVBQXFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRTNHLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLGtCQUFrQixFQUFFLENBQUM7SUFDckIsK0JBQStCLEVBQUUsQ0FBQztJQUNsQyxNQUFNLEVBQUUsS0FBSztDQUNkLENBQUM7V0FvQnVDLFVBQVU7QUFJbkQsTUFBTSxPQUFPLGtDQUFrQztJQXRCL0M7UUF3QlMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBTWxDLGVBQVUsR0FBb0IsRUFBRSxDQUFDO1FBR2pDLGdCQUFXLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRzdFLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFFMUIsbUJBQWMsR0FBVyxHQUFHLENBQUM7UUFJN0Isc0JBQWlCLEdBQUcsQ0FBQyxJQUFhLEVBQUUsSUFBaUIsRUFBRSxFQUFFO1lBQzlELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFBO0lBZ0RILENBQUM7SUE5Q2MsVUFBVSxDQUFDLEtBQW1DOztZQUN6RCxJQUFJO2dCQUNGLE1BQU0sSUFBSSxHQUFXLEtBQUssQ0FBQyxhQUFhLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxHQUFXLEtBQUssQ0FBQyxZQUFZLENBQUM7Z0JBQ3RDLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtvQkFDZixPQUFPO2lCQUNSO2dCQUNELDZCQUE2QjtnQkFDN0IsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUM1QjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7UUFDSCxDQUFDO0tBQUE7SUFFRDs7O09BR0c7SUFDSSxxQkFBcUIsQ0FBQyxLQUFpQjtRQUM1QyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsSUFBSSxjQUFxQixDQUFDO1lBQzFCLElBQUksYUFBYSxJQUFJLFFBQVEsRUFBRTtnQkFDN0IsY0FBYyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9DLGNBQWMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNuRDtpQkFBTSxJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUU7Z0JBQzVCLGNBQWMsR0FBRyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzlFO1lBQ0QsYUFBYTtZQUNiLGNBQWMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNuQyxhQUFhO1lBQ2IsY0FBYyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ25DLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sbUJBQW1CLENBQUMsS0FBaUI7UUFDMUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7OztZQTNGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlDQUFpQztnQkFDM0MsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7OztHQWNUO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxFQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxJQUFZLEVBQUM7aUJBQ2pEO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7K0JBRUUsS0FBSzttQkFHTCxLQUFLO3lCQUdMLEtBQUs7MEJBR0wsTUFBTTt3QkFHTixXQUFXLFNBQUMsdUNBQXVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbnRhY3RPcHRpb259IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9jb250YWN0LW9wdGlvbi5ibyc7XHJcbmltcG9ydCB7Q29tbXVuaWNhdGlvblR5cGV9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9lbnVtL2NvbW11bmljYXRpb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHtDREtfRFJBR19DT05GSUcsIENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5fSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuXHJcbmNvbnN0IERyYWdDb25maWcgPSB7XHJcbiAgZHJhZ1N0YXJ0VGhyZXNob2xkOiAwLFxyXG4gIHBvaW50ZXJEaXJlY3Rpb25DaGFuZ2VUaHJlc2hvbGQ6IDUsXHJcbiAgekluZGV4OiAxMDAwMFxyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1yZWxhdGlvbi1jb250YWN0LW9wdGlvbi1saXN0JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2ICNkcm9wTGlzdENvbnRhY3RPcHRpb25zIGNsYXNzPVwiY29udGFjdC1vcHRpb24td3JhcHBlciBkcmFnLWRyb3AtbGlzdFwiIGNka0Ryb3BMaXN0IGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXHJcbiAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiZHJhZ0Ryb3BEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2xsZWN0aW9uXCJcclxuICAgICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJoYW5kbGVDYW5EcmFnRHJvcFwiXHJcbiAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJoYW5kbGVEcm9wKCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgICA8Y28tcmVsYXRpb24tY29udGFjdC1vcHRpb24gY2xhc3M9XCJkcmFnZ2FibGUtY29udGFjdC1vcHRpb25cIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvbGxlY3Rpb25cIiBbbW9kZWxdPVwib3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnIFtjZGtEcmFnU3RhcnREZWxheV09XCJkcmFnU3RhcnREZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJoYW5kbGVPcHRpb25Nb3VzZURvd24oJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cImhhbmRsZU9wdGlvbk1vdXNlVXAoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZUNsaWNrKT1cImRlbGV0ZUNsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jby1yZWxhdGlvbi1jb250YWN0LW9wdGlvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBDREtfRFJBR19DT05GSUcsIHVzZVZhbHVlOiBEcmFnQ29uZmlnfVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVsYXRpb25Db250YWN0T3B0aW9uTGlzdENvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZHJhZ0Ryb3BEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0eXBlOiBDb21tdW5pY2F0aW9uVHlwZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29sbGVjdGlvbjogQ29udGFjdE9wdGlvbltdID0gW107XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZWxldGVDbGljazogRXZlbnRFbWl0dGVyPENvbnRhY3RPcHRpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb250YWN0T3B0aW9uPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXJlbGF0aW9uLWNvbnRhY3Qtb3B0aW9uLWxpc3QnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgZHJhZ1N0YXJ0RGVsYXk6IG51bWJlciA9IDUwMDtcclxuXHJcbiAgcHJpdmF0ZSBfbW91c2VEb3duVGltZW91dDogYW55O1xyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2FuRHJhZ0Ryb3AgPSAoZHJhZzogQ2RrRHJhZywgZHJvcDogQ2RrRHJvcExpc3QpID0+IHtcclxuICAgIHJldHVybiAoZHJhZy5kYXRhLnR5cGUgPT09IHRoaXMudHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8Q29udGFjdE9wdGlvbltdPik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZnJvbTogbnVtYmVyID0gZXZlbnQucHJldmlvdXNJbmRleDtcclxuICAgICAgY29uc3QgdG86IG51bWJlciA9IGV2ZW50LmN1cnJlbnRJbmRleDtcclxuICAgICAgaWYgKGZyb20gPT09IHRvKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHNldCBpdGVtcyBpbiBjb3JyZWN0IG9yZGVyXHJcbiAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmNvbGxlY3Rpb24sIGZyb20sIHRvKTtcclxuICAgICAgdGhpcy5fcmVBcnJhbmdlU2VxdWVuY2VzKCk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYWNrIHRvIG1ha2Ugc3VyZSB0aGF0IGRyYWdnZWQgaXRlbSBoYXMgdGhlIHJpZ2h0IGNzcyB3aGVuIG5vdCBtb3ZpbmcgdGhlIG1vdXNlXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgcHVibGljIGhhbmRsZU9wdGlvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX21vdXNlRG93blRpbWVvdXQpO1xyXG4gICAgdGhpcy5fbW91c2VEb3duVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgbW91c2VNb3ZlRXZlbnQ6IEV2ZW50O1xyXG4gICAgICBpZiAoXCJjcmVhdGVFdmVudFwiIGluIGRvY3VtZW50KSB7XHJcbiAgICAgICAgbW91c2VNb3ZlRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xyXG4gICAgICAgIG1vdXNlTW92ZUV2ZW50LmluaXRFdmVudCgnbW91c2Vtb3ZlJywgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXCJFdmVudFwiIGluIHdpbmRvdykge1xyXG4gICAgICAgIG1vdXNlTW92ZUV2ZW50ID0gbmV3IEV2ZW50KCdtb3VzZW1vdmUnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBtb3VzZU1vdmVFdmVudC5wYWdlWCA9IGV2ZW50LnBhZ2VYO1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIG1vdXNlTW92ZUV2ZW50LnBhZ2VZID0gZXZlbnQucGFnZVk7XHJcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobW91c2VNb3ZlRXZlbnQpO1xyXG4gICAgfSwgdGhpcy5kcmFnU3RhcnREZWxheSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlT3B0aW9uTW91c2VVcChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX21vdXNlRG93blRpbWVvdXQpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZUFycmFuZ2VTZXF1ZW5jZXMoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sbGVjdGlvbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLmNvbGxlY3Rpb25baV0uc2VxdWVuY2UgPSBpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,100 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { CommunicationType } from '@colijnit/relationapi/build/enum/communication-type.enum';
4
+ import { Icon } from '../../enum/icon.enum';
5
+ import { IconCacheService } from '../../service/icon-cache.service';
6
+ import { ContactOption } from '@colijnit/relationapi/build/model/contact-option.bo';
7
+ import { InputTextComponent } from '@colijnit/corecomponents_v12';
8
+ import { RelationService } from '../../service/relation.service';
9
+ export class RelationContactOptionComponent {
10
+ constructor(iconCacheService, _relationService) {
11
+ this.iconCacheService = iconCacheService;
12
+ this._relationService = _relationService;
13
+ this.icons = Icon;
14
+ this.saveClick = new EventEmitter();
15
+ this.deleteClick = new EventEmitter();
16
+ this.showClass = true;
17
+ this.iconType = Icon.Email;
18
+ this.label = 'EMAIL';
19
+ this.shouldFocus = false;
20
+ this._type = CommunicationType.Email;
21
+ }
22
+ set child(content) {
23
+ if (content) {
24
+ this.input = content;
25
+ this.input.commit = (value) => this.handleCommit(value);
26
+ if (this.shouldFocus) {
27
+ setTimeout(() => {
28
+ this.input.requestFocus();
29
+ });
30
+ }
31
+ }
32
+ }
33
+ set model(value) {
34
+ this._model = value;
35
+ if (this._model) {
36
+ this.type = this._model.type;
37
+ }
38
+ }
39
+ get model() {
40
+ return this._model;
41
+ }
42
+ set type(value) {
43
+ this._type = value;
44
+ this._prepareType(this._type);
45
+ }
46
+ get type() {
47
+ return this._type;
48
+ }
49
+ ngOnInit() {
50
+ if (this.type && !this.model) {
51
+ const newOption = new ContactOption();
52
+ newOption.type = this.type;
53
+ this.model = newOption;
54
+ this.shouldFocus = true;
55
+ }
56
+ }
57
+ handleCommit(value) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ this.model.value = value;
60
+ this.saveClick.next(this.model);
61
+ return true;
62
+ });
63
+ }
64
+ _prepareType(type) {
65
+ if (type) {
66
+ this.iconType = this._relationService.communicationTypeIcon.get(type);
67
+ this.label = this._relationService.communicationTypeLabel.get(type);
68
+ }
69
+ }
70
+ }
71
+ RelationContactOptionComponent.decorators = [
72
+ { type: Component, args: [{
73
+ selector: 'co-relation-contact-option',
74
+ template: `
75
+ <div class="relation-contact-option-sequence" *ngIf="model.sequence !== null && model.sequence !== undefined"
76
+ [textContent]="model.sequence"></div>
77
+ <co-input-text #input
78
+ [placeholder]="label | reLocalize"
79
+ [model]="model.value"
80
+ [leftIconData]="iconCacheService.getIcon(iconType)"
81
+ [showSaveCancel]="true"
82
+ ></co-input-text>
83
+ <co-icon [iconData]="iconCacheService.getIcon(icons.TrashBin)" (click)="deleteClick.emit(model)"></co-icon>
84
+ `,
85
+ encapsulation: ViewEncapsulation.None
86
+ },] }
87
+ ];
88
+ RelationContactOptionComponent.ctorParameters = () => [
89
+ { type: IconCacheService },
90
+ { type: RelationService }
91
+ ];
92
+ RelationContactOptionComponent.propDecorators = {
93
+ child: [{ type: ViewChild, args: ['input', { read: InputTextComponent },] }],
94
+ model: [{ type: Input }],
95
+ type: [{ type: Input }],
96
+ saveClick: [{ type: Output }],
97
+ deleteClick: [{ type: Output }],
98
+ showClass: [{ type: HostBinding, args: ['class.co-relation-contact-option',] }]
99
+ };
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tY29udGFjdC1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVsYXRpb24vc3JjL2xpYi9jb21wb25lbnQvcmVsYXRpb24tY29udGFjdC1vcHRpb25zL3JlbGF0aW9uLWNvbnRhY3Qtb3B0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzNGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDbEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBaUIvRCxNQUFNLE9BQU8sOEJBQThCO0lBc0R6QyxZQUNTLGdCQUFrQyxFQUNqQyxnQkFBaUM7UUFEbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBdkQzQixVQUFLLEdBQWdCLElBQUksQ0FBQztRQXFDbkMsY0FBUyxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUczRSxnQkFBVyxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUc3RSxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRTFCLGFBQVEsR0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVCLFVBQUssR0FBVyxPQUFPLENBQUM7UUFFeEIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFHNUIsVUFBSyxHQUFzQixpQkFBaUIsQ0FBQyxLQUFLLENBQUM7SUFNM0QsQ0FBQztJQXZERCxJQUFzRCxLQUFLLENBQUMsT0FBTztRQUNqRSxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM1QixDQUFDLENBQUMsQ0FBQTthQUNIO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFDVyxLQUFLLENBQUMsS0FBb0I7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQ1csSUFBSSxDQUFDLEtBQXdCO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQXlCRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUM1QixNQUFNLFNBQVMsR0FBa0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNyRCxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRVksWUFBWSxDQUFDLEtBQWE7O1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0tBQUE7SUFFTyxZQUFZLENBQUMsSUFBdUI7UUFDMUMsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQzs7O1lBL0ZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsNEJBQTRCO2dCQUN0QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7R0FVVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBbkJPLGdCQUFnQjtZQUdoQixlQUFlOzs7b0JBb0JwQixTQUFTLFNBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFO29CQVkvQyxLQUFLO21CQVlMLEtBQUs7d0JBVUwsTUFBTTswQkFHTixNQUFNO3dCQUdOLFdBQVcsU0FBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb21tdW5pY2F0aW9uVHlwZX0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL2VudW0vY29tbXVuaWNhdGlvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7Q29udGFjdE9wdGlvbn0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2NvbnRhY3Qtb3B0aW9uLmJvJztcclxuaW1wb3J0IHtJbnB1dFRleHRDb21wb25lbnR9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5pbXBvcnQge1JlbGF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9yZWxhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tcmVsYXRpb24tY29udGFjdC1vcHRpb24nLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1jb250YWN0LW9wdGlvbi1zZXF1ZW5jZVwiICpuZ0lmPVwibW9kZWwuc2VxdWVuY2UgIT09IG51bGwgJiYgbW9kZWwuc2VxdWVuY2UgIT09IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgW3RleHRDb250ZW50XT1cIm1vZGVsLnNlcXVlbmNlXCI+PC9kaXY+XHJcbiAgICAgIDxjby1pbnB1dC10ZXh0ICNpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWwgfCByZUxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cIm1vZGVsLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2xlZnRJY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvblR5cGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Nob3dTYXZlQ2FuY2VsXT1cInRydWVcIlxyXG4gICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlRyYXNoQmluKVwiIChjbGljayk9XCJkZWxldGVDbGljay5lbWl0KG1vZGVsKVwiPjwvY28taWNvbj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlbGF0aW9uQ29udGFjdE9wdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyByZWFkOiBJbnB1dFRleHRDb21wb25lbnQgfSkgc2V0IGNoaWxkKGNvbnRlbnQpIHtcclxuICAgIGlmIChjb250ZW50KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQgPSBjb250ZW50O1xyXG4gICAgICB0aGlzLmlucHV0LmNvbW1pdCA9ICh2YWx1ZSkgPT4gdGhpcy5oYW5kbGVDb21taXQodmFsdWUpO1xyXG4gICAgICBpZiAodGhpcy5zaG91bGRGb2N1cykge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pbnB1dC5yZXF1ZXN0Rm9jdXMoKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbW9kZWwodmFsdWU6IENvbnRhY3RPcHRpb24pIHtcclxuICAgIHRoaXMuX21vZGVsID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5fbW9kZWwpIHtcclxuICAgICAgdGhpcy50eXBlID0gdGhpcy5fbW9kZWwudHlwZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbW9kZWwoKTogQ29udGFjdE9wdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW9kZWw7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdHlwZSh2YWx1ZTogQ29tbXVuaWNhdGlvblR5cGUpIHtcclxuICAgIHRoaXMuX3R5cGUgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3ByZXBhcmVUeXBlKHRoaXMuX3R5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB0eXBlKCk6IENvbW11bmljYXRpb25UeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNhdmVDbGljazogRXZlbnRFbWl0dGVyPENvbnRhY3RPcHRpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb250YWN0T3B0aW9uPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGVsZXRlQ2xpY2s6IEV2ZW50RW1pdHRlcjxDb250YWN0T3B0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29udGFjdE9wdGlvbj4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1yZWxhdGlvbi1jb250YWN0LW9wdGlvbicpXHJcbiAgcHVibGljIHNob3dDbGFzczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHB1YmxpYyBpY29uVHlwZTogSWNvbiA9IEljb24uRW1haWw7XHJcbiAgcHVibGljIGxhYmVsOiBzdHJpbmcgPSAnRU1BSUwnO1xyXG4gIHB1YmxpYyBpbnB1dDogSW5wdXRUZXh0Q29tcG9uZW50O1xyXG4gIHB1YmxpYyBzaG91bGRGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9tb2RlbDogQ29udGFjdE9wdGlvbjtcclxuICBwcml2YXRlIF90eXBlOiBDb21tdW5pY2F0aW9uVHlwZSA9IENvbW11bmljYXRpb25UeXBlLkVtYWlsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVsYXRpb25TZXJ2aWNlOiBSZWxhdGlvblNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSAmJiAhdGhpcy5tb2RlbCkge1xyXG4gICAgICBjb25zdCBuZXdPcHRpb246IENvbnRhY3RPcHRpb24gPSBuZXcgQ29udGFjdE9wdGlvbigpO1xyXG4gICAgICBuZXdPcHRpb24udHlwZSA9IHRoaXMudHlwZTtcclxuICAgICAgdGhpcy5tb2RlbCA9IG5ld09wdGlvbjtcclxuICAgICAgdGhpcy5zaG91bGRGb2N1cyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQ29tbWl0KHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRoaXMubW9kZWwudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2F2ZUNsaWNrLm5leHQodGhpcy5tb2RlbCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVUeXBlKHR5cGU6IENvbW11bmljYXRpb25UeXBlKTogdm9pZCB7XHJcbiAgICBpZiAodHlwZSkge1xyXG4gICAgICB0aGlzLmljb25UeXBlID0gdGhpcy5fcmVsYXRpb25TZXJ2aWNlLmNvbW11bmljYXRpb25UeXBlSWNvbi5nZXQodHlwZSk7XHJcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLl9yZWxhdGlvblNlcnZpY2UuY29tbXVuaWNhdGlvblR5cGVMYWJlbC5nZXQodHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
2
+ import { CommunicationType } from '@colijnit/relationapi/build/enum/communication-type.enum';
3
+ import { Icon } from '../../enum/icon.enum';
4
+ import { RelationService } from '../../service/relation.service';
5
+ import { IconCacheService } from '../../service/icon-cache.service';
6
+ export class RelationContactOptionsOtherTypesPopupComponent {
7
+ constructor(iconCacheService, _relationService) {
8
+ this.iconCacheService = iconCacheService;
9
+ this._relationService = _relationService;
10
+ this.icons = Icon;
11
+ this.typeClick = new EventEmitter();
12
+ this.clickedOutside = new EventEmitter();
13
+ this.showClass = true;
14
+ this.types = [];
15
+ }
16
+ ngOnInit() {
17
+ this.types.length = 0;
18
+ this.types.push({ type: CommunicationType.Email, icon: this._relationService.communicationTypeIcon.get(CommunicationType.Email), label: this._relationService.communicationTypeLabel.get(CommunicationType.Email) }, { type: CommunicationType.Telephone, icon: this._relationService.communicationTypeIcon.get(CommunicationType.Telephone), label: this._relationService.communicationTypeLabel.get(CommunicationType.Telephone) }, { type: CommunicationType.Mobile, icon: this._relationService.communicationTypeIcon.get(CommunicationType.Mobile), label: this._relationService.communicationTypeLabel.get(CommunicationType.Mobile) }, { type: CommunicationType.Website, icon: this._relationService.communicationTypeIcon.get(CommunicationType.Website), label: this._relationService.communicationTypeLabel.get(CommunicationType.Website) }, { type: CommunicationType.Fax, icon: this._relationService.communicationTypeIcon.get(CommunicationType.Fax), label: this._relationService.communicationTypeLabel.get(CommunicationType.Fax) });
19
+ }
20
+ }
21
+ RelationContactOptionsOtherTypesPopupComponent.decorators = [
22
+ { type: Component, args: [{
23
+ selector: 'co-relation-contact-options-other-types-popup',
24
+ template: `
25
+ <div class="relation-contact-options-other-types-popup-content" [overlay]="parentForOverlay" [rightAlign]="true" [keepInView]="true">
26
+ <div class="other-types-wrapper" *ngFor="let type of types" (click)="typeClick.emit(type.type)" [clickOutside]="true" (clickOutside)="clickedOutside.emit()">
27
+ <co-icon [iconData]="iconCacheService.getIcon(type.icon)"></co-icon>
28
+ <div class="other-type-label" [textContent]="type.label | reLocalize"></div>
29
+ </div>
30
+ </div>
31
+ `
32
+ },] }
33
+ ];
34
+ RelationContactOptionsOtherTypesPopupComponent.ctorParameters = () => [
35
+ { type: IconCacheService },
36
+ { type: RelationService }
37
+ ];
38
+ RelationContactOptionsOtherTypesPopupComponent.propDecorators = {
39
+ parentForOverlay: [{ type: Input }],
40
+ typeClick: [{ type: Output }],
41
+ clickedOutside: [{ type: Output }],
42
+ showClass: [{ type: HostBinding, args: ['class.co-relation-contact-options-other-types-popup',] }]
43
+ };
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tY29udGFjdC1vcHRpb25zLW90aGVyLXR5cGVzLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlbGF0aW9uL3NyYy9saWIvY29tcG9uZW50L3JlbGF0aW9uLWNvbnRhY3Qtb3B0aW9ucy9yZWxhdGlvbi1jb250YWN0LW9wdGlvbnMtb3RoZXItdHlwZXMtcG9wdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzNGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFtQmxFLE1BQU0sT0FBTyw4Q0FBOEM7SUFpQnpELFlBQ1MsZ0JBQWtDLEVBQ2pDLGdCQUFpQztRQURsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFsQjNCLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBTW5DLGNBQVMsR0FBb0MsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFHbkYsbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc5RCxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRTFCLFVBQUssR0FBZ0IsRUFBRSxDQUFDO0lBTS9CLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUNuTSxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFDL00sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQ3RNLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUN6TSxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDOUwsQ0FBQTtJQUNILENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLCtDQUErQztnQkFDekQsUUFBUSxFQUFFOzs7Ozs7O0dBT1Q7YUFDRjs7O1lBbEJPLGdCQUFnQjtZQURoQixlQUFlOzs7K0JBdUJwQixLQUFLO3dCQUdMLE1BQU07NkJBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMscURBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29tbXVuaWNhdGlvblR5cGV9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9lbnVtL2NvbW11bmljYXRpb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7UmVsYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3JlbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2Ugb3RoZXJUeXBlIHtcclxuICB0eXBlOiBDb21tdW5pY2F0aW9uVHlwZSxcclxuICBpY29uOiBJY29uO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tcmVsYXRpb24tY29udGFjdC1vcHRpb25zLW90aGVyLXR5cGVzLXBvcHVwJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tY29udGFjdC1vcHRpb25zLW90aGVyLXR5cGVzLXBvcHVwLWNvbnRlbnRcIiBbb3ZlcmxheV09XCJwYXJlbnRGb3JPdmVybGF5XCIgW3JpZ2h0QWxpZ25dPVwidHJ1ZVwiIFtrZWVwSW5WaWV3XT1cInRydWVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwib3RoZXItdHlwZXMtd3JhcHBlclwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHR5cGVzXCIgKGNsaWNrKT1cInR5cGVDbGljay5lbWl0KHR5cGUudHlwZSlcIiBbY2xpY2tPdXRzaWRlXT1cInRydWVcIiAoY2xpY2tPdXRzaWRlKT1cImNsaWNrZWRPdXRzaWRlLmVtaXQoKVwiPlxyXG4gICAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKHR5cGUuaWNvbilcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdGhlci10eXBlLWxhYmVsXCIgW3RleHRDb250ZW50XT1cInR5cGUubGFiZWwgfCByZUxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gIGBcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlbGF0aW9uQ29udGFjdE9wdGlvbnNPdGhlclR5cGVzUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYXJlbnRGb3JPdmVybGF5OiBFbGVtZW50UmVmO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgdHlwZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q29tbXVuaWNhdGlvblR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tdW5pY2F0aW9uVHlwZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsaWNrZWRPdXRzaWRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28tcmVsYXRpb24tY29udGFjdC1vcHRpb25zLW90aGVyLXR5cGVzLXBvcHVwJylcclxuICBwdWJsaWMgc2hvd0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIHR5cGVzOiBvdGhlclR5cGVbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVsYXRpb25TZXJ2aWNlOiBSZWxhdGlvblNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50eXBlcy5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy50eXBlcy5wdXNoKFxyXG4gICAgICB7IHR5cGU6IENvbW11bmljYXRpb25UeXBlLkVtYWlsLCBpY29uOiB0aGlzLl9yZWxhdGlvblNlcnZpY2UuY29tbXVuaWNhdGlvblR5cGVJY29uLmdldChDb21tdW5pY2F0aW9uVHlwZS5FbWFpbCksIGxhYmVsOiB0aGlzLl9yZWxhdGlvblNlcnZpY2UuY29tbXVuaWNhdGlvblR5cGVMYWJlbC5nZXQoQ29tbXVuaWNhdGlvblR5cGUuRW1haWwpIH0sXHJcbiAgICAgIHsgdHlwZTogQ29tbXVuaWNhdGlvblR5cGUuVGVsZXBob25lLCBpY29uOiB0aGlzLl9yZWxhdGlvblNlcnZpY2UuY29tbXVuaWNhdGlvblR5cGVJY29uLmdldChDb21tdW5pY2F0aW9uVHlwZS5UZWxlcGhvbmUpLCBsYWJlbDogdGhpcy5fcmVsYXRpb25TZXJ2aWNlLmNvbW11bmljYXRpb25UeXBlTGFiZWwuZ2V0KENvbW11bmljYXRpb25UeXBlLlRlbGVwaG9uZSkgfSxcclxuICAgICAgeyB0eXBlOiBDb21tdW5pY2F0aW9uVHlwZS5Nb2JpbGUsIGljb246IHRoaXMuX3JlbGF0aW9uU2VydmljZS5jb21tdW5pY2F0aW9uVHlwZUljb24uZ2V0KENvbW11bmljYXRpb25UeXBlLk1vYmlsZSksIGxhYmVsOiB0aGlzLl9yZWxhdGlvblNlcnZpY2UuY29tbXVuaWNhdGlvblR5cGVMYWJlbC5nZXQoQ29tbXVuaWNhdGlvblR5cGUuTW9iaWxlKSB9LFxyXG4gICAgICB7IHR5cGU6IENvbW11bmljYXRpb25UeXBlLldlYnNpdGUsIGljb246IHRoaXMuX3JlbGF0aW9uU2VydmljZS5jb21tdW5pY2F0aW9uVHlwZUljb24uZ2V0KENvbW11bmljYXRpb25UeXBlLldlYnNpdGUpLCBsYWJlbDogdGhpcy5fcmVsYXRpb25TZXJ2aWNlLmNvbW11bmljYXRpb25UeXBlTGFiZWwuZ2V0KENvbW11bmljYXRpb25UeXBlLldlYnNpdGUpIH0sXHJcbiAgICAgIHsgdHlwZTogQ29tbXVuaWNhdGlvblR5cGUuRmF4LCBpY29uOiB0aGlzLl9yZWxhdGlvblNlcnZpY2UuY29tbXVuaWNhdGlvblR5cGVJY29uLmdldChDb21tdW5pY2F0aW9uVHlwZS5GYXgpLCBsYWJlbDogdGhpcy5fcmVsYXRpb25TZXJ2aWNlLmNvbW11bmljYXRpb25UeXBlTGFiZWwuZ2V0KENvbW11bmljYXRpb25UeXBlLkZheCkgfVxyXG4gICAgKVxyXG4gIH1cclxufVxyXG4iXX0=