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
@@ -0,0 +1,77 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class SlickMultiSelectService {
4
+ getVisibleItems(items, selectedIds, idFieldName, textFieldName) {
5
+ let foundSomeText = false;
6
+ if (!items || items.length === 0)
7
+ return null;
8
+ let visibleItems = items.map((item) => {
9
+ let id = item[idFieldName];
10
+ if (id === null || id === undefined) {
11
+ console.error("%c Id not found for multiSelect item. The idFieldName is '" + idFieldName + "'. Is this correct?", 'background: red; color: white');
12
+ console.error("First Item: ", items[0]);
13
+ }
14
+ if (!selectedIds || (selectedIds.indexOf(id) === -1 && selectedIds.indexOf(id.toString()) === -1)) {
15
+ let text = item[textFieldName];
16
+ if (text !== null && text !== undefined)
17
+ foundSomeText = true;
18
+ return {
19
+ id: id,
20
+ text: text ? text.toString() : null,
21
+ item: item
22
+ };
23
+ }
24
+ });
25
+ visibleItems = visibleItems.filter(x => !!x);
26
+ if (visibleItems.length === 0)
27
+ return null;
28
+ if (foundSomeText === false) {
29
+ console.error("%c Warning! No text was found for multiSelect item. The textFieldName is '" + textFieldName + "'. Is this correct?", 'background: red; color: white');
30
+ console.error("First Item: ", items[0]);
31
+ }
32
+ return visibleItems;
33
+ }
34
+ getSelectedItems(items, selectedIds, idFieldName, textFieldName) {
35
+ let foundSomeText = false;
36
+ if (!items || items.length === 0 || !selectedIds || selectedIds.length === 0)
37
+ return null;
38
+ let selectedItems = selectedIds.map((id) => {
39
+ let item = items.find(x => x[idFieldName] == id);
40
+ if (item === null || item === undefined) {
41
+ console.error("%c Id not found for multiSelect item. The idFieldName is '" + idFieldName + "'. Is this correct?", 'background: red; color: white');
42
+ console.error("First Item: ", items[0]);
43
+ return null;
44
+ }
45
+ let text = item[textFieldName];
46
+ if (text !== null && text !== undefined)
47
+ foundSomeText = true;
48
+ return {
49
+ id: id,
50
+ text: text ? text.toString() : null
51
+ };
52
+ });
53
+ if (foundSomeText === false) {
54
+ console.error("%c Warning! No text was found for multiSelect item. The textFieldName is '" + textFieldName + "'. Is this correct?", 'background: red; color: white');
55
+ console.error("First Item: ", items[0]);
56
+ }
57
+ return selectedItems;
58
+ }
59
+ getSelectedItem(items, selectedId) {
60
+ if (!items || items.length === 0)
61
+ return null;
62
+ let selectedItem = items.find((item) => { return item.id === selectedId; });
63
+ if (selectedItem)
64
+ return selectedItem;
65
+ else
66
+ return null;
67
+ }
68
+ getItemIndex(items, selectedId) {
69
+ return items.findIndex((item) => { return item.id === selectedId; });
70
+ }
71
+ }
72
+ /** @nocollapse */ SlickMultiSelectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickMultiSelectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
73
+ /** @nocollapse */ SlickMultiSelectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickMultiSelectService });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickMultiSelectService, decorators: [{
75
+ type: Injectable
76
+ }] });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stbXVsdGktc2VsZWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1tdWx0aS1zZWxlY3Qvc2xpY2stbXVsdGktc2VsZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLHVCQUF1QjtJQUM1QixlQUFlLENBQUMsS0FBWSxFQUFFLFdBQXFCLEVBQUUsV0FBbUIsRUFBRSxhQUFxQjtRQUNyRyxJQUFJLGFBQWEsR0FBWSxLQUFLLENBQUM7UUFFbkMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUM7UUFFYixJQUFJLFlBQVksR0FBVSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNCLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFO2dCQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLDZEQUE2RCxHQUFHLFdBQVcsR0FBRyxzQkFBc0IsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO2dCQUNySixPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN4QztZQUVELElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEcsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVM7b0JBQ3RDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBRXRCLE9BQU87b0JBQ04sRUFBRSxFQUFFLEVBQUU7b0JBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNuQyxJQUFJLEVBQUUsSUFBSTtpQkFDVixDQUFBO2FBQ0Q7UUFDRixDQUFDLENBQUMsQ0FBQztRQUVILFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdDLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBRWIsSUFBSSxhQUFhLEtBQUssS0FBSyxFQUFFO1lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEVBQThFLEdBQUcsYUFBYSxHQUFHLHNCQUFzQixFQUFFLCtCQUErQixDQUFDLENBQUM7WUFDeEssT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEM7UUFHRCxPQUFPLFlBQVksQ0FBQztJQUNyQixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBWSxFQUFFLFdBQXFCLEVBQUUsV0FBbUIsRUFBRSxhQUFxQjtRQUN0RyxJQUFJLGFBQWEsR0FBWSxLQUFLLENBQUM7UUFFbkMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDM0UsT0FBTyxJQUFJLENBQUM7UUFFYixJQUFJLGFBQWEsR0FBVSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBVSxFQUFFLEVBQUU7WUFDekQsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUVqRCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDeEMsT0FBTyxDQUFDLEtBQUssQ0FBQyw2REFBNkQsR0FBRyxXQUFXLEdBQUcsc0JBQXNCLEVBQUUsK0JBQStCLENBQUMsQ0FBQztnQkFDckosT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sSUFBSSxDQUFDO2FBQ1o7WUFFRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDL0IsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTO2dCQUN0QyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBRXRCLE9BQU87Z0JBQ04sRUFBRSxFQUFFLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQ25DLENBQUE7UUFDRixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksYUFBYSxLQUFLLEtBQUssRUFBRTtZQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLDhFQUE4RSxHQUFHLGFBQWEsR0FBRyxzQkFBc0IsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1lBQ3hLLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFZLEVBQUUsVUFBa0I7UUFDdEQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUM7UUFFYixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0UsSUFBSSxZQUFZO1lBQ2YsT0FBTyxZQUFZLENBQUM7O1lBRXBCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFZLEVBQUUsVUFBa0I7UUFDbkQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQzs7dUlBeEZXLHVCQUF1QjsySUFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlIHtcclxuXHRwdWJsaWMgZ2V0VmlzaWJsZUl0ZW1zKGl0ZW1zOiBhbnlbXSwgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdLCBpZEZpZWxkTmFtZTogc3RyaW5nLCB0ZXh0RmllbGROYW1lOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRsZXQgZm91bmRTb21lVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdFx0XHJcblx0XHRpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMClcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblxyXG5cdFx0bGV0IHZpc2libGVJdGVtczogYW55W10gPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcclxuXHRcdFx0bGV0IGlkID0gaXRlbVtpZEZpZWxkTmFtZV07XHRcdFx0XHRcdFx0XHJcblx0XHRcdGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcIiVjIElkIG5vdCBmb3VuZCBmb3IgbXVsdGlTZWxlY3QgaXRlbS4gIFRoZSBpZEZpZWxkTmFtZSBpcyAnXCIgKyBpZEZpZWxkTmFtZSArIFwiJy4gIElzIHRoaXMgY29ycmVjdD9cIiwgJ2JhY2tncm91bmQ6IHJlZDsgY29sb3I6IHdoaXRlJyk7XHJcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcIkZpcnN0IEl0ZW06IFwiLCBpdGVtc1swXSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICghc2VsZWN0ZWRJZHMgfHwgKHNlbGVjdGVkSWRzLmluZGV4T2YoaWQpID09PSAtMSAmJiBzZWxlY3RlZElkcy5pbmRleE9mKGlkLnRvU3RyaW5nKCkpID09PSAtMSkpIHtcclxuXHRcdFx0XHRsZXQgdGV4dCA9IGl0ZW1bdGV4dEZpZWxkTmFtZV07XHJcblx0XHRcdFx0aWYgKHRleHQgIT09IG51bGwgJiYgdGV4dCAhPT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdFx0Zm91bmRTb21lVGV4dCA9IHRydWU7XHJcblxyXG5cdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRpZDogaWQsXHJcblx0XHRcdFx0XHR0ZXh0OiB0ZXh0ID8gdGV4dC50b1N0cmluZygpIDogbnVsbCxcclxuXHRcdFx0XHRcdGl0ZW06IGl0ZW1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHZpc2libGVJdGVtcyA9IHZpc2libGVJdGVtcy5maWx0ZXIoeCA9PiAhIXgpO1xyXG5cclxuXHRcdGlmICh2aXNpYmxlSXRlbXMubGVuZ3RoID09PSAwKVxyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHJcblx0XHRpZiAoZm91bmRTb21lVGV4dCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihcIiVjIFdhcm5pbmchICBObyB0ZXh0IHdhcyBmb3VuZCBmb3IgbXVsdGlTZWxlY3QgaXRlbS4gIFRoZSB0ZXh0RmllbGROYW1lIGlzICdcIiArIHRleHRGaWVsZE5hbWUgKyBcIicuICBJcyB0aGlzIGNvcnJlY3Q/XCIsICdiYWNrZ3JvdW5kOiByZWQ7IGNvbG9yOiB3aGl0ZScpO1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKFwiRmlyc3QgSXRlbTogXCIsIGl0ZW1zWzBdKTtcclxuXHRcdH1cclxuXHJcblxyXG5cdFx0cmV0dXJuIHZpc2libGVJdGVtcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnZXRTZWxlY3RlZEl0ZW1zKGl0ZW1zOiBhbnlbXSwgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdLCBpZEZpZWxkTmFtZTogc3RyaW5nLCB0ZXh0RmllbGROYW1lOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRsZXQgZm91bmRTb21lVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRcdGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwIHx8ICFzZWxlY3RlZElkcyB8fCBzZWxlY3RlZElkcy5sZW5ndGggPT09IDApXHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cclxuXHRcdGxldCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IHNlbGVjdGVkSWRzLm1hcCgoaWQ6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRsZXQgaXRlbSA9IGl0ZW1zLmZpbmQoeCA9PiB4W2lkRmllbGROYW1lXSA9PSBpZCk7XHJcblx0XHRcdFxyXG5cdFx0XHRpZiAoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKFwiJWMgSWQgbm90IGZvdW5kIGZvciBtdWx0aVNlbGVjdCBpdGVtLiAgVGhlIGlkRmllbGROYW1lIGlzICdcIiArIGlkRmllbGROYW1lICsgXCInLiAgSXMgdGhpcyBjb3JyZWN0P1wiLCAnYmFja2dyb3VuZDogcmVkOyBjb2xvcjogd2hpdGUnKTtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKFwiRmlyc3QgSXRlbTogXCIsIGl0ZW1zWzBdKTtcclxuXHRcdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0bGV0IHRleHQgPSBpdGVtW3RleHRGaWVsZE5hbWVdO1xyXG5cdFx0XHRpZiAodGV4dCAhPT0gbnVsbCAmJiB0ZXh0ICE9PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0Zm91bmRTb21lVGV4dCA9IHRydWU7XHJcblxyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGlkOiBpZCxcclxuXHRcdFx0XHR0ZXh0OiB0ZXh0ID8gdGV4dC50b1N0cmluZygpIDogbnVsbFxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRpZiAoZm91bmRTb21lVGV4dCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihcIiVjIFdhcm5pbmchICBObyB0ZXh0IHdhcyBmb3VuZCBmb3IgbXVsdGlTZWxlY3QgaXRlbS4gIFRoZSB0ZXh0RmllbGROYW1lIGlzICdcIiArIHRleHRGaWVsZE5hbWUgKyBcIicuICBJcyB0aGlzIGNvcnJlY3Q/XCIsICdiYWNrZ3JvdW5kOiByZWQ7IGNvbG9yOiB3aGl0ZScpO1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKFwiRmlyc3QgSXRlbTogXCIsIGl0ZW1zWzBdKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gc2VsZWN0ZWRJdGVtcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnZXRTZWxlY3RlZEl0ZW0oaXRlbXM6IGFueVtdLCBzZWxlY3RlZElkOiBzdHJpbmcpOiBhbnkge1xyXG5cdFx0aWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApXHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cclxuXHRcdGxldCBzZWxlY3RlZEl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmlkID09PSBzZWxlY3RlZElkIH0pO1xyXG5cclxuXHRcdGlmIChzZWxlY3RlZEl0ZW0pXHJcblx0XHRcdHJldHVybiBzZWxlY3RlZEl0ZW07XHJcblx0XHRlbHNlXHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGdldEl0ZW1JbmRleChpdGVtczogYW55W10sIHNlbGVjdGVkSWQ6IHN0cmluZyk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmlkID09PSBzZWxlY3RlZElkIH0pO1xyXG5cdH1cclxufSJdfQ==
@@ -0,0 +1,200 @@
1
+ import { Component, Input, Output, EventEmitter } from "@angular/core";
2
+ import { SlickUtilsService } from "../utils/slick-utils.service";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class SlickOrderedListComponent {
6
+ constructor() {
7
+ this.itemsChange = new EventEmitter();
8
+ this.selectedItemsChange = new EventEmitter();
9
+ this.buttonAlignment = "left";
10
+ this.internalItems = [];
11
+ this.anySelected = false;
12
+ this.fnDocumentClick = (e) => this.documentClick(e);
13
+ this.uuid = SlickUtilsService.newGuid();
14
+ }
15
+ ngOnInit() {
16
+ document.addEventListener("click", this.fnDocumentClick, true);
17
+ }
18
+ ngOnDestroy() {
19
+ document.removeEventListener("click", this.fnDocumentClick, true);
20
+ }
21
+ documentClick(e) {
22
+ if (e.target && SlickUtilsService.checkParentIdExists(e.target, "slick-ordered-list_" + this.uuid))
23
+ return;
24
+ // If we're using this in the picklist, don't do anything
25
+ if (e.target && SlickUtilsService.checkParentClassExists(e.target, "slick-pick-list_buttons"))
26
+ return;
27
+ this.internalItems.forEach(item => item.selected = false);
28
+ this.anySelected = false;
29
+ if (this.selectedItemsChange)
30
+ this.selectedItemsChange.emit(null);
31
+ }
32
+ async ngOnChanges(changes) {
33
+ if (!this.items || !this.sortOrderFieldName || !this.displayFieldName)
34
+ return;
35
+ if (changes.items) {
36
+ this.internalItems = [];
37
+ this.sortList();
38
+ let sortOrder = 0;
39
+ this.items.forEach(item => {
40
+ if (!item.uuid)
41
+ item.uuid = SlickUtilsService.newGuid();
42
+ if (item)
43
+ SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, sortOrder);
44
+ this.internalItems.push({
45
+ uuid: item.uuid,
46
+ sortOrder: sortOrder,
47
+ selected: false,
48
+ text: SlickUtilsService.getDeepObject(item, this.displayFieldName)
49
+ });
50
+ sortOrder++;
51
+ });
52
+ this.anySelected = false;
53
+ }
54
+ }
55
+ selectItem(e, item) {
56
+ if (e.ctrlKey) {
57
+ item.selected = !item.selected;
58
+ }
59
+ else if (e.shiftKey) {
60
+ let selectedItemIdx = this.internalItems.findIndex(internalItem => item.uuid === internalItem.uuid);
61
+ this.internalItems[selectedItemIdx].selected = !this.internalItems[selectedItemIdx].selected;
62
+ // Check to see if there is a selected item previously in the list. This will be the default
63
+ // For example, if the 2nd item has been selected, then they shift-select the 5th item, iterate backwards through
64
+ // the list until we find the 2nd item, which is flagged as selected. Then mark everything from the 2nd-5th as selected.
65
+ let prevSelectedIndex = selectedItemIdx;
66
+ do {
67
+ prevSelectedIndex--;
68
+ } while (prevSelectedIndex >= 0 && this.internalItems[prevSelectedIndex].selected === false);
69
+ if (prevSelectedIndex >= 0) {
70
+ for (let i = prevSelectedIndex; i <= selectedItemIdx; i++)
71
+ this.internalItems[i].selected = true;
72
+ }
73
+ else {
74
+ // Check to see if we're going bottom->top select
75
+ // For example, if the 5th item has been selected, then they shift-select the 2nd item, iterate forwards through
76
+ // the list until we find the 5th item, which is flagged as selected. Then mark everything from the 2nd-5th as selected.
77
+ let nextSelectedIndex = selectedItemIdx;
78
+ do {
79
+ nextSelectedIndex++;
80
+ } while (nextSelectedIndex <= this.internalItems.length && this.internalItems[nextSelectedIndex].selected === false);
81
+ if (nextSelectedIndex <= this.internalItems.length) {
82
+ for (let i = selectedItemIdx; i <= nextSelectedIndex; i++)
83
+ this.internalItems[i].selected = true;
84
+ }
85
+ }
86
+ }
87
+ else {
88
+ this.internalItems.forEach(item => item.selected = false);
89
+ item.selected = true;
90
+ }
91
+ this.anySelected = false;
92
+ let selectedItems = [];
93
+ this.internalItems.forEach(item => {
94
+ if (item.selected === true)
95
+ selectedItems.push(item);
96
+ this.anySelected = (this.anySelected === true || item.selected === true);
97
+ });
98
+ if (this.selectedItemsChange)
99
+ this.selectedItemsChange.emit((selectedItems.length > 0) ? selectedItems : null);
100
+ }
101
+ moveTop() {
102
+ let uuidsToMove = this.internalItems.filter(item => item.selected === true).map(item => item.uuid);
103
+ let topArray = [];
104
+ uuidsToMove.forEach((uuid, idx) => {
105
+ let itemIdx = this.internalItems.findIndex(item => item.uuid === uuid);
106
+ let temp = this.internalItems.splice(itemIdx, 1);
107
+ topArray.push(temp[0]);
108
+ });
109
+ this.internalItems = topArray.concat(this.internalItems);
110
+ this.internalItems.forEach((internalItem, idx) => {
111
+ internalItem.sortOrder = idx;
112
+ let item = this.items.find(item => item.uuid === internalItem.uuid);
113
+ SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);
114
+ });
115
+ this.sortList();
116
+ }
117
+ moveUp() {
118
+ let newArray = [];
119
+ this.internalItems.forEach(x => x.sortOrder *= 10);
120
+ this.internalItems.forEach((internalItem, idx) => {
121
+ if (internalItem.selected === true)
122
+ internalItem.sortOrder -= 11;
123
+ });
124
+ this.internalItems = this.internalItems.sort((a, b) => (a.sortOrder > b.sortOrder) ? 1 : (a.sortOrder < b.sortOrder) ? -1 : 0);
125
+ this.internalItems.forEach((internalItem, idx) => {
126
+ internalItem.sortOrder = idx;
127
+ let item = this.items.find(item => item.uuid === internalItem.uuid);
128
+ SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);
129
+ });
130
+ this.sortList();
131
+ }
132
+ moveDown() {
133
+ let newArray = [];
134
+ this.internalItems.forEach(x => x.sortOrder *= 10);
135
+ this.internalItems.forEach((internalItem, idx) => {
136
+ if (internalItem.selected === true)
137
+ internalItem.sortOrder += 11;
138
+ });
139
+ this.internalItems = this.internalItems.sort((a, b) => (a.sortOrder > b.sortOrder) ? 1 : (a.sortOrder < b.sortOrder) ? -1 : 0);
140
+ this.internalItems.forEach((internalItem, idx) => {
141
+ internalItem.sortOrder = idx;
142
+ let item = this.items.find(item => item.uuid === internalItem.uuid);
143
+ SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);
144
+ });
145
+ this.sortList();
146
+ }
147
+ moveBottom() {
148
+ let uuidsToMove = this.internalItems.filter(item => item.selected === true).map(item => item.uuid);
149
+ let bottomArray = [];
150
+ uuidsToMove.forEach((uuid, idx) => {
151
+ let itemIdx = this.internalItems.findIndex(item => item.uuid === uuid);
152
+ let temp = this.internalItems.splice(itemIdx, 1);
153
+ bottomArray.push(temp[0]);
154
+ });
155
+ this.internalItems = this.internalItems.concat(bottomArray);
156
+ this.internalItems.forEach((internalItem, idx) => {
157
+ internalItem.sortOrder = idx;
158
+ let item = this.items.find(item => item.uuid === internalItem.uuid);
159
+ SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);
160
+ });
161
+ this.sortList();
162
+ }
163
+ sortList() {
164
+ if (this.items) {
165
+ this.items = this.items.sort((a, b) => {
166
+ let val1 = SlickUtilsService.getDeepObject(a, this.sortOrderFieldName);
167
+ let val2 = SlickUtilsService.getDeepObject(b, this.sortOrderFieldName);
168
+ if (val1 < val2)
169
+ return -1;
170
+ else if (val1 > val2)
171
+ return 1;
172
+ else
173
+ return 0;
174
+ });
175
+ }
176
+ this.items.forEach((item, idx) => SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx));
177
+ this.itemsChange.emit(this.items);
178
+ }
179
+ }
180
+ /** @nocollapse */ SlickOrderedListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
181
+ /** @nocollapse */ SlickOrderedListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: SlickOrderedListComponent, selector: "slick-ordered-list", inputs: { items: "items", title: "title", sortOrderFieldName: "sortOrderFieldName", displayFieldName: "displayFieldName", buttonAlignment: "buttonAlignment" }, outputs: { itemsChange: "itemsChange", selectedItemsChange: "selectedItemsChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"slick-ordered-list\" id=\"slick-ordered-list_{{uuid}}\">\r\n\t<div *ngIf=\"buttonAlignment === 'left'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n\t<div class=\"slick-ordered-list_list-items\">\r\n\t\t{{title}}<br />\r\n\t\t<ul class=\"dropdown-menu\">\r\n\t\t\t<li *ngFor=\"let item of internalItems\" class=\"dropdown-item\" style=\"cursor: pointer;\" [ngClass]=\"{'active': item.selected}\" (click)=\"selectItem($event, item)\">{{item.text}}</li>\r\n\t\t\t<li *ngIf=\"!internalItems || internalItems.length === 0\" class=\"slick-ordered-list_no-items list-group-item\">No Items</li>\r\n\t\t</ul>\r\n\r\n\t</div>\r\n\t<div *ngIf=\"buttonAlignment === 'right'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n</div>", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListComponent, decorators: [{
183
+ type: Component,
184
+ args: [{ selector: 'slick-ordered-list', template: "<div class=\"slick-ordered-list\" id=\"slick-ordered-list_{{uuid}}\">\r\n\t<div *ngIf=\"buttonAlignment === 'left'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n\t<div class=\"slick-ordered-list_list-items\">\r\n\t\t{{title}}<br />\r\n\t\t<ul class=\"dropdown-menu\">\r\n\t\t\t<li *ngFor=\"let item of internalItems\" class=\"dropdown-item\" style=\"cursor: pointer;\" [ngClass]=\"{'active': item.selected}\" (click)=\"selectItem($event, item)\">{{item.text}}</li>\r\n\t\t\t<li *ngIf=\"!internalItems || internalItems.length === 0\" class=\"slick-ordered-list_no-items list-group-item\">No Items</li>\r\n\t\t</ul>\r\n\r\n\t</div>\r\n\t<div *ngIf=\"buttonAlignment === 'right'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n</div>" }]
185
+ }], ctorParameters: function () { return []; }, propDecorators: { items: [{
186
+ type: Input
187
+ }], itemsChange: [{
188
+ type: Output
189
+ }], title: [{
190
+ type: Input
191
+ }], selectedItemsChange: [{
192
+ type: Output
193
+ }], sortOrderFieldName: [{
194
+ type: Input
195
+ }], displayFieldName: [{
196
+ type: Input
197
+ }], buttonAlignment: [{
198
+ type: Input
199
+ }] } });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stb3JkZXJlZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLW9yZGVyZWQtbGlzdC9zbGljay1vcmRlcmVkLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stb3JkZXJlZC1saXN0L3NsaWNrLW9yZGVyZWQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBTWpFLE1BQU0sT0FBTyx5QkFBeUI7SUFlckM7UUFiVSxnQkFBVyxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXRELHdCQUFtQixHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRy9ELG9CQUFlLEdBQVcsTUFBTSxDQUFDO1FBRzFDLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFHOUMsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTtRQUNQLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsV0FBVztRQUNWLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMs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QUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOzt5SUF6TlcseUJBQXlCOzZIQUF6Qix5QkFBeUIsb1VDUHRDLDh0RUF1Qk07MkZEaEJPLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDQyxvQkFBb0I7MEVBSXJCLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0Usa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTbGlja1V0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay11dGlscy5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLW9yZGVyZWQtbGlzdCcsXHJcblx0dGVtcGxhdGVVcmw6ICdzbGljay1vcmRlcmVkLWxpc3QuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja09yZGVyZWRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcblx0QElucHV0KCkgaXRlbXM6IGFueVtdO1xyXG5cdEBPdXRwdXQoKSBpdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG5cdEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBJbnB1dCgpIHNvcnRPcmRlckZpZWxkTmFtZTogc3RyaW5nO1xyXG5cdEBJbnB1dCgpIGRpc3BsYXlGaWVsZE5hbWU6IHN0cmluZztcclxuXHRASW5wdXQoKSBidXR0b25BbGlnbm1lbnQ6IHN0cmluZyA9IFwibGVmdFwiO1xyXG5cclxuXHR1dWlkOiBzdHJpbmc7XHJcblx0aW50ZXJuYWxJdGVtczogYW55W10gPSBbXTtcclxuXHRhbnlTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRmbkRvY3VtZW50Q2xpY2sgPSAoZSkgPT4gdGhpcy5kb2N1bWVudENsaWNrKGUpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHRoaXMudXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcdFxyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1x0XHJcblx0fVxyXG5cclxuXHRkb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpIHtcclxuXHRcdGlmIChlLnRhcmdldCAmJiBTbGlja1V0aWxzU2VydmljZS5jaGVja1BhcmVudElkRXhpc3RzKDxIVE1MRWxlbWVudD5lLnRhcmdldCwgXCJzbGljay1vcmRlcmVkLWxpc3RfXCIgKyB0aGlzLnV1aWQpKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0Ly8gSWYgd2UncmUgdXNpbmcgdGhpcyBpbiB0aGUgcGlja2xpc3QsIGRvbid0IGRvIGFueXRoaW5nXHJcblx0XHRpZiAoZS50YXJnZXQgJiYgU2xpY2tVdGlsc1NlcnZpY2UuY2hlY2tQYXJlbnRDbGFzc0V4aXN0cyg8SFRNTEVsZW1lbnQ+ZS50YXJnZXQsIFwic2xpY2stcGljay1saXN0X2J1dHRvbnNcIikpIFxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0dGhpcy5pbnRlcm5hbEl0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLnNlbGVjdGVkID0gZmFsc2UpO1x0XHRcclxuXHRcdHRoaXMuYW55U2VsZWN0ZWQgPSBmYWxzZTtcclxuXHRcdGlmICh0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UpXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KG51bGwpO1xyXG5cclxuXHR9XHJcblxyXG5cdGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuXHRcdGlmICghdGhpcy5pdGVtcyB8fCAhdGhpcy5zb3J0T3JkZXJGaWVsZE5hbWUgfHwgIXRoaXMuZGlzcGxheUZpZWxkTmFtZSlcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLml0ZW1zKSB7XHJcblx0XHRcdHRoaXMuaW50ZXJuYWxJdGVtcyA9IFtdO1xyXG5cdFx0XHRcclxuXHRcdFx0dGhpcy5zb3J0TGlzdCgpO1xyXG5cclxuXHRcdFx0bGV0IHNvcnRPcmRlciA9IDA7XHJcblx0XHRcdHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuXHRcdFx0XHRpZiAoIWl0ZW0udXVpZClcclxuXHRcdFx0XHRcdGl0ZW0udXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHJcblx0XHRcdFx0aWYgKGl0ZW0pXHJcblx0XHRcdFx0XHRTbGlja1V0aWxzU2VydmljZS5zZXREZWVwT2JqZWN0KGl0ZW0sIHRoaXMuc29ydE9yZGVyRmllbGROYW1lLCBzb3J0T3JkZXIpO1xyXG5cclxuXHRcdFx0XHR0aGlzLmludGVybmFsSXRlbXMucHVzaCh7XHJcblx0XHRcdFx0XHR1dWlkOiBpdGVtLnV1aWQsXHJcblx0XHRcdFx0XHRzb3J0T3JkZXI6IHNvcnRPcmRlcixcclxuXHRcdFx0XHRcdHNlbGVjdGVkOiBmYWxzZSxcclxuXHRcdFx0XHRcdHRleHQ6IFNsaWNrVXRpbHNTZXJ2aWNlLmdldERlZXBPYmplY3QoaXRlbSwgdGhpcy5kaXNwbGF5RmllbGROYW1lKVxyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRzb3J0T3JkZXIrKztcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHR0aGlzLmFueVNlbGVjdGVkID0gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZWxlY3RJdGVtKGU6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xyXG5cdFx0aWYgKGUuY3RybEtleSkge1xyXG5cdFx0XHRpdGVtLnNlbGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmIChlLnNoaWZ0S2V5KSB7XHJcblx0XHRcdGxldCBzZWxlY3RlZEl0ZW1JZHggPSB0aGlzLmludGVybmFsSXRlbXMuZmluZEluZGV4KGludGVybmFsSXRlbSA9PiBpdGVtLnV1aWQgPT09IGludGVybmFsSXRlbS51dWlkKTtcclxuXHRcdFx0dGhpcy5pbnRlcm5hbEl0ZW1zW3NlbGVjdGVkSXRlbUlkeF0uc2VsZWN0ZWQgPSAhdGhpcy5pbnRlcm5hbEl0ZW1zW3NlbGVjdGVkSXRlbUlkeF0uc2VsZWN0ZWQ7XHJcblxyXG5cdFx0XHQvLyBDaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSBzZWxlY3RlZCBpdGVtIHByZXZpb3VzbHkgaW4gdGhlIGxpc3QuICBUaGlzIHdpbGwgYmUgdGhlIGRlZmF1bHRcclxuXHRcdFx0Ly8gRm9yIGV4YW1wbGUsIGlmIHRoZSAybmQgaXRlbSBoYXMgYmVlbiBzZWxlY3RlZCwgdGhlbiB0aGV5IHNoaWZ0LXNlbGVjdCB0aGUgNXRoIGl0ZW0sIGl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2hcclxuXHRcdFx0Ly8gdGhlIGxpc3QgdW50aWwgd2UgZmluZCB0aGUgMm5kIGl0ZW0sIHdoaWNoIGlzIGZsYWdnZWQgYXMgc2VsZWN0ZWQuICBUaGVuIG1hcmsgZXZlcnl0aGluZyBmcm9tIHRoZSAybmQtNXRoIGFzIHNlbGVjdGVkLlxyXG5cdFx0XHRsZXQgcHJldlNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEl0ZW1JZHg7XHJcblx0XHRcdGRvIHtcclxuXHRcdFx0XHRwcmV2U2VsZWN0ZWRJbmRleC0tO1xyXG5cdFx0XHR9IHdoaWxlIChwcmV2U2VsZWN0ZWRJbmRleCA+PSAwICYmIHRoaXMuaW50ZXJuYWxJdGVtc1twcmV2U2VsZWN0ZWRJbmRleF0uc2VsZWN0ZWQgPT09IGZhbHNlKTtcclxuXHRcdFx0XHJcblx0XHRcdGlmIChwcmV2U2VsZWN0ZWRJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IHByZXZTZWxlY3RlZEluZGV4OyBpIDw9IHNlbGVjdGVkSXRlbUlkeDsgaSsrKSBcclxuXHRcdFx0XHRcdHRoaXMuaW50ZXJuYWxJdGVtc1tpXS5zZWxlY3RlZCA9IHRydWU7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlJ3JlIGdvaW5nIGJvdHRvbS0+dG9wIHNlbGVjdFxyXG5cdFx0XHRcdC8vIEZvciBleGFtcGxlLCBpZiB0aGUgNXRoIGl0ZW0gaGFzIGJlZW4gc2VsZWN0ZWQsIHRoZW4gdGhleSBzaGlmdC1zZWxlY3QgdGhlIDJuZCBpdGVtLCBpdGVyYXRlIGZvcndhcmRzIHRocm91Z2hcclxuXHRcdFx0XHQvLyB0aGUgbGlzdCB1bnRpbCB3ZSBmaW5kIHRoZSA1dGggaXRlbSwgd2hpY2ggaXMgZmxhZ2dlZCBhcyBzZWxlY3RlZC4gIFRoZW4gbWFyayBldmVyeXRoaW5nIGZyb20gdGhlIDJuZC01dGggYXMgc2VsZWN0ZWQuXHJcblx0XHRcdFx0bGV0IG5leHRTZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJdGVtSWR4O1xyXG5cdFx0XHRcdGRvIHtcclxuXHRcdFx0XHRcdG5leHRTZWxlY3RlZEluZGV4Kys7XHJcblx0XHRcdFx0fSB3aGlsZSAobmV4dFNlbGVjdGVkSW5kZXggPD0gdGhpcy5pbnRlcm5hbEl0ZW1zLmxlbmd0aCAmJiB0aGlzLmludGVybmFsSXRlbXNbbmV4dFNlbGVjdGVkSW5kZXhdLnNlbGVjdGVkID09PSBmYWxzZSk7XHJcblxyXG5cdFx0XHRcdGlmIChuZXh0U2VsZWN0ZWRJbmRleCA8PSB0aGlzLmludGVybmFsSXRlbXMubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gc2VsZWN0ZWRJdGVtSWR4OyBpIDw9IG5leHRTZWxlY3RlZEluZGV4OyBpKyspIFxyXG5cdFx0XHRcdFx0XHR0aGlzLmludGVybmFsSXRlbXNbaV0uc2VsZWN0ZWQgPSB0cnVlO1xyXG5cdFx0XHRcdH0gXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHR0aGlzLmludGVybmFsSXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZSk7XHJcblx0XHRcdGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuYW55U2VsZWN0ZWQgPSBmYWxzZTtcclxuXHRcdGxldCBzZWxlY3RlZEl0ZW1zID0gW107XHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuXHRcdFx0aWYgKGl0ZW0uc2VsZWN0ZWQgPT09IHRydWUpXHJcblx0XHRcdFx0c2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR0aGlzLmFueVNlbGVjdGVkID0gKHRoaXMuYW55U2VsZWN0ZWQgPT09IHRydWUgfHwgaXRlbS5zZWxlY3RlZCA9PT0gdHJ1ZSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCgoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSA/IHNlbGVjdGVkSXRlbXMgOiBudWxsKTtcclxuXHR9XHJcblxyXG5cdG1vdmVUb3AoKSB7XHJcblx0XHRsZXQgdXVpZHNUb01vdmUgPSB0aGlzLmludGVybmFsSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCA9PT0gdHJ1ZSkubWFwKGl0ZW0gPT4gaXRlbS51dWlkKTtcclxuXHRcdGxldCB0b3BBcnJheTogYW55W10gPSBbXTtcclxuXHRcdHV1aWRzVG9Nb3ZlLmZvckVhY2goKHV1aWQsIGlkeCkgPT4ge1xyXG5cdFx0XHRsZXQgaXRlbUlkeCA9IHRoaXMuaW50ZXJuYWxJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnV1aWQgPT09IHV1aWQpO1xyXG5cdFx0XHRsZXQgdGVtcCA9IHRoaXMuaW50ZXJuYWxJdGVtcy5zcGxpY2UoaXRlbUlkeCwgMSk7XHJcblx0XHRcdHRvcEFycmF5LnB1c2godGVtcFswXSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMgPSB0b3BBcnJheS5jb25jYXQodGhpcy5pbnRlcm5hbEl0ZW1zKTtcclxuXHRcdHRoaXMuaW50ZXJuYWxJdGVtcy5mb3JFYWNoKChpbnRlcm5hbEl0ZW0sIGlkeCkgPT4ge1xyXG5cdFx0XHRpbnRlcm5hbEl0ZW0uc29ydE9yZGVyID0gaWR4O1xyXG5cdFx0XHRsZXQgaXRlbSA9IHRoaXMuaXRlbXMuZmluZChpdGVtID0+IGl0ZW0udXVpZCA9PT0gaW50ZXJuYWxJdGVtLnV1aWQpO1xyXG5cdFx0XHRTbGlja1V0aWxzU2VydmljZS5zZXREZWVwT2JqZWN0KGl0ZW0sIHRoaXMuc29ydE9yZGVyRmllbGROYW1lLCBpZHgpO1xyXG5cdFx0fSlcclxuXHJcblx0XHR0aGlzLnNvcnRMaXN0KCk7XHJcblx0fVxyXG5cclxuXHRtb3ZlVXAoKSB7XHJcblx0XHRsZXQgbmV3QXJyYXkgPSBbXTtcclxuXHRcdHRoaXMuaW50ZXJuYWxJdGVtcy5mb3JFYWNoKHggPT4geC5zb3J0T3JkZXIgKj0gMTApO1xyXG5cdFx0dGhpcy5pbnRlcm5hbEl0ZW1zLmZvckVhY2goKGludGVybmFsSXRlbSwgaWR4KSA9PiB7XHJcblx0XHRcdGlmIChpbnRlcm5hbEl0ZW0uc2VsZWN0ZWQgPT09IHRydWUpXHJcblx0XHRcdFx0aW50ZXJuYWxJdGVtLnNvcnRPcmRlciAtPSAxMTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuaW50ZXJuYWxJdGVtcyA9IHRoaXMuaW50ZXJuYWxJdGVtcy5zb3J0KChhLCBiKSA9PiAoYS5zb3J0T3JkZXIgPiBiLnNvcnRPcmRlcikgPyAxIDogKGEuc29ydE9yZGVyIDwgYi5zb3J0T3JkZXIpID8gLTEgOiAwKTtcclxuXHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMuZm9yRWFjaCgoaW50ZXJuYWxJdGVtLCBpZHgpID0+IHtcclxuXHRcdFx0aW50ZXJuYWxJdGVtLnNvcnRPcmRlciA9IGlkeDtcclxuXHRcdFx0bGV0IGl0ZW0gPSB0aGlzLml0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnV1aWQgPT09IGludGVybmFsSXRlbS51dWlkKTtcclxuXHRcdFx0U2xpY2tVdGlsc1NlcnZpY2Uuc2V0RGVlcE9iamVjdChpdGVtLCB0aGlzLnNvcnRPcmRlckZpZWxkTmFtZSwgaWR4KTtcclxuXHRcdH0pXHRcdFxyXG5cclxuXHRcdHRoaXMuc29ydExpc3QoKTtcclxuXHR9XHJcblxyXG5cdG1vdmVEb3duKCkge1xyXG5cdFx0bGV0IG5ld0FycmF5ID0gW107XHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMuZm9yRWFjaCh4ID0+IHguc29ydE9yZGVyICo9IDEwKTtcclxuXHRcdHRoaXMuaW50ZXJuYWxJdGVtcy5mb3JFYWNoKChpbnRlcm5hbEl0ZW0sIGlkeCkgPT4ge1xyXG5cdFx0XHRpZiAoaW50ZXJuYWxJdGVtLnNlbGVjdGVkID09PSB0cnVlKVxyXG5cdFx0XHRcdGludGVybmFsSXRlbS5zb3J0T3JkZXIgKz0gMTE7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMgPSB0aGlzLmludGVybmFsSXRlbXMuc29ydCgoYSwgYikgPT4gKGEuc29ydE9yZGVyID4gYi5zb3J0T3JkZXIpID8gMSA6IChhLnNvcnRPcmRlciA8IGIuc29ydE9yZGVyKSA/IC0xIDogMCk7XHJcblxyXG5cdFx0dGhpcy5pbnRlcm5hbEl0ZW1zLmZvckVhY2goKGludGVybmFsSXRlbSwgaWR4KSA9PiB7XHJcblx0XHRcdGludGVybmFsSXRlbS5zb3J0T3JkZXIgPSBpZHg7XHJcblx0XHRcdGxldCBpdGVtID0gdGhpcy5pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS51dWlkID09PSBpbnRlcm5hbEl0ZW0udXVpZCk7XHJcblx0XHRcdFNsaWNrVXRpbHNTZXJ2aWNlLnNldERlZXBPYmplY3QoaXRlbSwgdGhpcy5zb3J0T3JkZXJGaWVsZE5hbWUsIGlkeCk7XHJcblx0XHR9KVxyXG5cclxuXHRcdHRoaXMuc29ydExpc3QoKTtcclxuXHR9XHJcblxyXG5cdG1vdmVCb3R0b20oKSB7XHJcblx0XHRsZXQgdXVpZHNUb01vdmUgPSB0aGlzLmludGVybmFsSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCA9PT0gdHJ1ZSkubWFwKGl0ZW0gPT4gaXRlbS51dWlkKTtcclxuXHRcdGxldCBib3R0b21BcnJheTogYW55W10gPSBbXTtcclxuXHRcdHV1aWRzVG9Nb3ZlLmZvckVhY2goKHV1aWQsIGlkeCkgPT4ge1xyXG5cdFx0XHRsZXQgaXRlbUlkeCA9IHRoaXMuaW50ZXJuYWxJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnV1aWQgPT09IHV1aWQpO1xyXG5cdFx0XHRsZXQgdGVtcCA9IHRoaXMuaW50ZXJuYWxJdGVtcy5zcGxpY2UoaXRlbUlkeCwgMSk7XHJcblx0XHRcdGJvdHRvbUFycmF5LnB1c2godGVtcFswXSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMgPSB0aGlzLmludGVybmFsSXRlbXMuY29uY2F0KGJvdHRvbUFycmF5KTtcclxuXHRcdHRoaXMuaW50ZXJuYWxJdGVtcy5mb3JFYWNoKChpbnRlcm5hbEl0ZW0sIGlkeCkgPT4ge1xyXG5cdFx0XHRpbnRlcm5hbEl0ZW0uc29ydE9yZGVyID0gaWR4O1xyXG5cdFx0XHRsZXQgaXRlbSA9IHRoaXMuaXRlbXMuZmluZChpdGVtID0+IGl0ZW0udXVpZCA9PT0gaW50ZXJuYWxJdGVtLnV1aWQpO1xyXG5cdFx0XHRTbGlja1V0aWxzU2VydmljZS5zZXREZWVwT2JqZWN0KGl0ZW0sIHRoaXMuc29ydE9yZGVyRmllbGROYW1lLCBpZHgpO1xyXG5cdFx0fSlcclxuXHJcblx0XHR0aGlzLnNvcnRMaXN0KCk7XHJcblx0fVxyXG5cclxuXHRzb3J0TGlzdCgpIHtcclxuXHRcdGlmICh0aGlzLml0ZW1zKSB7XHJcblx0XHRcdHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcblx0XHRcdFx0bGV0IHZhbDEgPSBTbGlja1V0aWxzU2VydmljZS5nZXREZWVwT2JqZWN0KGEsIHRoaXMuc29ydE9yZGVyRmllbGROYW1lKTtcclxuXHRcdFx0XHRsZXQgdmFsMiA9IFNsaWNrVXRpbHNTZXJ2aWNlLmdldERlZXBPYmplY3QoYiwgdGhpcy5zb3J0T3JkZXJGaWVsZE5hbWUpO1xyXG5cclxuXHRcdFx0XHRpZiAodmFsMSA8IHZhbDIpXHJcblx0XHRcdFx0XHRyZXR1cm4gLTE7XHJcblx0XHRcdFx0ZWxzZSBpZiAodmFsMSA+IHZhbDIpXHJcblx0XHRcdFx0XHRyZXR1cm4gMTtcclxuXHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRyZXR1cm4gMDtcdFx0XHRcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtLCBpZHgpID0+IFNsaWNrVXRpbHNTZXJ2aWNlLnNldERlZXBPYmplY3QoaXRlbSwgdGhpcy5zb3J0T3JkZXJGaWVsZE5hbWUsIGlkeCkpO1xyXG5cdFx0dGhpcy5pdGVtc0NoYW5nZS5lbWl0KHRoaXMuaXRlbXMpO1xyXG5cdH1cclxufSIsIjxkaXYgY2xhc3M9XCJzbGljay1vcmRlcmVkLWxpc3RcIiBpZD1cInNsaWNrLW9yZGVyZWQtbGlzdF97e3V1aWR9fVwiPlxyXG5cdDxkaXYgKm5nSWY9XCJidXR0b25BbGlnbm1lbnQgPT09ICdsZWZ0J1wiIGNsYXNzPVwic2xpY2stb3JkZXJlZC1saXN0X2J1dHRvbnNcIj5cclxuXHRcdDxzcGFuICpuZ0lmPVwidGl0bGVcIj48YnIgLz48L3NwYW4+XHJcblx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1vdmUtdG9wIGJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vdmVUb3AoKVwiIFtkaXNhYmxlZF09XCJhbnlTZWxlY3RlZCA9PT0gZmFsc2VcIj48aSBjbGFzcz1cImZhciBmYS1jaGV2cm9uLWRvdWJsZS11cFwiPjwvaT48L2J1dHRvbj5cclxuXHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwibW92ZVVwKClcIiBbZGlzYWJsZWRdPVwiYW55U2VsZWN0ZWQgPT09IGZhbHNlXCI+PGkgY2xhc3M9XCJmYXIgZmEtY2hldnJvbi11cFwiPjwvaT48L2J1dHRvbj5cclxuXHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwibW92ZURvd24oKVwiIFtkaXNhYmxlZF09XCJhbnlTZWxlY3RlZCA9PT0gZmFsc2VcIj48aSBjbGFzcz1cImZhciBmYS1jaGV2cm9uLWRvd25cIj48L2k+PC9idXR0b24+XHJcblx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1vdmUtYm90dG9tIGJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vdmVCb3R0b20oKVwiIFtkaXNhYmxlZF09XCJhbnlTZWxlY3RlZCA9PT0gZmFsc2VcIj48aSBjbGFzcz1cImZhciBmYS1jaGV2cm9uLWRvdWJsZS1kb3duXCI+PC9pPjwvYnV0dG9uPlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJzbGljay1vcmRlcmVkLWxpc3RfbGlzdC1pdGVtc1wiPlxyXG5cdFx0e3t0aXRsZX19PGJyIC8+XHJcblx0XHQ8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XHJcblx0XHRcdDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbnRlcm5hbEl0ZW1zXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpdGVtLnNlbGVjdGVkfVwiIChjbGljayk9XCJzZWxlY3RJdGVtKCRldmVudCwgaXRlbSlcIj57e2l0ZW0udGV4dH19PC9saT5cclxuXHRcdFx0PGxpICpuZ0lmPVwiIWludGVybmFsSXRlbXMgfHwgaW50ZXJuYWxJdGVtcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInNsaWNrLW9yZGVyZWQtbGlzdF9uby1pdGVtcyBsaXN0LWdyb3VwLWl0ZW1cIj5ObyBJdGVtczwvbGk+XHJcblx0XHQ8L3VsPlxyXG5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2ICpuZ0lmPVwiYnV0dG9uQWxpZ25tZW50ID09PSAncmlnaHQnXCIgY2xhc3M9XCJzbGljay1vcmRlcmVkLWxpc3RfYnV0dG9uc1wiPlxyXG5cdFx0PHNwYW4gKm5nSWY9XCJ0aXRsZVwiPjxiciAvPjwvc3Bhbj5cclxuXHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibW92ZS10b3AgYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwibW92ZVRvcCgpXCIgW2Rpc2FibGVkXT1cImFueVNlbGVjdGVkID09PSBmYWxzZVwiPjxpIGNsYXNzPVwiZmFyIGZhLWNoZXZyb24tZG91YmxlLXVwXCI+PC9pPjwvYnV0dG9uPlxyXG5cdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJtb3ZlVXAoKVwiIFtkaXNhYmxlZF09XCJhbnlTZWxlY3RlZCA9PT0gZmFsc2VcIj48aSBjbGFzcz1cImZhciBmYS1jaGV2cm9uLXVwXCI+PC9pPjwvYnV0dG9uPlxyXG5cdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJtb3ZlRG93bigpXCIgW2Rpc2FibGVkXT1cImFueVNlbGVjdGVkID09PSBmYWxzZVwiPjxpIGNsYXNzPVwiZmFyIGZhLWNoZXZyb24tZG93blwiPjwvaT48L2J1dHRvbj5cclxuXHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibW92ZS1ib3R0b20gYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwibW92ZUJvdHRvbSgpXCIgW2Rpc2FibGVkXT1cImFueVNlbGVjdGVkID09PSBmYWxzZVwiPjxpIGNsYXNzPVwiZmFyIGZhLWNoZXZyb24tZG91YmxlLWRvd25cIj48L2k+PC9idXR0b24+XHJcblx0PC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { FormsModule } from "@angular/forms";
4
+ import { SlickOrderedListComponent } from "./slick-ordered-list.component";
5
+ import * as i0 from "@angular/core";
6
+ export class SlickOrderedListModule {
7
+ }
8
+ /** @nocollapse */ SlickOrderedListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ /** @nocollapse */ SlickOrderedListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListModule, declarations: [SlickOrderedListComponent], imports: [CommonModule, FormsModule], exports: [CommonModule, FormsModule, SlickOrderedListComponent] });
10
+ /** @nocollapse */ SlickOrderedListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListModule, imports: [[CommonModule, FormsModule], CommonModule, FormsModule] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ imports: [CommonModule, FormsModule],
15
+ declarations: [SlickOrderedListComponent],
16
+ exports: [CommonModule, FormsModule, SlickOrderedListComponent]
17
+ }]
18
+ }] });
19
+ export { SlickOrderedListComponent };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stb3JkZXJlZC1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLW9yZGVyZWQtbGlzdC9zbGljay1vcmRlcmVkLWxpc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFPM0UsTUFBTSxPQUFPLHNCQUFzQjs7c0lBQXRCLHNCQUFzQjt1SUFBdEIsc0JBQXNCLGlCQUhuQix5QkFBeUIsYUFEOUIsWUFBWSxFQUFFLFdBQVcsYUFFekIsWUFBWSxFQUFFLFdBQVcsRUFBRSx5QkFBeUI7dUlBRWxELHNCQUFzQixZQUp6QixDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsRUFFMUIsWUFBWSxFQUFFLFdBQVc7MkZBRXZCLHNCQUFzQjtrQkFMbEMsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDekMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsQ0FBQztpQkFDL0Q7O0FBR0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2xpY2tPcmRlcmVkTGlzdENvbXBvbmVudCB9IGZyb20gXCIuL3NsaWNrLW9yZGVyZWQtbGlzdC5jb21wb25lbnRcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0aW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxyXG5cdGRlY2xhcmF0aW9uczogW1NsaWNrT3JkZXJlZExpc3RDb21wb25lbnRdLFxyXG5cdGV4cG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBTbGlja09yZGVyZWRMaXN0Q29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tPcmRlcmVkTGlzdE1vZHVsZSB7IH1cclxuXHJcbmV4cG9ydCB7IFNsaWNrT3JkZXJlZExpc3RDb21wb25lbnQgfTsiXX0=
@@ -0,0 +1,185 @@
1
+ import { Component, Input, Output, EventEmitter, HostBinding } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class SlickPagingComponent {
5
+ constructor() {
6
+ this.class = 'd-flex';
7
+ this.pageNumber = 1;
8
+ this.pageNumberChange = new EventEmitter();
9
+ this.onPageChange = new EventEmitter();
10
+ this.showEllipses = false;
11
+ // This will be 10 20 30, etc
12
+ this.preDisplayPageNumbers = [];
13
+ this.preDisplayEllipses = false;
14
+ // This will be 41, 42, 43, 44, etc
15
+ this.displayPageNumbers = [];
16
+ // This will be 50 60 70, etc
17
+ this.postDisplayPageNumbers = [];
18
+ this.postDisplayEllipses = false;
19
+ }
20
+ ngOnChanges(changes) {
21
+ if (changes.pageNumber) {
22
+ this.pageNumber = parseInt((changes.pageNumber.currentValue || '1').toString());
23
+ }
24
+ this.recalc();
25
+ }
26
+ selectPage(selectedPageNumber) {
27
+ this.pageNumber = selectedPageNumber;
28
+ this.recalc();
29
+ if (this.onPageChange)
30
+ this.onPageChange.emit(this.pageNumber);
31
+ if (this.pageNumberChange)
32
+ this.pageNumberChange.emit(this.pageNumber);
33
+ }
34
+ first() {
35
+ this.pageNumber = 1;
36
+ this.recalc();
37
+ if (this.onPageChange)
38
+ this.onPageChange.emit(this.pageNumber);
39
+ if (this.pageNumberChange)
40
+ this.pageNumberChange.emit(this.pageNumber);
41
+ }
42
+ previousPage() {
43
+ this.pageNumber--;
44
+ this.recalc();
45
+ if (this.onPageChange)
46
+ this.onPageChange.emit(this.pageNumber);
47
+ if (this.pageNumberChange)
48
+ this.pageNumberChange.emit(this.pageNumber);
49
+ }
50
+ previousSet() {
51
+ this.pageNumber -= 20;
52
+ this.recalc();
53
+ if (this.onPageChange)
54
+ this.onPageChange.emit(this.pageNumber);
55
+ if (this.pageNumberChange)
56
+ this.pageNumberChange.emit(this.pageNumber);
57
+ }
58
+ nextPage() {
59
+ this.pageNumber++;
60
+ this.recalc();
61
+ if (this.onPageChange)
62
+ this.onPageChange.emit(this.pageNumber);
63
+ if (this.pageNumberChange)
64
+ this.pageNumberChange.emit(this.pageNumber);
65
+ }
66
+ nextSet() {
67
+ this.pageNumber += 20;
68
+ this.recalc();
69
+ if (this.onPageChange)
70
+ this.onPageChange.emit(this.pageNumber);
71
+ if (this.pageNumberChange)
72
+ this.pageNumberChange.emit(this.pageNumber);
73
+ }
74
+ last() {
75
+ this.pageNumber = this.totalPages;
76
+ this.recalc();
77
+ if (this.onPageChange)
78
+ this.onPageChange.emit(this.pageNumber);
79
+ if (this.pageNumberChange)
80
+ this.pageNumberChange.emit(this.pageNumber);
81
+ }
82
+ recalc() {
83
+ this.preDisplayEllipses = false;
84
+ this.postDisplayEllipses = false;
85
+ if (!this.recordsPerPage)
86
+ return;
87
+ this.totalRecords = this.totalRecords || 0;
88
+ if (this.totalRecords < 0)
89
+ this.totalRecords = 0;
90
+ this.recordsPerPage = this.recordsPerPage || 1;
91
+ if (this.recordsPerPage <= 0)
92
+ this.recordsPerPage = 1;
93
+ this.totalPages = Math.floor(this.totalRecords / this.recordsPerPage);
94
+ if ((this.totalRecords % this.recordsPerPage) > 0)
95
+ this.totalPages++;
96
+ if (this.pageNumber < 1)
97
+ this.pageNumber = 1;
98
+ if (this.pageNumber > this.totalPages)
99
+ this.pageNumber = this.totalPages;
100
+ this.currentRecordNumber = ((this.recordsPerPage) * (this.pageNumber - 1)) + 1;
101
+ this.endRecordNumber = this.currentRecordNumber + this.recordsPerPage - 1;
102
+ if (this.endRecordNumber > this.totalRecords)
103
+ this.endRecordNumber = this.totalRecords;
104
+ this.preDisplayPageNumbers = [];
105
+ this.displayPageNumbers = [];
106
+ this.postDisplayPageNumbers = [];
107
+ // 10 is a special case where we want to just show all 10
108
+ if (this.totalPages === 10) {
109
+ for (let i = 1; i <= 10; i++) {
110
+ this.displayPageNumbers.push(i);
111
+ }
112
+ }
113
+ else {
114
+ const preDisplayPageTotal = Math.floor(this.pageNumber / 10);
115
+ if (preDisplayPageTotal > 0) {
116
+ for (let i = 0; i < preDisplayPageTotal; i++) {
117
+ if (i === 0)
118
+ this.preDisplayPageNumbers.push(1);
119
+ else
120
+ this.preDisplayPageNumbers.push(i * 10);
121
+ }
122
+ }
123
+ let currentDisplayPageStart = preDisplayPageTotal * 10;
124
+ let currentDisplayPageEnd = currentDisplayPageStart + 9;
125
+ if (currentDisplayPageEnd > this.totalPages)
126
+ currentDisplayPageEnd = this.totalPages;
127
+ for (let i = currentDisplayPageStart; i <= currentDisplayPageEnd; i++) {
128
+ if (i > 0)
129
+ this.displayPageNumbers.push(i);
130
+ }
131
+ const postDisplayPageTotal = Math.floor((this.totalPages - preDisplayPageTotal + 10) / 10);
132
+ if (postDisplayPageTotal > 0) {
133
+ for (let i = preDisplayPageTotal + 1; i < postDisplayPageTotal; i++)
134
+ this.postDisplayPageNumbers.push(i * 10);
135
+ }
136
+ if (this.preDisplayPageNumbers.length > 1) {
137
+ this.preDisplayEllipses = true;
138
+ this.preDisplayPageNumbers = this.preDisplayPageNumbers.slice(this.preDisplayPageNumbers.length - 1, this.preDisplayPageNumbers.length);
139
+ }
140
+ if (this.postDisplayPageNumbers.length > 1) {
141
+ this.postDisplayEllipses = true;
142
+ this.postDisplayPageNumbers = this.postDisplayPageNumbers.slice(0, 1);
143
+ }
144
+ }
145
+ //// If we can show ALL the pages without the ..., then do it
146
+ //if (this.totalPages <= (this.adjacent * 2)) {
147
+ // this.allDisplayPageNumbers = [];
148
+ // this.showEllipses = false;
149
+ // for (let i = 1; i <= this.totalPages; i++) {
150
+ // this.allDisplayPageNumbers.push(i);
151
+ // }
152
+ //}
153
+ //else {
154
+ // this.showEllipses = true;
155
+ // if (this.allDisplayPageNumbers.indexOf(this.pageNumber) < 0) {
156
+ // this.allDisplayPageNumbers = [];
157
+ // for (let i = this.pageNumber; i < this.pageNumber + this.adjacent; i++)
158
+ // this.allDisplayPageNumbers.push(i);
159
+ // this.allDisplayPageNumbers.push(-1)
160
+ // for (let i = this.totalPages - this.adjacent; i < this.totalPages; i++)
161
+ // this.allDisplayPageNumbers.push(i);
162
+ // }
163
+ //}
164
+ }
165
+ }
166
+ /** @nocollapse */ SlickPagingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickPagingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
167
+ /** @nocollapse */ SlickPagingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: SlickPagingComponent, selector: "slick-paging", inputs: { pageNumber: "pageNumber", totalRecords: "totalRecords", recordsPerPage: "recordsPerPage" }, outputs: { pageNumberChange: "pageNumberChange", onPageChange: "onPageChange" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"slick-paging\">\r\n\t<div class=\"ml-2 d-flex flex-column\">\r\n\t\t<ul class=\"pagination m-0\">\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === 1\"><button type=\"button\" class=\"page-link\" (click)=\"previousPage()\" style=\"margin-left: 1px;\"><i class=\"far fa-angle-left\"></i></button></li>\r\n\t\t\t<li *ngIf=\"pageNumber > 10\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"first()\" style=\"margin-left: 1px;\">1</button></li>\r\n\t\t\t<li *ngIf=\"preDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"previousSet()\" style=\"margin-left: 1px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of preDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"page-item\" [class.active]=\"pageNumber === displayPageNumber\" *ngFor=\"let displayPageNumber of displayPageNumbers\">\r\n\t\t\t\t<button *ngIf=\"displayPageNumber !== -1\" type=\"button\" class=\"page-link\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t\t<div *ngIf=\"displayPageNumber === -1\" class=\"page-link ellipses pl-1 pr-1 text-white bg-primary\"><i class=\"far fa-ellipsis-h\" style=\"position: relative;\ttop: 4px;\"></i></div>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayPageNumbers.length > 0\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of postDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"nextSet()\" style=\"margin-right: 2px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" [class.disabled]=\"pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"last()\" style=\"margin-right: 2px;\">{{totalPages}}</button></li>\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"nextPage()\"><i class=\"far fa-angle-right\"></i></button></li>\r\n\t\t</ul>\r\n\t\t<div *ngIf=\"totalRecords <= 0\" style=\"font-size: .8em; line-height: 1.4em;\">&nbsp;</div>\r\n\t\t<div *ngIf=\"totalRecords > 0\" style=\"font-size: .8em; line-height: 1.4em;\">\r\n\t\t\tShowing {{currentRecordNumber}}-{{endRecordNumber}} of {{totalRecords}}\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickPagingComponent, decorators: [{
169
+ type: Component,
170
+ args: [{ selector: 'slick-paging', template: "<div class=\"slick-paging\">\r\n\t<div class=\"ml-2 d-flex flex-column\">\r\n\t\t<ul class=\"pagination m-0\">\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === 1\"><button type=\"button\" class=\"page-link\" (click)=\"previousPage()\" style=\"margin-left: 1px;\"><i class=\"far fa-angle-left\"></i></button></li>\r\n\t\t\t<li *ngIf=\"pageNumber > 10\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"first()\" style=\"margin-left: 1px;\">1</button></li>\r\n\t\t\t<li *ngIf=\"preDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"previousSet()\" style=\"margin-left: 1px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of preDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"page-item\" [class.active]=\"pageNumber === displayPageNumber\" *ngFor=\"let displayPageNumber of displayPageNumbers\">\r\n\t\t\t\t<button *ngIf=\"displayPageNumber !== -1\" type=\"button\" class=\"page-link\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t\t<div *ngIf=\"displayPageNumber === -1\" class=\"page-link ellipses pl-1 pr-1 text-white bg-primary\"><i class=\"far fa-ellipsis-h\" style=\"position: relative;\ttop: 4px;\"></i></div>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayPageNumbers.length > 0\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of postDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"nextSet()\" style=\"margin-right: 2px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" [class.disabled]=\"pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"last()\" style=\"margin-right: 2px;\">{{totalPages}}</button></li>\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"nextPage()\"><i class=\"far fa-angle-right\"></i></button></li>\r\n\t\t</ul>\r\n\t\t<div *ngIf=\"totalRecords <= 0\" style=\"font-size: .8em; line-height: 1.4em;\">&nbsp;</div>\r\n\t\t<div *ngIf=\"totalRecords > 0\" style=\"font-size: .8em; line-height: 1.4em;\">\r\n\t\t\tShowing {{currentRecordNumber}}-{{endRecordNumber}} of {{totalRecords}}\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n" }]
171
+ }], ctorParameters: function () { return []; }, propDecorators: { class: [{
172
+ type: HostBinding,
173
+ args: ['class']
174
+ }], pageNumber: [{
175
+ type: Input
176
+ }], pageNumberChange: [{
177
+ type: Output
178
+ }], onPageChange: [{
179
+ type: Output
180
+ }], totalRecords: [{
181
+ type: Input
182
+ }], recordsPerPage: [{
183
+ type: Input
184
+ }] } });
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stcGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLXBhZ2luZy9zbGljay1wYWdpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stcGFnaW5nL3NsaWNrLXBhZ2luZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU05RyxNQUFNLE9BQU8sb0JBQW9CO0lBc0JoQztRQXJCc0IsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQUU5QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLHFCQUFnQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVELGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJbEUsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFOUIsNkJBQTZCO1FBQzdCLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUNyQyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsbUNBQW1DO1FBQ25DLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUNsQyw2QkFBNkI7UUFDN0IsMkJBQXNCLEdBQWEsRUFBRSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztJQUtyQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2pDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDaEY7UUFFRCxJQUFJLENBQUMsTUFBTSxF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QztnQkFDaEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0Q7UUFFRCw2REFBNkQ7UUFDN0QsK0NBQStDO1FBQy9DLG1DQUFtQztRQUVuQyw2QkFBNkI7UUFFN0IsK0NBQStDO1FBQy9DLHVDQUF1QztRQUN2QyxJQUFJO1FBQ0osR0FBRztRQUNILFFBQVE7UUFDUiw0QkFBNEI7UUFFNUIsaUVBQWlFO1FBQ2pFLG9DQUFvQztRQUVwQywyRUFBMkU7UUFDM0Usd0NBQXdDO1FBRXhDLHVDQUF1QztRQUV2QywyRUFBMkU7UUFDM0Usd0NBQXdDO1FBQ3hDLElBQUk7UUFDSixHQUFHO0lBQ0osQ0FBQzs7b0lBdE1XLG9CQUFvQjt3SEFBcEIsb0JBQW9CLGlUQ05qQyxzaEdBa0NBOzJGRDVCYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0MsY0FBYzswRUFJRixLQUFLO3NCQUExQixXQUFXO3VCQUFDLE9BQU87Z0JBRVgsVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBIb3N0QmluZGluZyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLXBhZ2luZycsXHJcblx0dGVtcGxhdGVVcmw6ICdzbGljay1wYWdpbmcuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja1BhZ2luZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblx0QEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ2QtZmxleCc7XHJcblxyXG5cdEBJbnB1dCgpIHBhZ2VOdW1iZXI6IG51bWJlciA9IDE7XHJcblx0QE91dHB1dCgpIHBhZ2VOdW1iZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvblBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBJbnB1dCgpIHRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG5cdEBJbnB1dCgpIHJlY29yZHNQZXJQYWdlOiBudW1iZXI7XHJcblxyXG5cdHNob3dFbGxpcHNlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHRvdGFsUGFnZXM6IG51bWJlcjtcclxuXHQvLyBUaGlzIHdpbGwgYmUgMTAgMjAgMzAsIGV0Y1xyXG5cdHByZURpc3BsYXlQYWdlTnVtYmVyczogbnVtYmVyW10gPSBbXTtcclxuXHRwcmVEaXNwbGF5RWxsaXBzZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHQvLyBUaGlzIHdpbGwgYmUgNDEsIDQyLCA0MywgNDQsIGV0Y1xyXG5cdGRpc3BsYXlQYWdlTnVtYmVyczogbnVtYmVyW10gPSBbXTtcclxuXHQvLyBUaGlzIHdpbGwgYmUgNTAgNjAgNzAsIGV0Y1xyXG5cdHBvc3REaXNwbGF5UGFnZU51bWJlcnM6IG51bWJlcltdID0gW107XHJcblx0cG9zdERpc3BsYXlFbGxpcHNlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGN1cnJlbnRSZWNvcmROdW1iZXI6IG51bWJlcjtcclxuXHRlbmRSZWNvcmROdW1iZXI6IG51bWJlcjtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRpZiAoY2hhbmdlcy5wYWdlTnVtYmVyKSB7XHJcblx0XHRcdHRoaXMucGFnZU51bWJlciA9IHBhcnNlSW50KChjaGFuZ2VzLnBhZ2VOdW1iZXIuY3VycmVudFZhbHVlIHx8ICcxJykudG9TdHJpbmcoKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5yZWNhbGMoKTtcclxuXHR9XHJcblxyXG5cdHNlbGVjdFBhZ2Uoc2VsZWN0ZWRQYWdlTnVtYmVyOiBudW1iZXIpIHtcclxuXHRcdHRoaXMucGFnZU51bWJlciA9IHNlbGVjdGVkUGFnZU51bWJlcjtcclxuXHRcdHRoaXMucmVjYWxjKCk7XHJcblx0XHRpZiAodGhpcy5vblBhZ2VDaGFuZ2UpXHJcblx0XHRcdHRoaXMub25QYWdlQ2hhbmdlLmVtaXQodGhpcy5wYWdlTnVtYmVyKTtcclxuXHRcdGlmICh0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UpXHJcblx0XHRcdHRoaXMucGFnZU51bWJlckNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0fVxyXG5cclxuXHRmaXJzdCgpIHtcclxuXHRcdHRoaXMucGFnZU51bWJlciA9IDE7XHJcblx0XHR0aGlzLnJlY2FsYygpO1xyXG5cdFx0aWYgKHRoaXMub25QYWdlQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VOdW1iZXIpO1xyXG5cdH1cclxuXHJcblx0cHJldmlvdXNQYWdlKCkge1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLS07XHJcblx0XHR0aGlzLnJlY2FsYygpO1xyXG5cdFx0aWYgKHRoaXMub25QYWdlQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VOdW1iZXIpO1xyXG5cdH1cclxuXHJcblx0cHJldmlvdXNTZXQoKSB7XHJcblx0XHR0aGlzLnBhZ2VOdW1iZXIgLT0gMjA7XHJcblx0XHR0aGlzLnJlY2FsYygpO1xyXG5cdFx0aWYgKHRoaXMub25QYWdlQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VOdW1iZXIpO1xyXG5cdH1cclxuXHJcblx0bmV4dFBhZ2UoKSB7XHJcblx0XHR0aGlzLnBhZ2VOdW1iZXIrKztcclxuXHRcdHRoaXMucmVjYWxjKCk7XHJcblx0XHRpZiAodGhpcy5vblBhZ2VDaGFuZ2UpXHJcblx0XHRcdHRoaXMub25QYWdlQ2hhbmdlLmVtaXQodGhpcy5wYWdlTnVtYmVyKTtcclxuXHRcdGlmICh0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UpXHJcblx0XHRcdHRoaXMucGFnZU51bWJlckNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0fVxyXG5cclxuXHRuZXh0U2V0KCkge1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyICs9IDIwO1xyXG5cdFx0dGhpcy5yZWNhbGMoKTtcclxuXHRcdGlmICh0aGlzLm9uUGFnZUNoYW5nZSlcclxuXHRcdFx0dGhpcy5vblBhZ2VDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VOdW1iZXIpO1xyXG5cdFx0aWYgKHRoaXMucGFnZU51bWJlckNoYW5nZSlcclxuXHRcdFx0dGhpcy5wYWdlTnVtYmVyQ2hhbmdlLmVtaXQodGhpcy5wYWdlTnVtYmVyKTtcclxuXHR9XHJcblxyXG5cdGxhc3QoKSB7XHJcblx0XHR0aGlzLnBhZ2VOdW1iZXIgPSB0aGlzLnRvdGFsUGFnZXM7XHJcblx0XHR0aGlzLnJlY2FsYygpO1xyXG5cdFx0aWYgKHRoaXMub25QYWdlQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VOdW1iZXIpO1xyXG5cdH1cclxuXHJcblx0cmVjYWxjKCkge1xyXG5cdFx0dGhpcy5wcmVEaXNwbGF5RWxsaXBzZXMgPSBmYWxzZTtcclxuXHRcdHRoaXMucG9zdERpc3BsYXlFbGxpcHNlcyA9IGZhbHNlO1xyXG5cclxuXHRcdGlmICghdGhpcy5yZWNvcmRzUGVyUGFnZSlcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMudG90YWxSZWNvcmRzID0gdGhpcy50b3RhbFJlY29yZHMgfHwgMDtcclxuXHRcdGlmICh0aGlzLnRvdGFsUmVjb3JkcyA8IDApXHJcblx0XHRcdHRoaXMudG90YWxSZWNvcmRzID0gMDtcclxuXHRcdHRoaXMucmVjb3Jkc1BlclBhZ2UgPSB0aGlzLnJlY29yZHNQZXJQYWdlIHx8IDE7XHJcblx0XHRpZiAodGhpcy5yZWNvcmRzUGVyUGFnZSA8PSAwKVxyXG5cdFx0XHR0aGlzLnJlY29yZHNQZXJQYWdlID0gMTtcclxuXHJcblx0XHR0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmZsb29yKHRoaXMudG90YWxSZWNvcmRzIC8gdGhpcy5yZWNvcmRzUGVyUGFnZSk7XHJcblx0XHRpZiAoKHRoaXMudG90YWxSZWNvcmRzICUgdGhpcy5yZWNvcmRzUGVyUGFnZSkgPiAwKVxyXG5cdFx0XHR0aGlzLnRvdGFsUGFnZXMrKztcclxuXHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyIDwgMSlcclxuXHRcdFx0dGhpcy5wYWdlTnVtYmVyID0gMTtcclxuXHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyID4gdGhpcy50b3RhbFBhZ2VzKVxyXG5cdFx0XHR0aGlzLnBhZ2VOdW1iZXIgPSB0aGlzLnRvdGFsUGFnZXM7XHJcblxyXG5cdFx0dGhpcy5jdXJyZW50UmVjb3JkTnVtYmVyID0gKCh0aGlzLnJlY29yZHNQZXJQYWdlKSAqICh0aGlzLnBhZ2VOdW1iZXIgLSAxKSkgKyAxO1xyXG5cclxuXHRcdHRoaXMuZW5kUmVjb3JkTnVtYmVyID0gdGhpcy5jdXJyZW50UmVjb3JkTnVtYmVyICsgdGhpcy5yZWNvcmRzUGVyUGFnZSAtIDE7XHJcblx0XHRpZiAodGhpcy5lbmRSZWNvcmROdW1iZXIgPiB0aGlzLnRvdGFsUmVjb3JkcylcclxuXHRcdFx0dGhpcy5lbmRSZWNvcmROdW1iZXIgPSB0aGlzLnRvdGFsUmVjb3JkcztcclxuXHJcblx0XHR0aGlzLnByZURpc3BsYXlQYWdlTnVtYmVycyA9IFtdO1xyXG5cdFx0dGhpcy5kaXNwbGF5UGFnZU51bWJlcnMgPSBbXTtcclxuXHRcdHRoaXMucG9zdERpc3BsYXlQYWdlTnVtYmVycyA9IFtdO1xyXG5cclxuXHRcdC8vIDEwIGlzIGEgc3BlY2lhbCBjYXNlIHdoZXJlIHdlIHdhbnQgdG8ganVzdCBzaG93IGFsbCAxMFxyXG5cdFx0aWYgKHRoaXMudG90YWxQYWdlcyA9PT0gMTApIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPD0gMTA7IGkrKykge1xyXG5cdFx0XHRcdHRoaXMuZGlzcGxheVBhZ2VOdW1iZXJzLnB1c2goaSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRjb25zdCBwcmVEaXNwbGF5UGFnZVRvdGFsID0gTWF0aC5mbG9vcih0aGlzLnBhZ2VOdW1iZXIgLyAxMCk7XHJcblx0XHRcdGlmIChwcmVEaXNwbGF5UGFnZVRvdGFsID4gMCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcHJlRGlzcGxheVBhZ2VUb3RhbDsgaSsrKSB7XHJcblx0XHRcdFx0XHRpZiAoaSA9PT0gMClcclxuXHRcdFx0XHRcdFx0dGhpcy5wcmVEaXNwbGF5UGFnZU51bWJlcnMucHVzaCgxKTtcclxuXHRcdFx0XHRcdGVsc2VcclxuXHRcdFx0XHRcdFx0dGhpcy5wcmVEaXNwbGF5UGFnZU51bWJlcnMucHVzaChpICogMTApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0bGV0IGN1cnJlbnREaXNwbGF5UGFnZVN0YXJ0ID0gcHJlRGlzcGxheVBhZ2VUb3RhbCAqIDEwO1xyXG5cdFx0XHRsZXQgY3VycmVudERpc3BsYXlQYWdlRW5kID0gY3VycmVudERpc3BsYXlQYWdlU3RhcnQgKyA5O1xyXG5cdFx0XHRpZiAoY3VycmVudERpc3BsYXlQYWdlRW5kID4gdGhpcy50b3RhbFBhZ2VzKVxyXG5cdFx0XHRcdGN1cnJlbnREaXNwbGF5UGFnZUVuZCA9IHRoaXMudG90YWxQYWdlcztcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSBjdXJyZW50RGlzcGxheVBhZ2VTdGFydDsgaSA8PSBjdXJyZW50RGlzcGxheVBhZ2VFbmQ7IGkrKykge1xyXG5cdFx0XHRcdGlmIChpID4gMClcclxuXHRcdFx0XHRcdHRoaXMuZGlzcGxheVBhZ2VOdW1iZXJzLnB1c2goaSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGNvbnN0IHBvc3REaXNwbGF5UGFnZVRvdGFsID0gTWF0aC5mbG9vcigodGhpcy50b3RhbFBhZ2VzIC0gcHJlRGlzcGxheVBhZ2VUb3RhbCArIDEwKSAvIDEwKTtcclxuXHRcdFx0aWYgKHBvc3REaXNwbGF5UGFnZVRvdGFsID4gMCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSBwcmVEaXNwbGF5UGFnZVRvdGFsICsgMTsgaSA8IHBvc3REaXNwbGF5UGFnZVRvdGFsOyBpKyspXHJcblx0XHRcdFx0XHR0aGlzLnBvc3REaXNwbGF5UGFnZU51bWJlcnMucHVzaChpICogMTApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5wcmVEaXNwbGF5UGFnZU51bWJlcnMubGVuZ3RoID4gMSkge1xyXG5cdFx0XHRcdHRoaXMucHJlRGlzcGxheUVsbGlwc2VzID0gdHJ1ZTtcclxuXHRcdFx0XHR0aGlzLnByZURpc3BsYXlQYWdlTnVtYmVycyA9IHRoaXMucHJlRGlzcGxheVBhZ2VOdW1iZXJzLnNsaWNlKHRoaXMucHJlRGlzcGxheVBhZ2VOdW1iZXJzLmxlbmd0aCAtIDEsIHRoaXMucHJlRGlzcGxheVBhZ2VOdW1iZXJzLmxlbmd0aCk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMucG9zdERpc3BsYXlQYWdlTnVtYmVycy5sZW5ndGggPiAxKSB7XHJcblx0XHRcdFx0dGhpcy5wb3N0RGlzcGxheUVsbGlwc2VzID0gdHJ1ZTtcclxuXHRcdFx0XHR0aGlzLnBvc3REaXNwbGF5UGFnZU51bWJlcnMgPSB0aGlzLnBvc3REaXNwbGF5UGFnZU51bWJlcnMuc2xpY2UoMCwgMSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLy8vIElmIHdlIGNhbiBzaG93IEFMTCB0aGUgcGFnZXMgd2l0aG91dCB0aGUgLi4uLCB0aGVuIGRvIGl0XHJcblx0XHQvL2lmICh0aGlzLnRvdGFsUGFnZXMgPD0gKHRoaXMuYWRqYWNlbnQgKiAyKSkge1xyXG5cdFx0Ly9cdHRoaXMuYWxsRGlzcGxheVBhZ2VOdW1iZXJzID0gW107XHJcblxyXG5cdFx0Ly9cdHRoaXMuc2hvd0VsbGlwc2VzID0gZmFsc2U7XHJcblxyXG5cdFx0Ly9cdGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMudG90YWxQYWdlczsgaSsrKSB7XHJcblx0XHQvL1x0XHR0aGlzLmFsbERpc3BsYXlQYWdlTnVtYmVycy5wdXNoKGkpO1xyXG5cdFx0Ly9cdH1cclxuXHRcdC8vfVxyXG5cdFx0Ly9lbHNlIHtcclxuXHRcdC8vXHR0aGlzLnNob3dFbGxpcHNlcyA9IHRydWU7XHJcblxyXG5cdFx0Ly9cdGlmICh0aGlzLmFsbERpc3BsYXlQYWdlTnVtYmVycy5pbmRleE9mKHRoaXMucGFnZU51bWJlcikgPCAwKSB7XHJcblx0XHQvL1x0XHR0aGlzLmFsbERpc3BsYXlQYWdlTnVtYmVycyA9IFtdO1xyXG5cclxuXHRcdC8vXHRcdGZvciAobGV0IGkgPSB0aGlzLnBhZ2VOdW1iZXI7IGkgPCB0aGlzLnBhZ2VOdW1iZXIgKyB0aGlzLmFkamFjZW50OyBpKyspXHJcblx0XHQvL1x0XHRcdHRoaXMuYWxsRGlzcGxheVBhZ2VOdW1iZXJzLnB1c2goaSk7XHJcblxyXG5cdFx0Ly9cdFx0dGhpcy5hbGxEaXNwbGF5UGFnZU51bWJlcnMucHVzaCgtMSlcclxuXHJcblx0XHQvL1x0XHRmb3IgKGxldCBpID0gdGhpcy50b3RhbFBhZ2VzIC0gdGhpcy5hZGphY2VudDsgaSA8IHRoaXMudG90YWxQYWdlczsgaSsrKVxyXG5cdFx0Ly9cdFx0XHR0aGlzLmFsbERpc3BsYXlQYWdlTnVtYmVycy5wdXNoKGkpO1xyXG5cdFx0Ly9cdH1cclxuXHRcdC8vfVxyXG5cdH1cclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwic2xpY2stcGFnaW5nXCI+XHJcblx0PGRpdiBjbGFzcz1cIm1sLTIgZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcblx0XHQ8dWwgY2xhc3M9XCJwYWdpbmF0aW9uIG0tMFwiPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiIXRvdGFsUmVjb3JkcyB8fCBwYWdlTnVtYmVyID09PSAxXCI+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxcHg7XCI+PGkgY2xhc3M9XCJmYXIgZmEtYW5nbGUtbGVmdFwiPjwvaT48L2J1dHRvbj48L2xpPlxyXG5cdFx0XHQ8bGkgKm5nSWY9XCJwYWdlTnVtYmVyID4gMTBcIiBjbGFzcz1cInBhZ2UtaXRlbVwiPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cImZpcnN0KClcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxcHg7XCI+MTwvYnV0dG9uPjwvbGk+XHJcblx0XHRcdDxsaSAqbmdJZj1cInByZURpc3BsYXlFbGxpcHNlcyA9PT0gdHJ1ZVwiIGNsYXNzPVwicGFnZS1pdGVtXCI+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwicHJldmlvdXNTZXQoKVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDFweDtcIj48aSBzdHlsZT1cImxpbmUtaGVpZ2h0OiAuOHJlbTsgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcIiBjbGFzcz1cImZhciBmYS1lbGxpcHNpcy1oXCI+PC9pPjwvYnV0dG9uPjwvbGk+XHJcblxyXG5cdFx0XHQ8bGkgKm5nSWY9XCJ0b3RhbFBhZ2VzID4gMTBcIiBjbGFzcz1cInBhZ2UtaXRlbVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDJweDtcIj48L2xpPlxyXG5cclxuXHRcdFx0PGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgKm5nRm9yPVwibGV0IGRpc3BsYXlQYWdlTnVtYmVyIG9mIHByZURpc3BsYXlQYWdlTnVtYmVyc1wiPlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicGFnZS1saW5rXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDJweDtcIiAoY2xpY2spPVwic2VsZWN0UGFnZShkaXNwbGF5UGFnZU51bWJlcilcIj57e2Rpc3BsYXlQYWdlTnVtYmVyfX08L2J1dHRvbj5cclxuXHRcdFx0PC9saT5cclxuXHJcblx0XHRcdDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwicGFnZU51bWJlciA9PT0gZGlzcGxheVBhZ2VOdW1iZXJcIiAqbmdGb3I9XCJsZXQgZGlzcGxheVBhZ2VOdW1iZXIgb2YgZGlzcGxheVBhZ2VOdW1iZXJzXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiAqbmdJZj1cImRpc3BsYXlQYWdlTnVtYmVyICE9PSAtMVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJzZWxlY3RQYWdlKGRpc3BsYXlQYWdlTnVtYmVyKVwiPnt7ZGlzcGxheVBhZ2VOdW1iZXJ9fTwvYnV0dG9uPlxyXG5cdFx0XHRcdDxkaXYgKm5nSWY9XCJkaXNwbGF5UGFnZU51bWJlciA9PT0gLTFcIiBjbGFzcz1cInBhZ2UtbGluayBlbGxpcHNlcyBwbC0xIHByLTEgdGV4dC13aGl0ZSBiZy1wcmltYXJ5XCI+PGkgY2xhc3M9XCJmYXIgZmEtZWxsaXBzaXMtaFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1x0dG9wOiA0cHg7XCI+PC9pPjwvZGl2PlxyXG5cdFx0XHQ8L2xpPlxyXG5cclxuXHRcdFx0PGxpICpuZ0lmPVwicG9zdERpc3BsYXlQYWdlTnVtYmVycy5sZW5ndGggPiAwXCIgY2xhc3M9XCJwYWdlLWl0ZW1cIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHg7XCI+PC9saT5cclxuXHJcblx0XHRcdDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiICpuZ0Zvcj1cImxldCBkaXNwbGF5UGFnZU51bWJlciBvZiBwb3N0RGlzcGxheVBhZ2VOdW1iZXJzXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwYWdlLWxpbmtcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMnB4O1wiIChjbGljayk9XCJzZWxlY3RQYWdlKGRpc3BsYXlQYWdlTnVtYmVyKVwiPnt7ZGlzcGxheVBhZ2VOdW1iZXJ9fTwvYnV0dG9uPlxyXG5cdFx0XHQ8L2xpPlxyXG5cclxuXHRcdFx0PGxpICpuZ0lmPVwicG9zdERpc3BsYXlFbGxpcHNlcyA9PT0gdHJ1ZVwiIGNsYXNzPVwicGFnZS1pdGVtXCI+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwibmV4dFNldCgpXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDJweDtcIj48aSBzdHlsZT1cImxpbmUtaGVpZ2h0OiAuOHJlbTsgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcIiBjbGFzcz1cImZhciBmYS1lbGxpcHNpcy1oXCI+PC9pPjwvYnV0dG9uPjwvbGk+XHJcblx0XHRcdDxsaSAqbmdJZj1cInRvdGFsUGFnZXMgPiAxMFwiIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cInBhZ2VOdW1iZXIgPT09IHRvdGFsUGFnZXNcIj48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJsYXN0KClcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMnB4O1wiPnt7dG90YWxQYWdlc319PC9idXR0b24+PC9saT5cclxuXHRcdFx0PGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cIiF0b3RhbFJlY29yZHMgfHwgcGFnZU51bWJlciA9PT0gdG90YWxQYWdlc1wiPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cIm5leHRQYWdlKClcIj48aSBjbGFzcz1cImZhciBmYS1hbmdsZS1yaWdodFwiPjwvaT48L2J1dHRvbj48L2xpPlxyXG5cdFx0PC91bD5cclxuXHRcdDxkaXYgKm5nSWY9XCJ0b3RhbFJlY29yZHMgPD0gMFwiIHN0eWxlPVwiZm9udC1zaXplOiAuOGVtOyBsaW5lLWhlaWdodDogMS40ZW07XCI+Jm5ic3A7PC9kaXY+XHJcblx0XHQ8ZGl2ICpuZ0lmPVwidG90YWxSZWNvcmRzID4gMFwiIHN0eWxlPVwiZm9udC1zaXplOiAuOGVtOyBsaW5lLWhlaWdodDogMS40ZW07XCI+XHJcblx0XHRcdFNob3dpbmcge3tjdXJyZW50UmVjb3JkTnVtYmVyfX0te3tlbmRSZWNvcmROdW1iZXJ9fSBvZiB7e3RvdGFsUmVjb3Jkc319XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==