slick-components 5.0.28 → 17.0.2

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 (303) hide show
  1. package/{esm2020 → esm2022}/public-api.mjs +44 -44
  2. package/{esm2020 → esm2022}/slick-accordion/slick-accordion-item-header.component.mjs +14 -14
  3. package/esm2022/slick-accordion/slick-accordion-item.component.mjs +92 -0
  4. package/{esm2020 → esm2022}/slick-accordion/slick-accordion.component.mjs +80 -80
  5. package/{esm2020 → esm2022}/slick-accordion/slick-accordion.module.mjs +23 -23
  6. package/{esm2020 → esm2022}/slick-auto-complete/slick-auto-complete-list-item-template.directive.mjs +22 -22
  7. package/esm2022/slick-auto-complete/slick-auto-complete.component.mjs +388 -0
  8. package/{esm2020 → esm2022}/slick-auto-complete/slick-auto-complete.module.mjs +25 -25
  9. package/esm2022/slick-button-spinner/slick-button-spinner.component.mjs +175 -0
  10. package/{esm2020 → esm2022}/slick-button-spinner/slick-button-spinner.module.mjs +19 -19
  11. package/esm2022/slick-calendar/slick-calendar.component.mjs +271 -0
  12. package/{esm2020 → esm2022}/slick-calendar/slick-calendar.module.mjs +19 -19
  13. package/{esm2020 → esm2022}/slick-card/slick-card-header.component.mjs +14 -14
  14. package/esm2022/slick-card/slick-card.component.mjs +42 -0
  15. package/{esm2020 → esm2022}/slick-card/slick-card.module.mjs +20 -20
  16. package/{esm2020 → esm2022}/slick-components.mjs +4 -4
  17. package/{esm2020 → esm2022}/slick-confirm-dialog/slick-confirm-dialog.component.mjs +65 -65
  18. package/{esm2020 → esm2022}/slick-confirm-dialog/slick-confirm-dialog.module.mjs +20 -20
  19. package/{esm2020 → esm2022}/slick-container/slick-container-body.component.mjs +24 -24
  20. package/{esm2020 → esm2022}/slick-container/slick-container-footer.component.mjs +20 -20
  21. package/{esm2020 → esm2022}/slick-container/slick-container-header.component.mjs +20 -20
  22. package/{esm2020 → esm2022}/slick-container/slick-container.component.mjs +21 -21
  23. package/{esm2020 → esm2022}/slick-container/slick-container.module.mjs +25 -25
  24. package/{esm2020 → esm2022}/slick-context-menu/slick-context-menu-item.component.mjs +14 -14
  25. package/esm2022/slick-context-menu/slick-context-menu.component.mjs +48 -0
  26. package/{esm2020 → esm2022}/slick-context-menu/slick-context-menu.module.mjs +20 -20
  27. package/{esm2020 → esm2022}/slick-currency-mask/slick-currency-mask-options.model.mjs +11 -11
  28. package/esm2022/slick-currency-mask/slick-currency-mask.directive.mjs +233 -0
  29. package/{esm2020 → esm2022}/slick-currency-mask/slick-currency-mask.module.mjs +19 -19
  30. package/esm2022/slick-date-picker/slick-date-picker.component.mjs +278 -0
  31. package/{esm2020 → esm2022}/slick-date-picker/slick-date-picker.module.mjs +21 -21
  32. package/{esm2020 → esm2022}/slick-dialog/slick-dialog-footer.component.mjs +24 -24
  33. package/esm2022/slick-dialog/slick-dialog.component.mjs +294 -0
  34. package/{esm2020 → esm2022}/slick-dialog/slick-dialog.module.mjs +23 -23
  35. package/esm2022/slick-dialog/slick-dialog.service.mjs +68 -0
  36. package/{esm2020 → esm2022}/slick-drag-drop/slick-drag-drop.directive.mjs +13 -13
  37. package/{esm2020 → esm2022}/slick-drag-drop/slick-drag-drop.module.mjs +21 -21
  38. package/{esm2020 → esm2022}/slick-drag-drop/slick-draggable.directive.mjs +13 -13
  39. package/{esm2020 → esm2022}/slick-drop-down/slick-drop-down-button.model.mjs +7 -7
  40. package/esm2022/slick-drop-down/slick-drop-down.component.mjs +447 -0
  41. package/{esm2020 → esm2022}/slick-drop-down/slick-drop-down.module.mjs +24 -24
  42. package/esm2022/slick-drop-down/slick-drop-down.service.mjs +55 -0
  43. package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list-grab.directive.mjs +18 -18
  44. package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list-item.directive.mjs +18 -18
  45. package/esm2022/slick-drop-list/slick-drop-list.directive.mjs +215 -0
  46. package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list.module.mjs +23 -23
  47. package/{esm2020 → esm2022}/slick-email-viewer/slick-email-viewer-dialog.component.mjs +62 -62
  48. package/esm2022/slick-email-viewer/slick-email-viewer.component.mjs +42 -0
  49. package/{esm2020 → esm2022}/slick-email-viewer/slick-email-viewer.module.mjs +26 -26
  50. package/{esm2020 → esm2022}/slick-emailer/slick-emailer-address.model.mjs +2 -2
  51. package/esm2022/slick-emailer/slick-emailer-dialog.component.mjs +153 -0
  52. package/esm2022/slick-emailer/slick-emailer.component.mjs +235 -0
  53. package/{esm2020 → esm2022}/slick-emailer/slick-emailer.model.mjs +2 -2
  54. package/{esm2020 → esm2022}/slick-emailer/slick-emailer.module.mjs +29 -29
  55. package/esm2022/slick-file-drop/slick-file-drop.component.mjs +156 -0
  56. package/{esm2020 → esm2022}/slick-file-drop/slick-file-drop.module.mjs +20 -20
  57. package/esm2022/slick-file-list/slick-file-list-item.component.mjs +190 -0
  58. package/esm2022/slick-file-list/slick-file-list.component.mjs +130 -0
  59. package/{esm2020 → esm2022}/slick-file-list/slick-file-list.module.mjs +23 -23
  60. package/{esm2020 → esm2022}/slick-file-model/slick-file.model.mjs +2 -2
  61. package/esm2022/slick-google-address-search/slick-google-address-search.directive.mjs +78 -0
  62. package/{esm2020 → esm2022}/slick-google-address-search/slick-google-address-search.module.mjs +19 -19
  63. package/esm2022/slick-google-map/slick-google-map-dialog.component.mjs +50 -0
  64. package/esm2022/slick-google-map/slick-google-map.component.mjs +48 -0
  65. package/{esm2020 → esm2022}/slick-google-map/slick-google-map.module.mjs +22 -22
  66. package/{esm2020 → esm2022}/slick-grid/slick-grid-column-template.directive.mjs +19 -19
  67. package/{esm2020 → esm2022}/slick-grid/slick-grid-column.model.mjs +66 -66
  68. package/{esm2020 → esm2022}/slick-grid/slick-grid-favorite.model.mjs +2 -2
  69. package/{esm2020 → esm2022}/slick-grid/slick-grid-request.model.mjs +2 -2
  70. package/{esm2020 → esm2022}/slick-grid/slick-grid-response.model.mjs +2 -2
  71. package/{esm2020 → esm2022}/slick-grid/slick-grid-sanitize.pipe.mjs +20 -20
  72. package/esm2022/slick-grid/slick-grid.component.mjs +793 -0
  73. package/{esm2020 → esm2022}/slick-grid/slick-grid.module.mjs +43 -43
  74. package/{esm2020 → esm2022}/slick-grid/slick-grid.options.mjs +11 -11
  75. package/esm2022/slick-grid/slick-grid.service.mjs +66 -0
  76. package/esm2022/slick-multi-select/slick-multi-select.component.mjs +415 -0
  77. package/{esm2020 → esm2022}/slick-multi-select/slick-multi-select.module.mjs +20 -20
  78. package/esm2022/slick-multi-select/slick-multi-select.service.mjs +78 -0
  79. package/esm2022/slick-ordered-list/slick-ordered-list.component.mjs +200 -0
  80. package/{esm2020 → esm2022}/slick-ordered-list/slick-ordered-list.module.mjs +20 -20
  81. package/esm2022/slick-paging/slick-paging.component.mjs +185 -0
  82. package/{esm2020 → esm2022}/slick-paging/slick-paging.module.mjs +19 -19
  83. package/esm2022/slick-photo-gallery/slick-photo-gallery.component.mjs +98 -0
  84. package/{esm2020 → esm2022}/slick-photo-gallery/slick-photo-gallery.model.mjs +2 -2
  85. package/{esm2020 → esm2022}/slick-photo-gallery/slick-photo-gallery.module.mjs +21 -21
  86. package/{esm2020 → esm2022}/slick-pick-list/slick-pick-list.component.mjs +84 -84
  87. package/{esm2020 → esm2022}/slick-pick-list/slick-pick-list.module.mjs +20 -20
  88. package/esm2022/slick-popover/slick-popover.component.mjs +204 -0
  89. package/{esm2020 → esm2022}/slick-popover/slick-popover.module.mjs +19 -19
  90. package/esm2022/slick-profile-picture/slick-profile-picture.component.mjs +267 -0
  91. package/{esm2020 → esm2022}/slick-profile-picture/slick-profile-picture.module.mjs +20 -20
  92. package/{esm2020 → esm2022}/slick-progress-bar/slick-progress-bar.module.mjs +18 -18
  93. package/esm2022/slick-progress-bar/slick-progress-bar.service.mjs +53 -0
  94. package/{esm2020 → esm2022}/slick-screen-blocker/slick-screen-blocker.module.mjs +18 -18
  95. package/esm2022/slick-screen-blocker/slick-screen-blocker.service.mjs +83 -0
  96. package/esm2022/slick-search-bar/slick-search-bar.component.mjs +130 -0
  97. package/{esm2020 → esm2022}/slick-search-bar/slick-search-bar.module.mjs +20 -20
  98. package/{esm2020 → esm2022}/slick-slider/slick-slider-tick.model.mjs +2 -2
  99. package/esm2022/slick-slider/slick-slider.component.mjs +90 -0
  100. package/{esm2020 → esm2022}/slick-slider/slick-slider.module.mjs +20 -20
  101. package/{esm2020 → esm2022}/slick-split-screen/slick-screen-split-left-content.component.mjs +15 -15
  102. package/{esm2020 → esm2022}/slick-split-screen/slick-screen-split-right-content.component.mjs +15 -15
  103. package/esm2022/slick-split-screen/slick-split-screen.component.mjs +159 -0
  104. package/{esm2020 → esm2022}/slick-split-screen/slick-split-screen.module.mjs +21 -21
  105. package/esm2022/slick-star-rating/slick-star-rating.component.mjs +91 -0
  106. package/{esm2020 → esm2022}/slick-star-rating/slick-star-rating.module.mjs +21 -21
  107. package/{esm2020 → esm2022}/slick-tabs/slick-tab-header.component.mjs +28 -28
  108. package/esm2022/slick-tabs/slick-tab.component.mjs +63 -0
  109. package/{esm2020 → esm2022}/slick-tabs/slick-tab.model.mjs +2 -2
  110. package/esm2022/slick-tabs/slick-tabs.component.mjs +107 -0
  111. package/{esm2020 → esm2022}/slick-tabs/slick-tabs.module.mjs +23 -23
  112. package/{esm2020 → esm2022}/slick-toast/slick-toast.module.mjs +18 -18
  113. package/esm2022/slick-toast/slick-toast.service.mjs +88 -0
  114. package/esm2022/slick-tree-view/slick-tree-node.model.mjs +18 -0
  115. package/esm2022/slick-tree-view/slick-tree-view.component.mjs +293 -0
  116. package/{esm2020 → esm2022}/slick-tree-view/slick-tree-view.module.mjs +22 -22
  117. package/esm2022/slick-type-ahead/slick-type-ahead.directive.mjs +164 -0
  118. package/{esm2020 → esm2022}/slick-type-ahead/slick-type-ahead.module.mjs +18 -18
  119. package/esm2022/slick-validation-indicator/slick-validation-indicator.directive.mjs +66 -0
  120. package/{esm2020 → esm2022}/slick-validation-indicator/slick-validation-indicator.module.mjs +19 -19
  121. package/esm2022/utils/slick-function-lock.service.mjs +55 -0
  122. package/esm2022/utils/slick-init.service.mjs +49 -0
  123. package/{esm2020 → esm2022}/utils/slick-log.service.mjs +23 -23
  124. package/{esm2020 → esm2022}/utils/slick-sleep.service.mjs +14 -14
  125. package/esm2022/utils/slick-utils.service.mjs +247 -0
  126. package/{fesm2020 → fesm2022}/slick-components.mjs +8495 -8495
  127. package/fesm2022/slick-components.mjs.map +1 -0
  128. package/index.d.ts +5 -5
  129. package/package.json +11 -17
  130. package/public-api.d.ts +41 -41
  131. package/slick-accordion/slick-accordion-item-header.component.d.ts +5 -5
  132. package/slick-accordion/slick-accordion-item.component.d.ts +24 -24
  133. package/slick-accordion/slick-accordion.component.d.ts +22 -22
  134. package/slick-accordion/slick-accordion.module.d.ts +16 -16
  135. package/slick-auto-complete/slick-auto-complete-list-item-template.directive.d.ts +10 -10
  136. package/slick-auto-complete/slick-auto-complete.component.d.ts +60 -60
  137. package/slick-auto-complete/slick-auto-complete.module.d.ts +15 -15
  138. package/slick-button-spinner/slick-button-spinner.component.d.ts +28 -28
  139. package/slick-button-spinner/slick-button-spinner.module.d.ts +10 -10
  140. package/slick-calendar/slick-calendar.component.d.ts +53 -53
  141. package/slick-calendar/slick-calendar.module.d.ts +10 -10
  142. package/slick-card/slick-card-header.component.d.ts +5 -5
  143. package/slick-card/slick-card.component.d.ts +13 -13
  144. package/slick-card/slick-card.module.d.ts +12 -12
  145. package/slick-confirm-dialog/slick-confirm-dialog.component.d.ts +26 -26
  146. package/slick-confirm-dialog/slick-confirm-dialog.module.d.ts +11 -11
  147. package/slick-container/slick-container-body.component.d.ts +7 -7
  148. package/slick-container/slick-container-footer.component.d.ts +6 -6
  149. package/slick-container/slick-container-header.component.d.ts +6 -6
  150. package/slick-container/slick-container.component.d.ts +8 -8
  151. package/slick-container/slick-container.module.d.ts +19 -19
  152. package/slick-context-menu/slick-context-menu-item.component.d.ts +5 -5
  153. package/slick-context-menu/slick-context-menu.component.d.ts +13 -13
  154. package/slick-context-menu/slick-context-menu.module.d.ts +12 -12
  155. package/slick-currency-mask/slick-currency-mask-options.model.d.ts +10 -10
  156. package/slick-currency-mask/slick-currency-mask.directive.d.ts +29 -29
  157. package/slick-currency-mask/slick-currency-mask.module.d.ts +10 -10
  158. package/slick-date-picker/slick-date-picker.component.d.ts +45 -45
  159. package/slick-date-picker/slick-date-picker.module.d.ts +12 -12
  160. package/slick-dialog/slick-dialog-footer.component.d.ts +7 -7
  161. package/slick-dialog/slick-dialog.component.d.ts +56 -56
  162. package/slick-dialog/slick-dialog.module.d.ts +13 -13
  163. package/slick-dialog/slick-dialog.service.d.ts +17 -17
  164. package/slick-drag-drop/slick-drag-drop.directive.d.ts +5 -5
  165. package/slick-drag-drop/slick-drag-drop.module.d.ts +13 -13
  166. package/slick-drag-drop/slick-draggable.directive.d.ts +5 -5
  167. package/slick-drop-down/slick-drop-down-button.model.d.ts +13 -13
  168. package/slick-drop-down/slick-drop-down.component.d.ts +78 -78
  169. package/slick-drop-down/slick-drop-down.module.d.ts +14 -14
  170. package/slick-drop-down/slick-drop-down.service.d.ts +12 -12
  171. package/slick-drop-list/slick-drop-list-grab.directive.d.ts +7 -7
  172. package/slick-drop-list/slick-drop-list-item.directive.d.ts +7 -7
  173. package/slick-drop-list/slick-drop-list.directive.d.ts +33 -33
  174. package/slick-drop-list/slick-drop-list.module.d.ts +16 -16
  175. package/slick-email-viewer/slick-email-viewer-dialog.component.d.ts +19 -19
  176. package/slick-email-viewer/slick-email-viewer.component.d.ts +13 -13
  177. package/slick-email-viewer/slick-email-viewer.module.d.ts +18 -18
  178. package/slick-emailer/slick-emailer-address.model.d.ts +10 -10
  179. package/slick-emailer/slick-emailer-dialog.component.d.ts +33 -33
  180. package/slick-emailer/slick-emailer.component.d.ts +50 -50
  181. package/slick-emailer/slick-emailer.model.d.ts +16 -16
  182. package/slick-emailer/slick-emailer.module.d.ts +21 -21
  183. package/slick-file-drop/slick-file-drop.component.d.ts +25 -25
  184. package/slick-file-drop/slick-file-drop.module.d.ts +11 -11
  185. package/slick-file-list/slick-file-list-item.component.d.ts +37 -37
  186. package/slick-file-list/slick-file-list.component.d.ts +31 -31
  187. package/slick-file-list/slick-file-list.module.d.ts +14 -14
  188. package/slick-file-model/slick-file.model.d.ts +28 -28
  189. package/slick-google-address-search/slick-google-address-search.directive.d.ts +16 -17
  190. package/slick-google-address-search/slick-google-address-search.module.d.ts +10 -10
  191. package/slick-google-map/slick-google-map-dialog.component.d.ts +15 -16
  192. package/slick-google-map/slick-google-map.component.d.ts +17 -18
  193. package/slick-google-map/slick-google-map.module.d.ts +14 -14
  194. package/slick-grid/slick-grid-column-template.directive.d.ts +9 -9
  195. package/slick-grid/slick-grid-column.model.d.ts +64 -64
  196. package/slick-grid/slick-grid-favorite.model.d.ts +9 -9
  197. package/slick-grid/slick-grid-request.model.d.ts +33 -33
  198. package/slick-grid/slick-grid-response.model.d.ts +8 -8
  199. package/slick-grid/slick-grid-sanitize.pipe.d.ts +10 -10
  200. package/slick-grid/slick-grid.component.d.ts +119 -119
  201. package/slick-grid/slick-grid.module.d.ts +32 -32
  202. package/slick-grid/slick-grid.options.d.ts +35 -35
  203. package/slick-grid/slick-grid.service.d.ts +12 -12
  204. package/slick-multi-select/slick-multi-select.component.d.ts +69 -69
  205. package/slick-multi-select/slick-multi-select.module.d.ts +11 -11
  206. package/slick-multi-select/slick-multi-select.service.d.ts +9 -9
  207. package/slick-ordered-list/slick-ordered-list.component.d.ts +28 -28
  208. package/slick-ordered-list/slick-ordered-list.module.d.ts +11 -11
  209. package/slick-paging/slick-paging.component.d.ts +31 -31
  210. package/slick-paging/slick-paging.module.d.ts +10 -10
  211. package/slick-photo-gallery/slick-photo-gallery.component.d.ts +26 -26
  212. package/slick-photo-gallery/slick-photo-gallery.model.d.ts +8 -8
  213. package/slick-photo-gallery/slick-photo-gallery.module.d.ts +12 -12
  214. package/slick-pick-list/slick-pick-list.component.d.ts +24 -24
  215. package/slick-pick-list/slick-pick-list.module.d.ts +11 -11
  216. package/slick-popover/slick-popover.component.d.ts +39 -39
  217. package/slick-popover/slick-popover.module.d.ts +10 -10
  218. package/slick-profile-picture/slick-profile-picture.component.d.ts +29 -29
  219. package/slick-profile-picture/slick-profile-picture.module.d.ts +11 -11
  220. package/slick-progress-bar/slick-progress-bar.module.d.ts +9 -9
  221. package/slick-progress-bar/slick-progress-bar.service.d.ts +12 -12
  222. package/slick-screen-blocker/slick-screen-blocker.module.d.ts +9 -9
  223. package/slick-screen-blocker/slick-screen-blocker.service.d.ts +16 -16
  224. package/slick-search-bar/slick-search-bar.component.d.ts +37 -37
  225. package/slick-search-bar/slick-search-bar.module.d.ts +11 -11
  226. package/slick-slider/slick-slider-tick.model.d.ts +10 -10
  227. package/slick-slider/slick-slider.component.d.ts +29 -29
  228. package/slick-slider/slick-slider.module.d.ts +11 -11
  229. package/slick-split-screen/slick-screen-split-left-content.component.d.ts +6 -6
  230. package/slick-split-screen/slick-screen-split-right-content.component.d.ts +6 -6
  231. package/slick-split-screen/slick-split-screen.component.d.ts +40 -40
  232. package/slick-split-screen/slick-split-screen.module.d.ts +14 -14
  233. package/slick-star-rating/slick-star-rating.component.d.ts +28 -28
  234. package/slick-star-rating/slick-star-rating.module.d.ts +12 -12
  235. package/slick-tabs/slick-tab-header.component.d.ts +12 -12
  236. package/slick-tabs/slick-tab.component.d.ts +22 -22
  237. package/slick-tabs/slick-tab.model.d.ts +10 -10
  238. package/slick-tabs/slick-tabs.component.d.ts +25 -25
  239. package/slick-tabs/slick-tabs.module.d.ts +16 -16
  240. package/slick-toast/slick-toast.module.d.ts +9 -9
  241. package/slick-toast/slick-toast.service.d.ts +16 -16
  242. package/slick-tree-view/slick-tree-node.model.d.ts +30 -30
  243. package/slick-tree-view/slick-tree-view.component.d.ts +62 -62
  244. package/slick-tree-view/slick-tree-view.module.d.ts +13 -13
  245. package/slick-type-ahead/slick-type-ahead.directive.d.ts +25 -25
  246. package/slick-type-ahead/slick-type-ahead.module.d.ts +9 -9
  247. package/slick-validation-indicator/slick-validation-indicator.directive.d.ts +22 -22
  248. package/slick-validation-indicator/slick-validation-indicator.module.d.ts +10 -10
  249. package/utils/slick-function-lock.service.d.ts +9 -9
  250. package/utils/slick-init.service.d.ts +21 -21
  251. package/utils/slick-log.service.d.ts +9 -9
  252. package/utils/slick-sleep.service.d.ts +6 -6
  253. package/utils/slick-utils.service.d.ts +24 -24
  254. package/esm2020/slick-accordion/slick-accordion-item.component.mjs +0 -92
  255. package/esm2020/slick-auto-complete/slick-auto-complete.component.mjs +0 -388
  256. package/esm2020/slick-button-spinner/slick-button-spinner.component.mjs +0 -175
  257. package/esm2020/slick-calendar/slick-calendar.component.mjs +0 -271
  258. package/esm2020/slick-card/slick-card.component.mjs +0 -42
  259. package/esm2020/slick-context-menu/slick-context-menu.component.mjs +0 -48
  260. package/esm2020/slick-currency-mask/slick-currency-mask.directive.mjs +0 -233
  261. package/esm2020/slick-date-picker/slick-date-picker.component.mjs +0 -278
  262. package/esm2020/slick-dialog/slick-dialog.component.mjs +0 -294
  263. package/esm2020/slick-dialog/slick-dialog.service.mjs +0 -68
  264. package/esm2020/slick-drop-down/slick-drop-down.component.mjs +0 -447
  265. package/esm2020/slick-drop-down/slick-drop-down.service.mjs +0 -55
  266. package/esm2020/slick-drop-list/slick-drop-list.directive.mjs +0 -215
  267. package/esm2020/slick-email-viewer/slick-email-viewer.component.mjs +0 -42
  268. package/esm2020/slick-emailer/slick-emailer-dialog.component.mjs +0 -153
  269. package/esm2020/slick-emailer/slick-emailer.component.mjs +0 -235
  270. package/esm2020/slick-file-drop/slick-file-drop.component.mjs +0 -156
  271. package/esm2020/slick-file-list/slick-file-list-item.component.mjs +0 -190
  272. package/esm2020/slick-file-list/slick-file-list.component.mjs +0 -130
  273. package/esm2020/slick-google-address-search/slick-google-address-search.directive.mjs +0 -78
  274. package/esm2020/slick-google-map/slick-google-map-dialog.component.mjs +0 -50
  275. package/esm2020/slick-google-map/slick-google-map.component.mjs +0 -48
  276. package/esm2020/slick-grid/slick-grid.component.mjs +0 -793
  277. package/esm2020/slick-grid/slick-grid.service.mjs +0 -66
  278. package/esm2020/slick-multi-select/slick-multi-select.component.mjs +0 -415
  279. package/esm2020/slick-multi-select/slick-multi-select.service.mjs +0 -78
  280. package/esm2020/slick-ordered-list/slick-ordered-list.component.mjs +0 -200
  281. package/esm2020/slick-paging/slick-paging.component.mjs +0 -185
  282. package/esm2020/slick-photo-gallery/slick-photo-gallery.component.mjs +0 -98
  283. package/esm2020/slick-popover/slick-popover.component.mjs +0 -204
  284. package/esm2020/slick-profile-picture/slick-profile-picture.component.mjs +0 -267
  285. package/esm2020/slick-progress-bar/slick-progress-bar.service.mjs +0 -53
  286. package/esm2020/slick-screen-blocker/slick-screen-blocker.service.mjs +0 -83
  287. package/esm2020/slick-search-bar/slick-search-bar.component.mjs +0 -130
  288. package/esm2020/slick-slider/slick-slider.component.mjs +0 -90
  289. package/esm2020/slick-split-screen/slick-split-screen.component.mjs +0 -159
  290. package/esm2020/slick-star-rating/slick-star-rating.component.mjs +0 -91
  291. package/esm2020/slick-tabs/slick-tab.component.mjs +0 -63
  292. package/esm2020/slick-tabs/slick-tabs.component.mjs +0 -107
  293. package/esm2020/slick-toast/slick-toast.service.mjs +0 -88
  294. package/esm2020/slick-tree-view/slick-tree-node.model.mjs +0 -18
  295. package/esm2020/slick-tree-view/slick-tree-view.component.mjs +0 -293
  296. package/esm2020/slick-type-ahead/slick-type-ahead.directive.mjs +0 -164
  297. package/esm2020/slick-validation-indicator/slick-validation-indicator.directive.mjs +0 -66
  298. package/esm2020/utils/slick-function-lock.service.mjs +0 -55
  299. package/esm2020/utils/slick-init.service.mjs +0 -49
  300. package/esm2020/utils/slick-utils.service.mjs +0 -247
  301. package/fesm2015/slick-components.mjs +0 -9084
  302. package/fesm2015/slick-components.mjs.map +0 -1
  303. package/fesm2020/slick-components.mjs.map +0 -1
@@ -1,66 +0,0 @@
1
- import { Directive, Input } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export var SlickValidationTypes;
4
- (function (SlickValidationTypes) {
5
- SlickValidationTypes[SlickValidationTypes["None"] = 0] = "None";
6
- SlickValidationTypes[SlickValidationTypes["Error"] = 1] = "Error";
7
- SlickValidationTypes[SlickValidationTypes["Warning"] = 2] = "Warning";
8
- })(SlickValidationTypes || (SlickValidationTypes = {}));
9
- export class SlickValidationIndicatorDirective {
10
- constructor(el) {
11
- this.el = el;
12
- this.validationType = SlickValidationTypes.Warning;
13
- this.bgWarningStyle = "#ffc207";
14
- this.bgDangerStyle = "#dc3545";
15
- this.bgSuccessStyle = "#28a745";
16
- this.originalBorderStyle = this.el.nativeElement.style.borderLeft;
17
- }
18
- ngOnInit() {
19
- if (this.validationType) {
20
- if (this.validationType.toString().toLowerCase() === 'warning')
21
- this.validationType = SlickValidationTypes.Warning;
22
- else if (this.validationType.toString().toLowerCase() === 'none')
23
- this.validationType = SlickValidationTypes.None;
24
- else
25
- this.validationType = SlickValidationTypes.Error;
26
- }
27
- else {
28
- this.validationType = SlickValidationTypes.None;
29
- }
30
- this.setIndicator();
31
- }
32
- ngOnChanges(changes) {
33
- this.setIndicator();
34
- }
35
- setIndicator() {
36
- if (this.validationType === SlickValidationTypes.None) {
37
- this.el.nativeElement.style.borderLeft = this.originalBorderStyle;
38
- }
39
- else {
40
- if (this.isValid) {
41
- this.el.nativeElement.style.borderLeft = "6px solid " + this.bgSuccessStyle;
42
- }
43
- else {
44
- if (this.validationType === SlickValidationTypes.Warning)
45
- this.el.nativeElement.style.borderLeft = "6px solid " + this.bgWarningStyle;
46
- else
47
- this.el.nativeElement.style.borderLeft = "6px solid " + this.bgDangerStyle;
48
- }
49
- }
50
- }
51
- }
52
- /** @nocollapse */ SlickValidationIndicatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickValidationIndicatorDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
53
- /** @nocollapse */ SlickValidationIndicatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: SlickValidationIndicatorDirective, selector: "[slick-validation-indicator]", inputs: { isValid: ["slick-validation-indicator", "isValid"], validationType: ["slickValidationType", "validationType"] }, usesOnChanges: true, ngImport: i0 });
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickValidationIndicatorDirective, decorators: [{
55
- type: Directive,
56
- args: [{
57
- selector: '[slick-validation-indicator]'
58
- }]
59
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { isValid: [{
60
- type: Input,
61
- args: ["slick-validation-indicator"]
62
- }], validationType: [{
63
- type: Input,
64
- args: ["slickValidationType"]
65
- }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stdmFsaWRhdGlvbi1pbmRpY2F0b3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stdmFsaWRhdGlvbi1pbmRpY2F0b3Ivc2xpY2stdmFsaWRhdGlvbi1pbmRpY2F0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFnRCxNQUFNLGVBQWUsQ0FBQzs7QUFFL0YsTUFBTSxDQUFOLElBQVksb0JBQTZDO0FBQXpELFdBQVksb0JBQW9CO0lBQUcsK0RBQUksQ0FBQTtJQUFFLGlFQUFLLENBQUE7SUFBRSxxRUFBTyxDQUFBO0FBQUMsQ0FBQyxFQUE3QyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBQXlCO0FBS3pELE1BQU0sT0FBTyxpQ0FBaUM7SUFVN0MsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFSSixtQkFBYyxHQUF5QixvQkFBb0IsQ0FBQyxPQUFPLENBQUM7UUFFMUYsbUJBQWMsR0FBVyxTQUFTLENBQUM7UUFDbkMsa0JBQWEsR0FBVyxTQUFTLENBQUM7UUFDbEMsbUJBQWMsR0FBVyxTQUFTLENBQUM7UUFLMUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDbkUsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBVSxJQUFJLENBQUMsY0FBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLFNBQVM7Z0JBQ3BFLElBQUksQ0FBQyxjQUFjLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDO2lCQUMvQyxJQUFVLElBQUksQ0FBQyxjQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTTtnQkFDdEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7O2dCQUVoRCxJQUFJLENBQUMsY0FBYyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQztTQUNsRDthQUNJO1lBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7U0FDaEQ7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNqQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLFlBQVk7UUFDbkIsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLG9CQUFvQixDQUFDLElBQUksRUFBRTtZQUN0RCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztTQUNsRTthQUNJO1lBQ0osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNqQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQzVFO2lCQUNJO2dCQUNKLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxvQkFBb0IsQ0FBQyxPQUFPO29CQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDOztvQkFFNUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQzthQUM1RTtTQUNEO0lBQ0YsQ0FBQzs7aUpBakRXLGlDQUFpQztxSUFBakMsaUNBQWlDOzJGQUFqQyxpQ0FBaUM7a0JBSDdDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDhCQUE4QjtpQkFDeEM7aUdBRXFDLE9BQU87c0JBQTNDLEtBQUs7dUJBQUMsNEJBQTRCO2dCQUNMLGNBQWM7c0JBQTNDLEtBQUs7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEVsZW1lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IGVudW0gU2xpY2tWYWxpZGF0aW9uVHlwZXMgeyBOb25lLCBFcnJvciwgV2FybmluZyB9XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuXHRzZWxlY3RvcjogJ1tzbGljay12YWxpZGF0aW9uLWluZGljYXRvcl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja1ZhbGlkYXRpb25JbmRpY2F0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblx0QElucHV0KFwic2xpY2stdmFsaWRhdGlvbi1pbmRpY2F0b3JcIikgaXNWYWxpZDogYm9vbGVhbjtcclxuXHRASW5wdXQoXCJzbGlja1ZhbGlkYXRpb25UeXBlXCIpIHZhbGlkYXRpb25UeXBlOiBTbGlja1ZhbGlkYXRpb25UeXBlcyA9IFNsaWNrVmFsaWRhdGlvblR5cGVzLldhcm5pbmc7XHJcblxyXG5cdHByaXZhdGUgYmdXYXJuaW5nU3R5bGU6IHN0cmluZyA9IFwiI2ZmYzIwN1wiO1xyXG5cdHByaXZhdGUgYmdEYW5nZXJTdHlsZTogc3RyaW5nID0gXCIjZGMzNTQ1XCI7XHJcblx0cHJpdmF0ZSBiZ1N1Y2Nlc3NTdHlsZTogc3RyaW5nID0gXCIjMjhhNzQ1XCI7XHJcblxyXG5cdHByaXZhdGUgb3JpZ2luYWxCb3JkZXJTdHlsZTogc3RyaW5nO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XHJcblx0XHR0aGlzLm9yaWdpbmFsQm9yZGVyU3R5bGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuYm9yZGVyTGVmdDtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0aWYgKHRoaXMudmFsaWRhdGlvblR5cGUpIHtcclxuXHRcdFx0aWYgKCg8YW55PnRoaXMudmFsaWRhdGlvblR5cGUpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ3dhcm5pbmcnKVxyXG5cdFx0XHRcdHRoaXMudmFsaWRhdGlvblR5cGUgPSBTbGlja1ZhbGlkYXRpb25UeXBlcy5XYXJuaW5nO1xyXG5cdFx0XHRlbHNlIGlmICgoPGFueT50aGlzLnZhbGlkYXRpb25UeXBlKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdub25lJylcclxuXHRcdFx0XHR0aGlzLnZhbGlkYXRpb25UeXBlID0gU2xpY2tWYWxpZGF0aW9uVHlwZXMuTm9uZTtcclxuXHRcdFx0ZWxzZVxyXG5cdFx0XHRcdHRoaXMudmFsaWRhdGlvblR5cGUgPSBTbGlja1ZhbGlkYXRpb25UeXBlcy5FcnJvcjtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHR0aGlzLnZhbGlkYXRpb25UeXBlID0gU2xpY2tWYWxpZGF0aW9uVHlwZXMuTm9uZTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNldEluZGljYXRvcigpO1xyXG5cdH1cclxuXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG5cdFx0dGhpcy5zZXRJbmRpY2F0b3IoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0SW5kaWNhdG9yKCkge1xyXG5cdFx0aWYgKHRoaXMudmFsaWRhdGlvblR5cGUgPT09IFNsaWNrVmFsaWRhdGlvblR5cGVzLk5vbmUpIHtcclxuXHRcdFx0dGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmJvcmRlckxlZnQgPSB0aGlzLm9yaWdpbmFsQm9yZGVyU3R5bGU7XHJcblx0XHR9XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMuaXNWYWxpZCkge1xyXG5cdFx0XHRcdHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5ib3JkZXJMZWZ0ID0gXCI2cHggc29saWQgXCIgKyB0aGlzLmJnU3VjY2Vzc1N0eWxlO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdGlmICh0aGlzLnZhbGlkYXRpb25UeXBlID09PSBTbGlja1ZhbGlkYXRpb25UeXBlcy5XYXJuaW5nKVxyXG5cdFx0XHRcdFx0dGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmJvcmRlckxlZnQgPSBcIjZweCBzb2xpZCBcIiArIHRoaXMuYmdXYXJuaW5nU3R5bGU7XHJcblx0XHRcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0dGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmJvcmRlckxlZnQgPSBcIjZweCBzb2xpZCBcIiArIHRoaXMuYmdEYW5nZXJTdHlsZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
@@ -1,55 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- class SlickFunctionLockModel {
4
- constructor() {
5
- this.infiniteLoopCheck = 100;
6
- }
7
- }
8
- export class SlickFunctionLockService {
9
- constructor() {
10
- this.functionLocks = {};
11
- }
12
- lock(functionKey, iterationTimeout = 200) {
13
- if (!this.functionLocks[functionKey])
14
- this.functionLocks[functionKey] = [];
15
- const functionLock = new SlickFunctionLockModel();
16
- functionLock.functionKey = functionKey;
17
- let d = new Date().getTime();
18
- const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
19
- var r = (d + Math.random() * 16) % 16 | 0;
20
- d = Math.floor(d / 16);
21
- return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
22
- });
23
- functionLock.uuid = uuid;
24
- functionLock.lockCount = this.functionLocks[functionKey].length + 1;
25
- functionLock.promise = new Promise((resolve, reject) => {
26
- functionLock.intervalId = setInterval(() => {
27
- if (functionLock.lockCount === 1 || functionLock.infiniteLoopCheck-- === 0) {
28
- clearInterval(functionLock.intervalId);
29
- if (functionLock.infiniteLoopCheck === 0) {
30
- alert("Inifite loop detected for " + functionLock.functionKey);
31
- }
32
- resolve(null);
33
- }
34
- }, iterationTimeout);
35
- });
36
- this.functionLocks[functionKey].push(functionLock);
37
- return functionLock.promise;
38
- }
39
- release(functionKey) {
40
- if (this.functionLocks && this.functionLocks[functionKey]) {
41
- this.functionLocks[functionKey].splice(0, 1);
42
- this.functionLocks[functionKey].forEach((fl) => fl.lockCount--);
43
- return this.functionLocks[functionKey].length;
44
- }
45
- else {
46
- return -1;
47
- }
48
- }
49
- }
50
- /** @nocollapse */ SlickFunctionLockService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickFunctionLockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
51
- /** @nocollapse */ SlickFunctionLockService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickFunctionLockService });
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickFunctionLockService, decorators: [{
53
- type: Injectable
54
- }], ctorParameters: function () { return []; } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZnVuY3Rpb24tbG9jay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvdXRpbHMvc2xpY2stZnVuY3Rpb24tbG9jay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQU0sc0JBQXNCO0lBQTVCO1FBR0Msc0JBQWlCLEdBQVcsR0FBRyxDQUFDO0lBSWpDLENBQUM7Q0FBQTtBQUdELE1BQU0sT0FBTyx3QkFBd0I7SUFHcEM7UUFGUSxrQkFBYSxHQUFRLEVBQUUsQ0FBQztJQUVqQixDQUFDO0lBRWhCLElBQUksQ0FBQyxXQUFtQixFQUFFLG1CQUEyQixHQUFHO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUV0QyxNQUFNLFlBQVksR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7UUFDbEQsWUFBWSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksR0FBRyxzQ0FBc0MsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztZQUMvRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMxQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkIsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDekIsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDcEUsWUFBWSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzRCxZQUFZLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQzFDLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUMzRSxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN2QyxJQUFJLFlBQVksQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLEVBQUU7d0JBQ3pDLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7cUJBQy9EO29CQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDZDtZQUNGLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBR0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbkQsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQzdCLENBQUM7SUFFRCxPQUFPLENBQUMsV0FBbUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBMEIsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFFeEYsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUM5QzthQUNJO1lBQ0osT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNWO0lBQ0YsQ0FBQzs7d0lBL0NXLHdCQUF3Qjs0SUFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmNsYXNzIFNsaWNrRnVuY3Rpb25Mb2NrTW9kZWwge1xyXG5cdHV1aWQ6IHN0cmluZztcclxuXHRmdW5jdGlvbktleTogc3RyaW5nO1xyXG5cdGluZmluaXRlTG9vcENoZWNrOiBudW1iZXIgPSAxMDA7XHJcblx0cHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcclxuXHRsb2NrQ291bnQ6IG51bWJlcjtcclxuXHRpbnRlcnZhbElkOiBOb2RlSlMuVGltZXI7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZSB7XHJcblx0cHJpdmF0ZSBmdW5jdGlvbkxvY2tzOiBhbnkgPSB7fTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7fVxyXG5cclxuXHRsb2NrKGZ1bmN0aW9uS2V5OiBzdHJpbmcsIGl0ZXJhdGlvblRpbWVvdXQ6IG51bWJlciA9IDIwMCk6IFByb21pc2U8dm9pZD4ge1xyXG5cdFx0aWYgKCF0aGlzLmZ1bmN0aW9uTG9ja3NbZnVuY3Rpb25LZXldKVxyXG5cdFx0XHR0aGlzLmZ1bmN0aW9uTG9ja3NbZnVuY3Rpb25LZXldID0gW107XHJcblxyXG5cdFx0Y29uc3QgZnVuY3Rpb25Mb2NrID0gbmV3IFNsaWNrRnVuY3Rpb25Mb2NrTW9kZWwoKTtcclxuXHRcdGZ1bmN0aW9uTG9jay5mdW5jdGlvbktleSA9IGZ1bmN0aW9uS2V5O1xyXG5cdFx0bGV0IGQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuXHRcdGNvbnN0IHV1aWQgPSAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uIChjKSB7XHJcblx0XHRcdHZhciByID0gKGQgKyBNYXRoLnJhbmRvbSgpICogMTYpICUgMTYgfCAwO1xyXG5cdFx0XHRkID0gTWF0aC5mbG9vcihkIC8gMTYpO1xyXG5cdFx0XHRyZXR1cm4gKGMgPT0gJ3gnID8gciA6IChyICYgMHgzIHwgMHg4KSkudG9TdHJpbmcoMTYpO1xyXG5cdFx0fSk7XHJcblx0XHRmdW5jdGlvbkxvY2sudXVpZCA9IHV1aWQ7XHJcblx0XHRmdW5jdGlvbkxvY2subG9ja0NvdW50ID0gdGhpcy5mdW5jdGlvbkxvY2tzW2Z1bmN0aW9uS2V5XS5sZW5ndGggKyAxO1xyXG5cdFx0ZnVuY3Rpb25Mb2NrLnByb21pc2UgPSBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0ZnVuY3Rpb25Mb2NrLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblx0XHRcdFx0aWYgKGZ1bmN0aW9uTG9jay5sb2NrQ291bnQgPT09IDEgfHwgZnVuY3Rpb25Mb2NrLmluZmluaXRlTG9vcENoZWNrLS0gPT09IDApIHtcclxuXHRcdFx0XHRcdGNsZWFySW50ZXJ2YWwoZnVuY3Rpb25Mb2NrLmludGVydmFsSWQpO1xyXG5cdFx0XHRcdFx0aWYgKGZ1bmN0aW9uTG9jay5pbmZpbml0ZUxvb3BDaGVjayA9PT0gMCkge1xyXG5cdFx0XHRcdFx0XHRhbGVydChcIkluaWZpdGUgbG9vcCBkZXRlY3RlZCBmb3IgXCIgKyBmdW5jdGlvbkxvY2suZnVuY3Rpb25LZXkpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShudWxsKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sIGl0ZXJhdGlvblRpbWVvdXQpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0XHJcblx0XHR0aGlzLmZ1bmN0aW9uTG9ja3NbZnVuY3Rpb25LZXldLnB1c2goZnVuY3Rpb25Mb2NrKTtcclxuXHJcblx0XHRyZXR1cm4gZnVuY3Rpb25Mb2NrLnByb21pc2U7XHJcblx0fVxyXG5cclxuXHRyZWxlYXNlKGZ1bmN0aW9uS2V5OiBzdHJpbmcpOiBudW1iZXIge1xyXG5cdFx0aWYgKHRoaXMuZnVuY3Rpb25Mb2NrcyAmJiB0aGlzLmZ1bmN0aW9uTG9ja3NbZnVuY3Rpb25LZXldKSB7XHJcblx0XHRcdHRoaXMuZnVuY3Rpb25Mb2Nrc1tmdW5jdGlvbktleV0uc3BsaWNlKDAsIDEpO1xyXG5cdFx0XHR0aGlzLmZ1bmN0aW9uTG9ja3NbZnVuY3Rpb25LZXldLmZvckVhY2goKGZsOiBTbGlja0Z1bmN0aW9uTG9ja01vZGVsKSA9PiBmbC5sb2NrQ291bnQtLSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gdGhpcy5mdW5jdGlvbkxvY2tzW2Z1bmN0aW9uS2V5XS5sZW5ndGg7XHJcblx0XHR9XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0cmV0dXJuIC0xO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxufVxyXG5cclxuIl19
@@ -1,49 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export class SlickInitParams {
4
- constructor() {
5
- this.errorLog = "minimal";
6
- }
7
- }
8
- export class SlickInitService {
9
- constructor() { }
10
- static init(initParams) {
11
- console.info(`Slick Components Version ${SlickInitService.version}`);
12
- initParams.version = SlickInitService.version;
13
- window.slickComponentsParams = initParams;
14
- return window.slickComponentsParams;
15
- }
16
- static getParams() {
17
- if (!window.slickComponentsParams) {
18
- const defaultParams = new SlickInitParams();
19
- defaultParams.attachTo = "body";
20
- window.slickComponentsParams = defaultParams;
21
- }
22
- return window.slickComponentsParams;
23
- }
24
- static getAttachTo() {
25
- return SlickInitService.getParams().attachTo;
26
- }
27
- static setAttachTo(attachToElement) {
28
- SlickInitService.getParams().attachTo = attachToElement;
29
- }
30
- static getPlatform() {
31
- return SlickInitService.getParams().platform;
32
- }
33
- static setPlatform(platform) {
34
- SlickInitService.getParams().platform = platform;
35
- }
36
- static getErrorLog() {
37
- return SlickInitService.getParams().errorLog;
38
- }
39
- static setErrorLog(errorLog) {
40
- SlickInitService.getParams().errorLog = errorLog;
41
- }
42
- }
43
- SlickInitService.version = "5.0.28";
44
- /** @nocollapse */ SlickInitService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickInitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
45
- /** @nocollapse */ SlickInitService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickInitService });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickInitService, decorators: [{
47
- type: Injectable
48
- }], ctorParameters: function () { return []; } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2staW5pdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvdXRpbHMvc2xpY2staW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBR0MsYUFBUSxHQUFXLFNBQVMsQ0FBQztJQUc5QixDQUFDO0NBQUE7QUFHRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzVCLGdCQUFnQixDQUFDO0lBR2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBMkI7UUFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyRSxVQUFVLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUN4QyxNQUFPLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDO1FBRWpELE9BQWEsTUFBTyxDQUFDLHFCQUFxQixDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUztRQUNmLElBQUksQ0FBTyxNQUFPLENBQUMscUJBQXFCLEVBQUU7WUFDekMsTUFBTSxhQUFhLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM1QyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUMxQixNQUFPLENBQUMscUJBQXFCLEdBQUcsYUFBYSxDQUFDO1NBQ3BEO1FBRUQsT0FBOEIsTUFBTyxDQUFDLHFCQUFxQixDQUFDO0lBQzdELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNqQixPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxlQUF1QjtRQUN6QyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNqQixPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUNsQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNqQixPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUNsQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ2xELENBQUM7O0FBN0NNLHdCQUFPLEdBQUcsUUFBUSxDQUFDO2dJQURkLGdCQUFnQjtvSUFBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTbGlja0luaXRQYXJhbXMge1xyXG5cdGF0dGFjaFRvOiBzdHJpbmc7XHJcblx0cGxhdGZvcm06IHN0cmluZztcclxuXHRlcnJvckxvZzogc3RyaW5nID0gXCJtaW5pbWFsXCI7XHJcblx0dmVyc2lvbjogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2xpY2tJbml0U2VydmljZSB7XHRcclxuXHRzdGF0aWMgdmVyc2lvbiA9IFwiNS4wLjI4XCI7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cclxuXHRzdGF0aWMgaW5pdChpbml0UGFyYW1zOiBTbGlja0luaXRQYXJhbXMpOiBTbGlja0luaXRQYXJhbXMge1xyXG5cdFx0Y29uc29sZS5pbmZvKGBTbGljayBDb21wb25lbnRzIFZlcnNpb24gJHtTbGlja0luaXRTZXJ2aWNlLnZlcnNpb259YCk7XHJcblx0XHRpbml0UGFyYW1zLnZlcnNpb24gPSBTbGlja0luaXRTZXJ2aWNlLnZlcnNpb247XHJcblx0XHQoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcyA9IGluaXRQYXJhbXM7XHJcblxyXG5cdFx0cmV0dXJuICg8YW55PndpbmRvdykuc2xpY2tDb21wb25lbnRzUGFyYW1zO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldFBhcmFtcygpOiBTbGlja0luaXRQYXJhbXMge1xyXG5cdFx0aWYgKCEoPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcykge1xyXG5cdFx0XHRjb25zdCBkZWZhdWx0UGFyYW1zID0gbmV3IFNsaWNrSW5pdFBhcmFtcygpO1xyXG5cdFx0XHRkZWZhdWx0UGFyYW1zLmF0dGFjaFRvID0gXCJib2R5XCI7XHJcblx0XHRcdCg8YW55PndpbmRvdykuc2xpY2tDb21wb25lbnRzUGFyYW1zID0gZGVmYXVsdFBhcmFtcztcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gPFNsaWNrSW5pdFBhcmFtcz4oPGFueT53aW5kb3cpLnNsaWNrQ29tcG9uZW50c1BhcmFtcztcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRBdHRhY2hUbygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuYXR0YWNoVG87XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgc2V0QXR0YWNoVG8oYXR0YWNoVG9FbGVtZW50OiBzdHJpbmcpIHtcclxuXHRcdFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuYXR0YWNoVG8gPSBhdHRhY2hUb0VsZW1lbnQ7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0UGxhdGZvcm0oKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLnBsYXRmb3JtO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHNldFBsYXRmb3JtKHBsYXRmb3JtOiBzdHJpbmcpIHtcclxuXHRcdFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkucGxhdGZvcm0gPSBwbGF0Zm9ybTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRFcnJvckxvZygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFNsaWNrSW5pdFNlcnZpY2UuZ2V0UGFyYW1zKCkuZXJyb3JMb2c7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgc2V0RXJyb3JMb2coZXJyb3JMb2c6IHN0cmluZykge1xyXG5cdFx0U2xpY2tJbml0U2VydmljZS5nZXRQYXJhbXMoKS5lcnJvckxvZyA9IGVycm9yTG9nO1xyXG5cdH1cclxufVxyXG5cclxuIl19
@@ -1,247 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- // @dynamic
4
- export class SlickUtilsService {
5
- static newGuid() {
6
- let d = new Date().getTime();
7
- const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
8
- const r = (d + Math.random() * 16) % 16 | 0;
9
- d = Math.floor(d / 16);
10
- return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
11
- });
12
- return uuid;
13
- }
14
- static waitForElement(elementSelector, iterationTimeout = 50) {
15
- let infiniteLoopCheck = 10;
16
- let iterationId;
17
- const p = new Promise((resolve, reject) => {
18
- iterationId = setInterval(() => {
19
- const el = document.querySelector(elementSelector);
20
- if (el) {
21
- clearInterval(iterationId);
22
- resolve(el);
23
- }
24
- if (--infiniteLoopCheck <= 0) {
25
- clearInterval(iterationId);
26
- alert("Loop Check failed trying to find " + elementSelector);
27
- reject();
28
- }
29
- }, 100);
30
- });
31
- return p;
32
- }
33
- static waitForElementRef(elementRef, iterationTimeout = 50) {
34
- let infiniteLoopCheck = 10;
35
- let iterationId;
36
- const p = new Promise((resolve, reject) => {
37
- iterationId = setInterval(() => {
38
- const el = elementRef.nativeElement;
39
- if (el && el.clientHeight && el.clientWidth) {
40
- clearInterval(iterationId);
41
- resolve(elementRef);
42
- }
43
- if (--infiniteLoopCheck <= 0) {
44
- clearInterval(iterationId);
45
- console.error("Loop Check failed trying to find element");
46
- reject();
47
- }
48
- }, iterationTimeout);
49
- });
50
- return p;
51
- }
52
- static getDeepObject(obj, objName) {
53
- const dotSplit = objName.split(".");
54
- let currentObj = obj;
55
- dotSplit.forEach((o) => {
56
- if (currentObj === null || currentObj === undefined)
57
- return null;
58
- currentObj = currentObj[o];
59
- });
60
- return currentObj;
61
- }
62
- static setDeepObject(obj, objName, val) {
63
- const dotSplit = objName.split(".");
64
- let prevObj = obj;
65
- let currentObj = obj;
66
- dotSplit.forEach((o) => {
67
- if (currentObj === null || currentObj === undefined)
68
- return null;
69
- prevObj = currentObj;
70
- currentObj = currentObj[o];
71
- });
72
- prevObj[dotSplit[dotSplit.length - 1]] = val;
73
- return currentObj;
74
- }
75
- static clone(obj) {
76
- if (obj === null || obj === undefined)
77
- return obj;
78
- let returnObj = JSON.parse(JSON.stringify(obj));
79
- //returnObj = this.dateSanitize(returnObj);
80
- return returnObj;
81
- }
82
- static dateSanitize(obj, infiniteLoopCheck = 0) {
83
- infiniteLoopCheck++;
84
- if (infiniteLoopCheck > 20) {
85
- console.error("infinte loop");
86
- return obj;
87
- }
88
- if (obj === null || obj === undefined)
89
- return obj;
90
- // If the obj IS a date, return the processed date
91
- if (typeof obj === "string" && /^([0-9]{4}-(0[1-9]|10|11|12)-([012][0-9]|30|31)T([01][0-9]|[2][0123]):([0-5][0-9]):([0-5][0-9])(.[0-9]{0,})?(z|Z))$/.test(obj))
92
- return new Date(obj);
93
- // If this is an atomic type (string, bool, number), just return the atomic object
94
- if (typeof obj !== "object")
95
- return obj;
96
- let returnObj;
97
- if (Array.isArray(obj)) {
98
- returnObj = [];
99
- obj.forEach(o => returnObj.push(this.dateSanitize(o, infiniteLoopCheck)));
100
- }
101
- else {
102
- returnObj = {};
103
- for (const key in obj) {
104
- if (obj[key] === null)
105
- returnObj[key] = null;
106
- else if (Array.isArray(obj[key])) {
107
- returnObj[key] = [];
108
- obj[key].forEach(o => returnObj[key].push(this.dateSanitize(o, infiniteLoopCheck)));
109
- }
110
- else if (typeof obj[key] === "object")
111
- returnObj[key] = this.dateSanitize(obj[key], ++infiniteLoopCheck);
112
- else if (/^([0-9]{4}-(0[1-9]|10|11|12)-([012][0-9]|30|31)T([01][0-9]|[2][0123]):([0-5][0-9]):([0-5][0-9])(.[0-9]{0,})?(z|Z))$/.test(obj[key]))
113
- returnObj[key] = new Date(obj[key]);
114
- else
115
- returnObj[key] = obj[key];
116
- }
117
- }
118
- return returnObj;
119
- }
120
- static round(num, decimals) {
121
- return Number(Math.round(parseFloat(num + 'e' + decimals)) + 'e-' + decimals);
122
- }
123
- static checkParentClassExists(el, className) {
124
- let currentEl = el;
125
- let hasSelector = false;
126
- while (currentEl && currentEl !== document.body) {
127
- if (currentEl.classList.contains(className)) {
128
- hasSelector = true;
129
- break;
130
- }
131
- currentEl = currentEl.parentElement;
132
- }
133
- return hasSelector;
134
- }
135
- static checkParentIdExists(el, idName) {
136
- let currentEl = el;
137
- let hasSelector = false;
138
- while (currentEl && currentEl !== document.body) {
139
- if (currentEl.getAttribute("id") === idName) {
140
- hasSelector = true;
141
- break;
142
- }
143
- currentEl = currentEl.parentElement;
144
- }
145
- return hasSelector;
146
- }
147
- static findParentByAttr(el, attrName, attrValue) {
148
- let currentEl = el;
149
- while (currentEl && currentEl !== document.body) {
150
- if (currentEl.hasAttribute(attrName) && currentEl.getAttribute(attrName) === attrValue) {
151
- return currentEl;
152
- }
153
- currentEl = currentEl.parentElement;
154
- }
155
- return null;
156
- }
157
- static findParent(el, className) {
158
- let currentEl = el;
159
- while (currentEl && currentEl !== document.body) {
160
- if (currentEl.classList && currentEl.classList.contains(className)) {
161
- return currentEl;
162
- }
163
- currentEl = currentEl.parentElement;
164
- }
165
- return null;
166
- }
167
- static getClosestSibling(el, className) {
168
- let currentEl = el;
169
- while (currentEl && currentEl !== document.body) {
170
- if (currentEl.classList && currentEl.classList.contains(className)) {
171
- return currentEl;
172
- }
173
- currentEl = currentEl.previousSibling;
174
- }
175
- return null;
176
- }
177
- static waitForTinyMCE(tinyMCEId) {
178
- return new Promise((resolve, reject) => {
179
- let waitForTinyMCE;
180
- if (tinymce.get(tinyMCEId) && tinymce.get(tinyMCEId).initialized) {
181
- resolve();
182
- }
183
- else {
184
- clearInterval(waitForTinyMCE);
185
- let infiniteLoopCheck = 100;
186
- waitForTinyMCE = setInterval(() => {
187
- if ((tinymce.get(tinyMCEId) && tinymce.get(tinyMCEId).initialized) || infiniteLoopCheck === 0) {
188
- clearInterval(waitForTinyMCE);
189
- if (infiniteLoopCheck === 0) {
190
- console.error("Timed out waiting for tinyMCE Id: " + tinyMCEId);
191
- return reject();
192
- }
193
- else {
194
- return resolve();
195
- }
196
- }
197
- infiniteLoopCheck--;
198
- }, 100);
199
- }
200
- });
201
- }
202
- static attachElement(el, attachTo) {
203
- if (attachTo === 'body')
204
- document.body.appendChild(el);
205
- else {
206
- const parent = document.body.querySelector(attachTo);
207
- if (!parent) {
208
- console.error("Could not find element " + attachTo + " to attach to");
209
- return;
210
- }
211
- else {
212
- parent.appendChild(el);
213
- }
214
- }
215
- }
216
- static removeElement(el) {
217
- // it's okay if this fails. It was already removed
218
- try {
219
- // the default destroy won't get rid of this
220
- document.body.removeChild(el);
221
- }
222
- catch { }
223
- }
224
- static arrayInsert(elementToInsert, arr, index) {
225
- const pre = arr.slice(0, index);
226
- const post = arr.slice(index, arr.length);
227
- return [...pre, elementToInsert, ...post];
228
- }
229
- }
230
- SlickUtilsService.getHashCode = function (str) {
231
- let hash = 0;
232
- let chr;
233
- if (str.length === 0)
234
- return hash;
235
- for (let i = 0; i < str.length; i++) {
236
- chr = str.charCodeAt(i);
237
- hash = ((hash << 5) - hash) + chr;
238
- hash |= 0; // Convert to 32bit integer
239
- }
240
- return Math.abs(hash);
241
- };
242
- /** @nocollapse */ SlickUtilsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickUtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
243
- /** @nocollapse */ SlickUtilsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickUtilsService });
244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickUtilsService, decorators: [{
245
- type: Injectable
246
- }] });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stdXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3V0aWxzL3NsaWNrLXV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLGVBQWUsQ0FBQzs7QUFJdkQsV0FBVztBQUVYLE1BQU0sT0FBTyxpQkFBaUI7SUFDN0IsTUFBTSxDQUFDLE9BQU87UUFDYixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxHQUFHLHNDQUFzQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO1lBQy9FLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN2QixPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLGVBQXVCLEVBQUUsZ0JBQWdCLEdBQUcsRUFBRTtRQUNuRSxJQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLFdBQXlCLENBQUM7UUFDOUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdEQs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QUFDLENBQUM7aUlBbE9VLGlCQUFpQjtxSUFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmRlY2xhcmUgY29uc3QgdGlueW1jZTogYW55O1xyXG5cclxuLy8gQGR5bmFtaWNcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2xpY2tVdGlsc1NlcnZpY2Uge1xyXG5cdHN0YXRpYyBuZXdHdWlkKCk6IHN0cmluZyB7XHJcblx0XHRsZXQgZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG5cdFx0Y29uc3QgdXVpZCA9ICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24gKGMpIHtcclxuXHRcdFx0Y29uc3QgciA9IChkICsgTWF0aC5yYW5kb20oKSAqIDE2KSAlIDE2IHwgMDtcclxuXHRcdFx0ZCA9IE1hdGguZmxvb3IoZCAvIDE2KTtcclxuXHRcdFx0cmV0dXJuIChjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCkpLnRvU3RyaW5nKDE2KTtcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIHV1aWQ7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgd2FpdEZvckVsZW1lbnQoZWxlbWVudFNlbGVjdG9yOiBzdHJpbmcsIGl0ZXJhdGlvblRpbWVvdXQgPSA1MCk6IFByb21pc2U8SFRNTEVsZW1lbnQ+IHtcclxuXHRcdGxldCBpbmZpbml0ZUxvb3BDaGVjayA9IDEwO1xyXG5cdFx0bGV0IGl0ZXJhdGlvbklkOiBOb2RlSlMuVGltZXI7XHJcblx0XHRjb25zdCBwID0gbmV3IFByb21pc2U8SFRNTEVsZW1lbnQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0aXRlcmF0aW9uSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZWwgPSA8SFRNTEVsZW1lbnQ+ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbGVtZW50U2VsZWN0b3IpO1xyXG5cdFx0XHRcdGlmIChlbCkge1xyXG5cdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbChpdGVyYXRpb25JZCk7XHJcblx0XHRcdFx0XHRyZXNvbHZlKGVsKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmICgtLWluZmluaXRlTG9vcENoZWNrIDw9IDApIHtcclxuXHRcdFx0XHRcdGNsZWFySW50ZXJ2YWwoaXRlcmF0aW9uSWQpO1xyXG5cdFx0XHRcdFx0YWxlcnQoXCJMb29wIENoZWNrIGZhaWxlZCB0cnlpbmcgdG8gZmluZCBcIiArIGVsZW1lbnRTZWxlY3Rvcik7XHJcblx0XHRcdFx0XHRyZWplY3QoKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9LCAxMDApO1xyXG5cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBwO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHdhaXRGb3JFbGVtZW50UmVmKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGl0ZXJhdGlvblRpbWVvdXQgPSA1MCk6IFByb21pc2U8RWxlbWVudFJlZj4ge1xyXG5cdFx0bGV0IGluZmluaXRlTG9vcENoZWNrID0gMTA7XHJcblx0XHRsZXQgaXRlcmF0aW9uSWQ6IE5vZGVKUy5UaW1lcjtcclxuXHRcdGNvbnN0IHAgPSBuZXcgUHJvbWlzZTxFbGVtZW50UmVmPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdGl0ZXJhdGlvbklkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGVsID0gPEhUTUxFbGVtZW50PmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuXHRcdFx0XHRpZiAoZWwgJiYgZWwuY2xpZW50SGVpZ2h0ICYmIGVsLmNsaWVudFdpZHRoKSB7XHJcblx0XHRcdFx0XHRjbGVhckludGVydmFsKGl0ZXJhdGlvbklkKTtcclxuXHRcdFx0XHRcdHJlc29sdmUoZWxlbWVudFJlZik7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoLS1pbmZpbml0ZUxvb3BDaGVjayA8PSAwKSB7XHJcblx0XHRcdFx0XHRjbGVhckludGVydmFsKGl0ZXJhdGlvbklkKTtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJMb29wIENoZWNrIGZhaWxlZCB0cnlpbmcgdG8gZmluZCBlbGVtZW50XCIpO1xyXG5cdFx0XHRcdFx0cmVqZWN0KCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LCBpdGVyYXRpb25UaW1lb3V0KTtcclxuXHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gcDtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXREZWVwT2JqZWN0KG9iajogYW55LCBvYmpOYW1lOiBzdHJpbmcpOiBhbnkge1xyXG5cdFx0Y29uc3QgZG90U3BsaXQgPSBvYmpOYW1lLnNwbGl0KFwiLlwiKTtcclxuXHJcblx0XHRsZXQgY3VycmVudE9iaiA9IG9iajtcclxuXHRcdGRvdFNwbGl0LmZvckVhY2goKG8pID0+IHtcclxuXHRcdFx0aWYgKGN1cnJlbnRPYmogPT09IG51bGwgfHwgY3VycmVudE9iaiA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdHJldHVybiBudWxsO1xyXG5cclxuXHRcdFx0Y3VycmVudE9iaiA9IGN1cnJlbnRPYmpbb107XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gY3VycmVudE9iajtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBzZXREZWVwT2JqZWN0KG9iajogYW55LCBvYmpOYW1lOiBzdHJpbmcsIHZhbDogYW55KSB7XHJcblx0XHRjb25zdCBkb3RTcGxpdCA9IG9iak5hbWUuc3BsaXQoXCIuXCIpO1xyXG5cclxuXHRcdGxldCBwcmV2T2JqID0gb2JqO1xyXG5cdFx0bGV0IGN1cnJlbnRPYmogPSBvYmo7XHJcblx0XHRkb3RTcGxpdC5mb3JFYWNoKChvKSA9PiB7XHJcblx0XHRcdGlmIChjdXJyZW50T2JqID09PSBudWxsIHx8IGN1cnJlbnRPYmogPT09IHVuZGVmaW5lZClcclxuXHRcdFx0XHRyZXR1cm4gbnVsbDtcclxuXHJcblx0XHRcdHByZXZPYmogPSBjdXJyZW50T2JqO1xyXG5cdFx0XHRjdXJyZW50T2JqID0gY3VycmVudE9ialtvXTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHByZXZPYmpbZG90U3BsaXRbZG90U3BsaXQubGVuZ3RoIC0gMV1dID0gdmFsO1xyXG5cclxuXHRcdHJldHVybiBjdXJyZW50T2JqO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGNsb25lKG9iajogYW55KTogYW55IHtcclxuXHRcdGlmIChvYmogPT09IG51bGwgfHwgb2JqID09PSB1bmRlZmluZWQpXHJcblx0XHRcdHJldHVybiBvYmo7XHJcblxyXG5cdFx0bGV0IHJldHVybk9iaiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XHJcblx0XHQvL3JldHVybk9iaiA9IHRoaXMuZGF0ZVNhbml0aXplKHJldHVybk9iaik7XHJcblxyXG5cdFx0cmV0dXJuIHJldHVybk9iajtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBkYXRlU2FuaXRpemUob2JqOiBhbnksIGluZmluaXRlTG9vcENoZWNrOiBudW1iZXIgPSAwKTogYW55IHtcclxuXHRcdGluZmluaXRlTG9vcENoZWNrKys7XHJcblxyXG5cdFx0aWYgKGluZmluaXRlTG9vcENoZWNrID4gMjApIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihcImluZmludGUgbG9vcFwiKTtcclxuXHRcdFx0cmV0dXJuIG9iajtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAob2JqID09PSBudWxsIHx8IG9iaiA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRyZXR1cm4gb2JqO1xyXG5cclxuXHRcdC8vIElmIHRoZSBvYmogSVMgYSBkYXRlLCByZXR1cm4gdGhlIHByb2Nlc3NlZCBkYXRlXHJcblx0XHRpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIiAmJiAvXihbMC05XXs0fS0oMFsxLTldfDEwfDExfDEyKS0oWzAxMl1bMC05XXwzMHwzMSlUKFswMV1bMC05XXxbMl1bMDEyM10pOihbMC01XVswLTldKTooWzAtNV1bMC05XSkoLlswLTldezAsfSk/KHp8WikpJC8udGVzdChvYmopKVxyXG5cdFx0XHRyZXR1cm4gbmV3IERhdGUob2JqKTtcclxuXHJcblx0XHQvLyBJZiB0aGlzIGlzIGFuIGF0b21pYyB0eXBlIChzdHJpbmcsIGJvb2wsIG51bWJlciksIGp1c3QgcmV0dXJuIHRoZSBhdG9taWMgb2JqZWN0XHJcblx0XHRpZiAodHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIilcclxuXHRcdFx0cmV0dXJuIG9iajtcclxuXHJcblx0XHRsZXQgcmV0dXJuT2JqO1xyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG5cdFx0XHRyZXR1cm5PYmogPSBbXTtcclxuXHRcdFx0b2JqLmZvckVhY2gobyA9PiByZXR1cm5PYmoucHVzaCh0aGlzLmRhdGVTYW5pdGl6ZShvLCBpbmZpbml0ZUxvb3BDaGVjaykpKTtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRyZXR1cm5PYmogPSB7fTtcclxuXHJcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIG9iaikge1xyXG5cdFx0XHRcdGlmIChvYmpba2V5XSA9PT0gbnVsbClcclxuXHRcdFx0XHRcdHJldHVybk9ialtrZXldID0gbnVsbDtcclxuXHRcdFx0XHRlbHNlIGlmIChBcnJheS5pc0FycmF5KG9ialtrZXldKSkge1xyXG5cdFx0XHRcdFx0cmV0dXJuT2JqW2tleV0gPSBbXTtcclxuXHRcdFx0XHRcdG9ialtrZXldLmZvckVhY2gobyA9PiByZXR1cm5PYmpba2V5XS5wdXNoKHRoaXMuZGF0ZVNhbml0aXplKG8sIGluZmluaXRlTG9vcENoZWNrKSkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRlbHNlIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09IFwib2JqZWN0XCIpXHJcblx0XHRcdFx0XHRyZXR1cm5PYmpba2V5XSA9IHRoaXMuZGF0ZVNhbml0aXplKG9ialtrZXldLCArK2luZmluaXRlTG9vcENoZWNrKTtcclxuXHRcdFx0XHRlbHNlIGlmICgvXihbMC05XXs0fS0oMFsxLTldfDEwfDExfDEyKS0oWzAxMl1bMC05XXwzMHwzMSlUKFswMV1bMC05XXxbMl1bMDEyM10pOihbMC01XVswLTldKTooWzAtNV1bMC05XSkoLlswLTldezAsfSk/KHp8WikpJC8udGVzdChvYmpba2V5XSkpXHJcblx0XHRcdFx0XHRyZXR1cm5PYmpba2V5XSA9IG5ldyBEYXRlKG9ialtrZXldKTtcclxuXHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRyZXR1cm5PYmpba2V5XSA9IG9ialtrZXldO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJldHVybk9iajtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyByb3VuZChudW06IG51bWJlciwgZGVjaW1hbHM6IG51bWJlcik6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gTnVtYmVyKE1hdGgucm91bmQocGFyc2VGbG9hdChudW0gKyAnZScgKyBkZWNpbWFscykpICsgJ2UtJyArIGRlY2ltYWxzKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBjaGVja1BhcmVudENsYXNzRXhpc3RzKGVsOiBIVE1MRWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdGxldCBjdXJyZW50RWw6IEhUTUxFbGVtZW50ID0gZWw7XHJcblx0XHRsZXQgaGFzU2VsZWN0b3IgPSBmYWxzZTtcclxuXHRcdHdoaWxlIChjdXJyZW50RWwgJiYgY3VycmVudEVsICE9PSBkb2N1bWVudC5ib2R5KSB7XHJcblx0XHRcdGlmIChjdXJyZW50RWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcclxuXHRcdFx0XHRoYXNTZWxlY3RvciA9IHRydWU7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0Y3VycmVudEVsID0gY3VycmVudEVsLnBhcmVudEVsZW1lbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGhhc1NlbGVjdG9yO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGNoZWNrUGFyZW50SWRFeGlzdHMoZWw6IEhUTUxFbGVtZW50LCBpZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG5cdFx0bGV0IGN1cnJlbnRFbDogSFRNTEVsZW1lbnQgPSBlbDtcclxuXHRcdGxldCBoYXNTZWxlY3RvciA9IGZhbHNlO1xyXG5cdFx0d2hpbGUgKGN1cnJlbnRFbCAmJiBjdXJyZW50RWwgIT09IGRvY3VtZW50LmJvZHkpIHtcclxuXHRcdFx0aWYgKGN1cnJlbnRFbC5nZXRBdHRyaWJ1dGUoXCJpZFwiKSA9PT0gaWROYW1lKSB7XHJcblx0XHRcdFx0aGFzU2VsZWN0b3IgPSB0cnVlO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHRcdGN1cnJlbnRFbCA9IGN1cnJlbnRFbC5wYXJlbnRFbGVtZW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBoYXNTZWxlY3RvcjtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBmaW5kUGFyZW50QnlBdHRyKGVsOiBIVE1MRWxlbWVudCwgYXR0ck5hbWU6IHN0cmluZywgYXR0clZhbHVlOiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XHJcblx0XHRsZXQgY3VycmVudEVsOiBIVE1MRWxlbWVudCA9IGVsO1xyXG5cdFx0d2hpbGUgKGN1cnJlbnRFbCAmJiBjdXJyZW50RWwgIT09IGRvY3VtZW50LmJvZHkpIHtcclxuXHRcdFx0aWYgKGN1cnJlbnRFbC5oYXNBdHRyaWJ1dGUoYXR0ck5hbWUpICYmIGN1cnJlbnRFbC5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09PSBhdHRyVmFsdWUpIHtcclxuXHRcdFx0XHRyZXR1cm4gY3VycmVudEVsO1xyXG5cdFx0XHR9XHJcblx0XHRcdGN1cnJlbnRFbCA9IDxIVE1MRWxlbWVudD5jdXJyZW50RWwucGFyZW50RWxlbWVudDtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBmaW5kUGFyZW50KGVsOiBIVE1MRWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XHJcblx0XHRsZXQgY3VycmVudEVsOiBIVE1MRWxlbWVudCA9IGVsO1xyXG5cdFx0d2hpbGUgKGN1cnJlbnRFbCAmJiBjdXJyZW50RWwgIT09IGRvY3VtZW50LmJvZHkpIHtcclxuXHRcdFx0aWYgKGN1cnJlbnRFbC5jbGFzc0xpc3QgJiYgY3VycmVudEVsLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRFbDtcclxuXHRcdFx0fVxyXG5cdFx0XHRjdXJyZW50RWwgPSA8SFRNTEVsZW1lbnQ+Y3VycmVudEVsLnBhcmVudEVsZW1lbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHJcblx0c3RhdGljIGdldENsb3Nlc3RTaWJsaW5nKGVsOiBIVE1MRWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XHJcblx0XHRsZXQgY3VycmVudEVsOiBIVE1MRWxlbWVudCA9IGVsO1xyXG5cdFx0d2hpbGUgKGN1cnJlbnRFbCAmJiBjdXJyZW50RWwgIT09IGRvY3VtZW50LmJvZHkpIHtcclxuXHRcdFx0aWYgKGN1cnJlbnRFbC5jbGFzc0xpc3QgJiYgY3VycmVudEVsLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRFbDtcclxuXHRcdFx0fVxyXG5cdFx0XHRjdXJyZW50RWwgPSA8SFRNTEVsZW1lbnQ+Y3VycmVudEVsLnByZXZpb3VzU2libGluZztcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRIYXNoQ29kZSA9IGZ1bmN0aW9uIChzdHI6IHN0cmluZykge1xyXG5cdFx0bGV0IGhhc2g6IG51bWJlciA9IDA7XHJcblx0XHRsZXQgY2hyOiBudW1iZXI7XHJcblxyXG5cdFx0aWYgKHN0ci5sZW5ndGggPT09IDApIHJldHVybiBoYXNoO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Y2hyID0gc3RyLmNoYXJDb2RlQXQoaSk7XHJcblx0XHRcdGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIGNocjtcclxuXHRcdFx0aGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcclxuXHRcdH1cclxuXHRcdHJldHVybiBNYXRoLmFicyhoYXNoKTtcclxuXHR9O1xyXG5cclxuXHRzdGF0aWMgd2FpdEZvclRpbnlNQ0UodGlueU1DRUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdGxldCB3YWl0Rm9yVGlueU1DRTogTm9kZUpTLlRpbWVyO1xyXG5cclxuXHRcdFx0aWYgKHRpbnltY2UuZ2V0KHRpbnlNQ0VJZCkgJiYgdGlueW1jZS5nZXQodGlueU1DRUlkKS5pbml0aWFsaXplZCkge1xyXG5cdFx0XHRcdHJlc29sdmUoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRjbGVhckludGVydmFsKHdhaXRGb3JUaW55TUNFKTtcclxuXHRcdFx0XHRsZXQgaW5maW5pdGVMb29wQ2hlY2sgPSAxMDA7XHJcblx0XHRcdFx0d2FpdEZvclRpbnlNQ0UgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoKHRpbnltY2UuZ2V0KHRpbnlNQ0VJZCkgJiYgdGlueW1jZS5nZXQodGlueU1DRUlkKS5pbml0aWFsaXplZCkgfHwgaW5maW5pdGVMb29wQ2hlY2sgPT09IDApIHtcclxuXHRcdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh3YWl0Rm9yVGlueU1DRSk7XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoaW5maW5pdGVMb29wQ2hlY2sgPT09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFwiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHRpbnlNQ0UgSWQ6IFwiICsgdGlueU1DRUlkKTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVqZWN0KCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc29sdmUoKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGluZmluaXRlTG9vcENoZWNrLS07XHJcblx0XHRcdFx0fSwgMTAwKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgYXR0YWNoRWxlbWVudChlbDogSFRNTEVsZW1lbnQsIGF0dGFjaFRvOiBzdHJpbmcpIHtcclxuXHRcdGlmIChhdHRhY2hUbyA9PT0gJ2JvZHknKVxyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKTtcclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3IoYXR0YWNoVG8pO1xyXG5cdFx0XHRpZiAoIXBhcmVudCkge1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJDb3VsZCBub3QgZmluZCBlbGVtZW50IFwiICsgYXR0YWNoVG8gKyBcIiB0byBhdHRhY2ggdG9cIik7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHBhcmVudC5hcHBlbmRDaGlsZChlbCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHN0YXRpYyByZW1vdmVFbGVtZW50KGVsOiBIVE1MRWxlbWVudCkge1xyXG5cdFx0Ly8gaXQncyBva2F5IGlmIHRoaXMgZmFpbHMuICBJdCB3YXMgYWxyZWFkeSByZW1vdmVkXHJcblx0XHR0cnkge1xyXG5cdFx0XHQvLyB0aGUgZGVmYXVsdCBkZXN0cm95IHdvbid0IGdldCByaWQgb2YgdGhpc1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsKTtcclxuXHRcdH1cclxuXHRcdGNhdGNoIHsgfVxyXG5cdH1cclxuXHJcblx0c3RhdGljIGFycmF5SW5zZXJ0PFQ+KGVsZW1lbnRUb0luc2VydDogVCwgYXJyOiBUW10sIGluZGV4OiBudW1iZXIpOiBUW10ge1xyXG5cdFx0Y29uc3QgcHJlID0gYXJyLnNsaWNlKDAsIGluZGV4KTtcclxuXHRcdGNvbnN0IHBvc3QgPSBhcnIuc2xpY2UoaW5kZXgsIGFyci5sZW5ndGgpO1xyXG5cdFx0cmV0dXJuIFsuLi5wcmUsIGVsZW1lbnRUb0luc2VydCwgLi4ucG9zdF07XHJcblx0fVxyXG59XHJcblxyXG4iXX0=