@bnsights/bbsf-controls 1.0.194-beta.9 → 1.2.0

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 (159) hide show
  1. package/README.md +7 -0
  2. package/fesm2022/bnsights-bbsf-controls.mjs +375 -345
  3. package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -1
  4. package/lib/Shared/Models/DropdownOptions.d.ts +3 -0
  5. package/lib/Shared/Models/RepeaterOptions.d.ts +2 -0
  6. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +0 -1
  7. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +0 -1
  8. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +1 -1
  9. package/lib/controls/Repeater/repeater/repeater.component.d.ts +7 -0
  10. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +7 -0
  11. package/lib/modules/bbsf-editors.module.d.ts +6 -7
  12. package/package.json +33 -36
  13. package/src/lib/assets/Style.scss +2 -0
  14. package/src/lib/assets/ace-builds/ace.js +1 -1
  15. package/src/lib/assets/ace-builds/mode-markdown.js +1 -1
  16. package/esm2022/bnsights-bbsf-controls.mjs +0 -5
  17. package/esm2022/lib/Shared/Components/app-base-component.mjs +0 -226
  18. package/esm2022/lib/Shared/Components/ng-tag-input.mjs +0 -336
  19. package/esm2022/lib/Shared/Directives/appPreventDoubleClick.directive.mjs +0 -39
  20. package/esm2022/lib/Shared/Directives/template-name.directive.mjs +0 -19
  21. package/esm2022/lib/Shared/Enums/CalendarView.mjs +0 -8
  22. package/esm2022/lib/Shared/Enums/ControlLayout.mjs +0 -6
  23. package/esm2022/lib/Shared/Enums/Countries.mjs +0 -247
  24. package/esm2022/lib/Shared/Enums/Enums.mjs +0 -36
  25. package/esm2022/lib/Shared/Enums/FileType.mjs +0 -29
  26. package/esm2022/lib/Shared/Enums/FilterType.mjs +0 -11
  27. package/esm2022/lib/Shared/Enums/FontSize.mjs +0 -7
  28. package/esm2022/lib/Shared/Enums/ForceDirection.mjs +0 -6
  29. package/esm2022/lib/Shared/Enums/IconPosition.mjs +0 -6
  30. package/esm2022/lib/Shared/Enums/ImageType.mjs +0 -10
  31. package/esm2022/lib/Shared/Enums/InputType.mjs +0 -10
  32. package/esm2022/lib/Shared/Enums/Insert.mjs +0 -9
  33. package/esm2022/lib/Shared/Enums/LanguageMode.mjs +0 -11
  34. package/esm2022/lib/Shared/Enums/LanguageValidation.mjs +0 -6
  35. package/esm2022/lib/Shared/Enums/Markdown.mjs +0 -20
  36. package/esm2022/lib/Shared/Enums/Misc.mjs +0 -7
  37. package/esm2022/lib/Shared/Enums/PagingActionMode.mjs +0 -6
  38. package/esm2022/lib/Shared/Enums/Para.mjs +0 -9
  39. package/esm2022/lib/Shared/Enums/PickerType.mjs +0 -7
  40. package/esm2022/lib/Shared/Enums/SelectMode.mjs +0 -6
  41. package/esm2022/lib/Shared/Enums/StartView.mjs +0 -7
  42. package/esm2022/lib/Shared/Enums/Style.mjs +0 -8
  43. package/esm2022/lib/Shared/Enums/StyleConfirmationMode.mjs +0 -7
  44. package/esm2022/lib/Shared/Enums/TagInputView.mjs +0 -7
  45. package/esm2022/lib/Shared/Enums/ToolbarButtons.mjs +0 -33
  46. package/esm2022/lib/Shared/Enums/map-enums.mjs +0 -15
  47. package/esm2022/lib/Shared/Enums/menu-list-enum.mjs +0 -6
  48. package/esm2022/lib/Shared/Models/Attribute.mjs +0 -3
  49. package/esm2022/lib/Shared/Models/AutocompleteDTO.mjs +0 -8
  50. package/esm2022/lib/Shared/Models/AutocompleteOptions.mjs +0 -39
  51. package/esm2022/lib/Shared/Models/CalendarDTO.mjs +0 -3
  52. package/esm2022/lib/Shared/Models/CalendarEventDTO.mjs +0 -3
  53. package/esm2022/lib/Shared/Models/CalendarOptions.mjs +0 -19
  54. package/esm2022/lib/Shared/Models/CancelDTO.mjs +0 -7
  55. package/esm2022/lib/Shared/Models/CaptchaStyle.mjs +0 -3
  56. package/esm2022/lib/Shared/Models/CheckBoxOptions.mjs +0 -11
  57. package/esm2022/lib/Shared/Models/ConfirmationModalOptions.mjs +0 -39
  58. package/esm2022/lib/Shared/Models/ControlOptionsBase.mjs +0 -17
  59. package/esm2022/lib/Shared/Models/CustomValidation.mjs +0 -14
  60. package/esm2022/lib/Shared/Models/DatePickerOptions.mjs +0 -40
  61. package/esm2022/lib/Shared/Models/DropdownListItem.mjs +0 -3
  62. package/esm2022/lib/Shared/Models/DropdownOptions.mjs +0 -38
  63. package/esm2022/lib/Shared/Models/EditPersonalImage.mjs +0 -7
  64. package/esm2022/lib/Shared/Models/EnglishArabicDTO.mjs +0 -10
  65. package/esm2022/lib/Shared/Models/FileDTO.mjs +0 -24
  66. package/esm2022/lib/Shared/Models/FileOptions.mjs +0 -15
  67. package/esm2022/lib/Shared/Models/FileUploadModel.mjs +0 -3
  68. package/esm2022/lib/Shared/Models/FileUploadOptions.mjs +0 -13
  69. package/esm2022/lib/Shared/Models/FilterItem.mjs +0 -8
  70. package/esm2022/lib/Shared/Models/FormOptions.mjs +0 -32
  71. package/esm2022/lib/Shared/Models/HtmlEditorOptions.mjs +0 -12
  72. package/esm2022/lib/Shared/Models/ImageUploadOptions.mjs +0 -14
  73. package/esm2022/lib/Shared/Models/MapAutoCompleteOptions.mjs +0 -12
  74. package/esm2022/lib/Shared/Models/MapAutocompleteDTO.mjs +0 -6
  75. package/esm2022/lib/Shared/Models/MarkdownEditorOptions.mjs +0 -24
  76. package/esm2022/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs +0 -9
  77. package/esm2022/lib/Shared/Models/MultiLingualTextAreaOptions.mjs +0 -9
  78. package/esm2022/lib/Shared/Models/MultiLingualTextBoxOptions.mjs +0 -17
  79. package/esm2022/lib/Shared/Models/MultilingualControlOptionsBase.mjs +0 -21
  80. package/esm2022/lib/Shared/Models/MultipleFileUploadModel.mjs +0 -9
  81. package/esm2022/lib/Shared/Models/PagingDTO.mjs +0 -13
  82. package/esm2022/lib/Shared/Models/PagingOptions.mjs +0 -49
  83. package/esm2022/lib/Shared/Models/PagingPayload.mjs +0 -3
  84. package/esm2022/lib/Shared/Models/PhoneOptions.mjs +0 -16
  85. package/esm2022/lib/Shared/Models/ProfileImageUploadOptions.mjs +0 -11
  86. package/esm2022/lib/Shared/Models/ProfilePictureDTO.mjs +0 -3
  87. package/esm2022/lib/Shared/Models/RadioButtonItem.mjs +0 -3
  88. package/esm2022/lib/Shared/Models/RadioButtonOptions.mjs +0 -7
  89. package/esm2022/lib/Shared/Models/RangeNumber.mjs +0 -3
  90. package/esm2022/lib/Shared/Models/Recaptcha.mjs +0 -6
  91. package/esm2022/lib/Shared/Models/RecaptchaOptions.mjs +0 -22
  92. package/esm2022/lib/Shared/Models/RepeaterField.mjs +0 -3
  93. package/esm2022/lib/Shared/Models/RepeaterOptions.mjs +0 -14
  94. package/esm2022/lib/Shared/Models/SaveDTO.mjs +0 -7
  95. package/esm2022/lib/Shared/Models/TagsInputDTO.mjs +0 -3
  96. package/esm2022/lib/Shared/Models/TagsInputOptions.mjs +0 -56
  97. package/esm2022/lib/Shared/Models/TextAreaOptions.mjs +0 -19
  98. package/esm2022/lib/Shared/Models/TextBoxOptions.mjs +0 -27
  99. package/esm2022/lib/Shared/Models/ToggleSlideOptions.mjs +0 -9
  100. package/esm2022/lib/Shared/Models/UploadPersonalImage.mjs +0 -7
  101. package/esm2022/lib/Shared/Models/bread-crumb.mjs +0 -8
  102. package/esm2022/lib/Shared/Models/control-filter-Item.mjs +0 -6
  103. package/esm2022/lib/Shared/Models/filter-options.mjs +0 -9
  104. package/esm2022/lib/Shared/Models/index.mjs +0 -58
  105. package/esm2022/lib/Shared/Models/page-header-options.mjs +0 -78
  106. package/esm2022/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +0 -22
  107. package/esm2022/lib/Shared/Pipes/bbsf-date.pipe.mjs +0 -22
  108. package/esm2022/lib/Shared/config/environment.mjs +0 -12
  109. package/esm2022/lib/Shared/default_intl.mjs +0 -29
  110. package/esm2022/lib/Shared/services/ControlUtility.mjs +0 -162
  111. package/esm2022/lib/Shared/services/GlobalSettings.service.mjs +0 -30
  112. package/esm2022/lib/Shared/services/OnPagingFiltersChange.service.mjs +0 -24
  113. package/esm2022/lib/Shared/services/file-upload.service.mjs +0 -29
  114. package/esm2022/lib/Shared/services/index.mjs +0 -7
  115. package/esm2022/lib/Shared/services/render-component-service.service.mjs +0 -32
  116. package/esm2022/lib/Shared/services/validationErrorMassage.service.mjs +0 -125
  117. package/esm2022/lib/Shared/utils/date-formatter.mjs +0 -48
  118. package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +0 -299
  119. package/esm2022/lib/controls/Calendar/Calendar.component.mjs +0 -179
  120. package/esm2022/lib/controls/CheckBox/CheckBox.component.mjs +0 -121
  121. package/esm2022/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +0 -143
  122. package/esm2022/lib/controls/DateTimePicker/DateTimePicker.component.mjs +0 -240
  123. package/esm2022/lib/controls/DropdownList/DropdownList.component.mjs +0 -296
  124. package/esm2022/lib/controls/FileUpload/FileUpload.component.mjs +0 -741
  125. package/esm2022/lib/controls/Form/Form.component.mjs +0 -117
  126. package/esm2022/lib/controls/HtmlEditor/HtmlEditor.component.mjs +0 -185
  127. package/esm2022/lib/controls/ImageUpload/ImageUpload.component.mjs +0 -360
  128. package/esm2022/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +0 -502
  129. package/esm2022/lib/controls/MarkdownEditor/markdown-editor.component.mjs +0 -243
  130. package/esm2022/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +0 -456
  131. package/esm2022/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +0 -441
  132. package/esm2022/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +0 -500
  133. package/esm2022/lib/controls/Paging/JwPagination.component.mjs +0 -160
  134. package/esm2022/lib/controls/Paging/Paging.component.mjs +0 -626
  135. package/esm2022/lib/controls/Phone/Phone.component.mjs +0 -134
  136. package/esm2022/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +0 -390
  137. package/esm2022/lib/controls/RadioButton/RadioButton.component.mjs +0 -113
  138. package/esm2022/lib/controls/Recaptcha/Recaptcha.component.mjs +0 -134
  139. package/esm2022/lib/controls/Repeater/repeater/repeater.component.mjs +0 -135
  140. package/esm2022/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +0 -1291
  141. package/esm2022/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +0 -22
  142. package/esm2022/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +0 -118
  143. package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +0 -308
  144. package/esm2022/lib/controls/TextArea/TextArea.component.mjs +0 -581
  145. package/esm2022/lib/controls/TextBox/TextBox.component.mjs +0 -357
  146. package/esm2022/lib/controls/Toggleslide/Toggleslide.component.mjs +0 -96
  147. package/esm2022/lib/controls/bbsf-controls.module.mjs +0 -92
  148. package/esm2022/lib/controls/page-header-component/page-header-component.component.mjs +0 -42
  149. package/esm2022/lib/modules/bbsf-core.module.mjs +0 -210
  150. package/esm2022/lib/modules/bbsf-datetime.module.mjs +0 -90
  151. package/esm2022/lib/modules/bbsf-dropdown.module.mjs +0 -57
  152. package/esm2022/lib/modules/bbsf-editors.module.mjs +0 -97
  153. package/esm2022/lib/modules/bbsf-forms-basic.module.mjs +0 -79
  154. package/esm2022/lib/modules/bbsf-multilingual.module.mjs +0 -60
  155. package/esm2022/lib/modules/bbsf-phone.module.mjs +0 -57
  156. package/esm2022/lib/modules/bbsf-specialized.module.mjs +0 -160
  157. package/esm2022/lib/modules/bbsf-uploads.module.mjs +0 -106
  158. package/esm2022/lib/modules/bbsf-utility.module.mjs +0 -103
  159. package/esm2022/public-api.mjs +0 -169
@@ -1,336 +0,0 @@
1
- import { Component, forwardRef, Input, Output, EventEmitter } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
4
- import { TypeaheadModule } from 'ngx-bootstrap/typeahead';
5
- import { TagInputView } from '../Enums/TagInputView';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
- import * as i2 from "@angular/forms";
9
- import * as i3 from "ngx-bootstrap/typeahead";
10
- const noop = () => { };
11
- const TAGS_INPUT_TEMPLATE = `
12
-
13
- <div class="tags-input">
14
- <span class="tags-input__tag label label-primary badge badge-primary" *ngFor="let tag of tags">
15
-
16
- <span [ngSwitch]="ViewMode">
17
- <span *ngSwitchCase="tagInputViewEnum.WithImage">
18
- <img style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
19
- src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
20
- </span>
21
-
22
- <span *ngSwitchCase="tagInputViewEnum.WithInitial">
23
- <div class="user-initials">{{calculateInitials(tag.name)}}</div>
24
- </span>
25
-
26
- <span *ngSwitchDefault>
27
- </span>
28
-
29
- </span>
30
- {{tag[displayField]}}
31
- <span *ngIf="isDeleteable(tag)" role="button" class="tags-input__tag-remove-btn" (click)="removeTag(tag)"
32
- (touch)="removeTag(tag)">
33
- <span aria-hidden="true">&times;</span>
34
- <span class="sr-only">Close</span>
35
- </span>
36
- </span>
37
-
38
- <input *ngIf="options === null; else withTypeahead" class="tags-input__input-field" type="text"
39
- [placeholder]="getPlaceholder()" name="tags" (keyup.enter)="addTag(tagInput)"
40
- (keydown.backspace)="removeLastTag(tagInput)" [disabled]="!canAddTags || maximumOfTagsReached()"
41
- [hidden]="!canAddTags || maximumOfTagsReached()" #tagInput />
42
-
43
- <ng-template #withTypeahead>
44
- <span [ngSwitch]="ViewMode">
45
- <span *ngSwitchCase="tagInputViewEnum.WithImage">
46
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
47
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
48
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
49
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
50
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
51
- [typeaheadItemTemplate]="itemTemplateWithImage" [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
52
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
53
- (blur)="onBlur()" autocomplete="off"
54
- #tagInput />
55
- </span>
56
-
57
- <span *ngSwitchCase="tagInputViewEnum.WithoutImage">
58
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
59
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
60
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
61
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
62
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
63
- [typeaheadItemTemplate]="itemTemplateWithoutImage"
64
- [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
65
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
66
- (blur)="onBlur()" autocomplete="off"
67
- #tagInput />
68
- </span>
69
-
70
- <span *ngSwitchCase="tagInputViewEnum.WithInitial">
71
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
72
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
73
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
74
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
75
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
76
- [typeaheadItemTemplate]="itemTemplateWithoutInitial"
77
- [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
78
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
79
- (blur)="onBlur()" autocomplete="off"
80
- #tagInput />
81
- </span>
82
-
83
- <span *ngSwitchDefault>
84
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
85
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
86
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
87
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
88
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
89
- [typeaheadItemTemplate]="itemTemplateWithoutImage"
90
- [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
91
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
92
- (blur)="onBlur()" autocomplete="off"
93
- #tagInput />
94
- </span>
95
-
96
- </span>
97
-
98
- </ng-template>
99
-
100
- <ng-template #itemTemplateWithImage let-model="item" let-index="index">
101
- <img
102
- style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
103
- src="{{(model.imageURL?model.imageURL:defaultImageURL)}}" />
104
- <div>
105
- <a [innerHTML]="model.name"></a>
106
- <p *ngIf="showDescription">
107
- {{model.description}}
108
- </p>
109
- </div>
110
- </ng-template>
111
-
112
- <ng-template #itemTemplateWithoutImage let-model="item" let-index="index">
113
- <div>
114
- <a [innerHTML]="model.name"></a>
115
- <p *ngIf="showDescription">
116
- {{model.description}}
117
- </p>
118
- </div>
119
- </ng-template>
120
-
121
- <ng-template #itemTemplateWithoutInitial let-model="item" let-index="index">
122
- <div class="user-image">
123
- <div class="user-initials">{{calculateInitials(model.name)}}</div>
124
- </div>
125
- <div>
126
- <a [innerHTML]="model.name"></a>
127
- <p *ngIf="showDescription">
128
- {{model.description}}
129
- </p>
130
- </div>
131
- </ng-template>
132
- </div>
133
- `;
134
- const TAGS_INPUT_STYLE = `
135
- :host {
136
- overflow: auto;
137
- white-space: nowrap;
138
- }
139
-
140
- .tags-input {
141
- align-items: center;
142
- display: flex;
143
- flex-wrap: wrap;
144
- }
145
-
146
- .tags-input__tag {
147
- display: inline-block;
148
- margin-bottom: 2px;
149
- margin-right: 5px;
150
- padding-right: 0.3em;
151
- }
152
-
153
- .tags-input__tag-remove-btn {
154
- cursor: pointer;
155
- display: inline-block;
156
- font-size: 12px;
157
- margin: -3px 0 0 3px;
158
- padding: 0;
159
- vertical-align: top;
160
- }
161
-
162
- .tags-input__input-field {
163
- border: none;
164
- flex-grow: 1;
165
- outline: none;
166
- }
167
- `;
168
- const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
169
- provide: NG_VALUE_ACCESSOR,
170
- useExisting: forwardRef(() => BTagsInputComponent),
171
- multi: true
172
- };
173
- export class BTagsInputComponent {
174
- constructor() {
175
- this.selected = '';
176
- this.tags = [];
177
- this.onTouchedCallback = noop;
178
- this.onChangeCallback = noop;
179
- this.tagInputViewEnum = TagInputView;
180
- this.removeLastOnBackspace = false;
181
- this.canDeleteTags = true;
182
- this.canAddTags = true;
183
- this.ViewMode = TagInputView.WithoutImage;
184
- this.placeholder = '';
185
- this.showDescription = true;
186
- this.options = null;
187
- this.defaultImageURL = null;
188
- this.displayField = 'name';
189
- this.minLengthBeforeOptions = 1;
190
- this.scrollableOptions = false;
191
- this.scrollableOptionsInView = 5;
192
- this.onTagsChanged = new EventEmitter();
193
- this.onMaxTagsReached = new EventEmitter();
194
- this.onNoOptionsMatch = new EventEmitter();
195
- this.onBlurInput = new EventEmitter();
196
- }
197
- getPlaceholder() {
198
- if (this.tags && this.tags.length > 0) {
199
- return '';
200
- }
201
- return this.placeholder;
202
- }
203
- tagsChanged(type, tag) {
204
- this.onChangeCallback(this.tags);
205
- this.onTagsChanged.emit({
206
- change: type,
207
- tag: tag
208
- });
209
- if (this.maximumOfTagsReached()) {
210
- this.onMaxTagsReached.emit();
211
- }
212
- }
213
- removeLastTag(tagInput) {
214
- if (!this.removeLastOnBackspace || !this.tags?.length) {
215
- return;
216
- }
217
- if (tagInput.value === '') {
218
- this.removeTag(this.tags[this.tags.length - 1]);
219
- }
220
- }
221
- addTag(tagInput) {
222
- if (tagInput.value.trim() !== '') {
223
- let tag = {
224
- [this.displayField]: tagInput.value
225
- };
226
- this.addPredefinedTag(tag);
227
- }
228
- tagInput.value = '';
229
- }
230
- addPredefinedTag(tag) {
231
- if (this.tags == null)
232
- this.tags = [];
233
- if (!this.maximumOfTagsReached()) {
234
- this.tags.push(tag);
235
- this.tagsChanged('add', tag);
236
- }
237
- }
238
- removeTag(tagToRemove) {
239
- if (!this.isDeleteable(tagToRemove)) {
240
- return;
241
- }
242
- this.tags = this.tags.filter(tag => tagToRemove !== tag);
243
- this.tagsChanged('remove', tagToRemove);
244
- }
245
- maximumOfTagsReached() {
246
- return typeof this.maxTags !== 'undefined' && this.tags && this.tags.length >= this.maxTags;
247
- }
248
- isDeleteable(tag) {
249
- if (typeof tag.deleteable !== "undefined" && !tag.deleteable) {
250
- return false;
251
- }
252
- return this.canDeleteTags;
253
- }
254
- typeaheadOnSelect(e) {
255
- if (typeof e.item === 'string') {
256
- this.addPredefinedTag({
257
- [this.displayField]: e.value
258
- });
259
- }
260
- else {
261
- this.addPredefinedTag(e.item);
262
- }
263
- this.selected = '';
264
- }
265
- typeaheadOnNoMatch(e) {
266
- if (typeof this.onNoOptionsMatch !== 'undefined') {
267
- this.onNoOptionsMatch.emit(e);
268
- }
269
- }
270
- writeValue(value) {
271
- if (value !== this.tags) {
272
- this.tags = value;
273
- }
274
- }
275
- registerOnChange(fn) {
276
- this.onChangeCallback = fn;
277
- }
278
- registerOnTouched(fn) {
279
- this.onTouchedCallback = fn;
280
- }
281
- calculateInitials(name) {
282
- var fullName = name.split(' ');
283
- var initials = "";
284
- if (fullName.length > 1)
285
- initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);
286
- else
287
- initials = fullName.shift().charAt(0);
288
- return initials.toUpperCase();
289
- }
290
- onBlur() {
291
- this.onBlurInput.emit();
292
- }
293
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BTagsInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BTagsInputComponent, isStandalone: true, selector: "b-tags-input", inputs: { maxTags: "maxTags", removeLastOnBackspace: "removeLastOnBackspace", canDeleteTags: "canDeleteTags", canAddTags: "canAddTags", ViewMode: "ViewMode", placeholder: "placeholder", showDescription: "showDescription", options: "options", defaultImageURL: "defaultImageURL", minLengthBeforeOptions: "minLengthBeforeOptions", scrollableOptions: "scrollableOptions", scrollableOptionsInView: "scrollableOptionsInView" }, outputs: { onTagsChanged: "onTagsChanged", onMaxTagsReached: "onMaxTagsReached", onNoOptionsMatch: "onNoOptionsMatch", onBlurInput: "onBlurInput" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "\n\n<div class=\"tags-input\">\n<span class=\"tags-input__tag label label-primary badge badge-primary\" *ngFor=\"let tag of tags\">\n\n<span [ngSwitch]=\"ViewMode\">\n<span *ngSwitchCase=\"tagInputViewEnum.WithImage\">\n<img style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\"\nsrc=\"{{(tag.imageURL?tag.imageURL:defaultImageURL)}}\" />\n</span>\n\n<span *ngSwitchCase=\"tagInputViewEnum.WithInitial\">\n<div class=\"user-initials\">{{calculateInitials(tag.name)}}</div>\n</span>\n\n<span *ngSwitchDefault>\n</span>\n\n</span>\n {{tag[displayField]}}\n <span *ngIf=\"isDeleteable(tag)\" role=\"button\" class=\"tags-input__tag-remove-btn\" (click)=\"removeTag(tag)\"\n (touch)=\"removeTag(tag)\">\n <span aria-hidden=\"true\">&times;</span>\n <span class=\"sr-only\">Close</span>\n </span>\n</span>\n\n<input *ngIf=\"options === null; else withTypeahead\" class=\"tags-input__input-field\" type=\"text\"\n [placeholder]=\"getPlaceholder()\" name=\"tags\" (keyup.enter)=\"addTag(tagInput)\"\n (keydown.backspace)=\"removeLastTag(tagInput)\" [disabled]=\"!canAddTags || maximumOfTagsReached()\"\n [hidden]=\"!canAddTags || maximumOfTagsReached()\" #tagInput />\n\n<ng-template #withTypeahead>\n <span [ngSwitch]=\"ViewMode\">\n <span *ngSwitchCase=\"tagInputViewEnum.WithImage\">\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithImage\" [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n <span *ngSwitchCase=\"tagInputViewEnum.WithoutImage\">\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithoutImage\"\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n <span *ngSwitchCase=\"tagInputViewEnum.WithInitial\">\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithoutInitial\"\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n <span *ngSwitchDefault>\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithoutImage\"\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n </span>\n\n</ng-template>\n\n<ng-template #itemTemplateWithImage let-model=\"item\" let-index=\"index\">\n <img\n style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\"\n src=\"{{(model.imageURL?model.imageURL:defaultImageURL)}}\" />\n <div>\n <a [innerHTML]=\"model.name\"></a>\n <p *ngIf=\"showDescription\">\n {{model.description}}\n </p>\n </div>\n</ng-template>\n\n<ng-template #itemTemplateWithoutImage let-model=\"item\" let-index=\"index\">\n <div>\n <a [innerHTML]=\"model.name\"></a>\n <p *ngIf=\"showDescription\">\n {{model.description}}\n </p>\n </div>\n</ng-template>\n\n<ng-template #itemTemplateWithoutInitial let-model=\"item\" let-index=\"index\">\n <div class=\"user-image\">\n <div class=\"user-initials\">{{calculateInitials(model.name)}}</div>\n </div>\n <div>\n <a [innerHTML]=\"model.name\"></a>\n <p *ngIf=\"showDescription\">\n {{model.description}}\n </p>\n </div>\n</ng-template>\n</div>\n", isInline: true, styles: [":host{overflow:auto;white-space:nowrap}.tags-input{align-items:center;display:flex;flex-wrap:wrap}.tags-input__tag{display:inline-block;margin-bottom:2px;margin-right:5px;padding-right:.3em}.tags-input__tag-remove-btn{cursor:pointer;display:inline-block;font-size:12px;margin:-3px 0 0 3px;padding:0;vertical-align:top}.tags-input__input-field{border:none;flex-grow:1;outline:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TypeaheadModule }, { kind: "directive", type: i3.TypeaheadDirective, selector: "[typeahead]", inputs: ["typeahead", "typeaheadMinLength", "adaptivePosition", "isAnimated", "typeaheadWaitMs", "typeaheadOptionsLimit", "typeaheadOptionField", "typeaheadGroupField", "typeaheadOrderBy", "typeaheadAsync", "typeaheadLatinize", "typeaheadSingleWords", "typeaheadWordDelimiters", "typeaheadMultipleSearch", "typeaheadMultipleSearchDelimiters", "typeaheadPhraseDelimiters", "typeaheadItemTemplate", "optionsListTemplate", "typeaheadScrollable", "typeaheadOptionsInScrollableView", "typeaheadHideResultsOnBlur", "typeaheadSelectFirstItem", "typeaheadIsFirstItemActive", "container", "dropup"], outputs: ["typeaheadLoading", "typeaheadNoResults", "typeaheadOnSelect", "typeaheadOnPreview", "typeaheadOnBlur"], exportAs: ["bs-typeahead"] }] }); }
295
- }
296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BTagsInputComponent, decorators: [{
297
- type: Component,
298
- args: [{ selector: 'b-tags-input', template: TAGS_INPUT_TEMPLATE, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], standalone: true, imports: [
299
- CommonModule,
300
- FormsModule,
301
- TypeaheadModule
302
- ], styles: [":host{overflow:auto;white-space:nowrap}.tags-input{align-items:center;display:flex;flex-wrap:wrap}.tags-input__tag{display:inline-block;margin-bottom:2px;margin-right:5px;padding-right:.3em}.tags-input__tag-remove-btn{cursor:pointer;display:inline-block;font-size:12px;margin:-3px 0 0 3px;padding:0;vertical-align:top}.tags-input__input-field{border:none;flex-grow:1;outline:none}\n"] }]
303
- }], propDecorators: { maxTags: [{
304
- type: Input
305
- }], removeLastOnBackspace: [{
306
- type: Input
307
- }], canDeleteTags: [{
308
- type: Input
309
- }], canAddTags: [{
310
- type: Input
311
- }], ViewMode: [{
312
- type: Input
313
- }], placeholder: [{
314
- type: Input
315
- }], showDescription: [{
316
- type: Input
317
- }], options: [{
318
- type: Input
319
- }], defaultImageURL: [{
320
- type: Input
321
- }], minLengthBeforeOptions: [{
322
- type: Input
323
- }], scrollableOptions: [{
324
- type: Input
325
- }], scrollableOptionsInView: [{
326
- type: Input
327
- }], onTagsChanged: [{
328
- type: Output
329
- }], onMaxTagsReached: [{
330
- type: Output
331
- }], onNoOptionsMatch: [{
332
- type: Output
333
- }], onBlurInput: [{
334
- type: Output
335
- }] } });
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdGFnLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9Db21wb25lbnRzL25nLXRhZy1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLHlCQUF5QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7QUFFckQsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXZCLE1BQU0sbUJBQW1CLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMEgzQixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUN4QixDQUFDO0FBRUYsTUFBTSxtQ0FBbUMsR0FBUTtJQUMvQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7SUFDbEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBbUJGLE1BQU0sT0FBTyxtQkFBbUI7SUFaaEM7UUFjRSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ2Ys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QW1DLENBQUMsY0FDcEMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3FCQUNoQjs4QkFTUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFR5cGVhaGVhZE1vZHVsZSwgVHlwZWFoZWFkTWF0Y2ggfSBmcm9tICduZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZCc7XHJcbmltcG9ydCB7IFRhZ0lucHV0VmlldyB9IGZyb20gJy4uL0VudW1zL1RhZ0lucHV0Vmlldyc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4geyB9O1xyXG5cclxuY29uc3QgVEFHU19JTlBVVF9URU1QTEFURSA9IGBcclxuXHJcbjxkaXYgY2xhc3M9XCJ0YWdzLWlucHV0XCI+XHJcbjxzcGFuIGNsYXNzPVwidGFncy1pbnB1dF9fdGFnIGxhYmVsIGxhYmVsLXByaW1hcnkgYmFkZ2UgYmFkZ2UtcHJpbWFyeVwiICpuZ0Zvcj1cImxldCB0YWcgb2YgdGFnc1wiPlxyXG5cclxuPHNwYW4gW25nU3dpdGNoXT1cIlZpZXdNb2RlXCI+XHJcbjxzcGFuICpuZ1N3aXRjaENhc2U9XCJ0YWdJbnB1dFZpZXdFbnVtLldpdGhJbWFnZVwiPlxyXG48aW1nIHN0eWxlPVwiYm9yZGVyLXJhZGl1czo1MCU7IGhlaWdodDo0MHB4OyB3aWR0aDogNDBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NXB4IDsgbWFyZ2luLXRvcDogNXB4O21hcmdpbi1yaWdodDogNXB4O1wiXHJcbnNyYz1cInt7KHRhZy5pbWFnZVVSTD90YWcuaW1hZ2VVUkw6ZGVmYXVsdEltYWdlVVJMKX19XCIgLz5cclxuPC9zcGFuPlxyXG5cclxuPHNwYW4gKm5nU3dpdGNoQ2FzZT1cInRhZ0lucHV0Vmlld0VudW0uV2l0aEluaXRpYWxcIj5cclxuPGRpdiBjbGFzcz1cInVzZXItaW5pdGlhbHNcIj57e2NhbGN1bGF0ZUluaXRpYWxzKHRhZy5uYW1lKX19PC9kaXY+XHJcbjwvc3Bhbj5cclxuXHJcbjxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+XHJcbjwvc3Bhbj5cclxuXHJcbjwvc3Bhbj5cclxuICB7e3RhZ1tkaXNwbGF5RmllbGRdfX1cclxuICA8c3BhbiAqbmdJZj1cImlzRGVsZXRlYWJsZSh0YWcpXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwidGFncy1pbnB1dF9fdGFnLXJlbW92ZS1idG5cIiAoY2xpY2spPVwicmVtb3ZlVGFnKHRhZylcIlxyXG4gICAgKHRvdWNoKT1cInJlbW92ZVRhZyh0YWcpXCI+XHJcbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XHJcbiAgPC9zcGFuPlxyXG48L3NwYW4+XHJcblxyXG48aW5wdXQgKm5nSWY9XCJvcHRpb25zID09PSBudWxsOyBlbHNlIHdpdGhUeXBlYWhlYWRcIiBjbGFzcz1cInRhZ3MtaW5wdXRfX2lucHV0LWZpZWxkXCIgdHlwZT1cInRleHRcIlxyXG4gIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCIgbmFtZT1cInRhZ3NcIiAoa2V5dXAuZW50ZXIpPVwiYWRkVGFnKHRhZ0lucHV0KVwiXHJcbiAgKGtleWRvd24uYmFja3NwYWNlKT1cInJlbW92ZUxhc3RUYWcodGFnSW5wdXQpXCIgW2Rpc2FibGVkXT1cIiFjYW5BZGRUYWdzIHx8IG1heGltdW1PZlRhZ3NSZWFjaGVkKClcIlxyXG4gIFtoaWRkZW5dPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiICN0YWdJbnB1dCAvPlxyXG5cclxuPG5nLXRlbXBsYXRlICN3aXRoVHlwZWFoZWFkPlxyXG4gIDxzcGFuIFtuZ1N3aXRjaF09XCJWaWV3TW9kZVwiPlxyXG4gICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cInRhZ0lucHV0Vmlld0VudW0uV2l0aEltYWdlXCI+XHJcbiAgICAgIDxpbnB1dCAqbmdJZj1cIihvcHRpb25zICE9PSBudWxsKVwiIGNsYXNzPVwidGFncy1pbnB1dF9faW5wdXQtZmllbGRcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcclxuICAgICAgICBuYW1lPVwidGFnc1wiIChrZXlkb3duLmJhY2tzcGFjZSk9XCJyZW1vdmVMYXN0VGFnKHRhZ0lucHV0KVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIiBbdHlwZWFoZWFkXT1cIm9wdGlvbnNcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRPcHRpb25GaWVsZF09XCJkaXNwbGF5RmllbGRcIiAodHlwZWFoZWFkT25TZWxlY3QpPVwidHlwZWFoZWFkT25TZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgKHR5cGVhaGVhZE5vUmVzdWx0cyk9XCJ0eXBlYWhlYWRPbk5vTWF0Y2goJGV2ZW50KVwiIFt0eXBlYWhlYWRNaW5MZW5ndGhdPVwibWluTGVuZ3RoQmVmb3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW3R5cGVhaGVhZFNjcm9sbGFibGVdPVwic2Nyb2xsYWJsZU9wdGlvbnNcIiBbdHlwZWFoZWFkTGF0aW5pemVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3R5cGVhaGVhZEl0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVXaXRoSW1hZ2VcIiBbdHlwZWFoZWFkT3B0aW9uc0luU2Nyb2xsYWJsZVZpZXddPVwic2Nyb2xsYWJsZU9wdGlvbnNJblZpZXdcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQWRkVGFncyB8fCBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpXCIgW2hpZGRlbl09XCIhY2FuQWRkVGFncyB8fCBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpXCJcclxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICN0YWdJbnB1dCAvPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJ0YWdJbnB1dFZpZXdFbnVtLldpdGhvdXRJbWFnZVwiPlxyXG4gICAgICA8aW5wdXQgKm5nSWY9XCIob3B0aW9ucyAhPT0gbnVsbClcIiBjbGFzcz1cInRhZ3MtaW5wdXRfX2lucHV0LWZpZWxkXCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgICAgbmFtZT1cInRhZ3NcIiAoa2V5ZG93bi5iYWNrc3BhY2UpPVwicmVtb3ZlTGFzdFRhZyh0YWdJbnB1dClcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkXCIgW3R5cGVhaGVhZF09XCJvcHRpb25zXCJcclxuICAgICAgICBbdHlwZWFoZWFkT3B0aW9uRmllbGRdPVwiZGlzcGxheUZpZWxkXCIgKHR5cGVhaGVhZE9uU2VsZWN0KT1cInR5cGVhaGVhZE9uU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICh0eXBlYWhlYWROb1Jlc3VsdHMpPVwidHlwZWFoZWFkT25Ob01hdGNoKCRldmVudClcIiBbdHlwZWFoZWFkTWluTGVuZ3RoXT1cIm1pbkxlbmd0aEJlZm9yZU9wdGlvbnNcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRTY3JvbGxhYmxlXT1cInNjcm9sbGFibGVPcHRpb25zXCIgW3R5cGVhaGVhZExhdGluaXplXT1cInRydWVcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRJdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlV2l0aG91dEltYWdlXCJcclxuICAgICAgICBbdHlwZWFoZWFkT3B0aW9uc0luU2Nyb2xsYWJsZVZpZXddPVwic2Nyb2xsYWJsZU9wdGlvbnNJblZpZXdcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQWRkVGFncyB8fCBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpXCIgW2hpZGRlbl09XCIhY2FuQWRkVGFncyB8fCBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpXCJcclxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgI3RhZ0lucHV0IC8+XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cInRhZ0lucHV0Vmlld0VudW0uV2l0aEluaXRpYWxcIj5cclxuICAgICAgPGlucHV0ICpuZ0lmPVwiKG9wdGlvbnMgIT09IG51bGwpXCIgY2xhc3M9XCJ0YWdzLWlucHV0X19pbnB1dC1maWVsZFwiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxyXG4gICAgICAgIG5hbWU9XCJ0YWdzXCIgKGtleWRvd24uYmFja3NwYWNlKT1cInJlbW92ZUxhc3RUYWcodGFnSW5wdXQpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiIFt0eXBlYWhlYWRdPVwib3B0aW9uc1wiXHJcbiAgICAgICAgW3R5cGVhaGVhZE9wdGlvbkZpZWxkXT1cImRpc3BsYXlGaWVsZFwiICh0eXBlYWhlYWRPblNlbGVjdCk9XCJ0eXBlYWhlYWRPblNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAodHlwZWFoZWFkTm9SZXN1bHRzKT1cInR5cGVhaGVhZE9uTm9NYXRjaCgkZXZlbnQpXCIgW3R5cGVhaGVhZE1pbkxlbmd0aF09XCJtaW5MZW5ndGhCZWZvcmVPcHRpb25zXCJcclxuICAgICAgICBbdHlwZWFoZWFkU2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlT3B0aW9uc1wiIFt0eXBlYWhlYWRMYXRpbml6ZV09XCJ0cnVlXCJcclxuICAgICAgICBbdHlwZWFoZWFkSXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVdpdGhvdXRJbml0aWFsXCJcclxuICAgICAgICBbdHlwZWFoZWFkT3B0aW9uc0luU2Nyb2xsYWJsZVZpZXddPVwic2Nyb2xsYWJsZU9wdGlvbnNJblZpZXdcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuQWRkVGFncyB8fCBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpXCIgW2hpZGRlbl09XCIhY2FuQWRkVGFncyB8fCBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpXCJcclxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgI3RhZ0lucHV0IC8+XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgPGlucHV0ICpuZ0lmPVwiKG9wdGlvbnMgIT09IG51bGwpXCIgY2xhc3M9XCJ0YWdzLWlucHV0X19pbnB1dC1maWVsZFwiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxyXG4gICAgICAgIG5hbWU9XCJ0YWdzXCIgKGtleWRvd24uYmFja3NwYWNlKT1cInJlbW92ZUxhc3RUYWcodGFnSW5wdXQpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiIFt0eXBlYWhlYWRdPVwib3B0aW9uc1wiXHJcbiAgICAgICAgW3R5cGVhaGVhZE9wdGlvbkZpZWxkXT1cImRpc3BsYXlGaWVsZFwiICh0eXBlYWhlYWRPblNlbGVjdCk9XCJ0eXBlYWhlYWRPblNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAodHlwZWFoZWFkTm9SZXN1bHRzKT1cInR5cGVhaGVhZE9uTm9NYXRjaCgkZXZlbnQpXCIgW3R5cGVhaGVhZE1pbkxlbmd0aF09XCJtaW5MZW5ndGhCZWZvcmVPcHRpb25zXCJcclxuICAgICAgICBbdHlwZWFoZWFkU2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlT3B0aW9uc1wiIFt0eXBlYWhlYWRMYXRpbml6ZV09XCJ0cnVlXCJcclxuICAgICAgICBbdHlwZWFoZWFkSXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVdpdGhvdXRJbWFnZVwiXHJcbiAgICAgICAgW3R5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3XT1cInNjcm9sbGFibGVPcHRpb25zSW5WaWV3XCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiIFtoaWRkZW5dPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICN0YWdJbnB1dCAvPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICA8L3NwYW4+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpdGVtVGVtcGxhdGVXaXRoSW1hZ2UgbGV0LW1vZGVsPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgPGltZ1xyXG4gICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOjUwJTsgaGVpZ2h0OjQwcHg7IHdpZHRoOiA0MHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDo1cHggOyBtYXJnaW4tdG9wOiA1cHg7bWFyZ2luLXJpZ2h0OiA1cHg7XCJcclxuICAgIHNyYz1cInt7KG1vZGVsLmltYWdlVVJMP21vZGVsLmltYWdlVVJMOmRlZmF1bHRJbWFnZVVSTCl9fVwiIC8+XHJcbiAgPGRpdj5cclxuICAgIDxhIFtpbm5lckhUTUxdPVwibW9kZWwubmFtZVwiPjwvYT5cclxuICAgIDxwICpuZ0lmPVwic2hvd0Rlc2NyaXB0aW9uXCI+XHJcbiAgICAgIHt7bW9kZWwuZGVzY3JpcHRpb259fVxyXG4gICAgPC9wPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpdGVtVGVtcGxhdGVXaXRob3V0SW1hZ2UgbGV0LW1vZGVsPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgPGRpdj5cclxuICAgIDxhIFtpbm5lckhUTUxdPVwibW9kZWwubmFtZVwiPjwvYT5cclxuICAgIDxwICpuZ0lmPVwic2hvd0Rlc2NyaXB0aW9uXCI+XHJcbiAgICAgIHt7bW9kZWwuZGVzY3JpcHRpb259fVxyXG4gICAgPC9wPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpdGVtVGVtcGxhdGVXaXRob3V0SW5pdGlhbCBsZXQtbW9kZWw9XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cclxuICA8ZGl2IGNsYXNzPVwidXNlci1pbWFnZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInVzZXItaW5pdGlhbHNcIj57e2NhbGN1bGF0ZUluaXRpYWxzKG1vZGVsLm5hbWUpfX08L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2PlxyXG4gICAgPGEgW2lubmVySFRNTF09XCJtb2RlbC5uYW1lXCI+PC9hPlxyXG4gICAgPHAgKm5nSWY9XCJzaG93RGVzY3JpcHRpb25cIj5cclxuICAgICAge3ttb2RlbC5kZXNjcmlwdGlvbn19XHJcbiAgICA8L3A+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5gO1xyXG5cclxuY29uc3QgVEFHU19JTlBVVF9TVFlMRSA9IGBcclxuICAgIDpob3N0IHtcclxuICAgICAgICBvdmVyZmxvdzogYXV0bztcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgfVxyXG5cclxuICAgIC50YWdzLWlucHV0IHtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgfVxyXG5cclxuICAgIC50YWdzLWlucHV0X190YWcge1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMC4zZW07XHJcbiAgICB9XHJcblxyXG4gICAgLnRhZ3MtaW5wdXRfX3RhZy1yZW1vdmUtYnRuIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgICBtYXJnaW46IC0zcHggMCAwIDNweDtcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgICB9XHJcblxyXG4gICAgLnRhZ3MtaW5wdXRfX2lucHV0LWZpZWxkIHtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgZmxleC1ncm93OiAxO1xyXG4gICAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICB9XHJcbmA7XHJcblxyXG5jb25zdCBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xyXG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJUYWdzSW5wdXRDb21wb25lbnQpLFxyXG4gIG11bHRpOiB0cnVlXHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRhZ3NDaGFuZ2VkRXZlbnQge1xyXG4gIGNoYW5nZTogc3RyaW5nLFxyXG4gIHRhZzogYW55O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ItdGFncy1pbnB1dCcsXHJcbiAgdGVtcGxhdGU6IFRBR1NfSU5QVVRfVEVNUExBVEUsXHJcbiAgc3R5bGVzOiBbVEFHU19JTlBVVF9TVFlMRV0sXHJcbiAgcHJvdmlkZXJzOiBbQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUeXBlYWhlYWRNb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCVGFnc0lucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBzZWxlY3RlZDogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIHRhZ3M6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcclxuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG4gIHB1YmxpYyB0YWdJbnB1dFZpZXdFbnVtID0gVGFnSW5wdXRWaWV3O1xyXG4gIEBJbnB1dCgpIG1heFRhZ3M6IG51bWJlcjtcclxuICBASW5wdXQoKSByZW1vdmVMYXN0T25CYWNrc3BhY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjYW5EZWxldGVUYWdzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjYW5BZGRUYWdzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBWaWV3TW9kZTogVGFnSW5wdXRWaWV3ID0gVGFnSW5wdXRWaWV3LldpdGhvdXRJbWFnZTtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2hvd0Rlc2NyaXB0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBvcHRpb25zOiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRJbWFnZVVSTDogYW55ID0gbnVsbDtcclxuICBkaXNwbGF5RmllbGQ6IHN0cmluZyA9ICduYW1lJztcclxuICBASW5wdXQoKSBtaW5MZW5ndGhCZWZvcmVPcHRpb25zOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIHNjcm9sbGFibGVPcHRpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2Nyb2xsYWJsZU9wdGlvbnNJblZpZXc6IG51bWJlciA9IDU7XHJcbiAgQE91dHB1dCgpIG9uVGFnc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxUYWdzQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25NYXhUYWdzUmVhY2hlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbk5vT3B0aW9uc01hdGNoOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQmx1cklucHV0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnRhZ3MgJiYgdGhpcy50YWdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRhZ3NDaGFuZ2VkKHR5cGU6IHN0cmluZywgdGFnOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnRhZ3MpO1xyXG4gICAgdGhpcy5vblRhZ3NDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICBjaGFuZ2U6IHR5cGUsXHJcbiAgICAgIHRhZzogdGFnXHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLm1heGltdW1PZlRhZ3NSZWFjaGVkKCkpIHtcclxuICAgICAgdGhpcy5vbk1heFRhZ3NSZWFjaGVkLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUxhc3RUYWcodGFnSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5yZW1vdmVMYXN0T25CYWNrc3BhY2UgfHwgIXRoaXMudGFncz8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGFnSW5wdXQudmFsdWUgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlVGFnKHRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoIC0gMV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkVGFnKHRhZ0lucHV0OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGFnSW5wdXQudmFsdWUudHJpbSgpICE9PSAnJykge1xyXG4gICAgICBsZXQgdGFnID0ge1xyXG4gICAgICAgIFt0aGlzLmRpc3BsYXlGaWVsZF06IHRhZ0lucHV0LnZhbHVlXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuYWRkUHJlZGVmaW5lZFRhZyh0YWcpO1xyXG4gICAgfVxyXG4gICAgdGFnSW5wdXQudmFsdWUgPSAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkUHJlZGVmaW5lZFRhZyh0YWc6IE9iamVjdCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFncyA9PSBudWxsKVxyXG4gICAgICB0aGlzLnRhZ3MgPSBbXTtcclxuICAgIGlmICghdGhpcy5tYXhpbXVtT2ZUYWdzUmVhY2hlZCgpKSB7XHJcbiAgICAgIHRoaXMudGFncy5wdXNoKHRhZyk7XHJcbiAgICAgIHRoaXMudGFnc0NoYW5nZWQoJ2FkZCcsIHRhZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVUYWcodGFnVG9SZW1vdmU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRGVsZXRlYWJsZSh0YWdUb1JlbW92ZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWdzID0gdGhpcy50YWdzLmZpbHRlcih0YWcgPT4gdGFnVG9SZW1vdmUgIT09IHRhZyk7XHJcbiAgICB0aGlzLnRhZ3NDaGFuZ2VkKCdyZW1vdmUnLCB0YWdUb1JlbW92ZSk7XHJcbiAgfVxyXG5cclxuICBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdGhpcy5tYXhUYWdzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRhZ3MgJiYgdGhpcy50YWdzLmxlbmd0aCA+PSB0aGlzLm1heFRhZ3M7XHJcbiAgfVxyXG5cclxuICBpc0RlbGV0ZWFibGUodGFnOiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2YgdGFnLmRlbGV0ZWFibGUgIT09IFwidW5kZWZpbmVkXCIgJiYgIXRhZy5kZWxldGVhYmxlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNhbkRlbGV0ZVRhZ3M7XHJcbiAgfVxyXG5cclxuICB0eXBlYWhlYWRPblNlbGVjdChlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0eXBlb2YgZS5pdGVtID09PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLmFkZFByZWRlZmluZWRUYWcoe1xyXG4gICAgICAgIFt0aGlzLmRpc3BsYXlGaWVsZF06IGUudmFsdWVcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZFByZWRlZmluZWRUYWcoZS5pdGVtKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWQgPSAnJztcclxuICB9XHJcblxyXG4gIHR5cGVhaGVhZE9uTm9NYXRjaChlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5vbk5vT3B0aW9uc01hdGNoICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLm9uTm9PcHRpb25zTWF0Y2guZW1pdChlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLnRhZ3MpIHtcclxuICAgICAgdGhpcy50YWdzID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlSW5pdGlhbHMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHZhciBmdWxsTmFtZSA9IG5hbWUuc3BsaXQoJyAnKTtcclxuICAgIHZhciBpbml0aWFscyA9IFwiXCI7XHJcbiAgICBpZiAoZnVsbE5hbWUubGVuZ3RoID4gMSlcclxuICAgICAgaW5pdGlhbHMgPSBmdWxsTmFtZS5zaGlmdCgpLmNoYXJBdCgwKSArIGZ1bGxOYW1lLnBvcCgpLmNoYXJBdCgwKTtcclxuICAgIGVsc2VcclxuICAgICAgaW5pdGlhbHMgPSBmdWxsTmFtZS5zaGlmdCgpLmNoYXJBdCgwKTtcclxuICAgIHJldHVybiBpbml0aWFscy50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkJsdXJJbnB1dC5lbWl0KCk7XHJcbiAgfVxyXG4gIC8vIChrZXlkb3duLlRhYikgPSBcIm9uVGFiKCRldmVudClcIlxyXG4gIC8vb25UYWIoZXZlbnQpIHtcclxuICAvLyAgdGhpcy5vblRhYklucHV0LmVtaXQoKTtcclxuICAvLyAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAvLyAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgLy99XHJcbn1cclxuIl19
@@ -1,39 +0,0 @@
1
- import { Directive, HostListener, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class PreventDoubleClickDirective {
4
- constructor(renderer, elementRef) {
5
- this.renderer = renderer;
6
- this.elementRef = elementRef;
7
- this.debounceTime = 2000; // Default debounce time in milliseconds
8
- this.isDisabled = false;
9
- }
10
- onClick(event) {
11
- if (this.isDisabled) {
12
- event.preventDefault();
13
- event.stopImmediatePropagation();
14
- return;
15
- }
16
- this.isDisabled = true;
17
- this.renderer.addClass(this.elementRef.nativeElement, 'disabled');
18
- // Re-enable the button after the debounce time
19
- setTimeout(() => {
20
- this.isDisabled = false;
21
- this.renderer.removeClass(this.elementRef.nativeElement, 'disabled');
22
- }, this.debounceTime);
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PreventDoubleClickDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
25
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: PreventDoubleClickDirective, isStandalone: true, selector: "[appPreventDoubleClick]", inputs: { debounceTime: "debounceTime" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 }); }
26
- }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PreventDoubleClickDirective, decorators: [{
28
- type: Directive,
29
- args: [{
30
- selector: '[appPreventDoubleClick]',
31
- standalone: true
32
- }]
33
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { debounceTime: [{
34
- type: Input
35
- }], onClick: [{
36
- type: HostListener,
37
- args: ['click', ['$event']]
38
- }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwUHJldmVudERvdWJsZUNsaWNrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9TaGFyZWQvRGlyZWN0aXZlcy9hcHBQcmV2ZW50RG91YmxlQ2xpY2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQzs7QUFNdEYsTUFBTSxPQUFPLDJCQUEyQjtJQUd0QyxZQUFvQixRQUFtQixFQUFVLFVBQXNCO1FBQW5ELGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRjlELGlCQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsd0NBQXdDO1FBQzlELGVBQVUsR0FBRyxLQUFLLENBQUM7SUFDZ0QsQ0FBQztJQUc1RSxPQUFPLENBQUMsS0FBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2pDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xFLCtDQUErQztRQUMvQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdkUsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QixDQUFDOytHQXBCVSwyQkFBMkI7bUdBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7dUdBRVUsWUFBWTtzQkFBcEIsS0FBSztnQkFLTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcFByZXZlbnREb3VibGVDbGlja10nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFByZXZlbnREb3VibGVDbGlja0RpcmVjdGl2ZSB7XHJcbiAgQElucHV0KCkgZGVib3VuY2VUaW1lID0gMjAwMDsgLy8gRGVmYXVsdCBkZWJvdW5jZSB0aW1lIGluIG1pbGxpc2Vjb25kc1xyXG4gIHByaXZhdGUgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcpO1xyXG4gICAgLy8gUmUtZW5hYmxlIHRoZSBidXR0b24gYWZ0ZXIgdGhlIGRlYm91bmNlIHRpbWVcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJyk7XHJcbiAgICB9LCB0aGlzLmRlYm91bmNlVGltZSk7XHJcbiAgfVxyXG59Il19
@@ -1,19 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class NgTemplateNameDirective {
4
- constructor(template) {
5
- this.template = template;
6
- }
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgTemplateNameDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
8
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NgTemplateNameDirective, isStandalone: true, selector: "ng-template[name]", inputs: { name: "name" }, ngImport: i0 }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgTemplateNameDirective, decorators: [{
11
- type: Directive,
12
- args: [{
13
- selector: 'ng-template[name]',
14
- standalone: true
15
- }]
16
- }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { name: [{
17
- type: Input
18
- }] } });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtbmFtZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvU2hhcmVkL0RpcmVjdGl2ZXMvdGVtcGxhdGUtbmFtZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBTTlELE1BQU0sT0FBTyx1QkFBdUI7SUFHbEMsWUFBbUIsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFBSSxDQUFDOytHQUh2Qyx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7Z0ZBRVUsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbbmFtZV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nVGVtcGxhdGVOYW1lRGlyZWN0aXZlIHtcclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PikgeyB9XHJcbn0iXX0=
@@ -1,8 +0,0 @@
1
- export var CalendarView;
2
- (function (CalendarView) {
3
- CalendarView[CalendarView["Month"] = 1] = "Month";
4
- CalendarView[CalendarView["Weekly"] = 2] = "Weekly";
5
- CalendarView[CalendarView["Daily"] = 3] = "Daily";
6
- CalendarView[CalendarView["Agenda"] = 4] = "Agenda";
7
- })(CalendarView || (CalendarView = {}));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXJWaWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9FbnVtcy9DYWxlbmRhclZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxDQUFOLElBQVksWUFLVDtBQUxILFdBQVksWUFBWTtJQUNwQixpREFBUyxDQUFBO0lBQ1QsbURBQVUsQ0FBQTtJQUNWLGlEQUFTLENBQUE7SUFDVCxtREFBVSxDQUFBO0FBQ1osQ0FBQyxFQUxTLFlBQVksS0FBWixZQUFZLFFBS3JCIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBlbnVtIENhbGVuZGFyVmlldyB7XHJcbiAgICBNb250aCA9IDEsXHJcbiAgICBXZWVrbHkgPSAyLFxyXG4gICAgRGFpbHkgPSAzLFxyXG4gICAgQWdlbmRhID0gNFxyXG4gIH0iXX0=
@@ -1,6 +0,0 @@
1
- export var ControlLayout;
2
- (function (ControlLayout) {
3
- ControlLayout[ControlLayout["Vertical"] = 1] = "Vertical";
4
- ControlLayout[ControlLayout["Horizontal"] = 2] = "Horizontal";
5
- })(ControlLayout || (ControlLayout = {}));
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbExheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9TaGFyZWQvRW51bXMvQ29udHJvbExheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3JCLHlEQUFZLENBQUE7SUFDWiw2REFBYyxDQUFBO0FBQ2xCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENvbnRyb2xMYXlvdXQgIHtcclxuICAgIFZlcnRpY2FsID0gMSxcclxuICAgIEhvcml6b250YWwgPSAyXHJcbn1cclxuIl19