@bnsights/bbsf-controls 1.0.86 → 1.0.87

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