@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.
Files changed (221) hide show
  1. package/README.md +11 -0
  2. package/esm2020/bnsights-bbsf-controls.mjs +5 -0
  3. package/esm2020/lib/Shared/Components/app-base-component.mjs +226 -0
  4. package/esm2020/lib/Shared/Components/ng-tag-input.mjs +331 -0
  5. package/esm2020/lib/Shared/Directives/template-name.directive.mjs +18 -0
  6. package/{esm2015/lib/Shared/Models/DropdownListItem.js → esm2020/lib/Shared/Models/DropdownListItem.mjs} +1 -1
  7. package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -0
  8. package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -0
  9. package/esm2020/lib/Shared/default_intl.mjs +29 -0
  10. package/esm2020/lib/Shared/services/ControlUtility.mjs +162 -0
  11. package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +30 -0
  12. package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
  13. package/esm2020/lib/Shared/services/render-component-service.service.mjs +30 -0
  14. package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +170 -0
  15. package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +262 -0
  16. package/esm2020/lib/controls/Calendar/Calendar.component.mjs +173 -0
  17. package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +117 -0
  18. package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -0
  19. package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +223 -0
  20. package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +194 -0
  21. package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +447 -0
  22. package/esm2020/lib/controls/Form/Form.component.mjs +101 -0
  23. package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +226 -0
  24. package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
  25. package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +325 -0
  26. package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
  27. package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +429 -0
  28. package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +428 -0
  29. package/esm2020/lib/controls/Paging/JwPagination.component.mjs +156 -0
  30. package/esm2020/lib/controls/Paging/Paging.component.mjs +312 -0
  31. package/esm2020/lib/controls/Phone/Phone.component.mjs +129 -0
  32. package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +376 -0
  33. package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +109 -0
  34. package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +135 -0
  35. package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +125 -0
  36. package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -0
  37. package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -0
  38. package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -0
  39. package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +277 -0
  40. package/esm2020/lib/controls/TextArea/TextArea.component.mjs +196 -0
  41. package/esm2020/lib/controls/TextBox/TextBox.component.mjs +312 -0
  42. package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +90 -0
  43. package/esm2020/lib/controls/bbsf-controls.module.mjs +361 -0
  44. package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +37 -0
  45. package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -2
  46. package/fesm2015/{bnsights-bbsf-controls.js → bnsights-bbsf-controls.mjs} +2214 -2111
  47. package/fesm2015/bnsights-bbsf-controls.mjs.map +1 -0
  48. package/fesm2020/bnsights-bbsf-controls.mjs +9098 -0
  49. package/fesm2020/bnsights-bbsf-controls.mjs.map +1 -0
  50. package/index.d.ts +5 -0
  51. package/lib/Shared/Components/app-base-component.d.ts +7 -0
  52. package/lib/Shared/Components/ng-tag-input.d.ts +4 -1
  53. package/lib/Shared/Directives/template-name.directive.d.ts +3 -0
  54. package/lib/Shared/Models/DropdownListItem.d.ts +2 -2
  55. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +3 -0
  56. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +3 -0
  57. package/lib/Shared/default_intl.d.ts +3 -0
  58. package/lib/Shared/services/ControlUtility.d.ts +3 -0
  59. package/lib/Shared/services/GlobalSettings.service.d.ts +3 -0
  60. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +3 -0
  61. package/lib/Shared/services/render-component-service.service.d.ts +3 -0
  62. package/lib/Shared/services/validationErrorMassage.service.d.ts +4 -3
  63. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +3 -0
  64. package/lib/controls/Calendar/Calendar.component.d.ts +3 -0
  65. package/lib/controls/CheckBox/CheckBox.component.d.ts +3 -0
  66. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +3 -0
  67. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +3 -0
  68. package/lib/controls/DropdownList/DropdownList.component.d.ts +5 -0
  69. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +3 -0
  70. package/lib/controls/Form/Form.component.d.ts +3 -0
  71. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +3 -0
  72. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +3 -0
  73. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +3 -0
  74. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +3 -0
  75. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +3 -0
  76. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +3 -0
  77. package/lib/controls/Paging/JwPagination.component.d.ts +3 -0
  78. package/lib/controls/Paging/Paging.component.d.ts +3 -0
  79. package/lib/controls/Phone/Phone.component.d.ts +3 -0
  80. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +3 -0
  81. package/lib/controls/RadioButton/RadioButton.component.d.ts +3 -0
  82. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +3 -0
  83. package/lib/controls/Repeater/repeater/repeater.component.d.ts +3 -0
  84. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
  85. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +3 -0
  86. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +3 -0
  87. package/lib/controls/TagsInput/TagsInput.component.d.ts +3 -0
  88. package/lib/controls/TextArea/TextArea.component.d.ts +3 -0
  89. package/lib/controls/TextBox/TextBox.component.d.ts +3 -0
  90. package/lib/controls/Toggleslide/toggleslide.component.d.ts +3 -0
  91. package/lib/controls/bbsf-controls.module.d.ts +71 -4
  92. package/lib/controls/page-header-component/page-header-component.component.d.ts +3 -0
  93. package/package.json +44 -48
  94. package/public-api.d.ts +1 -1
  95. package/bnsights-bbsf-controls-1.0.106.tgz +0 -0
  96. package/bnsights-bbsf-controls.d.ts +0 -5
  97. package/bnsights-bbsf-controls.metadata.json +0 -1
  98. package/bundles/bnsights-bbsf-controls.umd.js +0 -9636
  99. package/bundles/bnsights-bbsf-controls.umd.js.map +0 -1
  100. package/esm2015/bnsights-bbsf-controls.js +0 -6
  101. package/esm2015/lib/Shared/Components/app-base-component.js +0 -202
  102. package/esm2015/lib/Shared/Components/ng-tag-input.js +0 -323
  103. package/esm2015/lib/Shared/Directives/template-name.directive.js +0 -18
  104. package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +0 -20
  105. package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +0 -20
  106. package/esm2015/lib/Shared/default_intl.js +0 -29
  107. package/esm2015/lib/Shared/services/ControlUtility.js +0 -164
  108. package/esm2015/lib/Shared/services/GlobalSettings.service.js +0 -28
  109. package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +0 -22
  110. package/esm2015/lib/Shared/services/render-component-service.service.js +0 -30
  111. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +0 -172
  112. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +0 -266
  113. package/esm2015/lib/controls/Calendar/Calendar.component.js +0 -177
  114. package/esm2015/lib/controls/CheckBox/CheckBox.component.js +0 -118
  115. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +0 -139
  116. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +0 -227
  117. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +0 -192
  118. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +0 -447
  119. package/esm2015/lib/controls/Form/Form.component.js +0 -106
  120. package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +0 -226
  121. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +0 -347
  122. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +0 -325
  123. package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +0 -429
  124. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +0 -434
  125. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +0 -433
  126. package/esm2015/lib/controls/Paging/JwPagination.component.js +0 -129
  127. package/esm2015/lib/controls/Paging/Paging.component.js +0 -312
  128. package/esm2015/lib/controls/Phone/Phone.component.js +0 -129
  129. package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +0 -371
  130. package/esm2015/lib/controls/RadioButton/RadioButton.component.js +0 -111
  131. package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +0 -135
  132. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +0 -117
  133. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +0 -748
  134. package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +0 -19
  135. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +0 -108
  136. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +0 -278
  137. package/esm2015/lib/controls/TextArea/TextArea.component.js +0 -197
  138. package/esm2015/lib/controls/TextBox/TextBox.component.js +0 -309
  139. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +0 -90
  140. package/esm2015/lib/controls/bbsf-controls.module.js +0 -240
  141. package/esm2015/lib/controls/page-header-component/page-header-component.component.js +0 -32
  142. package/fesm2015/bnsights-bbsf-controls.js.map +0 -1
  143. package/src/lib/assets/.gitkeep +0 -0
  144. /package/{esm2015/lib/Shared/Enums/CalendarView.js → esm2020/lib/Shared/Enums/CalendarView.mjs} +0 -0
  145. /package/{esm2015/lib/Shared/Enums/ControlLayout.js → esm2020/lib/Shared/Enums/ControlLayout.mjs} +0 -0
  146. /package/{esm2015/lib/Shared/Enums/Countries.js → esm2020/lib/Shared/Enums/Countries.mjs} +0 -0
  147. /package/{esm2015/lib/Shared/Enums/Enums.js → esm2020/lib/Shared/Enums/Enums.mjs} +0 -0
  148. /package/{esm2015/lib/Shared/Enums/FileType.js → esm2020/lib/Shared/Enums/FileType.mjs} +0 -0
  149. /package/{esm2015/lib/Shared/Enums/FilterType.js → esm2020/lib/Shared/Enums/FilterType.mjs} +0 -0
  150. /package/{esm2015/lib/Shared/Enums/FontSize.js → esm2020/lib/Shared/Enums/FontSize.mjs} +0 -0
  151. /package/{esm2015/lib/Shared/Enums/ForceDirection.js → esm2020/lib/Shared/Enums/ForceDirection.mjs} +0 -0
  152. /package/{esm2015/lib/Shared/Enums/IconPosition.js → esm2020/lib/Shared/Enums/IconPosition.mjs} +0 -0
  153. /package/{esm2015/lib/Shared/Enums/ImageType.js → esm2020/lib/Shared/Enums/ImageType.mjs} +0 -0
  154. /package/{esm2015/lib/Shared/Enums/InputType.js → esm2020/lib/Shared/Enums/InputType.mjs} +0 -0
  155. /package/{esm2015/lib/Shared/Enums/Insert.js → esm2020/lib/Shared/Enums/Insert.mjs} +0 -0
  156. /package/{esm2015/lib/Shared/Enums/LanguageMode.js → esm2020/lib/Shared/Enums/LanguageMode.mjs} +0 -0
  157. /package/{esm2015/lib/Shared/Enums/LanguageValidation.js → esm2020/lib/Shared/Enums/LanguageValidation.mjs} +0 -0
  158. /package/{esm2015/lib/Shared/Enums/Misc.js → esm2020/lib/Shared/Enums/Misc.mjs} +0 -0
  159. /package/{esm2015/lib/Shared/Enums/PagingActionMode.js → esm2020/lib/Shared/Enums/PagingActionMode.mjs} +0 -0
  160. /package/{esm2015/lib/Shared/Enums/Para.js → esm2020/lib/Shared/Enums/Para.mjs} +0 -0
  161. /package/{esm2015/lib/Shared/Enums/PickerType.js → esm2020/lib/Shared/Enums/PickerType.mjs} +0 -0
  162. /package/{esm2015/lib/Shared/Enums/SelectMode.js → esm2020/lib/Shared/Enums/SelectMode.mjs} +0 -0
  163. /package/{esm2015/lib/Shared/Enums/StartView.js → esm2020/lib/Shared/Enums/StartView.mjs} +0 -0
  164. /package/{esm2015/lib/Shared/Enums/Style.js → esm2020/lib/Shared/Enums/Style.mjs} +0 -0
  165. /package/{esm2015/lib/Shared/Enums/StyleConfirmationMode.js → esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs} +0 -0
  166. /package/{esm2015/lib/Shared/Enums/TagInputView.js → esm2020/lib/Shared/Enums/TagInputView.mjs} +0 -0
  167. /package/{esm2015/lib/Shared/Enums/menu-list-enum.js → esm2020/lib/Shared/Enums/menu-list-enum.mjs} +0 -0
  168. /package/{esm2015/lib/Shared/Models/Attribute.js → esm2020/lib/Shared/Models/Attribute.mjs} +0 -0
  169. /package/{esm2015/lib/Shared/Models/AutocompleteDTO.js → esm2020/lib/Shared/Models/AutocompleteDTO.mjs} +0 -0
  170. /package/{esm2015/lib/Shared/Models/AutocompleteOptions.js → esm2020/lib/Shared/Models/AutocompleteOptions.mjs} +0 -0
  171. /package/{esm2015/lib/Shared/Models/CalendarEventDTO.js → esm2020/lib/Shared/Models/CalendarEventDTO.mjs} +0 -0
  172. /package/{esm2015/lib/Shared/Models/CalendarOptions.js → esm2020/lib/Shared/Models/CalendarOptions.mjs} +0 -0
  173. /package/{esm2015/lib/Shared/Models/CancelDTO.js → esm2020/lib/Shared/Models/CancelDTO.mjs} +0 -0
  174. /package/{esm2015/lib/Shared/Models/CaptchaStyle.js → esm2020/lib/Shared/Models/CaptchaStyle.mjs} +0 -0
  175. /package/{esm2015/lib/Shared/Models/CheckBoxOptions.js → esm2020/lib/Shared/Models/CheckBoxOptions.mjs} +0 -0
  176. /package/{esm2015/lib/Shared/Models/ConfirmationModalOptions.js → esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs} +0 -0
  177. /package/{esm2015/lib/Shared/Models/ControlOptionsBase.js → esm2020/lib/Shared/Models/ControlOptionsBase.mjs} +0 -0
  178. /package/{esm2015/lib/Shared/Models/CustomValidation.js → esm2020/lib/Shared/Models/CustomValidation.mjs} +0 -0
  179. /package/{esm2015/lib/Shared/Models/DropdownOptions.js → esm2020/lib/Shared/Models/DropdownOptions.mjs} +0 -0
  180. /package/{esm2015/lib/Shared/Models/EditPersonalImage.js → esm2020/lib/Shared/Models/EditPersonalImage.mjs} +0 -0
  181. /package/{esm2015/lib/Shared/Models/EnglishArabicDTO.js → esm2020/lib/Shared/Models/EnglishArabicDTO.mjs} +0 -0
  182. /package/{esm2015/lib/Shared/Models/FileDTO.js → esm2020/lib/Shared/Models/FileDTO.mjs} +0 -0
  183. /package/{esm2015/lib/Shared/Models/FileUploadModel.js → esm2020/lib/Shared/Models/FileUploadModel.mjs} +0 -0
  184. /package/{esm2015/lib/Shared/Models/FileUploadOptions.js → esm2020/lib/Shared/Models/FileUploadOptions.mjs} +0 -0
  185. /package/{esm2015/lib/Shared/Models/FilterItem.js → esm2020/lib/Shared/Models/FilterItem.mjs} +0 -0
  186. /package/{esm2015/lib/Shared/Models/FormOptions.js → esm2020/lib/Shared/Models/FormOptions.mjs} +0 -0
  187. /package/{esm2015/lib/Shared/Models/HtmlEditorOptions.js → esm2020/lib/Shared/Models/HtmlEditorOptions.mjs} +0 -0
  188. /package/{esm2015/lib/Shared/Models/ImageUploadOptions.js → esm2020/lib/Shared/Models/ImageUploadOptions.mjs} +0 -0
  189. /package/{esm2015/lib/Shared/Models/MapAutoCompleteOptions.js → esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs} +0 -0
  190. /package/{esm2015/lib/Shared/Models/MapAutocompleteDTO.js → esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs} +0 -0
  191. /package/{esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js → esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs} +0 -0
  192. /package/{esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js → esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs} +0 -0
  193. /package/{esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js → esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs} +0 -0
  194. /package/{esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js → esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs} +0 -0
  195. /package/{esm2015/lib/Shared/Models/MultipleFileUploadModel.js → esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs} +0 -0
  196. /package/{esm2015/lib/Shared/Models/PagingDTO.js → esm2020/lib/Shared/Models/PagingDTO.mjs} +0 -0
  197. /package/{esm2015/lib/Shared/Models/PagingOptions.js → esm2020/lib/Shared/Models/PagingOptions.mjs} +0 -0
  198. /package/{esm2015/lib/Shared/Models/PagingPayload.js → esm2020/lib/Shared/Models/PagingPayload.mjs} +0 -0
  199. /package/{esm2015/lib/Shared/Models/PhoneOptions.js → esm2020/lib/Shared/Models/PhoneOptions.mjs} +0 -0
  200. /package/{esm2015/lib/Shared/Models/ProfileImageUploadOptions.js → esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs} +0 -0
  201. /package/{esm2015/lib/Shared/Models/ProfilePictureDTO.js → esm2020/lib/Shared/Models/ProfilePictureDTO.mjs} +0 -0
  202. /package/{esm2015/lib/Shared/Models/RadioButtonItem.js → esm2020/lib/Shared/Models/RadioButtonItem.mjs} +0 -0
  203. /package/{esm2015/lib/Shared/Models/RadioButtonOptions.js → esm2020/lib/Shared/Models/RadioButtonOptions.mjs} +0 -0
  204. /package/{esm2015/lib/Shared/Models/RangeNumber.js → esm2020/lib/Shared/Models/RangeNumber.mjs} +0 -0
  205. /package/{esm2015/lib/Shared/Models/Recaptcha.js → esm2020/lib/Shared/Models/Recaptcha.mjs} +0 -0
  206. /package/{esm2015/lib/Shared/Models/RecaptchaOptions.js → esm2020/lib/Shared/Models/RecaptchaOptions.mjs} +0 -0
  207. /package/{esm2015/lib/Shared/Models/RepeaterField.js → esm2020/lib/Shared/Models/RepeaterField.mjs} +0 -0
  208. /package/{esm2015/lib/Shared/Models/RepeaterOptions.js → esm2020/lib/Shared/Models/RepeaterOptions.mjs} +0 -0
  209. /package/{esm2015/lib/Shared/Models/SaveDTO.js → esm2020/lib/Shared/Models/SaveDTO.mjs} +0 -0
  210. /package/{esm2015/lib/Shared/Models/TagsInputDTO.js → esm2020/lib/Shared/Models/TagsInputDTO.mjs} +0 -0
  211. /package/{esm2015/lib/Shared/Models/TagsInputOptions.js → esm2020/lib/Shared/Models/TagsInputOptions.mjs} +0 -0
  212. /package/{esm2015/lib/Shared/Models/TextAreaOptions.js → esm2020/lib/Shared/Models/TextAreaOptions.mjs} +0 -0
  213. /package/{esm2015/lib/Shared/Models/TextBoxOptions.js → esm2020/lib/Shared/Models/TextBoxOptions.mjs} +0 -0
  214. /package/{esm2015/lib/Shared/Models/ToggleslideOptions.js → esm2020/lib/Shared/Models/ToggleslideOptions.mjs} +0 -0
  215. /package/{esm2015/lib/Shared/Models/UploadPersonalImage.js → esm2020/lib/Shared/Models/UploadPersonalImage.mjs} +0 -0
  216. /package/{esm2015/lib/Shared/Models/bread-crumb.js → esm2020/lib/Shared/Models/bread-crumb.mjs} +0 -0
  217. /package/{esm2015/lib/Shared/Models/control-filter-Item.js → esm2020/lib/Shared/Models/control-filter-Item.mjs} +0 -0
  218. /package/{esm2015/lib/Shared/Models/datePickerOptions.js → esm2020/lib/Shared/Models/datePickerOptions.mjs} +0 -0
  219. /package/{esm2015/lib/Shared/Models/filter-options.js → esm2020/lib/Shared/Models/filter-options.mjs} +0 -0
  220. /package/{esm2015/lib/Shared/Models/page-header-options.js → esm2020/lib/Shared/Models/page-header-options.mjs} +0 -0
  221. /package/{esm2015/lib/Shared/config/environment.js → esm2020/lib/Shared/config/environment.mjs} +0 -0
@@ -0,0 +1,129 @@
1
+ import { Component, EventEmitter, Input, Optional, Output } from '@angular/core';
2
+ import { FormControl, Validators } from '@angular/forms';
3
+ import { SearchCountryField } from 'ngx-intl-tel-input';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../Shared/services/ControlUtility";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@bnsights/bbsf-utilities";
8
+ import * as i4 from "../../Shared/services/GlobalSettings.service";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "@angular/cdk/bidi";
11
+ import * as i7 from "ngx-intl-tel-input";
12
+ export class PhoneComponent {
13
+ // tslint:disable-next-line: max-line-length
14
+ constructor(controlUtility, controlContainer, PhoneControlHost, UtilityService, controlValidationService, globalSettings) {
15
+ this.controlUtility = controlUtility;
16
+ this.controlContainer = controlContainer;
17
+ this.PhoneControlHost = PhoneControlHost;
18
+ this.UtilityService = UtilityService;
19
+ this.controlValidationService = controlValidationService;
20
+ this.globalSettings = globalSettings;
21
+ this.OnChange = new EventEmitter();
22
+ this.SearchCountryField = SearchCountryField;
23
+ // TooltipLabel = TooltipLabel;
24
+ this.markAllAsTouched = false;
25
+ this.validationRules = [];
26
+ this.validationRulesasync = [];
27
+ this.separateDialCode = false;
28
+ this.resetError = () => {
29
+ this.controlValidationService.removeGlobalError();
30
+ };
31
+ //External Method
32
+ this.RemoveRequiredValidation = () => {
33
+ this.controlUtility.RemoveRequiredValidation(this.PhoneFormControl, this.validationRules, this.options);
34
+ };
35
+ //External Method
36
+ this.AddRequiredValidation = () => {
37
+ this.controlUtility.AddRequiredValidation(this.PhoneFormControl, this.validationRules, this.options);
38
+ };
39
+ //External Method
40
+ this.RemoveCustomValidation = (CustomValidation) => {
41
+ this.controlUtility.RemoveCustomValidation(this.PhoneFormControl, this.validationRules, CustomValidation);
42
+ };
43
+ //External Method
44
+ this.AddCustomValidation = (CustomValidation) => {
45
+ this.controlUtility.AddCustomValidation(this.PhoneFormControl, this.validationRules, CustomValidation);
46
+ };
47
+ //External Method
48
+ this.IsValid = () => {
49
+ this.controlUtility.IsValid(this.PhoneFormControl);
50
+ };
51
+ PhoneComponent.controlContainerstatic = this.controlContainer;
52
+ }
53
+ ngOnInit() {
54
+ if (this.options.IsReadonly && !this.options.Value)
55
+ this.options.Value = this.UtilityService.getResourceValue('NA');
56
+ if (this.options.ForceDirection)
57
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
58
+ else
59
+ this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
60
+ this.controlValidationService.isCreatedBefor = false;
61
+ this.group.addControl(this.options.Name, new FormControl(''));
62
+ this.PhoneFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
63
+ if (!this.options.ViewType)
64
+ this.options.ViewType = this.globalSettings.ViewType;
65
+ if (this.options.IsRequired) {
66
+ this.validationRules.push(Validators.required);
67
+ }
68
+ this.PhoneFormControl.setValue(this.options.Value);
69
+ if (this.options.CustomValidation.length > 0) {
70
+ let Validations = this.options.CustomValidation;
71
+ for (let index = 0; index < Validations.length; index++) {
72
+ const Validation = Validations[index];
73
+ this.validationRules.push(Validation.functionBody);
74
+ }
75
+ }
76
+ if (this.options.LabelKey != null && this.options.LabelKey != "")
77
+ this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
78
+ this.PhoneFormControl.setValidators(this.validationRules);
79
+ this.PhoneFormControl.setAsyncValidators(this.validationRulesasync);
80
+ if (this.options.IsDisabled) {
81
+ this.PhoneFormControl.disable();
82
+ }
83
+ this.PhoneControlHost.ngSubmit.subscribe(() => {
84
+ this.group.markAllAsTouched();
85
+ this.markAllAsTouched = true;
86
+ });
87
+ }
88
+ ngAfterViewInit() {
89
+ this.controlUtility.setAttributeForControl(this.options);
90
+ }
91
+ showGlobalError() {
92
+ this.controlUtility.showGlobalError();
93
+ }
94
+ getErrorValidation(ErrorList) {
95
+ if (this.markAllAsTouched && this.group.invalid) {
96
+ this.showGlobalError();
97
+ this.markAllAsTouched = false;
98
+ }
99
+ return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
100
+ }
101
+ onValueChanged() {
102
+ let Number = this.PhoneFormControl.value.internationalNumber;
103
+ let originalValue = this.controlUtility.trimControlValue(Number);
104
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
105
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
106
+ }
107
+ this.OnChange.emit(originalValue);
108
+ }
109
+ getSelectedCountry(selectedCountry) {
110
+ let value = selectedCountry;
111
+ return value;
112
+ }
113
+ }
114
+ PhoneComponent.controlContainerstatic = null;
115
+ PhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneComponent, deps: [{ token: i1.ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: i4.GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
116
+ PhoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PhoneComponent, selector: "BBSF-Phone", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-phone\" [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\r\n {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ngx-intl-tel-input [dir]=\"textDir\" [cssClass]=\"options.ExtraClasses\" [preferredCountries]=\"options.PreferredCountries\"\r\n [onlyCountries]=\"options.OnlyCountries\" [enableAutoCountrySelect]=\"true\" [enablePlaceholder]=\"options.EnablePlaceholder\"\r\n [searchCountryFlag]=\"options.AllowSearch\" [searchCountryField]=\"[SearchCountryField.Iso2,\r\n SearchCountryField.Name]\" [selectFirstCountry]=\"options.SelectFirstCountry\"\r\n [selectedCountryISO]=\"getSelectedCountry(options.SelectedCountryISO)\" [separateDialCode]=\"separateDialCode\" maxlength=\"15\"\r\n [(ngModel)]=\"options.Value\" [phoneValidation]=\"options.PhoneValidation\" [id]=\"options.Name\" name=\"{{options.Name}}\"\r\n formControlName=\"{{options.Name}}\" (change)=\"onValueChanged()\" [class.is-invalid]=\"PhoneFormControl.invalid &&\r\n PhoneFormControl.touched\" aria-invalid=\"true\" class=\"form-control\">\r\n </ngx-intl-tel-input>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><a href=\"tel:{{options.Value}}\">{{options.Value}}</a>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!options.IsReadonly\" 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=\"(PhoneFormControl.invalid &&\r\n PhoneFormControl.touched)\">\r\n {{getErrorValidation(PhoneFormControl.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>", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i7.NgxIntlTelInputComponent, selector: "ngx-intl-tel-input", inputs: ["value", "preferredCountries", "enablePlaceholder", "customPlaceholder", "numberFormat", "cssClass", "onlyCountries", "enableAutoCountrySelect", "searchCountryFlag", "searchCountryField", "searchCountryPlaceholder", "maxLength", "selectFirstCountry", "selectedCountryISO", "phoneValidation", "inputId", "separateDialCode"], outputs: ["countryChange"] }, { kind: "directive", type: i7.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { 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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: i5.KeyValuePipe, name: "keyvalue" }] });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneComponent, decorators: [{
118
+ type: Component,
119
+ args: [{ selector: 'BBSF-Phone', template: "<div class=\"form-group bbsf-control bbsf-phone\" [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\r\n {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ngx-intl-tel-input [dir]=\"textDir\" [cssClass]=\"options.ExtraClasses\" [preferredCountries]=\"options.PreferredCountries\"\r\n [onlyCountries]=\"options.OnlyCountries\" [enableAutoCountrySelect]=\"true\" [enablePlaceholder]=\"options.EnablePlaceholder\"\r\n [searchCountryFlag]=\"options.AllowSearch\" [searchCountryField]=\"[SearchCountryField.Iso2,\r\n SearchCountryField.Name]\" [selectFirstCountry]=\"options.SelectFirstCountry\"\r\n [selectedCountryISO]=\"getSelectedCountry(options.SelectedCountryISO)\" [separateDialCode]=\"separateDialCode\" maxlength=\"15\"\r\n [(ngModel)]=\"options.Value\" [phoneValidation]=\"options.PhoneValidation\" [id]=\"options.Name\" name=\"{{options.Name}}\"\r\n formControlName=\"{{options.Name}}\" (change)=\"onValueChanged()\" [class.is-invalid]=\"PhoneFormControl.invalid &&\r\n PhoneFormControl.touched\" aria-invalid=\"true\" class=\"form-control\">\r\n </ngx-intl-tel-input>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><a href=\"tel:{{options.Value}}\">{{options.Value}}</a>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!options.IsReadonly\" 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=\"(PhoneFormControl.invalid &&\r\n PhoneFormControl.touched)\">\r\n {{getErrorValidation(PhoneFormControl.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>" }]
120
+ }], ctorParameters: function () { return [{ type: i1.ControlUtility }, { type: i2.ControlContainer, decorators: [{
121
+ type: Optional
122
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: i4.GlobalSettings }]; }, propDecorators: { group: [{
123
+ type: Input
124
+ }], options: [{
125
+ type: Input
126
+ }], OnChange: [{
127
+ type: Output
128
+ }] } });
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1Bob25lL1Bob25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9QaG9uZS9QaG9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQXFDLFdBQVcsRUFBaUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0gsT0FBTyxFQUFjLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7OztBQVVwRSxNQUFNLE9BQU8sY0FBYztJQUl6Qiw0Q0FBNEM7SUFDNUMsWUFBb0IsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQ2pHLGdCQUFvQyxFQUFVLGNBQThCLEVBQzNFLHdCQUFrRCxFQUFVLGNBQThCO1FBRmhGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pHLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDM0UsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUsxRixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4Qyx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUN4QywrQkFBK0I7UUFDL0IscUJBQWdCLEdBQVksS0FBSyxDQUFBO1FBQ2pDLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLHlCQUFvQixHQUFHLEVBQUUs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LFNBQVMsQ0FBQyxDQUFBO1NBQ3pHO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELGtCQUFrQixDQUFDLGVBQXdCO1FBQ3pDLElBQUksS0FBSyxHQUFHLGVBQXlCLENBQUM7UUFDdEMsT0FBTyxLQUFtQixDQUFBO0lBQzVCLENBQUM7O0FBbkdNLHFDQUFzQixHQUFHLElBQUksQ0FBQzs0R0FIMUIsY0FBYztnR0FBZCxjQUFjLHFJQ2IzQiwreUVBb0NNOzRGRHZCTyxjQUFjO2tCQUoxQixTQUFTOytCQUNFLFlBQVk7OzBCQVErQixRQUFROzhLQUtwRCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IENvdW50cnlJU08sIFNlYXJjaENvdW50cnlGaWVsZCB9IGZyb20gJ25neC1pbnRsLXRlbC1pbnB1dCc7XHJcbmltcG9ydCB7IENvdW50cnkgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvQ291bnRyaWVzJztcclxuaW1wb3J0IHsgUGhvbmVPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9QaG9uZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLVBob25lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vUGhvbmUuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHVibGljIFBob25lQ29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSwgcHJpdmF0ZSBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncykge1xyXG4gICAgUGhvbmVDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBQaG9uZU9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIFBob25lRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBTZWFyY2hDb3VudHJ5RmllbGQgPSBTZWFyY2hDb3VudHJ5RmllbGQ7XHJcbiAgLy8gVG9vbHRpcExhYmVsID0gVG9vbHRpcExhYmVsO1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgc2VwYXJhdGVEaWFsQ29kZSA9IGZhbHNlO1xyXG4gIHRleHREaXI7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZWFkb25seSAmJiAhdGhpcy5vcHRpb25zLlZhbHVlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ05BJyk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Gb3JjZURpcmVjdGlvbilcclxuICAgICAgdGhpcy50ZXh0RGlyID0gdGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uID09IDIgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnRleHREaXIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSA9PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuXHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlXHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5QaG9uZUZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMuTmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5WaWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLlZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5WaWV3VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIHRoaXMuUGhvbmVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgdGhpcy5vcHRpb25zLkxhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KTtcclxuXHJcbiAgICB0aGlzLlBob25lRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLlBob25lRm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuUGhvbmVGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5QaG9uZUNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IHRydWVcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zZXRBdHRyaWJ1dGVGb3JDb250cm9sKHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG5cclxuICByZXNldEVycm9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UucmVtb3ZlR2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpXHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2VkKCkge1xyXG4gICAgbGV0IE51bWJlciA9IHRoaXMuUGhvbmVGb3JtQ29udHJvbC52YWx1ZS5pbnRlcm5hdGlvbmFsTnVtYmVyIGFzIHN0cmluZztcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5jb250cm9sVXRpbGl0eS50cmltQ29udHJvbFZhbHVlKE51bWJlcik7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLlBhdGNoUGF0aCAmJiB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkudmFsaWQpIHtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXRjaENvbnRyb2xWYWx1ZShvcmlnaW5hbFZhbHVlLCB0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiwgdGhpcy5vcHRpb25zLlBhdGNoUGF0aClcclxuICAgIH1cclxuICAgIHRoaXMuT25DaGFuZ2UuZW1pdChvcmlnaW5hbFZhbHVlKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRDb3VudHJ5KHNlbGVjdGVkQ291bnRyeTogQ291bnRyeSkge1xyXG4gICAgbGV0IHZhbHVlID0gc2VsZWN0ZWRDb3VudHJ5IGFzIHN0cmluZztcclxuICAgIHJldHVybiB2YWx1ZSBhcyBDb3VudHJ5SVNPXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5QaG9uZUZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLlBob25lRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLlBob25lRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuUGhvbmVGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5QaG9uZUZvcm1Db250cm9sKVxyXG4gIH1cclxufVxyXG5cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJic2YtY29udHJvbCBiYnNmLXBob25lXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiKG9wdGlvbnMuVmlld1R5cGU9PTEpPydiYnNmLXZlcnRpY2FsJzonYmJzZi1ob3Jpem9udGFsJ1wiPlxyXG4gICAgPCEtLWxhYmVsLS0+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCIhb3B0aW9ucy5IaWRlTGFiZWxcIiBjbGFzcz1cImJic2YtbGFiZWxcclxuICAgICAge3tvcHRpb25zLkxhYmVsRXh0cmFDbGFzc2VzfX1cIj5cclxuICAgICAge3tvcHRpb25zLkxhYmVsVmFsdWV9fVxyXG4gICAgICA8IS0tQXN0ZXJpc2stLT5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIoKG9wdGlvbnMuU2hvd0FzdGVyaXNrJiZvcHRpb25zLklzUmVxdWlyZWQpfHwob3B0aW9ucy5Jc1JlcXVpcmVkKSkmJiFvcHRpb25zLklzUmVhZG9ubHlcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8IS0taW5wdXQtLT5cclxuICAgIDxkaXYgKm5nSWY9XCIhb3B0aW9ucy5Jc1JlYWRvbmx5XCIgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8IS0taW5wdXQtLT5cclxuICAgICAgPG5neC1pbnRsLXRlbC1pbnB1dCBbZGlyXT1cInRleHREaXJcIiBbY3NzQ2xhc3NdPVwib3B0aW9ucy5FeHRyYUNsYXNzZXNcIiBbcHJlZmVycmVkQ291bnRyaWVzXT1cIm9wdGlvbnMuUHJlZmVycmVkQ291bnRyaWVzXCJcclxuICAgICAgICBbb25seUNvdW50cmllc109XCJvcHRpb25zLk9ubHlDb3VudHJpZXNcIiBbZW5hYmxlQXV0b0NvdW50cnlTZWxlY3RdPVwidHJ1ZVwiIFtlbmFibGVQbGFjZWhvbGRlcl09XCJvcHRpb25zLkVuYWJsZVBsYWNlaG9sZGVyXCJcclxuICAgICAgICBbc2VhcmNoQ291bnRyeUZsYWddPVwib3B0aW9ucy5BbGxvd1NlYXJjaFwiIFtzZWFyY2hDb3VudHJ5RmllbGRdPVwiW1NlYXJjaENvdW50cnlGaWVsZC5Jc28yLFxyXG4gICAgICAgIFNlYXJjaENvdW50cnlGaWVsZC5OYW1lXVwiIFtzZWxlY3RGaXJzdENvdW50cnldPVwib3B0aW9ucy5TZWxlY3RGaXJzdENvdW50cnlcIlxyXG4gICAgICAgIFtzZWxlY3RlZENvdW50cnlJU09dPVwiZ2V0U2VsZWN0ZWRDb3VudHJ5KG9wdGlvbnMuU2VsZWN0ZWRDb3VudHJ5SVNPKVwiIFtzZXBhcmF0ZURpYWxDb2RlXT1cInNlcGFyYXRlRGlhbENvZGVcIiBtYXhsZW5ndGg9XCIxNVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb25zLlZhbHVlXCIgW3Bob25lVmFsaWRhdGlvbl09XCJvcHRpb25zLlBob25lVmFsaWRhdGlvblwiIFtpZF09XCJvcHRpb25zLk5hbWVcIiBuYW1lPVwie3tvcHRpb25zLk5hbWV9fVwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLk5hbWV9fVwiIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZWQoKVwiIFtjbGFzcy5pcy1pbnZhbGlkXT1cIlBob25lRm9ybUNvbnRyb2wuaW52YWxpZCAmJlxyXG4gICAgICAgIFBob25lRm9ybUNvbnRyb2wudG91Y2hlZFwiIGFyaWEtaW52YWxpZD1cInRydWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPlxyXG4gICAgICA8L25neC1pbnRsLXRlbC1pbnB1dD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSByZWFkb25seSAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zLklzUmVhZG9ubHlcIj48YSBocmVmPVwidGVsOnt7b3B0aW9ucy5WYWx1ZX19XCI+e3tvcHRpb25zLlZhbHVlfX08L2E+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbnMuSXNSZWFkb25seVwiIGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIj5cclxuICAgIDwhLS0gTGFiZWxEZXNjcmlwdGlvbi0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLkxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtdmFsaWRhdGlvblwiICpuZ0lmPVwiKFBob25lRm9ybUNvbnRyb2wuaW52YWxpZCAmJlxyXG4gICAgICBQaG9uZUZvcm1Db250cm9sLnRvdWNoZWQpXCI+XHJcbiAgICAgIHt7Z2V0RXJyb3JWYWxpZGF0aW9uKFBob25lRm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCl8fChncm91cC51bnRvdWNoZWQmJmdyb3VwLmludmFsaWQmJmdyb3VwLmRpcnR5KSBcIj57e3Jlc2V0RXJyb3IoKX19PC9kaXY+XHJcbjwvZGl2PiJdfQ==