@bnsights/bbsf-controls 1.0.106 → 1.0.109
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 +11 -0
- package/esm2020/bnsights-bbsf-controls.mjs +5 -0
- package/esm2020/lib/Shared/Components/app-base-component.mjs +226 -0
- package/esm2020/lib/Shared/Components/ng-tag-input.mjs +331 -0
- package/esm2020/lib/Shared/Directives/template-name.directive.mjs +18 -0
- package/{esm2015/lib/Shared/Models/DropdownListItem.js → esm2020/lib/Shared/Models/DropdownListItem.mjs} +1 -1
- package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -0
- package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -0
- package/esm2020/lib/Shared/default_intl.mjs +29 -0
- package/esm2020/lib/Shared/services/ControlUtility.mjs +162 -0
- package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +30 -0
- package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
- package/esm2020/lib/Shared/services/render-component-service.service.mjs +30 -0
- package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +170 -0
- package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +262 -0
- package/esm2020/lib/controls/Calendar/Calendar.component.mjs +173 -0
- package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +117 -0
- package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -0
- package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +223 -0
- package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +194 -0
- package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +447 -0
- package/esm2020/lib/controls/Form/Form.component.mjs +101 -0
- package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +226 -0
- package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
- package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +325 -0
- package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
- package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +429 -0
- package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +428 -0
- package/esm2020/lib/controls/Paging/JwPagination.component.mjs +156 -0
- package/esm2020/lib/controls/Paging/Paging.component.mjs +312 -0
- package/esm2020/lib/controls/Phone/Phone.component.mjs +129 -0
- package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +376 -0
- package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +109 -0
- package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +135 -0
- package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +125 -0
- package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -0
- package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -0
- package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -0
- package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +277 -0
- package/esm2020/lib/controls/TextArea/TextArea.component.mjs +196 -0
- package/esm2020/lib/controls/TextBox/TextBox.component.mjs +312 -0
- package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +90 -0
- package/esm2020/lib/controls/bbsf-controls.module.mjs +361 -0
- package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +37 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -2
- package/fesm2015/{bnsights-bbsf-controls.js → bnsights-bbsf-controls.mjs} +2214 -2111
- package/fesm2015/bnsights-bbsf-controls.mjs.map +1 -0
- package/fesm2020/bnsights-bbsf-controls.mjs +9098 -0
- package/fesm2020/bnsights-bbsf-controls.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/Shared/Components/app-base-component.d.ts +7 -0
- package/lib/Shared/Components/ng-tag-input.d.ts +4 -1
- package/lib/Shared/Directives/template-name.directive.d.ts +3 -0
- package/lib/Shared/Models/DropdownListItem.d.ts +2 -2
- package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +3 -0
- package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +3 -0
- package/lib/Shared/default_intl.d.ts +3 -0
- package/lib/Shared/services/ControlUtility.d.ts +3 -0
- package/lib/Shared/services/GlobalSettings.service.d.ts +3 -0
- package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +3 -0
- package/lib/Shared/services/render-component-service.service.d.ts +3 -0
- package/lib/Shared/services/validationErrorMassage.service.d.ts +4 -3
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +3 -0
- package/lib/controls/Calendar/Calendar.component.d.ts +3 -0
- package/lib/controls/CheckBox/CheckBox.component.d.ts +3 -0
- package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +3 -0
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +3 -0
- package/lib/controls/DropdownList/DropdownList.component.d.ts +5 -0
- package/lib/controls/FileUplaod/FileUplaod.component.d.ts +3 -0
- package/lib/controls/Form/Form.component.d.ts +3 -0
- package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +3 -0
- package/lib/controls/ImageUpload/ImageUpload.component.d.ts +3 -0
- package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +3 -0
- package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +3 -0
- package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +3 -0
- package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +3 -0
- package/lib/controls/Paging/JwPagination.component.d.ts +3 -0
- package/lib/controls/Paging/Paging.component.d.ts +3 -0
- package/lib/controls/Phone/Phone.component.d.ts +3 -0
- package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +3 -0
- package/lib/controls/RadioButton/RadioButton.component.d.ts +3 -0
- package/lib/controls/Recaptcha/Recaptcha.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater/repeater.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +3 -0
- package/lib/controls/TagsInput/TagsInput.component.d.ts +3 -0
- package/lib/controls/TextArea/TextArea.component.d.ts +3 -0
- package/lib/controls/TextBox/TextBox.component.d.ts +3 -0
- package/lib/controls/Toggleslide/toggleslide.component.d.ts +3 -0
- package/lib/controls/bbsf-controls.module.d.ts +71 -4
- package/lib/controls/page-header-component/page-header-component.component.d.ts +3 -0
- package/package.json +44 -48
- package/public-api.d.ts +1 -1
- package/bnsights-bbsf-controls-1.0.106.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/HtmlEditor/HtmlEditor.component.js +0 -226
- 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
- /package/{esm2015/lib/Shared/Enums/CalendarView.js → esm2020/lib/Shared/Enums/CalendarView.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/ControlLayout.js → esm2020/lib/Shared/Enums/ControlLayout.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Countries.js → esm2020/lib/Shared/Enums/Countries.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Enums.js → esm2020/lib/Shared/Enums/Enums.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/FileType.js → esm2020/lib/Shared/Enums/FileType.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/FilterType.js → esm2020/lib/Shared/Enums/FilterType.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/FontSize.js → esm2020/lib/Shared/Enums/FontSize.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/ForceDirection.js → esm2020/lib/Shared/Enums/ForceDirection.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/IconPosition.js → esm2020/lib/Shared/Enums/IconPosition.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/ImageType.js → esm2020/lib/Shared/Enums/ImageType.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/InputType.js → esm2020/lib/Shared/Enums/InputType.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Insert.js → esm2020/lib/Shared/Enums/Insert.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/LanguageMode.js → esm2020/lib/Shared/Enums/LanguageMode.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/LanguageValidation.js → esm2020/lib/Shared/Enums/LanguageValidation.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Misc.js → esm2020/lib/Shared/Enums/Misc.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/PagingActionMode.js → esm2020/lib/Shared/Enums/PagingActionMode.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Para.js → esm2020/lib/Shared/Enums/Para.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/PickerType.js → esm2020/lib/Shared/Enums/PickerType.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/SelectMode.js → esm2020/lib/Shared/Enums/SelectMode.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/StartView.js → esm2020/lib/Shared/Enums/StartView.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/Style.js → esm2020/lib/Shared/Enums/Style.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/StyleConfirmationMode.js → esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/TagInputView.js → esm2020/lib/Shared/Enums/TagInputView.mjs} +0 -0
- /package/{esm2015/lib/Shared/Enums/menu-list-enum.js → esm2020/lib/Shared/Enums/menu-list-enum.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/Attribute.js → esm2020/lib/Shared/Models/Attribute.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/AutocompleteDTO.js → esm2020/lib/Shared/Models/AutocompleteDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/AutocompleteOptions.js → esm2020/lib/Shared/Models/AutocompleteOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CalendarEventDTO.js → esm2020/lib/Shared/Models/CalendarEventDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CalendarOptions.js → esm2020/lib/Shared/Models/CalendarOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CancelDTO.js → esm2020/lib/Shared/Models/CancelDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CaptchaStyle.js → esm2020/lib/Shared/Models/CaptchaStyle.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CheckBoxOptions.js → esm2020/lib/Shared/Models/CheckBoxOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ConfirmationModalOptions.js → esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ControlOptionsBase.js → esm2020/lib/Shared/Models/ControlOptionsBase.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/CustomValidation.js → esm2020/lib/Shared/Models/CustomValidation.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/DropdownOptions.js → esm2020/lib/Shared/Models/DropdownOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/EditPersonalImage.js → esm2020/lib/Shared/Models/EditPersonalImage.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/EnglishArabicDTO.js → esm2020/lib/Shared/Models/EnglishArabicDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/FileDTO.js → esm2020/lib/Shared/Models/FileDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/FileUploadModel.js → esm2020/lib/Shared/Models/FileUploadModel.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/FileUploadOptions.js → esm2020/lib/Shared/Models/FileUploadOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/FilterItem.js → esm2020/lib/Shared/Models/FilterItem.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/FormOptions.js → esm2020/lib/Shared/Models/FormOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/HtmlEditorOptions.js → esm2020/lib/Shared/Models/HtmlEditorOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ImageUploadOptions.js → esm2020/lib/Shared/Models/ImageUploadOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MapAutoCompleteOptions.js → esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MapAutocompleteDTO.js → esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js → esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js → esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js → esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js → esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/MultipleFileUploadModel.js → esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/PagingDTO.js → esm2020/lib/Shared/Models/PagingDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/PagingOptions.js → esm2020/lib/Shared/Models/PagingOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/PagingPayload.js → esm2020/lib/Shared/Models/PagingPayload.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/PhoneOptions.js → esm2020/lib/Shared/Models/PhoneOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ProfileImageUploadOptions.js → esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ProfilePictureDTO.js → esm2020/lib/Shared/Models/ProfilePictureDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RadioButtonItem.js → esm2020/lib/Shared/Models/RadioButtonItem.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RadioButtonOptions.js → esm2020/lib/Shared/Models/RadioButtonOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RangeNumber.js → esm2020/lib/Shared/Models/RangeNumber.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/Recaptcha.js → esm2020/lib/Shared/Models/Recaptcha.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RecaptchaOptions.js → esm2020/lib/Shared/Models/RecaptchaOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RepeaterField.js → esm2020/lib/Shared/Models/RepeaterField.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/RepeaterOptions.js → esm2020/lib/Shared/Models/RepeaterOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/SaveDTO.js → esm2020/lib/Shared/Models/SaveDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/TagsInputDTO.js → esm2020/lib/Shared/Models/TagsInputDTO.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/TagsInputOptions.js → esm2020/lib/Shared/Models/TagsInputOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/TextAreaOptions.js → esm2020/lib/Shared/Models/TextAreaOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/TextBoxOptions.js → esm2020/lib/Shared/Models/TextBoxOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/ToggleslideOptions.js → esm2020/lib/Shared/Models/ToggleslideOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/UploadPersonalImage.js → esm2020/lib/Shared/Models/UploadPersonalImage.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/bread-crumb.js → esm2020/lib/Shared/Models/bread-crumb.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/control-filter-Item.js → esm2020/lib/Shared/Models/control-filter-Item.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/datePickerOptions.js → esm2020/lib/Shared/Models/datePickerOptions.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/filter-options.js → esm2020/lib/Shared/Models/filter-options.mjs} +0 -0
- /package/{esm2015/lib/Shared/Models/page-header-options.js → esm2020/lib/Shared/Models/page-header-options.mjs} +0 -0
- /package/{esm2015/lib/Shared/config/environment.js → esm2020/lib/Shared/config/environment.mjs} +0 -0
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { Component, Input, EventEmitter, Output } from '@angular/core';
|
|
2
|
-
import { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
3
|
-
import { ControlValidationService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';
|
|
4
|
-
import { PagingActionMode } from '../../Shared/Enums/PagingActionMode';
|
|
5
|
-
import { ControlUtility } from '../../Shared/services/ControlUtility';
|
|
6
|
-
import { Router } from '@angular/router';
|
|
7
|
-
export class FormComponent {
|
|
8
|
-
constructor(controlUtility, utilityService, controlValidationService, modalService, ngbActiveModal, router) {
|
|
9
|
-
this.controlUtility = controlUtility;
|
|
10
|
-
this.utilityService = utilityService;
|
|
11
|
-
this.controlValidationService = controlValidationService;
|
|
12
|
-
this.modalService = modalService;
|
|
13
|
-
this.ngbActiveModal = ngbActiveModal;
|
|
14
|
-
this.router = router;
|
|
15
|
-
this.isChange = null;
|
|
16
|
-
this.OnChange = new EventEmitter();
|
|
17
|
-
}
|
|
18
|
-
ngOnInit() {
|
|
19
|
-
this.fromName = this.randomString(5);
|
|
20
|
-
}
|
|
21
|
-
ngAfterViewInit() {
|
|
22
|
-
this.options.FormGroup.valueChanges.subscribe((es) => {
|
|
23
|
-
this.OnChange.emit(true);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
submit() {
|
|
27
|
-
this.options.FormGroup.markAllAsTouched();
|
|
28
|
-
if (this.options.FormGroup.invalid) {
|
|
29
|
-
this.showGlobalError();
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
let submitModel = this.options.GetModelFunction();
|
|
34
|
-
let submittedService = this.options.ServiceSubmitFunction.apply(null, submitModel);
|
|
35
|
-
submittedService.subscribe((result) => {
|
|
36
|
-
if (!this.options.DisableModalDismiss) {
|
|
37
|
-
//Dismiss closest modal of the form only
|
|
38
|
-
let modal = document.getElementById(this.fromName).closest('.modal.show');
|
|
39
|
-
if (modal) {
|
|
40
|
-
let closeButton = modal.querySelector("[data-dismiss='modal']");
|
|
41
|
-
closeButton.click();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
if (!this.options.DisableSuccessNotification)
|
|
45
|
-
this.utilityService.notifySuccessMessage();
|
|
46
|
-
if (this.options.OnSuccessHandler)
|
|
47
|
-
this.options.OnSuccessHandler(result);
|
|
48
|
-
if (!this.options.DisableBlockUI)
|
|
49
|
-
this.utilityService.stopBlockUI();
|
|
50
|
-
if (this.options.PagingReference) {
|
|
51
|
-
let paging = this.options.PagingReference;
|
|
52
|
-
this.options.PagingActionMode == PagingActionMode.Reinitialize ? paging.ReinitializePaging() : paging.UpdatePaging();
|
|
53
|
-
}
|
|
54
|
-
}, (error) => {
|
|
55
|
-
if (this.options.OnErrorHandler)
|
|
56
|
-
this.options.OnErrorHandler(error);
|
|
57
|
-
else
|
|
58
|
-
this.handleError(error);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
handleError(err) {
|
|
63
|
-
let errorMessage = '';
|
|
64
|
-
if (err.error instanceof ErrorEvent) {
|
|
65
|
-
errorMessage = `An error occurred: ${err.error.message}`;
|
|
66
|
-
if (!this.options.DisableErrorNotification)
|
|
67
|
-
this.utilityService.notifyErrorMessage();
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
this.controlValidationService.renderServerErrors(this.options.FormGroup, err, new RequestOptionsModel(), this.fromName);
|
|
71
|
-
}
|
|
72
|
-
if (!this.options.DisableBlockUI)
|
|
73
|
-
this.utilityService.stopBlockUI();
|
|
74
|
-
}
|
|
75
|
-
showGlobalError() {
|
|
76
|
-
this.controlUtility.showGlobalError(this.fromName);
|
|
77
|
-
}
|
|
78
|
-
randomString(length) {
|
|
79
|
-
var randomChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
80
|
-
var result = '';
|
|
81
|
-
for (var i = 0; i < length; i++) {
|
|
82
|
-
result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));
|
|
83
|
-
}
|
|
84
|
-
return result;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
FormComponent.decorators = [
|
|
88
|
-
{ type: Component, args: [{
|
|
89
|
-
// tslint:disable-next-line: component-selector
|
|
90
|
-
selector: 'BBSF-Form',
|
|
91
|
-
template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.FormGroup\" (ngSubmit)=\"submit()\">\r\n\r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form>\r\n"
|
|
92
|
-
},] }
|
|
93
|
-
];
|
|
94
|
-
FormComponent.ctorParameters = () => [
|
|
95
|
-
{ type: ControlUtility },
|
|
96
|
-
{ type: UtilityService },
|
|
97
|
-
{ type: ControlValidationService },
|
|
98
|
-
{ type: NgbModal },
|
|
99
|
-
{ type: NgbActiveModal },
|
|
100
|
-
{ type: Router }
|
|
101
|
-
];
|
|
102
|
-
FormComponent.propDecorators = {
|
|
103
|
-
OnChange: [{ type: Output }],
|
|
104
|
-
options: [{ type: Input }]
|
|
105
|
-
};
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvRm9ybS9Gb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFPekMsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFBb0IsY0FBOEIsRUFBVSxjQUE4QixFQUFVLHdCQUFrRCxFQUFVLFlBQXNCLEVBQVUsY0FBOEIsRUFBVSxNQUFjO1FBQWxPLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFIdFAsYUFBUSxHQUFZLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBSXhDLENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RD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QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxtQkFBbUIsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUN4SDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7WUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNwRCxDQUFDO0lBQ0QsWUFBWSxDQUFDLE1BQU07UUFDakIsSUFBSSxXQUFXLEdBQUcsZ0VBQWdFLENBQUM7UUFDbkYsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0IsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDOUU7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs7WUEzRkYsU0FBUyxTQUFDO2dCQUNULCtDQUErQztnQkFDL0MsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLDJQQUFvQzthQUNyQzs7O1lBUFEsY0FBYztZQUxpQyxjQUFjO1lBQTdELHdCQUF3QjtZQURSLFFBQVE7WUFBeEIsY0FBYztZQU9kLE1BQU07Ozt1QkFXWixNQUFNO3NCQUtOLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9QYWdpbmdBY3Rpb25Nb2RlJztcclxuaW1wb3J0IHsgRm9ybU9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0Zvcm1PcHRpb25zJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1Gb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vRm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZnJvbU5hbWU6IHN0cmluZztcclxuICBpc0NoYW5nZTogYm9vbGVhbiA9IG51bGw7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBuZ2JBY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgKSB7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IEZvcm1PcHRpb25zO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZnJvbU5hbWUgPSB0aGlzLnJhbmRvbVN0cmluZyg1KVxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wdGlvbnMuRm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGVzKSA9PiB7XHJcbiAgICAgIHRoaXMuT25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMub3B0aW9ucy5Gb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkZvcm1Hcm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcblxyXG4gICAgICBsZXQgc3VibWl0TW9kZWwgPSB0aGlzLm9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbigpIGFzIGFueVtdXHJcbiAgICAgIGxldCBzdWJtaXR0ZWRTZXJ2aWNlID0gdGhpcy5vcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbi5hcHBseShudWxsLCBzdWJtaXRNb2RlbCkgYXMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICAgIHN1Ym1pdHRlZFNlcnZpY2Uuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLkRpc2FibGVNb2RhbERpc21pc3MpIHtcclxuICAgICAgICAgICAgLy9EaXNtaXNzIGNsb3Nlc3QgbW9kYWwgb2YgdGhlIGZvcm0gb25seVxyXG4gICAgICAgICAgICBsZXQgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZyb21OYW1lKS5jbG9zZXN0KCcubW9kYWwuc2hvdycpO1xyXG4gICAgICAgICAgICBpZiAobW9kYWwpIHtcclxuICAgICAgICAgICAgICBsZXQgY2xvc2VCdXR0b24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiW2RhdGEtZGlzbWlzcz0nbW9kYWwnXVwiKSBhcyBhbnlcclxuICAgICAgICAgICAgICBjbG9zZUJ1dHRvbi5jbGljaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5EaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbilcclxuICAgICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZSgpXHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLk9uU3VjY2Vzc0hhbmRsZXIpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyKHJlc3VsdClcclxuICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLkRpc2FibGVCbG9ja1VJKVxyXG4gICAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSkge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gdGhpcy5vcHRpb25zLlBhZ2luZ1JlZmVyZW5jZTtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPT0gUGFnaW5nQWN0aW9uTW9kZS5SZWluaXRpYWxpemUgPyBwYWdpbmcuUmVpbml0aWFsaXplUGFnaW5nKCkgOiBwYWdpbmcuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLk9uRXJyb3JIYW5kbGVyKVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuT25FcnJvckhhbmRsZXIoZXJyb3IpXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICBsZXQgZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgICBpZiAoZXJyLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3Igb2NjdXJyZWQ6ICR7ZXJyLmVycm9yLm1lc3NhZ2V9YDtcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuRGlzYWJsZUVycm9yTm90aWZpY2F0aW9uKVxyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW5kZXJTZXJ2ZXJFcnJvcnModGhpcy5vcHRpb25zLkZvcm1Hcm91cCwgZXJyLCBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpLCB0aGlzLmZyb21OYW1lKVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuRGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKHRoaXMuZnJvbU5hbWUpXHJcbiAgfVxyXG4gIHJhbmRvbVN0cmluZyhsZW5ndGgpIHtcclxuICAgIHZhciByYW5kb21DaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XHJcbiAgICB2YXIgcmVzdWx0ID0gJyc7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHJlc3VsdCArPSByYW5kb21DaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcmFuZG9tQ2hhcnMubGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG4iXX0=
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Optional, NgZone, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { FormControl, Validators, ControlContainer, FormGroupDirective } from '@angular/forms';
|
|
3
|
-
import { ControlUtility } from '../../Shared/services/ControlUtility';
|
|
4
|
-
import { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';
|
|
5
|
-
import { GlobalSettings } from '../../Shared/services/GlobalSettings.service';
|
|
6
|
-
export class HtmlEditorComponent {
|
|
7
|
-
constructor(zone, controlUtility, controlContainer, HtmlEditorControlHost, UtilityService, controlValidationService, globalSettings) {
|
|
8
|
-
this.zone = zone;
|
|
9
|
-
this.controlUtility = controlUtility;
|
|
10
|
-
this.controlContainer = controlContainer;
|
|
11
|
-
this.HtmlEditorControlHost = HtmlEditorControlHost;
|
|
12
|
-
this.UtilityService = UtilityService;
|
|
13
|
-
this.controlValidationService = controlValidationService;
|
|
14
|
-
this.globalSettings = globalSettings;
|
|
15
|
-
this.OnChange = new EventEmitter();
|
|
16
|
-
this.WordCount = 0;
|
|
17
|
-
this.WordCountArray = 0;
|
|
18
|
-
this.markAllAsTouched = false;
|
|
19
|
-
this.validationRules = [];
|
|
20
|
-
this.validationRulesasync = [];
|
|
21
|
-
this.resetError = () => {
|
|
22
|
-
this.controlValidationService.RemoveGlobalError();
|
|
23
|
-
};
|
|
24
|
-
//External Method
|
|
25
|
-
this.RemoveRequiredValidation = () => {
|
|
26
|
-
this.controlUtility.RemoveRequiredValidation(this.HtmlEditorFormControl, this.validationRules, this.options);
|
|
27
|
-
};
|
|
28
|
-
//External Method
|
|
29
|
-
this.AddRequiredValidation = () => {
|
|
30
|
-
this.controlUtility.AddRequiredValidation(this.HtmlEditorFormControl, this.validationRules, this.options);
|
|
31
|
-
};
|
|
32
|
-
//External Method
|
|
33
|
-
this.RemoveCustomValidation = (CustomValidation) => {
|
|
34
|
-
this.controlUtility.RemoveCustomValidation(this.HtmlEditorFormControl, this.validationRules, CustomValidation);
|
|
35
|
-
};
|
|
36
|
-
//External Method
|
|
37
|
-
this.AddCustomValidation = (CustomValidation) => {
|
|
38
|
-
this.controlUtility.AddCustomValidation(this.HtmlEditorFormControl, this.validationRules, CustomValidation);
|
|
39
|
-
};
|
|
40
|
-
//External Method
|
|
41
|
-
this.IsValid = () => {
|
|
42
|
-
this.controlUtility.IsValid(this.HtmlEditorFormControl);
|
|
43
|
-
};
|
|
44
|
-
HtmlEditorComponent.controlContainerstatic = this.controlContainer;
|
|
45
|
-
}
|
|
46
|
-
ngOnInit() {
|
|
47
|
-
if (this.options.ForceDirection)
|
|
48
|
-
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
49
|
-
else
|
|
50
|
-
this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
|
|
51
|
-
this.editorConfig = {
|
|
52
|
-
editable: !this.options.IsDisabled,
|
|
53
|
-
spellcheck: true,
|
|
54
|
-
height: `${this.options.Height}rem`,
|
|
55
|
-
minHeight: `${this.options.Height}rem`,
|
|
56
|
-
maxHeight: 'auto',
|
|
57
|
-
width: 'auto',
|
|
58
|
-
minWidth: 'auto',
|
|
59
|
-
translate: 'yes',
|
|
60
|
-
enableToolbar: true,
|
|
61
|
-
showToolbar: true,
|
|
62
|
-
placeholder: this.options.Placeholder,
|
|
63
|
-
defaultParagraphSeparator: '',
|
|
64
|
-
defaultFontName: '',
|
|
65
|
-
defaultFontSize: '',
|
|
66
|
-
fonts: [
|
|
67
|
-
{ class: 'arial', name: 'Arial' },
|
|
68
|
-
{ class: 'times-new-roman', name: 'Times New Roman' },
|
|
69
|
-
{ class: 'calibri', name: 'Calibri' },
|
|
70
|
-
{ class: 'comic-sans-ms', name: 'Comic Sans MS' }
|
|
71
|
-
],
|
|
72
|
-
customClasses: [
|
|
73
|
-
{
|
|
74
|
-
name: 'quote',
|
|
75
|
-
class: 'quote',
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
name: 'redText',
|
|
79
|
-
class: 'redText'
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
name: 'titleText',
|
|
83
|
-
class: 'titleText',
|
|
84
|
-
tag: 'h1',
|
|
85
|
-
},
|
|
86
|
-
],
|
|
87
|
-
uploadUrl: 'v1/image',
|
|
88
|
-
uploadWithCredentials: false,
|
|
89
|
-
sanitize: false,
|
|
90
|
-
toolbarPosition: 'top',
|
|
91
|
-
toolbarHiddenButtons: [
|
|
92
|
-
[
|
|
93
|
-
'link',
|
|
94
|
-
'unlink',
|
|
95
|
-
'insertImage',
|
|
96
|
-
'insertVideo',
|
|
97
|
-
'insertHorizontalRule',
|
|
98
|
-
]
|
|
99
|
-
]
|
|
100
|
-
};
|
|
101
|
-
this.controlValidationService.isCreatedBefor = false;
|
|
102
|
-
// this.miscList = this.options.ToolsList_Misc != null ? this.options.ToolsList_Misc : ['codeview', 'undo', 'redo'];
|
|
103
|
-
// this.styleList = this.options.ToolsList_Style != null ? this.options.ToolsList_Style : ['bold', 'italic', 'underline', 'clear']
|
|
104
|
-
// this.fontsizeList = this.options.ToolsList_FontSize != null ? this.options.ToolsList_FontSize : ['fontname', 'fontsize', 'color']
|
|
105
|
-
// this.paraList = this.options.ToolsList_Para != null ? this.options.ToolsList_Para : ['style', 'ul', 'ol', 'paragraph', 'height']
|
|
106
|
-
// this.insertList = this.options.ToolsList_Insert != null ? this.options.ToolsList_Insert : ['table', 'picture', 'link', 'video', 'hr']
|
|
107
|
-
// this.Config = {
|
|
108
|
-
// callbacks: {
|
|
109
|
-
// // onChange: (e) => {
|
|
110
|
-
// // this.zone.run(() => {
|
|
111
|
-
// // this.onTextChange();
|
|
112
|
-
// // });
|
|
113
|
-
// // },
|
|
114
|
-
// // onKeyup: (e) => {
|
|
115
|
-
// // this.zone.run(() => {
|
|
116
|
-
// // ;
|
|
117
|
-
// // this.onTextChange();
|
|
118
|
-
// // });
|
|
119
|
-
// // },
|
|
120
|
-
// // onKeydown: (e) => {
|
|
121
|
-
// // this.zone.run(() => {
|
|
122
|
-
// // ;
|
|
123
|
-
// // if (this.WordCountArray > this.options.MaxWordCount && e.keyCode != 8) {
|
|
124
|
-
// // e.preventDefault();
|
|
125
|
-
// // }
|
|
126
|
-
// // });
|
|
127
|
-
// // }
|
|
128
|
-
// },
|
|
129
|
-
// placeholder: this.options.Placeholder,
|
|
130
|
-
// height: `${this.options.Height}px`,
|
|
131
|
-
// toolbar: [
|
|
132
|
-
// ['misc', this.miscList],
|
|
133
|
-
// ['style', this.styleList],
|
|
134
|
-
// ['fontsize', this.fontsizeList],
|
|
135
|
-
// ['para', this.paraList],
|
|
136
|
-
// ['insert', this.insertList]
|
|
137
|
-
// ],
|
|
138
|
-
// fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']
|
|
139
|
-
// }
|
|
140
|
-
this.group.addControl(this.options.Name, new FormControl(''));
|
|
141
|
-
this.HtmlEditorFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
142
|
-
this.HtmlEditorFormControl.setValue(this.options.Value);
|
|
143
|
-
if (!this.options.ViewType)
|
|
144
|
-
this.options.ViewType = this.globalSettings.ViewType;
|
|
145
|
-
if (this.options.CustomValidation.length > 0) {
|
|
146
|
-
let Validations = this.options.CustomValidation;
|
|
147
|
-
for (let index = 0; index < Validations.length; index++) {
|
|
148
|
-
const Validation = Validations[index];
|
|
149
|
-
this.validationRules.push(Validation.functionBody);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
if (this.options.LabelKey != null && this.options.LabelKey != "")
|
|
153
|
-
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
154
|
-
if (this.options.MinLength > 0) {
|
|
155
|
-
this.validationRules.push(Validators.minLength(this.options.MinLength));
|
|
156
|
-
}
|
|
157
|
-
if (this.options.MaxLength > 0) {
|
|
158
|
-
this.validationRules.push(Validators.maxLength(this.options.MaxLength));
|
|
159
|
-
}
|
|
160
|
-
if (this.options.IsRequired) {
|
|
161
|
-
this.validationRules.push(Validators.required);
|
|
162
|
-
}
|
|
163
|
-
this.HtmlEditorFormControl.setValidators(this.validationRules);
|
|
164
|
-
this.HtmlEditorFormControl.setAsyncValidators(this.validationRulesasync);
|
|
165
|
-
if (this.options.IsDisabled) {
|
|
166
|
-
this.HtmlEditorFormControl.disable();
|
|
167
|
-
}
|
|
168
|
-
this.HtmlEditorControlHost.ngSubmit.subscribe((value) => {
|
|
169
|
-
this.group.markAllAsTouched();
|
|
170
|
-
this.markAllAsTouched = true;
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
ngAfterViewChecked() {
|
|
174
|
-
if (this.options.AttributeList != null) {
|
|
175
|
-
var element = document.getElementById(this.options.Name);
|
|
176
|
-
for (let index = 0; index < this.options.AttributeList.length; index++) {
|
|
177
|
-
element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);
|
|
178
|
-
}
|
|
179
|
-
let angularEditor = document.getElementsByClassName("angular-editor-toolbar ng-star-inserted")[0];
|
|
180
|
-
let dir = this.UtilityService.getCurrentLanguage() == "en" ? "ltr" : "rtl";
|
|
181
|
-
angularEditor.setAttribute("dir", dir);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
showGlobalError() {
|
|
185
|
-
this.controlUtility.showGlobalError();
|
|
186
|
-
}
|
|
187
|
-
getErrorValidation(ErrorList) {
|
|
188
|
-
if (this.markAllAsTouched && this.group.invalid) {
|
|
189
|
-
this.showGlobalError();
|
|
190
|
-
this.markAllAsTouched = false;
|
|
191
|
-
}
|
|
192
|
-
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
193
|
-
}
|
|
194
|
-
onValueChanged() {
|
|
195
|
-
this.HtmlEditorFormControl.setValue(this.HtmlEditorFormControl.value.trim());
|
|
196
|
-
let originalValue = this.controlUtility.trimControlValue(this.HtmlEditorFormControl.value);
|
|
197
|
-
if (this.options.PatchFunction && this.options.PatchPath && this.HtmlEditorFormControl.valid) {
|
|
198
|
-
this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
|
|
199
|
-
}
|
|
200
|
-
//Use this line to enable two way binding.
|
|
201
|
-
this.options.Value = originalValue;
|
|
202
|
-
this.OnChange.emit(originalValue);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
HtmlEditorComponent.controlContainerstatic = null;
|
|
206
|
-
HtmlEditorComponent.decorators = [
|
|
207
|
-
{ type: Component, args: [{
|
|
208
|
-
selector: 'BBSF-HtmlEditor',
|
|
209
|
-
template: "\r\n<div class=\"form-group bbsf-control bbsf-htmleditor\" [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 <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\">\r\n <angular-editor\r\n (change)=\"onValueChanged()\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" formControlName=\"{{options.Name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\r\n </div>\r\n\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\" [innerHTML]=\"options.Value\"></span>\r\n\r\n </div>\r\n <div class=\"subtext-container\">\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=\"(HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(HtmlEditorFormControl.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"
|
|
210
|
-
},] }
|
|
211
|
-
];
|
|
212
|
-
HtmlEditorComponent.ctorParameters = () => [
|
|
213
|
-
{ type: NgZone },
|
|
214
|
-
{ type: ControlUtility },
|
|
215
|
-
{ type: ControlContainer, decorators: [{ type: Optional }] },
|
|
216
|
-
{ type: FormGroupDirective },
|
|
217
|
-
{ type: UtilityService },
|
|
218
|
-
{ type: ControlValidationService },
|
|
219
|
-
{ type: GlobalSettings }
|
|
220
|
-
];
|
|
221
|
-
HtmlEditorComponent.propDecorators = {
|
|
222
|
-
group: [{ type: Input }],
|
|
223
|
-
options: [{ type: Input }],
|
|
224
|
-
OnChange: [{ type: Output }]
|
|
225
|
-
};
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHRtbEVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvSHRtbEVkaXRvci9IdG1sRWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQThCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFPOUUsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QixZQUFvQixJQUFZLEVBQVUsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQ3ZILHFCQUF5QyxFQUFVLGNBQThCLEVBQ2hGLHdCQUFrRCxFQUFVLGNBQThCO1FBRmhGLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN2SCwwQkFBcUIsR0FBckIscUJBQXFCLENBQW9CO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2hGLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFLMUYsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUMzQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFPbEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBa0sxQixlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BELENBQUMsQ0FBQTtRQTBCRCxpQkFBaUI7UUFFakIsNkJBQXdCLEdBQUcsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlHLENBQUMsQ0FBQTtRQUNELGlCQUFpQjtRQUVqQiwwQkFBcUIsR0FBRyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDM0csQ0FBQyxDQUFBO1FBR0QsaUJBQWlCO1FBQ2pCLDJCQUFzQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUE7UUFDaEgsQ0FBQyxDQUFBO1FBQ0QsaUJBQWlCO1FBQ2pCLHdCQUFtQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUE7UUFDN0csQ0FBQyxDQUFBO1FBRUQsaUJBQWlCO1FBQ2pCLFlBQU8sR0FBRyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQTtRQUN6RCxDQUFDLENBQUE7UUF0T0MsbUJBQW1CLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ3JFLENBQUM7SUFrQkQsUUFBUTtRQUNOLElBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO1lBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQSxLQUFLLENBQUEsQ0FBQyxDQUFBLEtBQUssQ0FBQzs7WUFFeEQsSUFBSSxDQUFDLE9BQU8sR0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFFLElBQUksQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFBLENBQUMsQ0FBQSxLQUFLLENBQUM7UUFDaEUsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNoQixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFDbEMsVUFBVSxFQUFFLElBQUk7WUFDaEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUs7WUFDbkMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUs7WUFDdEMsU0FBUyxFQUFHLE1BQU07WUFDbEIsS0FBSyxFQUFFLE1BQU07WUFDYixRQUFRLEVBQUUsTUFBTTtZQUNoQixTQUFTLEVBQUUsS0FBSztZQUNoQixhQUFhLEVBQUUsSUFBSTtZQUNuQixXQUFXLEVBQUUsSUFBSTtZQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ3JDLHlCQUF5QixFQUFFLEVBQUU7WUFDN0IsZUFBZSxFQUFFLEVBQUU7WUFDbkIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsS0FBSyxFQUFFO2dCQUNMLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDO2dCQUMvQixFQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUM7Z0JBQ25ELEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDO2dCQUNuQyxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBQzthQUNoRDtZQUNELGFBQWEsRUFBRTtnQkFDZjtvQkFDRSxJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUUsT0FBTztpQkFDZjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixLQUFLLEVBQUUsU0FBUztpQkFDakI7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLEtBQUssRUFBRSxXQUFXO29CQUNsQixHQUFHLEVBQUUsSUFBSTtpQkFDVjthQUNGO1lBQ0QsU0FBUyxFQUFFLFVBQVU7WUFDckIscUJBQXFCLEVBQUUsS0FBSztZQUM1QixRQUFRLEVBQUUsS0FBSztZQUNmLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLG9CQUFvQixFQUFFO2dCQUNwQjtvQkFDRSxNQUFNO29CQUNOLFFBQVE7b0JBQ1IsYUFBYTtvQkFDYixhQUFhO29CQUNiLHNCQUFzQjtpQkFDdkI7YUFDRjtTQUNKLENBQUM7UUFDRixJQUFJLENBQUMsd0JBQXdCLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQTtRQUNsRCxvSEFBb0g7UUFDcEgsa0lBQWtJO1FBQ2xJLG9JQUFvSTtRQUNwSSxtSUFBbUk7UUFDbkksd0lBQXdJO1FBRXhJLGtCQUFrQjtRQUNsQixpQkFBaUI7UUFDakIsNEJBQTRCO1FBRTVCLG1DQUFtQztRQUNuQyxzQ0FBc0M7UUFDdEMsaUJBQWlCO1FBQ2pCLFlBQVk7UUFDWiwyQkFBMkI7UUFDM0IsbUNBQW1DO1FBQ25DLG9CQUFvQjtRQUNwQixzQ0FBc0M7UUFDdEMsaUJBQWlCO1FBQ2pCLFlBQVk7UUFDWiw2QkFBNkI7UUFDN0IsbUNBQW1DO1FBQ25DLG9CQUFvQjtRQUNwQiwwRkFBMEY7UUFDMUYseUNBQXlDO1FBQ3pDLG1CQUFtQjtRQUVuQixpQkFBaUI7UUFDakIsV0FBVztRQUNYLE9BQU87UUFDUCwyQ0FBMkM7UUFDM0Msd0NBQXdDO1FBQ3hDLGVBQWU7UUFDZiwrQkFBK0I7UUFDL0IsaUNBQWlDO1FBQ2pDLHVDQUF1QztRQUN2QywrQkFBK0I7UUFDL0Isa0NBQWtDO1FBQ2xDLE9BQU87UUFDUCx3R0FBd0c7UUFFeEcsSUFBSTtRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx3Q0FBd0M7UUFDN0csSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFFdkQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQTtZQUMvQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdkQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDcEQ7U0FFRjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUU7WUFDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSXhGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDekU7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoRDtRQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6RSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQzNCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN0QztRQUVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFFSixDQUFDO0lBR0Qsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ3RDLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN0RSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0RztZQUVELElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2pHLElBQUksR0FBRyxHQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsSUFBRSxJQUFJLENBQUEsQ0FBQyxDQUFBLEtBQUssQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFBO1lBQ25FLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1NBRXZDO0lBR0gsQ0FBQztJQU9ELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxTQUFTO1FBQzFCLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQy9DLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtZQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFBO1NBQzlCO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRTtZQUM1RixJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQ3hHO1FBQ0QsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFDLGFBQWEsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUNuQyxDQUFDOztBQS9NTSwwQ0FBc0IsR0FBRyxJQUFJLENBQUM7O1lBUHRDLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixtdERBQTBDO2FBQzNDOzs7WUFacUQsTUFBTTtZQUVuRCxjQUFjO1lBRHVDLGdCQUFnQix1QkFnQkQsUUFBUTtZQWhCTCxrQkFBa0I7WUFJL0QsY0FBYztZQUF4Qyx3QkFBd0I7WUFDeEIsY0FBYzs7O29CQWdCcEIsS0FBSztzQkFDTCxLQUFLO3VCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBOZ1pvbmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9IdG1sRWRpdG9yT3B0aW9ucyc7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb25maWcgfSBmcm9tICdAa29sa292L2FuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtSHRtbEVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL0h0bWxFZGl0b3IuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdG1sRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZWRpdG9yQ29uZmlnOiBBbmd1bGFyRWRpdG9yQ29uZmlnXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHVibGljIEh0bWxFZGl0b3JDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLCBwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgZ2xvYmFsU2V0dGluZ3M6IEdsb2JhbFNldHRpbmdzKSB7XHJcbiAgICBIdG1sRWRpdG9yQ29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogSHRtbEVkaXRvck9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEh0bWxFZGl0b3JGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIFdvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQ29uZmlnOiBhbnlcclxuICBtaXNjTGlzdDogYW55XHJcbiAgc3R5bGVMaXN0OiBhbnlcclxuICBmb250c2l6ZUxpc3Q6IGFueVxyXG4gIHBhcmFMaXN0OiBhbnlcclxuICBpbnNlcnRMaXN0OiBhbnlcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIHRleHREaXI7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYodGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uKVxyXG4gICAgdGhpcy50ZXh0RGlyPXRoaXMub3B0aW9ucy5Gb3JjZURpcmVjdGlvbj09Mj8ncnRsJzonbHRyJztcclxuICAgIGVsc2VcclxuICAgIHRoaXMudGV4dERpcj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKT09J2FyJz8ncnRsJzonbHRyJztcclxuICAgIHRoaXMuZWRpdG9yQ29uZmlnID0ge1xyXG4gICAgICAgIGVkaXRhYmxlOiAhdGhpcy5vcHRpb25zLklzRGlzYWJsZWQsXHJcbiAgICAgICAgc3BlbGxjaGVjazogdHJ1ZSxcclxuICAgICAgICBoZWlnaHQ6IGAke3RoaXMub3B0aW9ucy5IZWlnaHR9cmVtYCxcclxuICAgICAgICBtaW5IZWlnaHQ6IGAke3RoaXMub3B0aW9ucy5IZWlnaHR9cmVtYCxcclxuICAgICAgICBtYXhIZWlnaHQ6ICAnYXV0bycsXHJcbiAgICAgICAgd2lkdGg6ICdhdXRvJyxcclxuICAgICAgICBtaW5XaWR0aDogJ2F1dG8nLFxyXG4gICAgICAgIHRyYW5zbGF0ZTogJ3llcycsXHJcbiAgICAgICAgZW5hYmxlVG9vbGJhcjogdHJ1ZSxcclxuICAgICAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5vcHRpb25zLlBsYWNlaG9sZGVyLFxyXG4gICAgICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICcnLFxyXG4gICAgICAgIGRlZmF1bHRGb250TmFtZTogJycsXHJcbiAgICAgICAgZGVmYXVsdEZvbnRTaXplOiAnJyxcclxuICAgICAgICBmb250czogW1xyXG4gICAgICAgICAge2NsYXNzOiAnYXJpYWwnLCBuYW1lOiAnQXJpYWwnfSxcclxuICAgICAgICAgIHtjbGFzczogJ3RpbWVzLW5ldy1yb21hbicsIG5hbWU6ICdUaW1lcyBOZXcgUm9tYW4nfSxcclxuICAgICAgICAgIHtjbGFzczogJ2NhbGlicmknLCBuYW1lOiAnQ2FsaWJyaSd9LFxyXG4gICAgICAgICAge2NsYXNzOiAnY29taWMtc2Fucy1tcycsIG5hbWU6ICdDb21pYyBTYW5zIE1TJ31cclxuICAgICAgICBdLFxyXG4gICAgICAgIGN1c3RvbUNsYXNzZXM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAncXVvdGUnLFxyXG4gICAgICAgICAgY2xhc3M6ICdxdW90ZScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAncmVkVGV4dCcsXHJcbiAgICAgICAgICBjbGFzczogJ3JlZFRleHQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAndGl0bGVUZXh0JyxcclxuICAgICAgICAgIGNsYXNzOiAndGl0bGVUZXh0JyxcclxuICAgICAgICAgIHRhZzogJ2gxJyxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICB1cGxvYWRVcmw6ICd2MS9pbWFnZScsXHJcbiAgICAgIHVwbG9hZFdpdGhDcmVkZW50aWFsczogZmFsc2UsXHJcbiAgICAgIHNhbml0aXplOiBmYWxzZSxcclxuICAgICAgdG9vbGJhclBvc2l0aW9uOiAndG9wJyxcclxuICAgICAgdG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuICAgICAgICBbXHJcbiAgICAgICAgICAnbGluaycsXHJcbiAgICAgICAgICAndW5saW5rJyxcclxuICAgICAgICAgICdpbnNlcnRJbWFnZScsXHJcbiAgICAgICAgICAnaW5zZXJ0VmlkZW8nLFxyXG4gICAgICAgICAgJ2luc2VydEhvcml6b250YWxSdWxlJyxcclxuICAgICAgICBdXHJcbiAgICAgIF1cclxuICB9O1xyXG4gIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIC8vIHRoaXMubWlzY0xpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X01pc2MgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfTWlzYyA6IFsnY29kZXZpZXcnLCAndW5kbycsICdyZWRvJ107XHJcbiAgICAvLyB0aGlzLnN0eWxlTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfU3R5bGUgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfU3R5bGUgOiBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdjbGVhciddXHJcbiAgICAvLyB0aGlzLmZvbnRzaXplTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfRm9udFNpemUgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfRm9udFNpemUgOiBbJ2ZvbnRuYW1lJywgJ2ZvbnRzaXplJywgJ2NvbG9yJ11cclxuICAgIC8vIHRoaXMucGFyYUxpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1BhcmEgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfUGFyYSA6IFsnc3R5bGUnLCAndWwnLCAnb2wnLCAncGFyYWdyYXBoJywgJ2hlaWdodCddXHJcbiAgICAvLyB0aGlzLmluc2VydExpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X0luc2VydCAhPSBudWxsID8gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9JbnNlcnQgOiBbJ3RhYmxlJywgJ3BpY3R1cmUnLCAnbGluaycsICd2aWRlbycsICdociddXHJcblxyXG4gICAgLy8gdGhpcy5Db25maWcgPSB7XHJcbiAgICAvLyAgIGNhbGxiYWNrczoge1xyXG4gICAgLy8gICAgIC8vIG9uQ2hhbmdlOiAoZSkgPT4ge1xyXG5cclxuICAgIC8vICAgICAvLyAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICB0aGlzLm9uVGV4dENoYW5nZSgpO1xyXG4gICAgLy8gICAgIC8vICAgICB9KTtcclxuICAgIC8vICAgICAvLyB9LFxyXG4gICAgLy8gICAgIC8vIG9uS2V5dXA6IChlKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgLy8gICAgIC8vICAgICAgICAgIDtcclxuICAgIC8vICAgICAvLyAgICAgICAgIHRoaXMub25UZXh0Q2hhbmdlKCk7XHJcbiAgICAvLyAgICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICAgIC8vIH0sXHJcbiAgICAvLyAgICAgLy8gb25LZXlkb3duOiAoZSkgPT4ge1xyXG4gICAgLy8gICAgIC8vICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgIC8vICAgICAvLyAgICAgICAgICA7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICBpZiAodGhpcy5Xb3JkQ291bnRBcnJheSA+IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQgJiYgZS5rZXlDb2RlICE9IDgpIHtcclxuICAgIC8vICAgICAvLyAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgLy8gICAgIC8vICAgICB9KTtcclxuICAgIC8vICAgICAvLyB9XHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIHBsYWNlaG9sZGVyOiB0aGlzLm9wdGlvbnMuUGxhY2Vob2xkZXIsXHJcbiAgICAvLyAgIGhlaWdodDogYCR7dGhpcy5vcHRpb25zLkhlaWdodH1weGAsXHJcbiAgICAvLyAgIHRvb2xiYXI6IFtcclxuICAgIC8vICAgICBbJ21pc2MnLCB0aGlzLm1pc2NMaXN0XSxcclxuICAgIC8vICAgICBbJ3N0eWxlJywgdGhpcy5zdHlsZUxpc3RdLFxyXG4gICAgLy8gICAgIFsnZm9udHNpemUnLCB0aGlzLmZvbnRzaXplTGlzdF0sXHJcbiAgICAvLyAgICAgWydwYXJhJywgdGhpcy5wYXJhTGlzdF0sXHJcbiAgICAvLyAgICAgWydpbnNlcnQnLCB0aGlzLmluc2VydExpc3RdXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyAgIGZvbnROYW1lczogWydIZWx2ZXRpY2EnLCAnQXJpYWwnLCAnQXJpYWwgQmxhY2snLCAnQ29taWMgU2FucyBNUycsICdDb3VyaWVyIE5ldycsICdSb2JvdG8nLCAnVGltZXMnXVxyXG5cclxuICAgIC8vIH1cclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUpO1xyXG5cclxuICAgIGlmICghdGhpcy5vcHRpb25zLlZpZXdUeXBlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuVmlld1R5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLlZpZXdUeXBlO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgdGhpcy5vcHRpb25zLkxhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KTtcclxuXHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5NaW5MZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5NYXhMZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuSHRtbEVkaXRvckNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5BdHRyaWJ1dGVMaXN0ICE9IG51bGwpIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdGlvbnMuTmFtZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSh0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0uS2V5LCB0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0udmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYW5ndWxhckVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhbmd1bGFyLWVkaXRvci10b29sYmFyIG5nLXN0YXItaW5zZXJ0ZWRcIilbMF1cclxuICAgICAgbGV0IGRpciA9dGhpcy5VdGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKT09XCJlblwiP1wibHRyXCI6XCJydGxcIlxyXG4gICAgICBhbmd1bGFyRWRpdG9yLnNldEF0dHJpYnV0ZShcImRpclwiLGRpcik7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpXHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wudmFsdWUudHJpbSgpKTtcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5jb250cm9sVXRpbGl0eS50cmltQ29udHJvbFZhbHVlKHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoICYmIHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSx0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAsdGhpcy5vcHRpb25zLlBhdGNoUGF0aClcclxuICAgIH1cclxuICAgIC8vVXNlIHRoaXMgbGluZSB0byBlbmFibGUgdHdvIHdheSBiaW5kaW5nLlxyXG4gICAgdGhpcy5vcHRpb25zLlZhbHVlPW9yaWdpbmFsVmFsdWU7XHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSlcclxuICB9XHJcblxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Jc1ZhbGlkKHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=
|