@koobiq/components 18.28.0 → 18.29.0

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 (391) hide show
  1. package/accordion/accordion-trigger.component.scss +2 -0
  2. package/actions-panel/actions-panel-container.scss +4 -1
  3. package/actions-panel/actions-panel-tokens.scss +2 -1
  4. package/breadcrumbs/breadcrumbs.d.ts +1 -1
  5. package/checkbox/checkbox.scss +2 -0
  6. package/core/common-behaviors/clipboard.d.ts +12 -0
  7. package/core/common-behaviors/index.d.ts +1 -0
  8. package/core/formatters/filesize/config.d.ts +66 -0
  9. package/core/formatters/filesize/formatter.d.ts +17 -0
  10. package/core/{utils/data-size → formatters/filesize}/index.d.ts +1 -1
  11. package/core/formatters/filesize/size.d.ts +36 -0
  12. package/core/formatters/index.d.ts +3 -1
  13. package/core/formatters/number/formatter.d.ts +13 -4
  14. package/core/locales/formatters.d.ts +9 -1
  15. package/core/locales/locale-service.d.ts +9 -1
  16. package/core/locales/types.d.ts +14 -0
  17. package/core/utils/public-api.d.ts +0 -1
  18. package/datepicker/calendar.scss +2 -0
  19. package/datepicker/datepicker-tokens.scss +1 -1
  20. package/dropdown/dropdown-item.component.d.ts +3 -1
  21. package/esm2022/accordion/accordion-content.mjs +4 -4
  22. package/esm2022/accordion/accordion-header.mjs +4 -4
  23. package/esm2022/accordion/accordion-item.mjs +4 -4
  24. package/esm2022/accordion/accordion-trigger.component.mjs +6 -6
  25. package/esm2022/accordion/accordion.component.mjs +4 -4
  26. package/esm2022/accordion/accordion.module.mjs +5 -5
  27. package/esm2022/actions-panel/actions-panel-container.mjs +6 -6
  28. package/esm2022/actions-panel/actions-panel.mjs +13 -13
  29. package/esm2022/actions-panel/module.mjs +5 -5
  30. package/esm2022/alert/alert.component.mjs +13 -13
  31. package/esm2022/alert/alert.module.mjs +5 -5
  32. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +4 -4
  33. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +4 -4
  34. package/esm2022/autocomplete/autocomplete.component.mjs +4 -4
  35. package/esm2022/autocomplete/autocomplete.module.mjs +5 -5
  36. package/esm2022/badge/badge.component.mjs +10 -10
  37. package/esm2022/badge/badge.module.mjs +5 -5
  38. package/esm2022/breadcrumbs/breadcrumbs.mjs +17 -17
  39. package/esm2022/breadcrumbs/breadcrumbs.module.mjs +5 -5
  40. package/esm2022/button/button.component.mjs +7 -7
  41. package/esm2022/button/button.dropdown-trigger.directive.mjs +4 -4
  42. package/esm2022/button/button.module.mjs +5 -5
  43. package/esm2022/button-toggle/button-toggle.component.mjs +7 -7
  44. package/esm2022/button-toggle/button-toggle.module.mjs +5 -5
  45. package/esm2022/checkbox/checkbox-module.mjs +5 -5
  46. package/esm2022/checkbox/checkbox-required-validator.mjs +4 -4
  47. package/esm2022/checkbox/checkbox.mjs +5 -5
  48. package/esm2022/code-block/code-block-highlight.mjs +4 -4
  49. package/esm2022/code-block/code-block.mjs +4 -4
  50. package/esm2022/code-block/code-block.module.mjs +5 -5
  51. package/esm2022/core/common-behaviors/clipboard.mjs +31 -0
  52. package/esm2022/core/common-behaviors/color.mjs +4 -4
  53. package/esm2022/core/common-behaviors/common-module.mjs +5 -5
  54. package/esm2022/core/common-behaviors/index.mjs +2 -1
  55. package/esm2022/core/error/error-state-matcher.mjs +10 -10
  56. package/esm2022/core/formatters/date/formatter.mjs +4 -4
  57. package/esm2022/core/formatters/date/formatter.pipe.mjs +79 -79
  58. package/esm2022/core/formatters/filesize/config.mjs +32 -0
  59. package/esm2022/core/formatters/filesize/formatter.mjs +46 -0
  60. package/esm2022/core/formatters/filesize/index.mjs +4 -0
  61. package/esm2022/core/formatters/filesize/size.mjs +67 -0
  62. package/esm2022/core/formatters/index.mjs +15 -9
  63. package/esm2022/core/formatters/number/formatter.mjs +38 -36
  64. package/esm2022/core/forms/forms-module.mjs +5 -5
  65. package/esm2022/core/forms/forms.directive.mjs +7 -7
  66. package/esm2022/core/highlight/highlight.pipe.mjs +4 -4
  67. package/esm2022/core/highlight/index.mjs +5 -5
  68. package/esm2022/core/line/line.mjs +8 -8
  69. package/esm2022/core/locales/formatters.mjs +21 -13
  70. package/esm2022/core/locales/locale-service.mjs +4 -4
  71. package/esm2022/core/locales/locale-service.module.mjs +5 -5
  72. package/esm2022/core/locales/types.mjs +1 -1
  73. package/esm2022/core/option/action.mjs +4 -4
  74. package/esm2022/core/option/optgroup.mjs +4 -4
  75. package/esm2022/core/option/option-module.mjs +5 -5
  76. package/esm2022/core/option/option.mjs +4 -4
  77. package/esm2022/core/pop-up/pop-up-trigger.mjs +4 -4
  78. package/esm2022/core/pop-up/pop-up.mjs +4 -4
  79. package/esm2022/core/select/common.mjs +16 -16
  80. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +4 -4
  81. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +5 -5
  82. package/esm2022/core/services/measure-scrollbar.service.mjs +4 -4
  83. package/esm2022/core/services/theme.service.mjs +4 -4
  84. package/esm2022/core/utils/public-api.mjs +1 -2
  85. package/esm2022/core/version.mjs +2 -2
  86. package/esm2022/datepicker/calendar-body.component.mjs +4 -4
  87. package/esm2022/datepicker/calendar-header.component.mjs +4 -4
  88. package/esm2022/datepicker/calendar.component.mjs +5 -5
  89. package/esm2022/datepicker/datepicker-input.directive.mjs +4 -4
  90. package/esm2022/datepicker/datepicker-intl.mjs +4 -4
  91. package/esm2022/datepicker/datepicker-module.mjs +5 -5
  92. package/esm2022/datepicker/datepicker-toggle.component.mjs +7 -7
  93. package/esm2022/datepicker/datepicker.component.mjs +8 -8
  94. package/esm2022/datepicker/month-view.component.mjs +4 -4
  95. package/esm2022/divider/divider.component.mjs +4 -4
  96. package/esm2022/divider/divider.module.mjs +5 -5
  97. package/esm2022/dl/dl.component.mjs +10 -10
  98. package/esm2022/dl/dl.module.mjs +5 -5
  99. package/esm2022/dropdown/dropdown-content.directive.mjs +4 -4
  100. package/esm2022/dropdown/dropdown-item.component.mjs +9 -7
  101. package/esm2022/dropdown/dropdown-trigger.directive.mjs +4 -4
  102. package/esm2022/dropdown/dropdown.component.mjs +4 -4
  103. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  104. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +8 -8
  105. package/esm2022/empty-state/empty-state.component.mjs +16 -16
  106. package/esm2022/empty-state/empty-state.module.mjs +5 -5
  107. package/esm2022/file-upload/file-drop.mjs +4 -4
  108. package/esm2022/file-upload/file-upload.module.mjs +5 -5
  109. package/esm2022/file-upload/multiple-file-upload.component.mjs +5 -5
  110. package/esm2022/file-upload/single-file-upload.component.mjs +5 -5
  111. package/esm2022/filter-bar/filter-bar-button.mjs +4 -4
  112. package/esm2022/filter-bar/filter-bar.mjs +4 -4
  113. package/esm2022/filter-bar/filter-bar.module.mjs +5 -5
  114. package/esm2022/filter-bar/filter-bar.types.mjs +32 -1
  115. package/esm2022/filter-bar/filter-refresher.mjs +4 -4
  116. package/esm2022/filter-bar/filter-reset.mjs +4 -4
  117. package/esm2022/filter-bar/filter-search.mjs +4 -4
  118. package/esm2022/filter-bar/filters.mjs +27 -20
  119. package/esm2022/filter-bar/pipe-add.mjs +4 -4
  120. package/esm2022/filter-bar/pipe.directive.mjs +4 -4
  121. package/esm2022/filter-bar/pipes/base-pipe.mjs +7 -7
  122. package/esm2022/filter-bar/pipes/pipe-button.mjs +4 -4
  123. package/esm2022/filter-bar/pipes/pipe-date.mjs +6 -6
  124. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +6 -6
  125. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +29 -11
  126. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +234 -0
  127. package/esm2022/filter-bar/pipes/pipe-readonly.mjs +6 -6
  128. package/esm2022/filter-bar/pipes/pipe-select.mjs +6 -6
  129. package/esm2022/filter-bar/pipes/pipe-state.mjs +4 -4
  130. package/esm2022/filter-bar/pipes/pipe-text.mjs +6 -6
  131. package/esm2022/filter-bar/pipes/pipe-title.mjs +4 -4
  132. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +136 -0
  133. package/esm2022/filter-bar/public-api.mjs +2 -1
  134. package/esm2022/form-field/cleaner.mjs +4 -4
  135. package/esm2022/form-field/form-field.mjs +12 -12
  136. package/esm2022/form-field/form-field.module.mjs +5 -5
  137. package/esm2022/form-field/hint.mjs +4 -4
  138. package/esm2022/form-field/password-hint.mjs +9 -7
  139. package/esm2022/form-field/password-toggle.mjs +4 -4
  140. package/esm2022/form-field/prefix.mjs +4 -4
  141. package/esm2022/form-field/stepper.mjs +4 -4
  142. package/esm2022/form-field/suffix.mjs +4 -4
  143. package/esm2022/form-field/validate.directive.mjs +4 -4
  144. package/esm2022/icon/icon-button.component.mjs +4 -4
  145. package/esm2022/icon/icon-item.component.mjs +4 -4
  146. package/esm2022/icon/icon.component.mjs +4 -4
  147. package/esm2022/icon/icon.module.mjs +5 -5
  148. package/esm2022/input/input-number-validators.mjs +7 -7
  149. package/esm2022/input/input-number.mjs +13 -12
  150. package/esm2022/input/input-password.mjs +4 -4
  151. package/esm2022/input/input.mjs +7 -7
  152. package/esm2022/input/input.module.mjs +5 -5
  153. package/esm2022/link/link.component.mjs +4 -4
  154. package/esm2022/link/link.module.mjs +5 -5
  155. package/esm2022/list/list-selection.component.mjs +10 -10
  156. package/esm2022/list/list.component.mjs +7 -7
  157. package/esm2022/list/list.module.mjs +5 -5
  158. package/esm2022/loader-overlay/loader-overlay.component.mjs +13 -13
  159. package/esm2022/loader-overlay/loader-overlay.module.mjs +5 -5
  160. package/esm2022/markdown/markdown.component.mjs +4 -4
  161. package/esm2022/markdown/markdown.module.mjs +5 -5
  162. package/esm2022/markdown/markdown.service.mjs +4 -4
  163. package/esm2022/modal/css-unit.pipe.mjs +4 -4
  164. package/esm2022/modal/modal-control.service.mjs +4 -4
  165. package/esm2022/modal/modal.component.mjs +4 -4
  166. package/esm2022/modal/modal.directive.mjs +13 -13
  167. package/esm2022/modal/modal.module.mjs +5 -5
  168. package/esm2022/modal/modal.service.mjs +4 -4
  169. package/esm2022/modal/modal.type.mjs +1 -1
  170. package/esm2022/navbar/navbar-item.component.mjs +28 -28
  171. package/esm2022/navbar/navbar.component.mjs +10 -10
  172. package/esm2022/navbar/navbar.module.mjs +5 -5
  173. package/esm2022/navbar/vertical-navbar.component.mjs +4 -4
  174. package/esm2022/overflow-items/module.mjs +5 -5
  175. package/esm2022/overflow-items/overflow-items.mjs +15 -15
  176. package/esm2022/popover/popover-confirm.component.mjs +7 -7
  177. package/esm2022/popover/popover.component.mjs +7 -7
  178. package/esm2022/popover/popover.module.mjs +5 -5
  179. package/esm2022/progress-bar/progress-bar.component.mjs +10 -10
  180. package/esm2022/progress-bar/progress-bar.module.mjs +5 -5
  181. package/esm2022/progress-spinner/progress-spinner.component.mjs +10 -10
  182. package/esm2022/progress-spinner/progress-spinner.module.mjs +5 -5
  183. package/esm2022/radio/radio.component.mjs +7 -7
  184. package/esm2022/radio/radio.module.mjs +5 -5
  185. package/esm2022/risk-level/risk-level.component.mjs +4 -4
  186. package/esm2022/risk-level/risk-level.module.mjs +5 -5
  187. package/esm2022/scrollbar/scrollbar.component.mjs +4 -4
  188. package/esm2022/scrollbar/scrollbar.directive.mjs +4 -4
  189. package/esm2022/scrollbar/scrollbar.module.mjs +5 -5
  190. package/esm2022/select/select-option.directive.mjs +4 -4
  191. package/esm2022/select/select.component.mjs +6 -6
  192. package/esm2022/select/select.module.mjs +5 -5
  193. package/esm2022/sidebar/sidebar.component.mjs +18 -12
  194. package/esm2022/sidebar/sidebar.module.mjs +5 -5
  195. package/esm2022/sidepanel/sidepanel-container.component.mjs +4 -4
  196. package/esm2022/sidepanel/sidepanel-directives.mjs +16 -16
  197. package/esm2022/sidepanel/sidepanel.module.mjs +5 -5
  198. package/esm2022/sidepanel/sidepanel.service.mjs +4 -4
  199. package/esm2022/splitter/splitter.component.mjs +13 -13
  200. package/esm2022/splitter/splitter.module.mjs +5 -5
  201. package/esm2022/table/table.component.mjs +7 -7
  202. package/esm2022/table/table.module.mjs +5 -5
  203. package/esm2022/tabs/paginated-tab-header.mjs +4 -4
  204. package/esm2022/tabs/tab-body.component.mjs +7 -7
  205. package/esm2022/tabs/tab-content.directive.mjs +4 -4
  206. package/esm2022/tabs/tab-group.component.mjs +16 -16
  207. package/esm2022/tabs/tab-header.component.mjs +4 -4
  208. package/esm2022/tabs/tab-label-wrapper.directive.mjs +4 -4
  209. package/esm2022/tabs/tab-label.directive.mjs +4 -4
  210. package/esm2022/tabs/tab-nav-bar.mjs +10 -10
  211. package/esm2022/tabs/tab.component.mjs +4 -4
  212. package/esm2022/tabs/tabs.module.mjs +5 -5
  213. package/esm2022/tags/tag-input.mjs +4 -4
  214. package/esm2022/tags/tag-list.component.mjs +5 -5
  215. package/esm2022/tags/tag.component.mjs +13 -13
  216. package/esm2022/tags/tag.module.mjs +5 -5
  217. package/esm2022/textarea/textarea.component.mjs +4 -4
  218. package/esm2022/textarea/textarea.module.mjs +5 -5
  219. package/esm2022/timepicker/timepicker.directive.mjs +4 -4
  220. package/esm2022/timepicker/timepicker.module.mjs +5 -5
  221. package/esm2022/timezone/cities-by-filter.pipe.mjs +4 -4
  222. package/esm2022/timezone/timezone-option.component.mjs +4 -4
  223. package/esm2022/timezone/timezone-option.directive.mjs +4 -4
  224. package/esm2022/timezone/timezone-select.component.mjs +9 -9
  225. package/esm2022/timezone/timezone.module.mjs +5 -5
  226. package/esm2022/timezone/utc-offset.pipe.mjs +4 -4
  227. package/esm2022/title/title.directive.mjs +4 -4
  228. package/esm2022/title/title.module.mjs +5 -5
  229. package/esm2022/toast/toast-container.component.mjs +4 -4
  230. package/esm2022/toast/toast.component.mjs +7 -7
  231. package/esm2022/toast/toast.module.mjs +5 -5
  232. package/esm2022/toast/toast.service.mjs +4 -4
  233. package/esm2022/toggle/toggle.component.mjs +4 -4
  234. package/esm2022/toggle/toggle.module.mjs +5 -5
  235. package/esm2022/tooltip/tooltip.component.mjs +13 -13
  236. package/esm2022/tooltip/tooltip.module.mjs +5 -5
  237. package/esm2022/top-bar/module.mjs +5 -5
  238. package/esm2022/top-bar/top-bar.mjs +10 -10
  239. package/esm2022/tree/control/flat-tree-control.filters.mjs +10 -2
  240. package/esm2022/tree/node.mjs +4 -4
  241. package/esm2022/tree/outlet.mjs +4 -4
  242. package/esm2022/tree/padding.directive.mjs +4 -4
  243. package/esm2022/tree/toggle.mjs +10 -10
  244. package/esm2022/tree/tree-base.mjs +7 -7
  245. package/esm2022/tree/tree-option.component.mjs +11 -7
  246. package/esm2022/tree/tree-selection.component.mjs +6 -4
  247. package/esm2022/tree/tree.mjs +4 -4
  248. package/esm2022/tree/tree.module.mjs +5 -5
  249. package/esm2022/tree-select/tree-select.component.mjs +5 -5
  250. package/esm2022/tree-select/tree-select.module.mjs +5 -5
  251. package/fesm2022/koobiq-components-accordion.mjs +21 -21
  252. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  253. package/fesm2022/koobiq-components-actions-panel.mjs +21 -21
  254. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  255. package/fesm2022/koobiq-components-alert.mjs +16 -16
  256. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  257. package/fesm2022/koobiq-components-autocomplete.mjs +13 -13
  258. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  259. package/fesm2022/koobiq-components-badge.mjs +13 -13
  260. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  261. package/fesm2022/koobiq-components-breadcrumbs.mjs +20 -20
  262. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  263. package/fesm2022/koobiq-components-button-toggle.mjs +10 -10
  264. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  265. package/fesm2022/koobiq-components-button.mjs +13 -13
  266. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  267. package/fesm2022/koobiq-components-checkbox.mjs +11 -11
  268. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  269. package/fesm2022/koobiq-components-code-block.mjs +10 -10
  270. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  271. package/fesm2022/koobiq-components-core.mjs +410 -322
  272. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  273. package/fesm2022/koobiq-components-datepicker.mjs +36 -36
  274. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  275. package/fesm2022/koobiq-components-divider.mjs +7 -7
  276. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  277. package/fesm2022/koobiq-components-dl.mjs +13 -13
  278. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  279. package/fesm2022/koobiq-components-dropdown.mjs +21 -19
  280. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  281. package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
  282. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  283. package/fesm2022/koobiq-components-empty-state.mjs +19 -19
  284. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  285. package/fesm2022/koobiq-components-file-upload.mjs +15 -15
  286. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  287. package/fesm2022/koobiq-components-filter-bar.mjs +480 -107
  288. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  289. package/fesm2022/koobiq-components-form-field.mjs +44 -42
  290. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  291. package/fesm2022/koobiq-components-icon.mjs +13 -13
  292. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  293. package/fesm2022/koobiq-components-input.mjs +32 -31
  294. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  295. package/fesm2022/koobiq-components-link.mjs +7 -7
  296. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  297. package/fesm2022/koobiq-components-list.mjs +19 -19
  298. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  299. package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
  300. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  301. package/fesm2022/koobiq-components-markdown.mjs +10 -10
  302. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  303. package/fesm2022/koobiq-components-modal.mjs +28 -28
  304. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  305. package/fesm2022/koobiq-components-navbar.mjs +43 -43
  306. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  307. package/fesm2022/koobiq-components-overflow-items.mjs +18 -18
  308. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  309. package/fesm2022/koobiq-components-popover.mjs +16 -16
  310. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  311. package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
  312. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  313. package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
  314. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  315. package/fesm2022/koobiq-components-radio.mjs +10 -10
  316. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  317. package/fesm2022/koobiq-components-risk-level.mjs +7 -7
  318. package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
  319. package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
  320. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  321. package/fesm2022/koobiq-components-select.mjs +12 -12
  322. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  323. package/fesm2022/koobiq-components-sidebar.mjs +21 -15
  324. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  325. package/fesm2022/koobiq-components-sidepanel.mjs +25 -25
  326. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  327. package/fesm2022/koobiq-components-splitter.mjs +16 -16
  328. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  329. package/fesm2022/koobiq-components-table.mjs +10 -10
  330. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  331. package/fesm2022/koobiq-components-tabs.mjs +52 -52
  332. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  333. package/fesm2022/koobiq-components-tags.mjs +23 -23
  334. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  335. package/fesm2022/koobiq-components-textarea.mjs +7 -7
  336. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  337. package/fesm2022/koobiq-components-timepicker.mjs +7 -7
  338. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  339. package/fesm2022/koobiq-components-timezone.mjs +24 -24
  340. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  341. package/fesm2022/koobiq-components-title.mjs +7 -7
  342. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  343. package/fesm2022/koobiq-components-toast.mjs +16 -16
  344. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  345. package/fesm2022/koobiq-components-toggle.mjs +7 -7
  346. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  347. package/fesm2022/koobiq-components-tooltip.mjs +16 -16
  348. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  349. package/fesm2022/koobiq-components-top-bar.mjs +13 -13
  350. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  351. package/fesm2022/koobiq-components-tree-select.mjs +8 -8
  352. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  353. package/fesm2022/koobiq-components-tree.mjs +54 -40
  354. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  355. package/file-upload/_file-upload-theme.scss +94 -17
  356. package/file-upload/file-upload-tokens.scss +5 -0
  357. package/file-upload/single-file-upload.component.scss +1 -0
  358. package/filter-bar/filter-bar.types.d.ts +28 -1
  359. package/filter-bar/filters.d.ts +3 -2
  360. package/filter-bar/filters.scss +4 -0
  361. package/filter-bar/pipes/base-pipe.scss +1 -0
  362. package/filter-bar/pipes/pipe-multi-select.d.ts +6 -1
  363. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +57 -0
  364. package/filter-bar/pipes/pipe-multi-tree-select.scss +19 -0
  365. package/filter-bar/pipes/pipe-tree-select.d.ts +41 -0
  366. package/filter-bar/pipes/pipe-tree-select.scss +9 -0
  367. package/filter-bar/public-api.d.ts +1 -0
  368. package/form-field/_form-field-theme.scss +12 -12
  369. package/form-field/form-field.scss +58 -61
  370. package/input/_input-theme.scss +6 -0
  371. package/input/input-number.d.ts +1 -0
  372. package/modal/modal.type.d.ts +1 -1
  373. package/overflow-items/overflow-items.d.ts +1 -1
  374. package/package.json +5 -5
  375. package/prebuilt-themes/dark-theme.css +1 -1
  376. package/prebuilt-themes/light-theme.css +1 -1
  377. package/prebuilt-themes/theme.css +1 -1
  378. package/schematics/ng-add/index.js +5 -5
  379. package/select/_select-theme.scss +1 -1
  380. package/select/select.scss +2 -0
  381. package/tags/_tag-theme.scss +5 -0
  382. package/tags/tag-tokens.scss +17 -0
  383. package/tree/control/flat-tree-control.filters.d.ts +1 -0
  384. package/tree/tree-option.component.d.ts +3 -1
  385. package/core/utils/data-size/config.d.ts +0 -38
  386. package/core/utils/data-size/data-size.pipe.d.ts +0 -14
  387. package/core/utils/data-size/size.d.ts +0 -15
  388. package/esm2022/core/utils/data-size/config.mjs +0 -10
  389. package/esm2022/core/utils/data-size/data-size.pipe.mjs +0 -45
  390. package/esm2022/core/utils/data-size/index.mjs +0 -4
  391. package/esm2022/core/utils/data-size/size.mjs +0 -43
@@ -30,6 +30,7 @@ export class KbqPipeMultiSelectComponent extends KbqBasePipe {
30
30
  super(...arguments);
31
31
  /** control for search options */
32
32
  this.searchControl = new UntypedFormControl();
33
+ this.selectionAllInProgress = false;
33
34
  /** Comparator of selected options */
34
35
  this.compareByValue = (o1, o2) => o1?.id === o2?.id;
35
36
  }
@@ -39,7 +40,7 @@ export class KbqPipeMultiSelectComponent extends KbqBasePipe {
39
40
  }
40
41
  /** Whether the current pipe is empty. */
41
42
  get isEmpty() {
42
- return !this.data.value?.length;
43
+ return !this.data.value?.length || this.allOptionsSelected;
43
44
  }
44
45
  /** state for checkbox 'select all'. */
45
46
  get checkboxState() {
@@ -53,11 +54,16 @@ export class KbqPipeMultiSelectComponent extends KbqBasePipe {
53
54
  }
54
55
  return 'indeterminate';
55
56
  }
56
- get visibleOptions() {
57
- return this.options.filter((option) => option.selectable);
57
+ /** true if all visible options selected */
58
+ get allVisibleOptionsSelected() {
59
+ return this.visibleOptions?.every((option) => option.selected);
58
60
  }
61
+ /** true if all options selected */
59
62
  get allOptionsSelected() {
60
- return this.visibleOptions.every((option) => option.selected);
63
+ return this.select?.triggerValues.length === this.values?.length;
64
+ }
65
+ get visibleOptions() {
66
+ return this.options?.filter((option) => option.selectable);
61
67
  }
62
68
  /** @docs-private */
63
69
  ngOnInit() {
@@ -72,6 +78,8 @@ export class KbqPipeMultiSelectComponent extends KbqBasePipe {
72
78
  }
73
79
  /** @docs-private */
74
80
  onSelect(item) {
81
+ if (this.selectionAllInProgress)
82
+ return;
75
83
  this.data.value = item;
76
84
  this.filterBar?.onChangePipe.emit(this.data);
77
85
  this.stateChanges.next();
@@ -90,12 +98,22 @@ export class KbqPipeMultiSelectComponent extends KbqBasePipe {
90
98
  }
91
99
  /** @docs-private */
92
100
  toggleSelectionAll() {
93
- if (this.allOptionsSelected) {
101
+ this.selectionAllInProgress = true;
102
+ if (this.allVisibleOptionsSelected) {
94
103
  this.visibleOptions.forEach((option) => option.deselect());
95
104
  }
96
105
  else {
97
106
  this.visibleOptions.forEach((option) => option.select());
98
107
  }
108
+ this.selectionAllInProgress = false;
109
+ this.data.value = [...this.select.value];
110
+ this.filterBar?.onChangePipe.emit(this.data);
111
+ this.stateChanges.next();
112
+ }
113
+ onClose() {
114
+ if (this.allOptionsSelected) {
115
+ this.toggleSelectionAll();
116
+ }
99
117
  }
100
118
  /** opens select */
101
119
  open() {
@@ -106,15 +124,15 @@ export class KbqPipeMultiSelectComponent extends KbqBasePipe {
106
124
  ? this.values.filter((item) => item.name.toLowerCase().includes(value.toLowerCase()))
107
125
  : this.values;
108
126
  }
109
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqPipeMultiSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
110
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: KbqPipeMultiSelectComponent, isStandalone: true, selector: "kbq-pipe-multi-select", providers: [
127
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqPipeMultiSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
128
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: KbqPipeMultiSelectComponent, isStandalone: true, selector: "kbq-pipe-multi-select", providers: [
111
129
  {
112
130
  provide: KbqBasePipe,
113
131
  useExisting: this
114
132
  }
115
- ], viewQueries: [{ propertyName: "select", first: true, predicate: KbqSelect, descendants: true }, { propertyName: "options", predicate: KbqOption, descendants: true }], usesInheritance: true, ngImport: i0, template: "<kbq-select\n #select=\"kbqSelect\"\n multiple\n [compareWith]=\"compareByValue\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [panelClass]=\"'kbq-pipe-multiselect__panel'\"\n [tabIndex]=\"-1\"\n [value]=\"selected\"\n (selectionChange)=\"onSelect($event.value)\"\n>\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n @if (select.triggerValues.length === 1) {\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!select.triggerValue\">\n {{ select.triggerValue }}\n </span>\n } @else if (select.triggerValues.length > 1) {\n <kbq-badge [badgeColor]=\"'contrast'\" [compact]=\"true\">\n {{ select.triggerValues.length }}\n </kbq-badge>\n }\n </button>\n @if (data.search) {\n <kbq-form-field kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n kbqInput\n placeholder=\"{{ localeData.search.placeholder }}\"\n type=\"text\"\n [formControl]=\"searchControl\"\n (keydown.enter)=\"toggleSelectionAllByEnterKey()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n }\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n @if (data.selectAll && !select.isEmptySearchResult) {\n <kbq-option [selectable]=\"false\" (click)=\"toggleSelectionAll()\" (keydown.enter)=\"toggleSelectionAll()\">\n <kbq-pseudo-checkbox [state]=\"checkboxState\" />\n {{ localeData.pipe.selectAll }}\n </kbq-option>\n }\n\n @for (item of filteredOptions | async; track item) {\n <kbq-option [value]=\"item\">\n @if (isTemplateRef(valueTemplate)) {\n <ng-container\n [ngTemplateOutlet]=\"$any(valueTemplate)\"\n [ngTemplateOutletContext]=\"{ $implicit, option: item }\"\n />\n } @else {\n {{ item.name }}\n }\n </kbq-option>\n }\n</kbq-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-pipe{display:flex;flex-direction:row;max-height:32px}.kbq-pipe .kbq-select .kbq-select__trigger{height:unset}.kbq-pipe .kbq-button-wrapper{max-width:320px}.kbq-pipe .kbq-pipe__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;color:var(--kbq-foreground-contrast-secondary)}.kbq-pipe .kbq-pipe__value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto}.kbq-pipe .kbq-pipe__value:not(.kbq-pipe__value_empty){margin-left:4px}.kbq-pipe .kbq-pipe__separator{z-index:1;margin-left:-1px;margin-right:0;height:12px;align-self:center;color:var(--kbq-line-contrast-less)}.kbq-pipe .kbq-select:not(:hover,.kbq-active)+.kbq-pipe-button:not(:hover,.kbq-active):after,.kbq-pipe .kbq-button:not(:hover,.kbq-active,[disabled])+.kbq-pipe-button:not(:hover,.kbq-active):after{content:\"\";position:absolute;left:0;top:10px;width:1px;height:12px;background:var(--kbq-line-contrast-less)}.kbq-pipe .kbq-button.cdk-keyboard-focused{z-index:1}.kbq-pipe.kbq-pipe_disabled .kbq-pipe__name,.kbq-pipe.kbq-pipe_disabled .kbq-pipe__value{color:var(--kbq-states-foreground-disabled)}.kbq-pipe.kbq-pipe_removable .kbq-button,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button{border-bottom-right-radius:unset;border-top-right-radius:unset;border-right:none}.kbq-pipe.kbq-pipe_removable .kbq-button.cdk-keyboard-focused:after,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button.cdk-keyboard-focused:after{content:\"\";position:absolute;right:0;top:0;bottom:0;width:1px;background:var(--kbq-states-line-focus-theme)}.kbq-pipe.kbq-pipe_removable .kbq-button-icon,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button-icon{border-bottom-left-radius:unset;border-top-left-radius:unset;border-left:none}.kbq-pipe.kbq-pipe_removable .kbq-button-icon.cdk-keyboard-focused:after,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button-icon.cdk-keyboard-focused:after{content:\"\";position:absolute;left:0;top:0;bottom:0;width:1px;background:var(--kbq-states-line-focus-theme)}.kbq-pipe-tooltip__name{color:var(--kbq-foreground-white-secondary)}.kbq-pipe-tooltip__value{color:var(--kbq-foreground-white)}\n", ".kbq-pipe__multiselect .kbq-pipe__value{margin-left:var(--kbq-size-xxs)}.kbq-pipe__multiselect .kbq-badge{align-self:center;margin-left:var(--kbq-size-xs)}.kbq-pipe-multiselect__panel .kbq-select__content{max-height:404px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqDividerModule }, { kind: "ngmodule", type: KbqSelectModule }, { kind: "component", type: i3.KbqSelect, selector: "kbq-select", inputs: ["hiddenItemsText", "panelClass", "backdropClass", "errorStateMatcher", "sortComparator", "hasBackdrop", "placeholder", "required", "multiple", "compareWith", "panelWidth", "panelMinWidth", "value", "id", "tabIndex", "disabled", "hiddenItemsTextFormatter"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["kbqSelect"] }, { kind: "directive", type: i3.KbqOptionTooltip, selector: "kbq-option" }, { kind: "component", type: i4.KbqOption, selector: "kbq-option", inputs: ["value", "selectable", "userSelect", "showCheckbox", "disabled"], outputs: ["onSelectionChange"], exportAs: ["kbqOption"] }, { kind: "directive", type: i4.KbqSelectSearch, selector: "[kbqSelectSearch]", exportAs: ["kbqSelectSearch"] }, { kind: "directive", type: i4.KbqSelectMatcher, selector: "kbq-select-matcher, [kbq-select-matcher]" }, { kind: "directive", type: i4.KbqSelectSearchEmptyResult, selector: "[kbq-select-search-empty-result]", exportAs: ["kbqSelectSearchEmptyResult"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: KbqPipeState, selector: "[kbqPipeState]", inputs: ["kbqPipeState"] }, { kind: "ngmodule", type: KbqBadgeModule }, { kind: "component", type: i5.KbqBadge, selector: "kbq-badge", inputs: ["compact", "outline", "badgeColor"] }, { kind: "directive", type: i5.KbqBadgeCssStyler, selector: "kbq-badge" }, { kind: "component", type: KbqPipeButton, selector: "kbq-pipe-button", inputs: ["readonly"] }, { kind: "ngmodule", type: KbqTitleModule }, { kind: "directive", type: KbqPipeTitleDirective, selector: "[kbqPipeTitle]", inputs: ["kbqPipeTitle"], exportAs: ["kbqPipeTitle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: KbqFormFieldModule }, { kind: "component", type: i6.KbqFormField, selector: "kbq-form-field", exportAs: ["kbqFormField"] }, { kind: "directive", type: i6.KbqFormFieldWithoutBorders, selector: "kbq-form-field[kbqFormFieldWithoutBorders]", exportAs: ["kbqFormFieldWithoutBorders"] }, { kind: "directive", type: i6.KbqPrefix, selector: "[kbqPrefix]" }, { kind: "component", type: i6.KbqCleaner, selector: "kbq-cleaner", exportAs: ["kbqCleaner"] }, { kind: "directive", type: i6.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "directive", type: i6.KbqTrim, selector: "[kbqInput], [kbqTextarea]", exportAs: ["KbqTrim"] }, { kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqInputModule }, { kind: "directive", type: i7.KbqInput, selector: "input[kbqInput],input[kbqNumberInput]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "type", "value"], exportAs: ["kbqInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: KbqPseudoCheckboxModule }, { kind: "component", type: i4.KbqPseudoCheckbox, selector: "kbq-pseudo-checkbox", inputs: ["big", "state", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
133
+ ], viewQueries: [{ propertyName: "select", first: true, predicate: KbqSelect, descendants: true }, { propertyName: "options", predicate: KbqOption, descendants: true }], usesInheritance: true, ngImport: i0, template: "<kbq-select\n #select=\"kbqSelect\"\n multiple\n [compareWith]=\"compareByValue\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [panelClass]=\"'kbq-pipe-multiselect__panel'\"\n [tabIndex]=\"-1\"\n [value]=\"selected\"\n (closed)=\"onClose()\"\n (selectionChange)=\"onSelect($event.value)\"\n>\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n @if (select.triggerValues.length === 1) {\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!select.triggerValue\">\n {{ select.triggerValue }}\n </span>\n } @else if (select.triggerValues.length > 1 && !allOptionsSelected) {\n <kbq-badge [badgeColor]=\"'contrast'\" [compact]=\"true\">\n {{ select.triggerValues.length }}\n </kbq-badge>\n }\n </button>\n @if (data.search) {\n <kbq-form-field kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n kbqInput\n placeholder=\"{{ localeData.search.placeholder }}\"\n type=\"text\"\n [formControl]=\"searchControl\"\n (keydown.enter)=\"toggleSelectionAllByEnterKey()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n }\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n @if (data.selectAll && !select.isEmptySearchResult) {\n <kbq-option\n [class.kbq-selected]=\"allVisibleOptionsSelected\"\n [selectable]=\"false\"\n (click)=\"toggleSelectionAll()\"\n (keydown.enter)=\"toggleSelectionAll()\"\n >\n <kbq-pseudo-checkbox [state]=\"checkboxState\" />\n {{ localeData.pipe.selectAll }}\n </kbq-option>\n }\n\n @for (item of filteredOptions | async; track item) {\n <kbq-option [value]=\"item\">\n @if (isTemplateRef(valueTemplate)) {\n <ng-container\n [ngTemplateOutlet]=\"$any(valueTemplate)\"\n [ngTemplateOutletContext]=\"{ $implicit, option: item }\"\n />\n } @else {\n {{ item.name }}\n }\n </kbq-option>\n }\n</kbq-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-pipe{display:flex;flex-direction:row;max-height:32px}.kbq-pipe .kbq-select .kbq-select__trigger{height:unset}.kbq-pipe .kbq-button-wrapper{max-width:320px}.kbq-pipe .kbq-pipe__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;color:var(--kbq-foreground-contrast-secondary)}.kbq-pipe .kbq-pipe__value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto}.kbq-pipe .kbq-pipe__value:not(.kbq-pipe__value_empty){margin-left:4px}.kbq-pipe .kbq-pipe__separator{z-index:1;margin-left:-1px;margin-right:0;height:12px;align-self:center;color:var(--kbq-line-contrast-less)}.kbq-pipe .kbq-select:not(:hover,.kbq-active)+.kbq-pipe-button:not(:hover,.kbq-active):after,.kbq-pipe .kbq-tree-select:not(:hover,.kbq-active)+.kbq-pipe-button:not(:hover,.kbq-active):after,.kbq-pipe .kbq-button:not(:hover,.kbq-active,[disabled])+.kbq-pipe-button:not(:hover,.kbq-active):after{content:\"\";position:absolute;left:0;top:10px;width:1px;height:12px;background:var(--kbq-line-contrast-less)}.kbq-pipe .kbq-button.cdk-keyboard-focused{z-index:1}.kbq-pipe.kbq-pipe_disabled .kbq-pipe__name,.kbq-pipe.kbq-pipe_disabled .kbq-pipe__value{color:var(--kbq-states-foreground-disabled)}.kbq-pipe.kbq-pipe_removable .kbq-button,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button{border-bottom-right-radius:unset;border-top-right-radius:unset;border-right:none}.kbq-pipe.kbq-pipe_removable .kbq-button.cdk-keyboard-focused:after,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button.cdk-keyboard-focused:after{content:\"\";position:absolute;right:0;top:0;bottom:0;width:1px;background:var(--kbq-states-line-focus-theme)}.kbq-pipe.kbq-pipe_removable .kbq-button-icon,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button-icon{border-bottom-left-radius:unset;border-top-left-radius:unset;border-left:none}.kbq-pipe.kbq-pipe_removable .kbq-button-icon.cdk-keyboard-focused:after,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button-icon.cdk-keyboard-focused:after{content:\"\";position:absolute;left:0;top:0;bottom:0;width:1px;background:var(--kbq-states-line-focus-theme)}.kbq-pipe-tooltip__name{color:var(--kbq-foreground-white-secondary)}.kbq-pipe-tooltip__value{color:var(--kbq-foreground-white)}\n", ".kbq-pipe__multiselect .kbq-pipe__value{margin-left:var(--kbq-size-xxs)}.kbq-pipe__multiselect .kbq-badge{align-self:center;margin-left:var(--kbq-size-xs)}.kbq-pipe-multiselect__panel .kbq-select__content{max-height:404px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqDividerModule }, { kind: "ngmodule", type: KbqSelectModule }, { kind: "component", type: i3.KbqSelect, selector: "kbq-select", inputs: ["hiddenItemsText", "panelClass", "backdropClass", "errorStateMatcher", "sortComparator", "hasBackdrop", "placeholder", "required", "multiple", "compareWith", "panelWidth", "panelMinWidth", "value", "id", "tabIndex", "disabled", "hiddenItemsTextFormatter"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["kbqSelect"] }, { kind: "directive", type: i3.KbqOptionTooltip, selector: "kbq-option" }, { kind: "component", type: i4.KbqOption, selector: "kbq-option", inputs: ["value", "selectable", "userSelect", "showCheckbox", "disabled"], outputs: ["onSelectionChange"], exportAs: ["kbqOption"] }, { kind: "directive", type: i4.KbqSelectSearch, selector: "[kbqSelectSearch]", exportAs: ["kbqSelectSearch"] }, { kind: "directive", type: i4.KbqSelectMatcher, selector: "kbq-select-matcher, [kbq-select-matcher]" }, { kind: "directive", type: i4.KbqSelectSearchEmptyResult, selector: "[kbq-select-search-empty-result]", exportAs: ["kbqSelectSearchEmptyResult"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: KbqPipeState, selector: "[kbqPipeState]", inputs: ["kbqPipeState"] }, { kind: "ngmodule", type: KbqBadgeModule }, { kind: "component", type: i5.KbqBadge, selector: "kbq-badge", inputs: ["compact", "outline", "badgeColor"] }, { kind: "directive", type: i5.KbqBadgeCssStyler, selector: "kbq-badge" }, { kind: "component", type: KbqPipeButton, selector: "kbq-pipe-button", inputs: ["readonly"] }, { kind: "ngmodule", type: KbqTitleModule }, { kind: "directive", type: KbqPipeTitleDirective, selector: "[kbqPipeTitle]", inputs: ["kbqPipeTitle"], exportAs: ["kbqPipeTitle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: KbqFormFieldModule }, { kind: "component", type: i6.KbqFormField, selector: "kbq-form-field", exportAs: ["kbqFormField"] }, { kind: "directive", type: i6.KbqFormFieldWithoutBorders, selector: "kbq-form-field[kbqFormFieldWithoutBorders]", exportAs: ["kbqFormFieldWithoutBorders"] }, { kind: "directive", type: i6.KbqPrefix, selector: "[kbqPrefix]" }, { kind: "component", type: i6.KbqCleaner, selector: "kbq-cleaner", exportAs: ["kbqCleaner"] }, { kind: "directive", type: i6.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "directive", type: i6.KbqTrim, selector: "[kbqInput], [kbqTextarea]", exportAs: ["KbqTrim"] }, { kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqInputModule }, { kind: "directive", type: i7.KbqInput, selector: "input[kbqInput],input[kbqNumberInput]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "type", "value"], exportAs: ["kbqInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: KbqPseudoCheckboxModule }, { kind: "component", type: i4.KbqPseudoCheckbox, selector: "kbq-pseudo-checkbox", inputs: ["big", "state", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
116
134
  }
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqPipeMultiSelectComponent, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqPipeMultiSelectComponent, decorators: [{
118
136
  type: Component,
119
137
  args: [{ standalone: true, selector: 'kbq-pipe-multi-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
120
138
  {
@@ -139,7 +157,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
139
157
  ReactiveFormsModule,
140
158
  AsyncPipe,
141
159
  KbqPseudoCheckboxModule
142
- ], template: "<kbq-select\n #select=\"kbqSelect\"\n multiple\n [compareWith]=\"compareByValue\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [panelClass]=\"'kbq-pipe-multiselect__panel'\"\n [tabIndex]=\"-1\"\n [value]=\"selected\"\n (selectionChange)=\"onSelect($event.value)\"\n>\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n @if (select.triggerValues.length === 1) {\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!select.triggerValue\">\n {{ select.triggerValue }}\n </span>\n } @else if (select.triggerValues.length > 1) {\n <kbq-badge [badgeColor]=\"'contrast'\" [compact]=\"true\">\n {{ select.triggerValues.length }}\n </kbq-badge>\n }\n </button>\n @if (data.search) {\n <kbq-form-field kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n kbqInput\n placeholder=\"{{ localeData.search.placeholder }}\"\n type=\"text\"\n [formControl]=\"searchControl\"\n (keydown.enter)=\"toggleSelectionAllByEnterKey()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n }\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n @if (data.selectAll && !select.isEmptySearchResult) {\n <kbq-option [selectable]=\"false\" (click)=\"toggleSelectionAll()\" (keydown.enter)=\"toggleSelectionAll()\">\n <kbq-pseudo-checkbox [state]=\"checkboxState\" />\n {{ localeData.pipe.selectAll }}\n </kbq-option>\n }\n\n @for (item of filteredOptions | async; track item) {\n <kbq-option [value]=\"item\">\n @if (isTemplateRef(valueTemplate)) {\n <ng-container\n [ngTemplateOutlet]=\"$any(valueTemplate)\"\n [ngTemplateOutletContext]=\"{ $implicit, option: item }\"\n />\n } @else {\n {{ item.name }}\n }\n </kbq-option>\n }\n</kbq-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-pipe{display:flex;flex-direction:row;max-height:32px}.kbq-pipe .kbq-select .kbq-select__trigger{height:unset}.kbq-pipe .kbq-button-wrapper{max-width:320px}.kbq-pipe .kbq-pipe__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;color:var(--kbq-foreground-contrast-secondary)}.kbq-pipe .kbq-pipe__value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto}.kbq-pipe .kbq-pipe__value:not(.kbq-pipe__value_empty){margin-left:4px}.kbq-pipe .kbq-pipe__separator{z-index:1;margin-left:-1px;margin-right:0;height:12px;align-self:center;color:var(--kbq-line-contrast-less)}.kbq-pipe .kbq-select:not(:hover,.kbq-active)+.kbq-pipe-button:not(:hover,.kbq-active):after,.kbq-pipe .kbq-button:not(:hover,.kbq-active,[disabled])+.kbq-pipe-button:not(:hover,.kbq-active):after{content:\"\";position:absolute;left:0;top:10px;width:1px;height:12px;background:var(--kbq-line-contrast-less)}.kbq-pipe .kbq-button.cdk-keyboard-focused{z-index:1}.kbq-pipe.kbq-pipe_disabled .kbq-pipe__name,.kbq-pipe.kbq-pipe_disabled .kbq-pipe__value{color:var(--kbq-states-foreground-disabled)}.kbq-pipe.kbq-pipe_removable .kbq-button,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button{border-bottom-right-radius:unset;border-top-right-radius:unset;border-right:none}.kbq-pipe.kbq-pipe_removable .kbq-button.cdk-keyboard-focused:after,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button.cdk-keyboard-focused:after{content:\"\";position:absolute;right:0;top:0;bottom:0;width:1px;background:var(--kbq-states-line-focus-theme)}.kbq-pipe.kbq-pipe_removable .kbq-button-icon,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button-icon{border-bottom-left-radius:unset;border-top-left-radius:unset;border-left:none}.kbq-pipe.kbq-pipe_removable .kbq-button-icon.cdk-keyboard-focused:after,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button-icon.cdk-keyboard-focused:after{content:\"\";position:absolute;left:0;top:0;bottom:0;width:1px;background:var(--kbq-states-line-focus-theme)}.kbq-pipe-tooltip__name{color:var(--kbq-foreground-white-secondary)}.kbq-pipe-tooltip__value{color:var(--kbq-foreground-white)}\n", ".kbq-pipe__multiselect .kbq-pipe__value{margin-left:var(--kbq-size-xxs)}.kbq-pipe__multiselect .kbq-badge{align-self:center;margin-left:var(--kbq-size-xs)}.kbq-pipe-multiselect__panel .kbq-select__content{max-height:404px}\n"] }]
160
+ ], template: "<kbq-select\n #select=\"kbqSelect\"\n multiple\n [compareWith]=\"compareByValue\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [panelClass]=\"'kbq-pipe-multiselect__panel'\"\n [tabIndex]=\"-1\"\n [value]=\"selected\"\n (closed)=\"onClose()\"\n (selectionChange)=\"onSelect($event.value)\"\n>\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n @if (select.triggerValues.length === 1) {\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!select.triggerValue\">\n {{ select.triggerValue }}\n </span>\n } @else if (select.triggerValues.length > 1 && !allOptionsSelected) {\n <kbq-badge [badgeColor]=\"'contrast'\" [compact]=\"true\">\n {{ select.triggerValues.length }}\n </kbq-badge>\n }\n </button>\n @if (data.search) {\n <kbq-form-field kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n kbqInput\n placeholder=\"{{ localeData.search.placeholder }}\"\n type=\"text\"\n [formControl]=\"searchControl\"\n (keydown.enter)=\"toggleSelectionAllByEnterKey()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n }\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n @if (data.selectAll && !select.isEmptySearchResult) {\n <kbq-option\n [class.kbq-selected]=\"allVisibleOptionsSelected\"\n [selectable]=\"false\"\n (click)=\"toggleSelectionAll()\"\n (keydown.enter)=\"toggleSelectionAll()\"\n >\n <kbq-pseudo-checkbox [state]=\"checkboxState\" />\n {{ localeData.pipe.selectAll }}\n </kbq-option>\n }\n\n @for (item of filteredOptions | async; track item) {\n <kbq-option [value]=\"item\">\n @if (isTemplateRef(valueTemplate)) {\n <ng-container\n [ngTemplateOutlet]=\"$any(valueTemplate)\"\n [ngTemplateOutletContext]=\"{ $implicit, option: item }\"\n />\n } @else {\n {{ item.name }}\n }\n </kbq-option>\n }\n</kbq-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-pipe{display:flex;flex-direction:row;max-height:32px}.kbq-pipe .kbq-select .kbq-select__trigger{height:unset}.kbq-pipe .kbq-button-wrapper{max-width:320px}.kbq-pipe .kbq-pipe__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;color:var(--kbq-foreground-contrast-secondary)}.kbq-pipe .kbq-pipe__value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto}.kbq-pipe .kbq-pipe__value:not(.kbq-pipe__value_empty){margin-left:4px}.kbq-pipe .kbq-pipe__separator{z-index:1;margin-left:-1px;margin-right:0;height:12px;align-self:center;color:var(--kbq-line-contrast-less)}.kbq-pipe .kbq-select:not(:hover,.kbq-active)+.kbq-pipe-button:not(:hover,.kbq-active):after,.kbq-pipe .kbq-tree-select:not(:hover,.kbq-active)+.kbq-pipe-button:not(:hover,.kbq-active):after,.kbq-pipe .kbq-button:not(:hover,.kbq-active,[disabled])+.kbq-pipe-button:not(:hover,.kbq-active):after{content:\"\";position:absolute;left:0;top:10px;width:1px;height:12px;background:var(--kbq-line-contrast-less)}.kbq-pipe .kbq-button.cdk-keyboard-focused{z-index:1}.kbq-pipe.kbq-pipe_disabled .kbq-pipe__name,.kbq-pipe.kbq-pipe_disabled .kbq-pipe__value{color:var(--kbq-states-foreground-disabled)}.kbq-pipe.kbq-pipe_removable .kbq-button,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button{border-bottom-right-radius:unset;border-top-right-radius:unset;border-right:none}.kbq-pipe.kbq-pipe_removable .kbq-button.cdk-keyboard-focused:after,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button.cdk-keyboard-focused:after{content:\"\";position:absolute;right:0;top:0;bottom:0;width:1px;background:var(--kbq-states-line-focus-theme)}.kbq-pipe.kbq-pipe_removable .kbq-button-icon,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button-icon{border-bottom-left-radius:unset;border-top-left-radius:unset;border-left:none}.kbq-pipe.kbq-pipe_removable .kbq-button-icon.cdk-keyboard-focused:after,.kbq-pipe.kbq-pipe_cleanable:not(.kbq-pipe_empty) .kbq-button-icon.cdk-keyboard-focused:after{content:\"\";position:absolute;left:0;top:0;bottom:0;width:1px;background:var(--kbq-states-line-focus-theme)}.kbq-pipe-tooltip__name{color:var(--kbq-foreground-white-secondary)}.kbq-pipe-tooltip__value{color:var(--kbq-foreground-white)}\n", ".kbq-pipe__multiselect .kbq-pipe__value{margin-left:var(--kbq-size-xxs)}.kbq-pipe__multiselect .kbq-badge{align-self:center;margin-left:var(--kbq-size-xs)}.kbq-pipe-multiselect__panel .kbq-select__content{max-height:404px}\n"] }]
143
161
  }], propDecorators: { select: [{
144
162
  type: ViewChild,
145
163
  args: [KbqSelect]
@@ -147,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
147
165
  type: ViewChildren,
148
166
  args: [KbqOption]
149
167
  }] } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1tdWx0aS1zZWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ZpbHRlci1iYXIvcGlwZXMvcGlwZS1tdWx0aS1zZWxlY3QudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ZpbHRlci1iYXIvcGlwZXMvcGlwZS1tdWx0aS1zZWxlY3QuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUEwQixNQUFNLHlCQUF5QixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFP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O3dCQUNULHVCQUF1QjtxQkFDMUI7OEJBU3FCLE1BQU07c0JBQTNCLFNBQVM7dUJBQUMsU0FBUztnQkFHSyxPQUFPO3NCQUEvQixZQUFZO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgS2JxQmFkZ2VNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgS2JxQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBLYnFPcHRpb24sIEticVBzZXVkb0NoZWNrYm94TW9kdWxlLCBLYnFQc2V1ZG9DaGVja2JveFN0YXRlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxRGl2aWRlck1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kaXZpZGVyJztcbmltcG9ydCB7IEticUZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEticUljb24gfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBLYnFJbnB1dE1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pbnB1dCc7XG5pbXBvcnQgeyBLYnFTZWxlY3QsIEticVNlbGVjdE1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9zZWxlY3QnO1xuaW1wb3J0IHsgS2JxVGl0bGVNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdGl0bGUnO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLYnFTZWxlY3RWYWx1ZSB9IGZyb20gJy4uL2ZpbHRlci1iYXIudHlwZXMnO1xuaW1wb3J0IHsgS2JxQmFzZVBpcGUgfSBmcm9tICcuL2Jhc2UtcGlwZSc7XG5pbXBvcnQgeyBLYnFQaXBlQnV0dG9uIH0gZnJvbSAnLi9waXBlLWJ1dHRvbic7XG5pbXBvcnQgeyBLYnFQaXBlU3RhdGUgfSBmcm9tICcuL3BpcGUtc3RhdGUnO1xuaW1wb3J0IHsgS2JxUGlwZVRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnLi9waXBlLXRpdGxlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2ticS1waXBlLW11bHRpLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICdwaXBlLW11bHRpLXNlbGVjdC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnYmFzZS1waXBlLnNjc3MnLCAncGlwZS1tdWx0aXNlbGVjdC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogS2JxQmFzZVBpcGUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogdGhpc1xuICAgICAgICB9XG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBLYnFCdXR0b25Nb2R1bGUsXG4gICAgICAgIEticURpdmlkZXJNb2R1bGUsXG4gICAgICAgIEticVNlbGVjdE1vZHVsZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgS2JxUGlwZVN0YXRlLFxuICAgICAgICBLYnFCYWRnZU1vZHVsZSxcbiAgICAgICAgS2JxUGlwZUJ1dHRvbixcbiAgICAgICAgS2JxVGl0bGVNb2R1bGUsXG4gICAgICAgIEticVBpcGVUaXRsZURpcmVjdGl2ZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgS2JxRm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBLYnFJY29uLFxuICAgICAgICBLYnFJbnB1dE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBLYnFQc2V1ZG9DaGVja2JveE1vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgS2JxUGlwZU11bHRpU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgS2JxQmFzZVBpcGU8S2JxU2VsZWN0VmFsdWVbXT4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuICAgIC8qKiBjb250cm9sIGZvciBzZWFyY2ggb3B0aW9ucyAqL1xuICAgIHNlYXJjaENvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgICAvKiogZmlsdGVyZWQgYnkgc2VhcmNoIG9wdGlvbnMgKi9cbiAgICBmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8YW55W10+O1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAVmlld0NoaWxkKEticVNlbGVjdCkgc2VsZWN0OiBLYnFTZWxlY3Q7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oS2JxT3B0aW9uKSBvcHRpb25zOiBRdWVyeUxpc3Q8S2JxT3B0aW9uPjtcblxuICAgIC8qKiBzZWxlY3RlZCB2YWx1ZSAqL1xuICAgIGdldCBzZWxlY3RlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS52YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgY3VycmVudCBwaXBlIGlzIGVtcHR5LiAqL1xuICAgIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZGF0YS52YWx1ZT8ubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKiBzdGF0ZSBmb3IgY2hlY2tib3ggJ3NlbGVjdCBhbGwnLiAqL1xuICAgIGdldCBjaGVja2JveFN0YXRlKCk6IEticVBzZXVkb0NoZWNrYm94U3RhdGUge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucykgcmV0dXJuICd1bmNoZWNrZWQnO1xuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdC5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5sZW5ndGggPT09IHRoaXMudmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuICdjaGVja2VkJztcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5zZWxlY3Quc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3VuY2hlY2tlZCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ2luZGV0ZXJtaW5hdGUnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHZpc2libGVPcHRpb25zKCk6IEticU9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGFibGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGFsbE9wdGlvbnNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnMuZXZlcnkoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IG1lcmdlKFxuICAgICAgICAgICAgb2YodGhpcy52YWx1ZXMpLFxuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKG1hcCgodmFsdWUpID0+IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKHZhbHVlKSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0LmNsb3NlZFN0cmVhbVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZmlsdGVyQmFyPy5vbkNsb3NlUGlwZS5uZXh0KHRoaXMuZGF0YSkpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25TZWxlY3QoaXRlbTogS2JxU2VsZWN0VmFsdWVbXSkge1xuICAgICAgICB0aGlzLmRhdGEudmFsdWUgPSBpdGVtO1xuICAgICAgICB0aGlzLmZpbHRlckJhcj8ub25DaGFuZ2VQaXBlLmVtaXQodGhpcy5kYXRhKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25DbGVhcigpIHtcbiAgICAgICAgdGhpcy5kYXRhLnZhbHVlID0gW107XG5cbiAgICAgICAgdGhpcy5maWx0ZXJCYXI/Lm9uQ2hhbmdlUGlwZS5lbWl0KHRoaXMuZGF0YSk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHRvZ2dsZVNlbGVjdGlvbkFsbEJ5RW50ZXJLZXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGEuc2VsZWN0QWxsICYmIHRoaXMuc2VsZWN0LmtleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbkFsbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICB0b2dnbGVTZWxlY3Rpb25BbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLmFsbE9wdGlvbnNTZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IG9wdGlvbi5kZXNlbGVjdCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0KCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENvbXBhcmF0b3Igb2Ygc2VsZWN0ZWQgb3B0aW9ucyAqL1xuICAgIGNvbXBhcmVCeVZhbHVlID0gKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuID0+IG8xPy5pZCA9PT0gbzI/LmlkO1xuXG4gICAgLyoqIG9wZW5zIHNlbGVjdCAqL1xuICAgIG92ZXJyaWRlIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Lm9wZW4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbHRlcmVkT3B0aW9ucyh2YWx1ZTogc3RyaW5nKTogS2JxU2VsZWN0VmFsdWVbXSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgPyB0aGlzLnZhbHVlcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpKVxuICAgICAgICAgICAgOiB0aGlzLnZhbHVlcztcbiAgICB9XG59XG4iLCI8a2JxLXNlbGVjdFxuICAgICNzZWxlY3Q9XCJrYnFTZWxlY3RcIlxuICAgIG11bHRpcGxlXG4gICAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVCeVZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGF0YS5kaXNhYmxlZFwiXG4gICAgW2ticVBpcGVUaXRsZV09XCJwaXBlVG9vbHRpcFwiXG4gICAgW25nQ2xhc3NdPVwieyAna2JxLWFjdGl2ZSc6IHNlbGVjdC5wYW5lbE9wZW4gfVwiXG4gICAgW3BhbmVsQ2xhc3NdPVwiJ2ticS1waXBlLW11bHRpc2VsZWN0X19wYW5lbCdcIlxuICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdGVkXCJcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0KCRldmVudC52YWx1ZSlcIlxuPlxuICAgIDxidXR0b25cbiAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICBrYnEtc2VsZWN0LW1hdGNoZXJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRhdGEuZGlzYWJsZWRcIlxuICAgICAgICBba2JxUGlwZVN0YXRlXT1cImRhdGFcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdrYnEtYWN0aXZlJzogc2VsZWN0LnBhbmVsT3BlbiB9XCJcbiAgICA+XG4gICAgICAgIDxzcGFuICNrYnFUaXRsZVRleHQgY2xhc3M9XCJrYnEtcGlwZV9fbmFtZVwiPnt7IGRhdGEubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgQGlmIChzZWxlY3QudHJpZ2dlclZhbHVlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIDxzcGFuICNrYnFUaXRsZVRleHQgY2xhc3M9XCJrYnEtcGlwZV9fdmFsdWVcIiBbY2xhc3Mua2JxLXBpcGVfX3ZhbHVlX2VtcHR5XT1cIiFzZWxlY3QudHJpZ2dlclZhbHVlXCI+XG4gICAgICAgICAgICAgICAge3sgc2VsZWN0LnRyaWdnZXJWYWx1ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9IEBlbHNlIGlmIChzZWxlY3QudHJpZ2dlclZhbHVlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICA8a2JxLWJhZGdlIFtiYWRnZUNvbG9yXT1cIidjb250cmFzdCdcIiBbY29tcGFjdF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAge3sgc2VsZWN0LnRyaWdnZXJWYWx1ZXMubGVuZ3RoIH19XG4gICAgICAgICAgICA8L2ticS1iYWRnZT5cbiAgICAgICAgfVxuICAgIDwvYnV0dG9uPlxuICAgIEBpZiAoZGF0YS5zZWFyY2gpIHtcbiAgICAgICAgPGticS1mb3JtLWZpZWxkIGticUZvcm1GaWVsZFdpdGhvdXRCb3JkZXJzIGticVNlbGVjdFNlYXJjaD5cbiAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLW1hZ25pZnlpbmctZ2xhc3NfMTZcIiBrYnFQcmVmaXg+PC9pPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAga2JxSW5wdXRcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGxvY2FsZURhdGEuc2VhcmNoLnBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZVNlbGVjdGlvbkFsbEJ5RW50ZXJLZXkoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGticS1jbGVhbmVyIC8+XG4gICAgICAgIDwva2JxLWZvcm0tZmllbGQ+XG4gICAgfVxuXG4gICAgPGRpdiBrYnEtc2VsZWN0LXNlYXJjaC1lbXB0eS1yZXN1bHQ+e3sgbG9jYWxlRGF0YS5waXBlLmVtcHR5U2VhcmNoUmVzdWx0IH19PC9kaXY+XG5cbiAgICBAaWYgKGRhdGEuc2VsZWN0QWxsICYmICFzZWxlY3QuaXNFbXB0eVNlYXJjaFJlc3VsdCkge1xuICAgICAgICA8a2JxLW9wdGlvbiBbc2VsZWN0YWJsZV09XCJmYWxzZVwiIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb25BbGwoKVwiIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZVNlbGVjdGlvbkFsbCgpXCI+XG4gICAgICAgICAgICA8a2JxLXBzZXVkby1jaGVja2JveCBbc3RhdGVdPVwiY2hlY2tib3hTdGF0ZVwiIC8+XG4gICAgICAgICAgICB7eyBsb2NhbGVEYXRhLnBpcGUuc2VsZWN0QWxsIH19XG4gICAgICAgIDwva2JxLW9wdGlvbj5cbiAgICB9XG5cbiAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkT3B0aW9ucyB8IGFzeW5jOyB0cmFjayBpdGVtKSB7XG4gICAgICAgIDxrYnEtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICBAaWYgKGlzVGVtcGxhdGVSZWYodmFsdWVUZW1wbGF0ZSkpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkodmFsdWVUZW1wbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQsIG9wdGlvbjogaXRlbSB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgICB9XG4gICAgICAgIDwva2JxLW9wdGlvbj5cbiAgICB9XG48L2ticS1zZWxlY3Q+XG5cbkBpZiAoc2hvd1JlbW92ZUJ1dHRvbikge1xuICAgIDxrYnEtcGlwZS1idXR0b24gLz5cbn1cblxuPG5nLXRlbXBsYXRlICNwaXBlVG9vbHRpcD5cbiAgICA8ZGl2IGNsYXNzPVwia2JxLXBpcGUtdG9vbHRpcF9fbmFtZSBrYnEtdGV4dC1jb21wYWN0XCI+e3sgZGF0YS5uYW1lIH19PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImticS1waXBlLXRvb2x0aXBfX3ZhbHVlIGticS10ZXh0LWNvbXBhY3RcIj57eyBzZWxlY3QudHJpZ2dlclZhbHVlIH19PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1tdWx0aS1zZWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ZpbHRlci1iYXIvcGlwZXMvcGlwZS1tdWx0aS1zZWxlY3QudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ZpbHRlci1iYXIvcGlwZXMvcGlwZS1tdWx0aS1zZWxlY3QuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUEwQixNQUFNLHlCQUF5QixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFP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QUdOLFNBQVMsdUVDekUzQixzMkZBaUZBLGsySkRyQ1EsV0FBVyxzWkFDWCxlQUFlLCtOQUNmLGdCQUFnQiw4QkFDaEIsZUFBZSxrbENBQ2YsT0FBTyxvRkFDUCxZQUFZLG9GQUNaLGNBQWMsd05BQ2QsYUFBYSxpRkFDYixjQUFjLCtCQUNkLHFCQUFxQixpSEFDckIsZ0JBQWdCLG1KQUNoQixrQkFBa0IsNjNCQUNsQixPQUFPLGtHQUNQLGNBQWMsZ1BBQ2QsbUJBQW1CLDZNQUNuQixTQUFTLDZDQUNULHVCQUF1Qjs7NEZBR2xCLDJCQUEyQjtrQkFqQ3ZDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsV0FBVzs0QkFDcEIsV0FBVyxFQUFFLElBQUk7eUJBQ3BCO3FCQUNKLFdBQ1E7d0JBQ0wsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsU0FBUzt3QkFDVCx1QkFBdUI7cUJBQzFCOzhCQVNxQixNQUFNO3NCQUEzQixTQUFTO3VCQUFDLFNBQVM7Z0JBR0ssT0FBTztzQkFBL0IsWUFBWTt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEticUJhZGdlTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEticUJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgS2JxT3B0aW9uLCBLYnFQc2V1ZG9DaGVja2JveE1vZHVsZSwgS2JxUHNldWRvQ2hlY2tib3hTdGF0ZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURpdmlkZXJNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZGl2aWRlcic7XG5pbXBvcnQgeyBLYnFGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBLYnFJY29uIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxSW5wdXRNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaW5wdXQnO1xuaW1wb3J0IHsgS2JxU2VsZWN0LCBLYnFTZWxlY3RNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvc2VsZWN0JztcbmltcG9ydCB7IEticVRpdGxlTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3RpdGxlJztcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgS2JxU2VsZWN0VmFsdWUgfSBmcm9tICcuLi9maWx0ZXItYmFyLnR5cGVzJztcbmltcG9ydCB7IEticUJhc2VQaXBlIH0gZnJvbSAnLi9iYXNlLXBpcGUnO1xuaW1wb3J0IHsgS2JxUGlwZUJ1dHRvbiB9IGZyb20gJy4vcGlwZS1idXR0b24nO1xuaW1wb3J0IHsgS2JxUGlwZVN0YXRlIH0gZnJvbSAnLi9waXBlLXN0YXRlJztcbmltcG9ydCB7IEticVBpcGVUaXRsZURpcmVjdGl2ZSB9IGZyb20gJy4vcGlwZS10aXRsZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdrYnEtcGlwZS1tdWx0aS1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAncGlwZS1tdWx0aS1zZWxlY3QuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2Jhc2UtcGlwZS5zY3NzJywgJ3BpcGUtbXVsdGlzZWxlY3Quc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEticUJhc2VQaXBlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IHRoaXNcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgS2JxQnV0dG9uTW9kdWxlLFxuICAgICAgICBLYnFEaXZpZGVyTW9kdWxlLFxuICAgICAgICBLYnFTZWxlY3RNb2R1bGUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIEticVBpcGVTdGF0ZSxcbiAgICAgICAgS2JxQmFkZ2VNb2R1bGUsXG4gICAgICAgIEticVBpcGVCdXR0b24sXG4gICAgICAgIEticVRpdGxlTW9kdWxlLFxuICAgICAgICBLYnFQaXBlVGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIEticUZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgS2JxSWNvbixcbiAgICAgICAgS2JxSW5wdXRNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgS2JxUHNldWRvQ2hlY2tib3hNb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEticVBpcGVNdWx0aVNlbGVjdENvbXBvbmVudCBleHRlbmRzIEticUJhc2VQaXBlPEticVNlbGVjdFZhbHVlW10+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcbiAgICAvKiogY29udHJvbCBmb3Igc2VhcmNoIG9wdGlvbnMgKi9cbiAgICBzZWFyY2hDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gICAgLyoqIGZpbHRlcmVkIGJ5IHNlYXJjaCBvcHRpb25zICovXG4gICAgZmlsdGVyZWRPcHRpb25zOiBPYnNlcnZhYmxlPGFueVtdPjtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgQFZpZXdDaGlsZChLYnFTZWxlY3QpIHNlbGVjdDogS2JxU2VsZWN0O1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBAVmlld0NoaWxkcmVuKEticU9wdGlvbikgb3B0aW9uczogUXVlcnlMaXN0PEticU9wdGlvbj47XG5cbiAgICAvKiogc2VsZWN0ZWQgdmFsdWUgKi9cbiAgICBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcGlwZSBpcyBlbXB0eS4gKi9cbiAgICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRhdGEudmFsdWU/Lmxlbmd0aCB8fCB0aGlzLmFsbE9wdGlvbnNTZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKiogc3RhdGUgZm9yIGNoZWNrYm94ICdzZWxlY3QgYWxsJy4gKi9cbiAgICBnZXQgY2hlY2tib3hTdGF0ZSgpOiBLYnFQc2V1ZG9DaGVja2JveFN0YXRlIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMpIHJldHVybiAndW5jaGVja2VkJztcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3Quc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLnZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiAnY2hlY2tlZCc7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc2VsZWN0LnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuICd1bmNoZWNrZWQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICdpbmRldGVybWluYXRlJztcbiAgICB9XG5cbiAgICAvKiogdHJ1ZSBpZiBhbGwgdmlzaWJsZSBvcHRpb25zIHNlbGVjdGVkICovXG4gICAgZ2V0IGFsbFZpc2libGVPcHRpb25zU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVPcHRpb25zPy5ldmVyeSgob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKiB0cnVlIGlmIGFsbCBvcHRpb25zIHNlbGVjdGVkICovXG4gICAgZ2V0IGFsbE9wdGlvbnNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0Py50cmlnZ2VyVmFsdWVzLmxlbmd0aCA9PT0gdGhpcy52YWx1ZXM/Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCB2aXNpYmxlT3B0aW9ucygpOiBLYnFPcHRpb25bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0YWJsZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3Rpb25BbGxJblByb2dyZXNzID0gZmFsc2U7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IG1lcmdlKFxuICAgICAgICAgICAgb2YodGhpcy52YWx1ZXMpLFxuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKG1hcCgodmFsdWUpID0+IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKHZhbHVlKSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0LmNsb3NlZFN0cmVhbVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZmlsdGVyQmFyPy5vbkNsb3NlUGlwZS5uZXh0KHRoaXMuZGF0YSkpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25TZWxlY3QoaXRlbTogS2JxU2VsZWN0VmFsdWVbXSkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25BbGxJblByb2dyZXNzKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5kYXRhLnZhbHVlID0gaXRlbTtcbiAgICAgICAgdGhpcy5maWx0ZXJCYXI/Lm9uQ2hhbmdlUGlwZS5lbWl0KHRoaXMuZGF0YSk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uQ2xlYXIoKSB7XG4gICAgICAgIHRoaXMuZGF0YS52YWx1ZSA9IFtdO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyQmFyPy5vbkNoYW5nZVBpcGUuZW1pdCh0aGlzLmRhdGEpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICB0b2dnbGVTZWxlY3Rpb25BbGxCeUVudGVyS2V5KCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhLnNlbGVjdEFsbCAmJiB0aGlzLnNlbGVjdC5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3Rpb25BbGwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgdG9nZ2xlU2VsZWN0aW9uQWxsKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkFsbEluUHJvZ3Jlc3MgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmFsbFZpc2libGVPcHRpb25zU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uZGVzZWxlY3QoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdCgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZGF0YS52YWx1ZSA9IFsuLi50aGlzLnNlbGVjdC52YWx1ZV07XG4gICAgICAgIHRoaXMuZmlsdGVyQmFyPy5vbkNoYW5nZVBpcGUuZW1pdCh0aGlzLmRhdGEpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIENvbXBhcmF0b3Igb2Ygc2VsZWN0ZWQgb3B0aW9ucyAqL1xuICAgIGNvbXBhcmVCeVZhbHVlID0gKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuID0+IG8xPy5pZCA9PT0gbzI/LmlkO1xuXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsT3B0aW9uc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbkFsbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIG9wZW5zIHNlbGVjdCAqL1xuICAgIG92ZXJyaWRlIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Lm9wZW4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbHRlcmVkT3B0aW9ucyh2YWx1ZTogc3RyaW5nKTogS2JxU2VsZWN0VmFsdWVbXSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgPyB0aGlzLnZhbHVlcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpKVxuICAgICAgICAgICAgOiB0aGlzLnZhbHVlcztcbiAgICB9XG59XG4iLCI8a2JxLXNlbGVjdFxuICAgICNzZWxlY3Q9XCJrYnFTZWxlY3RcIlxuICAgIG11bHRpcGxlXG4gICAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVCeVZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGF0YS5kaXNhYmxlZFwiXG4gICAgW2ticVBpcGVUaXRsZV09XCJwaXBlVG9vbHRpcFwiXG4gICAgW25nQ2xhc3NdPVwieyAna2JxLWFjdGl2ZSc6IHNlbGVjdC5wYW5lbE9wZW4gfVwiXG4gICAgW3BhbmVsQ2xhc3NdPVwiJ2ticS1waXBlLW11bHRpc2VsZWN0X19wYW5lbCdcIlxuICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdGVkXCJcbiAgICAoY2xvc2VkKT1cIm9uQ2xvc2UoKVwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdCgkZXZlbnQudmFsdWUpXCJcbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGticS1idXR0b25cbiAgICAgICAga2JxLXNlbGVjdC1tYXRjaGVyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkYXRhLmRpc2FibGVkXCJcbiAgICAgICAgW2ticVBpcGVTdGF0ZV09XCJkYXRhXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAna2JxLWFjdGl2ZSc6IHNlbGVjdC5wYW5lbE9wZW4gfVwiXG4gICAgPlxuICAgICAgICA8c3BhbiAja2JxVGl0bGVUZXh0IGNsYXNzPVwia2JxLXBpcGVfX25hbWVcIj57eyBkYXRhLm5hbWUgfX08L3NwYW4+XG4gICAgICAgIEBpZiAoc2VsZWN0LnRyaWdnZXJWYWx1ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICA8c3BhbiAja2JxVGl0bGVUZXh0IGNsYXNzPVwia2JxLXBpcGVfX3ZhbHVlXCIgW2NsYXNzLmticS1waXBlX192YWx1ZV9lbXB0eV09XCIhc2VsZWN0LnRyaWdnZXJWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdC50cmlnZ2VyVmFsdWUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfSBAZWxzZSBpZiAoc2VsZWN0LnRyaWdnZXJWYWx1ZXMubGVuZ3RoID4gMSAmJiAhYWxsT3B0aW9uc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICA8a2JxLWJhZGdlIFtiYWRnZUNvbG9yXT1cIidjb250cmFzdCdcIiBbY29tcGFjdF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAge3sgc2VsZWN0LnRyaWdnZXJWYWx1ZXMubGVuZ3RoIH19XG4gICAgICAgICAgICA8L2ticS1iYWRnZT5cbiAgICAgICAgfVxuICAgIDwvYnV0dG9uPlxuICAgIEBpZiAoZGF0YS5zZWFyY2gpIHtcbiAgICAgICAgPGticS1mb3JtLWZpZWxkIGticUZvcm1GaWVsZFdpdGhvdXRCb3JkZXJzIGticVNlbGVjdFNlYXJjaD5cbiAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLW1hZ25pZnlpbmctZ2xhc3NfMTZcIiBrYnFQcmVmaXg+PC9pPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAga2JxSW5wdXRcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGxvY2FsZURhdGEuc2VhcmNoLnBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInRvZ2dsZVNlbGVjdGlvbkFsbEJ5RW50ZXJLZXkoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGticS1jbGVhbmVyIC8+XG4gICAgICAgIDwva2JxLWZvcm0tZmllbGQ+XG4gICAgfVxuXG4gICAgPGRpdiBrYnEtc2VsZWN0LXNlYXJjaC1lbXB0eS1yZXN1bHQ+e3sgbG9jYWxlRGF0YS5waXBlLmVtcHR5U2VhcmNoUmVzdWx0IH19PC9kaXY+XG5cbiAgICBAaWYgKGRhdGEuc2VsZWN0QWxsICYmICFzZWxlY3QuaXNFbXB0eVNlYXJjaFJlc3VsdCkge1xuICAgICAgICA8a2JxLW9wdGlvblxuICAgICAgICAgICAgW2NsYXNzLmticS1zZWxlY3RlZF09XCJhbGxWaXNpYmxlT3B0aW9uc1NlbGVjdGVkXCJcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb25BbGwoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0b2dnbGVTZWxlY3Rpb25BbGwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxrYnEtcHNldWRvLWNoZWNrYm94IFtzdGF0ZV09XCJjaGVja2JveFN0YXRlXCIgLz5cbiAgICAgICAgICAgIHt7IGxvY2FsZURhdGEucGlwZS5zZWxlY3RBbGwgfX1cbiAgICAgICAgPC9rYnEtb3B0aW9uPlxuICAgIH1cblxuICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRPcHRpb25zIHwgYXN5bmM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgPGticS1vcHRpb24gW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgIEBpZiAoaXNUZW1wbGF0ZVJlZih2YWx1ZVRlbXBsYXRlKSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueSh2YWx1ZVRlbXBsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdCwgb3B0aW9uOiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9rYnEtb3B0aW9uPlxuICAgIH1cbjwva2JxLXNlbGVjdD5cblxuQGlmIChzaG93UmVtb3ZlQnV0dG9uKSB7XG4gICAgPGticS1waXBlLWJ1dHRvbiAvPlxufVxuXG48bmctdGVtcGxhdGUgI3BpcGVUb29sdGlwPlxuICAgIDxkaXYgY2xhc3M9XCJrYnEtcGlwZS10b29sdGlwX19uYW1lIGticS10ZXh0LWNvbXBhY3RcIj57eyBkYXRhLm5hbWUgfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwia2JxLXBpcGUtdG9vbHRpcF9fdmFsdWUga2JxLXRleHQtY29tcGFjdFwiPnt7IHNlbGVjdC50cmlnZ2VyVmFsdWUgfX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=