@clr/angular 17.5.0 → 17.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (562) hide show
  1. package/button/button-group/button.d.ts +6 -3
  2. package/clarity.api.md +616 -217
  3. package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +13 -4
  4. package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +5 -4
  5. package/data/datagrid/providers/columns.service.d.ts +1 -0
  6. package/data/datagrid/render/main-renderer.d.ts +4 -3
  7. package/data/datagrid/wrapped-cell.d.ts +1 -3
  8. package/data/datagrid/wrapped-column.d.ts +1 -3
  9. package/data/datagrid/wrapped-row.d.ts +1 -3
  10. package/esm2020/accordion/accordion-content.mjs +2 -2
  11. package/esm2020/accordion/accordion-description.mjs +2 -2
  12. package/esm2020/accordion/accordion-panel.mjs +2 -2
  13. package/esm2020/accordion/accordion-title.mjs +2 -2
  14. package/esm2020/accordion/accordion.mjs +2 -2
  15. package/esm2020/accordion/accordion.module.mjs +2 -2
  16. package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs +2 -2
  17. package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs +2 -2
  18. package/esm2020/accordion/enums/accordion-status.enum.mjs +2 -2
  19. package/esm2020/accordion/enums/accordion-strategy.enum.mjs +2 -2
  20. package/esm2020/accordion/index.mjs +2 -2
  21. package/esm2020/accordion/models/accordion.model.mjs +2 -2
  22. package/esm2020/accordion/providers/accordion.service.mjs +2 -2
  23. package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs +2 -2
  24. package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs +2 -2
  25. package/esm2020/accordion/stepper/index.mjs +2 -2
  26. package/esm2020/accordion/stepper/models/stepper.model.mjs +2 -2
  27. package/esm2020/accordion/stepper/providers/stepper.service.mjs +2 -2
  28. package/esm2020/accordion/stepper/step-button.mjs +2 -2
  29. package/esm2020/accordion/stepper/stepper-panel.mjs +2 -2
  30. package/esm2020/accordion/stepper/stepper.mjs +2 -2
  31. package/esm2020/accordion/stepper/stepper.module.mjs +2 -2
  32. package/esm2020/accordion/utils/animation.mjs +2 -2
  33. package/esm2020/button/button-group/button-group.mjs +4 -4
  34. package/esm2020/button/button-group/button-group.module.mjs +2 -2
  35. package/esm2020/button/button-group/button.mjs +17 -10
  36. package/esm2020/button/button-group/index.mjs +2 -2
  37. package/esm2020/button/button-loading/index.mjs +2 -2
  38. package/esm2020/button/button-loading/loading-button.mjs +2 -2
  39. package/esm2020/button/button-loading/loading-button.module.mjs +2 -2
  40. package/esm2020/button/button.module.mjs +2 -2
  41. package/esm2020/button/index.mjs +2 -2
  42. package/esm2020/button/providers/button-group-focus-handler.service.mjs +2 -2
  43. package/esm2020/button/providers/button-group-focus.enum.mjs +2 -2
  44. package/esm2020/button/providers/button-in-group.service.mjs +2 -2
  45. package/esm2020/clr-angular.module.mjs +2 -2
  46. package/esm2020/data/data.module.mjs +2 -2
  47. package/esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs +2 -2
  48. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs +2 -2
  49. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +19 -18
  50. package/esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs +2 -2
  51. package/esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs +2 -2
  52. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs +2 -2
  53. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +64 -29
  54. package/esm2020/data/datagrid/built-in/nested-property.mjs +2 -2
  55. package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs +2 -2
  56. package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs +2 -2
  57. package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs +2 -2
  58. package/esm2020/data/datagrid/datagrid-action-bar.mjs +2 -2
  59. package/esm2020/data/datagrid/datagrid-action-overflow.mjs +2 -2
  60. package/esm2020/data/datagrid/datagrid-cell.mjs +2 -2
  61. package/esm2020/data/datagrid/datagrid-column-separator.mjs +2 -2
  62. package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs +2 -2
  63. package/esm2020/data/datagrid/datagrid-column-toggle-trackby.mjs +2 -2
  64. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +5 -4
  65. package/esm2020/data/datagrid/datagrid-column.mjs +3 -3
  66. package/esm2020/data/datagrid/datagrid-detail-body.mjs +2 -2
  67. package/esm2020/data/datagrid/datagrid-detail-header.mjs +2 -2
  68. package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +2 -2
  69. package/esm2020/data/datagrid/datagrid-detail.mjs +2 -2
  70. package/esm2020/data/datagrid/datagrid-filter.mjs +2 -2
  71. package/esm2020/data/datagrid/datagrid-footer.mjs +2 -2
  72. package/esm2020/data/datagrid/datagrid-hideable-column.mjs +2 -2
  73. package/esm2020/data/datagrid/datagrid-if-detail.mjs +2 -2
  74. package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +2 -2
  75. package/esm2020/data/datagrid/datagrid-items.mjs +2 -2
  76. package/esm2020/data/datagrid/datagrid-page-size.mjs +2 -2
  77. package/esm2020/data/datagrid/datagrid-pagination.mjs +2 -2
  78. package/esm2020/data/datagrid/datagrid-placeholder.mjs +2 -2
  79. package/esm2020/data/datagrid/datagrid-row-detail.mjs +2 -2
  80. package/esm2020/data/datagrid/datagrid-row.mjs +2 -2
  81. package/esm2020/data/datagrid/datagrid-selection-cell.directive.mjs +2 -2
  82. package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +14 -12
  83. package/esm2020/data/datagrid/datagrid.mjs +5 -6
  84. package/esm2020/data/datagrid/datagrid.module.mjs +2 -2
  85. package/esm2020/data/datagrid/enums/column-changes.enum.mjs +2 -2
  86. package/esm2020/data/datagrid/enums/display-mode.enum.mjs +2 -2
  87. package/esm2020/data/datagrid/enums/render-step.enum.mjs +2 -2
  88. package/esm2020/data/datagrid/enums/selection-type.mjs +2 -2
  89. package/esm2020/data/datagrid/enums/sort-order.enum.mjs +2 -2
  90. package/esm2020/data/datagrid/index.mjs +2 -2
  91. package/esm2020/data/datagrid/interfaces/column-state.interface.mjs +2 -2
  92. package/esm2020/data/datagrid/interfaces/comparator.interface.mjs +2 -2
  93. package/esm2020/data/datagrid/interfaces/filter.interface.mjs +2 -2
  94. package/esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs +2 -2
  95. package/esm2020/data/datagrid/interfaces/state.interface.mjs +2 -2
  96. package/esm2020/data/datagrid/interfaces/string-filter.interface.mjs +2 -2
  97. package/esm2020/data/datagrid/providers/column-resizer.service.mjs +2 -2
  98. package/esm2020/data/datagrid/providers/column-state.provider.mjs +2 -2
  99. package/esm2020/data/datagrid/providers/columns.service.mjs +5 -2
  100. package/esm2020/data/datagrid/providers/custom-filter.mjs +2 -2
  101. package/esm2020/data/datagrid/providers/detail.service.mjs +2 -2
  102. package/esm2020/data/datagrid/providers/display-mode.service.mjs +2 -2
  103. package/esm2020/data/datagrid/providers/filters.mjs +2 -2
  104. package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +2 -2
  105. package/esm2020/data/datagrid/providers/items.mjs +2 -2
  106. package/esm2020/data/datagrid/providers/page.mjs +2 -2
  107. package/esm2020/data/datagrid/providers/row-action-service.mjs +2 -2
  108. package/esm2020/data/datagrid/providers/selection.mjs +2 -2
  109. package/esm2020/data/datagrid/providers/sort.mjs +2 -2
  110. package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +2 -2
  111. package/esm2020/data/datagrid/providers/state.provider.mjs +2 -2
  112. package/esm2020/data/datagrid/providers/table-size.service.mjs +2 -2
  113. package/esm2020/data/datagrid/render/cell-renderer.mjs +2 -2
  114. package/esm2020/data/datagrid/render/constants.mjs +2 -2
  115. package/esm2020/data/datagrid/render/header-renderer.mjs +2 -2
  116. package/esm2020/data/datagrid/render/main-renderer.mjs +24 -20
  117. package/esm2020/data/datagrid/render/noop-dom-adapter.mjs +2 -2
  118. package/esm2020/data/datagrid/render/render-organizer.mjs +2 -2
  119. package/esm2020/data/datagrid/render/row-renderer.mjs +2 -2
  120. package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +2 -2
  121. package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +32 -23
  122. package/esm2020/data/datagrid/wrapped-cell.mjs +2 -5
  123. package/esm2020/data/datagrid/wrapped-column.mjs +2 -5
  124. package/esm2020/data/datagrid/wrapped-row.mjs +2 -5
  125. package/esm2020/data/index.mjs +2 -2
  126. package/esm2020/data/stack-view/index.mjs +2 -2
  127. package/esm2020/data/stack-view/stack-block.mjs +2 -2
  128. package/esm2020/data/stack-view/stack-content-input.mjs +2 -2
  129. package/esm2020/data/stack-view/stack-header.mjs +2 -2
  130. package/esm2020/data/stack-view/stack-view-custom-tags.mjs +2 -2
  131. package/esm2020/data/stack-view/stack-view.mjs +2 -2
  132. package/esm2020/data/stack-view/stack-view.module.mjs +2 -2
  133. package/esm2020/data/tree-view/index.mjs +2 -2
  134. package/esm2020/data/tree-view/models/async-array.mjs +2 -2
  135. package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs +2 -2
  136. package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs +2 -2
  137. package/esm2020/data/tree-view/models/selected-state.enum.mjs +2 -2
  138. package/esm2020/data/tree-view/models/tree-node.model.mjs +2 -2
  139. package/esm2020/data/tree-view/recursive-children.mjs +2 -2
  140. package/esm2020/data/tree-view/recursive-for-of.mjs +2 -2
  141. package/esm2020/data/tree-view/tree-features.service.mjs +2 -2
  142. package/esm2020/data/tree-view/tree-focus-manager.service.mjs +2 -2
  143. package/esm2020/data/tree-view/tree-node-link.mjs +2 -2
  144. package/esm2020/data/tree-view/tree-node.mjs +4 -4
  145. package/esm2020/data/tree-view/tree-view.module.mjs +2 -2
  146. package/esm2020/data/tree-view/tree.mjs +2 -2
  147. package/esm2020/emphasis/alert/alert-item.mjs +2 -2
  148. package/esm2020/emphasis/alert/alert-text.mjs +2 -2
  149. package/esm2020/emphasis/alert/alert.mjs +4 -4
  150. package/esm2020/emphasis/alert/alert.module.mjs +2 -2
  151. package/esm2020/emphasis/alert/alerts-pager.mjs +4 -4
  152. package/esm2020/emphasis/alert/alerts.mjs +4 -4
  153. package/esm2020/emphasis/alert/index.mjs +2 -2
  154. package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +2 -2
  155. package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +2 -2
  156. package/esm2020/emphasis/alert/utils/alert-info-object.mjs +2 -2
  157. package/esm2020/emphasis/alert/utils/alert-types.mjs +2 -2
  158. package/esm2020/emphasis/emphasis.module.mjs +2 -2
  159. package/esm2020/emphasis/index.mjs +2 -2
  160. package/esm2020/forms/checkbox/checkbox-container.mjs +2 -2
  161. package/esm2020/forms/checkbox/checkbox-wrapper.mjs +2 -6
  162. package/esm2020/forms/checkbox/checkbox.mjs +2 -2
  163. package/esm2020/forms/checkbox/checkbox.module.mjs +2 -2
  164. package/esm2020/forms/checkbox/index.mjs +2 -2
  165. package/esm2020/forms/combobox/combobox-container.mjs +2 -2
  166. package/esm2020/forms/combobox/combobox.mjs +10 -10
  167. package/esm2020/forms/combobox/combobox.module.mjs +2 -2
  168. package/esm2020/forms/combobox/index.mjs +2 -2
  169. package/esm2020/forms/combobox/model/combobox.model.mjs +2 -2
  170. package/esm2020/forms/combobox/model/multi-select-combobox.model.mjs +2 -2
  171. package/esm2020/forms/combobox/model/pseudo-focus.model.mjs +2 -2
  172. package/esm2020/forms/combobox/model/single-select-combobox.model.mjs +2 -2
  173. package/esm2020/forms/combobox/option-items.directive.mjs +2 -2
  174. package/esm2020/forms/combobox/option-selected.directive.mjs +2 -2
  175. package/esm2020/forms/combobox/option.mjs +2 -2
  176. package/esm2020/forms/combobox/options.mjs +2 -2
  177. package/esm2020/forms/combobox/providers/combobox-container.service.mjs +2 -2
  178. package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +2 -2
  179. package/esm2020/forms/combobox/providers/option-selection.service.mjs +2 -2
  180. package/esm2020/forms/common/abstract-container.mjs +13 -6
  181. package/esm2020/forms/common/abstract-control.mjs +2 -2
  182. package/esm2020/forms/common/common.module.mjs +2 -2
  183. package/esm2020/forms/common/control-container.mjs +2 -2
  184. package/esm2020/forms/common/control.mjs +2 -2
  185. package/esm2020/forms/common/error.mjs +2 -2
  186. package/esm2020/forms/common/form.mjs +2 -2
  187. package/esm2020/forms/common/helper.mjs +2 -2
  188. package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +4 -2
  189. package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +30 -28
  190. package/esm2020/forms/common/if-control-state/if-error.mjs +10 -6
  191. package/esm2020/forms/common/if-control-state/if-success.mjs +2 -2
  192. package/esm2020/forms/common/index.mjs +2 -2
  193. package/esm2020/forms/common/label.mjs +5 -2
  194. package/esm2020/forms/common/layout.mjs +2 -2
  195. package/esm2020/forms/common/providers/container-id.service.mjs +2 -2
  196. package/esm2020/forms/common/providers/control-class.service.mjs +2 -2
  197. package/esm2020/forms/common/providers/control-id.service.mjs +2 -2
  198. package/esm2020/forms/common/providers/focus.service.mjs +2 -2
  199. package/esm2020/forms/common/providers/layout.service.mjs +2 -2
  200. package/esm2020/forms/common/providers/mark-control.service.mjs +2 -2
  201. package/esm2020/forms/common/providers/ng-control.service.mjs +21 -2
  202. package/esm2020/forms/common/success.mjs +2 -2
  203. package/esm2020/forms/common/wrapped-control.mjs +43 -19
  204. package/esm2020/forms/datalist/datalist-container.mjs +2 -2
  205. package/esm2020/forms/datalist/datalist-input.mjs +2 -2
  206. package/esm2020/forms/datalist/datalist.mjs +2 -2
  207. package/esm2020/forms/datalist/datalist.module.mjs +2 -2
  208. package/esm2020/forms/datalist/index.mjs +2 -2
  209. package/esm2020/forms/datalist/providers/datalist-id.service.mjs +2 -2
  210. package/esm2020/forms/datepicker/calendar.mjs +65 -10
  211. package/esm2020/forms/datepicker/date-container.mjs +103 -10
  212. package/esm2020/forms/datepicker/date-end-input.mjs +60 -0
  213. package/esm2020/forms/datepicker/date-input.mjs +74 -80
  214. package/esm2020/forms/datepicker/date-input.validator.mjs +65 -6
  215. package/esm2020/forms/datepicker/date-single-input.mjs +63 -0
  216. package/esm2020/forms/datepicker/date-start-input.mjs +61 -0
  217. package/esm2020/forms/datepicker/datepicker-action-buttons.mjs +59 -0
  218. package/esm2020/forms/datepicker/datepicker-view-manager.mjs +34 -11
  219. package/esm2020/forms/datepicker/datepicker.module.mjs +30 -8
  220. package/esm2020/forms/datepicker/day.mjs +58 -15
  221. package/esm2020/forms/datepicker/daypicker.mjs +2 -2
  222. package/esm2020/forms/datepicker/index.mjs +6 -2
  223. package/esm2020/forms/datepicker/interfaces/date-range.interface.mjs +2 -2
  224. package/esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs +2 -2
  225. package/esm2020/forms/datepicker/model/calendar-view.model.mjs +31 -6
  226. package/esm2020/forms/datepicker/model/calendar.model.mjs +14 -2
  227. package/esm2020/forms/datepicker/model/day-view.model.mjs +5 -3
  228. package/esm2020/forms/datepicker/model/day.model.mjs +18 -2
  229. package/esm2020/forms/datepicker/model/year-range.model.mjs +2 -2
  230. package/esm2020/forms/datepicker/monthpicker.mjs +237 -40
  231. package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +2 -2
  232. package/esm2020/forms/datepicker/providers/date-io.service.mjs +21 -2
  233. package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +75 -8
  234. package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +2 -2
  235. package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +2 -2
  236. package/esm2020/forms/datepicker/providers/locale-helper.service.mjs +2 -2
  237. package/esm2020/forms/datepicker/providers/view-manager.service.mjs +2 -2
  238. package/esm2020/forms/datepicker/utils/constants.mjs +2 -2
  239. package/esm2020/forms/datepicker/utils/date-utils.mjs +2 -2
  240. package/esm2020/forms/datepicker/yearpicker.mjs +132 -58
  241. package/esm2020/forms/file-input/file-input-container.mjs +102 -14
  242. package/esm2020/forms/file-input/file-input-validator-errors.mjs +8 -0
  243. package/esm2020/forms/file-input/file-input-validator.mjs +15 -23
  244. package/esm2020/forms/file-input/file-input-value-accessor.mjs +2 -2
  245. package/esm2020/forms/file-input/file-input.helpers.mjs +2 -2
  246. package/esm2020/forms/file-input/file-input.mjs +4 -3
  247. package/esm2020/forms/file-input/file-input.module.mjs +36 -5
  248. package/esm2020/forms/file-input/file-list.mjs +160 -0
  249. package/esm2020/forms/file-input/file-messages-template.mjs +26 -0
  250. package/esm2020/forms/file-input/file-messages.mjs +61 -0
  251. package/esm2020/forms/file-input/index.mjs +6 -2
  252. package/esm2020/forms/forms.module.mjs +8 -4
  253. package/esm2020/forms/index.mjs +3 -2
  254. package/esm2020/forms/input/index.mjs +2 -2
  255. package/esm2020/forms/input/input-container.mjs +12 -4
  256. package/esm2020/forms/input/input.mjs +11 -2
  257. package/esm2020/forms/input/input.module.mjs +2 -2
  258. package/esm2020/forms/number-input/index.mjs +10 -0
  259. package/esm2020/forms/number-input/number-input-container.mjs +145 -0
  260. package/esm2020/forms/number-input/number-input.mjs +72 -0
  261. package/esm2020/forms/number-input/number-input.module.mjs +32 -0
  262. package/esm2020/forms/password/index.mjs +2 -2
  263. package/esm2020/forms/password/password-container.mjs +2 -2
  264. package/esm2020/forms/password/password.mjs +2 -2
  265. package/esm2020/forms/password/password.module.mjs +2 -2
  266. package/esm2020/forms/radio/index.mjs +2 -2
  267. package/esm2020/forms/radio/radio-container.mjs +2 -2
  268. package/esm2020/forms/radio/radio-wrapper.mjs +2 -8
  269. package/esm2020/forms/radio/radio.mjs +2 -2
  270. package/esm2020/forms/radio/radio.module.mjs +2 -2
  271. package/esm2020/forms/range/index.mjs +2 -2
  272. package/esm2020/forms/range/range-container.mjs +2 -2
  273. package/esm2020/forms/range/range.mjs +2 -2
  274. package/esm2020/forms/range/range.module.mjs +2 -2
  275. package/esm2020/forms/select/index.mjs +2 -2
  276. package/esm2020/forms/select/select-container.mjs +2 -2
  277. package/esm2020/forms/select/select.mjs +2 -2
  278. package/esm2020/forms/select/select.module.mjs +2 -2
  279. package/esm2020/forms/textarea/index.mjs +2 -2
  280. package/esm2020/forms/textarea/textarea-container.mjs +2 -2
  281. package/esm2020/forms/textarea/textarea.mjs +2 -2
  282. package/esm2020/forms/textarea/textarea.module.mjs +2 -2
  283. package/esm2020/icon/icon.mjs +2 -2
  284. package/esm2020/icon/icon.module.mjs +2 -2
  285. package/esm2020/icon/index.mjs +2 -2
  286. package/esm2020/index.mjs +2 -2
  287. package/esm2020/layout/breadcrumbs/breadcrumb-item.mjs +2 -2
  288. package/esm2020/layout/breadcrumbs/breadcrumbs.constants.mjs +2 -2
  289. package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +4 -4
  290. package/esm2020/layout/breadcrumbs/breadcrumbs.module.mjs +2 -2
  291. package/esm2020/layout/breadcrumbs/index.mjs +2 -2
  292. package/esm2020/layout/breadcrumbs/model/breadcrumbs.model.mjs +2 -2
  293. package/esm2020/layout/index.mjs +2 -2
  294. package/esm2020/layout/layout.module.mjs +2 -2
  295. package/esm2020/layout/main-container/index.mjs +2 -2
  296. package/esm2020/layout/main-container/main-container.mjs +2 -2
  297. package/esm2020/layout/main-container/main-container.module.mjs +2 -2
  298. package/esm2020/layout/nav/aria-current-link.mjs +2 -2
  299. package/esm2020/layout/nav/chocolate/index.mjs +2 -2
  300. package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs +2 -2
  301. package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs +2 -2
  302. package/esm2020/layout/nav/header.mjs +2 -2
  303. package/esm2020/layout/nav/index.mjs +2 -2
  304. package/esm2020/layout/nav/nav-level.mjs +2 -2
  305. package/esm2020/layout/nav/navigation.module.mjs +2 -2
  306. package/esm2020/layout/nav/providers/responsive-navigation.service.mjs +2 -2
  307. package/esm2020/layout/nav/responsive-nav-codes.mjs +2 -2
  308. package/esm2020/layout/nav/responsive-nav-control-message.mjs +2 -2
  309. package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs +2 -2
  310. package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs +2 -2
  311. package/esm2020/layout/tabs/enums/tabs-layout.enum.mjs +2 -2
  312. package/esm2020/layout/tabs/index.mjs +2 -2
  313. package/esm2020/layout/tabs/providers/tabs.service.mjs +2 -2
  314. package/esm2020/layout/tabs/tab-action.directive.mjs +2 -2
  315. package/esm2020/layout/tabs/tab-content.mjs +2 -2
  316. package/esm2020/layout/tabs/tab-link.directive.mjs +2 -2
  317. package/esm2020/layout/tabs/tab-overflow-content.mjs +2 -2
  318. package/esm2020/layout/tabs/tab.mjs +2 -2
  319. package/esm2020/layout/tabs/tabs-actions.mjs +2 -2
  320. package/esm2020/layout/tabs/tabs-id.provider.mjs +2 -2
  321. package/esm2020/layout/tabs/tabs.mjs +2 -2
  322. package/esm2020/layout/tabs/tabs.module.mjs +2 -2
  323. package/esm2020/layout/vertical-nav/index.mjs +2 -2
  324. package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +2 -2
  325. package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs +2 -2
  326. package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs +2 -2
  327. package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs +2 -2
  328. package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs +2 -2
  329. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +4 -4
  330. package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +2 -2
  331. package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +2 -2
  332. package/esm2020/layout/vertical-nav/vertical-nav.mjs +10 -5
  333. package/esm2020/layout/vertical-nav/vertical-nav.module.mjs +2 -2
  334. package/esm2020/modal/index.mjs +3 -2
  335. package/esm2020/modal/modal-body.mjs +2 -2
  336. package/esm2020/modal/modal-configuration.service.mjs +2 -2
  337. package/esm2020/modal/modal-host.directive.mjs +20 -0
  338. package/esm2020/modal/modal-stack.service.mjs +2 -2
  339. package/esm2020/modal/modal.mjs +12 -6
  340. package/esm2020/modal/modal.module.mjs +5 -4
  341. package/esm2020/modal/side-panel.mjs +90 -14
  342. package/esm2020/modal/side-panel.module.mjs +5 -5
  343. package/esm2020/popover/common/abstract-popover.mjs +14 -16
  344. package/esm2020/popover/common/popover-host-anchor.token.mjs +2 -2
  345. package/esm2020/popover/common/popover-options.interface.mjs +2 -2
  346. package/esm2020/popover/common/popover.mjs +2 -2
  347. package/esm2020/popover/dropdown/dropdown-item.mjs +2 -2
  348. package/esm2020/popover/dropdown/dropdown-menu.mjs +2 -2
  349. package/esm2020/popover/dropdown/dropdown-trigger.mjs +2 -2
  350. package/esm2020/popover/dropdown/dropdown.mjs +2 -2
  351. package/esm2020/popover/dropdown/dropdown.module.mjs +2 -2
  352. package/esm2020/popover/dropdown/index.mjs +2 -2
  353. package/esm2020/popover/dropdown/menu-positions.mjs +2 -2
  354. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +2 -2
  355. package/esm2020/popover/dropdown/providers/dropdown.service.mjs +2 -2
  356. package/esm2020/popover/index.mjs +2 -2
  357. package/esm2020/popover/popover.module.mjs +2 -2
  358. package/esm2020/popover/signpost/index.mjs +2 -2
  359. package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs +2 -2
  360. package/esm2020/popover/signpost/providers/signpost-id.service.mjs +2 -2
  361. package/esm2020/popover/signpost/signpost-content.mjs +2 -2
  362. package/esm2020/popover/signpost/signpost-positions.mjs +2 -2
  363. package/esm2020/popover/signpost/signpost-title.mjs +2 -2
  364. package/esm2020/popover/signpost/signpost-trigger.mjs +2 -2
  365. package/esm2020/popover/signpost/signpost.mjs +2 -2
  366. package/esm2020/popover/signpost/signpost.module.mjs +2 -2
  367. package/esm2020/popover/tooltip/index.mjs +2 -2
  368. package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs +2 -2
  369. package/esm2020/popover/tooltip/providers/tooltip-mouse.service.mjs +2 -2
  370. package/esm2020/popover/tooltip/tooltip-content.mjs +2 -2
  371. package/esm2020/popover/tooltip/tooltip-trigger.mjs +2 -2
  372. package/esm2020/popover/tooltip/tooltip.mjs +2 -2
  373. package/esm2020/popover/tooltip/tooltip.module.mjs +2 -2
  374. package/esm2020/progress/progress-bars/index.mjs +2 -2
  375. package/esm2020/progress/progress-bars/progress-bar.mjs +2 -2
  376. package/esm2020/progress/progress-bars/progress-bar.module.mjs +2 -2
  377. package/esm2020/progress/spinner/index.mjs +2 -2
  378. package/esm2020/progress/spinner/spinner.mjs +2 -2
  379. package/esm2020/progress/spinner/spinner.module.mjs +2 -2
  380. package/esm2020/timeline/enums/timeline-layout.enum.mjs +2 -2
  381. package/esm2020/timeline/enums/timeline-step-state.enum.mjs +2 -2
  382. package/esm2020/timeline/index.mjs +2 -2
  383. package/esm2020/timeline/interface/icon-attribute.interface.mjs +2 -2
  384. package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +2 -2
  385. package/esm2020/timeline/timeline-step-description.mjs +2 -2
  386. package/esm2020/timeline/timeline-step-header.mjs +2 -2
  387. package/esm2020/timeline/timeline-step-title.mjs +2 -2
  388. package/esm2020/timeline/timeline-step.mjs +2 -2
  389. package/esm2020/timeline/timeline.mjs +2 -2
  390. package/esm2020/timeline/timeline.module.mjs +2 -2
  391. package/esm2020/utils/animations/collapse/collapse.mjs +2 -2
  392. package/esm2020/utils/animations/collapse/index.mjs +2 -2
  393. package/esm2020/utils/animations/constants.mjs +2 -2
  394. package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +2 -2
  395. package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +2 -2
  396. package/esm2020/utils/animations/expandable-animation/index.mjs +2 -2
  397. package/esm2020/utils/animations/fade/fade.mjs +2 -2
  398. package/esm2020/utils/animations/fade/index.mjs +2 -2
  399. package/esm2020/utils/animations/fade-slide/fade-slide.mjs +2 -2
  400. package/esm2020/utils/animations/fade-slide/index.mjs +2 -2
  401. package/esm2020/utils/animations/index.mjs +2 -2
  402. package/esm2020/utils/animations/slide/index.mjs +2 -2
  403. package/esm2020/utils/animations/slide/slide.mjs +2 -2
  404. package/esm2020/utils/assert/assert.helpers.mjs +2 -2
  405. package/esm2020/utils/breakpoints/breakpoints.mjs +2 -2
  406. package/esm2020/utils/cdk/cdk-drag.module.mjs +1 -1
  407. package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +2 -2
  408. package/esm2020/utils/chocolate/oompa-loompa.mjs +2 -2
  409. package/esm2020/utils/chocolate/willy-wonka.mjs +2 -2
  410. package/esm2020/utils/component/is-boolean-attribute-set.mjs +2 -2
  411. package/esm2020/utils/conditional/conditional.module.mjs +2 -2
  412. package/esm2020/utils/conditional/if-active.directive.mjs +2 -2
  413. package/esm2020/utils/conditional/if-active.service.mjs +2 -2
  414. package/esm2020/utils/conditional/if-expanded.directive.mjs +2 -2
  415. package/esm2020/utils/conditional/if-expanded.service.mjs +2 -2
  416. package/esm2020/utils/conditional/if-open.directive.mjs +2 -2
  417. package/esm2020/utils/conditional/index.mjs +2 -2
  418. package/esm2020/utils/destroy/destroy.service.mjs +2 -2
  419. package/esm2020/utils/destroy/index.mjs +2 -2
  420. package/esm2020/utils/dom-adapter/dom-adapter.mjs +2 -2
  421. package/esm2020/utils/enums/keys.enum.mjs +4 -2
  422. package/esm2020/utils/focus/arrow-key-direction.enum.mjs +2 -2
  423. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +2 -2
  424. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs +2 -2
  425. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs +2 -2
  426. package/esm2020/utils/focus/focus-on-view-init/index.mjs +2 -2
  427. package/esm2020/utils/focus/focus-trap/index.mjs +2 -2
  428. package/esm2020/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.mjs +2 -2
  429. package/esm2020/utils/focus/focus.service.mjs +2 -2
  430. package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +2 -2
  431. package/esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs +2 -2
  432. package/esm2020/utils/focus/focusable-item/focusable-item.mjs +2 -2
  433. package/esm2020/utils/focus/focusable-item/linkers.mjs +2 -2
  434. package/esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs +2 -2
  435. package/esm2020/utils/focus/key-focus/index.mjs +2 -2
  436. package/esm2020/utils/focus/key-focus/interfaces.mjs +2 -2
  437. package/esm2020/utils/focus/key-focus/key-focus-item.mjs +2 -2
  438. package/esm2020/utils/focus/key-focus/key-focus.mjs +2 -2
  439. package/esm2020/utils/focus/key-focus/key-focus.module.mjs +2 -2
  440. package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +2 -2
  441. package/esm2020/utils/focus/key-focus/util.mjs +2 -2
  442. package/esm2020/utils/focus/wrap-observable.mjs +2 -2
  443. package/esm2020/utils/forms/validation.mjs +2 -2
  444. package/esm2020/utils/host-wrapping/empty-anchor.mjs +2 -2
  445. package/esm2020/utils/host-wrapping/host-wrapper.mjs +2 -4
  446. package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +2 -2
  447. package/esm2020/utils/i18n/common-strings.default.mjs +6 -2
  448. package/esm2020/utils/i18n/common-strings.interface.mjs +2 -2
  449. package/esm2020/utils/i18n/common-strings.service.mjs +2 -2
  450. package/esm2020/utils/i18n/index.mjs +2 -2
  451. package/esm2020/utils/id-generator/id-generator.service.mjs +2 -2
  452. package/esm2020/utils/index.mjs +2 -2
  453. package/esm2020/utils/loading/index.mjs +2 -2
  454. package/esm2020/utils/loading/loading-listener.mjs +2 -2
  455. package/esm2020/utils/loading/loading.mjs +2 -2
  456. package/esm2020/utils/loading/loading.module.mjs +2 -2
  457. package/esm2020/utils/outside-click/index.mjs +2 -2
  458. package/esm2020/utils/outside-click/outside-click.mjs +2 -2
  459. package/esm2020/utils/outside-click/outside-click.module.mjs +2 -2
  460. package/esm2020/utils/popover/enums/alignment.enum.mjs +2 -2
  461. package/esm2020/utils/popover/enums/axis.enum.mjs +2 -2
  462. package/esm2020/utils/popover/enums/positions.enum.mjs +2 -2
  463. package/esm2020/utils/popover/enums/side.enum.mjs +2 -2
  464. package/esm2020/utils/popover/enums/viewport-violation.enum.mjs +2 -2
  465. package/esm2020/utils/popover/index.mjs +2 -2
  466. package/esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs +2 -2
  467. package/esm2020/utils/popover/interfaces/popover-position.interface.mjs +2 -2
  468. package/esm2020/utils/popover/interfaces/visibility-coords.interface.mjs +2 -2
  469. package/esm2020/utils/popover/popover-anchor.mjs +2 -2
  470. package/esm2020/utils/popover/popover-close-button.mjs +2 -2
  471. package/esm2020/utils/popover/popover-content.mjs +2 -2
  472. package/esm2020/utils/popover/popover-host.directive.mjs +2 -2
  473. package/esm2020/utils/popover/popover-open-close-button.mjs +2 -2
  474. package/esm2020/utils/popover/popover.module.mjs +2 -2
  475. package/esm2020/utils/popover/position-operators.mjs +2 -2
  476. package/esm2020/utils/popover/providers/popover-events.service.mjs +2 -2
  477. package/esm2020/utils/popover/providers/popover-position.service.mjs +2 -2
  478. package/esm2020/utils/popover/providers/popover-toggle.service.mjs +2 -2
  479. package/esm2020/utils/popover/stop-escape-propagation.directive.mjs +2 -2
  480. package/esm2020/utils/scrolling/scrolling-service.mjs +2 -2
  481. package/esm2020/utils/template-ref/index.mjs +2 -2
  482. package/esm2020/utils/template-ref/template-ref-container.mjs +2 -2
  483. package/esm2020/utils/template-ref/template-ref.module.mjs +2 -2
  484. package/esm2020/wizard/heading-level.mjs +2 -2
  485. package/esm2020/wizard/index.mjs +2 -2
  486. package/esm2020/wizard/providers/button-hub.service.mjs +2 -2
  487. package/esm2020/wizard/providers/header-actions.service.mjs +2 -2
  488. package/esm2020/wizard/providers/page-collection.service.mjs +2 -2
  489. package/esm2020/wizard/providers/wizard-navigation.service.mjs +2 -2
  490. package/esm2020/wizard/wizard-button.mjs +2 -2
  491. package/esm2020/wizard/wizard-header-action.mjs +2 -2
  492. package/esm2020/wizard/wizard-page-buttons.mjs +2 -2
  493. package/esm2020/wizard/wizard-page-header-actions.mjs +2 -2
  494. package/esm2020/wizard/wizard-page-navtitle.mjs +2 -2
  495. package/esm2020/wizard/wizard-page-title.mjs +2 -2
  496. package/esm2020/wizard/wizard-page.mjs +2 -2
  497. package/esm2020/wizard/wizard-stepnav-item.mjs +6 -2
  498. package/esm2020/wizard/wizard-stepnav.mjs +2 -2
  499. package/esm2020/wizard/wizard-title.mjs +2 -2
  500. package/esm2020/wizard/wizard.mjs +11 -5
  501. package/esm2020/wizard/wizard.module.mjs +2 -2
  502. package/fesm2015/clr-angular.mjs +14736 -12993
  503. package/fesm2015/clr-angular.mjs.map +1 -1
  504. package/fesm2020/clr-angular.mjs +14416 -12708
  505. package/fesm2020/clr-angular.mjs.map +1 -1
  506. package/forms/checkbox/checkbox-wrapper.d.ts +1 -3
  507. package/forms/common/abstract-container.d.ts +4 -3
  508. package/forms/common/if-control-state/abstract-if-state.d.ts +1 -0
  509. package/forms/common/if-control-state/if-control-state.service.d.ts +4 -7
  510. package/forms/common/providers/ng-control.service.d.ts +8 -0
  511. package/forms/common/wrapped-control.d.ts +7 -4
  512. package/forms/datepicker/calendar.d.ts +10 -1
  513. package/forms/datepicker/date-container.d.ts +16 -3
  514. package/forms/datepicker/date-end-input.d.ts +15 -0
  515. package/forms/datepicker/date-input.d.ts +18 -12
  516. package/forms/datepicker/date-input.validator.d.ts +18 -1
  517. package/forms/datepicker/date-single-input.d.ts +15 -0
  518. package/forms/datepicker/date-start-input.d.ts +15 -0
  519. package/forms/datepicker/datepicker-action-buttons.d.ts +16 -0
  520. package/forms/datepicker/datepicker-view-manager.d.ts +9 -1
  521. package/forms/datepicker/datepicker.module.d.ts +18 -14
  522. package/forms/datepicker/day.d.ts +16 -6
  523. package/forms/datepicker/index.d.ts +4 -0
  524. package/forms/datepicker/interfaces/date-range.interface.d.ts +8 -0
  525. package/forms/datepicker/model/calendar-view.model.d.ts +12 -2
  526. package/forms/datepicker/model/calendar.model.d.ts +8 -0
  527. package/forms/datepicker/model/day-view.model.d.ts +3 -1
  528. package/forms/datepicker/model/day.model.d.ts +8 -0
  529. package/forms/datepicker/monthpicker.d.ts +43 -2
  530. package/forms/datepicker/providers/date-io.service.d.ts +5 -1
  531. package/forms/datepicker/providers/date-navigation.service.d.ts +32 -2
  532. package/forms/datepicker/yearpicker.d.ts +14 -0
  533. package/forms/file-input/file-input-container.d.ts +15 -4
  534. package/forms/file-input/file-input-validator-errors.d.ts +52 -0
  535. package/forms/file-input/file-input.module.d.ts +7 -4
  536. package/forms/file-input/file-list.d.ts +18 -0
  537. package/forms/file-input/file-messages-template.d.ts +19 -0
  538. package/forms/file-input/file-messages.d.ts +17 -0
  539. package/forms/file-input/index.d.ts +4 -0
  540. package/forms/forms.module.d.ts +2 -1
  541. package/forms/index.d.ts +1 -0
  542. package/forms/input/input-container.d.ts +1 -1
  543. package/forms/number-input/index.d.ts +3 -0
  544. package/forms/number-input/number-input-container.d.ts +16 -0
  545. package/forms/number-input/number-input.d.ts +20 -0
  546. package/forms/number-input/number-input.module.d.ts +13 -0
  547. package/forms/radio/radio-wrapper.d.ts +1 -3
  548. package/layout/vertical-nav/vertical-nav.d.ts +3 -1
  549. package/modal/index.d.ts +1 -0
  550. package/modal/modal-host.directive.d.ts +5 -0
  551. package/modal/modal.d.ts +4 -2
  552. package/modal/modal.module.d.ts +5 -4
  553. package/modal/side-panel.d.ts +25 -6
  554. package/modal/side-panel.module.d.ts +1 -1
  555. package/package.json +2 -2
  556. package/popover/common/abstract-popover.d.ts +0 -1
  557. package/utils/enums/keys.enum.d.ts +3 -1
  558. package/utils/host-wrapping/host-wrapper.d.ts +1 -2
  559. package/utils/i18n/common-strings.interface.d.ts +16 -0
  560. package/wizard/wizard.d.ts +2 -1
  561. package/esm2020/utils/host-wrapping/dynamic-wrapper.mjs +0 -8
  562. package/utils/host-wrapping/dynamic-wrapper.d.ts +0 -3
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
2
+ * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
3
3
  * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
4
4
  * This software is released under MIT license.
5
5
  * The full license information can be found in LICENSE in the root directory of this project.
@@ -25,12 +25,24 @@ export class ClrYearpicker {
25
25
  this.yearRangeModel = new YearRangeModel(this.calendarYear);
26
26
  this._focusedYear = this.calendarYear;
27
27
  }
28
+ get selectedStartYear() {
29
+ return this._dateNavigationService.selectedDay?.year;
30
+ }
31
+ get selectedEndYear() {
32
+ return this._dateNavigationService.selectedEndDay?.year;
33
+ }
28
34
  /**
29
35
  * Gets the year which the user is currently on.
30
36
  */
31
37
  get calendarYear() {
32
38
  return this._dateNavigationService.displayedCalendar.year;
33
39
  }
40
+ getIsRangeStartYear(year) {
41
+ return this._dateNavigationService.isRangePicker && year === this._dateNavigationService.selectedDay?.year;
42
+ }
43
+ getIsRangeEndYear(year) {
44
+ return this._dateNavigationService.isRangePicker && year === this._dateNavigationService.selectedEndDay?.year;
45
+ }
34
46
  /**
35
47
  * Focuses on the current calendar year when the View is initialized.
36
48
  */
@@ -48,19 +60,19 @@ export class ClrYearpicker {
48
60
  const key = normalizeKey(event.key);
49
61
  if (key === Keys.ArrowUp) {
50
62
  event.preventDefault();
51
- this.incrementFocusYearBy(-1);
63
+ this.incrementFocusYearBy(-2);
52
64
  }
53
65
  else if (key === Keys.ArrowDown) {
54
66
  event.preventDefault();
55
- this.incrementFocusYearBy(1);
67
+ this.incrementFocusYearBy(2);
56
68
  }
57
69
  else if (key === Keys.ArrowRight) {
58
70
  event.preventDefault();
59
- this.incrementFocusYearBy(5);
71
+ this.incrementFocusYearBy(1);
60
72
  }
61
73
  else if (key === Keys.ArrowLeft) {
62
74
  event.preventDefault();
63
- this.incrementFocusYearBy(-5);
75
+ this.incrementFocusYearBy(-1);
64
76
  }
65
77
  }
66
78
  }
@@ -72,6 +84,12 @@ export class ClrYearpicker {
72
84
  this._dateNavigationService.changeYear(year);
73
85
  this._viewManagerService.changeToDayView();
74
86
  }
87
+ /**
88
+ * Calls the DateNavigationService to update the hovered year value of the calendar
89
+ */
90
+ onHover(year) {
91
+ this._dateNavigationService.hoveredYear = year;
92
+ }
75
93
  /**
76
94
  * Updates the YearRangeModel to the previous decade.
77
95
  */
@@ -105,12 +123,36 @@ export class ClrYearpicker {
105
123
  if (this.yearRangeModel.inRange(this.calendarYear)) {
106
124
  this._focusedYear = this.calendarYear;
107
125
  }
126
+ else if (this.yearRangeModel.inRange(this.selectedEndYear)) {
127
+ this._focusedYear = this.selectedEndYear;
128
+ }
108
129
  else {
109
130
  this._focusedYear = this.yearRangeModel.middleYear;
110
131
  }
111
132
  }
112
133
  return this._focusedYear === year ? 0 : -1;
113
134
  }
135
+ /**
136
+ * Applicable only to date range picker
137
+ * Compares the year passed is in between the start and end date range
138
+ */
139
+ isInRange(year) {
140
+ if (!this._dateNavigationService.isRangePicker) {
141
+ return false;
142
+ }
143
+ if (this._dateNavigationService.selectedDay?.year && this.selectedEndYear) {
144
+ return year > this.selectedStartYear && year < this.selectedEndYear;
145
+ }
146
+ else if (this._dateNavigationService.selectedDay?.year && !this.selectedEndYear) {
147
+ return year > this.selectedStartYear && year < this._dateNavigationService.hoveredYear;
148
+ }
149
+ else {
150
+ return false;
151
+ }
152
+ }
153
+ changeToDayView() {
154
+ this._viewManagerService.changeToDayView();
155
+ }
114
156
  /**
115
157
  * Increments the focus year by the value passed. Updates the YearRangeModel if the
116
158
  * new value is not in the current decade.
@@ -130,40 +172,56 @@ export class ClrYearpicker {
130
172
  }
131
173
  ClrYearpicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrYearpicker, deps: [{ token: i1.DateNavigationService }, { token: i2.ViewManagerService }, { token: i3.DatepickerFocusService }, { token: i0.ElementRef }, { token: i4.ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
132
174
  ClrYearpicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrYearpicker, selector: "clr-yearpicker", host: { attributes: { "role": "application" }, listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.yearpicker": "true" } }, ngImport: i0, template: `
133
- <div class="year-switchers">
134
- <button
135
- class="calendar-btn switcher"
136
- type="button"
137
- (click)="previousDecade()"
138
- [attr.aria-label]="commonStrings.keys.datepickerPreviousDecade"
139
- >
140
- <cds-icon shape="angle" direction="left" [attr.title]="commonStrings.keys.datepickerPreviousDecade"></cds-icon>
141
- </button>
142
- <button
143
- class="calendar-btn switcher"
144
- type="button"
145
- (click)="currentDecade()"
146
- [attr.aria-label]="commonStrings.keys.datepickerCurrentDecade"
147
- >
148
- <cds-icon shape="event" [attr.title]="commonStrings.keys.datepickerCurrentDecade"></cds-icon>
149
- </button>
150
- <button
151
- class="calendar-btn switcher"
152
- type="button"
153
- (click)="nextDecade()"
154
- [attr.aria-label]="commonStrings.keys.datepickerNextDecade"
155
- >
156
- <cds-icon shape="angle" direction="right" [attr.title]="commonStrings.keys.datepickerNextDecade"></cds-icon>
157
- </button>
175
+ <div class="calendar-header">
176
+ <div class="calendar-pickers">
177
+ <button class="calendar-btn yearpicker-trigger year-range" type="button" (click)="changeToDayView()">
178
+ {{ yearRangeModel.yearRange[0] }} - {{ yearRangeModel.yearRange[yearRangeModel.yearRange.length - 1] }}
179
+ </button>
180
+ </div>
181
+ <div class="year-switchers">
182
+ <button
183
+ class="calendar-btn switcher"
184
+ type="button"
185
+ (click)="previousDecade()"
186
+ [attr.aria-label]="commonStrings.keys.datepickerPreviousDecade"
187
+ >
188
+ <cds-icon
189
+ shape="angle"
190
+ direction="left"
191
+ [attr.title]="commonStrings.keys.datepickerPreviousDecade"
192
+ ></cds-icon>
193
+ </button>
194
+ <button
195
+ class="calendar-btn switcher"
196
+ type="button"
197
+ (click)="currentDecade()"
198
+ [attr.aria-label]="commonStrings.keys.datepickerCurrentDecade"
199
+ >
200
+ <cds-icon shape="event" [attr.title]="commonStrings.keys.datepickerCurrentDecade"></cds-icon>
201
+ </button>
202
+ <button
203
+ class="calendar-btn switcher"
204
+ type="button"
205
+ (click)="nextDecade()"
206
+ [attr.aria-label]="commonStrings.keys.datepickerNextDecade"
207
+ >
208
+ <cds-icon shape="angle" direction="right" [attr.title]="commonStrings.keys.datepickerNextDecade"></cds-icon>
209
+ </button>
210
+ </div>
158
211
  </div>
212
+
159
213
  <div class="years">
160
214
  <button
161
215
  *ngFor="let year of yearRangeModel.yearRange"
162
216
  type="button"
163
217
  class="calendar-btn year"
164
218
  [attr.tabindex]="getTabIndex(year)"
165
- [class.is-selected]="year === calendarYear"
219
+ [class.is-selected]="year === selectedStartYear || year === selectedEndYear"
220
+ [class.is-start-range]="getIsRangeStartYear(year)"
221
+ [class.is-end-range]="getIsRangeEndYear(year)"
222
+ [class.in-range]="isInRange(year)"
166
223
  (click)="changeYear(year)"
224
+ (mouseenter)="onHover(year)"
167
225
  >
168
226
  {{ year }}
169
227
  </button>
@@ -174,40 +232,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
174
232
  args: [{
175
233
  selector: 'clr-yearpicker',
176
234
  template: `
177
- <div class="year-switchers">
178
- <button
179
- class="calendar-btn switcher"
180
- type="button"
181
- (click)="previousDecade()"
182
- [attr.aria-label]="commonStrings.keys.datepickerPreviousDecade"
183
- >
184
- <cds-icon shape="angle" direction="left" [attr.title]="commonStrings.keys.datepickerPreviousDecade"></cds-icon>
185
- </button>
186
- <button
187
- class="calendar-btn switcher"
188
- type="button"
189
- (click)="currentDecade()"
190
- [attr.aria-label]="commonStrings.keys.datepickerCurrentDecade"
191
- >
192
- <cds-icon shape="event" [attr.title]="commonStrings.keys.datepickerCurrentDecade"></cds-icon>
193
- </button>
194
- <button
195
- class="calendar-btn switcher"
196
- type="button"
197
- (click)="nextDecade()"
198
- [attr.aria-label]="commonStrings.keys.datepickerNextDecade"
199
- >
200
- <cds-icon shape="angle" direction="right" [attr.title]="commonStrings.keys.datepickerNextDecade"></cds-icon>
201
- </button>
235
+ <div class="calendar-header">
236
+ <div class="calendar-pickers">
237
+ <button class="calendar-btn yearpicker-trigger year-range" type="button" (click)="changeToDayView()">
238
+ {{ yearRangeModel.yearRange[0] }} - {{ yearRangeModel.yearRange[yearRangeModel.yearRange.length - 1] }}
239
+ </button>
240
+ </div>
241
+ <div class="year-switchers">
242
+ <button
243
+ class="calendar-btn switcher"
244
+ type="button"
245
+ (click)="previousDecade()"
246
+ [attr.aria-label]="commonStrings.keys.datepickerPreviousDecade"
247
+ >
248
+ <cds-icon
249
+ shape="angle"
250
+ direction="left"
251
+ [attr.title]="commonStrings.keys.datepickerPreviousDecade"
252
+ ></cds-icon>
253
+ </button>
254
+ <button
255
+ class="calendar-btn switcher"
256
+ type="button"
257
+ (click)="currentDecade()"
258
+ [attr.aria-label]="commonStrings.keys.datepickerCurrentDecade"
259
+ >
260
+ <cds-icon shape="event" [attr.title]="commonStrings.keys.datepickerCurrentDecade"></cds-icon>
261
+ </button>
262
+ <button
263
+ class="calendar-btn switcher"
264
+ type="button"
265
+ (click)="nextDecade()"
266
+ [attr.aria-label]="commonStrings.keys.datepickerNextDecade"
267
+ >
268
+ <cds-icon shape="angle" direction="right" [attr.title]="commonStrings.keys.datepickerNextDecade"></cds-icon>
269
+ </button>
270
+ </div>
202
271
  </div>
272
+
203
273
  <div class="years">
204
274
  <button
205
275
  *ngFor="let year of yearRangeModel.yearRange"
206
276
  type="button"
207
277
  class="calendar-btn year"
208
278
  [attr.tabindex]="getTabIndex(year)"
209
- [class.is-selected]="year === calendarYear"
279
+ [class.is-selected]="year === selectedStartYear || year === selectedEndYear"
280
+ [class.is-start-range]="getIsRangeStartYear(year)"
281
+ [class.is-end-range]="getIsRangeEndYear(year)"
282
+ [class.in-range]="isInRange(year)"
210
283
  (click)="changeYear(year)"
284
+ (mouseenter)="onHover(year)"
211
285
  >
212
286
  {{ year }}
213
287
  </button>
@@ -222,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
222
296
  type: HostListener,
223
297
  args: ['keydown', ['$event']]
224
298
  }] } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhcnBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2Zvcm1zL2RhdGVwaWNrZXIveWVhcnBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFvRDFELE1BQU0sT0FBTyxhQUFhO0lBV3hCLFlBQ1Usc0JBQTZDLEVBQzdDLG1CQUF1QyxFQUN2Qyx1QkFBK0MsRUFDL0MsTUFBK0IsRUFDaEMsYUFBc0M7UUFKckMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQUM3Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFDL0MsV0FBTSxHQUFOLE1BQU0sQ0FBeUI7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBRTdDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RE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QUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ25ELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDeEQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQzVEO1NBQ0Y7UUFDRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxDQUFDOzswR0EvSFUsYUFBYTs4RkFBYixhQUFhLGtNQTdDZDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNUOzJGQU1VLGFBQWE7a0JBL0N6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNUO29CQUNELElBQUksRUFBRTt3QkFDSixvQkFBb0IsRUFBRSxNQUFNO3dCQUM1QixJQUFJLEVBQUUsYUFBYTtxQkFDcEI7aUJBQ0Y7aVBBeUNDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjQgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEtleXMgfSBmcm9tICcuLi8uLi91dGlscy9lbnVtcy9rZXlzLmVudW0nO1xuaW1wb3J0IHsgbm9ybWFsaXplS2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9jdXMva2V5LWZvY3VzL3V0aWwnO1xuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgWWVhclJhbmdlTW9kZWwgfSBmcm9tICcuL21vZGVsL3llYXItcmFuZ2UubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZU5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZGF0ZS1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckZvY3VzU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2RhdGVwaWNrZXItZm9jdXMuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy92aWV3LW1hbmFnZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci15ZWFycGlja2VyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwieWVhci1zd2l0Y2hlcnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1idG4gc3dpdGNoZXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzRGVjYWRlKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyUHJldmlvdXNEZWNhZGVcIlxuICAgICAgPlxuICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJhbmdsZVwiIGRpcmVjdGlvbj1cImxlZnRcIiBbYXR0ci50aXRsZV09XCJjb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclByZXZpb3VzRGVjYWRlXCI+PC9jZHMtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImNhbGVuZGFyLWJ0biBzd2l0Y2hlclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY3VycmVudERlY2FkZSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlckN1cnJlbnREZWNhZGVcIlxuICAgICAgPlxuICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJldmVudFwiIFthdHRyLnRpdGxlXT1cImNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyQ3VycmVudERlY2FkZVwiPjwvY2RzLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1idG4gc3dpdGNoZXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cIm5leHREZWNhZGUoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJOZXh0RGVjYWRlXCJcbiAgICAgID5cbiAgICAgICAgPGNkcy1pY29uIHNoYXBlPVwiYW5nbGVcIiBkaXJlY3Rpb249XCJyaWdodFwiIFthdHRyLnRpdGxlXT1cImNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyTmV4dERlY2FkZVwiPjwvY2RzLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwieWVhcnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhclJhbmdlTW9kZWwueWVhclJhbmdlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY2FsZW5kYXItYnRuIHllYXJcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJnZXRUYWJJbmRleCh5ZWFyKVwiXG4gICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJ5ZWFyID09PSBjYWxlbmRhclllYXJcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlWWVhcih5ZWFyKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHllYXIgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICBgLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy55ZWFycGlja2VyXSc6ICd0cnVlJyxcbiAgICByb2xlOiAnYXBwbGljYXRpb24nLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDbHJZZWFycGlja2VyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKlxuICAgKiBZZWFyUmFuZ2VNb2RlbCB3aGljaCBpcyB1c2VkIHRvIGJ1aWxkIHRoZSBZZWFyUGlja2VyIHZpZXcuXG4gICAqL1xuICB5ZWFyUmFuZ2VNb2RlbDogWWVhclJhbmdlTW9kZWw7XG5cbiAgLyoqXG4gICAqIEtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50IGZvY3VzZWQgeWVhci5cbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzZWRZZWFyOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZGF0ZU5hdmlnYXRpb25TZXJ2aWNlOiBEYXRlTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdmlld01hbmFnZXJTZXJ2aWNlOiBWaWV3TWFuYWdlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZGF0ZXBpY2tlckZvY3VzU2VydmljZTogRGF0ZXBpY2tlckZvY3VzU2VydmljZSxcbiAgICBwcml2YXRlIF9lbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHVibGljIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMueWVhclJhbmdlTW9kZWwgPSBuZXcgWWVhclJhbmdlTW9kZWwodGhpcy5jYWxlbmRhclllYXIpO1xuICAgIHRoaXMuX2ZvY3VzZWRZZWFyID0gdGhpcy5jYWxlbmRhclllYXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgeWVhciB3aGljaCB0aGUgdXNlciBpcyBjdXJyZW50bHkgb24uXG4gICAqL1xuICBnZXQgY2FsZW5kYXJZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRhci55ZWFyO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgb24gdGhlIGN1cnJlbnQgY2FsZW5kYXIgeWVhciB3aGVuIHRoZSBWaWV3IGlzIGluaXRpYWxpemVkLlxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBLZXlib2FyZCBhcnJvdyBuYXZpZ2F0aW9uIGZvciB0aGUgeWVhcnBpY2tlci5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvLyBOT1RFOiBEaWRuJ3QgbW92ZSB0aGlzIHRvIHRoZSBkYXRlIG5hdmlnYXRpb24gc2VydmljZSBiZWNhdXNlXG4gICAgLy8gdGhlIGxvZ2ljIGlzIGZhaXJseSBzaW1wbGUgYW5kIGl0IGRpZG4ndCBtYWtlIHNlbnNlIGZvciBtZVxuICAgIC8vIHRvIGNyZWF0ZSBleHRyYSBvYnNlcnZhYmxlcyBqdXN0IHRvIG1vdmUgdGhpcyBsb2dpYyB0byB0aGUgc2VydmljZS5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGNvbnN0IGtleSA9IG5vcm1hbGl6ZUtleShldmVudC5rZXkpO1xuICAgICAgaWYgKGtleSA9PT0gS2V5cy5BcnJvd1VwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoLTEpO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtleXMuQXJyb3dEb3duKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoMSk7XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gS2V5cy5BcnJvd1JpZ2h0KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoNSk7XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gS2V5cy5BcnJvd0xlZnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRGb2N1c1llYXJCeSgtNSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBEYXRlTmF2aWdhdGlvblNlcnZpY2UgdG8gdXBkYXRlIHRoZSB5ZWFyIHZhbHVlIG9mIHRoZSBjYWxlbmRhci5cbiAgICogQWxzbyBjaGFuZ2VzIHRoZSB2aWV3IHRvIHRoZSBkYXlwaWNrZXIuXG4gICAqL1xuICBjaGFuZ2VZZWFyKHllYXI6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5jaGFuZ2VZZWFyKHllYXIpO1xuICAgIHRoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZS5jaGFuZ2VUb0RheVZpZXcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBZZWFyUmFuZ2VNb2RlbCB0byB0aGUgcHJldmlvdXMgZGVjYWRlLlxuICAgKi9cbiAgcHJldmlvdXNEZWNhZGUoKTogdm9pZCB7XG4gICAgdGhpcy55ZWFyUmFuZ2VNb2RlbCA9IHRoaXMueWVhclJhbmdlTW9kZWwucHJldmlvdXNEZWNhZGUoKTtcbiAgICAvLyBZZWFyIGluIHRoZSB5ZWFycGlja2VyIGlzIG5vdCBmb2N1c2VkIGJlY2F1c2Ugd2hpbGUgbmF2aWdhdGluZyB0byBhIGRpZmZlcmVudCBkZWNhZGUsXG4gICAgLy8geW91IHdhbnQgdGhlIGZvY3VzIHRvIHJlbWFpbiBvbiB0aGUgZGVjYWRlIHN3aXRjaGVyIGFycm93cy5cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBZZWFyUmFuZ2VNb2RlbCB0byB0aGUgY3VycmVudCBkZWNhZGUuXG4gICAqL1xuICBjdXJyZW50RGVjYWRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy55ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS50b2RheS55ZWFyKSkge1xuICAgICAgdGhpcy55ZWFyUmFuZ2VNb2RlbCA9IHRoaXMueWVhclJhbmdlTW9kZWwuY3VycmVudERlY2FkZSgpO1xuICAgIH1cbiAgICB0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlLmZvY3VzQ2VsbCh0aGlzLl9lbFJlZik7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgWWVhclJhbmdlTW9kZWwgdG8gdGhlIG5leHQgZGVjYWRlLlxuICAgKi9cbiAgbmV4dERlY2FkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnllYXJSYW5nZU1vZGVsID0gdGhpcy55ZWFyUmFuZ2VNb2RlbC5uZXh0RGVjYWRlKCk7XG4gICAgLy8gWWVhciBpbiB0aGUgeWVhcnBpY2tlciBpcyBub3QgZm9jdXNlZCBiZWNhdXNlIHdoaWxlIG5hdmlnYXRpbmcgdG8gYSBkaWZmZXJlbnQgZGVjYWRlLFxuICAgIC8vIHlvdSB3YW50IHRoZSBmb2N1cyB0byByZW1haW4gb24gdGhlIGRlY2FkZSBzd2l0Y2hlciBhcnJvd3MuXG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdGhlIHllYXIgcGFzc2VkIHRvIHRoZSBmb2N1c2VkIHllYXIgYW5kIHJldHVybnMgdGhlIHRhYiBpbmRleC5cbiAgICovXG4gIGdldFRhYkluZGV4KHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnllYXJSYW5nZU1vZGVsLmluUmFuZ2UodGhpcy5fZm9jdXNlZFllYXIpKSB7XG4gICAgICBpZiAodGhpcy55ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuY2FsZW5kYXJZZWFyKSkge1xuICAgICAgICB0aGlzLl9mb2N1c2VkWWVhciA9IHRoaXMuY2FsZW5kYXJZZWFyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZm9jdXNlZFllYXIgPSB0aGlzLnllYXJSYW5nZU1vZGVsLm1pZGRsZVllYXI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkWWVhciA9PT0geWVhciA/IDAgOiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmNyZW1lbnRzIHRoZSBmb2N1cyB5ZWFyIGJ5IHRoZSB2YWx1ZSBwYXNzZWQuIFVwZGF0ZXMgdGhlIFllYXJSYW5nZU1vZGVsIGlmIHRoZVxuICAgKiBuZXcgdmFsdWUgaXMgbm90IGluIHRoZSBjdXJyZW50IGRlY2FkZS5cbiAgICovXG4gIHByaXZhdGUgaW5jcmVtZW50Rm9jdXNZZWFyQnkodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2ZvY3VzZWRZZWFyID0gdGhpcy5fZm9jdXNlZFllYXIgKyB2YWx1ZTtcbiAgICBpZiAoIXRoaXMueWVhclJhbmdlTW9kZWwuaW5SYW5nZSh0aGlzLl9mb2N1c2VkWWVhcikpIHtcbiAgICAgIGlmICh2YWx1ZSA+IDApIHtcbiAgICAgICAgdGhpcy55ZWFyUmFuZ2VNb2RlbCA9IHRoaXMueWVhclJhbmdlTW9kZWwubmV4dERlY2FkZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy55ZWFyUmFuZ2VNb2RlbCA9IHRoaXMueWVhclJhbmdlTW9kZWwucHJldmlvdXNEZWNhZGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpO1xuICB9XG59XG4iXX0=
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhcnBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2Zvcm1zL2RhdGVwaWNrZXIveWVhcnBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFvRTFELE1BQU0sT0FBTyxhQUFhO0lBV3hCLFlBQ1Usc0JBQTZDLEVBQzdDLG1CQUF1QyxFQUN2Qyx1QkFBK0MsRUFDL0MsTUFBK0IsRUFDaEMsYUFBc0M7UUFKckMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQUM3Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFDL0MsV0FBTSxHQUFOLE1BQU0sQ0FBeUI7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBRTdDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFB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LCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEtleXMgfSBmcm9tICcuLi8uLi91dGlscy9lbnVtcy9rZXlzLmVudW0nO1xuaW1wb3J0IHsgbm9ybWFsaXplS2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9jdXMva2V5LWZvY3VzL3V0aWwnO1xuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgWWVhclJhbmdlTW9kZWwgfSBmcm9tICcuL21vZGVsL3llYXItcmFuZ2UubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZU5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZGF0ZS1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckZvY3VzU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2RhdGVwaWNrZXItZm9jdXMuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy92aWV3LW1hbmFnZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci15ZWFycGlja2VyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItcGlja2Vyc1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsZW5kYXItYnRuIHllYXJwaWNrZXItdHJpZ2dlciB5ZWFyLXJhbmdlXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjaGFuZ2VUb0RheVZpZXcoKVwiPlxuICAgICAgICAgIHt7IHllYXJSYW5nZU1vZGVsLnllYXJSYW5nZVswXSB9fSAtIHt7IHllYXJSYW5nZU1vZGVsLnllYXJSYW5nZVt5ZWFyUmFuZ2VNb2RlbC55ZWFyUmFuZ2UubGVuZ3RoIC0gMV0gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ5ZWFyLXN3aXRjaGVyc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1idG4gc3dpdGNoZXJcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c0RlY2FkZSgpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyUHJldmlvdXNEZWNhZGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNkcy1pY29uXG4gICAgICAgICAgICBzaGFwZT1cImFuZ2xlXCJcbiAgICAgICAgICAgIGRpcmVjdGlvbj1cImxlZnRcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJQcmV2aW91c0RlY2FkZVwiXG4gICAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1idG4gc3dpdGNoZXJcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJjdXJyZW50RGVjYWRlKClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJDdXJyZW50RGVjYWRlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjZHMtaWNvbiBzaGFwZT1cImV2ZW50XCIgW2F0dHIudGl0bGVdPVwiY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJDdXJyZW50RGVjYWRlXCI+PC9jZHMtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLWJ0biBzd2l0Y2hlclwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm5leHREZWNhZGUoKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlck5leHREZWNhZGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNkcy1pY29uIHNoYXBlPVwiYW5nbGVcIiBkaXJlY3Rpb249XCJyaWdodFwiIFthdHRyLnRpdGxlXT1cImNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyTmV4dERlY2FkZVwiPjwvY2RzLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwieWVhcnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhclJhbmdlTW9kZWwueWVhclJhbmdlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY2FsZW5kYXItYnRuIHllYXJcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJnZXRUYWJJbmRleCh5ZWFyKVwiXG4gICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJ5ZWFyID09PSBzZWxlY3RlZFN0YXJ0WWVhciB8fCB5ZWFyID09PSBzZWxlY3RlZEVuZFllYXJcIlxuICAgICAgICBbY2xhc3MuaXMtc3RhcnQtcmFuZ2VdPVwiZ2V0SXNSYW5nZVN0YXJ0WWVhcih5ZWFyKVwiXG4gICAgICAgIFtjbGFzcy5pcy1lbmQtcmFuZ2VdPVwiZ2V0SXNSYW5nZUVuZFllYXIoeWVhcilcIlxuICAgICAgICBbY2xhc3MuaW4tcmFuZ2VdPVwiaXNJblJhbmdlKHllYXIpXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZVllYXIoeWVhcilcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvbkhvdmVyKHllYXIpXCJcbiAgICAgID5cbiAgICAgICAge3sgeWVhciB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIGAsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLnllYXJwaWNrZXJdJzogJ3RydWUnLFxuICAgIHJvbGU6ICdhcHBsaWNhdGlvbicsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsclllYXJwaWNrZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgLyoqXG4gICAqIFllYXJSYW5nZU1vZGVsIHdoaWNoIGlzIHVzZWQgdG8gYnVpbGQgdGhlIFllYXJQaWNrZXIgdmlldy5cbiAgICovXG4gIHllYXJSYW5nZU1vZGVsOiBZZWFyUmFuZ2VNb2RlbDtcblxuICAvKipcbiAgICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgZm9jdXNlZCB5ZWFyLlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9jdXNlZFllYXI6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kYXRlTmF2aWdhdGlvblNlcnZpY2U6IERhdGVOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIF92aWV3TWFuYWdlclNlcnZpY2U6IFZpZXdNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIF9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlOiBEYXRlcGlja2VyRm9jdXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwdWJsaWMgY29tbW9uU3RyaW5nczogQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy55ZWFyUmFuZ2VNb2RlbCA9IG5ldyBZZWFyUmFuZ2VNb2RlbCh0aGlzLmNhbGVuZGFyWWVhcik7XG4gICAgdGhpcy5fZm9jdXNlZFllYXIgPSB0aGlzLmNhbGVuZGFyWWVhcjtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZFN0YXJ0WWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXk/LnllYXI7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRFbmRZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZEVuZERheT8ueWVhcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB5ZWFyIHdoaWNoIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBvbi5cbiAgICovXG4gIGdldCBjYWxlbmRhclllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmRpc3BsYXllZENhbGVuZGFyLnllYXI7XG4gIH1cblxuICBnZXRJc1JhbmdlU3RhcnRZZWFyKHllYXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaXNSYW5nZVBpY2tlciAmJiB5ZWFyID09PSB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXk/LnllYXI7XG4gIH1cblxuICBnZXRJc1JhbmdlRW5kWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmlzUmFuZ2VQaWNrZXIgJiYgeWVhciA9PT0gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5Py55ZWFyO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgb24gdGhlIGN1cnJlbnQgY2FsZW5kYXIgeWVhciB3aGVuIHRoZSBWaWV3IGlzIGluaXRpYWxpemVkLlxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBLZXlib2FyZCBhcnJvdyBuYXZpZ2F0aW9uIGZvciB0aGUgeWVhcnBpY2tlci5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvLyBOT1RFOiBEaWRuJ3QgbW92ZSB0aGlzIHRvIHRoZSBkYXRlIG5hdmlnYXRpb24gc2VydmljZSBiZWNhdXNlXG4gICAgLy8gdGhlIGxvZ2ljIGlzIGZhaXJseSBzaW1wbGUgYW5kIGl0IGRpZG4ndCBtYWtlIHNlbnNlIGZvciBtZVxuICAgIC8vIHRvIGNyZWF0ZSBleHRyYSBvYnNlcnZhYmxlcyBqdXN0IHRvIG1vdmUgdGhpcyBsb2dpYyB0byB0aGUgc2VydmljZS5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGNvbnN0IGtleSA9IG5vcm1hbGl6ZUtleShldmVudC5rZXkpO1xuICAgICAgaWYgKGtleSA9PT0gS2V5cy5BcnJvd1VwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoLTIpO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtleXMuQXJyb3dEb3duKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoMik7XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gS2V5cy5BcnJvd1JpZ2h0KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoMSk7XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gS2V5cy5BcnJvd0xlZnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRGb2N1c1llYXJCeSgtMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBEYXRlTmF2aWdhdGlvblNlcnZpY2UgdG8gdXBkYXRlIHRoZSB5ZWFyIHZhbHVlIG9mIHRoZSBjYWxlbmRhci5cbiAgICogQWxzbyBjaGFuZ2VzIHRoZSB2aWV3IHRvIHRoZSBkYXlwaWNrZXIuXG4gICAqL1xuICBjaGFuZ2VZZWFyKHllYXI6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5jaGFuZ2VZZWFyKHllYXIpO1xuICAgIHRoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZS5jaGFuZ2VUb0RheVZpZXcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyB0aGUgRGF0ZU5hdmlnYXRpb25TZXJ2aWNlIHRvIHVwZGF0ZSB0aGUgaG92ZXJlZCB5ZWFyIHZhbHVlIG9mIHRoZSBjYWxlbmRhclxuICAgKi9cbiAgb25Ib3Zlcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaG92ZXJlZFllYXIgPSB5ZWFyO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIFllYXJSYW5nZU1vZGVsIHRvIHRoZSBwcmV2aW91cyBkZWNhZGUuXG4gICAqL1xuICBwcmV2aW91c0RlY2FkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnllYXJSYW5nZU1vZGVsID0gdGhpcy55ZWFyUmFuZ2VNb2RlbC5wcmV2aW91c0RlY2FkZSgpO1xuICAgIC8vIFllYXIgaW4gdGhlIHllYXJwaWNrZXIgaXMgbm90IGZvY3VzZWQgYmVjYXVzZSB3aGlsZSBuYXZpZ2F0aW5nIHRvIGEgZGlmZmVyZW50IGRlY2FkZSxcbiAgICAvLyB5b3Ugd2FudCB0aGUgZm9jdXMgdG8gcmVtYWluIG9uIHRoZSBkZWNhZGUgc3dpdGNoZXIgYXJyb3dzLlxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIFllYXJSYW5nZU1vZGVsIHRvIHRoZSBjdXJyZW50IGRlY2FkZS5cbiAgICovXG4gIGN1cnJlbnREZWNhZGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnllYXJSYW5nZU1vZGVsLmluUmFuZ2UodGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnRvZGF5LnllYXIpKSB7XG4gICAgICB0aGlzLnllYXJSYW5nZU1vZGVsID0gdGhpcy55ZWFyUmFuZ2VNb2RlbC5jdXJyZW50RGVjYWRlKCk7XG4gICAgfVxuICAgIHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBZZWFyUmFuZ2VNb2RlbCB0byB0aGUgbmV4dCBkZWNhZGUuXG4gICAqL1xuICBuZXh0RGVjYWRlKCk6IHZvaWQge1xuICAgIHRoaXMueWVhclJhbmdlTW9kZWwgPSB0aGlzLnllYXJSYW5nZU1vZGVsLm5leHREZWNhZGUoKTtcbiAgICAvLyBZZWFyIGluIHRoZSB5ZWFycGlja2VyIGlzIG5vdCBmb2N1c2VkIGJlY2F1c2Ugd2hpbGUgbmF2aWdhdGluZyB0byBhIGRpZmZlcmVudCBkZWNhZGUsXG4gICAgLy8geW91IHdhbnQgdGhlIGZvY3VzIHRvIHJlbWFpbiBvbiB0aGUgZGVjYWRlIHN3aXRjaGVyIGFycm93cy5cbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJlcyB0aGUgeWVhciBwYXNzZWQgdG8gdGhlIGZvY3VzZWQgeWVhciBhbmQgcmV0dXJucyB0aGUgdGFiIGluZGV4LlxuICAgKi9cbiAgZ2V0VGFiSW5kZXgoeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMueWVhclJhbmdlTW9kZWwuaW5SYW5nZSh0aGlzLl9mb2N1c2VkWWVhcikpIHtcbiAgICAgIGlmICh0aGlzLnllYXJSYW5nZU1vZGVsLmluUmFuZ2UodGhpcy5jYWxlbmRhclllYXIpKSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRZZWFyID0gdGhpcy5jYWxlbmRhclllYXI7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMueWVhclJhbmdlTW9kZWwuaW5SYW5nZSh0aGlzLnNlbGVjdGVkRW5kWWVhcikpIHtcbiAgICAgICAgdGhpcy5fZm9jdXNlZFllYXIgPSB0aGlzLnNlbGVjdGVkRW5kWWVhcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRZZWFyID0gdGhpcy55ZWFyUmFuZ2VNb2RlbC5taWRkbGVZZWFyO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZFllYXIgPT09IHllYXIgPyAwIDogLTE7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGljYWJsZSBvbmx5IHRvIGRhdGUgcmFuZ2UgcGlja2VyXG4gICAqIENvbXBhcmVzIHRoZSB5ZWFyIHBhc3NlZCBpcyBpbiBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIGRhdGUgcmFuZ2VcbiAgICovXG4gIGlzSW5SYW5nZSh5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5pc1JhbmdlUGlja2VyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXk/LnllYXIgJiYgdGhpcy5zZWxlY3RlZEVuZFllYXIpIHtcbiAgICAgIHJldHVybiB5ZWFyID4gdGhpcy5zZWxlY3RlZFN0YXJ0WWVhciAmJiB5ZWFyIDwgdGhpcy5zZWxlY3RlZEVuZFllYXI7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXk/LnllYXIgJiYgIXRoaXMuc2VsZWN0ZWRFbmRZZWFyKSB7XG4gICAgICByZXR1cm4geWVhciA+IHRoaXMuc2VsZWN0ZWRTdGFydFllYXIgJiYgeWVhciA8IHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5ob3ZlcmVkWWVhcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRvRGF5VmlldygpIHtcbiAgICB0aGlzLl92aWV3TWFuYWdlclNlcnZpY2UuY2hhbmdlVG9EYXlWaWV3KCk7XG4gIH1cblxuICAvKipcbiAgICogSW5jcmVtZW50cyB0aGUgZm9jdXMgeWVhciBieSB0aGUgdmFsdWUgcGFzc2VkLiBVcGRhdGVzIHRoZSBZZWFyUmFuZ2VNb2RlbCBpZiB0aGVcbiAgICogbmV3IHZhbHVlIGlzIG5vdCBpbiB0aGUgY3VycmVudCBkZWNhZGUuXG4gICAqL1xuICBwcml2YXRlIGluY3JlbWVudEZvY3VzWWVhckJ5KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c2VkWWVhciA9IHRoaXMuX2ZvY3VzZWRZZWFyICsgdmFsdWU7XG4gICAgaWYgKCF0aGlzLnllYXJSYW5nZU1vZGVsLmluUmFuZ2UodGhpcy5fZm9jdXNlZFllYXIpKSB7XG4gICAgICBpZiAodmFsdWUgPiAwKSB7XG4gICAgICAgIHRoaXMueWVhclJhbmdlTW9kZWwgPSB0aGlzLnllYXJSYW5nZU1vZGVsLm5leHREZWNhZGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMueWVhclJhbmdlTW9kZWwgPSB0aGlzLnllYXJSYW5nZU1vZGVsLnByZXZpb3VzRGVjYWRlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
2
+ * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
3
3
  * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
4
4
  * This software is released under MIT license.
5
5
  * The full license information can be found in LICENSE in the root directory of this project.
@@ -12,6 +12,9 @@ import { ControlClassService } from '../common/providers/control-class.service';
12
12
  import { ControlIdService } from '../common/providers/control-id.service';
13
13
  import { NgControlService } from '../common/providers/ng-control.service';
14
14
  import { ClrFileInput } from './file-input';
15
+ import { selectFiles } from './file-input.helpers';
16
+ import { ClrFileList } from './file-list';
17
+ import { ClrFileError, ClrFileSuccess } from './file-messages';
15
18
  import * as i0 from "@angular/core";
16
19
  import * as i1 from "@angular/common";
17
20
  import * as i2 from "../../icon/icon";
@@ -21,28 +24,78 @@ export class ClrFileInputContainer extends ClrAbstractContainer {
21
24
  super(...arguments);
22
25
  this.commonStrings = inject(ClrCommonStringsService);
23
26
  }
27
+ get accept() {
28
+ return this.fileInput.elementRef.nativeElement.accept;
29
+ }
30
+ get multiple() {
31
+ return this.fileInput.elementRef.nativeElement.multiple;
32
+ }
24
33
  get disabled() {
25
34
  return this.fileInput.elementRef.nativeElement.disabled;
26
35
  }
36
+ get browseButtonText() {
37
+ const selectionButtonLabel = this.fileList ? undefined : this.fileInput?.selection?.buttonLabel;
38
+ return selectionButtonLabel || this.customButtonLabel || this.commonStrings.keys.browse;
39
+ }
27
40
  get browseButtonDescribedBy() {
28
- return `${this.label?.idAttr} ${this.fileInput.elementRef.nativeElement.getAttribute('aria-describedby')}`;
41
+ return `${this.label?.forAttr} ${this.fileInput.elementRef.nativeElement.getAttribute('aria-describedby')}`;
42
+ }
43
+ get successMessagePresent() {
44
+ return super.successMessagePresent || !!this.fileSuccessComponent;
45
+ }
46
+ get errorMessagePresent() {
47
+ return super.errorMessagePresent || !!this.fileErrorComponent;
48
+ }
49
+ focusBrowseButton() {
50
+ this.browseButtonElementRef.nativeElement.focus();
29
51
  }
30
52
  browse() {
31
- this.fileInput.elementRef.nativeElement.click();
53
+ const fileInputElementRef = this.fileList && this.multiple ? this.fileListFileInputElementRef : this.fileInput.elementRef;
54
+ fileInputElementRef.nativeElement.click();
32
55
  }
33
56
  clearSelectedFiles() {
34
57
  this.fileInput.elementRef.nativeElement.value = '';
35
58
  this.fileInput.elementRef.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
36
- this.browseButtonElementRef.nativeElement.focus();
59
+ this.focusBrowseButton();
60
+ }
61
+ addFilesToSelection(newFiles) {
62
+ if (!newFiles.length) {
63
+ return;
64
+ }
65
+ // start with new files
66
+ const mergedFiles = [...newFiles];
67
+ // add existing files if a new file doesn't have the same name
68
+ for (const existingFile of this.fileInput.elementRef.nativeElement.files) {
69
+ if (!mergedFiles.some(file => file.name === existingFile.name)) {
70
+ mergedFiles.push(existingFile);
71
+ }
72
+ }
73
+ // update file selection
74
+ selectFiles(this.fileInput.elementRef.nativeElement, mergedFiles);
37
75
  }
38
76
  }
39
77
  ClrFileInputContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputContainer, deps: null, target: i0.ɵɵFactoryTarget.Component });
40
- ClrFileInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInputContainer, selector: "clr-file-input-container", inputs: { customButtonLabel: ["clrButtonLabel", "customButtonLabel"] }, host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "disabled", "class.clr-row": "addGrid()" } }, providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService], queries: [{ propertyName: "fileInput", first: true, predicate: i0.forwardRef(function () { return ClrFileInput; }), descendants: true }], viewQueries: [{ propertyName: "browseButtonElementRef", first: true, predicate: ["browseButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
78
+ ClrFileInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInputContainer, selector: "clr-file-input-container", inputs: { customButtonLabel: ["clrButtonLabel", "customButtonLabel"] }, host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "disabled", "class.clr-row": "addGrid()" } }, providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService], queries: [{ propertyName: "fileInput", first: true, predicate: i0.forwardRef(function () { return ClrFileInput; }), descendants: true }, { propertyName: "fileList", first: true, predicate: i0.forwardRef(function () { return ClrFileList; }), descendants: true }, { propertyName: "fileSuccessComponent", first: true, predicate: ClrFileSuccess, descendants: true }, { propertyName: "fileErrorComponent", first: true, predicate: ClrFileError, descendants: true }], viewQueries: [{ propertyName: "browseButtonElementRef", first: true, predicate: ["browseButton"], descendants: true }, { propertyName: "fileListFileInputElementRef", first: true, predicate: ["fileListFileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
41
79
  <ng-content select="label"></ng-content>
42
80
  <label *ngIf="!label && addGrid()"></label>
43
81
  <div class="clr-control-container" [ngClass]="controlClass()">
44
82
  <div class="clr-file-input-wrapper">
45
83
  <ng-content select="[clrFileInput]"></ng-content>
84
+
85
+ <!-- file input to handle adding new files to selection when file list is present (prevent replacing selected files on the main file input) -->
86
+ <input
87
+ *ngIf="fileList"
88
+ #fileListFileInput
89
+ type="file"
90
+ class="clr-file-input"
91
+ tabindex="-1"
92
+ aria-hidden="true"
93
+ [accept]="accept"
94
+ [multiple]="multiple"
95
+ [disabled]="disabled"
96
+ (change)="addFilesToSelection(fileListFileInput.files)"
97
+ />
98
+
46
99
  <button
47
100
  #browseButton
48
101
  type="button"
@@ -52,12 +105,10 @@ ClrFileInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
52
105
  (click)="browse()"
53
106
  >
54
107
  <cds-icon shape="folder-open"></cds-icon>
55
- <span class="clr-file-input-browse-button-text">
56
- {{ fileInput?.selection?.buttonLabel || customButtonLabel || commonStrings.keys.browse }}
57
- </span>
108
+ <span class="clr-file-input-browse-button-text">{{ browseButtonText }}</span>
58
109
  </button>
59
110
  <button
60
- *ngIf="fileInput?.selection?.fileCount"
111
+ *ngIf="!fileList && fileInput?.selection?.fileCount"
61
112
  type="button"
62
113
  class="btn btn-sm clr-file-input-clear-button"
63
114
  [attr.aria-label]="fileInput?.selection?.clearFilesButtonLabel"
@@ -83,6 +134,12 @@ ClrFileInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
83
134
  <ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
84
135
  <ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
85
136
  <ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
137
+
138
+ <!-- If this is present, this file input becomes an "advanced" file input. -->
139
+ <ng-container>
140
+ <div class="clr-file-list-break"></div>
141
+ <ng-content select="clr-file-list"></ng-content>
142
+ </ng-container>
86
143
  </div>
87
144
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["id", "for"] }] });
88
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputContainer, decorators: [{
@@ -95,6 +152,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
95
152
  <div class="clr-control-container" [ngClass]="controlClass()">
96
153
  <div class="clr-file-input-wrapper">
97
154
  <ng-content select="[clrFileInput]"></ng-content>
155
+
156
+ <!-- file input to handle adding new files to selection when file list is present (prevent replacing selected files on the main file input) -->
157
+ <input
158
+ *ngIf="fileList"
159
+ #fileListFileInput
160
+ type="file"
161
+ class="clr-file-input"
162
+ tabindex="-1"
163
+ aria-hidden="true"
164
+ [accept]="accept"
165
+ [multiple]="multiple"
166
+ [disabled]="disabled"
167
+ (change)="addFilesToSelection(fileListFileInput.files)"
168
+ />
169
+
98
170
  <button
99
171
  #browseButton
100
172
  type="button"
@@ -104,12 +176,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
104
176
  (click)="browse()"
105
177
  >
106
178
  <cds-icon shape="folder-open"></cds-icon>
107
- <span class="clr-file-input-browse-button-text">
108
- {{ fileInput?.selection?.buttonLabel || customButtonLabel || commonStrings.keys.browse }}
109
- </span>
179
+ <span class="clr-file-input-browse-button-text">{{ browseButtonText }}</span>
110
180
  </button>
111
181
  <button
112
- *ngIf="fileInput?.selection?.fileCount"
182
+ *ngIf="!fileList && fileInput?.selection?.fileCount"
113
183
  type="button"
114
184
  class="btn btn-sm clr-file-input-clear-button"
115
185
  [attr.aria-label]="fileInput?.selection?.clearFilesButtonLabel"
@@ -135,6 +205,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
135
205
  <ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
136
206
  <ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
137
207
  <ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
208
+
209
+ <!-- If this is present, this file input becomes an "advanced" file input. -->
210
+ <ng-container>
211
+ <div class="clr-file-list-break"></div>
212
+ <ng-content select="clr-file-list"></ng-content>
213
+ </ng-container>
138
214
  </div>
139
215
  `,
140
216
  host: {
@@ -150,8 +226,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
150
226
  }], fileInput: [{
151
227
  type: ContentChild,
152
228
  args: [forwardRef(() => ClrFileInput)]
229
+ }], fileList: [{
230
+ type: ContentChild,
231
+ args: [forwardRef(() => ClrFileList)]
153
232
  }], browseButtonElementRef: [{
154
233
  type: ViewChild,
155
234
  args: ['browseButton']
235
+ }], fileListFileInputElementRef: [{
236
+ type: ViewChild,
237
+ args: ['fileListFileInput']
238
+ }], fileSuccessComponent: [{
239
+ type: ContentChild,
240
+ args: [ClrFileSuccess]
241
+ }], fileErrorComponent: [{
242
+ type: ContentChild,
243
+ args: [ClrFileError]
156
244
  }] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9maWxlLWlucHV0L2ZpbGUtaW5wdXQtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQWMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBMkQ1QyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsb0JBQW9CO0lBekQvRDs7UUE0RHFCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7S0F3QnBFO0lBbEJDLElBQWMsUUFBUTtRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQWMsdUJBQXVCO1FBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztJQUM3RyxDQUFDO0lBRVMsTUFBTTtRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhILElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEQsQ0FBQzs7a0hBMUJVLHFCQUFxQjtzR0FBckIscUJBQXFCLG9RQUZyQixDQUFDLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixDQUFDLG9HQU81RCxZQUFZLG1NQTVEakM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NUOzJGQVFVLHFCQUFxQjtrQkF6RGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStDVDtvQkFDRCxJQUFJLEVBQUU7d0JBQ0osMEJBQTBCLEVBQUUsTUFBTTt3QkFDbEMsbUNBQW1DLEVBQUUsVUFBVTt3QkFDL0MsaUJBQWlCLEVBQUUsV0FBVztxQkFDL0I7b0JBQ0QsU0FBUyxFQUFFLENBQUMscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUM7aUJBQzVGOzhCQUUwQixpQkFBaUI7c0JBQXpDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUkwQyxTQUFTO3NCQUF6RSxZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBRVQsc0JBQXNCO3NCQUF4RCxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjQgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBpbmplY3QsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyQWJzdHJhY3RDb250YWluZXIgfSBmcm9tICcuLi9jb21tb24vYWJzdHJhY3QtY29udGFpbmVyJztcbmltcG9ydCB7IElmQ29udHJvbFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9pZi1jb250cm9sLXN0YXRlL2lmLWNvbnRyb2wtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sQ2xhc3NTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9jb250cm9sLWNsYXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udHJvbElkU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9wcm92aWRlcnMvY29udHJvbC1pZC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL25nLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJGaWxlSW5wdXQgfSBmcm9tICcuL2ZpbGUtaW5wdXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItZmlsZS1pbnB1dC1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImxhYmVsXCI+PC9uZy1jb250ZW50PlxuICAgIDxsYWJlbCAqbmdJZj1cIiFsYWJlbCAmJiBhZGRHcmlkKClcIj48L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjbHItY29udHJvbC1jb250YWluZXJcIiBbbmdDbGFzc109XCJjb250cm9sQ2xhc3MoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNsci1maWxlLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NsckZpbGVJbnB1dF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAjYnJvd3NlQnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGNsci1maWxlLWlucHV0LWJyb3dzZS1idXR0b25cIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYnJvd3NlQnV0dG9uRGVzY3JpYmVkQnlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImJyb3dzZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjZHMtaWNvbiBzaGFwZT1cImZvbGRlci1vcGVuXCI+PC9jZHMtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNsci1maWxlLWlucHV0LWJyb3dzZS1idXR0b24tdGV4dFwiPlxuICAgICAgICAgICAge3sgZmlsZUlucHV0Py5zZWxlY3Rpb24/LmJ1dHRvbkxhYmVsIHx8IGN1c3RvbUJ1dHRvbkxhYmVsIHx8IGNvbW1vblN0cmluZ3Mua2V5cy5icm93c2UgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJmaWxlSW5wdXQ/LnNlbGVjdGlvbj8uZmlsZUNvdW50XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gY2xyLWZpbGUtaW5wdXQtY2xlYXItYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpbGVJbnB1dD8uc2VsZWN0aW9uPy5jbGVhckZpbGVzQnV0dG9uTGFiZWxcIlxuICAgICAgICAgIChjbGljayk9XCJjbGVhclNlbGVjdGVkRmlsZXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJ0aW1lc1wiIHN0YXR1cz1cIm5ldXRyYWxcIiBzaXplPVwibWRcIj48L2Nkcy1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGNkcy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJzaG93SW52YWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJjbHItdmFsaWRhdGUtaWNvblwiXG4gICAgICAgICAgc2hhcGU9XCJleGNsYW1hdGlvbi1jaXJjbGVcIlxuICAgICAgICAgIHN0YXR1cz1cImRhbmdlclwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICAgIDxjZHMtaWNvblxuICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cImNsci12YWxpZGF0ZS1pY29uXCJcbiAgICAgICAgICBzaGFwZT1cImNoZWNrLWNpcmNsZVwiXG4gICAgICAgICAgc3RhdHVzPVwic3VjY2Vzc1wiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWhlbHBlclwiICpuZ0lmPVwic2hvd0hlbHBlclwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWVycm9yXCIgKm5nSWY9XCJzaG93SW52YWxpZFwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLXN1Y2Nlc3NcIiAqbmdJZj1cInNob3dWYWxpZFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuY2xyLWZvcm0tY29udHJvbF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5jbHItcm93XSc6ICdhZGRHcmlkKCknLFxuICB9LFxuICBwcm92aWRlcnM6IFtJZkNvbnRyb2xTdGF0ZVNlcnZpY2UsIE5nQ29udHJvbFNlcnZpY2UsIENvbnRyb2xJZFNlcnZpY2UsIENvbnRyb2xDbGFzc1NlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJGaWxlSW5wdXRDb250YWluZXIgZXh0ZW5kcyBDbHJBYnN0cmFjdENvbnRhaW5lciB7XG4gIEBJbnB1dCgnY2xyQnV0dG9uTGFiZWwnKSBjdXN0b21CdXR0b25MYWJlbDogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb21tb25TdHJpbmdzID0gaW5qZWN0KENsckNvbW1vblN0cmluZ3NTZXJ2aWNlKTtcblxuICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gQ2xyRmlsZUlucHV0KSkgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbGVJbnB1dDogQ2xyRmlsZUlucHV0O1xuXG4gIEBWaWV3Q2hpbGQoJ2Jyb3dzZUJ1dHRvbicpIHByaXZhdGUgYnJvd3NlQnV0dG9uRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgcHJvdGVjdGVkIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5maWxlSW5wdXQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmRpc2FibGVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBicm93c2VCdXR0b25EZXNjcmliZWRCeSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbD8uaWRBdHRyfSAke3RoaXMuZmlsZUlucHV0LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJyb3dzZSgpIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhclNlbGVjdGVkRmlsZXMoKSB7XG4gICAgdGhpcy5maWxlSW5wdXQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5maWxlSW5wdXQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSkpO1xuXG4gICAgdGhpcy5icm93c2VCdXR0b25FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxufVxuIl19
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9maWxlLWlucHV0L2ZpbGUtaW5wdXQtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQWMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUE4RS9ELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxvQkFBb0I7SUE1RS9EOztRQXlGbUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztLQW9FbEU7SUFsRUMsSUFBYyxNQUFNO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0s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QUFxQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixDQUFDLG9HQUs1RCxZQUFZLGtIQUNaLFdBQVcsMkZBTTVCLGNBQWMscUZBQ2QsWUFBWSxrVEFyRmhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRVQ7MkZBUVUscUJBQXFCO2tCQTVFakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtFVDtvQkFDRCxJQUFJLEVBQUU7d0JBQ0osMEJBQTBCLEVBQUUsTUFBTTt3QkFDbEMsbUNBQW1DLEVBQUUsVUFBVTt3QkFDL0MsaUJBQWlCLEVBQUUsV0FBVztxQkFDL0I7b0JBQ0QsU0FBUyxFQUFFLENBQUMscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUM7aUJBQzVGOzhCQUUwQixpQkFBaUI7c0JBQXpDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUVnQyxTQUFTO3NCQUEvRCxZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ29CLFFBQVE7c0JBQXZFLFlBQVk7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztnQkFFUixzQkFBc0I7c0JBQXhELFNBQVM7dUJBQUMsY0FBYztnQkFDZSwyQkFBMkI7c0JBQWxFLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUdpQixvQkFBb0I7c0JBQWxFLFlBQVk7dUJBQUMsY0FBYztnQkFDaUIsa0JBQWtCO3NCQUE5RCxZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBpbmplY3QsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyQWJzdHJhY3RDb250YWluZXIgfSBmcm9tICcuLi9jb21tb24vYWJzdHJhY3QtY29udGFpbmVyJztcbmltcG9ydCB7IElmQ29udHJvbFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9pZi1jb250cm9sLXN0YXRlL2lmLWNvbnRyb2wtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sQ2xhc3NTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9jb250cm9sLWNsYXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udHJvbElkU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9wcm92aWRlcnMvY29udHJvbC1pZC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL25nLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJGaWxlSW5wdXQgfSBmcm9tICcuL2ZpbGUtaW5wdXQnO1xuaW1wb3J0IHsgc2VsZWN0RmlsZXMgfSBmcm9tICcuL2ZpbGUtaW5wdXQuaGVscGVycyc7XG5pbXBvcnQgeyBDbHJGaWxlTGlzdCB9IGZyb20gJy4vZmlsZS1saXN0JztcbmltcG9ydCB7IENsckZpbGVFcnJvciwgQ2xyRmlsZVN1Y2Nlc3MgfSBmcm9tICcuL2ZpbGUtbWVzc2FnZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItZmlsZS1pbnB1dC1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImxhYmVsXCI+PC9uZy1jb250ZW50PlxuICAgIDxsYWJlbCAqbmdJZj1cIiFsYWJlbCAmJiBhZGRHcmlkKClcIj48L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjbHItY29udHJvbC1jb250YWluZXJcIiBbbmdDbGFzc109XCJjb250cm9sQ2xhc3MoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNsci1maWxlLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NsckZpbGVJbnB1dF1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPCEtLSBmaWxlIGlucHV0IHRvIGhhbmRsZSBhZGRpbmcgbmV3IGZpbGVzIHRvIHNlbGVjdGlvbiB3aGVuIGZpbGUgbGlzdCBpcyBwcmVzZW50IChwcmV2ZW50IHJlcGxhY2luZyBzZWxlY3RlZCBmaWxlcyBvbiB0aGUgbWFpbiBmaWxlIGlucHV0KSAtLT5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgKm5nSWY9XCJmaWxlTGlzdFwiXG4gICAgICAgICAgI2ZpbGVMaXN0RmlsZUlucHV0XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIGNsYXNzPVwiY2xyLWZpbGUtaW5wdXRcIlxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cImFkZEZpbGVzVG9TZWxlY3Rpb24oZmlsZUxpc3RGaWxlSW5wdXQuZmlsZXMpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgI2Jyb3dzZUJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBjbHItZmlsZS1pbnB1dC1icm93c2UtYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJyb3dzZUJ1dHRvbkRlc2NyaWJlZEJ5XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJicm93c2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJmb2xkZXItb3BlblwiPjwvY2RzLWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjbHItZmlsZS1pbnB1dC1icm93c2UtYnV0dG9uLXRleHRcIj57eyBicm93c2VCdXR0b25UZXh0IH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiIWZpbGVMaXN0ICYmIGZpbGVJbnB1dD8uc2VsZWN0aW9uPy5maWxlQ291bnRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBjbHItZmlsZS1pbnB1dC1jbGVhci1idXR0b25cIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlsZUlucHV0Py5zZWxlY3Rpb24/LmNsZWFyRmlsZXNCdXR0b25MYWJlbFwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWRGaWxlcygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjZHMtaWNvbiBzaGFwZT1cInRpbWVzXCIgc3RhdHVzPVwibmV1dHJhbFwiIHNpemU9XCJtZFwiPjwvY2RzLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8Y2RzLWljb25cbiAgICAgICAgICAqbmdJZj1cInNob3dJbnZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cImNsci12YWxpZGF0ZS1pY29uXCJcbiAgICAgICAgICBzaGFwZT1cImV4Y2xhbWF0aW9uLWNpcmNsZVwiXG4gICAgICAgICAgc3RhdHVzPVwiZGFuZ2VyXCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+PC9jZHMtaWNvbj5cbiAgICAgICAgPGNkcy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJzaG93VmFsaWRcIlxuICAgICAgICAgIGNsYXNzPVwiY2xyLXZhbGlkYXRlLWljb25cIlxuICAgICAgICAgIHNoYXBlPVwiY2hlY2stY2lyY2xlXCJcbiAgICAgICAgICBzdGF0dXM9XCJzdWNjZXNzXCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+PC9jZHMtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2xyLWNvbnRyb2wtaGVscGVyXCIgKm5nSWY9XCJzaG93SGVscGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2xyLWNvbnRyb2wtZXJyb3JcIiAqbmdJZj1cInNob3dJbnZhbGlkXCI+PC9uZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2xyLWNvbnRyb2wtc3VjY2Vzc1wiICpuZ0lmPVwic2hvd1ZhbGlkXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICA8IS0tIElmIHRoaXMgaXMgcHJlc2VudCwgdGhpcyBmaWxlIGlucHV0IGJlY29tZXMgYW4gXCJhZHZhbmNlZFwiIGZpbGUgaW5wdXQuIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNsci1maWxlLWxpc3QtYnJlYWtcIj48L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2xyLWZpbGUtbGlzdFwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5jbHItZm9ybS1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnW2NsYXNzLmNsci1yb3ddJzogJ2FkZEdyaWQoKScsXG4gIH0sXG4gIHByb3ZpZGVyczogW0lmQ29udHJvbFN0YXRlU2VydmljZSwgTmdDb250cm9sU2VydmljZSwgQ29udHJvbElkU2VydmljZSwgQ29udHJvbENsYXNzU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIENsckZpbGVJbnB1dENvbnRhaW5lciBleHRlbmRzIENsckFic3RyYWN0Q29udGFpbmVyIHtcbiAgQElucHV0KCdjbHJCdXR0b25MYWJlbCcpIGN1c3RvbUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IENsckZpbGVJbnB1dCkpIHJlYWRvbmx5IGZpbGVJbnB1dDogQ2xyRmlsZUlucHV0O1xuICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gQ2xyRmlsZUxpc3QpKSBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsZUxpc3Q6IENsckZpbGVMaXN0O1xuXG4gIEBWaWV3Q2hpbGQoJ2Jyb3dzZUJ1dHRvbicpIHByaXZhdGUgYnJvd3NlQnV0dG9uRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVMaXN0RmlsZUlucHV0JykgcHJpdmF0ZSBmaWxlTGlzdEZpbGVJbnB1dEVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgLy8gVGhlc2UgYXJlIGZvciB0aGUgXCJtZXNzYWdlIHByZXNlbnRcIiBvdmVycmlkZSBwcm9wZXJ0aWVzXG4gIEBDb250ZW50Q2hpbGQoQ2xyRmlsZVN1Y2Nlc3MpIHByaXZhdGUgcmVhZG9ubHkgZmlsZVN1Y2Nlc3NDb21wb25lbnQ6IENsckZpbGVTdWNjZXNzO1xuICBAQ29udGVudENoaWxkKENsckZpbGVFcnJvcikgcHJpdmF0ZSByZWFkb25seSBmaWxlRXJyb3JDb21wb25lbnQ6IENsckZpbGVFcnJvcjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbW1vblN0cmluZ3MgPSBpbmplY3QoQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBnZXQgYWNjZXB0KCkge1xuICAgIHJldHVybiB0aGlzLmZpbGVJbnB1dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWNjZXB0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBtdWx0aXBsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWxlSW5wdXQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm11bHRpcGxlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5maWxlSW5wdXQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmRpc2FibGVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBicm93c2VCdXR0b25UZXh0KCkge1xuICAgIGNvbnN0IHNlbGVjdGlvbkJ1dHRvbkxhYmVsID0gdGhpcy5maWxlTGlzdCA/IHVuZGVmaW5lZCA6IHRoaXMuZmlsZUlucHV0Py5zZWxlY3Rpb24/LmJ1dHRvbkxhYmVsO1xuXG4gICAgcmV0dXJuIHNlbGVjdGlvbkJ1dHRvbkxhYmVsIHx8IHRoaXMuY3VzdG9tQnV0dG9uTGFiZWwgfHwgdGhpcy5jb21tb25TdHJpbmdzLmtleXMuYnJvd3NlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBicm93c2VCdXR0b25EZXNjcmliZWRCeSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbD8uZm9yQXR0cn0gJHt0aGlzLmZpbGVJbnB1dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyl9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBnZXQgc3VjY2Vzc01lc3NhZ2VQcmVzZW50KCkge1xuICAgIHJldHVybiBzdXBlci5zdWNjZXNzTWVzc2FnZVByZXNlbnQgfHwgISF0aGlzLmZpbGVTdWNjZXNzQ29tcG9uZW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldCBlcnJvck1lc3NhZ2VQcmVzZW50KCkge1xuICAgIHJldHVybiBzdXBlci5lcnJvck1lc3NhZ2VQcmVzZW50IHx8ICEhdGhpcy5maWxlRXJyb3JDb21wb25lbnQ7XG4gIH1cblxuICBmb2N1c0Jyb3dzZUJ1dHRvbigpIHtcbiAgICB0aGlzLmJyb3dzZUJ1dHRvbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJyb3dzZSgpIHtcbiAgICBjb25zdCBmaWxlSW5wdXRFbGVtZW50UmVmID1cbiAgICAgIHRoaXMuZmlsZUxpc3QgJiYgdGhpcy5tdWx0aXBsZSA/IHRoaXMuZmlsZUxpc3RGaWxlSW5wdXRFbGVtZW50UmVmIDogdGhpcy5maWxlSW5wdXQuZWxlbWVudFJlZjtcblxuICAgIGZpbGVJbnB1dEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFyU2VsZWN0ZWRGaWxlcygpIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLmZpbGVJbnB1dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KSk7XG5cbiAgICB0aGlzLmZvY3VzQnJvd3NlQnV0dG9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkRmlsZXNUb1NlbGVjdGlvbihuZXdGaWxlczogRmlsZUxpc3QpIHtcbiAgICBpZiAoIW5ld0ZpbGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHN0YXJ0IHdpdGggbmV3IGZpbGVzXG4gICAgY29uc3QgbWVyZ2VkRmlsZXMgPSBbLi4ubmV3RmlsZXNdO1xuXG4gICAgLy8gYWRkIGV4aXN0aW5nIGZpbGVzIGlmIGEgbmV3IGZpbGUgZG9lc24ndCBoYXZlIHRoZSBzYW1lIG5hbWVcbiAgICBmb3IgKGNvbnN0IGV4aXN0aW5nRmlsZSBvZiB0aGlzLmZpbGVJbnB1dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZmlsZXMpIHtcbiAgICAgIGlmICghbWVyZ2VkRmlsZXMuc29tZShmaWxlID0+IGZpbGUubmFtZSA9PT0gZXhpc3RpbmdGaWxlLm5hbWUpKSB7XG4gICAgICAgIG1lcmdlZEZpbGVzLnB1c2goZXhpc3RpbmdGaWxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgZmlsZSBzZWxlY3Rpb25cbiAgICBzZWxlY3RGaWxlcyh0aGlzLmZpbGVJbnB1dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG1lcmdlZEZpbGVzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,8 @@
1
+ /*
2
+ * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
3
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
4
+ * This software is released under MIT license.
5
+ * The full license information can be found in LICENSE in the root directory of this project.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC12YWxpZGF0b3ItZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvZmlsZS1pbnB1dC9maWxlLWlucHV0LXZhbGlkYXRvci1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xyRmlsZUxpc3RWYWxpZGF0aW9uRXJyb3JzIHtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBhY2NlcHQ/OiBDbHJGaWxlQWNjZXB0RXJyb3JbXTtcbiAgbWluRmlsZVNpemU/OiBDbHJGaWxlTWluRmlsZVNpemVFcnJvcltdO1xuICBtYXhGaWxlU2l6ZT86IENsckZpbGVNYXhGaWxlU2l6ZUVycm9yW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xyRmlsZUFjY2VwdEVycm9yIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZWxlY3RlZCBmaWxlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSB0eXBlcyB0aGF0IGFyZSBhY2NlcHRlZCBieSB0aGUgZmlsZSBpbnB1dC5cbiAgICovXG4gIGFjY2VwdDogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBhY3R1YWwgTUlNRSB0eXBlIG9mIHRoZSBzZWxlY3RlZCBmaWxlLlxuICAgKi9cbiAgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0dWFsIGV4dGVuc2lvbiBvZiB0aGUgc2VsZWN0ZWQgZmlsZS5cbiAgICovXG4gIGV4dGVuc2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsckZpbGVNaW5GaWxlU2l6ZUVycm9yIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZWxlY3RlZCBmaWxlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBmaWxlIHNpemUgdGhhdCBpcyBhY2NlcHRlZCBieSB0aGUgZmlsZSBpbnB1dC5cbiAgICovXG4gIG1pbkZpbGVTaXplOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgc2VsZWN0ZWQgZmlsZS5cbiAgICovXG4gIGFjdHVhbEZpbGVTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xyRmlsZU1heEZpbGVTaXplRXJyb3Ige1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGZpbGUuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGZpbGUgc2l6ZSB0aGF0IGlzIGFjY2VwdGVkIGJ5IHRoZSBmaWxlIGlucHV0LlxuICAgKi9cbiAgbWF4RmlsZVNpemU6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFjdHVhbCBzaXplIG9mIHRoZSBzZWxlY3RlZCBmaWxlLlxuICAgKi9cbiAgYWN0dWFsRmlsZVNpemU6IG51bWJlcjtcbn1cbiJdfQ==