slick-components 4.4.13 → 4.4.16

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 (346) hide show
  1. package/css/slick-components.css +598 -365
  2. package/css/slick-components.min.css +1 -1
  3. package/esm2020/public-api.mjs +43 -0
  4. package/esm2020/slick-accordion/slick-accordion-item-header.component.mjs +14 -0
  5. package/esm2020/slick-accordion/slick-accordion-item.component.mjs +86 -0
  6. package/esm2020/slick-accordion/slick-accordion.component.mjs +75 -0
  7. package/esm2020/slick-accordion/slick-accordion.module.mjs +23 -0
  8. package/esm2020/slick-auto-complete/slick-auto-complete-list-item-template.directive.mjs +22 -0
  9. package/esm2020/slick-auto-complete/slick-auto-complete.component.mjs +375 -0
  10. package/esm2020/slick-auto-complete/slick-auto-complete.module.mjs +24 -0
  11. package/esm2020/slick-button-spinner/slick-button-spinner.component.mjs +175 -0
  12. package/esm2020/slick-button-spinner/slick-button-spinner.module.mjs +19 -0
  13. package/esm2020/slick-calendar/slick-calendar.component.mjs +246 -0
  14. package/esm2020/slick-calendar/slick-calendar.module.mjs +19 -0
  15. package/esm2020/slick-card/slick-card-header.component.mjs +14 -0
  16. package/esm2020/slick-card/slick-card.component.mjs +42 -0
  17. package/esm2020/slick-card/slick-card.module.mjs +20 -0
  18. package/esm2020/slick-components.mjs +5 -0
  19. package/esm2020/slick-confirm-dialog/slick-confirm-dialog.component.mjs +65 -0
  20. package/esm2020/slick-confirm-dialog/slick-confirm-dialog.module.mjs +20 -0
  21. package/esm2020/slick-container/slick-container-body.component.mjs +24 -0
  22. package/esm2020/slick-container/slick-container-footer.component.mjs +20 -0
  23. package/esm2020/slick-container/slick-container-header.component.mjs +20 -0
  24. package/esm2020/slick-container/slick-container.component.mjs +21 -0
  25. package/esm2020/slick-container/slick-container.module.mjs +25 -0
  26. package/esm2020/slick-context-menu/slick-context-menu-item.component.mjs +14 -0
  27. package/esm2020/slick-context-menu/slick-context-menu.component.mjs +48 -0
  28. package/esm2020/slick-context-menu/slick-context-menu.module.mjs +20 -0
  29. package/{esm2015/slick-currency-mask/slick-currency-mask-options.model.js → esm2020/slick-currency-mask/slick-currency-mask-options.model.mjs} +0 -0
  30. package/esm2020/slick-currency-mask/slick-currency-mask.directive.mjs +233 -0
  31. package/esm2020/slick-currency-mask/slick-currency-mask.module.mjs +19 -0
  32. package/esm2020/slick-date-picker/slick-date-picker.component.mjs +278 -0
  33. package/esm2020/slick-date-picker/slick-date-picker.module.mjs +21 -0
  34. package/esm2020/slick-dialog/slick-dialog-footer.component.mjs +24 -0
  35. package/esm2020/slick-dialog/slick-dialog.component.mjs +294 -0
  36. package/esm2020/slick-dialog/slick-dialog.module.mjs +23 -0
  37. package/esm2020/slick-dialog/slick-dialog.service.mjs +68 -0
  38. package/esm2020/slick-drag-drop/slick-drag-drop.directive.mjs +13 -0
  39. package/esm2020/slick-drag-drop/slick-drag-drop.module.mjs +21 -0
  40. package/esm2020/slick-drag-drop/slick-draggable.directive.mjs +13 -0
  41. package/{esm2015/slick-drop-down/slick-drop-down-button.model.js → esm2020/slick-drop-down/slick-drop-down-button.model.mjs} +0 -0
  42. package/esm2020/slick-drop-down/slick-drop-down.component.mjs +479 -0
  43. package/esm2020/slick-drop-down/slick-drop-down.module.mjs +24 -0
  44. package/esm2020/slick-drop-down/slick-drop-down.service.mjs +55 -0
  45. package/esm2020/slick-drop-list/slick-drop-list-grab.directive.mjs +18 -0
  46. package/esm2020/slick-drop-list/slick-drop-list-item.directive.mjs +18 -0
  47. package/esm2020/slick-drop-list/slick-drop-list.directive.mjs +215 -0
  48. package/esm2020/slick-drop-list/slick-drop-list.module.mjs +23 -0
  49. package/esm2020/slick-email-viewer/slick-email-viewer-dialog.component.mjs +81 -0
  50. package/esm2020/slick-email-viewer/slick-email-viewer.component.mjs +42 -0
  51. package/esm2020/slick-email-viewer/slick-email-viewer.module.mjs +26 -0
  52. package/{esm2015/slick-emailer/slick-emailer-address.model.js → esm2020/slick-emailer/slick-emailer-address.model.mjs} +0 -0
  53. package/esm2020/slick-emailer/slick-emailer-dialog.component.mjs +153 -0
  54. package/esm2020/slick-emailer/slick-emailer.component.mjs +235 -0
  55. package/{esm2015/slick-emailer/slick-emailer.model.js → esm2020/slick-emailer/slick-emailer.model.mjs} +0 -0
  56. package/esm2020/slick-emailer/slick-emailer.module.mjs +29 -0
  57. package/esm2020/slick-file-drop/slick-file-drop.component.mjs +156 -0
  58. package/esm2020/slick-file-drop/slick-file-drop.module.mjs +20 -0
  59. package/esm2020/slick-file-list/slick-file-list-item.component.mjs +173 -0
  60. package/esm2020/slick-file-list/slick-file-list.component.mjs +130 -0
  61. package/esm2020/slick-file-list/slick-file-list.module.mjs +23 -0
  62. package/{esm2015/slick-file-model/slick-file.model.js → esm2020/slick-file-model/slick-file.model.mjs} +0 -0
  63. package/esm2020/slick-google-address-search/slick-google-address-search.directive.mjs +75 -0
  64. package/esm2020/slick-google-address-search/slick-google-address-search.module.mjs +19 -0
  65. package/esm2020/slick-google-map/slick-google-map-dialog.component.mjs +50 -0
  66. package/esm2020/slick-google-map/slick-google-map.component.mjs +48 -0
  67. package/esm2020/slick-google-map/slick-google-map.module.mjs +22 -0
  68. package/esm2020/slick-grid/slick-grid-column-template.directive.mjs +19 -0
  69. package/{esm2015/slick-grid/slick-grid-column.model.js → esm2020/slick-grid/slick-grid-column.model.mjs} +0 -0
  70. package/{esm2015/slick-grid/slick-grid-favorite.model.js → esm2020/slick-grid/slick-grid-favorite.model.mjs} +0 -0
  71. package/{esm2015/slick-grid/slick-grid-request.model.js → esm2020/slick-grid/slick-grid-request.model.mjs} +0 -0
  72. package/{esm2015/slick-grid/slick-grid-response.model.js → esm2020/slick-grid/slick-grid-response.model.mjs} +0 -0
  73. package/esm2020/slick-grid/slick-grid-sanitize.pipe.mjs +20 -0
  74. package/esm2020/slick-grid/slick-grid.component.mjs +793 -0
  75. package/esm2020/slick-grid/slick-grid.module.mjs +43 -0
  76. package/{esm2015/slick-grid/slick-grid.options.js → esm2020/slick-grid/slick-grid.options.mjs} +0 -0
  77. package/esm2020/slick-grid/slick-grid.service.mjs +66 -0
  78. package/esm2020/slick-multi-select/slick-multi-select.component.mjs +362 -0
  79. package/esm2020/slick-multi-select/slick-multi-select.module.mjs +20 -0
  80. package/esm2020/slick-multi-select/slick-multi-select.service.mjs +77 -0
  81. package/esm2020/slick-ordered-list/slick-ordered-list.component.mjs +200 -0
  82. package/esm2020/slick-ordered-list/slick-ordered-list.module.mjs +20 -0
  83. package/esm2020/slick-paging/slick-paging.component.mjs +185 -0
  84. package/esm2020/slick-paging/slick-paging.module.mjs +19 -0
  85. package/esm2020/slick-photo-gallery/slick-photo-gallery.component.mjs +98 -0
  86. package/{esm2015/slick-photo-gallery/slick-photo-gallery.model.js → esm2020/slick-photo-gallery/slick-photo-gallery.model.mjs} +0 -0
  87. package/esm2020/slick-photo-gallery/slick-photo-gallery.module.mjs +21 -0
  88. package/esm2020/slick-pick-list/slick-pick-list.component.mjs +84 -0
  89. package/esm2020/slick-pick-list/slick-pick-list.module.mjs +20 -0
  90. package/esm2020/slick-popover/slick-popover.component.mjs +204 -0
  91. package/esm2020/slick-popover/slick-popover.module.mjs +19 -0
  92. package/esm2020/slick-profile-picture/slick-profile-picture.component.mjs +267 -0
  93. package/esm2020/slick-profile-picture/slick-profile-picture.module.mjs +20 -0
  94. package/esm2020/slick-progress-bar/slick-progress-bar.module.mjs +18 -0
  95. package/esm2020/slick-progress-bar/slick-progress-bar.service.mjs +53 -0
  96. package/esm2020/slick-screen-blocker/slick-screen-blocker.module.mjs +18 -0
  97. package/esm2020/slick-screen-blocker/slick-screen-blocker.service.mjs +83 -0
  98. package/{esm2015/slick-slider/slick-slider-tick.model.js → esm2020/slick-slider/slick-slider-tick.model.mjs} +0 -0
  99. package/esm2020/slick-slider/slick-slider.component.mjs +90 -0
  100. package/esm2020/slick-slider/slick-slider.module.mjs +20 -0
  101. package/esm2020/slick-split-screen/slick-screen-split-left-content.component.mjs +15 -0
  102. package/esm2020/slick-split-screen/slick-screen-split-right-content.component.mjs +15 -0
  103. package/esm2020/slick-split-screen/slick-split-screen.component.mjs +159 -0
  104. package/esm2020/slick-split-screen/slick-split-screen.module.mjs +21 -0
  105. package/esm2020/slick-tabs/slick-tab-header.component.mjs +28 -0
  106. package/esm2020/slick-tabs/slick-tab.component.mjs +63 -0
  107. package/{esm2015/slick-tabs/slick-tab.model.js → esm2020/slick-tabs/slick-tab.model.mjs} +0 -0
  108. package/esm2020/slick-tabs/slick-tabs.component.mjs +107 -0
  109. package/esm2020/slick-tabs/slick-tabs.module.mjs +23 -0
  110. package/esm2020/slick-toast/slick-toast.module.mjs +18 -0
  111. package/esm2020/slick-toast/slick-toast.service.mjs +88 -0
  112. package/{esm2015/slick-tree-view/slick-tree-node.model.js → esm2020/slick-tree-view/slick-tree-node.model.mjs} +0 -0
  113. package/esm2020/slick-tree-view/slick-tree-view.component.mjs +293 -0
  114. package/esm2020/slick-tree-view/slick-tree-view.module.mjs +22 -0
  115. package/esm2020/slick-type-ahead/slick-type-ahead.directive.mjs +164 -0
  116. package/esm2020/slick-type-ahead/slick-type-ahead.module.mjs +18 -0
  117. package/esm2020/slick-validation-indicator/slick-validation-indicator.directive.mjs +63 -0
  118. package/esm2020/slick-validation-indicator/slick-validation-indicator.module.mjs +19 -0
  119. package/esm2020/utils/slick-function-lock.service.mjs +55 -0
  120. package/esm2020/utils/slick-init.service.mjs +49 -0
  121. package/esm2020/utils/slick-log.service.mjs +23 -0
  122. package/esm2020/utils/slick-sleep.service.mjs +14 -0
  123. package/esm2020/utils/slick-utils.service.mjs +247 -0
  124. package/fesm2015/{slick-components.js → slick-components.mjs} +2779 -2070
  125. package/fesm2015/slick-components.mjs.map +1 -0
  126. package/fesm2020/slick-components.mjs +8467 -0
  127. package/fesm2020/slick-components.mjs.map +1 -0
  128. package/package.json +20 -8
  129. package/public-api.d.ts +8 -8
  130. package/slick-accordion/slick-accordion-item-header.component.d.ts +3 -0
  131. package/slick-accordion/slick-accordion-item.component.d.ts +3 -0
  132. package/slick-accordion/slick-accordion.component.d.ts +3 -0
  133. package/slick-accordion/slick-accordion.module.d.ts +8 -0
  134. package/slick-auto-complete/slick-auto-complete-list-item-template.directive.d.ts +3 -0
  135. package/slick-auto-complete/slick-auto-complete.component.d.ts +3 -0
  136. package/slick-auto-complete/slick-auto-complete.module.d.ts +8 -0
  137. package/slick-button-spinner/slick-button-spinner.component.d.ts +3 -0
  138. package/slick-button-spinner/slick-button-spinner.module.d.ts +6 -0
  139. package/slick-calendar/slick-calendar.component.d.ts +3 -0
  140. package/slick-calendar/slick-calendar.module.d.ts +6 -0
  141. package/slick-card/slick-card-header.component.d.ts +3 -0
  142. package/slick-card/slick-card.component.d.ts +3 -0
  143. package/slick-card/slick-card.module.d.ts +10 -0
  144. package/slick-components.d.ts +1 -22
  145. package/slick-confirm-dialog/slick-confirm-dialog.component.d.ts +3 -0
  146. package/slick-confirm-dialog/slick-confirm-dialog.module.d.ts +7 -0
  147. package/slick-container/slick-container-body.component.d.ts +3 -0
  148. package/slick-container/slick-container-footer.component.d.ts +3 -0
  149. package/slick-container/slick-container-header.component.d.ts +3 -0
  150. package/slick-container/slick-container.component.d.ts +3 -0
  151. package/slick-container/slick-container.module.d.ts +9 -0
  152. package/slick-context-menu/slick-context-menu-item.component.d.ts +3 -0
  153. package/slick-context-menu/slick-context-menu.component.d.ts +3 -0
  154. package/slick-context-menu/slick-context-menu.module.d.ts +7 -0
  155. package/slick-currency-mask/slick-currency-mask.directive.d.ts +3 -0
  156. package/slick-currency-mask/slick-currency-mask.module.d.ts +5 -0
  157. package/slick-date-picker/slick-date-picker.component.d.ts +3 -0
  158. package/slick-date-picker/slick-date-picker.module.d.ts +8 -0
  159. package/slick-dialog/slick-dialog-footer.component.d.ts +3 -0
  160. package/slick-dialog/slick-dialog.component.d.ts +3 -0
  161. package/slick-dialog/slick-dialog.module.d.ts +10 -1
  162. package/slick-dialog/slick-dialog.service.d.ts +3 -0
  163. package/slick-drag-drop/slick-drag-drop.directive.d.ts +3 -0
  164. package/slick-drag-drop/slick-drag-drop.module.d.ts +11 -0
  165. package/slick-drag-drop/slick-draggable.directive.d.ts +3 -0
  166. package/slick-drop-down/slick-drop-down.component.d.ts +3 -0
  167. package/slick-drop-down/slick-drop-down.module.d.ts +9 -0
  168. package/slick-drop-down/slick-drop-down.service.d.ts +3 -0
  169. package/slick-drop-list/slick-drop-list-grab.directive.d.ts +3 -0
  170. package/slick-drop-list/slick-drop-list-item.directive.d.ts +3 -0
  171. package/slick-drop-list/slick-drop-list.directive.d.ts +13 -7
  172. package/slick-drop-list/slick-drop-list.module.d.ts +14 -0
  173. package/slick-email-viewer/slick-email-viewer-dialog.component.d.ts +3 -0
  174. package/slick-email-viewer/slick-email-viewer.component.d.ts +3 -0
  175. package/slick-email-viewer/slick-email-viewer.module.d.ts +10 -0
  176. package/slick-emailer/slick-emailer-dialog.component.d.ts +3 -0
  177. package/slick-emailer/slick-emailer.component.d.ts +3 -0
  178. package/slick-emailer/slick-emailer.module.d.ts +13 -0
  179. package/slick-file-drop/slick-file-drop.component.d.ts +3 -0
  180. package/slick-file-drop/slick-file-drop.module.d.ts +7 -0
  181. package/slick-file-list/slick-file-list-item.component.d.ts +3 -0
  182. package/slick-file-list/slick-file-list.component.d.ts +3 -0
  183. package/slick-file-list/slick-file-list.module.d.ts +10 -0
  184. package/slick-google-address-search/slick-google-address-search.directive.d.ts +3 -0
  185. package/slick-google-address-search/slick-google-address-search.module.d.ts +6 -0
  186. package/slick-google-map/slick-google-map-dialog.component.d.ts +3 -0
  187. package/slick-google-map/slick-google-map.component.d.ts +3 -0
  188. package/slick-google-map/slick-google-map.module.d.ts +8 -0
  189. package/slick-grid/slick-grid-column-template.directive.d.ts +3 -0
  190. package/slick-grid/slick-grid-sanitize.pipe.d.ts +3 -0
  191. package/slick-grid/slick-grid.component.d.ts +3 -0
  192. package/slick-grid/slick-grid.module.d.ts +16 -0
  193. package/slick-grid/slick-grid.service.d.ts +3 -0
  194. package/slick-multi-select/slick-multi-select.component.d.ts +3 -0
  195. package/slick-multi-select/slick-multi-select.module.d.ts +7 -0
  196. package/slick-multi-select/slick-multi-select.service.d.ts +3 -0
  197. package/slick-ordered-list/slick-ordered-list.component.d.ts +3 -0
  198. package/slick-ordered-list/slick-ordered-list.module.d.ts +7 -0
  199. package/slick-paging/slick-paging.component.d.ts +3 -0
  200. package/slick-paging/slick-paging.module.d.ts +6 -0
  201. package/slick-photo-gallery/slick-photo-gallery.component.d.ts +3 -0
  202. package/slick-photo-gallery/slick-photo-gallery.module.d.ts +6 -0
  203. package/slick-pick-list/slick-pick-list.component.d.ts +3 -0
  204. package/slick-pick-list/slick-pick-list.module.d.ts +7 -0
  205. package/slick-popover/slick-popover.component.d.ts +3 -0
  206. package/slick-popover/slick-popover.module.d.ts +6 -0
  207. package/slick-profile-picture/slick-profile-picture.component.d.ts +3 -0
  208. package/slick-profile-picture/slick-profile-picture.module.d.ts +7 -0
  209. package/slick-progress-bar/slick-progress-bar.module.d.ts +5 -0
  210. package/slick-progress-bar/slick-progress-bar.service.d.ts +3 -0
  211. package/slick-screen-blocker/slick-screen-blocker.module.d.ts +5 -0
  212. package/slick-screen-blocker/slick-screen-blocker.service.d.ts +3 -0
  213. package/slick-slider/slick-slider.component.d.ts +3 -0
  214. package/slick-slider/slick-slider.module.d.ts +6 -0
  215. package/slick-split-screen/slick-screen-split-left-content.component.d.ts +3 -0
  216. package/slick-split-screen/slick-screen-split-right-content.component.d.ts +3 -0
  217. package/slick-split-screen/slick-split-screen.component.d.ts +3 -0
  218. package/slick-split-screen/slick-split-screen.module.d.ts +8 -0
  219. package/slick-tabs/slick-tab-header.component.d.ts +3 -0
  220. package/slick-tabs/slick-tab.component.d.ts +3 -0
  221. package/slick-tabs/slick-tabs.component.d.ts +3 -0
  222. package/slick-tabs/slick-tabs.module.d.ts +10 -0
  223. package/slick-toast/slick-toast.module.d.ts +5 -0
  224. package/slick-toast/slick-toast.service.d.ts +3 -0
  225. package/slick-tree-view/slick-tree-view.component.d.ts +3 -0
  226. package/slick-tree-view/slick-tree-view.module.d.ts +8 -0
  227. package/slick-type-ahead/slick-type-ahead.directive.d.ts +3 -0
  228. package/slick-type-ahead/slick-type-ahead.module.d.ts +5 -0
  229. package/slick-validation-indicator/slick-validation-indicator.directive.d.ts +3 -0
  230. package/slick-validation-indicator/slick-validation-indicator.module.d.ts +6 -0
  231. package/utils/slick-function-lock.service.d.ts +3 -0
  232. package/utils/slick-init.service.d.ts +3 -0
  233. package/utils/slick-log.service.d.ts +3 -0
  234. package/utils/slick-sleep.service.d.ts +3 -0
  235. package/utils/slick-utils.service.d.ts +5 -0
  236. package/bundles/slick-components.umd.js +0 -9777
  237. package/bundles/slick-components.umd.js.map +0 -1
  238. package/esm2015/public-api.js +0 -43
  239. package/esm2015/slick-accordion/slick-accordion-item-header.component.js +0 -10
  240. package/esm2015/slick-accordion/slick-accordion-item.component.js +0 -80
  241. package/esm2015/slick-accordion/slick-accordion.component.js +0 -77
  242. package/esm2015/slick-accordion/slick-accordion.module.js +0 -18
  243. package/esm2015/slick-auto-complete/slick-auto-complete-list-item-template.directive.js +0 -21
  244. package/esm2015/slick-auto-complete/slick-auto-complete.component.js +0 -352
  245. package/esm2015/slick-auto-complete/slick-auto-complete.module.js +0 -19
  246. package/esm2015/slick-button-spinner/slick-button-spinner.component.js +0 -186
  247. package/esm2015/slick-button-spinner/slick-button-spinner.module.js +0 -14
  248. package/esm2015/slick-calendar/slick-calendar.component.js +0 -233
  249. package/esm2015/slick-calendar/slick-calendar.module.js +0 -14
  250. package/esm2015/slick-card/slick-card-header.component.js +0 -10
  251. package/esm2015/slick-card/slick-card.component.js +0 -37
  252. package/esm2015/slick-card/slick-card.module.js +0 -14
  253. package/esm2015/slick-components.js +0 -27
  254. package/esm2015/slick-confirm-dialog/slick-confirm-dialog.component.js +0 -62
  255. package/esm2015/slick-confirm-dialog/slick-confirm-dialog.module.js +0 -15
  256. package/esm2015/slick-container/slick-container-body.component.js +0 -18
  257. package/esm2015/slick-container/slick-container-footer.component.js +0 -16
  258. package/esm2015/slick-container/slick-container-header.component.js +0 -16
  259. package/esm2015/slick-container/slick-container.component.js +0 -19
  260. package/esm2015/slick-container/slick-container.module.js +0 -20
  261. package/esm2015/slick-context-menu/slick-context-menu-item.component.js +0 -10
  262. package/esm2015/slick-context-menu/slick-context-menu.component.js +0 -43
  263. package/esm2015/slick-context-menu/slick-context-menu.module.js +0 -15
  264. package/esm2015/slick-currency-mask/slick-currency-mask.directive.js +0 -234
  265. package/esm2015/slick-currency-mask/slick-currency-mask.module.js +0 -14
  266. package/esm2015/slick-date-picker/slick-date-picker.component.js +0 -267
  267. package/esm2015/slick-date-picker/slick-date-picker.module.js +0 -16
  268. package/esm2015/slick-dialog/slick-dialog-footer.component.js +0 -18
  269. package/esm2015/slick-dialog/slick-dialog.component.js +0 -282
  270. package/esm2015/slick-dialog/slick-dialog.module.js +0 -18
  271. package/esm2015/slick-dialog/slick-dialog.service.js +0 -67
  272. package/esm2015/slick-drag-drop/slick-drag-drop.directive.js +0 -9
  273. package/esm2015/slick-drag-drop/slick-drag-drop.module.js +0 -14
  274. package/esm2015/slick-drag-drop/slick-draggable.directive.js +0 -9
  275. package/esm2015/slick-drop-down/slick-drop-down.component.js +0 -465
  276. package/esm2015/slick-drop-down/slick-drop-down.module.js +0 -19
  277. package/esm2015/slick-drop-down/slick-drop-down.service.js +0 -59
  278. package/esm2015/slick-drop-list/slick-drop-list-grab.directive.js +0 -18
  279. package/esm2015/slick-drop-list/slick-drop-list-item.directive.js +0 -18
  280. package/esm2015/slick-drop-list/slick-drop-list.directive.js +0 -162
  281. package/esm2015/slick-drop-list/slick-drop-list.module.js +0 -15
  282. package/esm2015/slick-email-viewer/slick-email-viewer-dialog.component.js +0 -61
  283. package/esm2015/slick-email-viewer/slick-email-viewer.component.js +0 -39
  284. package/esm2015/slick-email-viewer/slick-email-viewer.module.js +0 -21
  285. package/esm2015/slick-emailer/slick-emailer-dialog.component.js +0 -122
  286. package/esm2015/slick-emailer/slick-emailer.component.js +0 -226
  287. package/esm2015/slick-emailer/slick-emailer.module.js +0 -24
  288. package/esm2015/slick-file-drop/slick-file-drop.component.js +0 -144
  289. package/esm2015/slick-file-drop/slick-file-drop.module.js +0 -15
  290. package/esm2015/slick-file-list/slick-file-list-item.component.js +0 -156
  291. package/esm2015/slick-file-list/slick-file-list.component.js +0 -114
  292. package/esm2015/slick-file-list/slick-file-list.module.js +0 -18
  293. package/esm2015/slick-google-address-search/slick-google-address-search.directive.js +0 -75
  294. package/esm2015/slick-google-address-search/slick-google-address-search.module.js +0 -14
  295. package/esm2015/slick-google-map/slick-google-map-dialog.component.js +0 -45
  296. package/esm2015/slick-google-map/slick-google-map.component.js +0 -45
  297. package/esm2015/slick-google-map/slick-google-map.module.js +0 -17
  298. package/esm2015/slick-grid/slick-grid-column-template.directive.js +0 -19
  299. package/esm2015/slick-grid/slick-grid-sanitize.pipe.js +0 -20
  300. package/esm2015/slick-grid/slick-grid.component.js +0 -792
  301. package/esm2015/slick-grid/slick-grid.module.js +0 -38
  302. package/esm2015/slick-grid/slick-grid.service.js +0 -72
  303. package/esm2015/slick-multi-select/slick-multi-select.component.js +0 -356
  304. package/esm2015/slick-multi-select/slick-multi-select.module.js +0 -15
  305. package/esm2015/slick-multi-select/slick-multi-select.service.js +0 -74
  306. package/esm2015/slick-ordered-list/slick-ordered-list.component.js +0 -198
  307. package/esm2015/slick-ordered-list/slick-ordered-list.module.js +0 -15
  308. package/esm2015/slick-paging/slick-paging.component.js +0 -180
  309. package/esm2015/slick-paging/slick-paging.module.js +0 -14
  310. package/esm2015/slick-photo-gallery/slick-photo-gallery.component.js +0 -101
  311. package/esm2015/slick-photo-gallery/slick-photo-gallery.module.js +0 -16
  312. package/esm2015/slick-pick-list/slick-pick-list.component.js +0 -78
  313. package/esm2015/slick-pick-list/slick-pick-list.module.js +0 -15
  314. package/esm2015/slick-popover/slick-popover.component.js +0 -199
  315. package/esm2015/slick-popover/slick-popover.module.js +0 -14
  316. package/esm2015/slick-profile-picture/slick-profile-picture.component.js +0 -242
  317. package/esm2015/slick-profile-picture/slick-profile-picture.module.js +0 -15
  318. package/esm2015/slick-progress-bar/slick-progress-bar.module.js +0 -13
  319. package/esm2015/slick-progress-bar/slick-progress-bar.service.js +0 -50
  320. package/esm2015/slick-screen-blocker/slick-screen-blocker.module.js +0 -13
  321. package/esm2015/slick-screen-blocker/slick-screen-blocker.service.js +0 -80
  322. package/esm2015/slick-slider/slick-slider.component.js +0 -88
  323. package/esm2015/slick-slider/slick-slider.module.js +0 -15
  324. package/esm2015/slick-split-screen/slick-screen-split-left-content.component.js +0 -13
  325. package/esm2015/slick-split-screen/slick-screen-split-right-content.component.js +0 -13
  326. package/esm2015/slick-split-screen/slick-split-screen.component.js +0 -148
  327. package/esm2015/slick-split-screen/slick-split-screen.module.js +0 -16
  328. package/esm2015/slick-tabs/slick-tab-header.component.js +0 -25
  329. package/esm2015/slick-tabs/slick-tab.component.js +0 -67
  330. package/esm2015/slick-tabs/slick-tabs.component.js +0 -104
  331. package/esm2015/slick-tabs/slick-tabs.module.js +0 -17
  332. package/esm2015/slick-toast/slick-toast.module.js +0 -13
  333. package/esm2015/slick-toast/slick-toast.service.js +0 -91
  334. package/esm2015/slick-tree-view/slick-tree-view.component.js +0 -287
  335. package/esm2015/slick-tree-view/slick-tree-view.module.js +0 -17
  336. package/esm2015/slick-type-ahead/slick-type-ahead.directive.js +0 -155
  337. package/esm2015/slick-type-ahead/slick-type-ahead.module.js +0 -13
  338. package/esm2015/slick-validation-indicator/slick-validation-indicator.directive.js +0 -61
  339. package/esm2015/slick-validation-indicator/slick-validation-indicator.module.js +0 -14
  340. package/esm2015/utils/slick-function-lock.service.js +0 -54
  341. package/esm2015/utils/slick-init.service.js +0 -48
  342. package/esm2015/utils/slick-log.service.js +0 -27
  343. package/esm2015/utils/slick-sleep.service.js +0 -14
  344. package/esm2015/utils/slick-utils.service.js +0 -229
  345. package/fesm2015/slick-components.js.map +0 -1
  346. package/slick-components.metadata.json +0 -1
@@ -1,465 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, forwardRef, ChangeDetectorRef } from "@angular/core";
3
- import { SlickDropDownService } from "./slick-drop-down.service";
4
- import { NG_VALUE_ACCESSOR } from "@angular/forms";
5
- import { SlickSleepService } from "../utils/slick-sleep.service";
6
- import { SlickUtilsService } from "../utils/slick-utils.service";
7
- import { SlickInitService } from "../utils/slick-init.service";
8
- import { SlickLogService } from "../utils/slick-log.service";
9
- export var SlickDropDownSearchTypes;
10
- (function (SlickDropDownSearchTypes) {
11
- SlickDropDownSearchTypes[SlickDropDownSearchTypes["startsWith"] = 0] = "startsWith";
12
- SlickDropDownSearchTypes[SlickDropDownSearchTypes["eachWord"] = 1] = "eachWord";
13
- SlickDropDownSearchTypes[SlickDropDownSearchTypes["any"] = 2] = "any";
14
- })(SlickDropDownSearchTypes || (SlickDropDownSearchTypes = {}));
15
- export class SlickDropDownComponent {
16
- constructor(slickDropDownService, changeDetector) {
17
- this.slickDropDownService = slickDropDownService;
18
- this.changeDetector = changeDetector;
19
- this.placeholder = '';
20
- this.idFieldName = "id";
21
- this.textFieldName = "text";
22
- this.compact = false;
23
- this.disabled = false;
24
- this.allowEmpty = true;
25
- this.width = '100%';
26
- this.listWidth = '100%';
27
- this.height = '300px';
28
- this.showLoadingMessage = false;
29
- this.searchType = SlickDropDownSearchTypes.startsWith;
30
- this.isMobile = false;
31
- this.onExpand = new EventEmitter();
32
- this.onSelect = new EventEmitter();
33
- this.onChange = new EventEmitter();
34
- // This is necessary so that the scroll and resize events can add and remove the event properly,
35
- // as well as getting the correct ES6 function
36
- this.fnReposition = () => this.reposition();
37
- this.fnDocumentClick = (e) => this.documentClick(e);
38
- this.expanded = false;
39
- this.filterText = '';
40
- this.isVisible = false;
41
- this.isAndroid = ((SlickInitService.getPlatform() || '').toLowerCase() === 'android');
42
- this.skipOnFocusEvent = false;
43
- this.skipClickExpand = false;
44
- this.propagateChange = (_) => { };
45
- this.uuid = SlickUtilsService.newGuid();
46
- }
47
- ngOnInit() {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- this.attachTo = this.attachTo || SlickInitService.getParams().attachTo || 'body';
50
- });
51
- }
52
- ngAfterViewInit() {
53
- }
54
- // this is the initial value set to the component
55
- writeValue(obj) {
56
- if (obj !== null && obj !== undefined)
57
- this.selectedId = obj;
58
- else
59
- this.selectedId = null;
60
- this.selectItem(this.selectedId, false);
61
- this.collapse();
62
- }
63
- // registers 'fn' that will be fired when changes are made
64
- // this is how we emit the changes back to the form
65
- registerOnChange(fn) {
66
- this.propagateChange = fn;
67
- }
68
- // not used, used for touch input
69
- registerOnTouched() { }
70
- ngOnChanges(changes) {
71
- return __awaiter(this, void 0, void 0, function* () {
72
- yield SlickSleepService.sleep();
73
- if (changes.items) {
74
- this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
75
- this.selectItem(this.selectedId, false);
76
- if (this.selectedTextInputRef && document.activeElement === this.selectedTextInputRef.nativeElement)
77
- this.expand();
78
- }
79
- if (changes.showLoadingMessage) {
80
- yield SlickSleepService.sleep();
81
- if (this.showLoadingMessage === true)
82
- this.selectedText = "Loading...";
83
- }
84
- if (changes.getUrl) {
85
- if (this.showLoadingMessage === true) {
86
- this.selectedText = "Loading...";
87
- }
88
- let items = yield this.slickDropDownService.getItemsFromServer(this.getUrl);
89
- this.selectedText = null;
90
- this.items = items;
91
- this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
92
- this.selectItem(this.selectedId, false);
93
- if (document.activeElement === this.selectedTextInputRef.nativeElement)
94
- this.expand();
95
- }
96
- if (changes.validationIndicator && changes.validationIndicator.firstChange) {
97
- if (!this.validationIndicatorType)
98
- this.validationIndicatorType = "error";
99
- }
100
- if (changes.allowEmpty)
101
- this.allowEmpty = (this.allowEmpty.toString().toLowerCase() === 'false') ? false : true;
102
- if (changes.isMobile)
103
- this.isMobile = (this.isMobile.toString().toLowerCase() === 'true') ? true : false;
104
- if (changes.disabled && changes.disabled.currentValue)
105
- this.disabled = (changes.disabled.currentValue.toString().toLowerCase() !== 'false');
106
- if (changes.compact && changes.compact.currentValue)
107
- this.compact = (changes.compact.currentValue.toString().toLowerCase() !== 'false');
108
- if (changes.searchType) {
109
- if (changes.searchType.currentValue.toString().toLowerCase() === 'eachword')
110
- this.searchType = SlickDropDownSearchTypes.eachWord;
111
- else if (changes.searchType.currentValue.toString().toLowerCase() === 'any')
112
- this.searchType = SlickDropDownSearchTypes.any;
113
- else
114
- this.searchType = SlickDropDownSearchTypes.startsWith;
115
- }
116
- });
117
- }
118
- ngOnDestroy() {
119
- this.collapse();
120
- document.removeEventListener("click", this.fnDocumentClick, true);
121
- // it's okay if this fails. It was already removed
122
- try {
123
- document.body.removeChild(this.dropdownList.nativeElement);
124
- }
125
- catch (_a) { }
126
- }
127
- setFocus(showDropdownList = false) {
128
- return __awaiter(this, void 0, void 0, function* () {
129
- this.filterText = '';
130
- this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
131
- this.skipOnFocusEvent = (showDropdownList === false);
132
- yield SlickUtilsService.waitForElement("#slick-drop-down_" + this.uuid);
133
- this.selectedTextInputRef.nativeElement.focus();
134
- });
135
- }
136
- expand() {
137
- return __awaiter(this, void 0, void 0, function* () {
138
- if (this.disabled)
139
- return;
140
- this.isVisible = true;
141
- this.changeDetector.detectChanges();
142
- SlickUtilsService.attachElement(this.dropdownList.nativeElement, this.attachTo);
143
- this.reposition();
144
- yield SlickSleepService.sleep();
145
- this.dropdownList.nativeElement.style.display = "inline-block";
146
- const selectedItems = this.dropdownList.nativeElement.getElementsByClassName("active");
147
- if (selectedItems && selectedItems.length > 0)
148
- selectedItems[0].scrollIntoView({ block: 'nearest' });
149
- this.expanded = true;
150
- // This is necessary, otherwise `this` in the reposition function will be window
151
- // and not the component.
152
- // Since angular has no way to use the third parameter, I'm doing this in raw js
153
- document.addEventListener("click", this.fnDocumentClick, true);
154
- if (this.onExpand)
155
- this.onExpand.emit();
156
- });
157
- }
158
- collapse() {
159
- if (this.expanded === false)
160
- return;
161
- this.expanded = false;
162
- this.dropdownList.nativeElement.style.display = "none";
163
- // Since angular has no way to use the third parameter, I'm doing this in raw js
164
- document.removeEventListener("click", this.fnDocumentClick, true);
165
- SlickUtilsService.removeElement(this.dropdownList.nativeElement);
166
- this.isVisible = false;
167
- this.skipOnFocusEvent = false;
168
- }
169
- reposition() {
170
- const dropDownRect = this.containerDiv.nativeElement.getBoundingClientRect();
171
- const parentRect = (this.attachTo === 'body') ? null : document.body.querySelector(this.attachTo).getBoundingClientRect();
172
- const containerLeft = (this.attachTo === 'body') ? dropDownRect.left : (dropDownRect.left - parentRect.left);
173
- const containerTop = (this.attachTo === 'body') ? dropDownRect.top : (dropDownRect.top - parentRect.top);
174
- const containerHeight = this.containerDiv.nativeElement.offsetHeight;
175
- const containerWidth = dropDownRect.width;
176
- this.width = containerWidth;
177
- if (this.listWidth === '100%')
178
- this.listGroupWidth = this.width;
179
- else if (this.listWidth === 'auto')
180
- this.listGroupWidth = "auto";
181
- else
182
- this.listGroupWidth = this.listWidth;
183
- this.top = (containerTop + containerHeight);
184
- this.left = containerLeft;
185
- }
186
- documentClick(e) {
187
- return __awaiter(this, void 0, void 0, function* () {
188
- // Not entirely sure why, but iPhones call onFocus when clicking out of the dropdown
189
- if (this.isMobile)
190
- this.skipOnFocusEvent = true;
191
- if (!this.expanded || !e.target)
192
- return;
193
- if (SlickUtilsService.checkParentIdExists(e.target, "slick-drop-down_" + this.uuid) === true)
194
- return;
195
- this.selectedTextInputRef.nativeElement.setSelectionRange(0, 0);
196
- if (this.selectedIndex !== null && this.visibleItems.length > 0) {
197
- let itemId = this.visibleItems[this.selectedIndex].id;
198
- this.selectItem(itemId, true);
199
- }
200
- this.collapse();
201
- });
202
- }
203
- selectItem(id, emitOnSelect) {
204
- let item = this.slickDropDownService.getSelectedItem(this.visibleItems, id);
205
- if (item) {
206
- this.selectedItem = item;
207
- this.selectedId = item.id;
208
- this.selectedText = item.text;
209
- this.selectedIndex = this.slickDropDownService.getItemIndex(this.visibleItems, this.selectedId);
210
- if (this.onChange)
211
- this.onChange.emit(this.selectedItem.item);
212
- if (emitOnSelect === true && this.onSelect)
213
- this.onSelect.emit(this.selectedItem.item);
214
- this.propagateChange(this.selectedId);
215
- }
216
- else {
217
- this.selectedItem = null;
218
- this.selectedText = null;
219
- this.selectedIndex = null;
220
- }
221
- }
222
- onFocus() {
223
- return __awaiter(this, void 0, void 0, function* () {
224
- if (this.skipOnFocusEvent === true) {
225
- this.skipOnFocusEvent = false;
226
- return;
227
- }
228
- this.filterText = '';
229
- this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
230
- this.selectItem(this.selectedId, false);
231
- if (this.selectedIndex && this.selectedIndex >= 0) {
232
- this.selectedItem = this.visibleItems[this.selectedIndex];
233
- this.selectedTextInputRef.nativeElement.setSelectionRange(0, this.selectedItem.text.length);
234
- }
235
- // This is kind of hacky, but if onFocus is called by clicking the dropdown, the onDropdownClick event is called as well
236
- // That function will expand or collapse, depending on the state. Since this expands, it thinks it needs to collapse.
237
- // So fake it out and tell it NOT to collapse. BUT, if we came in from tabbing into the field, then it would mess up
238
- // the click event. So only wait for 1/2 second.
239
- this.skipClickExpand = true;
240
- this.expand();
241
- yield SlickSleepService.sleep(500);
242
- this.skipClickExpand = false;
243
- });
244
- }
245
- onKeyDown(e) {
246
- return __awaiter(this, void 0, void 0, function* () {
247
- if (this.isAndroid)
248
- return;
249
- // Tab/enter
250
- if (e.which === 9 || e.which === 13) {
251
- this.collapse();
252
- if (this.selectedIndex === null || this.selectedIndex === undefined)
253
- return;
254
- this.selectedTextInputRef.nativeElement.setSelectionRange(0, 0);
255
- let itemId = this.visibleItems[this.selectedIndex].id;
256
- this.selectItem(itemId, true);
257
- return true;
258
- }
259
- if (e.key && e.key.length > 1)
260
- return true;
261
- if (e.which === 46 || e.which === 8) {
262
- e.preventDefault();
263
- e.stopPropagation();
264
- }
265
- if (e.which >= 32 && e.which <= 126) {
266
- e.preventDefault();
267
- e.stopPropagation();
268
- }
269
- });
270
- }
271
- onKeyUp(e) {
272
- return __awaiter(this, void 0, void 0, function* () {
273
- e.preventDefault();
274
- e.stopPropagation();
275
- // If this is android, it won't pass us any key data so just read the entire input element
276
- if (this.isAndroid === true) {
277
- yield SlickSleepService.sleep();
278
- this.filterText = this.selectedTextInputRef.nativeElement.value;
279
- this.filterSearch();
280
- return;
281
- }
282
- // Esc
283
- if (e.which === 27) {
284
- this.collapse();
285
- return false;
286
- }
287
- // del or backspace
288
- if (e.which === 46 || e.which === 8 && !this.filterText) {
289
- e.preventDefault();
290
- e.stopPropagation();
291
- if (this.allowEmpty === true) {
292
- this.selectItem(null, true);
293
- this.selectedId = null;
294
- this.propagateChange(null);
295
- if (this.onChange)
296
- this.onChange.emit(null);
297
- if (this.onSelect)
298
- this.onSelect.emit(null);
299
- }
300
- return false;
301
- }
302
- if (e.which === 8 && this.filterText) {
303
- this.filterText = this.filterText.substring(0, this.filterText.length - 1);
304
- if (this.filterText.length === 0) {
305
- this.selectedText = '';
306
- this.selectedIndex = null;
307
- this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
308
- }
309
- else
310
- this.filterSearch();
311
- return false;
312
- }
313
- // Arrowup
314
- if (e.which === 38) {
315
- if (this.selectedIndex === null || this.selectedIndex === undefined)
316
- this.selectedIndex = 0;
317
- if (this.selectedIndex > 0)
318
- this.selectedIndex--;
319
- return false;
320
- }
321
- // Arrowdown
322
- if (e.which === 40) {
323
- if (this.selectedIndex === null || this.selectedIndex === undefined)
324
- this.selectedIndex = -1;
325
- if (!this.expanded || !this.visibleItems) {
326
- this.expand();
327
- return false;
328
- }
329
- if (this.selectedIndex < this.visibleItems.length - 1)
330
- this.selectedIndex++;
331
- return false;
332
- }
333
- // If F1 is pressed, key length will be 2
334
- if (e.key.length > 1 || e.ctrlKey || e.altKey)
335
- return false;
336
- if (e.which >= 32 && e.which <= 126) {
337
- this.filterText += e.key;
338
- this.filterSearch();
339
- }
340
- return true;
341
- });
342
- }
343
- //async onKeyPress(e: KeyboardEvent) {
344
- // await SlickSleepService.sleep();
345
- // if (((e.which >= 32 && e.which <= 126) || e.which === 8) && !e.ctrlKey && !e.altKey) {
346
- // if (e.which === 8)
347
- // this.filterText = this.filterText.substring(0, this.filterText.length - 1);
348
- // else
349
- // this.filterText += e.key;
350
- // this.filterSearch();
351
- // }
352
- // return true;
353
- //}
354
- filterSearch() {
355
- return __awaiter(this, void 0, void 0, function* () {
356
- if (!this.expanded)
357
- this.expand();
358
- this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
359
- if (this.searchType === SlickDropDownSearchTypes.startsWith) {
360
- this.visibleItems = this.visibleItems.filter(x => x.text.toLowerCase().indexOf(this.filterText.toLowerCase()) === 0);
361
- if (this.visibleItems.length > 0) {
362
- this.selectedIndex = 0;
363
- if (this.isAndroid === false) {
364
- this.selectedText = this.visibleItems[0].text;
365
- yield SlickSleepService.sleep();
366
- this.selectedTextInputRef.nativeElement.setSelectionRange(this.filterText.length, this.selectedText.length);
367
- }
368
- }
369
- else {
370
- this.selectedText = this.filterText;
371
- this.selectedIndex = null;
372
- }
373
- }
374
- else if (this.searchType === SlickDropDownSearchTypes.eachWord) {
375
- this.visibleItems = this.visibleItems.filter(x => (" " + x.text.toLowerCase()).indexOf(" " + this.filterText.toLowerCase()) >= 0);
376
- if (this.visibleItems.length > 0) {
377
- this.selectedIndex = 0;
378
- if (this.isAndroid === false) {
379
- this.selectedText = this.visibleItems[0].text;
380
- const selectedTextStart = (" " + this.visibleItems[0].text).toLowerCase().indexOf(" " + this.filterText.toLowerCase());
381
- yield SlickSleepService.sleep();
382
- this.selectedTextInputRef.nativeElement.setSelectionRange(selectedTextStart, selectedTextStart + this.filterText.length);
383
- }
384
- }
385
- else {
386
- this.selectedText = this.filterText;
387
- this.selectedIndex = null;
388
- }
389
- }
390
- });
391
- }
392
- onDropdownClicked() {
393
- this.filterText = '';
394
- this.visibleItems = this.slickDropDownService.getVisibleItems(this.items, this.idFieldName, this.textFieldName);
395
- this.selectItem(this.selectedId, false);
396
- this.selectedTextInputRef.nativeElement.focus();
397
- if (this.skipClickExpand === true) {
398
- this.skipClickExpand = false;
399
- return;
400
- }
401
- if (this.expanded === false)
402
- this.expand();
403
- else
404
- this.collapse();
405
- }
406
- onItemClick(item) {
407
- this.selectItem(item.id, true);
408
- this.collapse();
409
- }
410
- handleCustomButtonClick(callback, event) {
411
- event.stopPropagation();
412
- event.preventDefault();
413
- if (callback) {
414
- callback(event);
415
- }
416
- }
417
- }
418
- SlickDropDownComponent.decorators = [
419
- { type: Component, args: [{
420
- selector: 'slick-drop-down',
421
- template: "<div #containerDiv id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [className]=\"'slick-drop-down ' + (cssClass || '')\" [class.open]=\"expanded\">\r\n\t<div *ngIf=\"compact === false\">\r\n <div *ngIf=\"!disabled\" class='input-group' style=\"cursor: pointer !important\" (click)=\"onDropdownClicked()\">\r\n <ng-container *ngIf=\"prependButtons && prependButtons.length > 0\">\r\n <div class=\"input-group-prepend\">\r\n <ng-container *ngFor=\"let btn of prependButtons\">\r\n <button type=\"button\" class=\"input-group-text btn btn-primary badge-primary\" [disabled]=\"btn.disabled\" (click)=\"handleCustomButtonClick(btn.onClick, $event)\" style=\"margin-right: 2px; border-right: none;\">\r\n <i class=\"fas {{ btn.faClass }}\"></i>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <input *ngIf=\"validationIndicatorType\" [slick-validation-indicator]=\"validationIndicator\" [slickValidationType]=\"validationIndicatorType\" #selectedTextInputRef class='form-control' style='background: white; cursor: pointer' [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <input *ngIf=\"!validationIndicatorType\" #selectedTextInputRef class='form-control' style='background: white; cursor: pointer' [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onFocus()\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <div tabindex=\"-1\" class=\"input-group-append\">\r\n <span class=\"input-group-text btn-primary badge-primary\"><i class='fas fa-chevron-down'></i></span>\r\n </div>\r\n <ng-container *ngIf=\"appendButtons && appendButtons.length > 0\">\r\n <div class=\"input-group-append\" style=\"margin-left: 0px;\">\r\n <ng-container *ngFor=\"let btn of appendButtons\">\r\n <button type=\"button\" class=\"input-group-text btn btn-primary badge-primary\" [disabled]=\"btn.disabled\" (click)=\"handleCustomButtonClick(btn.onClick, $event)\" style=\"margin-left: 1px; border-left: none;\">\r\n <i class=\"fas {{ btn.faClass }}\"></i>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n\t\t<div *ngIf=\"disabled === true\" class='input-group'>\r\n\t\t\t<input #selectedTextInputRef style='cursor: default' [(ngModel)]=\"selectedText\" disabled=\"disabled\" readonly class='form-control' [placeholder]='placeholder' />\r\n\t\t\t<div tabindex=\"-1\" class=\"input-group-append disabled\">\r\n\t\t\t\t<span class=\"input-group-text text-muted\"><i class='fas fa-chevron-down'></i></span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div [className]=\"'slick-drop-down-compact ' + (cssClass || '')\" *ngIf=\"compact === true\">\r\n\t\t<div *ngIf=\"disabled === false\" style=\"cursor: pointer !important\" (click)=\"onDropdownClicked()\">\r\n\t\t\t<input #selectedTextInputRef class=\"text-body\" [attr.tabindex]=\"tabindex\" [(ngModel)]=\"selectedText\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus()\" ng-disabled='disabled' readonly [placeholder]='placeholder' />\r\n\t\t\t<div class=\"slick-drop-down-compact-arrow\" tabindex=\"-1\" style=\"position: relative; top: -1px;\"><i class='fas fa-chevron-down'></i></div>\r\n\t\t</div>\r\n\r\n\t\t<div *ngIf=\"disabled === true\" style=\"text-align: right;\">\r\n\t\t\t<div *ngIf='selectedText' style=\"text-align: right;\">{{selectedText}}</div>\r\n\t\t\t<div *ngIf=\"!selectedText\" style=\"text-align: right;\">{{placeholder}}</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<ul *ngIf=\"isVisible\" #dropdownList id=\"slick-drop-down_{{uuid}}\" class='slick-drop-down-list-group dropdown-menu' [style.width]=\"listGroupWidth\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"height\" [style.width.px]=\"listGroupWidth\" [style.left.px]=\"left\" [style.top.px]=\"top\">\r\n\t\t<li *ngFor=\"let item of visibleItems; let index = index;\" (click)=\"onItemClick(item)\" [class.active]=\"item.id === selectedItem?.id\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">{{item.text}}</li>\r\n\t</ul>\r\n\r\n</div>",
422
- providers: [SlickDropDownService, SlickLogService,
423
- {
424
- provide: NG_VALUE_ACCESSOR,
425
- useExisting: forwardRef(() => SlickDropDownComponent),
426
- multi: true,
427
- }]
428
- },] }
429
- ];
430
- /** @nocollapse */
431
- SlickDropDownComponent.ctorParameters = () => [
432
- { type: SlickDropDownService },
433
- { type: ChangeDetectorRef }
434
- ];
435
- SlickDropDownComponent.propDecorators = {
436
- placeholder: [{ type: Input }],
437
- items: [{ type: Input }],
438
- idFieldName: [{ type: Input }],
439
- textFieldName: [{ type: Input }],
440
- compact: [{ type: Input }],
441
- disabled: [{ type: Input }],
442
- allowEmpty: [{ type: Input }],
443
- getUrl: [{ type: Input }],
444
- width: [{ type: Input }],
445
- listWidth: [{ type: Input }],
446
- height: [{ type: Input }],
447
- showLoadingMessage: [{ type: Input }],
448
- showDebug: [{ type: Input }],
449
- tabindex: [{ type: Input }],
450
- validationIndicator: [{ type: Input }],
451
- validationIndicatorType: [{ type: Input }],
452
- attachTo: [{ type: Input }],
453
- searchType: [{ type: Input }],
454
- appendButtons: [{ type: Input }],
455
- prependButtons: [{ type: Input }],
456
- isMobile: [{ type: Input }],
457
- cssClass: [{ type: Input }],
458
- onExpand: [{ type: Output }],
459
- onSelect: [{ type: Output }],
460
- onChange: [{ type: Output }],
461
- containerDiv: [{ type: ViewChild, args: ["containerDiv",] }],
462
- dropdownList: [{ type: ViewChild, args: ["dropdownList",] }],
463
- selectedTextInputRef: [{ type: ViewChild, args: ["selectedTextInputRef",] }]
464
- };
465
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWRyb3AtZG93bi9zbGljay1kcm9wLWRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBK0MsU0FBUyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDekwsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc3RCxNQUFNLENBQU4sSUFBWSx3QkFBc0Q7QUFBbEUsV0FBWSx3QkFBd0I7SUFBRyxtRkFBVSxDQUFBO0lBQUUsK0VBQVEsQ0FBQTtJQUFFLHFFQUFHLENBQUE7QUFBQyxDQUFDLEVBQXRELHdCQUF3QixLQUF4Qix3QkFBd0IsUUFBOEI7QUFZbEUsTUFBTSxPQUFPLHNCQUFzQjtJQXFEbEMsWUFBb0Isb0JBQTBDLEVBQ3JELGNBQWlDO1FBRHRCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDckQsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBckRqQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUV6QixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixrQkFBYSxHQUFXLE1BQU0sQ0FB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LHVCQUF1QixDQUFDLFFBQWtCLEVBQUUsS0FBWTtRQUN2RCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZCLElBQUksUUFBUSxFQUFFO1lBQ2IsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hCO0lBQ0YsQ0FBQzs7O1lBamdCRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0Isc2tKQUE2QztnQkFDN0MsU0FBUyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsZUFBZTtvQkFDaEQ7d0JBQ0MsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzt3QkFDckQsS0FBSyxFQUFFLElBQUk7cUJBQ1gsQ0FBQzthQUNIOzs7O1lBbkJRLG9CQUFvQjtZQURvRyxpQkFBaUI7OzswQkFzQmhKLEtBQUs7b0JBQ0wsS0FBSzswQkFDTCxLQUFLOzRCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3lCQUNMLEtBQUs7cUJBQ0wsS0FBSztvQkFDTCxLQUFLO3dCQUNMLEtBQUs7cUJBQ0wsS0FBSztpQ0FDTCxLQUFLO3dCQUNMLEtBQUs7dUJBQ0wsS0FBSztrQ0FDTCxLQUFLO3NDQUNMLEtBQUs7dUJBQ0wsS0FBSzt5QkFDTCxLQUFLOzRCQUNMLEtBQUs7NkJBQ0wsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUs7dUJBRUwsTUFBTTt1QkFDTixNQUFNO3VCQUNOLE1BQU07MkJBRU4sU0FBUyxTQUFDLGNBQWM7MkJBQ3hCLFNBQVMsU0FBQyxjQUFjO21DQUN4QixTQUFTLFNBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTbGlja0Ryb3BEb3duU2VydmljZSB9IGZyb20gXCIuL3NsaWNrLWRyb3AtZG93bi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTbGlja1NsZWVwU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1zbGVlcC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrVXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXV0aWxzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tJbml0U2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1pbml0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tMb2dTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWxvZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IElTbGlja0Ryb3BEb3duQnV0dG9uTW9kZWwgfSBmcm9tIFwiLi9zbGljay1kcm9wLWRvd24tYnV0dG9uLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgZW51bSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMgeyBzdGFydHNXaXRoLCBlYWNoV29yZCwgYW55IH1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnc2xpY2stZHJvcC1kb3duJyxcclxuXHR0ZW1wbGF0ZVVybDogJ3NsaWNrLWRyb3AtZG93bi5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbU2xpY2tEcm9wRG93blNlcnZpY2UsIFNsaWNrTG9nU2VydmljZSxcclxuXHRcdHtcclxuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcblx0XHRcdHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWNrRHJvcERvd25Db21wb25lbnQpLFxyXG5cdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja0Ryb3BEb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSBpdGVtczogYW55W107XHJcblx0QElucHV0KCkgaWRGaWVsZE5hbWU6IHN0cmluZyA9IFwiaWRcIjtcclxuXHRASW5wdXQoKSB0ZXh0RmllbGROYW1lOiBzdHJpbmcgPSBcInRleHRcIjtcclxuXHRASW5wdXQoKSBjb21wYWN0OiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBhbGxvd0VtcHR5OiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBnZXRVcmw6IHN0cmluZztcclxuXHRASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG5cdEBJbnB1dCgpIGxpc3RXaWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG5cdEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJzMwMHB4JztcclxuXHRASW5wdXQoKSBzaG93TG9hZGluZ01lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBzaG93RGVidWc6IGJvb2xlYW47XHJcblx0QElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcclxuXHRASW5wdXQoKSB2YWxpZGF0aW9uSW5kaWNhdG9yOiBib29sZWFuO1xyXG5cdEBJbnB1dCgpIHZhbGlkYXRpb25JbmRpY2F0b3JUeXBlOiBzdHJpbmc7XHJcblx0QElucHV0KCkgYXR0YWNoVG86IHN0cmluZztcclxuXHRASW5wdXQoKSBzZWFyY2hUeXBlOiBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMgPSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMuc3RhcnRzV2l0aDtcclxuXHRASW5wdXQoKSBhcHBlbmRCdXR0b25zOiBJU2xpY2tEcm9wRG93bkJ1dHRvbk1vZGVsW107XHJcblx0QElucHV0KCkgcHJlcGVuZEJ1dHRvbnM6IElTbGlja0Ryb3BEb3duQnV0dG9uTW9kZWxbXTtcclxuXHRASW5wdXQoKSBpc01vYmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIGNzc0NsYXNzOiBzdHJpbmc7XHJcblxyXG5cdEBPdXRwdXQoKSBvbkV4cGFuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHRAVmlld0NoaWxkKFwiY29udGFpbmVyRGl2XCIpIGNvbnRhaW5lckRpdjogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwiZHJvcGRvd25MaXN0XCIpIGRyb3Bkb3duTGlzdDogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKFwic2VsZWN0ZWRUZXh0SW5wdXRSZWZcIikgc2VsZWN0ZWRUZXh0SW5wdXRSZWY6IEVsZW1lbnRSZWY7XHJcblxyXG5cdC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHNvIHRoYXQgdGhlIHNjcm9sbCBhbmQgcmVzaXplIGV2ZW50cyBjYW4gYWRkIGFuZCByZW1vdmUgdGhlIGV2ZW50IHByb3Blcmx5LFxyXG5cdC8vIGFzIHdlbGwgYXMgZ2V0dGluZyB0aGUgY29ycmVjdCBFUzYgZnVuY3Rpb25cclxuXHRmblJlcG9zaXRpb24gPSAoKSA9PiB0aGlzLnJlcG9zaXRpb24oKTtcclxuXHRmbkRvY3VtZW50Q2xpY2sgPSAoZSkgPT4gdGhpcy5kb2N1bWVudENsaWNrKGUpO1xyXG5cdHV1aWQ6IHN0cmluZztcclxuXHRzZWxlY3RlZElkOiBzdHJpbmc7XHJcblx0c2VsZWN0ZWRUZXh0OiBzdHJpbmc7XHJcblx0ZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRzZWxlY3RlZEl0ZW06IGFueTtcclxuXHRzZWxlY3RlZEluZGV4OiBudW1iZXI7XHJcblx0ZmlsdGVyVGV4dDogc3RyaW5nID0gJyc7XHJcblx0dmlzaWJsZUl0ZW1zOiBhbnlbXTtcclxuXHRsZWZ0OiBudW1iZXI7XHJcblx0dG9wOiBudW1iZXI7XHJcblx0bGlzdEdyb3VwV2lkdGg6IHN0cmluZztcclxuXHRpc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRpc0FuZHJvaWQ6IGJvb2xlYW4gPSAoKFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGxhdGZvcm0oKSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2FuZHJvaWQnKTtcclxuXHJcblx0cHJpdmF0ZSBza2lwT25Gb2N1c0V2ZW50OiBib29sZWFuID0gZmFsc2U7XHJcblx0cHJpdmF0ZSBza2lwQ2xpY2tFeHBhbmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzbGlja0Ryb3BEb3duU2VydmljZTogU2xpY2tEcm9wRG93blNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG5cdFx0dGhpcy51dWlkID0gU2xpY2tVdGlsc1NlcnZpY2UubmV3R3VpZCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmF0dGFjaFRvID0gdGhpcy5hdHRhY2hUbyB8fCBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvIHx8ICdib2R5JztcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHR9XHJcblxyXG5cdHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcclxuXHJcblx0Ly8gdGhpcyBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBzZXQgdG8gdGhlIGNvbXBvbmVudFxyXG5cdHB1YmxpYyB3cml0ZVZhbHVlKG9iajogYW55KSB7XHJcblx0XHRpZiAob2JqICE9PSBudWxsICYmIG9iaiAhPT0gdW5kZWZpbmVkKVxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSWQgPSBvYmo7XHJcblx0XHRlbHNlXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJZCA9IG51bGw7XHJcblxyXG5cdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJZCwgZmFsc2UpO1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdH1cclxuXHJcblx0Ly8gcmVnaXN0ZXJzICdmbicgdGhhdCB3aWxsIGJlIGZpcmVkIHdoZW4gY2hhbmdlcyBhcmUgbWFkZVxyXG5cdC8vIHRoaXMgaXMgaG93IHdlIGVtaXQgdGhlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybVxyXG5cdHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuXHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcblx0fVxyXG5cclxuXHQvLyBub3QgdXNlZCwgdXNlZCBmb3IgdG91Y2ggaW5wdXRcclxuXHRwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKSB7IH1cclxuXHJcblx0YXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHJcblx0XHRpZiAoY2hhbmdlcy5pdGVtcykge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdHRoaXMuc2VsZWN0SXRlbSh0aGlzLnNlbGVjdGVkSWQsIGZhbHNlKTtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KVxyXG5cdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuc2hvd0xvYWRpbmdNZXNzYWdlKSB7XHJcblx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRcdGlmICh0aGlzLnNob3dMb2FkaW5nTWVzc2FnZSA9PT0gdHJ1ZSlcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IFwiTG9hZGluZy4uLlwiO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmdldFVybCkge1xyXG5cdFx0XHRpZiAodGhpcy5zaG93TG9hZGluZ01lc3NhZ2UgPT09IHRydWUpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IFwiTG9hZGluZy4uLlwiO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsZXQgaXRlbXM6IGFueVtdID0gYXdhaXQgdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRJdGVtc0Zyb21TZXJ2ZXIodGhpcy5nZXRVcmwpXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gbnVsbDtcclxuXHRcdFx0dGhpcy5pdGVtcyA9IGl0ZW1zXHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJZCwgZmFsc2UpO1xyXG5cdFx0XHRpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KVxyXG5cdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMudmFsaWRhdGlvbkluZGljYXRvciAmJiBjaGFuZ2VzLnZhbGlkYXRpb25JbmRpY2F0b3IuZmlyc3RDaGFuZ2UpIHtcclxuXHRcdFx0aWYgKCF0aGlzLnZhbGlkYXRpb25JbmRpY2F0b3JUeXBlKVxyXG5cdFx0XHRcdHRoaXMudmFsaWRhdGlvbkluZGljYXRvclR5cGUgPSBcImVycm9yXCI7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuYWxsb3dFbXB0eSlcclxuXHRcdFx0dGhpcy5hbGxvd0VtcHR5ID0gKHRoaXMuYWxsb3dFbXB0eS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdmYWxzZScpID8gZmFsc2UgOiB0cnVlO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmlzTW9iaWxlKVxyXG5cdFx0XHR0aGlzLmlzTW9iaWxlID0gKHRoaXMuaXNNb2JpbGUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmRpc2FibGVkICYmIGNoYW5nZXMuZGlzYWJsZWQuY3VycmVudFZhbHVlKVxyXG5cdFx0XHR0aGlzLmRpc2FibGVkID0gKGNoYW5nZXMuZGlzYWJsZWQuY3VycmVudFZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSAhPT0gJ2ZhbHNlJyk7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuY29tcGFjdCAmJiBjaGFuZ2VzLmNvbXBhY3QuY3VycmVudFZhbHVlKVxyXG5cdFx0XHR0aGlzLmNvbXBhY3QgPSAoY2hhbmdlcy5jb21wYWN0LmN1cnJlbnRWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgIT09ICdmYWxzZScpO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnNlYXJjaFR5cGUpIHtcclxuXHRcdFx0aWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnZWFjaHdvcmQnKVxyXG5cdFx0XHRcdHRoaXMuc2VhcmNoVHlwZSA9IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5lYWNoV29yZDtcclxuXHRcdFx0ZWxzZSBpZiAoY2hhbmdlcy5zZWFyY2hUeXBlLmN1cnJlbnRWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdhbnknKVxyXG5cdFx0XHRcdHRoaXMuc2VhcmNoVHlwZSA9IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5hbnk7XHJcblx0XHRcdGVsc2VcclxuXHRcdFx0XHR0aGlzLnNlYXJjaFR5cGUgPSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMuc3RhcnRzV2l0aDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHQvLyBpdCdzIG9rYXkgaWYgdGhpcyBmYWlscy4gIEl0IHdhcyBhbHJlYWR5IHJlbW92ZWRcclxuXHRcdHRyeSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCB7IH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIHNldEZvY3VzKHNob3dEcm9wZG93bkxpc3Q6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG5cdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHR0aGlzLnNraXBPbkZvY3VzRXZlbnQgPSAoc2hvd0Ryb3Bkb3duTGlzdCA9PT0gZmFsc2UpO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrVXRpbHNTZXJ2aWNlLndhaXRGb3JFbGVtZW50KFwiI3NsaWNrLWRyb3AtZG93bl9cIiArIHRoaXMudXVpZCk7XHJcblx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5mb2N1cygpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBleHBhbmQoKSB7XHJcblx0XHRpZiAodGhpcy5kaXNhYmxlZClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuXHJcblx0XHRTbGlja1V0aWxzU2VydmljZS5hdHRhY2hFbGVtZW50KHRoaXMuZHJvcGRvd25MaXN0Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuYXR0YWNoVG8pXHJcblxyXG5cdFx0dGhpcy5yZXBvc2l0aW9uKCk7XHJcblxyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdHRoaXMuZHJvcGRvd25MaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XHJcblxyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuZHJvcGRvd25MaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFjdGl2ZVwiKTtcclxuXHRcdGlmIChzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMClcclxuXHRcdFx0KDxIVE1MRWxlbWVudD5zZWxlY3RlZEl0ZW1zWzBdKS5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XHJcblxyXG5cdFx0dGhpcy5leHBhbmRlZCA9IHRydWU7XHJcblxyXG5cclxuXHRcdC8vIFRoaXMgaXMgbmVjZXNzYXJ5LCBvdGhlcndpc2UgYHRoaXNgIGluIHRoZSByZXBvc2l0aW9uIGZ1bmN0aW9uIHdpbGwgYmUgd2luZG93XHJcblx0XHQvLyBhbmQgbm90IHRoZSBjb21wb25lbnQuXHJcblx0XHQvLyBTaW5jZSBhbmd1bGFyIGhhcyBubyB3YXkgdG8gdXNlIHRoZSB0aGlyZCBwYXJhbWV0ZXIsIEknbSBkb2luZyB0aGlzIGluIHJhdyBqc1xyXG5cdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHRpZiAodGhpcy5vbkV4cGFuZClcclxuXHRcdFx0dGhpcy5vbkV4cGFuZC5lbWl0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNvbGxhcHNlKCkge1xyXG5cdFx0aWYgKHRoaXMuZXhwYW5kZWQgPT09IGZhbHNlKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0dGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcblx0XHQvLyBTaW5jZSBhbmd1bGFyIGhhcyBubyB3YXkgdG8gdXNlIHRoZSB0aGlyZCBwYXJhbWV0ZXIsIEknbSBkb2luZyB0aGlzIGluIHJhdyBqc1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHRcdFNsaWNrVXRpbHNTZXJ2aWNlLnJlbW92ZUVsZW1lbnQodGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudCk7XHJcblxyXG5cdFx0dGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcclxuXHRcdHRoaXMuc2tpcE9uRm9jdXNFdmVudCA9IGZhbHNlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZXBvc2l0aW9uKCkge1xyXG5cdFx0Y29uc3QgZHJvcERvd25SZWN0ID0gdGhpcy5jb250YWluZXJEaXYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHRcdGNvbnN0IHBhcmVudFJlY3QgPSAodGhpcy5hdHRhY2hUbyA9PT0gJ2JvZHknKSA/IG51bGwgOiBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3IodGhpcy5hdHRhY2hUbykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG5cdFx0Y29uc3QgY29udGFpbmVyTGVmdCA9ICh0aGlzLmF0dGFjaFRvID09PSAnYm9keScpID8gZHJvcERvd25SZWN0LmxlZnQgOiAoZHJvcERvd25SZWN0LmxlZnQgLSBwYXJlbnRSZWN0LmxlZnQpO1xyXG5cdFx0Y29uc3QgY29udGFpbmVyVG9wID0gKHRoaXMuYXR0YWNoVG8gPT09ICdib2R5JykgPyBkcm9wRG93blJlY3QudG9wIDogKGRyb3BEb3duUmVjdC50b3AgLSBwYXJlbnRSZWN0LnRvcCk7XHJcblxyXG5cdFx0Y29uc3QgY29udGFpbmVySGVpZ2h0ID0gdGhpcy5jb250YWluZXJEaXYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcblx0XHRjb25zdCBjb250YWluZXJXaWR0aCA9IGRyb3BEb3duUmVjdC53aWR0aDtcclxuXHJcblx0XHR0aGlzLndpZHRoID0gY29udGFpbmVyV2lkdGg7XHJcblx0XHRpZiAodGhpcy5saXN0V2lkdGggPT09ICcxMDAlJylcclxuXHRcdFx0dGhpcy5saXN0R3JvdXBXaWR0aCA9IHRoaXMud2lkdGg7XHJcblx0XHRlbHNlIGlmICh0aGlzLmxpc3RXaWR0aCA9PT0gJ2F1dG8nKVxyXG5cdFx0XHR0aGlzLmxpc3RHcm91cFdpZHRoID0gXCJhdXRvXCI7XHJcblx0XHRlbHNlXHJcblx0XHRcdHRoaXMubGlzdEdyb3VwV2lkdGggPSB0aGlzLmxpc3RXaWR0aDtcclxuXHRcdHRoaXMudG9wID0gKGNvbnRhaW5lclRvcCArIGNvbnRhaW5lckhlaWdodCk7XHJcblx0XHR0aGlzLmxlZnQgPSBjb250YWluZXJMZWZ0O1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBkb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpIHtcclxuXHRcdC8vIE5vdCBlbnRpcmVseSBzdXJlIHdoeSwgYnV0IGlQaG9uZXMgY2FsbCBvbkZvY3VzIHdoZW4gY2xpY2tpbmcgb3V0IG9mIHRoZSBkcm9wZG93blxyXG5cdFx0aWYgKHRoaXMuaXNNb2JpbGUpXHJcblx0XHRcdHRoaXMuc2tpcE9uRm9jdXNFdmVudCA9IHRydWU7XHJcblxyXG5cdFx0aWYgKCF0aGlzLmV4cGFuZGVkIHx8ICFlLnRhcmdldClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGlmIChTbGlja1V0aWxzU2VydmljZS5jaGVja1BhcmVudElkRXhpc3RzKDxIVE1MRWxlbWVudD5lLnRhcmdldCwgXCJzbGljay1kcm9wLWRvd25fXCIgKyB0aGlzLnV1aWQpID09PSB0cnVlKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsICYmIHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0bGV0IGl0ZW1JZCA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF0uaWQ7XHJcblx0XHRcdHRoaXMuc2VsZWN0SXRlbShpdGVtSWQsIHRydWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2VsZWN0SXRlbShpZDogc3RyaW5nLCBlbWl0T25TZWxlY3Q6IGJvb2xlYW4pIHtcclxuXHRcdGxldCBpdGVtID0gdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRTZWxlY3RlZEl0ZW0odGhpcy52aXNpYmxlSXRlbXMsIGlkKTtcclxuXHJcblx0XHRpZiAoaXRlbSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJZCA9IGl0ZW0uaWQ7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gaXRlbS50ZXh0O1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldEl0ZW1JbmRleCh0aGlzLnZpc2libGVJdGVtcywgdGhpcy5zZWxlY3RlZElkKTtcclxuXHJcblx0XHRcdGlmICh0aGlzLm9uQ2hhbmdlKVxyXG5cdFx0XHRcdHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbS5pdGVtKTtcclxuXHRcdFx0aWYgKGVtaXRPblNlbGVjdCA9PT0gdHJ1ZSAmJiB0aGlzLm9uU2VsZWN0KVxyXG5cdFx0XHRcdHRoaXMub25TZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbS5pdGVtKTtcclxuXHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZElkKTtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gbnVsbDtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uRm9jdXMoKSB7XHJcblx0XHRpZiAodGhpcy5za2lwT25Gb2N1c0V2ZW50ID09PSB0cnVlKSB7XHJcblx0XHRcdHRoaXMuc2tpcE9uRm9jdXNFdmVudCA9IGZhbHNlO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHR0aGlzLnNlbGVjdEl0ZW0odGhpcy5zZWxlY3RlZElkLCBmYWxzZSk7XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ICYmIHRoaXMuc2VsZWN0ZWRJbmRleCA+PSAwKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5zZWxlY3RlZEluZGV4XTtcclxuXHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgdGhpcy5zZWxlY3RlZEl0ZW0udGV4dC5sZW5ndGgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFRoaXMgaXMga2luZCBvZiBoYWNreSwgYnV0IGlmIG9uRm9jdXMgaXMgY2FsbGVkIGJ5IGNsaWNraW5nIHRoZSBkcm9wZG93biwgdGhlIG9uRHJvcGRvd25DbGljayBldmVudCBpcyBjYWxsZWQgYXMgd2VsbFxyXG5cdFx0Ly8gVGhhdCBmdW5jdGlvbiB3aWxsIGV4cGFuZCBvciBjb2xsYXBzZSwgZGVwZW5kaW5nIG9uIHRoZSBzdGF0ZS4gIFNpbmNlIHRoaXMgZXhwYW5kcywgaXQgdGhpbmtzIGl0IG5lZWRzIHRvIGNvbGxhcHNlLlxyXG5cdFx0Ly8gU28gZmFrZSBpdCBvdXQgYW5kIHRlbGwgaXQgTk9UIHRvIGNvbGxhcHNlLiAgQlVULCBpZiB3ZSBjYW1lIGluIGZyb20gdGFiYmluZyBpbnRvIHRoZSBmaWVsZCwgdGhlbiBpdCB3b3VsZCBtZXNzIHVwXHJcblx0XHQvLyB0aGUgY2xpY2sgZXZlbnQuICBTbyBvbmx5IHdhaXQgZm9yIDEvMiBzZWNvbmQuXHJcblx0XHR0aGlzLnNraXBDbGlja0V4cGFuZCA9IHRydWU7XHJcblx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoNTAwKTtcclxuXHRcdHRoaXMuc2tpcENsaWNrRXhwYW5kID0gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRhc3luYyBvbktleURvd24oZTogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0aWYgKHRoaXMuaXNBbmRyb2lkKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0Ly8gVGFiL2VudGVyXHJcblx0XHRpZiAoZS53aGljaCA9PT0gOSB8fCBlLndoaWNoID09PSAxMykge1xyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09PSBudWxsIHx8IHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdHJldHVybjtcclxuXHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLnNlbGVjdGVkVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnNldFNlbGVjdGlvblJhbmdlKDAsIDApO1xyXG5cdFx0XHRsZXQgaXRlbUlkID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5zZWxlY3RlZEluZGV4XS5pZDtcclxuXHRcdFx0dGhpcy5zZWxlY3RJdGVtKGl0ZW1JZCwgdHJ1ZSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoZS5rZXkgJiYgZS5rZXkubGVuZ3RoID4gMSlcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDQ2IHx8IGUud2hpY2ggPT09IDgpIHtcclxuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChlLndoaWNoID49IDMyICYmIGUud2hpY2ggPD0gMTI2KSB7XHJcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uS2V5VXAoZTogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcblx0XHQvLyBJZiB0aGlzIGlzIGFuZHJvaWQsIGl0IHdvbid0IHBhc3MgdXMgYW55IGtleSBkYXRhIHNvIGp1c3QgcmVhZCB0aGUgZW50aXJlIGlucHV0IGVsZW1lbnRcclxuXHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gdHJ1ZSkge1xyXG5cdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gKDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkudmFsdWU7XHJcblx0XHRcdHRoaXMuZmlsdGVyU2VhcmNoKCk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBFc2NcclxuXHRcdGlmIChlLndoaWNoID09PSAyNykge1xyXG5cdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gZGVsIG9yIGJhY2tzcGFjZVxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDQ2IHx8IGUud2hpY2ggPT09IDggJiYgIXRoaXMuZmlsdGVyVGV4dCkge1xyXG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5hbGxvd0VtcHR5ID09PSB0cnVlKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RJdGVtKG51bGwsIHRydWUpO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJZCA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XHJcblxyXG5cdFx0XHRcdGlmICh0aGlzLm9uQ2hhbmdlKVxyXG5cdFx0XHRcdFx0dGhpcy5vbkNoYW5nZS5lbWl0KG51bGwpO1xyXG5cclxuXHRcdFx0XHRpZiAodGhpcy5vblNlbGVjdClcclxuXHRcdFx0XHRcdHRoaXMub25TZWxlY3QuZW1pdChudWxsKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChlLndoaWNoID09PSA4ICYmIHRoaXMuZmlsdGVyVGV4dCkge1xyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgPSB0aGlzLmZpbHRlclRleHQuc3Vic3RyaW5nKDAsIHRoaXMuZmlsdGVyVGV4dC5sZW5ndGggLSAxKTtcclxuXHRcdFx0aWYgKHRoaXMuZmlsdGVyVGV4dC5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9ICcnO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2VcclxuXHRcdFx0XHR0aGlzLmZpbHRlclNlYXJjaCgpO1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQXJyb3d1cFxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDM4KSB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPiAwKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleC0tO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFycm93ZG93blxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDQwKSB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMuZXhwYW5kZWQgfHwgIXRoaXMudmlzaWJsZUl0ZW1zKSB7XHJcblx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPCB0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggLSAxKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCsrO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIElmIEYxIGlzIHByZXNzZWQsIGtleSBsZW5ndGggd2lsbCBiZSAyXHJcblx0XHRpZiAoZS5rZXkubGVuZ3RoID4gMSB8fCBlLmN0cmxLZXkgfHwgZS5hbHRLZXkpXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRpZiAoZS53aGljaCA+PSAzMiAmJiBlLndoaWNoIDw9IDEyNikge1xyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgKz0gZS5rZXk7XHJcblxyXG5cdFx0XHR0aGlzLmZpbHRlclNlYXJjaCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHJcblx0Ly9hc3luYyBvbktleVByZXNzKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuXHQvL1x0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHJcblx0Ly9cdGlmICgoKGUud2hpY2ggPj0gMzIgJiYgZS53aGljaCA8PSAxMjYpIHx8IGUud2hpY2ggPT09IDgpICYmICFlLmN0cmxLZXkgJiYgIWUuYWx0S2V5KSB7XHJcblx0Ly9cdFx0aWYgKGUud2hpY2ggPT09IDgpXHJcblx0Ly9cdFx0XHR0aGlzLmZpbHRlclRleHQgPSB0aGlzLmZpbHRlclRleHQuc3Vic3RyaW5nKDAsIHRoaXMuZmlsdGVyVGV4dC5sZW5ndGggLSAxKTtcclxuXHQvL1x0XHRlbHNlXHJcblx0Ly9cdFx0XHR0aGlzLmZpbHRlclRleHQgKz0gZS5rZXk7XHJcblx0Ly9cdFx0dGhpcy5maWx0ZXJTZWFyY2goKTtcclxuXHQvL1x0fVxyXG5cclxuXHQvL1x0cmV0dXJuIHRydWU7XHJcblx0Ly99XHJcblxyXG5cclxuXHRwcml2YXRlIGFzeW5jIGZpbHRlclNlYXJjaCgpIHtcclxuXHRcdGlmICghdGhpcy5leHBhbmRlZClcclxuXHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMuc3RhcnRzV2l0aCkge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcih4ID0+IHgudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkpID09PSAwKTtcclxuXHRcdFx0aWYgKHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy52aXNpYmxlSXRlbXNbMF0udGV4dDtcclxuXHRcdFx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmZpbHRlclRleHQubGVuZ3RoLCB0aGlzLnNlbGVjdGVkVGV4dC5sZW5ndGgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IHRoaXMuZmlsdGVyVGV4dDtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5lYWNoV29yZCkge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcih4ID0+IChcIiBcIiArIHgudGV4dC50b0xvd2VyQ2FzZSgpKS5pbmRleE9mKFwiIFwiICsgdGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkpID49IDApO1xyXG5cdFx0XHRpZiAodGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLnZpc2libGVJdGVtc1swXS50ZXh0O1xyXG5cdFx0XHRcdFx0Y29uc3Qgc2VsZWN0ZWRUZXh0U3RhcnQgPSAoXCIgXCIgKyB0aGlzLnZpc2libGVJdGVtc1swXS50ZXh0KS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCIgXCIgKyB0aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKSk7XHJcblx0XHRcdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0ZWRUZXh0U3RhcnQsIHNlbGVjdGVkVGV4dFN0YXJ0ICsgdGhpcy5maWx0ZXJUZXh0Lmxlbmd0aCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy5maWx0ZXJUZXh0O1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbkRyb3Bkb3duQ2xpY2tlZCgpIHtcclxuXHRcdHRoaXMuZmlsdGVyVGV4dCA9ICcnO1xyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJZCwgZmFsc2UpO1xyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcclxuXHJcblx0XHRpZiAodGhpcy5za2lwQ2xpY2tFeHBhbmQgPT09IHRydWUpIHtcclxuXHRcdFx0dGhpcy5za2lwQ2xpY2tFeHBhbmQgPSBmYWxzZTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLmV4cGFuZGVkID09PSBmYWxzZSlcclxuXHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdH1cclxuXHJcblx0b25JdGVtQ2xpY2soaXRlbTogYW55KSB7XHJcblx0XHR0aGlzLnNlbGVjdEl0ZW0oaXRlbS5pZCwgdHJ1ZSk7XHJcblx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVDdXN0b21CdXR0b25DbGljayhjYWxsYmFjazogRnVuY3Rpb24sIGV2ZW50OiBFdmVudCkge1xyXG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdGlmIChjYWxsYmFjaykge1xyXG5cdFx0XHRjYWxsYmFjayhldmVudCk7XHJcblx0XHR9XHJcblx0fVxyXG59Il19
@@ -1,19 +0,0 @@
1
- import { NgModule } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { FormsModule } from "@angular/forms";
4
- import { HttpClientModule } from "@angular/common/http";
5
- import { SlickValidationIndicatorModule } from "../slick-validation-indicator/slick-validation-indicator.module";
6
- import { SlickDropDownComponent } from "./slick-drop-down.component";
7
- export class SlickDropDownModule {
8
- }
9
- SlickDropDownModule.decorators = [
10
- { type: NgModule, args: [{
11
- imports: [CommonModule, FormsModule, HttpClientModule, SlickValidationIndicatorModule],
12
- declarations: [SlickDropDownComponent],
13
- exports: [SlickDropDownComponent],
14
- providers: [HttpClientModule]
15
- },] }
16
- ];
17
- export { SlickDropDownComponent };
18
- export { SlickDropDownButtonModel } from "./slick-drop-down-button.model";
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZHJvcC1kb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWRyb3AtZG93bi9zbGljay1kcm9wLWRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVFyRSxNQUFNLE9BQU8sbUJBQW1COzs7WUFOL0IsUUFBUSxTQUFDO2dCQUNULE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsOEJBQThCLENBQUM7Z0JBQ3RGLFlBQVksRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUN0QyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDakMsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7YUFDN0I7O0FBR0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLENBQUE7QUFDakMsT0FBTyxFQUFFLHdCQUF3QixFQUE2QixNQUFNLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgU2xpY2tWYWxpZGF0aW9uSW5kaWNhdG9yTW9kdWxlIH0gZnJvbSBcIi4uL3NsaWNrLXZhbGlkYXRpb24taW5kaWNhdG9yL3NsaWNrLXZhbGlkYXRpb24taW5kaWNhdG9yLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBTbGlja0Ryb3BEb3duQ29tcG9uZW50IH0gZnJvbSBcIi4vc2xpY2stZHJvcC1kb3duLmNvbXBvbmVudFwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgSHR0cENsaWVudE1vZHVsZSwgU2xpY2tWYWxpZGF0aW9uSW5kaWNhdG9yTW9kdWxlXSxcclxuXHRkZWNsYXJhdGlvbnM6IFtTbGlja0Ryb3BEb3duQ29tcG9uZW50XSxcclxuXHRleHBvcnRzOiBbU2xpY2tEcm9wRG93bkNvbXBvbmVudF0sXHJcblx0cHJvdmlkZXJzOiBbSHR0cENsaWVudE1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWNrRHJvcERvd25Nb2R1bGUgeyB9XHJcblxyXG5leHBvcnQgeyBTbGlja0Ryb3BEb3duQ29tcG9uZW50IH1cclxuZXhwb3J0IHsgU2xpY2tEcm9wRG93bkJ1dHRvbk1vZGVsLCBJU2xpY2tEcm9wRG93bkJ1dHRvbk1vZGVsIH0gZnJvbSBcIi4vc2xpY2stZHJvcC1kb3duLWJ1dHRvbi5tb2RlbFwiOyJdfQ==