@bnsights/bbsf-controls 1.0.85 → 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 +6 -1
  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} +1872 -1625
  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 +5 -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.85.tgz +0 -0
  174. package/bnsights-bbsf-controls.metadata.json +0 -1
  175. package/bundles/bnsights-bbsf-controls.umd.js +0 -9326
  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 -347
  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
@@ -1,222 +0,0 @@
1
- import { Component, Input, Optional, NgZone, Output, EventEmitter } from '@angular/core';
2
- import { FormControl, Validators, ControlContainer, FormGroupDirective } from '@angular/forms';
3
- import { ControlUtility } from '../../Shared/services/ControlUtility';
4
- import { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';
5
- import { GlobalSettings } from '../../Shared/services/GlobalSettings.service';
6
- export class HtmlEditorComponent {
7
- constructor(zone, controlUtility, controlContainer, HtmlEditorControlHost, UtilityService, controlValidationService, globalSettings) {
8
- this.zone = zone;
9
- this.controlUtility = controlUtility;
10
- this.controlContainer = controlContainer;
11
- this.HtmlEditorControlHost = HtmlEditorControlHost;
12
- this.UtilityService = UtilityService;
13
- this.controlValidationService = controlValidationService;
14
- this.globalSettings = globalSettings;
15
- this.OnChange = new EventEmitter();
16
- this.WordCount = 0;
17
- this.WordCountArray = 0;
18
- this.markAllAsTouched = false;
19
- this.validationRules = [];
20
- this.validationRulesasync = [];
21
- this.resetError = () => {
22
- this.controlValidationService.RemoveGlobalError();
23
- };
24
- //External Method
25
- this.RemoveRequiredValidation = () => {
26
- this.controlUtility.RemoveRequiredValidation(this.HtmlEditorFormControl, this.validationRules, this.options);
27
- };
28
- //External Method
29
- this.AddRequiredValidation = () => {
30
- this.controlUtility.AddRequiredValidation(this.HtmlEditorFormControl, this.validationRules, this.options);
31
- };
32
- //External Method
33
- this.RemoveCustomValidation = (CustomValidation) => {
34
- this.controlUtility.RemoveCustomValidation(this.HtmlEditorFormControl, this.validationRules, CustomValidation);
35
- };
36
- //External Method
37
- this.AddCustomValidation = (CustomValidation) => {
38
- this.controlUtility.AddCustomValidation(this.HtmlEditorFormControl, this.validationRules, CustomValidation);
39
- };
40
- //External Method
41
- this.IsValid = () => {
42
- this.controlUtility.IsValid(this.HtmlEditorFormControl);
43
- };
44
- HtmlEditorComponent.controlContainerstatic = this.controlContainer;
45
- }
46
- ngOnInit() {
47
- this.editorConfig = {
48
- editable: !this.options.IsDisabled,
49
- spellcheck: true,
50
- height: `${this.options.Height}rem`,
51
- minHeight: `${this.options.Height}rem`,
52
- maxHeight: 'auto',
53
- width: 'auto',
54
- minWidth: 'auto',
55
- translate: 'yes',
56
- enableToolbar: true,
57
- showToolbar: true,
58
- placeholder: this.options.Placeholder,
59
- defaultParagraphSeparator: '',
60
- defaultFontName: '',
61
- defaultFontSize: '',
62
- fonts: [
63
- { class: 'arial', name: 'Arial' },
64
- { class: 'times-new-roman', name: 'Times New Roman' },
65
- { class: 'calibri', name: 'Calibri' },
66
- { class: 'comic-sans-ms', name: 'Comic Sans MS' }
67
- ],
68
- customClasses: [
69
- {
70
- name: 'quote',
71
- class: 'quote',
72
- },
73
- {
74
- name: 'redText',
75
- class: 'redText'
76
- },
77
- {
78
- name: 'titleText',
79
- class: 'titleText',
80
- tag: 'h1',
81
- },
82
- ],
83
- uploadUrl: 'v1/image',
84
- uploadWithCredentials: false,
85
- sanitize: false,
86
- toolbarPosition: 'top',
87
- toolbarHiddenButtons: [
88
- [
89
- 'link',
90
- 'unlink',
91
- 'insertImage',
92
- 'insertVideo',
93
- 'insertHorizontalRule',
94
- ]
95
- ]
96
- };
97
- this.controlValidationService.isCreatedBefor = false;
98
- // this.miscList = this.options.ToolsList_Misc != null ? this.options.ToolsList_Misc : ['codeview', 'undo', 'redo'];
99
- // this.styleList = this.options.ToolsList_Style != null ? this.options.ToolsList_Style : ['bold', 'italic', 'underline', 'clear']
100
- // this.fontsizeList = this.options.ToolsList_FontSize != null ? this.options.ToolsList_FontSize : ['fontname', 'fontsize', 'color']
101
- // this.paraList = this.options.ToolsList_Para != null ? this.options.ToolsList_Para : ['style', 'ul', 'ol', 'paragraph', 'height']
102
- // this.insertList = this.options.ToolsList_Insert != null ? this.options.ToolsList_Insert : ['table', 'picture', 'link', 'video', 'hr']
103
- // this.Config = {
104
- // callbacks: {
105
- // // onChange: (e) => {
106
- // // this.zone.run(() => {
107
- // // this.onTextChange();
108
- // // });
109
- // // },
110
- // // onKeyup: (e) => {
111
- // // this.zone.run(() => {
112
- // // ;
113
- // // this.onTextChange();
114
- // // });
115
- // // },
116
- // // onKeydown: (e) => {
117
- // // this.zone.run(() => {
118
- // // ;
119
- // // if (this.WordCountArray > this.options.MaxWordCount && e.keyCode != 8) {
120
- // // e.preventDefault();
121
- // // }
122
- // // });
123
- // // }
124
- // },
125
- // placeholder: this.options.Placeholder,
126
- // height: `${this.options.Height}px`,
127
- // toolbar: [
128
- // ['misc', this.miscList],
129
- // ['style', this.styleList],
130
- // ['fontsize', this.fontsizeList],
131
- // ['para', this.paraList],
132
- // ['insert', this.insertList]
133
- // ],
134
- // fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']
135
- // }
136
- this.group.addControl(this.options.Name, new FormControl(''));
137
- this.HtmlEditorFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
138
- this.HtmlEditorFormControl.setValue(this.options.Value);
139
- if (!this.options.ViewType)
140
- this.options.ViewType = this.globalSettings.ViewType;
141
- if (this.options.CustomValidation.length > 0) {
142
- let Validations = this.options.CustomValidation;
143
- for (let index = 0; index < Validations.length; index++) {
144
- const Validation = Validations[index];
145
- this.validationRules.push(Validation.functionBody);
146
- }
147
- }
148
- if (this.options.LabelKey != null && this.options.LabelKey != "")
149
- this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
150
- if (this.options.MinLength > 0) {
151
- this.validationRules.push(Validators.minLength(this.options.MinLength));
152
- }
153
- if (this.options.MaxLength > 0) {
154
- this.validationRules.push(Validators.maxLength(this.options.MaxLength));
155
- }
156
- if (this.options.IsRequired) {
157
- this.validationRules.push(Validators.required);
158
- }
159
- this.HtmlEditorFormControl.setValidators(this.validationRules);
160
- this.HtmlEditorFormControl.setAsyncValidators(this.validationRulesasync);
161
- if (this.options.IsDisabled) {
162
- this.HtmlEditorFormControl.disable();
163
- }
164
- this.HtmlEditorControlHost.ngSubmit.subscribe((value) => {
165
- this.group.markAllAsTouched();
166
- this.markAllAsTouched = true;
167
- });
168
- }
169
- ngAfterViewChecked() {
170
- if (this.options.AttributeList != null) {
171
- var element = document.getElementById(this.options.Name);
172
- for (let index = 0; index < this.options.AttributeList.length; index++) {
173
- element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);
174
- }
175
- let angularEditor = document.getElementsByClassName("angular-editor-toolbar ng-star-inserted")[0];
176
- let dir = this.UtilityService.getCurrentLanguage() == "en" ? "ltr" : "rtl";
177
- angularEditor.setAttribute("dir", dir);
178
- }
179
- }
180
- showGlobalError() {
181
- this.controlUtility.showGlobalError();
182
- }
183
- getErrorValidation(ErrorList) {
184
- if (this.markAllAsTouched && this.group.invalid) {
185
- this.showGlobalError();
186
- this.markAllAsTouched = false;
187
- }
188
- return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
189
- }
190
- onValueChanged() {
191
- this.HtmlEditorFormControl.setValue(this.HtmlEditorFormControl.value.trim());
192
- let originalValue = this.controlUtility.trimControlValue(this.HtmlEditorFormControl.value);
193
- if (this.options.PatchFunction && this.options.PatchPath && this.HtmlEditorFormControl.valid) {
194
- this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
195
- }
196
- //Use this line to enable two way binding.
197
- this.options.Value = originalValue;
198
- this.OnChange.emit(originalValue);
199
- }
200
- }
201
- HtmlEditorComponent.controlContainerstatic = null;
202
- HtmlEditorComponent.decorators = [
203
- { type: Component, args: [{
204
- selector: 'BBSF-HtmlEditor',
205
- template: "\r\n<div class=\"form-group bbsf-control bbsf-htmleditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <angular-editor\r\n (change)=\"onValueChanged()\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched\"\r\n class=\"{{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" formControlName=\"{{options.Name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\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=\"(HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(HtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n"
206
- },] }
207
- ];
208
- HtmlEditorComponent.ctorParameters = () => [
209
- { type: NgZone },
210
- { type: ControlUtility },
211
- { type: ControlContainer, decorators: [{ type: Optional }] },
212
- { type: FormGroupDirective },
213
- { type: UtilityService },
214
- { type: ControlValidationService },
215
- { type: GlobalSettings }
216
- ];
217
- HtmlEditorComponent.propDecorators = {
218
- group: [{ type: Input }],
219
- options: [{ type: Input }],
220
- OnChange: [{ type: Output }]
221
- };
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHRtbEVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvSHRtbEVkaXRvci9IdG1sRWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQThCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFPOUUsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QixZQUFvQixJQUFZLEVBQVUsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQ3ZILHFCQUF5QyxFQUFVLGNBQThCLEVBQ2hGLHdCQUFrRCxFQUFVLGNBQThCO1FBRmhGLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN2SCwwQkFBcUIsR0FBckIscUJBQXFCLENBQW9CO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2hGLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFLMUYsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixtQkFBYyxHQUFXLENBQUMs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QUFnQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUU7WUFDNUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUN4RztRQUNELDBDQUEwQztRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBQyxhQUFhLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDbkMsQ0FBQzs7QUExTU0sMENBQXNCLEdBQUcsSUFBSSxDQUFDOztZQVB0QyxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IscWtEQUEwQzthQUMzQzs7O1lBWnFELE1BQU07WUFFbkQsY0FBYztZQUR1QyxnQkFBZ0IsdUJBZ0JELFFBQVE7WUFoQkwsa0JBQWtCO1lBSS9ELGNBQWM7WUFBeEMsd0JBQXdCO1lBQ3hCLGNBQWM7OztvQkFnQnBCLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBEb0NoZWNrLCBPcHRpb25hbCwgTmdab25lLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBIdG1sRWRpdG9yT3B0aW9ucyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvSHRtbEVkaXRvck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yQ29uZmlnIH0gZnJvbSAnQGtvbGtvdi9hbmd1bGFyLWVkaXRvcic7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXR0aW5ncyB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9HbG9iYWxTZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLUh0bWxFZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9IdG1sRWRpdG9yLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSHRtbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGVkaXRvckNvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZ1xyXG4gIHN0YXRpYyBjb250cm9sQ29udGFpbmVyc3RhdGljID0gbnVsbDtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgIHB1YmxpYyBIdG1sRWRpdG9yQ29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSwgcHJpdmF0ZSBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncykge1xyXG4gICAgSHRtbEVkaXRvckNvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IEh0bWxFZGl0b3JPcHRpb25zO1xyXG4gIEBPdXRwdXQoKSBPbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBIdG1sRWRpdG9yRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBXb3JkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgV29yZENvdW50QXJyYXk6IG51bWJlciA9IDA7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIENvbmZpZzogYW55XHJcbiAgbWlzY0xpc3Q6IGFueVxyXG4gIHN0eWxlTGlzdDogYW55XHJcbiAgZm9udHNpemVMaXN0OiBhbnlcclxuICBwYXJhTGlzdDogYW55XHJcbiAgaW5zZXJ0TGlzdDogYW55XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmVkaXRvckNvbmZpZyA9IHtcclxuICAgICAgICBlZGl0YWJsZTogIXRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkLFxyXG4gICAgICAgIHNwZWxsY2hlY2s6IHRydWUsXHJcbiAgICAgICAgaGVpZ2h0OiBgJHt0aGlzLm9wdGlvbnMuSGVpZ2h0fXJlbWAsXHJcbiAgICAgICAgbWluSGVpZ2h0OiBgJHt0aGlzLm9wdGlvbnMuSGVpZ2h0fXJlbWAsXHJcbiAgICAgICAgbWF4SGVpZ2h0OiAgJ2F1dG8nLFxyXG4gICAgICAgIHdpZHRoOiAnYXV0bycsXHJcbiAgICAgICAgbWluV2lkdGg6ICdhdXRvJyxcclxuICAgICAgICB0cmFuc2xhdGU6ICd5ZXMnLFxyXG4gICAgICAgIGVuYWJsZVRvb2xiYXI6IHRydWUsXHJcbiAgICAgICAgc2hvd1Rvb2xiYXI6IHRydWUsXHJcbiAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMub3B0aW9ucy5QbGFjZWhvbGRlcixcclxuICAgICAgICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICAgICAgICBkZWZhdWx0Rm9udE5hbWU6ICcnLFxyXG4gICAgICAgIGRlZmF1bHRGb250U2l6ZTogJycsXHJcbiAgICAgICAgZm9udHM6IFtcclxuICAgICAgICAgIHtjbGFzczogJ2FyaWFsJywgbmFtZTogJ0FyaWFsJ30sXHJcbiAgICAgICAgICB7Y2xhc3M6ICd0aW1lcy1uZXctcm9tYW4nLCBuYW1lOiAnVGltZXMgTmV3IFJvbWFuJ30sXHJcbiAgICAgICAgICB7Y2xhc3M6ICdjYWxpYnJpJywgbmFtZTogJ0NhbGlicmknfSxcclxuICAgICAgICAgIHtjbGFzczogJ2NvbWljLXNhbnMtbXMnLCBuYW1lOiAnQ29taWMgU2FucyBNUyd9XHJcbiAgICAgICAgXSxcclxuICAgICAgICBjdXN0b21DbGFzc2VzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ3F1b3RlJyxcclxuICAgICAgICAgIGNsYXNzOiAncXVvdGUnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ3JlZFRleHQnLFxyXG4gICAgICAgICAgY2xhc3M6ICdyZWRUZXh0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ3RpdGxlVGV4dCcsXHJcbiAgICAgICAgICBjbGFzczogJ3RpdGxlVGV4dCcsXHJcbiAgICAgICAgICB0YWc6ICdoMScsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgICAgdXBsb2FkVXJsOiAndjEvaW1hZ2UnLFxyXG4gICAgICB1cGxvYWRXaXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG4gICAgICBzYW5pdGl6ZTogZmFsc2UsXHJcbiAgICAgIHRvb2xiYXJQb3NpdGlvbjogJ3RvcCcsXHJcbiAgICAgIHRvb2xiYXJIaWRkZW5CdXR0b25zOiBbXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgJ2xpbmsnLFxyXG4gICAgICAgICAgJ3VubGluaycsXHJcbiAgICAgICAgICAnaW5zZXJ0SW1hZ2UnLFxyXG4gICAgICAgICAgJ2luc2VydFZpZGVvJyxcclxuICAgICAgICAgICdpbnNlcnRIb3Jpem9udGFsUnVsZScsXHJcbiAgICAgICAgXVxyXG4gICAgICBdXHJcbiAgfTtcclxuICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlXHJcbiAgICAvLyB0aGlzLm1pc2NMaXN0ID0gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9NaXNjICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X01pc2MgOiBbJ2NvZGV2aWV3JywgJ3VuZG8nLCAncmVkbyddO1xyXG4gICAgLy8gdGhpcy5zdHlsZUxpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1N0eWxlICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1N0eWxlIDogWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnY2xlYXInXVxyXG4gICAgLy8gdGhpcy5mb250c2l6ZUxpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X0ZvbnRTaXplICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X0ZvbnRTaXplIDogWydmb250bmFtZScsICdmb250c2l6ZScsICdjb2xvciddXHJcbiAgICAvLyB0aGlzLnBhcmFMaXN0ID0gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9QYXJhICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1BhcmEgOiBbJ3N0eWxlJywgJ3VsJywgJ29sJywgJ3BhcmFncmFwaCcsICdoZWlnaHQnXVxyXG4gICAgLy8gdGhpcy5pbnNlcnRMaXN0ID0gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9JbnNlcnQgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfSW5zZXJ0IDogWyd0YWJsZScsICdwaWN0dXJlJywgJ2xpbmsnLCAndmlkZW8nLCAnaHInXVxyXG5cclxuICAgIC8vIHRoaXMuQ29uZmlnID0ge1xyXG4gICAgLy8gICBjYWxsYmFja3M6IHtcclxuICAgIC8vICAgICAvLyBvbkNoYW5nZTogKGUpID0+IHtcclxuXHJcbiAgICAvLyAgICAgLy8gICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgLy8gICAgIC8vICAgICAgICAgdGhpcy5vblRleHRDaGFuZ2UoKTtcclxuICAgIC8vICAgICAvLyAgICAgfSk7XHJcbiAgICAvLyAgICAgLy8gfSxcclxuICAgIC8vICAgICAvLyBvbktleXVwOiAoZSkgPT4ge1xyXG4gICAgLy8gICAgIC8vICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgIC8vICAgICAvLyAgICAgICAgICA7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICB0aGlzLm9uVGV4dENoYW5nZSgpO1xyXG4gICAgLy8gICAgIC8vICAgICB9KTtcclxuICAgIC8vICAgICAvLyB9LFxyXG4gICAgLy8gICAgIC8vIG9uS2V5ZG93bjogKGUpID0+IHtcclxuICAgIC8vICAgICAvLyAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICAgO1xyXG4gICAgLy8gICAgIC8vICAgICAgICAgaWYgKHRoaXMuV29yZENvdW50QXJyYXkgPiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50ICYmIGUua2V5Q29kZSAhPSA4KSB7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgLy8gICAgIC8vICAgICAgICAgfVxyXG5cclxuICAgIC8vICAgICAvLyAgICAgfSk7XHJcbiAgICAvLyAgICAgLy8gfVxyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gICBwbGFjZWhvbGRlcjogdGhpcy5vcHRpb25zLlBsYWNlaG9sZGVyLFxyXG4gICAgLy8gICBoZWlnaHQ6IGAke3RoaXMub3B0aW9ucy5IZWlnaHR9cHhgLFxyXG4gICAgLy8gICB0b29sYmFyOiBbXHJcbiAgICAvLyAgICAgWydtaXNjJywgdGhpcy5taXNjTGlzdF0sXHJcbiAgICAvLyAgICAgWydzdHlsZScsIHRoaXMuc3R5bGVMaXN0XSxcclxuICAgIC8vICAgICBbJ2ZvbnRzaXplJywgdGhpcy5mb250c2l6ZUxpc3RdLFxyXG4gICAgLy8gICAgIFsncGFyYScsIHRoaXMucGFyYUxpc3RdLFxyXG4gICAgLy8gICAgIFsnaW5zZXJ0JywgdGhpcy5pbnNlcnRMaXN0XVxyXG4gICAgLy8gICBdLFxyXG4gICAgLy8gICBmb250TmFtZXM6IFsnSGVsdmV0aWNhJywgJ0FyaWFsJywgJ0FyaWFsIEJsYWNrJywgJ0NvbWljIFNhbnMgTVMnLCAnQ291cmllciBOZXcnLCAnUm9ib3RvJywgJ1RpbWVzJ11cclxuXHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5OYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5vcHRpb25zLlZhbHVlKTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5WaWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLlZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5WaWV3VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvblxyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgVmFsaWRhdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgVmFsaWRhdGlvbiA9IFZhbGlkYXRpb25zW2luZGV4XTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5MYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSk7XHJcblxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1pbkxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk1heExlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkh0bWxFZGl0b3JDb250cm9sSG9zdC5uZ1N1Ym1pdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IHRydWVcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5vcHRpb25zLk5hbWUpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25zLkF0dHJpYnV0ZUxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5vcHRpb25zLkF0dHJpYnV0ZUxpc3RbaW5kZXhdLktleSwgdGhpcy5vcHRpb25zLkF0dHJpYnV0ZUxpc3RbaW5kZXhdLnZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGFuZ3VsYXJFZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYW5ndWxhci1lZGl0b3ItdG9vbGJhciBuZy1zdGFyLWluc2VydGVkXCIpWzBdXHJcbiAgICAgIGxldCBkaXIgPXRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCk9PVwiZW5cIj9cImx0clwiOlwicnRsXCJcclxuICAgICAgYW5ndWxhckVkaXRvci5zZXRBdHRyaWJ1dGUoXCJkaXJcIixkaXIpO1xyXG5cclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5SZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuICBvblZhbHVlQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLnZhbHVlLnRyaW0oKSk7XHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuY29udHJvbFV0aWxpdHkudHJpbUNvbnRyb2xWYWx1ZSh0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLlBhdGNoUGF0aCAmJiB0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsdGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gLHRoaXMub3B0aW9ucy5QYXRjaFBhdGgpXHJcbiAgICB9XHJcbiAgICAvL1VzZSB0aGlzIGxpbmUgdG8gZW5hYmxlIHR3byB3YXkgYmluZGluZy5cclxuICAgIHRoaXMub3B0aW9ucy5WYWx1ZT1vcmlnaW5hbFZhbHVlO1xyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KG9yaWdpbmFsVmFsdWUpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcblxyXG4gIEFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgSXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbClcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuIl19