@bnsights/bbsf-controls 1.0.107 → 1.0.110

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/README.md +15 -0
  2. package/esm2022/bnsights-bbsf-controls.mjs +5 -0
  3. package/esm2022/lib/Shared/Components/app-base-component.mjs +226 -0
  4. package/esm2022/lib/Shared/Components/ng-tag-input.mjs +331 -0
  5. package/esm2022/lib/Shared/Directives/template-name.directive.mjs +18 -0
  6. package/{esm2015/lib/Shared/Enums/CalendarView.js → esm2022/lib/Shared/Enums/CalendarView.mjs} +7 -7
  7. package/{esm2015/lib/Shared/Enums/ControlLayout.js → esm2022/lib/Shared/Enums/ControlLayout.mjs} +5 -5
  8. package/{esm2015/lib/Shared/Enums/Countries.js → esm2022/lib/Shared/Enums/Countries.mjs} +246 -246
  9. package/{esm2015/lib/Shared/Enums/Enums.js → esm2022/lib/Shared/Enums/Enums.mjs} +32 -32
  10. package/{esm2015/lib/Shared/Enums/FileType.js → esm2022/lib/Shared/Enums/FileType.mjs} +21 -21
  11. package/{esm2015/lib/Shared/Enums/FilterType.js → esm2022/lib/Shared/Enums/FilterType.mjs} +10 -10
  12. package/{esm2015/lib/Shared/Enums/FontSize.js → esm2022/lib/Shared/Enums/FontSize.mjs} +6 -6
  13. package/{esm2015/lib/Shared/Enums/ForceDirection.js → esm2022/lib/Shared/Enums/ForceDirection.mjs} +5 -5
  14. package/{esm2015/lib/Shared/Enums/IconPosition.js → esm2022/lib/Shared/Enums/IconPosition.mjs} +5 -5
  15. package/{esm2015/lib/Shared/Enums/ImageType.js → esm2022/lib/Shared/Enums/ImageType.mjs} +9 -9
  16. package/{esm2015/lib/Shared/Enums/InputType.js → esm2022/lib/Shared/Enums/InputType.mjs} +9 -9
  17. package/{esm2015/lib/Shared/Enums/Insert.js → esm2022/lib/Shared/Enums/Insert.mjs} +8 -8
  18. package/{esm2015/lib/Shared/Enums/LanguageMode.js → esm2022/lib/Shared/Enums/LanguageMode.mjs} +10 -10
  19. package/{esm2015/lib/Shared/Enums/LanguageValidation.js → esm2022/lib/Shared/Enums/LanguageValidation.mjs} +5 -5
  20. package/{esm2015/lib/Shared/Enums/Misc.js → esm2022/lib/Shared/Enums/Misc.mjs} +6 -6
  21. package/{esm2015/lib/Shared/Enums/PagingActionMode.js → esm2022/lib/Shared/Enums/PagingActionMode.mjs} +5 -5
  22. package/{esm2015/lib/Shared/Enums/Para.js → esm2022/lib/Shared/Enums/Para.mjs} +8 -8
  23. package/{esm2015/lib/Shared/Enums/PickerType.js → esm2022/lib/Shared/Enums/PickerType.mjs} +6 -6
  24. package/{esm2015/lib/Shared/Enums/SelectMode.js → esm2022/lib/Shared/Enums/SelectMode.mjs} +5 -5
  25. package/{esm2015/lib/Shared/Enums/StartView.js → esm2022/lib/Shared/Enums/StartView.mjs} +6 -6
  26. package/{esm2015/lib/Shared/Enums/Style.js → esm2022/lib/Shared/Enums/Style.mjs} +7 -7
  27. package/{esm2015/lib/Shared/Enums/StyleConfirmationMode.js → esm2022/lib/Shared/Enums/StyleConfirmationMode.mjs} +6 -6
  28. package/{esm2015/lib/Shared/Enums/TagInputView.js → esm2022/lib/Shared/Enums/TagInputView.mjs} +6 -6
  29. package/{esm2015/lib/Shared/Enums/menu-list-enum.js → esm2022/lib/Shared/Enums/menu-list-enum.mjs} +5 -5
  30. package/{esm2015/lib/Shared/Models/Attribute.js → esm2022/lib/Shared/Models/Attribute.mjs} +2 -2
  31. package/{esm2015/lib/Shared/Models/AutocompleteDTO.js → esm2022/lib/Shared/Models/AutocompleteDTO.mjs} +7 -7
  32. package/{esm2015/lib/Shared/Models/AutocompleteOptions.js → esm2022/lib/Shared/Models/AutocompleteOptions.mjs} +23 -23
  33. package/{esm2015/lib/Shared/Models/CalendarEventDTO.js → esm2022/lib/Shared/Models/CalendarEventDTO.mjs} +2 -2
  34. package/{esm2015/lib/Shared/Models/CalendarOptions.js → esm2022/lib/Shared/Models/CalendarOptions.mjs} +18 -18
  35. package/{esm2015/lib/Shared/Models/CancelDTO.js → esm2022/lib/Shared/Models/CancelDTO.mjs} +6 -6
  36. package/{esm2015/lib/Shared/Models/CaptchaStyle.js → esm2022/lib/Shared/Models/CaptchaStyle.mjs} +2 -2
  37. package/{esm2015/lib/Shared/Models/CheckBoxOptions.js → esm2022/lib/Shared/Models/CheckBoxOptions.mjs} +10 -10
  38. package/{esm2015/lib/Shared/Models/ConfirmationModalOptions.js → esm2022/lib/Shared/Models/ConfirmationModalOptions.mjs} +38 -38
  39. package/{esm2015/lib/Shared/Models/ControlOptionsBase.js → esm2022/lib/Shared/Models/ControlOptionsBase.mjs} +12 -12
  40. package/{esm2015/lib/Shared/Models/CustomValidation.js → esm2022/lib/Shared/Models/CustomValidation.mjs} +13 -13
  41. package/{esm2015/lib/Shared/Models/DropdownListItem.js → esm2022/lib/Shared/Models/DropdownListItem.mjs} +3 -3
  42. package/{esm2015/lib/Shared/Models/DropdownOptions.js → esm2022/lib/Shared/Models/DropdownOptions.mjs} +15 -15
  43. package/{esm2015/lib/Shared/Models/EditPersonalImage.js → esm2022/lib/Shared/Models/EditPersonalImage.mjs} +6 -6
  44. package/{esm2015/lib/Shared/Models/EnglishArabicDTO.js → esm2022/lib/Shared/Models/EnglishArabicDTO.mjs} +10 -10
  45. package/{esm2015/lib/Shared/Models/FileDTO.js → esm2022/lib/Shared/Models/FileDTO.mjs} +1 -1
  46. package/{esm2015/lib/Shared/Models/FileUploadModel.js → esm2022/lib/Shared/Models/FileUploadModel.mjs} +2 -2
  47. package/{esm2015/lib/Shared/Models/FileUploadOptions.js → esm2022/lib/Shared/Models/FileUploadOptions.mjs} +10 -10
  48. package/{esm2015/lib/Shared/Models/FilterItem.js → esm2022/lib/Shared/Models/FilterItem.mjs} +7 -7
  49. package/{esm2015/lib/Shared/Models/FormOptions.js → esm2022/lib/Shared/Models/FormOptions.mjs} +27 -27
  50. package/{esm2015/lib/Shared/Models/HtmlEditorOptions.js → esm2022/lib/Shared/Models/HtmlEditorOptions.mjs} +11 -11
  51. package/{esm2015/lib/Shared/Models/ImageUploadOptions.js → esm2022/lib/Shared/Models/ImageUploadOptions.mjs} +13 -13
  52. package/{esm2015/lib/Shared/Models/MapAutoCompleteOptions.js → esm2022/lib/Shared/Models/MapAutoCompleteOptions.mjs} +3 -3
  53. package/{esm2015/lib/Shared/Models/MapAutocompleteDTO.js → esm2022/lib/Shared/Models/MapAutocompleteDTO.mjs} +5 -5
  54. package/{esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js → esm2022/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs} +8 -8
  55. package/{esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js → esm2022/lib/Shared/Models/MultiLingualTextAreaOptions.mjs} +8 -8
  56. package/{esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js → esm2022/lib/Shared/Models/MultilingualControlOptionsBase.mjs} +15 -15
  57. package/{esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js → esm2022/lib/Shared/Models/MultilingualTextBoxOptions.mjs} +13 -13
  58. package/{esm2015/lib/Shared/Models/MultipleFileUploadModel.js → esm2022/lib/Shared/Models/MultipleFileUploadModel.mjs} +8 -8
  59. package/{esm2015/lib/Shared/Models/PagingDTO.js → esm2022/lib/Shared/Models/PagingDTO.mjs} +12 -12
  60. package/{esm2015/lib/Shared/Models/PagingOptions.js → esm2022/lib/Shared/Models/PagingOptions.mjs} +46 -46
  61. package/{esm2015/lib/Shared/Models/PagingPayload.js → esm2022/lib/Shared/Models/PagingPayload.mjs} +2 -2
  62. package/{esm2015/lib/Shared/Models/PhoneOptions.js → esm2022/lib/Shared/Models/PhoneOptions.mjs} +12 -12
  63. package/{esm2015/lib/Shared/Models/ProfileImageUploadOptions.js → esm2022/lib/Shared/Models/ProfileImageUploadOptions.mjs} +10 -10
  64. package/{esm2015/lib/Shared/Models/ProfilePictureDTO.js → esm2022/lib/Shared/Models/ProfilePictureDTO.mjs} +2 -2
  65. package/{esm2015/lib/Shared/Models/RadioButtonItem.js → esm2022/lib/Shared/Models/RadioButtonItem.mjs} +2 -2
  66. package/{esm2015/lib/Shared/Models/RadioButtonOptions.js → esm2022/lib/Shared/Models/RadioButtonOptions.mjs} +3 -3
  67. package/{esm2015/lib/Shared/Models/RangeNumber.js → esm2022/lib/Shared/Models/RangeNumber.mjs} +2 -2
  68. package/{esm2015/lib/Shared/Models/Recaptcha.js → esm2022/lib/Shared/Models/Recaptcha.mjs} +5 -5
  69. package/{esm2015/lib/Shared/Models/RecaptchaOptions.js → esm2022/lib/Shared/Models/RecaptchaOptions.mjs} +21 -21
  70. package/{esm2015/lib/Shared/Models/RepeaterField.js → esm2022/lib/Shared/Models/RepeaterField.mjs} +2 -2
  71. package/{esm2015/lib/Shared/Models/RepeaterOptions.js → esm2022/lib/Shared/Models/RepeaterOptions.mjs} +12 -12
  72. package/{esm2015/lib/Shared/Models/SaveDTO.js → esm2022/lib/Shared/Models/SaveDTO.mjs} +6 -6
  73. package/{esm2015/lib/Shared/Models/TagsInputDTO.js → esm2022/lib/Shared/Models/TagsInputDTO.mjs} +2 -2
  74. package/{esm2015/lib/Shared/Models/TagsInputOptions.js → esm2022/lib/Shared/Models/TagsInputOptions.mjs} +40 -40
  75. package/{esm2015/lib/Shared/Models/TextAreaOptions.js → esm2022/lib/Shared/Models/TextAreaOptions.mjs} +3 -3
  76. package/{esm2015/lib/Shared/Models/TextBoxOptions.js → esm2022/lib/Shared/Models/TextBoxOptions.mjs} +22 -22
  77. package/{esm2015/lib/Shared/Models/ToggleslideOptions.js → esm2022/lib/Shared/Models/ToggleslideOptions.mjs} +8 -8
  78. package/{esm2015/lib/Shared/Models/UploadPersonalImage.js → esm2022/lib/Shared/Models/UploadPersonalImage.mjs} +6 -6
  79. package/{esm2015/lib/Shared/Models/bread-crumb.js → esm2022/lib/Shared/Models/bread-crumb.mjs} +7 -7
  80. package/{esm2015/lib/Shared/Models/control-filter-Item.js → esm2022/lib/Shared/Models/control-filter-Item.mjs} +5 -5
  81. package/{esm2015/lib/Shared/Models/datePickerOptions.js → esm2022/lib/Shared/Models/datePickerOptions.mjs} +22 -22
  82. package/{esm2015/lib/Shared/Models/filter-options.js → esm2022/lib/Shared/Models/filter-options.mjs} +8 -8
  83. package/{esm2015/lib/Shared/Models/page-header-options.js → esm2022/lib/Shared/Models/page-header-options.mjs} +77 -77
  84. package/esm2022/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -0
  85. package/esm2022/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -0
  86. package/{esm2015/lib/Shared/config/environment.js → esm2022/lib/Shared/config/environment.mjs} +11 -11
  87. package/esm2022/lib/Shared/default_intl.mjs +29 -0
  88. package/esm2022/lib/Shared/services/ControlUtility.mjs +162 -0
  89. package/esm2022/lib/Shared/services/GlobalSettings.service.mjs +30 -0
  90. package/esm2022/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
  91. package/esm2022/lib/Shared/services/render-component-service.service.mjs +30 -0
  92. package/esm2022/lib/Shared/services/validationErrorMassage.service.mjs +170 -0
  93. package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +262 -0
  94. package/esm2022/lib/controls/Calendar/Calendar.component.mjs +173 -0
  95. package/esm2022/lib/controls/CheckBox/CheckBox.component.mjs +117 -0
  96. package/esm2022/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -0
  97. package/esm2022/lib/controls/DateTimePicker/DateTimePicker.component.mjs +223 -0
  98. package/esm2022/lib/controls/DropdownList/DropdownList.component.mjs +193 -0
  99. package/esm2022/lib/controls/FileUplaod/FileUplaod.component.mjs +447 -0
  100. package/esm2022/lib/controls/Form/Form.component.mjs +101 -0
  101. package/{esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js → esm2022/lib/controls/HtmlEditor/HtmlEditor.component.mjs} +226 -226
  102. package/esm2022/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
  103. package/esm2022/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +324 -0
  104. package/esm2022/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
  105. package/esm2022/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +429 -0
  106. package/esm2022/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +428 -0
  107. package/esm2022/lib/controls/Paging/JwPagination.component.mjs +156 -0
  108. package/esm2022/lib/controls/Paging/Paging.component.mjs +312 -0
  109. package/esm2022/lib/controls/Phone/Phone.component.mjs +129 -0
  110. package/esm2022/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +376 -0
  111. package/esm2022/lib/controls/RadioButton/RadioButton.component.mjs +109 -0
  112. package/esm2022/lib/controls/Recaptcha/Recaptcha.component.mjs +135 -0
  113. package/esm2022/lib/controls/Repeater/repeater/repeater.component.mjs +125 -0
  114. package/esm2022/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -0
  115. package/esm2022/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -0
  116. package/esm2022/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -0
  117. package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +277 -0
  118. package/esm2022/lib/controls/TextArea/TextArea.component.mjs +196 -0
  119. package/esm2022/lib/controls/TextBox/TextBox.component.mjs +306 -0
  120. package/esm2022/lib/controls/Toggleslide/toggleslide.component.mjs +90 -0
  121. package/esm2022/lib/controls/bbsf-controls.module.mjs +350 -0
  122. package/esm2022/lib/controls/page-header-component/page-header-component.component.mjs +37 -0
  123. package/{esm2015/public-api.js → esm2022/public-api.mjs} +130 -130
  124. package/{fesm2015/bnsights-bbsf-controls.js → fesm2022/bnsights-bbsf-controls.mjs} +8876 -8851
  125. package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -0
  126. package/index.d.ts +5 -0
  127. package/lib/Shared/Components/app-base-component.d.ts +58 -51
  128. package/lib/Shared/Components/ng-tag-input.d.ts +50 -47
  129. package/lib/Shared/Directives/template-name.directive.d.ts +9 -6
  130. package/lib/Shared/Enums/CalendarView.d.ts +6 -6
  131. package/lib/Shared/Enums/ControlLayout.d.ts +4 -4
  132. package/lib/Shared/Enums/Countries.d.ts +245 -245
  133. package/lib/Shared/Enums/Enums.d.ts +30 -30
  134. package/lib/Shared/Enums/FileType.d.ts +20 -20
  135. package/lib/Shared/Enums/FilterType.d.ts +9 -9
  136. package/lib/Shared/Enums/FontSize.d.ts +5 -5
  137. package/lib/Shared/Enums/ForceDirection.d.ts +4 -4
  138. package/lib/Shared/Enums/IconPosition.d.ts +4 -4
  139. package/lib/Shared/Enums/ImageType.d.ts +8 -8
  140. package/lib/Shared/Enums/InputType.d.ts +8 -8
  141. package/lib/Shared/Enums/Insert.d.ts +7 -7
  142. package/lib/Shared/Enums/LanguageMode.d.ts +9 -9
  143. package/lib/Shared/Enums/LanguageValidation.d.ts +4 -4
  144. package/lib/Shared/Enums/Misc.d.ts +5 -5
  145. package/lib/Shared/Enums/PagingActionMode.d.ts +4 -4
  146. package/lib/Shared/Enums/Para.d.ts +7 -7
  147. package/lib/Shared/Enums/PickerType.d.ts +5 -5
  148. package/lib/Shared/Enums/SelectMode.d.ts +4 -4
  149. package/lib/Shared/Enums/StartView.d.ts +5 -5
  150. package/lib/Shared/Enums/Style.d.ts +6 -6
  151. package/lib/Shared/Enums/StyleConfirmationMode.d.ts +5 -5
  152. package/lib/Shared/Enums/TagInputView.d.ts +5 -5
  153. package/lib/Shared/Enums/menu-list-enum.d.ts +4 -4
  154. package/lib/Shared/Models/Attribute.d.ts +4 -4
  155. package/lib/Shared/Models/AutocompleteDTO.d.ts +5 -5
  156. package/lib/Shared/Models/AutocompleteOptions.d.ts +40 -40
  157. package/lib/Shared/Models/CalendarEventDTO.d.ts +8 -8
  158. package/lib/Shared/Models/CalendarOptions.d.ts +23 -23
  159. package/lib/Shared/Models/CancelDTO.d.ts +5 -5
  160. package/lib/Shared/Models/CaptchaStyle.d.ts +7 -7
  161. package/lib/Shared/Models/CheckBoxOptions.d.ts +7 -7
  162. package/lib/Shared/Models/ConfirmationModalOptions.d.ts +21 -21
  163. package/lib/Shared/Models/ControlOptionsBase.d.ts +44 -44
  164. package/lib/Shared/Models/CustomValidation.d.ts +10 -10
  165. package/lib/Shared/Models/DropdownListItem.d.ts +4 -4
  166. package/lib/Shared/Models/DropdownOptions.d.ts +33 -33
  167. package/lib/Shared/Models/EditPersonalImage.d.ts +5 -5
  168. package/lib/Shared/Models/EnglishArabicDTO.d.ts +4 -4
  169. package/lib/Shared/Models/FileDTO.d.ts +19 -19
  170. package/lib/Shared/Models/FileUploadModel.d.ts +4 -4
  171. package/lib/Shared/Models/FileUploadOptions.d.ts +19 -19
  172. package/lib/Shared/Models/FilterItem.d.ts +13 -13
  173. package/lib/Shared/Models/FormOptions.d.ts +16 -16
  174. package/lib/Shared/Models/HtmlEditorOptions.d.ts +31 -31
  175. package/lib/Shared/Models/ImageUploadOptions.d.ts +23 -23
  176. package/lib/Shared/Models/MapAutoCompleteOptions.d.ts +6 -6
  177. package/lib/Shared/Models/MapAutocompleteDTO.d.ts +7 -7
  178. package/lib/Shared/Models/MultiLingualHtmlEditorOptions.d.ts +22 -22
  179. package/lib/Shared/Models/MultiLingualTextAreaOptions.d.ts +12 -12
  180. package/lib/Shared/Models/MultilingualControlOptionsBase.d.ts +77 -77
  181. package/lib/Shared/Models/MultilingualTextBoxOptions.d.ts +12 -12
  182. package/lib/Shared/Models/MultipleFileUploadModel.d.ts +7 -7
  183. package/lib/Shared/Models/PagingDTO.d.ts +11 -11
  184. package/lib/Shared/Models/PagingOptions.d.ts +56 -56
  185. package/lib/Shared/Models/PagingPayload.d.ts +5 -5
  186. package/lib/Shared/Models/PhoneOptions.d.ts +21 -21
  187. package/lib/Shared/Models/ProfileImageUploadOptions.d.ts +28 -28
  188. package/lib/Shared/Models/ProfilePictureDTO.d.ts +13 -13
  189. package/lib/Shared/Models/RadioButtonItem.d.ts +4 -4
  190. package/lib/Shared/Models/RadioButtonOptions.d.ts +8 -8
  191. package/lib/Shared/Models/RangeNumber.d.ts +4 -4
  192. package/lib/Shared/Models/Recaptcha.d.ts +6 -6
  193. package/lib/Shared/Models/RecaptchaOptions.d.ts +18 -18
  194. package/lib/Shared/Models/RepeaterField.d.ts +7 -7
  195. package/lib/Shared/Models/RepeaterOptions.d.ts +19 -19
  196. package/lib/Shared/Models/SaveDTO.d.ts +5 -5
  197. package/lib/Shared/Models/TagsInputDTO.d.ts +6 -6
  198. package/lib/Shared/Models/TagsInputOptions.d.ts +57 -57
  199. package/lib/Shared/Models/TextAreaOptions.d.ts +23 -23
  200. package/lib/Shared/Models/TextBoxOptions.d.ts +37 -37
  201. package/lib/Shared/Models/ToggleslideOptions.d.ts +9 -9
  202. package/lib/Shared/Models/UploadPersonalImage.d.ts +5 -5
  203. package/lib/Shared/Models/bread-crumb.d.ts +6 -6
  204. package/lib/Shared/Models/control-filter-Item.d.ts +6 -6
  205. package/lib/Shared/Models/datePickerOptions.d.ts +29 -29
  206. package/lib/Shared/Models/filter-options.d.ts +7 -7
  207. package/lib/Shared/Models/page-header-options.d.ts +71 -71
  208. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +10 -7
  209. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +10 -7
  210. package/lib/Shared/config/environment.d.ts +1 -1
  211. package/lib/Shared/default_intl.d.ts +21 -18
  212. package/lib/Shared/services/ControlUtility.d.ts +32 -29
  213. package/lib/Shared/services/GlobalSettings.service.d.ts +17 -14
  214. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +10 -7
  215. package/lib/Shared/services/render-component-service.service.d.ts +10 -7
  216. package/lib/Shared/services/validationErrorMassage.service.d.ts +14 -13
  217. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +59 -56
  218. package/lib/controls/Calendar/Calendar.component.d.ts +42 -39
  219. package/lib/controls/CheckBox/CheckBox.component.d.ts +37 -34
  220. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +29 -26
  221. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +61 -58
  222. package/lib/controls/DropdownList/DropdownList.component.d.ts +55 -50
  223. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +58 -55
  224. package/lib/controls/Form/Form.component.d.ts +28 -25
  225. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +49 -46
  226. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +70 -67
  227. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +49 -51
  228. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +65 -62
  229. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +74 -71
  230. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +73 -70
  231. package/lib/controls/Paging/JwPagination.component.d.ts +27 -24
  232. package/lib/controls/Paging/Paging.component.d.ts +57 -54
  233. package/lib/controls/Phone/Phone.component.d.ts +43 -40
  234. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +69 -66
  235. package/lib/controls/RadioButton/RadioButton.component.d.ts +37 -34
  236. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +41 -38
  237. package/lib/controls/Repeater/repeater/repeater.component.d.ts +29 -26
  238. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +23 -20
  239. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +11 -8
  240. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +19 -16
  241. package/lib/controls/TagsInput/TagsInput.component.d.ts +58 -55
  242. package/lib/controls/TextArea/TextArea.component.d.ts +51 -48
  243. package/lib/controls/TextBox/TextBox.component.d.ts +66 -63
  244. package/lib/controls/Toggleslide/toggleslide.component.d.ts +33 -30
  245. package/lib/controls/bbsf-controls.module.d.ts +68 -10
  246. package/lib/controls/page-header-component/page-header-component.component.d.ts +20 -17
  247. package/package.json +61 -78
  248. package/public-api.d.ts +117 -117
  249. package/src/lib/assets/Style.scss +4 -4
  250. package/bnsights-bbsf-controls-1.0.107.tgz +0 -0
  251. package/bnsights-bbsf-controls.d.ts +0 -5
  252. package/bnsights-bbsf-controls.metadata.json +0 -1
  253. package/bundles/bnsights-bbsf-controls.umd.js +0 -9636
  254. package/bundles/bnsights-bbsf-controls.umd.js.map +0 -1
  255. package/esm2015/bnsights-bbsf-controls.js +0 -6
  256. package/esm2015/lib/Shared/Components/app-base-component.js +0 -202
  257. package/esm2015/lib/Shared/Components/ng-tag-input.js +0 -323
  258. package/esm2015/lib/Shared/Directives/template-name.directive.js +0 -18
  259. package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +0 -20
  260. package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +0 -20
  261. package/esm2015/lib/Shared/default_intl.js +0 -29
  262. package/esm2015/lib/Shared/services/ControlUtility.js +0 -164
  263. package/esm2015/lib/Shared/services/GlobalSettings.service.js +0 -28
  264. package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +0 -22
  265. package/esm2015/lib/Shared/services/render-component-service.service.js +0 -30
  266. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +0 -172
  267. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +0 -266
  268. package/esm2015/lib/controls/Calendar/Calendar.component.js +0 -177
  269. package/esm2015/lib/controls/CheckBox/CheckBox.component.js +0 -118
  270. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +0 -139
  271. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +0 -227
  272. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +0 -192
  273. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +0 -447
  274. package/esm2015/lib/controls/Form/Form.component.js +0 -106
  275. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +0 -347
  276. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +0 -325
  277. package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +0 -429
  278. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +0 -434
  279. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +0 -433
  280. package/esm2015/lib/controls/Paging/JwPagination.component.js +0 -129
  281. package/esm2015/lib/controls/Paging/Paging.component.js +0 -312
  282. package/esm2015/lib/controls/Phone/Phone.component.js +0 -129
  283. package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +0 -371
  284. package/esm2015/lib/controls/RadioButton/RadioButton.component.js +0 -111
  285. package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +0 -135
  286. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +0 -117
  287. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +0 -748
  288. package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +0 -19
  289. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +0 -108
  290. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +0 -278
  291. package/esm2015/lib/controls/TextArea/TextArea.component.js +0 -197
  292. package/esm2015/lib/controls/TextBox/TextBox.component.js +0 -309
  293. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +0 -90
  294. package/esm2015/lib/controls/bbsf-controls.module.js +0 -240
  295. package/esm2015/lib/controls/page-header-component/page-header-component.component.js +0 -32
  296. package/fesm2015/bnsights-bbsf-controls.js.map +0 -1
  297. package/src/lib/assets/.gitkeep +0 -0
@@ -1,129 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- export class JwPaginationComponent {
3
- constructor() {
4
- this.changePage = new EventEmitter();
5
- this.initialPage = 1;
6
- this.pageSize = 10;
7
- this.maxPages = 10;
8
- this.ShowFirstAndLast = false;
9
- this.pager = {};
10
- }
11
- ngOnInit() {
12
- // set page if items array isn't empty
13
- if (this.items && this.items.length) {
14
- this.setPage(this.initialPage);
15
- }
16
- }
17
- ngOnChanges(changes) {
18
- if (changes.items.firstChange)
19
- return;
20
- // reset page if items array has changed
21
- if (changes.items.currentValue !== changes.items.previousValue) {
22
- this.setPage(this.initialPage);
23
- }
24
- }
25
- setPage(page) {
26
- // get new pager object for specified page
27
- this.pager = this.paginate(this.items.length, page, this.pageSize, this.maxPages);
28
- // get new page of items from items array
29
- var pageOfItems = this.items.slice(this.pager.startIndex, this.pager.endIndex + 1);
30
- // call change page function in parent component
31
- this.changePage.emit(this.pager.currentPage);
32
- }
33
- paginate(totalItems, currentPage, pageSize, maxPages) {
34
- if (currentPage === void 0) {
35
- currentPage = 1;
36
- }
37
- if (pageSize === void 0) {
38
- pageSize = 10;
39
- }
40
- if (maxPages === void 0) {
41
- maxPages = 10;
42
- }
43
- // calculate total pages
44
- var totalPages = Math.ceil(totalItems / pageSize);
45
- // ensure current page isn't out of range
46
- if (currentPage < 1) {
47
- currentPage = 1;
48
- }
49
- else if (currentPage > totalPages) {
50
- currentPage = totalPages;
51
- }
52
- var startPage, endPage;
53
- if (totalPages <= maxPages) {
54
- // total pages less than max so show all pages
55
- startPage = 1;
56
- endPage = totalPages;
57
- }
58
- else {
59
- // total pages more than max so calculate start and end pages
60
- var maxPagesBeforeCurrentPage = Math.floor(maxPages / 2);
61
- var maxPagesAfterCurrentPage = Math.ceil(maxPages / 2) - 1;
62
- if (currentPage <= maxPagesBeforeCurrentPage) {
63
- // current page near the start
64
- startPage = 1;
65
- endPage = maxPages;
66
- }
67
- else if (currentPage + maxPagesAfterCurrentPage >= totalPages) {
68
- // current page near the end
69
- startPage = totalPages - maxPages + 1;
70
- endPage = totalPages;
71
- }
72
- else {
73
- // current page somewhere in the middle
74
- startPage = currentPage - maxPagesBeforeCurrentPage;
75
- endPage = currentPage + maxPagesAfterCurrentPage;
76
- }
77
- }
78
- // calculate start and end item indexes
79
- var startIndex = (currentPage - 1) * pageSize;
80
- var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);
81
- // create an array of pages to ng-repeat in the pager control
82
- var pages = Array.from(Array((endPage + 1) - startPage).keys()).map(function (i) { return startPage + i; });
83
- // return object with all pager properties required by the view
84
- return {
85
- totalItems: totalItems,
86
- currentPage: currentPage,
87
- pageSize: pageSize,
88
- totalPages: totalPages,
89
- startPage: startPage,
90
- endPage: endPage,
91
- startIndex: startIndex,
92
- endIndex: endIndex,
93
- pages: pages
94
- };
95
- }
96
- }
97
- JwPaginationComponent.decorators = [
98
- { type: Component, args: [{
99
- selector: 'jw-pagination',
100
- template: `
101
- <ul *ngIf="pager.pages && pager.pages.length" class="pagination">
102
- <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === 1}" class="page-item first-item">
103
- <a (click)="setPage(1)" class="page-link">❮❮</a>
104
- </li>
105
- <li [ngClass]="{disabled:pager.currentPage === 1}" class="page-item previous-item">
106
- <a (click)="setPage(pager.currentPage - 1)" class="page-link">❮</a>
107
- </li>
108
- <li *ngFor="let page of pager.pages" [ngClass]="{active:pager.currentPage === page}" class="page-item number-item">
109
- <a (click)="setPage(page)" class="page-link">{{page}}</a>
110
- </li>
111
- <li [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item next-item">
112
- <a (click)="setPage(pager.currentPage + 1)" class="page-link">❯</a>
113
- </li>
114
- <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item last-item">
115
- <a (click)="setPage(pager.totalPages)" class="page-link">❯❯</a>
116
- </li>
117
- </ul>
118
- `
119
- },] }
120
- ];
121
- JwPaginationComponent.propDecorators = {
122
- items: [{ type: Input }],
123
- changePage: [{ type: Output }],
124
- initialPage: [{ type: Input }],
125
- pageSize: [{ type: Input }],
126
- maxPages: [{ type: Input }],
127
- ShowFirstAndLast: [{ type: Input }]
128
- };
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSndQYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9QYWdpbmcvSndQYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQXlCekcsTUFBTSxPQUFPLHFCQUFxQjtJQXZCbEM7UUF5QmMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFHbEMsVUFBSyxHQUFRLEVBQUUsQ0FBQztJQXVGcEIsQ0FBQztJQXJGRyxRQUFRO1FBQ0osc0NBQXNDO1FBQ3RDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVc7WUFDekIsT0FBTTtRQUNWLHdDQUF3QztRQUN4QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2hCLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFH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QUMsQ0FBQyxDQUFDLENBQUM7UUFDNUcsK0RBQStEO1FBQy9ELE9BQU87WUFDSCxVQUFVLEVBQUUsVUFBVTtZQUN0QixXQUFXLEVBQUUsV0FBVztZQUN4QixRQUFRLEVBQUUsUUFBUTtZQUNsQixVQUFVLEVBQUUsVUFBVTtZQUN0QixTQUFTLEVBQUUsU0FBUztZQUNwQixPQUFPLEVBQUUsT0FBTztZQUNoQixVQUFVLEVBQUUsVUFBVTtZQUN0QixRQUFRLEVBQUUsUUFBUTtZQUNsQixLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7SUFDTixDQUFDOzs7WUFySEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCYjthQUNBOzs7b0JBR0ksS0FBSzt5QkFDTCxNQUFNOzBCQUNOLEtBQUs7dUJBQ0wsS0FBSzt1QkFDTCxLQUFLOytCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdqdy1wYWdpbmF0aW9uJyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgPHVsICpuZ0lmPVwicGFnZXIucGFnZXMgJiYgcGFnZXIucGFnZXMubGVuZ3RoXCIgY2xhc3M9XCJwYWdpbmF0aW9uXCI+XHJcbiAgPGxpICpuZ0lmPVwiU2hvd0ZpcnN0QW5kTGFzdFwiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDpwYWdlci5jdXJyZW50UGFnZSA9PT0gMX1cIiBjbGFzcz1cInBhZ2UtaXRlbSBmaXJzdC1pdGVtXCI+XHJcbiAgICAgIDxhIChjbGljayk9XCJzZXRQYWdlKDEpXCIgY2xhc3M9XCJwYWdlLWxpbmtcIj7ina7ina48L2E+XHJcbiAgPC9saT5cclxuICA8bGkgW25nQ2xhc3NdPVwie2Rpc2FibGVkOnBhZ2VyLmN1cnJlbnRQYWdlID09PSAxfVwiIGNsYXNzPVwicGFnZS1pdGVtIHByZXZpb3VzLWl0ZW1cIj5cclxuICAgICAgPGEgKGNsaWNrKT1cInNldFBhZ2UocGFnZXIuY3VycmVudFBhZ2UgLSAxKVwiIGNsYXNzPVwicGFnZS1saW5rXCI+4p2uPC9hPlxyXG4gIDwvbGk+XHJcbiAgPGxpICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VyLnBhZ2VzXCIgW25nQ2xhc3NdPVwie2FjdGl2ZTpwYWdlci5jdXJyZW50UGFnZSA9PT0gcGFnZX1cIiBjbGFzcz1cInBhZ2UtaXRlbSBudW1iZXItaXRlbVwiPlxyXG4gICAgICA8YSAoY2xpY2spPVwic2V0UGFnZShwYWdlKVwiIGNsYXNzPVwicGFnZS1saW5rXCI+e3twYWdlfX08L2E+XHJcbiAgPC9saT5cclxuICA8bGkgW25nQ2xhc3NdPVwie2Rpc2FibGVkOnBhZ2VyLmN1cnJlbnRQYWdlID09PSBwYWdlci50b3RhbFBhZ2VzfVwiIGNsYXNzPVwicGFnZS1pdGVtIG5leHQtaXRlbVwiPlxyXG4gICAgICA8YSAoY2xpY2spPVwic2V0UGFnZShwYWdlci5jdXJyZW50UGFnZSArIDEpXCIgY2xhc3M9XCJwYWdlLWxpbmtcIj7ina88L2E+XHJcbiAgPC9saT5cclxuICA8bGkgICpuZ0lmPVwiU2hvd0ZpcnN0QW5kTGFzdFwiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDpwYWdlci5jdXJyZW50UGFnZSA9PT0gcGFnZXIudG90YWxQYWdlc31cIiBjbGFzcz1cInBhZ2UtaXRlbSBsYXN0LWl0ZW1cIj5cclxuICAgICAgPGEgKGNsaWNrKT1cInNldFBhZ2UocGFnZXIudG90YWxQYWdlcylcIiBjbGFzcz1cInBhZ2UtbGlua1wiPuKdr+KdrzwvYT5cclxuICA8L2xpPlxyXG48L3VsPlxyXG5gXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgSndQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgQElucHV0KCkgaXRlbXM6IEFycmF5PGFueT47XHJcbiAgICBAT3V0cHV0KCkgY2hhbmdlUGFnZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBJbnB1dCgpIGluaXRpYWxQYWdlID0gMTtcclxuICAgIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XHJcbiAgICBASW5wdXQoKSBtYXhQYWdlcyA9IDEwO1xyXG4gICAgQElucHV0KCkgU2hvd0ZpcnN0QW5kTGFzdCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICBwYWdlcjogYW55ID0ge307XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLy8gc2V0IHBhZ2UgaWYgaXRlbXMgYXJyYXkgaXNuJ3QgZW1wdHlcclxuICAgICAgICBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhZ2UodGhpcy5pbml0aWFsUGFnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5pdGVtcy5maXJzdENoYW5nZSlcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgLy8gcmVzZXQgcGFnZSBpZiBpdGVtcyBhcnJheSBoYXMgY2hhbmdlZFxyXG4gICAgICAgIGlmIChjaGFuZ2VzLml0ZW1zLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5pdGVtcy5wcmV2aW91c1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnZSh0aGlzLmluaXRpYWxQYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UGFnZShwYWdlOiBudW1iZXIpIHtcclxuICAgICAgICAvLyBnZXQgbmV3IHBhZ2VyIG9iamVjdCBmb3Igc3BlY2lmaWVkIHBhZ2VcclxuICAgICAgICB0aGlzLnBhZ2VyID0gdGhpcy5wYWdpbmF0ZSh0aGlzLml0ZW1zLmxlbmd0aCwgcGFnZSwgdGhpcy5wYWdlU2l6ZSwgdGhpcy5tYXhQYWdlcyk7XHJcblxyXG4gICAgICAgIC8vIGdldCBuZXcgcGFnZSBvZiBpdGVtcyBmcm9tIGl0ZW1zIGFycmF5XHJcbiAgICAgICAgdmFyIHBhZ2VPZkl0ZW1zID0gdGhpcy5pdGVtcy5zbGljZSh0aGlzLnBhZ2VyLnN0YXJ0SW5kZXgsIHRoaXMucGFnZXIuZW5kSW5kZXggKyAxKTtcclxuXHJcbiAgICAgICAgLy8gY2FsbCBjaGFuZ2UgcGFnZSBmdW5jdGlvbiBpbiBwYXJlbnQgY29tcG9uZW50XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYWdlLmVtaXQodGhpcy5wYWdlci5jdXJyZW50UGFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGFnaW5hdGUodG90YWxJdGVtcywgY3VycmVudFBhZ2UsIHBhZ2VTaXplLCBtYXhQYWdlcykge1xyXG4gICAgICAgIGlmIChjdXJyZW50UGFnZSA9PT0gdm9pZCAwKSB7IGN1cnJlbnRQYWdlID0gMTsgfVxyXG4gICAgICAgIGlmIChwYWdlU2l6ZSA9PT0gdm9pZCAwKSB7IHBhZ2VTaXplID0gMTA7IH1cclxuICAgICAgICBpZiAobWF4UGFnZXMgPT09IHZvaWQgMCkgeyBtYXhQYWdlcyA9IDEwOyB9XHJcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRvdGFsIHBhZ2VzXHJcbiAgICAgICAgdmFyIHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodG90YWxJdGVtcyAvIHBhZ2VTaXplKTtcclxuICAgICAgICAvLyBlbnN1cmUgY3VycmVudCBwYWdlIGlzbid0IG91dCBvZiByYW5nZVxyXG4gICAgICAgIGlmIChjdXJyZW50UGFnZSA8IDEpIHtcclxuICAgICAgICAgICAgY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjdXJyZW50UGFnZSA+IHRvdGFsUGFnZXMpIHtcclxuICAgICAgICAgICAgY3VycmVudFBhZ2UgPSB0b3RhbFBhZ2VzO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgc3RhcnRQYWdlLCBlbmRQYWdlO1xyXG4gICAgICAgIGlmICh0b3RhbFBhZ2VzIDw9IG1heFBhZ2VzKSB7XHJcbiAgICAgICAgICAgIC8vIHRvdGFsIHBhZ2VzIGxlc3MgdGhhbiBtYXggc28gc2hvdyBhbGwgcGFnZXNcclxuICAgICAgICAgICAgc3RhcnRQYWdlID0gMTtcclxuICAgICAgICAgICAgZW5kUGFnZSA9IHRvdGFsUGFnZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyB0b3RhbCBwYWdlcyBtb3JlIHRoYW4gbWF4IHNvIGNhbGN1bGF0ZSBzdGFydCBhbmQgZW5kIHBhZ2VzXHJcbiAgICAgICAgICAgIHZhciBtYXhQYWdlc0JlZm9yZUN1cnJlbnRQYWdlID0gTWF0aC5mbG9vcihtYXhQYWdlcyAvIDIpO1xyXG4gICAgICAgICAgICB2YXIgbWF4UGFnZXNBZnRlckN1cnJlbnRQYWdlID0gTWF0aC5jZWlsKG1heFBhZ2VzIC8gMikgLSAxO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgPD0gbWF4UGFnZXNCZWZvcmVDdXJyZW50UGFnZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gY3VycmVudCBwYWdlIG5lYXIgdGhlIHN0YXJ0XHJcbiAgICAgICAgICAgICAgICBzdGFydFBhZ2UgPSAxO1xyXG4gICAgICAgICAgICAgICAgZW5kUGFnZSA9IG1heFBhZ2VzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRQYWdlICsgbWF4UGFnZXNBZnRlckN1cnJlbnRQYWdlID49IHRvdGFsUGFnZXMpIHtcclxuICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgcGFnZSBuZWFyIHRoZSBlbmRcclxuICAgICAgICAgICAgICAgIHN0YXJ0UGFnZSA9IHRvdGFsUGFnZXMgLSBtYXhQYWdlcyArIDE7XHJcbiAgICAgICAgICAgICAgICBlbmRQYWdlID0gdG90YWxQYWdlcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgcGFnZSBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZVxyXG4gICAgICAgICAgICAgICAgc3RhcnRQYWdlID0gY3VycmVudFBhZ2UgLSBtYXhQYWdlc0JlZm9yZUN1cnJlbnRQYWdlO1xyXG4gICAgICAgICAgICAgICAgZW5kUGFnZSA9IGN1cnJlbnRQYWdlICsgbWF4UGFnZXNBZnRlckN1cnJlbnRQYWdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNhbGN1bGF0ZSBzdGFydCBhbmQgZW5kIGl0ZW0gaW5kZXhlc1xyXG4gICAgICAgIHZhciBzdGFydEluZGV4ID0gKGN1cnJlbnRQYWdlIC0gMSkgKiBwYWdlU2l6ZTtcclxuICAgICAgICB2YXIgZW5kSW5kZXggPSBNYXRoLm1pbihzdGFydEluZGV4ICsgcGFnZVNpemUgLSAxLCB0b3RhbEl0ZW1zIC0gMSk7XHJcbiAgICAgICAgLy8gY3JlYXRlIGFuIGFycmF5IG9mIHBhZ2VzIHRvIG5nLXJlcGVhdCBpbiB0aGUgcGFnZXIgY29udHJvbFxyXG4gICAgICAgIHZhciBwYWdlcyA9IEFycmF5LmZyb20oQXJyYXkoKGVuZFBhZ2UgKyAxKSAtIHN0YXJ0UGFnZSkua2V5cygpKS5tYXAoZnVuY3Rpb24gKGkpIHsgcmV0dXJuIHN0YXJ0UGFnZSArIGk7IH0pO1xyXG4gICAgICAgIC8vIHJldHVybiBvYmplY3Qgd2l0aCBhbGwgcGFnZXIgcHJvcGVydGllcyByZXF1aXJlZCBieSB0aGUgdmlld1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRvdGFsSXRlbXM6IHRvdGFsSXRlbXMsXHJcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBjdXJyZW50UGFnZSxcclxuICAgICAgICAgICAgcGFnZVNpemU6IHBhZ2VTaXplLFxyXG4gICAgICAgICAgICB0b3RhbFBhZ2VzOiB0b3RhbFBhZ2VzLFxyXG4gICAgICAgICAgICBzdGFydFBhZ2U6IHN0YXJ0UGFnZSxcclxuICAgICAgICAgICAgZW5kUGFnZTogZW5kUGFnZSxcclxuICAgICAgICAgICAgc3RhcnRJbmRleDogc3RhcnRJbmRleCxcclxuICAgICAgICAgICAgZW5kSW5kZXg6IGVuZEluZGV4LFxyXG4gICAgICAgICAgICBwYWdlczogcGFnZXNcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxufSJdfQ==
@@ -1,312 +0,0 @@
1
- import { Component, Output, EventEmitter, Input } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { HttpClient } from '@angular/common/http';
4
- import { PagingDTO } from '../../Shared/Models/PagingDTO';
5
- import { Subscription } from 'rxjs';
6
- import { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';
7
- import { FilterType } from '../../Shared/Enums/FilterType';
8
- import { RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';
9
- import { plainToClass } from 'class-transformer';
10
- // tslint:disable-next-line: no-conflicting-lifecycle
11
- export class PagingComponent {
12
- constructor(utilityService, http, router, onChangeService, requestHandlerService) {
13
- this.utilityService = utilityService;
14
- this.http = http;
15
- this.router = router;
16
- this.onChangeService = onChangeService;
17
- this.requestHandlerService = requestHandlerService;
18
- this.items = [];
19
- this.result = [];
20
- this.pagerConfig = null;
21
- this.totalRow = 0;
22
- this.pageSize = 10;
23
- this.Pages = 0;
24
- this.CurrentPage = 1;
25
- this.ShowPageSizeOption = true;
26
- this.ShowFirstAndLast = true;
27
- this.hidePaginationWhenPageSizeEqualOne = true;
28
- this.Sum = 0;
29
- this.Throttle = 300;
30
- this.ScrollDistance = 1;
31
- this.ScrollUpDistance = 2;
32
- this.direction = '';
33
- this.IsFirstCall = true;
34
- this.Items = new EventEmitter();
35
- this.subscriptions = new Subscription();
36
- this.ReinitializePaging = () => {
37
- this.IsFirstCall = true;
38
- this.getItemList(1, true);
39
- };
40
- this.UpdatePaging = () => {
41
- //this.IsFirstCall=true;
42
- this.getItemList(this.CurrentPage);
43
- };
44
- }
45
- ngOnDestroy() {
46
- this.subscriptions.unsubscribe();
47
- }
48
- ngOnInit() {
49
- if (this.options.IsLoadMoreControl)
50
- this.Sum = this.options.PageSize;
51
- if (this.options.DropdownFiltersControlNames != null && this.options.DropdownFiltersControlNames.length > 0) {
52
- const DropdownFiltersControlNames = this.options.DropdownFiltersControlNames;
53
- this.subscriptions.add(this.onChangeService.GetValue().subscribe((value) => {
54
- let result = this.options.DropdownFiltersControlNames.filter((item) => item == value);
55
- if (result.length > 0) {
56
- this.IsFirstCall = true;
57
- this.CurrentPage = 1;
58
- this.getItemList(this.CurrentPage, true);
59
- }
60
- }));
61
- }
62
- if (this.options.BootstrapDatePickersFiltersControlNames != null && this.options.BootstrapDatePickersFiltersControlNames.length > 0) {
63
- const BootstrapDatePickersFiltersControlNames = this.options.BootstrapDatePickersFiltersControlNames;
64
- this.subscriptions.add(this.onChangeService.GetValue().subscribe((value) => {
65
- let result = this.options.BootstrapDatePickersFiltersControlNames.filter((item) => item == value);
66
- if (result.length > 0) {
67
- this.IsFirstCall = true;
68
- this.CurrentPage = 1;
69
- this.getItemList(this.CurrentPage, true);
70
- }
71
- }));
72
- }
73
- this.IsFirstCall = true;
74
- this.getItemList(this.CurrentPage, true);
75
- }
76
- ngAfterViewInit() {
77
- if (this.options.OnClickFiltersControlNames != null && this.options.OnClickFiltersControlNames.length > 0) {
78
- const OnClickFiltersControlNames = this.options.OnClickFiltersControlNames;
79
- for (let index = 0; index < OnClickFiltersControlNames.length; index++) {
80
- const OnClickFiltersControlName = OnClickFiltersControlNames[index];
81
- document.getElementById(OnClickFiltersControlName).addEventListener("click", () => {
82
- this.CurrentPage = 1;
83
- this.IsFirstCall = true;
84
- this.getItemList(this.CurrentPage, true);
85
- }, false);
86
- }
87
- }
88
- if (this.options.OnKeyPressFiltersControlNames != null && this.options.OnKeyPressFiltersControlNames.length > 0) {
89
- const OnKeyPressFiltersControlNames = this.options.OnKeyPressFiltersControlNames;
90
- for (let index = 0; index < OnKeyPressFiltersControlNames.length; index++) {
91
- const OnKeyPressFiltersControlName = OnKeyPressFiltersControlNames[index];
92
- let element = this.group.get(OnKeyPressFiltersControlName).nativeElement;
93
- element.addEventListener("keypress", (e) => {
94
- if (e.key == "Enter") {
95
- this.CurrentPage = 1;
96
- this.IsFirstCall = true;
97
- this.getItemList(this.CurrentPage, true);
98
- }
99
- }, false);
100
- }
101
- }
102
- //Add click event on Reset Filter button
103
- if (this.options.ResetFilterButtonName != null) {
104
- const button = document.getElementsByName(this.options.ResetFilterButtonName)[0];
105
- if (button != undefined) {
106
- let element = button;
107
- element.addEventListener("click", (e) => {
108
- this.clearFilters();
109
- }, false);
110
- }
111
- }
112
- if (this.options.TypeaheadSearchControlNames != null && this.options.TypeaheadSearchControlNames.length > 0) {
113
- const TypeaheadSearchControlNames = this.options.TypeaheadSearchControlNames;
114
- for (let index = 0; index < TypeaheadSearchControlNames.length; index++) {
115
- const TypeaheadSearchControlName = TypeaheadSearchControlNames[index];
116
- document.getElementById(TypeaheadSearchControlName).addEventListener("keypress", (e) => {
117
- if (e.key == "Enter") {
118
- this.CurrentPage = 1;
119
- this.IsFirstCall = true;
120
- this.getItemList(this.CurrentPage, true);
121
- }
122
- }, false);
123
- }
124
- }
125
- }
126
- onDropDownChange(result) {
127
- if (result) {
128
- this.CurrentPage = 1;
129
- this.IsFirstCall = true;
130
- this.getItemList(this.CurrentPage, true);
131
- }
132
- }
133
- onChangePage(Page) {
134
- if (Page == 0)
135
- return;
136
- if (Page > 0) {
137
- if (this.IsFirstCall) {
138
- this.IsFirstCall = false;
139
- return;
140
- }
141
- this.CurrentPage = Page;
142
- this.getItemList(Page);
143
- }
144
- }
145
- changePageSize(e) {
146
- this.options.PageSize = e.target.value;
147
- this.CurrentPage = 1;
148
- this.IsFirstCall = true;
149
- this.getItemList(this.CurrentPage, true);
150
- }
151
- onScrollDown() {
152
- this.Sum += this.options.PageSize;
153
- this.CurrentPage = 1;
154
- this.IsFirstCall = true;
155
- this.direction = 'down';
156
- this.getItemList(this.CurrentPage, true);
157
- }
158
- getItemList(page, IsFilterUpdated = false) {
159
- if (this.options.StartPagingCallback)
160
- this.options.StartPagingCallback.call(null);
161
- let pagingDTO = new PagingDTO();
162
- let size = Number.parseInt(this.options.PageSize.toString());
163
- if (this.options.IsLoadMoreControl)
164
- pagingDTO.PageCount = this.Sum;
165
- else
166
- pagingDTO.PageCount = size;
167
- pagingDTO.CurrentPageNumber = page;
168
- pagingDTO.TotalCount = this.totalRow;
169
- pagingDTO.IsFilterUpdated = IsFilterUpdated;
170
- let filters = {};
171
- filters = this.getFiltersValue();
172
- //Set Filters object that sent to action URL
173
- let filtersDTO = {
174
- PagingDTO: pagingDTO,
175
- Filters: filters
176
- };
177
- let requestOptions = new RequestOptionsModel();
178
- requestOptions.disableBlockUI = this.options.DisableBlockUI;
179
- this.requestHandlerService.post(this.options.ActionPostURL, this.options.Filters && this.options.Filters.length > 0 ? filtersDTO : pagingDTO, null, null, requestOptions)
180
- .subscribe((responseData) => {
181
- this.result = responseData.items; //this.castItems(responseData.items);
182
- let castedResult = plainToClass(this.options.TypeOfResponse, this.result, { excludeExtraneousValues: true });
183
- this.Items.emit(castedResult);
184
- this.totalRow = responseData.totalCount;
185
- if (IsFilterUpdated) {
186
- this.items = [];
187
- this.Pages = Math.ceil((this.totalRow / this.options.PageSize));
188
- this.items = Array(this.totalRow);
189
- this.setText(this.Pages, this.totalRow);
190
- }
191
- }, (error) => {
192
- if (error.status == 401)
193
- this.router.navigate(["/Admin/account/login"]);
194
- });
195
- }
196
- castItems(objectArr) {
197
- let originalArray = [];
198
- for (let index = 0; index < objectArr.length; index++) {
199
- const element = objectArr[index];
200
- let key, keys = Object.keys(element);
201
- let n = keys.length;
202
- let newObject = {};
203
- while (n--) {
204
- key = keys[n];
205
- let Okey = key;
206
- newObject[key.charAt(0).toUpperCase() + Okey.slice(1)] = element[key];
207
- }
208
- let finalObject = newObject;
209
- originalArray.push(finalObject);
210
- }
211
- return originalArray;
212
- }
213
- setText(pagesNumber, itemsNumber) {
214
- if (this.utilityService.isCurrentLanguageArabic()) {
215
- //Set pages text
216
- if (pagesNumber < 3 || pagesNumber > 10)
217
- this.pagesText = this.utilityService.getResourceValue("Page");
218
- else
219
- this.pagesText = this.utilityService.getResourceValue("Pages");
220
- //Set items text
221
- if (itemsNumber < 3 || itemsNumber > 10)
222
- this.itemsText = this.utilityService.getResourceValue("Item");
223
- else
224
- this.itemsText = this.utilityService.getResourceValue("Items");
225
- }
226
- else {
227
- //Set pages text
228
- if (pagesNumber > 1)
229
- this.pagesText = this.utilityService.getResourceValue("Pages");
230
- else
231
- this.pagesText = this.utilityService.getResourceValue("Page");
232
- //Set items text
233
- if (itemsNumber > 1)
234
- this.itemsText = this.utilityService.getResourceValue("Items");
235
- else
236
- this.itemsText = this.utilityService.getResourceValue("Item");
237
- }
238
- }
239
- clearFilters() {
240
- if (this.options.Filters != null && this.options.Filters != []) {
241
- for (let index = 0; index < this.options.Filters.length; index++) {
242
- if (this.options.Filters[index].FormControlName != null && this.options.Filters[index].FormControlName != "") {
243
- const FormControlName = this.options.Filters[index].FormControlName;
244
- this.group.controls[FormControlName].setValue(null);
245
- }
246
- }
247
- this.ReinitializePaging();
248
- }
249
- }
250
- getFiltersValue() {
251
- let filters = {};
252
- if (this.options.Filters != null && this.options.Filters != []) {
253
- for (let index = 0; index < this.options.Filters.length; index++) {
254
- if (this.options.Filters[index].FormControlName != null && this.options.Filters[index].FormControlName != "") {
255
- const FormControlName = this.options.Filters[index].FormControlName;
256
- let ControlValue = this.group.controls[FormControlName].value;
257
- if (ControlValue != undefined && ControlValue != null && ControlValue != "") {
258
- if (this.options.Filters[index].FilterType == FilterType.DatePicker) {
259
- //if (Array.isArray(ControlValue)) {
260
- // for (let element = 0; element < ControlValue.length; element++) {
261
- // const value = ControlValue[element];
262
- // filters[this.options.Filters[index].ActionParameterName] = value;
263
- // }
264
- //}
265
- //else {
266
- filters[this.options.Filters[index].ActionParameterName] = ControlValue;
267
- //}
268
- }
269
- else {
270
- if (this.options.Filters[index].FilterType == FilterType.AutocompleteTextBox)
271
- ControlValue = ControlValue;
272
- if (this.options.Filters[index].FilterType == FilterType.TagInput)
273
- ControlValue = ControlValue;
274
- filters[this.options.Filters[index].ActionParameterName] = ControlValue;
275
- }
276
- }
277
- else {
278
- filters[this.options.Filters[index].ActionParameterName] = null;
279
- }
280
- }
281
- else {
282
- const ElementjQuerySelector = this.options.Filters[index].jQuerySelector;
283
- let ElementValue = document.querySelector(ElementjQuerySelector).value;
284
- if (ElementValue != undefined && ElementValue != null)
285
- filters[this.options.Filters[index].ActionParameterName] = ElementValue;
286
- else
287
- filters[this.options.Filters[index].ActionParameterName] = null;
288
- }
289
- }
290
- }
291
- return filters;
292
- }
293
- }
294
- PagingComponent.decorators = [
295
- { type: Component, args: [{
296
- selector: 'BBSF-Paging',
297
- template: "<div class=\"form-group bbsf-control bbsf-paging\" *ngIf=\"(result.length > 0)\">\r\n <!--paging container-->\r\n <div class=\"bbsf-paging-container\" *ngIf=\"!options.IsLoadMoreControl\">\r\n <!--items-->\r\n <div class=\"bbsf-pagination\">\r\n <jw-pagination [items]=\"items\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\"\r\n (changePage)=\"onChangePage($event)\" [pageSize]=\"options.PageSize\" [ShowFirstAndLast]=\"options.ShowFirstAndLast\"\r\n [initialPage]=\"1\" [maxPages]=\"10\"></jw-pagination>\r\n </div>\r\n <!--page count-->\r\n <div class=\"bbsf-pages\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\">\r\n <select (change)=\"changePageSize($event)\" *ngIf=\"options.ShowPageSizeOption\">\r\n <option>10</option>\r\n <option>20</option>\r\n <option>50</option>\r\n <option>100</option>\r\n <option>200</option>\r\n </select>\r\n <div class=\"bssf-items\">\r\n <strong>{{totalRow}}</strong> {{itemsText}} {{utilityService.getResourceValue(\"In\")}} <strong> {{Pages}}</strong> {{pagesText}}\r\n </div>\r\n </div>\r\n </div>\r\n <!--load more-->\r\n <div class=\"bbsf-loadmore\" *ngIf=\"options.IsLoadMoreControl\">\r\n <div class=\"search-results\" infinite-scroll [infiniteScrollDistance]=\"ScrollDistance\"\r\n [infiniteScrollUpDistance]=\"ScrollUpDistance\" [infiniteScrollThrottle]=\"Throttle\" (scrolled)=\"options.IsInfiniteScroll==true?onScrollDown():null\"\r\n [scrollWindow]=\"options.ScrollWindow\" [infiniteScrollContainer]=\"options.InfiniteScrollContainer\">\r\n </div>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"onScrollDown()\" *ngIf=\"!(result.length==totalRow)\">{{utilityService.getResourceValue(\"LoadMore\")}}</button>\r\n </div>\r\n</div>\r\n\r\n\r\n"
298
- },] }
299
- ];
300
- PagingComponent.ctorParameters = () => [
301
- { type: UtilityService },
302
- { type: HttpClient },
303
- { type: Router },
304
- { type: OnPagingFiltersChangeService },
305
- { type: RequestHandlerService }
306
- ];
307
- PagingComponent.propDecorators = {
308
- Items: [{ type: Output }],
309
- options: [{ type: Input }],
310
- group: [{ type: Input }]
311
- };
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9QYWdpbmcvUGFnaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF3QyxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBOEMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHMUQsT0FBTyxFQUF1QixZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHakQscURBQXFEO0FBS3JELE1BQU0sT0FBTyxlQUFlO0lBMkIxQixZQUFtQixjQUE4QixFQUFVLElBQWdCLEVBQVUsTUFBYyxFQUFVLGVBQTZDLEVBQVUscUJBQTRDO1FBQTdMLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBQVUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXpCaE4sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLFdBQU0sR0FBUSxFQUFF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QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQ25FO2FBQ0Y7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OztZQS9URixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLG0zREFBc0M7YUFDdkM7OztZQVJvRCxjQUFjO1lBUjFELFVBQVU7WUFEVixNQUFNO1lBT04sNEJBQTRCO1lBRTVCLHFCQUFxQjs7O29CQStCM0IsTUFBTTtzQkFDTixLQUFLO29CQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBQYWdpbmdEVE8gfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1BhZ2luZ0RUTyc7XHJcbmltcG9ydCB7IFBhZ2luZ09wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1BhZ2luZ09wdGlvbnMnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0T3B0aW9ucywgUmVzcG9uc2VDb250ZW50VHlwZSwgSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2h0dHAnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL09uUGFnaW5nRmlsdGVyc0NoYW5nZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9GaWx0ZXJUeXBlJztcclxuaW1wb3J0IHsgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcclxuaW1wb3J0IHsgUGFnaW5nUGF5bG9hZCB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvUGFnaW5nUGF5bG9hZCc7XHJcblxyXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtUGFnaW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vUGFnaW5nLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnaW5nQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBpdGVtcyA9IFtdO1xyXG4gIHBhZ2VPZkl0ZW1zOiBBcnJheTxhbnk+O1xyXG4gIHJlc3VsdDogVFtdID0gW107XHJcbiAgcGFnZXJDb25maWc6IGFueSA9IG51bGw7XHJcbiAgdG90YWxSb3c6IGFueSA9IDA7XHJcbiAgcGFnZVNpemU6IGFueSA9IDEwXHJcbiAgUGFnZXM6IGFueSA9IDBcclxuICBwYWdlc1RleHQ6IHN0cmluZztcclxuICBpdGVtc1RleHQ6IHN0cmluZztcclxuICBDdXJyZW50UGFnZTogYW55ID0gMVxyXG4gIFNob3dQYWdlU2l6ZU9wdGlvbiA9IHRydWU7XHJcbiAgU2hvd0ZpcnN0QW5kTGFzdCA9IHRydWU7XHJcbiAgaGlkZVBhZ2luYXRpb25XaGVuUGFnZVNpemVFcXVhbE9uZSA9IHRydWVcclxuICBTdW0gPSAwO1xyXG4gIFRocm90dGxlID0gMzAwO1xyXG4gIFNjcm9sbERpc3RhbmNlID0gMTtcclxuICBTY3JvbGxVcERpc3RhbmNlID0gMjtcclxuICBkaXJlY3Rpb24gPSAnJztcclxuICBIZWFkZXJzOiBIdHRwSGVhZGVycztcclxuICBJc0ZpcnN0Q2FsbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQE91dHB1dCgpIEl0ZW1zOiBFdmVudEVtaXR0ZXI8VFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFBhZ2luZ09wdGlvbnM7XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgb25DaGFuZ2VTZXJ2aWNlOiBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKClcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0xvYWRNb3JlQ29udHJvbClcclxuICAgICAgdGhpcy5TdW0gPSB0aGlzLm9wdGlvbnMuUGFnZVNpemU7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Ecm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLkRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcztcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlU2VydmljZS5HZXRWYWx1ZSgpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm9wdGlvbnMuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSA9PSB2YWx1ZSlcclxuICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Cb290c3RyYXBEYXRlUGlja2Vyc0ZpbHRlcnNDb250cm9sTmFtZXMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuQm9vdHN0cmFwRGF0ZVBpY2tlcnNGaWx0ZXJzQ29udHJvbE5hbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgQm9vdHN0cmFwRGF0ZVBpY2tlcnNGaWx0ZXJzQ29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLkJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lcztcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLm9uQ2hhbmdlU2VydmljZS5HZXRWYWx1ZSgpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vcHRpb25zLkJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gPT0gdmFsdWUpXHJcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuQ3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pKVxyXG4gICAgfVxyXG4gICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5PbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lcyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5PbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IE9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLk9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZSA9IE9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzW2luZGV4XTtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChPbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSB0aGlzLm9wdGlvbnMuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXM7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lID0gT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXNbaW5kZXhdO1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gKDxhbnk+dGhpcy5ncm91cC5nZXQoT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZSkpLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgKGUpID0+IHtcclxuICAgICAgICAgIGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9BZGQgY2xpY2sgZXZlbnQgb24gUmVzZXQgRmlsdGVyIGJ1dHRvblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5SZXNldEZpbHRlckJ1dHRvbk5hbWUgIT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSh0aGlzLm9wdGlvbnMuUmVzZXRGaWx0ZXJCdXR0b25OYW1lKVswXTtcclxuICAgICAgaWYgKGJ1dHRvbiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBsZXQgZWxlbWVudCA9IGJ1dHRvbiBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcclxuICAgICAgICB9LCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWVzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLlR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IFR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lcyA9IHRoaXMub3B0aW9ucy5UeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXM7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBUeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWUgPSBUeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXNbaW5kZXhdO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lKS5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgKGUpID0+IHtcclxuICAgICAgICAgIGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGZhbHNlKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvbkRyb3BEb3duQ2hhbmdlKHJlc3VsdCkge1xyXG4gICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVBhZ2UoUGFnZSkge1xyXG4gICAgaWYgKFBhZ2UgPT0gMClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgaWYgKFBhZ2UgPiAwKSB7XHJcbiAgICAgIGlmICh0aGlzLklzRmlyc3RDYWxsKSB7XHJcbiAgICAgICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLkN1cnJlbnRQYWdlID0gUGFnZTtcclxuICAgICAgdGhpcy5nZXRJdGVtTGlzdChQYWdlKTtcclxuICAgIH1cclxuICB9XHJcbiAgY2hhbmdlUGFnZVNpemUoZSkge1xyXG4gICAgdGhpcy5vcHRpb25zLlBhZ2VTaXplID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIG9uU2Nyb2xsRG93bigpIHtcclxuICAgIHRoaXMuU3VtICs9IHRoaXMub3B0aW9ucy5QYWdlU2l6ZVxyXG4gICAgdGhpcy5DdXJyZW50UGFnZSA9IDFcclxuICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgdGhpcy5kaXJlY3Rpb24gPSAnZG93bic7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBnZXRJdGVtTGlzdChwYWdlLCBJc0ZpbHRlclVwZGF0ZWQgPSBmYWxzZSkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5TdGFydFBhZ2luZ0NhbGxiYWNrKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuU3RhcnRQYWdpbmdDYWxsYmFjay5jYWxsKG51bGwpO1xyXG5cclxuICAgIGxldCBwYWdpbmdEVE8gPSBuZXcgUGFnaW5nRFRPKCk7XHJcbiAgICBsZXQgc2l6ZSA9IE51bWJlci5wYXJzZUludCh0aGlzLm9wdGlvbnMuUGFnZVNpemUudG9TdHJpbmcoKSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzTG9hZE1vcmVDb250cm9sKVxyXG4gICAgICBwYWdpbmdEVE8uUGFnZUNvdW50ID0gdGhpcy5TdW07XHJcbiAgICBlbHNlXHJcbiAgICAgIHBhZ2luZ0RUTy5QYWdlQ291bnQgPSBzaXplO1xyXG5cclxuICAgIHBhZ2luZ0RUTy5DdXJyZW50UGFnZU51bWJlciA9IHBhZ2U7XHJcbiAgICBwYWdpbmdEVE8uVG90YWxDb3VudCA9IHRoaXMudG90YWxSb3c7XHJcbiAgICBwYWdpbmdEVE8uSXNGaWx0ZXJVcGRhdGVkID0gSXNGaWx0ZXJVcGRhdGVkO1xyXG4gICAgbGV0IGZpbHRlcnMgPSB7fTtcclxuICAgIGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnNWYWx1ZSgpO1xyXG5cclxuICAgIC8vU2V0IEZpbHRlcnMgb2JqZWN0IHRoYXQgc2VudCB0byBhY3Rpb24gVVJMXHJcbiAgICBsZXQgZmlsdGVyc0RUTzogUGFnaW5nUGF5bG9hZCA9IHtcclxuICAgICAgUGFnaW5nRFRPOiBwYWdpbmdEVE8sXHJcbiAgICAgIEZpbHRlcnM6IGZpbHRlcnNcclxuICAgIH07XHJcblxyXG4gICAgbGV0IHJlcXVlc3RPcHRpb25zID0gbmV3IFJlcXVlc3RPcHRpb25zTW9kZWwoKTtcclxuICAgIHJlcXVlc3RPcHRpb25zLmRpc2FibGVCbG9ja1VJID0gdGhpcy5vcHRpb25zLkRpc2FibGVCbG9ja1VJO1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UucG9zdCh0aGlzLm9wdGlvbnMuQWN0aW9uUG9zdFVSTCwgdGhpcy5vcHRpb25zLkZpbHRlcnMgJiYgdGhpcy5vcHRpb25zLkZpbHRlcnMubGVuZ3RoID4gMCA/IGZpbHRlcnNEVE8gOiBwYWdpbmdEVE8sIG51bGwsIG51bGwsIHJlcXVlc3RPcHRpb25zKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzdWx0ID0gcmVzcG9uc2VEYXRhLml0ZW1zIC8vdGhpcy5jYXN0SXRlbXMocmVzcG9uc2VEYXRhLml0ZW1zKTtcclxuICAgICAgICBsZXQgY2FzdGVkUmVzdWx0ID0gcGxhaW5Ub0NsYXNzKHRoaXMub3B0aW9ucy5UeXBlT2ZSZXNwb25zZSwgdGhpcy5yZXN1bHQsIHsgZXhjbHVkZUV4dHJhbmVvdXNWYWx1ZXM6IHRydWUgfSlcclxuICAgICAgICB0aGlzLkl0ZW1zLmVtaXQoY2FzdGVkUmVzdWx0KTtcclxuICAgICAgICB0aGlzLnRvdGFsUm93ID0gcmVzcG9uc2VEYXRhLnRvdGFsQ291bnQ7XHJcblxyXG4gICAgICAgIGlmIChJc0ZpbHRlclVwZGF0ZWQpIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuUGFnZXMgPSBNYXRoLmNlaWwoKHRoaXMudG90YWxSb3cgLyB0aGlzLm9wdGlvbnMuUGFnZVNpemUpKTtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBBcnJheSh0aGlzLnRvdGFsUm93KTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNldFRleHQodGhpcy5QYWdlcywgdGhpcy50b3RhbFJvdyk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSwgKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAxKVxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL0FkbWluL2FjY291bnQvbG9naW5cIl0pXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgUmVpbml0aWFsaXplUGFnaW5nID0gKCkgPT4ge1xyXG4gICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KDEsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgVXBkYXRlUGFnaW5nID0gKCkgPT4ge1xyXG4gICAgLy90aGlzLklzRmlyc3RDYWxsPXRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UpO1xyXG4gIH1cclxuXHJcbiAgY2FzdEl0ZW1zKG9iamVjdEFycjogYW55W10pOiBUW10ge1xyXG4gICAgbGV0IG9yaWdpbmFsQXJyYXk6IFRbXSA9IFtdXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb2JqZWN0QXJyLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gb2JqZWN0QXJyW2luZGV4XTtcclxuICAgICAgbGV0IGtleSwga2V5cyA9IE9iamVjdC5rZXlzKGVsZW1lbnQpO1xyXG4gICAgICBsZXQgbiA9IGtleXMubGVuZ3RoO1xyXG4gICAgICBsZXQgbmV3T2JqZWN0ID0ge31cclxuICAgICAgd2hpbGUgKG4tLSkge1xyXG4gICAgICAgIGtleSA9IGtleXNbbl07XHJcbiAgICAgICAgbGV0IE9rZXkgPSBrZXlcclxuICAgICAgICBuZXdPYmplY3Rba2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgT2tleS5zbGljZSgxKV0gPSBlbGVtZW50W2tleV07XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZpbmFsT2JqZWN0ID0gbmV3T2JqZWN0IGFzIFRcclxuICAgICAgb3JpZ2luYWxBcnJheS5wdXNoKGZpbmFsT2JqZWN0KVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvcmlnaW5hbEFycmF5O1xyXG4gIH1cclxuXHJcbiAgc2V0VGV4dChwYWdlc051bWJlcjogbnVtYmVyLCBpdGVtc051bWJlcjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy51dGlsaXR5U2VydmljZS5pc0N1cnJlbnRMYW5ndWFnZUFyYWJpYygpKSB7XHJcbiAgICAgIC8vU2V0IHBhZ2VzIHRleHRcclxuICAgICAgaWYgKHBhZ2VzTnVtYmVyIDwgMyB8fCBwYWdlc051bWJlciA+IDEwKVxyXG4gICAgICAgIHRoaXMucGFnZXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFnZVwiKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMucGFnZXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFnZXNcIik7XHJcbiAgICAgIC8vU2V0IGl0ZW1zIHRleHRcclxuICAgICAgaWYgKGl0ZW1zTnVtYmVyIDwgMyB8fCBpdGVtc051bWJlciA+IDEwKVxyXG4gICAgICAgIHRoaXMuaXRlbXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSXRlbVwiKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuaXRlbXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSXRlbXNcIik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy9TZXQgcGFnZXMgdGV4dFxyXG4gICAgICBpZiAocGFnZXNOdW1iZXIgPiAxKVxyXG4gICAgICAgIHRoaXMucGFnZXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFnZXNcIik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnBhZ2VzVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhZ2VcIik7XHJcbiAgICAgIC8vU2V0IGl0ZW1zIHRleHRcclxuICAgICAgaWYgKGl0ZW1zTnVtYmVyID4gMSlcclxuICAgICAgICB0aGlzLml0ZW1zVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkl0ZW1zXCIpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5pdGVtc1RleHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJdGVtXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWx0ZXJzKCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkZpbHRlcnMgIT0gW10pIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5GaWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRm9ybUNvbnRyb2xOYW1lICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZvcm1Db250cm9sTmFtZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICBjb25zdCBGb3JtQ29udHJvbE5hbWUgPSB0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgICAgICAgdGhpcy5ncm91cC5jb250cm9sc1tGb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsdGVyc1ZhbHVlKCkge1xyXG4gICAgbGV0IGZpbHRlcnMgPSB7fTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuRmlsdGVycyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5GaWx0ZXJzICE9IFtdKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuRmlsdGVycy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZvcm1Db250cm9sTmFtZSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5Gb3JtQ29udHJvbE5hbWUgIT0gXCJcIikge1xyXG4gICAgICAgICAgY29uc3QgRm9ybUNvbnRyb2xOYW1lID0gdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZvcm1Db250cm9sTmFtZTtcclxuICAgICAgICAgIGxldCBDb250cm9sVmFsdWUgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW0Zvcm1Db250cm9sTmFtZV0udmFsdWU7XHJcbiAgICAgICAgICBpZiAoQ29udHJvbFZhbHVlICE9IHVuZGVmaW5lZCAmJiBDb250cm9sVmFsdWUgIT0gbnVsbCAmJiBDb250cm9sVmFsdWUgIT0gXCJcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZpbHRlclR5cGUgPT0gRmlsdGVyVHlwZS5EYXRlUGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgLy9pZiAoQXJyYXkuaXNBcnJheShDb250cm9sVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgLy8gIGZvciAobGV0IGVsZW1lbnQgPSAwOyBlbGVtZW50IDwgQ29udHJvbFZhbHVlLmxlbmd0aDsgZWxlbWVudCsrKSB7XHJcbiAgICAgICAgICAgICAgLy8gICAgY29uc3QgdmFsdWUgPSBDb250cm9sVmFsdWVbZWxlbWVudF07XHJcbiAgICAgICAgICAgICAgLy8gICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAvLyAgfVxyXG4gICAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICAgIC8vZWxzZSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSBDb250cm9sVmFsdWU7XHJcbiAgICAgICAgICAgICAgLy99XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5GaWx0ZXJUeXBlID09IEZpbHRlclR5cGUuQXV0b2NvbXBsZXRlVGV4dEJveClcclxuICAgICAgICAgICAgICAgIENvbnRyb2xWYWx1ZSA9IENvbnRyb2xWYWx1ZTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZpbHRlclR5cGUgPT0gRmlsdGVyVHlwZS5UYWdJbnB1dClcclxuICAgICAgICAgICAgICAgIENvbnRyb2xWYWx1ZSA9IENvbnRyb2xWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSBDb250cm9sVmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmaWx0ZXJzW3RoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5BY3Rpb25QYXJhbWV0ZXJOYW1lXSA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgRWxlbWVudGpRdWVyeVNlbGVjdG9yID0gdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLmpRdWVyeVNlbGVjdG9yO1xyXG4gICAgICAgICAgbGV0IEVsZW1lbnRWYWx1ZSA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKEVsZW1lbnRqUXVlcnlTZWxlY3RvcikgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICAgICAgICBpZiAoRWxlbWVudFZhbHVlICE9IHVuZGVmaW5lZCAmJiBFbGVtZW50VmFsdWUgIT0gbnVsbClcclxuICAgICAgICAgICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSBFbGVtZW50VmFsdWU7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGZpbHRlcnNbdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkFjdGlvblBhcmFtZXRlck5hbWVdID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmaWx0ZXJzO1xyXG4gIH1cclxufVxyXG4iXX0=