design-angular-kit 1.0.0-9 → 1.0.0-prerelease.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +212 -64
  2. package/assets/i18n/en.json +81 -12
  3. package/assets/i18n/it.json +80 -11
  4. package/esm2022/lib/abstracts/abstract-form.component.mjs +187 -0
  5. package/esm2022/lib/abstracts/abstract.component.mjs +45 -0
  6. package/esm2022/lib/components/core/accordion/accordion.component.mjs +39 -0
  7. package/esm2022/lib/components/core/alert/alert.component.mjs +71 -0
  8. package/esm2022/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.mjs +43 -0
  9. package/esm2022/lib/components/core/avatar/avatar-group/avatar-group.component.mjs +38 -0
  10. package/esm2022/lib/components/core/avatar/avatar.directive.mjs +78 -0
  11. package/esm2022/lib/components/core/avatar/avatar.module.mjs +33 -0
  12. package/esm2022/lib/components/core/badge/badge.directive.mjs +39 -0
  13. package/esm2022/lib/components/core/button/button.directive.mjs +86 -0
  14. package/esm2022/lib/components/core/callout/callout.component.mjs +57 -0
  15. package/esm2022/lib/components/core/card/card.component.mjs +59 -0
  16. package/esm2022/lib/components/core/carousel/carousel/carousel.component.mjs +84 -0
  17. package/esm2022/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +19 -0
  18. package/esm2022/lib/components/core/carousel/carousel.module.mjs +18 -0
  19. package/esm2022/lib/components/core/chip/chip.component.mjs +136 -0
  20. package/esm2022/lib/components/core/collapse/collapse.component.mjs +104 -0
  21. package/esm2022/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +24 -0
  22. package/esm2022/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +11 -0
  23. package/esm2022/lib/components/core/dimmer/dimmer.component.mjs +55 -0
  24. package/esm2022/lib/components/core/dimmer/dimmer.module.mjs +19 -0
  25. package/esm2022/lib/components/core/dropdown/dropdown/dropdown.component.mjs +144 -0
  26. package/esm2022/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +61 -0
  27. package/esm2022/lib/components/core/dropdown/dropdown.module.mjs +18 -0
  28. package/esm2022/lib/components/core/forward/forward.directive.mjs +53 -0
  29. package/esm2022/lib/components/core/link/link.component.mjs +42 -0
  30. package/esm2022/lib/components/core/list/list/list.component.mjs +22 -0
  31. package/esm2022/lib/components/core/list/list-item/list-item.component.mjs +51 -0
  32. package/esm2022/lib/components/core/list/list.module.mjs +18 -0
  33. package/esm2022/lib/components/core/modal/modal.component.mjs +194 -0
  34. package/esm2022/lib/components/core/notifications/notifications.component.mjs +111 -0
  35. package/esm2022/lib/components/core/pagination/pagination.component.mjs +130 -0
  36. package/esm2022/lib/components/core/popover/popover.directive.mjs +176 -0
  37. package/esm2022/lib/components/core/progress-bar/progress-bar.component.mjs +34 -0
  38. package/esm2022/lib/components/core/progress-button/progress-button.component.mjs +25 -0
  39. package/esm2022/lib/components/core/spinner/spinner.component.mjs +30 -0
  40. package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +116 -0
  41. package/esm2022/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +20 -0
  42. package/esm2022/lib/components/core/steppers/steppers.module.mjs +18 -0
  43. package/esm2022/lib/components/core/tab/tab-container/tab-container.component.mjs +63 -0
  44. package/esm2022/lib/components/core/tab/tab-item/tab-item.component.mjs +39 -0
  45. package/esm2022/lib/components/core/tab/tab.module.mjs +18 -0
  46. package/esm2022/lib/components/core/table/sort/sort-header/sort-header.component.mjs +134 -0
  47. package/esm2022/lib/components/core/table/sort/sort.directive.mjs +123 -0
  48. package/esm2022/lib/components/core/table/table.component.mjs +45 -0
  49. package/esm2022/lib/components/core/table/table.module.mjs +19 -0
  50. package/esm2022/lib/components/core/tooltip/tooltip.directive.mjs +143 -0
  51. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +106 -0
  52. package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +48 -0
  53. package/esm2022/lib/components/form/form.module.mjs +59 -0
  54. package/esm2022/lib/components/form/input/input.component.mjs +187 -0
  55. package/esm2022/lib/components/form/password-input/password-input.component.mjs +149 -0
  56. package/esm2022/lib/components/form/radio-button/radio-button.component.mjs +60 -0
  57. package/esm2022/lib/components/form/range/range.component.mjs +64 -0
  58. package/esm2022/lib/components/form/rating/rating.component.mjs +50 -0
  59. package/esm2022/lib/components/form/select/select.component.mjs +70 -0
  60. package/esm2022/lib/components/form/textarea/textarea.component.mjs +55 -0
  61. package/esm2022/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +142 -0
  62. package/esm2022/lib/components/form/upload-file-list/upload-file-list.component.mjs +107 -0
  63. package/esm2022/lib/components/navigation/back-button/back-button.component.mjs +67 -0
  64. package/esm2022/lib/components/navigation/back-to-top/back-to-top.component.mjs +58 -0
  65. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +51 -0
  66. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +21 -0
  67. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.module.mjs +18 -0
  68. package/esm2022/lib/components/navigation/header/header.component.mjs +87 -0
  69. package/esm2022/lib/components/navigation/megamenu/megamenu.component.mjs +27 -0
  70. package/esm2022/lib/components/navigation/navbar/navbar/navbar.component.mjs +40 -0
  71. package/esm2022/lib/components/navigation/navbar/navbar-item/navbar-item.component.mjs +11 -0
  72. package/esm2022/lib/components/navigation/navbar/navbar.module.mjs +18 -0
  73. package/esm2022/lib/components/utils/error-page/error-page.component.mjs +74 -0
  74. package/esm2022/lib/components/utils/icon/icon.component.mjs +58 -0
  75. package/esm2022/lib/components/utils/language-switcher/language-switcher.component.mjs +50 -0
  76. package/esm2022/lib/design-angular-kit.module.mjs +213 -0
  77. package/esm2022/lib/enums/colors.enums.mjs +12 -0
  78. package/esm2022/lib/enums/sizes.enum.mjs +9 -0
  79. package/esm2022/lib/interfaces/core.mjs +16 -0
  80. package/esm2022/lib/interfaces/design-angular-kit-config.mjs +7 -0
  81. package/esm2022/lib/interfaces/form.mjs +2 -0
  82. package/esm2022/lib/interfaces/icon.mjs +165 -0
  83. package/esm2022/lib/interfaces/sortable-table.mjs +6 -0
  84. package/esm2022/lib/pipes/date-ago.pipe.mjs +56 -0
  85. package/esm2022/lib/pipes/duration.pipe.mjs +110 -0
  86. package/esm2022/lib/pipes/mark-matching-text.pipe.mjs +48 -0
  87. package/esm2022/lib/provide-design-angular-kit.mjs +61 -0
  88. package/esm2022/lib/services/notification/notification.service.mjs +120 -0
  89. package/esm2022/lib/utils/coercion.mjs +18 -0
  90. package/esm2022/lib/utils/date-utils.mjs +160 -0
  91. package/esm2022/lib/utils/file-utils.mjs +73 -0
  92. package/esm2022/lib/utils/regex.mjs +31 -0
  93. package/esm2022/lib/validators/it-validators.mjs +153 -0
  94. package/esm2022/public_api.mjs +99 -0
  95. package/fesm2022/design-angular-kit.mjs +5556 -0
  96. package/fesm2022/design-angular-kit.mjs.map +1 -0
  97. package/lib/abstracts/{abstract-form-component.d.ts → abstract-form.component.d.ts} +12 -14
  98. package/lib/abstracts/abstract.component.d.ts +18 -8
  99. package/lib/components/core/accordion/accordion.component.d.ts +11 -5
  100. package/lib/components/core/alert/alert.component.d.ts +15 -10
  101. package/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.d.ts +29 -0
  102. package/lib/components/core/avatar/avatar-group/avatar-group.component.d.ts +13 -0
  103. package/lib/components/core/avatar/avatar.directive.d.ts +33 -0
  104. package/lib/components/core/avatar/avatar.module.d.ts +9 -0
  105. package/lib/components/core/badge/badge.directive.d.ts +14 -7
  106. package/lib/components/core/button/button.directive.d.ts +25 -15
  107. package/lib/components/core/callout/callout.component.d.ts +18 -20
  108. package/lib/components/core/card/card.component.d.ts +46 -18
  109. package/lib/components/core/carousel/carousel/carousel.component.d.ts +34 -15
  110. package/lib/components/core/carousel/carousel-item/carousel-item.component.d.ts +8 -3
  111. package/lib/components/core/carousel/carousel.module.d.ts +8 -0
  112. package/lib/components/core/chip/chip.component.d.ts +29 -15
  113. package/lib/components/core/collapse/collapse.component.d.ts +22 -15
  114. package/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.d.ts +3 -3
  115. package/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.d.ts +3 -3
  116. package/lib/components/core/dimmer/dimmer.component.d.ts +6 -6
  117. package/lib/components/core/dimmer/dimmer.module.d.ts +9 -0
  118. package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +30 -17
  119. package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +15 -12
  120. package/lib/components/core/dropdown/dropdown.module.d.ts +8 -0
  121. package/lib/components/core/forward/forward.directive.d.ts +3 -3
  122. package/lib/components/core/link/link.component.d.ts +14 -10
  123. package/lib/components/core/list/list/list.component.d.ts +20 -6
  124. package/lib/components/core/list/list-item/list-item.component.d.ts +23 -9
  125. package/lib/components/core/list/list.module.d.ts +8 -0
  126. package/lib/components/core/modal/modal.component.d.ts +89 -13
  127. package/lib/components/core/notifications/notifications.component.d.ts +9 -8
  128. package/lib/components/core/pagination/pagination.component.d.ts +71 -10
  129. package/lib/components/core/popover/popover.directive.d.ts +15 -14
  130. package/lib/components/core/progress-bar/progress-bar.component.d.ts +11 -8
  131. package/lib/components/core/progress-button/progress-button.component.d.ts +5 -6
  132. package/lib/components/core/spinner/spinner.component.d.ts +13 -10
  133. package/lib/components/core/steppers/steppers-container/steppers-container.component.d.ts +55 -27
  134. package/lib/components/core/steppers/steppers-item/steppers-item.component.d.ts +5 -4
  135. package/lib/components/core/steppers/steppers.module.d.ts +8 -0
  136. package/lib/components/core/tab/tab-container/tab-container.component.d.ts +15 -12
  137. package/lib/components/core/tab/tab-item/tab-item.component.d.ts +14 -10
  138. package/lib/components/core/tab/tab.module.d.ts +8 -0
  139. package/lib/components/core/table/sort/sort-header/sort-header.component.d.ts +72 -0
  140. package/lib/components/core/table/sort/sort.directive.d.ts +53 -0
  141. package/lib/components/core/table/table.component.d.ts +26 -20
  142. package/lib/components/core/table/table.module.d.ts +9 -0
  143. package/lib/components/core/tooltip/tooltip.directive.d.ts +12 -11
  144. package/lib/components/form/autocomplete/autocomplete.component.d.ts +55 -0
  145. package/lib/components/form/checkbox/checkbox.component.d.ts +23 -12
  146. package/lib/components/form/form.module.d.ts +17 -0
  147. package/lib/components/form/input/input.component.d.ts +42 -43
  148. package/lib/components/form/password-input/password-input.component.d.ts +35 -10
  149. package/lib/components/form/radio-button/radio-button.component.d.ts +20 -11
  150. package/lib/components/form/range/range.component.d.ts +42 -0
  151. package/lib/components/form/rating/rating.component.d.ts +24 -0
  152. package/lib/components/form/select/select.component.d.ts +12 -6
  153. package/lib/components/form/textarea/textarea.component.d.ts +15 -5
  154. package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +18 -12
  155. package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +14 -11
  156. package/lib/components/navigation/back-button/back-button.component.d.ts +8 -8
  157. package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +15 -16
  158. package/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.d.ts +12 -14
  159. package/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.d.ts +9 -8
  160. package/lib/components/navigation/breadcrumbs/breadcrumbs.module.d.ts +8 -0
  161. package/lib/components/navigation/header/header.component.d.ts +28 -25
  162. package/lib/components/navigation/megamenu/megamenu.component.d.ts +22 -0
  163. package/lib/components/navigation/navbar/navbar/navbar.component.d.ts +16 -0
  164. package/lib/components/navigation/navbar/navbar-item/navbar-item.component.d.ts +5 -0
  165. package/lib/components/navigation/navbar/navbar.module.d.ts +8 -0
  166. package/lib/components/utils/error-page/error-page.component.d.ts +44 -0
  167. package/lib/components/utils/icon/icon.component.d.ts +25 -17
  168. package/lib/components/utils/language-switcher/language-switcher.component.d.ts +9 -5
  169. package/lib/design-angular-kit.module.d.ts +44 -7
  170. package/lib/enums/colors.enums.d.ts +10 -0
  171. package/lib/enums/sizes.enum.d.ts +7 -0
  172. package/lib/interfaces/core.d.ts +16 -15
  173. package/lib/interfaces/design-angular-kit-config.d.ts +30 -0
  174. package/lib/interfaces/form.d.ts +9 -9
  175. package/lib/interfaces/icon.d.ts +4 -3
  176. package/lib/interfaces/sortable-table.d.ts +33 -0
  177. package/lib/pipes/date-ago.pipe.d.ts +17 -0
  178. package/lib/pipes/duration.pipe.d.ts +35 -0
  179. package/lib/pipes/mark-matching-text.pipe.d.ts +15 -7
  180. package/lib/provide-design-angular-kit.d.ts +7 -0
  181. package/lib/services/{notifications/notifications.service.d.ts → notification/notification.service.d.ts} +3 -3
  182. package/lib/utils/coercion.d.ts +14 -0
  183. package/lib/utils/date-utils.d.ts +78 -0
  184. package/lib/utils/file-utils.d.ts +1 -1
  185. package/lib/utils/regex.d.ts +5 -0
  186. package/lib/validators/it-validators.d.ts +9 -2
  187. package/package.json +17 -22
  188. package/public_api.d.ts +31 -4
  189. package/esm2020/lib/abstracts/abstract-form-component.mjs +0 -174
  190. package/esm2020/lib/abstracts/abstract.component.mjs +0 -27
  191. package/esm2020/lib/components/core/accordion/accordion.component.mjs +0 -31
  192. package/esm2020/lib/components/core/alert/alert.component.mjs +0 -69
  193. package/esm2020/lib/components/core/badge/badge.directive.mjs +0 -34
  194. package/esm2020/lib/components/core/button/button.directive.mjs +0 -80
  195. package/esm2020/lib/components/core/callout/callout.component.mjs +0 -84
  196. package/esm2020/lib/components/core/card/card.component.mjs +0 -58
  197. package/esm2020/lib/components/core/carousel/carousel/carousel.component.mjs +0 -66
  198. package/esm2020/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +0 -14
  199. package/esm2020/lib/components/core/chip/chip.component.mjs +0 -89
  200. package/esm2020/lib/components/core/collapse/collapse.component.mjs +0 -101
  201. package/esm2020/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +0 -24
  202. package/esm2020/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +0 -11
  203. package/esm2020/lib/components/core/dimmer/dimmer.component.mjs +0 -59
  204. package/esm2020/lib/components/core/dropdown/dropdown/dropdown.component.mjs +0 -130
  205. package/esm2020/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +0 -68
  206. package/esm2020/lib/components/core/forward/forward.directive.mjs +0 -51
  207. package/esm2020/lib/components/core/link/link.component.mjs +0 -40
  208. package/esm2020/lib/components/core/list/list/list.component.mjs +0 -13
  209. package/esm2020/lib/components/core/list/list-item/list-item.component.mjs +0 -36
  210. package/esm2020/lib/components/core/modal/modal.component.mjs +0 -98
  211. package/esm2020/lib/components/core/notifications/notifications.component.mjs +0 -110
  212. package/esm2020/lib/components/core/pagination/pagination.component.mjs +0 -51
  213. package/esm2020/lib/components/core/popover/popover.directive.mjs +0 -179
  214. package/esm2020/lib/components/core/progress-bar/progress-bar.component.mjs +0 -34
  215. package/esm2020/lib/components/core/progress-button/progress-button.component.mjs +0 -27
  216. package/esm2020/lib/components/core/spinner/spinner.component.mjs +0 -35
  217. package/esm2020/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +0 -119
  218. package/esm2020/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +0 -18
  219. package/esm2020/lib/components/core/tab/tab-container/tab-container.component.mjs +0 -59
  220. package/esm2020/lib/components/core/tab/tab-item/tab-item.component.mjs +0 -36
  221. package/esm2020/lib/components/core/table/table.component.mjs +0 -57
  222. package/esm2020/lib/components/core/tooltip/tooltip.directive.mjs +0 -143
  223. package/esm2020/lib/components/form/checkbox/checkbox.component.mjs +0 -40
  224. package/esm2020/lib/components/form/input/input.component.mjs +0 -222
  225. package/esm2020/lib/components/form/password-input/password-input.component.mjs +0 -112
  226. package/esm2020/lib/components/form/radio-button/radio-button.component.mjs +0 -53
  227. package/esm2020/lib/components/form/select/select.component.mjs +0 -62
  228. package/esm2020/lib/components/form/textarea/textarea.component.mjs +0 -46
  229. package/esm2020/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +0 -137
  230. package/esm2020/lib/components/form/upload-file-list/upload-file-list.component.mjs +0 -104
  231. package/esm2020/lib/components/navigation/back-button/back-button.component.mjs +0 -69
  232. package/esm2020/lib/components/navigation/back-to-top/back-to-top.component.mjs +0 -74
  233. package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +0 -45
  234. package/esm2020/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +0 -23
  235. package/esm2020/lib/components/navigation/header/header.component.mjs +0 -63
  236. package/esm2020/lib/components/utils/icon/icon.component.mjs +0 -54
  237. package/esm2020/lib/components/utils/language-switcher/language-switcher.component.mjs +0 -39
  238. package/esm2020/lib/components/utils/not-found-page/not-found-page.component.mjs +0 -13
  239. package/esm2020/lib/design-angular-kit.module.mjs +0 -56
  240. package/esm2020/lib/interfaces/core.mjs +0 -16
  241. package/esm2020/lib/interfaces/form.mjs +0 -2
  242. package/esm2020/lib/interfaces/icon.mjs +0 -2
  243. package/esm2020/lib/modules/components.module.mjs +0 -257
  244. package/esm2020/lib/pipes/mark-matching-text.pipe.mjs +0 -36
  245. package/esm2020/lib/services/notifications/notifications.service.mjs +0 -120
  246. package/esm2020/lib/utils/boolean-input.mjs +0 -15
  247. package/esm2020/lib/utils/file-utils.mjs +0 -73
  248. package/esm2020/lib/utils/regex.mjs +0 -26
  249. package/esm2020/lib/validators/it-validators.mjs +0 -134
  250. package/esm2020/public_api.mjs +0 -70
  251. package/fesm2015/design-angular-kit.mjs +0 -3850
  252. package/fesm2015/design-angular-kit.mjs.map +0 -1
  253. package/fesm2020/design-angular-kit.mjs +0 -3797
  254. package/fesm2020/design-angular-kit.mjs.map +0 -1
  255. package/lib/components/utils/not-found-page/not-found-page.component.d.ts +0 -5
  256. package/lib/modules/components.module.d.ts +0 -61
  257. package/lib/utils/boolean-input.d.ts +0 -11
  258. /package/{esm2020 → esm2022}/design-angular-kit.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/interfaces/utils.mjs +0 -0
@@ -0,0 +1,30 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { TranslateModule } from '@ngx-translate/core';
3
+ import { inputToBoolean } from '../../../utils/coercion';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ngx-translate/core";
6
+ export class ItSpinnerComponent {
7
+ constructor() {
8
+ /**
9
+ * The spinner is active
10
+ * @default true
11
+ */
12
+ this.active = true;
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ItSpinnerComponent, isStandalone: true, selector: "it-spinner", inputs: { active: ["active", "active", inputToBoolean], small: ["small", "small", inputToBoolean], double: ["double", "double", inputToBoolean] }, ngImport: i0, template: "<div class=\"progress-spinner\" [class.progress-spinner-double]=\"double\" [class.progress-spinner-active]=\"active\" [class.size-sm]=\"small\">\n @if (double) {\n <div class=\"progress-spinner-inner\"></div>\n <div class=\"progress-spinner-inner\"></div>\n }\n <span class=\"visually-hidden\">{{ 'it.core.loading' | translate }}...</span>\n</div>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSpinnerComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ standalone: true, selector: 'it-spinner', changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule], template: "<div class=\"progress-spinner\" [class.progress-spinner-double]=\"double\" [class.progress-spinner-active]=\"active\" [class.size-sm]=\"small\">\n @if (double) {\n <div class=\"progress-spinner-inner\"></div>\n <div class=\"progress-spinner-inner\"></div>\n }\n <span class=\"visually-hidden\">{{ 'it.core.loading' | translate }}...</span>\n</div>\n" }]
20
+ }], propDecorators: { active: [{
21
+ type: Input,
22
+ args: [{ transform: inputToBoolean }]
23
+ }], small: [{
24
+ type: Input,
25
+ args: [{ transform: inputToBoolean }]
26
+ }], double: [{
27
+ type: Input,
28
+ args: [{ transform: inputToBoolean }]
29
+ }] } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBU3pELE1BQU0sT0FBTyxrQkFBa0I7SUFQL0I7UUFRRTs7O1dBR0c7UUFDbUMsV0FBTSxHQUFZLElBQUksQ0FBQztLQWE5RDs4R0FsQlksa0JBQWtCO2tHQUFsQixrQkFBa0IscUZBS1QsY0FBYyw2QkFNZCxjQUFjLGdDQU1kLGNBQWMsNkJDN0JwQyx3V0FPQSwyQ0RHWSxlQUFlOzsyRkFFZCxrQkFBa0I7a0JBUDlCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFlBQVksbUJBRUwsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsQ0FBQzs4QkFPWSxNQUFNO3NCQUEzQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFNRSxLQUFLO3NCQUExQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFNRSxNQUFNO3NCQUEzQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgaW5wdXRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb2VyY2lvbic7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2l0LXNwaW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Bpbm5lci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSXRTcGlubmVyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBzcGlubmVyIGlzIGFjdGl2ZVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGFjdGl2ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNob3cgYSBzbWFsbCBzcGlubmVyXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNtYWxsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdyB0aGUgZG91YmxlIGFuaW1hdGlvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBkb3VibGU/OiBib29sZWFuO1xufVxuIiwiPGRpdiBjbGFzcz1cInByb2dyZXNzLXNwaW5uZXJcIiBbY2xhc3MucHJvZ3Jlc3Mtc3Bpbm5lci1kb3VibGVdPVwiZG91YmxlXCIgW2NsYXNzLnByb2dyZXNzLXNwaW5uZXItYWN0aXZlXT1cImFjdGl2ZVwiIFtjbGFzcy5zaXplLXNtXT1cInNtYWxsXCI+XG4gIEBpZiAoZG91YmxlKSB7XG4gICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLXNwaW5uZXItaW5uZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3Mtc3Bpbm5lci1pbm5lclwiPjwvZGl2PlxuICB9XG4gIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3sgJ2l0LmNvcmUubG9hZGluZycgfCB0cmFuc2xhdGUgfX0uLi48L3NwYW4+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,116 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { ItSteppersItemComponent } from '../steppers-item/steppers-item.component';
3
+ import { startWith } from 'rxjs';
4
+ import { NgTemplateOutlet } from '@angular/common';
5
+ import { ItIconComponent } from '../../../utils/icon/icon.component';
6
+ import { TranslateModule } from '@ngx-translate/core';
7
+ import { ItButtonDirective } from '../../button/button.directive';
8
+ import { ItProgressBarComponent } from '../../progress-bar/progress-bar.component';
9
+ import { ItProgressButtonComponent } from '../../progress-button/progress-button.component';
10
+ import { inputToBoolean } from '../../../../utils/coercion';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@ngx-translate/core";
13
+ export class ItSteppersContainerComponent {
14
+ constructor(_changeDetectorRef) {
15
+ this._changeDetectorRef = _changeDetectorRef;
16
+ /**
17
+ * Show the stepper header
18
+ * @default true
19
+ */
20
+ this.showHeader = true;
21
+ /**
22
+ * Show the back button
23
+ * @default true
24
+ */
25
+ this.showBackButton = true;
26
+ /**
27
+ * Show the forward button
28
+ * @default true
29
+ */
30
+ this.showForwardButton = true;
31
+ this.backClick = new EventEmitter();
32
+ this.forwardClick = new EventEmitter();
33
+ this.confirmClick = new EventEmitter();
34
+ this.saveClick = new EventEmitter();
35
+ }
36
+ ngAfterViewInit() {
37
+ this.steps?.changes
38
+ .pipe(
39
+ // When steps changes (dynamic add/remove)
40
+ startWith(undefined))
41
+ .subscribe(() => {
42
+ this.stepsSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions
43
+ this.stepsSubscriptions = this.steps?.map(step => step.valueChanges.subscribe(() => {
44
+ this._changeDetectorRef.detectChanges(); // DetectChanges when step attributes changes
45
+ }));
46
+ this._changeDetectorRef.detectChanges(); // Force update html render
47
+ });
48
+ }
49
+ ngOnDestroy() {
50
+ this.stepsSubscriptions?.forEach(step => step.unsubscribe());
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersContainerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ItSteppersContainerComponent, isStandalone: true, selector: "it-steppers-container", inputs: { activeStep: "activeStep", showHeader: ["showHeader", "showHeader", inputToBoolean], dark: ["dark", "dark", inputToBoolean], steppersNumber: ["steppersNumber", "steppersNumber", inputToBoolean], progressStyle: "progressStyle", progressColor: "progressColor", showBackButton: ["showBackButton", "showBackButton", inputToBoolean], disableBackButton: ["disableBackButton", "disableBackButton", inputToBoolean], showForwardButton: ["showForwardButton", "showForwardButton", inputToBoolean], disableForwardButton: ["disableForwardButton", "disableForwardButton", inputToBoolean], showConfirmButton: ["showConfirmButton", "showConfirmButton", inputToBoolean], disableConfirmButton: ["disableConfirmButton", "disableConfirmButton", inputToBoolean], confirmLoading: ["confirmLoading", "confirmLoading", inputToBoolean], showSaveButton: ["showSaveButton", "showSaveButton", inputToBoolean], disableSaveButton: ["disableSaveButton", "disableSaveButton", inputToBoolean], saveLoading: ["saveLoading", "saveLoading", inputToBoolean] }, outputs: { backClick: "backClick", forwardClick: "forwardClick", confirmClick: "confirmClick", saveClick: "saveClick" }, queries: [{ propertyName: "steps", predicate: ItSteppersItemComponent }], ngImport: i0, template: "<div class=\"steppers\" [class.bg-dark]=\"dark\">\n @if (showHeader) {\n <div class=\"steppers-header\">\n @if (steps) {\n <ul>\n @for (step of steps; track step.id; let i = $index) {\n <li [class.confirmed]=\"i < activeStep\" [class.active]=\"i === activeStep\" [class.no-line]=\"i === activeStep && steppersNumber\">\n @if (step.icon && !steppersNumber) {\n <it-icon [name]=\"step.icon\"></it-icon>\n }\n @if (steppersNumber) {\n <span class=\"steppers-number\">\n @if (i < activeStep) {\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n } @else {\n <span class=\"visually-hidden\">{{ 'it.core.step' | translate }} </span>{{ i + 1 }}\n }\n </span>\n }\n {{ step.label }}\n @if (i < activeStep && !steppersNumber) {\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n }\n @if (i === activeStep) {\n <span class=\"visually-hidden\">{{ 'it.core.active' | translate }}</span>\n }\n </li>\n }\n </ul>\n }\n @if (steps) {\n <span class=\"steppers-index\" aria-hidden=\"true\">\n @if (!steppersNumber) {\n {{ activeStep + 1 + '/' + steps.length }}\n } @else {\n @for (step of steps; track step.id; let i = $index) {\n <span [class.active]=\"i === activeStep\">{{ i + 1 }}</span>\n }\n }\n </span>\n }\n </div>\n }\n\n @if (steps?.get(activeStep); as step) {\n <div class=\"steppers-content\" aria-live=\"polite\">\n <ng-container *ngTemplateOutlet=\"step.htmlContent\"></ng-container>\n </div>\n }\n\n @if (showBackButton || showSaveButton || showForwardButton || showConfirmButton || !!progressStyle) {\n <nav class=\"steppers-nav\">\n @if (showBackButton) {\n <button\n type=\"button\"\n itButton=\"outline-primary\"\n size=\"sm\"\n class=\"steppers-btn-prev\"\n [disabled]=\"disableBackButton\"\n (click)=\"backClick.emit(activeStep)\">\n <it-icon name=\"chevron-left\" color=\"primary\"></it-icon>\n {{ 'it.core.back' | translate }}\n </button>\n }\n @if (!!progressStyle && steps) {\n @if (progressStyle === 'dots') {\n <ul class=\"steppers-dots\">\n @for (step of steps; track step; let i = $index) {\n <li [class.done]=\"i < activeStep\">\n <span class=\"visually-hidden\">\n {{ 'it.core.step-of' | translate: { current: activeStep + 1, available: steps?.length } }}\n {{ i < activeStep ? '- ' + ('it.core.confirmed' | translate) : '' }}\n </span>\n </li>\n }\n </ul>\n } @else {\n <div class=\"steppers-progress\">\n <it-progress-bar [color]=\"progressColor\" [value]=\"(activeStep / (steps?.length || 1)) * 100\"></it-progress-bar>\n </div>\n }\n }\n @if (showSaveButton) {\n <button\n type=\"button\"\n itButton=\"primary\"\n size=\"sm\"\n class=\"steppers-btn-save\"\n [progress]=\"saveLoading\"\n [disabled]=\"saveLoading || disableSaveButton\"\n (click)=\"saveClick.emit(activeStep)\">\n {{ 'it.general.save' | translate }}\n </button>\n }\n @if (showForwardButton) {\n <button\n type=\"button\"\n itButton=\"outline-primary\"\n size=\"sm\"\n class=\"steppers-btn-next\"\n [disabled]=\"disableForwardButton\"\n (click)=\"forwardClick.emit(activeStep)\">\n {{ 'it.core.forward' | translate }}\n <it-icon name=\"chevron-right\" color=\"primary\"></it-icon>\n </button>\n }\n @if (showConfirmButton) {\n <button\n type=\"button\"\n itButton=\"primary\"\n size=\"sm\"\n class=\"steppers-btn-confirm d-lg-block\"\n [progress]=\"confirmLoading\"\n [disabled]=\"confirmLoading || disableConfirmButton\"\n (click)=\"confirmClick.emit(activeStep)\">\n {{ 'it.core.confirm' | translate }}\n </button>\n }\n </nav>\n }\n</div>\n\n<ng-template #checkIcon>\n <it-icon name=\"check\" class=\"steppers-success\"></it-icon>\n <span class=\"visually-hidden\">{{ 'it.core.confirmed' | translate }}</span>\n</ng-template>\n", dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "labelWaria"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: ItButtonDirective, selector: "[itButton]", inputs: ["itButton", "size", "block", "disabled"], exportAs: ["itButton"] }, { kind: "component", type: ItProgressBarComponent, selector: "it-progress-bar", inputs: ["value", "showLabel", "indeterminate", "color"] }, { kind: "component", type: ItProgressButtonComponent, selector: "button[itButton][progress]", inputs: ["progress", "progressColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersContainerComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ standalone: true, selector: 'it-steppers-container', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ItIconComponent, NgTemplateOutlet, TranslateModule, ItButtonDirective, ItProgressBarComponent, ItProgressButtonComponent], template: "<div class=\"steppers\" [class.bg-dark]=\"dark\">\n @if (showHeader) {\n <div class=\"steppers-header\">\n @if (steps) {\n <ul>\n @for (step of steps; track step.id; let i = $index) {\n <li [class.confirmed]=\"i < activeStep\" [class.active]=\"i === activeStep\" [class.no-line]=\"i === activeStep && steppersNumber\">\n @if (step.icon && !steppersNumber) {\n <it-icon [name]=\"step.icon\"></it-icon>\n }\n @if (steppersNumber) {\n <span class=\"steppers-number\">\n @if (i < activeStep) {\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n } @else {\n <span class=\"visually-hidden\">{{ 'it.core.step' | translate }} </span>{{ i + 1 }}\n }\n </span>\n }\n {{ step.label }}\n @if (i < activeStep && !steppersNumber) {\n <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n }\n @if (i === activeStep) {\n <span class=\"visually-hidden\">{{ 'it.core.active' | translate }}</span>\n }\n </li>\n }\n </ul>\n }\n @if (steps) {\n <span class=\"steppers-index\" aria-hidden=\"true\">\n @if (!steppersNumber) {\n {{ activeStep + 1 + '/' + steps.length }}\n } @else {\n @for (step of steps; track step.id; let i = $index) {\n <span [class.active]=\"i === activeStep\">{{ i + 1 }}</span>\n }\n }\n </span>\n }\n </div>\n }\n\n @if (steps?.get(activeStep); as step) {\n <div class=\"steppers-content\" aria-live=\"polite\">\n <ng-container *ngTemplateOutlet=\"step.htmlContent\"></ng-container>\n </div>\n }\n\n @if (showBackButton || showSaveButton || showForwardButton || showConfirmButton || !!progressStyle) {\n <nav class=\"steppers-nav\">\n @if (showBackButton) {\n <button\n type=\"button\"\n itButton=\"outline-primary\"\n size=\"sm\"\n class=\"steppers-btn-prev\"\n [disabled]=\"disableBackButton\"\n (click)=\"backClick.emit(activeStep)\">\n <it-icon name=\"chevron-left\" color=\"primary\"></it-icon>\n {{ 'it.core.back' | translate }}\n </button>\n }\n @if (!!progressStyle && steps) {\n @if (progressStyle === 'dots') {\n <ul class=\"steppers-dots\">\n @for (step of steps; track step; let i = $index) {\n <li [class.done]=\"i < activeStep\">\n <span class=\"visually-hidden\">\n {{ 'it.core.step-of' | translate: { current: activeStep + 1, available: steps?.length } }}\n {{ i < activeStep ? '- ' + ('it.core.confirmed' | translate) : '' }}\n </span>\n </li>\n }\n </ul>\n } @else {\n <div class=\"steppers-progress\">\n <it-progress-bar [color]=\"progressColor\" [value]=\"(activeStep / (steps?.length || 1)) * 100\"></it-progress-bar>\n </div>\n }\n }\n @if (showSaveButton) {\n <button\n type=\"button\"\n itButton=\"primary\"\n size=\"sm\"\n class=\"steppers-btn-save\"\n [progress]=\"saveLoading\"\n [disabled]=\"saveLoading || disableSaveButton\"\n (click)=\"saveClick.emit(activeStep)\">\n {{ 'it.general.save' | translate }}\n </button>\n }\n @if (showForwardButton) {\n <button\n type=\"button\"\n itButton=\"outline-primary\"\n size=\"sm\"\n class=\"steppers-btn-next\"\n [disabled]=\"disableForwardButton\"\n (click)=\"forwardClick.emit(activeStep)\">\n {{ 'it.core.forward' | translate }}\n <it-icon name=\"chevron-right\" color=\"primary\"></it-icon>\n </button>\n }\n @if (showConfirmButton) {\n <button\n type=\"button\"\n itButton=\"primary\"\n size=\"sm\"\n class=\"steppers-btn-confirm d-lg-block\"\n [progress]=\"confirmLoading\"\n [disabled]=\"confirmLoading || disableConfirmButton\"\n (click)=\"confirmClick.emit(activeStep)\">\n {{ 'it.core.confirm' | translate }}\n </button>\n }\n </nav>\n }\n</div>\n\n<ng-template #checkIcon>\n <it-icon name=\"check\" class=\"steppers-success\"></it-icon>\n <span class=\"visually-hidden\">{{ 'it.core.confirmed' | translate }}</span>\n</ng-template>\n" }]
58
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { activeStep: [{
59
+ type: Input,
60
+ args: [{ required: true }]
61
+ }], showHeader: [{
62
+ type: Input,
63
+ args: [{ transform: inputToBoolean }]
64
+ }], dark: [{
65
+ type: Input,
66
+ args: [{ transform: inputToBoolean }]
67
+ }], steppersNumber: [{
68
+ type: Input,
69
+ args: [{ transform: inputToBoolean }]
70
+ }], progressStyle: [{
71
+ type: Input
72
+ }], progressColor: [{
73
+ type: Input
74
+ }], showBackButton: [{
75
+ type: Input,
76
+ args: [{ transform: inputToBoolean }]
77
+ }], disableBackButton: [{
78
+ type: Input,
79
+ args: [{ transform: inputToBoolean }]
80
+ }], showForwardButton: [{
81
+ type: Input,
82
+ args: [{ transform: inputToBoolean }]
83
+ }], disableForwardButton: [{
84
+ type: Input,
85
+ args: [{ transform: inputToBoolean }]
86
+ }], showConfirmButton: [{
87
+ type: Input,
88
+ args: [{ transform: inputToBoolean }]
89
+ }], disableConfirmButton: [{
90
+ type: Input,
91
+ args: [{ transform: inputToBoolean }]
92
+ }], confirmLoading: [{
93
+ type: Input,
94
+ args: [{ transform: inputToBoolean }]
95
+ }], showSaveButton: [{
96
+ type: Input,
97
+ args: [{ transform: inputToBoolean }]
98
+ }], disableSaveButton: [{
99
+ type: Input,
100
+ args: [{ transform: inputToBoolean }]
101
+ }], saveLoading: [{
102
+ type: Input,
103
+ args: [{ transform: inputToBoolean }]
104
+ }], steps: [{
105
+ type: ContentChildren,
106
+ args: [ItSteppersItemComponent]
107
+ }], backClick: [{
108
+ type: Output
109
+ }], forwardClick: [{
110
+ type: Output
111
+ }], confirmClick: [{
112
+ type: Output
113
+ }], saveClick: [{
114
+ type: Output
115
+ }] } });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zdGVwcGVycy9zdGVwcGVycy1jb250YWluZXIvc3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zdGVwcGVycy9zdGVwcGVycy1jb250YWluZXIvc3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBUzVELE1BQU0sT0FBTyw0QkFBNEI7SUEr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QkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsb0JBQW9CO3NCQUF6RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFNRSxpQkFBaUI7c0JBQXRELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLG9CQUFvQjtzQkFBekQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBS0UsY0FBYztzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsY0FBYztzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsaUJBQWlCO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLRSxXQUFXO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLTSxLQUFLO3NCQUE5QyxlQUFlO3VCQUFDLHVCQUF1QjtnQkFNOUIsU0FBUztzQkFBbEIsTUFBTTtnQkFNRyxZQUFZO3NCQUFyQixNQUFNO2dCQU1HLFlBQVk7c0JBQXJCLE1BQU07Z0JBTUcsU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSXRTdGVwcGVyc0l0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9zdGVwcGVycy1pdGVtL3N0ZXBwZXJzLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFByb2dyZXNzQmFyQ29sb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2NvcmUnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSXRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEl0QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXRQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEl0UHJvZ3Jlc3NCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9wcm9ncmVzcy1idXR0b24vcHJvZ3Jlc3MtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtc3RlcHBlcnMtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXBwZXJzLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbSXRJY29uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVNb2R1bGUsIEl0QnV0dG9uRGlyZWN0aXZlLCBJdFByb2dyZXNzQmFyQ29tcG9uZW50LCBJdFByb2dyZXNzQnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgSXRTdGVwcGVyc0NvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgYWN0aXZlIHN0ZXAgaW5kZXhcbiAgICogQHBhcmFtIGluZGV4IHRoZSBzdGVwIGluZGV4XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBhY3RpdmVTdGVwITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBzdGVwcGVyIGhlYWRlclxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEYXJrIHN0eWxlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRhcms/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWxzIHByZXNlbnQgaW4gdGhlIGhlYWRlciBzdGVwcyBjYW4gYmUgYW50aWNpcGF0ZWQgYnkgdGhlIHJlbGF0aXZlIG9yZGluYWwgbnVtYmVyLlxuICAgKiBAZWZ1YWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHN0ZXBwZXJzTnVtYmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByb2dyZXNzIHN0eWxlXG4gICAqIC08Yj5wcm9ncmVzczwvYj46IFNob3cgcHJvZ3Jlc3MgYmFyIC0gWW91IGNhbiBjaGFuZ2UgdGhlIGNvbG9yIHdpdGggdGhlIGBwcm9ncmVzc0NvbG9yYCBhdHRyaWJ1dGVcbiAgICogLTxiPmRvdHM8L2I+OiBTaG93IHByb2dyZXNzIGRvdHNcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gZG9uJ3Qgc2hvdyBwcm9ncmVzc1xuICAgKi9cbiAgQElucHV0KCkgcHJvZ3Jlc3NTdHlsZTogJ3Byb2dyZXNzJyB8ICdkb3RzJyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ3VzdG9taXplIHByb2dyZXNzIGNvbG9yXG4gICAqL1xuICBASW5wdXQoKSBwcm9ncmVzc0NvbG9yOiBQcm9ncmVzc0JhckNvbG9yIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBiYWNrIGJ1dHRvblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNob3dCYWNrQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgYmFjayBidXR0b25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZGlzYWJsZUJhY2tCdXR0b24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBmb3J3YXJkIGJ1dHRvblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNob3dGb3J3YXJkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgZm9yd2FyZCBidXR0b25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZGlzYWJsZUZvcndhcmRCdXR0b24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBjb25maXJtIGJ1dHRvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBzaG93Q29uZmlybUJ1dHRvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGNvbmZpcm0gYnV0dG9uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRpc2FibGVDb25maXJtQnV0dG9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdyB0aGUgY29uZmlybSBidXR0b24gYXMgaW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBidXR0b25cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgY29uZmlybUxvYWRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBzYXZlIGJ1dHRvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBzaG93U2F2ZUJ1dHRvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIHNhdmUgYnV0dG9uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRpc2FibGVTYXZlQnV0dG9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdyB0aGUgc2F2ZSBidXR0b24gYXMgaW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBidXR0b25cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgc2F2ZUxvYWRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RlcHBlciBpdGVtc1xuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihJdFN0ZXBwZXJzSXRlbUNvbXBvbmVudCkgc3RlcHM/OiBRdWVyeUxpc3Q8SXRTdGVwcGVyc0l0ZW1Db21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBPbiBiYWNrIGJ1dHRvbiBjbGlja1xuICAgKiBAZXZlbnQgYWN0aXZlU3RlcCB0aGUgY3VycmVudCBzdGVwIGluZGV4XG4gICAqL1xuICBAT3V0cHV0KCkgYmFja0NsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcblxuICAvKipcbiAgICogT24gZm9yd2FyZCBidXR0b24gY2xpY2tcbiAgICogQGV2ZW50IGFjdGl2ZVN0ZXAgdGhlIGN1cnJlbnQgc3RlcCBpbmRleFxuICAgKi9cbiAgQE91dHB1dCgpIGZvcndhcmRDbGljazogRXZlbnRFbWl0dGVyPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIE9uIGNvbmZpcm0gYnV0dG9uIGNsaWNrXG4gICAqIEBldmVudCBhY3RpdmVTdGVwIHRoZSBjdXJyZW50IHN0ZXAgaW5kZXhcbiAgICovXG4gIEBPdXRwdXQoKSBjb25maXJtQ2xpY2s6IEV2ZW50RW1pdHRlcjxudW1iZXI+O1xuXG4gIC8qKlxuICAgKiBPbiBzYXZlIGJ1dHRvbiBjbGlja1xuICAgKiBAZXZlbnQgYWN0aXZlU3RlcCB0aGUgY3VycmVudCBzdGVwIGluZGV4XG4gICAqL1xuICBAT3V0cHV0KCkgc2F2ZUNsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcblxuICBwcml2YXRlIHN0ZXBzU3Vic2NyaXB0aW9ucz86IEFycmF5PFN1YnNjcmlwdGlvbj47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5iYWNrQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICB0aGlzLmZvcndhcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIHRoaXMuY29uZmlybUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgdGhpcy5zYXZlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzPy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gV2hlbiBzdGVwcyBjaGFuZ2VzIChkeW5hbWljIGFkZC9yZW1vdmUpXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGVwc1N1YnNjcmlwdGlvbnM/LmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTsgLy8gUmVtb3ZlIG9sZCBzdWJzY3JpcHRpb25zXG4gICAgICAgIHRoaXMuc3RlcHNTdWJzY3JpcHRpb25zID0gdGhpcy5zdGVwcz8ubWFwKHN0ZXAgPT5cbiAgICAgICAgICBzdGVwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBEZXRlY3RDaGFuZ2VzIHdoZW4gc3RlcCBhdHRyaWJ1dGVzIGNoYW5nZXNcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcmNlIHVwZGF0ZSBodG1sIHJlbmRlclxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzU3Vic2NyaXB0aW9ucz8uZm9yRWFjaChzdGVwID0+IHN0ZXAudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdGVwcGVyc1wiIFtjbGFzcy5iZy1kYXJrXT1cImRhcmtcIj5cbiAgQGlmIChzaG93SGVhZGVyKSB7XG4gICAgPGRpdiBjbGFzcz1cInN0ZXBwZXJzLWhlYWRlclwiPlxuICAgICAgQGlmIChzdGVwcykge1xuICAgICAgICA8dWw+XG4gICAgICAgICAgQGZvciAoc3RlcCBvZiBzdGVwczsgdHJhY2sgc3RlcC5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxsaSBbY2xhc3MuY29uZmlybWVkXT1cImkgPCBhY3RpdmVTdGVwXCIgW2NsYXNzLmFjdGl2ZV09XCJpID09PSBhY3RpdmVTdGVwXCIgW2NsYXNzLm5vLWxpbmVdPVwiaSA9PT0gYWN0aXZlU3RlcCAmJiBzdGVwcGVyc051bWJlclwiPlxuICAgICAgICAgICAgICBAaWYgKHN0ZXAuaWNvbiAmJiAhc3RlcHBlcnNOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICA8aXQtaWNvbiBbbmFtZV09XCJzdGVwLmljb25cIj48L2l0LWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzdGVwcGVyc051bWJlcikge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlcnMtbnVtYmVyXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGkgPCBhY3RpdmVTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGVja0ljb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7ICdpdC5jb3JlLnN0ZXAnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj57eyBpICsgMSB9fVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB7eyBzdGVwLmxhYmVsIH19XG4gICAgICAgICAgICAgIEBpZiAoaSA8IGFjdGl2ZVN0ZXAgJiYgIXN0ZXBwZXJzTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNoZWNrSWNvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaSA9PT0gYWN0aXZlU3RlcCkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3sgJ2l0LmNvcmUuYWN0aXZlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICB9XG4gICAgICBAaWYgKHN0ZXBzKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlcnMtaW5kZXhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICBAaWYgKCFzdGVwcGVyc051bWJlcikge1xuICAgICAgICAgICAge3sgYWN0aXZlU3RlcCArIDEgKyAnLycgKyBzdGVwcy5sZW5ndGggfX1cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBmb3IgKHN0ZXAgb2Ygc3RlcHM7IHRyYWNrIHN0ZXAuaWQ7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gYWN0aXZlU3RlcFwiPnt7IGkgKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGlmIChzdGVwcz8uZ2V0KGFjdGl2ZVN0ZXApOyBhcyBzdGVwKSB7XG4gICAgPGRpdiBjbGFzcz1cInN0ZXBwZXJzLWNvbnRlbnRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGVwLmh0bWxDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cblxuICBAaWYgKHNob3dCYWNrQnV0dG9uIHx8IHNob3dTYXZlQnV0dG9uIHx8IHNob3dGb3J3YXJkQnV0dG9uIHx8IHNob3dDb25maXJtQnV0dG9uIHx8ICEhcHJvZ3Jlc3NTdHlsZSkge1xuICAgIDxuYXYgY2xhc3M9XCJzdGVwcGVycy1uYXZcIj5cbiAgICAgIEBpZiAoc2hvd0JhY2tCdXR0b24pIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGl0QnV0dG9uPVwib3V0bGluZS1wcmltYXJ5XCJcbiAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgIGNsYXNzPVwic3RlcHBlcnMtYnRuLXByZXZcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlQmFja0J1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImJhY2tDbGljay5lbWl0KGFjdGl2ZVN0ZXApXCI+XG4gICAgICAgICAgPGl0LWljb24gbmFtZT1cImNoZXZyb24tbGVmdFwiIGNvbG9yPVwicHJpbWFyeVwiPjwvaXQtaWNvbj5cbiAgICAgICAgICB7eyAnaXQuY29yZS5iYWNrJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoISFwcm9ncmVzc1N0eWxlICYmIHN0ZXBzKSB7XG4gICAgICAgIEBpZiAocHJvZ3Jlc3NTdHlsZSA9PT0gJ2RvdHMnKSB7XG4gICAgICAgICAgPHVsIGNsYXNzPVwic3RlcHBlcnMtZG90c1wiPlxuICAgICAgICAgICAgQGZvciAoc3RlcCBvZiBzdGVwczsgdHJhY2sgc3RlcDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGxpIFtjbGFzcy5kb25lXT1cImkgPCBhY3RpdmVTdGVwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdpdC5jb3JlLnN0ZXAtb2YnIHwgdHJhbnNsYXRlOiB7IGN1cnJlbnQ6IGFjdGl2ZVN0ZXAgKyAxLCBhdmFpbGFibGU6IHN0ZXBzPy5sZW5ndGggfSB9fVxuICAgICAgICAgICAgICAgICAge3sgaSA8IGFjdGl2ZVN0ZXAgPyAnLSAnICsgKCdpdC5jb3JlLmNvbmZpcm1lZCcgfCB0cmFuc2xhdGUpIDogJycgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXJzLXByb2dyZXNzXCI+XG4gICAgICAgICAgICA8aXQtcHJvZ3Jlc3MtYmFyIFtjb2xvcl09XCJwcm9ncmVzc0NvbG9yXCIgW3ZhbHVlXT1cIihhY3RpdmVTdGVwIC8gKHN0ZXBzPy5sZW5ndGggfHwgMSkpICogMTAwXCI+PC9pdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoc2hvd1NhdmVCdXR0b24pIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGl0QnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICBjbGFzcz1cInN0ZXBwZXJzLWJ0bi1zYXZlXCJcbiAgICAgICAgICBbcHJvZ3Jlc3NdPVwic2F2ZUxvYWRpbmdcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzYXZlTG9hZGluZyB8fCBkaXNhYmxlU2F2ZUJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInNhdmVDbGljay5lbWl0KGFjdGl2ZVN0ZXApXCI+XG4gICAgICAgICAge3sgJ2l0LmdlbmVyYWwuc2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKHNob3dGb3J3YXJkQnV0dG9uKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBpdEJ1dHRvbj1cIm91dGxpbmUtcHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICBjbGFzcz1cInN0ZXBwZXJzLWJ0bi1uZXh0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUZvcndhcmRCdXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJmb3J3YXJkQ2xpY2suZW1pdChhY3RpdmVTdGVwKVwiPlxuICAgICAgICAgIHt7ICdpdC5jb3JlLmZvcndhcmQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPGl0LWljb24gbmFtZT1cImNoZXZyb24tcmlnaHRcIiBjb2xvcj1cInByaW1hcnlcIj48L2l0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChzaG93Q29uZmlybUJ1dHRvbikge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgaXRCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgIGNsYXNzPVwic3RlcHBlcnMtYnRuLWNvbmZpcm0gZC1sZy1ibG9ja1wiXG4gICAgICAgICAgW3Byb2dyZXNzXT1cImNvbmZpcm1Mb2FkaW5nXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlybUxvYWRpbmcgfHwgZGlzYWJsZUNvbmZpcm1CdXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJjb25maXJtQ2xpY2suZW1pdChhY3RpdmVTdGVwKVwiPlxuICAgICAgICAgIHt7ICdpdC5jb3JlLmNvbmZpcm0nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvbmF2PlxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjaGVja0ljb24+XG4gIDxpdC1pY29uIG5hbWU9XCJjaGVja1wiIGNsYXNzPVwic3RlcHBlcnMtc3VjY2Vzc1wiPjwvaXQtaWNvbj5cbiAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eyAnaXQuY29yZS5jb25maXJtZWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from '@angular/core';
2
+ import { ItAbstractComponent } from '../../../../abstracts/abstract.component';
3
+ import * as i0 from "@angular/core";
4
+ export class ItSteppersItemComponent extends ItAbstractComponent {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ItSteppersItemComponent, isStandalone: true, selector: "it-steppers-item", inputs: { label: "label", icon: "icon" }, viewQueries: [{ propertyName: "htmlContent", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersItemComponent, decorators: [{
9
+ type: Component,
10
+ args: [{ standalone: true, selector: 'it-steppers-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n" }]
11
+ }], propDecorators: { label: [{
12
+ type: Input,
13
+ args: [{ required: true }]
14
+ }], icon: [{
15
+ type: Input
16
+ }], htmlContent: [{
17
+ type: ViewChild,
18
+ args: [TemplateRef]
19
+ }] } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlcnMtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvc3RlcHBlcnMvc3RlcHBlcnMtaXRlbS9zdGVwcGVycy1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9zdGVwcGVycy9zdGVwcGVycy1pdGVtL3N0ZXBwZXJzLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFTL0UsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUFtQjs4R0FBbkQsdUJBQXVCO2tHQUF2Qix1QkFBdUIsbUtBZXZCLFdBQVcsdUVDMUJ4Qiw4REFHQTs7MkZEUWEsdUJBQXVCO2tCQVBuQyxTQUFTO2lDQUNJLElBQUksWUFDTixrQkFBa0IsbUJBRVgsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxFQUFFOzhCQU1nQixLQUFLO3NCQUEvQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLaEIsSUFBSTtzQkFBWixLQUFLO2dCQU15QixXQUFXO3NCQUF6QyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24nO1xuaW1wb3J0IHsgSXRBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1zdGVwcGVycy1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXBwZXJzLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIEl0U3RlcHBlcnNJdGVtQ29tcG9uZW50IGV4dGVuZHMgSXRBYnN0cmFjdENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgbGFiZWxzIHByZXNlbnQgaW4gdGhlIGhlYWRlciBzdGVwc1xuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbGFiZWwhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbHMgcHJlc2VudCBpbiB0aGUgaGVhZGVyIHN0ZXBzIGNhbiBiZSBwcmVjZWRlZCBieSBhbiBpY29uLlxuICAgKi9cbiAgQElucHV0KCkgaWNvbjogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHN0ZXBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIHB1YmxpYyBodG1sQ29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iLCI8bmctdGVtcGxhdGU+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { ItSteppersContainerComponent } from './steppers-container/steppers-container.component';
3
+ import { ItSteppersItemComponent } from './steppers-item/steppers-item.component';
4
+ import * as i0 from "@angular/core";
5
+ const steppersComponents = [ItSteppersContainerComponent, ItSteppersItemComponent];
6
+ export class ItSteppersModule {
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersModule, imports: [ItSteppersContainerComponent, ItSteppersItemComponent], exports: [ItSteppersContainerComponent, ItSteppersItemComponent] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersModule, imports: [ItSteppersContainerComponent] }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSteppersModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ imports: steppersComponents,
15
+ exports: steppersComponents,
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlcnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3N0ZXBwZXJzL3N0ZXBwZXJzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUVsRixNQUFNLGtCQUFrQixHQUFHLENBQUMsNEJBQTRCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQU1uRixNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixZQU5ELDRCQUE0QixFQUFFLHVCQUF1QixhQUFyRCw0QkFBNEIsRUFBRSx1QkFBdUI7K0dBTXBFLGdCQUFnQixZQU5ELDRCQUE0Qjs7MkZBTTNDLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixPQUFPLEVBQUUsa0JBQWtCO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdFN0ZXBwZXJzQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwcGVycy1jb250YWluZXIvc3RlcHBlcnMtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdFN0ZXBwZXJzSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vc3RlcHBlcnMtaXRlbS9zdGVwcGVycy1pdGVtLmNvbXBvbmVudCc7XG5cbmNvbnN0IHN0ZXBwZXJzQ29tcG9uZW50cyA9IFtJdFN0ZXBwZXJzQ29udGFpbmVyQ29tcG9uZW50LCBJdFN0ZXBwZXJzSXRlbUNvbXBvbmVudF07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IHN0ZXBwZXJzQ29tcG9uZW50cyxcbiAgZXhwb3J0czogc3RlcHBlcnNDb21wb25lbnRzLFxufSlcbmV4cG9ydCBjbGFzcyBJdFN0ZXBwZXJzTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, Input, ViewChildren, } from '@angular/core';
2
+ import { ItTabItemComponent } from '../tab-item/tab-item.component';
3
+ import { of, startWith, switchMap, tap } from 'rxjs';
4
+ import { Tab } from 'bootstrap-italia';
5
+ import { ItAbstractComponent } from '../../../../abstracts/abstract.component';
6
+ import { NgTemplateOutlet } from '@angular/common';
7
+ import { ItIconComponent } from '../../../utils/icon/icon.component';
8
+ import { inputToBoolean } from '../../../../utils/coercion';
9
+ import * as i0 from "@angular/core";
10
+ export class ItTabContainerComponent extends ItAbstractComponent {
11
+ ngAfterViewInit() {
12
+ super.ngAfterViewInit();
13
+ this.tabs?.changes
14
+ .pipe(
15
+ // When tabs changes (dynamic add/remove)
16
+ startWith(undefined), tap(() => {
17
+ this.tabSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions
18
+ this.tabSubscriptions = this.tabs?.map(tab => tab.valueChanges.subscribe(() => {
19
+ this._changeDetectorRef.detectChanges(); // DetectChanges when tab-item attributes changes
20
+ }));
21
+ this._changeDetectorRef.detectChanges(); // Force update html render
22
+ }), switchMap(() => this.tabNavLinks?.changes.pipe(startWith(undefined)) || of(undefined)))
23
+ .subscribe(() => {
24
+ // Init tabs from bootstrap-italia
25
+ this.tabNavLinks?.forEach(tabNavLink => {
26
+ const triggerEl = tabNavLink.nativeElement, tabTrigger = Tab.getOrCreateInstance(triggerEl);
27
+ if (triggerEl.getAttribute('tab-listener') !== 'true') {
28
+ triggerEl.addEventListener('click', event => {
29
+ event.preventDefault();
30
+ tabTrigger.show();
31
+ this._changeDetectorRef.detectChanges();
32
+ });
33
+ triggerEl.setAttribute('tab-listener', 'true'); // Prevents multiple insertion of the listener
34
+ }
35
+ });
36
+ });
37
+ }
38
+ ngOnDestroy() {
39
+ this.tabSubscriptions?.forEach(sub => sub.unsubscribe());
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ItTabContainerComponent, isStandalone: true, selector: "it-tab-container", inputs: { auto: ["auto", "auto", inputToBoolean], iconText: ["iconText", "iconText", inputToBoolean], dark: ["dark", "dark", inputToBoolean] }, queries: [{ propertyName: "tabs", predicate: ItTabItemComponent }], viewQueries: [{ propertyName: "tabNavLinks", predicate: ["tabNavLinks"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (tabs) {\n <ul class=\"nav nav-tabs\" [class.auto]=\"auto\" [class.nav-tabs-icon-text]=\"iconText\" [class.nav-dark]=\"dark\" role=\"tablist\">\n @for (tab of tabs; track tab.id) {\n <li class=\"nav-item\">\n <a\n #tabNavLinks\n [id]=\"tab.id + '-tab-link'\"\n role=\"tab\"\n class=\"nav-link\"\n [class.active]=\"tab.active\"\n [class.disabled]=\"tab.disabled\"\n [attr.href]=\"'#' + tab.id + '-tab'\"\n [attr.aria-controls]=\"tab.id + '-tab'\">\n @if (tab.icon) {\n <it-icon [name]=\"tab.icon\" class=\"me-2\"></it-icon>\n }\n {{ tab.label }}\n </a>\n </li>\n }\n </ul>\n}\n\n@if (tabs) {\n <div class=\"tab-content\">\n @for (tab of tabs; track tab.id) {\n <div\n [id]=\"tab.id + '-tab'\"\n class=\"tab-pane p-4 fade {{ tab.class ?? '' }}\"\n [class.active]=\"tab.active\"\n [class.show]=\"tab.active\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tab.id + '-tab-link'\">\n <ng-container *ngTemplateOutlet=\"tab.htmlContent\"></ng-container>\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "labelWaria"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabContainerComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ standalone: true, selector: 'it-tab-container', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ItIconComponent, NgTemplateOutlet], template: "@if (tabs) {\n <ul class=\"nav nav-tabs\" [class.auto]=\"auto\" [class.nav-tabs-icon-text]=\"iconText\" [class.nav-dark]=\"dark\" role=\"tablist\">\n @for (tab of tabs; track tab.id) {\n <li class=\"nav-item\">\n <a\n #tabNavLinks\n [id]=\"tab.id + '-tab-link'\"\n role=\"tab\"\n class=\"nav-link\"\n [class.active]=\"tab.active\"\n [class.disabled]=\"tab.disabled\"\n [attr.href]=\"'#' + tab.id + '-tab'\"\n [attr.aria-controls]=\"tab.id + '-tab'\">\n @if (tab.icon) {\n <it-icon [name]=\"tab.icon\" class=\"me-2\"></it-icon>\n }\n {{ tab.label }}\n </a>\n </li>\n }\n </ul>\n}\n\n@if (tabs) {\n <div class=\"tab-content\">\n @for (tab of tabs; track tab.id) {\n <div\n [id]=\"tab.id + '-tab'\"\n class=\"tab-pane p-4 fade {{ tab.class ?? '' }}\"\n [class.active]=\"tab.active\"\n [class.show]=\"tab.active\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tab.id + '-tab-link'\">\n <ng-container *ngTemplateOutlet=\"tab.htmlContent\"></ng-container>\n </div>\n }\n </div>\n}\n" }]
47
+ }], propDecorators: { auto: [{
48
+ type: Input,
49
+ args: [{ transform: inputToBoolean }]
50
+ }], iconText: [{
51
+ type: Input,
52
+ args: [{ transform: inputToBoolean }]
53
+ }], dark: [{
54
+ type: Input,
55
+ args: [{ transform: inputToBoolean }]
56
+ }], tabs: [{
57
+ type: ContentChildren,
58
+ args: [ItTabItemComponent]
59
+ }], tabNavLinks: [{
60
+ type: ViewChildren,
61
+ args: ['tabNavLinks']
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdGFiL3RhYi1jb250YWluZXIvdGFiLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdGFiL3RhYi1jb250YWluZXIvdGFiLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsS0FBSyxFQUdMLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBZ0IsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFTNUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUFtQjtJQTBCckQsZUFBZTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPO2FBQ2YsSUFBSTtRQUNILHlDQUF5QztRQUN6QyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQ3BCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQywyQkFBMkI7WUFDckYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQzNDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsaURBQWlEO1lBQzVGLENBQUMsQ0FBQyxDQUNILENBQUM7WUFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQywyQkFBMkI7UUFDdEUsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDdkY7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2Qsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxFQUN4QyxVQUFVLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUVsRCxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQ3RELFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUU7d0JBQzFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDdkIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQzFDLENBQUMsQ0FBQyxDQUFDO29CQUNILFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsOENBQThDO2dCQUNoRyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7OEdBaEVVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHFGQUtkLGNBQWMsc0NBS2QsY0FBYywwQkFLZCxjQUFjLGtEQUtqQixrQkFBa0IsbUpDOUNyQyxvcUNBc0NBLDRDRGRZLGVBQWUsMkhBQUUsZ0JBQWdCOzsyRkFFaEMsdUJBQXVCO2tCQVBuQyxTQUFTO2lDQUNJLElBQUksWUFDTixrQkFBa0IsbUJBRVgsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQzs4QkFPTixJQUFJO3NCQUF6QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLRSxRQUFRO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLRSxJQUFJO3NCQUF6QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFLQyxJQUFJO3NCQUF4QyxlQUFlO3VCQUFDLGtCQUFrQjtnQkFFRSxXQUFXO3NCQUEvQyxZQUFZO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0VGFiSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi1pdGVtL3RhYi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBvZiwgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICdib290c3RyYXAtaXRhbGlhJztcbmltcG9ydCB7IEl0QWJzdHJhY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QuY29tcG9uZW50JztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSXRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtdGFiLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtJdEljb25Db21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBJdFRhYkNvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIEl0QWJzdHJhY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogVGFicyBhdXRvbWF0aWNhbGx5IG9jY3VweSB0aGUgZW50aXJlIGF2YWlsYWJsZSB3aWR0aFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBhdXRvPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG8gb2J0YWluIHRoZSBjb3JyZWN0IG1hcmdpbiBiZXR3ZWVuIHRleHQgYW5kIGljb24gaW4gdGhlIGhvcml6b250YWxseSBkZXZlbG9wZWQgdGFiXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGljb25UZXh0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGFyayBzdHlsZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBkYXJrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRhYiBpdGVtc1xuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihJdFRhYkl0ZW1Db21wb25lbnQpIHRhYnM/OiBRdWVyeUxpc3Q8SXRUYWJJdGVtQ29tcG9uZW50PjtcblxuICBAVmlld0NoaWxkcmVuKCd0YWJOYXZMaW5rcycpIHByaXZhdGUgdGFiTmF2TGlua3M/OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MQW5jaG9yRWxlbWVudD4+O1xuXG4gIHByaXZhdGUgdGFiU3Vic2NyaXB0aW9ucz86IEFycmF5PFN1YnNjcmlwdGlvbj47XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgdGhpcy50YWJzPy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gV2hlbiB0YWJzIGNoYW5nZXMgKGR5bmFtaWMgYWRkL3JlbW92ZSlcbiAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50YWJTdWJzY3JpcHRpb25zPy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7IC8vIFJlbW92ZSBvbGQgc3Vic2NyaXB0aW9uc1xuICAgICAgICAgIHRoaXMudGFiU3Vic2NyaXB0aW9ucyA9IHRoaXMudGFicz8ubWFwKHRhYiA9PlxuICAgICAgICAgICAgdGFiLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7IC8vIERldGVjdENoYW5nZXMgd2hlbiB0YWItaXRlbSBhdHRyaWJ1dGVzIGNoYW5nZXNcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcmNlIHVwZGF0ZSBodG1sIHJlbmRlclxuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudGFiTmF2TGlua3M/LmNoYW5nZXMucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSkgfHwgb2YodW5kZWZpbmVkKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBJbml0IHRhYnMgZnJvbSBib290c3RyYXAtaXRhbGlhXG4gICAgICAgIHRoaXMudGFiTmF2TGlua3M/LmZvckVhY2godGFiTmF2TGluayA9PiB7XG4gICAgICAgICAgY29uc3QgdHJpZ2dlckVsID0gdGFiTmF2TGluay5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgdGFiVHJpZ2dlciA9IFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKHRyaWdnZXJFbCk7XG5cbiAgICAgICAgICBpZiAodHJpZ2dlckVsLmdldEF0dHJpYnV0ZSgndGFiLWxpc3RlbmVyJykgIT09ICd0cnVlJykge1xuICAgICAgICAgICAgdHJpZ2dlckVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnQgPT4ge1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICB0YWJUcmlnZ2VyLnNob3coKTtcbiAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0cmlnZ2VyRWwuc2V0QXR0cmlidXRlKCd0YWItbGlzdGVuZXInLCAndHJ1ZScpOyAvLyBQcmV2ZW50cyBtdWx0aXBsZSBpbnNlcnRpb24gb2YgdGhlIGxpc3RlbmVyXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy50YWJTdWJzY3JpcHRpb25zPy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiIsIkBpZiAodGFicykge1xuICA8dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIiBbY2xhc3MuYXV0b109XCJhdXRvXCIgW2NsYXNzLm5hdi10YWJzLWljb24tdGV4dF09XCJpY29uVGV4dFwiIFtjbGFzcy5uYXYtZGFya109XCJkYXJrXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICBAZm9yICh0YWIgb2YgdGFiczsgdHJhY2sgdGFiLmlkKSB7XG4gICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICA8YVxuICAgICAgICAgICN0YWJOYXZMaW5rc1xuICAgICAgICAgIFtpZF09XCJ0YWIuaWQgKyAnLXRhYi1saW5rJ1wiXG4gICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCJcbiAgICAgICAgICBbYXR0ci5ocmVmXT1cIicjJyArIHRhYi5pZCArICctdGFiJ1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJ0YWIuaWQgKyAnLXRhYidcIj5cbiAgICAgICAgICBAaWYgKHRhYi5pY29uKSB7XG4gICAgICAgICAgICA8aXQtaWNvbiBbbmFtZV09XCJ0YWIuaWNvblwiIGNsYXNzPVwibWUtMlwiPjwvaXQtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgfVxuICA8L3VsPlxufVxuXG5AaWYgKHRhYnMpIHtcbiAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCI+XG4gICAgQGZvciAodGFiIG9mIHRhYnM7IHRyYWNrIHRhYi5pZCkge1xuICAgICAgPGRpdlxuICAgICAgICBbaWRdPVwidGFiLmlkICsgJy10YWInXCJcbiAgICAgICAgY2xhc3M9XCJ0YWItcGFuZSBwLTQgZmFkZSB7eyB0YWIuY2xhc3MgPz8gJycgfX1cIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInRhYi5hY3RpdmVcIlxuICAgICAgICBbY2xhc3Muc2hvd109XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRhYi5pZCArICctdGFiLWxpbmsnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIuaHRtbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from '@angular/core';
2
+ import { ItAbstractComponent } from '../../../../abstracts/abstract.component';
3
+ import { inputToBoolean } from '../../../../utils/coercion';
4
+ import * as i0 from "@angular/core";
5
+ export class ItTabItemComponent extends ItAbstractComponent {
6
+ constructor() {
7
+ super(...arguments);
8
+ /**
9
+ * Custom class
10
+ */
11
+ this.class = '';
12
+ }
13
+ ngAfterViewInit() {
14
+ super.ngAfterViewInit();
15
+ this._renderer.removeAttribute(this._elementRef.nativeElement, 'class');
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.1.2", type: ItTabItemComponent, isStandalone: true, selector: "it-tab-item", inputs: { label: "label", icon: "icon", active: ["active", "active", inputToBoolean], disabled: ["disabled", "disabled", inputToBoolean], class: "class" }, viewQueries: [{ propertyName: "htmlContent", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabItemComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ standalone: true, selector: 'it-tab-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "<ng-template>\n <ng-content></ng-content>\n</ng-template>\n" }]
23
+ }], propDecorators: { label: [{
24
+ type: Input
25
+ }], icon: [{
26
+ type: Input
27
+ }], active: [{
28
+ type: Input,
29
+ args: [{ transform: inputToBoolean }]
30
+ }], disabled: [{
31
+ type: Input,
32
+ args: [{ transform: inputToBoolean }]
33
+ }], class: [{
34
+ type: Input
35
+ }], htmlContent: [{
36
+ type: ViewChild,
37
+ args: [TemplateRef]
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYi90YWItaXRlbS90YWItaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdGFiL3RhYi1pdGVtL3RhYi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFTNUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQjtJQVAzRDs7UUErQkU7O1dBRUc7UUFDTSxVQUFLLEdBQVcsRUFBRSxDQUFDO0tBVzdCO0lBSlUsZUFBZTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQzs4R0FyQ1Usa0JBQWtCO2tHQUFsQixrQkFBa0Isb0hBZ0JULGNBQWMsc0NBTWQsY0FBYywwRkFVdkIsV0FBVyx1RUM1Q3hCLDhEQUdBOzsyRkRTYSxrQkFBa0I7a0JBUDlCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGFBQWEsbUJBRU4sdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxFQUFFOzhCQU9GLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTWdDLE1BQU07c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLFFBQVE7c0JBQTdDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQUszQixLQUFLO3NCQUFiLEtBQUs7Z0JBS3lCLFdBQVc7c0JBQXpDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdEFic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vYWJzdHJhY3RzL2Fic3RyYWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uTmFtZSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvaWNvbic7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtdGFiLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgSXRUYWJJdGVtQ29tcG9uZW50IGV4dGVuZHMgSXRBYnN0cmFjdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIC8qKlxuICAgKiBUaGUgdGFiIGxhYmVsXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBuYW1lXG4gICAqL1xuICBASW5wdXQoKSBpY29uOiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRGVmYXVsdCBhY3RpdmUgdGFiXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGFjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgZGlzYWJsZWQgdGFiXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3VzdG9tIGNsYXNzXG4gICAqL1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRhYlxuICAgKi9cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZikgcHVibGljIGh0bWxDb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsYXNzJyk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { ItTabContainerComponent } from './tab-container/tab-container.component';
3
+ import { ItTabItemComponent } from './tab-item/tab-item.component';
4
+ import * as i0 from "@angular/core";
5
+ const tabComponents = [ItTabContainerComponent, ItTabItemComponent];
6
+ export class ItTabModule {
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: ItTabModule, imports: [ItTabContainerComponent, ItTabItemComponent], exports: [ItTabContainerComponent, ItTabItemComponent] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabModule }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItTabModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ imports: tabComponents,
15
+ exports: tabComponents,
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWIvdGFiLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUVuRSxNQUFNLGFBQWEsR0FBRyxDQUFDLHVCQUF1QixFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFNcEUsTUFBTSxPQUFPLFdBQVc7OEdBQVgsV0FBVzsrR0FBWCxXQUFXLFlBTkQsdUJBQXVCLEVBQUUsa0JBQWtCLGFBQTNDLHVCQUF1QixFQUFFLGtCQUFrQjsrR0FNckQsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsYUFBYTtvQkFDdEIsT0FBTyxFQUFFLGFBQWE7aUJBQ3ZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0VGFiQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWItY29udGFpbmVyL3RhYi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEl0VGFiSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdGFiLWl0ZW0vdGFiLWl0ZW0uY29tcG9uZW50JztcblxuY29uc3QgdGFiQ29tcG9uZW50cyA9IFtJdFRhYkNvbnRhaW5lckNvbXBvbmVudCwgSXRUYWJJdGVtQ29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogdGFiQ29tcG9uZW50cyxcbiAgZXhwb3J0czogdGFiQ29tcG9uZW50cyxcbn0pXG5leHBvcnQgY2xhc3MgSXRUYWJNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,134 @@
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, HostListener, Inject, Input, Optional, ViewEncapsulation, } from '@angular/core';
2
+ import { merge } from 'rxjs';
3
+ import { ItIconComponent } from '../../../../utils/icon/icon.component';
4
+ import { IT_SORT_DEFAULT_OPTIONS, } from '../../../../../interfaces/sortable-table';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../sort.directive";
7
+ /**
8
+ * Applies sorting behavior (click to change sort) and styles to an element, including an
9
+ * arrow to display the current sort direction.
10
+ *
11
+ * Must be provided with an id and contained within a parent ItSort directive.
12
+ *
13
+ * If used on header cells in a CdkTable, it will automatically default its id from its containing
14
+ * column definition.
15
+ */
16
+ export class ItSortHeaderComponent {
17
+ constructor(_changeDetectorRef,
18
+ // `SortDirective` is not optionally injected, but just asserted manually w/ better error.
19
+ _sort, defaultOptions) {
20
+ this._changeDetectorRef = _changeDetectorRef;
21
+ this._sort = _sort;
22
+ /** Sets the position of the arrow that displays when sorted. */
23
+ this.arrowPosition = 'after';
24
+ /** whether the sort header is disabled. */
25
+ this.sortDisabled = false;
26
+ this.sortHeaderClass = 'it-sort-header';
27
+ if (defaultOptions?.arrowPosition) {
28
+ this.arrowPosition = defaultOptions?.arrowPosition;
29
+ }
30
+ this._handleStateChanges();
31
+ }
32
+ ngOnInit() {
33
+ // Initialize the direction of the arrow and set the view state to be immediately that state.
34
+ this.updateArrowDirection();
35
+ this._sort.register(this);
36
+ }
37
+ ngOnDestroy() {
38
+ this._sort.deregister(this);
39
+ this._rerenderSubscription?.unsubscribe();
40
+ }
41
+ _handleClick() {
42
+ if (!this.isDisabled) {
43
+ this._sort.sort(this);
44
+ }
45
+ }
46
+ /**
47
+ * Whether this MatSortHeader is currently sorted in either ascending or descending order.
48
+ */
49
+ get isSorted() {
50
+ return this._sort.active == this.id && (this._sort.direction === 'asc' || this._sort.direction === 'desc');
51
+ }
52
+ /**
53
+ * Returns the icon class by the arrow direction
54
+ */
55
+ get arrowIconClass() {
56
+ return `${this._arrowDirection == 'asc' ? 'arrow-up' : 'arrow-down'}`;
57
+ }
58
+ /**
59
+ * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be
60
+ * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently
61
+ * active sorted direction. The reason this is updated through a function is because the direction
62
+ * should only be changed at specific times - when deactivated but the hint is displayed and when
63
+ * the sort is active and the direction changes. Otherwise the arrow's direction should linger
64
+ * in cases such as the sort becoming deactivated but we want to animate the arrow away while
65
+ * preserving its direction, even though the next sort direction is actually different and should
66
+ * only be changed once the arrow displays again (hint or activation).
67
+ */
68
+ updateArrowDirection() {
69
+ this._arrowDirection = this.isSorted ? this._sort.direction : this.start || this._sort.start;
70
+ }
71
+ get isDisabled() {
72
+ return this._sort.sortDisabled || this.sortDisabled;
73
+ }
74
+ /**
75
+ * Gets the aria-sort attribute that should be applied to this sort header. If this header
76
+ * is not sorted, returns null so that the attribute is removed from the host element. Aria spec
77
+ * says that the aria-sort property should only be present on one header at a time, so removing
78
+ * ensures this is true.
79
+ */
80
+ get ariaSortAttribute() {
81
+ if (!this.isSorted) {
82
+ return 'none';
83
+ }
84
+ return this._sort.direction == 'asc' ? 'ascending' : 'descending';
85
+ }
86
+ /** Handles changes in the sorting state. */
87
+ _handleStateChanges() {
88
+ this._rerenderSubscription = merge(this._sort.sortChange, this._sort._stateChanges).subscribe(() => {
89
+ if (this.isSorted) {
90
+ this.updateArrowDirection();
91
+ }
92
+ this._changeDetectorRef.markForCheck();
93
+ });
94
+ }
95
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSortHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ItSortDirective, optional: true }, { token: IT_SORT_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
96
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.1.2", type: ItSortHeaderComponent, isStandalone: true, selector: "[it-sort-header]", inputs: { id: ["it-sort-header", "id"], arrowPosition: "arrowPosition", start: "start", sortDisabled: ["sortDisabled", "sortDisabled", booleanAttribute], disableSortClear: ["disableSortClear", "disableSortClear", booleanAttribute] }, host: { listeners: { "click": "_handleClick()" }, properties: { "class": "this.sortHeaderClass", "class.it-sort-header-disabled": "this.isDisabled", "attr.aria-sort": "this.ariaSortAttribute" } }, exportAs: ["itSortHeader"], ngImport: i0, template: "<!--\n We set the `tabindex` on an element inside the table header, rather than the header itself,\n because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\n table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\n be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\n over having a button with an `aria-label` inside the header, because the button's `aria-label`\n will be read out as the user is navigating the table's cell (see #13012).\n\n The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\n-->\n<div class=\"it-sort-header-container it-focus-indicator\"\n [class.it-sort-header-sorted]=\"isSorted\"\n [class.it-sort-header-position-before]=\"arrowPosition === 'before'\"\n [attr.tabindex]=\"isDisabled ? null : 0\"\n [attr.role]=\"isDisabled ? null : 'button'\">\n\n <!--\n We have to keep it due to a large number of screenshot diff failures. It should be removed eventually.\n Note that the difference isn't visible with a shorter header, but once it breaks up into multiple lines, this element\n causes it to be center-aligned, whereas removing it will keep the text to the left.\n -->\n <div class=\"it-sort-header-content\">\n <ng-content></ng-content>\n </div>\n\n <it-icon class=\"it-sort-arrow\" size=\"sm\" [name]=\"arrowIconClass\" />\n</div>\n", styles: [".it-sort-header-container{display:flex;cursor:pointer;align-items:center;justify-content:space-between;letter-spacing:normal;outline:0}.it-sort-header-disabled .it-sort-header-container{cursor:default}.it-sort-header-disabled .it-sort-header-container .it-sort-arrow{opacity:0!important}.it-sort-header-container:before{margin:-5px}.it-sort-header-container.it-sort-header-position-before{flex-direction:row-reverse;justify-content:left;gap:.5rem}.it-sort-header-container .it-sort-arrow{opacity:0;transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out}.it-sort-header-container:hover .it-sort-arrow{opacity:.5}.it-sort-header-container.it-sort-header-sorted .it-sort-arrow{opacity:1!important}\n"], dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "labelWaria"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ItSortHeaderComponent, decorators: [{
99
+ type: Component,
100
+ args: [{ selector: '[it-sort-header]', exportAs: 'itSortHeader', standalone: true, imports: [ItIconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n We set the `tabindex` on an element inside the table header, rather than the header itself,\n because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\n table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\n be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\n over having a button with an `aria-label` inside the header, because the button's `aria-label`\n will be read out as the user is navigating the table's cell (see #13012).\n\n The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\n-->\n<div class=\"it-sort-header-container it-focus-indicator\"\n [class.it-sort-header-sorted]=\"isSorted\"\n [class.it-sort-header-position-before]=\"arrowPosition === 'before'\"\n [attr.tabindex]=\"isDisabled ? null : 0\"\n [attr.role]=\"isDisabled ? null : 'button'\">\n\n <!--\n We have to keep it due to a large number of screenshot diff failures. It should be removed eventually.\n Note that the difference isn't visible with a shorter header, but once it breaks up into multiple lines, this element\n causes it to be center-aligned, whereas removing it will keep the text to the left.\n -->\n <div class=\"it-sort-header-content\">\n <ng-content></ng-content>\n </div>\n\n <it-icon class=\"it-sort-arrow\" size=\"sm\" [name]=\"arrowIconClass\" />\n</div>\n", styles: [".it-sort-header-container{display:flex;cursor:pointer;align-items:center;justify-content:space-between;letter-spacing:normal;outline:0}.it-sort-header-disabled .it-sort-header-container{cursor:default}.it-sort-header-disabled .it-sort-header-container .it-sort-arrow{opacity:0!important}.it-sort-header-container:before{margin:-5px}.it-sort-header-container.it-sort-header-position-before{flex-direction:row-reverse;justify-content:left;gap:.5rem}.it-sort-header-container .it-sort-arrow{opacity:0;transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;-webkit-transition:opacity .3s ease-out;-o-transition:opacity .3s ease-out}.it-sort-header-container:hover .it-sort-arrow{opacity:.5}.it-sort-header-container.it-sort-header-sorted .it-sort-arrow{opacity:1!important}\n"] }]
101
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ItSortDirective, decorators: [{
102
+ type: Optional
103
+ }] }, { type: undefined, decorators: [{
104
+ type: Optional
105
+ }, {
106
+ type: Inject,
107
+ args: [IT_SORT_DEFAULT_OPTIONS]
108
+ }] }], propDecorators: { id: [{
109
+ type: Input,
110
+ args: ['it-sort-header']
111
+ }], arrowPosition: [{
112
+ type: Input
113
+ }], start: [{
114
+ type: Input
115
+ }], sortDisabled: [{
116
+ type: Input,
117
+ args: [{ transform: booleanAttribute }]
118
+ }], disableSortClear: [{
119
+ type: Input,
120
+ args: [{ transform: booleanAttribute }]
121
+ }], sortHeaderClass: [{
122
+ type: HostBinding,
123
+ args: ['class']
124
+ }], _handleClick: [{
125
+ type: HostListener,
126
+ args: ['click']
127
+ }], isDisabled: [{
128
+ type: HostBinding,
129
+ args: ['class.it-sort-header-disabled']
130
+ }], ariaSortAttribute: [{
131
+ type: HostBinding,
132
+ args: ['attr.aria-sort']
133
+ }] } });
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3NvcnQvc29ydC1oZWFkZXIvc29ydC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3NvcnQvc29ydC1oZWFkZXIvc29ydC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV4RSxPQUFPLEVBQ0wsdUJBQXVCLEdBS3hCLE1BQU0sMENBQTBDLENBQUM7OztBQUVsRDs7Ozs7Ozs7R0FRRztBQVlILE1BQU0sT0FBTyxxQkFBcUI7SUE2QmhDLFlBQ21CLGtCQUFxQztJQUN0RCwwRkFBMEY7SUFDOUQsS0FBc0IsRUFDTCxjQUFxQztRQUhqRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBRTFCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBekJwRCxnRUFBZ0U7UUFDdkQsa0JBQWEsR0FBNEIsT0FBTyxDQUFDO1FBSzFELDJDQUEyQztRQUUzQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQU9kLG9CQUFlLEdBQUcsZ0JBQWdCLENBQUM7UUFhakQsSUFBSSxjQUFj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a0M1QyxRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1Qjt5Q0E1QnBCLEVBQUU7c0JBQTFCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUdkLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLdEMsZ0JBQWdCO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSXRCLGVBQWU7c0JBRDlCLFdBQVc7dUJBQUMsT0FBTztnQkFpQ3BCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPO2dCQW9DVixVQUFVO3NCQURwQixXQUFXO3VCQUFDLCtCQUErQjtnQkFZakMsaUJBQWlCO3NCQUQzQixXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0U29ydERpcmVjdGl2ZSB9IGZyb20gJy4uL3NvcnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEl0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24nO1xuaW1wb3J0IHtcbiAgSVRfU09SVF9ERUZBVUxUX09QVElPTlMsXG4gIEl0U29ydGFibGUsXG4gIEl0U29ydERlZmF1bHRPcHRpb25zLFxuICBTb3J0RGlyZWN0aW9uLFxuICBTb3J0SGVhZGVyQXJyb3dQb3NpdGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9zb3J0YWJsZS10YWJsZSc7XG5cbi8qKlxuICogQXBwbGllcyBzb3J0aW5nIGJlaGF2aW9yIChjbGljayB0byBjaGFuZ2Ugc29ydCkgYW5kIHN0eWxlcyB0byBhbiBlbGVtZW50LCBpbmNsdWRpbmcgYW5cbiAqIGFycm93IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnQgc29ydCBkaXJlY3Rpb24uXG4gKlxuICogTXVzdCBiZSBwcm92aWRlZCB3aXRoIGFuIGlkIGFuZCBjb250YWluZWQgd2l0aGluIGEgcGFyZW50IEl0U29ydCBkaXJlY3RpdmUuXG4gKlxuICogSWYgdXNlZCBvbiBoZWFkZXIgY2VsbHMgaW4gYSBDZGtUYWJsZSwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRlZmF1bHQgaXRzIGlkIGZyb20gaXRzIGNvbnRhaW5pbmdcbiAqIGNvbHVtbiBkZWZpbml0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbaXQtc29ydC1oZWFkZXJdJyxcbiAgZXhwb3J0QXM6ICdpdFNvcnRIZWFkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSXRJY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NvcnQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc29ydC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEl0U29ydEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEl0U29ydGFibGUsIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgLyoqXG4gICAqIElEIG9mIHRoaXMgc29ydCBoZWFkZXIuIElmIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgQ2RrQ29sdW1uRGVmLCB0aGlzIHdpbGwgZGVmYXVsdCB0b1xuICAgKiB0aGUgY29sdW1uJ3MgbmFtZS5cbiAgICovXG4gIEBJbnB1dCgnaXQtc29ydC1oZWFkZXInKSBpZCE6IHN0cmluZztcblxuICAvKiogU2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGFycm93IHRoYXQgZGlzcGxheXMgd2hlbiBzb3J0ZWQuICovXG4gIEBJbnB1dCgpIGFycm93UG9zaXRpb246IFNvcnRIZWFkZXJBcnJvd1Bvc2l0aW9uID0gJ2FmdGVyJztcblxuICAvKiogT3ZlcnJpZGVzIHRoZSBzb3J0IHN0YXJ0IHZhbHVlIG9mIHRoZSBjb250YWluaW5nIE1hdFNvcnQgZm9yIHRoaXMgU29ydEhlYWRlckNvbXBvbmVudC4gKi9cbiAgQElucHV0KCkgc3RhcnQ/OiBTb3J0RGlyZWN0aW9uO1xuXG4gIC8qKiB3aGV0aGVyIHRoZSBzb3J0IGhlYWRlciBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNvcnREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBPdmVycmlkZXMgdGhlIGRpc2FibGUgY2xlYXIgdmFsdWUgb2YgdGhlIGNvbnRhaW5pbmcgU29ydERpcmVjdGl2ZSBmb3IgdGhpcyBNYXRTb3J0YWJsZS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGRpc2FibGVTb3J0Q2xlYXI/OiBib29sZWFuO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwdWJsaWMgcmVhZG9ubHkgc29ydEhlYWRlckNsYXNzID0gJ2l0LXNvcnQtaGVhZGVyJztcblxuICBwcml2YXRlIF9yZXJlbmRlclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAvKiogVGhlIGRpcmVjdGlvbiB0aGUgYXJyb3cgc2hvdWxkIGJlIGZhY2luZyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgc3RhdGUuICovXG4gIHByaXZhdGUgX2Fycm93RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgLy8gYFNvcnREaXJlY3RpdmVgIGlzIG5vdCBvcHRpb25hbGx5IGluamVjdGVkLCBidXQganVzdCBhc3NlcnRlZCBtYW51YWxseSB3LyBiZXR0ZXIgZXJyb3IuXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHJlYWRvbmx5IF9zb3J0OiBJdFNvcnREaXJlY3RpdmUsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChJVF9TT1JUX0RFRkFVTFRfT1BUSU9OUykgZGVmYXVsdE9wdGlvbnM/OiBJdFNvcnREZWZhdWx0T3B0aW9uc1xuICApIHtcbiAgICBpZiAoZGVmYXVsdE9wdGlvbnM/LmFycm93UG9zaXRpb24pIHtcbiAgICAgIHRoaXMuYXJyb3dQb3NpdGlvbiA9IGRlZmF1bHRPcHRpb25zPy5hcnJvd1Bvc2l0aW9uO1xuICAgIH1cblxuICAgIHRoaXMuX2hhbmRsZVN0YXRlQ2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGlyZWN0aW9uIG9mIHRoZSBhcnJvdyBhbmQgc2V0IHRoZSB2aWV3IHN0YXRlIHRvIGJlIGltbWVkaWF0ZWx5IHRoYXQgc3RhdGUuXG4gICAgdGhpcy51cGRhdGVBcnJvd0RpcmVjdGlvbigpO1xuICAgIHRoaXMuX3NvcnQucmVnaXN0ZXIodGhpcyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zb3J0LmRlcmVnaXN0ZXIodGhpcyk7XG4gICAgdGhpcy5fcmVyZW5kZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIF9oYW5kbGVDbGljaygpIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5fc29ydC5zb3J0KHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgTWF0U29ydEhlYWRlciBpcyBjdXJyZW50bHkgc29ydGVkIGluIGVpdGhlciBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgaXNTb3J0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnQuYWN0aXZlID09IHRoaXMuaWQgJiYgKHRoaXMuX3NvcnQuZGlyZWN0aW9uID09PSAnYXNjJyB8fCB0aGlzLl9zb3J0LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpY29uIGNsYXNzIGJ5IHRoZSBhcnJvdyBkaXJlY3Rpb25cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgYXJyb3dJY29uQ2xhc3MoKTogSWNvbk5hbWUge1xuICAgIHJldHVybiBgJHt0aGlzLl9hcnJvd0RpcmVjdGlvbiA9PSAnYXNjJyA/ICdhcnJvdy11cCcgOiAnYXJyb3ctZG93bid9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBkaXJlY3Rpb24gdGhlIGFycm93IHNob3VsZCBiZSBwb2ludGluZy4gSWYgaXQgaXMgbm90IHNvcnRlZCwgdGhlIGFycm93IHNob3VsZCBiZVxuICAgKiBmYWNpbmcgdGhlIHN0YXJ0IGRpcmVjdGlvbi4gT3RoZXJ3aXNlIGlmIGl0IGlzIHNvcnRlZCwgdGhlIGFycm93IHNob3VsZCBwb2ludCBpbiB0aGUgY3VycmVudGx5XG4gICAqIGFjdGl2ZSBzb3J0ZWQgZGlyZWN0aW9uLiBUaGUgcmVhc29uIHRoaXMgaXMgdXBkYXRlZCB0aHJvdWdoIGEgZnVuY3Rpb24gaXMgYmVjYXVzZSB0aGUgZGlyZWN0aW9uXG4gICAqIHNob3VsZCBvbmx5IGJlIGNoYW5nZWQgYXQgc3BlY2lmaWMgdGltZXMgLSB3aGVuIGRlYWN0aXZhdGVkIGJ1dCB0aGUgaGludCBpcyBkaXNwbGF5ZWQgYW5kIHdoZW5cbiAgICogdGhlIHNvcnQgaXMgYWN0aXZlIGFuZCB0aGUgZGlyZWN0aW9uIGNoYW5nZXMuIE90aGVyd2lzZSB0aGUgYXJyb3cncyBkaXJlY3Rpb24gc2hvdWxkIGxpbmdlclxuICAgKiBpbiBjYXNlcyBzdWNoIGFzIHRoZSBzb3J0IGJlY29taW5nIGRlYWN0aXZhdGVkIGJ1dCB3ZSB3YW50IHRvIGFuaW1hdGUgdGhlIGFycm93IGF3YXkgd2hpbGVcbiAgICogcHJlc2VydmluZyBpdHMgZGlyZWN0aW9uLCBldmVuIHRob3VnaCB0aGUgbmV4dCBzb3J0IGRpcmVjdGlvbiBpcyBhY3R1YWxseSBkaWZmZXJlbnQgYW5kIHNob3VsZFxuICAgKiBvbmx5IGJlIGNoYW5nZWQgb25jZSB0aGUgYXJyb3cgZGlzcGxheXMgYWdhaW4gKGhpbnQgb3IgYWN0aXZhdGlvbikuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUFycm93RGlyZWN0aW9uKCkge1xuICAgIHRoaXMuX2Fycm93RGlyZWN0aW9uID0gdGhpcy5pc1NvcnRlZCA/IHRoaXMuX3NvcnQuZGlyZWN0aW9uIDogdGhpcy5zdGFydCB8fCB0aGlzLl9zb3J0LnN0YXJ0O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pdC1zb3J0LWhlYWRlci1kaXNhYmxlZCcpXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydC5zb3J0RGlzYWJsZWQgfHwgdGhpcy5zb3J0RGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYXJpYS1zb3J0IGF0dHJpYnV0ZSB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoaXMgc29ydCBoZWFkZXIuIElmIHRoaXMgaGVhZGVyXG4gICAqIGlzIG5vdCBzb3J0ZWQsIHJldHVybnMgbnVsbCBzbyB0aGF0IHRoZSBhdHRyaWJ1dGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBob3N0IGVsZW1lbnQuIEFyaWEgc3BlY1xuICAgKiBzYXlzIHRoYXQgdGhlIGFyaWEtc29ydCBwcm9wZXJ0eSBzaG91bGQgb25seSBiZSBwcmVzZW50IG9uIG9uZSBoZWFkZXIgYXQgYSB0aW1lLCBzbyByZW1vdmluZ1xuICAgKiBlbnN1cmVzIHRoaXMgaXMgdHJ1ZS5cbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNvcnQnKVxuICBwdWJsaWMgZ2V0IGFyaWFTb3J0QXR0cmlidXRlKCkge1xuICAgIGlmICghdGhpcy5pc1NvcnRlZCkge1xuICAgICAgcmV0dXJuICdub25lJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc29ydC5kaXJlY3Rpb24gPT0gJ2FzYycgPyAnYXNjZW5kaW5nJyA6ICdkZXNjZW5kaW5nJztcbiAgfVxuXG4gIC8qKiBIYW5kbGVzIGNoYW5nZXMgaW4gdGhlIHNvcnRpbmcgc3RhdGUuICovXG4gIHByaXZhdGUgX2hhbmRsZVN0YXRlQ2hhbmdlcygpIHtcbiAgICB0aGlzLl9yZXJlbmRlclN1YnNjcmlwdGlvbiA9IG1lcmdlKHRoaXMuX3NvcnQuc29ydENoYW5nZSwgdGhpcy5fc29ydC5fc3RhdGVDaGFuZ2VzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNTb3J0ZWQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVBcnJvd0RpcmVjdGlvbigpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgV2Ugc2V0IHRoZSBgdGFiaW5kZXhgIG9uIGFuIGVsZW1lbnQgaW5zaWRlIHRoZSB0YWJsZSBoZWFkZXIsIHJhdGhlciB0aGFuIHRoZSBoZWFkZXIgaXRzZWxmLFxuICBiZWNhdXNlIG9mIGEgYnVnIGluIE5WREEgd2hlcmUgaGF2aW5nIGEgYHRhYmluZGV4YCBvbiBhIGB0aGAgYnJlYWtzIGtleWJvYXJkIG5hdmlnYXRpb24gaW4gdGhlXG4gIHRhYmxlIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL252YWNjZXNzL252ZGEvaXNzdWVzLzc3MTgpLiBUaGlzIGFsbG93cyBmb3IgdGhlIGhlYWRlciB0byBib3RoXG4gIGJlIGZvY3VzYWJsZSwgYW5kIGhhdmUgc2NyZWVuIHJlYWRlcnMgcmVhZCBvdXQgaXRzIGBhcmlhLXNvcnRgIHN0YXRlLiBXZSBwcmVmZXIgdGhpcyBhcHByb2FjaFxuICBvdmVyIGhhdmluZyBhIGJ1dHRvbiB3aXRoIGFuIGBhcmlhLWxhYmVsYCBpbnNpZGUgdGhlIGhlYWRlciwgYmVjYXVzZSB0aGUgYnV0dG9uJ3MgYGFyaWEtbGFiZWxgXG4gIHdpbGwgYmUgcmVhZCBvdXQgYXMgdGhlIHVzZXIgaXMgbmF2aWdhdGluZyB0aGUgdGFibGUncyBjZWxsIChzZWUgIzEzMDEyKS5cblxuICBUaGUgYXBwcm9hY2ggaXMgYmFzZWQgb2ZmIG9mOiBodHRwczovL2RlcXVldW5pdmVyc2l0eS5jb20vbGlicmFyeS9hcmlhL3RhYmxlcy9zZi1zb3J0YWJsZS1ncmlkXG4tLT5cbjxkaXYgY2xhc3M9XCJpdC1zb3J0LWhlYWRlci1jb250YWluZXIgaXQtZm9jdXMtaW5kaWNhdG9yXCJcbiAgICAgW2NsYXNzLml0LXNvcnQtaGVhZGVyLXNvcnRlZF09XCJpc1NvcnRlZFwiXG4gICAgIFtjbGFzcy5pdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmVdPVwiYXJyb3dQb3NpdGlvbiA9PT0gJ2JlZm9yZSdcIlxuICAgICBbYXR0ci50YWJpbmRleF09XCJpc0Rpc2FibGVkID8gbnVsbCA6IDBcIlxuICAgICBbYXR0ci5yb2xlXT1cImlzRGlzYWJsZWQgPyBudWxsIDogJ2J1dHRvbidcIj5cblxuICA8IS0tXG4gICAgV2UgaGF2ZSB0byBrZWVwIGl0IGR1ZSB0byBhIGxhcmdlIG51bWJlciBvZiBzY3JlZW5zaG90IGRpZmYgZmFpbHVyZXMuIEl0IHNob3VsZCBiZSByZW1vdmVkIGV2ZW50dWFsbHkuXG4gICAgTm90ZSB0aGF0IHRoZSBkaWZmZXJlbmNlIGlzbid0IHZpc2libGUgd2l0aCBhIHNob3J0ZXIgaGVhZGVyLCBidXQgb25jZSBpdCBicmVha3MgdXAgaW50byBtdWx0aXBsZSBsaW5lcywgdGhpcyBlbGVtZW50XG4gICAgY2F1c2VzIGl0IHRvIGJlIGNlbnRlci1hbGlnbmVkLCB3aGVyZWFzIHJlbW92aW5nIGl0IHdpbGwga2VlcCB0aGUgdGV4dCB0byB0aGUgbGVmdC5cbiAgLS0+XG4gIDxkaXYgY2xhc3M9XCJpdC1zb3J0LWhlYWRlci1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cblxuICA8aXQtaWNvbiBjbGFzcz1cIml0LXNvcnQtYXJyb3dcIiBzaXplPVwic21cIiBbbmFtZV09XCJhcnJvd0ljb25DbGFzc1wiIC8+XG48L2Rpdj5cbiJdfQ==