@mintplayer/ng-bootstrap 14.10.1 → 15.0.1

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 (1214) hide show
  1. package/_bootstrap.scss +19 -20
  2. package/accordion/index.d.ts +1 -0
  3. package/accordion/src/accordion/accordion.component.d.ts +10 -0
  4. package/accordion/src/accordion-tab/accordion-tab.component.d.ts +17 -0
  5. package/accordion/src/accordion-tab-header/accordion-tab-header.component.d.ts +9 -0
  6. package/{lib/components/accordion → accordion/src}/accordion.module.d.ts +0 -0
  7. package/{lib/components/accordion → accordion/src}/index.d.ts +0 -0
  8. package/alert/index.d.ts +1 -0
  9. package/alert/src/alert/alert.component.d.ts +15 -0
  10. package/alert/src/alert-close/alert-close.component.d.ts +9 -0
  11. package/{lib/components/alert → alert/src}/alert.module.d.ts +0 -0
  12. package/{lib/components/alert → alert/src}/index.d.ts +0 -0
  13. package/badge/index.d.ts +1 -0
  14. package/badge/src/badge.component.d.ts +15 -0
  15. package/{lib/components/badge → badge/src}/badge.module.d.ts +0 -0
  16. package/{lib/components/badge → badge/src}/index.d.ts +0 -0
  17. package/breadcrumb/index.d.ts +1 -0
  18. package/breadcrumb/src/breadcrumb/breadcrumb.component.d.ts +8 -0
  19. package/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.d.ts +9 -0
  20. package/{lib/components/breadcrumb → breadcrumb/src}/breadcrumb.module.d.ts +0 -0
  21. package/{lib/components/breadcrumb → breadcrumb/src}/index.d.ts +0 -0
  22. package/button-group/index.d.ts +1 -0
  23. package/button-group/src/button-group/button-group.component.d.ts +8 -0
  24. package/{lib/components/button-group → button-group/src}/button-group.module.d.ts +0 -0
  25. package/{lib/components/button-group → button-group/src}/index.d.ts +0 -0
  26. package/calendar/index.d.ts +1 -0
  27. package/calendar/src/calendar.component.d.ts +26 -0
  28. package/calendar/src/calendar.module.d.ts +9 -0
  29. package/{lib/components/calendar → calendar/src}/index.d.ts +0 -0
  30. package/card/index.d.ts +1 -0
  31. package/card/src/card/card.component.d.ts +5 -0
  32. package/card/src/card-header/card-header.component.d.ts +5 -0
  33. package/{lib/components/card → card/src}/card.module.d.ts +0 -0
  34. package/{lib/components/card → card/src}/index.d.ts +0 -0
  35. package/carousel/index.d.ts +1 -0
  36. package/carousel/src/carousel/carousel.component.d.ts +25 -0
  37. package/carousel/src/carousel-image/carousel-image.directive.d.ts +9 -0
  38. package/{lib/components/carousel → carousel/src}/carousel.module.d.ts +0 -0
  39. package/{lib/components/carousel → carousel/src}/index.d.ts +0 -0
  40. package/close/index.d.ts +1 -0
  41. package/close/src/close.component.d.ts +10 -0
  42. package/{lib/components/close → close/src}/close.module.d.ts +0 -0
  43. package/{lib/components/close → close/src}/index.d.ts +0 -0
  44. package/code-snippet/index.d.ts +1 -0
  45. package/code-snippet/src/code-snippet.component.d.ts +12 -0
  46. package/code-snippet/src/code-snippet.module.d.ts +10 -0
  47. package/{lib/components/code-snippet → code-snippet/src}/index.d.ts +0 -0
  48. package/context-menu/index.d.ts +1 -0
  49. package/context-menu/src/context-menu.directive.d.ts +18 -0
  50. package/{lib/components/context-menu → context-menu/src}/context-menu.module.d.ts +0 -0
  51. package/{lib/components/context-menu → context-menu/src}/index.d.ts +0 -0
  52. package/copy/index.d.ts +1 -0
  53. package/copy/src/copy.directive.d.ts +11 -0
  54. package/{lib/components/copy → copy/src}/copy.module.d.ts +0 -0
  55. package/{lib/components/copy → copy/src}/index.d.ts +0 -0
  56. package/datatable/index.d.ts +1 -0
  57. package/datatable/src/datatable/datatable.component.d.ts +19 -0
  58. package/{lib/components/datatable → datatable/src}/datatable-column/datatable-column-metadata.d.ts +0 -0
  59. package/datatable/src/datatable-column/datatable-column.directive.d.ts +10 -0
  60. package/datatable/src/datatable-column/index.d.ts +2 -0
  61. package/datatable/src/datatable-settings.d.ts +15 -0
  62. package/datatable/src/datatable.module.d.ts +13 -0
  63. package/datatable/src/index.d.ts +5 -0
  64. package/datatable/src/row-template/row-template.directive.d.ts +9 -0
  65. package/datepicker/index.d.ts +1 -0
  66. package/datepicker/src/datepicker.component.d.ts +14 -0
  67. package/datepicker/src/datepicker.module.d.ts +10 -0
  68. package/{lib/components/datepicker → datepicker/src}/index.d.ts +0 -0
  69. package/dropdown/index.d.ts +1 -0
  70. package/dropdown/src/dropdown/dropdown.directive.d.ts +22 -0
  71. package/dropdown/src/dropdown-menu/dropdown-menu.directive.d.ts +23 -0
  72. package/dropdown/src/dropdown-toggle/dropdown-toggle.directive.d.ts +11 -0
  73. package/{lib/components/dropdown → dropdown/src}/dropdown.module.d.ts +0 -0
  74. package/{lib/components/dropdown → dropdown/src}/index.d.ts +0 -0
  75. package/dropdown-menu/index.d.ts +1 -0
  76. package/dropdown-menu/src/dropdown-item/dropdown-item.component.d.ts +7 -0
  77. package/dropdown-menu/src/dropdown-menu/dropdown-menu.component.d.ts +14 -0
  78. package/dropdown-menu/src/dropdown-menu.module.d.ts +9 -0
  79. package/dropdown-menu/src/index.d.ts +3 -0
  80. package/enhanced-paste/index.d.ts +1 -0
  81. package/enhanced-paste/src/enhanced-paste.directive.d.ts +14 -0
  82. package/{lib/directives/enhanced-paste → enhanced-paste/src}/enhanced-paste.module.d.ts +0 -0
  83. package/enhanced-paste/src/index.d.ts +2 -0
  84. package/esm2020/accordion/index.mjs +2 -0
  85. package/esm2020/accordion/mintplayer-ng-bootstrap-accordion.mjs +5 -0
  86. package/esm2020/accordion/src/accordion/accordion.component.mjs +21 -0
  87. package/esm2020/accordion/src/accordion-tab/accordion-tab.component.mjs +63 -0
  88. package/esm2020/accordion/src/accordion-tab-header/accordion-tab-header.component.mjs +20 -0
  89. package/esm2020/accordion/src/accordion.module.mjs +34 -0
  90. package/esm2020/accordion/src/index.mjs +5 -0
  91. package/esm2020/alert/index.mjs +2 -0
  92. package/esm2020/alert/mintplayer-ng-bootstrap-alert.mjs +5 -0
  93. package/esm2020/alert/src/alert/alert.component.mjs +41 -0
  94. package/esm2020/alert/src/alert-close/alert-close.component.mjs +20 -0
  95. package/esm2020/alert/src/alert.module.mjs +27 -0
  96. package/esm2020/alert/src/index.mjs +4 -0
  97. package/esm2020/badge/index.mjs +2 -0
  98. package/esm2020/badge/mintplayer-ng-bootstrap-badge.mjs +5 -0
  99. package/esm2020/badge/src/badge.component.mjs +30 -0
  100. package/esm2020/badge/src/badge.module.mjs +18 -0
  101. package/esm2020/badge/src/index.mjs +3 -0
  102. package/esm2020/breadcrumb/index.mjs +2 -0
  103. package/esm2020/breadcrumb/mintplayer-ng-bootstrap-breadcrumb.mjs +5 -0
  104. package/esm2020/breadcrumb/src/breadcrumb/breadcrumb.component.mjs +13 -0
  105. package/esm2020/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.mjs +18 -0
  106. package/esm2020/breadcrumb/src/breadcrumb.module.mjs +19 -0
  107. package/esm2020/breadcrumb/src/index.mjs +4 -0
  108. package/esm2020/button-group/index.mjs +2 -0
  109. package/esm2020/button-group/mintplayer-ng-bootstrap-button-group.mjs +5 -0
  110. package/esm2020/button-group/src/button-group/button-group.component.mjs +13 -0
  111. package/esm2020/button-group/src/button-group.module.mjs +18 -0
  112. package/esm2020/button-group/src/index.mjs +3 -0
  113. package/esm2020/calendar/index.mjs +2 -0
  114. package/esm2020/calendar/mintplayer-ng-bootstrap-calendar.mjs +5 -0
  115. package/esm2020/calendar/src/calendar.component.mjs +103 -0
  116. package/esm2020/calendar/src/calendar.module.mjs +37 -0
  117. package/esm2020/calendar/src/index.mjs +3 -0
  118. package/esm2020/card/index.mjs +2 -0
  119. package/esm2020/card/mintplayer-ng-bootstrap-card.mjs +5 -0
  120. package/esm2020/card/src/card/card.component.mjs +11 -0
  121. package/esm2020/card/src/card-header/card-header.component.mjs +11 -0
  122. package/esm2020/card/src/card.module.mjs +27 -0
  123. package/esm2020/card/src/index.mjs +4 -0
  124. package/esm2020/carousel/index.mjs +2 -0
  125. package/esm2020/carousel/mintplayer-ng-bootstrap-carousel.mjs +5 -0
  126. package/esm2020/carousel/src/carousel/carousel.component.mjs +103 -0
  127. package/esm2020/carousel/src/carousel-image/carousel-image.directive.mjs +17 -0
  128. package/esm2020/carousel/src/carousel.module.mjs +29 -0
  129. package/esm2020/carousel/src/index.mjs +4 -0
  130. package/esm2020/close/index.mjs +2 -0
  131. package/esm2020/close/mintplayer-ng-bootstrap-close.mjs +5 -0
  132. package/esm2020/close/src/close.component.mjs +21 -0
  133. package/esm2020/close/src/close.module.mjs +18 -0
  134. package/esm2020/close/src/index.mjs +3 -0
  135. package/esm2020/code-snippet/index.mjs +2 -0
  136. package/esm2020/code-snippet/mintplayer-ng-bootstrap-code-snippet.mjs +5 -0
  137. package/esm2020/code-snippet/src/code-snippet.component.mjs +28 -0
  138. package/esm2020/code-snippet/src/code-snippet.module.mjs +32 -0
  139. package/esm2020/code-snippet/src/index.mjs +3 -0
  140. package/esm2020/context-menu/index.mjs +2 -0
  141. package/esm2020/context-menu/mintplayer-ng-bootstrap-context-menu.mjs +5 -0
  142. package/esm2020/context-menu/src/context-menu.directive.mjs +84 -0
  143. package/esm2020/context-menu/src/context-menu.module.mjs +28 -0
  144. package/esm2020/context-menu/src/index.mjs +3 -0
  145. package/esm2020/copy/index.mjs +2 -0
  146. package/esm2020/copy/mintplayer-ng-bootstrap-copy.mjs +5 -0
  147. package/esm2020/copy/src/copy.directive.mjs +45 -0
  148. package/esm2020/copy/src/copy.module.mjs +24 -0
  149. package/esm2020/copy/src/index.mjs +3 -0
  150. package/esm2020/datatable/index.mjs +2 -0
  151. package/esm2020/datatable/mintplayer-ng-bootstrap-datatable.mjs +5 -0
  152. package/esm2020/datatable/src/datatable/datatable.component.mjs +57 -0
  153. package/esm2020/datatable/src/datatable-column/datatable-column-metadata.mjs +2 -0
  154. package/esm2020/datatable/src/datatable-column/datatable-column.directive.mjs +19 -0
  155. package/esm2020/datatable/src/datatable-column/index.mjs +3 -0
  156. package/esm2020/datatable/src/datatable-settings.mjs +37 -0
  157. package/esm2020/datatable/src/datatable.module.mjs +46 -0
  158. package/esm2020/datatable/src/index.mjs +6 -0
  159. package/esm2020/datatable/src/row-template/row-template.directive.mjs +19 -0
  160. package/esm2020/datepicker/index.mjs +2 -0
  161. package/esm2020/datepicker/mintplayer-ng-bootstrap-datepicker.mjs +5 -0
  162. package/esm2020/datepicker/src/datepicker.component.mjs +45 -0
  163. package/esm2020/datepicker/src/datepicker.module.mjs +32 -0
  164. package/esm2020/datepicker/src/index.mjs +3 -0
  165. package/esm2020/dropdown/index.mjs +2 -0
  166. package/esm2020/dropdown/mintplayer-ng-bootstrap-dropdown.mjs +5 -0
  167. package/esm2020/dropdown/src/dropdown/dropdown.directive.mjs +63 -0
  168. package/esm2020/dropdown/src/dropdown-menu/dropdown-menu.directive.mjs +111 -0
  169. package/esm2020/dropdown/src/dropdown-toggle/dropdown-toggle.directive.mjs +28 -0
  170. package/esm2020/dropdown/src/dropdown.module.mjs +42 -0
  171. package/esm2020/dropdown/src/index.mjs +5 -0
  172. package/esm2020/dropdown-menu/index.mjs +2 -0
  173. package/esm2020/dropdown-menu/mintplayer-ng-bootstrap-dropdown-menu.mjs +5 -0
  174. package/esm2020/dropdown-menu/src/dropdown-item/dropdown-item.component.mjs +19 -0
  175. package/esm2020/dropdown-menu/src/dropdown-menu/dropdown-menu.component.mjs +41 -0
  176. package/esm2020/dropdown-menu/src/dropdown-menu.module.mjs +19 -0
  177. package/esm2020/dropdown-menu/src/index.mjs +4 -0
  178. package/esm2020/enhanced-paste/index.mjs +2 -0
  179. package/esm2020/enhanced-paste/mintplayer-ng-bootstrap-enhanced-paste.mjs +5 -0
  180. package/esm2020/enhanced-paste/src/enhanced-paste.directive.mjs +58 -0
  181. package/esm2020/enhanced-paste/src/enhanced-paste.module.mjs +24 -0
  182. package/esm2020/enhanced-paste/src/index.mjs +3 -0
  183. package/esm2020/file-upload/index.mjs +2 -0
  184. package/esm2020/file-upload/mintplayer-ng-bootstrap-file-upload.mjs +5 -0
  185. package/esm2020/file-upload/src/component/file-upload.component.mjs +84 -0
  186. package/esm2020/file-upload/src/directive/file-upload-template.directive.mjs +18 -0
  187. package/esm2020/file-upload/src/file-upload.mjs +2 -0
  188. package/esm2020/file-upload/src/file-upload.module.mjs +45 -0
  189. package/esm2020/file-upload/src/index.mjs +5 -0
  190. package/esm2020/for/index.mjs +2 -0
  191. package/esm2020/for/mintplayer-ng-bootstrap-for.mjs +5 -0
  192. package/esm2020/for/src/for.directive.mjs +38 -0
  193. package/esm2020/for/src/for.module.mjs +24 -0
  194. package/esm2020/for/src/index.mjs +3 -0
  195. package/esm2020/grid/index.mjs +2 -0
  196. package/esm2020/grid/mintplayer-ng-bootstrap-grid.mjs +5 -0
  197. package/esm2020/grid/src/component/grid.component.mjs +32 -0
  198. package/esm2020/grid/src/directives/column/column.directive.mjs +56 -0
  199. package/esm2020/grid/src/directives/index.mjs +3 -0
  200. package/esm2020/grid/src/directives/row/row.directive.mjs +19 -0
  201. package/esm2020/grid/src/grid.module.mjs +20 -0
  202. package/esm2020/grid/src/index.mjs +4 -0
  203. package/esm2020/index.mjs +2 -3
  204. package/esm2020/lib/interfaces/enum-item.mjs +2 -0
  205. package/esm2020/lib/interfaces/index.mjs +4 -1
  206. package/esm2020/lib/pipes/add-properties/add-properties.module.mjs +4 -4
  207. package/esm2020/lib/pipes/add-properties/add-properties.pipe.mjs +3 -3
  208. package/esm2020/lib/pipes/font-color/font-color.module.mjs +4 -4
  209. package/esm2020/lib/pipes/font-color/font-color.pipe.mjs +3 -3
  210. package/esm2020/lib/pipes/format-bytes/format-bytes.module.mjs +4 -4
  211. package/esm2020/lib/pipes/format-bytes/format-bytes.pipe.mjs +3 -3
  212. package/esm2020/lib/pipes/in-list/in-list.module.mjs +4 -4
  213. package/esm2020/lib/pipes/in-list/in-list.pipe.mjs +3 -3
  214. package/esm2020/lib/pipes/in-list/index.mjs +3 -0
  215. package/esm2020/lib/pipes/index.mjs +5 -1
  216. package/esm2020/lib/pipes/month-name/index.mjs +3 -0
  217. package/esm2020/lib/pipes/month-name/month-name.module.mjs +4 -4
  218. package/esm2020/lib/pipes/month-name/month-name.pipe.mjs +3 -3
  219. package/esm2020/lib/pipes/uc-first/index.mjs +3 -0
  220. package/esm2020/lib/pipes/uc-first/uc-first.module.mjs +4 -4
  221. package/esm2020/lib/pipes/uc-first/uc-first.pipe.mjs +3 -3
  222. package/esm2020/lib/pipes/weekday-name/index.mjs +3 -0
  223. package/esm2020/lib/pipes/weekday-name/weekday-name.module.mjs +4 -4
  224. package/esm2020/lib/pipes/weekday-name/weekday-name.pipe.mjs +3 -3
  225. package/esm2020/lib/services/calendar-month/calendar-month.service.mjs +3 -3
  226. package/esm2020/lib/services/enum/enum.service.mjs +31 -0
  227. package/esm2020/lib/services/index.mjs +4 -0
  228. package/esm2020/lib/services/scroll-offset/scroll-offset.service.mjs +3 -3
  229. package/esm2020/lib/types/index.mjs +2 -1
  230. package/esm2020/list-group/index.mjs +2 -0
  231. package/esm2020/list-group/mintplayer-ng-bootstrap-list-group.mjs +5 -0
  232. package/esm2020/list-group/src/index.mjs +4 -0
  233. package/esm2020/list-group/src/list-group/list-group.component.mjs +19 -0
  234. package/esm2020/list-group/src/list-group-item/list-group-item.component.mjs +15 -0
  235. package/esm2020/list-group/src/list-group.module.mjs +27 -0
  236. package/esm2020/modal/index.mjs +2 -0
  237. package/esm2020/modal/mintplayer-ng-bootstrap-modal.mjs +5 -0
  238. package/esm2020/modal/src/components/index.mjs +3 -0
  239. package/esm2020/modal/src/components/modal/modal.component.mjs +21 -0
  240. package/esm2020/modal/src/components/modal-host/modal-host.component.mjs +82 -0
  241. package/esm2020/modal/src/directives/index.mjs +6 -0
  242. package/esm2020/modal/src/directives/modal/modal.directive.mjs +18 -0
  243. package/esm2020/modal/src/directives/modal-body/modal-body.directive.mjs +19 -0
  244. package/esm2020/modal/src/directives/modal-close/modal-close.directive.mjs +24 -0
  245. package/esm2020/modal/src/directives/modal-footer/modal-footer.directive.mjs +19 -0
  246. package/esm2020/modal/src/directives/modal-header/modal-header.directive.mjs +19 -0
  247. package/esm2020/modal/src/index.mjs +4 -0
  248. package/esm2020/modal/src/modal.module.mjs +71 -0
  249. package/esm2020/modal/src/providers/modal-content.provider.mjs +3 -0
  250. package/esm2020/modal/src/providers/portal-factory.provider.mjs +3 -0
  251. package/esm2020/multiselect/index.mjs +2 -0
  252. package/esm2020/multiselect/mintplayer-ng-bootstrap-multiselect.mjs +5 -0
  253. package/esm2020/multiselect/src/component/multiselect.component.mjs +34 -0
  254. package/esm2020/multiselect/src/directives/button-template/button-template.directive.mjs +18 -0
  255. package/esm2020/multiselect/src/directives/footer-template/footer-template.directive.mjs +18 -0
  256. package/esm2020/multiselect/src/directives/header-template/header-template.directive.mjs +18 -0
  257. package/esm2020/multiselect/src/directives/index.mjs +4 -0
  258. package/esm2020/multiselect/src/index.mjs +4 -0
  259. package/esm2020/multiselect/src/multiselect.module.mjs +55 -0
  260. package/esm2020/navbar/index.mjs +2 -0
  261. package/esm2020/navbar/mintplayer-ng-bootstrap-navbar.mjs +5 -0
  262. package/esm2020/navbar/src/dropdown-toggle/dropdown-toggle.directive.mjs +38 -0
  263. package/esm2020/navbar/src/expand-button/expand-button.directive.mjs +18 -0
  264. package/esm2020/navbar/src/index.mjs +13 -0
  265. package/esm2020/navbar/src/nav-link/nav-link.directive.mjs +29 -0
  266. package/esm2020/navbar/src/navbar/navbar.component.mjs +98 -0
  267. package/esm2020/navbar/src/navbar-brand/navbar-brand.component.mjs +20 -0
  268. package/esm2020/navbar/src/navbar-content/navbar-content.directive.mjs +69 -0
  269. package/esm2020/navbar/src/navbar-dropdown/navbar-dropdown.component.mjs +95 -0
  270. package/esm2020/navbar/src/navbar-item/navbar-item.component.mjs +64 -0
  271. package/esm2020/navbar/src/navbar-nav/navbar-nav.component.mjs +69 -0
  272. package/esm2020/navbar/src/navbar-toggler/navbar-toggler.component.mjs +47 -0
  273. package/esm2020/navbar/src/navbar.module.mjs +73 -0
  274. package/esm2020/offcanvas/index.mjs +2 -0
  275. package/esm2020/offcanvas/mintplayer-ng-bootstrap-offcanvas.mjs +5 -0
  276. package/esm2020/offcanvas/src/components/index.mjs +5 -0
  277. package/esm2020/offcanvas/src/components/offcanvas/offcanvas.component.mjs +111 -0
  278. package/esm2020/offcanvas/src/components/offcanvas-body/offcanvas-body.component.mjs +18 -0
  279. package/esm2020/offcanvas/src/components/offcanvas-header/offcanvas-header.component.mjs +14 -0
  280. package/esm2020/offcanvas/src/components/offcanvas-host/offcanvas-host.component.mjs +142 -0
  281. package/esm2020/offcanvas/src/directives/index.mjs +3 -0
  282. package/esm2020/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.mjs +24 -0
  283. package/esm2020/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.mjs +18 -0
  284. package/esm2020/offcanvas/src/index.mjs +5 -0
  285. package/esm2020/offcanvas/src/offcanvas.module.mjs +66 -0
  286. package/esm2020/offcanvas/src/providers/offcanvas-content.provider.mjs +3 -0
  287. package/esm2020/offcanvas/src/providers/portal-factory.provider.mjs +3 -0
  288. package/esm2020/offcanvas/src/types/index.mjs +2 -0
  289. package/esm2020/offcanvas/src/types/position.mjs +2 -0
  290. package/esm2020/pagination/index.mjs +2 -0
  291. package/esm2020/pagination/mintplayer-ng-bootstrap-pagination.mjs +5 -0
  292. package/esm2020/pagination/src/index.mjs +3 -0
  293. package/esm2020/pagination/src/pagination/pagination.component.mjs +198 -0
  294. package/esm2020/pagination/src/pagination.module.mjs +24 -0
  295. package/esm2020/placeholder/index.mjs +2 -0
  296. package/esm2020/placeholder/mintplayer-ng-bootstrap-placeholder.mjs +5 -0
  297. package/esm2020/placeholder/src/index.mjs +4 -0
  298. package/esm2020/placeholder/src/placeholder/placeholder.component.mjs +26 -0
  299. package/esm2020/placeholder/src/placeholder-field/placeholder-field.directive.mjs +46 -0
  300. package/esm2020/placeholder/src/placeholder.module.mjs +19 -0
  301. package/esm2020/popover/index.mjs +2 -0
  302. package/esm2020/popover/mintplayer-ng-bootstrap-popover.mjs +5 -0
  303. package/esm2020/popover/src/component/popover.component.mjs +56 -0
  304. package/esm2020/popover/src/directives/index.mjs +4 -0
  305. package/esm2020/popover/src/directives/popover/popover.directive.mjs +129 -0
  306. package/esm2020/popover/src/directives/popover-body/popover-body.directive.mjs +19 -0
  307. package/esm2020/popover/src/directives/popover-header/popover-header.directive.mjs +19 -0
  308. package/esm2020/popover/src/index.mjs +4 -0
  309. package/esm2020/popover/src/popover.module.mjs +35 -0
  310. package/esm2020/popover/src/providers/popover-content.provider.mjs +3 -0
  311. package/esm2020/popover/src/providers/portal-factory.provider.mjs +3 -0
  312. package/esm2020/progress-bar/index.mjs +2 -0
  313. package/esm2020/progress-bar/mintplayer-ng-bootstrap-progress-bar.mjs +5 -0
  314. package/esm2020/progress-bar/src/index.mjs +4 -0
  315. package/esm2020/progress-bar/src/progress/progress.component.mjs +31 -0
  316. package/esm2020/progress-bar/src/progress-bar/progress-bar.component.mjs +121 -0
  317. package/esm2020/progress-bar/src/progress-bar.module.mjs +29 -0
  318. package/esm2020/range/index.mjs +2 -0
  319. package/esm2020/range/mintplayer-ng-bootstrap-range.mjs +5 -0
  320. package/esm2020/range/src/component/range.component.mjs +15 -0
  321. package/esm2020/range/src/index.mjs +4 -0
  322. package/esm2020/range/src/range.module.mjs +19 -0
  323. package/esm2020/range/src/value-accessor/range-value-accessor.mjs +62 -0
  324. package/esm2020/rating/index.mjs +2 -0
  325. package/esm2020/rating/mintplayer-ng-bootstrap-rating.mjs +5 -0
  326. package/esm2020/rating/src/index.mjs +3 -0
  327. package/esm2020/rating/src/rating.component.mjs +72 -0
  328. package/esm2020/rating/src/rating.module.mjs +24 -0
  329. package/esm2020/scheduler/index.mjs +2 -0
  330. package/esm2020/scheduler/mintplayer-ng-bootstrap-scheduler.mjs +5 -0
  331. package/esm2020/scheduler/src/components/index.mjs +3 -0
  332. package/esm2020/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +84 -0
  333. package/esm2020/scheduler/src/components/scheduler/scheduler.component.mjs +537 -0
  334. package/esm2020/scheduler/src/constants/available-scales.mjs +12 -0
  335. package/esm2020/scheduler/src/constants/index.mjs +2 -0
  336. package/esm2020/scheduler/src/enums/drag-operation.mjs +8 -0
  337. package/esm2020/scheduler/src/enums/index.mjs +2 -0
  338. package/esm2020/scheduler/src/enums/scheduler-mode.mjs +6 -0
  339. package/esm2020/scheduler/src/index.mjs +6 -0
  340. package/esm2020/scheduler/src/interfaces/drag-operation.mjs +2 -0
  341. package/esm2020/scheduler/src/interfaces/index.mjs +6 -0
  342. package/esm2020/scheduler/src/interfaces/preview-event.mjs +2 -0
  343. package/esm2020/scheduler/src/interfaces/resource-group.mjs +2 -0
  344. package/esm2020/scheduler/src/interfaces/resource-or-group.mjs +2 -0
  345. package/esm2020/scheduler/src/interfaces/resource.mjs +2 -0
  346. package/esm2020/scheduler/src/interfaces/scheduler-event-part.mjs +2 -0
  347. package/esm2020/scheduler/src/interfaces/scheduler-event-with-parts.mjs +2 -0
  348. package/esm2020/scheduler/src/interfaces/scheduler-event.mjs +2 -0
  349. package/esm2020/scheduler/src/interfaces/scheduler-schale.mjs +2 -0
  350. package/esm2020/scheduler/src/interfaces/scheduler-stamp-with-slots.mjs +2 -0
  351. package/esm2020/scheduler/src/interfaces/time-slot.mjs +2 -0
  352. package/esm2020/scheduler/src/interfaces/timeline-options.mjs +2 -0
  353. package/esm2020/scheduler/src/interfaces/timeline-track.mjs +2 -0
  354. package/esm2020/scheduler/src/interfaces/week-options.mjs +2 -0
  355. package/esm2020/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +16 -0
  356. package/esm2020/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +20 -0
  357. package/esm2020/scheduler/src/pipes/date-offset/date-offset.pipe.mjs +20 -0
  358. package/esm2020/scheduler/src/pipes/day-of-week/day-of-week.pipe.mjs +22 -0
  359. package/esm2020/scheduler/src/scheduler.module.mjs +41 -0
  360. package/esm2020/scheduler/src/services/timeline/timeline.service.mjs +65 -0
  361. package/esm2020/scrollspy/index.mjs +2 -0
  362. package/esm2020/scrollspy/mintplayer-ng-bootstrap-scrollspy.mjs +5 -0
  363. package/esm2020/scrollspy/src/component/scrollspy.component.mjs +90 -0
  364. package/esm2020/scrollspy/src/directives/scrollspy.directive.mjs +16 -0
  365. package/esm2020/scrollspy/src/index.mjs +4 -0
  366. package/esm2020/scrollspy/src/scrollspy.module.mjs +29 -0
  367. package/esm2020/select/index.mjs +2 -0
  368. package/esm2020/select/mintplayer-ng-bootstrap-select.mjs +5 -0
  369. package/esm2020/select/src/component/select.component.mjs +85 -0
  370. package/esm2020/select/src/index.mjs +5 -0
  371. package/esm2020/select/src/select.module.mjs +31 -0
  372. package/esm2020/select/src/types/index.mjs +2 -0
  373. package/esm2020/select/src/types/select-size.mjs +2 -0
  374. package/esm2020/select/src/value-accessors/index.mjs +2 -0
  375. package/esm2020/select/src/value-accessors/select-value-accessor.mjs +167 -0
  376. package/esm2020/select2/index.mjs +2 -0
  377. package/esm2020/select2/mintplayer-ng-bootstrap-select2.mjs +5 -0
  378. package/esm2020/select2/src/component/select2.component.mjs +84 -0
  379. package/esm2020/select2/src/directive/item-template.directive.mjs +19 -0
  380. package/esm2020/select2/src/index.mjs +4 -0
  381. package/esm2020/select2/src/select2.module.mjs +45 -0
  382. package/esm2020/snackbar/index.mjs +2 -0
  383. package/esm2020/snackbar/mintplayer-ng-bootstrap-snackbar.mjs +5 -0
  384. package/esm2020/snackbar/src/component/snackbar.component.mjs +35 -0
  385. package/esm2020/snackbar/src/directives/index.mjs +2 -0
  386. package/esm2020/snackbar/src/directives/snackbar-close/snackbar-close.directive.mjs +27 -0
  387. package/esm2020/snackbar/src/index.mjs +6 -0
  388. package/esm2020/snackbar/src/interfaces/index.mjs +2 -0
  389. package/esm2020/snackbar/src/interfaces/snackbar-animation-meta.mjs +2 -0
  390. package/esm2020/snackbar/src/providers/snackbar-content.provider.mjs +3 -0
  391. package/esm2020/snackbar/src/service/snackbar.service.mjs +45 -0
  392. package/esm2020/snackbar/src/snackbar.module.mjs +39 -0
  393. package/esm2020/spinner/index.mjs +2 -0
  394. package/esm2020/spinner/mintplayer-ng-bootstrap-spinner.mjs +5 -0
  395. package/esm2020/spinner/src/index.mjs +3 -0
  396. package/esm2020/spinner/src/spinner.component.mjs +43 -0
  397. package/esm2020/spinner/src/spinner.module.mjs +18 -0
  398. package/esm2020/tab-control/index.mjs +2 -0
  399. package/esm2020/tab-control/mintplayer-ng-bootstrap-tab-control.mjs +5 -0
  400. package/esm2020/tab-control/src/index.mjs +4 -0
  401. package/esm2020/tab-control/src/tab-control/tab-control.component.mjs +28 -0
  402. package/esm2020/tab-control/src/tab-control.module.mjs +29 -0
  403. package/esm2020/tab-control/src/tab-page/tab-page.component.mjs +23 -0
  404. package/esm2020/table/index.mjs +2 -0
  405. package/esm2020/table/mintplayer-ng-bootstrap-table.mjs +5 -0
  406. package/esm2020/table/src/component/table.component.mjs +47 -0
  407. package/esm2020/table/src/index.mjs +3 -0
  408. package/esm2020/table/src/table.module.mjs +18 -0
  409. package/esm2020/timepicker/index.mjs +2 -0
  410. package/esm2020/timepicker/mintplayer-ng-bootstrap-timepicker.mjs +5 -0
  411. package/esm2020/timepicker/src/index.mjs +3 -0
  412. package/esm2020/timepicker/src/timepicker.component.mjs +110 -0
  413. package/esm2020/timepicker/src/timepicker.module.mjs +40 -0
  414. package/esm2020/toast/index.mjs +2 -0
  415. package/esm2020/toast/mintplayer-ng-bootstrap-toast.mjs +5 -0
  416. package/esm2020/toast/src/components/index.mjs +5 -0
  417. package/esm2020/toast/src/components/toast/toast.component.mjs +16 -0
  418. package/esm2020/toast/src/components/toast-body/toast-body.component.mjs +20 -0
  419. package/esm2020/toast/src/components/toast-container/toast-container.component.mjs +22 -0
  420. package/esm2020/toast/src/components/toast-header/toast-header.component.mjs +17 -0
  421. package/esm2020/toast/src/directives/index.mjs +2 -0
  422. package/esm2020/toast/src/directives/toast-close/toast-close.directive.mjs +32 -0
  423. package/esm2020/toast/src/index.mjs +5 -0
  424. package/esm2020/toast/src/providers/portal-factory.provider.mjs +3 -0
  425. package/esm2020/toast/src/services/index.mjs +2 -0
  426. package/esm2020/toast/src/services/toast/toast.service.mjs +56 -0
  427. package/esm2020/toast/src/toast.module.mjs +72 -0
  428. package/esm2020/toggle-button/index.mjs +2 -0
  429. package/esm2020/toggle-button/mintplayer-ng-bootstrap-toggle-button.mjs +5 -0
  430. package/esm2020/toggle-button/src/component/toggle-button.component.mjs +154 -0
  431. package/esm2020/toggle-button/src/directives/index.mjs +2 -0
  432. package/esm2020/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.mjs +19 -0
  433. package/esm2020/toggle-button/src/index.mjs +6 -0
  434. package/esm2020/toggle-button/src/toggle-button.module.mjs +34 -0
  435. package/esm2020/toggle-button/src/types/check-style.mjs +2 -0
  436. package/esm2020/toggle-button/src/types/index.mjs +2 -0
  437. package/esm2020/toggle-button/src/value-accessor/toggle-button-value-accessor.mjs +108 -0
  438. package/esm2020/tooltip/index.mjs +2 -0
  439. package/esm2020/tooltip/mintplayer-ng-bootstrap-tooltip.mjs +5 -0
  440. package/esm2020/tooltip/src/component/tooltip.component.mjs +29 -0
  441. package/esm2020/tooltip/src/directive/tooltip.directive.mjs +110 -0
  442. package/esm2020/tooltip/src/index.mjs +4 -0
  443. package/esm2020/tooltip/src/providers/tooltip-content.provider.mjs +3 -0
  444. package/esm2020/tooltip/src/tooltip.module.mjs +31 -0
  445. package/esm2020/typeahead/index.mjs +2 -0
  446. package/esm2020/typeahead/mintplayer-ng-bootstrap-typeahead.mjs +5 -0
  447. package/esm2020/typeahead/src/index.mjs +3 -0
  448. package/esm2020/typeahead/src/typeahead.component.mjs +80 -0
  449. package/esm2020/typeahead/src/typeahead.module.mjs +40 -0
  450. package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs +131 -0
  451. package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs.map +1 -0
  452. package/fesm2015/mintplayer-ng-bootstrap-alert.mjs +87 -0
  453. package/fesm2015/mintplayer-ng-bootstrap-alert.mjs.map +1 -0
  454. package/fesm2015/mintplayer-ng-bootstrap-badge.mjs +52 -0
  455. package/fesm2015/mintplayer-ng-bootstrap-badge.mjs.map +1 -0
  456. package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs +51 -0
  457. package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -0
  458. package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs +35 -0
  459. package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs.map +1 -0
  460. package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs +143 -0
  461. package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs.map +1 -0
  462. package/fesm2015/mintplayer-ng-bootstrap-card.mjs +50 -0
  463. package/fesm2015/mintplayer-ng-bootstrap-card.mjs.map +1 -0
  464. package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs +149 -0
  465. package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs.map +1 -0
  466. package/fesm2015/mintplayer-ng-bootstrap-close.mjs +43 -0
  467. package/fesm2015/mintplayer-ng-bootstrap-close.mjs.map +1 -0
  468. package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs +63 -0
  469. package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -0
  470. package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs +117 -0
  471. package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -0
  472. package/fesm2015/mintplayer-ng-bootstrap-copy.mjs +75 -0
  473. package/fesm2015/mintplayer-ng-bootstrap-copy.mjs.map +1 -0
  474. package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs +171 -0
  475. package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs.map +1 -0
  476. package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs +81 -0
  477. package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -0
  478. package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs +81 -0
  479. package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -0
  480. package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs +235 -0
  481. package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -0
  482. package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs +85 -0
  483. package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -0
  484. package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs +146 -0
  485. package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -0
  486. package/fesm2015/mintplayer-ng-bootstrap-for.mjs +66 -0
  487. package/fesm2015/mintplayer-ng-bootstrap-for.mjs.map +1 -0
  488. package/fesm2015/mintplayer-ng-bootstrap-grid.mjs +124 -0
  489. package/fesm2015/mintplayer-ng-bootstrap-grid.mjs.map +1 -0
  490. package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs +61 -0
  491. package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs.map +1 -0
  492. package/fesm2015/mintplayer-ng-bootstrap-modal.mjs +258 -0
  493. package/fesm2015/mintplayer-ng-bootstrap-modal.mjs.map +1 -0
  494. package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs +132 -0
  495. package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -0
  496. package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs +581 -0
  497. package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs.map +1 -0
  498. package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs +380 -0
  499. package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -0
  500. package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs +226 -0
  501. package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs.map +1 -0
  502. package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs +89 -0
  503. package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -0
  504. package/fesm2015/mintplayer-ng-bootstrap-popover.mjs +254 -0
  505. package/fesm2015/mintplayer-ng-bootstrap-popover.mjs.map +1 -0
  506. package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs +182 -0
  507. package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -0
  508. package/fesm2015/mintplayer-ng-bootstrap-range.mjs +95 -0
  509. package/fesm2015/mintplayer-ng-bootstrap-range.mjs.map +1 -0
  510. package/fesm2015/mintplayer-ng-bootstrap-rating.mjs +100 -0
  511. package/fesm2015/mintplayer-ng-bootstrap-rating.mjs.map +1 -0
  512. package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs +807 -0
  513. package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -0
  514. package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs +136 -0
  515. package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -0
  516. package/fesm2015/mintplayer-ng-bootstrap-select.mjs +284 -0
  517. package/fesm2015/mintplayer-ng-bootstrap-select.mjs.map +1 -0
  518. package/fesm2015/mintplayer-ng-bootstrap-select2.mjs +147 -0
  519. package/fesm2015/mintplayer-ng-bootstrap-select2.mjs.map +1 -0
  520. package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs +142 -0
  521. package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs.map +1 -0
  522. package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs +65 -0
  523. package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs.map +1 -0
  524. package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs +77 -0
  525. package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -0
  526. package/fesm2015/mintplayer-ng-bootstrap-table.mjs +69 -0
  527. package/fesm2015/mintplayer-ng-bootstrap-table.mjs.map +1 -0
  528. package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs +154 -0
  529. package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -0
  530. package/fesm2015/mintplayer-ng-bootstrap-toast.mjs +219 -0
  531. package/fesm2015/mintplayer-ng-bootstrap-toast.mjs.map +1 -0
  532. package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs +309 -0
  533. package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -0
  534. package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs +172 -0
  535. package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -0
  536. package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs +124 -0
  537. package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -0
  538. package/fesm2015/mintplayer-ng-bootstrap.mjs +270 -6561
  539. package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
  540. package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs +131 -0
  541. package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs.map +1 -0
  542. package/fesm2020/mintplayer-ng-bootstrap-alert.mjs +87 -0
  543. package/fesm2020/mintplayer-ng-bootstrap-alert.mjs.map +1 -0
  544. package/fesm2020/mintplayer-ng-bootstrap-badge.mjs +52 -0
  545. package/fesm2020/mintplayer-ng-bootstrap-badge.mjs.map +1 -0
  546. package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs +51 -0
  547. package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -0
  548. package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs +35 -0
  549. package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs.map +1 -0
  550. package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs +143 -0
  551. package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs.map +1 -0
  552. package/fesm2020/mintplayer-ng-bootstrap-card.mjs +50 -0
  553. package/fesm2020/mintplayer-ng-bootstrap-card.mjs.map +1 -0
  554. package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs +149 -0
  555. package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs.map +1 -0
  556. package/fesm2020/mintplayer-ng-bootstrap-close.mjs +43 -0
  557. package/fesm2020/mintplayer-ng-bootstrap-close.mjs.map +1 -0
  558. package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs +63 -0
  559. package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -0
  560. package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs +115 -0
  561. package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -0
  562. package/fesm2020/mintplayer-ng-bootstrap-copy.mjs +72 -0
  563. package/fesm2020/mintplayer-ng-bootstrap-copy.mjs.map +1 -0
  564. package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs +172 -0
  565. package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs.map +1 -0
  566. package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs +81 -0
  567. package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -0
  568. package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs +79 -0
  569. package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -0
  570. package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs +232 -0
  571. package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -0
  572. package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs +85 -0
  573. package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -0
  574. package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs +146 -0
  575. package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -0
  576. package/fesm2020/mintplayer-ng-bootstrap-for.mjs +66 -0
  577. package/fesm2020/mintplayer-ng-bootstrap-for.mjs.map +1 -0
  578. package/fesm2020/mintplayer-ng-bootstrap-grid.mjs +124 -0
  579. package/fesm2020/mintplayer-ng-bootstrap-grid.mjs.map +1 -0
  580. package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs +61 -0
  581. package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs.map +1 -0
  582. package/fesm2020/mintplayer-ng-bootstrap-modal.mjs +254 -0
  583. package/fesm2020/mintplayer-ng-bootstrap-modal.mjs.map +1 -0
  584. package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs +132 -0
  585. package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -0
  586. package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs +570 -0
  587. package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs.map +1 -0
  588. package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs +376 -0
  589. package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -0
  590. package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs +226 -0
  591. package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs.map +1 -0
  592. package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs +89 -0
  593. package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -0
  594. package/fesm2020/mintplayer-ng-bootstrap-popover.mjs +250 -0
  595. package/fesm2020/mintplayer-ng-bootstrap-popover.mjs.map +1 -0
  596. package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs +182 -0
  597. package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -0
  598. package/fesm2020/mintplayer-ng-bootstrap-range.mjs +95 -0
  599. package/fesm2020/mintplayer-ng-bootstrap-range.mjs.map +1 -0
  600. package/fesm2020/mintplayer-ng-bootstrap-rating.mjs +100 -0
  601. package/fesm2020/mintplayer-ng-bootstrap-rating.mjs.map +1 -0
  602. package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs +807 -0
  603. package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -0
  604. package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs +133 -0
  605. package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -0
  606. package/fesm2020/mintplayer-ng-bootstrap-select.mjs +282 -0
  607. package/fesm2020/mintplayer-ng-bootstrap-select.mjs.map +1 -0
  608. package/fesm2020/mintplayer-ng-bootstrap-select2.mjs +147 -0
  609. package/fesm2020/mintplayer-ng-bootstrap-select2.mjs.map +1 -0
  610. package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs +139 -0
  611. package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs.map +1 -0
  612. package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs +65 -0
  613. package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs.map +1 -0
  614. package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs +77 -0
  615. package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -0
  616. package/fesm2020/mintplayer-ng-bootstrap-table.mjs +69 -0
  617. package/fesm2020/mintplayer-ng-bootstrap-table.mjs.map +1 -0
  618. package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs +154 -0
  619. package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -0
  620. package/fesm2020/mintplayer-ng-bootstrap-toast.mjs +217 -0
  621. package/fesm2020/mintplayer-ng-bootstrap-toast.mjs.map +1 -0
  622. package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs +309 -0
  623. package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -0
  624. package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs +168 -0
  625. package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -0
  626. package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs +124 -0
  627. package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -0
  628. package/fesm2020/mintplayer-ng-bootstrap.mjs +270 -6517
  629. package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
  630. package/file-upload/index.d.ts +1 -0
  631. package/file-upload/src/component/file-upload.component.d.ts +19 -0
  632. package/file-upload/src/directive/file-upload-template.directive.d.ts +8 -0
  633. package/{lib/components/file-upload → file-upload/src}/file-upload.d.ts +0 -0
  634. package/file-upload/src/file-upload.module.d.ts +13 -0
  635. package/{lib/components/file-upload → file-upload/src}/index.d.ts +0 -0
  636. package/for/index.d.ts +1 -0
  637. package/for/src/for.directive.d.ts +8 -0
  638. package/{lib/components/for → for/src}/for.module.d.ts +0 -0
  639. package/{lib/components/for → for/src}/index.d.ts +0 -0
  640. package/grid/index.d.ts +1 -0
  641. package/grid/src/component/grid.component.d.ts +12 -0
  642. package/grid/src/directives/column/column.directive.d.ts +12 -0
  643. package/{lib/components/grid → grid/src}/directives/index.d.ts +0 -0
  644. package/grid/src/directives/row/row.directive.d.ts +6 -0
  645. package/{lib/components/grid → grid/src}/grid.module.d.ts +0 -0
  646. package/{lib/components/grid → grid/src}/index.d.ts +0 -0
  647. package/index.d.ts +1 -2
  648. package/lib/interfaces/enum-item.d.ts +4 -0
  649. package/lib/interfaces/index.d.ts +3 -0
  650. package/lib/pipes/in-list/index.d.ts +2 -0
  651. package/lib/pipes/index.d.ts +4 -0
  652. package/lib/pipes/month-name/index.d.ts +2 -0
  653. package/lib/pipes/uc-first/index.d.ts +2 -0
  654. package/lib/pipes/weekday-name/index.d.ts +2 -0
  655. package/lib/services/enum/enum.service.d.ts +9 -0
  656. package/lib/services/index.d.ts +3 -0
  657. package/lib/types/index.d.ts +1 -0
  658. package/list-group/index.d.ts +1 -0
  659. package/{lib/components/list-group → list-group/src}/index.d.ts +0 -0
  660. package/list-group/src/list-group/list-group.component.d.ts +10 -0
  661. package/list-group/src/list-group-item/list-group-item.component.d.ts +8 -0
  662. package/{lib/components/list-group → list-group/src}/list-group.module.d.ts +0 -0
  663. package/modal/index.d.ts +1 -0
  664. package/{lib/components/modal → modal/src}/components/index.d.ts +0 -0
  665. package/modal/src/components/modal/modal.component.d.ts +9 -0
  666. package/modal/src/components/modal-host/modal-host.component.d.ts +27 -0
  667. package/{lib/components/modal → modal/src}/directives/index.d.ts +0 -0
  668. package/modal/src/directives/modal/modal.directive.d.ts +8 -0
  669. package/modal/src/directives/modal-body/modal-body.directive.d.ts +6 -0
  670. package/modal/src/directives/modal-close/modal-close.directive.d.ts +9 -0
  671. package/modal/src/directives/modal-footer/modal-footer.directive.d.ts +6 -0
  672. package/modal/src/directives/modal-header/modal-header.directive.d.ts +6 -0
  673. package/{lib/components/modal → modal/src}/index.d.ts +0 -0
  674. package/{lib/components/modal → modal/src}/modal.module.d.ts +0 -0
  675. package/{lib/components/modal → modal/src}/providers/modal-content.provider.d.ts +0 -0
  676. package/{lib/components/modal → modal/src}/providers/portal-factory.provider.d.ts +0 -0
  677. package/multiselect/index.d.ts +1 -0
  678. package/multiselect/src/component/multiselect.component.d.ts +13 -0
  679. package/multiselect/src/directives/button-template/button-template.directive.d.ts +8 -0
  680. package/multiselect/src/directives/footer-template/footer-template.directive.d.ts +8 -0
  681. package/multiselect/src/directives/header-template/header-template.directive.d.ts +8 -0
  682. package/{lib/components/multiselect → multiselect/src}/directives/index.d.ts +0 -0
  683. package/{lib/components/multiselect → multiselect/src}/index.d.ts +0 -0
  684. package/multiselect/src/multiselect.module.d.ts +15 -0
  685. package/navbar/index.d.ts +1 -0
  686. package/navbar/src/dropdown-toggle/dropdown-toggle.directive.d.ts +13 -0
  687. package/navbar/src/expand-button/expand-button.directive.d.ts +8 -0
  688. package/{lib/components/navbar → navbar/src}/index.d.ts +0 -0
  689. package/navbar/src/nav-link/nav-link.directive.d.ts +9 -0
  690. package/navbar/src/navbar/navbar.component.d.ts +27 -0
  691. package/navbar/src/navbar-brand/navbar-brand.component.d.ts +7 -0
  692. package/navbar/src/navbar-content/navbar-content.directive.d.ts +18 -0
  693. package/navbar/src/navbar-dropdown/navbar-dropdown.component.d.ts +27 -0
  694. package/navbar/src/navbar-item/navbar-item.component.d.ts +16 -0
  695. package/navbar/src/navbar-nav/navbar-nav.component.d.ts +19 -0
  696. package/navbar/src/navbar-toggler/navbar-toggler.component.d.ts +13 -0
  697. package/{lib/components/navbar → navbar/src}/navbar.module.d.ts +0 -0
  698. package/offcanvas/index.d.ts +1 -0
  699. package/{lib/components/offcanvas → offcanvas/src}/components/index.d.ts +0 -0
  700. package/offcanvas/src/components/offcanvas/offcanvas.component.d.ts +34 -0
  701. package/offcanvas/src/components/offcanvas-body/offcanvas-body.component.d.ts +9 -0
  702. package/offcanvas/src/components/offcanvas-header/offcanvas-header.component.d.ts +8 -0
  703. package/offcanvas/src/components/offcanvas-host/offcanvas-host.component.d.ts +37 -0
  704. package/{lib/components/offcanvas → offcanvas/src}/directives/index.d.ts +0 -0
  705. package/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.d.ts +9 -0
  706. package/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.d.ts +8 -0
  707. package/{lib/components/offcanvas → offcanvas/src}/index.d.ts +0 -0
  708. package/{lib/components/offcanvas → offcanvas/src}/offcanvas.module.d.ts +0 -0
  709. package/{lib/components/offcanvas → offcanvas/src}/providers/offcanvas-content.provider.d.ts +0 -0
  710. package/{lib/components/offcanvas → offcanvas/src}/providers/portal-factory.provider.d.ts +0 -0
  711. package/{lib/components/offcanvas → offcanvas/src}/types/index.d.ts +0 -0
  712. package/{lib/components/offcanvas → offcanvas/src}/types/position.d.ts +0 -0
  713. package/package.json +363 -10
  714. package/pagination/index.d.ts +1 -0
  715. package/{lib/components/pagination → pagination/src}/index.d.ts +0 -0
  716. package/pagination/src/pagination/pagination.component.d.ts +48 -0
  717. package/{lib/components/pagination → pagination/src}/pagination.module.d.ts +0 -0
  718. package/placeholder/index.d.ts +1 -0
  719. package/{lib/components/placeholder → placeholder/src}/index.d.ts +0 -0
  720. package/placeholder/src/placeholder/placeholder.component.d.ts +11 -0
  721. package/placeholder/src/placeholder-field/placeholder-field.directive.d.ts +16 -0
  722. package/{lib/components/placeholder → placeholder/src}/placeholder.module.d.ts +0 -0
  723. package/popover/index.d.ts +1 -0
  724. package/popover/src/component/popover.component.d.ts +19 -0
  725. package/{lib/components/popover → popover/src}/directives/index.d.ts +0 -0
  726. package/popover/src/directives/popover/popover.directive.d.ts +27 -0
  727. package/popover/src/directives/popover-body/popover-body.directive.d.ts +6 -0
  728. package/popover/src/directives/popover-header/popover-header.directive.d.ts +6 -0
  729. package/{lib/components/popover → popover/src}/index.d.ts +0 -0
  730. package/{lib/components/popover → popover/src}/popover.module.d.ts +0 -0
  731. package/{lib/components/popover → popover/src}/providers/popover-content.provider.d.ts +0 -0
  732. package/{lib/components/popover → popover/src}/providers/portal-factory.provider.d.ts +0 -0
  733. package/progress-bar/index.d.ts +1 -0
  734. package/{lib/components/progress-bar → progress-bar/src}/index.d.ts +0 -0
  735. package/progress-bar/src/progress/progress.component.d.ts +8 -0
  736. package/progress-bar/src/progress-bar/progress-bar.component.d.ts +31 -0
  737. package/{lib/components/progress-bar → progress-bar/src}/progress-bar.module.d.ts +0 -0
  738. package/range/index.d.ts +1 -0
  739. package/range/src/component/range.component.d.ts +8 -0
  740. package/{lib/components/range → range/src}/index.d.ts +0 -0
  741. package/{lib/components/range → range/src}/range.module.d.ts +0 -0
  742. package/range/src/value-accessor/range-value-accessor.d.ts +20 -0
  743. package/rating/index.d.ts +1 -0
  744. package/{lib/components/rating → rating/src}/index.d.ts +0 -0
  745. package/rating/src/rating.component.d.ts +22 -0
  746. package/{lib/components/rating → rating/src}/rating.module.d.ts +0 -0
  747. package/scheduler/index.d.ts +1 -0
  748. package/{lib/components/scheduler → scheduler/src}/components/index.d.ts +0 -0
  749. package/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.d.ts +26 -0
  750. package/scheduler/src/components/scheduler/scheduler.component.d.ts +86 -0
  751. package/{lib/components/scheduler → scheduler/src}/constants/available-scales.d.ts +0 -0
  752. package/{lib/components/scheduler → scheduler/src}/constants/index.d.ts +0 -0
  753. package/{lib/components/scheduler → scheduler/src}/enums/drag-operation.d.ts +0 -0
  754. package/{lib/components/scheduler → scheduler/src}/enums/index.d.ts +0 -0
  755. package/{lib/components/scheduler → scheduler/src}/enums/scheduler-mode.d.ts +0 -0
  756. package/{lib/components/scheduler → scheduler/src}/index.d.ts +0 -0
  757. package/{lib/components/scheduler → scheduler/src}/interfaces/drag-operation.d.ts +0 -0
  758. package/{lib/components/scheduler → scheduler/src}/interfaces/index.d.ts +0 -0
  759. package/{lib/components/scheduler → scheduler/src}/interfaces/preview-event.d.ts +0 -0
  760. package/{lib/components/scheduler → scheduler/src}/interfaces/resource-group.d.ts +0 -0
  761. package/{lib/components/scheduler → scheduler/src}/interfaces/resource-or-group.d.ts +0 -0
  762. package/{lib/components/scheduler → scheduler/src}/interfaces/resource.d.ts +0 -0
  763. package/{lib/components/scheduler → scheduler/src}/interfaces/scheduler-event-part.d.ts +0 -0
  764. package/{lib/components/scheduler → scheduler/src}/interfaces/scheduler-event-with-parts.d.ts +0 -0
  765. package/{lib/components/scheduler → scheduler/src}/interfaces/scheduler-event.d.ts +0 -0
  766. package/{lib/components/scheduler → scheduler/src}/interfaces/scheduler-schale.d.ts +0 -0
  767. package/{lib/components/scheduler → scheduler/src}/interfaces/scheduler-stamp-with-slots.d.ts +0 -0
  768. package/{lib/components/scheduler → scheduler/src}/interfaces/time-slot.d.ts +0 -0
  769. package/{lib/components/scheduler → scheduler/src}/interfaces/timeline-options.d.ts +0 -0
  770. package/{lib/components/scheduler → scheduler/src}/interfaces/timeline-track.d.ts +0 -0
  771. package/{lib/components/scheduler → scheduler/src}/interfaces/week-options.d.ts +0 -0
  772. package/{lib/components/scheduler → scheduler/src}/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.d.ts +0 -0
  773. package/{lib/components/scheduler → scheduler/src}/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.d.ts +0 -0
  774. package/{lib/components/scheduler → scheduler/src}/pipes/date-offset/date-offset.pipe.d.ts +0 -0
  775. package/{lib/components/scheduler → scheduler/src}/pipes/day-of-week/day-of-week.pipe.d.ts +0 -0
  776. package/{lib/components/scheduler → scheduler/src}/scheduler.module.d.ts +0 -0
  777. package/{lib/components/scheduler → scheduler/src}/services/timeline/timeline.service.d.ts +0 -0
  778. package/scrollspy/index.d.ts +1 -0
  779. package/scrollspy/src/component/scrollspy.component.d.ts +25 -0
  780. package/scrollspy/src/directives/scrollspy.directive.d.ts +8 -0
  781. package/{lib/components/scrollspy → scrollspy/src}/index.d.ts +0 -0
  782. package/{lib/components/scrollspy → scrollspy/src}/scrollspy.module.d.ts +0 -0
  783. package/select/index.d.ts +1 -0
  784. package/select/src/component/select.component.d.ts +26 -0
  785. package/{lib/components/select → select/src}/index.d.ts +0 -0
  786. package/{lib/components/select → select/src}/select.module.d.ts +0 -0
  787. package/{lib/components/select → select/src}/types/index.d.ts +0 -0
  788. package/{lib/components/select → select/src}/types/select-size.d.ts +0 -0
  789. package/{lib/components/select → select/src}/value-accessors/index.d.ts +0 -0
  790. package/select/src/value-accessors/select-value-accessor.d.ts +44 -0
  791. package/select2/index.d.ts +1 -0
  792. package/select2/src/component/select2.component.d.ts +25 -0
  793. package/select2/src/directive/item-template.directive.d.ts +9 -0
  794. package/{lib/components/select2 → select2/src}/index.d.ts +0 -0
  795. package/select2/src/select2.module.d.ts +13 -0
  796. package/snackbar/index.d.ts +1 -0
  797. package/snackbar/src/component/snackbar.component.d.ts +15 -0
  798. package/{lib/components/snackbar → snackbar/src}/directives/index.d.ts +0 -0
  799. package/snackbar/src/directives/snackbar-close/snackbar-close.directive.d.ts +11 -0
  800. package/{lib/components/snackbar → snackbar/src}/index.d.ts +0 -0
  801. package/{lib/components/snackbar → snackbar/src}/interfaces/index.d.ts +0 -0
  802. package/{lib/components/snackbar → snackbar/src}/interfaces/snackbar-animation-meta.d.ts +0 -0
  803. package/{lib/components/snackbar → snackbar/src}/providers/snackbar-content.provider.d.ts +0 -0
  804. package/{lib/components/snackbar → snackbar/src}/service/snackbar.service.d.ts +0 -0
  805. package/{lib/components/snackbar → snackbar/src}/snackbar.module.d.ts +0 -0
  806. package/spinner/index.d.ts +1 -0
  807. package/{lib/components/spinner → spinner/src}/index.d.ts +0 -0
  808. package/spinner/src/spinner.component.d.ts +19 -0
  809. package/{lib/components/spinner → spinner/src}/spinner.module.d.ts +0 -0
  810. package/tab-control/index.d.ts +1 -0
  811. package/{lib/components/tab-control → tab-control/src}/index.d.ts +0 -0
  812. package/tab-control/src/tab-control/tab-control.component.d.ts +10 -0
  813. package/{lib/components/tab-control → tab-control/src}/tab-control.module.d.ts +0 -0
  814. package/tab-control/src/tab-page/tab-page.component.d.ts +11 -0
  815. package/table/index.d.ts +1 -0
  816. package/table/src/component/table.component.d.ts +15 -0
  817. package/{lib/components/table → table/src}/index.d.ts +0 -0
  818. package/{lib/components/table → table/src}/table.module.d.ts +0 -0
  819. package/timepicker/index.d.ts +1 -0
  820. package/{lib/components/timepicker → timepicker/src}/index.d.ts +0 -0
  821. package/timepicker/src/timepicker.component.d.ts +25 -0
  822. package/timepicker/src/timepicker.module.d.ts +12 -0
  823. package/toast/index.d.ts +1 -0
  824. package/{lib/components/toast → toast/src}/components/index.d.ts +0 -0
  825. package/toast/src/components/toast/toast.component.d.ts +6 -0
  826. package/toast/src/components/toast-body/toast-body.component.d.ts +7 -0
  827. package/toast/src/components/toast-container/toast-container.component.d.ts +9 -0
  828. package/toast/src/components/toast-header/toast-header.component.d.ts +7 -0
  829. package/{lib/components/toast → toast/src}/directives/index.d.ts +0 -0
  830. package/toast/src/directives/toast-close/toast-close.directive.d.ts +12 -0
  831. package/{lib/components/toast → toast/src}/index.d.ts +0 -0
  832. package/{lib/components/toast → toast/src}/providers/portal-factory.provider.d.ts +0 -0
  833. package/{lib/components/toast → toast/src}/services/index.d.ts +0 -0
  834. package/{lib/components/toast → toast/src}/services/toast/toast.service.d.ts +0 -0
  835. package/toast/src/toast.module.d.ts +14 -0
  836. package/toggle-button/index.d.ts +1 -0
  837. package/toggle-button/src/component/toggle-button.component.d.ts +36 -0
  838. package/{lib/components/toggle-button → toggle-button/src}/directives/index.d.ts +0 -0
  839. package/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.d.ts +9 -0
  840. package/{lib/components/toggle-button → toggle-button/src}/index.d.ts +0 -0
  841. package/{lib/components/toggle-button → toggle-button/src}/toggle-button.module.d.ts +0 -0
  842. package/{lib/components/toggle-button → toggle-button/src}/types/check-style.d.ts +0 -0
  843. package/{lib/components/toggle-button → toggle-button/src}/types/index.d.ts +0 -0
  844. package/toggle-button/src/value-accessor/toggle-button-value-accessor.d.ts +20 -0
  845. package/tooltip/index.d.ts +1 -0
  846. package/tooltip/src/component/tooltip.component.d.ts +12 -0
  847. package/tooltip/src/directive/tooltip.directive.d.ts +20 -0
  848. package/{lib/components/tooltip → tooltip/src}/index.d.ts +0 -0
  849. package/{lib/components/tooltip → tooltip/src}/providers/tooltip-content.provider.d.ts +0 -0
  850. package/{lib/components/tooltip → tooltip/src}/tooltip.module.d.ts +0 -0
  851. package/typeahead/index.d.ts +1 -0
  852. package/{lib/components/typeahead → typeahead/src}/index.d.ts +0 -0
  853. package/typeahead/src/typeahead.component.d.ts +26 -0
  854. package/typeahead/src/typeahead.module.d.ts +12 -0
  855. package/esm2020/lib/components/accordion/accordion/accordion.component.mjs +0 -21
  856. package/esm2020/lib/components/accordion/accordion-tab/accordion-tab.component.mjs +0 -63
  857. package/esm2020/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.mjs +0 -20
  858. package/esm2020/lib/components/accordion/accordion.module.mjs +0 -34
  859. package/esm2020/lib/components/accordion/index.mjs +0 -5
  860. package/esm2020/lib/components/alert/alert/alert.component.mjs +0 -41
  861. package/esm2020/lib/components/alert/alert-close/alert-close.component.mjs +0 -20
  862. package/esm2020/lib/components/alert/alert.module.mjs +0 -27
  863. package/esm2020/lib/components/alert/index.mjs +0 -4
  864. package/esm2020/lib/components/badge/badge.component.mjs +0 -30
  865. package/esm2020/lib/components/badge/badge.module.mjs +0 -18
  866. package/esm2020/lib/components/badge/index.mjs +0 -3
  867. package/esm2020/lib/components/breadcrumb/breadcrumb/breadcrumb.component.mjs +0 -13
  868. package/esm2020/lib/components/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +0 -18
  869. package/esm2020/lib/components/breadcrumb/breadcrumb.module.mjs +0 -19
  870. package/esm2020/lib/components/breadcrumb/index.mjs +0 -4
  871. package/esm2020/lib/components/button-group/button-group/button-group.component.mjs +0 -13
  872. package/esm2020/lib/components/button-group/button-group.module.mjs +0 -18
  873. package/esm2020/lib/components/button-group/index.mjs +0 -3
  874. package/esm2020/lib/components/calendar/calendar.component.mjs +0 -105
  875. package/esm2020/lib/components/calendar/calendar.module.mjs +0 -36
  876. package/esm2020/lib/components/calendar/index.mjs +0 -3
  877. package/esm2020/lib/components/card/card/card.component.mjs +0 -11
  878. package/esm2020/lib/components/card/card-header/card-header.component.mjs +0 -11
  879. package/esm2020/lib/components/card/card.module.mjs +0 -27
  880. package/esm2020/lib/components/card/index.mjs +0 -4
  881. package/esm2020/lib/components/carousel/carousel/carousel.component.mjs +0 -103
  882. package/esm2020/lib/components/carousel/carousel-image/carousel-image.directive.mjs +0 -17
  883. package/esm2020/lib/components/carousel/carousel.module.mjs +0 -29
  884. package/esm2020/lib/components/carousel/index.mjs +0 -4
  885. package/esm2020/lib/components/close/close.component.mjs +0 -21
  886. package/esm2020/lib/components/close/close.module.mjs +0 -18
  887. package/esm2020/lib/components/close/index.mjs +0 -3
  888. package/esm2020/lib/components/code-snippet/code-snippet.component.mjs +0 -28
  889. package/esm2020/lib/components/code-snippet/code-snippet.module.mjs +0 -32
  890. package/esm2020/lib/components/code-snippet/index.mjs +0 -3
  891. package/esm2020/lib/components/context-menu/context-menu.directive.mjs +0 -84
  892. package/esm2020/lib/components/context-menu/context-menu.module.mjs +0 -28
  893. package/esm2020/lib/components/context-menu/index.mjs +0 -3
  894. package/esm2020/lib/components/copy/copy.directive.mjs +0 -45
  895. package/esm2020/lib/components/copy/copy.module.mjs +0 -24
  896. package/esm2020/lib/components/copy/index.mjs +0 -3
  897. package/esm2020/lib/components/datatable/datatable/datatable.component.mjs +0 -59
  898. package/esm2020/lib/components/datatable/datatable-column/datatable-column-metadata.mjs +0 -2
  899. package/esm2020/lib/components/datatable/datatable-column/datatable-column.directive.mjs +0 -19
  900. package/esm2020/lib/components/datatable/datatable-settings.mjs +0 -37
  901. package/esm2020/lib/components/datatable/datatable.module.mjs +0 -46
  902. package/esm2020/lib/components/datatable/index.mjs +0 -6
  903. package/esm2020/lib/components/datatable/row-template/row-template.directive.mjs +0 -19
  904. package/esm2020/lib/components/datepicker/datepicker.component.mjs +0 -47
  905. package/esm2020/lib/components/datepicker/datepicker.module.mjs +0 -32
  906. package/esm2020/lib/components/datepicker/index.mjs +0 -3
  907. package/esm2020/lib/components/dropdown/dropdown/dropdown.directive.mjs +0 -63
  908. package/esm2020/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.mjs +0 -111
  909. package/esm2020/lib/components/dropdown/dropdown-toggle/dropdown-toggle.directive.mjs +0 -28
  910. package/esm2020/lib/components/dropdown/dropdown.module.mjs +0 -42
  911. package/esm2020/lib/components/dropdown/index.mjs +0 -5
  912. package/esm2020/lib/components/file-upload/component/file-upload.component.mjs +0 -86
  913. package/esm2020/lib/components/file-upload/directive/file-upload-template.directive.mjs +0 -18
  914. package/esm2020/lib/components/file-upload/file-upload.mjs +0 -2
  915. package/esm2020/lib/components/file-upload/file-upload.module.mjs +0 -45
  916. package/esm2020/lib/components/file-upload/index.mjs +0 -5
  917. package/esm2020/lib/components/for/for.directive.mjs +0 -38
  918. package/esm2020/lib/components/for/for.module.mjs +0 -24
  919. package/esm2020/lib/components/for/index.mjs +0 -3
  920. package/esm2020/lib/components/grid/component/grid.component.mjs +0 -32
  921. package/esm2020/lib/components/grid/directives/column/column.directive.mjs +0 -56
  922. package/esm2020/lib/components/grid/directives/index.mjs +0 -3
  923. package/esm2020/lib/components/grid/directives/row/row.directive.mjs +0 -19
  924. package/esm2020/lib/components/grid/grid.module.mjs +0 -20
  925. package/esm2020/lib/components/grid/index.mjs +0 -4
  926. package/esm2020/lib/components/index.mjs +0 -43
  927. package/esm2020/lib/components/list-group/index.mjs +0 -4
  928. package/esm2020/lib/components/list-group/list-group/list-group.component.mjs +0 -19
  929. package/esm2020/lib/components/list-group/list-group-item/list-group-item.component.mjs +0 -15
  930. package/esm2020/lib/components/list-group/list-group.module.mjs +0 -27
  931. package/esm2020/lib/components/modal/components/index.mjs +0 -3
  932. package/esm2020/lib/components/modal/components/modal/modal.component.mjs +0 -21
  933. package/esm2020/lib/components/modal/components/modal-host/modal-host.component.mjs +0 -82
  934. package/esm2020/lib/components/modal/directives/index.mjs +0 -6
  935. package/esm2020/lib/components/modal/directives/modal/modal.directive.mjs +0 -18
  936. package/esm2020/lib/components/modal/directives/modal-body/modal-body.directive.mjs +0 -19
  937. package/esm2020/lib/components/modal/directives/modal-close/modal-close.directive.mjs +0 -24
  938. package/esm2020/lib/components/modal/directives/modal-footer/modal-footer.directive.mjs +0 -19
  939. package/esm2020/lib/components/modal/directives/modal-header/modal-header.directive.mjs +0 -19
  940. package/esm2020/lib/components/modal/index.mjs +0 -4
  941. package/esm2020/lib/components/modal/modal.module.mjs +0 -71
  942. package/esm2020/lib/components/modal/providers/modal-content.provider.mjs +0 -3
  943. package/esm2020/lib/components/modal/providers/portal-factory.provider.mjs +0 -3
  944. package/esm2020/lib/components/multiselect/component/multiselect.component.mjs +0 -34
  945. package/esm2020/lib/components/multiselect/directives/button-template/button-template.directive.mjs +0 -18
  946. package/esm2020/lib/components/multiselect/directives/footer-template/footer-template.directive.mjs +0 -18
  947. package/esm2020/lib/components/multiselect/directives/header-template/header-template.directive.mjs +0 -18
  948. package/esm2020/lib/components/multiselect/directives/index.mjs +0 -4
  949. package/esm2020/lib/components/multiselect/index.mjs +0 -4
  950. package/esm2020/lib/components/multiselect/multiselect.module.mjs +0 -47
  951. package/esm2020/lib/components/navbar/dropdown-toggle/dropdown-toggle.directive.mjs +0 -38
  952. package/esm2020/lib/components/navbar/expand-button/expand-button.directive.mjs +0 -18
  953. package/esm2020/lib/components/navbar/index.mjs +0 -13
  954. package/esm2020/lib/components/navbar/nav-link/nav-link.directive.mjs +0 -29
  955. package/esm2020/lib/components/navbar/navbar/navbar.component.mjs +0 -28
  956. package/esm2020/lib/components/navbar/navbar-brand/navbar-brand.component.mjs +0 -20
  957. package/esm2020/lib/components/navbar/navbar-content/navbar-content.directive.mjs +0 -69
  958. package/esm2020/lib/components/navbar/navbar-dropdown/navbar-dropdown.component.mjs +0 -84
  959. package/esm2020/lib/components/navbar/navbar-item/navbar-item.component.mjs +0 -64
  960. package/esm2020/lib/components/navbar/navbar-nav/navbar-nav.component.mjs +0 -69
  961. package/esm2020/lib/components/navbar/navbar-toggler/navbar-toggler.component.mjs +0 -47
  962. package/esm2020/lib/components/navbar/navbar.module.mjs +0 -73
  963. package/esm2020/lib/components/offcanvas/components/index.mjs +0 -5
  964. package/esm2020/lib/components/offcanvas/components/offcanvas/offcanvas.component.mjs +0 -111
  965. package/esm2020/lib/components/offcanvas/components/offcanvas-body/offcanvas-body.component.mjs +0 -18
  966. package/esm2020/lib/components/offcanvas/components/offcanvas-header/offcanvas-header.component.mjs +0 -14
  967. package/esm2020/lib/components/offcanvas/components/offcanvas-host/offcanvas-host.component.mjs +0 -142
  968. package/esm2020/lib/components/offcanvas/directives/index.mjs +0 -3
  969. package/esm2020/lib/components/offcanvas/directives/offcanvas-close/offcanvas-close.directive.mjs +0 -24
  970. package/esm2020/lib/components/offcanvas/directives/offcanvas-content/offcanvas-content.directive.mjs +0 -18
  971. package/esm2020/lib/components/offcanvas/index.mjs +0 -5
  972. package/esm2020/lib/components/offcanvas/offcanvas.module.mjs +0 -66
  973. package/esm2020/lib/components/offcanvas/providers/offcanvas-content.provider.mjs +0 -3
  974. package/esm2020/lib/components/offcanvas/providers/portal-factory.provider.mjs +0 -3
  975. package/esm2020/lib/components/offcanvas/types/index.mjs +0 -2
  976. package/esm2020/lib/components/offcanvas/types/position.mjs +0 -2
  977. package/esm2020/lib/components/pagination/index.mjs +0 -3
  978. package/esm2020/lib/components/pagination/pagination/pagination.component.mjs +0 -198
  979. package/esm2020/lib/components/pagination/pagination.module.mjs +0 -24
  980. package/esm2020/lib/components/placeholder/index.mjs +0 -4
  981. package/esm2020/lib/components/placeholder/placeholder/placeholder.component.mjs +0 -26
  982. package/esm2020/lib/components/placeholder/placeholder-field/placeholder-field.directive.mjs +0 -46
  983. package/esm2020/lib/components/placeholder/placeholder.module.mjs +0 -19
  984. package/esm2020/lib/components/popover/component/popover.component.mjs +0 -56
  985. package/esm2020/lib/components/popover/directives/index.mjs +0 -4
  986. package/esm2020/lib/components/popover/directives/popover/popover.directive.mjs +0 -129
  987. package/esm2020/lib/components/popover/directives/popover-body/popover-body.directive.mjs +0 -19
  988. package/esm2020/lib/components/popover/directives/popover-header/popover-header.directive.mjs +0 -19
  989. package/esm2020/lib/components/popover/index.mjs +0 -4
  990. package/esm2020/lib/components/popover/popover.module.mjs +0 -35
  991. package/esm2020/lib/components/popover/providers/popover-content.provider.mjs +0 -3
  992. package/esm2020/lib/components/popover/providers/portal-factory.provider.mjs +0 -3
  993. package/esm2020/lib/components/progress-bar/index.mjs +0 -4
  994. package/esm2020/lib/components/progress-bar/progress/progress.component.mjs +0 -31
  995. package/esm2020/lib/components/progress-bar/progress-bar/progress-bar.component.mjs +0 -121
  996. package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +0 -29
  997. package/esm2020/lib/components/range/component/range.component.mjs +0 -15
  998. package/esm2020/lib/components/range/index.mjs +0 -4
  999. package/esm2020/lib/components/range/range.module.mjs +0 -19
  1000. package/esm2020/lib/components/range/value-accessor/range-value-accessor.mjs +0 -62
  1001. package/esm2020/lib/components/rating/index.mjs +0 -3
  1002. package/esm2020/lib/components/rating/rating.component.mjs +0 -72
  1003. package/esm2020/lib/components/rating/rating.module.mjs +0 -24
  1004. package/esm2020/lib/components/scheduler/components/index.mjs +0 -3
  1005. package/esm2020/lib/components/scheduler/components/resource-group-presenter/resource-group-presenter.component.mjs +0 -84
  1006. package/esm2020/lib/components/scheduler/components/scheduler/scheduler.component.mjs +0 -537
  1007. package/esm2020/lib/components/scheduler/constants/available-scales.mjs +0 -12
  1008. package/esm2020/lib/components/scheduler/constants/index.mjs +0 -2
  1009. package/esm2020/lib/components/scheduler/enums/drag-operation.mjs +0 -8
  1010. package/esm2020/lib/components/scheduler/enums/index.mjs +0 -2
  1011. package/esm2020/lib/components/scheduler/enums/scheduler-mode.mjs +0 -6
  1012. package/esm2020/lib/components/scheduler/index.mjs +0 -6
  1013. package/esm2020/lib/components/scheduler/interfaces/drag-operation.mjs +0 -2
  1014. package/esm2020/lib/components/scheduler/interfaces/index.mjs +0 -6
  1015. package/esm2020/lib/components/scheduler/interfaces/preview-event.mjs +0 -2
  1016. package/esm2020/lib/components/scheduler/interfaces/resource-group.mjs +0 -2
  1017. package/esm2020/lib/components/scheduler/interfaces/resource-or-group.mjs +0 -2
  1018. package/esm2020/lib/components/scheduler/interfaces/resource.mjs +0 -2
  1019. package/esm2020/lib/components/scheduler/interfaces/scheduler-event-part.mjs +0 -2
  1020. package/esm2020/lib/components/scheduler/interfaces/scheduler-event-with-parts.mjs +0 -2
  1021. package/esm2020/lib/components/scheduler/interfaces/scheduler-event.mjs +0 -2
  1022. package/esm2020/lib/components/scheduler/interfaces/scheduler-schale.mjs +0 -2
  1023. package/esm2020/lib/components/scheduler/interfaces/scheduler-stamp-with-slots.mjs +0 -2
  1024. package/esm2020/lib/components/scheduler/interfaces/time-slot.mjs +0 -2
  1025. package/esm2020/lib/components/scheduler/interfaces/timeline-options.mjs +0 -2
  1026. package/esm2020/lib/components/scheduler/interfaces/timeline-track.mjs +0 -2
  1027. package/esm2020/lib/components/scheduler/interfaces/week-options.mjs +0 -2
  1028. package/esm2020/lib/components/scheduler/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +0 -16
  1029. package/esm2020/lib/components/scheduler/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +0 -20
  1030. package/esm2020/lib/components/scheduler/pipes/date-offset/date-offset.pipe.mjs +0 -20
  1031. package/esm2020/lib/components/scheduler/pipes/day-of-week/day-of-week.pipe.mjs +0 -22
  1032. package/esm2020/lib/components/scheduler/scheduler.module.mjs +0 -41
  1033. package/esm2020/lib/components/scheduler/services/timeline/timeline.service.mjs +0 -65
  1034. package/esm2020/lib/components/scrollspy/component/scrollspy.component.mjs +0 -90
  1035. package/esm2020/lib/components/scrollspy/directives/scrollspy.directive.mjs +0 -16
  1036. package/esm2020/lib/components/scrollspy/index.mjs +0 -4
  1037. package/esm2020/lib/components/scrollspy/scrollspy.module.mjs +0 -29
  1038. package/esm2020/lib/components/select/component/select.component.mjs +0 -85
  1039. package/esm2020/lib/components/select/index.mjs +0 -5
  1040. package/esm2020/lib/components/select/select.module.mjs +0 -31
  1041. package/esm2020/lib/components/select/types/index.mjs +0 -2
  1042. package/esm2020/lib/components/select/types/select-size.mjs +0 -2
  1043. package/esm2020/lib/components/select/value-accessors/index.mjs +0 -2
  1044. package/esm2020/lib/components/select/value-accessors/select-value-accessor.mjs +0 -171
  1045. package/esm2020/lib/components/select2/component/select2.component.mjs +0 -96
  1046. package/esm2020/lib/components/select2/directive/item-template.directive.mjs +0 -19
  1047. package/esm2020/lib/components/select2/index.mjs +0 -4
  1048. package/esm2020/lib/components/select2/select2.module.mjs +0 -41
  1049. package/esm2020/lib/components/snackbar/component/snackbar.component.mjs +0 -35
  1050. package/esm2020/lib/components/snackbar/directives/index.mjs +0 -2
  1051. package/esm2020/lib/components/snackbar/directives/snackbar-close/snackbar-close.directive.mjs +0 -27
  1052. package/esm2020/lib/components/snackbar/index.mjs +0 -6
  1053. package/esm2020/lib/components/snackbar/interfaces/index.mjs +0 -2
  1054. package/esm2020/lib/components/snackbar/interfaces/snackbar-animation-meta.mjs +0 -2
  1055. package/esm2020/lib/components/snackbar/providers/snackbar-content.provider.mjs +0 -3
  1056. package/esm2020/lib/components/snackbar/service/snackbar.service.mjs +0 -49
  1057. package/esm2020/lib/components/snackbar/snackbar.module.mjs +0 -33
  1058. package/esm2020/lib/components/spinner/index.mjs +0 -3
  1059. package/esm2020/lib/components/spinner/spinner.component.mjs +0 -41
  1060. package/esm2020/lib/components/spinner/spinner.module.mjs +0 -18
  1061. package/esm2020/lib/components/tab-control/index.mjs +0 -4
  1062. package/esm2020/lib/components/tab-control/tab-control/tab-control.component.mjs +0 -28
  1063. package/esm2020/lib/components/tab-control/tab-control.module.mjs +0 -29
  1064. package/esm2020/lib/components/tab-control/tab-page/tab-page.component.mjs +0 -23
  1065. package/esm2020/lib/components/table/component/table.component.mjs +0 -47
  1066. package/esm2020/lib/components/table/index.mjs +0 -3
  1067. package/esm2020/lib/components/table/table.module.mjs +0 -18
  1068. package/esm2020/lib/components/timepicker/index.mjs +0 -3
  1069. package/esm2020/lib/components/timepicker/timepicker.component.mjs +0 -110
  1070. package/esm2020/lib/components/timepicker/timepicker.module.mjs +0 -36
  1071. package/esm2020/lib/components/toast/components/index.mjs +0 -5
  1072. package/esm2020/lib/components/toast/components/toast/toast.component.mjs +0 -16
  1073. package/esm2020/lib/components/toast/components/toast-body/toast-body.component.mjs +0 -20
  1074. package/esm2020/lib/components/toast/components/toast-container/toast-container.component.mjs +0 -22
  1075. package/esm2020/lib/components/toast/components/toast-header/toast-header.component.mjs +0 -17
  1076. package/esm2020/lib/components/toast/directives/index.mjs +0 -2
  1077. package/esm2020/lib/components/toast/directives/toast-close/toast-close.directive.mjs +0 -32
  1078. package/esm2020/lib/components/toast/index.mjs +0 -5
  1079. package/esm2020/lib/components/toast/providers/portal-factory.provider.mjs +0 -3
  1080. package/esm2020/lib/components/toast/services/index.mjs +0 -2
  1081. package/esm2020/lib/components/toast/services/toast/toast.service.mjs +0 -56
  1082. package/esm2020/lib/components/toast/toast.module.mjs +0 -72
  1083. package/esm2020/lib/components/toggle-button/component/toggle-button.component.mjs +0 -162
  1084. package/esm2020/lib/components/toggle-button/directives/index.mjs +0 -2
  1085. package/esm2020/lib/components/toggle-button/directives/toggle-button-group/toggle-button-group.directive.mjs +0 -19
  1086. package/esm2020/lib/components/toggle-button/index.mjs +0 -6
  1087. package/esm2020/lib/components/toggle-button/toggle-button.module.mjs +0 -34
  1088. package/esm2020/lib/components/toggle-button/types/check-style.mjs +0 -2
  1089. package/esm2020/lib/components/toggle-button/types/index.mjs +0 -2
  1090. package/esm2020/lib/components/toggle-button/value-accessor/toggle-button-value-accessor.mjs +0 -108
  1091. package/esm2020/lib/components/tooltip/component/tooltip.component.mjs +0 -29
  1092. package/esm2020/lib/components/tooltip/directive/tooltip.directive.mjs +0 -110
  1093. package/esm2020/lib/components/tooltip/index.mjs +0 -4
  1094. package/esm2020/lib/components/tooltip/providers/tooltip-content.provider.mjs +0 -3
  1095. package/esm2020/lib/components/tooltip/tooltip.module.mjs +0 -31
  1096. package/esm2020/lib/components/typeahead/index.mjs +0 -3
  1097. package/esm2020/lib/components/typeahead/typeahead.component.mjs +0 -92
  1098. package/esm2020/lib/components/typeahead/typeahead.module.mjs +0 -36
  1099. package/esm2020/lib/directives/enhanced-paste/enhanced-paste.directive.mjs +0 -58
  1100. package/esm2020/lib/directives/enhanced-paste/enhanced-paste.module.mjs +0 -24
  1101. package/esm2020/lib/directives/index.mjs +0 -2
  1102. package/lib/components/accordion/accordion/accordion.component.d.ts +0 -10
  1103. package/lib/components/accordion/accordion-tab/accordion-tab.component.d.ts +0 -17
  1104. package/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.d.ts +0 -9
  1105. package/lib/components/alert/alert/alert.component.d.ts +0 -15
  1106. package/lib/components/alert/alert-close/alert-close.component.d.ts +0 -9
  1107. package/lib/components/badge/badge.component.d.ts +0 -15
  1108. package/lib/components/breadcrumb/breadcrumb/breadcrumb.component.d.ts +0 -8
  1109. package/lib/components/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +0 -9
  1110. package/lib/components/button-group/button-group/button-group.component.d.ts +0 -8
  1111. package/lib/components/calendar/calendar.component.d.ts +0 -29
  1112. package/lib/components/calendar/calendar.module.d.ts +0 -11
  1113. package/lib/components/card/card/card.component.d.ts +0 -5
  1114. package/lib/components/card/card-header/card-header.component.d.ts +0 -5
  1115. package/lib/components/carousel/carousel/carousel.component.d.ts +0 -25
  1116. package/lib/components/carousel/carousel-image/carousel-image.directive.d.ts +0 -9
  1117. package/lib/components/close/close.component.d.ts +0 -10
  1118. package/lib/components/code-snippet/code-snippet.component.d.ts +0 -12
  1119. package/lib/components/code-snippet/code-snippet.module.d.ts +0 -10
  1120. package/lib/components/context-menu/context-menu.directive.d.ts +0 -18
  1121. package/lib/components/copy/copy.directive.d.ts +0 -11
  1122. package/lib/components/datatable/datatable/datatable.component.d.ts +0 -19
  1123. package/lib/components/datatable/datatable-column/datatable-column.directive.d.ts +0 -10
  1124. package/lib/components/datatable/datatable-settings.d.ts +0 -15
  1125. package/lib/components/datatable/datatable.module.d.ts +0 -13
  1126. package/lib/components/datatable/index.d.ts +0 -5
  1127. package/lib/components/datatable/row-template/row-template.directive.d.ts +0 -9
  1128. package/lib/components/datepicker/datepicker.component.d.ts +0 -14
  1129. package/lib/components/datepicker/datepicker.module.d.ts +0 -10
  1130. package/lib/components/dropdown/dropdown/dropdown.directive.d.ts +0 -22
  1131. package/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +0 -23
  1132. package/lib/components/dropdown/dropdown-toggle/dropdown-toggle.directive.d.ts +0 -11
  1133. package/lib/components/file-upload/component/file-upload.component.d.ts +0 -19
  1134. package/lib/components/file-upload/directive/file-upload-template.directive.d.ts +0 -8
  1135. package/lib/components/file-upload/file-upload.module.d.ts +0 -13
  1136. package/lib/components/for/for.directive.d.ts +0 -8
  1137. package/lib/components/grid/component/grid.component.d.ts +0 -12
  1138. package/lib/components/grid/directives/column/column.directive.d.ts +0 -12
  1139. package/lib/components/grid/directives/row/row.directive.d.ts +0 -6
  1140. package/lib/components/index.d.ts +0 -42
  1141. package/lib/components/list-group/list-group/list-group.component.d.ts +0 -10
  1142. package/lib/components/list-group/list-group-item/list-group-item.component.d.ts +0 -8
  1143. package/lib/components/modal/components/modal/modal.component.d.ts +0 -9
  1144. package/lib/components/modal/components/modal-host/modal-host.component.d.ts +0 -27
  1145. package/lib/components/modal/directives/modal/modal.directive.d.ts +0 -8
  1146. package/lib/components/modal/directives/modal-body/modal-body.directive.d.ts +0 -6
  1147. package/lib/components/modal/directives/modal-close/modal-close.directive.d.ts +0 -9
  1148. package/lib/components/modal/directives/modal-footer/modal-footer.directive.d.ts +0 -6
  1149. package/lib/components/modal/directives/modal-header/modal-header.directive.d.ts +0 -6
  1150. package/lib/components/multiselect/component/multiselect.component.d.ts +0 -13
  1151. package/lib/components/multiselect/directives/button-template/button-template.directive.d.ts +0 -8
  1152. package/lib/components/multiselect/directives/footer-template/footer-template.directive.d.ts +0 -8
  1153. package/lib/components/multiselect/directives/header-template/header-template.directive.d.ts +0 -8
  1154. package/lib/components/multiselect/multiselect.module.d.ts +0 -13
  1155. package/lib/components/navbar/dropdown-toggle/dropdown-toggle.directive.d.ts +0 -13
  1156. package/lib/components/navbar/expand-button/expand-button.directive.d.ts +0 -8
  1157. package/lib/components/navbar/nav-link/nav-link.directive.d.ts +0 -9
  1158. package/lib/components/navbar/navbar/navbar.component.d.ts +0 -12
  1159. package/lib/components/navbar/navbar-brand/navbar-brand.component.d.ts +0 -7
  1160. package/lib/components/navbar/navbar-content/navbar-content.directive.d.ts +0 -18
  1161. package/lib/components/navbar/navbar-dropdown/navbar-dropdown.component.d.ts +0 -24
  1162. package/lib/components/navbar/navbar-item/navbar-item.component.d.ts +0 -16
  1163. package/lib/components/navbar/navbar-nav/navbar-nav.component.d.ts +0 -19
  1164. package/lib/components/navbar/navbar-toggler/navbar-toggler.component.d.ts +0 -13
  1165. package/lib/components/offcanvas/components/offcanvas/offcanvas.component.d.ts +0 -34
  1166. package/lib/components/offcanvas/components/offcanvas-body/offcanvas-body.component.d.ts +0 -9
  1167. package/lib/components/offcanvas/components/offcanvas-header/offcanvas-header.component.d.ts +0 -8
  1168. package/lib/components/offcanvas/components/offcanvas-host/offcanvas-host.component.d.ts +0 -37
  1169. package/lib/components/offcanvas/directives/offcanvas-close/offcanvas-close.directive.d.ts +0 -9
  1170. package/lib/components/offcanvas/directives/offcanvas-content/offcanvas-content.directive.d.ts +0 -8
  1171. package/lib/components/pagination/pagination/pagination.component.d.ts +0 -49
  1172. package/lib/components/placeholder/placeholder/placeholder.component.d.ts +0 -11
  1173. package/lib/components/placeholder/placeholder-field/placeholder-field.directive.d.ts +0 -16
  1174. package/lib/components/popover/component/popover.component.d.ts +0 -19
  1175. package/lib/components/popover/directives/popover/popover.directive.d.ts +0 -27
  1176. package/lib/components/popover/directives/popover-body/popover-body.directive.d.ts +0 -7
  1177. package/lib/components/popover/directives/popover-header/popover-header.directive.d.ts +0 -7
  1178. package/lib/components/progress-bar/progress/progress.component.d.ts +0 -8
  1179. package/lib/components/progress-bar/progress-bar/progress-bar.component.d.ts +0 -31
  1180. package/lib/components/range/component/range.component.d.ts +0 -8
  1181. package/lib/components/range/value-accessor/range-value-accessor.d.ts +0 -20
  1182. package/lib/components/rating/rating.component.d.ts +0 -22
  1183. package/lib/components/scheduler/components/resource-group-presenter/resource-group-presenter.component.d.ts +0 -26
  1184. package/lib/components/scheduler/components/scheduler/scheduler.component.d.ts +0 -86
  1185. package/lib/components/scrollspy/component/scrollspy.component.d.ts +0 -25
  1186. package/lib/components/scrollspy/directives/scrollspy.directive.d.ts +0 -8
  1187. package/lib/components/select/component/select.component.d.ts +0 -26
  1188. package/lib/components/select/value-accessors/select-value-accessor.d.ts +0 -44
  1189. package/lib/components/select2/component/select2.component.d.ts +0 -28
  1190. package/lib/components/select2/directive/item-template.directive.d.ts +0 -9
  1191. package/lib/components/select2/select2.module.d.ts +0 -12
  1192. package/lib/components/snackbar/component/snackbar.component.d.ts +0 -15
  1193. package/lib/components/snackbar/directives/snackbar-close/snackbar-close.directive.d.ts +0 -11
  1194. package/lib/components/spinner/spinner.component.d.ts +0 -19
  1195. package/lib/components/tab-control/tab-control/tab-control.component.d.ts +0 -10
  1196. package/lib/components/tab-control/tab-page/tab-page.component.d.ts +0 -11
  1197. package/lib/components/table/component/table.component.d.ts +0 -16
  1198. package/lib/components/timepicker/timepicker.component.d.ts +0 -25
  1199. package/lib/components/timepicker/timepicker.module.d.ts +0 -11
  1200. package/lib/components/toast/components/toast/toast.component.d.ts +0 -6
  1201. package/lib/components/toast/components/toast-body/toast-body.component.d.ts +0 -7
  1202. package/lib/components/toast/components/toast-container/toast-container.component.d.ts +0 -9
  1203. package/lib/components/toast/components/toast-header/toast-header.component.d.ts +0 -7
  1204. package/lib/components/toast/directives/toast-close/toast-close.directive.d.ts +0 -12
  1205. package/lib/components/toast/toast.module.d.ts +0 -14
  1206. package/lib/components/toggle-button/component/toggle-button.component.d.ts +0 -38
  1207. package/lib/components/toggle-button/directives/toggle-button-group/toggle-button-group.directive.d.ts +0 -9
  1208. package/lib/components/toggle-button/value-accessor/toggle-button-value-accessor.d.ts +0 -20
  1209. package/lib/components/tooltip/component/tooltip.component.d.ts +0 -12
  1210. package/lib/components/tooltip/directive/tooltip.directive.d.ts +0 -20
  1211. package/lib/components/typeahead/typeahead.component.d.ts +0 -29
  1212. package/lib/components/typeahead/typeahead.module.d.ts +0 -11
  1213. package/lib/directives/enhanced-paste/enhanced-paste.directive.d.ts +0 -14
  1214. package/lib/directives/index.d.ts +0 -1
@@ -1,537 +0,0 @@
1
- import { Component, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren } from '@angular/core';
2
- import { BehaviorSubject, combineLatest, filter, map, Subject, take, takeUntil } from 'rxjs';
3
- import { ESchedulerMode } from '../../enums/scheduler-mode';
4
- import { BsCalendarMonthService } from '../../../../services/calendar-month/calendar-month.service';
5
- import { EDragOperation } from '../../enums/drag-operation';
6
- import { BsTimelineService } from '../../services/timeline/timeline.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../../../services/calendar-month/calendar-month.service";
9
- import * as i2 from "../../services/timeline/timeline.service";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "../resource-group-presenter/resource-group-presenter.component";
12
- import * as i5 from "../../pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe";
13
- import * as i6 from "../../pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe";
14
- import * as i7 from "../../pipes/day-of-week/day-of-week.pipe";
15
- export class BsSchedulerComponent {
16
- constructor(calendarMonthService, timelineService) {
17
- this.calendarMonthService = calendarMonthService;
18
- this.timelineService = timelineService;
19
- this.resources$ = new BehaviorSubject([]);
20
- this.weekOptions$ = new BehaviorSubject({ unitHeight: 30 });
21
- this.timelineOptions$ = new BehaviorSubject({ unitWidth: 50 });
22
- this.previewEvent$ = new BehaviorSubject(null);
23
- this.timeSlotDuration$ = new BehaviorSubject(1800);
24
- this.timeSlots$ = new BehaviorSubject([]);
25
- this.mouseState$ = new BehaviorSubject(false);
26
- this.hoveredTimeSlot$ = new BehaviorSubject(null);
27
- this.hoveredEvent$ = new BehaviorSubject(null);
28
- this.destroyed$ = new Subject();
29
- //#region Mode
30
- this.modes = ESchedulerMode;
31
- this.mode$ = new BehaviorSubject(ESchedulerMode.week);
32
- this.modeChange = new EventEmitter();
33
- //#endregion
34
- // //#region Scale
35
- // scale$ = new BehaviorSubject<SchedulerScale>(availableScales[4]);
36
- // @Output() public scaleChange = new EventEmitter<SchedulerScale>();
37
- // public get scale() {
38
- // return this.scale$.value;
39
- // }
40
- // @Input() public set scale(value: SchedulerScale) {
41
- // this.scale$.next(value);
42
- // }
43
- // //#endregion
44
- //#region WeekOptions
45
- this.weekOptionsChange = new EventEmitter();
46
- //#endregion
47
- //#region TimelineOptions
48
- this.timelineOptionsChange = new EventEmitter();
49
- //#endregion
50
- //#region maxInnerHeight
51
- this.maxInnerHeight = null;
52
- this.operation = null;
53
- this.dragStartTimeslot = null;
54
- const monday = this.calendarMonthService.getMondayBefore(new Date());
55
- this.currentWeekOrMonth$ = new BehaviorSubject(monday);
56
- this.shownDays$ = combineLatest([this.currentWeekOrMonth$, this.mode$])
57
- .pipe(map(([currentDay, mode]) => {
58
- currentDay.setHours(0);
59
- currentDay.setMinutes(0);
60
- currentDay.setSeconds(0);
61
- currentDay.setMilliseconds(0);
62
- switch (mode) {
63
- case ESchedulerMode.week: {
64
- return Array.from(Array(7).keys()).map((x) => this.addDays(currentDay, x));
65
- }
66
- case ESchedulerMode.timeline: {
67
- const firstDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), 1);
68
- const daysOfMonth = new Date(currentDay.getFullYear(), currentDay.getMonth() + 1, 0).getDate();
69
- return Array.from(Array(daysOfMonth).keys()).map((x) => this.addDays(firstDay, x));
70
- }
71
- }
72
- }));
73
- this.daysOfWeekWithTimestamps$ = this.shownDays$
74
- .pipe(map((shownDays) => ({ start: shownDays[0].getTime(), end: shownDays[shownDays.length - 1].getTime() + 24 * 60 * 60 * 1000 })));
75
- this.events$ = this.resources$
76
- .pipe(map((resourcesOrGroups) => resourcesOrGroups.map(resOrGroup => this.getResourcesForGroup(resOrGroup))))
77
- .pipe(map(jaggedResources => jaggedResources.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
78
- .pipe(map(resources => resources.map(res => res.events)))
79
- .pipe(map(jaggedEvents => jaggedEvents.reduce((flat, toFlatten) => flat.concat(toFlatten), [])));
80
- // groups.reduce((flat, toFlatten) => flat.concat(toFlatten.children), [])
81
- this.eventParts$ = this.events$.pipe(map((events) => events.map((ev) => this.timelineService.splitInParts(ev))));
82
- this.eventPartsForThisWeek$ = combineLatest([
83
- this.daysOfWeekWithTimestamps$,
84
- this.eventParts$
85
- .pipe(map(eventParts => eventParts.map(evp => evp.parts)))
86
- .pipe(map(jaggedParts => jaggedParts.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
87
- ])
88
- .pipe(map(([startAndEnd, eventParts]) => {
89
- return eventParts.filter(eventPart => {
90
- return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
91
- });
92
- }));
93
- this.previewEventParts$ = this.previewEvent$.pipe(map((event) => {
94
- if (event) {
95
- return this.timelineService.splitInParts(event);
96
- }
97
- else {
98
- return null;
99
- }
100
- }));
101
- this.previewEventPartsForThisWeek$ = combineLatest([this.daysOfWeekWithTimestamps$, this.previewEventParts$])
102
- .pipe(map(([startAndEnd, previewEventParts]) => {
103
- if (previewEventParts) {
104
- return previewEventParts.parts.filter(eventPart => {
105
- return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
106
- });
107
- }
108
- else {
109
- return [];
110
- }
111
- }));
112
- this.timelinedEventPartsForThisWeek$ = this.eventPartsForThisWeek$
113
- .pipe(map(eventParts => {
114
- // We'll only use the events for this week
115
- const events = eventParts.map(ep => ep.event)
116
- .filter((e, i, list) => list.indexOf(e) === i)
117
- .filter((e) => !!e)
118
- .map((e) => e);
119
- const timeline = this.timelineService.getTimeline(events);
120
- const result = timeline.map(track => track.events.map(ev => ({ event: ev, index: track.index })))
121
- .reduce((flat, toFlatten) => flat.concat(toFlatten), [])
122
- .map((evi) => eventParts.filter(p => p.event === evi.event).map(p => ({ part: p, index: evi.index })))
123
- .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
124
- return {
125
- total: timeline.length,
126
- parts: result
127
- };
128
- }));
129
- combineLatest([this.mode$, this.shownDays$, this.timeSlotDuration$])
130
- .pipe(filter(([mode, shownDays, duration]) => mode !== null))
131
- .pipe(map(([mode, shownDays, duration]) => {
132
- switch (mode) {
133
- case ESchedulerMode.week: {
134
- const timeSlotsPerDay = Math.floor((60 * 60 * 24) / duration);
135
- return Array.from(Array(timeSlotsPerDay).keys()).map((index) => {
136
- const timeslotForMonday = this.createTimeslot(shownDays[0], index, duration);
137
- return {
138
- slots: shownDays.map((day) => {
139
- const start = new Date(day);
140
- start.setHours(timeslotForMonday.start.getHours());
141
- start.setMinutes(timeslotForMonday.start.getMinutes());
142
- start.setSeconds(timeslotForMonday.start.getSeconds());
143
- start.setMilliseconds(timeslotForMonday.start.getMilliseconds());
144
- const end = new Date(day);
145
- end.setHours(timeslotForMonday.end.getHours());
146
- end.setMinutes(timeslotForMonday.end.getMinutes());
147
- end.setSeconds(timeslotForMonday.end.getSeconds());
148
- end.setMilliseconds(timeslotForMonday.end.getMilliseconds());
149
- end.setDate(end.getDate() + timeslotForMonday.end.getDate() - timeslotForMonday.start.getDate());
150
- return { start, end };
151
- }),
152
- stamp: timeslotForMonday.start
153
- };
154
- });
155
- }
156
- case ESchedulerMode.timeline: {
157
- const totalTimeslots = (24 * 60 * 60) / duration;
158
- return shownDays.map((day) => {
159
- return {
160
- slots: Array.from(Array(totalTimeslots).keys())
161
- .map((index) => {
162
- return this.createTimeslot(day, index, duration);
163
- }),
164
- stamp: day
165
- };
166
- });
167
- }
168
- default: {
169
- throw 'Unknown value for Mode: ' + mode;
170
- }
171
- }
172
- }))
173
- .subscribe((timeslots) => {
174
- // For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.
175
- this.timeSlots$.next(timeslots);
176
- });
177
- this.weekOptions$
178
- .pipe(takeUntil(this.destroyed$))
179
- .subscribe((weekOptions) => {
180
- this.weekOptionsChange.emit(weekOptions);
181
- });
182
- this.timelineOptions$
183
- .pipe(takeUntil(this.destroyed$))
184
- .subscribe((timelineOptions) => {
185
- this.timelineOptionsChange.emit(timelineOptions);
186
- });
187
- // combineLatest([this.mode$, this.scale$])
188
- // .pipe(filter(([mode, scale]) => mode === ESchedulerMode.timeline))
189
- }
190
- createTimeslot(date, index, duration) {
191
- const timeSlotStart = new Date(date);
192
- timeSlotStart.setTime(+timeSlotStart.getTime() + index * duration * 1000);
193
- const timeSlotEnd = new Date(timeSlotStart);
194
- timeSlotEnd.setTime(+timeSlotEnd.getTime() + duration * 1000);
195
- return { start: timeSlotStart, end: timeSlotEnd };
196
- }
197
- getResourcesForGroup(resourceOrGroup) {
198
- if ('children' in resourceOrGroup) {
199
- return resourceOrGroup.children
200
- .map((child) => this.getResourcesForGroup(child))
201
- .reduce((flat, toFlatten) => flat.concat(toFlatten), []);
202
- }
203
- else {
204
- return [resourceOrGroup];
205
- }
206
- }
207
- get mode() {
208
- return this.mode$.value;
209
- }
210
- set mode(value) {
211
- this.mode$.next(value);
212
- }
213
- get weekOptions() {
214
- return this.weekOptions$.value;
215
- }
216
- set weekOptions(value) {
217
- this.weekOptions$.next(value);
218
- }
219
- get timelineOptions() {
220
- return this.timelineOptions$.value;
221
- }
222
- set timelineOptions(value) {
223
- this.timelineOptions$.next(value);
224
- }
225
- //#endregion
226
- //#region Resources
227
- get resources() {
228
- return this.resources$.value;
229
- }
230
- set resources(value) {
231
- this.resources$.next(value);
232
- }
233
- //#endregion
234
- addDays(date, days) {
235
- const result = new Date(date);
236
- result.setDate(result.getDate() + days);
237
- return result;
238
- }
239
- onPreviousWeekOrMonth() {
240
- this.onChangeWeekOrMonth(false);
241
- }
242
- onNextWeekOrMonth() {
243
- this.onChangeWeekOrMonth(true);
244
- }
245
- onChangeWeekOrMonth(next) {
246
- combineLatest([this.currentWeekOrMonth$, this.mode$])
247
- .pipe(map(([currentWeekOrMonth, mode]) => {
248
- switch (mode) {
249
- case ESchedulerMode.week: {
250
- return this.addDays(currentWeekOrMonth, (next ? 7 : -7));
251
- }
252
- case ESchedulerMode.timeline: {
253
- return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);
254
- }
255
- }
256
- }), take(1))
257
- .subscribe((w) => this.currentWeekOrMonth$.next(w));
258
- }
259
- onHoverEvent(ev) {
260
- this.hoveredEvent$.next(ev);
261
- }
262
- onLeaveEvent(ev) {
263
- this.hoveredEvent$.next(null);
264
- }
265
- onCreateEvent(ev, slot) {
266
- ev.preventDefault();
267
- this.mouseState$.next(true);
268
- this.dragStartTimeslot = slot;
269
- this.operation = {
270
- operation: EDragOperation.createEvent,
271
- event: {
272
- start: slot.start,
273
- end: slot.end,
274
- color: '#F00',
275
- description: 'Test event',
276
- },
277
- meta: null,
278
- };
279
- this.previewEvent$.next({ start: slot.start, end: slot.end });
280
- }
281
- randomColor() {
282
- const brightness = 128;
283
- return '#' + this.randomChannel(brightness) + this.randomChannel(brightness) + this.randomChannel(brightness);
284
- }
285
- randomChannel(brightness) {
286
- const r = 255 - brightness;
287
- const n = 0 | ((Math.random() * r) + brightness);
288
- const s = n.toString(16);
289
- return (s.length == 1) ? '0' + s : s;
290
- }
291
- onStartDragEvent(eventPart, ev) {
292
- ev.preventDefault();
293
- this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {
294
- if (eventPart.event) {
295
- this.dragStartTimeslot = hoveredTimeSlot;
296
- this.operation = {
297
- operation: EDragOperation.moveEvent,
298
- event: eventPart.event,
299
- meta: null,
300
- };
301
- this.previewEvent$.next({ start: eventPart.event.start, end: eventPart.event.end });
302
- }
303
- });
304
- }
305
- onStartResizeEvent(event, position) {
306
- if (event) {
307
- switch (position) {
308
- case 'top':
309
- {
310
- this.operation = {
311
- operation: EDragOperation.resizeEvent,
312
- event: event,
313
- meta: { position },
314
- };
315
- this.previewEvent$.next({ start: event.start, end: event.end });
316
- }
317
- break;
318
- case 'bottom':
319
- {
320
- this.operation = {
321
- operation: EDragOperation.resizeEvent,
322
- event: event,
323
- meta: { position },
324
- };
325
- this.previewEvent$.next({ start: event.start, end: event.end });
326
- }
327
- break;
328
- }
329
- }
330
- }
331
- //#region hoveredTimeslot$
332
- getHoveredTimeslot(ev, timeSlots) {
333
- const hoveredSlots = this.timeSlotElements.filter((el) => {
334
- const rct = el.nativeElement.getBoundingClientRect();
335
- if (rct.left <= ev.x && ev.x <= rct.right && rct.top <= ev.y && ev.y <= rct.bottom) {
336
- return true;
337
- }
338
- else {
339
- return false;
340
- }
341
- });
342
- if (!hoveredSlots || hoveredSlots.length === 0) {
343
- return null;
344
- }
345
- const slotElement = hoveredSlots[0].nativeElement;
346
- const strRow = slotElement.getAttribute('data-row');
347
- if (!strRow) {
348
- return null;
349
- }
350
- const row = parseInt(strRow);
351
- const strColumn = slotElement.getAttribute('data-column');
352
- if (!strColumn) {
353
- return null;
354
- }
355
- const column = parseInt(strColumn);
356
- const slot = timeSlots[row].slots[column];
357
- return slot;
358
- }
359
- onMousemove(ev) {
360
- this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {
361
- const hovered = this.getHoveredTimeslot(ev, timeSlots);
362
- this.hoveredTimeSlot$.next(hovered);
363
- if (this.operation) {
364
- switch (this.operation.operation) {
365
- case EDragOperation.createEvent:
366
- {
367
- if (this.operation.event && this.dragStartTimeslot && hovered && (this.operation.event.end.getTime() != hovered.end.getTime())) {
368
- if (this.dragStartTimeslot.start.getTime() === hovered.start.getTime()) {
369
- // 1 slot
370
- }
371
- else if (this.dragStartTimeslot.start.getTime() < hovered.start.getTime()) {
372
- // Drag down
373
- this.previewEvent$
374
- .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
375
- .pipe(map((ev) => {
376
- if (ev && this.dragStartTimeslot) {
377
- ev.start = this.dragStartTimeslot.start;
378
- ev.end = hovered.end;
379
- }
380
- return ev;
381
- }))
382
- .pipe(take(1))
383
- .subscribe((ev) => this.previewEvent$.next(ev));
384
- }
385
- else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {
386
- // Drag up
387
- this.previewEvent$
388
- .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
389
- .pipe(map((ev) => {
390
- if (ev && this.dragStartTimeslot) {
391
- ev.start = hovered.start;
392
- ev.end = this.dragStartTimeslot.end;
393
- }
394
- return ev;
395
- }))
396
- .pipe(take(1))
397
- .subscribe((ev) => this.previewEvent$.next(ev));
398
- }
399
- }
400
- }
401
- break;
402
- case EDragOperation.moveEvent:
403
- {
404
- if (hovered && this.dragStartTimeslot) {
405
- this.previewEvent$
406
- .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
407
- .pipe(map((ev) => {
408
- if (ev && this.dragStartTimeslot) {
409
- const result = {
410
- start: new Date(ev.start.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime()),
411
- end: new Date(ev.end.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime())
412
- };
413
- this.dragStartTimeslot = hovered;
414
- return result;
415
- }
416
- else {
417
- return ev;
418
- }
419
- }))
420
- .pipe(take(1))
421
- .subscribe(ev => this.previewEvent$.next(ev));
422
- }
423
- }
424
- break;
425
- case EDragOperation.resizeEvent:
426
- {
427
- if (hovered) {
428
- this.previewEvent$
429
- .pipe(filter((ev) => !!ev))
430
- .pipe(map((ev) => {
431
- if (ev && this.operation && this.operation.event) {
432
- if (this.operation.meta.position === 'top') {
433
- ev.start = hovered.start;
434
- ev.end = this.operation.event.end;
435
- }
436
- else if (this.operation.meta.position === 'bottom') {
437
- ev.start = this.operation.event.start;
438
- ev.end = hovered.end;
439
- }
440
- }
441
- return ev;
442
- }))
443
- .pipe(take(1))
444
- .subscribe((ev) => this.previewEvent$.next(ev));
445
- }
446
- }
447
- break;
448
- }
449
- }
450
- });
451
- }
452
- //#endregion
453
- onMouseUp(ev) {
454
- if (this.operation) {
455
- switch (this.operation.operation) {
456
- case EDragOperation.createEvent:
457
- {
458
- combineLatest([this.previewEvent$])
459
- .pipe(take(1))
460
- .subscribe(([previewEvent]) => {
461
- if (previewEvent) {
462
- this.operation = null;
463
- this.dragStartTimeslot = null;
464
- this.resources$.next([
465
- ...this.resources$.value,
466
- {
467
- description: 'New resource group',
468
- events: [{
469
- start: previewEvent.start,
470
- end: previewEvent.end,
471
- color: this.randomColor(),
472
- description: 'New event'
473
- }]
474
- }
475
- ]);
476
- this.previewEvent$.next(null);
477
- }
478
- });
479
- }
480
- break;
481
- case EDragOperation.moveEvent:
482
- case EDragOperation.resizeEvent:
483
- {
484
- this.previewEvent$
485
- .pipe(filter((ev) => !!ev))
486
- .pipe(take(1))
487
- .subscribe((previewEvent) => {
488
- if (this.operation && this.operation.event && previewEvent) {
489
- this.operation.event.start = previewEvent.start;
490
- this.operation.event.end = previewEvent.end;
491
- this.operation = null;
492
- this.dragStartTimeslot = null;
493
- this.resources$.next(this.resources$.value);
494
- this.previewEvent$.next(null);
495
- }
496
- });
497
- }
498
- break;
499
- }
500
- }
501
- }
502
- ngOnDestroy() {
503
- this.destroyed$.next(true);
504
- }
505
- }
506
- BsSchedulerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.BsCalendarMonthService }, { token: i2.BsTimelineService }], target: i0.ɵɵFactoryTarget.Component });
507
- BsSchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: BsSchedulerComponent, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\n *ngIf=\"(mode$ | async) === modes.week\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <i class=\"bi-chevron-left px-0\"></i>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <i class=\"bi-chevron-right px-0\"></i>\n </button>\n </div>\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\n <span class=\"d-block col-form-label text-center\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\n <!-- Timeslots -->\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n </div>\n\n <!-- Events -->\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n\n <div class=\"event-resize top\"\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n <div class=\"event-border\"></div>\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n <div class=\"event-resize bottom\"\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <i class=\"bi-chevron-left px-0\"></i>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <i class=\"bi-chevron-right px-0\"></i>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <tr>\n <td></td>\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n </tr>\n <tr>\n <td></td>\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\n <ng-container *ngFor=\"let day of timeSlots\">\n <td *ngFor=\"let slot of day.slots\">\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n </ng-container>\n </table>\n </div>\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i5.BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: i6.BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: i7.DayOfWeekPipe, name: "dayOfWeek" }] });
508
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BsSchedulerComponent, decorators: [{
509
- type: Component,
510
- args: [{ selector: 'bs-scheduler', template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\n *ngIf=\"(mode$ | async) === modes.week\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <i class=\"bi-chevron-left px-0\"></i>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <i class=\"bi-chevron-right px-0\"></i>\n </button>\n </div>\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\n <span class=\"d-block col-form-label text-center\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\n <!-- Timeslots -->\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n </div>\n\n <!-- Events -->\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n\n <div class=\"event-resize top\"\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n <div class=\"event-border\"></div>\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n <div class=\"event-resize bottom\"\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <i class=\"bi-chevron-left px-0\"></i>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <i class=\"bi-chevron-right px-0\"></i>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <tr>\n <td></td>\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n </tr>\n <tr>\n <td></td>\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\n <ng-container *ngFor=\"let day of timeSlots\">\n <td *ngFor=\"let slot of day.slots\">\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n </ng-container>\n </table>\n </div>\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"] }]
511
- }], ctorParameters: function () { return [{ type: i1.BsCalendarMonthService }, { type: i2.BsTimelineService }]; }, propDecorators: { timeSlotElements: [{
512
- type: ViewChildren,
513
- args: ['slot']
514
- }], modeChange: [{
515
- type: Output
516
- }], mode: [{
517
- type: Input
518
- }], weekOptionsChange: [{
519
- type: Output
520
- }], weekOptions: [{
521
- type: Input
522
- }], timelineOptionsChange: [{
523
- type: Output
524
- }], timelineOptions: [{
525
- type: Input
526
- }], maxInnerHeight: [{
527
- type: Input
528
- }], resources: [{
529
- type: Input
530
- }], onMousemove: [{
531
- type: HostListener,
532
- args: ['document:mousemove', ['$event']]
533
- }], onMouseUp: [{
534
- type: HostListener,
535
- args: ['document:mouseup', ['$event']]
536
- }] } });
537
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc3JjL2xpYi9jb21wb25lbnRzL3NjaGVkdWxlci9jb21wb25lbnRzL3NjaGVkdWxlci9zY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcmMvbGliL2NvbXBvbmVudHMvc2NoZWR1bGVyL2NvbXBvbmVudHMvc2NoZWR1bGVyL3NjaGVkdWxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU81RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7O0FBWTdFLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBb0Isb0JBQTRDLEVBQVUsZUFBa0M7UUFBeEYseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF3QjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQTZKNUcsZUFBVSxHQUFHLElBQUksZUFBZSxDQUErQixFQUFFLENBQUMs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SyxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDO2dDQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQ0FDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQ0FDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7NkJBQy9CO3dCQUNILENBQUMsQ0FBQyxDQUFDO3FCQUNOO29CQUFDLE1BQU07YUFDVDtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOztpSEFqaEJVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLG1oQkN2QmpDLHl1T0E0R007MkZEckZPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjOzZJQXdMRixnQkFBZ0I7c0JBQXJDLFlBQVk7dUJBQUMsTUFBTTtnQkF3QkgsVUFBVTtzQkFBMUIsTUFBTTtnQkFJYSxJQUFJO3NCQUF2QixLQUFLO2dCQWVXLGlCQUFpQjtzQkFBakMsTUFBTTtnQkFJYSxXQUFXO3NCQUE5QixLQUFLO2dCQUtXLHFCQUFxQjtzQkFBckMsTUFBTTtnQkFJYSxlQUFlO3NCQUFsQyxLQUFLO2dCQUtVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBTWMsU0FBUztzQkFBNUIsS0FBSztnQkFnSk4sV0FBVztzQkFEVixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTJGOUMsU0FBUztzQkFEUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFU2NoZWR1bGVyTW9kZSB9IGZyb20gJy4uLy4uL2VudW1zL3NjaGVkdWxlci1tb2RlJztcbmltcG9ydCB7IEJzQ2FsZW5kYXJNb250aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5zZXJ2aWNlJztcbmltcG9ydCB7IEVEcmFnT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgRHJhZ09wZXJhdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgUHJldmlld0V2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wcmV2aWV3LWV2ZW50JztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnRQYXJ0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQtcGFydCc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudFdpdGhQYXJ0cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50LXdpdGgtcGFydHMnO1xuaW1wb3J0IHsgVGltZVNsb3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RpbWUtc2xvdCc7XG5pbXBvcnQgeyBCc1RpbWVsaW5lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpbWVsaW5lL3RpbWVsaW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVzb3VyY2UtZ3JvdXAnO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItc3RhbXAtd2l0aC1zbG90cyc7XG5pbXBvcnQgeyBXZWVrT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2Vlay1vcHRpb25zJztcbmltcG9ydCB7IFRpbWVsaW5lT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGltZWxpbmUtb3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLXNjaGVkdWxlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2hlZHVsZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2hlZHVsZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnNTY2hlZHVsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhbGVuZGFyTW9udGhTZXJ2aWNlOiBCc0NhbGVuZGFyTW9udGhTZXJ2aWNlLCBwcml2YXRlIHRpbWVsaW5lU2VydmljZTogQnNUaW1lbGluZVNlcnZpY2UpIHtcbiAgICBjb25zdCBtb25kYXkgPSB0aGlzLmNhbGVuZGFyTW9udGhTZXJ2aWNlLmdldE1vbmRheUJlZm9yZShuZXcgRGF0ZSgpKTtcbiAgICB0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KG1vbmRheSk7XG5cbiAgICB0aGlzLnNob3duRGF5cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQsIHRoaXMubW9kZSRdKVxuICAgICAgLnBpcGUobWFwKChbY3VycmVudERheSwgbW9kZV0pID0+IHtcbiAgICAgICAgY3VycmVudERheS5zZXRIb3VycygwKTtcbiAgICAgICAgY3VycmVudERheS5zZXRNaW51dGVzKDApO1xuICAgICAgICBjdXJyZW50RGF5LnNldFNlY29uZHMoMCk7XG4gICAgICAgIGN1cnJlbnREYXkuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKEFycmF5KDcpLmtleXMoKSkubWFwKCh4KSA9PiB0aGlzLmFkZERheXMoY3VycmVudERheSwgeCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKGN1cnJlbnREYXkuZ2V0RnVsbFllYXIoKSwgY3VycmVudERheS5nZXRNb250aCgpLCAxKTtcbiAgICAgICAgICAgIGNvbnN0IGRheXNPZk1vbnRoID0gbmV3IERhdGUoY3VycmVudERheS5nZXRGdWxsWWVhcigpLCBjdXJyZW50RGF5LmdldE1vbnRoKCkgKyAxLCAwKS5nZXREYXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShBcnJheShkYXlzT2ZNb250aCkua2V5cygpKS5tYXAoKHgpID0+IHRoaXMuYWRkRGF5cyhmaXJzdERheSwgeCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5kYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkID0gdGhpcy5zaG93bkRheXMkXG4gICAgICAucGlwZShtYXAoKHNob3duRGF5cykgPT4gKHsgc3RhcnQ6IHNob3duRGF5c1swXS5nZXRUaW1lKCksIGVuZDogc2hvd25EYXlzW3Nob3duRGF5cy5sZW5ndGggLSAxXS5nZXRUaW1lKCkgKyAyNCAqIDYwICogNjAgKiAxMDAwIH0pKSk7XG4gICAgXG4gICAgdGhpcy5ldmVudHMkID0gdGhpcy5yZXNvdXJjZXMkXG4gICAgICAucGlwZShtYXAoKHJlc291cmNlc09yR3JvdXBzKSA9PiByZXNvdXJjZXNPckdyb3Vwcy5tYXAocmVzT3JHcm91cCA9PiB0aGlzLmdldFJlc291cmNlc0Zvckdyb3VwKHJlc09yR3JvdXApKSkpXG4gICAgICAucGlwZShtYXAoamFnZ2VkUmVzb3VyY2VzID0+IGphZ2dlZFJlc291cmNlcy5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pKSlcbiAgICAgIC5waXBlKG1hcChyZXNvdXJjZXMgPT4gcmVzb3VyY2VzLm1hcChyZXMgPT4gcmVzLmV2ZW50cykpKVxuICAgICAgLnBpcGUobWFwKGphZ2dlZEV2ZW50cyA9PiBqYWdnZWRFdmVudHMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKSkpO1xuXG4gICAgICAvLyBncm91cHMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbi5jaGlsZHJlbiksIFtdKVxuICAgIHRoaXMuZXZlbnRQYXJ0cyQgPSB0aGlzLmV2ZW50cyQucGlwZShcbiAgICAgIG1hcCgoZXZlbnRzKSA9PiAgZXZlbnRzLm1hcCgoZXYpID0+IHRoaXMudGltZWxpbmVTZXJ2aWNlLnNwbGl0SW5QYXJ0cyhldikpKVxuICAgICk7XG5cbiAgICB0aGlzLmV2ZW50UGFydHNGb3JUaGlzV2VlayQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJCxcbiAgICAgIHRoaXMuZXZlbnRQYXJ0cyRcbiAgICAgICAgLnBpcGUobWFwKGV2ZW50UGFydHMgPT4gZXZlbnRQYXJ0cy5tYXAoZXZwID0+IGV2cC5wYXJ0cykpKVxuICAgICAgICAucGlwZShtYXAoamFnZ2VkUGFydHMgPT4gIGphZ2dlZFBhcnRzLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSkpKVxuICAgICAgXSlcbiAgICAgIC5waXBlKG1hcCgoW3N0YXJ0QW5kRW5kLCBldmVudFBhcnRzXSkgPT4ge1xuICAgICAgICByZXR1cm4gZXZlbnRQYXJ0cy5maWx0ZXIoZXZlbnRQYXJ0ID0+IHtcbiAgICAgICAgICByZXR1cm4gISgoZXZlbnRQYXJ0LmVuZC5nZXRUaW1lKCkgPD0gc3RhcnRBbmRFbmQuc3RhcnQpIHx8IChldmVudFBhcnQuc3RhcnQuZ2V0VGltZSgpID49IHN0YXJ0QW5kRW5kLmVuZCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pKTtcblxuICAgIHRoaXMucHJldmlld0V2ZW50UGFydHMkID0gdGhpcy5wcmV2aWV3RXZlbnQkLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRpbWVsaW5lU2VydmljZS5zcGxpdEluUGFydHMoZXZlbnQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskID0gY29tYmluZUxhdGVzdChbdGhpcy5kYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkLCB0aGlzLnByZXZpZXdFdmVudFBhcnRzJF0pXG4gICAgICAucGlwZShtYXAoKFtzdGFydEFuZEVuZCwgcHJldmlld0V2ZW50UGFydHNdKSA9PiB7XG4gICAgICAgIGlmIChwcmV2aWV3RXZlbnRQYXJ0cykge1xuICAgICAgICAgIHJldHVybiBwcmV2aWV3RXZlbnRQYXJ0cy5wYXJ0cy5maWx0ZXIoZXZlbnRQYXJ0ID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhKChldmVudFBhcnQuZW5kLmdldFRpbWUoKSA8PSBzdGFydEFuZEVuZC5zdGFydCkgfHwgKGV2ZW50UGFydC5zdGFydC5nZXRUaW1lKCkgPj0gc3RhcnRBbmRFbmQuZW5kKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnRpbWVsaW5lZEV2ZW50UGFydHNGb3JUaGlzV2VlayQgPSB0aGlzLmV2ZW50UGFydHNGb3JUaGlzV2VlayRcbiAgICAgIC5waXBlKG1hcChldmVudFBhcnRzID0+IHtcbiAgICAgICAgLy8gV2UnbGwgb25seSB1c2UgdGhlIGV2ZW50cyBmb3IgdGhpcyB3ZWVrXG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IGV2ZW50UGFydHMubWFwKGVwID0+IGVwLmV2ZW50KVxuICAgICAgICAgIC5maWx0ZXIoKGUsIGksIGxpc3QpID0+IGxpc3QuaW5kZXhPZihlKSA9PT0gaSlcbiAgICAgICAgICAuZmlsdGVyKChlKSA9PiAhIWUpXG4gICAgICAgICAgLm1hcCgoZSkgPT4gPFNjaGVkdWxlckV2ZW50PmUpO1xuICAgICAgICBjb25zdCB0aW1lbGluZSA9IHRoaXMudGltZWxpbmVTZXJ2aWNlLmdldFRpbWVsaW5lKGV2ZW50cyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGltZWxpbmUubWFwKHRyYWNrID0+IHRyYWNrLmV2ZW50cy5tYXAoZXYgPT4gKHsgZXZlbnQ6IGV2LCBpbmRleDogdHJhY2suaW5kZXggfSkpKVxuICAgICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pXG4gICAgICAgICAgLm1hcCgoZXZpKSA9PiBldmVudFBhcnRzLmZpbHRlcihwID0+IHAuZXZlbnQgPT09IGV2aS5ldmVudCkubWFwKHAgPT4gKHsgcGFydDogcCwgaW5kZXg6IGV2aS5pbmRleCB9KSkpXG4gICAgICAgICAgLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0b3RhbDogdGltZWxpbmUubGVuZ3RoLFxuICAgICAgICAgIHBhcnRzOiByZXN1bHRcbiAgICAgICAgfTtcbiAgICAgIH0pKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubW9kZSQsIHRoaXMuc2hvd25EYXlzJCwgdGhpcy50aW1lU2xvdER1cmF0aW9uJF0pXG4gICAgICAucGlwZShmaWx0ZXIoKFttb2RlLCBzaG93bkRheXMsIGR1cmF0aW9uXSkgPT4gbW9kZSAhPT0gbnVsbCkpXG4gICAgICAucGlwZShtYXAoKFttb2RlLCBzaG93bkRheXMsIGR1cmF0aW9uXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVTbG90c1BlckRheSA9IE1hdGguZmxvb3IoKDYwICogNjAgKiAyNCkgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShBcnJheSh0aW1lU2xvdHNQZXJEYXkpLmtleXMoKSkubWFwKChpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB0aW1lc2xvdEZvck1vbmRheSA9IHRoaXMuY3JlYXRlVGltZXNsb3Qoc2hvd25EYXlzWzBdLCBpbmRleCwgZHVyYXRpb24pO1xuXG4gICAgICAgICAgICAgIHJldHVybiA8U2NoZWR1bGVyU3RhbXBXaXRoU2xvdHM+e1xuICAgICAgICAgICAgICAgIHNsb3RzOiBzaG93bkRheXMubWFwKChkYXkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoZGF5KTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldEhvdXJzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldEhvdXJzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0TWludXRlcyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0U2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0TWlsbGlzZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgIFxuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUoZGF5KTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRIb3Vycyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0SG91cnMoKSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0TWludXRlcyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0TWludXRlcygpKTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRTZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldE1pbGxpc2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldERhdGUoZW5kLmdldERhdGUoKSArIHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXREYXRlKCkgLSB0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXREYXRlKCkpO1xuICAgICAgXG4gICAgICAgICAgICAgICAgICByZXR1cm4gPFRpbWVTbG90Pnsgc3RhcnQsIGVuZCB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YW1wOiB0aW1lc2xvdEZvck1vbmRheS5zdGFydFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUudGltZWxpbmU6IHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsVGltZXNsb3RzID0gKDI0ICogNjAgKiA2MCkgLyBkdXJhdGlvbjtcbiAgICAgICAgICAgIHJldHVybiBzaG93bkRheXMubWFwKChkYXkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIDxTY2hlZHVsZXJTdGFtcFdpdGhTbG90cz57XG4gICAgICAgICAgICAgICAgc2xvdHM6IEFycmF5LmZyb20oQXJyYXkodG90YWxUaW1lc2xvdHMpLmtleXMoKSlcbiAgICAgICAgICAgICAgICAgIC5tYXAoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRpbWVzbG90KGRheSwgaW5kZXgsIGR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YW1wOiBkYXlcbiAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0aHJvdyAnVW5rbm93biB2YWx1ZSBmb3IgTW9kZTogJyArIG1vZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSlcbiAgICAgIC5zdWJzY3JpYmUoKHRpbWVzbG90cykgPT4ge1xuICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgd2UncmUgbm90IHVzaW5nIGFuIG9ic2VydmFibGUgaGVyZSwgYnV0IHBlcnNpc3QgdGhlIHRpbWVzbG90cyBpbiBhIEJlaGF2aW9yU3ViamVjdC5cbiAgICAgICAgdGhpcy50aW1lU2xvdHMkLm5leHQodGltZXNsb3RzKTtcbiAgICAgIH0pO1xuICAgIFxuICAgICAgdGhpcy53ZWVrT3B0aW9ucyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgod2Vla09wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy53ZWVrT3B0aW9uc0NoYW5nZS5lbWl0KHdlZWtPcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIHRoaXMudGltZWxpbmVPcHRpb25zJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKCh0aW1lbGluZU9wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy50aW1lbGluZU9wdGlvbnNDaGFuZ2UuZW1pdCh0aW1lbGluZU9wdGlvbnMpO1xuICAgICAgfSk7XG5cbiAgICAvLyBjb21iaW5lTGF0ZXN0KFt0aGlzLm1vZGUkLCB0aGlzLnNjYWxlJF0pXG4gICAgLy8gICAucGlwZShmaWx0ZXIoKFttb2RlLCBzY2FsZV0pID0+IG1vZGUgPT09IEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lKSlcblxuICB9XG5cbiAgcmVzb3VyY2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8KFJlc291cmNlIHwgUmVzb3VyY2VHcm91cClbXT4oW10pO1xuICBldmVudHMkOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50W10+O1xuICBldmVudFBhcnRzJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFdpdGhQYXJ0c1tdPjtcbiAgZXZlbnRQYXJ0c0ZvclRoaXNXZWVrJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFBhcnRbXT47XG4gIHRpbWVsaW5lZEV2ZW50UGFydHNGb3JUaGlzV2VlayQ6IE9ic2VydmFibGU8eyB0b3RhbDogbnVtYmVyLCBwYXJ0czogeyBwYXJ0OiBTY2hlZHVsZXJFdmVudFBhcnQsIGluZGV4OiBudW1iZXJ9W10gfT47XG4gIHdlZWtPcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2Vla09wdGlvbnM+KHsgdW5pdEhlaWdodDogMzAgfSk7XG4gIHRpbWVsaW5lT3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVsaW5lT3B0aW9ucz4oeyB1bml0V2lkdGg6IDUwIH0pO1xuICBcbiAgcHJldmlld0V2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHJldmlld0V2ZW50IHwgbnVsbD4obnVsbCk7XG4gIHByZXZpZXdFdmVudFBhcnRzJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFdpdGhQYXJ0cyB8IG51bGw+O1xuICBwcmV2aWV3RXZlbnRQYXJ0c0ZvclRoaXNXZWVrJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFBhcnRbXT47XG4gIFxuICBjdXJyZW50V2Vla09yTW9udGgkOiBCZWhhdmlvclN1YmplY3Q8RGF0ZT47XG4gIHNob3duRGF5cyQ6IE9ic2VydmFibGU8RGF0ZVtdPjtcbiAgZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJDogT2JzZXJ2YWJsZTx7c3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXJ9PjtcbiAgdGltZVNsb3REdXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMTgwMCk7XG4gIHRpbWVTbG90cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzW10+KFtdKTtcbiAgbW91c2VTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaG92ZXJlZFRpbWVTbG90JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGltZVNsb3QgfCBudWxsPihudWxsKTtcbiAgaG92ZXJlZEV2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2NoZWR1bGVyRXZlbnQgfCBudWxsPihudWxsKTtcbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQFZpZXdDaGlsZHJlbignc2xvdCcpIHRpbWVTbG90RWxlbWVudHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuXG4gIGNyZWF0ZVRpbWVzbG90KGRhdGU6IERhdGUsIGluZGV4OiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aW1lU2xvdFN0YXJ0ID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgdGltZVNsb3RTdGFydC5zZXRUaW1lKCt0aW1lU2xvdFN0YXJ0LmdldFRpbWUoKSArIGluZGV4ICogZHVyYXRpb24gKiAxMDAwKTtcbiAgICBjb25zdCB0aW1lU2xvdEVuZCA9IG5ldyBEYXRlKHRpbWVTbG90U3RhcnQpO1xuICAgIHRpbWVTbG90RW5kLnNldFRpbWUoK3RpbWVTbG90RW5kLmdldFRpbWUoKSArIGR1cmF0aW9uICogMTAwMCk7XG5cbiAgICByZXR1cm4gPFRpbWVTbG90Pnsgc3RhcnQ6IHRpbWVTbG90U3RhcnQsIGVuZDogdGltZVNsb3RFbmQgfTtcbiAgfVxuXG4gIGdldFJlc291cmNlc0Zvckdyb3VwKHJlc291cmNlT3JHcm91cDogUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKSA6IFJlc291cmNlW10ge1xuICAgIGlmICgnY2hpbGRyZW4nIGluIHJlc291cmNlT3JHcm91cCkge1xuICAgICAgcmV0dXJuIHJlc291cmNlT3JHcm91cC5jaGlsZHJlblxuICAgICAgICAubWFwKChjaGlsZCkgPT4gdGhpcy5nZXRSZXNvdXJjZXNGb3JHcm91cChjaGlsZCkpXG4gICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3Jlc291cmNlT3JHcm91cF07XG4gICAgfVxuICB9XG5cbiAgLy8jcmVnaW9uIE1vZGVcbiAgbW9kZXMgPSBFU2NoZWR1bGVyTW9kZTtcbiAgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVTY2hlZHVsZXJNb2RlPihFU2NoZWR1bGVyTW9kZS53ZWVrKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFU2NoZWR1bGVyTW9kZT4oKTtcbiAgcHVibGljIGdldCBtb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogRVNjaGVkdWxlck1vZGUpIHtcbiAgICB0aGlzLm1vZGUkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICAvLyAvLyNyZWdpb24gU2NhbGVcbiAgLy8gc2NhbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJTY2FsZT4oYXZhaWxhYmxlU2NhbGVzWzRdKTtcbiAgLy8gQE91dHB1dCgpIHB1YmxpYyBzY2FsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2NoZWR1bGVyU2NhbGU+KCk7XG4gIC8vIHB1YmxpYyBnZXQgc2NhbGUoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuc2NhbGUkLnZhbHVlO1xuICAvLyB9XG4gIC8vIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2NhbGUodmFsdWU6IFNjaGVkdWxlclNjYWxlKSB7XG4gIC8vICAgdGhpcy5zY2FsZSQubmV4dCh2YWx1ZSk7XG4gIC8vIH1cbiAgLy8gLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBXZWVrT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHdlZWtPcHRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxXZWVrT3B0aW9ucz4oKTtcbiAgcHVibGljIGdldCB3ZWVrT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy53ZWVrT3B0aW9ucyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCB3ZWVrT3B0aW9ucyh2YWx1ZTogV2Vla09wdGlvbnMpIHtcbiAgICB0aGlzLndlZWtPcHRpb25zJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFRpbWVsaW5lT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHRpbWVsaW5lT3B0aW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGltZWxpbmVPcHRpb25zPigpO1xuICBwdWJsaWMgZ2V0IHRpbWVsaW5lT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50aW1lbGluZU9wdGlvbnMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdGltZWxpbmVPcHRpb25zKHZhbHVlOiBUaW1lbGluZU9wdGlvbnMpIHtcbiAgICB0aGlzLnRpbWVsaW5lT3B0aW9ucyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBtYXhJbm5lckhlaWdodFxuICBASW5wdXQoKSBwdWJsaWMgbWF4SW5uZXJIZWlnaHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFJlc291cmNlc1xuICBwdWJsaWMgZ2V0IHJlc291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVzb3VyY2VzKHZhbHVlOiAoUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKVtdKSB7XG4gICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHByaXZhdGUgYWRkRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICByZXN1bHQuc2V0RGF0ZShyZXN1bHQuZ2V0RGF0ZSgpICsgZGF5cyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9uUHJldmlvdXNXZWVrT3JNb250aCgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlV2Vla09yTW9udGgoZmFsc2UpO1xuICB9XG5cbiAgb25OZXh0V2Vla09yTW9udGgoKSB7XG4gICAgdGhpcy5vbkNoYW5nZVdlZWtPck1vbnRoKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZVdlZWtPck1vbnRoKG5leHQ6IGJvb2xlYW4pIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQsIHRoaXMubW9kZSRdKVxuICAgICAgLnBpcGUobWFwKChbY3VycmVudFdlZWtPck1vbnRoLCBtb2RlXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZERheXMoY3VycmVudFdlZWtPck1vbnRoLCAobmV4dCA/IDcgOiAtNykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoY3VycmVudFdlZWtPck1vbnRoLmdldEZ1bGxZZWFyKCksIGN1cnJlbnRXZWVrT3JNb250aC5nZXRNb250aCgpICsgKG5leHQgPyAxIDogLTEpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgodykgPT4gdGhpcy5jdXJyZW50V2Vla09yTW9udGgkLm5leHQodykpO1xuICB9XG5cbiAgb25Ib3ZlckV2ZW50KGV2OiBTY2hlZHVsZXJFdmVudCB8IG51bGwpIHtcbiAgICB0aGlzLmhvdmVyZWRFdmVudCQubmV4dChldik7XG4gIH1cblxuICBvbkxlYXZlRXZlbnQoZXY6IFNjaGVkdWxlckV2ZW50IHwgbnVsbCkge1xuICAgIHRoaXMuaG92ZXJlZEV2ZW50JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgb3BlcmF0aW9uOiBEcmFnT3BlcmF0aW9uIHwgbnVsbCA9IG51bGw7XG4gIGRyYWdTdGFydFRpbWVzbG90OiBUaW1lU2xvdCB8IG51bGwgPSBudWxsO1xuICBvbkNyZWF0ZUV2ZW50KGV2OiBNb3VzZUV2ZW50LCBzbG90OiBUaW1lU2xvdCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5tb3VzZVN0YXRlJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgPSBzbG90O1xuICAgIHRoaXMub3BlcmF0aW9uID0ge1xuICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudCxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHN0YXJ0OiBzbG90LnN0YXJ0LFxuICAgICAgICBlbmQ6IHNsb3QuZW5kLFxuICAgICAgICBjb2xvcjogJyNGMDAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Rlc3QgZXZlbnQnLFxuICAgICAgfSxcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgfTtcbiAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBzbG90LnN0YXJ0LCBlbmQ6IHNsb3QuZW5kIH0pO1xuICB9XG5cbiAgcmFuZG9tQ29sb3IoKSB7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IDEyODtcbiAgICByZXR1cm4gJyMnICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpO1xuICB9XG4gIHJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzczogbnVtYmVyKXtcbiAgICBjb25zdCByID0gMjU1LWJyaWdodG5lc3M7XG4gICAgY29uc3QgbiA9IDB8KChNYXRoLnJhbmRvbSgpICogcikgKyBicmlnaHRuZXNzKTtcbiAgICBjb25zdCBzID0gbi50b1N0cmluZygxNik7XG4gICAgcmV0dXJuIChzLmxlbmd0aD09MSkgPyAnMCcrcyA6IHM7XG4gIH1cblxuICBvblN0YXJ0RHJhZ0V2ZW50KGV2ZW50UGFydDogU2NoZWR1bGVyRXZlbnRQYXJ0LCBldjogTW91c2VFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5ob3ZlcmVkVGltZVNsb3QkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChob3ZlcmVkVGltZVNsb3QpID0+IHtcbiAgICAgIGlmIChldmVudFBhcnQuZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWRUaW1lU2xvdDtcbiAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQsXG4gICAgICAgICAgZXZlbnQ6IGV2ZW50UGFydC5ldmVudCxcbiAgICAgICAgICBtZXRhOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudFBhcnQuZXZlbnQuc3RhcnQsIGVuZDogZXZlbnRQYXJ0LmV2ZW50LmVuZCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uU3RhcnRSZXNpemVFdmVudChldmVudDogU2NoZWR1bGVyRXZlbnQgfCBudWxsLCBwb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJykge1xuICAgIGlmIChldmVudCkge1xuICAgICAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgICAgICBjYXNlICd0b3AnOiB7XG4gICAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLnJlc2l6ZUV2ZW50LFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgbWV0YTogeyBwb3NpdGlvbiB9LFxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudC5zdGFydCwgZW5kOiBldmVudC5lbmQgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6IHtcbiAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQsXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBtZXRhOiB7IHBvc2l0aW9uIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IGV2ZW50LnN0YXJ0LCBlbmQ6IGV2ZW50LmVuZCB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gaG92ZXJlZFRpbWVzbG90JFxuICBwcml2YXRlIGdldEhvdmVyZWRUaW1lc2xvdChldjogTW91c2VFdmVudCwgdGltZVNsb3RzOiBTY2hlZHVsZXJTdGFtcFdpdGhTbG90c1tdKSB7XG4gICAgY29uc3QgaG92ZXJlZFNsb3RzID0gdGhpcy50aW1lU2xvdEVsZW1lbnRzLmZpbHRlcigoZWwpID0+IHtcbiAgICAgIGNvbnN0IHJjdCA9IGVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocmN0LmxlZnQgPD0gZXYueCAmJiBldi54IDw9IHJjdC5yaWdodCAmJiByY3QudG9wIDw9IGV2LnkgJiYgZXYueSA8PSByY3QuYm90dG9tKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFob3ZlcmVkU2xvdHMgfHwgaG92ZXJlZFNsb3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2xvdEVsZW1lbnQgPSBob3ZlcmVkU2xvdHNbMF0ubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHN0clJvdyA9IHNsb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKTtcbiAgICBpZiAoIXN0clJvdykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJvdyA9IHBhcnNlSW50KHN0clJvdyk7XG5cbiAgICBjb25zdCBzdHJDb2x1bW4gPSBzbG90RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sdW1uJyk7XG4gICAgaWYgKCFzdHJDb2x1bW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW4gPSBwYXJzZUludChzdHJDb2x1bW4pO1xuXG4gICAgY29uc3Qgc2xvdCA9IHRpbWVTbG90c1tyb3ddLnNsb3RzW2NvbHVtbl07XG4gICAgcmV0dXJuIHNsb3Q7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBvbk1vdXNlbW92ZShldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMudGltZVNsb3RzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodGltZVNsb3RzKSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkID0gdGhpcy5nZXRIb3ZlcmVkVGltZXNsb3QoZXYsIHRpbWVTbG90cyk7XG4gICAgICB0aGlzLmhvdmVyZWRUaW1lU2xvdCQubmV4dChob3ZlcmVkKTtcblxuICAgICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5vcGVyYXRpb24ub3BlcmF0aW9uKSB7XG4gICAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uLmV2ZW50ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgJiYgaG92ZXJlZCAmJiAodGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kLmdldFRpbWUoKSAhPSBob3ZlcmVkLmVuZC5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA9PT0gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyAxIHNsb3RcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA8IGhvdmVyZWQuc3RhcnQuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gRHJhZyBkb3duXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IGhvdmVyZWQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpID4gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBEcmFnIHVwXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSBob3ZlcmVkLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLm1vdmVFdmVudDoge1xuICAgICAgICAgICAgaWYgKGhvdmVyZWQgJiYgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkge1xuICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKChldikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gIDxQcmV2aWV3RXZlbnQ+e1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZShldi5zdGFydC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5ldyBEYXRlKGV2LmVuZC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXYgPT4gdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQoZXYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICAgIGlmIChob3ZlcmVkKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JFxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLm9wZXJhdGlvbiAmJiB0aGlzLm9wZXJhdGlvbi5ldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24ubWV0YS5wb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IGhvdmVyZWQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuZW5kID0gdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3BlcmF0aW9uLm1ldGEucG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLm9wZXJhdGlvbi5ldmVudC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICBldi5lbmQgPSBob3ZlcmVkLmVuZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMucHJldmlld0V2ZW50JC5uZXh0KGV2KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VVcChldjogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLm9wZXJhdGlvbikge1xuICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdGlvbi5vcGVyYXRpb24pIHtcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucHJldmlld0V2ZW50JF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW3ByZXZpZXdFdmVudF0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHByZXZpZXdFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlcyQubmV4dChbXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnJlc291cmNlcyQudmFsdWUsXG4gICAgICAgICAgICAgICAgICA8UmVzb3VyY2U+e1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05ldyByZXNvdXJjZSBncm91cCcsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50czogW3tcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydDogcHJldmlld0V2ZW50LnN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogcHJldmlld0V2ZW50LmVuZCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5yYW5kb21Db2xvcigpLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IGV2ZW50J1xuICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQ6XG4gICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByZXZpZXdFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24gJiYgdGhpcy5vcGVyYXRpb24uZXZlbnQgJiYgcHJldmlld0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuc3RhcnQgPSBwcmV2aWV3RXZlbnQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kID0gcHJldmlld0V2ZW50LmVuZDtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodGhpcy5yZXNvdXJjZXMkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gdy0xMDAgb3ZlcmZsb3cteS1hdXRvIG1iLTAgd2Vlay1zY2hlZHVsZVwiIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cIm51bGxcIlxuICAgICpuZ0lmPVwiKG1vZGUkIHwgYXN5bmMpID09PSBtb2Rlcy53ZWVrXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjYWxlbmRhci1sZWZ0IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uUHJldmlvdXNXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmktY2hldnJvbi1sZWZ0IHB4LTBcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBmbGV4LWVuZFwiIChjbGljayk9XCJvbk5leHRXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmktY2hldnJvbi1yaWdodCBweC0wXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgY2FsZW5kYXItaGVhZC1jZWxsXCIgKm5nRm9yPVwibGV0IGRheSBvZiAoc2hvd25EYXlzJCB8IGFzeW5jKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBjb2wtZm9ybS1sYWJlbCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBkYXkgfCBkYXRlOiAnZGQtTU0nIH19PC9zcGFuPjxzcGFuIGNsYXNzPVwiZC1ub25lIGQtbGctaW5saW5lLWJsb2NrXCI+LXt7IGRheSB8IGRhdGU6ICd5eXl5JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHlcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIm1heElubmVySGVpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiICpuZ0lmPVwiKHRpbWVTbG90cyQgfCBhc3luYykgYXMgcm93XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHdlZWtPcHRpb25zJCB8IGFzeW5jKSBhcyB3ZWVrT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDwhLS0gVGltZXNsb3RzIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHRpbWVzbG90cyBvZiByb3c7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBwLTAgdGltZXNsb3RcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIndlZWtPcHRpb25zLnVuaXRIZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwgY2FsZW5kYXItbGVmdCBhbGlnbi10b3AgcHgtMiBweS0wXCI+e3sgdGltZXNsb3RzLnNsb3RzWzBdLnN0YXJ0IHwgZGF0ZTogJ0hIOm1tOnNzJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY2VsbCBmbGV4LWdyb3ctMVwiICpuZ0Zvcj1cImxldCBzbG90IG9mIHRpbWVzbG90cy5zbG90czsgbGV0IGogPSBpbmRleFwiICNzbG90IChtb3VzZWRvd24pPVwib25DcmVhdGVFdmVudCgkZXZlbnQsIHNsb3QpXCIgW2F0dHIuZGF0YS1yb3ddPVwiaVwiIFthdHRyLmRhdGEtY29sdW1uXT1cImpcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gRXZlbnRzIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZVNsb3REdXJhdGlvbiQgfCBhc3luYykgYXMgdGltZVNsb3REdXJhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHRpbWVsaW5lZEV2ZW50UGFydHNGb3JUaGlzV2VlayQgfCBhc3luYykgYXMgcGFydERhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGV2ZW50UGFydCBvZiBwYXJ0RGF0YS5wYXJ0c1wiIGNsYXNzPVwiZXZlbnQgcC0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIihldmVudFBhcnQucGFydCB8IGJzU2Vjb25kc1RvZGF5T2Zmc2V0KSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQucGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdF09XCInY2FsYyg5MHB4ICsgKCgxMDAlIC0gOTBweCkgLyA3ICogJyArICgoZXZlbnRQYXJ0LnBhcnQgfCBkYXlPZldlZWspIC0gMSkgKyAnKSknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWlubmVyXCIgW2NsYXNzLmhvdmVyXT1cIihob3ZlcmVkRXZlbnQkIHwgYXN5bmMpID09PSBldmVudFBhcnQucGFydC5ldmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCInY2FsYygxMDAlIC8gJyArIHBhcnREYXRhLnRvdGFsICsgJyknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoZXZlbnRQYXJ0LnBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5tYXJnaW4tbGVmdF09XCInY2FsYygxMDAlIC8gJyArIHBhcnREYXRhLnRvdGFsICsgJyAqICcgKyBldmVudFBhcnQuaW5kZXggKyAnKSdcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcmVzaXplIHRvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImV2ZW50UGFydC5wYXJ0LnN0YXJ0ID09PSBldmVudFBhcnQucGFydC5ldmVudD8uc3RhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0UmVzaXplRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQsICd0b3AnKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtYm9yZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC13cmFwcGVyXCIgKm5nSWY9XCJldmVudFBhcnQucGFydC5ldmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnREcmFnRXZlbnQoZXZlbnRQYXJ0LnBhcnQsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Ib3ZlckV2ZW50KGV2ZW50UGFydC5wYXJ0LmV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbkxlYXZlRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtYmdcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJldmVudFBhcnQucGFydC5ldmVudC5jb2xvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWxhYmVsXCI+e3sgZXZlbnRQYXJ0LnBhcnQuZXZlbnQuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1yZXNpemUgYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXZlbnRQYXJ0LnBhcnQuZW5kID09PSBldmVudFBhcnQucGFydC5ldmVudD8uZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25TdGFydFJlc2l6ZUV2ZW50KGV2ZW50UGFydC5wYXJ0LmV2ZW50LCAnYm90dG9tJylcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihwcmV2aWV3RXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCB8IGFzeW5jKSBhcyBwcmV2aWV3UGFydERhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGV2ZW50UGFydCBvZiBwcmV2aWV3UGFydERhdGFcIiBjbGFzcz1cImV2ZW50IHByZXZpZXcgcC0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUb2RheU9mZnNldCkgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoZXZlbnRQYXJ0IHwgYnNTZWNvbmRzVGltZXNwYW4pIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIidjYWxjKDkwcHggKyAoKDEwMCUgLSA5MHB4KSAvIDcgKiAnICsgKChldmVudFBhcnQgfCBkYXlPZldlZWspIC0gMSkgKyAnKSknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWlubmVyIHctMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoZXZlbnRQYXJ0IHwgYnNTZWNvbmRzVGltZXNwYW4pIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbi0xMDAgb3ZlcmZsb3cteS1hdXRvIG1iLTAgYmctd2hpdGUgdGltZWxpbmVcIiAqbmdJZj1cIihtb2RlJCB8IGFzeW5jKSA9PT0gbW9kZXMudGltZWxpbmVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZCBkLWZsZXhcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uUHJldmlvdXNXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImJpLWNoZXZyb24tbGVmdCBweC0wXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGgzIHB5LTIgbWItMCB0ZXh0LWNlbnRlclwiPnt7IGN1cnJlbnRXZWVrT3JNb250aCQgfCBhc3luYyB8IGRhdGU6ICdNTU1NIHl5eXknIH19PC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZmxleC1zdGFydFwiIChjbGljayk9XCJvbk5leHRXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImJpLWNoZXZyb24tcmlnaHQgcHgtMFwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHkgdGFibGUtcmVzcG9uc2l2ZSBvdmVyZmxvdy14LWF1dG9cIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgbWItMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0aW1lU2xvdHMkIHwgYXN5bmMpIGFzIHRpbWVTbG90c1wiPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZGF5IG9mIHRpbWVTbG90c1wiIFthdHRyLmNvbHNwYW5dPVwiZGF5LnNsb3RzLmxlbmd0aFwiIGNsYXNzPVwidGV4dC1jZW50ZXIgcHgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb3NpdGlvbi1zdGlja3kgZGF5LWxhYmVsXCI+e3sgZGF5LnN0YW1wIHwgZGF0ZTogJ2QgRUUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0aW1lbGluZU9wdGlvbnMkIHwgYXN5bmMpIGFzIHRpbWVsaW5lT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF5IG9mIHRpbWVTbG90c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgc2xvdCBvZiBkYXkuc2xvdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIHAtMCB0ZXh0LWNlbnRlclwiIFtzdHlsZS53aWR0aC5weF09XCJ0aW1lbGluZU9wdGlvbnMudW5pdFdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzbG90LnN0YXJ0IHwgZGF0ZTogJ0hIOm1tJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDxicy1yZXNvdXJjZS1ncm91cC1wcmVzZW50ZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIChyZXNvdXJjZXMkIHwgYXN5bmMpXCIgW3Jlc291cmNlR3JvdXBdPVwiZ3JvdXBcIiBbdGltZVNsb3RzXT1cInRpbWVTbG90c1wiPjwvYnMtcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=