@agorapulse/ui-components 0.0.2 → 13.0.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 (186) hide show
  1. package/agorapulse-ui-components-13.0.1.tgz +0 -0
  2. package/agorapulse-ui-components.d.ts +1 -5
  3. package/assets/{lib-ui-components/icons → icons}/facebook-icon.png +0 -0
  4. package/assets/{lib-ui-components/icons → icons}/google-icon.png +0 -0
  5. package/assets/{lib-ui-components/icons → icons}/instagram-icon.png +0 -0
  6. package/assets/{lib-ui-components/icons → icons}/linkedin-icon.png +0 -0
  7. package/assets/{lib-ui-components/icons → icons}/pinterest-icon.png +0 -0
  8. package/assets/{lib-ui-components/icons → icons}/twitter-icon.png +0 -0
  9. package/assets/{lib-ui-components/icons → icons}/youtube-icon.png +0 -0
  10. package/assets/{lib-ui-components/img → img}/default-avatar-organization.png +0 -0
  11. package/assets/{lib-ui-components/img → img}/default-avatar-user.png +0 -0
  12. package/assets/{lib-ui-components/img → img}/default-avatar.png +0 -0
  13. package/assets/{lib-ui-components/img → img}/spinner_animation.gif +0 -0
  14. package/esm2020/agorapulse-ui-components.mjs +5 -0
  15. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  16. package/esm2020/src/lib/add-comment/add-comment.component.mjs +62 -0
  17. package/esm2020/src/lib/agorapulse-ui-components.module.mjs +520 -0
  18. package/esm2020/src/lib/avatar/avatar.component.mjs +92 -0
  19. package/{esm2015/src/lib/confirm-modal/confirm-modal-texts.model.js → esm2020/src/lib/confirm-modal/confirm-modal-texts.model.mjs} +0 -0
  20. package/esm2020/src/lib/confirm-modal/confirm-modal.component.mjs +61 -0
  21. package/esm2020/src/lib/datepicker/datepicker.component.mjs +219 -0
  22. package/esm2020/src/lib/directives/autosize-textarea.directive.mjs +43 -0
  23. package/esm2020/src/lib/directives/default-image.directive.mjs +29 -0
  24. package/esm2020/src/lib/directives/ellipsis.directive.mjs +87 -0
  25. package/esm2020/src/lib/directives/equal-validator.directive.mjs +64 -0
  26. package/esm2020/src/lib/directives/frozen-gif.directive.mjs +116 -0
  27. package/esm2020/src/lib/directives/multi-style-text.directive.mjs +101 -0
  28. package/esm2020/src/lib/directives/truncate-tooltip.directive.mjs +33 -0
  29. package/esm2020/src/lib/dots-stepper/dots-stepper.component.mjs +43 -0
  30. package/esm2020/src/lib/edit-tag-modal/edit-tags-modal.component.mjs +147 -0
  31. package/{esm2015/src/lib/edit-tag-modal/model/edit-tags-modal.model.js → esm2020/src/lib/edit-tag-modal/model/edit-tags-modal.model.mjs} +0 -0
  32. package/esm2020/src/lib/feature-onboarding/feature-onboarding.component.mjs +35 -0
  33. package/esm2020/src/lib/image-carousel/image-carousel.component.mjs +152 -0
  34. package/{esm2015/src/lib/lead-modal/lead-info.model.js → esm2020/src/lib/lead-modal/lead-info.model.mjs} +0 -0
  35. package/esm2020/src/lib/lead-modal/lead-modal.component.mjs +49 -0
  36. package/esm2020/src/lib/media-display-overlay/media-display-overlay-dialog.component.mjs +87 -0
  37. package/esm2020/src/lib/modal/modal.component.mjs +96 -0
  38. package/esm2020/src/lib/notification/notification.component.mjs +17 -0
  39. package/esm2020/src/lib/overlay/overlay-dialog-service.component.mjs +61 -0
  40. package/esm2020/src/lib/overlay/overlay-dialog.component.mjs +33 -0
  41. package/esm2020/src/lib/overlay-in-div/overlay-in-div.component.mjs +27 -0
  42. package/esm2020/src/lib/paginator/paginator-button/paginator-button.component.mjs +23 -0
  43. package/esm2020/src/lib/paginator/paginator.component.mjs +54 -0
  44. package/esm2020/src/lib/password-input/password-input.component.mjs +68 -0
  45. package/esm2020/src/lib/password-strength-bar/password-strength-bar.component.mjs +83 -0
  46. package/esm2020/src/lib/password-strength-display-bar/password-strength-display-bar.component.mjs +45 -0
  47. package/esm2020/src/lib/phone-number-input/phone-number-input.component.mjs +144 -0
  48. package/esm2020/src/lib/places/place-list.component.mjs +11 -0
  49. package/esm2020/src/lib/places/place.component.mjs +14 -0
  50. package/{esm2015/src/lib/popmenu/options.js → esm2020/src/lib/popmenu/options.mjs} +0 -0
  51. package/{esm2015/src/lib/popmenu/popmenu-options.interface.js → esm2020/src/lib/popmenu/popmenu-options.interface.mjs} +0 -0
  52. package/{esm2015/src/lib/popmenu/popmenu-options.service.js → esm2020/src/lib/popmenu/popmenu-options.service.mjs} +0 -0
  53. package/esm2020/src/lib/popmenu/popmenu.component.mjs +344 -0
  54. package/esm2020/src/lib/popmenu/popmenu.directive.mjs +235 -0
  55. package/esm2020/src/lib/popmenu/popmenu.module.mjs +45 -0
  56. package/esm2020/src/lib/slide-toggle/slide-toggle.component.mjs +66 -0
  57. package/esm2020/src/lib/snackbar/snackbar.component.mjs +21 -0
  58. package/esm2020/src/lib/snackbars-thread/component/snackbars-thread.component.mjs +70 -0
  59. package/{esm2015/src/lib/snackbars-thread/model/snackbars-thread.model.js → esm2020/src/lib/snackbars-thread/model/snackbars-thread.model.mjs} +0 -0
  60. package/esm2020/src/lib/snackbars-thread/service/snackbars-thread.service.mjs +41 -0
  61. package/{esm2015/src/lib/snackbars-thread/utils/const/snackbars-thread.const.js → esm2020/src/lib/snackbars-thread/utils/const/snackbars-thread.const.mjs} +0 -0
  62. package/esm2020/src/lib/splashscreen/splashscreen.component.mjs +43 -0
  63. package/esm2020/src/lib/star-rating/star-rating.component.mjs +43 -0
  64. package/{esm2015/src/lib/stepper/step.model.js → esm2020/src/lib/stepper/step.model.mjs} +0 -0
  65. package/esm2020/src/lib/stepper/stepper.component.mjs +36 -0
  66. package/esm2020/src/lib/tags/tag-list.component.mjs +11 -0
  67. package/esm2020/src/lib/tags/tag.component.mjs +20 -0
  68. package/esm2020/src/lib/tags-selector/tags-selector.component.mjs +81 -0
  69. package/esm2020/src/lib/timepicker/timepicker.component.mjs +383 -0
  70. package/esm2020/src/lib/tooltip-neo/tooltip-neo.component.mjs +49 -0
  71. package/{esm2015/src/lib/tooltip-neo/tooltip-neo.const.js → esm2020/src/lib/tooltip-neo/tooltip-neo.const.mjs} +0 -0
  72. package/esm2020/src/lib/tooltip-neo/tooltip-neo.directive.mjs +114 -0
  73. package/{esm2015/src/lib/tooltip-neo/tooltip-neo.model.js → esm2020/src/lib/tooltip-neo/tooltip-neo.model.mjs} +0 -0
  74. package/esm2020/src/lib/tooltip-neo/tooltip-neo.service.mjs +17 -0
  75. package/{esm2015/src/lib/try-popup/try-popup-texts.model.js → esm2020/src/lib/try-popup/try-popup-texts.model.mjs} +0 -0
  76. package/esm2020/src/lib/try-popup/try-popup.component.mjs +37 -0
  77. package/fesm2015/agorapulse-ui-components.mjs +4191 -0
  78. package/fesm2015/agorapulse-ui-components.mjs.map +1 -0
  79. package/fesm2020/agorapulse-ui-components.mjs +4166 -0
  80. package/fesm2020/agorapulse-ui-components.mjs.map +1 -0
  81. package/package.json +30 -19
  82. package/src/lib/add-comment/add-comment.component.d.ts +3 -0
  83. package/src/lib/agorapulse-ui-components.module.d.ts +78 -0
  84. package/src/lib/avatar/avatar.component.d.ts +3 -0
  85. package/src/lib/confirm-modal/confirm-modal.component.d.ts +3 -0
  86. package/src/lib/datepicker/datepicker.component.d.ts +3 -0
  87. package/src/lib/directives/autosize-textarea.directive.d.ts +3 -0
  88. package/src/lib/directives/default-image.directive.d.ts +3 -0
  89. package/src/lib/directives/ellipsis.directive.d.ts +3 -0
  90. package/src/lib/directives/equal-validator.directive.d.ts +3 -0
  91. package/src/lib/directives/frozen-gif.directive.d.ts +3 -0
  92. package/src/lib/directives/multi-style-text.directive.d.ts +3 -0
  93. package/src/lib/directives/truncate-tooltip.directive.d.ts +3 -0
  94. package/src/lib/dots-stepper/dots-stepper.component.d.ts +3 -0
  95. package/src/lib/edit-tag-modal/edit-tags-modal.component.d.ts +3 -0
  96. package/src/lib/feature-onboarding/feature-onboarding.component.d.ts +3 -0
  97. package/src/lib/image-carousel/image-carousel.component.d.ts +3 -0
  98. package/src/lib/lead-modal/lead-modal.component.d.ts +3 -0
  99. package/src/lib/media-display-overlay/media-display-overlay-dialog.component.d.ts +3 -0
  100. package/src/lib/modal/modal.component.d.ts +3 -0
  101. package/src/lib/notification/notification.component.d.ts +3 -0
  102. package/src/lib/overlay/overlay-dialog-service.component.d.ts +3 -0
  103. package/src/lib/overlay/overlay-dialog.component.d.ts +3 -0
  104. package/src/lib/overlay-in-div/overlay-in-div.component.d.ts +3 -0
  105. package/src/lib/paginator/paginator-button/paginator-button.component.d.ts +3 -0
  106. package/src/lib/paginator/paginator.component.d.ts +3 -0
  107. package/src/lib/password-input/password-input.component.d.ts +3 -0
  108. package/src/lib/password-strength-bar/password-strength-bar.component.d.ts +3 -0
  109. package/src/lib/password-strength-display-bar/password-strength-display-bar.component.d.ts +3 -0
  110. package/src/lib/phone-number-input/phone-number-input.component.d.ts +3 -0
  111. package/src/lib/places/place-list.component.d.ts +3 -0
  112. package/src/lib/places/place.component.d.ts +3 -0
  113. package/src/lib/popmenu/popmenu.component.d.ts +3 -0
  114. package/src/lib/popmenu/popmenu.directive.d.ts +3 -0
  115. package/src/lib/popmenu/popmenu.module.d.ts +8 -0
  116. package/src/lib/slide-toggle/slide-toggle.component.d.ts +3 -0
  117. package/src/lib/snackbar/snackbar.component.d.ts +3 -0
  118. package/src/lib/snackbars-thread/component/snackbars-thread.component.d.ts +3 -0
  119. package/src/lib/snackbars-thread/service/snackbars-thread.service.d.ts +3 -0
  120. package/src/lib/splashscreen/splashscreen.component.d.ts +3 -0
  121. package/src/lib/star-rating/star-rating.component.d.ts +3 -0
  122. package/src/lib/stepper/stepper.component.d.ts +3 -0
  123. package/src/lib/tags/tag-list.component.d.ts +3 -0
  124. package/src/lib/tags/tag.component.d.ts +3 -0
  125. package/src/lib/tags-selector/tags-selector.component.d.ts +3 -0
  126. package/src/lib/timepicker/timepicker.component.d.ts +3 -0
  127. package/src/lib/tooltip-neo/tooltip-neo.component.d.ts +3 -0
  128. package/src/lib/tooltip-neo/tooltip-neo.directive.d.ts +20 -17
  129. package/src/lib/tooltip-neo/tooltip-neo.service.d.ts +3 -0
  130. package/src/lib/try-popup/try-popup.component.d.ts +3 -0
  131. package/agorapulse-ui-components-0.0.2.tgz +0 -0
  132. package/agorapulse-ui-components.metadata.json +0 -1
  133. package/bundles/agorapulse-ui-components.umd.js +0 -4448
  134. package/bundles/agorapulse-ui-components.umd.js.map +0 -1
  135. package/esm2015/agorapulse-ui-components.js +0 -10
  136. package/esm2015/src/lib/add-comment/add-comment.component.js +0 -54
  137. package/esm2015/src/lib/agorapulse-ui-components.module.js +0 -279
  138. package/esm2015/src/lib/avatar/avatar.component.js +0 -82
  139. package/esm2015/src/lib/confirm-modal/confirm-modal.component.js +0 -59
  140. package/esm2015/src/lib/datepicker/datepicker.component.js +0 -213
  141. package/esm2015/src/lib/directives/autosize-textarea.directive.js +0 -43
  142. package/esm2015/src/lib/directives/default-image.directive.js +0 -25
  143. package/esm2015/src/lib/directives/ellipsis.directive.js +0 -82
  144. package/esm2015/src/lib/directives/equal-validator.directive.js +0 -53
  145. package/esm2015/src/lib/directives/frozen-gif.directive.js +0 -113
  146. package/esm2015/src/lib/directives/multi-style-text.directive.js +0 -103
  147. package/esm2015/src/lib/directives/truncate-tooltip.directive.js +0 -36
  148. package/esm2015/src/lib/dots-stepper/dots-stepper.component.js +0 -41
  149. package/esm2015/src/lib/edit-tag-modal/edit-tags-modal.component.js +0 -129
  150. package/esm2015/src/lib/feature-onboarding/feature-onboarding.component.js +0 -35
  151. package/esm2015/src/lib/image-carousel/image-carousel.component.js +0 -143
  152. package/esm2015/src/lib/lead-modal/lead-modal.component.js +0 -47
  153. package/esm2015/src/lib/media-display-overlay/media-display-overlay-dialog.component.js +0 -87
  154. package/esm2015/src/lib/modal/modal.component.js +0 -88
  155. package/esm2015/src/lib/notification/notification.component.js +0 -18
  156. package/esm2015/src/lib/overlay/overlay-dialog-service.component.js +0 -62
  157. package/esm2015/src/lib/overlay/overlay-dialog.component.js +0 -33
  158. package/esm2015/src/lib/overlay-in-div/overlay-in-div.component.js +0 -23
  159. package/esm2015/src/lib/paginator/paginator-button/paginator-button.component.js +0 -22
  160. package/esm2015/src/lib/paginator/paginator.component.js +0 -47
  161. package/esm2015/src/lib/password-input/password-input.component.js +0 -65
  162. package/esm2015/src/lib/password-strength-bar/password-strength-bar.component.js +0 -82
  163. package/esm2015/src/lib/password-strength-display-bar/password-strength-display-bar.component.js +0 -41
  164. package/esm2015/src/lib/phone-number-input/phone-number-input.component.js +0 -123
  165. package/esm2015/src/lib/places/place-list.component.js +0 -12
  166. package/esm2015/src/lib/places/place.component.js +0 -15
  167. package/esm2015/src/lib/popmenu/popmenu.component.js +0 -322
  168. package/esm2015/src/lib/popmenu/popmenu.directive.js +0 -215
  169. package/esm2015/src/lib/popmenu/popmenu.module.js +0 -38
  170. package/esm2015/src/lib/slide-toggle/slide-toggle.component.js +0 -59
  171. package/esm2015/src/lib/snackbar/snackbar.component.js +0 -22
  172. package/esm2015/src/lib/snackbars-thread/component/snackbars-thread.component.js +0 -50
  173. package/esm2015/src/lib/snackbars-thread/service/snackbars-thread.service.js +0 -44
  174. package/esm2015/src/lib/splashscreen/splashscreen.component.js +0 -37
  175. package/esm2015/src/lib/star-rating/star-rating.component.js +0 -38
  176. package/esm2015/src/lib/stepper/stepper.component.js +0 -37
  177. package/esm2015/src/lib/tags/tag-list.component.js +0 -12
  178. package/esm2015/src/lib/tags/tag.component.js +0 -20
  179. package/esm2015/src/lib/tags-selector/tags-selector.component.js +0 -73
  180. package/esm2015/src/lib/timepicker/timepicker.component.js +0 -375
  181. package/esm2015/src/lib/tooltip-neo/tooltip-neo.component.js +0 -46
  182. package/esm2015/src/lib/tooltip-neo/tooltip-neo.directive.js +0 -107
  183. package/esm2015/src/lib/tooltip-neo/tooltip-neo.service.js +0 -15
  184. package/esm2015/src/lib/try-popup/try-popup.component.js +0 -33
  185. package/fesm2015/agorapulse-ui-components.js +0 -3805
  186. package/fesm2015/agorapulse-ui-components.js.map +0 -1
@@ -1,123 +0,0 @@
1
- import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';
2
- import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- export class PhoneNumberInputComponent {
4
- constructor() {
5
- this.changePhoneNumber = new EventEmitter();
6
- this.changePhoneNumberCode = new EventEmitter();
7
- this.currentPhoneNumberCode = '';
8
- this.currentPhoneNumber = '';
9
- this.codeValid = false;
10
- this.numberValid = false;
11
- this.valid = false;
12
- this.onTouched = () => { };
13
- this.onChanged = () => { };
14
- }
15
- set phoneNumber(phoneNumber) {
16
- this.updatePhone(undefined, phoneNumber, false);
17
- }
18
- set phoneNumberCode(phoneNumberCode) {
19
- this.updatePhone(phoneNumberCode, undefined, false);
20
- }
21
- ngOnChanges(changes) {
22
- this.checkValidation();
23
- }
24
- ngOnInit() {
25
- this.checkValidation();
26
- }
27
- filterChars(event) {
28
- const pattern = /[0-9]/;
29
- const inputChar = String.fromCharCode(event.charCode);
30
- if (!pattern.test(inputChar)) {
31
- event.preventDefault();
32
- }
33
- }
34
- onChangePhoneNumberCode(code) {
35
- this.updatePhone(code, undefined);
36
- }
37
- onChangePhoneNumber(phoneNumber) {
38
- this.updatePhone(undefined, phoneNumber);
39
- }
40
- updatePhone(code, phoneNumber, emitOnChange = true) {
41
- let updated = false;
42
- if (code !== undefined && code !== this.currentPhoneNumberCode) {
43
- this.currentPhoneNumberCode = code;
44
- this.changePhoneNumberCode.emit(code);
45
- updated = true;
46
- }
47
- if (phoneNumber !== undefined && phoneNumber !== this.currentPhoneNumber) {
48
- this.currentPhoneNumber = phoneNumber;
49
- this.changePhoneNumber.emit(phoneNumber);
50
- updated = true;
51
- }
52
- if (updated) {
53
- this.checkValidation();
54
- if (emitOnChange) {
55
- this.onChanged({
56
- phoneNumber: this.currentPhoneNumber,
57
- phoneNumberCode: this.currentPhoneNumberCode
58
- });
59
- }
60
- }
61
- }
62
- registerOnChange(fn) {
63
- this.onChanged = fn;
64
- }
65
- registerOnTouched(fn) {
66
- this.onTouched = fn;
67
- }
68
- validate(control) {
69
- return (!this.required || this.valid) ? null : { phoneNumber: 'invalid' };
70
- }
71
- writeValue(phone) {
72
- if (!phone) {
73
- this.updatePhone('', '', false);
74
- }
75
- else if ('phoneNumber' in phone && 'phoneNumberCode' in phone) {
76
- this.updatePhone(phone.phoneNumberCode, phone.phoneNumber, false);
77
- }
78
- else {
79
- console.error('Phone number input ignored, wrong format: ' + JSON.stringify(phone));
80
- }
81
- }
82
- phoneNumberCodeSearchFn(term, item) {
83
- term = term.toLocaleLowerCase();
84
- return item.countryName.toLocaleLowerCase().indexOf(term) > -1 || item.phoneNumberCode.toLocaleLowerCase().indexOf(term) > -1;
85
- }
86
- checkValidation() {
87
- this.codeValid = !this.required || (this.currentPhoneNumberCode && this.currentPhoneNumberCode.length > 0);
88
- this.numberValid = !this.required || (this.currentPhoneNumber && this.currentPhoneNumber.length > 0);
89
- this.valid = this.codeValid && this.numberValid;
90
- }
91
- }
92
- PhoneNumberInputComponent.decorators = [
93
- { type: Component, args: [{
94
- selector: 'ap-phone-number-input',
95
- template: "<div class=\"main-container\">\n <ng-select\n #phoneNumberCodeInput=\"ngModel\"\n name=\"phoneNumberCodeInput\"\n class=\"phone-select\"\n [ngClass]=\"{ 'invalid': (!codeValid) && (submitted || phoneNumberCodeInput.touched), 'valid' : statusOk && codeValid && phoneNumberCodeInput.touched}\"\n [items]=\"phoneNumberInfos\"\n bindLabel=\"countryName\"\n bindValue=\"phoneNumberCode\"\n [clearable]=\"false\"\n [searchable]=\"true\"\n [searchFn]=\"phoneNumberCodeSearchFn\"\n (ngModelChange)=\"onChangePhoneNumberCode($event)\"\n (focusin)=\"this.onTouched()\"\n [ngModel]=\"currentPhoneNumberCode\">\n <ng-template\n ng-label-tmp\n let-item=\"item\">\n <div\n *ngIf=\"item && item.countryCode\"\n class=\"flag\">\n <img *ngIf=\"!!flagsBucketUrl\" [src]=\"flagsBucketUrl+'/' + item.countryCode.toUpperCase() + '.png'\" width=\"24\" alt=\"flag\">\n <span *ngIf=\"!flagsBucketUrl\">{{ item.countryCode }}</span>\n </div>\n </ng-template>\n <ng-template\n ng-option-tmp\n let-item=\"item\">\n <div> {{ item.countryName }} - {{item.phoneNumberCode}}</div>\n </ng-template>\n </ng-select>\n <div\n class=\"code-container\"\n [ngClass]=\"{ 'invalid': (!numberValid) && (submitted || phoneNumberInput.touched), 'valid' : statusOk && numberValid && phoneNumberInput.touched }\">\n <span *ngIf=\"currentPhoneNumberCode\">\n ({{currentPhoneNumberCode}})\n </span>\n </div>\n <div\n class=\"separator-container\"\n [ngClass]=\"{ 'invalid': (!numberValid) && (submitted || phoneNumberInput.touched), 'valid' : statusOk && numberValid && phoneNumberInput.touched }\">\n <div class=\"separator\"></div>\n </div>\n <div\n class=\"input-wrapper\"\n [ngClass]=\"{ 'invalid': (!numberValid) && (submitted || phoneNumberInput.touched), 'valid' : statusOk && numberValid && phoneNumberInput.touched}\">\n <input\n #phoneNumberInput=\"ngModel\"\n name=\"phoneNumberInput\"\n type=\"tel\"\n data-recurly=\"phone\"\n class=\"flex-2 phone-field\"\n [ngModel]=\"currentPhoneNumber\"\n (keypress)=\"filterChars($event)\"\n (ngModelChange)=\"onChangePhoneNumber($event)\"\n (focusin)=\"onTouched()\">\n </div>\n</div>\n<div class=\"form-field-message invalid\"\n [hidden]=\"!(!valid && (submitted || phoneNumberInput.touched))\">\n {{ requiredLabel }}\n</div>\n",
96
- providers: [
97
- {
98
- provide: NG_VALUE_ACCESSOR,
99
- useExisting: forwardRef(() => PhoneNumberInputComponent),
100
- multi: true
101
- },
102
- {
103
- provide: NG_VALIDATORS,
104
- useExisting: forwardRef(() => PhoneNumberInputComponent),
105
- multi: true
106
- }
107
- ],
108
- styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid red}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #fff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:#0000}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:initial}[border=transparent]{border:1px solid #0000}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}.main-container{display:flex}.main-container div.code-container{border-top:1px solid #d6dae0;border-left:1px solid #d6dae0;border-bottom:1px solid #d6dae0;border-right-width:0;border-top-left-radius:4px;border-bottom-left-radius:4px;color:#344563;flex:1 0 auto;display:flex;font-weight:400;font-size:14px;justify-content:center;margin-left:8px;min-width:32px;padding:8px 0 8px 16px;text-align:center;background-color:#fff}.main-container div.code-container.invalid{border-top-color:#e81313;border-left-color:#e81313;border-bottom-color:#e81313}.main-container div.code-container.valid{border-top-color:#45b854;border-left-color:#45b854;border-bottom-color:#45b854}.main-container div.code-container span{margin-top:auto;margin-bottom:auto}.main-container div.separator-container{display:flex;flex-direction:column;justify-content:center;align-content:center;background-color:#fff;border-bottom:1px solid #d6dae0;border-top:1px solid #d6dae0;min-height:30px;padding-right:8px;padding-left:6px;width:4px}.main-container div.separator-container.invalid{border-bottom-color:#e81313;border-top-color:#e81313}.main-container div.separator-container.valid{border-bottom-color:#45b854;border-top-color:#45b854}.main-container div.separator-container div.separator{border-right:1px solid #f5f5f7;height:16px}.main-container .input-wrapper{background-color:#fff;border-top:1px solid #d6dae0;border-right:1px solid #d6dae0;border-bottom:1px solid #d6dae0;border-left-width:0;border-radius:0 4px 4px 0;padding:8px 0;width:100%}.main-container .input-wrapper.invalid{border-bottom-color:#e81313;border-top-color:#e81313;border-right-color:#e81313}.main-container .input-wrapper.valid{border-bottom-color:#45b854;border-top-color:#45b854;border-right-color:#45b854}.main-container .input-wrapper input.phone-field{border:none;color:#344563;font-style:normal;font-weight:400;font-size:14px;height:100%;padding:0;width:inherit}.main-container .phone-select{flex:1 0 auto;width:70px}.main-container .phone-select ::ng-deep .ng-input{padding:2px 16px}.main-container .phone-select ::ng-deep .ng-dropdown-panel{width:auto}.main-container .phone-select .flag{display:flex}"]
109
- },] }
110
- ];
111
- PhoneNumberInputComponent.propDecorators = {
112
- flagsBucketUrl: [{ type: Input }],
113
- phoneNumberInfos: [{ type: Input }],
114
- phoneNumber: [{ type: Input }],
115
- phoneNumberCode: [{ type: Input }],
116
- required: [{ type: Input }],
117
- requiredLabel: [{ type: Input }],
118
- submitted: [{ type: Input }],
119
- statusOk: [{ type: Input }],
120
- changePhoneNumber: [{ type: Output }],
121
- changePhoneNumberCode: [{ type: Output }]
122
- };
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9zcmMvbGliL3Bob25lLW51bWJlci1pbnB1dC9waG9uZS1udW1iZXItaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHSCxhQUFhLEVBQ2IsaUJBQWlCLEVBR3BCLE1BQU0sZ0JBQWdCLENBQUM7QUE4QnhCLE1BQU0sT0FBTyx5QkFBeUI7SUFqQnRDO1FBZ0NjLHNCQUFpQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3JFLDBCQUFxQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRW5GLDJCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUM1Qix1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFFeEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBRVAsY0FBUyxHQUFlLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUVqQyxjQUFTLEdBQXlCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQW1GdEQsQ0FBQztJQTFHRyxJQUFhLFdBQVcsQ0FBQyxXQUFtQjtRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNELElBQWEsZUFBZSxDQUFDLGVBQXVCO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBb0JELFdBQVcsQ0FBQyxPQUFzQjtRQUM5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QkFHTCxLQUFLO3VCQUdMLEtBQUs7NEJBQ0wsS0FBSzt3QkFDTCxLQUFLO3VCQUNMLEtBQUs7Z0NBRUwsTUFBTTtvQ0FDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0Q29udHJvbCxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIFZhbGlkYXRpb25FcnJvcnMsXG4gICAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGludGVyZmFjZSBQaG9uZU51bWJlckluZm8ge1xuICAgIGNvdW50cnlDb2RlOiBzdHJpbmc7XG4gICAgY291bnRyeU5hbWU6IHN0cmluZztcbiAgICBwaG9uZU51bWJlckNvZGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaG9uZSB7XG4gICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICBwaG9uZU51bWJlckNvZGU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcC1waG9uZS1udW1iZXItaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAncGhvbmUtbnVtYmVyLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsncGhvbmUtbnVtYmVyLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGhvbmVOdW1iZXJJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGhvbmVOdW1iZXJJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQaG9uZU51bWJlcklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuXG4gICAgQElucHV0KCkgZmxhZ3NCdWNrZXRVcmw6IHN0cmluZztcbiAgICBASW5wdXQoKSBwaG9uZU51bWJlckluZm9zOiBQaG9uZU51bWJlckluZm9bXTtcbiAgICBASW5wdXQoKSBzZXQgcGhvbmVOdW1iZXIocGhvbmVOdW1iZXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVwZGF0ZVBob25lKHVuZGVmaW5lZCwgcGhvbmVOdW1iZXIsIGZhbHNlKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IHBob25lTnVtYmVyQ29kZShwaG9uZU51bWJlckNvZGU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnVwZGF0ZVBob25lKHBob25lTnVtYmVyQ29kZSwgdW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJlcXVpcmVkTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc3RhdHVzT2s6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgY2hhbmdlUGhvbmVOdW1iZXI6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGNoYW5nZVBob25lTnVtYmVyQ29kZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIGN1cnJlbnRQaG9uZU51bWJlckNvZGUgPSAnJztcbiAgICBjdXJyZW50UGhvbmVOdW1iZXIgPSAnJztcblxuICAgIGNvZGVWYWxpZCA9IGZhbHNlO1xuICAgIG51bWJlclZhbGlkID0gZmFsc2U7XG4gICAgdmFsaWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHB1YmxpYyBvbkNoYW5nZWQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tWYWxpZGF0aW9uKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tWYWxpZGF0aW9uKCk7XG4gICAgfVxuXG4gICAgZmlsdGVyQ2hhcnMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPSAvWzAtOV0vO1xuICAgICAgICBjb25zdCBpbnB1dENoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChldmVudCBhcyBLZXlib2FyZEV2ZW50KS5jaGFyQ29kZSk7XG4gICAgICAgIGlmICghcGF0dGVybi50ZXN0KGlucHV0Q2hhcikpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoYW5nZVBob25lTnVtYmVyQ29kZShjb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVQaG9uZShjb2RlLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlUGhvbmVOdW1iZXIocGhvbmVOdW1iZXI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVBob25lKHVuZGVmaW5lZCwgcGhvbmVOdW1iZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUGhvbmUoY29kZTogc3RyaW5nLCBwaG9uZU51bWJlcjogc3RyaW5nLCBlbWl0T25DaGFuZ2U6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGxldCB1cGRhdGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChjb2RlICE9PSB1bmRlZmluZWQgJiYgY29kZSAhPT0gdGhpcy5jdXJyZW50UGhvbmVOdW1iZXJDb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQaG9uZU51bWJlckNvZGUgPSBjb2RlO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VQaG9uZU51bWJlckNvZGUuZW1pdChjb2RlKTtcbiAgICAgICAgICAgIHVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwaG9uZU51bWJlciAhPT0gdW5kZWZpbmVkICYmIHBob25lTnVtYmVyICE9PSB0aGlzLmN1cnJlbnRQaG9uZU51bWJlcikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50UGhvbmVOdW1iZXIgPSBwaG9uZU51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUGhvbmVOdW1iZXIuZW1pdChwaG9uZU51bWJlcik7XG4gICAgICAgICAgICB1cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1cGRhdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrVmFsaWRhdGlvbigpO1xuXG4gICAgICAgICAgICBpZiAoZW1pdE9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZWQoe1xuICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogdGhpcy5jdXJyZW50UGhvbmVOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyQ29kZTogdGhpcy5jdXJyZW50UGhvbmVOdW1iZXJDb2RlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlZCA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAoIXRoaXMucmVxdWlyZWQgfHwgdGhpcy52YWxpZCkgPyBudWxsIDoge3Bob25lTnVtYmVyOiAnaW52YWxpZCd9O1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUocGhvbmU6IFBob25lIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIXBob25lKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBob25lKCcnLCAnJywgZmFsc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKCdwaG9uZU51bWJlcicgaW4gcGhvbmUgJiYgJ3Bob25lTnVtYmVyQ29kZScgaW4gcGhvbmUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUGhvbmUocGhvbmUucGhvbmVOdW1iZXJDb2RlLCBwaG9uZS5waG9uZU51bWJlciwgZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignUGhvbmUgbnVtYmVyIGlucHV0IGlnbm9yZWQsIHdyb25nIGZvcm1hdDogJyAgKyBKU09OLnN0cmluZ2lmeShwaG9uZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcGhvbmVOdW1iZXJDb2RlU2VhcmNoRm4odGVybTogc3RyaW5nLCBpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgdGVybSA9IHRlcm0udG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGl0ZW0uY291bnRyeU5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmRleE9mKHRlcm0pID4gLTEgfHwgaXRlbS5waG9uZU51bWJlckNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmRleE9mKHRlcm0pID4gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1ZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29kZVZhbGlkID0gIXRoaXMucmVxdWlyZWQgfHwgKHRoaXMuY3VycmVudFBob25lTnVtYmVyQ29kZSAmJiB0aGlzLmN1cnJlbnRQaG9uZU51bWJlckNvZGUubGVuZ3RoID4gMCk7XG4gICAgICAgIHRoaXMubnVtYmVyVmFsaWQgPSAhdGhpcy5yZXF1aXJlZCB8fCAodGhpcy5jdXJyZW50UGhvbmVOdW1iZXIgJiYgdGhpcy5jdXJyZW50UGhvbmVOdW1iZXIubGVuZ3RoID4gMCk7XG4gICAgICAgIHRoaXMudmFsaWQgPSB0aGlzLmNvZGVWYWxpZCAmJiB0aGlzLm51bWJlclZhbGlkO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,12 +0,0 @@
1
- import { ChangeDetectionStrategy, Component } from '@angular/core';
2
- export class PlaceListComponent {
3
- }
4
- PlaceListComponent.decorators = [
5
- { type: Component, args: [{
6
- changeDetection: ChangeDetectionStrategy.OnPush,
7
- selector: 'ap-place-list',
8
- template: "<div class=\"place-list\">\n <ng-content></ng-content>\n</div>\n",
9
- styles: [".place-list{display:flex;flex-wrap:wrap;justify-content:center;margin-bottom:-4px;margin-right:-16px}"]
10
- },] }
11
- ];
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvc3JjL2xpYi9wbGFjZXMvcGxhY2UtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQVFqRSxNQUFNLE9BQU8sa0JBQWtCOzs7WUFOOUIsU0FBUyxTQUFDO2dCQUNQLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxRQUFRLEVBQUUsZUFBZTtnQkFDekIsK0VBQTBDOzthQUU3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtcGxhY2UtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3BsYWNlLWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQbGFjZUxpc3RDb21wb25lbnQge1xuXG59XG4iXX0=
@@ -1,15 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- export class PlaceComponent {
3
- }
4
- PlaceComponent.decorators = [
5
- { type: Component, args: [{
6
- changeDetection: ChangeDetectionStrategy.OnPush,
7
- selector: 'ap-place',
8
- template: "<div class=\"place\">\n <ap-symbol\n [symbolId]=\"service + '-official'\"\n [size]=\"'micro'\">\n </ap-symbol>\n <ng-content></ng-content>\n</div>\n",
9
- styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid red}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #fff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:#0000}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:initial}[border=transparent]{border:1px solid #0000}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}.place{margin-right:16px;padding-bottom:4px;color:#344563;text-wrap:none;display:flex}.place ap-symbol{margin-right:8px}"]
10
- },] }
11
- ];
12
- PlaceComponent.propDecorators = {
13
- service: [{ type: Input }]
14
- };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL3NyYy9saWIvcGxhY2VzL3BsYWNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQVF4RSxNQUFNLE9BQU8sY0FBYzs7O1lBTjFCLFNBQVMsU0FBQztnQkFDUCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLHVMQUFxQzs7YUFFeEM7OztzQkFHSSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtcGxhY2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wbGFjZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGxhY2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQbGFjZUNvbXBvbmVudCB7XG5cbiAgICBASW5wdXQoKSBzZXJ2aWNlOiBzdHJpbmc7XG59XG4iXX0=
@@ -1,322 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, ViewChild } from '@angular/core';
2
- import { MatMenuTrigger } from '@angular/material/menu';
3
- export class PopmenuComponent {
4
- constructor(renderer, elementRef, changeDetectorRef) {
5
- this.renderer = renderer;
6
- this.elementRef = elementRef;
7
- this.changeDetectorRef = changeDetectorRef;
8
- this.events = new EventEmitter();
9
- this.arrowTopPosition = '50%';
10
- this.arrowBottomPosition = '50%';
11
- this.menuClosed = new EventEmitter();
12
- this.menuOpened = new EventEmitter();
13
- this.viewInit = false;
14
- this._show = false;
15
- }
16
- get show() {
17
- return this._show;
18
- }
19
- set show(value) {
20
- if (value) {
21
- this.setPosition();
22
- }
23
- this._show = value;
24
- }
25
- set close(value) {
26
- if (value) {
27
- this.trigger.closeMenu();
28
- }
29
- }
30
- get arrow() {
31
- return this.data.options.arrow && this.border;
32
- }
33
- get arrowOffset() {
34
- return this.data.options.arrowOffset;
35
- }
36
- get arrowPosition() {
37
- return this.data.options.arrowPosition;
38
- }
39
- get autoPlacement() {
40
- return this.data.options.autoPlacement;
41
- }
42
- get background() {
43
- return this.data.options.apPopmenuBackground;
44
- }
45
- get border() {
46
- return this.data.options.apPopmenuBorder;
47
- }
48
- get element() {
49
- return this.data.element;
50
- }
51
- get elementPosition() {
52
- return this.data.elementPosition;
53
- }
54
- get hasBackdrop() {
55
- return this.data.options.hasBackdrop;
56
- }
57
- get isThemeLight() {
58
- return this.options['theme'] === 'light';
59
- }
60
- get options() {
61
- return this.data.options;
62
- }
63
- get placement() {
64
- return this.data.options.placement;
65
- }
66
- get rounded() {
67
- return this.data.options.rounded;
68
- }
69
- get shadow() {
70
- return this.data.options.shadow;
71
- }
72
- get tooltipOffset() {
73
- return Number(this.data.options.offset);
74
- }
75
- get value() {
76
- return this.data.value;
77
- }
78
- ngAfterViewInit() {
79
- this.viewInit = true;
80
- }
81
- onMenuClosed() {
82
- // we set a timeout to wait for the menu to be really closed
83
- setTimeout(() => this.menuClosed.emit(), 200);
84
- }
85
- onMenuOpened() {
86
- // we set a timeout to wait for the menu to be really opened
87
- setTimeout(() => this.menuOpened.emit(), 100);
88
- }
89
- setHostStyle(placement) {
90
- const isSvg = this.element instanceof SVGElement;
91
- const tooltip = this.elementRef.nativeElement;
92
- const isCustomPosition = !this.elementPosition.x;
93
- let elementHeight = !this.element.offsetHeight ? this.element.getBoundingClientRect().height : this.element.offsetHeight;
94
- let elementWidth = !this.element.offsetWidth ? this.element.getBoundingClientRect().width : this.element.offsetWidth;
95
- const tooltipHeight = tooltip.clientHeight;
96
- const tooltipWidth = tooltip.clientWidth;
97
- const scrollY = window.pageYOffset;
98
- let topStyle;
99
- let leftStyle;
100
- if (isCustomPosition) {
101
- if (placement && placement.split(' ')[0] === 'top') {
102
- this.below = false;
103
- }
104
- if (placement && placement.split(' ')[0] === 'bottom') {
105
- this.below = true;
106
- }
107
- elementHeight = 0;
108
- elementWidth = 0;
109
- topStyle = this.elementPosition.top;
110
- leftStyle = this.elementPosition.left;
111
- if (this.arrow && this.arrowPosition) {
112
- this.arrowClass = 'arrow-' + this.arrowPosition;
113
- switch (this.arrowPosition) {
114
- case 'left':
115
- case 'right':
116
- this.arrowLeftPosition = undefined;
117
- this.arrowRightPosition = undefined;
118
- this.arrowBottomPosition = 'auto';
119
- this.arrowTopPosition = this.arrowOffset + '%';
120
- break;
121
- case 'top':
122
- case 'bottom':
123
- this.arrowLeftPosition = this.arrowOffset + '%';
124
- this.arrowRightPosition = 'auto';
125
- this.arrowBottomPosition = undefined;
126
- this.arrowTopPosition = undefined;
127
- break;
128
- }
129
- }
130
- }
131
- else {
132
- if (placement.split(' ')[0] === 'top') {
133
- this.below = false;
134
- topStyle = this.elementPosition.top - this.tooltipOffset;
135
- topStyle += 8;
136
- }
137
- if (placement.split(' ')[0] === 'bottom') {
138
- this.below = true;
139
- topStyle = this.elementPosition.bottom + this.tooltipOffset;
140
- // We remove 8px due to the margin-top we put to display the arrow.
141
- topStyle -= 8;
142
- }
143
- if (placement.split(' ')[0] === 'left') {
144
- leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;
145
- }
146
- if (placement.split(' ')[0] === 'right') {
147
- leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;
148
- }
149
- if (placement.split(' ')[0] === 'left' || placement.split(' ')[0] === 'right') {
150
- topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltip.clientHeight / 2;
151
- }
152
- if (placement === 'right bottom') {
153
- this.below = true;
154
- this.before = false;
155
- this.arrowClass = 'arrow-left';
156
- topStyle = (this.elementPosition.top + scrollY);
157
- this.arrowRightPosition = undefined;
158
- this.arrowLeftPosition = undefined;
159
- this.arrowBottomPosition = 'auto';
160
- this.arrowTopPosition = this.arrowOffset ? (this.arrowOffset + '%') : (elementHeight / 2 + 'px');
161
- }
162
- if (placement === 'left bottom') {
163
- this.below = true;
164
- this.before = true;
165
- this.arrowClass = 'arrow-right';
166
- topStyle = (this.elementPosition.top + scrollY);
167
- this.arrowLeftPosition = undefined;
168
- this.arrowRightPosition = undefined;
169
- this.arrowBottomPosition = 'auto';
170
- this.arrowTopPosition = this.arrowOffset ? (this.arrowOffset + '%') : (elementHeight / 2 + 'px');
171
- }
172
- if (placement === 'right top') {
173
- this.below = false;
174
- this.before = false;
175
- this.arrowClass = 'arrow-left';
176
- topStyle = (this.elementPosition.top + elementHeight + scrollY);
177
- this.arrowLeftPosition = undefined;
178
- this.arrowRightPosition = undefined;
179
- this.arrowTopPosition = 'auto';
180
- this.arrowBottomPosition = this.arrowOffset ? (this.arrowOffset + '%') : (-(tooltip.clientHeight - elementHeight / 2) + 'px');
181
- }
182
- if (placement === 'left top') {
183
- this.below = false;
184
- this.before = true;
185
- this.arrowClass = 'arrow-right';
186
- topStyle = (this.elementPosition.top + elementHeight + scrollY);
187
- this.arrowRightPosition = undefined;
188
- this.arrowLeftPosition = undefined;
189
- this.arrowTopPosition = 'auto';
190
- this.arrowBottomPosition = this.arrowOffset ? (this.arrowOffset + '%') : (-(tooltip.clientHeight - elementHeight / 2) + 'px');
191
- }
192
- if (placement === 'bottom right') {
193
- this.before = false;
194
- this.below = true;
195
- this.arrowClass = 'arrow-top';
196
- leftStyle = this.elementPosition.left;
197
- this.arrowTopPosition = undefined;
198
- this.arrowRightPosition = 'auto';
199
- this.arrowLeftPosition = this.arrowOffset ? (this.arrowOffset + '%') : (((elementWidth / 2) - 4.5) + 'px');
200
- }
201
- if (placement === 'bottom left') {
202
- this.before = true;
203
- this.below = true;
204
- this.arrowClass = 'arrow-top';
205
- leftStyle = this.elementPosition.right;
206
- this.arrowTopPosition = undefined;
207
- this.arrowLeftPosition = 'auto';
208
- this.arrowRightPosition = this.arrowOffset ? (this.arrowOffset + '%') : (((elementWidth / 2) - 2.5) + 'px');
209
- }
210
- if (placement === 'top right') {
211
- this.before = false;
212
- this.below = false;
213
- this.arrowClass = 'arrow-bottom';
214
- leftStyle = this.elementPosition.left;
215
- this.arrowBottomPosition = undefined;
216
- this.arrowTopPosition = undefined;
217
- this.arrowRightPosition = 'auto';
218
- this.arrowLeftPosition = this.arrowOffset ? (this.arrowOffset + '%') : (((elementWidth / 2) - 4.5) + 'px');
219
- }
220
- if (placement === 'top left') {
221
- this.before = true;
222
- this.below = false;
223
- this.arrowClass = 'arrow-bottom';
224
- leftStyle = this.elementPosition.right;
225
- this.arrowBottomPosition = undefined;
226
- this.arrowTopPosition = undefined;
227
- this.arrowLeftPosition = 'auto';
228
- this.arrowRightPosition = this.arrowOffset ? (this.arrowOffset + '%') : (((elementWidth / 2) - 2.5) + 'px');
229
- }
230
- }
231
- // This line is PURE MAGIC and super important. It allows to force mat-menu
232
- // to reposition the menu with the new xPosition / yPosition.
233
- this.changeDetectorRef.detectChanges();
234
- const topEdge = topStyle;
235
- const bottomEdge = topStyle + tooltipHeight;
236
- const leftEdge = leftStyle;
237
- const rightEdge = leftStyle + tooltipWidth;
238
- if ((topEdge < 0 || bottomEdge > document.body.clientHeight ||
239
- leftEdge < 0 || rightEdge > document.body.clientWidth) && this.autoPlacement) {
240
- return false;
241
- }
242
- this.hostStyleTop = topStyle + 'px';
243
- this.hostStyleLeft = leftStyle + 'px';
244
- return true;
245
- }
246
- setPlacementClass(placement) {
247
- this.renderer.addClass(this.elementRef.nativeElement, 'tooltip-' + (placement ? placement.split(' ')[0] : placement));
248
- this.renderer.addClass(this.elementRef.nativeElement, 'yPosition-' +
249
- (placement && placement.split(' ').length === 2 ? placement.split(' ')[1] : 'center'));
250
- if (this.elementRef.nativeElement.children && this.elementRef.nativeElement.children.length > 1) {
251
- const tooltipArrow = Array.from(this.elementRef.nativeElement.children).filter((child) => child.getAttribute('id') === 'tooltipArrow');
252
- if (tooltipArrow && tooltipArrow.length === 1) {
253
- if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'bottom') {
254
- this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowTopPosition);
255
- }
256
- else if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'top') {
257
- this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowBottomPosition);
258
- }
259
- }
260
- }
261
- }
262
- setPosition() {
263
- if (this.setHostStyle(this.placement)) {
264
- this.setPlacementClass(this.placement);
265
- if (this.viewInit) {
266
- // We did this in order to reset overlayRef (multi web component needed with matmenu and cdk overlay)
267
- if (this.trigger["_overlayRef"]) {
268
- this.trigger["_overlayRef"].dispose();
269
- this.trigger["_overlayRef"] = null;
270
- }
271
- this.trigger.openMenu();
272
- }
273
- return;
274
- }
275
- else {
276
- const placements = ['top', 'right', 'bottom', 'left'];
277
- for (const placement of placements) {
278
- if (this.setHostStyle(placement)) {
279
- this.setPlacementClass(placement);
280
- if (this.viewInit) {
281
- this.trigger.openMenu();
282
- }
283
- return;
284
- }
285
- }
286
- }
287
- }
288
- }
289
- PopmenuComponent.decorators = [
290
- { type: Component, args: [{
291
- changeDetection: ChangeDetectionStrategy.OnPush,
292
- selector: 'ap-popmenu',
293
- template: "<button id=\"menuTrigger\" class=\"button-trigger\" mat-button\n [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (menuOpened)=\"onMenuOpened()\">\n</button>\n<mat-menu #menu=\"matMenu\" [yPosition]=\"!below ? 'above': 'below'\" [xPosition]=\"!before? 'after': 'before'\" [overlapTrigger]=\"false\"\n [hasBackdrop]=\"hasBackdrop\"\n class=\"pop-menu {{arrow ? 'arrow-before ' + arrowClass : ''}} {{shadow ? 'shadow' : ''}} {{border ? '' : (shadow ? 'shadow-no-border' : '')}} {{rounded ? 'rounded-component' : ''}} {{ background ? '' : 'no-background'}}\">\n\n <div *ngIf=\"arrow\" class=\"{{arrow ? 'arrow-before ' + arrowClass : ''}}\" [ngStyle]=\"{'left': arrowLeftPosition, 'right': arrowRightPosition, 'top': arrowTopPosition, 'bottom': arrowBottomPosition}\"></div>\n <div (click)=\"$event.stopPropagation()\" class=\"{{rounded ? 'rounded-component' : ''}} outline-none\">\n <div class=\"{{border ? 'popover-content ' : ''}} {{rounded ? 'rounded-component' : ''}}\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n </div>\n </div>\n</mat-menu>\n\n\n",
294
- styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid red}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #fff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:#0000}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:initial}[border=transparent]{border:1px solid #0000}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}.mat-menu-content{padding:0}.mat-menu-item{height:inherit;width:inherit;background-color:#fff;padding:0;cursor:default;box-shadow:0 4px 10px 0 #0000001c}.mat-menu-item:hover{background-color:#fff!important;cursor:default;box-shadow:none!important}.outline-none{outline:none}.mat-menu-item-highlighted:not([disabled]),.mat-menu-item.cdk-keyboard-focused:not([disabled]),.mat-menu-item.cdk-program-focused:not([disabled]),.mat-menu-item:hover:not([disabled]){background-color:#fff!important;cursor:default;box-shadow:none!important}:host ::ng-deep .mat-button{max-width:1px;max-height:1px;min-width:1px;min-height:1px;padding:0;margin:0}:host{position:absolute;max-width:1px;max-height:1px;display:flex}.button-trigger{padding:0;border:none;height:1px;width:1px}::ng-deep .rounded-component .mat-menu-content{border-radius:4px}::ng-deep .rounded-component{border-radius:4px}::ng-deep .no-background .rounded-component{position:fixed}.popover-content{border:1px solid #dfe3e9}"]
295
- },] }
296
- ];
297
- /** @nocollapse */
298
- PopmenuComponent.ctorParameters = () => [
299
- { type: Renderer2 },
300
- { type: ElementRef },
301
- { type: ChangeDetectorRef }
302
- ];
303
- PopmenuComponent.propDecorators = {
304
- data: [{ type: Input }],
305
- menuClosed: [{ type: Output }],
306
- menuOpened: [{ type: Output }],
307
- trigger: [{ type: ViewChild, args: [MatMenuTrigger,] }],
308
- hostStyleTop: [{ type: HostBinding, args: ['style.top',] }],
309
- hostStyleBorderRadius: [{ type: HostBinding, args: ['style.border-radius',] }],
310
- hostStyleLeft: [{ type: HostBinding, args: ['style.left',] }],
311
- hostStyleZIndex: [{ type: HostBinding, args: ['style.z-index',] }],
312
- hostStyleTransition: [{ type: HostBinding, args: ['style.transition',] }],
313
- hostStyleWidth: [{ type: HostBinding, args: ['style.width',] }],
314
- hostStyleMaxWidth: [{ type: HostBinding, args: ['style.max-width',] }],
315
- hostStylePointerEvents: [{ type: HostBinding, args: ['style.pointer-events',] }],
316
- hostClassShow: [{ type: HostBinding, args: ['class.tooltip-show',] }],
317
- hostClassShadow: [{ type: HostBinding, args: ['class.tooltip-shadow',] }],
318
- hostClassLight: [{ type: HostBinding, args: ['class.tooltip-light',] }],
319
- show: [{ type: Input }],
320
- close: [{ type: Input }]
321
- };
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvc3JjL2xpYi9wb3BtZW51L3BvcG1lbnUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBUXRELE1BQU0sT0FBTyxnQkFBZ0I7SUE2R3pCLFlBQW1CLFFBQW1CLEVBQ2xCLFVBQXNCLEVBQ3RCLGlCQUFvQztRQUZyQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQTVHeEQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQU1sQixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBYWxFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsVUFBSyxHQUFHLEtBQUssQ0FBQztJQXFGZCxDQUFDO0lBbkZELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBYSxJQUFJLENBQUMsS0FBYztRQUM1QixJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxD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VUFBVTtZQUZWLGlCQUFpQjs7O21CQW9CaEIsS0FBSzt5QkFTTCxNQUFNO3lCQUNOLE1BQU07c0JBQ04sU0FBUyxTQUFDLGNBQWM7MkJBQ3hCLFdBQVcsU0FBQyxXQUFXO29DQUN2QixXQUFXLFNBQUMscUJBQXFCOzRCQUNqQyxXQUFXLFNBQUMsWUFBWTs4QkFDeEIsV0FBVyxTQUFDLGVBQWU7a0NBQzNCLFdBQVcsU0FBQyxrQkFBa0I7NkJBQzlCLFdBQVcsU0FBQyxhQUFhO2dDQUN6QixXQUFXLFNBQUMsaUJBQWlCO3FDQUM3QixXQUFXLFNBQUMsc0JBQXNCOzRCQUNsQyxXQUFXLFNBQUMsb0JBQW9COzhCQUNoQyxXQUFXLFNBQUMsc0JBQXNCOzZCQUNsQyxXQUFXLFNBQUMscUJBQXFCO21CQVNqQyxLQUFLO29CQU9MLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRNZW51VHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtcG9wbWVudScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BvcG1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3BvcG1lbnUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQb3BtZW51Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICBASW5wdXQoKSBkYXRhOiBhbnk7XG4gICAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIGFycm93VG9wUG9zaXRpb24gPSAnNTAlJztcbiAgICBhcnJvd0JvdHRvbVBvc2l0aW9uID0gJzUwJSc7XG4gICAgYXJyb3dMZWZ0UG9zaXRpb246IHN0cmluZztcbiAgICBhcnJvd1JpZ2h0UG9zaXRpb246IHN0cmluZztcbiAgICBhcnJvd0NsYXNzOiBzdHJpbmc7XG4gICAgYmVsb3c7XG4gICAgYmVmb3JlO1xuICAgIEBPdXRwdXQoKSBtZW51Q2xvc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBtZW51T3BlbmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIHRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUudG9wJykgaG9zdFN0eWxlVG9wOiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5ib3JkZXItcmFkaXVzJykgaG9zdFN0eWxlQm9yZGVyUmFkaXVzOiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0JykgaG9zdFN0eWxlTGVmdDogc3RyaW5nO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuei1pbmRleCcpIGhvc3RTdHlsZVpJbmRleDogbnVtYmVyO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUudHJhbnNpdGlvbicpIGhvc3RTdHlsZVRyYW5zaXRpb246IHN0cmluZztcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoJykgaG9zdFN0eWxlV2lkdGg6IHN0cmluZztcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heC13aWR0aCcpIGhvc3RTdHlsZU1heFdpZHRoOiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb2ludGVyLWV2ZW50cycpIGhvc3RTdHlsZVBvaW50ZXJFdmVudHM6IHN0cmluZztcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRvb2x0aXAtc2hvdycpIGhvc3RDbGFzc1Nob3c6IGJvb2xlYW47XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50b29sdGlwLXNoYWRvdycpIGhvc3RDbGFzc1NoYWRvdzogYm9vbGVhbjtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRvb2x0aXAtbGlnaHQnKSBob3N0Q2xhc3NMaWdodDogYm9vbGVhbjtcbiAgICB2aWV3SW5pdCA9IGZhbHNlO1xuXG4gICAgX3Nob3cgPSBmYWxzZTtcblxuICAgIGdldCBzaG93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvdztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2hvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaG93ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNsb3NlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBhcnJvdygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmFycm93ICYmIHRoaXMuYm9yZGVyO1xuICAgIH1cblxuICAgIGdldCBhcnJvd09mZnNldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmFycm93T2Zmc2V0O1xuICAgIH1cblxuICAgIGdldCBhcnJvd1Bvc2l0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYXJyb3dQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBnZXQgYXV0b1BsYWNlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmF1dG9QbGFjZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGJhY2tncm91bmQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5hcFBvcG1lbnVCYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIGdldCBib3JkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5hcFBvcG1lbnVCb3JkZXI7XG4gICAgfVxuXG4gICAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuZWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgZWxlbWVudFBvc2l0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmVsZW1lbnRQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBnZXQgaGFzQmFja2Ryb3AoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5oYXNCYWNrZHJvcDtcbiAgICB9XG5cbiAgICBnZXQgaXNUaGVtZUxpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zWyd0aGVtZSddID09PSAnbGlnaHQnO1xuICAgIH1cblxuICAgIGdldCBvcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0IHBsYWNlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLnBsYWNlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgcm91bmRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLnJvdW5kZWQ7XG4gICAgfVxuXG4gICAgZ2V0IHNoYWRvdygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLnNoYWRvdztcbiAgICB9XG5cbiAgICBnZXQgdG9vbHRpcE9mZnNldCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMuZGF0YS5vcHRpb25zLm9mZnNldCk7XG4gICAgfVxuXG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLnZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICAgIHB1YmxpYyAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy52aWV3SW5pdCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25NZW51Q2xvc2VkKCkge1xuICAgICAgICAvLyB3ZSBzZXQgYSB0aW1lb3V0IHRvIHdhaXQgZm9yIHRoZSBtZW51IHRvIGJlIHJlYWxseSBjbG9zZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm1lbnVDbG9zZWQuZW1pdCgpLCAyMDApO1xuICAgIH1cblxuICAgIG9uTWVudU9wZW5lZCgpIHtcbiAgICAgICAgLy8gd2Ugc2V0IGEgdGltZW91dCB0byB3YWl0IGZvciB0aGUgbWVudSB0byBiZSByZWFsbHkgb3BlbmVkXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tZW51T3BlbmVkLmVtaXQoKSwgMTAwKTtcbiAgICB9XG5cbiAgICBzZXRIb3N0U3R5bGUocGxhY2VtZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaXNTdmcgPSB0aGlzLmVsZW1lbnQgaW5zdGFuY2VvZiBTVkdFbGVtZW50O1xuICAgICAgICBjb25zdCB0b29sdGlwID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGlzQ3VzdG9tUG9zaXRpb24gPSAhdGhpcy5lbGVtZW50UG9zaXRpb24ueDtcblxuICAgICAgICBsZXQgZWxlbWVudEhlaWdodCA9ICF0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0ID8gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA6IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGxldCBlbGVtZW50V2lkdGggPSAhdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoID8gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIDogdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCB0b29sdGlwSGVpZ2h0ID0gdG9vbHRpcC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBXaWR0aCA9IHRvb2x0aXAuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG5cbiAgICAgICAgbGV0IHRvcFN0eWxlO1xuICAgICAgICBsZXQgbGVmdFN0eWxlO1xuXG4gICAgICAgIGlmIChpc0N1c3RvbVBvc2l0aW9uKSB7XG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ICYmIHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ICYmIHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxlbWVudEhlaWdodCA9IDA7XG4gICAgICAgICAgICBlbGVtZW50V2lkdGggPSAwO1xuICAgICAgICAgICAgdG9wU3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3A7XG4gICAgICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0O1xuICAgICAgICAgICAgaWYgKHRoaXMuYXJyb3cgJiYgdGhpcy5hcnJvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0NsYXNzID0gJ2Fycm93LScgKyB0aGlzLmFycm93UG9zaXRpb247XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmFycm93UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9IHRoaXMuYXJyb3dPZmZzZXQgKyAnJSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ICsgJyUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgLSB0aGlzLnRvb2x0aXBPZmZzZXQ7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgKz0gODtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24uYm90dG9tICsgdGhpcy50b29sdGlwT2Zmc2V0O1xuICAgICAgICAgICAgICAgIC8vIFdlIHJlbW92ZSA4cHggZHVlIHRvIHRoZSBtYXJnaW4tdG9wIHdlIHB1dCB0byBkaXNwbGF5IHRoZSBhcnJvdy5cbiAgICAgICAgICAgICAgICB0b3BTdHlsZSAtPSA4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50LnNwbGl0KCcgJylbMF0gPT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQgLSB0b29sdGlwV2lkdGggLSB0aGlzLnRvb2x0aXBPZmZzZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQgKyBlbGVtZW50V2lkdGggKyB0aGlzLnRvb2x0aXBPZmZzZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ2xlZnQnIHx8IHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSkgKyBlbGVtZW50SGVpZ2h0IC8gMiAtIHRvb2x0aXAuY2xpZW50SGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ3JpZ2h0IGJvdHRvbScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy1sZWZ0JztcbiAgICAgICAgICAgICAgICB0b3BTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBzY3JvbGxZKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gKHRoaXMuYXJyb3dPZmZzZXQgKyAnJScpIDogKGVsZW1lbnRIZWlnaHQgLyAyICsgJ3B4Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0IGJvdHRvbScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0NsYXNzID0gJ2Fycm93LXJpZ2h0JztcbiAgICAgICAgICAgICAgICB0b3BTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBzY3JvbGxZKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gKHRoaXMuYXJyb3dPZmZzZXQgKyAnJScpIDogKGVsZW1lbnRIZWlnaHQgLyAyICsgJ3B4Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdyaWdodCB0b3AnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0NsYXNzID0gJ2Fycm93LWxlZnQnO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gKHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCArIGVsZW1lbnRIZWlnaHQgKyBzY3JvbGxZKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gKHRoaXMuYXJyb3dPZmZzZXQgKyAnJScpIDogKC0odG9vbHRpcC5jbGllbnRIZWlnaHQgLSBlbGVtZW50SGVpZ2h0IC8gMikgKyAncHgnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2xlZnQgdG9wJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0NsYXNzID0gJ2Fycm93LXJpZ2h0JztcbiAgICAgICAgICAgICAgICB0b3BTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBlbGVtZW50SGVpZ2h0ICsgc2Nyb2xsWSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0JvdHRvbVBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/ICh0aGlzLmFycm93T2Zmc2V0ICsgJyUnKSA6ICgtKHRvb2x0aXAuY2xpZW50SGVpZ2h0IC0gZWxlbWVudEhlaWdodCAvIDIpICsgJ3B4Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdib3R0b20gcmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctdG9wJztcbiAgICAgICAgICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/ICh0aGlzLmFycm93T2Zmc2V0ICsgJyUnKSA6ICgoKGVsZW1lbnRXaWR0aCAvIDIpIC0gNC41KSArICdweCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ID09PSAnYm90dG9tIGxlZnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy10b3AnO1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/ICh0aGlzLmFycm93T2Zmc2V0ICsgJyUnKSA6ICgoKGVsZW1lbnRXaWR0aCAvIDIpIC0gMi41KSArICdweCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ID09PSAndG9wIHJpZ2h0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy1ib3R0b20nO1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0JvdHRvbVBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/ICh0aGlzLmFycm93T2Zmc2V0ICsgJyUnKSA6ICgoKGVsZW1lbnRXaWR0aCAvIDIpIC0gNC41KSArICdweCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ID09PSAndG9wIGxlZnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctYm90dG9tJztcbiAgICAgICAgICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5yaWdodDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gKHRoaXMuYXJyb3dPZmZzZXQgKyAnJScpIDogKCgoZWxlbWVudFdpZHRoIC8gMikgLSAyLjUpICsgJ3B4Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGlzIGxpbmUgaXMgUFVSRSBNQUdJQyBhbmQgc3VwZXIgaW1wb3J0YW50LiBJdCBhbGxvd3MgdG8gZm9yY2UgbWF0LW1lbnVcbiAgICAgICAgLy8gdG8gcmVwb3NpdGlvbiB0aGUgbWVudSB3aXRoIHRoZSBuZXcgeFBvc2l0aW9uIC8geVBvc2l0aW9uLlxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBjb25zdCB0b3BFZGdlID0gdG9wU3R5bGU7XG4gICAgICAgIGNvbnN0IGJvdHRvbUVkZ2UgPSB0b3BTdHlsZSArIHRvb2x0aXBIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGxlZnRFZGdlID0gbGVmdFN0eWxlO1xuICAgICAgICBjb25zdCByaWdodEVkZ2UgPSBsZWZ0U3R5bGUgKyB0b29sdGlwV2lkdGg7XG5cbiAgICAgICAgaWYgKCh0b3BFZGdlIDwgMCB8fCBib3R0b21FZGdlID4gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgfHxcbiAgICAgICAgICAgIGxlZnRFZGdlIDwgMCB8fCByaWdodEVkZ2UgPiBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoKSAmJiB0aGlzLmF1dG9QbGFjZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaG9zdFN0eWxlVG9wID0gdG9wU3R5bGUgKyAncHgnO1xuICAgICAgICB0aGlzLmhvc3RTdHlsZUxlZnQgPSBsZWZ0U3R5bGUgKyAncHgnO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzZXRQbGFjZW1lbnRDbGFzcyhwbGFjZW1lbnQgPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0b29sdGlwLScgKyAocGxhY2VtZW50ID8gcGxhY2VtZW50LnNwbGl0KCcgJylbMF0gOiBwbGFjZW1lbnQpKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3lQb3NpdGlvbi0nICtcbiAgICAgICAgICAgIChwbGFjZW1lbnQgJiYgcGxhY2VtZW50LnNwbGl0KCcgJykubGVuZ3RoID09PSAyID8gcGxhY2VtZW50LnNwbGl0KCcgJylbMV0gOiAnY2VudGVyJykpO1xuXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbiAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBjb25zdCB0b29sdGlwQXJyb3cgPSBBcnJheS5mcm9tKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKS5maWx0ZXIoKFxuICAgICAgICAgICAgICAgIGNoaWxkOiBIVE1MRWxlbWVudCkgPT4gY2hpbGQuZ2V0QXR0cmlidXRlKCdpZCcpID09PSAndG9vbHRpcEFycm93Jyk7XG4gICAgICAgICAgICBpZiAodG9vbHRpcEFycm93ICYmIHRvb2x0aXBBcnJvdy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VtZW50ICYmIHBsYWNlbWVudC5zcGxpdCgnICcpLmxlbmd0aCA9PT0gMiAmJiBwbGFjZW1lbnQuc3BsaXQoJyAnKVsxXSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwQXJyb3dbMF0sICd0b3AnLCB0aGlzLmFycm93VG9wUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50ICYmIHBsYWNlbWVudC5zcGxpdCgnICcpLmxlbmd0aCA9PT0gMiAmJiBwbGFjZW1lbnQuc3BsaXQoJyAnKVsxXSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwQXJyb3dbMF0sICd0b3AnLCB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZXRIb3N0U3R5bGUodGhpcy5wbGFjZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFBsYWNlbWVudENsYXNzKHRoaXMucGxhY2VtZW50KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXdJbml0KSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgZGlkIHRoaXMgaW4gb3JkZXIgdG8gcmVzZXQgb3ZlcmxheVJlZiAobXVsdGkgd2ViIGNvbXBvbmVudCBuZWVkZWQgd2l0aCBtYXRtZW51IGFuZCBjZGsgb3ZlcmxheSlcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyW1wiX292ZXJsYXlSZWZcIl0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyW1wiX292ZXJsYXlSZWZcIl0uZGlzcG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJbXCJfb3ZlcmxheVJlZlwiXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlci5vcGVuTWVudSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgcGxhY2VtZW50IG9mIHBsYWNlbWVudHMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXRIb3N0U3R5bGUocGxhY2VtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFBsYWNlbWVudENsYXNzKHBsYWNlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdJbml0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIub3Blbk1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cbiJdfQ==