@koobiq/components 16.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1007) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +6 -0
  3. package/_index.scss +3 -0
  4. package/alert/README.md +0 -0
  5. package/alert/_alert-theme.scss +61 -0
  6. package/alert/alert.component.d.ts +22 -0
  7. package/alert/alert.component.scss +81 -0
  8. package/alert/alert.module.d.ts +10 -0
  9. package/alert/index.d.ts +1 -0
  10. package/alert/public-api.d.ts +2 -0
  11. package/autocomplete/README.md +0 -0
  12. package/autocomplete/_autocomplete-theme.scss +21 -0
  13. package/autocomplete/autocomplete-origin.directive.d.ts +12 -0
  14. package/autocomplete/autocomplete-trigger.directive.d.ts +167 -0
  15. package/autocomplete/autocomplete.component.d.ts +73 -0
  16. package/autocomplete/autocomplete.module.d.ts +12 -0
  17. package/autocomplete/autocomplete.scss +63 -0
  18. package/autocomplete/index.d.ts +1 -0
  19. package/autocomplete/public-api.d.ts +4 -0
  20. package/button/README.md +0 -0
  21. package/button/_button-base.scss +69 -0
  22. package/button/_button-theme.scss +180 -0
  23. package/button/button.component.d.ts +58 -0
  24. package/button/button.module.d.ts +11 -0
  25. package/button/button.scss +59 -0
  26. package/button/index.d.ts +1 -0
  27. package/button/public-api.d.ts +2 -0
  28. package/button-toggle/README.md +0 -0
  29. package/button-toggle/_button-toggle-theme.scss +92 -0
  30. package/button-toggle/button-toggle.component.d.ts +145 -0
  31. package/button-toggle/button-toggle.module.d.ts +10 -0
  32. package/button-toggle/button-toggle.scss +163 -0
  33. package/button-toggle/index.d.ts +1 -0
  34. package/button-toggle/public-api.d.ts +2 -0
  35. package/card/README.md +0 -0
  36. package/card/_card-theme.scss +61 -0
  37. package/card/card.component.d.ts +28 -0
  38. package/card/card.component.scss +40 -0
  39. package/card/card.module.d.ts +10 -0
  40. package/card/index.d.ts +1 -0
  41. package/card/public-api.d.ts +2 -0
  42. package/checkbox/README.md +1 -0
  43. package/checkbox/_checkbox-theme.scss +120 -0
  44. package/checkbox/checkbox-config.d.ts +13 -0
  45. package/checkbox/checkbox-module.d.ts +9 -0
  46. package/checkbox/checkbox-required-validator.d.ts +13 -0
  47. package/checkbox/checkbox.d.ts +133 -0
  48. package/checkbox/checkbox.scss +177 -0
  49. package/checkbox/index.d.ts +1 -0
  50. package/checkbox/public-api.d.ts +4 -0
  51. package/code-block/README.md +32 -0
  52. package/code-block/_code-block-theme.scss +326 -0
  53. package/code-block/actionbar.component.d.ts +22 -0
  54. package/code-block/actionbar.component.scss +27 -0
  55. package/code-block/code-block.component.d.ts +74 -0
  56. package/code-block/code-block.module.d.ts +14 -0
  57. package/code-block/code-block.scss +128 -0
  58. package/code-block/code-block.types.d.ts +16 -0
  59. package/code-block/index.d.ts +1 -0
  60. package/code-block/public-api.d.ts +3 -0
  61. package/core/_index.scss +1 -0
  62. package/core/animation/animation.d.ts +6 -0
  63. package/core/animation/fade-animations.d.ts +2 -0
  64. package/core/animation/index.d.ts +3 -0
  65. package/core/animation/select-animations.d.ts +12 -0
  66. package/core/common-behaviors/color.d.ts +33 -0
  67. package/core/common-behaviors/common-module.d.ts +25 -0
  68. package/core/common-behaviors/constructor.d.ts +9 -0
  69. package/core/common-behaviors/disabled.d.ts +8 -0
  70. package/core/common-behaviors/error-state.d.ts +28 -0
  71. package/core/common-behaviors/index.d.ts +5 -0
  72. package/core/common-behaviors/tabindex.d.ts +8 -0
  73. package/core/datetime/date-adapter.d.ts +12 -0
  74. package/core/datetime/date-formats.d.ts +4 -0
  75. package/core/datetime/index.d.ts +2 -0
  76. package/core/error/error-options.d.ts +14 -0
  77. package/core/form-field/form-field-ref.d.ts +11 -0
  78. package/core/form-field/index.d.ts +1 -0
  79. package/core/formatters/date/formatter.d.ts +9 -0
  80. package/core/formatters/date/formatter.pipe.d.ts +109 -0
  81. package/core/formatters/index.d.ts +11 -0
  82. package/core/formatters/number/formatter.d.ts +37 -0
  83. package/core/forms/_forms-theme.scss +34 -0
  84. package/core/forms/_forms.scss +114 -0
  85. package/core/forms/forms-module.d.ts +7 -0
  86. package/core/forms/forms.directive.d.ts +22 -0
  87. package/core/forms/index.d.ts +2 -0
  88. package/core/highlight/_highlight-theme.scss +8 -0
  89. package/core/highlight/highlight.pipe.d.ts +8 -0
  90. package/core/highlight/index.d.ts +9 -0
  91. package/core/index.d.ts +1 -0
  92. package/core/label/label-options.d.ts +13 -0
  93. package/core/line/line.d.ts +28 -0
  94. package/core/locales/en-US.d.ts +11 -0
  95. package/core/locales/es-LA.d.ts +7 -0
  96. package/core/locales/fa-IR.d.ts +7 -0
  97. package/core/locales/index.d.ts +4 -0
  98. package/core/locales/locale-service.d.ts +63 -0
  99. package/core/locales/locale-service.module.d.ts +6 -0
  100. package/core/locales/pt-BR.d.ts +7 -0
  101. package/core/locales/ru-RU.d.ts +11 -0
  102. package/core/locales/zh-CN.d.ts +7 -0
  103. package/core/option/_optgroup-theme.scss +25 -0
  104. package/core/option/_option-action-theme.scss +41 -0
  105. package/core/option/_option-theme.scss +44 -0
  106. package/core/option/action.d.ts +44 -0
  107. package/core/option/action.scss +28 -0
  108. package/core/option/index.d.ts +4 -0
  109. package/core/option/optgroup.d.ts +16 -0
  110. package/core/option/optgroup.scss +16 -0
  111. package/core/option/option-module.d.ts +11 -0
  112. package/core/option/option.d.ts +116 -0
  113. package/core/option/option.scss +62 -0
  114. package/core/overlay/overlay-position-map.d.ts +34 -0
  115. package/core/pop-up/_pop-up.scss +129 -0
  116. package/core/pop-up/constants.d.ts +30 -0
  117. package/core/pop-up/index.d.ts +3 -0
  118. package/core/pop-up/pop-up-trigger.d.ts +71 -0
  119. package/core/pop-up/pop-up.d.ts +36 -0
  120. package/core/public-api.d.ts +21 -0
  121. package/core/select/constants.d.ts +23 -0
  122. package/core/select/errors.d.ts +19 -0
  123. package/core/select/events.d.ts +1 -0
  124. package/core/select/index.d.ts +3 -0
  125. package/core/selection/constants.d.ts +4 -0
  126. package/core/selection/index.d.ts +3 -0
  127. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +48 -0
  128. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +32 -0
  129. package/core/selection/pseudo-checkbox/pseudo-checkbox.module.d.ts +8 -0
  130. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +77 -0
  131. package/core/services/measure-scrollbar.service.d.ts +11 -0
  132. package/core/styles/_core.scss +11 -0
  133. package/core/styles/_koobiq-theme.scss +153 -0
  134. package/core/styles/_tokens.kbq.import.scss +4 -0
  135. package/core/styles/_tokens.scss +6 -0
  136. package/core/styles/_variables.scss +9 -0
  137. package/core/styles/common/_animation.scss +35 -0
  138. package/core/styles/common/_button.scss +10 -0
  139. package/core/styles/common/_clearfix.scss +13 -0
  140. package/core/styles/common/_groups.scss +119 -0
  141. package/core/styles/common/_index.scss +13 -0
  142. package/core/styles/common/_input.scss +28 -0
  143. package/core/styles/common/_layout.scss +8 -0
  144. package/core/styles/common/_list.scss +46 -0
  145. package/core/styles/common/_overlay.scss +173 -0
  146. package/core/styles/common/_popup.scss +11 -0
  147. package/core/styles/common/_rtl.scss +33 -0
  148. package/core/styles/common/_size.scss +8 -0
  149. package/core/styles/common/_vendor-prefixes.scss +24 -0
  150. package/core/styles/common/_visually-hidden.scss +36 -0
  151. package/core/styles/functions/_index.scss +3 -0
  152. package/core/styles/functions/_number.scss +65 -0
  153. package/core/styles/functions/_string.scss +19 -0
  154. package/core/styles/functions/_timing.scss +30 -0
  155. package/core/styles/theming/_badges-theme.scss +118 -0
  156. package/core/styles/theming/_badges.scss +57 -0
  157. package/core/styles/theming/_components-theming.scss +1218 -0
  158. package/core/styles/theming/_index.scss +2 -0
  159. package/core/styles/theming/_scrollbars-theme.scss +77 -0
  160. package/core/styles/theming/_theming.scss +144 -0
  161. package/core/styles/theming/prebuilt/light-theme.scss +20 -0
  162. package/core/styles/typography/_index.scss +2 -0
  163. package/core/styles/typography/_typography-utils.scss +78 -0
  164. package/core/styles/typography/_typography.scss +191 -0
  165. package/core/styles/visual/_body.scss +35 -0
  166. package/core/styles/visual/_index.scss +3 -0
  167. package/core/styles/visual/_layout-media.scss +7 -0
  168. package/core/styles/visual/_layout.scss +527 -0
  169. package/core/title/index.d.ts +1 -0
  170. package/core/title/title-text-ref.d.ts +6 -0
  171. package/core/utils/data-size/config.d.ts +20 -0
  172. package/core/utils/data-size/data-size.pipe.d.ts +13 -0
  173. package/core/utils/data-size/index.d.ts +3 -0
  174. package/core/utils/data-size/size.d.ts +16 -0
  175. package/core/utils/index.d.ts +1 -0
  176. package/core/utils/public-api.d.ts +2 -0
  177. package/core/utils/utils.d.ts +2 -0
  178. package/core/validation/index.d.ts +1 -0
  179. package/core/validation/validation.d.ts +7 -0
  180. package/core/version.d.ts +2 -0
  181. package/datepicker/README.md +0 -0
  182. package/datepicker/_datepicker-theme.scss +101 -0
  183. package/datepicker/calendar-body.component.d.ts +55 -0
  184. package/datepicker/calendar-body.scss +61 -0
  185. package/datepicker/calendar-header.component.d.ts +45 -0
  186. package/datepicker/calendar-header.scss +75 -0
  187. package/datepicker/calendar.component.d.ts +81 -0
  188. package/datepicker/calendar.scss +68 -0
  189. package/datepicker/datepicker-animations.d.ts +9 -0
  190. package/datepicker/datepicker-content.scss +33 -0
  191. package/datepicker/datepicker-errors.d.ts +2 -0
  192. package/datepicker/datepicker-input.directive.d.ts +180 -0
  193. package/datepicker/datepicker-input.scss +15 -0
  194. package/datepicker/datepicker-intl.d.ts +32 -0
  195. package/datepicker/datepicker-module.d.ts +20 -0
  196. package/datepicker/datepicker-toggle.component.d.ts +35 -0
  197. package/datepicker/datepicker-toggle.scss +41 -0
  198. package/datepicker/datepicker.component.d.ts +148 -0
  199. package/datepicker/index.d.ts +1 -0
  200. package/datepicker/month-view.component.d.ts +74 -0
  201. package/datepicker/public-api.d.ts +10 -0
  202. package/divider/README.md +0 -0
  203. package/divider/_divider-theme.scss +10 -0
  204. package/divider/divider.component.d.ts +14 -0
  205. package/divider/divider.module.d.ts +8 -0
  206. package/divider/divider.scss +47 -0
  207. package/divider/index.d.ts +1 -0
  208. package/divider/public-api.d.ts +2 -0
  209. package/dl/README.md +0 -0
  210. package/dl/_dl-theme.scss +86 -0
  211. package/dl/dl.component.d.ts +27 -0
  212. package/dl/dl.module.d.ts +10 -0
  213. package/dl/dl.scss +99 -0
  214. package/dl/index.d.ts +1 -0
  215. package/dl/public-api.d.ts +2 -0
  216. package/dropdown/_dropdown-theme.scss +85 -0
  217. package/dropdown/dropdown-animations.d.ts +11 -0
  218. package/dropdown/dropdown-content.directive.d.ts +32 -0
  219. package/dropdown/dropdown-errors.d.ts +17 -0
  220. package/dropdown/dropdown-item.component.d.ts +52 -0
  221. package/dropdown/dropdown-item.scss +82 -0
  222. package/dropdown/dropdown-trigger.directive.d.ts +136 -0
  223. package/dropdown/dropdown.component.d.ts +121 -0
  224. package/dropdown/dropdown.module.d.ts +13 -0
  225. package/dropdown/dropdown.scss +79 -0
  226. package/dropdown/dropdown.types.d.ts +53 -0
  227. package/dropdown/index.d.ts +1 -0
  228. package/dropdown/public-api.d.ts +8 -0
  229. package/ellipsis-center/ellipsis-center.directive.d.ts +27 -0
  230. package/ellipsis-center/index.d.ts +1 -0
  231. package/ellipsis-center/public-api.d.ts +1 -0
  232. package/esm2022/alert/alert.component.mjs +67 -0
  233. package/esm2022/alert/alert.module.mjs +44 -0
  234. package/esm2022/alert/index.mjs +2 -0
  235. package/esm2022/alert/koobiq-components-alert.mjs +5 -0
  236. package/esm2022/alert/public-api.mjs +3 -0
  237. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +21 -0
  238. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +552 -0
  239. package/esm2022/autocomplete/autocomplete.component.mjs +153 -0
  240. package/esm2022/autocomplete/autocomplete.module.mjs +34 -0
  241. package/esm2022/autocomplete/index.mjs +2 -0
  242. package/esm2022/autocomplete/koobiq-components-autocomplete.mjs +5 -0
  243. package/esm2022/autocomplete/public-api.mjs +5 -0
  244. package/esm2022/button/button.component.mjs +164 -0
  245. package/esm2022/button/button.module.mjs +40 -0
  246. package/esm2022/button/index.mjs +2 -0
  247. package/esm2022/button/koobiq-components-button.mjs +5 -0
  248. package/esm2022/button/public-api.mjs +3 -0
  249. package/esm2022/button-toggle/button-toggle.component.mjs +381 -0
  250. package/esm2022/button-toggle/button-toggle.module.mjs +20 -0
  251. package/esm2022/button-toggle/index.mjs +2 -0
  252. package/esm2022/button-toggle/koobiq-components-button-toggle.mjs +5 -0
  253. package/esm2022/button-toggle/public-api.mjs +3 -0
  254. package/esm2022/card/card.component.mjs +80 -0
  255. package/esm2022/card/card.module.mjs +28 -0
  256. package/esm2022/card/index.mjs +2 -0
  257. package/esm2022/card/koobiq-components-card.mjs +5 -0
  258. package/esm2022/card/public-api.mjs +3 -0
  259. package/esm2022/checkbox/checkbox-config.mjs +6 -0
  260. package/esm2022/checkbox/checkbox-module.mjs +19 -0
  261. package/esm2022/checkbox/checkbox-required-validator.mjs +27 -0
  262. package/esm2022/checkbox/checkbox.mjs +304 -0
  263. package/esm2022/checkbox/index.mjs +2 -0
  264. package/esm2022/checkbox/koobiq-components-checkbox.mjs +5 -0
  265. package/esm2022/checkbox/public-api.mjs +5 -0
  266. package/esm2022/code-block/actionbar.component.mjs +67 -0
  267. package/esm2022/code-block/code-block.component.mjs +157 -0
  268. package/esm2022/code-block/code-block.module.mjs +60 -0
  269. package/esm2022/code-block/code-block.types.mjs +2 -0
  270. package/esm2022/code-block/index.mjs +2 -0
  271. package/esm2022/code-block/koobiq-components-code-block.mjs +5 -0
  272. package/esm2022/code-block/public-api.mjs +4 -0
  273. package/esm2022/core/animation/animation.mjs +8 -0
  274. package/esm2022/core/animation/fade-animations.mjs +9 -0
  275. package/esm2022/core/animation/index.mjs +4 -0
  276. package/esm2022/core/animation/select-animations.mjs +45 -0
  277. package/esm2022/core/common-behaviors/color.mjs +45 -0
  278. package/esm2022/core/common-behaviors/common-module.mjs +83 -0
  279. package/esm2022/core/common-behaviors/constructor.mjs +2 -0
  280. package/esm2022/core/common-behaviors/disabled.mjs +17 -0
  281. package/esm2022/core/common-behaviors/error-state.mjs +21 -0
  282. package/esm2022/core/common-behaviors/index.mjs +6 -0
  283. package/esm2022/core/common-behaviors/tabindex.mjs +18 -0
  284. package/esm2022/core/datetime/date-adapter.mjs +15 -0
  285. package/esm2022/core/datetime/date-formats.mjs +3 -0
  286. package/esm2022/core/datetime/index.mjs +3 -0
  287. package/esm2022/core/error/error-options.mjs +26 -0
  288. package/esm2022/core/form-field/form-field-ref.mjs +8 -0
  289. package/esm2022/core/form-field/index.mjs +2 -0
  290. package/esm2022/core/formatters/date/formatter.mjs +21 -0
  291. package/esm2022/core/formatters/date/formatter.pipe.mjs +220 -0
  292. package/esm2022/core/formatters/index.mjs +78 -0
  293. package/esm2022/core/formatters/number/formatter.mjs +129 -0
  294. package/esm2022/core/forms/forms-module.mjs +24 -0
  295. package/esm2022/core/forms/forms.directive.mjs +66 -0
  296. package/esm2022/core/forms/index.mjs +3 -0
  297. package/esm2022/core/highlight/highlight.pipe.mjs +23 -0
  298. package/esm2022/core/highlight/index.mjs +19 -0
  299. package/esm2022/core/index.mjs +2 -0
  300. package/esm2022/core/koobiq-components-core.mjs +5 -0
  301. package/esm2022/core/label/label-options.mjs +4 -0
  302. package/esm2022/core/line/line.mjs +70 -0
  303. package/esm2022/core/locales/en-US.mjs +10 -0
  304. package/esm2022/core/locales/es-LA.mjs +6 -0
  305. package/esm2022/core/locales/fa-IR.mjs +6 -0
  306. package/esm2022/core/locales/index.mjs +5 -0
  307. package/esm2022/core/locales/locale-service.mjs +70 -0
  308. package/esm2022/core/locales/locale-service.module.mjs +19 -0
  309. package/esm2022/core/locales/pt-BR.mjs +6 -0
  310. package/esm2022/core/locales/ru-RU.mjs +10 -0
  311. package/esm2022/core/locales/zh-CN.mjs +6 -0
  312. package/esm2022/core/option/action.mjs +122 -0
  313. package/esm2022/core/option/index.mjs +5 -0
  314. package/esm2022/core/option/optgroup.mjs +31 -0
  315. package/esm2022/core/option/option-module.mjs +21 -0
  316. package/esm2022/core/option/option.mjs +262 -0
  317. package/esm2022/core/overlay/overlay-position-map.mjs +244 -0
  318. package/esm2022/core/pop-up/constants.mjs +36 -0
  319. package/esm2022/core/pop-up/index.mjs +4 -0
  320. package/esm2022/core/pop-up/pop-up-trigger.mjs +247 -0
  321. package/esm2022/core/pop-up/pop-up.mjs +94 -0
  322. package/esm2022/core/public-api.mjs +22 -0
  323. package/esm2022/core/select/constants.mjs +27 -0
  324. package/esm2022/core/select/errors.mjs +26 -0
  325. package/esm2022/core/select/events.mjs +2 -0
  326. package/esm2022/core/select/index.mjs +4 -0
  327. package/esm2022/core/selection/constants.mjs +6 -0
  328. package/esm2022/core/selection/index.mjs +4 -0
  329. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +52 -0
  330. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +18 -0
  331. package/esm2022/core/services/measure-scrollbar.service.mjs +48 -0
  332. package/esm2022/core/title/index.mjs +2 -0
  333. package/esm2022/core/title/title-text-ref.mjs +3 -0
  334. package/esm2022/core/utils/data-size/config.mjs +22 -0
  335. package/esm2022/core/utils/data-size/data-size.pipe.mjs +32 -0
  336. package/esm2022/core/utils/data-size/index.mjs +4 -0
  337. package/esm2022/core/utils/data-size/size.mjs +50 -0
  338. package/esm2022/core/utils/index.mjs +2 -0
  339. package/esm2022/core/utils/public-api.mjs +3 -0
  340. package/esm2022/core/utils/utils.mjs +5 -0
  341. package/esm2022/core/validation/index.mjs +2 -0
  342. package/esm2022/core/validation/validation.mjs +5 -0
  343. package/esm2022/core/version.mjs +3 -0
  344. package/esm2022/datepicker/calendar-body.component.mjs +87 -0
  345. package/esm2022/datepicker/calendar-header.component.mjs +134 -0
  346. package/esm2022/datepicker/calendar.component.mjs +175 -0
  347. package/esm2022/datepicker/datepicker-animations.mjs +32 -0
  348. package/esm2022/datepicker/datepicker-errors.mjs +6 -0
  349. package/esm2022/datepicker/datepicker-input.directive.mjs +954 -0
  350. package/esm2022/datepicker/datepicker-intl.mjs +40 -0
  351. package/esm2022/datepicker/datepicker-module.mjs +97 -0
  352. package/esm2022/datepicker/datepicker-toggle.component.mjs +86 -0
  353. package/esm2022/datepicker/datepicker.component.mjs +393 -0
  354. package/esm2022/datepicker/index.mjs +2 -0
  355. package/esm2022/datepicker/koobiq-components-datepicker.mjs +5 -0
  356. package/esm2022/datepicker/month-view.component.mjs +158 -0
  357. package/esm2022/datepicker/public-api.mjs +11 -0
  358. package/esm2022/divider/divider.component.mjs +49 -0
  359. package/esm2022/divider/divider.module.mjs +18 -0
  360. package/esm2022/divider/index.mjs +2 -0
  361. package/esm2022/divider/koobiq-components-divider.mjs +5 -0
  362. package/esm2022/divider/public-api.mjs +3 -0
  363. package/esm2022/dl/dl.component.mjs +82 -0
  364. package/esm2022/dl/dl.module.mjs +40 -0
  365. package/esm2022/dl/index.mjs +2 -0
  366. package/esm2022/dl/koobiq-components-dl.mjs +5 -0
  367. package/esm2022/dl/public-api.mjs +3 -0
  368. package/esm2022/dropdown/dropdown-animations.mjs +41 -0
  369. package/esm2022/dropdown/dropdown-content.directive.mjs +64 -0
  370. package/esm2022/dropdown/dropdown-errors.mjs +29 -0
  371. package/esm2022/dropdown/dropdown-item.component.mjs +146 -0
  372. package/esm2022/dropdown/dropdown-trigger.directive.mjs +489 -0
  373. package/esm2022/dropdown/dropdown.component.mjs +292 -0
  374. package/esm2022/dropdown/dropdown.module.mjs +48 -0
  375. package/esm2022/dropdown/dropdown.types.mjs +24 -0
  376. package/esm2022/dropdown/index.mjs +2 -0
  377. package/esm2022/dropdown/koobiq-components-dropdown.mjs +5 -0
  378. package/esm2022/dropdown/public-api.mjs +9 -0
  379. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +106 -0
  380. package/esm2022/ellipsis-center/index.mjs +2 -0
  381. package/esm2022/ellipsis-center/koobiq-components-ellipsis-center.mjs +5 -0
  382. package/esm2022/ellipsis-center/public-api.mjs +2 -0
  383. package/esm2022/file-upload/file-drop.mjs +43 -0
  384. package/esm2022/file-upload/file-upload.mjs +4 -0
  385. package/esm2022/file-upload/file-upload.module.mjs +66 -0
  386. package/esm2022/file-upload/index.mjs +2 -0
  387. package/esm2022/file-upload/koobiq-components-file-upload.mjs +5 -0
  388. package/esm2022/file-upload/multiple-file-upload.component.mjs +161 -0
  389. package/esm2022/file-upload/public-api.mjs +6 -0
  390. package/esm2022/file-upload/single-file-upload.component.mjs +130 -0
  391. package/esm2022/form-field/cleaner.mjs +14 -0
  392. package/esm2022/form-field/form-field-control.mjs +5 -0
  393. package/esm2022/form-field/form-field-errors.mjs +7 -0
  394. package/esm2022/form-field/form-field.mjs +276 -0
  395. package/esm2022/form-field/form-field.module.mjs +71 -0
  396. package/esm2022/form-field/hint.mjs +34 -0
  397. package/esm2022/form-field/index.mjs +2 -0
  398. package/esm2022/form-field/koobiq-components-form-field.mjs +5 -0
  399. package/esm2022/form-field/password-hint.mjs +144 -0
  400. package/esm2022/form-field/password-toggle.mjs +64 -0
  401. package/esm2022/form-field/prefix.mjs +13 -0
  402. package/esm2022/form-field/public-api.mjs +13 -0
  403. package/esm2022/form-field/stepper.mjs +71 -0
  404. package/esm2022/form-field/suffix.mjs +13 -0
  405. package/esm2022/form-field/validate.directive.mjs +158 -0
  406. package/esm2022/icon/icon.component.mjs +145 -0
  407. package/esm2022/icon/icon.module.mjs +40 -0
  408. package/esm2022/icon/index.mjs +2 -0
  409. package/esm2022/icon/koobiq-components-icon.mjs +5 -0
  410. package/esm2022/icon/public-api.mjs +3 -0
  411. package/esm2022/index.mjs +2 -0
  412. package/esm2022/input/index.mjs +2 -0
  413. package/esm2022/input/input-errors.mjs +4 -0
  414. package/esm2022/input/input-number-validators.mjs +88 -0
  415. package/esm2022/input/input-number.mjs +168 -0
  416. package/esm2022/input/input-password.mjs +233 -0
  417. package/esm2022/input/input-value-accessor.mjs +3 -0
  418. package/esm2022/input/input.mjs +297 -0
  419. package/esm2022/input/input.module.mjs +63 -0
  420. package/esm2022/input/koobiq-components-input.mjs +5 -0
  421. package/esm2022/input/public-api.mjs +7 -0
  422. package/esm2022/koobiq-components.mjs +5 -0
  423. package/esm2022/link/index.mjs +2 -0
  424. package/esm2022/link/koobiq-components-link.mjs +5 -0
  425. package/esm2022/link/link.component.mjs +132 -0
  426. package/esm2022/link/link.module.mjs +24 -0
  427. package/esm2022/link/public-api.mjs +3 -0
  428. package/esm2022/list/index.mjs +2 -0
  429. package/esm2022/list/koobiq-components-list.mjs +5 -0
  430. package/esm2022/list/list-selection.component.mjs +705 -0
  431. package/esm2022/list/list.component.mjs +44 -0
  432. package/esm2022/list/list.module.mjs +53 -0
  433. package/esm2022/list/public-api.mjs +4 -0
  434. package/esm2022/loader-overlay/index.mjs +2 -0
  435. package/esm2022/loader-overlay/koobiq-components-loader-overlay.mjs +5 -0
  436. package/esm2022/loader-overlay/loader-overlay.component.mjs +103 -0
  437. package/esm2022/loader-overlay/loader-overlay.module.mjs +48 -0
  438. package/esm2022/loader-overlay/public-api.mjs +3 -0
  439. package/esm2022/markdown/index.mjs +2 -0
  440. package/esm2022/markdown/koobiq-components-markdown.mjs +5 -0
  441. package/esm2022/markdown/markdown.component.mjs +53 -0
  442. package/esm2022/markdown/markdown.module.mjs +23 -0
  443. package/esm2022/markdown/markdown.service.mjs +25 -0
  444. package/esm2022/markdown/markdown.values.mjs +29 -0
  445. package/esm2022/markdown/public-api.mjs +5 -0
  446. package/esm2022/modal/css-unit.pipe.mjs +17 -0
  447. package/esm2022/modal/index.mjs +2 -0
  448. package/esm2022/modal/koobiq-components-modal.mjs +5 -0
  449. package/esm2022/modal/modal-control.service.mjs +85 -0
  450. package/esm2022/modal/modal-ref.class.mjs +8 -0
  451. package/esm2022/modal/modal-util.mjs +17 -0
  452. package/esm2022/modal/modal.component.mjs +509 -0
  453. package/esm2022/modal/modal.directive.mjs +52 -0
  454. package/esm2022/modal/modal.module.mjs +69 -0
  455. package/esm2022/modal/modal.service.mjs +124 -0
  456. package/esm2022/modal/modal.type.mjs +9 -0
  457. package/esm2022/modal/public-api.mjs +7 -0
  458. package/esm2022/navbar/index.mjs +2 -0
  459. package/esm2022/navbar/koobiq-components-navbar.mjs +5 -0
  460. package/esm2022/navbar/navbar-item.component.mjs +605 -0
  461. package/esm2022/navbar/navbar.component.mjs +239 -0
  462. package/esm2022/navbar/navbar.module.mjs +90 -0
  463. package/esm2022/navbar/public-api.mjs +5 -0
  464. package/esm2022/navbar/vertical-navbar.animation.mjs +10 -0
  465. package/esm2022/navbar/vertical-navbar.component.mjs +114 -0
  466. package/esm2022/popover/index.mjs +2 -0
  467. package/esm2022/popover/koobiq-components-popover.mjs +5 -0
  468. package/esm2022/popover/popover-animations.mjs +16 -0
  469. package/esm2022/popover/popover-confirm.component.mjs +108 -0
  470. package/esm2022/popover/popover.component.mjs +266 -0
  471. package/esm2022/popover/popover.module.mjs +29 -0
  472. package/esm2022/popover/public-api.mjs +5 -0
  473. package/esm2022/progress-bar/index.mjs +2 -0
  474. package/esm2022/progress-bar/koobiq-components-progress-bar.mjs +5 -0
  475. package/esm2022/progress-bar/progress-bar.component.mjs +70 -0
  476. package/esm2022/progress-bar/progress-bar.module.mjs +36 -0
  477. package/esm2022/progress-bar/public-api.mjs +3 -0
  478. package/esm2022/progress-spinner/index.mjs +2 -0
  479. package/esm2022/progress-spinner/koobiq-components-progress-spinner.mjs +5 -0
  480. package/esm2022/progress-spinner/progress-spinner.component.mjs +85 -0
  481. package/esm2022/progress-spinner/progress-spinner.module.mjs +36 -0
  482. package/esm2022/progress-spinner/public-api.mjs +3 -0
  483. package/esm2022/public-api.mjs +2 -0
  484. package/esm2022/radio/index.mjs +2 -0
  485. package/esm2022/radio/koobiq-components-radio.mjs +5 -0
  486. package/esm2022/radio/public-api.mjs +3 -0
  487. package/esm2022/radio/radio.component.mjs +460 -0
  488. package/esm2022/radio/radio.module.mjs +20 -0
  489. package/esm2022/select/index.mjs +2 -0
  490. package/esm2022/select/koobiq-components-select.mjs +5 -0
  491. package/esm2022/select/public-api.mjs +4 -0
  492. package/esm2022/select/select-option.directive.mjs +65 -0
  493. package/esm2022/select/select.component.mjs +1146 -0
  494. package/esm2022/select/select.module.mjs +79 -0
  495. package/esm2022/sidebar/index.mjs +2 -0
  496. package/esm2022/sidebar/koobiq-components-sidebar.mjs +5 -0
  497. package/esm2022/sidebar/public-api.mjs +3 -0
  498. package/esm2022/sidebar/sidebar-animations.mjs +23 -0
  499. package/esm2022/sidebar/sidebar.component.mjs +146 -0
  500. package/esm2022/sidebar/sidebar.module.mjs +30 -0
  501. package/esm2022/sidepanel/index.mjs +2 -0
  502. package/esm2022/sidepanel/koobiq-components-sidepanel.mjs +5 -0
  503. package/esm2022/sidepanel/public-api.mjs +7 -0
  504. package/esm2022/sidepanel/sidepanel-animations.mjs +26 -0
  505. package/esm2022/sidepanel/sidepanel-config.mjs +33 -0
  506. package/esm2022/sidepanel/sidepanel-container.component.mjs +110 -0
  507. package/esm2022/sidepanel/sidepanel-directives.mjs +167 -0
  508. package/esm2022/sidepanel/sidepanel-ref.mjs +53 -0
  509. package/esm2022/sidepanel/sidepanel.module.mjs +75 -0
  510. package/esm2022/sidepanel/sidepanel.service.mjs +171 -0
  511. package/esm2022/splitter/index.mjs +2 -0
  512. package/esm2022/splitter/koobiq-components-splitter.mjs +5 -0
  513. package/esm2022/splitter/public-api.mjs +3 -0
  514. package/esm2022/splitter/splitter.component.mjs +482 -0
  515. package/esm2022/splitter/splitter.module.mjs +38 -0
  516. package/esm2022/table/index.mjs +2 -0
  517. package/esm2022/table/koobiq-components-table.mjs +5 -0
  518. package/esm2022/table/public-api.mjs +3 -0
  519. package/esm2022/table/table.component.mjs +13 -0
  520. package/esm2022/table/table.module.mjs +28 -0
  521. package/esm2022/tabs/index.mjs +2 -0
  522. package/esm2022/tabs/koobiq-components-tabs.mjs +5 -0
  523. package/esm2022/tabs/paginated-tab-header.mjs +479 -0
  524. package/esm2022/tabs/public-api.mjs +11 -0
  525. package/esm2022/tabs/tab-body.component.mjs +179 -0
  526. package/esm2022/tabs/tab-content.directive.mjs +15 -0
  527. package/esm2022/tabs/tab-group.component.mjs +349 -0
  528. package/esm2022/tabs/tab-header.component.mjs +67 -0
  529. package/esm2022/tabs/tab-label-wrapper.directive.mjs +78 -0
  530. package/esm2022/tabs/tab-label.directive.mjs +17 -0
  531. package/esm2022/tabs/tab-nav-bar/index.mjs +2 -0
  532. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +111 -0
  533. package/esm2022/tabs/tab.component.mjs +134 -0
  534. package/esm2022/tabs/tabs-animations.mjs +24 -0
  535. package/esm2022/tabs/tabs.module.mjs +106 -0
  536. package/esm2022/tags/index.mjs +2 -0
  537. package/esm2022/tags/koobiq-components-tags.mjs +5 -0
  538. package/esm2022/tags/public-api.mjs +6 -0
  539. package/esm2022/tags/tag-default-options.mjs +4 -0
  540. package/esm2022/tags/tag-input.mjs +248 -0
  541. package/esm2022/tags/tag-list.component.mjs +714 -0
  542. package/esm2022/tags/tag-text-control.mjs +2 -0
  543. package/esm2022/tags/tag.component.mjs +381 -0
  544. package/esm2022/tags/tag.module.mjs +56 -0
  545. package/esm2022/textarea/index.mjs +2 -0
  546. package/esm2022/textarea/koobiq-components-textarea.mjs +5 -0
  547. package/esm2022/textarea/public-api.mjs +3 -0
  548. package/esm2022/textarea/textarea.component.mjs +254 -0
  549. package/esm2022/textarea/textarea.module.mjs +21 -0
  550. package/esm2022/timepicker/index.mjs +2 -0
  551. package/esm2022/timepicker/koobiq-components-timepicker.mjs +5 -0
  552. package/esm2022/timepicker/public-api.mjs +4 -0
  553. package/esm2022/timepicker/timepicker.constants.mjs +25 -0
  554. package/esm2022/timepicker/timepicker.directive.mjs +647 -0
  555. package/esm2022/timepicker/timepicker.module.mjs +32 -0
  556. package/esm2022/timezone/cities-by-filter.pipe.mjs +17 -0
  557. package/esm2022/timezone/index.mjs +2 -0
  558. package/esm2022/timezone/koobiq-components-timezone.mjs +5 -0
  559. package/esm2022/timezone/public-api.mjs +7 -0
  560. package/esm2022/timezone/timezone-option.component.mjs +48 -0
  561. package/esm2022/timezone/timezone-option.directive.mjs +60 -0
  562. package/esm2022/timezone/timezone-select.component.mjs +40 -0
  563. package/esm2022/timezone/timezone.models.mjs +3 -0
  564. package/esm2022/timezone/timezone.module.mjs +75 -0
  565. package/esm2022/timezone/timezone.utils.mjs +79 -0
  566. package/esm2022/timezone/utc-offset.pipe.mjs +17 -0
  567. package/esm2022/title/index.mjs +2 -0
  568. package/esm2022/title/koobiq-components-title.mjs +5 -0
  569. package/esm2022/title/public-api.mjs +3 -0
  570. package/esm2022/title/title.directive.mjs +107 -0
  571. package/esm2022/title/title.module.mjs +18 -0
  572. package/esm2022/toast/index.mjs +2 -0
  573. package/esm2022/toast/koobiq-components-toast.mjs +5 -0
  574. package/esm2022/toast/public-api.mjs +6 -0
  575. package/esm2022/toast/toast-animations.mjs +9 -0
  576. package/esm2022/toast/toast-container.component.mjs +44 -0
  577. package/esm2022/toast/toast.component.mjs +92 -0
  578. package/esm2022/toast/toast.module.mjs +42 -0
  579. package/esm2022/toast/toast.service.mjs +188 -0
  580. package/esm2022/toast/toast.type.mjs +15 -0
  581. package/esm2022/toggle/index.mjs +2 -0
  582. package/esm2022/toggle/koobiq-components-toggle.mjs +5 -0
  583. package/esm2022/toggle/public-api.mjs +3 -0
  584. package/esm2022/toggle/toggle.component.mjs +160 -0
  585. package/esm2022/toggle/toggle.module.mjs +20 -0
  586. package/esm2022/tooltip/index.mjs +2 -0
  587. package/esm2022/tooltip/koobiq-components-tooltip.mjs +5 -0
  588. package/esm2022/tooltip/public-api.mjs +3 -0
  589. package/esm2022/tooltip/tooltip.animations.mjs +19 -0
  590. package/esm2022/tooltip/tooltip.component.mjs +308 -0
  591. package/esm2022/tooltip/tooltip.module.mjs +42 -0
  592. package/esm2022/tree/control/base-tree-control.mjs +60 -0
  593. package/esm2022/tree/control/flat-tree-control.mjs +130 -0
  594. package/esm2022/tree/control/nested-tree-control.mjs +41 -0
  595. package/esm2022/tree/control/tree-control.mjs +2 -0
  596. package/esm2022/tree/data-source/flat-data-source.mjs +162 -0
  597. package/esm2022/tree/data-source/nested-data-source.mjs +30 -0
  598. package/esm2022/tree/index.mjs +2 -0
  599. package/esm2022/tree/koobiq-components-tree.mjs +5 -0
  600. package/esm2022/tree/node.mjs +31 -0
  601. package/esm2022/tree/outlet.mjs +15 -0
  602. package/esm2022/tree/padding.directive.mjs +113 -0
  603. package/esm2022/tree/public-api.mjs +16 -0
  604. package/esm2022/tree/toggle.mjs +81 -0
  605. package/esm2022/tree/tree-base.mjs +243 -0
  606. package/esm2022/tree/tree-errors.mjs +36 -0
  607. package/esm2022/tree/tree-option.component.mjs +299 -0
  608. package/esm2022/tree/tree-selection.component.mjs +557 -0
  609. package/esm2022/tree/tree.mjs +15 -0
  610. package/esm2022/tree/tree.module.mjs +57 -0
  611. package/esm2022/tree-select/index.mjs +2 -0
  612. package/esm2022/tree-select/koobiq-components-tree-select.mjs +5 -0
  613. package/esm2022/tree-select/public-api.mjs +3 -0
  614. package/esm2022/tree-select/tree-select.component.mjs +936 -0
  615. package/esm2022/tree-select/tree-select.module.mjs +45 -0
  616. package/fesm2022/koobiq-components-alert.mjs +115 -0
  617. package/fesm2022/koobiq-components-alert.mjs.map +1 -0
  618. package/fesm2022/koobiq-components-autocomplete.mjs +748 -0
  619. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -0
  620. package/fesm2022/koobiq-components-button-toggle.mjs +403 -0
  621. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -0
  622. package/fesm2022/koobiq-components-button.mjs +207 -0
  623. package/fesm2022/koobiq-components-button.mjs.map +1 -0
  624. package/fesm2022/koobiq-components-card.mjs +111 -0
  625. package/fesm2022/koobiq-components-card.mjs.map +1 -0
  626. package/fesm2022/koobiq-components-checkbox.mjs +353 -0
  627. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -0
  628. package/fesm2022/koobiq-components-code-block.mjs +278 -0
  629. package/fesm2022/koobiq-components-code-block.mjs.map +1 -0
  630. package/fesm2022/koobiq-components-core.mjs +2338 -0
  631. package/fesm2022/koobiq-components-core.mjs.map +1 -0
  632. package/fesm2022/koobiq-components-datepicker.mjs +2101 -0
  633. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -0
  634. package/fesm2022/koobiq-components-divider.mjs +71 -0
  635. package/fesm2022/koobiq-components-divider.mjs.map +1 -0
  636. package/fesm2022/koobiq-components-dl.mjs +126 -0
  637. package/fesm2022/koobiq-components-dl.mjs.map +1 -0
  638. package/fesm2022/koobiq-components-dropdown.mjs +1102 -0
  639. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -0
  640. package/fesm2022/koobiq-components-ellipsis-center.mjs +111 -0
  641. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -0
  642. package/fesm2022/koobiq-components-file-upload.mjs +388 -0
  643. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -0
  644. package/fesm2022/koobiq-components-form-field.mjs +825 -0
  645. package/fesm2022/koobiq-components-form-field.mjs.map +1 -0
  646. package/fesm2022/koobiq-components-icon.mjs +188 -0
  647. package/fesm2022/koobiq-components-icon.mjs.map +1 -0
  648. package/fesm2022/koobiq-components-input.mjs +831 -0
  649. package/fesm2022/koobiq-components-input.mjs.map +1 -0
  650. package/fesm2022/koobiq-components-link.mjs +159 -0
  651. package/fesm2022/koobiq-components-link.mjs.map +1 -0
  652. package/fesm2022/koobiq-components-list.mjs +800 -0
  653. package/fesm2022/koobiq-components-list.mjs.map +1 -0
  654. package/fesm2022/koobiq-components-loader-overlay.mjs +155 -0
  655. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -0
  656. package/fesm2022/koobiq-components-markdown.mjs +127 -0
  657. package/fesm2022/koobiq-components-markdown.mjs.map +1 -0
  658. package/fesm2022/koobiq-components-modal.mjs +868 -0
  659. package/fesm2022/koobiq-components-modal.mjs.map +1 -0
  660. package/fesm2022/koobiq-components-navbar.mjs +1037 -0
  661. package/fesm2022/koobiq-components-navbar.mjs.map +1 -0
  662. package/fesm2022/koobiq-components-popover.mjs +407 -0
  663. package/fesm2022/koobiq-components-popover.mjs.map +1 -0
  664. package/fesm2022/koobiq-components-progress-bar.mjs +110 -0
  665. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -0
  666. package/fesm2022/koobiq-components-progress-spinner.mjs +125 -0
  667. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -0
  668. package/fesm2022/koobiq-components-radio.mjs +481 -0
  669. package/fesm2022/koobiq-components-radio.mjs.map +1 -0
  670. package/fesm2022/koobiq-components-select.mjs +1278 -0
  671. package/fesm2022/koobiq-components-select.mjs.map +1 -0
  672. package/fesm2022/koobiq-components-sidebar.mjs +202 -0
  673. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -0
  674. package/fesm2022/koobiq-components-sidepanel.mjs +613 -0
  675. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -0
  676. package/fesm2022/koobiq-components-splitter.mjs +524 -0
  677. package/fesm2022/koobiq-components-splitter.mjs.map +1 -0
  678. package/fesm2022/koobiq-components-table.mjs +45 -0
  679. package/fesm2022/koobiq-components-table.mjs.map +1 -0
  680. package/fesm2022/koobiq-components-tabs.mjs +1499 -0
  681. package/fesm2022/koobiq-components-tabs.mjs.map +1 -0
  682. package/fesm2022/koobiq-components-tags.mjs +1383 -0
  683. package/fesm2022/koobiq-components-tags.mjs.map +1 -0
  684. package/fesm2022/koobiq-components-textarea.mjs +277 -0
  685. package/fesm2022/koobiq-components-textarea.mjs.map +1 -0
  686. package/fesm2022/koobiq-components-timepicker.mjs +706 -0
  687. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -0
  688. package/fesm2022/koobiq-components-timezone.mjs +314 -0
  689. package/fesm2022/koobiq-components-timezone.mjs.map +1 -0
  690. package/fesm2022/koobiq-components-title.mjs +125 -0
  691. package/fesm2022/koobiq-components-title.mjs.map +1 -0
  692. package/fesm2022/koobiq-components-toast.mjs +375 -0
  693. package/fesm2022/koobiq-components-toast.mjs.map +1 -0
  694. package/fesm2022/koobiq-components-toggle.mjs +182 -0
  695. package/fesm2022/koobiq-components-toggle.mjs.map +1 -0
  696. package/fesm2022/koobiq-components-tooltip.mjs +370 -0
  697. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -0
  698. package/fesm2022/koobiq-components-tree-select.mjs +978 -0
  699. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -0
  700. package/fesm2022/koobiq-components-tree.mjs +1802 -0
  701. package/fesm2022/koobiq-components-tree.mjs.map +1 -0
  702. package/fesm2022/koobiq-components.mjs +4 -0
  703. package/fesm2022/koobiq-components.mjs.map +1 -0
  704. package/file-upload/README.md +0 -0
  705. package/file-upload/_file-upload-theme.scss +174 -0
  706. package/file-upload/file-drop.d.ts +11 -0
  707. package/file-upload/file-upload.d.ts +22 -0
  708. package/file-upload/file-upload.module.d.ts +18 -0
  709. package/file-upload/file-upload.scss +46 -0
  710. package/file-upload/index.d.ts +1 -0
  711. package/file-upload/multiple-file-upload.component.d.ts +51 -0
  712. package/file-upload/multiple-file-upload.component.scss +148 -0
  713. package/file-upload/public-api.d.ts +5 -0
  714. package/file-upload/single-file-upload.component.d.ts +34 -0
  715. package/file-upload/single-file-upload.component.scss +60 -0
  716. package/form-field/README.md +0 -0
  717. package/form-field/_form-field-theme.scss +112 -0
  718. package/form-field/_hint-theme.scss +67 -0
  719. package/form-field/cleaner.d.ts +5 -0
  720. package/form-field/cleaner.scss +22 -0
  721. package/form-field/form-field-control.d.ts +37 -0
  722. package/form-field/form-field-errors.d.ts +2 -0
  723. package/form-field/form-field.d.ts +84 -0
  724. package/form-field/form-field.module.d.ts +17 -0
  725. package/form-field/form-field.scss +143 -0
  726. package/form-field/hint.d.ts +17 -0
  727. package/form-field/hint.scss +15 -0
  728. package/form-field/index.d.ts +1 -0
  729. package/form-field/password-hint.d.ts +40 -0
  730. package/form-field/password-hint.scss +11 -0
  731. package/form-field/password-toggle.d.ts +18 -0
  732. package/form-field/password-toggle.scss +29 -0
  733. package/form-field/prefix.d.ts +5 -0
  734. package/form-field/public-api.d.ts +12 -0
  735. package/form-field/stepper.d.ts +11 -0
  736. package/form-field/stepper.scss +33 -0
  737. package/form-field/suffix.d.ts +5 -0
  738. package/form-field/validate.directive.d.ts +33 -0
  739. package/icon/README.md +0 -0
  740. package/icon/_icon-theme.scss +267 -0
  741. package/icon/icon.component.d.ts +47 -0
  742. package/icon/icon.module.d.ts +10 -0
  743. package/icon/icon.scss +73 -0
  744. package/icon/index.d.ts +1 -0
  745. package/icon/public-api.d.ts +2 -0
  746. package/index.d.ts +1 -0
  747. package/input/_input-theme.scss +13 -0
  748. package/input/index.d.ts +1 -0
  749. package/input/input-errors.d.ts +1 -0
  750. package/input/input-number-validators.d.ts +35 -0
  751. package/input/input-number.d.ts +33 -0
  752. package/input/input-password.d.ts +92 -0
  753. package/input/input-value-accessor.d.ts +4 -0
  754. package/input/input.d.ts +117 -0
  755. package/input/input.module.d.ts +15 -0
  756. package/input/input.scss +48 -0
  757. package/input/public-api.d.ts +6 -0
  758. package/link/README.md +0 -0
  759. package/link/_link-theme.scss +178 -0
  760. package/link/index.d.ts +1 -0
  761. package/link/link.component.d.ts +47 -0
  762. package/link/link.module.d.ts +9 -0
  763. package/link/public-api.d.ts +2 -0
  764. package/list/README.md +0 -0
  765. package/list/_list-base.scss +54 -0
  766. package/list/_list-theme.scss +47 -0
  767. package/list/index.d.ts +1 -0
  768. package/list/list-selection.component.d.ts +172 -0
  769. package/list/list.component.d.ts +18 -0
  770. package/list/list.module.d.ts +11 -0
  771. package/list/list.scss +52 -0
  772. package/list/public-api.d.ts +3 -0
  773. package/loader-overlay/README.md +0 -0
  774. package/loader-overlay/_loader-overlay-theme.scss +34 -0
  775. package/loader-overlay/index.d.ts +1 -0
  776. package/loader-overlay/loader-overlay.component.d.ts +34 -0
  777. package/loader-overlay/loader-overlay.module.d.ts +11 -0
  778. package/loader-overlay/loader-overlay.scss +64 -0
  779. package/loader-overlay/public-api.d.ts +2 -0
  780. package/markdown/README.md +0 -0
  781. package/markdown/_markdown-theme.scss +142 -0
  782. package/markdown/index.d.ts +1 -0
  783. package/markdown/markdown.component.d.ts +19 -0
  784. package/markdown/markdown.module.d.ts +11 -0
  785. package/markdown/markdown.scss +249 -0
  786. package/markdown/markdown.service.d.ts +7 -0
  787. package/markdown/markdown.values.d.ts +3 -0
  788. package/markdown/public-api.d.ts +4 -0
  789. package/modal/README.md +34 -0
  790. package/modal/_modal-animation.scss +114 -0
  791. package/modal/_modal-confirm.scss +53 -0
  792. package/modal/_modal-theme.scss +90 -0
  793. package/modal/css-unit.pipe.d.ts +7 -0
  794. package/modal/index.d.ts +1 -0
  795. package/modal/modal-control.service.d.ts +20 -0
  796. package/modal/modal-ref.class.d.ts +36 -0
  797. package/modal/modal-util.d.ts +12 -0
  798. package/modal/modal.component.d.ts +128 -0
  799. package/modal/modal.directive.d.ts +17 -0
  800. package/modal/modal.module.d.ts +14 -0
  801. package/modal/modal.scss +143 -0
  802. package/modal/modal.service.d.ts +33 -0
  803. package/modal/modal.type.d.ts +61 -0
  804. package/modal/public-api.d.ts +6 -0
  805. package/navbar/README.md +41 -0
  806. package/navbar/_navbar-theme.scss +123 -0
  807. package/navbar/index.d.ts +1 -0
  808. package/navbar/navbar-brand.scss +70 -0
  809. package/navbar/navbar-divider.scss +18 -0
  810. package/navbar/navbar-item.component.d.ts +167 -0
  811. package/navbar/navbar-item.scss +159 -0
  812. package/navbar/navbar.component.d.ts +58 -0
  813. package/navbar/navbar.module.d.ts +14 -0
  814. package/navbar/navbar.scss +20 -0
  815. package/navbar/public-api.d.ts +4 -0
  816. package/navbar/vertical-navbar.animation.d.ts +2 -0
  817. package/navbar/vertical-navbar.component.d.ts +23 -0
  818. package/navbar/vertical-navbar.scss +46 -0
  819. package/package.json +323 -0
  820. package/popover/README.md +32 -0
  821. package/popover/_popover-theme.scss +111 -0
  822. package/popover/index.d.ts +1 -0
  823. package/popover/popover-animations.d.ts +4 -0
  824. package/popover/popover-confirm.component.d.ts +33 -0
  825. package/popover/popover.component.d.ts +75 -0
  826. package/popover/popover.module.d.ts +12 -0
  827. package/popover/popover.scss +114 -0
  828. package/popover/public-api.d.ts +4 -0
  829. package/prebuilt-themes/dark-theme.css +1 -0
  830. package/prebuilt-themes/light-theme.css +1 -0
  831. package/progress-bar/README.md +0 -0
  832. package/progress-bar/_progress-bar-theme.scss +41 -0
  833. package/progress-bar/index.d.ts +1 -0
  834. package/progress-bar/progress-bar.component.d.ts +28 -0
  835. package/progress-bar/progress-bar.module.d.ts +9 -0
  836. package/progress-bar/progress-bar.scss +68 -0
  837. package/progress-bar/public-api.d.ts +2 -0
  838. package/progress-spinner/README.md +0 -0
  839. package/progress-spinner/_progress-spinner-theme.scss +35 -0
  840. package/progress-spinner/index.d.ts +1 -0
  841. package/progress-spinner/progress-spinner.component.d.ts +34 -0
  842. package/progress-spinner/progress-spinner.module.d.ts +9 -0
  843. package/progress-spinner/progress-spinner.scss +72 -0
  844. package/progress-spinner/public-api.d.ts +2 -0
  845. package/public-api.d.ts +1 -0
  846. package/radio/_radio-theme.scss +95 -0
  847. package/radio/index.d.ts +1 -0
  848. package/radio/public-api.d.ts +2 -0
  849. package/radio/radio.component.d.ts +204 -0
  850. package/radio/radio.module.d.ts +10 -0
  851. package/radio/radio.scss +143 -0
  852. package/select/README.md +0 -0
  853. package/select/_select-theme.scss +55 -0
  854. package/select/index.d.ts +1 -0
  855. package/select/public-api.d.ts +3 -0
  856. package/select/select-option.directive.d.ts +20 -0
  857. package/select/select.component.d.ts +330 -0
  858. package/select/select.module.d.ts +15 -0
  859. package/select/select.scss +222 -0
  860. package/sidebar/index.d.ts +1 -0
  861. package/sidebar/public-api.d.ts +2 -0
  862. package/sidebar/sidebar-animations.d.ts +8 -0
  863. package/sidebar/sidebar.component.d.ts +53 -0
  864. package/sidebar/sidebar.module.d.ts +8 -0
  865. package/sidebar/sidebar.scss +12 -0
  866. package/sidepanel/_sidepanel-theme.scss +67 -0
  867. package/sidepanel/index.d.ts +1 -0
  868. package/sidepanel/public-api.d.ts +6 -0
  869. package/sidepanel/sidepanel-animations.d.ts +14 -0
  870. package/sidepanel/sidepanel-config.d.ts +31 -0
  871. package/sidepanel/sidepanel-container.component.d.ts +46 -0
  872. package/sidepanel/sidepanel-directives.d.ts +50 -0
  873. package/sidepanel/sidepanel-ref.d.ts +24 -0
  874. package/sidepanel/sidepanel.module.d.ts +16 -0
  875. package/sidepanel/sidepanel.scss +203 -0
  876. package/sidepanel/sidepanel.service.d.ts +57 -0
  877. package/splitter/_splitter-theme.scss +31 -0
  878. package/splitter/index.d.ts +1 -0
  879. package/splitter/public-api.d.ts +2 -0
  880. package/splitter/splitter.component.d.ts +130 -0
  881. package/splitter/splitter.module.d.ts +9 -0
  882. package/splitter/splitter.scss +48 -0
  883. package/table/README.md +0 -0
  884. package/table/_table-theme.scss +65 -0
  885. package/table/index.d.ts +1 -0
  886. package/table/public-api.d.ts +2 -0
  887. package/table/table.component.d.ts +5 -0
  888. package/table/table.module.d.ts +10 -0
  889. package/table/table.scss +76 -0
  890. package/tabs/README.md +0 -0
  891. package/tabs/_tabs-common.scss +197 -0
  892. package/tabs/_tabs-theme.scss +240 -0
  893. package/tabs/index.d.ts +1 -0
  894. package/tabs/paginated-tab-header.d.ts +179 -0
  895. package/tabs/public-api.d.ts +10 -0
  896. package/tabs/tab-body.component.d.ts +95 -0
  897. package/tabs/tab-body.scss +8 -0
  898. package/tabs/tab-content.directive.d.ts +9 -0
  899. package/tabs/tab-group.component.d.ts +134 -0
  900. package/tabs/tab-group.scss +63 -0
  901. package/tabs/tab-header.component.d.ts +35 -0
  902. package/tabs/tab-header.scss +106 -0
  903. package/tabs/tab-label-wrapper.directive.d.ts +31 -0
  904. package/tabs/tab-label.directive.d.ts +9 -0
  905. package/tabs/tab-nav-bar/index.d.ts +1 -0
  906. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +40 -0
  907. package/tabs/tab-nav-bar/tab-nav-bar.scss +54 -0
  908. package/tabs/tab.component.d.ts +68 -0
  909. package/tabs/tabs-animations.d.ts +4 -0
  910. package/tabs/tabs.module.d.ts +21 -0
  911. package/tags/README.md +0 -0
  912. package/tags/_tag-theme.scss +100 -0
  913. package/tags/index.d.ts +1 -0
  914. package/tags/public-api.d.ts +5 -0
  915. package/tags/tag-default-options.d.ts +8 -0
  916. package/tags/tag-input.d.ts +87 -0
  917. package/tags/tag-list.component.d.ts +246 -0
  918. package/tags/tag-list.scss +66 -0
  919. package/tags/tag-text-control.d.ts +10 -0
  920. package/tags/tag.component.d.ts +140 -0
  921. package/tags/tag.module.d.ts +11 -0
  922. package/tags/tag.scss +67 -0
  923. package/textarea/README.md +0 -0
  924. package/textarea/_textarea-theme.scss +13 -0
  925. package/textarea/index.d.ts +1 -0
  926. package/textarea/public-api.d.ts +2 -0
  927. package/textarea/textarea.component.d.ts +114 -0
  928. package/textarea/textarea.module.d.ts +11 -0
  929. package/textarea/textarea.scss +45 -0
  930. package/timepicker/README.md +0 -0
  931. package/timepicker/index.d.ts +1 -0
  932. package/timepicker/public-api.d.ts +3 -0
  933. package/timepicker/timepicker.constants.d.ts +20 -0
  934. package/timepicker/timepicker.directive.d.ts +141 -0
  935. package/timepicker/timepicker.module.d.ts +11 -0
  936. package/timepicker/timepicker.scss +18 -0
  937. package/timezone/README.md +0 -0
  938. package/timezone/_timezone-option-theme.scss +34 -0
  939. package/timezone/cities-by-filter.pipe.d.ts +7 -0
  940. package/timezone/index.d.ts +1 -0
  941. package/timezone/public-api.d.ts +6 -0
  942. package/timezone/timezone-option.component.d.ts +15 -0
  943. package/timezone/timezone-option.component.scss +35 -0
  944. package/timezone/timezone-option.directive.d.ts +20 -0
  945. package/timezone/timezone-select.component.d.ts +14 -0
  946. package/timezone/timezone.models.d.ts +16 -0
  947. package/timezone/timezone.module.d.ts +19 -0
  948. package/timezone/timezone.utils.d.ts +18 -0
  949. package/timezone/utc-offset.pipe.d.ts +7 -0
  950. package/title/index.d.ts +1 -0
  951. package/title/public-api.d.ts +2 -0
  952. package/title/title.directive.d.ts +31 -0
  953. package/title/title.module.d.ts +8 -0
  954. package/toast/_toast-theme.scss +61 -0
  955. package/toast/index.d.ts +1 -0
  956. package/toast/public-api.d.ts +5 -0
  957. package/toast/toast-animations.d.ts +4 -0
  958. package/toast/toast-container.component.d.ts +15 -0
  959. package/toast/toast-container.component.scss +23 -0
  960. package/toast/toast.component.d.ts +35 -0
  961. package/toast/toast.component.scss +76 -0
  962. package/toast/toast.module.d.ts +13 -0
  963. package/toast/toast.service.d.ts +51 -0
  964. package/toast/toast.type.d.ts +27 -0
  965. package/toggle/_toggle-theme.scss +98 -0
  966. package/toggle/index.d.ts +1 -0
  967. package/toggle/public-api.d.ts +2 -0
  968. package/toggle/toggle.component.d.ts +57 -0
  969. package/toggle/toggle.module.d.ts +10 -0
  970. package/toggle/toggle.scss +99 -0
  971. package/tooltip/_tooltip-theme.scss +49 -0
  972. package/tooltip/index.d.ts +1 -0
  973. package/tooltip/public-api.d.ts +2 -0
  974. package/tooltip/tooltip.animations.d.ts +8 -0
  975. package/tooltip/tooltip.component.d.ts +94 -0
  976. package/tooltip/tooltip.module.d.ts +9 -0
  977. package/tooltip/tooltip.scss +54 -0
  978. package/tree/_tree-theme.scss +69 -0
  979. package/tree/control/base-tree-control.d.ts +40 -0
  980. package/tree/control/flat-tree-control.d.ts +53 -0
  981. package/tree/control/nested-tree-control.d.ts +19 -0
  982. package/tree/control/tree-control.d.ts +44 -0
  983. package/tree/data-source/flat-data-source.d.ts +80 -0
  984. package/tree/data-source/nested-data-source.d.ts +15 -0
  985. package/tree/index.d.ts +1 -0
  986. package/tree/node.d.ts +34 -0
  987. package/tree/outlet.d.ts +9 -0
  988. package/tree/padding.directive.d.ts +47 -0
  989. package/tree/public-api.d.ts +15 -0
  990. package/tree/toggle.d.ts +30 -0
  991. package/tree/toggle.scss +35 -0
  992. package/tree/tree-base.d.ts +97 -0
  993. package/tree/tree-errors.d.ts +25 -0
  994. package/tree/tree-option.component.d.ts +80 -0
  995. package/tree/tree-option.scss +67 -0
  996. package/tree/tree-selection.component.d.ts +134 -0
  997. package/tree/tree-selection.scss +3 -0
  998. package/tree/tree.d.ts +6 -0
  999. package/tree/tree.module.d.ts +16 -0
  1000. package/tree/tree.scss +3 -0
  1001. package/tree-select/README.md +0 -0
  1002. package/tree-select/_tree-select-theme.scss +41 -0
  1003. package/tree-select/index.d.ts +1 -0
  1004. package/tree-select/public-api.d.ts +2 -0
  1005. package/tree-select/tree-select.component.d.ts +283 -0
  1006. package/tree-select/tree-select.module.d.ts +14 -0
  1007. package/tree-select/tree-select.scss +225 -0
@@ -0,0 +1,349 @@
1
+ import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewEncapsulation, InjectionToken, Inject, Optional, Directive, Attribute } from '@angular/core';
3
+ import { mixinDisabled } from '@koobiq/components/core';
4
+ import { merge, Subject, Subscription } from 'rxjs';
5
+ import { debounceTime } from 'rxjs/operators';
6
+ import { KbqTabHeader } from './tab-header.component';
7
+ import { KbqTab } from './tab.component';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "@angular/cdk/portal";
11
+ import * as i3 from "@angular/cdk/a11y";
12
+ import * as i4 from "@koobiq/components/tooltip";
13
+ import * as i5 from "./tab-label-wrapper.directive";
14
+ import * as i6 from "./tab-body.component";
15
+ import * as i7 from "./tab-header.component";
16
+ export class KbqOldTabsCssStyler {
17
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqOldTabsCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
18
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqOldTabsCssStyler, selector: "kbq-tab-group[kbq-old-tabs]", host: { classAttribute: "kbq-tab-group_old" }, ngImport: i0 }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqOldTabsCssStyler, decorators: [{
21
+ type: Directive,
22
+ args: [{
23
+ selector: 'kbq-tab-group[kbq-old-tabs]',
24
+ host: { class: 'kbq-tab-group_old' }
25
+ }]
26
+ }] });
27
+ export class KbqAlignTabsCenterCssStyler {
28
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqAlignTabsCenterCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
29
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqAlignTabsCenterCssStyler, selector: "kbq-tab-group[kbq-align-tabs-center], [kbq-tab-nav-bar][kbq-align-tabs-center]", host: { classAttribute: "kbq-tab-group_align-labels-center" }, ngImport: i0 }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqAlignTabsCenterCssStyler, decorators: [{
32
+ type: Directive,
33
+ args: [{
34
+ selector: 'kbq-tab-group[kbq-align-tabs-center], [kbq-tab-nav-bar][kbq-align-tabs-center]',
35
+ host: { class: 'kbq-tab-group_align-labels-center' }
36
+ }]
37
+ }] });
38
+ export class KbqAlignTabsEndCssStyler {
39
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqAlignTabsEndCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
40
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqAlignTabsEndCssStyler, selector: "kbq-tab-group[kbq-align-tabs-end], [kbq-tab-nav-bar][kbq-align-tabs-end]", host: { classAttribute: "kbq-tab-group_align-labels-end" }, ngImport: i0 }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqAlignTabsEndCssStyler, decorators: [{
43
+ type: Directive,
44
+ args: [{
45
+ selector: 'kbq-tab-group[kbq-align-tabs-end], [kbq-tab-nav-bar][kbq-align-tabs-end]',
46
+ host: { class: 'kbq-tab-group_align-labels-end' }
47
+ }]
48
+ }] });
49
+ export class KbqStretchTabsCssStyler {
50
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqStretchTabsCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqStretchTabsCssStyler, selector: "kbq-tab-group[kbq-stretch-tabs], [kbq-tab-nav-bar][kbq-stretch-tabs]", host: { classAttribute: "kbq-tab-group_stretch-labels" }, ngImport: i0 }); }
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqStretchTabsCssStyler, decorators: [{
54
+ type: Directive,
55
+ args: [{
56
+ selector: 'kbq-tab-group[kbq-stretch-tabs], [kbq-tab-nav-bar][kbq-stretch-tabs]',
57
+ host: { class: 'kbq-tab-group_stretch-labels' }
58
+ }]
59
+ }] });
60
+ export class KbqVerticalTabsCssStyler {
61
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqVerticalTabsCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
62
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqVerticalTabsCssStyler, selector: "kbq-tab-group[vertical], [kbq-tab-nav-bar][vertical]", host: { classAttribute: "kbq-tab-group_vertical" }, ngImport: i0 }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqVerticalTabsCssStyler, decorators: [{
65
+ type: Directive,
66
+ args: [{
67
+ selector: 'kbq-tab-group[vertical], [kbq-tab-nav-bar][vertical]',
68
+ host: { class: 'kbq-tab-group_vertical' }
69
+ }]
70
+ }] });
71
+ /** Used to generate unique ID's for each tab component */
72
+ let nextId = 0;
73
+ /** A simple change event emitted on focus or selection changes. */
74
+ export class KbqTabChangeEvent {
75
+ }
76
+ /** Injection token that can be used to provide the default options the tabs module. */
77
+ export const KBQ_TABS_CONFIG = new InjectionToken('KBQ_TABS_CONFIG');
78
+ // Boilerplate for applying mixins to KbqTabGroup.
79
+ /** @docs-private */
80
+ export class KbqTabGroupBase {
81
+ constructor(elementRef) {
82
+ this.elementRef = elementRef;
83
+ }
84
+ }
85
+ /** @docs-private */
86
+ export const KbqTabGroupMixinBase = mixinDisabled(KbqTabGroupBase);
87
+ /**
88
+ * Tab-group component. Supports basic tab pairs (label + content) and includes
89
+ * keyboard navigation.
90
+ */
91
+ export class KbqTabGroup extends KbqTabGroupMixinBase {
92
+ /** Whether the tab group should grow to the size of the active tab. */
93
+ get dynamicHeight() {
94
+ return this._dynamicHeight;
95
+ }
96
+ set dynamicHeight(value) {
97
+ this._dynamicHeight = coerceBooleanProperty(value);
98
+ }
99
+ /** The index of the active tab. */
100
+ get selectedIndex() {
101
+ return this._selectedIndex;
102
+ }
103
+ set selectedIndex(value) {
104
+ this.indexToSelect = coerceNumberProperty(value, null);
105
+ }
106
+ constructor(elementRef, changeDetectorRef, lightTabs, vertical, defaultConfig) {
107
+ super(elementRef);
108
+ this.changeDetectorRef = changeDetectorRef;
109
+ this.resizeStream = new Subject();
110
+ this._dynamicHeight = false;
111
+ this._selectedIndex = null;
112
+ /** Position of the tab header. */
113
+ this.headerPosition = 'above';
114
+ /** Output to enable support for two-way binding on `[(selectedIndex)]` */
115
+ this.selectedIndexChange = new EventEmitter();
116
+ /** Event emitted when focus has changed within a tab group. */
117
+ this.focusChange = new EventEmitter();
118
+ /** Event emitted when the body animation has completed */
119
+ this.animationDone = new EventEmitter();
120
+ /** Event emitted when the tab selection has changed. */
121
+ this.selectedTabChange = new EventEmitter(true);
122
+ /** The tab index that should be selected after the content has been checked. */
123
+ this.indexToSelect = 0;
124
+ /** Snapshot of the height of the tab body wrapper before another tab is activated. */
125
+ this.tabBodyWrapperHeight = 0;
126
+ /** Subscription to tabs being added/removed. */
127
+ this.tabsSubscription = Subscription.EMPTY;
128
+ /** Subscription to changes in the tab labels. */
129
+ this.tabLabelSubscription = Subscription.EMPTY;
130
+ this.resizeSubscription = Subscription.EMPTY;
131
+ this.resizeDebounceInterval = 100;
132
+ this.checkOverflow = () => {
133
+ this.tabHeader.items
134
+ .forEach((headerTab) => headerTab.checkOverflow());
135
+ };
136
+ this.oldTab = coerceBooleanProperty(lightTabs);
137
+ this.vertical = coerceBooleanProperty(vertical);
138
+ this.groupId = nextId++;
139
+ this.animationDuration = defaultConfig?.animationDuration || '0ms';
140
+ this.subscribeToResize();
141
+ }
142
+ /**
143
+ * After the content is checked, this component knows what tabs have been defined
144
+ * and what the selected index should be. This is where we can know exactly what position
145
+ * each tab should be in according to the new selected index, and additionally we know how
146
+ * a new selected tab should transition in (from the left or right).
147
+ */
148
+ ngAfterContentChecked() {
149
+ // Don't clamp the `indexToSelect` immediately in the setter because it can happen that
150
+ // the amount of tabs changes before the actual change detection runs.
151
+ const indexToSelect = this.indexToSelect = this.clampTabIndex(this.indexToSelect);
152
+ // If there is a change in selected index, emit a change event. Should not trigger if
153
+ // the selected index has not yet been initialized.
154
+ if (this._selectedIndex !== indexToSelect) {
155
+ const isFirstRun = this._selectedIndex == null;
156
+ if (!isFirstRun) {
157
+ this.selectedTabChange.emit(this.createChangeEvent(indexToSelect));
158
+ }
159
+ // Changing these values after change detection has run
160
+ // since the checked content may contain references to them.
161
+ Promise.resolve().then(() => {
162
+ this.tabs.forEach((tab, index) => tab.isActive = index === indexToSelect);
163
+ if (!isFirstRun) {
164
+ this.selectedIndexChange.emit(indexToSelect);
165
+ }
166
+ });
167
+ }
168
+ // Setup the position for each tab and optionally setup an origin on the next selected tab.
169
+ this.tabs.forEach((tab, index) => {
170
+ tab.position = index - indexToSelect;
171
+ // If there is already a selected tab, then set up an origin for the next selected tab
172
+ // if it doesn't have one already.
173
+ if (this._selectedIndex != null && tab.position === 0 && !tab.origin) {
174
+ tab.origin = indexToSelect - this._selectedIndex;
175
+ }
176
+ });
177
+ if (this._selectedIndex !== indexToSelect) {
178
+ this._selectedIndex = indexToSelect;
179
+ this.changeDetectorRef.markForCheck();
180
+ }
181
+ }
182
+ ngAfterContentInit() {
183
+ this.subscribeToTabLabels();
184
+ // Subscribe to changes in the amount of tabs, in order to be
185
+ // able to re-render the content as new tabs are added or removed.
186
+ this.tabsSubscription = this.tabs.changes
187
+ .subscribe(() => {
188
+ const indexToSelect = this.clampTabIndex(this.indexToSelect);
189
+ // Maintain the previously-selected tab if a new tab is added or removed and there is no
190
+ // explicit change that selects a different tab.
191
+ if (indexToSelect === this._selectedIndex) {
192
+ const tabs = this.tabs.toArray();
193
+ for (let i = 0; i < tabs.length; i++) {
194
+ if (tabs[i].isActive) {
195
+ // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed
196
+ // event, otherwise the consumer may end up in an infinite loop in some edge cases like
197
+ // adding a tab within the `selectedIndexChange` event.
198
+ this.indexToSelect = this._selectedIndex = i;
199
+ break;
200
+ }
201
+ }
202
+ }
203
+ this.subscribeToTabLabels();
204
+ this.changeDetectorRef.markForCheck();
205
+ });
206
+ }
207
+ ngAfterViewInit() {
208
+ this.checkOverflow();
209
+ }
210
+ ngOnDestroy() {
211
+ this.tabsSubscription.unsubscribe();
212
+ this.tabLabelSubscription.unsubscribe();
213
+ this.resizeSubscription.unsubscribe();
214
+ }
215
+ focusChanged(index) {
216
+ this.focusChange.emit(this.createChangeEvent(index));
217
+ }
218
+ /** Returns a unique id for each tab label element */
219
+ getTabLabelId(i) {
220
+ return `kbq-tab-label-${this.groupId}-${i}`;
221
+ }
222
+ /** Returns a unique id for each tab content element */
223
+ getTabContentId(i) {
224
+ return `kbq-tab-content-${this.groupId}-${i}`;
225
+ }
226
+ /**
227
+ * Sets the height of the body wrapper to the height of the activating tab if dynamic
228
+ * height property is true.
229
+ */
230
+ setTabBodyWrapperHeight(tabHeight) {
231
+ if (!this._dynamicHeight || !this.tabBodyWrapperHeight) {
232
+ return;
233
+ }
234
+ const wrapper = this.tabBodyWrapper.nativeElement;
235
+ wrapper.style.height = `${this.tabBodyWrapperHeight}px`;
236
+ // This conditional forces the browser to paint the height so that
237
+ // the animation to the new height can have an origin.
238
+ if (this.tabBodyWrapper.nativeElement.offsetHeight) {
239
+ wrapper.style.height = `${tabHeight}px`;
240
+ }
241
+ }
242
+ /** Removes the height of the tab body wrapper. */
243
+ removeTabBodyWrapperHeight() {
244
+ this.tabBodyWrapperHeight = this.tabBodyWrapper.nativeElement.clientHeight;
245
+ this.tabBodyWrapper.nativeElement.style.height = '';
246
+ this.animationDone.emit();
247
+ }
248
+ /** Handle click events, setting new selected index if appropriate. */
249
+ handleClick(tab, tabHeader, index) {
250
+ if (tab.disabled) {
251
+ return;
252
+ }
253
+ this.selectedIndex = tabHeader.focusIndex = index;
254
+ }
255
+ /** Retrieves the tabindex for the tab. */
256
+ getTabIndex(tab, index) {
257
+ if (tab.disabled) {
258
+ return null;
259
+ }
260
+ return this.selectedIndex === index ? 0 : -1;
261
+ }
262
+ createChangeEvent(index) {
263
+ const event = new KbqTabChangeEvent();
264
+ event.index = index;
265
+ if (this.tabs && this.tabs.length) {
266
+ event.tab = this.tabs.toArray()[index];
267
+ }
268
+ return event;
269
+ }
270
+ /**
271
+ * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is
272
+ * on the KbqTab component, whereas the data binding is inside the KbqTabGroup. In order for the
273
+ * binding to be updated, we need to subscribe to changes in it and trigger change detection
274
+ * manually.
275
+ */
276
+ subscribeToTabLabels() {
277
+ if (this.tabLabelSubscription) {
278
+ this.tabLabelSubscription.unsubscribe();
279
+ }
280
+ this.tabLabelSubscription = merge(...this.tabs.map((tab) => tab.stateChanges))
281
+ .subscribe(() => this.changeDetectorRef.markForCheck());
282
+ }
283
+ subscribeToResize() {
284
+ if (!this.vertical) {
285
+ return;
286
+ }
287
+ if (this.resizeSubscription) {
288
+ this.resizeSubscription.unsubscribe();
289
+ }
290
+ this.resizeSubscription = this.resizeStream
291
+ .pipe(debounceTime(this.resizeDebounceInterval))
292
+ .subscribe(this.checkOverflow);
293
+ }
294
+ /** Clamps the given index to the bounds of 0 and the tabs length. */
295
+ clampTabIndex(index) {
296
+ // Note the `|| 0`, which ensures that values like NaN can't get through
297
+ // and which would otherwise throw the component into an infinite loop
298
+ // (since Kbqh.max(NaN, 0) === NaN).
299
+ return Math.min(this.tabs.length - 1, Math.max(index || 0, 0));
300
+ }
301
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTabGroup, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: 'kbq-old-tabs', attribute: true }, { token: 'vertical', attribute: true }, { token: KBQ_TABS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
302
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqTabGroup, selector: "kbq-tab-group", inputs: { disabled: "disabled", dynamicHeight: "dynamicHeight", selectedIndex: "selectedIndex", headerPosition: "headerPosition", animationDuration: "animationDuration" }, outputs: { selectedIndexChange: "selectedIndexChange", focusChange: "focusChange", animationDone: "animationDone", selectedTabChange: "selectedTabChange" }, host: { listeners: { "window:resize": "resizeStream.next($event)" }, properties: { "class.kbq-tab-group_dynamic-height": "dynamicHeight", "class.kbq-tab-group_inverted-header": "headerPosition === \"below\"" }, classAttribute: "kbq-tab-group" }, queries: [{ propertyName: "tabs", predicate: KbqTab }], viewQueries: [{ propertyName: "tabBodyWrapper", first: true, predicate: ["tabBodyWrapper"], descendants: true }, { propertyName: "tabHeader", first: true, predicate: ["tabHeader"], descendants: true }], exportAs: ["mcTabGroup"], usesInheritance: true, ngImport: i0, template: "<kbq-tab-header\n #tabHeader\n [vertical]=\"vertical\"\n [selectedIndex]=\"selectedIndex\"\n (indexFocused)=\"focusChanged($event)\"\n (selectFocusedIndex)=\"selectedIndex = $event\">\n\n <div class=\"kbq-tab-label\"\n mcTabLabelWrapper\n cdkMonitorElementFocus\n [attr.tabindex]=\"getTabIndex(tab, i)\"\n [class.kbq-tab-label_old]=\"oldTab\"\n [class.kbq-tab-label_horizontal]=\"!vertical && !oldTab\"\n [class.kbq-tab-label_vertical]=\"vertical && !oldTab\"\n [class.kbq-tab-label_empty]=\"tab.empty\"\n [class.kbq-active]=\"selectedIndex == i\"\n *ngFor=\"let tab of tabs; let i = index\"\n [tab]=\"tab\"\n [id]=\"getTabLabelId(i)\"\n [disabled]=\"tab.disabled\"\n (click)=\"handleClick(tab, tabHeader, i)\"\n\n [mcTooltip]=\"tab.tooltipTitle\"\n [mcTooltipDisabled]=\"!tab.empty && !tab.isOverflown\"\n [mcTrigger]=\"'hover, focus'\"\n [mcPlacement]=\"tab.tooltipPlacement\">\n\n <div #labelContent class=\"kbq-tab-label__content\"\n [class.kbq-tab-label__template]=\"tab.templateLabel\">\n <!-- If there is a label template, use it. -->\n <ng-template [ngIf]=\"tab.templateLabel\">\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template>\n </ng-template>\n\n <!-- If there is not a label template, fall back to the text label. -->\n <ng-template [ngIf]=\"!tab.templateLabel\">{{ tab.textLabel }}</ng-template>\n </div>\n </div>\n</kbq-tab-header>\n\n<div class=\"kbq-tab-body__wrapper\" #tabBodyWrapper>\n <kbq-tab-body\n *ngFor=\"let tab of tabs; let i = index\"\n [id]=\"getTabContentId(i)\"\n [class.kbq-tab-body__active]=\"selectedIndex == i\"\n [content]=\"tab.content!\"\n [position]=\"tab.position!\"\n [origin]=\"tab.origin!\"\n [animationDuration]=\"animationDuration\"\n (onCentered)=\"removeTabBodyWrapperHeight()\"\n (onCentering)=\"setTabBodyWrapperHeight($event)\">\n </kbq-tab-body>\n</div>\n", styles: [".kbq-tab-group{display:flex;flex-direction:column;box-sizing:border-box;text-align:left}.kbq-tab-group.kbq-tab-group_inverted-header{flex-direction:column-reverse}.kbq-tab-group_vertical{flex-direction:row}.kbq-tab-group_vertical .kbq-tab-header__content{overflow-y:auto;padding-top:8px;padding-bottom:1px;border-right-width:var(--kbq-tabs-size-border-width, 1px);border-right-style:solid}.kbq-tab-body__wrapper{display:flex;overflow:hidden;position:relative}.kbq-tab-body{inset:0;position:absolute;display:block;overflow:hidden;flex-basis:100%}.kbq-tab-body.kbq-tab-body__active{overflow-x:hidden;overflow-y:auto;position:relative;z-index:1;flex-grow:1}.kbq-tab-group.kbq-tab-group_dynamic-height .kbq-tab-body.kbq-tab-body__active{overflow-y:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i3.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i4.KbqTooltipTrigger, selector: "[mcTooltip]", inputs: ["mcVisible", "mcPlacement", "mcPlacementPriority", "mcTooltip", "mcTooltipDisabled", "mcEnterDelay", "mcLeaveDelay", "mcTrigger", "mcTooltipClass", "color"], outputs: ["mcPlacementChange", "mcVisibleChange"], exportAs: ["mcTooltip"] }, { kind: "directive", type: i5.KbqTabLabelWrapper, selector: "[mcTabLabelWrapper]", inputs: ["disabled", "tab"] }, { kind: "component", type: i6.KbqTabBody, selector: "kbq-tab-body", inputs: ["position", "content", "origin", "animationDuration"], outputs: ["onCentering", "beforeCentering", "afterLeavingCenter", "onCentered"] }, { kind: "component", type: i7.KbqTabHeader, selector: "kbq-tab-header", inputs: ["selectedIndex", "vertical"], outputs: ["selectFocusedIndex", "indexFocused"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
303
+ }
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTabGroup, decorators: [{
305
+ type: Component,
306
+ args: [{ selector: 'kbq-tab-group', exportAs: 'mcTabGroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], host: {
307
+ class: 'kbq-tab-group',
308
+ '[class.kbq-tab-group_dynamic-height]': 'dynamicHeight',
309
+ '[class.kbq-tab-group_inverted-header]': 'headerPosition === "below"',
310
+ '(window:resize)': 'resizeStream.next($event)'
311
+ }, template: "<kbq-tab-header\n #tabHeader\n [vertical]=\"vertical\"\n [selectedIndex]=\"selectedIndex\"\n (indexFocused)=\"focusChanged($event)\"\n (selectFocusedIndex)=\"selectedIndex = $event\">\n\n <div class=\"kbq-tab-label\"\n mcTabLabelWrapper\n cdkMonitorElementFocus\n [attr.tabindex]=\"getTabIndex(tab, i)\"\n [class.kbq-tab-label_old]=\"oldTab\"\n [class.kbq-tab-label_horizontal]=\"!vertical && !oldTab\"\n [class.kbq-tab-label_vertical]=\"vertical && !oldTab\"\n [class.kbq-tab-label_empty]=\"tab.empty\"\n [class.kbq-active]=\"selectedIndex == i\"\n *ngFor=\"let tab of tabs; let i = index\"\n [tab]=\"tab\"\n [id]=\"getTabLabelId(i)\"\n [disabled]=\"tab.disabled\"\n (click)=\"handleClick(tab, tabHeader, i)\"\n\n [mcTooltip]=\"tab.tooltipTitle\"\n [mcTooltipDisabled]=\"!tab.empty && !tab.isOverflown\"\n [mcTrigger]=\"'hover, focus'\"\n [mcPlacement]=\"tab.tooltipPlacement\">\n\n <div #labelContent class=\"kbq-tab-label__content\"\n [class.kbq-tab-label__template]=\"tab.templateLabel\">\n <!-- If there is a label template, use it. -->\n <ng-template [ngIf]=\"tab.templateLabel\">\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template>\n </ng-template>\n\n <!-- If there is not a label template, fall back to the text label. -->\n <ng-template [ngIf]=\"!tab.templateLabel\">{{ tab.textLabel }}</ng-template>\n </div>\n </div>\n</kbq-tab-header>\n\n<div class=\"kbq-tab-body__wrapper\" #tabBodyWrapper>\n <kbq-tab-body\n *ngFor=\"let tab of tabs; let i = index\"\n [id]=\"getTabContentId(i)\"\n [class.kbq-tab-body__active]=\"selectedIndex == i\"\n [content]=\"tab.content!\"\n [position]=\"tab.position!\"\n [origin]=\"tab.origin!\"\n [animationDuration]=\"animationDuration\"\n (onCentered)=\"removeTabBodyWrapperHeight()\"\n (onCentering)=\"setTabBodyWrapperHeight($event)\">\n </kbq-tab-body>\n</div>\n", styles: [".kbq-tab-group{display:flex;flex-direction:column;box-sizing:border-box;text-align:left}.kbq-tab-group.kbq-tab-group_inverted-header{flex-direction:column-reverse}.kbq-tab-group_vertical{flex-direction:row}.kbq-tab-group_vertical .kbq-tab-header__content{overflow-y:auto;padding-top:8px;padding-bottom:1px;border-right-width:var(--kbq-tabs-size-border-width, 1px);border-right-style:solid}.kbq-tab-body__wrapper{display:flex;overflow:hidden;position:relative}.kbq-tab-body{inset:0;position:absolute;display:block;overflow:hidden;flex-basis:100%}.kbq-tab-body.kbq-tab-body__active{overflow-x:hidden;overflow-y:auto;position:relative;z-index:1;flex-grow:1}.kbq-tab-group.kbq-tab-group_dynamic-height .kbq-tab-body.kbq-tab-body__active{overflow-y:hidden}\n"] }]
312
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
313
+ type: Attribute,
314
+ args: ['kbq-old-tabs']
315
+ }] }, { type: undefined, decorators: [{
316
+ type: Attribute,
317
+ args: ['vertical']
318
+ }] }, { type: undefined, decorators: [{
319
+ type: Inject,
320
+ args: [KBQ_TABS_CONFIG]
321
+ }, {
322
+ type: Optional
323
+ }] }]; }, propDecorators: { tabs: [{
324
+ type: ContentChildren,
325
+ args: [KbqTab]
326
+ }], tabBodyWrapper: [{
327
+ type: ViewChild,
328
+ args: ['tabBodyWrapper', { static: false }]
329
+ }], tabHeader: [{
330
+ type: ViewChild,
331
+ args: ['tabHeader', { static: false }]
332
+ }], dynamicHeight: [{
333
+ type: Input
334
+ }], selectedIndex: [{
335
+ type: Input
336
+ }], headerPosition: [{
337
+ type: Input
338
+ }], animationDuration: [{
339
+ type: Input
340
+ }], selectedIndexChange: [{
341
+ type: Output
342
+ }], focusChange: [{
343
+ type: Output
344
+ }], animationDone: [{
345
+ type: Output
346
+ }], selectedTabChange: [{
347
+ type: Output
348
+ }] } });
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGFicy90YWItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy90YWJzL3RhYi1ncm91cC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BGLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQU96QyxNQUFNLE9BQU8sbUJBQW1CO2lJQUFuQixtQkFBbUI7cUhBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7aUJBQ3ZDOztBQU9ELE1BQU0sT0FBTywyQkFBMkI7aUlBQTNCLDJC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TTsyQkFBQyxlQUFlOzswQkFBRyxRQUFROzRDQXJFYixJQUFJO3NCQUE1QixlQUFlO3VCQUFDLE1BQU07Z0JBRXlCLGNBQWM7c0JBQTdELFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVILFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJckMsYUFBYTtzQkFEaEIsS0FBSztnQkFhRixhQUFhO3NCQURoQixLQUFLO2dCQVlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdhLG1CQUFtQjtzQkFBckMsTUFBTTtnQkFHWSxXQUFXO3NCQUE3QixNQUFNO2dCQUdZLGFBQWE7c0JBQS9CLE1BQU07Z0JBR1ksaUJBQWlCO3NCQUFuQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudENoZWNrZWQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbmplY3QsXG4gICAgT3B0aW9uYWwsXG4gICAgRGlyZWN0aXZlLFxuICAgIEF0dHJpYnV0ZSxcbiAgICBBZnRlclZpZXdJbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuRGlzYWJsZUN0b3IsIG1peGluRGlzYWJsZWQgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEticVRhYkhlYWRlciB9IGZyb20gJy4vdGFiLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2JxVGFiIH0gZnJvbSAnLi90YWIuY29tcG9uZW50JztcblxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWItZ3JvdXBba2JxLW9sZC10YWJzXScsXG4gICAgaG9zdDogeyBjbGFzczogJ2ticS10YWItZ3JvdXBfb2xkJyB9XG59KVxuZXhwb3J0IGNsYXNzIEticU9sZFRhYnNDc3NTdHlsZXIgeyB9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAna2JxLXRhYi1ncm91cFtrYnEtYWxpZ24tdGFicy1jZW50ZXJdLCBba2JxLXRhYi1uYXYtYmFyXVtrYnEtYWxpZ24tdGFicy1jZW50ZXJdJyxcbiAgICBob3N0OiB7IGNsYXNzOiAna2JxLXRhYi1ncm91cF9hbGlnbi1sYWJlbHMtY2VudGVyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEticUFsaWduVGFic0NlbnRlckNzc1N0eWxlciB7IH1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdrYnEtdGFiLWdyb3VwW2ticS1hbGlnbi10YWJzLWVuZF0sIFtrYnEtdGFiLW5hdi1iYXJdW2ticS1hbGlnbi10YWJzLWVuZF0nLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdrYnEtdGFiLWdyb3VwX2FsaWduLWxhYmVscy1lbmQnIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxQWxpZ25UYWJzRW5kQ3NzU3R5bGVyIHsgfVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWItZ3JvdXBba2JxLXN0cmV0Y2gtdGFic10sIFtrYnEtdGFiLW5hdi1iYXJdW2ticS1zdHJldGNoLXRhYnNdJyxcbiAgICBob3N0OiB7IGNsYXNzOiAna2JxLXRhYi1ncm91cF9zdHJldGNoLWxhYmVscycgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFTdHJldGNoVGFic0Nzc1N0eWxlciB7IH1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdrYnEtdGFiLWdyb3VwW3ZlcnRpY2FsXSwgW2ticS10YWItbmF2LWJhcl1bdmVydGljYWxdJyxcbiAgICBob3N0OiB7IGNsYXNzOiAna2JxLXRhYi1ncm91cF92ZXJ0aWNhbCcgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFWZXJ0aWNhbFRhYnNDc3NTdHlsZXIgeyB9XG5cbi8qKiBVc2VkIHRvIGdlbmVyYXRlIHVuaXF1ZSBJRCdzIGZvciBlYWNoIHRhYiBjb21wb25lbnQgKi9cbmxldCBuZXh0SWQgPSAwO1xuXG4vKiogQSBzaW1wbGUgY2hhbmdlIGV2ZW50IGVtaXR0ZWQgb24gZm9jdXMgb3Igc2VsZWN0aW9uIGNoYW5nZXMuICovXG5leHBvcnQgY2xhc3MgS2JxVGFiQ2hhbmdlRXZlbnQge1xuICAgIC8qKiBJbmRleCBvZiB0aGUgY3VycmVudGx5LXNlbGVjdGVkIHRhYi4gKi9cbiAgICBpbmRleDogbnVtYmVyO1xuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnRseS1zZWxlY3RlZCB0YWIuICovXG4gICAgdGFiOiBLYnFUYWI7XG59XG5cbi8qKiBQb3NzaWJsZSBwb3NpdGlvbnMgZm9yIHRoZSB0YWIgaGVhZGVyLiAqL1xuZXhwb3J0IHR5cGUgS2JxVGFiSGVhZGVyUG9zaXRpb24gPSAnYWJvdmUnIHwgJ2JlbG93JztcblxuLyoqIE9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgdGFicyBtb2R1bGUuICovXG5leHBvcnQgaW50ZXJmYWNlIElLYnFUYWJzQ29uZmlnIHtcbiAgICAvKiogRHVyYXRpb24gZm9yIHRoZSB0YWIgYW5pbWF0aW9uLiBNdXN0IGJlIGEgdmFsaWQgQ1NTIHZhbHVlIChlLmcuIDYwMG1zKS4gKi9cbiAgICBhbmltYXRpb25EdXJhdGlvbj86IHN0cmluZztcbn1cblxuLyoqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgdGhlIGRlZmF1bHQgb3B0aW9ucyB0aGUgdGFicyBtb2R1bGUuICovXG5leHBvcnQgY29uc3QgS0JRX1RBQlNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0tCUV9UQUJTX0NPTkZJRycpO1xuXG4vLyBCb2lsZXJwbGF0ZSBmb3IgYXBwbHlpbmcgbWl4aW5zIHRvIEticVRhYkdyb3VwLlxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjbGFzcyBLYnFUYWJHcm91cEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxufVxuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IEticVRhYkdyb3VwTWl4aW5CYXNlOiBDYW5EaXNhYmxlQ3RvciAmIHR5cGVvZiBLYnFUYWJHcm91cEJhc2UgPSBtaXhpbkRpc2FibGVkKEticVRhYkdyb3VwQmFzZSk7XG5cbi8qKlxuICogVGFiLWdyb3VwIGNvbXBvbmVudC4gIFN1cHBvcnRzIGJhc2ljIHRhYiBwYWlycyAobGFiZWwgKyBjb250ZW50KSBhbmQgaW5jbHVkZXNcbiAqIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2JxLXRhYi1ncm91cCcsXG4gICAgZXhwb3J0QXM6ICdtY1RhYkdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RhYi1ncm91cC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsndGFiLWdyb3VwLnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGlucHV0czogWydkaXNhYmxlZCddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtdGFiLWdyb3VwJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFiLWdyb3VwX2R5bmFtaWMtaGVpZ2h0XSc6ICdkeW5hbWljSGVpZ2h0JyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFiLWdyb3VwX2ludmVydGVkLWhlYWRlcl0nOiAnaGVhZGVyUG9zaXRpb24gPT09IFwiYmVsb3dcIicsXG4gICAgICAgICcod2luZG93OnJlc2l6ZSknOiAncmVzaXplU3RyZWFtLm5leHQoJGV2ZW50KSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticVRhYkdyb3VwIGV4dGVuZHMgS2JxVGFiR3JvdXBNaXhpbkJhc2UgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3kge1xuICAgIHJlYWRvbmx5IHJlc2l6ZVN0cmVhbSA9IG5ldyBTdWJqZWN0PEV2ZW50PigpO1xuXG4gICAgb2xkVGFiOiBib29sZWFuO1xuICAgIHZlcnRpY2FsOiBib29sZWFuO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihLYnFUYWIpIHRhYnM6IFF1ZXJ5TGlzdDxLYnFUYWI+O1xuXG4gICAgQFZpZXdDaGlsZCgndGFiQm9keVdyYXBwZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgdGFiQm9keVdyYXBwZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCd0YWJIZWFkZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgdGFiSGVhZGVyOiBLYnFUYWJIZWFkZXI7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFiIGdyb3VwIHNob3VsZCBncm93IHRvIHRoZSBzaXplIG9mIHRoZSBhY3RpdmUgdGFiLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGR5bmFtaWNIZWlnaHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9keW5hbWljSGVpZ2h0O1xuICAgIH1cblxuICAgIHNldCBkeW5hbWljSGVpZ2h0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2R5bmFtaWNIZWlnaHQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2R5bmFtaWNIZWlnaHQgPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgaW5kZXggb2YgdGhlIGFjdGl2ZSB0YWIuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gICAgfVxuXG4gICAgc2V0IHNlbGVjdGVkSW5kZXgodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5pbmRleFRvU2VsZWN0ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIG51bGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NlbGVjdGVkSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSB0YWIgaGVhZGVyLiAqL1xuICAgIEBJbnB1dCgpIGhlYWRlclBvc2l0aW9uOiBLYnFUYWJIZWFkZXJQb3NpdGlvbiA9ICdhYm92ZSc7XG5cbiAgICAvKiogRHVyYXRpb24gZm9yIHRoZSB0YWIgYW5pbWF0aW9uLiBNdXN0IGJlIGEgdmFsaWQgQ1NTIHZhbHVlIChlLmcuIDYwMG1zKS4gKi9cbiAgICBASW5wdXQoKSBhbmltYXRpb25EdXJhdGlvbjogc3RyaW5nO1xuXG4gICAgLyoqIE91dHB1dCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdHdvLXdheSBiaW5kaW5nIG9uIGBbKHNlbGVjdGVkSW5kZXgpXWAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZm9jdXMgaGFzIGNoYW5nZWQgd2l0aGluIGEgdGFiIGdyb3VwLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBmb2N1c0NoYW5nZTogRXZlbnRFbWl0dGVyPEticVRhYkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxVGFiQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBib2R5IGFuaW1hdGlvbiBoYXMgY29tcGxldGVkICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGFuaW1hdGlvbkRvbmU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHRhYiBzZWxlY3Rpb24gaGFzIGNoYW5nZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdGVkVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8S2JxVGFiQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFUYWJDaGFuZ2VFdmVudD4odHJ1ZSk7XG5cbiAgICAvKiogVGhlIHRhYiBpbmRleCB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZCBhZnRlciB0aGUgY29udGVudCBoYXMgYmVlbiBjaGVja2VkLiAqL1xuICAgIHByaXZhdGUgaW5kZXhUb1NlbGVjdDogbnVtYmVyIHwgbnVsbCA9IDA7XG5cbiAgICAvKiogU25hcHNob3Qgb2YgdGhlIGhlaWdodCBvZiB0aGUgdGFiIGJvZHkgd3JhcHBlciBiZWZvcmUgYW5vdGhlciB0YWIgaXMgYWN0aXZhdGVkLiAqL1xuICAgIHByaXZhdGUgdGFiQm9keVdyYXBwZXJIZWlnaHQgPSAwO1xuXG4gICAgLyoqIFN1YnNjcmlwdGlvbiB0byB0YWJzIGJlaW5nIGFkZGVkL3JlbW92ZWQuICovXG4gICAgcHJpdmF0ZSB0YWJzU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gICAgLyoqIFN1YnNjcmlwdGlvbiB0byBjaGFuZ2VzIGluIHRoZSB0YWIgbGFiZWxzLiAqL1xuICAgIHByaXZhdGUgdGFiTGFiZWxTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG4gICAgcHJpdmF0ZSByZXNpemVTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGdyb3VwSWQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc2l6ZURlYm91bmNlSW50ZXJ2YWw6IG51bWJlciA9IDEwMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEF0dHJpYnV0ZSgna2JxLW9sZC10YWJzJykgbGlnaHRUYWJzOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3ZlcnRpY2FsJykgdmVydGljYWw6IHN0cmluZyxcbiAgICAgICAgQEluamVjdChLQlFfVEFCU19DT05GSUcpIEBPcHRpb25hbCgpIGRlZmF1bHRDb25maWc/OiBJS2JxVGFic0NvbmZpZ1xuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmKTtcblxuICAgICAgICB0aGlzLm9sZFRhYiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShsaWdodFRhYnMpO1xuICAgICAgICB0aGlzLnZlcnRpY2FsID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZlcnRpY2FsKTtcblxuICAgICAgICB0aGlzLmdyb3VwSWQgPSBuZXh0SWQrKztcbiAgICAgICAgdGhpcy5hbmltYXRpb25EdXJhdGlvbiA9IGRlZmF1bHRDb25maWc/LmFuaW1hdGlvbkR1cmF0aW9uIHx8ICcwbXMnO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9SZXNpemUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZnRlciB0aGUgY29udGVudCBpcyBjaGVja2VkLCB0aGlzIGNvbXBvbmVudCBrbm93cyB3aGF0IHRhYnMgaGF2ZSBiZWVuIGRlZmluZWRcbiAgICAgKiBhbmQgd2hhdCB0aGUgc2VsZWN0ZWQgaW5kZXggc2hvdWxkIGJlLiBUaGlzIGlzIHdoZXJlIHdlIGNhbiBrbm93IGV4YWN0bHkgd2hhdCBwb3NpdGlvblxuICAgICAqIGVhY2ggdGFiIHNob3VsZCBiZSBpbiBhY2NvcmRpbmcgdG8gdGhlIG5ldyBzZWxlY3RlZCBpbmRleCwgYW5kIGFkZGl0aW9uYWxseSB3ZSBrbm93IGhvd1xuICAgICAqIGEgbmV3IHNlbGVjdGVkIHRhYiBzaG91bGQgdHJhbnNpdGlvbiBpbiAoZnJvbSB0aGUgbGVmdCBvciByaWdodCkuXG4gICAgICovXG4gICAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgICAgICAvLyBEb24ndCBjbGFtcCB0aGUgYGluZGV4VG9TZWxlY3RgIGltbWVkaWF0ZWx5IGluIHRoZSBzZXR0ZXIgYmVjYXVzZSBpdCBjYW4gaGFwcGVuIHRoYXRcbiAgICAgICAgLy8gdGhlIGFtb3VudCBvZiB0YWJzIGNoYW5nZXMgYmVmb3JlIHRoZSBhY3R1YWwgY2hhbmdlIGRldGVjdGlvbiBydW5zLlxuICAgICAgICBjb25zdCBpbmRleFRvU2VsZWN0ID0gdGhpcy5pbmRleFRvU2VsZWN0ID0gdGhpcy5jbGFtcFRhYkluZGV4KHRoaXMuaW5kZXhUb1NlbGVjdCk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gc2VsZWN0ZWQgaW5kZXgsIGVtaXQgYSBjaGFuZ2UgZXZlbnQuIFNob3VsZCBub3QgdHJpZ2dlciBpZlxuICAgICAgICAvLyB0aGUgc2VsZWN0ZWQgaW5kZXggaGFzIG5vdCB5ZXQgYmVlbiBpbml0aWFsaXplZC5cbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSW5kZXggIT09IGluZGV4VG9TZWxlY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RSdW4gPSB0aGlzLl9zZWxlY3RlZEluZGV4ID09IG51bGw7XG5cbiAgICAgICAgICAgIGlmICghaXNGaXJzdFJ1bikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh0aGlzLmNyZWF0ZUNoYW5nZUV2ZW50KGluZGV4VG9TZWxlY3QpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hhbmdpbmcgdGhlc2UgdmFsdWVzIGFmdGVyIGNoYW5nZSBkZXRlY3Rpb24gaGFzIHJ1blxuICAgICAgICAgICAgLy8gc2luY2UgdGhlIGNoZWNrZWQgY29udGVudCBtYXkgY29udGFpbiByZWZlcmVuY2VzIHRvIHRoZW0uXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiLCBpbmRleCkgPT4gdGFiLmlzQWN0aXZlID0gaW5kZXggPT09IGluZGV4VG9TZWxlY3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpc0ZpcnN0UnVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5lbWl0KGluZGV4VG9TZWxlY3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIHBvc2l0aW9uIGZvciBlYWNoIHRhYiBhbmQgb3B0aW9uYWxseSBzZXR1cCBhbiBvcmlnaW4gb24gdGhlIG5leHQgc2VsZWN0ZWQgdGFiLlxuICAgICAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiOiBLYnFUYWIsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHRhYi5wb3NpdGlvbiA9IGluZGV4IC0gaW5kZXhUb1NlbGVjdDtcblxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHNlbGVjdGVkIHRhYiwgdGhlbiBzZXQgdXAgYW4gb3JpZ2luIGZvciB0aGUgbmV4dCBzZWxlY3RlZCB0YWJcbiAgICAgICAgICAgIC8vIGlmIGl0IGRvZXNuJ3QgaGF2ZSBvbmUgYWxyZWFkeS5cbiAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ICE9IG51bGwgJiYgdGFiLnBvc2l0aW9uID09PSAwICYmICF0YWIub3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgdGFiLm9yaWdpbiA9IGluZGV4VG9TZWxlY3QgLSB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCAhPT0gaW5kZXhUb1NlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IGluZGV4VG9TZWxlY3Q7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmliZVRvVGFiTGFiZWxzKCk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIGNoYW5nZXMgaW4gdGhlIGFtb3VudCBvZiB0YWJzLCBpbiBvcmRlciB0byBiZVxuICAgICAgICAvLyBhYmxlIHRvIHJlLXJlbmRlciB0aGUgY29udGVudCBhcyBuZXcgdGFicyBhcmUgYWRkZWQgb3IgcmVtb3ZlZC5cbiAgICAgICAgdGhpcy50YWJzU3Vic2NyaXB0aW9uID0gdGhpcy50YWJzLmNoYW5nZXNcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4VG9TZWxlY3QgPSB0aGlzLmNsYW1wVGFiSW5kZXgodGhpcy5pbmRleFRvU2VsZWN0KTtcblxuICAgICAgICAgICAgICAgIC8vIE1haW50YWluIHRoZSBwcmV2aW91c2x5LXNlbGVjdGVkIHRhYiBpZiBhIG5ldyB0YWIgaXMgYWRkZWQgb3IgcmVtb3ZlZCBhbmQgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgICAgICAvLyBleHBsaWNpdCBjaGFuZ2UgdGhhdCBzZWxlY3RzIGEgZGlmZmVyZW50IHRhYi5cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhUb1NlbGVjdCA9PT0gdGhpcy5fc2VsZWN0ZWRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWJzID0gdGhpcy50YWJzLnRvQXJyYXkoKTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWJzW2ldLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXNzaWduIGJvdGggdG8gdGhlIGBfaW5kZXhUb1NlbGVjdGAgYW5kIGBfc2VsZWN0ZWRJbmRleGAgc28gd2UgZG9uJ3QgZmlyZSBhIGNoYW5nZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVudCwgb3RoZXJ3aXNlIHRoZSBjb25zdW1lciBtYXkgZW5kIHVwIGluIGFuIGluZmluaXRlIGxvb3AgaW4gc29tZSBlZGdlIGNhc2VzIGxpa2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGRpbmcgYSB0YWIgd2l0aGluIHRoZSBgc2VsZWN0ZWRJbmRleENoYW5nZWAgZXZlbnQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleFRvU2VsZWN0ID0gdGhpcy5fc2VsZWN0ZWRJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmliZVRvVGFiTGFiZWxzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja092ZXJmbG93KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudGFic1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnRhYkxhYmVsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgZm9jdXNDaGFuZ2VkKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5mb2N1c0NoYW5nZS5lbWl0KHRoaXMuY3JlYXRlQ2hhbmdlRXZlbnQoaW5kZXgpKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBhIHVuaXF1ZSBpZCBmb3IgZWFjaCB0YWIgbGFiZWwgZWxlbWVudCAqL1xuICAgIGdldFRhYkxhYmVsSWQoaTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBrYnEtdGFiLWxhYmVsLSR7dGhpcy5ncm91cElkfS0ke2l9YDtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBhIHVuaXF1ZSBpZCBmb3IgZWFjaCB0YWIgY29udGVudCBlbGVtZW50ICovXG4gICAgZ2V0VGFiQ29udGVudElkKGk6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBga2JxLXRhYi1jb250ZW50LSR7dGhpcy5ncm91cElkfS0ke2l9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBoZWlnaHQgb2YgdGhlIGJvZHkgd3JhcHBlciB0byB0aGUgaGVpZ2h0IG9mIHRoZSBhY3RpdmF0aW5nIHRhYiBpZiBkeW5hbWljXG4gICAgICogaGVpZ2h0IHByb3BlcnR5IGlzIHRydWUuXG4gICAgICovXG4gICAgc2V0VGFiQm9keVdyYXBwZXJIZWlnaHQodGFiSGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9keW5hbWljSGVpZ2h0IHx8ICF0aGlzLnRhYkJvZHlXcmFwcGVySGVpZ2h0KSB7IHJldHVybjsgfVxuXG4gICAgICAgIGNvbnN0IHdyYXBwZXI6IEhUTUxFbGVtZW50ID0gdGhpcy50YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIHdyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gYCR7dGhpcy50YWJCb2R5V3JhcHBlckhlaWdodH1weGA7XG5cbiAgICAgICAgLy8gVGhpcyBjb25kaXRpb25hbCBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcGFpbnQgdGhlIGhlaWdodCBzbyB0aGF0XG4gICAgICAgIC8vIHRoZSBhbmltYXRpb24gdG8gdGhlIG5ldyBoZWlnaHQgY2FuIGhhdmUgYW4gb3JpZ2luLlxuICAgICAgICBpZiAodGhpcy50YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkge1xuICAgICAgICAgICAgd3JhcHBlci5zdHlsZS5oZWlnaHQgPSBgJHt0YWJIZWlnaHR9cHhgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZXMgdGhlIGhlaWdodCBvZiB0aGUgdGFiIGJvZHkgd3JhcHBlci4gKi9cbiAgICByZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJCb2R5V3JhcHBlckhlaWdodCA9IHRoaXMudGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHRoaXMudGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnJztcbiAgICAgICAgdGhpcy5hbmltYXRpb25Eb25lLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlIGNsaWNrIGV2ZW50cywgc2V0dGluZyBuZXcgc2VsZWN0ZWQgaW5kZXggaWYgYXBwcm9wcmlhdGUuICovXG4gICAgaGFuZGxlQ2xpY2sodGFiOiBLYnFUYWIsIHRhYkhlYWRlcjogS2JxVGFiSGVhZGVyLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0YWIuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGFiSGVhZGVyLmZvY3VzSW5kZXggPSBpbmRleDtcbiAgICB9XG5cbiAgICAvKiogUmV0cmlldmVzIHRoZSB0YWJpbmRleCBmb3IgdGhlIHRhYi4gKi9cbiAgICBnZXRUYWJJbmRleCh0YWI6IEticVRhYiwgaW5kZXg6IG51bWJlcik6IG51bWJlciB8IG51bGwge1xuICAgICAgICBpZiAodGFiLmRpc2FibGVkKSB7IHJldHVybiBudWxsOyB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gaW5kZXggPyAwIDogLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja092ZXJmbG93ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnRhYkhlYWRlci5pdGVtc1xuICAgICAgICAgICAgLmZvckVhY2goKGhlYWRlclRhYikgPT4gaGVhZGVyVGFiLmNoZWNrT3ZlcmZsb3coKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDaGFuZ2VFdmVudChpbmRleDogbnVtYmVyKTogS2JxVGFiQ2hhbmdlRXZlbnQge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBLYnFUYWJDaGFuZ2VFdmVudCgpO1xuICAgICAgICBldmVudC5pbmRleCA9IGluZGV4O1xuXG4gICAgICAgIGlmICh0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmxlbmd0aCkge1xuICAgICAgICAgICAgZXZlbnQudGFiID0gdGhpcy50YWJzLnRvQXJyYXkoKVtpbmRleF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlcyB0byBjaGFuZ2VzIGluIHRoZSB0YWIgbGFiZWxzLiBUaGlzIGlzIG5lZWRlZCwgYmVjYXVzZSB0aGUgQElucHV0IGZvciB0aGUgbGFiZWwgaXNcbiAgICAgKiBvbiB0aGUgS2JxVGFiIGNvbXBvbmVudCwgd2hlcmVhcyB0aGUgZGF0YSBiaW5kaW5nIGlzIGluc2lkZSB0aGUgS2JxVGFiR3JvdXAuIEluIG9yZGVyIGZvciB0aGVcbiAgICAgKiBiaW5kaW5nIHRvIGJlIHVwZGF0ZWQsIHdlIG5lZWQgdG8gc3Vic2NyaWJlIHRvIGNoYW5nZXMgaW4gaXQgYW5kIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgICAqIG1hbnVhbGx5LlxuICAgICAqL1xuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9UYWJMYWJlbHMoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhYkxhYmVsU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkxhYmVsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYkxhYmVsU3Vic2NyaXB0aW9uID0gbWVyZ2UoLi4udGhpcy50YWJzLm1hcCgodGFiKSA9PiB0YWIuc3RhdGVDaGFuZ2VzKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1Jlc2l6ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZlcnRpY2FsKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uID0gdGhpcy5yZXNpemVTdHJlYW1cbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLnJlc2l6ZURlYm91bmNlSW50ZXJ2YWwpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLmNoZWNrT3ZlcmZsb3cpO1xuICAgIH1cblxuICAgIC8qKiBDbGFtcHMgdGhlIGdpdmVuIGluZGV4IHRvIHRoZSBib3VuZHMgb2YgMCBhbmQgdGhlIHRhYnMgbGVuZ3RoLiAqL1xuICAgIHByaXZhdGUgY2xhbXBUYWJJbmRleChpbmRleDogbnVtYmVyIHwgbnVsbCk6IG51bWJlciB7XG4gICAgICAgIC8vIE5vdGUgdGhlIGB8fCAwYCwgd2hpY2ggZW5zdXJlcyB0aGF0IHZhbHVlcyBsaWtlIE5hTiBjYW4ndCBnZXQgdGhyb3VnaFxuICAgICAgICAvLyBhbmQgd2hpY2ggd291bGQgb3RoZXJ3aXNlIHRocm93IHRoZSBjb21wb25lbnQgaW50byBhbiBpbmZpbml0ZSBsb29wXG4gICAgICAgIC8vIChzaW5jZSBLYnFoLm1heChOYU4sIDApID09PSBOYU4pLlxuICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy50YWJzLmxlbmd0aCAtIDEsIE1hdGgubWF4KGluZGV4IHx8IDAsIDApKTtcbiAgICB9XG59XG4iLCI8a2JxLXRhYi1oZWFkZXJcbiAgICAjdGFiSGVhZGVyXG4gICAgW3ZlcnRpY2FsXT1cInZlcnRpY2FsXCJcbiAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZEluZGV4XCJcbiAgICAoaW5kZXhGb2N1c2VkKT1cImZvY3VzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAoc2VsZWN0Rm9jdXNlZEluZGV4KT1cInNlbGVjdGVkSW5kZXggPSAkZXZlbnRcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJrYnEtdGFiLWxhYmVsXCJcbiAgICAgICAgIG1jVGFiTGFiZWxXcmFwcGVyXG4gICAgICAgICBjZGtNb25pdG9yRWxlbWVudEZvY3VzXG4gICAgICAgICBbYXR0ci50YWJpbmRleF09XCJnZXRUYWJJbmRleCh0YWIsIGkpXCJcbiAgICAgICAgIFtjbGFzcy5rYnEtdGFiLWxhYmVsX29sZF09XCJvbGRUYWJcIlxuICAgICAgICAgW2NsYXNzLmticS10YWItbGFiZWxfaG9yaXpvbnRhbF09XCIhdmVydGljYWwgJiYgIW9sZFRhYlwiXG4gICAgICAgICBbY2xhc3Mua2JxLXRhYi1sYWJlbF92ZXJ0aWNhbF09XCJ2ZXJ0aWNhbCAmJiAhb2xkVGFiXCJcbiAgICAgICAgIFtjbGFzcy5rYnEtdGFiLWxhYmVsX2VtcHR5XT1cInRhYi5lbXB0eVwiXG4gICAgICAgICBbY2xhc3Mua2JxLWFjdGl2ZV09XCJzZWxlY3RlZEluZGV4ID09IGlcIlxuICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgIFt0YWJdPVwidGFiXCJcbiAgICAgICAgIFtpZF09XCJnZXRUYWJMYWJlbElkKGkpXCJcbiAgICAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxuICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKHRhYiwgdGFiSGVhZGVyLCBpKVwiXG5cbiAgICAgICAgIFttY1Rvb2x0aXBdPVwidGFiLnRvb2x0aXBUaXRsZVwiXG4gICAgICAgICBbbWNUb29sdGlwRGlzYWJsZWRdPVwiIXRhYi5lbXB0eSAmJiAhdGFiLmlzT3ZlcmZsb3duXCJcbiAgICAgICAgIFttY1RyaWdnZXJdPVwiJ2hvdmVyLCBmb2N1cydcIlxuICAgICAgICAgW21jUGxhY2VtZW50XT1cInRhYi50b29sdGlwUGxhY2VtZW50XCI+XG5cbiAgICAgICAgPGRpdiAjbGFiZWxDb250ZW50IGNsYXNzPVwia2JxLXRhYi1sYWJlbF9fY29udGVudFwiXG4gICAgICAgICAgICBbY2xhc3Mua2JxLXRhYi1sYWJlbF9fdGVtcGxhdGVdPVwidGFiLnRlbXBsYXRlTGFiZWxcIj5cbiAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgYSBsYWJlbCB0ZW1wbGF0ZSwgdXNlIGl0LiAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ0YWIudGVtcGxhdGVMYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInRhYi50ZW1wbGF0ZUxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgbm90IGEgbGFiZWwgdGVtcGxhdGUsIGZhbGwgYmFjayB0byB0aGUgdGV4dCBsYWJlbC4gLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIXRhYi50ZW1wbGF0ZUxhYmVsXCI+e3sgdGFiLnRleHRMYWJlbCB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9rYnEtdGFiLWhlYWRlcj5cblxuPGRpdiBjbGFzcz1cImticS10YWItYm9keV9fd3JhcHBlclwiICN0YWJCb2R5V3JhcHBlcj5cbiAgICA8a2JxLXRhYi1ib2R5XG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtpZF09XCJnZXRUYWJDb250ZW50SWQoaSlcIlxuICAgICAgICBbY2xhc3Mua2JxLXRhYi1ib2R5X19hY3RpdmVdPVwic2VsZWN0ZWRJbmRleCA9PSBpXCJcbiAgICAgICAgW2NvbnRlbnRdPVwidGFiLmNvbnRlbnQhXCJcbiAgICAgICAgW3Bvc2l0aW9uXT1cInRhYi5wb3NpdGlvbiFcIlxuICAgICAgICBbb3JpZ2luXT1cInRhYi5vcmlnaW4hXCJcbiAgICAgICAgW2FuaW1hdGlvbkR1cmF0aW9uXT1cImFuaW1hdGlvbkR1cmF0aW9uXCJcbiAgICAgICAgKG9uQ2VudGVyZWQpPVwicmVtb3ZlVGFiQm9keVdyYXBwZXJIZWlnaHQoKVwiXG4gICAgICAgIChvbkNlbnRlcmluZyk9XCJzZXRUYWJCb2R5V3JhcHBlckhlaWdodCgkZXZlbnQpXCI+XG4gICAgPC9rYnEtdGFiLWJvZHk+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,67 @@
1
+ import { Directionality } from '@angular/cdk/bidi';
2
+ import { Platform } from '@angular/cdk/platform';
3
+ import { ViewportRuler } from '@angular/cdk/scrolling';
4
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, Inject, Input, NgZone, Optional, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';
5
+ import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';
6
+ import { KbqPaginatedTabHeader } from './paginated-tab-header';
7
+ import { KbqTabLabelWrapper } from './tab-label-wrapper.directive';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/cdk/scrolling";
10
+ import * as i2 from "@angular/cdk/platform";
11
+ import * as i3 from "@angular/cdk/bidi";
12
+ import * as i4 from "@koobiq/components/icon";
13
+ /**
14
+ * The header of the tab group which displays a list of all the tabs in the tab group.
15
+ * When the tabs list's width exceeds the width of the header container,
16
+ * then arrows will be displayed to allow the user to scroll
17
+ * left and right across the header.
18
+ * @docs-private
19
+ */
20
+ export class KbqTabHeader extends KbqPaginatedTabHeader {
21
+ constructor(elementRef, changeDetectorRef, viewportRuler, ngZone, platform, dir, animationMode) {
22
+ super(elementRef, changeDetectorRef, viewportRuler, ngZone, platform, dir, animationMode);
23
+ this.elementRef = elementRef;
24
+ this.changeDetectorRef = changeDetectorRef;
25
+ /** The index of the active tab. */
26
+ this.vertical = false;
27
+ }
28
+ itemSelected(event) {
29
+ event.preventDefault();
30
+ }
31
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTabHeader, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: i2.Platform }, { token: i3.Directionality, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
32
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqTabHeader, selector: "kbq-tab-header", inputs: { selectedIndex: "selectedIndex", vertical: "vertical" }, outputs: { selectFocusedIndex: "selectFocusedIndex", indexFocused: "indexFocused" }, host: { properties: { "class.kbq-tab-header_vertical": "vertical", "class.kbq-tab-header__pagination-controls_enabled": "showPaginationControls", "class.kbq-tab-header_rtl": "getLayoutDirection() == 'rtl'" }, classAttribute: "kbq-tab-header" }, queries: [{ propertyName: "items", predicate: KbqTabLabelWrapper }], viewQueries: [{ propertyName: "tabListContainer", first: true, predicate: ["tabListContainer"], descendants: true, static: true }, { propertyName: "tabList", first: true, predicate: ["tabList"], descendants: true, static: true }, { propertyName: "nextPaginator", first: true, predicate: ["nextPaginator"], descendants: true }, { propertyName: "previousPaginator", first: true, predicate: ["previousPaginator"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"kbq-tab-header__pagination kbq-tab-header__pagination_before\"\n #previousPaginator\n [class.kbq-disabled]=\"disableScrollBefore\"\n (click)=\"handlePaginatorClick('before')\"\n (mousedown)=\"handlePaginatorPress('before', $event)\"\n (touchend)=\"stopInterval()\">\n\n <i kbq-icon=\"mc-angle-left-M_16\"></i>\n</div>\n\n<div class=\"kbq-tab-header__content\"\n #tabListContainer\n (keydown)=\"handleKeydown($event)\">\n\n <div class=\"kbq-tab-list\"\n #tabList\n (cdkObserveContent)=\"onContentChanges()\">\n <div class=\"kbq-tab-list__content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<div class=\"kbq-tab-header__pagination kbq-tab-header__pagination_after\"\n #nextPaginator\n [class.kbq-disabled]=\"disableScrollAfter\"\n (mousedown)=\"handlePaginatorPress('after', $event)\"\n (click)=\"handlePaginatorClick('after')\"\n (touchend)=\"stopInterval()\">\n\n <i kbq-icon=\"mc-angle-right-M_16\"></i>\n</div>\n", styles: [".kbq-tab-label.cdk-keyboard-focused:after{display:block;content:\"\";position:absolute;top:0;right:calc(-1 * var(--kbq-tabs-size-border-width, 1px));bottom:calc(-1 * var(--kbq-tabs-size-border-width, 1px));left:calc(-1 * var(--kbq-tabs-size-border-width, 1px))}.kbq-tab-label.kbq-tab-label_horizontal.cdk-keyboard-focused:after,.kbq-tab-label_old.cdk-keyboard-focused:after{border-width:calc(var(--kbq-tabs-size-border-width, 1px) * 2);border-style:solid;border-top-left-radius:var(--kbq-tabs-size-border-radius, 8px);border-top-right-radius:var(--kbq-tabs-size-border-radius, 8px);border-bottom-color:transparent}.kbq-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.kbq-tab-list__content{display:flex}.kbq-tab-group_align-labels-center .kbq-tab-list__content{justify-content:center}.kbq-tab-group_align-labels-end .kbq-tab-list__content{justify-content:flex-end}.kbq-tab-header_vertical .kbq-tab-list__content{flex-direction:column}.kbq-tab-header__pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none;padding-left:12px;padding-right:12px;border-bottom-style:solid;border-bottom-width:var(--kbq-tabs-size-border-width, 1px)}.kbq-tab-header__pagination.kbq-tab-header__pagination_before{border-right-style:solid;border-right-width:var(--kbq-tabs-size-border-width, 1px)}.kbq-tab-header__pagination.kbq-tab-header__pagination_after{border-left-style:solid;border-left-width:var(--kbq-tabs-size-border-width, 1px)}.kbq-tab-header__pagination-controls_enabled .kbq-tab-header__pagination{display:flex}.kbq-tab-header__content{display:flex;flex-grow:1;z-index:1;overflow:hidden}.kbq-tab-list{position:relative;width:100%;transition:transform .5s cubic-bezier(.35,0,.25,1)}.kbq-tab-label{position:relative;box-sizing:border-box;display:inline-flex;justify-content:center;align-items:center;height:var(--kbq-tabs-size-height, 40px);text-align:center;white-space:nowrap;cursor:pointer;padding-right:var(--kbq-tabs-size-padding-horizontal, 16px);padding-left:var(--kbq-tabs-size-padding-horizontal, 16px);outline:none;-webkit-user-select:none;user-select:none}.kbq-tab-label.kbq-active{cursor:default}.kbq-tab-label.kbq-active:before{display:block;content:\"\";position:absolute}.kbq-tab-label.cdk-keyboard-focused{z-index:1}.kbq-tab-label:first-child.cdk-keyboard-focused:after{left:0}.kbq-tab-label:last-child.cdk-keyboard-focused:after{right:0}.kbq-tab-label[disabled]{pointer-events:none}.kbq-tab-label .kbq-tab-label__content>.kbq-icon.kbq-icon_left{margin-right:var(--kbq-tabs-size-label-icon-margin, 8px)}.kbq-tab-label .kbq-tab-label__content>.kbq-icon.kbq-icon_right{margin-left:var(--kbq-tabs-size-label-icon-margin, 8px)}.kbq-tab-label.kbq-tab-label_horizontal{border-bottom-width:var(--kbq-tabs-size-border-width, 1px);border-bottom-style:solid}.kbq-tab-label.kbq-tab-label_horizontal.kbq-active:before{bottom:calc(-1 * var(--kbq-tabs-size-border-width, 1px));left:0;right:0;height:var(--kbq-tabs-size-highlight-height, 4px)}.kbq-tab-label.kbq-tab-label_vertical{justify-content:flex-start}.kbq-tab-label.kbq-tab-label_vertical.kbq-active:before{top:0;bottom:0;left:calc(-1 * var(--kbq-tabs-size-border-width, 1px));width:var(--kbq-tabs-size-highlight-height, 5px)}.kbq-tab-label.kbq-tab-label_vertical.cdk-keyboard-focused:after{right:0;left:0;border-width:calc(var(--kbq-tabs-size-border-width, 1px) * 2);border-style:solid}.kbq-tab-label.kbq-tab-label_vertical .kbq-tab-label__content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kbq-tab-label_old{border-bottom-width:var(--kbq-tabs-size-border-width, 1px);border-bottom-style:solid;border-width:var(--kbq-tabs-size-border-width, 1px);border-style:solid;border-top-left-radius:var(--kbq-tabs-size-border-radius, 8px);border-top-right-radius:var(--kbq-tabs-size-border-radius, 8px);border-left:none;border-left-color:transparent;border-right:none;border-right-color:transparent}.kbq-tab-label_old.kbq-active{border-width:var(--kbq-tabs-size-border-width, 1px);border-style:solid;padding-right:calc(var(--kbq-tabs-size-padding-horizontal, 16px) - var(--kbq-tabs-size-border-width, 1px));padding-left:calc(var(--kbq-tabs-size-padding-horizontal, 16px) - var(--kbq-tabs-size-border-width, 1px))}.kbq-tab-label_old.kbq-active.cdk-keyboard-focused:after{right:calc(-2 * var(--kbq-tabs-size-border-width, 1px));left:calc(-2 * var(--kbq-tabs-size-border-width, 1px))}.kbq-tab-label_old.cdk-keyboard-focused:after{top:-1px}.kbq-tab-group_stretch-labels .kbq-tab-label,.kbq-tab-group_stretch-labels .kbq-tab-label_old{flex-basis:0;flex-grow:1}\n"], dependencies: [{ kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTabHeader, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'kbq-tab-header', inputs: ['selectedIndex'], outputs: ['selectFocusedIndex', 'indexFocused'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: {
37
+ class: 'kbq-tab-header',
38
+ '[class.kbq-tab-header_vertical]': 'vertical',
39
+ '[class.kbq-tab-header__pagination-controls_enabled]': 'showPaginationControls',
40
+ '[class.kbq-tab-header_rtl]': 'getLayoutDirection() == \'rtl\''
41
+ }, template: "<div class=\"kbq-tab-header__pagination kbq-tab-header__pagination_before\"\n #previousPaginator\n [class.kbq-disabled]=\"disableScrollBefore\"\n (click)=\"handlePaginatorClick('before')\"\n (mousedown)=\"handlePaginatorPress('before', $event)\"\n (touchend)=\"stopInterval()\">\n\n <i kbq-icon=\"mc-angle-left-M_16\"></i>\n</div>\n\n<div class=\"kbq-tab-header__content\"\n #tabListContainer\n (keydown)=\"handleKeydown($event)\">\n\n <div class=\"kbq-tab-list\"\n #tabList\n (cdkObserveContent)=\"onContentChanges()\">\n <div class=\"kbq-tab-list__content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<div class=\"kbq-tab-header__pagination kbq-tab-header__pagination_after\"\n #nextPaginator\n [class.kbq-disabled]=\"disableScrollAfter\"\n (mousedown)=\"handlePaginatorPress('after', $event)\"\n (click)=\"handlePaginatorClick('after')\"\n (touchend)=\"stopInterval()\">\n\n <i kbq-icon=\"mc-angle-right-M_16\"></i>\n</div>\n", styles: [".kbq-tab-label.cdk-keyboard-focused:after{display:block;content:\"\";position:absolute;top:0;right:calc(-1 * var(--kbq-tabs-size-border-width, 1px));bottom:calc(-1 * var(--kbq-tabs-size-border-width, 1px));left:calc(-1 * var(--kbq-tabs-size-border-width, 1px))}.kbq-tab-label.kbq-tab-label_horizontal.cdk-keyboard-focused:after,.kbq-tab-label_old.cdk-keyboard-focused:after{border-width:calc(var(--kbq-tabs-size-border-width, 1px) * 2);border-style:solid;border-top-left-radius:var(--kbq-tabs-size-border-radius, 8px);border-top-right-radius:var(--kbq-tabs-size-border-radius, 8px);border-bottom-color:transparent}.kbq-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.kbq-tab-list__content{display:flex}.kbq-tab-group_align-labels-center .kbq-tab-list__content{justify-content:center}.kbq-tab-group_align-labels-end .kbq-tab-list__content{justify-content:flex-end}.kbq-tab-header_vertical .kbq-tab-list__content{flex-direction:column}.kbq-tab-header__pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none;padding-left:12px;padding-right:12px;border-bottom-style:solid;border-bottom-width:var(--kbq-tabs-size-border-width, 1px)}.kbq-tab-header__pagination.kbq-tab-header__pagination_before{border-right-style:solid;border-right-width:var(--kbq-tabs-size-border-width, 1px)}.kbq-tab-header__pagination.kbq-tab-header__pagination_after{border-left-style:solid;border-left-width:var(--kbq-tabs-size-border-width, 1px)}.kbq-tab-header__pagination-controls_enabled .kbq-tab-header__pagination{display:flex}.kbq-tab-header__content{display:flex;flex-grow:1;z-index:1;overflow:hidden}.kbq-tab-list{position:relative;width:100%;transition:transform .5s cubic-bezier(.35,0,.25,1)}.kbq-tab-label{position:relative;box-sizing:border-box;display:inline-flex;justify-content:center;align-items:center;height:var(--kbq-tabs-size-height, 40px);text-align:center;white-space:nowrap;cursor:pointer;padding-right:var(--kbq-tabs-size-padding-horizontal, 16px);padding-left:var(--kbq-tabs-size-padding-horizontal, 16px);outline:none;-webkit-user-select:none;user-select:none}.kbq-tab-label.kbq-active{cursor:default}.kbq-tab-label.kbq-active:before{display:block;content:\"\";position:absolute}.kbq-tab-label.cdk-keyboard-focused{z-index:1}.kbq-tab-label:first-child.cdk-keyboard-focused:after{left:0}.kbq-tab-label:last-child.cdk-keyboard-focused:after{right:0}.kbq-tab-label[disabled]{pointer-events:none}.kbq-tab-label .kbq-tab-label__content>.kbq-icon.kbq-icon_left{margin-right:var(--kbq-tabs-size-label-icon-margin, 8px)}.kbq-tab-label .kbq-tab-label__content>.kbq-icon.kbq-icon_right{margin-left:var(--kbq-tabs-size-label-icon-margin, 8px)}.kbq-tab-label.kbq-tab-label_horizontal{border-bottom-width:var(--kbq-tabs-size-border-width, 1px);border-bottom-style:solid}.kbq-tab-label.kbq-tab-label_horizontal.kbq-active:before{bottom:calc(-1 * var(--kbq-tabs-size-border-width, 1px));left:0;right:0;height:var(--kbq-tabs-size-highlight-height, 4px)}.kbq-tab-label.kbq-tab-label_vertical{justify-content:flex-start}.kbq-tab-label.kbq-tab-label_vertical.kbq-active:before{top:0;bottom:0;left:calc(-1 * var(--kbq-tabs-size-border-width, 1px));width:var(--kbq-tabs-size-highlight-height, 5px)}.kbq-tab-label.kbq-tab-label_vertical.cdk-keyboard-focused:after{right:0;left:0;border-width:calc(var(--kbq-tabs-size-border-width, 1px) * 2);border-style:solid}.kbq-tab-label.kbq-tab-label_vertical .kbq-tab-label__content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kbq-tab-label_old{border-bottom-width:var(--kbq-tabs-size-border-width, 1px);border-bottom-style:solid;border-width:var(--kbq-tabs-size-border-width, 1px);border-style:solid;border-top-left-radius:var(--kbq-tabs-size-border-radius, 8px);border-top-right-radius:var(--kbq-tabs-size-border-radius, 8px);border-left:none;border-left-color:transparent;border-right:none;border-right-color:transparent}.kbq-tab-label_old.kbq-active{border-width:var(--kbq-tabs-size-border-width, 1px);border-style:solid;padding-right:calc(var(--kbq-tabs-size-padding-horizontal, 16px) - var(--kbq-tabs-size-border-width, 1px));padding-left:calc(var(--kbq-tabs-size-padding-horizontal, 16px) - var(--kbq-tabs-size-border-width, 1px))}.kbq-tab-label_old.kbq-active.cdk-keyboard-focused:after{right:calc(-2 * var(--kbq-tabs-size-border-width, 1px));left:calc(-2 * var(--kbq-tabs-size-border-width, 1px))}.kbq-tab-label_old.cdk-keyboard-focused:after{top:-1px}.kbq-tab-group_stretch-labels .kbq-tab-label,.kbq-tab-group_stretch-labels .kbq-tab-label_old{flex-basis:0;flex-grow:1}\n"] }]
42
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: i2.Platform }, { type: i3.Directionality, decorators: [{
43
+ type: Optional
44
+ }] }, { type: undefined, decorators: [{
45
+ type: Optional
46
+ }, {
47
+ type: Inject,
48
+ args: [ANIMATION_MODULE_TYPE]
49
+ }] }]; }, propDecorators: { vertical: [{
50
+ type: Input
51
+ }], items: [{
52
+ type: ContentChildren,
53
+ args: [KbqTabLabelWrapper, { descendants: false }]
54
+ }], tabListContainer: [{
55
+ type: ViewChild,
56
+ args: ['tabListContainer', { static: true }]
57
+ }], tabList: [{
58
+ type: ViewChild,
59
+ args: ['tabList', { static: true }]
60
+ }], nextPaginator: [{
61
+ type: ViewChild,
62
+ args: ['nextPaginator']
63
+ }], previousPaginator: [{
64
+ type: ViewChild,
65
+ args: ['previousPaginator']
66
+ }] } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RhYnMvdGFiLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RhYnMvdGFiLWhlYWRlci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUU3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7O0FBV25FOzs7Ozs7R0FNRztBQWdCSCxNQUFNLE9BQU8sWUFBYSxTQUFRLHFCQUFxQjtJQVVuRCxZQUNhLFVBQXNCLEVBQ3RCLGlCQUFvQyxFQUM3QyxhQUE0QixFQUM1QixNQUFjLEVBQ2QsUUFBa0IsRUFDTixHQUFtQixFQUNZLGFBQXNCO1FBRWpFLEtBQUssQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBUmpGLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVhqRCxtQ0FBbUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztJQWtCbkMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFvQjtRQUM3QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0IsQ0FBQztpSUF4QlEsWUFBWSxzTUFpQkcscUJBQXFCO3FIQWpCcEMsWUFBWSx3ZEFJSixrQkFBa0IscWVDekR2QyxzaENBZ0NBOzsyRkRxQmEsWUFBWTtrQkFmeEIsU0FBUzsrQkFDSSxnQkFBZ0IsVUFHbEIsQ0FBQyxlQUFlLENBQUMsV0FDaEIsQ0FBQyxvQkFBb0IsRUFBRSxjQUFjLENBQUMsaUJBQ2hDLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE9BQU8sUUFDMUM7d0JBQ0YsS0FBSyxFQUFFLGdCQUFnQjt3QkFDdkIsaUNBQWlDLEVBQUUsVUFBVTt3QkFDN0MscURBQXFELEVBQUUsd0JBQXdCO3dCQUMvRSw0QkFBNEIsRUFBRSxpQ0FBaUM7cUJBQ2xFOzswQkFrQkksUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7NENBZnBDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRXVELEtBQUs7c0JBQWpFLGVBQWU7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO2dCQUNWLGdCQUFnQjtzQkFBaEUsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1AsT0FBTztzQkFBOUMsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNWLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDTSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBWaWV3cG9ydFJ1bGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBTklNQVRJT05fTU9EVUxFX1RZUEUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuXG5pbXBvcnQgeyBLYnFQYWdpbmF0ZWRUYWJIZWFkZXIgfSBmcm9tICcuL3BhZ2luYXRlZC10YWItaGVhZGVyJztcbmltcG9ydCB7IEticVRhYkxhYmVsV3JhcHBlciB9IGZyb20gJy4vdGFiLWxhYmVsLXdyYXBwZXIuZGlyZWN0aXZlJztcblxuXG4vKipcbiAqIFRoZSBkaXJlY3Rpb25zIHRoYXQgc2Nyb2xsaW5nIGNhbiBnbyBpbiB3aGVuIHRoZSBoZWFkZXIncyB0YWJzIGV4Y2VlZCB0aGUgaGVhZGVyIHdpZHRoLiAnQWZ0ZXInXG4gKiB3aWxsIHNjcm9sbCB0aGUgaGVhZGVyIHRvd2FyZHMgdGhlIGVuZCBvZiB0aGUgdGFicyBsaXN0IGFuZCAnYmVmb3JlJyB3aWxsIHNjcm9sbCB0b3dhcmRzIHRoZVxuICogYmVnaW5uaW5nIG9mIHRoZSBsaXN0LlxuICovXG5leHBvcnQgdHlwZSBTY3JvbGxEaXJlY3Rpb24gPSAnYWZ0ZXInIHwgJ2JlZm9yZSc7XG5cblxuLyoqXG4gKiBUaGUgaGVhZGVyIG9mIHRoZSB0YWIgZ3JvdXAgd2hpY2ggZGlzcGxheXMgYSBsaXN0IG9mIGFsbCB0aGUgdGFicyBpbiB0aGUgdGFiIGdyb3VwLlxuICogV2hlbiB0aGUgdGFicyBsaXN0J3Mgd2lkdGggZXhjZWVkcyB0aGUgd2lkdGggb2YgdGhlIGhlYWRlciBjb250YWluZXIsXG4gKiB0aGVuIGFycm93cyB3aWxsIGJlIGRpc3BsYXllZCB0byBhbGxvdyB0aGUgdXNlciB0byBzY3JvbGxcbiAqIGxlZnQgYW5kIHJpZ2h0IGFjcm9zcyB0aGUgaGVhZGVyLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWItaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RhYi1oZWFkZXIuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3RhYi1oZWFkZXIuc2NzcyddLFxuICAgIGlucHV0czogWydzZWxlY3RlZEluZGV4J10sXG4gICAgb3V0cHV0czogWydzZWxlY3RGb2N1c2VkSW5kZXgnLCAnaW5kZXhGb2N1c2VkJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS10YWItaGVhZGVyJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFiLWhlYWRlcl92ZXJ0aWNhbF0nOiAndmVydGljYWwnLFxuICAgICAgICAnW2NsYXNzLmticS10YWItaGVhZGVyX19wYWdpbmF0aW9uLWNvbnRyb2xzX2VuYWJsZWRdJzogJ3Nob3dQYWdpbmF0aW9uQ29udHJvbHMnLFxuICAgICAgICAnW2NsYXNzLmticS10YWItaGVhZGVyX3J0bF0nOiAnZ2V0TGF5b3V0RGlyZWN0aW9uKCkgPT0gXFwncnRsXFwnJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxVGFiSGVhZGVyIGV4dGVuZHMgS2JxUGFnaW5hdGVkVGFiSGVhZGVyIHtcbiAgICAvKiogVGhlIGluZGV4IG9mIHRoZSBhY3RpdmUgdGFiLiAqL1xuICAgIEBJbnB1dCgpIHZlcnRpY2FsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEticVRhYkxhYmVsV3JhcHBlciwgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgaXRlbXM6IFF1ZXJ5TGlzdDxLYnFUYWJMYWJlbFdyYXBwZXI+O1xuICAgIEBWaWV3Q2hpbGQoJ3RhYkxpc3RDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJMaXN0Q29udGFpbmVyOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ3RhYkxpc3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJMaXN0OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ25leHRQYWdpbmF0b3InKSBuZXh0UGFnaW5hdG9yOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdwcmV2aW91c1BhZ2luYXRvcicpIHByZXZpb3VzUGFnaW5hdG9yOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIGRpcjogRGlyZWN0aW9uYWxpdHksXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQU5JTUFUSU9OX01PRFVMRV9UWVBFKSBhbmltYXRpb25Nb2RlPzogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNoYW5nZURldGVjdG9yUmVmLCB2aWV3cG9ydFJ1bGVyLCBuZ1pvbmUsIHBsYXRmb3JtLCBkaXIsIGFuaW1hdGlvbk1vZGUpO1xuICAgIH1cblxuICAgIGl0ZW1TZWxlY3RlZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJrYnEtdGFiLWhlYWRlcl9fcGFnaW5hdGlvbiBrYnEtdGFiLWhlYWRlcl9fcGFnaW5hdGlvbl9iZWZvcmVcIlxuICAgICAjcHJldmlvdXNQYWdpbmF0b3JcbiAgICAgW2NsYXNzLmticS1kaXNhYmxlZF09XCJkaXNhYmxlU2Nyb2xsQmVmb3JlXCJcbiAgICAgKGNsaWNrKT1cImhhbmRsZVBhZ2luYXRvckNsaWNrKCdiZWZvcmUnKVwiXG4gICAgIChtb3VzZWRvd24pPVwiaGFuZGxlUGFnaW5hdG9yUHJlc3MoJ2JlZm9yZScsICRldmVudClcIlxuICAgICAodG91Y2hlbmQpPVwic3RvcEludGVydmFsKClcIj5cblxuICAgIDxpIGticS1pY29uPVwibWMtYW5nbGUtbGVmdC1NXzE2XCI+PC9pPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJrYnEtdGFiLWhlYWRlcl9fY29udGVudFwiXG4gICAgICN0YWJMaXN0Q29udGFpbmVyXG4gICAgIChrZXlkb3duKT1cImhhbmRsZUtleWRvd24oJGV2ZW50KVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImticS10YWItbGlzdFwiXG4gICAgICAgICAjdGFiTGlzdFxuICAgICAgICAgKGNka09ic2VydmVDb250ZW50KT1cIm9uQ29udGVudENoYW5nZXMoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLXRhYi1saXN0X19jb250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJrYnEtdGFiLWhlYWRlcl9fcGFnaW5hdGlvbiBrYnEtdGFiLWhlYWRlcl9fcGFnaW5hdGlvbl9hZnRlclwiXG4gICAgICNuZXh0UGFnaW5hdG9yXG4gICAgIFtjbGFzcy5rYnEtZGlzYWJsZWRdPVwiZGlzYWJsZVNjcm9sbEFmdGVyXCJcbiAgICAgKG1vdXNlZG93bik9XCJoYW5kbGVQYWdpbmF0b3JQcmVzcygnYWZ0ZXInLCAkZXZlbnQpXCJcbiAgICAgKGNsaWNrKT1cImhhbmRsZVBhZ2luYXRvckNsaWNrKCdhZnRlcicpXCJcbiAgICAgKHRvdWNoZW5kKT1cInN0b3BJbnRlcnZhbCgpXCI+XG5cbiAgICA8aSBrYnEtaWNvbj1cIm1jLWFuZ2xlLXJpZ2h0LU1fMTZcIj48L2k+XG48L2Rpdj5cbiJdfQ==