@coreui/angular-pro 4.3.15 → 4.3.18

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 (260) hide show
  1. package/README.md +1 -1
  2. package/esm2020/lib/accordion/accordion/accordion.component.mjs +3 -3
  3. package/esm2020/lib/accordion/accordion-button/accordion-button.directive.mjs +3 -3
  4. package/esm2020/lib/accordion/accordion-item/accordion-item.component.mjs +3 -3
  5. package/esm2020/lib/accordion/accordion.module.mjs +4 -4
  6. package/esm2020/lib/accordion/accordion.service.mjs +3 -3
  7. package/esm2020/lib/alert/alert-heading.directive.mjs +3 -3
  8. package/esm2020/lib/alert/alert-link.directive.mjs +3 -3
  9. package/esm2020/lib/alert/alert.component.mjs +3 -3
  10. package/esm2020/lib/alert/alert.module.mjs +4 -4
  11. package/esm2020/lib/avatar/avatar.component.mjs +3 -3
  12. package/esm2020/lib/avatar/avatar.module.mjs +4 -4
  13. package/esm2020/lib/backdrop/backdrop.service.mjs +3 -3
  14. package/esm2020/lib/badge/badge.component.mjs +3 -3
  15. package/esm2020/lib/badge/badge.module.mjs +4 -4
  16. package/esm2020/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +3 -3
  17. package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +3 -3
  18. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +3 -3
  19. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +3 -3
  20. package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +4 -4
  21. package/esm2020/lib/button/button-close.directive.mjs +3 -3
  22. package/esm2020/lib/button/button.directive.mjs +3 -3
  23. package/esm2020/lib/button/button.module.mjs +4 -4
  24. package/esm2020/lib/button-group/button-group/button-group.component.mjs +3 -3
  25. package/esm2020/lib/button-group/button-group.module.mjs +4 -4
  26. package/esm2020/lib/button-group/button-toolbar/button-toolbar.component.mjs +3 -3
  27. package/esm2020/lib/calendar/calendar/calendar-class-view.pipe.mjs +3 -3
  28. package/esm2020/lib/calendar/calendar/calendar.component.mjs +3 -3
  29. package/esm2020/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +3 -3
  30. package/esm2020/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +3 -3
  31. package/esm2020/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +3 -3
  32. package/esm2020/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +3 -3
  33. package/esm2020/lib/calendar/calendar-month/calendar-day.directive.mjs +3 -3
  34. package/esm2020/lib/calendar/calendar-month/calendar-day.pipe.mjs +3 -3
  35. package/esm2020/lib/calendar/calendar-month/calendar-month.component.mjs +3 -3
  36. package/esm2020/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +3 -3
  37. package/esm2020/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +3 -3
  38. package/esm2020/lib/calendar/calendar.module.mjs +4 -4
  39. package/esm2020/lib/calendar/calendar.service.mjs +3 -3
  40. package/esm2020/lib/callout/callout.component.mjs +3 -3
  41. package/esm2020/lib/callout/callout.module.mjs +4 -4
  42. package/esm2020/lib/card/card-body.component.mjs +3 -3
  43. package/esm2020/lib/card/card-footer.component.mjs +3 -3
  44. package/esm2020/lib/card/card-group.component.mjs +3 -3
  45. package/esm2020/lib/card/card-header-actions.component.mjs +3 -3
  46. package/esm2020/lib/card/card-header.component.mjs +3 -3
  47. package/esm2020/lib/card/card-img-overlay/card-img-overlay.component.mjs +3 -3
  48. package/esm2020/lib/card/card-img.directive.mjs +3 -3
  49. package/esm2020/lib/card/card-link.directive.mjs +3 -3
  50. package/esm2020/lib/card/card-subtitle.directive.mjs +3 -3
  51. package/esm2020/lib/card/card-text.directive.mjs +3 -3
  52. package/esm2020/lib/card/card-title.directive.mjs +3 -3
  53. package/esm2020/lib/card/card.component.mjs +3 -3
  54. package/esm2020/lib/card/card.module.mjs +4 -4
  55. package/esm2020/lib/carousel/carousel/carousel.component.mjs +3 -3
  56. package/esm2020/lib/carousel/carousel-caption/carousel-caption.component.mjs +3 -3
  57. package/esm2020/lib/carousel/carousel-control/carousel-control.component.mjs +3 -3
  58. package/esm2020/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +3 -3
  59. package/esm2020/lib/carousel/carousel-inner/carousel-inner.component.mjs +3 -3
  60. package/esm2020/lib/carousel/carousel-item/carousel-item.component.mjs +3 -3
  61. package/esm2020/lib/carousel/carousel-state.mjs +3 -3
  62. package/esm2020/lib/carousel/carousel.config.mjs +3 -3
  63. package/esm2020/lib/carousel/carousel.module.mjs +4 -4
  64. package/esm2020/lib/carousel/carousel.service.mjs +3 -3
  65. package/esm2020/lib/collapse/collapse.directive.mjs +3 -3
  66. package/esm2020/lib/collapse/collapse.module.mjs +4 -4
  67. package/esm2020/lib/date-picker/date-picker.component.mjs +3 -3
  68. package/esm2020/lib/date-picker/date-picker.module.mjs +4 -4
  69. package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +3 -3
  70. package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +4 -4
  71. package/esm2020/lib/dropdown/dropdown/dropdown.component.mjs +6 -6
  72. package/esm2020/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +3 -3
  73. package/esm2020/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +3 -3
  74. package/esm2020/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +3 -3
  75. package/esm2020/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +3 -3
  76. package/esm2020/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +3 -3
  77. package/esm2020/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +3 -3
  78. package/esm2020/lib/dropdown/dropdown.module.mjs +4 -4
  79. package/esm2020/lib/dropdown/dropdown.service.mjs +3 -3
  80. package/esm2020/lib/element-cover/element-cover.component.mjs +3 -3
  81. package/esm2020/lib/element-cover/element-cover.module.mjs +4 -4
  82. package/esm2020/lib/footer/footer.component.mjs +3 -3
  83. package/esm2020/lib/footer/footer.module.mjs +4 -4
  84. package/esm2020/lib/form/form/form.directive.mjs +3 -3
  85. package/esm2020/lib/form/form-check/form-check-input.directive.mjs +3 -3
  86. package/esm2020/lib/form/form-check/form-check-label.directive.mjs +3 -3
  87. package/esm2020/lib/form/form-check/form-check.component.mjs +3 -3
  88. package/esm2020/lib/form/form-control/form-control.directive.mjs +3 -3
  89. package/esm2020/lib/form/form-feedback/form-feedback.component.mjs +3 -3
  90. package/esm2020/lib/form/form-floating/form-floating.directive.mjs +3 -3
  91. package/esm2020/lib/form/form-label/form-label.directive.mjs +3 -3
  92. package/esm2020/lib/form/form-select/form-select.directive.mjs +3 -3
  93. package/esm2020/lib/form/form-text/form-text.directive.mjs +3 -3
  94. package/esm2020/lib/form/form.module.mjs +4 -4
  95. package/esm2020/lib/form/input-group/input-group.component.mjs +3 -3
  96. package/esm2020/lib/form/input-group-text/input-group-text.directive.mjs +3 -3
  97. package/esm2020/lib/grid/col.component.mjs +3 -3
  98. package/esm2020/lib/grid/col.directive.mjs +3 -3
  99. package/esm2020/lib/grid/container.component.mjs +3 -3
  100. package/esm2020/lib/grid/grid.module.mjs +4 -4
  101. package/esm2020/lib/grid/gutter.directive.mjs +3 -3
  102. package/esm2020/lib/grid/row.component.mjs +3 -3
  103. package/esm2020/lib/grid/row.directive.mjs +3 -3
  104. package/esm2020/lib/header/header/header.component.mjs +3 -3
  105. package/esm2020/lib/header/header-brand/header-brand.component.mjs +3 -3
  106. package/esm2020/lib/header/header-divider/header-divider.component.mjs +3 -3
  107. package/esm2020/lib/header/header-nav/header-nav.component.mjs +3 -3
  108. package/esm2020/lib/header/header-text/header-text.component.mjs +3 -3
  109. package/esm2020/lib/header/header-toggler/header-toggler.directive.mjs +3 -3
  110. package/esm2020/lib/header/header.module.mjs +4 -4
  111. package/esm2020/lib/image/img.directive.mjs +3 -3
  112. package/esm2020/lib/image/img.module.mjs +4 -4
  113. package/esm2020/lib/list-group/list-group-item.directive.mjs +3 -3
  114. package/esm2020/lib/list-group/list-group.directive.mjs +3 -3
  115. package/esm2020/lib/list-group/list-group.module.mjs +4 -4
  116. package/esm2020/lib/loading-button/loading-button.component.mjs +3 -3
  117. package/esm2020/lib/loading-button/loading-button.module.mjs +4 -4
  118. package/esm2020/lib/modal/modal/modal.component.mjs +3 -3
  119. package/esm2020/lib/modal/modal-body/modal-body.component.mjs +3 -3
  120. package/esm2020/lib/modal/modal-content/modal-content.component.mjs +3 -3
  121. package/esm2020/lib/modal/modal-dialog/modal-dialog.component.mjs +3 -3
  122. package/esm2020/lib/modal/modal-dismiss/modal-toggle.directive.mjs +3 -3
  123. package/esm2020/lib/modal/modal-footer/modal-footer.component.mjs +3 -3
  124. package/esm2020/lib/modal/modal-header/modal-header.component.mjs +3 -3
  125. package/esm2020/lib/modal/modal-title/modal-title.directive.mjs +3 -3
  126. package/esm2020/lib/modal/modal.module.mjs +4 -4
  127. package/esm2020/lib/modal/modal.service.mjs +3 -3
  128. package/esm2020/lib/multi-select/multi-select/multi-select-search.directive.mjs +68 -0
  129. package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +612 -175
  130. package/esm2020/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +5 -5
  131. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +3 -3
  132. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +7 -7
  133. package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +194 -59
  134. package/esm2020/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +15 -8
  135. package/esm2020/lib/multi-select/multi-select.module.mjs +13 -9
  136. package/esm2020/lib/multi-select/multi-select.service.mjs +27 -10
  137. package/esm2020/lib/multi-select/multi-select.type.mjs +1 -1
  138. package/esm2020/lib/multi-select/public_api.mjs +1 -1
  139. package/esm2020/lib/nav/nav-item.component.mjs +3 -3
  140. package/esm2020/lib/nav/nav-link.directive.mjs +3 -3
  141. package/esm2020/lib/nav/nav.component.mjs +3 -3
  142. package/esm2020/lib/nav/nav.module.mjs +4 -4
  143. package/esm2020/lib/navbar/navbar-brand/navbar-brand.directive.mjs +3 -3
  144. package/esm2020/lib/navbar/navbar-nav/navbar-nav.component.mjs +3 -3
  145. package/esm2020/lib/navbar/navbar-text/navbar-text.component.mjs +3 -3
  146. package/esm2020/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +3 -3
  147. package/esm2020/lib/navbar/navbar.component.mjs +3 -3
  148. package/esm2020/lib/navbar/navbar.module.mjs +4 -4
  149. package/esm2020/lib/offcanvas/offcanvas/offcanvas.component.mjs +3 -3
  150. package/esm2020/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +3 -3
  151. package/esm2020/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +3 -3
  152. package/esm2020/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +3 -3
  153. package/esm2020/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +3 -3
  154. package/esm2020/lib/offcanvas/offcanvas.module.mjs +4 -4
  155. package/esm2020/lib/offcanvas/offcanvas.service.mjs +3 -3
  156. package/esm2020/lib/pagination/page-item/page-item.component.mjs +3 -3
  157. package/esm2020/lib/pagination/page-item/page-item.directive.mjs +3 -3
  158. package/esm2020/lib/pagination/page-link/page-link.directive.mjs +3 -3
  159. package/esm2020/lib/pagination/pagination/pagination.component.mjs +3 -3
  160. package/esm2020/lib/pagination/pagination.module.mjs +4 -4
  161. package/esm2020/lib/placeholder/placeholder-animation.directive.mjs +3 -3
  162. package/esm2020/lib/placeholder/placeholder.directive.mjs +3 -3
  163. package/esm2020/lib/placeholder/placeholder.module.mjs +4 -4
  164. package/esm2020/lib/popover/popover/popover.component.mjs +3 -3
  165. package/esm2020/lib/popover/popover.directive.mjs +3 -3
  166. package/esm2020/lib/popover/popover.module.mjs +4 -4
  167. package/esm2020/lib/progress/progress-bar.component.mjs +3 -3
  168. package/esm2020/lib/progress/progress.component.mjs +3 -3
  169. package/esm2020/lib/progress/progress.module.mjs +4 -4
  170. package/esm2020/lib/services/class-toggle.service.mjs +3 -3
  171. package/esm2020/lib/services/intersection.service.mjs +3 -3
  172. package/esm2020/lib/services/listeners.service.mjs +3 -3
  173. package/esm2020/lib/shared/html-attr.directive.mjs +3 -3
  174. package/esm2020/lib/shared/shared.module.mjs +4 -4
  175. package/esm2020/lib/shared/template-id.directive.mjs +3 -3
  176. package/esm2020/lib/sidebar/sidebar/sidebar.component.mjs +3 -3
  177. package/esm2020/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +3 -3
  178. package/esm2020/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +3 -3
  179. package/esm2020/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +3 -3
  180. package/esm2020/lib/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  181. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +3 -3
  182. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +3 -3
  183. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +3 -3
  184. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +3 -3
  185. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +3 -3
  186. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +3 -3
  187. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +6 -6
  188. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +3 -3
  189. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +3 -3
  190. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +6 -6
  191. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +6 -6
  192. package/esm2020/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +3 -3
  193. package/esm2020/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +3 -3
  194. package/esm2020/lib/sidebar/sidebar.module.mjs +4 -4
  195. package/esm2020/lib/sidebar/sidebar.service.mjs +3 -3
  196. package/esm2020/lib/smart-pagination/smart-pagination.component.mjs +3 -3
  197. package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +4 -4
  198. package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +32 -24
  199. package/esm2020/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +3 -3
  200. package/esm2020/lib/smart-table/smart-table-filter/filter-input.directive.mjs +3 -3
  201. package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +3 -3
  202. package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +6 -6
  203. package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +3 -3
  204. package/esm2020/lib/smart-table/smart-table.module.mjs +4 -4
  205. package/esm2020/lib/smart-table/smart-table.type.mjs +1 -1
  206. package/esm2020/lib/spinner/spinner.component.mjs +3 -3
  207. package/esm2020/lib/spinner/spinner.module.mjs +4 -4
  208. package/esm2020/lib/table/table-active.directive.mjs +3 -3
  209. package/esm2020/lib/table/table-color.directive.mjs +3 -3
  210. package/esm2020/lib/table/table.directive.mjs +3 -3
  211. package/esm2020/lib/table/table.module.mjs +4 -4
  212. package/esm2020/lib/tabs/tab-content/tab-content.component.mjs +3 -3
  213. package/esm2020/lib/tabs/tab-content-ref.directive.mjs +3 -3
  214. package/esm2020/lib/tabs/tab-pane/tab-pane.component.mjs +3 -3
  215. package/esm2020/lib/tabs/tab.service.mjs +3 -3
  216. package/esm2020/lib/tabs/tabs.module.mjs +4 -4
  217. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +6 -6
  218. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +6 -6
  219. package/esm2020/lib/time-picker/time-picker.component.mjs +3 -3
  220. package/esm2020/lib/time-picker/time-picker.module.mjs +4 -4
  221. package/esm2020/lib/toast/toast/toast.component.mjs +3 -3
  222. package/esm2020/lib/toast/toast-body/toast-body.component.mjs +3 -3
  223. package/esm2020/lib/toast/toast-close.directive.mjs +3 -3
  224. package/esm2020/lib/toast/toast-header/toast-header.component.mjs +3 -3
  225. package/esm2020/lib/toast/toast.module.mjs +4 -4
  226. package/esm2020/lib/toast/toaster/toaster-host.directive.mjs +3 -3
  227. package/esm2020/lib/toast/toaster/toaster.component.mjs +3 -3
  228. package/esm2020/lib/toast/toaster/toaster.service.mjs +3 -3
  229. package/esm2020/lib/tooltip/tooltip/tooltip.component.mjs +3 -3
  230. package/esm2020/lib/tooltip/tooltip.directive.mjs +3 -3
  231. package/esm2020/lib/tooltip/tooltip.module.mjs +4 -4
  232. package/esm2020/lib/utilities/align.directive.mjs +3 -3
  233. package/esm2020/lib/utilities/bg-color.directive.mjs +3 -3
  234. package/esm2020/lib/utilities/border.directive.mjs +3 -3
  235. package/esm2020/lib/utilities/rounded.directive.mjs +3 -3
  236. package/esm2020/lib/utilities/text-color.directive.mjs +3 -3
  237. package/esm2020/lib/utilities/utilities.module.mjs +4 -4
  238. package/esm2020/lib/widget/widget-stat-a/widget-stat-a.component.mjs +3 -3
  239. package/esm2020/lib/widget/widget-stat-b/widget-stat-b.component.mjs +3 -3
  240. package/esm2020/lib/widget/widget-stat-c/widget-stat-c.component.mjs +3 -3
  241. package/esm2020/lib/widget/widget-stat-d/widget-stat-d.component.mjs +3 -3
  242. package/esm2020/lib/widget/widget-stat-e/widget-stat-e.component.mjs +3 -3
  243. package/esm2020/lib/widget/widget-stat-f/widget-stat-f.component.mjs +3 -3
  244. package/esm2020/lib/widget/widget.module.mjs +4 -4
  245. package/fesm2015/coreui-angular-pro.mjs +1726 -1052
  246. package/fesm2015/coreui-angular-pro.mjs.map +1 -1
  247. package/fesm2020/coreui-angular-pro.mjs +1707 -1041
  248. package/fesm2020/coreui-angular-pro.mjs.map +1 -1
  249. package/lib/multi-select/multi-select/multi-select-search.directive.d.ts +15 -0
  250. package/lib/multi-select/multi-select/multi-select.component.d.ts +160 -27
  251. package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +58 -16
  252. package/lib/multi-select/multi-select-tag/multi-select-tag.component.d.ts +5 -2
  253. package/lib/multi-select/multi-select.module.d.ts +8 -6
  254. package/lib/multi-select/multi-select.service.d.ts +14 -7
  255. package/lib/multi-select/multi-select.type.d.ts +4 -2
  256. package/lib/multi-select/public_api.d.ts +1 -0
  257. package/lib/smart-table/smart-table/smart-table.component.d.ts +8 -6
  258. package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +2 -2
  259. package/lib/smart-table/smart-table.type.d.ts +7 -7
  260. package/package.json +1 -1
@@ -9,11 +9,11 @@ export class MultiSelectNativeSelectComponent {
9
9
  this.id = '';
10
10
  }
11
11
  }
12
- MultiSelectNativeSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MultiSelectNativeSelectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
13
- MultiSelectNativeSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: MultiSelectNativeSelectComponent, selector: "c-multi-select-native-select", inputs: { form: "form", id: "id", multiple: "multiple", name: "name", options: "options", disabled: "disabled" }, ngImport: i0, template: "<select [multiple]=\"multiple\" [name]=\"name\" style=\"display: none\" tabindex=\"-1\" [id]=\"id\" [disabled]=\"disabled\">\n <option\n *ngFor=\"let option of options\"\n [label]=\"option.label\"\n [attr.selected]=\"option.selected ? '' : null\"\n [value]=\"option.value\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n ></option>\n</select>\n\n", styles: [":host{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MultiSelectNativeSelectComponent, decorators: [{
12
+ MultiSelectNativeSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MultiSelectNativeSelectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
13
+ MultiSelectNativeSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: MultiSelectNativeSelectComponent, selector: "c-multi-select-native-select", inputs: { form: "form", id: "id", multiple: "multiple", name: "name", options: "options", disabled: "disabled" }, ngImport: i0, template: "<select [disabled]=\"disabled\" [id]=\"id\" [multiple]=\"multiple\" [name]=\"name\" style=\"display: none\" tabindex=\"-1\">\n <option\n *ngFor=\"let option of options\"\n [attr.selected]=\"option.selected ? '' : null\"\n [disabled]=\"disabled\"\n [label]=\"option.label\"\n [value]=\"option.value\"\n tabindex=\"-1\"\n ></option>\n</select>\n\n", styles: [":host{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MultiSelectNativeSelectComponent, decorators: [{
15
15
  type: Component,
16
- args: [{ selector: 'c-multi-select-native-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<select [multiple]=\"multiple\" [name]=\"name\" style=\"display: none\" tabindex=\"-1\" [id]=\"id\" [disabled]=\"disabled\">\n <option\n *ngFor=\"let option of options\"\n [label]=\"option.label\"\n [attr.selected]=\"option.selected ? '' : null\"\n [value]=\"option.value\"\n [disabled]=\"disabled\"\n tabindex=\"-1\"\n ></option>\n</select>\n\n", styles: [":host{display:none}\n"] }]
16
+ args: [{ selector: 'c-multi-select-native-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<select [disabled]=\"disabled\" [id]=\"id\" [multiple]=\"multiple\" [name]=\"name\" style=\"display: none\" tabindex=\"-1\">\n <option\n *ngFor=\"let option of options\"\n [attr.selected]=\"option.selected ? '' : null\"\n [disabled]=\"disabled\"\n [label]=\"option.label\"\n [value]=\"option.value\"\n tabindex=\"-1\"\n ></option>\n</select>\n\n", styles: [":host{display:none}\n"] }]
17
17
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { form: [{
18
18
  type: Input
19
19
  }], id: [{
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
27
27
  }], disabled: [{
28
28
  type: Input
29
29
  }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW5hdGl2ZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW5hdGl2ZS1zZWxlY3QvbXVsdGktc2VsZWN0LW5hdGl2ZS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW5hdGl2ZS1zZWxlY3QvbXVsdGktc2VsZWN0LW5hdGl2ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUTdGLE1BQU0sT0FBTyxnQ0FBZ0M7SUFTM0MsWUFDUyxpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVJwQyxTQUFJLEdBQVksRUFBRSxDQUFDO1FBQ25CLE9BQUUsR0FBWSxFQUFFLENBQUM7SUFRdEIsQ0FBQzs7NkhBWE0sZ0NBQWdDO2lIQUFoQyxnQ0FBZ0Msc0xDUjdDLCtXQVdBOzJGREhhLGdDQUFnQztrQkFONUMsU0FBUzsrQkFDRSw4QkFBOEIsbUJBR3ZCLHVCQUF1QixDQUFDLE1BQU07d0dBSXRDLElBQUk7c0JBQVosS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1tdWx0aS1zZWxlY3QtbmF0aXZlLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWxlY3QtbmF0aXZlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC1uYXRpdmUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0TmF0aXZlU2VsZWN0Q29tcG9uZW50IHtcblxuICBASW5wdXQoKSBmb3JtPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgbmFtZT86IHN0cmluZztcbiAgQElucHV0KCkgb3B0aW9ucz86IGFueTtcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7IH1cbn1cbiIsIjxzZWxlY3QgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgW25hbWVdPVwibmFtZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIHRhYmluZGV4PVwiLTFcIiBbaWRdPVwiaWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgPG9wdGlvblxuICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgW2xhYmVsXT1cIm9wdGlvbi5sYWJlbFwiXG4gICAgW2F0dHIuc2VsZWN0ZWRdPVwib3B0aW9uLnNlbGVjdGVkID8gJycgOiBudWxsXCJcbiAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICA+PC9vcHRpb24+XG48L3NlbGVjdD5cblxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW5hdGl2ZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW5hdGl2ZS1zZWxlY3QvbXVsdGktc2VsZWN0LW5hdGl2ZS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW5hdGl2ZS1zZWxlY3QvbXVsdGktc2VsZWN0LW5hdGl2ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUTdGLE1BQU0sT0FBTyxnQ0FBZ0M7SUFTM0MsWUFDUyxpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVJwQyxTQUFJLEdBQVksRUFBRSxDQUFDO1FBQ25CLE9BQUUsR0FBWSxFQUFFLENBQUM7SUFRdEIsQ0FBQzs7NkhBWE0sZ0NBQWdDO2lIQUFoQyxnQ0FBZ0Msc0xDUjdDLCtXQVdBOzJGREhhLGdDQUFnQztrQkFONUMsU0FBUzsrQkFDRSw4QkFBOEIsbUJBR3ZCLHVCQUF1QixDQUFDLE1BQU07d0dBSXRDLElBQUk7c0JBQVosS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1tdWx0aS1zZWxlY3QtbmF0aXZlLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWxlY3QtbmF0aXZlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC1uYXRpdmUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0TmF0aXZlU2VsZWN0Q29tcG9uZW50IHtcblxuICBASW5wdXQoKSBmb3JtPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgbmFtZT86IHN0cmluZztcbiAgQElucHV0KCkgb3B0aW9ucz86IGFueTtcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7IH1cbn1cbiIsIjxzZWxlY3QgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2lkXT1cImlkXCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgW25hbWVdPVwibmFtZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIHRhYmluZGV4PVwiLTFcIj5cbiAgPG9wdGlvblxuICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgW2F0dHIuc2VsZWN0ZWRdPVwib3B0aW9uLnNlbGVjdGVkID8gJycgOiBudWxsXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtsYWJlbF09XCJvcHRpb24ubGFiZWxcIlxuICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICA+PC9vcHRpb24+XG48L3NlbGVjdD5cblxuIl19
@@ -8,9 +8,9 @@ export class MultiSelectOptgroupLabelComponent {
8
8
  };
9
9
  }
10
10
  }
11
- MultiSelectOptgroupLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MultiSelectOptgroupLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- MultiSelectOptgroupLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: MultiSelectOptgroupLabelComponent, selector: "c-multi-select-optgroup-label", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MultiSelectOptgroupLabelComponent, decorators: [{
11
+ MultiSelectOptgroupLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MultiSelectOptgroupLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
+ MultiSelectOptgroupLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: MultiSelectOptgroupLabelComponent, selector: "c-multi-select-optgroup-label", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MultiSelectOptgroupLabelComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ selector: 'c-multi-select-optgroup-label', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}\n"] }]
16
16
  }], ctorParameters: function () { return []; }, propDecorators: { hostClasses: [{
@@ -1,4 +1,4 @@
1
- import { Component, ContentChildren, HostBinding, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, HostBinding, Input } from '@angular/core';
2
2
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
3
  import { MultiSelectOptionComponent } from '../multi-select-option/multi-select-option.component';
4
4
  import * as i0 from "@angular/core";
@@ -29,15 +29,15 @@ export class MultiSelectOptgroupComponent {
29
29
  }
30
30
  updateMultiSelectOptions() {
31
31
  this.multiSelectOptions?.forEach((option) => {
32
- option.disabled = this.disabled;
32
+ option.disabled = this.disabled || option.disabled;
33
33
  });
34
34
  }
35
35
  }
36
- MultiSelectOptgroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MultiSelectOptgroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
- MultiSelectOptgroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: MultiSelectOptgroupComponent, selector: "c-multi-select-optgroup", inputs: { label: "label", disabled: "disabled" }, host: { properties: { "class": "this.hostClasses" } }, queries: [{ propertyName: "multiSelectOptions", predicate: MultiSelectOptionComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<c-multi-select-optgroup-label *ngIf=\"label\">{{label}}</c-multi-select-optgroup-label>\n<ng-content></ng-content>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MultiSelectOptgroupLabelComponent, selector: "c-multi-select-optgroup-label" }] });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MultiSelectOptgroupComponent, decorators: [{
36
+ MultiSelectOptgroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MultiSelectOptgroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
+ MultiSelectOptgroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: MultiSelectOptgroupComponent, selector: "c-multi-select-optgroup", inputs: { label: "label", disabled: "disabled" }, host: { properties: { "class": "this.hostClasses" } }, queries: [{ propertyName: "multiSelectOptions", predicate: MultiSelectOptionComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<c-multi-select-optgroup-label *ngIf=\"label\">{{label}}</c-multi-select-optgroup-label>\n<ng-content></ng-content>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MultiSelectOptgroupLabelComponent, selector: "c-multi-select-optgroup-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MultiSelectOptgroupComponent, decorators: [{
39
39
  type: Component,
40
- args: [{ selector: 'c-multi-select-optgroup', template: "<c-multi-select-optgroup-label *ngIf=\"label\">{{label}}</c-multi-select-optgroup-label>\n<ng-content></ng-content>\n", styles: [":host{display:block}\n"] }]
40
+ args: [{ selector: 'c-multi-select-optgroup', changeDetection: ChangeDetectionStrategy.OnPush, template: "<c-multi-select-optgroup-label *ngIf=\"label\">{{label}}</c-multi-select-optgroup-label>\n<ng-content></ng-content>\n", styles: [":host{display:block}\n"] }]
41
41
  }], propDecorators: { label: [{
42
42
  type: Input
43
43
  }], disabled: [{
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
49
49
  type: HostBinding,
50
50
  args: ['class']
51
51
  }] } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW9wdGdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvbXVsdGktc2VsZWN0L211bHRpLXNlbGVjdC1vcHRncm91cC9tdWx0aS1zZWxlY3Qtb3B0Z3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW9wdGdyb3VwL211bHRpLXNlbGVjdC1vcHRncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULGVBQWUsRUFDZixXQUFXLEVBQ1gsS0FBSyxFQUlOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7OztBQU9sRyxNQUFNLE9BQU8sNEJBQTRCO0lBTHpDO1FBaUJVLGNBQVMsR0FBWSxLQUFLLENBQUM7S0F5QnBDO0lBaENDLElBQ0ksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFLRCxJQUEwQixXQUFXO1FBQ25DLE9BQU87WUFDTCwyQkFBMkIsRUFBRSxJQUFJO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMxQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt5SEFwQ1UsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsMk1BY3RCLDBCQUEwQixxRUNqQzdDLHVIQUVBOzJGRGlCYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UseUJBQXlCOzhCQVExQixLQUFLO3NCQUFiLEtBQUs7Z0JBRUYsUUFBUTtzQkFEWCxLQUFLO2dCQVM4RCxrQkFBa0I7c0JBQXJGLGVBQWU7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUV4QyxXQUFXO3NCQUFwQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHsgTXVsdGlTZWxlY3RPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9tdWx0aS1zZWxlY3Qtb3B0aW9uL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1tdWx0aS1zZWxlY3Qtb3B0Z3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktc2VsZWN0LW9wdGdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktc2VsZWN0LW9wdGdyb3VwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RPcHRncm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG5cbiAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNdWx0aVNlbGVjdE9wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBtdWx0aVNlbGVjdE9wdGlvbnMhOiBRdWVyeUxpc3Q8TXVsdGlTZWxlY3RPcHRpb25Db21wb25lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgaG9zdENsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdmb3JtLW11bHRpLXNlbGVjdC1vcHRpb25zJzogdHJ1ZVxuICAgIH07XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNdWx0aVNlbGVjdE9wdGlvbnMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgdGhpcy51cGRhdGVNdWx0aVNlbGVjdE9wdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU11bHRpU2VsZWN0T3B0aW9ucygpIHtcbiAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucz8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XG4gICAgICBvcHRpb24uZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkO1xuICAgIH0pO1xuICB9XG59XG4iLCI8Yy1tdWx0aS1zZWxlY3Qtb3B0Z3JvdXAtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvYy1tdWx0aS1zZWxlY3Qtb3B0Z3JvdXAtbGFiZWw+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW9wdGdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvbXVsdGktc2VsZWN0L211bHRpLXNlbGVjdC1vcHRncm91cC9tdWx0aS1zZWxlY3Qtb3B0Z3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW9wdGdyb3VwL211bHRpLXNlbGVjdC1vcHRncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxFQUNYLEtBQUssRUFJTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7QUFRbEcsTUFBTSxPQUFPLDRCQUE0QjtJQU56QztRQXFCVSxjQUFTLEdBQVksS0FBSyxDQUFDO0tBeUJwQztJQWxDQyxJQUNJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBTUQsSUFBMEIsV0FBVztRQUNuQyxPQUFPO1lBQ0wsMkJBQTJCLEVBQUUsSUFBSTtTQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDMUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt5SEF2Q1UsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsMk1BaUJ0QiwwQkFBMEIscUVDdEM3Qyx1SEFFQTsyRkRtQmEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTTs4QkFNdEMsS0FBSztzQkFBYixLQUFLO2dCQUdGLFFBQVE7c0JBRFgsS0FBSztnQkFXOEQsa0JBQWtCO3NCQUFyRixlQUFlO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFFeEMsV0FBVztzQkFBcEMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5pbXBvcnQgeyBNdWx0aVNlbGVjdE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL211bHRpLXNlbGVjdC1vcHRpb24vbXVsdGktc2VsZWN0LW9wdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLW11bHRpLXNlbGVjdC1vcHRncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWxlY3Qtb3B0Z3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWxlY3Qtb3B0Z3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RPcHRncm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG5cbiAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNdWx0aVNlbGVjdE9wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBtdWx0aVNlbGVjdE9wdGlvbnMhOiBRdWVyeUxpc3Q8TXVsdGlTZWxlY3RPcHRpb25Db21wb25lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgaG9zdENsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdmb3JtLW11bHRpLXNlbGVjdC1vcHRpb25zJzogdHJ1ZVxuICAgIH07XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNdWx0aVNlbGVjdE9wdGlvbnMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgdGhpcy51cGRhdGVNdWx0aVNlbGVjdE9wdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU11bHRpU2VsZWN0T3B0aW9ucygpIHtcbiAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucz8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XG4gICAgICBvcHRpb24uZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8IG9wdGlvbi5kaXNhYmxlZDtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGMtbXVsdGktc2VsZWN0LW9wdGdyb3VwLWxhYmVsICpuZ0lmPVwibGFiZWxcIj57e2xhYmVsfX08L2MtbXVsdGktc2VsZWN0LW9wdGdyb3VwLWxhYmVsPlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
@@ -1,58 +1,104 @@
1
- var _MultiSelectOptionComponent_destroy$;
2
- import { __classPrivateFieldGet } from "tslib";
1
+ var _MultiSelectOptionComponent_active$, _MultiSelectOptionComponent_destroy$, _MultiSelectOptionComponent_selected$, _MultiSelectOptionComponent_value$, _MultiSelectOptionComponent_disabled, _MultiSelectOptionComponent_selected, _MultiSelectOptionComponent_value, _MultiSelectOptionComponent_dropdownVisible, _MultiSelectOptionComponent_active, _MultiSelectOptionComponent_focused, _MultiSelectOptionComponent_tabIndex, _MultiSelectOptionComponent_ariaSelected;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
3
  import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';
4
4
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
5
  import { Subject } from 'rxjs';
6
- import { takeUntil } from 'rxjs/operators';
6
+ import { combineLatestWith, delay, distinctUntilChanged, filter, takeUntil, tap } from 'rxjs/operators';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/cdk/a11y";
9
9
  import * as i2 from "../multi-select.service";
10
10
  import * as i3 from "@angular/common";
11
- /** The next id to use for creating unique DOM IDs. */
12
- let nextId = 0;
13
11
  export class MultiSelectOptionComponent {
14
12
  constructor(elementRef, changeDetectorRef, focusMonitor, multiSelectService) {
15
13
  this.elementRef = elementRef;
16
14
  this.changeDetectorRef = changeDetectorRef;
17
15
  this.focusMonitor = focusMonitor;
18
16
  this.multiSelectService = multiSelectService;
19
- this.optionsStyle = 'checkbox';
17
+ _MultiSelectOptionComponent_active$.set(this, new Subject());
18
+ _MultiSelectOptionComponent_destroy$.set(this, new Subject());
19
+ _MultiSelectOptionComponent_selected$.set(this, new Subject());
20
+ _MultiSelectOptionComponent_value$.set(this, new Subject());
21
+ /**
22
+ * Option style
23
+ * @type ('checkbox' | 'text')
24
+ * @default 'checkbox'
25
+ */
26
+ this.optionsStyle = this.multiSelectService.optionsStyle;
27
+ /**
28
+ * Option visible.
29
+ * @type boolean
30
+ * @default true
31
+ */
20
32
  this.visible = true;
33
+ _MultiSelectOptionComponent_disabled.set(this, false);
34
+ _MultiSelectOptionComponent_selected.set(this, false);
35
+ /**
36
+ * Emits option selected change
37
+ * @type boolean
38
+ */
21
39
  this.selectedChange = new EventEmitter();
40
+ _MultiSelectOptionComponent_value.set(this, void 0);
22
41
  this.hasContent = true;
23
- this.dropdownVisible = false;
24
- _MultiSelectOptionComponent_destroy$.set(this, new Subject());
25
- this._generatedId = `coreui-option-${nextId++}`;
26
- this._id = this._generatedId;
27
- this._disabled = false;
28
- this._selected = false;
42
+ _MultiSelectOptionComponent_dropdownVisible.set(this, false);
43
+ _MultiSelectOptionComponent_active.set(this, false);
44
+ _MultiSelectOptionComponent_focused.set(this, false);
45
+ this.focusChange = new EventEmitter();
46
+ _MultiSelectOptionComponent_tabIndex.set(this, -1);
47
+ _MultiSelectOptionComponent_ariaSelected.set(this, undefined);
29
48
  this.setSubscriptions();
30
49
  }
31
- /** The id of the option element. */
32
- get id() {
33
- return this._id || this._generatedId;
34
- }
35
- set id(value) {
36
- this._id = value;
37
- }
50
+ /**
51
+ * Option disabled.
52
+ * @type boolean
53
+ * @default false
54
+ */
38
55
  set disabled(value) {
39
- this._disabled = coerceBooleanProperty(value);
56
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_disabled, coerceBooleanProperty(value), "f");
40
57
  }
41
58
  get disabled() {
42
- return this._disabled;
59
+ return __classPrivateFieldGet(this, _MultiSelectOptionComponent_disabled, "f");
43
60
  }
61
+ /**
62
+ * Option selected.
63
+ * @type boolean
64
+ * @default false
65
+ */
44
66
  set selected(value) {
45
- const newValue = coerceBooleanProperty(value);
46
- if (this._selected !== newValue) {
47
- setTimeout(() => {
48
- this._selected = newValue;
49
- this.selectedChange.emit(newValue);
50
- this.multiSelectService.toggleOption(this);
51
- });
67
+ const selected = coerceBooleanProperty(value);
68
+ if (__classPrivateFieldGet(this, _MultiSelectOptionComponent_selected, "f") !== selected) {
69
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_selected, selected, "f");
70
+ __classPrivateFieldGet(this, _MultiSelectOptionComponent_selected$, "f").next(selected);
52
71
  }
53
72
  }
54
73
  get selected() {
55
- return this._selected;
74
+ return __classPrivateFieldGet(this, _MultiSelectOptionComponent_selected, "f");
75
+ }
76
+ /**
77
+ * Option value.
78
+ * @type string
79
+ * @default undefined
80
+ */
81
+ set value(value) {
82
+ if (__classPrivateFieldGet(this, _MultiSelectOptionComponent_value, "f") !== value) {
83
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_value, value, "f");
84
+ __classPrivateFieldGet(this, _MultiSelectOptionComponent_value$, "f").next(value);
85
+ }
86
+ }
87
+ get value() {
88
+ return __classPrivateFieldGet(this, _MultiSelectOptionComponent_value, "f");
89
+ }
90
+ set active(value) {
91
+ const active = coerceBooleanProperty(value) && this.visible && !this.disabled;
92
+ if (__classPrivateFieldGet(this, _MultiSelectOptionComponent_active, "f") !== active) {
93
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_active, active, "f");
94
+ __classPrivateFieldGet(this, _MultiSelectOptionComponent_active$, "f").next(active);
95
+ }
96
+ }
97
+ get active() {
98
+ return __classPrivateFieldGet(this, _MultiSelectOptionComponent_active, "f") && this.visible;
99
+ }
100
+ get role() {
101
+ return 'option';
56
102
  }
57
103
  get hostClasses() {
58
104
  return {
@@ -60,28 +106,45 @@ export class MultiSelectOptionComponent {
60
106
  'form-multi-selected': this.selected,
61
107
  [`form-multi-select-option-with-${this.optionsStyle}`]: !!this.optionsStyle,
62
108
  disabled: this.disabled,
63
- 'd-none': !this.visible
109
+ 'd-none': !this.visible,
110
+ active: this.active,
111
+ focused: __classPrivateFieldGet(this, _MultiSelectOptionComponent_focused, "f")
64
112
  };
65
113
  }
66
- get role() {
67
- return 'option';
68
- }
69
114
  get tabIndex() {
70
- return this.disabled ? -1 : 0;
115
+ // return this.disabled || !this._active ? -1 : 0;
116
+ return (this.disabled || !this.visible) ? -1 : __classPrivateFieldGet(this, _MultiSelectOptionComponent_tabIndex, "f");
117
+ }
118
+ set tabIndex(tabindex) {
119
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_tabIndex, tabindex, "f");
71
120
  }
72
121
  get ariaDisabled() {
73
122
  return this.disabled || null;
74
123
  }
75
124
  get ariaSelected() {
76
- return this.selected || undefined;
125
+ return __classPrivateFieldGet(this, _MultiSelectOptionComponent_ariaSelected, "f");
126
+ }
127
+ set ariaSelected(selected) {
128
+ setTimeout(() => {
129
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_ariaSelected, selected || undefined, "f");
130
+ });
77
131
  }
78
132
  onKeyDown($event) {
79
133
  if (['Space'].includes($event.code)) {
80
134
  $event.preventDefault();
81
135
  }
136
+ if (['Tab'].includes($event.code)) {
137
+ $event.preventDefault();
138
+ }
139
+ }
140
+ onBlur() {
141
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_focused, false, "f");
142
+ }
143
+ onFocus() {
144
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_focused, true, "f");
82
145
  }
83
146
  onKeyUp($event) {
84
- if (this.dropdownVisible) {
147
+ if (__classPrivateFieldGet(this, _MultiSelectOptionComponent_dropdownVisible, "f")) {
85
148
  if (['Enter', 'Space'].includes($event.code)) {
86
149
  $event.stopImmediatePropagation();
87
150
  $event.preventDefault();
@@ -90,7 +153,8 @@ export class MultiSelectOptionComponent {
90
153
  }
91
154
  }
92
155
  }
93
- onClick() {
156
+ onClick($event) {
157
+ $event.stopPropagation();
94
158
  this.selected = this.disabled ? this.selected : !this.selected;
95
159
  this.focus('mouse');
96
160
  }
@@ -101,22 +165,30 @@ export class MultiSelectOptionComponent {
101
165
  this.changeDetectorRef.markForCheck();
102
166
  }
103
167
  });
104
- if (this.label === undefined) {
168
+ if (this.text === undefined) {
105
169
  const innerText = this.elementRef.nativeElement.textContent.trim() || this.elementRef.nativeElement.innerText.trim();
106
- this.label = innerText || this.value?.trim() || '...';
170
+ this.text = innerText || this.value?.trim() || '...';
171
+ }
172
+ if (this.label === undefined) {
173
+ this.label = this.text?.trim() || '...';
107
174
  }
108
175
  if (this.value === undefined) {
109
176
  this.value = this.label?.trim() || '...';
110
177
  }
178
+ setTimeout(() => {
179
+ this.selected = this.multiSelectService.selectionModel.isSelected(this.value) || this.selected;
180
+ });
111
181
  }
112
182
  /** Get the label for this element which is required by the FocusableOption interface. */
113
183
  getLabel() {
114
184
  return (this.label ?? this.value);
115
185
  }
116
186
  focus(origin = 'program') {
117
- if (this.dropdownVisible && !this.disabled) {
118
- this.focusMonitor.focusVia(this.elementRef, origin, { preventScroll: false });
187
+ if (__classPrivateFieldGet(this, _MultiSelectOptionComponent_dropdownVisible, "f") && !this.disabled) {
188
+ this.focusMonitor.focusVia(this.elementRef.nativeElement, origin, { preventScroll: false });
189
+ this.multiSelectService.focusChange(this);
119
190
  this.changeDetectorRef.markForCheck();
191
+ this.focusChange.emit(this);
120
192
  }
121
193
  }
122
194
  ngOnDestroy() {
@@ -127,45 +199,102 @@ export class MultiSelectOptionComponent {
127
199
  this.multiSelectService.multiSelectVisible$
128
200
  .pipe(takeUntil(__classPrivateFieldGet(this, _MultiSelectOptionComponent_destroy$, "f")))
129
201
  .subscribe(visible => {
130
- this.dropdownVisible = visible;
202
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_dropdownVisible, visible, "f");
203
+ });
204
+ __classPrivateFieldGet(this, _MultiSelectOptionComponent_selected$, "f")
205
+ .pipe(takeUntil(__classPrivateFieldGet(this, _MultiSelectOptionComponent_destroy$, "f")), tap(selected => {
206
+ if (selected) {
207
+ if (this.value && !this.multiSelectService.selectionModel?.isSelected(this.value)) {
208
+ this.multiSelectService.selectionModel?.select(this.value);
209
+ }
210
+ }
211
+ else {
212
+ if (this.value && this.multiSelectService.selectionModel?.isSelected(this.value)) {
213
+ this.multiSelectService.selectionModel?.deselect(this.value);
214
+ }
215
+ }
216
+ }),
217
+ // delay(0),
218
+ combineLatestWith(__classPrivateFieldGet(this, _MultiSelectOptionComponent_value$, "f")))
219
+ .subscribe(([selected, value]) => {
220
+ if (selected) {
221
+ if (!this.multiSelectService.selectionModel?.isSelected(this.value)) {
222
+ this.multiSelectService.selectionModel?.select(this.value);
223
+ }
224
+ }
225
+ else {
226
+ if (this.multiSelectService.selectionModel?.isSelected(this.value)) {
227
+ this.multiSelectService.selectionModel?.deselect(this.value);
228
+ }
229
+ }
230
+ this.ariaSelected = selected;
231
+ this.selectedChange.emit(selected);
232
+ this.changeDetectorRef.markForCheck();
233
+ });
234
+ setTimeout(() => {
235
+ this.multiSelectService.selectionModel.changed
236
+ .pipe(takeUntil(__classPrivateFieldGet(this, _MultiSelectOptionComponent_destroy$, "f")), filter(change => {
237
+ return change.added.includes(this.value) || change.removed.includes(this.value);
238
+ }), tap(change => {
239
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_selected, change.added.includes(this.value), "f");
240
+ this.changeDetectorRef.markForCheck();
241
+ }))
242
+ .subscribe();
243
+ });
244
+ this.multiSelectService.multiSelectFocus$
245
+ .pipe(takeUntil(__classPrivateFieldGet(this, _MultiSelectOptionComponent_destroy$, "f")), distinctUntilChanged())
246
+ .subscribe((option) => {
247
+ this.active = this.value === option.value;
248
+ });
249
+ __classPrivateFieldGet(this, _MultiSelectOptionComponent_active$, "f")
250
+ .pipe(takeUntil(__classPrivateFieldGet(this, _MultiSelectOptionComponent_destroy$, "f")), distinctUntilChanged(), delay(0))
251
+ .subscribe(active => {
252
+ this.tabIndex = active ? 0 : -1;
253
+ });
254
+ __classPrivateFieldGet(this, _MultiSelectOptionComponent_value$, "f")
255
+ .pipe(takeUntil(__classPrivateFieldGet(this, _MultiSelectOptionComponent_destroy$, "f")), distinctUntilChanged(), delay(0))
256
+ .subscribe(value => {
257
+ __classPrivateFieldSet(this, _MultiSelectOptionComponent_selected, this.multiSelectService.selectionModel?.isSelected(value) || this.selected || false, "f");
131
258
  });
132
259
  }
133
260
  }
134
- _MultiSelectOptionComponent_destroy$ = new WeakMap();
135
- MultiSelectOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MultiSelectOptionComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: i2.MultiSelectService }], target: i0.ɵɵFactoryTarget.Component });
136
- MultiSelectOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: MultiSelectOptionComponent, selector: "c-multi-select-option", inputs: { optionsStyle: "optionsStyle", label: "label", value: "value", visible: "visible", id: "id", disabled: "disabled", selected: "selected", role: "role" }, outputs: { selectedChange: "selectedChange" }, host: { listeners: { "keydown": "onKeyDown($event)", "keyup": "onKeyUp($event)", "click": "onClick($event)" }, properties: { "id": "this.id", "class": "this.hostClasses", "role": "this.role", "attr.tabindex": "this.tabIndex", "attr.disabled": "this.ariaDisabled", "attr.aria-disabled": "this.ariaDisabled", "attr.aria-selected": "this.ariaSelected" } }, viewQueries: [{ propertyName: "contentDiv", first: true, predicate: ["contentDiv"], descendants: true }], exportAs: ["cMultiSelectOption"], ngImport: i0, template: "<div #contentDiv><ng-content></ng-content></div>\n<div *ngIf=\"!hasContent\">\n {{label ?? value}}\n</div>\n\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: MultiSelectOptionComponent, decorators: [{
261
+ _MultiSelectOptionComponent_active$ = new WeakMap(), _MultiSelectOptionComponent_destroy$ = new WeakMap(), _MultiSelectOptionComponent_selected$ = new WeakMap(), _MultiSelectOptionComponent_value$ = new WeakMap(), _MultiSelectOptionComponent_disabled = new WeakMap(), _MultiSelectOptionComponent_selected = new WeakMap(), _MultiSelectOptionComponent_value = new WeakMap(), _MultiSelectOptionComponent_dropdownVisible = new WeakMap(), _MultiSelectOptionComponent_active = new WeakMap(), _MultiSelectOptionComponent_focused = new WeakMap(), _MultiSelectOptionComponent_tabIndex = new WeakMap(), _MultiSelectOptionComponent_ariaSelected = new WeakMap();
262
+ MultiSelectOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MultiSelectOptionComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: i2.MultiSelectService }], target: i0.ɵɵFactoryTarget.Component });
263
+ MultiSelectOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: MultiSelectOptionComponent, selector: "c-multi-select-option", inputs: { optionsStyle: "optionsStyle", label: "label", text: "text", visible: "visible", disabled: "disabled", selected: "selected", value: "value", active: "active", role: "role" }, outputs: { selectedChange: "selectedChange", focusChange: "focusChange" }, host: { listeners: { "keydown": "onKeyDown($event)", "blur": "onBlur()", "focus": "onFocus()", "keyup": "onKeyUp($event)", "click": "onClick($event)" }, properties: { "role": "this.role", "class": "this.hostClasses", "attr.tabindex": "this.tabIndex", "attr.disabled": "this.ariaDisabled", "attr.aria-disabled": "this.ariaDisabled", "attr.aria-selected": "this.ariaSelected" } }, viewQueries: [{ propertyName: "contentDiv", first: true, predicate: ["contentDiv"], descendants: true }], exportAs: ["cMultiSelectOption"], ngImport: i0, template: "<div #contentDiv>\n <ng-content></ng-content>\n</div>\n<div *ngIf=\"!hasContent\">\n {{text ?? label ?? value}}\n</div>\n\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden}:host.active{border-radius:var(--cui-form-multi-select-option-indicator-border-radius, .375rem);box-shadow:0 0 .125rem 0 var(--cui-gray-400)}:host.focused,:host :focus-visible{box-shadow:0 0 0 .125rem #321fdb40;outline:none}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: MultiSelectOptionComponent, decorators: [{
138
265
  type: Component,
139
- args: [{ selector: 'c-multi-select-option', exportAs: 'cMultiSelectOption', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #contentDiv><ng-content></ng-content></div>\n<div *ngIf=\"!hasContent\">\n {{label ?? value}}\n</div>\n\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none}\n"] }]
266
+ args: [{ selector: 'c-multi-select-option', exportAs: 'cMultiSelectOption', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #contentDiv>\n <ng-content></ng-content>\n</div>\n<div *ngIf=\"!hasContent\">\n {{text ?? label ?? value}}\n</div>\n\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden}:host.active{border-radius:var(--cui-form-multi-select-option-indicator-border-radius, .375rem);box-shadow:0 0 .125rem 0 var(--cui-gray-400)}:host.focused,:host :focus-visible{box-shadow:0 0 0 .125rem #321fdb40;outline:none}\n"] }]
140
267
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: i2.MultiSelectService }]; }, propDecorators: { optionsStyle: [{
141
268
  type: Input
142
269
  }], label: [{
143
270
  type: Input
144
- }], value: [{
271
+ }], text: [{
145
272
  type: Input
146
273
  }], visible: [{
147
274
  type: Input
275
+ }], disabled: [{
276
+ type: Input
277
+ }], selected: [{
278
+ type: Input
148
279
  }], selectedChange: [{
149
280
  type: Output
281
+ }], value: [{
282
+ type: Input
150
283
  }], contentDiv: [{
151
284
  type: ViewChild,
152
285
  args: ['contentDiv']
153
- }], id: [{
154
- type: Input
155
- }, {
156
- type: HostBinding
157
- }], disabled: [{
286
+ }], active: [{
158
287
  type: Input
159
- }], selected: [{
160
- type: Input
161
- }], hostClasses: [{
162
- type: HostBinding,
163
- args: ['class']
288
+ }], focusChange: [{
289
+ type: Output
164
290
  }], role: [{
165
291
  type: Input
166
292
  }, {
167
293
  type: HostBinding,
168
294
  args: ['role']
295
+ }], hostClasses: [{
296
+ type: HostBinding,
297
+ args: ['class']
169
298
  }], tabIndex: [{
170
299
  type: HostBinding,
171
300
  args: ['attr.tabindex']
@@ -181,6 +310,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
181
310
  }], onKeyDown: [{
182
311
  type: HostListener,
183
312
  args: ['keydown', ['$event']]
313
+ }], onBlur: [{
314
+ type: HostListener,
315
+ args: ['blur']
316
+ }], onFocus: [{
317
+ type: HostListener,
318
+ args: ['focus']
184
319
  }], onKeyUp: [{
185
320
  type: HostListener,
186
321
  args: ['keyup', ['$event']]
@@ -188,4 +323,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
188
323
  type: HostListener,
189
324
  args: ['click', ['$event']]
190
325
  }] } });
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3Qtb3B0aW9uL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW9wdGlvbi9tdWx0aS1zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUkzQyxzREFBc0Q7QUFDdEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBU2YsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxZQUNtQixVQUFzQixFQUN0QixpQkFBb0MsRUFDcEMsWUFBMEIsRUFDMUIsa0JBQXNDO1FBSHRDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBUWhELGlCQUFZLEdBQTBCLFVBQVUsQ0FBQztRQUdqRCxZQUFPLEdBQVksSUFBSSxDQUFDO1FBQ3ZCLG1CQUFjLEdB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S0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUVrQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBWW5CLEVBQUU7c0JBRkwsS0FBSzs7c0JBQ0wsV0FBVztnQkFZUixRQUFRO3NCQURYLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQW1CRixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFhUixJQUFJO3NCQUZmLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsTUFBTTtnQkFNUCxRQUFRO3NCQURuQixXQUFXO3VCQUFDLGVBQWU7Z0JBT2hCLFlBQVk7c0JBRnZCLFdBQVc7dUJBQUMsZUFBZTs7c0JBQzNCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU1yQixZQUFZO3NCQUR2QixXQUFXO3VCQUFDLG9CQUFvQjtnQkFNakMsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRbkMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhekIsT0FBTztzQkFEZCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uLCBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNdWx0aVNlbGVjdFNlcnZpY2UgfSBmcm9tICcuLi9tdWx0aS1zZWxlY3Quc2VydmljZSc7XG5cbi8qKiBUaGUgbmV4dCBpZCB0byB1c2UgZm9yIGNyZWF0aW5nIHVuaXF1ZSBET00gSURzLiAqL1xubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtbXVsdGktc2VsZWN0LW9wdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBleHBvcnRBczogJ2NNdWx0aVNlbGVjdE9wdGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0T3B0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgRm9jdXNhYmxlT3B0aW9uLCBPbkRlc3Ryb3kge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlTZWxlY3RTZXJ2aWNlOiBNdWx0aVNlbGVjdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZXRTdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3NlbGVjdGVkOiBCb29sZWFuSW5wdXQ7XG5cbiAgQElucHV0KCkgb3B0aW9uc1N0eWxlOiAoJ2NoZWNrYm94JyB8ICd0ZXh0JykgPSAnY2hlY2tib3gnO1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgdmFsdWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudERpdicpIGNvbnRlbnREaXY/OiBFbGVtZW50UmVmO1xuICBwdWJsaWMgaGFzQ29udGVudCA9IHRydWU7XG5cbiAgcHJpdmF0ZSBkcm9wZG93blZpc2libGUgPSBmYWxzZTtcblxuICByZWFkb25seSAjZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgX2dlbmVyYXRlZElkID0gYGNvcmV1aS1vcHRpb24tJHtuZXh0SWQrK31gO1xuXG4gIC8qKiBUaGUgaWQgb2YgdGhlIG9wdGlvbiBlbGVtZW50LiAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoKVxuICBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lkIHx8IHRoaXMuX2dlbmVyYXRlZElkO1xuICB9XG5cbiAgc2V0IGlkKHZhbHVlKSB7XG4gICAgdGhpcy5faWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2lkOiBzdHJpbmcgPSB0aGlzLl9nZW5lcmF0ZWRJZDtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IChib29sZWFuIHwgdW5kZWZpbmVkKSkge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWQgIT09IG5ld1ZhbHVlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBuZXdWYWx1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2UudG9nZ2xlT3B0aW9uKHRoaXMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdGVkID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2Zvcm0tbXVsdGktc2VsZWN0LW9wdGlvbic6IHRydWUsXG4gICAgICAnZm9ybS1tdWx0aS1zZWxlY3RlZCc6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICBbYGZvcm0tbXVsdGktc2VsZWN0LW9wdGlvbi13aXRoLSR7dGhpcy5vcHRpb25zU3R5bGV9YF06ICEhdGhpcy5vcHRpb25zU3R5bGUsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICdkLW5vbmUnOiAhdGhpcy52aXNpYmxlXG4gICAgfTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygncm9sZScpXG4gIHByaXZhdGUgZ2V0IHJvbGUoKSB7XG4gICAgcmV0dXJuICdvcHRpb24nO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgcHJpdmF0ZSBnZXQgdGFiSW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAtMSA6IDA7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gIHByaXZhdGUgZ2V0IGFyaWFEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCBudWxsO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICBwcml2YXRlIGdldCBhcmlhU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoWydTcGFjZSddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKVxuICBvbktleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyb3Bkb3duVmlzaWJsZSkge1xuICAgICAgaWYgKFsnRW50ZXInLCAnU3BhY2UnXS5pbmNsdWRlcygkZXZlbnQuY29kZSkpIHtcbiAgICAgICAgJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuZGlzYWJsZWQgPyB0aGlzLnNlbGVjdGVkIDogIXRoaXMuc2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMuZm9jdXMoJ2tleWJvYXJkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBwcml2YXRlIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuZGlzYWJsZWQgPyB0aGlzLnNlbGVjdGVkIDogIXRoaXMuc2VsZWN0ZWQ7XG4gICAgdGhpcy5mb2N1cygnbW91c2UnKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaGFzQ29udGVudCA9ICEhdGhpcy5jb250ZW50RGl2Py5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgaWYgKCF0aGlzLmhhc0NvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmxhYmVsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGlubmVyVGV4dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKSB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lclRleHQudHJpbSgpO1xuICAgICAgdGhpcy5sYWJlbCA9IGlubmVyVGV4dCB8fCB0aGlzLnZhbHVlPy50cmltKCkgfHwgJy4uLic7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubGFiZWw/LnRyaW0oKSB8fCAnLi4uJztcbiAgICB9XG4gIH1cblxuICAvKiogR2V0IHRoZSBsYWJlbCBmb3IgdGhpcyBlbGVtZW50IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSBGb2N1c2FibGVPcHRpb24gaW50ZXJmYWNlLiAqL1xuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiA8c3RyaW5nPih0aGlzLmxhYmVsID8/IHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZm9jdXMob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyb3Bkb3duVmlzaWJsZSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLCBvcmlnaW4sIHsgcHJldmVudFNjcm9sbDogZmFsc2UgfSk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2Rlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy4jZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3Vic2NyaXB0aW9ucygpIHtcblxuICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLm11bHRpU2VsZWN0VmlzaWJsZSRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNkZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKHZpc2libGUgPT4ge1xuICAgICAgICB0aGlzLmRyb3Bkb3duVmlzaWJsZSA9IHZpc2libGU7XG4gICAgICB9KTtcblxuICB9XG59XG4iLCI8ZGl2ICNjb250ZW50RGl2PjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhaGFzQ29udGVudFwiPlxuICB7e2xhYmVsID8/IHZhbHVlfX1cbjwvZGl2PlxuXG4iXX0=
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3Qtb3B0aW9uL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tdWx0aS1zZWxlY3QvbXVsdGktc2VsZWN0LW9wdGlvbi9tdWx0aS1zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVd4RyxNQUFNLE9BQU8sMEJBQTBCO0lBRXJDLFlBQ2tCLFVBQXNCLEVBQ3JCLGlCQUFvQyxFQUNwQyxZQUEwQixFQUMxQixrQkFBc0M7UUFIdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFRekQsOENBQW9CLElBQUksT0FBTyxFQUFXLEVBQUM7UUFDM0MsK0NBQXFCLElBQUksT0FBTyxF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RGQsWUFBWTt1QkFBQyxPQUFPO2dCQU1iLE9BQU87c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBYXpCLE9BQU87c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiwgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3RXaXRoLCBkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE11bHRpU2VsZWN0U2VydmljZSB9IGZyb20gJy4uL211bHRpLXNlbGVjdC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1tdWx0aS1zZWxlY3Qtb3B0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXNlbGVjdC1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnY011bHRpU2VsZWN0T3B0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RPcHRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBGb2N1c2FibGVPcHRpb24sIE9uRGVzdHJveSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG11bHRpU2VsZWN0U2VydmljZTogTXVsdGlTZWxlY3RTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc2V0U3Vic2NyaXB0aW9ucygpO1xuICB9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zZWxlY3RlZDogQm9vbGVhbklucHV0O1xuXG4gIHJlYWRvbmx5ICNhY3RpdmUkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgI2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgI3NlbGVjdGVkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5ICN2YWx1ZSQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBzdHlsZVxuICAgKiBAdHlwZSAoJ2NoZWNrYm94JyB8ICd0ZXh0JylcbiAgICogQGRlZmF1bHQgJ2NoZWNrYm94J1xuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uc1N0eWxlOiAoJ2NoZWNrYm94JyB8ICd0ZXh0JykgPSB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5vcHRpb25zU3R5bGU7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBsYWJlbFxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uIGlubmVyIHRleHRcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgdGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uIHZpc2libGUuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgdmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBkaXNhYmxlZC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLiNkaXNhYmxlZDtcbiAgfVxuXG4gICNkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBPcHRpb24gc2VsZWN0ZWQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzZWxlY3RlZCh2YWx1ZTogKGJvb2xlYW4gfCB1bmRlZmluZWQpKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmICh0aGlzLiNzZWxlY3RlZCAhPT0gc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuI3NlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB0aGlzLiNzZWxlY3RlZCQubmV4dChzZWxlY3RlZCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLiNzZWxlY3RlZDtcbiAgfVxuXG4gICNzZWxlY3RlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBvcHRpb24gc2VsZWN0ZWQgY2hhbmdlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogT3B0aW9uIHZhbHVlLlxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLiN2YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuI3ZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLiN2YWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLiN2YWx1ZTtcbiAgfVxuXG4gICN2YWx1ZSE6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdjb250ZW50RGl2JykgcHJpdmF0ZSBjb250ZW50RGl2PzogRWxlbWVudFJlZjtcbiAgcHVibGljIGhhc0NvbnRlbnQgPSB0cnVlO1xuXG4gICNkcm9wZG93blZpc2libGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgYWN0aXZlKHZhbHVlOiAoYm9vbGVhbiB8IHVuZGVmaW5lZCkpIHtcbiAgICBjb25zdCBhY3RpdmUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpICYmIHRoaXMudmlzaWJsZSAmJiAhdGhpcy5kaXNhYmxlZDtcbiAgICBpZiAodGhpcy4jYWN0aXZlICE9PSBhY3RpdmUpIHtcbiAgICAgIHRoaXMuI2FjdGl2ZSA9IGFjdGl2ZTtcbiAgICAgIHRoaXMuI2FjdGl2ZSQubmV4dChhY3RpdmUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBhY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FjdGl2ZSAmJiB0aGlzLnZpc2libGU7XG4gIH1cblxuICAjYWN0aXZlID0gZmFsc2U7XG5cbiAgI2ZvY3VzZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZm9jdXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE11bHRpU2VsZWN0T3B0aW9uQ29tcG9uZW50PigpO1xuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygncm9sZScpXG4gIHByaXZhdGUgZ2V0IHJvbGUoKSB7XG4gICAgcmV0dXJuICdvcHRpb24nO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2Zvcm0tbXVsdGktc2VsZWN0LW9wdGlvbic6IHRydWUsXG4gICAgICAnZm9ybS1tdWx0aS1zZWxlY3RlZCc6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICBbYGZvcm0tbXVsdGktc2VsZWN0LW9wdGlvbi13aXRoLSR7dGhpcy5vcHRpb25zU3R5bGV9YF06ICEhdGhpcy5vcHRpb25zU3R5bGUsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICdkLW5vbmUnOiAhdGhpcy52aXNpYmxlLFxuICAgICAgYWN0aXZlOiB0aGlzLmFjdGl2ZSxcbiAgICAgIGZvY3VzZWQ6IHRoaXMuI2ZvY3VzZWRcbiAgICB9O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgcHJpdmF0ZSBnZXQgdGFiSW5kZXgoKSB7XG4gICAgLy8gcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuX2FjdGl2ZSA/IC0xIDogMDtcbiAgICByZXR1cm4gKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMudmlzaWJsZSkgPyAtMSA6IHRoaXMuI3RhYkluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgdGFiSW5kZXgodGFiaW5kZXgpIHtcbiAgICB0aGlzLiN0YWJJbmRleCA9IHRhYmluZGV4O1xuICB9XG5cbiAgI3RhYkluZGV4OiBudW1iZXIgPSAtMTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gIHByaXZhdGUgZ2V0IGFyaWFEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCBudWxsO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICBwcml2YXRlIGdldCBhcmlhU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FyaWFTZWxlY3RlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0IGFyaWFTZWxlY3RlZChzZWxlY3RlZCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jYXJpYVNlbGVjdGVkID0gc2VsZWN0ZWQgfHwgdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgI2FyaWFTZWxlY3RlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChbJ1NwYWNlJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKFsnVGFiJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgcHJpdmF0ZSBvbkJsdXIoKSB7XG4gICAgdGhpcy4jZm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICBwcml2YXRlIG9uRm9jdXMoKSB7XG4gICAgdGhpcy4jZm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25LZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jZHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBpZiAoWydFbnRlcicsICdTcGFjZSddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgICAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5kaXNhYmxlZCA/IHRoaXMuc2VsZWN0ZWQgOiAhdGhpcy5zZWxlY3RlZDtcbiAgICAgICAgdGhpcy5mb2N1cygna2V5Ym9hcmQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25DbGljaygkZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuZGlzYWJsZWQgPyB0aGlzLnNlbGVjdGVkIDogIXRoaXMuc2VsZWN0ZWQ7XG4gICAgdGhpcy5mb2N1cygnbW91c2UnKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaGFzQ29udGVudCA9ICEhdGhpcy5jb250ZW50RGl2Py5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgaWYgKCF0aGlzLmhhc0NvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaW5uZXJUZXh0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpIHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG4gICAgICB0aGlzLnRleHQgPSBpbm5lclRleHQgfHwgdGhpcy52YWx1ZT8udHJpbSgpIHx8ICcuLi4nO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxhYmVsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLnRleHQ/LnRyaW0oKSB8fCAnLi4uJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5sYWJlbD8udHJpbSgpIHx8ICcuLi4nO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodGhpcy52YWx1ZSkgfHwgdGhpcy5zZWxlY3RlZDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxhYmVsIGZvciB0aGlzIGVsZW1lbnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgdGhlIEZvY3VzYWJsZU9wdGlvbiBpbnRlcmZhY2UuICovXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIDxzdHJpbmc+KHRoaXMubGFiZWwgPz8gdGhpcy52YWx1ZSk7XG4gIH1cblxuICBmb2N1cyhvcmlnaW46IEZvY3VzT3JpZ2luID0gJ3Byb2dyYW0nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2Ryb3Bkb3duVmlzaWJsZSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG9yaWdpbiwgeyBwcmV2ZW50U2Nyb2xsOiBmYWxzZSB9KTtcbiAgICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLmZvY3VzQ2hhbmdlKHRoaXMpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNkZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuI2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFN1YnNjcmlwdGlvbnMoKSB7XG5cbiAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5tdWx0aVNlbGVjdFZpc2libGUkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh2aXNpYmxlID0+IHtcbiAgICAgICAgdGhpcy4jZHJvcGRvd25WaXNpYmxlID0gdmlzaWJsZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jc2VsZWN0ZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuI2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKHNlbGVjdGVkID0+IHtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlICYmICF0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uaXNTZWxlY3RlZCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uc2VsZWN0KHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uaXNTZWxlY3RlZCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uZGVzZWxlY3QodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgLy8gZGVsYXkoMCksXG4gICAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuI3ZhbHVlJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtzZWxlY3RlZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgIGlmICghdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2Uuc2VsZWN0aW9uTW9kZWw/LmlzU2VsZWN0ZWQodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsPy5zZWxlY3QodGhpcy52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uaXNTZWxlY3RlZCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdFNlcnZpY2Uuc2VsZWN0aW9uTW9kZWw/LmRlc2VsZWN0KHRoaXMudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFyaWFTZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLmNoYW5nZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuI2Rlc3Ryb3kkKSxcbiAgICAgICAgICBmaWx0ZXIoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjaGFuZ2UuYWRkZWQuaW5jbHVkZXModGhpcy52YWx1ZSkgfHwgY2hhbmdlLnJlbW92ZWQuaW5jbHVkZXModGhpcy52YWx1ZSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFwKGNoYW5nZSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNzZWxlY3RlZCA9IGNoYW5nZS5hZGRlZC5pbmNsdWRlcyh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5tdWx0aVNlbGVjdEZvY3VzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLiNkZXN0cm95JCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG9wdGlvbikgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMudmFsdWUgPT09IG9wdGlvbi52YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jYWN0aXZlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLiNkZXN0cm95JCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIGRlbGF5KDApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGFjdGl2ZSA9PiB7XG4gICAgICAgIHRoaXMudGFiSW5kZXggPSBhY3RpdmUgPyAwIDogLTE7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI3ZhbHVlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLiNkZXN0cm95JCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIGRlbGF5KDApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy4jc2VsZWN0ZWQgPSB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5zZWxlY3Rpb25Nb2RlbD8uaXNTZWxlY3RlZCh2YWx1ZSkgfHwgdGhpcy5zZWxlY3RlZCB8fCBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2ICNjb250ZW50RGl2PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhaGFzQ29udGVudFwiPlxuICB7e3RleHQgPz8gbGFiZWwgPz8gdmFsdWV9fVxuPC9kaXY+XG5cbiJdfQ==