@bnsights/bbsf-controls 1.0.107 → 1.0.110
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.
- package/README.md +15 -0
- package/esm2022/bnsights-bbsf-controls.mjs +5 -0
- package/esm2022/lib/Shared/Components/app-base-component.mjs +226 -0
- package/esm2022/lib/Shared/Components/ng-tag-input.mjs +331 -0
- package/esm2022/lib/Shared/Directives/template-name.directive.mjs +18 -0
- package/{esm2015/lib/Shared/Enums/CalendarView.js → esm2022/lib/Shared/Enums/CalendarView.mjs} +7 -7
- package/{esm2015/lib/Shared/Enums/ControlLayout.js → esm2022/lib/Shared/Enums/ControlLayout.mjs} +5 -5
- package/{esm2015/lib/Shared/Enums/Countries.js → esm2022/lib/Shared/Enums/Countries.mjs} +246 -246
- package/{esm2015/lib/Shared/Enums/Enums.js → esm2022/lib/Shared/Enums/Enums.mjs} +32 -32
- package/{esm2015/lib/Shared/Enums/FileType.js → esm2022/lib/Shared/Enums/FileType.mjs} +21 -21
- package/{esm2015/lib/Shared/Enums/FilterType.js → esm2022/lib/Shared/Enums/FilterType.mjs} +10 -10
- package/{esm2015/lib/Shared/Enums/FontSize.js → esm2022/lib/Shared/Enums/FontSize.mjs} +6 -6
- package/{esm2015/lib/Shared/Enums/ForceDirection.js → esm2022/lib/Shared/Enums/ForceDirection.mjs} +5 -5
- package/{esm2015/lib/Shared/Enums/IconPosition.js → esm2022/lib/Shared/Enums/IconPosition.mjs} +5 -5
- package/{esm2015/lib/Shared/Enums/ImageType.js → esm2022/lib/Shared/Enums/ImageType.mjs} +9 -9
- package/{esm2015/lib/Shared/Enums/InputType.js → esm2022/lib/Shared/Enums/InputType.mjs} +9 -9
- package/{esm2015/lib/Shared/Enums/Insert.js → esm2022/lib/Shared/Enums/Insert.mjs} +8 -8
- package/{esm2015/lib/Shared/Enums/LanguageMode.js → esm2022/lib/Shared/Enums/LanguageMode.mjs} +10 -10
- package/{esm2015/lib/Shared/Enums/LanguageValidation.js → esm2022/lib/Shared/Enums/LanguageValidation.mjs} +5 -5
- package/{esm2015/lib/Shared/Enums/Misc.js → esm2022/lib/Shared/Enums/Misc.mjs} +6 -6
- package/{esm2015/lib/Shared/Enums/PagingActionMode.js → esm2022/lib/Shared/Enums/PagingActionMode.mjs} +5 -5
- package/{esm2015/lib/Shared/Enums/Para.js → esm2022/lib/Shared/Enums/Para.mjs} +8 -8
- package/{esm2015/lib/Shared/Enums/PickerType.js → esm2022/lib/Shared/Enums/PickerType.mjs} +6 -6
- package/{esm2015/lib/Shared/Enums/SelectMode.js → esm2022/lib/Shared/Enums/SelectMode.mjs} +5 -5
- package/{esm2015/lib/Shared/Enums/StartView.js → esm2022/lib/Shared/Enums/StartView.mjs} +6 -6
- package/{esm2015/lib/Shared/Enums/Style.js → esm2022/lib/Shared/Enums/Style.mjs} +7 -7
- package/{esm2015/lib/Shared/Enums/StyleConfirmationMode.js → esm2022/lib/Shared/Enums/StyleConfirmationMode.mjs} +6 -6
- package/{esm2015/lib/Shared/Enums/TagInputView.js → esm2022/lib/Shared/Enums/TagInputView.mjs} +6 -6
- package/{esm2015/lib/Shared/Enums/menu-list-enum.js → esm2022/lib/Shared/Enums/menu-list-enum.mjs} +5 -5
- package/{esm2015/lib/Shared/Models/Attribute.js → esm2022/lib/Shared/Models/Attribute.mjs} +2 -2
- package/{esm2015/lib/Shared/Models/AutocompleteDTO.js → esm2022/lib/Shared/Models/AutocompleteDTO.mjs} +7 -7
- package/{esm2015/lib/Shared/Models/AutocompleteOptions.js → esm2022/lib/Shared/Models/AutocompleteOptions.mjs} +23 -23
- package/{esm2015/lib/Shared/Models/CalendarEventDTO.js → esm2022/lib/Shared/Models/CalendarEventDTO.mjs} +2 -2
- package/{esm2015/lib/Shared/Models/CalendarOptions.js → esm2022/lib/Shared/Models/CalendarOptions.mjs} +18 -18
- package/{esm2015/lib/Shared/Models/CancelDTO.js → esm2022/lib/Shared/Models/CancelDTO.mjs} +6 -6
- package/{esm2015/lib/Shared/Models/CaptchaStyle.js → esm2022/lib/Shared/Models/CaptchaStyle.mjs} +2 -2
- package/{esm2015/lib/Shared/Models/CheckBoxOptions.js → esm2022/lib/Shared/Models/CheckBoxOptions.mjs} +10 -10
- package/{esm2015/lib/Shared/Models/ConfirmationModalOptions.js → esm2022/lib/Shared/Models/ConfirmationModalOptions.mjs} +38 -38
- package/{esm2015/lib/Shared/Models/ControlOptionsBase.js → esm2022/lib/Shared/Models/ControlOptionsBase.mjs} +12 -12
- package/{esm2015/lib/Shared/Models/CustomValidation.js → esm2022/lib/Shared/Models/CustomValidation.mjs} +13 -13
- package/{esm2015/lib/Shared/Models/DropdownListItem.js → esm2022/lib/Shared/Models/DropdownListItem.mjs} +3 -3
- package/{esm2015/lib/Shared/Models/DropdownOptions.js → esm2022/lib/Shared/Models/DropdownOptions.mjs} +15 -15
- package/{esm2015/lib/Shared/Models/EditPersonalImage.js → esm2022/lib/Shared/Models/EditPersonalImage.mjs} +6 -6
- package/{esm2015/lib/Shared/Models/EnglishArabicDTO.js → esm2022/lib/Shared/Models/EnglishArabicDTO.mjs} +10 -10
- package/{esm2015/lib/Shared/Models/FileDTO.js → esm2022/lib/Shared/Models/FileDTO.mjs} +1 -1
- package/{esm2015/lib/Shared/Models/FileUploadModel.js → esm2022/lib/Shared/Models/FileUploadModel.mjs} +2 -2
- package/{esm2015/lib/Shared/Models/FileUploadOptions.js → esm2022/lib/Shared/Models/FileUploadOptions.mjs} +10 -10
- package/{esm2015/lib/Shared/Models/FilterItem.js → esm2022/lib/Shared/Models/FilterItem.mjs} +7 -7
- package/{esm2015/lib/Shared/Models/FormOptions.js → esm2022/lib/Shared/Models/FormOptions.mjs} +27 -27
- package/{esm2015/lib/Shared/Models/HtmlEditorOptions.js → esm2022/lib/Shared/Models/HtmlEditorOptions.mjs} +11 -11
- package/{esm2015/lib/Shared/Models/ImageUploadOptions.js → esm2022/lib/Shared/Models/ImageUploadOptions.mjs} +13 -13
- package/{esm2015/lib/Shared/Models/MapAutoCompleteOptions.js → esm2022/lib/Shared/Models/MapAutoCompleteOptions.mjs} +3 -3
- package/{esm2015/lib/Shared/Models/MapAutocompleteDTO.js → esm2022/lib/Shared/Models/MapAutocompleteDTO.mjs} +5 -5
- package/{esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js → esm2022/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs} +8 -8
- package/{esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js → esm2022/lib/Shared/Models/MultiLingualTextAreaOptions.mjs} +8 -8
- package/{esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js → esm2022/lib/Shared/Models/MultilingualControlOptionsBase.mjs} +15 -15
- package/{esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js → esm2022/lib/Shared/Models/MultilingualTextBoxOptions.mjs} +13 -13
- package/{esm2015/lib/Shared/Models/MultipleFileUploadModel.js → esm2022/lib/Shared/Models/MultipleFileUploadModel.mjs} +8 -8
- package/{esm2015/lib/Shared/Models/PagingDTO.js → esm2022/lib/Shared/Models/PagingDTO.mjs} +12 -12
- package/{esm2015/lib/Shared/Models/PagingOptions.js → esm2022/lib/Shared/Models/PagingOptions.mjs} +46 -46
- package/{esm2015/lib/Shared/Models/PagingPayload.js → esm2022/lib/Shared/Models/PagingPayload.mjs} +2 -2
- package/{esm2015/lib/Shared/Models/PhoneOptions.js → esm2022/lib/Shared/Models/PhoneOptions.mjs} +12 -12
- package/{esm2015/lib/Shared/Models/ProfileImageUploadOptions.js → esm2022/lib/Shared/Models/ProfileImageUploadOptions.mjs} +10 -10
- package/{esm2015/lib/Shared/Models/ProfilePictureDTO.js → esm2022/lib/Shared/Models/ProfilePictureDTO.mjs} +2 -2
- package/{esm2015/lib/Shared/Models/RadioButtonItem.js → esm2022/lib/Shared/Models/RadioButtonItem.mjs} +2 -2
- package/{esm2015/lib/Shared/Models/RadioButtonOptions.js → esm2022/lib/Shared/Models/RadioButtonOptions.mjs} +3 -3
- package/{esm2015/lib/Shared/Models/RangeNumber.js → esm2022/lib/Shared/Models/RangeNumber.mjs} +2 -2
- package/{esm2015/lib/Shared/Models/Recaptcha.js → esm2022/lib/Shared/Models/Recaptcha.mjs} +5 -5
- package/{esm2015/lib/Shared/Models/RecaptchaOptions.js → esm2022/lib/Shared/Models/RecaptchaOptions.mjs} +21 -21
- package/{esm2015/lib/Shared/Models/RepeaterField.js → esm2022/lib/Shared/Models/RepeaterField.mjs} +2 -2
- package/{esm2015/lib/Shared/Models/RepeaterOptions.js → esm2022/lib/Shared/Models/RepeaterOptions.mjs} +12 -12
- package/{esm2015/lib/Shared/Models/SaveDTO.js → esm2022/lib/Shared/Models/SaveDTO.mjs} +6 -6
- package/{esm2015/lib/Shared/Models/TagsInputDTO.js → esm2022/lib/Shared/Models/TagsInputDTO.mjs} +2 -2
- package/{esm2015/lib/Shared/Models/TagsInputOptions.js → esm2022/lib/Shared/Models/TagsInputOptions.mjs} +40 -40
- package/{esm2015/lib/Shared/Models/TextAreaOptions.js → esm2022/lib/Shared/Models/TextAreaOptions.mjs} +3 -3
- package/{esm2015/lib/Shared/Models/TextBoxOptions.js → esm2022/lib/Shared/Models/TextBoxOptions.mjs} +22 -22
- package/{esm2015/lib/Shared/Models/ToggleslideOptions.js → esm2022/lib/Shared/Models/ToggleslideOptions.mjs} +8 -8
- package/{esm2015/lib/Shared/Models/UploadPersonalImage.js → esm2022/lib/Shared/Models/UploadPersonalImage.mjs} +6 -6
- package/{esm2015/lib/Shared/Models/bread-crumb.js → esm2022/lib/Shared/Models/bread-crumb.mjs} +7 -7
- package/{esm2015/lib/Shared/Models/control-filter-Item.js → esm2022/lib/Shared/Models/control-filter-Item.mjs} +5 -5
- package/{esm2015/lib/Shared/Models/datePickerOptions.js → esm2022/lib/Shared/Models/datePickerOptions.mjs} +22 -22
- package/{esm2015/lib/Shared/Models/filter-options.js → esm2022/lib/Shared/Models/filter-options.mjs} +8 -8
- package/{esm2015/lib/Shared/Models/page-header-options.js → esm2022/lib/Shared/Models/page-header-options.mjs} +77 -77
- package/esm2022/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -0
- package/esm2022/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -0
- package/{esm2015/lib/Shared/config/environment.js → esm2022/lib/Shared/config/environment.mjs} +11 -11
- package/esm2022/lib/Shared/default_intl.mjs +29 -0
- package/esm2022/lib/Shared/services/ControlUtility.mjs +162 -0
- package/esm2022/lib/Shared/services/GlobalSettings.service.mjs +30 -0
- package/esm2022/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
- package/esm2022/lib/Shared/services/render-component-service.service.mjs +30 -0
- package/esm2022/lib/Shared/services/validationErrorMassage.service.mjs +170 -0
- package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +262 -0
- package/esm2022/lib/controls/Calendar/Calendar.component.mjs +173 -0
- package/esm2022/lib/controls/CheckBox/CheckBox.component.mjs +117 -0
- package/esm2022/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -0
- package/esm2022/lib/controls/DateTimePicker/DateTimePicker.component.mjs +223 -0
- package/esm2022/lib/controls/DropdownList/DropdownList.component.mjs +193 -0
- package/esm2022/lib/controls/FileUplaod/FileUplaod.component.mjs +447 -0
- package/esm2022/lib/controls/Form/Form.component.mjs +101 -0
- package/{esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js → esm2022/lib/controls/HtmlEditor/HtmlEditor.component.mjs} +226 -226
- package/esm2022/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
- package/esm2022/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +324 -0
- package/esm2022/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
- package/esm2022/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +429 -0
- package/esm2022/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +428 -0
- package/esm2022/lib/controls/Paging/JwPagination.component.mjs +156 -0
- package/esm2022/lib/controls/Paging/Paging.component.mjs +312 -0
- package/esm2022/lib/controls/Phone/Phone.component.mjs +129 -0
- package/esm2022/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +376 -0
- package/esm2022/lib/controls/RadioButton/RadioButton.component.mjs +109 -0
- package/esm2022/lib/controls/Recaptcha/Recaptcha.component.mjs +135 -0
- package/esm2022/lib/controls/Repeater/repeater/repeater.component.mjs +125 -0
- package/esm2022/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -0
- package/esm2022/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -0
- package/esm2022/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -0
- package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +277 -0
- package/esm2022/lib/controls/TextArea/TextArea.component.mjs +196 -0
- package/esm2022/lib/controls/TextBox/TextBox.component.mjs +306 -0
- package/esm2022/lib/controls/Toggleslide/toggleslide.component.mjs +90 -0
- package/esm2022/lib/controls/bbsf-controls.module.mjs +350 -0
- package/esm2022/lib/controls/page-header-component/page-header-component.component.mjs +37 -0
- package/{esm2015/public-api.js → esm2022/public-api.mjs} +130 -130
- package/{fesm2015/bnsights-bbsf-controls.js → fesm2022/bnsights-bbsf-controls.mjs} +8876 -8851
- package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/Shared/Components/app-base-component.d.ts +58 -51
- package/lib/Shared/Components/ng-tag-input.d.ts +50 -47
- package/lib/Shared/Directives/template-name.directive.d.ts +9 -6
- package/lib/Shared/Enums/CalendarView.d.ts +6 -6
- package/lib/Shared/Enums/ControlLayout.d.ts +4 -4
- package/lib/Shared/Enums/Countries.d.ts +245 -245
- package/lib/Shared/Enums/Enums.d.ts +30 -30
- package/lib/Shared/Enums/FileType.d.ts +20 -20
- package/lib/Shared/Enums/FilterType.d.ts +9 -9
- package/lib/Shared/Enums/FontSize.d.ts +5 -5
- package/lib/Shared/Enums/ForceDirection.d.ts +4 -4
- package/lib/Shared/Enums/IconPosition.d.ts +4 -4
- package/lib/Shared/Enums/ImageType.d.ts +8 -8
- package/lib/Shared/Enums/InputType.d.ts +8 -8
- package/lib/Shared/Enums/Insert.d.ts +7 -7
- package/lib/Shared/Enums/LanguageMode.d.ts +9 -9
- package/lib/Shared/Enums/LanguageValidation.d.ts +4 -4
- package/lib/Shared/Enums/Misc.d.ts +5 -5
- package/lib/Shared/Enums/PagingActionMode.d.ts +4 -4
- package/lib/Shared/Enums/Para.d.ts +7 -7
- package/lib/Shared/Enums/PickerType.d.ts +5 -5
- package/lib/Shared/Enums/SelectMode.d.ts +4 -4
- package/lib/Shared/Enums/StartView.d.ts +5 -5
- package/lib/Shared/Enums/Style.d.ts +6 -6
- package/lib/Shared/Enums/StyleConfirmationMode.d.ts +5 -5
- package/lib/Shared/Enums/TagInputView.d.ts +5 -5
- package/lib/Shared/Enums/menu-list-enum.d.ts +4 -4
- package/lib/Shared/Models/Attribute.d.ts +4 -4
- package/lib/Shared/Models/AutocompleteDTO.d.ts +5 -5
- package/lib/Shared/Models/AutocompleteOptions.d.ts +40 -40
- package/lib/Shared/Models/CalendarEventDTO.d.ts +8 -8
- package/lib/Shared/Models/CalendarOptions.d.ts +23 -23
- package/lib/Shared/Models/CancelDTO.d.ts +5 -5
- package/lib/Shared/Models/CaptchaStyle.d.ts +7 -7
- package/lib/Shared/Models/CheckBoxOptions.d.ts +7 -7
- package/lib/Shared/Models/ConfirmationModalOptions.d.ts +21 -21
- package/lib/Shared/Models/ControlOptionsBase.d.ts +44 -44
- package/lib/Shared/Models/CustomValidation.d.ts +10 -10
- package/lib/Shared/Models/DropdownListItem.d.ts +4 -4
- package/lib/Shared/Models/DropdownOptions.d.ts +33 -33
- package/lib/Shared/Models/EditPersonalImage.d.ts +5 -5
- package/lib/Shared/Models/EnglishArabicDTO.d.ts +4 -4
- package/lib/Shared/Models/FileDTO.d.ts +19 -19
- package/lib/Shared/Models/FileUploadModel.d.ts +4 -4
- package/lib/Shared/Models/FileUploadOptions.d.ts +19 -19
- package/lib/Shared/Models/FilterItem.d.ts +13 -13
- package/lib/Shared/Models/FormOptions.d.ts +16 -16
- package/lib/Shared/Models/HtmlEditorOptions.d.ts +31 -31
- package/lib/Shared/Models/ImageUploadOptions.d.ts +23 -23
- package/lib/Shared/Models/MapAutoCompleteOptions.d.ts +6 -6
- package/lib/Shared/Models/MapAutocompleteDTO.d.ts +7 -7
- package/lib/Shared/Models/MultiLingualHtmlEditorOptions.d.ts +22 -22
- package/lib/Shared/Models/MultiLingualTextAreaOptions.d.ts +12 -12
- package/lib/Shared/Models/MultilingualControlOptionsBase.d.ts +77 -77
- package/lib/Shared/Models/MultilingualTextBoxOptions.d.ts +12 -12
- package/lib/Shared/Models/MultipleFileUploadModel.d.ts +7 -7
- package/lib/Shared/Models/PagingDTO.d.ts +11 -11
- package/lib/Shared/Models/PagingOptions.d.ts +56 -56
- package/lib/Shared/Models/PagingPayload.d.ts +5 -5
- package/lib/Shared/Models/PhoneOptions.d.ts +21 -21
- package/lib/Shared/Models/ProfileImageUploadOptions.d.ts +28 -28
- package/lib/Shared/Models/ProfilePictureDTO.d.ts +13 -13
- package/lib/Shared/Models/RadioButtonItem.d.ts +4 -4
- package/lib/Shared/Models/RadioButtonOptions.d.ts +8 -8
- package/lib/Shared/Models/RangeNumber.d.ts +4 -4
- package/lib/Shared/Models/Recaptcha.d.ts +6 -6
- package/lib/Shared/Models/RecaptchaOptions.d.ts +18 -18
- package/lib/Shared/Models/RepeaterField.d.ts +7 -7
- package/lib/Shared/Models/RepeaterOptions.d.ts +19 -19
- package/lib/Shared/Models/SaveDTO.d.ts +5 -5
- package/lib/Shared/Models/TagsInputDTO.d.ts +6 -6
- package/lib/Shared/Models/TagsInputOptions.d.ts +57 -57
- package/lib/Shared/Models/TextAreaOptions.d.ts +23 -23
- package/lib/Shared/Models/TextBoxOptions.d.ts +37 -37
- package/lib/Shared/Models/ToggleslideOptions.d.ts +9 -9
- package/lib/Shared/Models/UploadPersonalImage.d.ts +5 -5
- package/lib/Shared/Models/bread-crumb.d.ts +6 -6
- package/lib/Shared/Models/control-filter-Item.d.ts +6 -6
- package/lib/Shared/Models/datePickerOptions.d.ts +29 -29
- package/lib/Shared/Models/filter-options.d.ts +7 -7
- package/lib/Shared/Models/page-header-options.d.ts +71 -71
- package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +10 -7
- package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +10 -7
- package/lib/Shared/config/environment.d.ts +1 -1
- package/lib/Shared/default_intl.d.ts +21 -18
- package/lib/Shared/services/ControlUtility.d.ts +32 -29
- package/lib/Shared/services/GlobalSettings.service.d.ts +17 -14
- package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +10 -7
- package/lib/Shared/services/render-component-service.service.d.ts +10 -7
- package/lib/Shared/services/validationErrorMassage.service.d.ts +14 -13
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +59 -56
- package/lib/controls/Calendar/Calendar.component.d.ts +42 -39
- package/lib/controls/CheckBox/CheckBox.component.d.ts +37 -34
- package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +29 -26
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +61 -58
- package/lib/controls/DropdownList/DropdownList.component.d.ts +55 -50
- package/lib/controls/FileUplaod/FileUplaod.component.d.ts +58 -55
- package/lib/controls/Form/Form.component.d.ts +28 -25
- package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +49 -46
- package/lib/controls/ImageUpload/ImageUpload.component.d.ts +70 -67
- package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +49 -51
- package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +65 -62
- package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +74 -71
- package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +73 -70
- package/lib/controls/Paging/JwPagination.component.d.ts +27 -24
- package/lib/controls/Paging/Paging.component.d.ts +57 -54
- package/lib/controls/Phone/Phone.component.d.ts +43 -40
- package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +69 -66
- package/lib/controls/RadioButton/RadioButton.component.d.ts +37 -34
- package/lib/controls/Recaptcha/Recaptcha.component.d.ts +41 -38
- package/lib/controls/Repeater/repeater/repeater.component.d.ts +29 -26
- package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +23 -20
- package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +11 -8
- package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +19 -16
- package/lib/controls/TagsInput/TagsInput.component.d.ts +58 -55
- package/lib/controls/TextArea/TextArea.component.d.ts +51 -48
- package/lib/controls/TextBox/TextBox.component.d.ts +66 -63
- package/lib/controls/Toggleslide/toggleslide.component.d.ts +33 -30
- package/lib/controls/bbsf-controls.module.d.ts +68 -10
- package/lib/controls/page-header-component/page-header-component.component.d.ts +20 -17
- package/package.json +61 -78
- package/public-api.d.ts +117 -117
- package/src/lib/assets/Style.scss +4 -4
- package/bnsights-bbsf-controls-1.0.107.tgz +0 -0
- package/bnsights-bbsf-controls.d.ts +0 -5
- package/bnsights-bbsf-controls.metadata.json +0 -1
- package/bundles/bnsights-bbsf-controls.umd.js +0 -9636
- package/bundles/bnsights-bbsf-controls.umd.js.map +0 -1
- package/esm2015/bnsights-bbsf-controls.js +0 -6
- package/esm2015/lib/Shared/Components/app-base-component.js +0 -202
- package/esm2015/lib/Shared/Components/ng-tag-input.js +0 -323
- package/esm2015/lib/Shared/Directives/template-name.directive.js +0 -18
- package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +0 -20
- package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +0 -20
- package/esm2015/lib/Shared/default_intl.js +0 -29
- package/esm2015/lib/Shared/services/ControlUtility.js +0 -164
- package/esm2015/lib/Shared/services/GlobalSettings.service.js +0 -28
- package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +0 -22
- package/esm2015/lib/Shared/services/render-component-service.service.js +0 -30
- package/esm2015/lib/Shared/services/validationErrorMassage.service.js +0 -172
- package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +0 -266
- package/esm2015/lib/controls/Calendar/Calendar.component.js +0 -177
- package/esm2015/lib/controls/CheckBox/CheckBox.component.js +0 -118
- package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +0 -139
- package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +0 -227
- package/esm2015/lib/controls/DropdownList/DropdownList.component.js +0 -192
- package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +0 -447
- package/esm2015/lib/controls/Form/Form.component.js +0 -106
- package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +0 -347
- package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +0 -325
- package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +0 -429
- package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +0 -434
- package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +0 -433
- package/esm2015/lib/controls/Paging/JwPagination.component.js +0 -129
- package/esm2015/lib/controls/Paging/Paging.component.js +0 -312
- package/esm2015/lib/controls/Phone/Phone.component.js +0 -129
- package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +0 -371
- package/esm2015/lib/controls/RadioButton/RadioButton.component.js +0 -111
- package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +0 -135
- package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +0 -117
- package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +0 -748
- package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +0 -19
- package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +0 -108
- package/esm2015/lib/controls/TagsInput/TagsInput.component.js +0 -278
- package/esm2015/lib/controls/TextArea/TextArea.component.js +0 -197
- package/esm2015/lib/controls/TextBox/TextBox.component.js +0 -309
- package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +0 -90
- package/esm2015/lib/controls/bbsf-controls.module.js +0 -240
- package/esm2015/lib/controls/page-header-component/page-header-component.component.js +0 -32
- package/fesm2015/bnsights-bbsf-controls.js.map +0 -1
- package/src/lib/assets/.gitkeep +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class RenderComponentService {
|
|
4
|
+
constructor(componentFactoryResolver) {
|
|
5
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
6
|
+
}
|
|
7
|
+
renderDynamicComponent(viewContainerRef, component, group, options, size = 0) {
|
|
8
|
+
let factory = this.componentFactoryResolver.resolveComponentFactory(component);
|
|
9
|
+
const componentRef = viewContainerRef.createComponent(factory);
|
|
10
|
+
componentRef.instance.group = group;
|
|
11
|
+
componentRef.instance.options = options;
|
|
12
|
+
if (size > 0) {
|
|
13
|
+
let htmlElement = componentRef.hostView.rootNodes[0];
|
|
14
|
+
// `element` is the element you want to wrap
|
|
15
|
+
var parent = htmlElement.parentNode;
|
|
16
|
+
var wrapper = document.createElement('div');
|
|
17
|
+
wrapper.className = `col-md-${size}`;
|
|
18
|
+
// set the wrapper as child (instead of the element)
|
|
19
|
+
parent.replaceChild(wrapper, htmlElement);
|
|
20
|
+
// set element as child of wrapper
|
|
21
|
+
wrapper.appendChild(htmlElement);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RenderComponentService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
25
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RenderComponentService }); }
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RenderComponentService, decorators: [{
|
|
28
|
+
type: Injectable
|
|
29
|
+
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }] });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWNvbXBvbmVudC1zZXJ2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvU2hhcmVkL3NlcnZpY2VzL3JlbmRlci1jb21wb25lbnQtc2VydmljZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0QsVUFBVSxFQUErQixNQUFNLGVBQWUsQ0FBQzs7QUFNNUgsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyxZQUFxQix3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtJQUN2RSxDQUFDO0lBRUQsc0JBQXNCLENBQUksZ0JBQWtDLEVBQUUsU0FBYyxFQUFFLEtBQWdCLEVBQUUsT0FBWSxFQUFFLE9BQWUsQ0FBQztRQUM1SCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQUksU0FBUyxDQUFDLENBQUE7UUFDakYsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFJLE9BQU8sQ0FBUSxDQUFDO1FBQ3pFLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNwQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDeEMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ1osSUFBSSxXQUFXLEdBQUksWUFBWSxDQUFDLFFBQWlDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztZQUM5Riw0Q0FBNEM7WUFDNUMsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUNwQyxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQTtZQUNwQyxvREFBb0Q7WUFDcEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDMUMsa0NBQWtDO1lBQ2xDLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDbEM7SUFHSCxDQUFDOzhHQXZCVSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBFbWJlZGRlZFZpZXdSZWYsIEluamVjdGFibGUsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcblxyXG5cclxuICBASW5qZWN0YWJsZSgpXHJcbiAgZXhwb3J0IGNsYXNzIFJlbmRlckNvbXBvbmVudFNlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSB7XHJcbiAgICB9XHJcbiAgXHJcbiAgICByZW5kZXJEeW5hbWljQ29tcG9uZW50PFQ+KHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIGNvbXBvbmVudDogYW55LCBncm91cDogRm9ybUdyb3VwLCBvcHRpb25zOiBhbnksIHNpemU6IG51bWJlciA9IDApIHtcclxuICAgICAgbGV0IGZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeTxUPihjb21wb25lbnQpXHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PFQ+KGZhY3RvcnkpIGFzIGFueTtcclxuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmdyb3VwID0gZ3JvdXA7XHJcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5vcHRpb25zID0gb3B0aW9ucztcclxuICAgICAgaWYgKHNpemUgPiAwKSB7XHJcbiAgICAgICAgbGV0IGh0bWxFbGVtZW50ID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIC8vIGBlbGVtZW50YCBpcyB0aGUgZWxlbWVudCB5b3Ugd2FudCB0byB3cmFwXHJcbiAgICAgICAgdmFyIHBhcmVudCA9IGh0bWxFbGVtZW50LnBhcmVudE5vZGU7XHJcbiAgICAgICAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICB3cmFwcGVyLmNsYXNzTmFtZSA9IGBjb2wtbWQtJHtzaXplfWBcclxuICAgICAgICAvLyBzZXQgdGhlIHdyYXBwZXIgYXMgY2hpbGQgKGluc3RlYWQgb2YgdGhlIGVsZW1lbnQpXHJcbiAgICAgICAgcGFyZW50LnJlcGxhY2VDaGlsZCh3cmFwcGVyLCBodG1sRWxlbWVudCk7XHJcbiAgICAgICAgLy8gc2V0IGVsZW1lbnQgYXMgY2hpbGQgb2Ygd3JhcHBlclxyXG4gICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoaHRtbEVsZW1lbnQpO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/forms";
|
|
4
|
+
import * as i2 from "@bnsights/bbsf-utilities";
|
|
5
|
+
export class ErrorMassageValidation {
|
|
6
|
+
static { this.controlContainerstatic = null; }
|
|
7
|
+
// tslint:disable-next-line: deprecation
|
|
8
|
+
constructor(controlContainer, utilityService) {
|
|
9
|
+
this.controlContainer = controlContainer;
|
|
10
|
+
this.utilityService = utilityService;
|
|
11
|
+
this.url = 'CheckEmailValidation';
|
|
12
|
+
ErrorMassageValidation.controlContainerstatic = this.controlContainer;
|
|
13
|
+
}
|
|
14
|
+
// tslint:disable-next-line: deprecation
|
|
15
|
+
static showerror(FormControlName) {
|
|
16
|
+
let form = ErrorMassageValidation.controlContainerstatic
|
|
17
|
+
.control;
|
|
18
|
+
let control = form.get(FormControlName);
|
|
19
|
+
//console.log(control)
|
|
20
|
+
control.setErrors({ minlength: true });
|
|
21
|
+
control.markAsTouched();
|
|
22
|
+
}
|
|
23
|
+
// isEmailRegisterd(Email: string)
|
|
24
|
+
// {
|
|
25
|
+
// let resource:object={
|
|
26
|
+
// email:Email
|
|
27
|
+
// };
|
|
28
|
+
// let body = JSON.stringify(resource);
|
|
29
|
+
// let headers = new Headers({ 'Content-Type': 'application/json' });
|
|
30
|
+
// let options = new RequestOptions({ headers: headers });
|
|
31
|
+
// return this.http.post(environment.baseUrl+this.url,body,options)
|
|
32
|
+
// .pipe(map(response => response.json()))
|
|
33
|
+
// }
|
|
34
|
+
getErrorMassageValidation(error) {
|
|
35
|
+
let result = '';
|
|
36
|
+
switch (error.key) {
|
|
37
|
+
case 'required':
|
|
38
|
+
result = this.utilityService.getResourceValue('RequiredValidationKey');
|
|
39
|
+
break;
|
|
40
|
+
case 'email':
|
|
41
|
+
result = this.utilityService.getResourceValue('EmailValidationKey');
|
|
42
|
+
break;
|
|
43
|
+
case 'EmailValidationKey':
|
|
44
|
+
result = this.utilityService.getResourceValue('EmailValidationKey');
|
|
45
|
+
break;
|
|
46
|
+
case 'URLValidationKey':
|
|
47
|
+
result = this.utilityService.getResourceValue('urlValidationError');
|
|
48
|
+
break;
|
|
49
|
+
case 'pattern':
|
|
50
|
+
result = this.utilityService.getResourceValue('NumberValidationKey');
|
|
51
|
+
break;
|
|
52
|
+
case 'maxlength':
|
|
53
|
+
result =
|
|
54
|
+
this.utilityService.getResourceValue('MaxLenghtValidationKey') +
|
|
55
|
+
' ' +
|
|
56
|
+
error.value.requiredLength;
|
|
57
|
+
break;
|
|
58
|
+
case 'minlength':
|
|
59
|
+
result =
|
|
60
|
+
this.utilityService.getResourceValue('MinLenghtValidationKey') +
|
|
61
|
+
' ' +
|
|
62
|
+
error.value.requiredLength;
|
|
63
|
+
break;
|
|
64
|
+
case 'min':
|
|
65
|
+
result =
|
|
66
|
+
this.utilityService.getResourceValue('MinValueValidationKey') +
|
|
67
|
+
' ' +
|
|
68
|
+
error.value.min;
|
|
69
|
+
break;
|
|
70
|
+
case 'max':
|
|
71
|
+
result =
|
|
72
|
+
this.utilityService.getResourceValue('MaxValueValidationKey') +
|
|
73
|
+
' ' +
|
|
74
|
+
error.value.max;
|
|
75
|
+
break;
|
|
76
|
+
case 'IntegerNumberValidationKey':
|
|
77
|
+
result = this.utilityService.getResourceValue('IntegerNumberValidationKey');
|
|
78
|
+
break;
|
|
79
|
+
case 'PositiveNumberValidationKey':
|
|
80
|
+
result = this.utilityService.getResourceValue('PositiveNumberValidationKey');
|
|
81
|
+
break;
|
|
82
|
+
case 'validatePhoneNumber':
|
|
83
|
+
result = this.utilityService.getResourceValue('PhoneNumberValidationKey');
|
|
84
|
+
break;
|
|
85
|
+
case 'mask':
|
|
86
|
+
result =
|
|
87
|
+
this.utilityService.getResourceValue('MaskValidationKey') +
|
|
88
|
+
' ' +
|
|
89
|
+
error.value.requiredMask;
|
|
90
|
+
break;
|
|
91
|
+
case 'PasswordComplexityHasNumber':
|
|
92
|
+
result = this.utilityService.getResourceValue('PasswordComplexityHasNumber');
|
|
93
|
+
break;
|
|
94
|
+
case 'ArabicLetterOnly':
|
|
95
|
+
result = this.utilityService.getResourceValue('ArabicLetterOnly');
|
|
96
|
+
break;
|
|
97
|
+
case 'EnglishLetterOnly':
|
|
98
|
+
result = this.utilityService.getResourceValue('EnglishLetterOnly');
|
|
99
|
+
break;
|
|
100
|
+
case 'ArabicIsRequiredAndOnly50CharactersEnglish':
|
|
101
|
+
result = this.utilityService.getResourceValue('ArabicIsRequiredAndOnly50CharactersEnglish');
|
|
102
|
+
break;
|
|
103
|
+
case 'PasswordComplexityHasCapitalLetter':
|
|
104
|
+
result = this.utilityService.getResourceValue('PasswordComplexityHasCapitalLetter');
|
|
105
|
+
break;
|
|
106
|
+
case 'PasswordComplexityHasSmallLetter':
|
|
107
|
+
result = this.utilityService.getResourceValue('PasswordComplexityHasSmallLetter');
|
|
108
|
+
break;
|
|
109
|
+
case 'PasswordComplexityHasSpecialLetter':
|
|
110
|
+
result = this.utilityService.getResourceValue('PasswordComplexityHasSpecialLetter');
|
|
111
|
+
break;
|
|
112
|
+
case 'MaxWordCountValidationKey':
|
|
113
|
+
result =
|
|
114
|
+
this.utilityService.getResourceValue('MaxWordCountValidationKey') +
|
|
115
|
+
' ' +
|
|
116
|
+
error.value;
|
|
117
|
+
break;
|
|
118
|
+
case 'NewSelectionValidationKey':
|
|
119
|
+
result = this.utilityService.getResourceValue('NewSelectionValidationKey');
|
|
120
|
+
break;
|
|
121
|
+
case 'MaxFileCountValidationKey':
|
|
122
|
+
result =
|
|
123
|
+
this.utilityService.getResourceValue('MaxFileCountValidationKey') +
|
|
124
|
+
' ' +
|
|
125
|
+
error.value;
|
|
126
|
+
break;
|
|
127
|
+
case 'MinFileCountValidationKey':
|
|
128
|
+
result =
|
|
129
|
+
this.utilityService.getResourceValue('MinFileCountValidationKey') +
|
|
130
|
+
' ' +
|
|
131
|
+
error.value;
|
|
132
|
+
break;
|
|
133
|
+
case 'MaxSizeForAllFilesInMB':
|
|
134
|
+
result =
|
|
135
|
+
this.utilityService.getResourceValue('MaxSizeForAllFilesInMB') +
|
|
136
|
+
' ' +
|
|
137
|
+
error.value;
|
|
138
|
+
break;
|
|
139
|
+
case 'FileMaxSizeInMB':
|
|
140
|
+
result =
|
|
141
|
+
this.utilityService.getResourceValue('FileMaxSizeInMB') +
|
|
142
|
+
' ' +
|
|
143
|
+
error.value;
|
|
144
|
+
break;
|
|
145
|
+
case 'ToolTipTypeError':
|
|
146
|
+
result =
|
|
147
|
+
this.utilityService.getResourceValue('ToolTipTypeError') +
|
|
148
|
+
' ' +
|
|
149
|
+
error.value;
|
|
150
|
+
break;
|
|
151
|
+
case 'InvalidEndDate':
|
|
152
|
+
result = this.utilityService.getResourceValue('InvalidEndDate');
|
|
153
|
+
break;
|
|
154
|
+
case 'InvalidStartDate':
|
|
155
|
+
result = this.utilityService.getResourceValue('InvalidStartDate');
|
|
156
|
+
break;
|
|
157
|
+
default:
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ErrorMassageValidation, deps: [{ token: i1.ControlContainer, optional: true }, { token: i2.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
163
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ErrorMassageValidation }); }
|
|
164
|
+
}
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ErrorMassageValidation, decorators: [{
|
|
166
|
+
type: Injectable
|
|
167
|
+
}], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
|
|
168
|
+
type: Optional
|
|
169
|
+
}] }, { type: i2.UtilityService }] });
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbkVycm9yTWFzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9zZXJ2aWNlcy92YWxpZGF0aW9uRXJyb3JNYXNzYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFNckQsTUFBTSxPQUFPLHNCQUFzQjthQUMxQiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQUVyQyx3Q0FBd0M7SUFDeEMsWUFDc0IsZ0JBQWtDLEVBQzlDLGNBQThCO1FBRGxCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDOUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSXhDLFFBQUcsR0FBRyxzQkFBc0IsQ0FBQztRQUYzQixzQkFBc0IsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDeEUsQ0FBQztJQUVELHdDQUF3QztJQUV4QyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQXVCO1FBQ3RDLElBQUksSUFBSSxHQUFHLHNCQUFzQixDQUFDLHNCQUFzQjthQUNyRCxPQUFvQixDQUFDO1FBQ3hCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFnQixDQUFDO1FBQ3ZELHNCQUFzQjtRQUN0QixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsS0FBSztJQUNMLDJCQUEyQjtJQUMzQixtQkFBbUI7SUFDbkIsUUFBUTtJQUNSLDBDQUEwQztJQUMxQyx3RUFBd0U7SUFDeEUsNkRBQTZEO0lBQzdELHNFQUFzRTtJQUN0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QkFBd0I7Z0JBQzNCLE1BQU07b0JBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQzt3QkFDOUQsR0FBRzt3QkFDSCxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUNkLE1BQU07WUFDUixLQUFLLGlCQUFpQjtnQkFDcEIsTUFBTTtvQkFDSixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO3dCQUN2RCxHQUFHO3dCQUNILEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssa0JBQWtCO2dCQUNyQixNQUFNO29CQUNKLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUM7d0JBQ3hELEdBQUc7d0JBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDZCxNQUFNO1lBQ1IsS0FBSyxnQkFBZ0I7Z0JBQ25CLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ2hFLE1BQU07WUFDUixLQUFLLGtCQUFrQjtnQkFDckIsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDbEUsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBbkxVLHNCQUFzQjtrSEFBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVOzswQkFNTixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uIHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZGVwcmVjYXRpb25cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uLmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIHVybCA9ICdDaGVja0VtYWlsVmFsaWRhdGlvbic7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBkZXByZWNhdGlvblxyXG5cclxuICBzdGF0aWMgc2hvd2Vycm9yKEZvcm1Db250cm9sTmFtZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgZm9ybSA9IEVycm9yTWFzc2FnZVZhbGlkYXRpb24uY29udHJvbENvbnRhaW5lcnN0YXRpY1xyXG4gICAgICAuY29udHJvbCBhcyBGb3JtR3JvdXA7XHJcbiAgICBsZXQgY29udHJvbCA9IGZvcm0uZ2V0KEZvcm1Db250cm9sTmFtZSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgICAvL2NvbnNvbGUubG9nKGNvbnRyb2wpXHJcbiAgICBjb250cm9sLnNldEVycm9ycyh7IG1pbmxlbmd0aDogdHJ1ZSB9KTtcclxuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gIGlzRW1haWxSZWdpc3RlcmQoRW1haWw6IHN0cmluZylcclxuICAvLyAge1xyXG4gIC8vICAgIGxldCByZXNvdXJjZTpvYmplY3Q9e1xyXG4gIC8vICAgICAgZW1haWw6RW1haWxcclxuICAvLyAgICB9O1xyXG4gIC8vICAgIGxldCBib2R5ID0gSlNPTi5zdHJpbmdpZnkocmVzb3VyY2UpO1xyXG4gIC8vICAgIGxldCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pO1xyXG4gIC8vICAgIGxldCBvcHRpb25zID0gbmV3IFJlcXVlc3RPcHRpb25zKHsgaGVhZGVyczogaGVhZGVycyB9KTtcclxuICAvLyAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoZW52aXJvbm1lbnQuYmFzZVVybCt0aGlzLnVybCxib2R5LG9wdGlvbnMpXHJcbiAgLy8gICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlLmpzb24oKSkpXHJcbiAgLy8gIH1cclxuXHJcbiAgZ2V0RXJyb3JNYXNzYWdlVmFsaWRhdGlvbihlcnJvcjogYW55KTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9ICcnO1xyXG4gICAgc3dpdGNoIChlcnJvci5rZXkpIHtcclxuICAgICAgY2FzZSAncmVxdWlyZWQnOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnUmVxdWlyZWRWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2VtYWlsJzpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VtYWlsVmFsaWRhdGlvbktleScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdFbWFpbFZhbGlkYXRpb25LZXknOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRW1haWxWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1VSTFZhbGlkYXRpb25LZXknOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgndXJsVmFsaWRhdGlvbkVycm9yJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BhdHRlcm4nOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTnVtYmVyVmFsaWRhdGlvbktleScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtYXhsZW5ndGgnOlxyXG4gICAgICAgIHJlc3VsdCA9XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ01heExlbmdodFZhbGlkYXRpb25LZXknKSArXHJcbiAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgZXJyb3IudmFsdWUucmVxdWlyZWRMZW5ndGg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21pbmxlbmd0aCc6XHJcbiAgICAgICAgcmVzdWx0ID1cclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTWluTGVuZ2h0VmFsaWRhdGlvbktleScpICtcclxuICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICBlcnJvci52YWx1ZS5yZXF1aXJlZExlbmd0aDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbWluJzpcclxuICAgICAgICByZXN1bHQgPVxyXG4gICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdNaW5WYWx1ZVZhbGlkYXRpb25LZXknKSArXHJcbiAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgZXJyb3IudmFsdWUubWluO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtYXgnOlxyXG4gICAgICAgIHJlc3VsdCA9XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ01heFZhbHVlVmFsaWRhdGlvbktleScpICtcclxuICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICBlcnJvci52YWx1ZS5tYXg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0ludGVnZXJOdW1iZXJWYWxpZGF0aW9uS2V5JzpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXHJcbiAgICAgICAgICAnSW50ZWdlck51bWJlclZhbGlkYXRpb25LZXknXHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnUG9zaXRpdmVOdW1iZXJWYWxpZGF0aW9uS2V5JzpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXHJcbiAgICAgICAgICAnUG9zaXRpdmVOdW1iZXJWYWxpZGF0aW9uS2V5J1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3ZhbGlkYXRlUGhvbmVOdW1iZXInOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcclxuICAgICAgICAgICdQaG9uZU51bWJlclZhbGlkYXRpb25LZXknXHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbWFzayc6XHJcbiAgICAgICAgcmVzdWx0ID1cclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTWFza1ZhbGlkYXRpb25LZXknKSArXHJcbiAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgZXJyb3IudmFsdWUucmVxdWlyZWRNYXNrO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdQYXNzd29yZENvbXBsZXhpdHlIYXNOdW1iZXInOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcclxuICAgICAgICAgICdQYXNzd29yZENvbXBsZXhpdHlIYXNOdW1iZXInXHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJhYmljTGV0dGVyT25seSc6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBcmFiaWNMZXR0ZXJPbmx5Jyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0VuZ2xpc2hMZXR0ZXJPbmx5JzpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VuZ2xpc2hMZXR0ZXJPbmx5Jyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0FyYWJpY0lzUmVxdWlyZWRBbmRPbmx5NTBDaGFyYWN0ZXJzRW5nbGlzaCc6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFxyXG4gICAgICAgICAgJ0FyYWJpY0lzUmVxdWlyZWRBbmRPbmx5NTBDaGFyYWN0ZXJzRW5nbGlzaCdcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdQYXNzd29yZENvbXBsZXhpdHlIYXNDYXBpdGFsTGV0dGVyJzpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXHJcbiAgICAgICAgICAnUGFzc3dvcmRDb21wbGV4aXR5SGFzQ2FwaXRhbExldHRlcidcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdQYXNzd29yZENvbXBsZXhpdHlIYXNTbWFsbExldHRlcic6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFxyXG4gICAgICAgICAgJ1Bhc3N3b3JkQ29tcGxleGl0eUhhc1NtYWxsTGV0dGVyJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1Bhc3N3b3JkQ29tcGxleGl0eUhhc1NwZWNpYWxMZXR0ZXInOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcclxuICAgICAgICAgICdQYXNzd29yZENvbXBsZXhpdHlIYXNTcGVjaWFsTGV0dGVyJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ01heFdvcmRDb3VudFZhbGlkYXRpb25LZXknOlxyXG4gICAgICAgIHJlc3VsdCA9XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ01heFdvcmRDb3VudFZhbGlkYXRpb25LZXknKSArXHJcbiAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgZXJyb3IudmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ05ld1NlbGVjdGlvblZhbGlkYXRpb25LZXknOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcclxuICAgICAgICAgICdOZXdTZWxlY3Rpb25WYWxpZGF0aW9uS2V5J1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ01heEZpbGVDb3VudFZhbGlkYXRpb25LZXknOlxyXG4gICAgICAgIHJlc3VsdCA9XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ01heEZpbGVDb3VudFZhbGlkYXRpb25LZXknKSArXHJcbiAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgZXJyb3IudmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ01pbkZpbGVDb3VudFZhbGlkYXRpb25LZXknOlxyXG4gICAgICAgIHJlc3VsdCA9XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ01pbkZpbGVDb3VudFZhbGlkYXRpb25LZXknKSArXHJcbiAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgZXJyb3IudmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ01heFNpemVGb3JBbGxGaWxlc0luTUInOlxyXG4gICAgICAgIHJlc3VsdCA9XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ01heFNpemVGb3JBbGxGaWxlc0luTUInKSArXHJcbiAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgZXJyb3IudmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0ZpbGVNYXhTaXplSW5NQic6XHJcbiAgICAgICAgcmVzdWx0ID1cclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRmlsZU1heFNpemVJbk1CJykgK1xyXG4gICAgICAgICAgJyAnICtcclxuICAgICAgICAgIGVycm9yLnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdUb29sVGlwVHlwZUVycm9yJzpcclxuICAgICAgICByZXN1bHQgPVxyXG4gICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdUb29sVGlwVHlwZUVycm9yJykgK1xyXG4gICAgICAgICAgJyAnICtcclxuICAgICAgICAgIGVycm9yLnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdJbnZhbGlkRW5kRGF0ZSc6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdJbnZhbGlkRW5kRGF0ZScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdJbnZhbGlkU3RhcnREYXRlJzpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0ludmFsaWRTdGFydERhdGUnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { FormControl, Validators } from '@angular/forms';
|
|
3
|
+
import { AutocompleteDTO } from '../../Shared/Models/AutocompleteDTO';
|
|
4
|
+
import { noop, Observable, of } from 'rxjs';
|
|
5
|
+
import { map, switchMap, tap } from 'rxjs/operators';
|
|
6
|
+
import { HttpHeaders, HttpParams } from '@angular/common/http';
|
|
7
|
+
import { RequestOptionsModel } from '@bnsights/bbsf-utilities';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common/http";
|
|
10
|
+
import * as i2 from "../../Shared/services/validationErrorMassage.service";
|
|
11
|
+
import * as i3 from "@bnsights/bbsf-utilities";
|
|
12
|
+
import * as i4 from "../../Shared/services/ControlUtility";
|
|
13
|
+
import * as i5 from "@angular/forms";
|
|
14
|
+
import * as i6 from "../../Shared/services/GlobalSettings.service";
|
|
15
|
+
import * as i7 from "@angular/common";
|
|
16
|
+
import * as i8 from "@angular/cdk/bidi";
|
|
17
|
+
import * as i9 from "ngx-intl-tel-input";
|
|
18
|
+
import * as i10 from "angular-ng-autocomplete";
|
|
19
|
+
export class AutocompleteTextBoxComponent {
|
|
20
|
+
static { this.controlContainerstatic = null; }
|
|
21
|
+
// tslint:disable-next-line: max-line-length
|
|
22
|
+
constructor(http, ErrorHandler, requestHandlerService, controlUtility, controlContainer, AutocompleteTextBoxControlHost, UtilityService, controlValidationService, globalSettings) {
|
|
23
|
+
this.http = http;
|
|
24
|
+
this.ErrorHandler = ErrorHandler;
|
|
25
|
+
this.requestHandlerService = requestHandlerService;
|
|
26
|
+
this.controlUtility = controlUtility;
|
|
27
|
+
this.controlContainer = controlContainer;
|
|
28
|
+
this.AutocompleteTextBoxControlHost = AutocompleteTextBoxControlHost;
|
|
29
|
+
this.UtilityService = UtilityService;
|
|
30
|
+
this.controlValidationService = controlValidationService;
|
|
31
|
+
this.globalSettings = globalSettings;
|
|
32
|
+
this.OnChange = new EventEmitter();
|
|
33
|
+
this.keyword = 'value';
|
|
34
|
+
this.Search = '';
|
|
35
|
+
this.Key = '';
|
|
36
|
+
this.Api = 'http';
|
|
37
|
+
this.Value = 'value';
|
|
38
|
+
this.NewSelectionValidationKey = '';
|
|
39
|
+
this.markAllAsTouched = false;
|
|
40
|
+
this.validationRules = [];
|
|
41
|
+
this.validationRulesasync = [];
|
|
42
|
+
this.dataList = [];
|
|
43
|
+
this.SelectedValue = "";
|
|
44
|
+
this.avatarImage = "./src/assets/images/userimg.png";
|
|
45
|
+
this.resetError = () => {
|
|
46
|
+
this.controlValidationService.removeGlobalError();
|
|
47
|
+
};
|
|
48
|
+
// onFocused(e) {
|
|
49
|
+
// // do something
|
|
50
|
+
// }
|
|
51
|
+
// onBlur(Value) {
|
|
52
|
+
// if (this.options.AllowNewSelection == true) {
|
|
53
|
+
// if (typeof (Value) == 'object') {
|
|
54
|
+
// this.AutocompleteTextBoxControl.setValue(Value);
|
|
55
|
+
// this.AutocompleteTextBoxControl.updateValueAndValidity()
|
|
56
|
+
// }
|
|
57
|
+
// else {
|
|
58
|
+
// let AutocompleteModel = new AutocompleteDTO();
|
|
59
|
+
// AutocompleteModel.value = Value;
|
|
60
|
+
// let model = new TypeaheadMatch(AutocompleteModel,Value);
|
|
61
|
+
// this.AutocompleteTextBoxControl.setValue(model);
|
|
62
|
+
// this.AutocompleteTextBoxControl.updateValueAndValidity()
|
|
63
|
+
// }
|
|
64
|
+
// }
|
|
65
|
+
// else {
|
|
66
|
+
// if (this.AutocompleteTextBoxControl.value == Value) {
|
|
67
|
+
// this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });
|
|
68
|
+
// this.AutocompleteTextBoxControl.markAsTouched();
|
|
69
|
+
// this.AutocompleteTextBoxControl.invalid;
|
|
70
|
+
// return;
|
|
71
|
+
// }
|
|
72
|
+
// }
|
|
73
|
+
// }
|
|
74
|
+
// handleResultSelected(result) {
|
|
75
|
+
// this.AutocompleteTextBoxControl.setValue(result);
|
|
76
|
+
// this.AutocompleteTextBoxControl.updateValueAndValidity()
|
|
77
|
+
// this.OnChange.emit(this.AutocompleteTextBoxControl.value)
|
|
78
|
+
// this.Search = this.AutocompleteTextBoxControl.value.value
|
|
79
|
+
// }
|
|
80
|
+
//External Method
|
|
81
|
+
this.RemoveRequiredValidation = () => {
|
|
82
|
+
this.controlUtility.RemoveRequiredValidation(this.AutocompleteTextBoxControl, this.validationRules, this.options);
|
|
83
|
+
};
|
|
84
|
+
//External Method
|
|
85
|
+
this.AddRequiredValidation = () => {
|
|
86
|
+
this.controlUtility.AddRequiredValidation(this.AutocompleteTextBoxControl, this.validationRules, this.options);
|
|
87
|
+
};
|
|
88
|
+
//External Method
|
|
89
|
+
this.RemoveCustomValidation = (CustomValidation) => {
|
|
90
|
+
this.controlUtility.RemoveCustomValidation(this.AutocompleteTextBoxControl, this.validationRules, CustomValidation);
|
|
91
|
+
};
|
|
92
|
+
//External Method
|
|
93
|
+
this.AddCustomValidation = (CustomValidation) => {
|
|
94
|
+
this.controlUtility.AddCustomValidation(this.AutocompleteTextBoxControl, this.validationRules, CustomValidation);
|
|
95
|
+
};
|
|
96
|
+
//External Method
|
|
97
|
+
this.IsValid = () => {
|
|
98
|
+
this.controlUtility.IsValid(this.AutocompleteTextBoxControl);
|
|
99
|
+
};
|
|
100
|
+
AutocompleteTextBoxComponent.controlContainerstatic = this.controlContainer;
|
|
101
|
+
}
|
|
102
|
+
ngOnInit() {
|
|
103
|
+
if (this.options.IsReadonly && !this.options.Value)
|
|
104
|
+
this.options.Value = this.UtilityService.getResourceValue('NA');
|
|
105
|
+
if (this.options.ForceDirection)
|
|
106
|
+
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
107
|
+
else
|
|
108
|
+
this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
|
|
109
|
+
this.controlValidationService.isCreatedBefor = false;
|
|
110
|
+
this.group.addControl(this.options.Name, new FormControl(''));
|
|
111
|
+
this.AutocompleteTextBoxControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
112
|
+
if (!this.options.ViewType)
|
|
113
|
+
this.options.ViewType = this.globalSettings.ViewType;
|
|
114
|
+
if (this.options.LabelKey != null && this.options.LabelKey != "")
|
|
115
|
+
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
116
|
+
// this.AutocompleteTextBoxControl.setValue(this.options.Value);
|
|
117
|
+
if (this.options.CustomValidation.length > 0) {
|
|
118
|
+
let Validations = this.options.CustomValidation;
|
|
119
|
+
for (let index = 0; index < Validations.length; index++) {
|
|
120
|
+
const Validation = Validations[index];
|
|
121
|
+
this.validationRules.push(Validation.functionBody);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (this.options.IsRequired) {
|
|
125
|
+
this.validationRules.push(Validators.required);
|
|
126
|
+
}
|
|
127
|
+
this.AutocompleteTextBoxControl.setValidators(this.validationRules);
|
|
128
|
+
this.AutocompleteTextBoxControl.setAsyncValidators(this.validationRulesasync);
|
|
129
|
+
if (this.options.IsDisabled) {
|
|
130
|
+
this.AutocompleteTextBoxControl.disable();
|
|
131
|
+
}
|
|
132
|
+
if (this.options.SelectedValue != undefined && this.options.SelectedValue != null) {
|
|
133
|
+
this.SelectedValue = this.options.SelectedValue;
|
|
134
|
+
}
|
|
135
|
+
this.AutocompleteTextBoxControlHost.ngSubmit.subscribe((value) => {
|
|
136
|
+
if (this.AutocompleteTextBoxControl.value == this.Search && this.options.AllowNewSelection == false) {
|
|
137
|
+
this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });
|
|
138
|
+
this.AutocompleteTextBoxControl.markAsTouched();
|
|
139
|
+
this.AutocompleteTextBoxControl.invalid;
|
|
140
|
+
}
|
|
141
|
+
this.group.markAllAsTouched();
|
|
142
|
+
this.markAllAsTouched = true;
|
|
143
|
+
});
|
|
144
|
+
const httpOptions = {
|
|
145
|
+
headers: new HttpHeaders({
|
|
146
|
+
'Content-Type': 'application/json',
|
|
147
|
+
'Authorization': this.options.ValidationToken
|
|
148
|
+
}),
|
|
149
|
+
};
|
|
150
|
+
this.suggestions$ = new Observable((observer) => {
|
|
151
|
+
observer.next(this.Search);
|
|
152
|
+
}).pipe(switchMap((query) => {
|
|
153
|
+
if (query) {
|
|
154
|
+
let params = new HttpParams();
|
|
155
|
+
params = params.append(this.options.QueryParam, query);
|
|
156
|
+
let requestOptionsModel = new RequestOptionsModel();
|
|
157
|
+
requestOptionsModel.disableBlockUI = true;
|
|
158
|
+
requestOptionsModel.disableSuccessNotification = true;
|
|
159
|
+
// using github public api to get users by name
|
|
160
|
+
return this.requestHandlerService.get(this.options.ActionURL, params, null, requestOptionsModel)
|
|
161
|
+
.pipe(map((data) => data || []), tap(() => noop, err => {
|
|
162
|
+
// in case of http error
|
|
163
|
+
this.errorMessage = err && err.message || 'Something goes wrong';
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
return of([]);
|
|
167
|
+
}));
|
|
168
|
+
}
|
|
169
|
+
ngAfterViewInit() {
|
|
170
|
+
this.controlUtility.setAttributeForControl(this.options);
|
|
171
|
+
}
|
|
172
|
+
showGlobalError() {
|
|
173
|
+
this.controlUtility.showGlobalError();
|
|
174
|
+
}
|
|
175
|
+
getErrorValidation(ErrorList) {
|
|
176
|
+
if (this.markAllAsTouched && this.group.invalid) {
|
|
177
|
+
this.showGlobalError();
|
|
178
|
+
this.markAllAsTouched = false;
|
|
179
|
+
}
|
|
180
|
+
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
181
|
+
}
|
|
182
|
+
copyInputMessage(inputElement) {
|
|
183
|
+
this.controlUtility.CopyInputMessage(inputElement);
|
|
184
|
+
}
|
|
185
|
+
selectEvent(item) {
|
|
186
|
+
if (this.options.AllowNewSelection == true) {
|
|
187
|
+
if (typeof (item) == 'object') {
|
|
188
|
+
this.AutocompleteTextBoxControl.setValue(item);
|
|
189
|
+
this.AutocompleteTextBoxControl.updateValueAndValidity();
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
let AutocompleteModel = new AutocompleteDTO();
|
|
193
|
+
AutocompleteModel.value = item;
|
|
194
|
+
this.AutocompleteTextBoxControl.setValue(AutocompleteModel);
|
|
195
|
+
this.AutocompleteTextBoxControl.updateValueAndValidity();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
if (this.AutocompleteTextBoxControl.value == item.value) {
|
|
200
|
+
this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });
|
|
201
|
+
this.AutocompleteTextBoxControl.markAsTouched();
|
|
202
|
+
this.AutocompleteTextBoxControl.invalid;
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
this.AutocompleteTextBoxControl.setValue(item);
|
|
207
|
+
this.AutocompleteTextBoxControl.updateValueAndValidity();
|
|
208
|
+
let originalValue = this.AutocompleteTextBoxControl.value;
|
|
209
|
+
if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
|
|
210
|
+
this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// move this line here to emit value no matter is from database or not
|
|
215
|
+
this.OnChange.emit(this.AutocompleteTextBoxControl.value);
|
|
216
|
+
//Use this line to enable two way binding.
|
|
217
|
+
this.options.Value = this.AutocompleteTextBoxControl.value;
|
|
218
|
+
}
|
|
219
|
+
async onChangeSearch(search) {
|
|
220
|
+
if (this.options.MaxLength && search.length > this.options.MaxLength) {
|
|
221
|
+
const formControl = this.AutocompleteTextBoxControl;
|
|
222
|
+
formControl.setErrors({ errorMassage: this.UtilityService.getResourceValue("MaxLenghtValidationKey") + " " + this.options.MaxLength });
|
|
223
|
+
formControl.markAsTouched();
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
this.Search = search;
|
|
227
|
+
this.SelectedValue = "";
|
|
228
|
+
await this.suggestions$.subscribe((result) => {
|
|
229
|
+
if ((result == null || result.length == 0 || result.length == 0) && this.options.AllowNewSelection == true) {
|
|
230
|
+
this.dataList = [
|
|
231
|
+
{
|
|
232
|
+
key: 0,
|
|
233
|
+
value: this.Search
|
|
234
|
+
}
|
|
235
|
+
];
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
this.dataList = result;
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
onInputCleared() {
|
|
243
|
+
this.AutocompleteTextBoxControl.setValue(null);
|
|
244
|
+
this.OnChange.emit(null);
|
|
245
|
+
this.AutocompleteTextBoxControl.updateValueAndValidity();
|
|
246
|
+
}
|
|
247
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AutocompleteTextBoxComponent, deps: [{ token: i1.HttpClient }, { token: i2.ErrorMassageValidation }, { token: i3.RequestHandlerService }, { token: i4.ControlUtility }, { token: i5.ControlContainer, optional: true }, { token: i5.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: i6.GlobalSettings }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
248
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AutocompleteTextBoxComponent, selector: "BBSF-AutocompleteTextBox", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "\r\n<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.IsReadonly\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"!options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"options.CustomTemplate?options.CustomTemplate:itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n (inputCleared)=\"onInputCleared()\"\r\n >\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"options.CustomTemplate?options.CustomTemplate:itemTemplate\"\r\n [dir]=\"textDir\" (inputCleared)=\"onInputCleared()\"\r\n formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.ItemWithImage\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{AutocompleteTextBoxControl.value.value}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\"> {{resetError()}} </div>\r\n</div>\r\n\r\n", dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i9.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.AutocompleteComponent, selector: "ng-autocomplete", inputs: ["data", "searchKeyword", "placeholder", "heading", "initialValue", "historyIdentifier", "historyHeading", "historyListMaxNumber", "notFoundText", "isLoading", "debounceTime", "disabled", "minQueryLength", "focusFirst", "customFilter", "selectedValueRender", "itemTemplate", "notFoundTemplate"], outputs: ["selected", "inputChanged", "inputFocused", "inputCleared", "opened", "closed", "scrolledToEnd"] }, { kind: "pipe", type: i7.KeyValuePipe, name: "keyvalue" }] }); }
|
|
249
|
+
}
|
|
250
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AutocompleteTextBoxComponent, decorators: [{
|
|
251
|
+
type: Component,
|
|
252
|
+
args: [{ selector: 'BBSF-AutocompleteTextBox', template: "\r\n<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.IsReadonly\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"!options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"options.CustomTemplate?options.CustomTemplate:itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n (inputCleared)=\"onInputCleared()\"\r\n >\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"options.CustomTemplate?options.CustomTemplate:itemTemplate\"\r\n [dir]=\"textDir\" (inputCleared)=\"onInputCleared()\"\r\n formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.ItemWithImage\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{AutocompleteTextBoxControl.value.value}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\"> {{resetError()}} </div>\r\n</div>\r\n\r\n" }]
|
|
253
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ErrorMassageValidation }, { type: i3.RequestHandlerService }, { type: i4.ControlUtility }, { type: i5.ControlContainer, decorators: [{
|
|
254
|
+
type: Optional
|
|
255
|
+
}] }, { type: i5.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: i6.GlobalSettings }], propDecorators: { group: [{
|
|
256
|
+
type: Input
|
|
257
|
+
}], options: [{
|
|
258
|
+
type: Input
|
|
259
|
+
}], OnChange: [{
|
|
260
|
+
type: Output
|
|
261
|
+
}] } });
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0b2NvbXBsZXRlVGV4dEJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvQXV0b2NvbXBsZXRlVGV4dEJveC9BdXRvY29tcGxldGVUZXh0Qm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9BdXRvY29tcGxldGVUZXh0Qm94L0F1dG9jb21wbGV0ZVRleHRCb3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVcsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQW1HLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUosT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFZLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBbUQsbUJBQW1CLEVBQWtCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7OztBQVFoSSxNQUFNLE9BQU8sNEJBQTRCO2FBR2hDLDJCQUFzQixHQUFHLElBQUksQUFBUCxDQUFRO0lBQ3JDLDRDQUE0QztJQUM1QyxZQUFvQixJQUFnQixFQUFVLFlBQW9DLEVBQVUscUJBQTRDLEVBQzlILGNBQThCLEVBQXNCLGdCQUMxQyxFQUFTLDhCQUFrRCxFQUFVLGNB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QkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy92YWxpZGF0aW9uRXJyb3JNYXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IEF1dG9jb21wbGV0ZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0F1dG9jb21wbGV0ZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBBdXRvY29tcGxldGVEVE8gfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0F1dG9jb21wbGV0ZURUTyc7XHJcbmltcG9ydCB7IG5vb3AsIE9ic2VydmFibGUsIE9ic2VydmVyLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFJlcXVlc3RPcHRpb25zTW9kZWwsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgR2xvYmFsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvR2xvYmFsU2V0dGluZ3Muc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1BdXRvY29tcGxldGVUZXh0Qm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vQXV0b2NvbXBsZXRlVGV4dEJveC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZVRleHRCb3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIEVycm9ySGFuZGxlcjogRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6XHJcbiAgICAgIENvbnRyb2xDb250YWluZXIsIHB1YmxpYyBBdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSwgcHJpdmF0ZSBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncykge1xyXG4gICAgQXV0b2NvbXBsZXRlVGV4dEJveENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IEF1dG9jb21wbGV0ZU9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGtleXdvcmQ6IHN0cmluZyA9ICd2YWx1ZSdcclxuICBBdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIFNlYXJjaDogc3RyaW5nID0gJydcclxuICBLZXk6IHN0cmluZyA9ICcnXHJcblxyXG4gIEFwaTogc3RyaW5nID0gJ2h0dHAnO1xyXG4gIFZhbHVlOiBzdHJpbmcgPSAndmFsdWUnXHJcbiAgTmV3U2VsZWN0aW9uVmFsaWRhdGlvbktleTogc3RyaW5nID0gJyc7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgZGF0YVNvdXJjZTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIHN1Z2dlc3Rpb25zJDogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgZGF0YUxpc3Q6IGFueVtdID0gW107XHJcbiAgU2VsZWN0ZWRWYWx1ZTogc3RyaW5nID0gXCJcIlxyXG4gIGF2YXRhckltYWdlOiBzdHJpbmcgPSBcIi4vc3JjL2Fzc2V0cy9pbWFnZXMvdXNlcmltZy5wbmdcIjtcclxuICB0ZXh0RGlyO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZWFkb25seSAmJiAhdGhpcy5vcHRpb25zLlZhbHVlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ05BJyk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Gb3JjZURpcmVjdGlvbilcclxuICAgICAgdGhpcy50ZXh0RGlyID0gdGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uID09IDIgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnRleHREaXIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSA9PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMuTmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5WaWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLlZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5WaWV3VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5MYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSk7XHJcblxyXG4gICAgLy8gdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlNlbGVjdGVkVmFsdWUgIT0gdW5kZWZpbmVkICYmIHRoaXMub3B0aW9ucy5TZWxlY3RlZFZhbHVlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5TZWxlY3RlZFZhbHVlID0gdGhpcy5vcHRpb25zLlNlbGVjdGVkVmFsdWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wudmFsdWUgPT0gdGhpcy5TZWFyY2ggJiYgdGhpcy5vcHRpb25zLkFsbG93TmV3U2VsZWN0aW9uID09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5zZXRFcnJvcnMoeyBOZXdTZWxlY3Rpb25WYWxpZGF0aW9uS2V5OiB0aGlzLk5ld1NlbGVjdGlvblZhbGlkYXRpb25LZXkgfSk7XHJcbiAgICAgICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5pbnZhbGlkO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IHRydWVcclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAnQXV0aG9yaXphdGlvbic6IHRoaXMub3B0aW9ucy5WYWxpZGF0aW9uVG9rZW5cclxuICAgICAgfSksXHJcbiAgICB9O1xyXG5cclxuXHJcblxyXG5cclxuICAgIHRoaXMuc3VnZ2VzdGlvbnMkID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBPYnNlcnZlcjxzdHJpbmc+KSA9PiB7XHJcbiAgICAgIG9ic2VydmVyLm5leHQodGhpcy5TZWFyY2gpO1xyXG4gICAgfSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChxdWVyeTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQodGhpcy5vcHRpb25zLlF1ZXJ5UGFyYW0sIHF1ZXJ5KTtcclxuICAgICAgICAgIGxldCByZXF1ZXN0T3B0aW9uc01vZGVsID0gbmV3IFJlcXVlc3RPcHRpb25zTW9kZWwoKVxyXG4gICAgICAgICAgcmVxdWVzdE9wdGlvbnNNb2RlbC5kaXNhYmxlQmxvY2tVSSA9IHRydWU7XHJcbiAgICAgICAgICByZXF1ZXN0T3B0aW9uc01vZGVsLmRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIC8vIHVzaW5nIGdpdGh1YiBwdWJsaWMgYXBpIHRvIGdldCB1c2VycyBieSBuYW1lXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZ2V0KHRoaXMub3B0aW9ucy5BY3Rpb25VUkwsIHBhcmFtcywgbnVsbCwgcmVxdWVzdE9wdGlvbnNNb2RlbClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgbWFwKChkYXRhKSA9PiBkYXRhIGFzIEF0dHJpYnV0ZVtdIHx8IFtdKSxcclxuICAgICAgICAgICAgICB0YXAoKCkgPT4gbm9vcCwgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGluIGNhc2Ugb2YgaHR0cCBlcnJvclxyXG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgJ1NvbWV0aGluZyBnb2VzIHdyb25nJztcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zZXRBdHRyaWJ1dGVGb3JDb250cm9sKHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLnJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG5cclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KVxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdEV2ZW50KGl0ZW0pIHtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkFsbG93TmV3U2VsZWN0aW9uID09IHRydWUpIHtcclxuICAgICAgaWYgKHR5cGVvZiAoaXRlbSkgPT0gJ29iamVjdCcpIHtcclxuICAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnNldFZhbHVlKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IEF1dG9jb21wbGV0ZU1vZGVsID0gbmV3IEF1dG9jb21wbGV0ZURUTygpO1xyXG4gICAgICAgIEF1dG9jb21wbGV0ZU1vZGVsLnZhbHVlID0gaXRlbTtcclxuICAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnNldFZhbHVlKEF1dG9jb21wbGV0ZU1vZGVsKTtcclxuICAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wudmFsdWUgPT0gaXRlbS52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuc2V0RXJyb3JzKHsgTmV3U2VsZWN0aW9uVmFsaWRhdGlvbktleTogdGhpcy5OZXdTZWxlY3Rpb25WYWxpZGF0aW9uS2V5IH0pO1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuaW52YWxpZDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5zZXRWYWx1ZShpdGVtKTtcclxuICAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxyXG4gICAgICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC52YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLlBhdGNoUGF0aCAmJiB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkudmFsaWQpIHtcclxuICAgICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgdGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24sIHRoaXMub3B0aW9ucy5QYXRjaFBhdGgpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIG1vdmUgdGhpcyBsaW5lIGhlcmUgdG8gZW1pdCB2YWx1ZSBubyBtYXR0ZXIgaXMgZnJvbSBkYXRhYmFzZSBvciBub3QgXHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQodGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC52YWx1ZSlcclxuICAgIC8vVXNlIHRoaXMgbGluZSB0byBlbmFibGUgdHdvIHdheSBiaW5kaW5nLlxyXG4gICAgdGhpcy5vcHRpb25zLlZhbHVlID0gdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uQ2hhbmdlU2VhcmNoKHNlYXJjaDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1heExlbmd0aCAmJiBzZWFyY2gubGVuZ3RoID4gdGhpcy5vcHRpb25zLk1heExlbmd0aCkge1xyXG4gICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2w7XHJcbiAgICAgIGZvcm1Db250cm9sLnNldEVycm9ycyh7IGVycm9yTWFzc2FnZTogdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4TGVuZ2h0VmFsaWRhdGlvbktleVwiKSArIFwiIFwiICsgdGhpcy5vcHRpb25zLk1heExlbmd0aCB9KTtcclxuICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLlNlYXJjaCA9IHNlYXJjaDtcclxuICAgIHRoaXMuU2VsZWN0ZWRWYWx1ZSA9IFwiXCI7XHJcbiAgICBhd2FpdCB0aGlzLnN1Z2dlc3Rpb25zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAoKHJlc3VsdCA9PSBudWxsIHx8IHJlc3VsdC5sZW5ndGggPT0gMCB8fCByZXN1bHQubGVuZ3RoID09IDApICYmIHRoaXMub3B0aW9ucy5BbGxvd05ld1NlbGVjdGlvbiA9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhTGlzdCA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAga2V5OiAwLFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5TZWFyY2hcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kYXRhTGlzdCA9IHJlc3VsdFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dENsZWFyZWQoKSB7XHJcbiAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KG51bGwpO1xyXG4gICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcclxuICB9XHJcbiAgLy8gb25Gb2N1c2VkKGUpIHtcclxuICAvLyAgIC8vIGRvIHNvbWV0aGluZ1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIC8vIG9uQmx1cihWYWx1ZSkge1xyXG4gIC8vICAgaWYgKHRoaXMub3B0aW9ucy5BbGxvd05ld1NlbGVjdGlvbiA9PSB0cnVlKSB7XHJcblxyXG4gIC8vICAgICBpZiAodHlwZW9mIChWYWx1ZSkgPT0gJ29iamVjdCcpIHtcclxuICAvLyAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnNldFZhbHVlKFZhbHVlKTtcclxuICAvLyAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxyXG5cclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBlbHNlIHtcclxuICAvLyAgICAgICBsZXQgQXV0b2NvbXBsZXRlTW9kZWwgPSBuZXcgQXV0b2NvbXBsZXRlRFRPKCk7XHJcbiAgLy8gICAgICAgQXV0b2NvbXBsZXRlTW9kZWwudmFsdWUgPSBWYWx1ZTtcclxuICAvLyAgICAgICBsZXQgbW9kZWwgPSBuZXcgVHlwZWFoZWFkTWF0Y2goQXV0b2NvbXBsZXRlTW9kZWwsVmFsdWUpO1xyXG4gIC8vICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuc2V0VmFsdWUobW9kZWwpO1xyXG4gIC8vICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcblxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcblxyXG4gIC8vICAgZWxzZSB7XHJcblxyXG4gIC8vICAgICBpZiAodGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC52YWx1ZSA9PSBWYWx1ZSkge1xyXG4gIC8vICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuc2V0RXJyb3JzKHsgTmV3U2VsZWN0aW9uVmFsaWRhdGlvbktleTogdGhpcy5OZXdTZWxlY3Rpb25WYWxpZGF0aW9uS2V5IH0pO1xyXG4gIC8vICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gIC8vICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuaW52YWxpZDtcclxuICAvLyAgICAgICByZXR1cm47XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgfVxyXG5cclxuXHJcbiAgLy8gaGFuZGxlUmVzdWx0U2VsZWN0ZWQocmVzdWx0KSB7XHJcblxyXG4gIC8vICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5zZXRWYWx1ZShyZXN1bHQpO1xyXG4gIC8vICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcclxuICAvLyAgIHRoaXMuT25DaGFuZ2UuZW1pdCh0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnZhbHVlKVxyXG4gIC8vICAgdGhpcy5TZWFyY2ggPSB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnZhbHVlLnZhbHVlXHJcblxyXG5cclxuXHJcbiAgLy8gfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIFJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgSXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iLCJcclxuPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYmJzZi1jb250cm9sIGJic2YtYXV0b2NvbXBsZXRlLXRleHRib3hcIiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCIob3B0aW9ucy5WaWV3VHlwZT09MSk/J2Jic2YtdmVydGljYWwnOidiYnNmLWhvcml6b250YWwnXCI+XHJcbiAgICA8IS0tbGFiZWwtLT5cclxuICAgIDxsYWJlbCAqbmdJZj1cIiFvcHRpb25zLkhpZGVMYWJlbFwiIGNsYXNzPVwiYmJzZi1sYWJlbCB7e29wdGlvbnMuTGFiZWxFeHRyYUNsYXNzZXN9fVwiPlxyXG4gICAgICB7e29wdGlvbnMuTGFiZWxWYWx1ZX19XHJcbiAgICAgIDwhLS1Bc3Rlcmlzay0tPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIigob3B0aW9ucy5TaG93QXN0ZXJpc2smJm9wdGlvbnMuSXNSZXF1aXJlZCl8fChvcHRpb25zLklzUmVxdWlyZWQpKSYmIW9wdGlvbnMuSXNSZWFkb25seVwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDwhLS1JbnB1dCBjb250YWluZXItLT5cclxuICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuSXNSZWFkb25seVwiPlxyXG4gICAgICA8IS0taW5wdXQtLT5cclxuICAgICAgPG5nLWF1dG9jb21wbGV0ZSBjbGFzcz1cImZvcm0tY29udHJvbCAge3tvcHRpb25zLkV4dHJhQ2xhc3Nlc319XCIgKm5nSWY9XCIhb3B0aW9ucy5BbGxvd05ld1NlbGVjdGlvblwiIFtkYXRhXT1cImRhdGFMaXN0XCIgW2luaXRpYWxWYWx1ZV09XCJTZWxlY3RlZFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoS2V5d29yZF09XCJrZXl3b3JkXCIgcGxhY2Vob2xkZXI9XCJ7e29wdGlvbnMuUGxhY2Vob2xkZXJ9fVwiIChzZWxlY3RlZCk9J3NlbGVjdEV2ZW50KCRldmVudCknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlZCk9J29uQ2hhbmdlU2VhcmNoKCRldmVudCknIGhpc3RvcnlJZGVudGlmaWVyPVwiZGF0YUxpc3RcIiBbaXRlbVRlbXBsYXRlXT1cIm9wdGlvbnMuQ3VzdG9tVGVtcGxhdGU/b3B0aW9ucy5DdXN0b21UZW1wbGF0ZTppdGVtVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXJdPVwidGV4dERpclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLk5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImVtYWlsLWVycm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWludmFsaWQ9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJBdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5pbnZhbGlkICYmIEF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChpbnB1dENsZWFyZWQpPVwib25JbnB1dENsZWFyZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICA8L25nLWF1dG9jb21wbGV0ZT5cclxuXHJcbiAgICAgIDxuZy1hdXRvY29tcGxldGUgY2xhc3M9XCJmb3JtLWNvbnRyb2wge3tvcHRpb25zLkV4dHJhQ2xhc3Nlc319XCIgKm5nSWY9XCJvcHRpb25zLkFsbG93TmV3U2VsZWN0aW9uXCIgW2RhdGFdPVwiZGF0YUxpc3RcIiBbaW5pdGlhbFZhbHVlXT1cIlNlbGVjdGVkVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hLZXl3b3JkXT1cImtleXdvcmRcIiBwbGFjZWhvbGRlcj1cInt7b3B0aW9ucy5QbGFjZWhvbGRlcn19XCIgKHNlbGVjdGVkKT0nc2VsZWN0RXZlbnQoJGV2ZW50KSdcclxuICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2VkKT0nb25DaGFuZ2VTZWFyY2goJGV2ZW50KScgaGlzdG9yeUlkZW50aWZpZXI9XCJkYXRhTGlzdFwiIFtpdGVtVGVtcGxhdGVdPVwib3B0aW9ucy5DdXN0b21UZW1wbGF0ZT9vcHRpb25zLkN1c3RvbVRlbXBsYXRlOml0ZW1UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Rpcl09XCJ0ZXh0RGlyXCIgICAoaW5wdXRDbGVhcmVkKT1cIm9uSW5wdXRDbGVhcmVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5OYW1lfX1cIiBhcmlhLWRlc2NyaWJlZGJ5PVwiZW1haWwtZXJyb3JcIiBhcmlhLWludmFsaWQ9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJBdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5pbnZhbGlkICYmIEF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnRvdWNoZWRcIj5cclxuICAgICAgPC9uZy1hdXRvY29tcGxldGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtaXRlbT5cclxuICAgICAgICA8aW1nICpuZ0lmPVwib3B0aW9ucy5JdGVtV2l0aEltYWdlXCIgc3JjPVwie3soaXRlbS5pbWFnZT9pdGVtLmltYWdlOmF2YXRhckltYWdlKX19XCIgLz5cclxuICAgICAgICA8YSBbaW5uZXJIVE1MXT1cIml0ZW0udmFsdWVcIj48L2E+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gcmVhZG9ubHkgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5Jc1JlYWRvbmx5XCI+PHNwYW4gY2xhc3M9XCJyZWFkb25seS12aWV3XCI+e3tBdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC52YWx1ZS52YWx1ZX19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInN1YnRleHQtY29udGFpbmVyXCIgKm5nSWY9XCIhb3B0aW9ucy5Jc1JlYWRvbmx5XCI+XHJcbiAgICA8IS0tIExhYmVsRGVzY3JpcHRpb24tLT5cclxuICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wtZGVzY1wiICpuZ0lmPVwib3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIT1udWxsXCI+e3tvcHRpb25zLkxhYmVsRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgPCEtLSByZXF1aXJlZFRleHQtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb25cIiAqbmdJZj1cIihBdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5pbnZhbGlkICYmIEF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnRvdWNoZWQpXCI+XHJcbiAgICAgIHt7Z2V0RXJyb3JWYWxpZGF0aW9uKEF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cIihncm91cC52YWxpZCYmZ3JvdXAuZGlydHkmJmdyb3VwLnRvdWNoZWQgKXx8KGdyb3VwLnVudG91Y2hlZCYmZ3JvdXAuaW52YWxpZCYmZ3JvdXAuZGlydHkpXCI+IHt7cmVzZXRFcnJvcigpfX0gPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
|