@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,173 @@
|
|
|
1
|
+
import dayGridPlugin from '@fullcalendar/daygrid';
|
|
2
|
+
import timeGrigPlugin from '@fullcalendar/timegrid';
|
|
3
|
+
import interactionPlugin from '@fullcalendar/interaction'; // for dateClick
|
|
4
|
+
import timeGridPlugin from '@fullcalendar/timegrid';
|
|
5
|
+
import listPlugin from '@fullcalendar/list';
|
|
6
|
+
import { Component, Input, Optional, ViewChild } from '@angular/core';
|
|
7
|
+
import { FormControl } from '@angular/forms';
|
|
8
|
+
import { CalendarView } from '../../Shared/Enums/CalendarView';
|
|
9
|
+
// import { CalendarOptions as CalendarOptionsModel, DateSelectArg, EventApi, EventClickArg } from '@fullcalendar/angular';
|
|
10
|
+
import enGbLocale from '@fullcalendar/core/locales/en-gb';
|
|
11
|
+
import ArLocale from '@fullcalendar/core/locales/ar';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "../../Shared/services/validationErrorMassage.service";
|
|
14
|
+
import * as i2 from "../../Shared/services/ControlUtility";
|
|
15
|
+
import * as i3 from "@angular/forms";
|
|
16
|
+
import * as i4 from "@bnsights/bbsf-utilities";
|
|
17
|
+
import * as i5 from "@angular/common";
|
|
18
|
+
import * as i6 from "@fullcalendar/angular";
|
|
19
|
+
import * as i7 from "ngx-intl-tel-input";
|
|
20
|
+
export class CalendarComponent {
|
|
21
|
+
static { this.controlContainerstatic = null; }
|
|
22
|
+
// tslint:disable-next-line: max-line-length
|
|
23
|
+
constructor(ErrorHandler, controlUtility, controlContainer, PhoneControlHost, UtilityService, translate, controlValidationService) {
|
|
24
|
+
this.ErrorHandler = ErrorHandler;
|
|
25
|
+
this.controlUtility = controlUtility;
|
|
26
|
+
this.controlContainer = controlContainer;
|
|
27
|
+
this.PhoneControlHost = PhoneControlHost;
|
|
28
|
+
this.UtilityService = UtilityService;
|
|
29
|
+
this.translate = translate;
|
|
30
|
+
this.controlValidationService = controlValidationService;
|
|
31
|
+
this.calendarVisible = true;
|
|
32
|
+
this.currentEvents = [];
|
|
33
|
+
this.calendarPlugins = [dayGridPlugin, timeGrigPlugin, interactionPlugin, listPlugin];
|
|
34
|
+
this.calendarWeekends = true;
|
|
35
|
+
this.calendarEvents = [];
|
|
36
|
+
this.DefaultView = "";
|
|
37
|
+
this.CalendarViews = '';
|
|
38
|
+
this.locales = [];
|
|
39
|
+
this.CurrentLanguage = "";
|
|
40
|
+
this.resetError = () => {
|
|
41
|
+
this.controlValidationService.removeGlobalError();
|
|
42
|
+
};
|
|
43
|
+
CalendarComponent.controlContainerstatic = this.controlContainer;
|
|
44
|
+
}
|
|
45
|
+
async ngOnInit() {
|
|
46
|
+
switch (await this.UtilityService.getCurrentLanguage()) {
|
|
47
|
+
case 'ar':
|
|
48
|
+
this.locales = [ArLocale];
|
|
49
|
+
this.CurrentLanguage = "Ar";
|
|
50
|
+
break;
|
|
51
|
+
case 'en':
|
|
52
|
+
this.locales = [enGbLocale];
|
|
53
|
+
this.CurrentLanguage = "En";
|
|
54
|
+
break;
|
|
55
|
+
default:
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
this.translate.onLangChange.subscribe((event) => {
|
|
59
|
+
switch (event.lang) {
|
|
60
|
+
case 'ar':
|
|
61
|
+
this.locales = [ArLocale];
|
|
62
|
+
this.CurrentLanguage = "Ar";
|
|
63
|
+
break;
|
|
64
|
+
case 'en':
|
|
65
|
+
this.locales = [enGbLocale];
|
|
66
|
+
this.CurrentLanguage = "En";
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
this.calendarEvents = this.options.EventList;
|
|
73
|
+
this.calendarWeekends = this.options.AllowCalendarWeekends;
|
|
74
|
+
switch (this.options.DefaultView) {
|
|
75
|
+
case CalendarView.Month:
|
|
76
|
+
this.DefaultView = "dayGridMonth";
|
|
77
|
+
break;
|
|
78
|
+
case CalendarView.Weekly:
|
|
79
|
+
this.DefaultView = "timeGridWeek";
|
|
80
|
+
break;
|
|
81
|
+
case CalendarView.Daily:
|
|
82
|
+
this.DefaultView = "timeGridDay";
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
if (this.options.CalendarViews != null && this.options.CalendarViews.length > 0)
|
|
88
|
+
for (let index = 0; index < this.options.CalendarViews.length; index++) {
|
|
89
|
+
const element = this.options.CalendarViews[index];
|
|
90
|
+
switch (element) {
|
|
91
|
+
case CalendarView.Agenda:
|
|
92
|
+
this.CalendarViews += "listWeek,";
|
|
93
|
+
break;
|
|
94
|
+
case CalendarView.Daily:
|
|
95
|
+
this.CalendarViews += "timeGridDay,";
|
|
96
|
+
break;
|
|
97
|
+
case CalendarView.Weekly:
|
|
98
|
+
this.CalendarViews += "timeGridWeek,";
|
|
99
|
+
break;
|
|
100
|
+
case CalendarView.Month:
|
|
101
|
+
this.CalendarViews += "dayGridMonth,";
|
|
102
|
+
break;
|
|
103
|
+
default:
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
this.group.addControl(this.options.Name, new FormControl(''));
|
|
108
|
+
this.CalendarFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
109
|
+
this.calendarOptions = {
|
|
110
|
+
plugins: [
|
|
111
|
+
dayGridPlugin,
|
|
112
|
+
timeGridPlugin,
|
|
113
|
+
listPlugin,
|
|
114
|
+
interactionPlugin
|
|
115
|
+
],
|
|
116
|
+
headerToolbar: {
|
|
117
|
+
left: 'prev,next today',
|
|
118
|
+
center: 'title',
|
|
119
|
+
right: this.CalendarViews.substring(0, this.CalendarViews.length - 1)
|
|
120
|
+
},
|
|
121
|
+
locales: this.locales,
|
|
122
|
+
locale: this.CurrentLanguage,
|
|
123
|
+
initialView: this.CalendarViews.split(',')[0],
|
|
124
|
+
initialEvents: this.calendarEvents,
|
|
125
|
+
initialDate: this.options.DefaultDate,
|
|
126
|
+
weekends: this.options.AllowCalendarWeekends,
|
|
127
|
+
editable: this.options.Eventeditable,
|
|
128
|
+
selectable: this.options.Eventselectable,
|
|
129
|
+
// selectMirror: true,
|
|
130
|
+
dayMaxEvents: this.options.dayMaxEvents,
|
|
131
|
+
select: this.OnDayClickFunction.bind(this),
|
|
132
|
+
eventClick: this.OnEventClickFunction.bind(this),
|
|
133
|
+
// eventsSet: this.handleEvents.bind(this)
|
|
134
|
+
/* you can update a remote database when these fire:
|
|
135
|
+
eventAdd:
|
|
136
|
+
eventChange:
|
|
137
|
+
eventRemove:
|
|
138
|
+
*/
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
ngAfterViewInit() {
|
|
142
|
+
}
|
|
143
|
+
getErrorValidation(Errorsitem) {
|
|
144
|
+
}
|
|
145
|
+
OnDayClickFunction(arg) {
|
|
146
|
+
if (this.options.OnDayClickFunction != null) {
|
|
147
|
+
let DayClickFunction = this.options.OnDayClickFunction;
|
|
148
|
+
DayClickFunction(arg);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
OnEventClickFunction(arg) {
|
|
152
|
+
if (this.options.OnEventClickFunction != null) {
|
|
153
|
+
let EventClickFunction = this.options.OnEventClickFunction;
|
|
154
|
+
EventClickFunction(arg.event);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.ErrorMassageValidation }, { token: i2.ControlUtility }, { token: i3.ControlContainer, optional: true }, { token: i3.FormGroupDirective }, { token: i4.UtilityService }, { token: i4.BBSFTranslateService }, { token: i4.ControlValidationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
158
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CalendarComponent, selector: "BBSF-Calendar", inputs: { group: "group", options: "options" }, viewQueries: [{ propertyName: "calendarComponent", first: true, predicate: ["calendar"], descendants: true }], ngImport: i0, template: "\r\n<div class=\"b-control b-calendar\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <!-- <full-calendar #calendar\r\n [defaultDate]=\"options.DefaultDate\"\r\n [defaultView]=\"DefaultView\"\r\n [header]=\"{\r\n left: 'prev,next today',\r\n center: 'title',\r\n right: CalendarViews\r\n }\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [locales]=\"locales\"\r\n [plugins]=\"calendarPlugins\"\r\n [weekends]=\"calendarWeekends\"\r\n [events]=\"calendarEvents\"\r\n (dateClick)=\"OnDayClickFunction($event)\"\r\n (eventClick)=\"OnEventClickFunction($event)\"\r\n id=\"{{options.Name}}\"></full-calendar> -->\r\n\r\n\r\n <full-calendar\r\n *ngIf=\"options.CalendarVisible\"\r\n [options]='calendarOptions'\r\n id=\"{{options.Name}}\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n ></full-calendar>\r\n\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.FullCalendarComponent, selector: "full-calendar", inputs: ["options", "deepChangeDetection", "events", "eventSources", "resources"] }, { kind: "directive", type: i7.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
159
|
+
}
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
161
|
+
type: Component,
|
|
162
|
+
args: [{ selector: 'BBSF-Calendar', template: "\r\n<div class=\"b-control b-calendar\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <!-- <full-calendar #calendar\r\n [defaultDate]=\"options.DefaultDate\"\r\n [defaultView]=\"DefaultView\"\r\n [header]=\"{\r\n left: 'prev,next today',\r\n center: 'title',\r\n right: CalendarViews\r\n }\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [locales]=\"locales\"\r\n [plugins]=\"calendarPlugins\"\r\n [weekends]=\"calendarWeekends\"\r\n [events]=\"calendarEvents\"\r\n (dateClick)=\"OnDayClickFunction($event)\"\r\n (eventClick)=\"OnEventClickFunction($event)\"\r\n id=\"{{options.Name}}\"></full-calendar> -->\r\n\r\n\r\n <full-calendar\r\n *ngIf=\"options.CalendarVisible\"\r\n [options]='calendarOptions'\r\n id=\"{{options.Name}}\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n ></full-calendar>\r\n\r\n </div>\r\n</div>\r\n" }]
|
|
163
|
+
}], ctorParameters: () => [{ type: i1.ErrorMassageValidation }, { type: i2.ControlUtility }, { type: i3.ControlContainer, decorators: [{
|
|
164
|
+
type: Optional
|
|
165
|
+
}] }, { type: i3.FormGroupDirective }, { type: i4.UtilityService }, { type: i4.BBSFTranslateService }, { type: i4.ControlValidationService }], propDecorators: { group: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], options: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], calendarComponent: [{
|
|
170
|
+
type: ViewChild,
|
|
171
|
+
args: ['calendar', { static: false }]
|
|
172
|
+
}] } });
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0NhbGVuZGFyL0NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9DYWxlbmRhci9DYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLGFBQWEsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLGlCQUFpQixNQUFNLDJCQUEyQixDQUFDLENBQUMsZ0JBQWdCO0FBQzNFLE9BQU8sY0FBYyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sVUFBVSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFXLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBK0csTUFBTSxnQkFBZ0IsQ0FBQztBQUkxSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsMkhBQTJIO0FBQzNILE9BQU8sVUFBVSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sUUFBUSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFTckQsTUFBTSxPQUFPLGlCQUFpQjthQUdyQiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQUNyQyw0Q0FBNEM7SUFDNUMsWUFBb0IsWUFBb0MsRUFBVSxjQUE4QixFQUFzQixnQkFBa0MsRUFBUyxnQkFBb0MsRUFBUyxjQUE2QixFQUFTLFNBQStCLEVBQVMsd0JBQWlEO1FBQXpULGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQUFVLG1CQUFjLEdB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RTtZQUM3QyxJQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7WUFDM0Qsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9CO0lBRUgsQ0FBQzs4R0E5SlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsb05DeEI5QixzeUNBZ0NBOzsyRkRSYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsZUFBZTs7MEJBUzBFLFFBQVE7aUxBR2xHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRW9DLGlCQUFpQjtzQkFBMUQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnVsbENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bGxjYWxlbmRhci9hbmd1bGFyJztcclxuaW1wb3J0ICogYXMgY29yZSBmcm9tICdAZnVsbGNhbGVuZGFyL2NvcmUnO1xyXG5pbXBvcnQgZGF5R3JpZFBsdWdpbiBmcm9tICdAZnVsbGNhbGVuZGFyL2RheWdyaWQnO1xyXG5pbXBvcnQgdGltZUdyaWdQbHVnaW4gZnJvbSAnQGZ1bGxjYWxlbmRhci90aW1lZ3JpZCc7XHJcbmltcG9ydCBpbnRlcmFjdGlvblBsdWdpbiBmcm9tICdAZnVsbGNhbGVuZGFyL2ludGVyYWN0aW9uJzsgLy8gZm9yIGRhdGVDbGlja1xyXG5pbXBvcnQgdGltZUdyaWRQbHVnaW4gZnJvbSAnQGZ1bGxjYWxlbmRhci90aW1lZ3JpZCc7XHJcbmltcG9ydCBsaXN0UGx1Z2luIGZyb20gJ0BmdWxsY2FsZW5kYXIvbGlzdCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRG9DaGVjaywgT3B0aW9uYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVycm9yTWFzc2FnZVZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvdmFsaWRhdGlvbkVycm9yTWFzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBDYWxlbmRhck9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0NhbGVuZGFyT3B0aW9ucyc7XHJcbmltcG9ydCB7IENhbGVuZGFyVmlldyB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9DYWxlbmRhclZpZXcnO1xyXG4vLyBpbXBvcnQgeyBDYWxlbmRhck9wdGlvbnMgYXMgQ2FsZW5kYXJPcHRpb25zTW9kZWwsIERhdGVTZWxlY3RBcmcsIEV2ZW50QXBpLCBFdmVudENsaWNrQXJnIH0gZnJvbSAnQGZ1bGxjYWxlbmRhci9hbmd1bGFyJztcclxuaW1wb3J0IGVuR2JMb2NhbGUgZnJvbSAnQGZ1bGxjYWxlbmRhci9jb3JlL2xvY2FsZXMvZW4tZ2InO1xyXG5pbXBvcnQgQXJMb2NhbGUgZnJvbSAnQGZ1bGxjYWxlbmRhci9jb3JlL2xvY2FsZXMvYXInO1xyXG5pbXBvcnQgeyBMYW5nQ2hhbmdlRXZlbnQgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLUNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vQ2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL0NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG4gIHN0YXRpYyBjb250cm9sQ29udGFpbmVyc3RhdGljID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgRXJyb3JIYW5kbGVyOiBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uLCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgUGhvbmVDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLHByaXZhdGUgVXRpbGl0eVNlcnZpY2U6VXRpbGl0eVNlcnZpY2UscHJpdmF0ZSB0cmFuc2xhdGU6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOkNvbnRyb2xWYWxpZGF0aW9uU2VydmljZSkge1xyXG4gICAgQ2FsZW5kYXJDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBDYWxlbmRhck9wdGlvbnM7XHJcbiAgQ2FsZW5kYXJGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNhbGVuZGFyQ29tcG9uZW50OiBGdWxsQ2FsZW5kYXJDb21wb25lbnQ7IC8vIHRoZSAjY2FsZW5kYXIgaW4gdGhlIHRlbXBsYXRlXHJcblxyXG5cclxuXHJcbiAgY2FsZW5kYXJWaXNpYmxlID0gdHJ1ZTtcclxuICBjYWxlbmRhck9wdGlvbnM6IGNvcmUuQ2FsZW5kYXJPcHRpb25zO1xyXG4gIGN1cnJlbnRFdmVudHM6IGNvcmUuRXZlbnRBcGlbXSA9IFtdO1xyXG4gIGNhbGVuZGFyUGx1Z2lucyA9IFtkYXlHcmlkUGx1Z2luLCB0aW1lR3JpZ1BsdWdpbiwgaW50ZXJhY3Rpb25QbHVnaW4sIGxpc3RQbHVnaW5dO1xyXG4gIGNhbGVuZGFyV2Vla2VuZHMgPSB0cnVlO1xyXG4gIGNhbGVuZGFyRXZlbnRzOiBjb3JlLkV2ZW50SW5wdXRbXSA9IFtdO1xyXG4gIERlZmF1bHRWaWV3ID0gXCJcIlxyXG4gIENhbGVuZGFyVmlld3MgPSAnJ1xyXG4gIGxvY2FsZXMgPSBbXTtcclxuICBDdXJyZW50TGFuZ3VhZ2UgPSBcIlwiXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBzd2l0Y2ggKGF3YWl0IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCkpIHtcclxuICAgICAgY2FzZSAnYXInOlxyXG4gICAgICAgIHRoaXMubG9jYWxlcyA9IFtBckxvY2FsZV1cclxuICAgICAgICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9IFwiQXJcIlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdlbic6XHJcbiAgICAgICAgdGhpcy5sb2NhbGVzID0gW2VuR2JMb2NhbGVdXHJcbiAgICAgICAgdGhpcy5DdXJyZW50TGFuZ3VhZ2UgPSBcIkVuXCJcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAgIHN3aXRjaCAoZXZlbnQubGFuZykge1xyXG4gICAgICAgIGNhc2UgJ2FyJzpcclxuICAgICAgICAgIHRoaXMubG9jYWxlcyA9IFtBckxvY2FsZV1cclxuICAgICAgICAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gXCJBclwiXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlbic6XHJcbiAgICAgICAgICB0aGlzLmxvY2FsZXMgPSBbZW5HYkxvY2FsZV1cclxuICAgICAgICAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gXCJFblwiXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyRXZlbnRzID0gdGhpcy5vcHRpb25zLkV2ZW50TGlzdFxyXG4gICAgdGhpcy5jYWxlbmRhcldlZWtlbmRzID0gdGhpcy5vcHRpb25zLkFsbG93Q2FsZW5kYXJXZWVrZW5kc1xyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuRGVmYXVsdFZpZXcpIHtcclxuICAgICAgY2FzZSBDYWxlbmRhclZpZXcuTW9udGg6XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmlldyA9IFwiZGF5R3JpZE1vbnRoXCJcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDYWxlbmRhclZpZXcuV2Vla2x5OlxyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZpZXcgPSBcInRpbWVHcmlkV2Vla1wiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LkRhaWx5OlxyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZpZXcgPSBcInRpbWVHcmlkRGF5XCJcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ2FsZW5kYXJWaWV3cyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5DYWxlbmRhclZpZXdzLmxlbmd0aCA+IDApXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuQ2FsZW5kYXJWaWV3cy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5vcHRpb25zLkNhbGVuZGFyVmlld3NbaW5kZXhdO1xyXG4gICAgICAgIHN3aXRjaCAoZWxlbWVudCkge1xyXG4gICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuQWdlbmRhOlxyXG4gICAgICAgICAgICB0aGlzLkNhbGVuZGFyVmlld3MgKz0gXCJsaXN0V2VlayxcIlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LkRhaWx5OlxyXG4gICAgICAgICAgICB0aGlzLkNhbGVuZGFyVmlld3MgKz0gXCJ0aW1lR3JpZERheSxcIlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LldlZWtseTpcclxuICAgICAgICAgICAgdGhpcy5DYWxlbmRhclZpZXdzICs9IFwidGltZUdyaWRXZWVrLFwiXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuTW9udGg6XHJcbiAgICAgICAgICAgIHRoaXMuQ2FsZW5kYXJWaWV3cyArPSBcImRheUdyaWRNb250aCxcIlxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5DYWxlbmRhckZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMuTmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuXHJcblxyXG4gICAgdGhpcy5jYWxlbmRhck9wdGlvbnMgPSB7XHJcbiAgICAgIHBsdWdpbnM6IFtcclxuICAgICAgICBkYXlHcmlkUGx1Z2luLFxyXG4gICAgICAgIHRpbWVHcmlkUGx1Z2luLFxyXG4gICAgICAgIGxpc3RQbHVnaW4sXHJcbiAgICAgICAgaW50ZXJhY3Rpb25QbHVnaW5cclxuICAgICAgXSxcclxuICAgICAgaGVhZGVyVG9vbGJhcjoge1xyXG4gICAgICAgIGxlZnQ6ICdwcmV2LG5leHQgdG9kYXknLFxyXG4gICAgICAgIGNlbnRlcjogJ3RpdGxlJyxcclxuICAgICAgICByaWdodDogdGhpcy5DYWxlbmRhclZpZXdzLnN1YnN0cmluZygwLCB0aGlzLkNhbGVuZGFyVmlld3MubGVuZ3RoIC0gMSlcclxuICAgICAgfSxcclxuICAgICAgbG9jYWxlczogdGhpcy5sb2NhbGVzLFxyXG4gICAgICBsb2NhbGU6IHRoaXMuQ3VycmVudExhbmd1YWdlLFxyXG4gICAgICBpbml0aWFsVmlldzogdGhpcy5DYWxlbmRhclZpZXdzLnNwbGl0KCcsJylbMF0sXHJcbiAgICAgIGluaXRpYWxFdmVudHM6IHRoaXMuY2FsZW5kYXJFdmVudHMsXHJcbiAgICAgIGluaXRpYWxEYXRlOiB0aGlzLm9wdGlvbnMuRGVmYXVsdERhdGUsXHJcbiAgICAgIHdlZWtlbmRzOiB0aGlzLm9wdGlvbnMuQWxsb3dDYWxlbmRhcldlZWtlbmRzLFxyXG4gICAgICBlZGl0YWJsZTogdGhpcy5vcHRpb25zLkV2ZW50ZWRpdGFibGUsXHJcbiAgICAgIHNlbGVjdGFibGU6IHRoaXMub3B0aW9ucy5FdmVudHNlbGVjdGFibGUsXHJcbiAgICAgIC8vIHNlbGVjdE1pcnJvcjogdHJ1ZSxcclxuICAgICAgZGF5TWF4RXZlbnRzOiB0aGlzLm9wdGlvbnMuZGF5TWF4RXZlbnRzLFxyXG4gICAgICBzZWxlY3Q6IHRoaXMuT25EYXlDbGlja0Z1bmN0aW9uLmJpbmQodGhpcyksXHJcbiAgICAgIGV2ZW50Q2xpY2s6IHRoaXMuT25FdmVudENsaWNrRnVuY3Rpb24uYmluZCh0aGlzKSxcclxuICAgICAgLy8gZXZlbnRzU2V0OiB0aGlzLmhhbmRsZUV2ZW50cy5iaW5kKHRoaXMpXHJcbiAgICAgIC8qIHlvdSBjYW4gdXBkYXRlIGEgcmVtb3RlIGRhdGFiYXNlIHdoZW4gdGhlc2UgZmlyZTpcclxuICAgICAgZXZlbnRBZGQ6XHJcbiAgICAgIGV2ZW50Q2hhbmdlOlxyXG4gICAgICBldmVudFJlbW92ZTpcclxuICAgICAgKi9cclxuICAgIH07XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLnJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JzaXRlbTogYW55W10pIHtcclxuICB9XHJcblxyXG5cclxuICBPbkRheUNsaWNrRnVuY3Rpb24oYXJnKSB7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5PbkRheUNsaWNrRnVuY3Rpb24gIT0gbnVsbCkge1xyXG4gICAgICBsZXQgRGF5Q2xpY2tGdW5jdGlvbiA9IHRoaXMub3B0aW9ucy5PbkRheUNsaWNrRnVuY3Rpb247XHJcbiAgICAgIERheUNsaWNrRnVuY3Rpb24oYXJnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE9uRXZlbnRDbGlja0Z1bmN0aW9uKGFyZykge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5PbkV2ZW50Q2xpY2tGdW5jdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBFdmVudENsaWNrRnVuY3Rpb24gPSB0aGlzLm9wdGlvbnMuT25FdmVudENsaWNrRnVuY3Rpb247XHJcbiAgICAgIEV2ZW50Q2xpY2tGdW5jdGlvbihhcmcuZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLy8gaGFuZGxlRGF0ZVNlbGVjdChzZWxlY3RJbmZvOiBEYXRlU2VsZWN0QXJnKSB7XHJcbiAgLy8gICBjb25zdCB0aXRsZSA9IHByb21wdCgnUGxlYXNlIGVudGVyIGEgbmV3IHRpdGxlIGZvciB5b3VyIGV2ZW50Jyk7XHJcbiAgLy8gICBjb25zdCBjYWxlbmRhckFwaSA9IHNlbGVjdEluZm8udmlldy5jYWxlbmRhcjtcclxuXHJcbiAgLy8gICBjYWxlbmRhckFwaS51bnNlbGVjdCgpOyAvLyBjbGVhciBkYXRlIHNlbGVjdGlvblxyXG5cclxuICAvLyAgIGlmICh0aXRsZSkge1xyXG4gIC8vICAgICBjYWxlbmRhckFwaS5hZGRFdmVudCh7XHJcbiAgLy8gICAgICAgaWQ6IFwiMVwiLFxyXG4gIC8vICAgICAgIHRpdGxlLFxyXG4gIC8vICAgICAgIHN0YXJ0OiBzZWxlY3RJbmZvLnN0YXJ0U3RyLFxyXG4gIC8vICAgICAgIGVuZDogc2VsZWN0SW5mby5lbmRTdHIsXHJcbiAgLy8gICAgICAgYWxsRGF5OiBzZWxlY3RJbmZvLmFsbERheVxyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIGhhbmRsZUV2ZW50Q2xpY2soY2xpY2tJbmZvOiBFdmVudENsaWNrQXJnKSB7XHJcbiAgLy8gICBpZiAoY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgZXZlbnQgJyR7Y2xpY2tJbmZvLmV2ZW50LnRpdGxlfSdgKSkge1xyXG4gIC8vICAgICBjbGlja0luZm8uZXZlbnQucmVtb3ZlKCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBoYW5kbGVFdmVudHMoZXZlbnRzOiBFdmVudEFwaVtdKSB7XHJcbiAgLy8gICB0aGlzLmN1cnJlbnRFdmVudHMgPSBldmVudHM7XHJcbiAgLy8gfVxyXG5cclxuXHJcblxyXG5cclxufVxyXG5cclxuXHJcbiIsIlxyXG48ZGl2IGNsYXNzPVwiYi1jb250cm9sIGItY2FsZW5kYXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB2YWxpZGF0ZSBpcy1pbnZhbGlkXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gICAgPCEtLSA8ZnVsbC1jYWxlbmRhciAjY2FsZW5kYXJcclxuICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0RGF0ZV09XCJvcHRpb25zLkRlZmF1bHREYXRlXCJcclxuICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Vmlld109XCJEZWZhdWx0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICBbaGVhZGVyXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAncHJldixuZXh0IHRvZGF5JyxcclxuICAgICAgICAgICAgICAgICAgICBjZW50ZXI6ICd0aXRsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IENhbGVuZGFyVmlld3NcclxuICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7e29wdGlvbnMuTmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgIFtsb2NhbGVzXT1cImxvY2FsZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgW3BsdWdpbnNdPVwiY2FsZW5kYXJQbHVnaW5zXCJcclxuICAgICAgICAgICAgICAgICAgIFt3ZWVrZW5kc109XCJjYWxlbmRhcldlZWtlbmRzXCJcclxuICAgICAgICAgICAgICAgICAgIFtldmVudHNdPVwiY2FsZW5kYXJFdmVudHNcIlxyXG4gICAgICAgICAgICAgICAgICAgKGRhdGVDbGljayk9XCJPbkRheUNsaWNrRnVuY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAoZXZlbnRDbGljayk9XCJPbkV2ZW50Q2xpY2tGdW5jdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgIGlkPVwie3tvcHRpb25zLk5hbWV9fVwiPjwvZnVsbC1jYWxlbmRhcj4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgIDxmdWxsLWNhbGVuZGFyXHJcbiAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbnMuQ2FsZW5kYXJWaXNpYmxlXCJcclxuICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT0nY2FsZW5kYXJPcHRpb25zJ1xyXG4gICAgICAgICAgICAgICAgICAgaWQ9XCJ7e29wdGlvbnMuTmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2xcclxuICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5OYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgID48L2Z1bGwtY2FsZW5kYXI+XHJcblxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { FormControl, Validators } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../Shared/services/ControlUtility";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "@bnsights/bbsf-utilities";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "@angular/cdk/bidi";
|
|
9
|
+
import * as i6 from "ngx-intl-tel-input";
|
|
10
|
+
export class CheckBoxComponent {
|
|
11
|
+
static { this.controlContainerstatic = null; }
|
|
12
|
+
// tslint:disable-next-line: max-line-length
|
|
13
|
+
constructor(controlUtility, controlContainer, CheckBoxControlHost, UtilityService, translate, controlValidationService) {
|
|
14
|
+
this.controlUtility = controlUtility;
|
|
15
|
+
this.controlContainer = controlContainer;
|
|
16
|
+
this.CheckBoxControlHost = CheckBoxControlHost;
|
|
17
|
+
this.UtilityService = UtilityService;
|
|
18
|
+
this.translate = translate;
|
|
19
|
+
this.controlValidationService = controlValidationService;
|
|
20
|
+
this.OnChange = new EventEmitter();
|
|
21
|
+
this.markAllAsTouched = false;
|
|
22
|
+
this.validationRules = [];
|
|
23
|
+
this.validationRulesasync = [];
|
|
24
|
+
this.resetError = () => {
|
|
25
|
+
this.controlValidationService.removeGlobalError();
|
|
26
|
+
};
|
|
27
|
+
//External Method
|
|
28
|
+
this.RemoveRequiredValidation = () => {
|
|
29
|
+
this.controlUtility.RemoveRequiredValidation(this.CheckBoxFormControl, this.validationRules, this.options);
|
|
30
|
+
};
|
|
31
|
+
//External Method
|
|
32
|
+
this.AddRequiredValidation = () => {
|
|
33
|
+
this.controlUtility.AddRequiredValidation(this.CheckBoxFormControl, this.validationRules, this.options);
|
|
34
|
+
};
|
|
35
|
+
//External Method
|
|
36
|
+
this.RemoveCustomValidation = (CustomValidation) => {
|
|
37
|
+
this.controlUtility.RemoveCustomValidation(this.CheckBoxFormControl, this.validationRules, CustomValidation);
|
|
38
|
+
};
|
|
39
|
+
//External Method
|
|
40
|
+
this.AddCustomValidation = (CustomValidation) => {
|
|
41
|
+
this.controlUtility.AddCustomValidation(this.CheckBoxFormControl, this.validationRules, CustomValidation);
|
|
42
|
+
};
|
|
43
|
+
//External Method
|
|
44
|
+
this.IsValid = () => {
|
|
45
|
+
this.controlUtility.IsValid(this.CheckBoxFormControl);
|
|
46
|
+
};
|
|
47
|
+
CheckBoxComponent.controlContainerstatic = this.controlContainer;
|
|
48
|
+
}
|
|
49
|
+
ngOnInit() {
|
|
50
|
+
if (this.options.ForceDirection)
|
|
51
|
+
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
52
|
+
else
|
|
53
|
+
this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
|
|
54
|
+
this.controlValidationService.isCreatedBefor = false;
|
|
55
|
+
this.group.addControl(this.options.Name, new FormControl(''));
|
|
56
|
+
this.CheckBoxFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
57
|
+
this.validationRules = [];
|
|
58
|
+
this.validationRulesasync = [];
|
|
59
|
+
this.CheckBoxFormControl.setValue(this.options.Value);
|
|
60
|
+
if (this.options.LabelKey != null && this.options.LabelKey != "")
|
|
61
|
+
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
62
|
+
if (this.options.IsRequired) {
|
|
63
|
+
this.validationRules.push(Validators.required);
|
|
64
|
+
}
|
|
65
|
+
if (this.options.CustomValidation.length > 0) {
|
|
66
|
+
let Validations = this.options.CustomValidation;
|
|
67
|
+
for (let index = 0; index < Validations.length; index++) {
|
|
68
|
+
const Validation = Validations[index];
|
|
69
|
+
this.validationRules.push(Validation.functionBody);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
this.CheckBoxFormControl.setValidators(this.validationRules);
|
|
73
|
+
this.CheckBoxFormControl.setAsyncValidators(this.validationRulesasync);
|
|
74
|
+
if (this.options.IsDisabled) {
|
|
75
|
+
this.CheckBoxFormControl.disable();
|
|
76
|
+
}
|
|
77
|
+
this.CheckBoxControlHost.ngSubmit.subscribe((value) => {
|
|
78
|
+
this.group.markAllAsTouched();
|
|
79
|
+
this.markAllAsTouched = true;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
ngAfterViewInit() {
|
|
83
|
+
this.controlUtility.setAttributeForControl(this.options);
|
|
84
|
+
}
|
|
85
|
+
showGlobalError() {
|
|
86
|
+
this.controlUtility.showGlobalError();
|
|
87
|
+
}
|
|
88
|
+
getErrorValidation(ErrorList) {
|
|
89
|
+
if (this.markAllAsTouched && this.group.invalid) {
|
|
90
|
+
this.showGlobalError();
|
|
91
|
+
this.markAllAsTouched = false;
|
|
92
|
+
}
|
|
93
|
+
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
94
|
+
}
|
|
95
|
+
onValueChanged() {
|
|
96
|
+
this.OnChange.emit(this.CheckBoxFormControl.value);
|
|
97
|
+
let originalValue = this.CheckBoxFormControl.value;
|
|
98
|
+
if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
|
|
99
|
+
this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CheckBoxComponent, deps: [{ token: i1.ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.BBSFTranslateService }, { token: i3.ControlValidationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
103
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CheckBoxComponent, selector: "BBSF-CheckBox", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-checkbox\" [formGroup]=\"group\">\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input *ngIf=\"!options.IsReadonly\" class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" [dir]=\"textDir\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\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 <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{options.Value}}</span>\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=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\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", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i6.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.KeyValuePipe, name: "keyvalue" }] }); }
|
|
104
|
+
}
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CheckBoxComponent, decorators: [{
|
|
106
|
+
type: Component,
|
|
107
|
+
args: [{ selector: 'BBSF-CheckBox', template: "<div class=\"form-group bbsf-control bbsf-checkbox\" [formGroup]=\"group\">\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input *ngIf=\"!options.IsReadonly\" class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" [dir]=\"textDir\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\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 <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{options.Value}}</span>\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=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\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" }]
|
|
108
|
+
}], ctorParameters: () => [{ type: i1.ControlUtility }, { type: i2.ControlContainer, decorators: [{
|
|
109
|
+
type: Optional
|
|
110
|
+
}] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.BBSFTranslateService }, { type: i3.ControlValidationService }], propDecorators: { group: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], options: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], OnChange: [{
|
|
115
|
+
type: Output
|
|
116
|
+
}] } });
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hlY2tCb3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0NoZWNrQm94L0NoZWNrQm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9DaGVja0JveC9DaGVja0JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBb0UsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFXM0gsTUFBTSxPQUFPLGlCQUFpQjthQUdyQiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQUNyQyw0Q0FBNEM7SUFDNUMsWUFBb0IsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQVMsbUJBQXVDLEVBQVMsY0FBNkIsRUFBUyxTQUErQixFQUFTLHdCQUFpRDtRQUE5USxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQVMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtRQUt4UixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd4QyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBa0QxQixlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FB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LCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVycm9yTWFzc2FnZVZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvdmFsaWRhdGlvbkVycm9yTWFzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBDaGVja0JveE9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0NoZWNrQm94T3B0aW9ucyc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdCQlNGLUNoZWNrQm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vQ2hlY2tCb3guY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja0JveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgQ2hlY2tCb3hDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLHByaXZhdGUgVXRpbGl0eVNlcnZpY2U6VXRpbGl0eVNlcnZpY2UscHJpdmF0ZSB0cmFuc2xhdGU6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOkNvbnRyb2xWYWxpZGF0aW9uU2VydmljZSkge1xyXG4gICAgQ2hlY2tCb3hDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBDaGVja0JveEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgdGV4dERpcjtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZih0aGlzLm9wdGlvbnMuRm9yY2VEaXJlY3Rpb24pXHJcbiAgICB0aGlzLnRleHREaXI9dGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uPT0yPydydGwnOidsdHInO1xyXG4gICAgZWxzZVxyXG4gICAgdGhpcy50ZXh0RGlyPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpPT0nYXInPydydGwnOidsdHInO1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZVxyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gICAgdGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gICAgdGhpcy5DaGVja0JveEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5MYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSk7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5DaGVja0JveEZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkNoZWNrQm94Q29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zZXRBdHRyaWJ1dGVGb3JDb250cm9sKHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpXHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbC52YWx1ZSlcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID10aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLlBhdGNoUGF0aCAmJiB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkudmFsaWQpIHtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXRjaENvbnRyb2xWYWx1ZShvcmlnaW5hbFZhbHVlLHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICx0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5DaGVja0JveEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5DaGVja0JveEZvcm1Db250cm9sKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJic2YtY29udHJvbCBiYnNmLWNoZWNrYm94XCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgPCEtLWlucHV0LS0+XHJcbiAgICA8aW5wdXQgKm5nSWY9XCIhb3B0aW9ucy5Jc1JlYWRvbmx5XCIgY2xhc3M9XCJiYnNmLWNoZWNrYm94LWlucHV0IHt7b3B0aW9ucy5FeHRyYUNsYXNzZXN9fVwiIFtkaXJdPVwidGV4dERpclwiIFtjaGVja2VkXT1cIm9wdGlvbnMuVmFsdWU9PXRydWU/dHJ1ZTpudWxsXCJcclxuICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiZW1haWwtZXJyb3JcIiBhcmlhLWludmFsaWQ9XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLk5hbWV9fVwiXHJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlZCgpXCJcclxuICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJDaGVja0JveEZvcm1Db250cm9sLmludmFsaWQgJiYgQ2hlY2tCb3hGb3JtQ29udHJvbC50b3VjaGVkXCJcclxuICAgICAgICAgICBpZD1cInt7b3B0aW9ucy5OYW1lfX1cIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIm9wdGlvbnMuVmFsdWU9PXRydWU/dHJ1ZTpudWxsXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImxhYmVsLXN1YnRleHQtY29udGFpbmVyXCI+XHJcbiAgICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgICA8bGFiZWwgKm5nSWY9XCIhb3B0aW9ucy5IaWRlTGFiZWxcIiBjbGFzcz1cImJic2YtbGFiZWwge3tvcHRpb25zLkxhYmVsRXh0cmFDbGFzc2VzfX1cIj5cclxuICAgICAgICB7e29wdGlvbnMuTGFiZWxWYWx1ZX19XHJcbiAgICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIoKG9wdGlvbnMuU2hvd0FzdGVyaXNrJiZvcHRpb25zLklzUmVxdWlyZWQpfHwob3B0aW9ucy5Jc1JlcXVpcmVkKSkmJiFvcHRpb25zLklzUmVhZG9ubHlcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgIDwhLS0gcmVhZG9ubHkgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5Jc1JlYWRvbmx5XCI+PHNwYW4gY2xhc3M9XCJyZWFkb25seS12aWV3XCI+e3tvcHRpb25zLlZhbHVlfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN1YnRleHQtY29udGFpbmVyXCIgKm5nSWY9XCIhb3B0aW9ucy5Jc1JlYWRvbmx5XCI+XHJcbiAgICAgICAgPCEtLSBMYWJlbERlc2NyaXB0aW9uLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLkxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgPCEtLSByZXF1aXJlZFRleHQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi12YWxpZGF0aW9uXCIgKm5nSWY9XCIoQ2hlY2tCb3hGb3JtQ29udHJvbC5pbnZhbGlkICYmIENoZWNrQm94Rm9ybUNvbnRyb2wudG91Y2hlZClcIj5cclxuICAgICAgICAgIHt7Z2V0RXJyb3JWYWxpZGF0aW9uKENoZWNrQm94Rm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cIihncm91cC52YWxpZCYmZ3JvdXAuZGlydHkmJmdyb3VwLnRvdWNoZWQgKXx8KGdyb3VwLnVudG91Y2hlZCYmZ3JvdXAuaW52YWxpZCYmZ3JvdXAuZGlydHkpIFwiPnt7cmVzZXRFcnJvcigpfX08L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { PagingActionMode } from '../../Shared/Enums/PagingActionMode';
|
|
3
|
+
import Swal from 'sweetalert2';
|
|
4
|
+
import { StyleConfirmationMode } from '../../Shared/Enums/StyleConfirmationMode';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@bnsights/bbsf-utilities";
|
|
7
|
+
import * as i2 from "@ng-bootstrap/ng-bootstrap";
|
|
8
|
+
import * as i3 from "@angular/router";
|
|
9
|
+
export class ConfirmationModalComponent {
|
|
10
|
+
constructor(utilityService, modalService, router) {
|
|
11
|
+
this.utilityService = utilityService;
|
|
12
|
+
this.modalService = modalService;
|
|
13
|
+
this.router = router;
|
|
14
|
+
this.styleDanger = StyleConfirmationMode.Danger;
|
|
15
|
+
this.styleWarning = StyleConfirmationMode.Warning;
|
|
16
|
+
this.styleSuccess = StyleConfirmationMode.Success;
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
}
|
|
20
|
+
//Method used to show confirmation modal
|
|
21
|
+
showModal() {
|
|
22
|
+
this.utilityService.startBlockUI();
|
|
23
|
+
//check for options text values
|
|
24
|
+
this.setTextValues();
|
|
25
|
+
//sweetalert styles//
|
|
26
|
+
switch (this.options.StyleConfirmationMode) {
|
|
27
|
+
case this.styleSuccess: {
|
|
28
|
+
this.icon = 'success';
|
|
29
|
+
this.btnColor = '#50cd89';
|
|
30
|
+
this.iconHtml = '<i class="fa fa-check"></i>';
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
case this.styleWarning: {
|
|
34
|
+
this.icon = 'warning';
|
|
35
|
+
this.btnColor = '#ffc700';
|
|
36
|
+
this.iconHtml = '<i class="fa fa-warning"></i>';
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
case this.styleDanger: {
|
|
40
|
+
this.icon = 'error';
|
|
41
|
+
this.btnColor = '#f1416c';
|
|
42
|
+
this.iconHtml = '<i class="fa fa-close"></i>';
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
Swal.fire({
|
|
47
|
+
title: this.utilityService.getResourceValue(this.options.ConfirmationHeader),
|
|
48
|
+
text: this.options.ConfirmationBody,
|
|
49
|
+
icon: this.icon,
|
|
50
|
+
iconColor: this.btnColor,
|
|
51
|
+
confirmButtonColor: this.btnColor,
|
|
52
|
+
cancelButtonColor: '#f5f8fa',
|
|
53
|
+
cancelButtonText: this.utilityService.getResourceValue("CancelLabel"),
|
|
54
|
+
confirmButtonText: this.options.SubmitButtonText,
|
|
55
|
+
showCancelButton: this.options.showCancelButton,
|
|
56
|
+
showCloseButton: this.options.showCloseButton,
|
|
57
|
+
allowOutsideClick: false
|
|
58
|
+
}).then((result) => {
|
|
59
|
+
if (result.isConfirmed) {
|
|
60
|
+
this.submit();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
this.utilityService.stopBlockUI();
|
|
64
|
+
}
|
|
65
|
+
setTextValues() {
|
|
66
|
+
if (!this.options.ConfirmationHeader)
|
|
67
|
+
this.options.ConfirmationHeader = this.utilityService.getResourceValue("DeleteConfirmation");
|
|
68
|
+
if (!this.options.ConfirmationBody)
|
|
69
|
+
this.options.ConfirmationBody = this.utilityService.getResourceValue("Delete_Question");
|
|
70
|
+
if (!this.options.SubmitButtonText)
|
|
71
|
+
this.options.SubmitButtonText = this.utilityService.getResourceValue("Delete");
|
|
72
|
+
if (!this.options.SuccessNotificationMessage)
|
|
73
|
+
this.options.SuccessNotificationMessage = this.utilityService.getResourceValue("DeletedSuccessfully");
|
|
74
|
+
}
|
|
75
|
+
//Modal confirmation submit function
|
|
76
|
+
submit() {
|
|
77
|
+
let submitModel = this.options.ServiceSubmitModel;
|
|
78
|
+
let submittedService = this.options.ServiceSubmitFunction.apply(null, submitModel);
|
|
79
|
+
submittedService.subscribe((result) => {
|
|
80
|
+
if (!this.options.DisableModalDismiss)
|
|
81
|
+
this.modalService.dismissAll();
|
|
82
|
+
if (!this.options.DisableSuccessNotification) {
|
|
83
|
+
if (!this.options.SuccessNotificationMessage)
|
|
84
|
+
this.options.SuccessNotificationMessage = this.utilityService.getResourceValue("DeletedSuccessfully");
|
|
85
|
+
this.utilityService.notifySuccessMessage(this.options.SuccessNotificationMessage);
|
|
86
|
+
}
|
|
87
|
+
if (this.options.OnSuccessHandler)
|
|
88
|
+
this.options.OnSuccessHandler(result);
|
|
89
|
+
if (this.options.PagingReference) {
|
|
90
|
+
let paging = this.options.PagingReference;
|
|
91
|
+
this.options.PagingActionMode == PagingActionMode.Reinitialize ? paging.ReinitializePaging() : paging.UpdatePaging();
|
|
92
|
+
}
|
|
93
|
+
this.utilityService.stopBlockUI();
|
|
94
|
+
}, (error) => {
|
|
95
|
+
if (this.options.OnErrorHandler)
|
|
96
|
+
this.options.OnErrorHandler(error);
|
|
97
|
+
else
|
|
98
|
+
this.handleError(error);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
handleError(err) {
|
|
102
|
+
let errorMessage = '';
|
|
103
|
+
if (err.error instanceof ErrorEvent) {
|
|
104
|
+
errorMessage = `An error occurred: ${err.error.message}`;
|
|
105
|
+
if (!this.options.DisableErrorNotification)
|
|
106
|
+
this.utilityService.notifyErrorMessage();
|
|
107
|
+
}
|
|
108
|
+
else if (err.status == 401) {
|
|
109
|
+
this.router.navigate(["/Admin/account/login"]);
|
|
110
|
+
}
|
|
111
|
+
else if (err.status == 510) {
|
|
112
|
+
errorMessage = this.utilityService.getCurrentLanguage() == "en" ? "Can not delete this item as it is related to others" : "لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى";
|
|
113
|
+
if (!this.options.DisableErrorNotification)
|
|
114
|
+
this.utilityService.notifyErrorMessage(errorMessage);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
errorMessage = `Server returned code: ${err.status}, error message is: ${err.message}`;
|
|
118
|
+
console.log(errorMessage);
|
|
119
|
+
if (!this.options.DisableErrorNotification)
|
|
120
|
+
this.utilityService.notifyErrorMessage();
|
|
121
|
+
}
|
|
122
|
+
this.utilityService.stopBlockUI();
|
|
123
|
+
}
|
|
124
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ConfirmationModalComponent, deps: [{ token: i1.UtilityService }, { token: i2.NgbModal }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
125
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: { options: "options" }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }], ngImport: i0, template: "" }); }
|
|
126
|
+
}
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ConfirmationModalComponent, decorators: [{
|
|
128
|
+
type: Component,
|
|
129
|
+
args: [{ selector: 'BBSF-ConfirmationModal', template: "" }]
|
|
130
|
+
}], ctorParameters: () => [{ type: i1.UtilityService }, { type: i2.NgbModal }, { type: i3.Router }], propDecorators: { options: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], confirmationModal: [{
|
|
133
|
+
type: ViewChild,
|
|
134
|
+
args: ['confirmationModal', { static: false }]
|
|
135
|
+
}] } });
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlybWF0aW9uTW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0NvbmZpcm1hdGlvbk1vZGFsL0NvbmZpcm1hdGlvbk1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdkUsT0FBTyxJQUF3QixNQUFNLGFBQWEsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUFNakYsTUFBTSxPQUFPLDBCQUEwQjtJQVdyQyxZQUFtQixjQUE4QixFQUFVLFlBQXNCLEVBQVUsTUFBYztRQUF0RixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFUekcsZ0JBQVcsR0FBMEIscUJBQXFCLENBQUMsTUFBTSxDQUFDO1FBQ2xFLGlCQUFZLEdBQTBCLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztRQUNwRSxpQkFBWSxHQUEwQixxQkFBcUIsQ0FBQyxPQUFPLENBQUM7SUFPeUMsQ0FBQztJQUU5RyxRQUFRO0lBQ1IsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxTQUFTO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNsQywrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLHFCQUFxQjtRQUNyQixRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUU7WUFDMUMsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFBO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQTtnQkFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQTtnQkFDN0MsTUFBTTthQUNQO1lBQ0QsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFBO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQTtnQkFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsQ0FBQTtnQkFDL0MsTUFBTTthQUVQO1lBQ0QsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFBO2dCQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQTtnQkFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQTtnQkFDN0MsTUFBTTthQUVQO1NBQ0Y7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztZQUM1RSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDbkMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3hCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ2pDLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7WUFDckUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDaEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDL0MsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZTtZQUM3QyxpQkFBaUIsRUFBRSxLQUFLO1NBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqQixJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTthQUNkO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ25DLENBQUM7SUFDTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQjtZQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEI7WUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUNELG9DQUFvQztJQUNwQyxNQUFNO1FBQ0osSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUVsRCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLENBQW9CLENBQUE7UUFDckcsZ0JBQWdCLENBQUMsU0FBUyxDQUN4QixDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CO2dCQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRWpDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFO2dCQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEI7b0JBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUN4RyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQTthQUNsRjtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDdkMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtnQkFDaEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3RIO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO2dCQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTs7Z0JBRWxDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUFDLEdBQXNCO1FBQ3hDLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLEdBQUcsQ0FBQyxLQUFLLFlBQVksVUFBVSxFQUFFO1lBQ25DLFlBQVksR0FBRyxzQkFBc0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0I7Z0JBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtTQUMzQzthQUVJLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUE7U0FDL0M7YUFDSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFO1lBQzFCLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDLENBQUMsK0NBQStDLENBQUM7WUFDMUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCO2dCQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFBO1NBQ3ZEO2FBQ0k7WUFDSCxZQUFZLEdBQUcseUJBQXlCLEdBQUcsQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0I7Z0JBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtTQUMzQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQzs4R0E5SFUsMEJBQTBCO2tHQUExQiwwQkFBMEIsc05DZnZDLEVBQUE7OzJGRGVhLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFFRSx3QkFBd0I7K0hBR3pCLE9BQU87c0JBQWYsS0FBSztnQkFJNkMsaUJBQWlCO3NCQUFuRSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9QYWdpbmdBY3Rpb25Nb2RlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Db25maXJtYXRpb25Nb2RhbE9wdGlvbnMnO1xyXG5pbXBvcnQgU3dhbCwgeyBTd2VldEFsZXJ0SWNvbiB9IGZyb20gJ3N3ZWV0YWxlcnQyJztcclxuaW1wb3J0IHsgU3R5bGVDb25maXJtYXRpb25Nb2RlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL1N0eWxlQ29uZmlybWF0aW9uTW9kZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJ0NvbmZpcm1hdGlvbk1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzZWxlY3RvcjogJ0JCU0YtQ29uZmlybWF0aW9uTW9kYWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBzdHlsZURhbmdlcjogU3R5bGVDb25maXJtYXRpb25Nb2RlID0gU3R5bGVDb25maXJtYXRpb25Nb2RlLkRhbmdlcjtcclxuICBzdHlsZVdhcm5pbmc6IFN0eWxlQ29uZmlybWF0aW9uTW9kZSA9IFN0eWxlQ29uZmlybWF0aW9uTW9kZS5XYXJuaW5nO1xyXG4gIHN0eWxlU3VjY2VzczogU3R5bGVDb25maXJtYXRpb25Nb2RlID0gU3R5bGVDb25maXJtYXRpb25Nb2RlLlN1Y2Nlc3M7XHJcbiAgQFZpZXdDaGlsZCgnY29uZmlybWF0aW9uTW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgY29uZmlybWF0aW9uTW9kYWw6IEVsZW1lbnRSZWY7XHJcbiAgaWNvbjogU3dlZXRBbGVydEljb247XHJcbiAgYnRuQ29sb3I6IGFueTtcclxuICBpY29uSHRtbDogc3RyaW5nO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvL01ldGhvZCB1c2VkIHRvIHNob3cgY29uZmlybWF0aW9uIG1vZGFsXHJcbiAgc2hvd01vZGFsKCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKVxyXG4gICAgLy9jaGVjayBmb3Igb3B0aW9ucyB0ZXh0IHZhbHVlc1xyXG4gICAgdGhpcy5zZXRUZXh0VmFsdWVzKCk7XHJcbiAgICAvL3N3ZWV0YWxlcnQgc3R5bGVzLy9cclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLlN0eWxlQ29uZmlybWF0aW9uTW9kZSkge1xyXG4gICAgICBjYXNlIHRoaXMuc3R5bGVTdWNjZXNzOiB7XHJcbiAgICAgICAgdGhpcy5pY29uID0gJ3N1Y2Nlc3MnXHJcbiAgICAgICAgdGhpcy5idG5Db2xvciA9ICcjNTBjZDg5J1xyXG4gICAgICAgIHRoaXMuaWNvbkh0bWwgPSAnPGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT4nXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSB0aGlzLnN0eWxlV2FybmluZzoge1xyXG4gICAgICAgIHRoaXMuaWNvbiA9ICd3YXJuaW5nJ1xyXG4gICAgICAgIHRoaXMuYnRuQ29sb3IgPSAnI2ZmYzcwMCdcclxuICAgICAgICB0aGlzLmljb25IdG1sID0gJzxpIGNsYXNzPVwiZmEgZmEtd2FybmluZ1wiPjwvaT4nXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgdGhpcy5zdHlsZURhbmdlcjoge1xyXG4gICAgICAgIHRoaXMuaWNvbiA9ICdlcnJvcidcclxuICAgICAgICB0aGlzLmJ0bkNvbG9yID0gJyNmMTQxNmMnXHJcbiAgICAgICAgdGhpcy5pY29uSHRtbCA9ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlXCI+PC9pPidcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgIHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkNvbmZpcm1hdGlvbkhlYWRlciksXHJcbiAgICAgIHRleHQ6IHRoaXMub3B0aW9ucy5Db25maXJtYXRpb25Cb2R5LFxyXG4gICAgICBpY29uOiB0aGlzLmljb24sXHJcbiAgICAgIGljb25Db2xvcjogdGhpcy5idG5Db2xvcixcclxuICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiB0aGlzLmJ0bkNvbG9yLFxyXG4gICAgICBjYW5jZWxCdXR0b25Db2xvcjogJyNmNWY4ZmEnLFxyXG4gICAgICBjYW5jZWxCdXR0b25UZXh0OiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKSxcclxuICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMub3B0aW9ucy5TdWJtaXRCdXR0b25UZXh0LFxyXG4gICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0aGlzLm9wdGlvbnMuc2hvd0NhbmNlbEJ1dHRvbixcclxuICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0aGlzLm9wdGlvbnMuc2hvd0Nsb3NlQnV0dG9uLFxyXG4gICAgICBhbGxvd091dHNpZGVDbGljazogZmFsc2VcclxuICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0LmlzQ29uZmlybWVkKSB7XHJcbiAgICAgICAgdGhpcy5zdWJtaXQoKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpXHJcbiAgfVxyXG4gIHByaXZhdGUgc2V0VGV4dFZhbHVlcygpIHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLkNvbmZpcm1hdGlvbkhlYWRlcilcclxuICAgICAgdGhpcy5vcHRpb25zLkNvbmZpcm1hdGlvbkhlYWRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZUNvbmZpcm1hdGlvblwiKTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLkNvbmZpcm1hdGlvbkJvZHkpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5Db25maXJtYXRpb25Cb2R5ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlX1F1ZXN0aW9uXCIpO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuU3VibWl0QnV0dG9uVGV4dClcclxuICAgICAgdGhpcy5vcHRpb25zLlN1Ym1pdEJ1dHRvblRleHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIik7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5TdWNjZXNzTm90aWZpY2F0aW9uTWVzc2FnZSlcclxuICAgICAgdGhpcy5vcHRpb25zLlN1Y2Nlc3NOb3RpZmljYXRpb25NZXNzYWdlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlZFN1Y2Nlc3NmdWxseVwiKTtcclxuICB9XHJcbiAgLy9Nb2RhbCBjb25maXJtYXRpb24gc3VibWl0IGZ1bmN0aW9uXHJcbiAgc3VibWl0KCkge1xyXG4gICAgbGV0IHN1Ym1pdE1vZGVsID0gdGhpcy5vcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbDtcclxuXHJcbiAgICBsZXQgc3VibWl0dGVkU2VydmljZSA9IHRoaXMub3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24uYXBwbHkobnVsbCwgc3VibWl0TW9kZWwpIGFzIE9ic2VydmFibGU8YW55PlxyXG4gICAgc3VibWl0dGVkU2VydmljZS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5EaXNhYmxlTW9kYWxEaXNtaXNzKVxyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5EaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbikge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuU3VjY2Vzc05vdGlmaWNhdGlvbk1lc3NhZ2UpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5TdWNjZXNzTm90aWZpY2F0aW9uTWVzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZWRTdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKHRoaXMub3B0aW9ucy5TdWNjZXNzTm90aWZpY2F0aW9uTWVzc2FnZSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyKVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLk9uU3VjY2Vzc0hhbmRsZXIocmVzdWx0KVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlKSB7XHJcbiAgICAgICAgICBsZXQgcGFnaW5nID0gdGhpcy5vcHRpb25zLlBhZ2luZ1JlZmVyZW5jZTtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID09IFBhZ2luZ0FjdGlvbk1vZGUuUmVpbml0aWFsaXplID8gcGFnaW5nLlJlaW5pdGlhbGl6ZVBhZ2luZygpIDogcGFnaW5nLlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuT25FcnJvckhhbmRsZXIpXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuT25FcnJvckhhbmRsZXIoZXJyb3IpXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xyXG4gICAgaWYgKGVyci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcclxuICAgICAgZXJyb3JNZXNzYWdlID0gYEFuIGVycm9yIG9jY3VycmVkOiAke2Vyci5lcnJvci5tZXNzYWdlfWA7XHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLkRpc2FibGVFcnJvck5vdGlmaWNhdGlvbilcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZSgpXHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAoZXJyLnN0YXR1cyA9PSA0MDEpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL0FkbWluL2FjY291bnQvbG9naW5cIl0pXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChlcnIuc3RhdHVzID09IDUxMCkge1xyXG4gICAgICBlcnJvck1lc3NhZ2UgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpID09IFwiZW5cIiA/IFwiQ2FuIG5vdCBkZWxldGUgdGhpcyBpdGVtIGFzIGl0IGlzIHJlbGF0ZWQgdG8gb3RoZXJzXCIgOiBcItmE2Kcg2YrZhdmD2YYg2K3YsNmBINmH2LDYpyDYp9mE2LnZhti12LEg2YTYo9mG2Ycg2YXYsdiq2KjYtyDYqNi52YbYp9i12LEg2KPYrtix2YlcIjtcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuRGlzYWJsZUVycm9yTm90aWZpY2F0aW9uKVxyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgU2VydmVyIHJldHVybmVkIGNvZGU6ICR7ZXJyLnN0YXR1c30sIGVycm9yIG1lc3NhZ2UgaXM6ICR7ZXJyLm1lc3NhZ2V9YDtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3JNZXNzYWdlKTtcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuRGlzYWJsZUVycm9yTm90aWZpY2F0aW9uKVxyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKClcclxuICAgIH1cclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iLCIiXX0=
|