@clr/angular 17.13.0 → 18.0.0-beta.10

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 (1195) hide show
  1. package/README.md +1 -5
  2. package/fesm2022/clr-angular-accordion.mjs +355 -0
  3. package/fesm2022/clr-angular-accordion.mjs.map +1 -0
  4. package/fesm2022/clr-angular-button.mjs +713 -0
  5. package/fesm2022/clr-angular-button.mjs.map +1 -0
  6. package/fesm2022/clr-angular-collapsible-panel.mjs +201 -0
  7. package/fesm2022/clr-angular-collapsible-panel.mjs.map +1 -0
  8. package/fesm2022/clr-angular-data-datagrid.mjs +7593 -0
  9. package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -0
  10. package/fesm2022/clr-angular-data-stack-view.mjs +442 -0
  11. package/fesm2022/clr-angular-data-stack-view.mjs.map +1 -0
  12. package/fesm2022/clr-angular-data-tree-view.mjs +1106 -0
  13. package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -0
  14. package/fesm2022/clr-angular-data.mjs +40 -0
  15. package/fesm2022/clr-angular-data.mjs.map +1 -0
  16. package/fesm2022/clr-angular-emphasis-alert.mjs +624 -0
  17. package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -0
  18. package/fesm2022/clr-angular-emphasis-badge.mjs +69 -0
  19. package/fesm2022/clr-angular-emphasis-badge.mjs.map +1 -0
  20. package/fesm2022/clr-angular-emphasis-common.mjs +25 -0
  21. package/fesm2022/clr-angular-emphasis-common.mjs.map +1 -0
  22. package/fesm2022/clr-angular-emphasis-label.mjs +105 -0
  23. package/fesm2022/clr-angular-emphasis-label.mjs.map +1 -0
  24. package/fesm2022/clr-angular-emphasis.mjs +41 -0
  25. package/fesm2022/clr-angular-emphasis.mjs.map +1 -0
  26. package/fesm2022/clr-angular-forms-checkbox.mjs +270 -0
  27. package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -0
  28. package/fesm2022/clr-angular-forms-combobox.mjs +1775 -0
  29. package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -0
  30. package/fesm2022/clr-angular-forms-common.mjs +1240 -0
  31. package/fesm2022/clr-angular-forms-common.mjs.map +1 -0
  32. package/fesm2022/clr-angular-forms-datalist.mjs +263 -0
  33. package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -0
  34. package/fesm2022/clr-angular-forms-datepicker.mjs +3222 -0
  35. package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -0
  36. package/fesm2022/clr-angular-forms-file-input.mjs +826 -0
  37. package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -0
  38. package/fesm2022/clr-angular-forms-input.mjs +153 -0
  39. package/fesm2022/clr-angular-forms-input.mjs.map +1 -0
  40. package/fesm2022/clr-angular-forms-number-input.mjs +237 -0
  41. package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -0
  42. package/fesm2022/clr-angular-forms-password.mjs +233 -0
  43. package/fesm2022/clr-angular-forms-password.mjs.map +1 -0
  44. package/fesm2022/clr-angular-forms-radio.mjs +231 -0
  45. package/fesm2022/clr-angular-forms-radio.mjs.map +1 -0
  46. package/fesm2022/clr-angular-forms-range.mjs +186 -0
  47. package/fesm2022/clr-angular-forms-range.mjs.map +1 -0
  48. package/fesm2022/clr-angular-forms-select.mjs +153 -0
  49. package/fesm2022/clr-angular-forms-select.mjs.map +1 -0
  50. package/fesm2022/clr-angular-forms-textarea.mjs +136 -0
  51. package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -0
  52. package/fesm2022/clr-angular-forms.mjs +100 -0
  53. package/fesm2022/clr-angular-forms.mjs.map +1 -0
  54. package/fesm2022/clr-angular-icon.mjs +7397 -0
  55. package/fesm2022/clr-angular-icon.mjs.map +1 -0
  56. package/fesm2022/clr-angular-layout-breadcrumbs.mjs +120 -0
  57. package/fesm2022/clr-angular-layout-breadcrumbs.mjs.map +1 -0
  58. package/fesm2022/clr-angular-layout-main-container.mjs +100 -0
  59. package/fesm2022/clr-angular-layout-main-container.mjs.map +1 -0
  60. package/fesm2022/clr-angular-layout-nav.mjs +582 -0
  61. package/fesm2022/clr-angular-layout-nav.mjs.map +1 -0
  62. package/fesm2022/clr-angular-layout-tabs.mjs +807 -0
  63. package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -0
  64. package/fesm2022/clr-angular-layout-vertical-nav.mjs +507 -0
  65. package/fesm2022/clr-angular-layout-vertical-nav.mjs.map +1 -0
  66. package/fesm2022/clr-angular-layout.mjs +44 -0
  67. package/fesm2022/clr-angular-layout.mjs.map +1 -0
  68. package/fesm2022/clr-angular-modal.mjs +617 -0
  69. package/fesm2022/clr-angular-modal.mjs.map +1 -0
  70. package/fesm2022/clr-angular-popover-common.mjs +1093 -0
  71. package/fesm2022/clr-angular-popover-common.mjs.map +1 -0
  72. package/fesm2022/clr-angular-popover-dropdown.mjs +492 -0
  73. package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -0
  74. package/fesm2022/clr-angular-popover-signpost.mjs +493 -0
  75. package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -0
  76. package/fesm2022/clr-angular-popover-tooltip.mjs +293 -0
  77. package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -0
  78. package/fesm2022/clr-angular-popover.mjs +41 -0
  79. package/fesm2022/clr-angular-popover.mjs.map +1 -0
  80. package/fesm2022/clr-angular-progress-progress-bars.mjs +217 -0
  81. package/fesm2022/clr-angular-progress-progress-bars.mjs.map +1 -0
  82. package/fesm2022/clr-angular-progress-spinner.mjs +132 -0
  83. package/fesm2022/clr-angular-progress-spinner.mjs.map +1 -0
  84. package/fesm2022/clr-angular-stepper.mjs +688 -0
  85. package/fesm2022/clr-angular-stepper.mjs.map +1 -0
  86. package/fesm2022/clr-angular-timeline.mjs +316 -0
  87. package/fesm2022/clr-angular-timeline.mjs.map +1 -0
  88. package/fesm2022/clr-angular-utils-conditional.mjs +351 -0
  89. package/fesm2022/clr-angular-utils-conditional.mjs.map +1 -0
  90. package/fesm2022/clr-angular-utils-loading.mjs +107 -0
  91. package/fesm2022/clr-angular-utils-loading.mjs.map +1 -0
  92. package/fesm2022/clr-angular-utils.mjs +2079 -0
  93. package/fesm2022/clr-angular-utils.mjs.map +1 -0
  94. package/fesm2022/clr-angular-wizard.mjs +3074 -0
  95. package/fesm2022/clr-angular-wizard.mjs.map +1 -0
  96. package/fesm2022/clr-angular.mjs +125 -0
  97. package/fesm2022/clr-angular.mjs.map +1 -0
  98. package/package.json +202 -18
  99. package/popover/common/README.md +112 -0
  100. package/schematics/collection.json +14 -0
  101. package/schematics/ng-update/index.d.ts +2 -0
  102. package/schematics/ng-update/index.js +69 -0
  103. package/schematics/ng-update/index.js.map +1 -0
  104. package/schematics/ng-update/migrations/css-migration.d.ts +6 -0
  105. package/schematics/ng-update/migrations/css-migration.js +177 -0
  106. package/schematics/ng-update/migrations/css-migration.js.map +1 -0
  107. package/schematics/ng-update/migrations/import-migration.d.ts +4 -0
  108. package/schematics/ng-update/migrations/import-migration.js +187 -0
  109. package/schematics/ng-update/migrations/import-migration.js.map +1 -0
  110. package/schematics/ng-update/migrations/template-migration.d.ts +6 -0
  111. package/schematics/ng-update/migrations/template-migration.js +261 -0
  112. package/schematics/ng-update/migrations/template-migration.js.map +1 -0
  113. package/schematics/ng-update/replacements/css-replacements.d.ts +17 -0
  114. package/schematics/ng-update/replacements/css-replacements.js +74 -0
  115. package/schematics/ng-update/replacements/css-replacements.js.map +1 -0
  116. package/schematics/ng-update/replacements/import-replacements.d.ts +13 -0
  117. package/schematics/ng-update/replacements/import-replacements.js +108 -0
  118. package/schematics/ng-update/replacements/import-replacements.js.map +1 -0
  119. package/schematics/ng-update/replacements/symbol-replacements.d.ts +12 -0
  120. package/schematics/ng-update/replacements/symbol-replacements.js +67 -0
  121. package/schematics/ng-update/replacements/symbol-replacements.js.map +1 -0
  122. package/schematics/ng-update/replacements/template-replacements.d.ts +19 -0
  123. package/schematics/ng-update/replacements/template-replacements.js +57 -0
  124. package/schematics/ng-update/replacements/template-replacements.js.map +1 -0
  125. package/schematics/ng-update/tests/test-helpers.d.ts +6 -0
  126. package/schematics/ng-update/tests/test-helpers.js +34 -0
  127. package/schematics/ng-update/tests/test-helpers.js.map +1 -0
  128. package/schematics/ng-update/utils/file-visitor.d.ts +8 -0
  129. package/schematics/ng-update/utils/file-visitor.js +44 -0
  130. package/schematics/ng-update/utils/file-visitor.js.map +1 -0
  131. package/schematics/ng-update/utils/regexp-utils.d.ts +16 -0
  132. package/schematics/ng-update/utils/regexp-utils.js +34 -0
  133. package/schematics/ng-update/utils/regexp-utils.js.map +1 -0
  134. package/schematics/vitest.config.d.ts +2 -0
  135. package/schematics/vitest.config.js +17 -0
  136. package/schematics/vitest.config.js.map +1 -0
  137. package/types/clr-angular-accordion.d.ts +100 -0
  138. package/types/clr-angular-button.d.ts +169 -0
  139. package/types/clr-angular-collapsible-panel.d.ts +73 -0
  140. package/types/clr-angular-data-datagrid.d.ts +1840 -0
  141. package/types/clr-angular-data-stack-view.d.ts +87 -0
  142. package/types/clr-angular-data-tree-view.d.ts +229 -0
  143. package/types/clr-angular-data.d.ts +15 -0
  144. package/types/clr-angular-emphasis-alert.d.ts +175 -0
  145. package/types/clr-angular-emphasis-badge.d.ts +25 -0
  146. package/types/clr-angular-emphasis-common.d.ts +6 -0
  147. package/types/clr-angular-emphasis-label.d.ts +29 -0
  148. package/types/clr-angular-emphasis.d.ts +15 -0
  149. package/types/clr-angular-forms-checkbox.d.ts +69 -0
  150. package/types/clr-angular-forms-combobox.d.ts +353 -0
  151. package/types/clr-angular-forms-common.d.ts +336 -0
  152. package/types/clr-angular-forms-datalist.d.ts +59 -0
  153. package/types/clr-angular-forms-datepicker.d.ts +958 -0
  154. package/types/clr-angular-forms-file-input.d.ts +193 -0
  155. package/types/clr-angular-forms-input.d.ts +29 -0
  156. package/types/clr-angular-forms-number-input.d.ts +43 -0
  157. package/types/clr-angular-forms-password.d.ts +52 -0
  158. package/types/clr-angular-forms-radio.d.ts +50 -0
  159. package/types/clr-angular-forms-range.d.ts +37 -0
  160. package/types/clr-angular-forms-select.d.ts +36 -0
  161. package/types/clr-angular-forms-textarea.d.ts +29 -0
  162. package/types/clr-angular-forms.d.ts +36 -0
  163. package/types/clr-angular-icon.d.ts +1498 -0
  164. package/types/clr-angular-layout-breadcrumbs.d.ts +45 -0
  165. package/types/clr-angular-layout-main-container.d.ts +28 -0
  166. package/types/clr-angular-layout-nav.d.ts +142 -0
  167. package/types/clr-angular-layout-tabs.d.ts +158 -0
  168. package/types/clr-angular-layout-vertical-nav.d.ts +128 -0
  169. package/types/clr-angular-layout.d.ts +19 -0
  170. package/types/clr-angular-modal.d.ts +160 -0
  171. package/types/clr-angular-popover-common.d.ts +255 -0
  172. package/types/clr-angular-popover-dropdown.d.ts +123 -0
  173. package/types/clr-angular-popover-signpost.d.ts +157 -0
  174. package/types/clr-angular-popover-tooltip.d.ts +83 -0
  175. package/types/clr-angular-popover.d.ts +16 -0
  176. package/types/clr-angular-progress-progress-bars.d.ts +57 -0
  177. package/types/clr-angular-progress-spinner.d.ts +44 -0
  178. package/types/clr-angular-stepper.d.ts +179 -0
  179. package/types/clr-angular-timeline.d.ts +86 -0
  180. package/types/clr-angular-utils-conditional.d.ts +132 -0
  181. package/types/clr-angular-utils-loading.d.ts +38 -0
  182. package/types/clr-angular-utils.d.ts +913 -0
  183. package/types/clr-angular-wizard.d.ts +1508 -0
  184. package/types/clr-angular.d.ts +41 -0
  185. package/accordion/accordion-content.d.ts +0 -5
  186. package/accordion/accordion-description.d.ts +0 -5
  187. package/accordion/accordion-panel.d.ts +0 -45
  188. package/accordion/accordion-title.d.ts +0 -5
  189. package/accordion/accordion.d.ts +0 -20
  190. package/accordion/accordion.module.d.ts +0 -16
  191. package/accordion/chocolate/accordion-oompa-loompa.d.ts +0 -12
  192. package/accordion/chocolate/accordion-willy-wonka.d.ts +0 -6
  193. package/accordion/enums/accordion-status.enum.d.ts +0 -5
  194. package/accordion/enums/accordion-strategy.enum.d.ts +0 -4
  195. package/accordion/index.d.ts +0 -10
  196. package/accordion/models/accordion.model.d.ts +0 -27
  197. package/accordion/providers/accordion.service.d.ts +0 -17
  198. package/accordion/stepper/chocolate/stepper-oompa-loompa.d.ts +0 -12
  199. package/accordion/stepper/chocolate/stepper-willy-wonka.d.ts +0 -6
  200. package/accordion/stepper/index.d.ts +0 -4
  201. package/accordion/stepper/models/stepper.model.d.ts +0 -29
  202. package/accordion/stepper/providers/stepper.service.d.ts +0 -23
  203. package/accordion/stepper/step-button.d.ts +0 -21
  204. package/accordion/stepper/stepper-panel.d.ts +0 -28
  205. package/accordion/stepper/stepper.d.ts +0 -26
  206. package/accordion/stepper/stepper.module.d.ts +0 -14
  207. package/accordion/utils/animation.d.ts +0 -2
  208. package/button/button-group/button-group.d.ts +0 -60
  209. package/button/button-group/button-group.module.d.ts +0 -13
  210. package/button/button-group/button.d.ts +0 -40
  211. package/button/button-group/index.d.ts +0 -3
  212. package/button/button-loading/index.d.ts +0 -2
  213. package/button/button-loading/loading-button.d.ts +0 -17
  214. package/button/button-loading/loading-button.module.d.ts +0 -10
  215. package/button/button.module.d.ts +0 -9
  216. package/button/index.d.ts +0 -3
  217. package/button/providers/button-group-focus-handler.service.d.ts +0 -32
  218. package/button/providers/button-group-focus.enum.d.ts +0 -4
  219. package/button/providers/button-in-group.service.d.ts +0 -10
  220. package/clr-angular.module.d.ts +0 -25
  221. package/data/data.module.d.ts +0 -9
  222. package/data/datagrid/built-in/comparators/datagrid-property-comparator.d.ts +0 -7
  223. package/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.d.ts +0 -37
  224. package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +0 -58
  225. package/data/datagrid/built-in/filters/datagrid-property-numeric-filter.d.ts +0 -8
  226. package/data/datagrid/built-in/filters/datagrid-property-string-filter.d.ts +0 -8
  227. package/data/datagrid/built-in/filters/datagrid-string-filter-impl.d.ts +0 -39
  228. package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +0 -60
  229. package/data/datagrid/built-in/nested-property.d.ts +0 -10
  230. package/data/datagrid/chocolate/actionable-oompa-loompa.d.ts +0 -12
  231. package/data/datagrid/chocolate/datagrid-willy-wonka.d.ts +0 -6
  232. package/data/datagrid/chocolate/expandable-oompa-loompa.d.ts +0 -12
  233. package/data/datagrid/datagrid-action-bar.d.ts +0 -5
  234. package/data/datagrid/datagrid-action-overflow.d.ts +0 -28
  235. package/data/datagrid/datagrid-cell.d.ts +0 -21
  236. package/data/datagrid/datagrid-column-separator.d.ts +0 -36
  237. package/data/datagrid/datagrid-column-toggle-button.d.ts +0 -16
  238. package/data/datagrid/datagrid-column-toggle-trackby.d.ts +0 -6
  239. package/data/datagrid/datagrid-column-toggle.d.ts +0 -30
  240. package/data/datagrid/datagrid-column.d.ts +0 -92
  241. package/data/datagrid/datagrid-detail-body.d.ts +0 -5
  242. package/data/datagrid/datagrid-detail-header.d.ts +0 -14
  243. package/data/datagrid/datagrid-detail-registerer.d.ts +0 -9
  244. package/data/datagrid/datagrid-detail.d.ts +0 -17
  245. package/data/datagrid/datagrid-filter.d.ts +0 -40
  246. package/data/datagrid/datagrid-footer.d.ts +0 -17
  247. package/data/datagrid/datagrid-hideable-column.d.ts +0 -41
  248. package/data/datagrid/datagrid-if-detail.d.ts +0 -28
  249. package/data/datagrid/datagrid-if-expanded.service.d.ts +0 -18
  250. package/data/datagrid/datagrid-items.d.ts +0 -28
  251. package/data/datagrid/datagrid-page-size.d.ts +0 -13
  252. package/data/datagrid/datagrid-pagination.d.ts +0 -73
  253. package/data/datagrid/datagrid-placeholder.d.ts +0 -12
  254. package/data/datagrid/datagrid-row-detail.d.ts +0 -34
  255. package/data/datagrid/datagrid-row.d.ts +0 -109
  256. package/data/datagrid/datagrid-selection-cell.directive.d.ts +0 -9
  257. package/data/datagrid/datagrid-single-selection.directive.d.ts +0 -21
  258. package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +0 -80
  259. package/data/datagrid/datagrid.d.ts +0 -149
  260. package/data/datagrid/datagrid.module.d.ts +0 -60
  261. package/data/datagrid/enums/column-changes.enum.d.ts +0 -6
  262. package/data/datagrid/enums/display-mode.enum.d.ts +0 -4
  263. package/data/datagrid/enums/render-step.enum.d.ts +0 -7
  264. package/data/datagrid/enums/selection-type.d.ts +0 -5
  265. package/data/datagrid/enums/sort-order.enum.d.ts +0 -12
  266. package/data/datagrid/index.d.ts +0 -50
  267. package/data/datagrid/interfaces/column-state.interface.d.ts +0 -14
  268. package/data/datagrid/interfaces/comparator.interface.d.ts +0 -3
  269. package/data/datagrid/interfaces/filter.interface.d.ts +0 -8
  270. package/data/datagrid/interfaces/key-nav-grid-strategy.interface.d.ts +0 -11
  271. package/data/datagrid/interfaces/numeric-filter.interface.d.ts +0 -3
  272. package/data/datagrid/interfaces/state.interface.d.ts +0 -14
  273. package/data/datagrid/interfaces/string-filter.interface.d.ts +0 -3
  274. package/data/datagrid/interfaces/virtual-scroll-data-range.interface.d.ts +0 -5
  275. package/data/datagrid/providers/column-resizer.service.d.ts +0 -22
  276. package/data/datagrid/providers/column-state.provider.d.ts +0 -9
  277. package/data/datagrid/providers/columns.service.d.ts +0 -18
  278. package/data/datagrid/providers/custom-filter.d.ts +0 -2
  279. package/data/datagrid/providers/detail.service.d.ts +0 -28
  280. package/data/datagrid/providers/display-mode.service.d.ts +0 -14
  281. package/data/datagrid/providers/filters.d.ts +0 -44
  282. package/data/datagrid/providers/global-expandable-rows.d.ts +0 -16
  283. package/data/datagrid/providers/items.d.ts +0 -84
  284. package/data/datagrid/providers/page.d.ts +0 -62
  285. package/data/datagrid/providers/row-action-service.d.ts +0 -12
  286. package/data/datagrid/providers/selection.d.ts +0 -105
  287. package/data/datagrid/providers/sort.d.ts +0 -44
  288. package/data/datagrid/providers/state-debouncer.provider.d.ts +0 -14
  289. package/data/datagrid/providers/state.provider.d.ts +0 -24
  290. package/data/datagrid/providers/table-size.service.d.ts +0 -17
  291. package/data/datagrid/render/cell-renderer.d.ts +0 -18
  292. package/data/datagrid/render/constants.d.ts +0 -4
  293. package/data/datagrid/render/header-renderer.d.ts +0 -34
  294. package/data/datagrid/render/main-renderer.d.ts +0 -71
  295. package/data/datagrid/render/noop-dom-adapter.d.ts +0 -13
  296. package/data/datagrid/render/render-organizer.d.ts +0 -12
  297. package/data/datagrid/render/row-detail-renderer.d.ts +0 -11
  298. package/data/datagrid/render/row-renderer.d.ts +0 -17
  299. package/data/datagrid/utils/datagrid-filter-registrar.d.ts +0 -18
  300. package/data/datagrid/utils/key-navigation-grid.controller.d.ts +0 -32
  301. package/data/datagrid/utils/key-navigation-strategies/default.d.ts +0 -15
  302. package/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.d.ts +0 -12
  303. package/data/datagrid/utils/key-navigation-strategies/expanded-row.d.ts +0 -12
  304. package/data/datagrid/utils/key-navigation-utils.d.ts +0 -24
  305. package/data/datagrid/wrapped-cell.d.ts +0 -10
  306. package/data/datagrid/wrapped-column.d.ts +0 -10
  307. package/data/datagrid/wrapped-row.d.ts +0 -10
  308. package/data/index.d.ts +0 -4
  309. package/data/stack-view/index.d.ts +0 -6
  310. package/data/stack-view/stack-block.d.ts +0 -37
  311. package/data/stack-view/stack-content-input.d.ts +0 -6
  312. package/data/stack-view/stack-header.d.ts +0 -8
  313. package/data/stack-view/stack-view-custom-tags.d.ts +0 -15
  314. package/data/stack-view/stack-view.d.ts +0 -5
  315. package/data/stack-view/stack-view.module.d.ts +0 -18
  316. package/data/tree-view/index.d.ts +0 -6
  317. package/data/tree-view/models/async-array.d.ts +0 -3
  318. package/data/tree-view/models/declarative-tree-node.model.d.ts +0 -9
  319. package/data/tree-view/models/recursive-tree-node.model.d.ts +0 -18
  320. package/data/tree-view/models/selected-state.enum.d.ts +0 -5
  321. package/data/tree-view/models/tree-node.model.d.ts +0 -23
  322. package/data/tree-view/recursive-children.d.ts +0 -22
  323. package/data/tree-view/recursive-for-of.d.ts +0 -22
  324. package/data/tree-view/tree-features.service.d.ts +0 -22
  325. package/data/tree-view/tree-focus-manager.service.d.ts +0 -32
  326. package/data/tree-view/tree-node-link.d.ts +0 -10
  327. package/data/tree-view/tree-node.d.ts +0 -59
  328. package/data/tree-view/tree-view.module.d.ts +0 -17
  329. package/data/tree-view/tree.d.ts +0 -22
  330. package/emphasis/alert/alert-item.d.ts +0 -8
  331. package/emphasis/alert/alert-text.d.ts +0 -9
  332. package/emphasis/alert/alert.d.ts +0 -40
  333. package/emphasis/alert/alert.module.d.ts +0 -18
  334. package/emphasis/alert/alerts-pager.d.ts +0 -31
  335. package/emphasis/alert/alerts.d.ts +0 -32
  336. package/emphasis/alert/index.d.ts +0 -6
  337. package/emphasis/alert/providers/icon-and-types.service.d.ts +0 -18
  338. package/emphasis/alert/providers/multi-alert.service.d.ts +0 -28
  339. package/emphasis/alert/utils/alert-info-object.d.ts +0 -5
  340. package/emphasis/alert/utils/alert-types.d.ts +0 -1
  341. package/emphasis/emphasis.module.d.ts +0 -7
  342. package/emphasis/index.d.ts +0 -2
  343. package/esm2020/accordion/accordion-content.mjs +0 -21
  344. package/esm2020/accordion/accordion-description.mjs +0 -22
  345. package/esm2020/accordion/accordion-panel.mjs +0 -141
  346. package/esm2020/accordion/accordion-title.mjs +0 -22
  347. package/esm2020/accordion/accordion.mjs +0 -62
  348. package/esm2020/accordion/accordion.module.mjs +0 -56
  349. package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs +0 -34
  350. package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs +0 -20
  351. package/esm2020/accordion/enums/accordion-status.enum.mjs +0 -13
  352. package/esm2020/accordion/enums/accordion-strategy.enum.mjs +0 -12
  353. package/esm2020/accordion/index.mjs +0 -17
  354. package/esm2020/accordion/models/accordion.model.mjs +0 -61
  355. package/esm2020/accordion/providers/accordion.service.mjs +0 -48
  356. package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs +0 -34
  357. package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs +0 -20
  358. package/esm2020/accordion/stepper/index.mjs +0 -11
  359. package/esm2020/accordion/stepper/models/stepper.model.mjs +0 -146
  360. package/esm2020/accordion/stepper/providers/stepper.service.mjs +0 -75
  361. package/esm2020/accordion/stepper/step-button.mjs +0 -62
  362. package/esm2020/accordion/stepper/stepper-panel.mjs +0 -96
  363. package/esm2020/accordion/stepper/stepper.mjs +0 -105
  364. package/esm2020/accordion/stepper/stepper.module.mjs +0 -31
  365. package/esm2020/accordion/utils/animation.mjs +0 -31
  366. package/esm2020/button/button-group/button-group.mjs +0 -164
  367. package/esm2020/button/button-group/button-group.module.mjs +0 -28
  368. package/esm2020/button/button-group/button.mjs +0 -175
  369. package/esm2020/button/button-group/index.mjs +0 -10
  370. package/esm2020/button/button-loading/index.mjs +0 -9
  371. package/esm2020/button/button-loading/loading-button.mjs +0 -164
  372. package/esm2020/button/button-loading/loading-button.module.mjs +0 -25
  373. package/esm2020/button/button.module.mjs +0 -26
  374. package/esm2020/button/index.mjs +0 -10
  375. package/esm2020/button/providers/button-group-focus-handler.service.mjs +0 -97
  376. package/esm2020/button/providers/button-group-focus.enum.mjs +0 -12
  377. package/esm2020/button/providers/button-in-group.service.mjs +0 -26
  378. package/esm2020/clr-angular.mjs +0 -5
  379. package/esm2020/clr-angular.module.mjs +0 -93
  380. package/esm2020/data/data.module.mjs +0 -23
  381. package/esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs +0 -46
  382. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs +0 -93
  383. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +0 -259
  384. package/esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs +0 -28
  385. package/esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs +0 -27
  386. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs +0 -82
  387. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +0 -185
  388. package/esm2020/data/datagrid/built-in/nested-property.mjs +0 -38
  389. package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs +0 -34
  390. package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs +0 -20
  391. package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs +0 -34
  392. package/esm2020/data/datagrid/datagrid-action-bar.mjs +0 -21
  393. package/esm2020/data/datagrid/datagrid-action-overflow.mjs +0 -166
  394. package/esm2020/data/datagrid/datagrid-cell.mjs +0 -40
  395. package/esm2020/data/datagrid/datagrid-column-separator.mjs +0 -171
  396. package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs +0 -65
  397. package/esm2020/data/datagrid/datagrid-column-toggle-trackby.mjs +0 -8
  398. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +0 -204
  399. package/esm2020/data/datagrid/datagrid-column.mjs +0 -420
  400. package/esm2020/data/datagrid/datagrid-detail-body.mjs +0 -31
  401. package/esm2020/data/datagrid/datagrid-detail-header.mjs +0 -67
  402. package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +0 -37
  403. package/esm2020/data/datagrid/datagrid-detail.mjs +0 -98
  404. package/esm2020/data/datagrid/datagrid-filter.mjs +0 -186
  405. package/esm2020/data/datagrid/datagrid-footer.mjs +0 -78
  406. package/esm2020/data/datagrid/datagrid-hideable-column.mjs +0 -106
  407. package/esm2020/data/datagrid/datagrid-if-detail.mjs +0 -96
  408. package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +0 -55
  409. package/esm2020/data/datagrid/datagrid-items.mjs +0 -72
  410. package/esm2020/data/datagrid/datagrid-page-size.mjs +0 -63
  411. package/esm2020/data/datagrid/datagrid-pagination.mjs +0 -388
  412. package/esm2020/data/datagrid/datagrid-placeholder.mjs +0 -42
  413. package/esm2020/data/datagrid/datagrid-row-detail.mjs +0 -116
  414. package/esm2020/data/datagrid/datagrid-row.mjs +0 -372
  415. package/esm2020/data/datagrid/datagrid-selection-cell.directive.mjs +0 -37
  416. package/esm2020/data/datagrid/datagrid-single-selection.directive.mjs +0 -74
  417. package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +0 -340
  418. package/esm2020/data/datagrid/datagrid.mjs +0 -556
  419. package/esm2020/data/datagrid/datagrid.module.mjs +0 -238
  420. package/esm2020/data/datagrid/enums/column-changes.enum.mjs +0 -16
  421. package/esm2020/data/datagrid/enums/display-mode.enum.mjs +0 -12
  422. package/esm2020/data/datagrid/enums/render-step.enum.mjs +0 -15
  423. package/esm2020/data/datagrid/enums/selection-type.mjs +0 -13
  424. package/esm2020/data/datagrid/enums/sort-order.enum.mjs +0 -20
  425. package/esm2020/data/datagrid/index.mjs +0 -56
  426. package/esm2020/data/datagrid/interfaces/column-state.interface.mjs +0 -8
  427. package/esm2020/data/datagrid/interfaces/comparator.interface.mjs +0 -8
  428. package/esm2020/data/datagrid/interfaces/filter.interface.mjs +0 -8
  429. package/esm2020/data/datagrid/interfaces/key-nav-grid-strategy.interface.mjs +0 -8
  430. package/esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs +0 -8
  431. package/esm2020/data/datagrid/interfaces/state.interface.mjs +0 -8
  432. package/esm2020/data/datagrid/interfaces/string-filter.interface.mjs +0 -8
  433. package/esm2020/data/datagrid/interfaces/virtual-scroll-data-range.interface.mjs +0 -8
  434. package/esm2020/data/datagrid/providers/column-resizer.service.mjs +0 -58
  435. package/esm2020/data/datagrid/providers/column-state.provider.mjs +0 -19
  436. package/esm2020/data/datagrid/providers/columns.service.mjs +0 -63
  437. package/esm2020/data/datagrid/providers/custom-filter.mjs +0 -9
  438. package/esm2020/data/datagrid/providers/detail.service.mjs +0 -76
  439. package/esm2020/data/datagrid/providers/display-mode.service.mjs +0 -36
  440. package/esm2020/data/datagrid/providers/filters.mjs +0 -112
  441. package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +0 -34
  442. package/esm2020/data/datagrid/providers/items.mjs +0 -177
  443. package/esm2020/data/datagrid/providers/page.mjs +0 -156
  444. package/esm2020/data/datagrid/providers/row-action-service.mjs +0 -31
  445. package/esm2020/data/datagrid/providers/selection.mjs +0 -365
  446. package/esm2020/data/datagrid/providers/sort.mjs +0 -86
  447. package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +0 -43
  448. package/esm2020/data/datagrid/providers/state.provider.mjs +0 -75
  449. package/esm2020/data/datagrid/providers/table-size.service.mjs +0 -45
  450. package/esm2020/data/datagrid/render/cell-renderer.mjs +0 -59
  451. package/esm2020/data/datagrid/render/constants.mjs +0 -13
  452. package/esm2020/data/datagrid/render/header-renderer.mjs +0 -117
  453. package/esm2020/data/datagrid/render/main-renderer.mjs +0 -285
  454. package/esm2020/data/datagrid/render/noop-dom-adapter.mjs +0 -48
  455. package/esm2020/data/datagrid/render/render-organizer.mjs +0 -39
  456. package/esm2020/data/datagrid/render/row-detail-renderer.mjs +0 -31
  457. package/esm2020/data/datagrid/render/row-renderer.mjs +0 -62
  458. package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +0 -43
  459. package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +0 -155
  460. package/esm2020/data/datagrid/utils/key-navigation-strategies/default.mjs +0 -132
  461. package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.mjs +0 -129
  462. package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-row.mjs +0 -165
  463. package/esm2020/data/datagrid/utils/key-navigation-utils.mjs +0 -121
  464. package/esm2020/data/datagrid/wrapped-cell.mjs +0 -37
  465. package/esm2020/data/datagrid/wrapped-column.mjs +0 -38
  466. package/esm2020/data/datagrid/wrapped-row.mjs +0 -38
  467. package/esm2020/data/index.mjs +0 -11
  468. package/esm2020/data/stack-view/index.mjs +0 -13
  469. package/esm2020/data/stack-view/stack-block.mjs +0 -236
  470. package/esm2020/data/stack-view/stack-content-input.mjs +0 -27
  471. package/esm2020/data/stack-view/stack-header.mjs +0 -37
  472. package/esm2020/data/stack-view/stack-view-custom-tags.mjs +0 -57
  473. package/esm2020/data/stack-view/stack-view.mjs +0 -23
  474. package/esm2020/data/stack-view/stack-view.module.mjs +0 -53
  475. package/esm2020/data/tree-view/index.mjs +0 -13
  476. package/esm2020/data/tree-view/models/async-array.mjs +0 -11
  477. package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs +0 -37
  478. package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs +0 -77
  479. package/esm2020/data/tree-view/models/selected-state.enum.mjs +0 -17
  480. package/esm2020/data/tree-view/models/tree-node.model.mjs +0 -116
  481. package/esm2020/data/tree-view/recursive-children.mjs +0 -88
  482. package/esm2020/data/tree-view/recursive-for-of.mjs +0 -57
  483. package/esm2020/data/tree-view/tree-features.service.mjs +0 -38
  484. package/esm2020/data/tree-view/tree-focus-manager.service.mjs +0 -190
  485. package/esm2020/data/tree-view/tree-node-link.mjs +0 -30
  486. package/esm2020/data/tree-view/tree-node.mjs +0 -348
  487. package/esm2020/data/tree-view/tree-view.module.mjs +0 -35
  488. package/esm2020/data/tree-view/tree.mjs +0 -102
  489. package/esm2020/emphasis/alert/alert-item.mjs +0 -52
  490. package/esm2020/emphasis/alert/alert-text.mjs +0 -23
  491. package/esm2020/emphasis/alert/alert.mjs +0 -142
  492. package/esm2020/emphasis/alert/alert.module.mjs +0 -36
  493. package/esm2020/emphasis/alert/alerts-pager.mjs +0 -87
  494. package/esm2020/emphasis/alert/alerts.mjs +0 -102
  495. package/esm2020/emphasis/alert/index.mjs +0 -13
  496. package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +0 -90
  497. package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +0 -97
  498. package/esm2020/emphasis/alert/utils/alert-info-object.mjs +0 -8
  499. package/esm2020/emphasis/alert/utils/alert-types.mjs +0 -9
  500. package/esm2020/emphasis/emphasis.module.mjs +0 -21
  501. package/esm2020/emphasis/index.mjs +0 -9
  502. package/esm2020/forms/checkbox/checkbox-container.mjs +0 -136
  503. package/esm2020/forms/checkbox/checkbox-wrapper.mjs +0 -70
  504. package/esm2020/forms/checkbox/checkbox.mjs +0 -53
  505. package/esm2020/forms/checkbox/checkbox.module.mjs +0 -33
  506. package/esm2020/forms/checkbox/index.mjs +0 -11
  507. package/esm2020/forms/combobox/combobox-container.mjs +0 -106
  508. package/esm2020/forms/combobox/combobox.mjs +0 -360
  509. package/esm2020/forms/combobox/combobox.module.mjs +0 -97
  510. package/esm2020/forms/combobox/index.mjs +0 -15
  511. package/esm2020/forms/combobox/model/combobox.model.mjs +0 -9
  512. package/esm2020/forms/combobox/model/multi-select-combobox.model.mjs +0 -82
  513. package/esm2020/forms/combobox/model/pseudo-focus.model.mjs +0 -24
  514. package/esm2020/forms/combobox/model/single-select-combobox.model.mjs +0 -39
  515. package/esm2020/forms/combobox/option-group.mjs +0 -42
  516. package/esm2020/forms/combobox/option-items.directive.mjs +0 -110
  517. package/esm2020/forms/combobox/option-selected.directive.mjs +0 -25
  518. package/esm2020/forms/combobox/option.mjs +0 -103
  519. package/esm2020/forms/combobox/options.mjs +0 -156
  520. package/esm2020/forms/combobox/providers/combobox-container.service.mjs +0 -19
  521. package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +0 -222
  522. package/esm2020/forms/combobox/providers/option-selection.service.mjs +0 -85
  523. package/esm2020/forms/common/abstract-container.mjs +0 -135
  524. package/esm2020/forms/common/abstract-control.mjs +0 -51
  525. package/esm2020/forms/common/common.module.mjs +0 -78
  526. package/esm2020/forms/common/control-container.mjs +0 -84
  527. package/esm2020/forms/common/control.mjs +0 -31
  528. package/esm2020/forms/common/error.mjs +0 -38
  529. package/esm2020/forms/common/form.mjs +0 -54
  530. package/esm2020/forms/common/helper.mjs +0 -37
  531. package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +0 -46
  532. package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +0 -57
  533. package/esm2020/forms/common/if-control-state/if-error.mjs +0 -75
  534. package/esm2020/forms/common/if-control-state/if-success.mjs +0 -48
  535. package/esm2020/forms/common/index.mjs +0 -21
  536. package/esm2020/forms/common/label.mjs +0 -102
  537. package/esm2020/forms/common/layout.mjs +0 -32
  538. package/esm2020/forms/common/providers/container-id.service.mjs +0 -39
  539. package/esm2020/forms/common/providers/control-class.service.mjs +0 -53
  540. package/esm2020/forms/common/providers/control-id.service.mjs +0 -32
  541. package/esm2020/forms/common/providers/focus.service.mjs +0 -26
  542. package/esm2020/forms/common/providers/layout.service.mjs +0 -58
  543. package/esm2020/forms/common/providers/mark-control.service.mjs +0 -26
  544. package/esm2020/forms/common/providers/ng-control.service.mjs +0 -53
  545. package/esm2020/forms/common/success.mjs +0 -38
  546. package/esm2020/forms/common/wrapped-control.mjs +0 -191
  547. package/esm2020/forms/datalist/datalist-container.mjs +0 -121
  548. package/esm2020/forms/datalist/datalist-input.mjs +0 -63
  549. package/esm2020/forms/datalist/datalist.mjs +0 -49
  550. package/esm2020/forms/datalist/datalist.module.mjs +0 -32
  551. package/esm2020/forms/datalist/index.mjs +0 -11
  552. package/esm2020/forms/datalist/providers/datalist-id.service.mjs +0 -32
  553. package/esm2020/forms/datepicker/calendar.mjs +0 -175
  554. package/esm2020/forms/datepicker/date-container.mjs +0 -365
  555. package/esm2020/forms/datepicker/date-end-input.mjs +0 -60
  556. package/esm2020/forms/datepicker/date-input.mjs +0 -294
  557. package/esm2020/forms/datepicker/date-input.validator.mjs +0 -100
  558. package/esm2020/forms/datepicker/date-single-input.mjs +0 -63
  559. package/esm2020/forms/datepicker/date-start-input.mjs +0 -61
  560. package/esm2020/forms/datepicker/datepicker-action-buttons.mjs +0 -59
  561. package/esm2020/forms/datepicker/datepicker-view-manager.mjs +0 -74
  562. package/esm2020/forms/datepicker/datepicker.module.mjs +0 -111
  563. package/esm2020/forms/datepicker/day.mjs +0 -145
  564. package/esm2020/forms/datepicker/daypicker.mjs +0 -81
  565. package/esm2020/forms/datepicker/index.mjs +0 -21
  566. package/esm2020/forms/datepicker/interfaces/date-range.interface.mjs +0 -8
  567. package/esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs +0 -8
  568. package/esm2020/forms/datepicker/model/calendar-view.model.mjs +0 -182
  569. package/esm2020/forms/datepicker/model/calendar.model.mjs +0 -79
  570. package/esm2020/forms/datepicker/model/day-view.model.mjs +0 -25
  571. package/esm2020/forms/datepicker/model/day.model.mjs +0 -72
  572. package/esm2020/forms/datepicker/model/year-range.model.mjs +0 -61
  573. package/esm2020/forms/datepicker/monthpicker.mjs +0 -325
  574. package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +0 -37
  575. package/esm2020/forms/datepicker/providers/date-io.service.mjs +0 -195
  576. package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +0 -195
  577. package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +0 -47
  578. package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +0 -48
  579. package/esm2020/forms/datepicker/providers/locale-helper.service.mjs +0 -102
  580. package/esm2020/forms/datepicker/providers/view-manager.service.mjs +0 -42
  581. package/esm2020/forms/datepicker/utils/constants.mjs +0 -38
  582. package/esm2020/forms/datepicker/utils/date-utils.mjs +0 -50
  583. package/esm2020/forms/datepicker/yearpicker.mjs +0 -304
  584. package/esm2020/forms/file-input/file-input-container.mjs +0 -245
  585. package/esm2020/forms/file-input/file-input-validator-errors.mjs +0 -8
  586. package/esm2020/forms/file-input/file-input-validator.mjs +0 -101
  587. package/esm2020/forms/file-input/file-input-value-accessor.mjs +0 -56
  588. package/esm2020/forms/file-input/file-input.helpers.mjs +0 -22
  589. package/esm2020/forms/file-input/file-input.mjs +0 -71
  590. package/esm2020/forms/file-input/file-input.module.mjs +0 -74
  591. package/esm2020/forms/file-input/file-list.mjs +0 -160
  592. package/esm2020/forms/file-input/file-messages-template.mjs +0 -26
  593. package/esm2020/forms/file-input/file-messages.mjs +0 -61
  594. package/esm2020/forms/file-input/index.mjs +0 -16
  595. package/esm2020/forms/forms.module.mjs +0 -73
  596. package/esm2020/forms/index.mjs +0 -21
  597. package/esm2020/forms/input/index.mjs +0 -10
  598. package/esm2020/forms/input/input-container.mjs +0 -92
  599. package/esm2020/forms/input/input.mjs +0 -40
  600. package/esm2020/forms/input/input.module.mjs +0 -33
  601. package/esm2020/forms/number-input/index.mjs +0 -10
  602. package/esm2020/forms/number-input/number-input-container.mjs +0 -148
  603. package/esm2020/forms/number-input/number-input.mjs +0 -79
  604. package/esm2020/forms/number-input/number-input.module.mjs +0 -32
  605. package/esm2020/forms/password/index.mjs +0 -10
  606. package/esm2020/forms/password/password-container.mjs +0 -180
  607. package/esm2020/forms/password/password.mjs +0 -64
  608. package/esm2020/forms/password/password.module.mjs +0 -32
  609. package/esm2020/forms/radio/index.mjs +0 -11
  610. package/esm2020/forms/radio/radio-container.mjs +0 -150
  611. package/esm2020/forms/radio/radio-wrapper.mjs +0 -44
  612. package/esm2020/forms/radio/radio.mjs +0 -29
  613. package/esm2020/forms/radio/radio.module.mjs +0 -33
  614. package/esm2020/forms/range/index.mjs +0 -10
  615. package/esm2020/forms/range/range-container.mjs +0 -137
  616. package/esm2020/forms/range/range.mjs +0 -30
  617. package/esm2020/forms/range/range.module.mjs +0 -32
  618. package/esm2020/forms/select/index.mjs +0 -10
  619. package/esm2020/forms/select/select-container.mjs +0 -114
  620. package/esm2020/forms/select/select.mjs +0 -31
  621. package/esm2020/forms/select/select.module.mjs +0 -32
  622. package/esm2020/forms/textarea/index.mjs +0 -10
  623. package/esm2020/forms/textarea/textarea-container.mjs +0 -84
  624. package/esm2020/forms/textarea/textarea.mjs +0 -31
  625. package/esm2020/forms/textarea/textarea.module.mjs +0 -32
  626. package/esm2020/icon/icon.mjs +0 -29
  627. package/esm2020/icon/icon.module.mjs +0 -25
  628. package/esm2020/icon/index.mjs +0 -9
  629. package/esm2020/index.mjs +0 -23
  630. package/esm2020/layout/breadcrumbs/breadcrumb-item.mjs +0 -24
  631. package/esm2020/layout/breadcrumbs/breadcrumbs.constants.mjs +0 -8
  632. package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +0 -46
  633. package/esm2020/layout/breadcrumbs/breadcrumbs.module.mjs +0 -28
  634. package/esm2020/layout/breadcrumbs/index.mjs +0 -11
  635. package/esm2020/layout/breadcrumbs/model/breadcrumbs.model.mjs +0 -8
  636. package/esm2020/layout/index.mjs +0 -13
  637. package/esm2020/layout/layout.module.mjs +0 -25
  638. package/esm2020/layout/main-container/index.mjs +0 -9
  639. package/esm2020/layout/main-container/main-container.mjs +0 -62
  640. package/esm2020/layout/main-container/main-container.module.mjs +0 -26
  641. package/esm2020/layout/nav/aria-current-link.mjs +0 -32
  642. package/esm2020/layout/nav/chocolate/index.mjs +0 -9
  643. package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs +0 -20
  644. package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs +0 -36
  645. package/esm2020/layout/nav/header.mjs +0 -154
  646. package/esm2020/layout/nav/index.mjs +0 -12
  647. package/esm2020/layout/nav/nav-level.mjs +0 -197
  648. package/esm2020/layout/nav/navigation.module.mjs +0 -45
  649. package/esm2020/layout/nav/providers/responsive-navigation.service.mjs +0 -61
  650. package/esm2020/layout/nav/responsive-nav-codes.mjs +0 -21
  651. package/esm2020/layout/nav/responsive-nav-control-message.mjs +0 -19
  652. package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs +0 -39
  653. package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs +0 -20
  654. package/esm2020/layout/tabs/enums/tabs-layout.enum.mjs +0 -12
  655. package/esm2020/layout/tabs/index.mjs +0 -17
  656. package/esm2020/layout/tabs/providers/tabs.service.mjs +0 -46
  657. package/esm2020/layout/tabs/tab-action.directive.mjs +0 -22
  658. package/esm2020/layout/tabs/tab-content.mjs +0 -87
  659. package/esm2020/layout/tabs/tab-link.directive.mjs +0 -105
  660. package/esm2020/layout/tabs/tab-overflow-content.mjs +0 -23
  661. package/esm2020/layout/tabs/tab.mjs +0 -47
  662. package/esm2020/layout/tabs/tabs-actions.mjs +0 -39
  663. package/esm2020/layout/tabs/tabs-id.provider.mjs +0 -17
  664. package/esm2020/layout/tabs/tabs.mjs +0 -327
  665. package/esm2020/layout/tabs/tabs.module.mjs +0 -67
  666. package/esm2020/layout/vertical-nav/index.mjs +0 -13
  667. package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +0 -25
  668. package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs +0 -26
  669. package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs +0 -28
  670. package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs +0 -55
  671. package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs +0 -20
  672. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +0 -162
  673. package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +0 -28
  674. package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +0 -57
  675. package/esm2020/layout/vertical-nav/vertical-nav.mjs +0 -85
  676. package/esm2020/layout/vertical-nav/vertical-nav.module.mjs +0 -50
  677. package/esm2020/modal/index.mjs +0 -14
  678. package/esm2020/modal/modal-body.mjs +0 -65
  679. package/esm2020/modal/modal-configuration.service.mjs +0 -21
  680. package/esm2020/modal/modal-host.component.mjs +0 -29
  681. package/esm2020/modal/modal-stack.service.mjs +0 -53
  682. package/esm2020/modal/modal.mjs +0 -185
  683. package/esm2020/modal/modal.module.mjs +0 -33
  684. package/esm2020/modal/side-panel.mjs +0 -227
  685. package/esm2020/modal/side-panel.module.mjs +0 -28
  686. package/esm2020/popover/common/abstract-popover.mjs +0 -138
  687. package/esm2020/popover/common/popover-host-anchor.token.mjs +0 -9
  688. package/esm2020/popover/common/popover-options.interface.mjs +0 -8
  689. package/esm2020/popover/common/popover.mjs +0 -267
  690. package/esm2020/popover/dropdown/dropdown-item.mjs +0 -105
  691. package/esm2020/popover/dropdown/dropdown-menu.mjs +0 -115
  692. package/esm2020/popover/dropdown/dropdown-trigger.mjs +0 -51
  693. package/esm2020/popover/dropdown/dropdown.mjs +0 -53
  694. package/esm2020/popover/dropdown/dropdown.module.mjs +0 -30
  695. package/esm2020/popover/dropdown/index.mjs +0 -13
  696. package/esm2020/popover/dropdown/menu-positions.mjs +0 -17
  697. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +0 -186
  698. package/esm2020/popover/dropdown/providers/dropdown.service.mjs +0 -34
  699. package/esm2020/popover/index.mjs +0 -11
  700. package/esm2020/popover/popover.module.mjs +0 -23
  701. package/esm2020/popover/signpost/index.mjs +0 -12
  702. package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs +0 -24
  703. package/esm2020/popover/signpost/providers/signpost-id.service.mjs +0 -26
  704. package/esm2020/popover/signpost/signpost-content.mjs +0 -179
  705. package/esm2020/popover/signpost/signpost-positions.mjs +0 -23
  706. package/esm2020/popover/signpost/signpost-title.mjs +0 -21
  707. package/esm2020/popover/signpost/signpost-trigger.mjs +0 -90
  708. package/esm2020/popover/signpost/signpost.mjs +0 -94
  709. package/esm2020/popover/signpost/signpost.module.mjs +0 -46
  710. package/esm2020/popover/tooltip/index.mjs +0 -11
  711. package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs +0 -26
  712. package/esm2020/popover/tooltip/providers/tooltip-mouse.service.mjs +0 -44
  713. package/esm2020/popover/tooltip/tooltip-content.mjs +0 -135
  714. package/esm2020/popover/tooltip/tooltip-trigger.mjs +0 -62
  715. package/esm2020/popover/tooltip/tooltip.mjs +0 -29
  716. package/esm2020/popover/tooltip/tooltip.module.mjs +0 -29
  717. package/esm2020/progress/progress-bars/index.mjs +0 -9
  718. package/esm2020/progress/progress-bars/progress-bar.mjs +0 -177
  719. package/esm2020/progress/progress-bars/progress-bar.module.mjs +0 -25
  720. package/esm2020/progress/spinner/index.mjs +0 -9
  721. package/esm2020/progress/spinner/spinner.mjs +0 -95
  722. package/esm2020/progress/spinner/spinner.module.mjs +0 -25
  723. package/esm2020/timeline/enums/timeline-layout.enum.mjs +0 -12
  724. package/esm2020/timeline/enums/timeline-step-state.enum.mjs +0 -15
  725. package/esm2020/timeline/index.mjs +0 -15
  726. package/esm2020/timeline/interface/icon-attribute.interface.mjs +0 -8
  727. package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +0 -55
  728. package/esm2020/timeline/timeline-step-description.mjs +0 -21
  729. package/esm2020/timeline/timeline-step-header.mjs +0 -21
  730. package/esm2020/timeline/timeline-step-title.mjs +0 -31
  731. package/esm2020/timeline/timeline-step.mjs +0 -97
  732. package/esm2020/timeline/timeline.mjs +0 -36
  733. package/esm2020/timeline/timeline.module.mjs +0 -49
  734. package/esm2020/utils/animations/collapse/collapse.mjs +0 -17
  735. package/esm2020/utils/animations/collapse/index.mjs +0 -8
  736. package/esm2020/utils/animations/constants.mjs +0 -14
  737. package/esm2020/utils/animations/expandable-animation/base-expandable-animation.mjs +0 -46
  738. package/esm2020/utils/animations/expandable-animation/expandable-animation.directive.mjs +0 -56
  739. package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +0 -49
  740. package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +0 -26
  741. package/esm2020/utils/animations/expandable-animation/index.mjs +0 -12
  742. package/esm2020/utils/animations/fade/fade.mjs +0 -15
  743. package/esm2020/utils/animations/fade/index.mjs +0 -8
  744. package/esm2020/utils/animations/fade-slide/fade-slide.mjs +0 -31
  745. package/esm2020/utils/animations/fade-slide/index.mjs +0 -8
  746. package/esm2020/utils/animations/index.mjs +0 -12
  747. package/esm2020/utils/animations/slide/index.mjs +0 -8
  748. package/esm2020/utils/animations/slide/slide.mjs +0 -31
  749. package/esm2020/utils/assert/assert.helpers.mjs +0 -10
  750. package/esm2020/utils/breakpoints/breakpoints.mjs +0 -24
  751. package/esm2020/utils/cdk/cdk-drag.module.mjs +0 -58
  752. package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +0 -53
  753. package/esm2020/utils/chocolate/oompa-loompa.mjs +0 -33
  754. package/esm2020/utils/chocolate/willy-wonka.mjs +0 -37
  755. package/esm2020/utils/component/is-boolean-attribute-set.mjs +0 -19
  756. package/esm2020/utils/conditional/conditional.module.mjs +0 -27
  757. package/esm2020/utils/conditional/if-active.directive.mjs +0 -98
  758. package/esm2020/utils/conditional/if-active.service.mjs +0 -71
  759. package/esm2020/utils/conditional/if-expanded.directive.mjs +0 -96
  760. package/esm2020/utils/conditional/if-expanded.service.mjs +0 -60
  761. package/esm2020/utils/conditional/if-open.directive.mjs +0 -81
  762. package/esm2020/utils/conditional/index.mjs +0 -11
  763. package/esm2020/utils/destroy/destroy.service.mjs +0 -45
  764. package/esm2020/utils/destroy/index.mjs +0 -8
  765. package/esm2020/utils/dom-adapter/dom-adapter.mjs +0 -62
  766. package/esm2020/utils/enums/keys.enum.mjs +0 -33
  767. package/esm2020/utils/focus/arrow-key-direction.enum.mjs +0 -14
  768. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +0 -90
  769. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs +0 -27
  770. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs +0 -15
  771. package/esm2020/utils/focus/focus-on-view-init/index.mjs +0 -10
  772. package/esm2020/utils/focus/focus-trap/index.mjs +0 -8
  773. package/esm2020/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.mjs +0 -35
  774. package/esm2020/utils/focus/focus.service.mjs +0 -95
  775. package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +0 -55
  776. package/esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs +0 -17
  777. package/esm2020/utils/focus/focusable-item/focusable-item.mjs +0 -9
  778. package/esm2020/utils/focus/focusable-item/linkers.mjs +0 -35
  779. package/esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs +0 -13
  780. package/esm2020/utils/focus/key-focus/index.mjs +0 -9
  781. package/esm2020/utils/focus/key-focus/interfaces.mjs +0 -8
  782. package/esm2020/utils/focus/key-focus/key-focus-item.mjs +0 -35
  783. package/esm2020/utils/focus/key-focus/key-focus.mjs +0 -199
  784. package/esm2020/utils/focus/key-focus/key-focus.module.mjs +0 -27
  785. package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +0 -103
  786. package/esm2020/utils/focus/key-focus/util.mjs +0 -45
  787. package/esm2020/utils/focus/wrap-observable.mjs +0 -20
  788. package/esm2020/utils/forms/validation.mjs +0 -21
  789. package/esm2020/utils/host-wrapping/empty-anchor.mjs +0 -19
  790. package/esm2020/utils/host-wrapping/host-wrapper.mjs +0 -42
  791. package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +0 -25
  792. package/esm2020/utils/i18n/common-strings.default.mjs +0 -137
  793. package/esm2020/utils/i18n/common-strings.interface.mjs +0 -8
  794. package/esm2020/utils/i18n/common-strings.service.mjs +0 -48
  795. package/esm2020/utils/i18n/index.mjs +0 -10
  796. package/esm2020/utils/id-generator/id-generator.service.mjs +0 -11
  797. package/esm2020/utils/index.mjs +0 -15
  798. package/esm2020/utils/loading/index.mjs +0 -10
  799. package/esm2020/utils/loading/loading-listener.mjs +0 -13
  800. package/esm2020/utils/loading/loading.mjs +0 -58
  801. package/esm2020/utils/loading/loading.module.mjs +0 -25
  802. package/esm2020/utils/outside-click/index.mjs +0 -10
  803. package/esm2020/utils/outside-click/outside-click.mjs +0 -49
  804. package/esm2020/utils/outside-click/outside-click.module.mjs +0 -25
  805. package/esm2020/utils/popover/enums/alignment.enum.mjs +0 -13
  806. package/esm2020/utils/popover/enums/axis.enum.mjs +0 -12
  807. package/esm2020/utils/popover/enums/positions.enum.mjs +0 -60
  808. package/esm2020/utils/popover/enums/side.enum.mjs +0 -12
  809. package/esm2020/utils/popover/enums/viewport-violation.enum.mjs +0 -14
  810. package/esm2020/utils/popover/index.mjs +0 -21
  811. package/esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs +0 -8
  812. package/esm2020/utils/popover/interfaces/popover-position.interface.mjs +0 -8
  813. package/esm2020/utils/popover/interfaces/visibility-coords.interface.mjs +0 -8
  814. package/esm2020/utils/popover/popover-anchor.mjs +0 -26
  815. package/esm2020/utils/popover/popover-close-button.mjs +0 -52
  816. package/esm2020/utils/popover/popover-content.mjs +0 -161
  817. package/esm2020/utils/popover/popover-host.directive.mjs +0 -37
  818. package/esm2020/utils/popover/popover-open-close-button.mjs +0 -43
  819. package/esm2020/utils/popover/popover.module.mjs +0 -26
  820. package/esm2020/utils/popover/position-operators.mjs +0 -180
  821. package/esm2020/utils/popover/providers/popover-events.service.mjs +0 -142
  822. package/esm2020/utils/popover/providers/popover-position.service.mjs +0 -230
  823. package/esm2020/utils/popover/providers/popover-toggle.service.mjs +0 -75
  824. package/esm2020/utils/popover/stop-escape-propagation.directive.mjs +0 -43
  825. package/esm2020/utils/scrolling/scrolling-service.mjs +0 -31
  826. package/esm2020/utils/template-ref/index.mjs +0 -10
  827. package/esm2020/utils/template-ref/template-ref-container.mjs +0 -30
  828. package/esm2020/utils/template-ref/template-ref.module.mjs +0 -25
  829. package/esm2020/wizard/heading-level.mjs +0 -8
  830. package/esm2020/wizard/index.mjs +0 -20
  831. package/esm2020/wizard/providers/button-hub.service.mjs +0 -64
  832. package/esm2020/wizard/providers/header-actions.service.mjs +0 -36
  833. package/esm2020/wizard/providers/page-collection.service.mjs +0 -360
  834. package/esm2020/wizard/providers/wizard-navigation.service.mjs +0 -575
  835. package/esm2020/wizard/wizard-button.mjs +0 -188
  836. package/esm2020/wizard/wizard-header-action.mjs +0 -77
  837. package/esm2020/wizard/wizard-page-buttons.mjs +0 -22
  838. package/esm2020/wizard/wizard-page-header-actions.mjs +0 -22
  839. package/esm2020/wizard/wizard-page-navtitle.mjs +0 -22
  840. package/esm2020/wizard/wizard-page-title.mjs +0 -25
  841. package/esm2020/wizard/wizard-page.mjs +0 -652
  842. package/esm2020/wizard/wizard-stepnav-item.mjs +0 -204
  843. package/esm2020/wizard/wizard-stepnav.mjs +0 -55
  844. package/esm2020/wizard/wizard-title.mjs +0 -22
  845. package/esm2020/wizard/wizard.mjs +0 -535
  846. package/esm2020/wizard/wizard.module.mjs +0 -73
  847. package/fesm2015/clr-angular.mjs +0 -31534
  848. package/fesm2015/clr-angular.mjs.map +0 -1
  849. package/fesm2020/clr-angular.mjs +0 -31350
  850. package/fesm2020/clr-angular.mjs.map +0 -1
  851. package/forms/checkbox/checkbox-container.d.ts +0 -25
  852. package/forms/checkbox/checkbox-wrapper.d.ts +0 -22
  853. package/forms/checkbox/checkbox.d.ts +0 -20
  854. package/forms/checkbox/checkbox.module.d.ts +0 -14
  855. package/forms/checkbox/index.d.ts +0 -4
  856. package/forms/combobox/combobox-container.d.ts +0 -18
  857. package/forms/combobox/combobox.d.ts +0 -87
  858. package/forms/combobox/combobox.module.d.ts +0 -22
  859. package/forms/combobox/index.d.ts +0 -8
  860. package/forms/combobox/model/combobox.model.d.ts +0 -9
  861. package/forms/combobox/model/multi-select-combobox.model.d.ts +0 -12
  862. package/forms/combobox/model/pseudo-focus.model.d.ts +0 -7
  863. package/forms/combobox/model/single-select-combobox.model.d.ts +0 -10
  864. package/forms/combobox/option-group.d.ts +0 -9
  865. package/forms/combobox/option-items.directive.d.ts +0 -28
  866. package/forms/combobox/option-selected.directive.d.ts +0 -13
  867. package/forms/combobox/option.d.ts +0 -25
  868. package/forms/combobox/options.d.ts +0 -36
  869. package/forms/combobox/providers/combobox-container.service.d.ts +0 -7
  870. package/forms/combobox/providers/combobox-focus-handler.service.d.ts +0 -48
  871. package/forms/combobox/providers/option-selection.service.d.ts +0 -24
  872. package/forms/common/abstract-container.d.ts +0 -47
  873. package/forms/common/abstract-control.d.ts +0 -18
  874. package/forms/common/common.module.d.ts +0 -19
  875. package/forms/common/control-container.d.ts +0 -6
  876. package/forms/common/control.d.ts +0 -11
  877. package/forms/common/error.d.ts +0 -12
  878. package/forms/common/form.d.ts +0 -16
  879. package/forms/common/helper.d.ts +0 -12
  880. package/forms/common/if-control-state/abstract-if-state.d.ts +0 -18
  881. package/forms/common/if-control-state/if-control-state.service.d.ts +0 -17
  882. package/forms/common/if-control-state/if-error.d.ts +0 -19
  883. package/forms/common/if-control-state/if-success.d.ts +0 -16
  884. package/forms/common/index.d.ts +0 -14
  885. package/forms/common/label.d.ts +0 -32
  886. package/forms/common/layout.d.ts +0 -11
  887. package/forms/common/providers/container-id.service.d.ts +0 -18
  888. package/forms/common/providers/control-class.service.d.ts +0 -13
  889. package/forms/common/providers/control-id.service.d.ts +0 -11
  890. package/forms/common/providers/focus.service.d.ts +0 -9
  891. package/forms/common/providers/layout.service.d.ts +0 -23
  892. package/forms/common/providers/mark-control.service.d.ts +0 -9
  893. package/forms/common/providers/ng-control.service.d.ts +0 -27
  894. package/forms/common/success.d.ts +0 -12
  895. package/forms/common/wrapped-control.d.ts +0 -46
  896. package/forms/datalist/datalist-container.d.ts +0 -14
  897. package/forms/datalist/datalist-input.d.ts +0 -18
  898. package/forms/datalist/datalist.d.ts +0 -14
  899. package/forms/datalist/datalist.module.d.ts +0 -13
  900. package/forms/datalist/index.d.ts +0 -4
  901. package/forms/datalist/providers/datalist-id.service.d.ts +0 -11
  902. package/forms/datepicker/calendar.d.ts +0 -65
  903. package/forms/datepicker/date-container.d.ts +0 -72
  904. package/forms/datepicker/date-end-input.d.ts +0 -15
  905. package/forms/datepicker/date-input.d.ts +0 -67
  906. package/forms/datepicker/date-input.validator.d.ts +0 -27
  907. package/forms/datepicker/date-single-input.d.ts +0 -15
  908. package/forms/datepicker/date-start-input.d.ts +0 -15
  909. package/forms/datepicker/datepicker-action-buttons.d.ts +0 -16
  910. package/forms/datepicker/datepicker-view-manager.d.ts +0 -30
  911. package/forms/datepicker/datepicker.module.d.ts +0 -29
  912. package/forms/datepicker/day.d.ts +0 -40
  913. package/forms/datepicker/daypicker.d.ts +0 -44
  914. package/forms/datepicker/index.d.ts +0 -14
  915. package/forms/datepicker/interfaces/date-range.interface.d.ts +0 -13
  916. package/forms/datepicker/interfaces/day-of-week.interface.d.ts +0 -4
  917. package/forms/datepicker/model/calendar-view.model.d.ts +0 -74
  918. package/forms/datepicker/model/calendar.model.d.ts +0 -35
  919. package/forms/datepicker/model/day-view.model.d.ts +0 -16
  920. package/forms/datepicker/model/day.model.d.ts +0 -30
  921. package/forms/datepicker/model/year-range.model.d.ts +0 -34
  922. package/forms/datepicker/monthpicker.d.ts +0 -87
  923. package/forms/datepicker/providers/date-form-control.service.d.ts +0 -14
  924. package/forms/datepicker/providers/date-io.service.d.ts +0 -39
  925. package/forms/datepicker/providers/date-navigation.service.d.ts +0 -94
  926. package/forms/datepicker/providers/datepicker-enabled.service.d.ts +0 -15
  927. package/forms/datepicker/providers/datepicker-focus.service.d.ts +0 -16
  928. package/forms/datepicker/providers/locale-helper.service.d.ts +0 -46
  929. package/forms/datepicker/providers/view-manager.service.d.ts +0 -17
  930. package/forms/datepicker/utils/constants.d.ts +0 -24
  931. package/forms/datepicker/utils/date-utils.d.ts +0 -16
  932. package/forms/datepicker/yearpicker.d.ts +0 -78
  933. package/forms/file-input/file-input-container.d.ts +0 -27
  934. package/forms/file-input/file-input-validator-errors.d.ts +0 -52
  935. package/forms/file-input/file-input-validator.d.ts +0 -14
  936. package/forms/file-input/file-input-value-accessor.d.ts +0 -16
  937. package/forms/file-input/file-input.d.ts +0 -22
  938. package/forms/file-input/file-input.helpers.d.ts +0 -3
  939. package/forms/file-input/file-input.module.d.ts +0 -17
  940. package/forms/file-input/file-list.d.ts +0 -18
  941. package/forms/file-input/file-messages-template.d.ts +0 -19
  942. package/forms/file-input/file-messages.d.ts +0 -17
  943. package/forms/file-input/index.d.ts +0 -9
  944. package/forms/forms.module.d.ts +0 -20
  945. package/forms/index.d.ts +0 -14
  946. package/forms/input/index.d.ts +0 -3
  947. package/forms/input/input-container.d.ts +0 -6
  948. package/forms/input/input.d.ts +0 -11
  949. package/forms/input/input.module.d.ts +0 -13
  950. package/forms/number-input/index.d.ts +0 -3
  951. package/forms/number-input/number-input-container.d.ts +0 -17
  952. package/forms/number-input/number-input.d.ts +0 -22
  953. package/forms/number-input/number-input.module.d.ts +0 -13
  954. package/forms/password/index.d.ts +0 -3
  955. package/forms/password/password-container.d.ts +0 -32
  956. package/forms/password/password.d.ts +0 -16
  957. package/forms/password/password.module.d.ts +0 -13
  958. package/forms/radio/index.d.ts +0 -4
  959. package/forms/radio/radio-container.d.ts +0 -28
  960. package/forms/radio/radio-wrapper.d.ts +0 -9
  961. package/forms/radio/radio.d.ts +0 -10
  962. package/forms/radio/radio.module.d.ts +0 -14
  963. package/forms/range/index.d.ts +0 -3
  964. package/forms/range/range-container.d.ts +0 -22
  965. package/forms/range/range.d.ts +0 -10
  966. package/forms/range/range.module.d.ts +0 -13
  967. package/forms/select/index.d.ts +0 -3
  968. package/forms/select/select-container.d.ts +0 -20
  969. package/forms/select/select.d.ts +0 -11
  970. package/forms/select/select.module.d.ts +0 -13
  971. package/forms/textarea/index.d.ts +0 -3
  972. package/forms/textarea/textarea-container.d.ts +0 -6
  973. package/forms/textarea/textarea.d.ts +0 -11
  974. package/forms/textarea/textarea.module.d.ts +0 -13
  975. package/icon/icon.d.ts +0 -9
  976. package/icon/icon.module.d.ts +0 -10
  977. package/icon/index.d.ts +0 -2
  978. package/index.d.ts +0 -16
  979. package/layout/breadcrumbs/breadcrumb-item.d.ts +0 -5
  980. package/layout/breadcrumbs/breadcrumbs.constants.d.ts +0 -1
  981. package/layout/breadcrumbs/breadcrumbs.d.ts +0 -17
  982. package/layout/breadcrumbs/breadcrumbs.module.d.ts +0 -12
  983. package/layout/breadcrumbs/index.d.ts +0 -4
  984. package/layout/breadcrumbs/model/breadcrumbs.model.d.ts +0 -9
  985. package/layout/index.d.ts +0 -6
  986. package/layout/layout.module.d.ts +0 -11
  987. package/layout/main-container/index.d.ts +0 -2
  988. package/layout/main-container/main-container.d.ts +0 -17
  989. package/layout/main-container/main-container.module.d.ts +0 -11
  990. package/layout/nav/aria-current-link.d.ts +0 -13
  991. package/layout/nav/chocolate/index.d.ts +0 -2
  992. package/layout/nav/chocolate/main-container-willy-wonka.d.ts +0 -6
  993. package/layout/nav/chocolate/nav-detection-oompa-loompa.d.ts +0 -12
  994. package/layout/nav/header.d.ts +0 -31
  995. package/layout/nav/index.d.ts +0 -5
  996. package/layout/nav/nav-level.d.ts +0 -35
  997. package/layout/nav/navigation.module.d.ts +0 -16
  998. package/layout/nav/providers/responsive-navigation.service.d.ts +0 -18
  999. package/layout/nav/responsive-nav-codes.d.ts +0 -14
  1000. package/layout/nav/responsive-nav-control-message.d.ts +0 -7
  1001. package/layout/tabs/chocolate/active-oompa-loompa.d.ts +0 -13
  1002. package/layout/tabs/chocolate/tabs-willy-wonka.d.ts +0 -6
  1003. package/layout/tabs/enums/tabs-layout.enum.d.ts +0 -4
  1004. package/layout/tabs/index.d.ts +0 -11
  1005. package/layout/tabs/providers/tabs.service.d.ts +0 -16
  1006. package/layout/tabs/tab-action.directive.d.ts +0 -5
  1007. package/layout/tabs/tab-content.d.ts +0 -18
  1008. package/layout/tabs/tab-link.directive.d.ts +0 -25
  1009. package/layout/tabs/tab-overflow-content.d.ts +0 -5
  1010. package/layout/tabs/tab.d.ts +0 -17
  1011. package/layout/tabs/tabs-actions.d.ts +0 -7
  1012. package/layout/tabs/tabs-id.provider.d.ts +0 -7
  1013. package/layout/tabs/tabs.d.ts +0 -50
  1014. package/layout/tabs/tabs.module.d.ts +0 -23
  1015. package/layout/vertical-nav/index.d.ts +0 -6
  1016. package/layout/vertical-nav/providers/vertical-nav-group-registration.service.d.ts +0 -8
  1017. package/layout/vertical-nav/providers/vertical-nav-group.service.d.ts +0 -9
  1018. package/layout/vertical-nav/providers/vertical-nav-icon.service.d.ts +0 -9
  1019. package/layout/vertical-nav/providers/vertical-nav.service.d.ts +0 -17
  1020. package/layout/vertical-nav/vertical-nav-group-children.d.ts +0 -5
  1021. package/layout/vertical-nav/vertical-nav-group.d.ts +0 -32
  1022. package/layout/vertical-nav/vertical-nav-icon.d.ts +0 -10
  1023. package/layout/vertical-nav/vertical-nav-link.d.ts +0 -10
  1024. package/layout/vertical-nav/vertical-nav.d.ts +0 -28
  1025. package/layout/vertical-nav/vertical-nav.module.d.ts +0 -18
  1026. package/modal/index.d.ts +0 -7
  1027. package/modal/modal-body.d.ts +0 -22
  1028. package/modal/modal-configuration.service.d.ts +0 -7
  1029. package/modal/modal-host.component.d.ts +0 -5
  1030. package/modal/modal-stack.service.d.ts +0 -15
  1031. package/modal/modal.d.ts +0 -43
  1032. package/modal/modal.module.d.ts +0 -15
  1033. package/modal/side-panel.d.ts +0 -53
  1034. package/modal/side-panel.module.d.ts +0 -13
  1035. package/popover/common/abstract-popover.d.ts +0 -35
  1036. package/popover/common/popover-host-anchor.token.d.ts +0 -2
  1037. package/popover/common/popover-options.interface.d.ts +0 -7
  1038. package/popover/common/popover.d.ts +0 -30
  1039. package/popover/dropdown/dropdown-item.d.ts +0 -27
  1040. package/popover/dropdown/dropdown-menu.d.ts +0 -15
  1041. package/popover/dropdown/dropdown-trigger.d.ts +0 -16
  1042. package/popover/dropdown/dropdown.d.ts +0 -17
  1043. package/popover/dropdown/dropdown.module.d.ts +0 -15
  1044. package/popover/dropdown/index.d.ts +0 -6
  1045. package/popover/dropdown/menu-positions.d.ts +0 -1
  1046. package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +0 -49
  1047. package/popover/dropdown/providers/dropdown.service.d.ts +0 -16
  1048. package/popover/index.d.ts +0 -4
  1049. package/popover/popover.module.d.ts +0 -9
  1050. package/popover/signpost/index.d.ts +0 -5
  1051. package/popover/signpost/providers/signpost-focus-manager.service.d.ts +0 -8
  1052. package/popover/signpost/providers/signpost-id.service.d.ts +0 -9
  1053. package/popover/signpost/signpost-content.d.ts +0 -57
  1054. package/popover/signpost/signpost-positions.d.ts +0 -10
  1055. package/popover/signpost/signpost-title.d.ts +0 -5
  1056. package/popover/signpost/signpost-trigger.d.ts +0 -29
  1057. package/popover/signpost/signpost.d.ts +0 -27
  1058. package/popover/signpost/signpost.module.d.ts +0 -17
  1059. package/popover/tooltip/index.d.ts +0 -4
  1060. package/popover/tooltip/providers/tooltip-id.service.d.ts +0 -9
  1061. package/popover/tooltip/providers/tooltip-mouse.service.d.ts +0 -15
  1062. package/popover/tooltip/tooltip-content.d.ts +0 -25
  1063. package/popover/tooltip/tooltip-trigger.d.ts +0 -18
  1064. package/popover/tooltip/tooltip.d.ts +0 -6
  1065. package/popover/tooltip/tooltip.module.d.ts +0 -14
  1066. package/progress/progress-bars/index.d.ts +0 -2
  1067. package/progress/progress-bars/progress-bar.d.ts +0 -45
  1068. package/progress/progress-bars/progress-bar.module.d.ts +0 -10
  1069. package/progress/spinner/index.d.ts +0 -2
  1070. package/progress/spinner/spinner.d.ts +0 -32
  1071. package/progress/spinner/spinner.module.d.ts +0 -10
  1072. package/timeline/enums/timeline-layout.enum.d.ts +0 -4
  1073. package/timeline/enums/timeline-step-state.enum.d.ts +0 -7
  1074. package/timeline/index.d.ts +0 -8
  1075. package/timeline/interface/icon-attribute.interface.d.ts +0 -6
  1076. package/timeline/providers/timeline-icon-attribute.service.d.ts +0 -12
  1077. package/timeline/timeline-step-description.d.ts +0 -5
  1078. package/timeline/timeline-step-header.d.ts +0 -5
  1079. package/timeline/timeline-step-title.d.ts +0 -15
  1080. package/timeline/timeline-step.d.ts +0 -19
  1081. package/timeline/timeline.d.ts +0 -8
  1082. package/timeline/timeline.module.d.ts +0 -15
  1083. package/utils/animations/collapse/collapse.d.ts +0 -2
  1084. package/utils/animations/collapse/index.d.ts +0 -1
  1085. package/utils/animations/constants.d.ts +0 -2
  1086. package/utils/animations/expandable-animation/base-expandable-animation.d.ts +0 -16
  1087. package/utils/animations/expandable-animation/expandable-animation.d.ts +0 -16
  1088. package/utils/animations/expandable-animation/expandable-animation.directive.d.ts +0 -16
  1089. package/utils/animations/expandable-animation/expandable-animation.module.d.ts +0 -9
  1090. package/utils/animations/expandable-animation/index.d.ts +0 -4
  1091. package/utils/animations/fade/fade.d.ts +0 -2
  1092. package/utils/animations/fade/index.d.ts +0 -1
  1093. package/utils/animations/fade-slide/fade-slide.d.ts +0 -2
  1094. package/utils/animations/fade-slide/index.d.ts +0 -1
  1095. package/utils/animations/index.d.ts +0 -5
  1096. package/utils/animations/slide/index.d.ts +0 -1
  1097. package/utils/animations/slide/slide.d.ts +0 -2
  1098. package/utils/assert/assert.helpers.d.ts +0 -1
  1099. package/utils/breakpoints/breakpoints.d.ts +0 -15
  1100. package/utils/cdk/cdk-drag.module.d.ts +0 -25
  1101. package/utils/cdk/cdk-trap-focus.module.d.ts +0 -24
  1102. package/utils/chocolate/oompa-loompa.d.ts +0 -13
  1103. package/utils/chocolate/willy-wonka.d.ts +0 -11
  1104. package/utils/component/is-boolean-attribute-set.d.ts +0 -1
  1105. package/utils/conditional/conditional.module.d.ts +0 -12
  1106. package/utils/conditional/if-active.directive.d.ts +0 -38
  1107. package/utils/conditional/if-active.service.d.ts +0 -45
  1108. package/utils/conditional/if-expanded.directive.d.ts +0 -24
  1109. package/utils/conditional/if-expanded.service.d.ts +0 -20
  1110. package/utils/conditional/if-open.directive.d.ts +0 -36
  1111. package/utils/conditional/index.d.ts +0 -4
  1112. package/utils/destroy/destroy.service.d.ts +0 -32
  1113. package/utils/destroy/index.d.ts +0 -1
  1114. package/utils/dom-adapter/dom-adapter.d.ts +0 -12
  1115. package/utils/enums/keys.enum.d.ts +0 -24
  1116. package/utils/focus/arrow-key-direction.enum.d.ts +0 -6
  1117. package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +0 -19
  1118. package/utils/focus/focus-on-view-init/focus-on-view-init.module.d.ts +0 -10
  1119. package/utils/focus/focus-on-view-init/focus-on-view-init.provider.d.ts +0 -6
  1120. package/utils/focus/focus-on-view-init/index.d.ts +0 -3
  1121. package/utils/focus/focus-trap/index.d.ts +0 -1
  1122. package/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.d.ts +0 -13
  1123. package/utils/focus/focus.service.d.ts +0 -26
  1124. package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +0 -20
  1125. package/utils/focus/focusable-item/custom-focusable-item-provider.d.ts +0 -6
  1126. package/utils/focus/focusable-item/focusable-item.d.ts +0 -12
  1127. package/utils/focus/focusable-item/linkers.d.ts +0 -13
  1128. package/utils/focus/key-focus/enums/focus-direction.enum.d.ts +0 -5
  1129. package/utils/focus/key-focus/index.d.ts +0 -2
  1130. package/utils/focus/key-focus/interfaces.d.ts +0 -5
  1131. package/utils/focus/key-focus/key-focus-item.d.ts +0 -11
  1132. package/utils/focus/key-focus/key-focus.d.ts +0 -44
  1133. package/utils/focus/key-focus/key-focus.module.d.ts +0 -10
  1134. package/utils/focus/key-focus/roving-tabindex.d.ts +0 -19
  1135. package/utils/focus/key-focus/util.d.ts +0 -3
  1136. package/utils/focus/wrap-observable.d.ts +0 -2
  1137. package/utils/forms/validation.d.ts +0 -2
  1138. package/utils/host-wrapping/empty-anchor.d.ts +0 -5
  1139. package/utils/host-wrapping/host-wrapper.d.ts +0 -11
  1140. package/utils/host-wrapping/host-wrapping.module.d.ts +0 -10
  1141. package/utils/i18n/common-strings.default.d.ts +0 -2
  1142. package/utils/i18n/common-strings.interface.d.ts +0 -309
  1143. package/utils/i18n/common-strings.service.d.ts +0 -21
  1144. package/utils/i18n/index.d.ts +0 -3
  1145. package/utils/id-generator/id-generator.service.d.ts +0 -1
  1146. package/utils/index.d.ts +0 -8
  1147. package/utils/loading/index.d.ts +0 -3
  1148. package/utils/loading/loading-listener.d.ts +0 -8
  1149. package/utils/loading/loading.d.ts +0 -20
  1150. package/utils/loading/loading.module.d.ts +0 -10
  1151. package/utils/outside-click/index.d.ts +0 -3
  1152. package/utils/outside-click/outside-click.d.ts +0 -11
  1153. package/utils/outside-click/outside-click.module.d.ts +0 -8
  1154. package/utils/popover/enums/alignment.enum.d.ts +0 -5
  1155. package/utils/popover/enums/axis.enum.d.ts +0 -4
  1156. package/utils/popover/enums/positions.enum.d.ts +0 -23
  1157. package/utils/popover/enums/side.enum.d.ts +0 -4
  1158. package/utils/popover/enums/viewport-violation.enum.d.ts +0 -6
  1159. package/utils/popover/index.d.ts +0 -14
  1160. package/utils/popover/interfaces/popover-content-offset.interface.d.ts +0 -4
  1161. package/utils/popover/interfaces/popover-position.interface.d.ts +0 -16
  1162. package/utils/popover/interfaces/visibility-coords.interface.d.ts +0 -6
  1163. package/utils/popover/popover-anchor.d.ts +0 -8
  1164. package/utils/popover/popover-close-button.d.ts +0 -17
  1165. package/utils/popover/popover-content.d.ts +0 -42
  1166. package/utils/popover/popover-host.directive.d.ts +0 -6
  1167. package/utils/popover/popover-open-close-button.d.ts +0 -13
  1168. package/utils/popover/popover.module.d.ts +0 -10
  1169. package/utils/popover/position-operators.d.ts +0 -10
  1170. package/utils/popover/providers/popover-events.service.d.ts +0 -34
  1171. package/utils/popover/providers/popover-position.service.d.ts +0 -24
  1172. package/utils/popover/providers/popover-toggle.service.d.ts +0 -28
  1173. package/utils/popover/stop-escape-propagation.directive.d.ts +0 -14
  1174. package/utils/scrolling/scrolling-service.d.ts +0 -9
  1175. package/utils/template-ref/index.d.ts +0 -3
  1176. package/utils/template-ref/template-ref-container.d.ts +0 -7
  1177. package/utils/template-ref/template-ref.module.d.ts +0 -8
  1178. package/wizard/heading-level.d.ts +0 -1
  1179. package/wizard/index.d.ts +0 -13
  1180. package/wizard/providers/button-hub.service.d.ts +0 -20
  1181. package/wizard/providers/header-actions.service.d.ts +0 -15
  1182. package/wizard/providers/page-collection.service.d.ts +0 -196
  1183. package/wizard/providers/wizard-navigation.service.d.ts +0 -366
  1184. package/wizard/wizard-button.d.ts +0 -28
  1185. package/wizard/wizard-header-action.d.ts +0 -12
  1186. package/wizard/wizard-page-buttons.d.ts +0 -8
  1187. package/wizard/wizard-page-header-actions.d.ts +0 -8
  1188. package/wizard/wizard-page-navtitle.d.ts +0 -8
  1189. package/wizard/wizard-page-title.d.ts +0 -10
  1190. package/wizard/wizard-page.d.ts +0 -494
  1191. package/wizard/wizard-stepnav-item.d.ts +0 -42
  1192. package/wizard/wizard-stepnav.d.ts +0 -9
  1193. package/wizard/wizard-title.d.ts +0 -7
  1194. package/wizard/wizard.d.ts +0 -259
  1195. package/wizard/wizard.module.d.ts +0 -22
@@ -1,575 +0,0 @@
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
- import { Injectable } from '@angular/core';
8
- import { Subject } from 'rxjs';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "./page-collection.service";
11
- import * as i2 from "./button-hub.service";
12
- /**
13
- * Performs navigation functions for a wizard and manages the current page. Presented as a
14
- * separate service to encapsulate the behavior of navigating and completing the wizard so
15
- * that it can be shared across the wizard and its sub-components.
16
- *
17
- * The easiest way to access the navigation service is there a reference on your wizard. The
18
- * Following example would allow you to access your instance of the wizard from your host
19
- * component and thereby access the navigation service via YourHostComponent.wizard.navService.
20
- *
21
- * @example
22
- * <clr-wizard #wizard ...>
23
- *
24
- * @example
25
- * export class YourHostComponent {
26
- * @ViewChild("wizard") wizard: Wizard;
27
- * ...
28
- * }
29
- *
30
- */
31
- export class WizardNavigationService {
32
- /**
33
- * Creates an instance of WizardNavigationService. Also sets up subscriptions
34
- * that listen to the button service to determine when a button has been clicked
35
- * in the wizard. Is also responsible for taking action when the page collection
36
- * requests that navigation be reset to its pristine state.
37
- *
38
- * @memberof WizardNavigationService
39
- */
40
- constructor(pageCollection, buttonService) {
41
- this.pageCollection = pageCollection;
42
- this.buttonService = buttonService;
43
- /**
44
- * A Boolean flag used by the ClrWizardPage to avoid a race condition when pages are
45
- * loading and there is no current page defined.
46
- *
47
- * @memberof WizardNavigationService
48
- */
49
- this.navServiceLoaded = false;
50
- /**
51
- * A boolean flag shared across the Wizard subcomponents that follows the value
52
- * of the Wizard.forceForward (clrWizardForceForwardNavigation) input. When true,
53
- * navigating backwards in the stepnav menu will reset any skipped pages' completed
54
- * state to false.
55
- *
56
- * This is useful when a wizard executes validation on a page-by-page basis when
57
- * the next button is clicked.
58
- *
59
- * @memberof WizardNavigationService
60
- */
61
- this.forceForwardNavigation = false;
62
- /**
63
- * A boolean flag shared across the Wizard subcomponents that follows the value
64
- * of the Wizard.stopCancel (clrWizardPreventDefaultCancel) input. When true, the cancel
65
- * routine is subverted and must be reinstated in the host component calling Wizard.close()
66
- * at some point.
67
- *
68
- * @memberof WizardNavigationService
69
- */
70
- this.wizardHasAltCancel = false;
71
- /**
72
- * A boolean flag shared across the Wizard subcomponents that follows the value
73
- * of the Wizard.stopNext (clrWizardPreventDefaultNext) input. When true, the next and finish
74
- * routines are subverted and must be reinstated in the host component calling Wizard.next(),
75
- * Wizard.forceNext(), Wizard.finish(), or Wizard.forceFinish().
76
- *
77
- * @memberof WizardNavigationService
78
- */
79
- this.wizardHasAltNext = false;
80
- /**
81
- * A boolean flag shared across the Wizard subcomponents that follows the value
82
- * of the Wizard.stopNavigation (clrWizardPreventNavigation) input. When true, all
83
- * navigational elements in the wizard are disabled.
84
- *
85
- * This is intended to freeze the wizard in place. Events are not fired so this is
86
- * not a way to implement alternate functionality for navigation.
87
- *
88
- * @memberof WizardNavigationService
89
- */
90
- this.wizardStopNavigation = false;
91
- /**
92
- * A boolean flag shared with the stepnav items that prevents user clicks on
93
- * stepnav items from navigating the wizard.
94
- *
95
- * @memberof WizardNavigationService
96
- */
97
- this.wizardDisableStepnav = false;
98
- /**
99
- *
100
- * @memberof WizardNavigationService
101
- */
102
- this._currentChanged = new Subject();
103
- /**
104
- * @memberof WizardNavigationService
105
- */
106
- this._movedToNextPage = new Subject();
107
- /**
108
- * @memberof WizardNavigationService
109
- */
110
- this._wizardFinished = new Subject();
111
- /**
112
- * @memberof WizardNavigationService
113
- */
114
- this._movedToPreviousPage = new Subject();
115
- /**
116
- * @memberof WizardNavigationService
117
- */
118
- this._cancelWizard = new Subject();
119
- this.previousButtonSubscription = buttonService.previousBtnClicked.subscribe(() => {
120
- const currentPage = this.currentPage;
121
- if (this.currentPageIsFirst || currentPage.previousStepDisabled) {
122
- return;
123
- }
124
- currentPage.previousButtonClicked.emit(currentPage);
125
- if (!currentPage.preventDefault) {
126
- this.previous();
127
- }
128
- });
129
- this.nextButtonSubscription = buttonService.nextBtnClicked.subscribe(() => {
130
- this.checkAndCommitCurrentPage('next');
131
- });
132
- this.dangerButtonSubscription = buttonService.dangerBtnClicked.subscribe(() => {
133
- this.checkAndCommitCurrentPage('danger');
134
- });
135
- this.finishButtonSubscription = buttonService.finishBtnClicked.subscribe(() => {
136
- this.checkAndCommitCurrentPage('finish');
137
- });
138
- this.customButtonSubscription = buttonService.customBtnClicked.subscribe((type) => {
139
- if (!this.wizardStopNavigation) {
140
- this.currentPage.customButtonClicked.emit(type);
141
- }
142
- });
143
- this.cancelButtonSubscription = buttonService.cancelBtnClicked.subscribe(() => {
144
- if (this.wizardStopNavigation) {
145
- return;
146
- }
147
- if (this.currentPage.preventDefault) {
148
- this.currentPage.pageOnCancel.emit(this.currentPage);
149
- }
150
- else {
151
- this.cancel();
152
- }
153
- });
154
- this.pagesResetSubscription = pageCollection.pagesReset.subscribe(() => {
155
- this.setFirstPageCurrent();
156
- });
157
- }
158
- /**
159
- * An Observable that is predominantly used amongst the subcomponents and services
160
- * of the wizard. It is recommended that users listen to the ClrWizardPage.onLoad
161
- * (clrWizardPageOnLoad) output instead of this Observable.
162
- *
163
- * @memberof WizardNavigationService
164
- */
165
- get currentPageChanged() {
166
- // TODO: MAKE SURE EXTERNAL OUTPUTS SAY 'CHANGE' NOT 'CHANGED'
167
- // A BREAKING CHANGE SO AWAITING MINOR RELEASE
168
- return this._currentChanged.asObservable();
169
- }
170
- /**
171
- * @memberof WizardNavigationService
172
- */
173
- get currentPageTitle() {
174
- // when the querylist of pages is empty. this is the first place it fails...
175
- if (!this.currentPage) {
176
- return null;
177
- }
178
- return this.currentPage.title;
179
- }
180
- /**
181
- * Returns a Boolean that tells you whether or not the current page is the first
182
- * page in the Wizard.
183
- *
184
- * This is helpful for determining whether a page is navigable.
185
- *
186
- * @memberof WizardNavigationService
187
- */
188
- get currentPageIsFirst() {
189
- return this.pageCollection.firstPage === this.currentPage;
190
- }
191
- /**
192
- * Returns a Boolean that tells you whether or not the current page is the
193
- * last page in the Wizard.
194
- *
195
- * This is used to determine which buttons should display in the wizard footer.
196
- *
197
- * @memberof WizardNavigationService
198
- */
199
- get currentPageIsLast() {
200
- return this.pageCollection.lastPage === this.currentPage;
201
- }
202
- /**
203
- * Returns the ClrWizardPage object of the current page or null.
204
- *
205
- * @memberof WizardNavigationService
206
- */
207
- get currentPage() {
208
- if (!this._currentPage) {
209
- return null;
210
- }
211
- return this._currentPage;
212
- }
213
- /**
214
- * Accepts a ClrWizardPage object, since that object to be the current/active
215
- * page in the wizard, and emits the ClrWizardPage.onLoad (clrWizardPageOnLoad)
216
- * event for that page.
217
- *
218
- * Note that all of this work is bypassed if the ClrWizardPage object is already
219
- * the current page.
220
- *
221
- * @memberof WizardNavigationService
222
- */
223
- set currentPage(page) {
224
- if (this._currentPage !== page && !this.wizardStopNavigation) {
225
- this._currentPage = page;
226
- page.onLoad.emit(page.id);
227
- this._currentChanged.next(page);
228
- }
229
- }
230
- /**
231
- * An observable used internally to alert the wizard that forward navigation
232
- * has occurred. It is recommended that you use the Wizard.onMoveNext
233
- * (clrWizardOnNext) output instead of this one.
234
- *
235
- * @memberof WizardNavigationService
236
- */
237
- get movedToNextPage() {
238
- return this._movedToNextPage.asObservable();
239
- }
240
- /**
241
- * An observable used internally to alert the wizard that the nav service
242
- * has approved completion of the wizard.
243
- *
244
- * It is recommended that you use the Wizard.wizardFinished (clrWizardOnFinish)
245
- * output instead of this one.
246
- *
247
- * @memberof WizardNavigationService
248
- */
249
- get wizardFinished() {
250
- return this._wizardFinished.asObservable();
251
- }
252
- /**
253
- * Notifies the wizard when backwards navigation has occurred via the
254
- * previous button.
255
- *
256
- * @memberof WizardNavigationService
257
- */
258
- get movedToPreviousPage() {
259
- return this._movedToPreviousPage.asObservable();
260
- }
261
- /**
262
- * Notifies the wizard that a user is trying to cancel it.
263
- *
264
- * @memberof WizardNavigationService
265
- */
266
- get notifyWizardCancel() {
267
- return this._cancelWizard.asObservable();
268
- }
269
- /**
270
- *
271
- * @memberof WizardNavigationService
272
- */
273
- ngOnDestroy() {
274
- this.previousButtonSubscription.unsubscribe();
275
- this.nextButtonSubscription.unsubscribe();
276
- this.dangerButtonSubscription.unsubscribe();
277
- this.finishButtonSubscription.unsubscribe();
278
- this.customButtonSubscription.unsubscribe();
279
- this.cancelButtonSubscription.unsubscribe();
280
- this.pagesResetSubscription.unsubscribe();
281
- }
282
- /**
283
- * This is a public function that can be used to programmatically advance
284
- * the user to the next page.
285
- *
286
- * When invoked, this method will move the wizard to the next page after
287
- * successful validation. Note that this method goes through all checks
288
- * and event emissions as if Wizard.next(false) had been called.
289
- *
290
- * In most cases, it makes more sense to use Wizard.next(false).
291
- *
292
- * @memberof WizardNavigationService
293
- */
294
- next() {
295
- if (this.currentPageIsLast) {
296
- this.checkAndCommitCurrentPage('finish');
297
- }
298
- else {
299
- this.checkAndCommitCurrentPage('next');
300
- }
301
- }
302
- /**
303
- * Bypasses checks and most event emissions to force a page to navigate forward.
304
- *
305
- * Comparable to calling Wizard.next() or Wizard.forceNext().
306
- *
307
- * @memberof WizardNavigationService
308
- */
309
- forceNext() {
310
- const currentPage = this.currentPage;
311
- const nextPage = this.pageCollection.getNextPage(currentPage);
312
- // catch errant null or undefineds that creep in
313
- if (!nextPage) {
314
- throw new Error('The wizard has no next page to go to.');
315
- }
316
- if (this.wizardStopNavigation) {
317
- return;
318
- }
319
- if (!currentPage.completed) {
320
- // this is a state that alt next flows can get themselves in...
321
- this.pageCollection.commitPage(currentPage);
322
- }
323
- this.currentPage = nextPage;
324
- }
325
- /**
326
- * Accepts a button/action type as a parameter. Encapsulates all logic for
327
- * event emissions, state of the current page, and wizard and page level overrides.
328
- *
329
- * Avoid calling this function directly unless you really know what you're doing.
330
- *
331
- * @memberof WizardNavigationService
332
- */
333
- checkAndCommitCurrentPage(buttonType) {
334
- const currentPage = this.currentPage;
335
- if (!currentPage.readyToComplete || this.wizardStopNavigation) {
336
- return;
337
- }
338
- const iAmTheLastPage = this.currentPageIsLast;
339
- const isNext = buttonType === 'next';
340
- const isDanger = buttonType === 'danger';
341
- const isDangerNext = isDanger && !iAmTheLastPage;
342
- const isDangerFinish = isDanger && iAmTheLastPage;
343
- const isFinish = buttonType === 'finish' || isDangerFinish;
344
- if (isFinish && !iAmTheLastPage) {
345
- return;
346
- }
347
- currentPage.primaryButtonClicked.emit(buttonType);
348
- if (isFinish) {
349
- currentPage.finishButtonClicked.emit(currentPage);
350
- }
351
- else if (isDanger) {
352
- currentPage.dangerButtonClicked.emit();
353
- }
354
- else if (isNext) {
355
- currentPage.nextButtonClicked.emit();
356
- }
357
- if (currentPage.stopNext || currentPage.preventDefault) {
358
- currentPage.onCommit.emit(currentPage.id);
359
- return;
360
- }
361
- // order is very important with these emitters!
362
- if (isFinish) {
363
- // mark page as complete
364
- if (!this.wizardHasAltNext) {
365
- this.pageCollection.commitPage(currentPage);
366
- }
367
- this._wizardFinished.next();
368
- }
369
- if (this.wizardHasAltNext) {
370
- this.pageCollection.commitPage(currentPage);
371
- if (isNext || isDangerNext) {
372
- this._movedToNextPage.next(true);
373
- }
374
- // jump out here, no matter what type we're looking at
375
- return;
376
- }
377
- if (isNext || isDangerNext) {
378
- this.forceNext();
379
- }
380
- if (!this.wizardHasAltNext && !this.wizardStopNavigation) {
381
- this._movedToNextPage.next(true);
382
- }
383
- }
384
- /**
385
- * This is a public function that can be used to programmatically conclude
386
- * the wizard.
387
- *
388
- * When invoked, this method will initiate the work involved with finalizing
389
- * and finishing the wizard workflow. Note that this method goes through all
390
- * checks and event emissions as if Wizard.finish(false) had been called.
391
- *
392
- * In most cases, it makes more sense to use Wizard.finish(false).
393
- *
394
- * @memberof WizardNavigationService
395
- */
396
- finish() {
397
- this.checkAndCommitCurrentPage('finish');
398
- }
399
- /**
400
- * Programmatically moves the wizard to the page before the current page.
401
- *
402
- * In most instances, it makes more sense to call Wizard.previous()
403
- * which does the same thing.
404
- *
405
- * @memberof WizardNavigationService
406
- */
407
- previous() {
408
- if (this.currentPageIsFirst || this.wizardStopNavigation) {
409
- return;
410
- }
411
- const previousPage = this.pageCollection.getPreviousPage(this.currentPage);
412
- if (!previousPage) {
413
- return;
414
- }
415
- this._movedToPreviousPage.next(true);
416
- if (this.forceForwardNavigation) {
417
- this.currentPage.completed = false;
418
- }
419
- this.currentPage = previousPage;
420
- }
421
- /**
422
- * Allows a hook into the cancel workflow of the wizard from the nav service. Note that
423
- * this route goes through all checks and event emissions as if a cancel button had
424
- * been clicked.
425
- *
426
- * In most cases, users looking for a hook into the cancel routine are actually looking
427
- * for a way to close the wizard from their host component because they have prevented
428
- * the default cancel action.
429
- *
430
- * In this instance, it is recommended that you use Wizard.close() to avoid any event
431
- * emission loop resulting from an event handler calling back into routine that will
432
- * again evoke the events it handles.
433
- *
434
- * @memberof WizardNavigationService
435
- */
436
- cancel() {
437
- this._cancelWizard.next();
438
- }
439
- /**
440
- * Performs all required checks to determine if a user can navigate to a page. Checking at each
441
- * point if a page is navigable -- completed where the page immediately after the last completed
442
- * page.
443
- *
444
- * Takes two parameters. The first one must be either the ClrWizardPage object or the ID of the
445
- * ClrWizardPage object that you want to make the current page.
446
- *
447
- * The second parameter is optional and is a Boolean flag for "lazy completion". What this means
448
- * is the Wizard will mark all pages between the current page and the page you want to navigate
449
- * to as completed. This is useful for informational wizards that do not require user action,
450
- * allowing an easy means for users to jump ahead.
451
- *
452
- * To avoid checks on navigation, use ClrWizardPage.makeCurrent() instead.
453
- *
454
- * @memberof WizardNavigationService
455
- */
456
- goTo(pageToGoToOrId, lazyComplete = false) {
457
- const myPages = this.pageCollection;
458
- const pageToGoTo = typeof pageToGoToOrId === 'string' ? myPages.getPageById(pageToGoToOrId) : pageToGoToOrId;
459
- const currentPage = this.currentPage;
460
- // no point in going to the current page. you're there already!
461
- // also hard block on any navigation when stopNavigation is true
462
- if (pageToGoTo === currentPage || this.wizardStopNavigation) {
463
- return;
464
- }
465
- const currentPageIndex = myPages.getPageIndex(currentPage);
466
- const goToPageIndex = myPages.getPageIndex(pageToGoTo);
467
- const goingForward = goToPageIndex > currentPageIndex;
468
- const pagesToCheck = myPages.getPageRangeFromPages(this.currentPage, pageToGoTo);
469
- const okayToMove = lazyComplete || this.canGoTo(pagesToCheck);
470
- if (!okayToMove) {
471
- return;
472
- }
473
- if (goingForward && lazyComplete) {
474
- pagesToCheck.forEach((page) => {
475
- if (page !== pageToGoTo) {
476
- page.completed = true;
477
- }
478
- });
479
- }
480
- else if (!goingForward && this.forceForwardNavigation) {
481
- pagesToCheck.forEach((page) => {
482
- page.completed = false;
483
- });
484
- }
485
- this.currentPage = pageToGoTo;
486
- }
487
- /**
488
- * Accepts a range of ClrWizardPage objects as a parameter. Performs the work of checking
489
- * those objects to determine if navigation can be accomplished.
490
- *
491
- * @memberof WizardNavigationService
492
- */
493
- canGoTo(pagesToCheck) {
494
- let okayToMove = true;
495
- const myPages = this.pageCollection;
496
- // previous page can be important when moving because if it's completed it
497
- // allows us to move to the page even if it's incomplete...
498
- let previousPagePasses;
499
- if (!pagesToCheck || pagesToCheck.length < 1) {
500
- return false;
501
- }
502
- pagesToCheck.forEach((page) => {
503
- if (!okayToMove) {
504
- return;
505
- }
506
- if (page.completed) {
507
- // default is true. just jump out instead of complicating it.
508
- return;
509
- }
510
- // so we know our page is not completed...
511
- const previousPage = myPages.getPageIndex(page) > 0 ? myPages.getPreviousPage(page) : null;
512
- previousPagePasses = previousPage === null || previousPage.completed === true;
513
- // we are false if not the current page AND previous page is not completed
514
- // (but must have a previous page)
515
- if (!page.current && !previousPagePasses) {
516
- okayToMove = false;
517
- }
518
- // falls through to true as default
519
- });
520
- return okayToMove;
521
- }
522
- /**
523
- * Looks through the collection of pages to find the first one that is incomplete
524
- * and makes that page the current/active page.
525
- *
526
- * @memberof WizardNavigationService
527
- */
528
- setLastEnabledPageCurrent() {
529
- const allPages = this.pageCollection.pagesAsArray;
530
- let lastCompletedPageIndex = null;
531
- allPages.forEach((page, index) => {
532
- if (page.completed) {
533
- lastCompletedPageIndex = index;
534
- }
535
- });
536
- if (lastCompletedPageIndex === null) {
537
- // always is at least the first item...
538
- lastCompletedPageIndex = 0;
539
- }
540
- else if (lastCompletedPageIndex + 1 < allPages.length) {
541
- lastCompletedPageIndex = lastCompletedPageIndex + 1;
542
- }
543
- this.currentPage = allPages[lastCompletedPageIndex];
544
- }
545
- /**
546
- * Finds the first page in the collection of pages and makes that page the
547
- * current/active page.
548
- *
549
- * @memberof WizardNavigationService
550
- */
551
- setFirstPageCurrent() {
552
- this.currentPage = this.pageCollection.pagesAsArray[0];
553
- }
554
- /**
555
- * Updates the stepnav on the left side of the wizard when pages are dynamically
556
- * added or removed from the collection of pages.
557
- *
558
- * @memberof WizardNavigationService
559
- */
560
- updateNavigation() {
561
- let toSetCurrent;
562
- this.pageCollection.updateCompletedStates();
563
- const currentPageRemoved = this.pageCollection.pagesAsArray.indexOf(this.currentPage) < 0;
564
- if (currentPageRemoved) {
565
- toSetCurrent = this.pageCollection.findFirstIncompletePage();
566
- this.currentPage = toSetCurrent;
567
- }
568
- }
569
- }
570
- WizardNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WizardNavigationService, deps: [{ token: i1.PageCollectionService }, { token: i2.ButtonHubService }], target: i0.ɵɵFactoryTarget.Injectable });
571
- WizardNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WizardNavigationService });
572
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WizardNavigationService, decorators: [{
573
- type: Injectable
574
- }], ctorParameters: function () { return [{ type: i1.PageCollectionService }, { type: i2.ButtonHubService }]; } });
575
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLW5hdmlnYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3dpemFyZC9wcm92aWRlcnMvd2l6YXJkLW5hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFPM0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7SUFvSmxDOzs7Ozs7O09BT0c7SUFDSCxZQUFtQixjQUFxQyxFQUFTLGFBQStCO1FBQTdFLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQXBHaEc7Ozs7O1dBS0c7UUFDSCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekI7Ozs7Ozs7Ozs7V0FVRztRQUNILDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUUvQjs7Ozs7OztXQU9HO1FBQ0gsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRTNCOzs7Ozs7O1dBT0c7UUFDSCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekI7Ozs7Ozs7OztXQVNHO1FBQ0gseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTdCOzs7OztXQUtHO1FBQ0gseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBTzdCOzs7V0FHRztRQUNLLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFFdkQ7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRWxEOztXQUVHO1FBQ0ssb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTlDOztXQUVHO1FBQ0sseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztR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QUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFNUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxRixJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7U0FDakM7SUFDSCxDQUFDOztxSEExcEJVLHVCQUF1Qjt5SEFBdkIsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDbHJXaXphcmRQYWdlIH0gZnJvbSAnLi4vd2l6YXJkLXBhZ2UnO1xuaW1wb3J0IHsgQnV0dG9uSHViU2VydmljZSB9IGZyb20gJy4vYnV0dG9uLWh1Yi5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VDb2xsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vcGFnZS1jb2xsZWN0aW9uLnNlcnZpY2UnO1xuXG4vKipcbiAqIFBlcmZvcm1zIG5hdmlnYXRpb24gZnVuY3Rpb25zIGZvciBhIHdpemFyZCBhbmQgbWFuYWdlcyB0aGUgY3VycmVudCBwYWdlLiBQcmVzZW50ZWQgYXMgYVxuICogc2VwYXJhdGUgc2VydmljZSB0byBlbmNhcHN1bGF0ZSB0aGUgYmVoYXZpb3Igb2YgbmF2aWdhdGluZyBhbmQgY29tcGxldGluZyB0aGUgd2l6YXJkIHNvXG4gKiB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgYWNyb3NzIHRoZSB3aXphcmQgYW5kIGl0cyBzdWItY29tcG9uZW50cy5cbiAqXG4gKiBUaGUgZWFzaWVzdCB3YXkgdG8gYWNjZXNzIHRoZSBuYXZpZ2F0aW9uIHNlcnZpY2UgaXMgdGhlcmUgYSByZWZlcmVuY2Ugb24geW91ciB3aXphcmQuIFRoZVxuICogRm9sbG93aW5nIGV4YW1wbGUgd291bGQgYWxsb3cgeW91IHRvIGFjY2VzcyB5b3VyIGluc3RhbmNlIG9mIHRoZSB3aXphcmQgZnJvbSB5b3VyIGhvc3RcbiAqIGNvbXBvbmVudCBhbmQgdGhlcmVieSBhY2Nlc3MgdGhlIG5hdmlnYXRpb24gc2VydmljZSB2aWEgWW91ckhvc3RDb21wb25lbnQud2l6YXJkLm5hdlNlcnZpY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIDxjbHItd2l6YXJkICN3aXphcmQgLi4uPlxuICpcbiAqIEBleGFtcGxlXG4gKiBleHBvcnQgY2xhc3MgWW91ckhvc3RDb21wb25lbnQge1xuICogICBAVmlld0NoaWxkKFwid2l6YXJkXCIpIHdpemFyZDogV2l6YXJkO1xuICogICAuLi5cbiAqIH1cbiAqXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBXaXphcmROYXZpZ2F0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBJcyBub3RpZmllZCB3aGVuIGEgcHJldmlvdXMgYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIHdpemFyZC4gUGVyZm9ybXMgY2hlY2tzXG4gICAqIGJlZm9yZSBhbGVydGluZyB0aGUgY3VycmVudCBwYWdlIG9mIHRoZSBidXR0b24gY2xpY2suIEVuYWN0cyBuYXZpZ2F0aW9uIHRvXG4gICAqIHRoZSBwcmV2aW91cyBwYWdlIGlmIG5vdCBvdmVycmlkZGVuIGF0IHRoZSBwYWdlIGxldmVsLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByZXZpb3VzQnV0dG9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIElzIG5vdGlmaWVkIHdoZW4gYSBOZXh0IGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSB3aXphcmQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgbmV4dEJ1dHRvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBJcyBub3RpZmllZCB3aGVuIGEgZGFuZ2VyIGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSB3aXphcmQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZGFuZ2VyQnV0dG9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIElzIG5vdGlmaWVkIHdoZW4gYSAgZmluaXNoIGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSB3aXphcmQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZmluaXNoQnV0dG9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIElzIG5vdGlmaWVkIHdoZW4gYSBDdXN0b20gYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIHdpemFyZC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBjdXN0b21CdXR0b25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogSXMgbm90aWZpZWQgd2hlbiBhIENhbmNlbCBidXR0b24gaXMgY2xpY2tlZCBpbiB0aGUgd2l6YXJkLiBOb3RpZmllcyB0aGUgd2l6YXJkLFxuICAgKiB3aGljaCBoYW5kbGVzIGFsbCBjYW5jZWwgZnVuY3Rpb25hbGl0eSwgaWYgY2FuY2VsIGlzIG5vdCBvdmVycmlkZGVuIGF0IHRoZSBwYWdlXG4gICAqIGxldmVsLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIGNhbmNlbEJ1dHRvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBSZXNldHMgbmF2aWdhdGlvbiB0byBtYWtlIHRoZSBmaXJzdCBwYWdlIGN1cnJlbnQgd2hlbiB0aGUgcGFnZSBjb2xsZWN0aW9uIHNlcnZpY2VcbiAgICogZW1pdHMgYW4gZXZlbnQgbm90aWZ5aW5nIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlIHRoYXQgaXQgaGFzIHJlc2V0IGFsbCBwYWdlc1xuICAgKiB0byB0aGVpciBwcmlzdGluZSwgaW5jb21wbGV0ZSBzdGF0ZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBwYWdlc1Jlc2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIEEgQm9vbGVhbiBmbGFnIHVzZWQgYnkgdGhlIENscldpemFyZFBhZ2UgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbiB3aGVuIHBhZ2VzIGFyZVxuICAgKiBsb2FkaW5nIGFuZCB0aGVyZSBpcyBubyBjdXJyZW50IHBhZ2UgZGVmaW5lZC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBuYXZTZXJ2aWNlTG9hZGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBmbGFnIHNoYXJlZCBhY3Jvc3MgdGhlIFdpemFyZCBzdWJjb21wb25lbnRzIHRoYXQgZm9sbG93cyB0aGUgdmFsdWVcbiAgICogb2YgdGhlIFdpemFyZC5mb3JjZUZvcndhcmQgKGNscldpemFyZEZvcmNlRm9yd2FyZE5hdmlnYXRpb24pIGlucHV0LiBXaGVuIHRydWUsXG4gICAqIG5hdmlnYXRpbmcgYmFja3dhcmRzIGluIHRoZSBzdGVwbmF2IG1lbnUgd2lsbCByZXNldCBhbnkgc2tpcHBlZCBwYWdlcycgY29tcGxldGVkXG4gICAqIHN0YXRlIHRvIGZhbHNlLlxuICAgKlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgd2l6YXJkIGV4ZWN1dGVzIHZhbGlkYXRpb24gb24gYSBwYWdlLWJ5LXBhZ2UgYmFzaXMgd2hlblxuICAgKiB0aGUgbmV4dCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBmb3JjZUZvcndhcmROYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBmbGFnIHNoYXJlZCBhY3Jvc3MgdGhlIFdpemFyZCBzdWJjb21wb25lbnRzIHRoYXQgZm9sbG93cyB0aGUgdmFsdWVcbiAgICogb2YgdGhlIFdpemFyZC5zdG9wQ2FuY2VsIChjbHJXaXphcmRQcmV2ZW50RGVmYXVsdENhbmNlbCkgaW5wdXQuIFdoZW4gdHJ1ZSwgdGhlIGNhbmNlbFxuICAgKiByb3V0aW5lIGlzIHN1YnZlcnRlZCBhbmQgbXVzdCBiZSByZWluc3RhdGVkIGluIHRoZSBob3N0IGNvbXBvbmVudCBjYWxsaW5nIFdpemFyZC5jbG9zZSgpXG4gICAqIGF0IHNvbWUgcG9pbnQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgd2l6YXJkSGFzQWx0Q2FuY2VsID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBmbGFnIHNoYXJlZCBhY3Jvc3MgdGhlIFdpemFyZCBzdWJjb21wb25lbnRzIHRoYXQgZm9sbG93cyB0aGUgdmFsdWVcbiAgICogb2YgdGhlIFdpemFyZC5zdG9wTmV4dCAoY2xyV2l6YXJkUHJldmVudERlZmF1bHROZXh0KSBpbnB1dC4gV2hlbiB0cnVlLCB0aGUgbmV4dCBhbmQgZmluaXNoXG4gICAqIHJvdXRpbmVzIGFyZSBzdWJ2ZXJ0ZWQgYW5kIG11c3QgYmUgcmVpbnN0YXRlZCBpbiB0aGUgaG9zdCBjb21wb25lbnQgY2FsbGluZyBXaXphcmQubmV4dCgpLFxuICAgKiBXaXphcmQuZm9yY2VOZXh0KCksIFdpemFyZC5maW5pc2goKSwgb3IgV2l6YXJkLmZvcmNlRmluaXNoKCkuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgd2l6YXJkSGFzQWx0TmV4dCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4gZmxhZyBzaGFyZWQgYWNyb3NzIHRoZSBXaXphcmQgc3ViY29tcG9uZW50cyB0aGF0IGZvbGxvd3MgdGhlIHZhbHVlXG4gICAqIG9mIHRoZSBXaXphcmQuc3RvcE5hdmlnYXRpb24gKGNscldpemFyZFByZXZlbnROYXZpZ2F0aW9uKSBpbnB1dC4gV2hlbiB0cnVlLCBhbGxcbiAgICogbmF2aWdhdGlvbmFsIGVsZW1lbnRzIGluIHRoZSB3aXphcmQgYXJlIGRpc2FibGVkLlxuICAgKlxuICAgKiBUaGlzIGlzIGludGVuZGVkIHRvIGZyZWV6ZSB0aGUgd2l6YXJkIGluIHBsYWNlLiBFdmVudHMgYXJlIG5vdCBmaXJlZCBzbyB0aGlzIGlzXG4gICAqIG5vdCBhIHdheSB0byBpbXBsZW1lbnQgYWx0ZXJuYXRlIGZ1bmN0aW9uYWxpdHkgZm9yIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgd2l6YXJkU3RvcE5hdmlnYXRpb24gPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBib29sZWFuIGZsYWcgc2hhcmVkIHdpdGggdGhlIHN0ZXBuYXYgaXRlbXMgdGhhdCBwcmV2ZW50cyB1c2VyIGNsaWNrcyBvblxuICAgKiBzdGVwbmF2IGl0ZW1zIGZyb20gbmF2aWdhdGluZyB0aGUgd2l6YXJkLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHdpemFyZERpc2FibGVTdGVwbmF2ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3VycmVudFBhZ2U6IENscldpemFyZFBhZ2U7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3VycmVudENoYW5nZWQgPSBuZXcgU3ViamVjdDxDbHJXaXphcmRQYWdlPigpO1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByaXZhdGUgX21vdmVkVG9OZXh0UGFnZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBfd2l6YXJkRmluaXNoZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByaXZhdGUgX21vdmVkVG9QcmV2aW91c1BhZ2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHByaXZhdGUgX2NhbmNlbFdpemFyZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2UuIEFsc28gc2V0cyB1cCBzdWJzY3JpcHRpb25zXG4gICAqIHRoYXQgbGlzdGVuIHRvIHRoZSBidXR0b24gc2VydmljZSB0byBkZXRlcm1pbmUgd2hlbiBhIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkXG4gICAqIGluIHRoZSB3aXphcmQuIElzIGFsc28gcmVzcG9uc2libGUgZm9yIHRha2luZyBhY3Rpb24gd2hlbiB0aGUgcGFnZSBjb2xsZWN0aW9uXG4gICAqIHJlcXVlc3RzIHRoYXQgbmF2aWdhdGlvbiBiZSByZXNldCB0byBpdHMgcHJpc3RpbmUgc3RhdGUuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIHBhZ2VDb2xsZWN0aW9uOiBQYWdlQ29sbGVjdGlvblNlcnZpY2UsIHB1YmxpYyBidXR0b25TZXJ2aWNlOiBCdXR0b25IdWJTZXJ2aWNlKSB7XG4gICAgdGhpcy5wcmV2aW91c0J1dHRvblN1YnNjcmlwdGlvbiA9IGJ1dHRvblNlcnZpY2UucHJldmlvdXNCdG5DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMuY3VycmVudFBhZ2U7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UGFnZUlzRmlyc3QgfHwgY3VycmVudFBhZ2UucHJldmlvdXNTdGVwRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY3VycmVudFBhZ2UucHJldmlvdXNCdXR0b25DbGlja2VkLmVtaXQoY3VycmVudFBhZ2UpO1xuICAgICAgaWYgKCFjdXJyZW50UGFnZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICB0aGlzLnByZXZpb3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5leHRCdXR0b25TdWJzY3JpcHRpb24gPSBidXR0b25TZXJ2aWNlLm5leHRCdG5DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrQW5kQ29tbWl0Q3VycmVudFBhZ2UoJ25leHQnKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGFuZ2VyQnV0dG9uU3Vic2NyaXB0aW9uID0gYnV0dG9uU2VydmljZS5kYW5nZXJCdG5DbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrQW5kQ29tbWl0Q3VycmVudFBhZ2UoJ2RhbmdlcicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5maW5pc2hCdXR0b25TdWJzY3JpcHRpb24gPSBidXR0b25TZXJ2aWNlLmZpbmlzaEJ0bkNsaWNrZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZSgnZmluaXNoJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmN1c3RvbUJ1dHRvblN1YnNjcmlwdGlvbiA9IGJ1dHRvblNlcnZpY2UuY3VzdG9tQnRuQ2xpY2tlZC5zdWJzY3JpYmUoKHR5cGU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCF0aGlzLndpemFyZFN0b3BOYXZpZ2F0aW9uKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UuY3VzdG9tQnV0dG9uQ2xpY2tlZC5lbWl0KHR5cGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jYW5jZWxCdXR0b25TdWJzY3JpcHRpb24gPSBidXR0b25TZXJ2aWNlLmNhbmNlbEJ0bkNsaWNrZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLndpemFyZFN0b3BOYXZpZ2F0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UucHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZS5wYWdlT25DYW5jZWwuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnBhZ2VzUmVzZXRTdWJzY3JpcHRpb24gPSBwYWdlQ29sbGVjdGlvbi5wYWdlc1Jlc2V0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNldEZpcnN0UGFnZUN1cnJlbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBPYnNlcnZhYmxlIHRoYXQgaXMgcHJlZG9taW5hbnRseSB1c2VkIGFtb25nc3QgdGhlIHN1YmNvbXBvbmVudHMgYW5kIHNlcnZpY2VzXG4gICAqIG9mIHRoZSB3aXphcmQuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdXNlcnMgbGlzdGVuIHRvIHRoZSBDbHJXaXphcmRQYWdlLm9uTG9hZFxuICAgKiAoY2xyV2l6YXJkUGFnZU9uTG9hZCkgb3V0cHV0IGluc3RlYWQgb2YgdGhpcyBPYnNlcnZhYmxlLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIGdldCBjdXJyZW50UGFnZUNoYW5nZWQoKTogT2JzZXJ2YWJsZTxDbHJXaXphcmRQYWdlPiB7XG4gICAgLy8gVE9ETzogTUFLRSBTVVJFIEVYVEVSTkFMIE9VVFBVVFMgU0FZICdDSEFOR0UnIE5PVCAnQ0hBTkdFRCdcbiAgICAvLyBBIEJSRUFLSU5HIENIQU5HRSBTTyBBV0FJVElORyBNSU5PUiBSRUxFQVNFXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZ2V0IGN1cnJlbnRQYWdlVGl0bGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgLy8gd2hlbiB0aGUgcXVlcnlsaXN0IG9mIHBhZ2VzIGlzIGVtcHR5LiB0aGlzIGlzIHRoZSBmaXJzdCBwbGFjZSBpdCBmYWlscy4uLlxuICAgIGlmICghdGhpcy5jdXJyZW50UGFnZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlLnRpdGxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBCb29sZWFuIHRoYXQgdGVsbHMgeW91IHdoZXRoZXIgb3Igbm90IHRoZSBjdXJyZW50IHBhZ2UgaXMgdGhlIGZpcnN0XG4gICAqIHBhZ2UgaW4gdGhlIFdpemFyZC5cbiAgICpcbiAgICogVGhpcyBpcyBoZWxwZnVsIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcGFnZSBpcyBuYXZpZ2FibGUuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZ2V0IGN1cnJlbnRQYWdlSXNGaXJzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlQ29sbGVjdGlvbi5maXJzdFBhZ2UgPT09IHRoaXMuY3VycmVudFBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEJvb2xlYW4gdGhhdCB0ZWxscyB5b3Ugd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgcGFnZSBpcyB0aGVcbiAgICogbGFzdCBwYWdlIGluIHRoZSBXaXphcmQuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggYnV0dG9ucyBzaG91bGQgZGlzcGxheSBpbiB0aGUgd2l6YXJkIGZvb3Rlci5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBnZXQgY3VycmVudFBhZ2VJc0xhc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZUNvbGxlY3Rpb24ubGFzdFBhZ2UgPT09IHRoaXMuY3VycmVudFBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgQ2xyV2l6YXJkUGFnZSBvYmplY3Qgb2YgdGhlIGN1cnJlbnQgcGFnZSBvciBudWxsLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIGdldCBjdXJyZW50UGFnZSgpOiBDbHJXaXphcmRQYWdlIHtcbiAgICBpZiAoIXRoaXMuX2N1cnJlbnRQYWdlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjY2VwdHMgYSBDbHJXaXphcmRQYWdlIG9iamVjdCwgc2luY2UgdGhhdCBvYmplY3QgdG8gYmUgdGhlIGN1cnJlbnQvYWN0aXZlXG4gICAqIHBhZ2UgaW4gdGhlIHdpemFyZCwgYW5kIGVtaXRzIHRoZSBDbHJXaXphcmRQYWdlLm9uTG9hZCAoY2xyV2l6YXJkUGFnZU9uTG9hZClcbiAgICogZXZlbnQgZm9yIHRoYXQgcGFnZS5cbiAgICpcbiAgICogTm90ZSB0aGF0IGFsbCBvZiB0aGlzIHdvcmsgaXMgYnlwYXNzZWQgaWYgdGhlIENscldpemFyZFBhZ2Ugb2JqZWN0IGlzIGFscmVhZHlcbiAgICogdGhlIGN1cnJlbnQgcGFnZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBzZXQgY3VycmVudFBhZ2UocGFnZTogQ2xyV2l6YXJkUGFnZSkge1xuICAgIGlmICh0aGlzLl9jdXJyZW50UGFnZSAhPT0gcGFnZSAmJiAhdGhpcy53aXphcmRTdG9wTmF2aWdhdGlvbikge1xuICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgICAgcGFnZS5vbkxvYWQuZW1pdChwYWdlLmlkKTtcbiAgICAgIHRoaXMuX2N1cnJlbnRDaGFuZ2VkLm5leHQocGFnZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdXNlZCBpbnRlcm5hbGx5IHRvIGFsZXJ0IHRoZSB3aXphcmQgdGhhdCBmb3J3YXJkIG5hdmlnYXRpb25cbiAgICogaGFzIG9jY3VycmVkLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgdGhlIFdpemFyZC5vbk1vdmVOZXh0XG4gICAqIChjbHJXaXphcmRPbk5leHQpIG91dHB1dCBpbnN0ZWFkIG9mIHRoaXMgb25lLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIGdldCBtb3ZlZFRvTmV4dFBhZ2UoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX21vdmVkVG9OZXh0UGFnZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBvYnNlcnZhYmxlIHVzZWQgaW50ZXJuYWxseSB0byBhbGVydCB0aGUgd2l6YXJkIHRoYXQgdGhlIG5hdiBzZXJ2aWNlXG4gICAqIGhhcyBhcHByb3ZlZCBjb21wbGV0aW9uIG9mIHRoZSB3aXphcmQuXG4gICAqXG4gICAqIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSB0aGUgV2l6YXJkLndpemFyZEZpbmlzaGVkIChjbHJXaXphcmRPbkZpbmlzaClcbiAgICogb3V0cHV0IGluc3RlYWQgb2YgdGhpcyBvbmUuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZ2V0IHdpemFyZEZpbmlzaGVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl93aXphcmRGaW5pc2hlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RpZmllcyB0aGUgd2l6YXJkIHdoZW4gYmFja3dhcmRzIG5hdmlnYXRpb24gaGFzIG9jY3VycmVkIHZpYSB0aGVcbiAgICogcHJldmlvdXMgYnV0dG9uLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIGdldCBtb3ZlZFRvUHJldmlvdXNQYWdlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9tb3ZlZFRvUHJldmlvdXNQYWdlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmaWVzIHRoZSB3aXphcmQgdGhhdCBhIHVzZXIgaXMgdHJ5aW5nIHRvIGNhbmNlbCBpdC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBnZXQgbm90aWZ5V2l6YXJkQ2FuY2VsKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbmNlbFdpemFyZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucHJldmlvdXNCdXR0b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm5leHRCdXR0b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmRhbmdlckJ1dHRvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZmluaXNoQnV0dG9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jdXN0b21CdXR0b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNhbmNlbEJ1dHRvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucGFnZXNSZXNldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBwdWJsaWMgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBwcm9ncmFtbWF0aWNhbGx5IGFkdmFuY2VcbiAgICogdGhlIHVzZXIgdG8gdGhlIG5leHQgcGFnZS5cbiAgICpcbiAgICogV2hlbiBpbnZva2VkLCB0aGlzIG1ldGhvZCB3aWxsIG1vdmUgdGhlIHdpemFyZCB0byB0aGUgbmV4dCBwYWdlIGFmdGVyXG4gICAqIHN1Y2Nlc3NmdWwgdmFsaWRhdGlvbi4gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGdvZXMgdGhyb3VnaCBhbGwgY2hlY2tzXG4gICAqIGFuZCBldmVudCBlbWlzc2lvbnMgYXMgaWYgV2l6YXJkLm5leHQoZmFsc2UpIGhhZCBiZWVuIGNhbGxlZC5cbiAgICpcbiAgICogSW4gbW9zdCBjYXNlcywgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byB1c2UgV2l6YXJkLm5leHQoZmFsc2UpLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJc0xhc3QpIHtcbiAgICAgIHRoaXMuY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZSgnZmluaXNoJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZSgnbmV4dCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCeXBhc3NlcyBjaGVja3MgYW5kIG1vc3QgZXZlbnQgZW1pc3Npb25zIHRvIGZvcmNlIGEgcGFnZSB0byBuYXZpZ2F0ZSBmb3J3YXJkLlxuICAgKlxuICAgKiBDb21wYXJhYmxlIHRvIGNhbGxpbmcgV2l6YXJkLm5leHQoKSBvciBXaXphcmQuZm9yY2VOZXh0KCkuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZm9yY2VOZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlOiBDbHJXaXphcmRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcbiAgICBjb25zdCBuZXh0UGFnZTogQ2xyV2l6YXJkUGFnZSA9IHRoaXMucGFnZUNvbGxlY3Rpb24uZ2V0TmV4dFBhZ2UoY3VycmVudFBhZ2UpO1xuXG4gICAgLy8gY2F0Y2ggZXJyYW50IG51bGwgb3IgdW5kZWZpbmVkcyB0aGF0IGNyZWVwIGluXG4gICAgaWYgKCFuZXh0UGFnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgd2l6YXJkIGhhcyBubyBuZXh0IHBhZ2UgdG8gZ28gdG8uJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud2l6YXJkU3RvcE5hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRQYWdlLmNvbXBsZXRlZCkge1xuICAgICAgLy8gdGhpcyBpcyBhIHN0YXRlIHRoYXQgYWx0IG5leHQgZmxvd3MgY2FuIGdldCB0aGVtc2VsdmVzIGluLi4uXG4gICAgICB0aGlzLnBhZ2VDb2xsZWN0aW9uLmNvbW1pdFBhZ2UoY3VycmVudFBhZ2UpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gbmV4dFBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQWNjZXB0cyBhIGJ1dHRvbi9hY3Rpb24gdHlwZSBhcyBhIHBhcmFtZXRlci4gRW5jYXBzdWxhdGVzIGFsbCBsb2dpYyBmb3JcbiAgICogZXZlbnQgZW1pc3Npb25zLCBzdGF0ZSBvZiB0aGUgY3VycmVudCBwYWdlLCBhbmQgd2l6YXJkIGFuZCBwYWdlIGxldmVsIG92ZXJyaWRlcy5cbiAgICpcbiAgICogQXZvaWQgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHVubGVzcyB5b3UgcmVhbGx5IGtub3cgd2hhdCB5b3UncmUgZG9pbmcuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZShidXR0b25UeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZTogQ2xyV2l6YXJkUGFnZSA9IHRoaXMuY3VycmVudFBhZ2U7XG5cbiAgICBpZiAoIWN1cnJlbnRQYWdlLnJlYWR5VG9Db21wbGV0ZSB8fCB0aGlzLndpemFyZFN0b3BOYXZpZ2F0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaUFtVGhlTGFzdFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlSXNMYXN0O1xuXG4gICAgY29uc3QgaXNOZXh0ID0gYnV0dG9uVHlwZSA9PT0gJ25leHQnO1xuICAgIGNvbnN0IGlzRGFuZ2VyID0gYnV0dG9uVHlwZSA9PT0gJ2Rhbmdlcic7XG4gICAgY29uc3QgaXNEYW5nZXJOZXh0ID0gaXNEYW5nZXIgJiYgIWlBbVRoZUxhc3RQYWdlO1xuICAgIGNvbnN0IGlzRGFuZ2VyRmluaXNoID0gaXNEYW5nZXIgJiYgaUFtVGhlTGFzdFBhZ2U7XG4gICAgY29uc3QgaXNGaW5pc2ggPSBidXR0b25UeXBlID09PSAnZmluaXNoJyB8fCBpc0RhbmdlckZpbmlzaDtcblxuICAgIGlmIChpc0ZpbmlzaCAmJiAhaUFtVGhlTGFzdFBhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjdXJyZW50UGFnZS5wcmltYXJ5QnV0dG9uQ2xpY2tlZC5lbWl0KGJ1dHRvblR5cGUpO1xuXG4gICAgaWYgKGlzRmluaXNoKSB7XG4gICAgICBjdXJyZW50UGFnZS5maW5pc2hCdXR0b25DbGlja2VkLmVtaXQoY3VycmVudFBhZ2UpO1xuICAgIH0gZWxzZSBpZiAoaXNEYW5nZXIpIHtcbiAgICAgIGN1cnJlbnRQYWdlLmRhbmdlckJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xuICAgIH0gZWxzZSBpZiAoaXNOZXh0KSB7XG4gICAgICBjdXJyZW50UGFnZS5uZXh0QnV0dG9uQ2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRQYWdlLnN0b3BOZXh0IHx8IGN1cnJlbnRQYWdlLnByZXZlbnREZWZhdWx0KSB7XG4gICAgICBjdXJyZW50UGFnZS5vbkNvbW1pdC5lbWl0KGN1cnJlbnRQYWdlLmlkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBvcmRlciBpcyB2ZXJ5IGltcG9ydGFudCB3aXRoIHRoZXNlIGVtaXR0ZXJzIVxuICAgIGlmIChpc0ZpbmlzaCkge1xuICAgICAgLy8gbWFyayBwYWdlIGFzIGNvbXBsZXRlXG4gICAgICBpZiAoIXRoaXMud2l6YXJkSGFzQWx0TmV4dCkge1xuICAgICAgICB0aGlzLnBhZ2VDb2xsZWN0aW9uLmNvbW1pdFBhZ2UoY3VycmVudFBhZ2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5fd2l6YXJkRmluaXNoZWQubmV4dCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpemFyZEhhc0FsdE5leHQpIHtcbiAgICAgIHRoaXMucGFnZUNvbGxlY3Rpb24uY29tbWl0UGFnZShjdXJyZW50UGFnZSk7XG5cbiAgICAgIGlmIChpc05leHQgfHwgaXNEYW5nZXJOZXh0KSB7XG4gICAgICAgIHRoaXMuX21vdmVkVG9OZXh0UGFnZS5uZXh0KHRydWUpO1xuICAgICAgfVxuICAgICAgLy8ganVtcCBvdXQgaGVyZSwgbm8gbWF0dGVyIHdoYXQgdHlwZSB3ZSdyZSBsb29raW5nIGF0XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzTmV4dCB8fCBpc0Rhbmdlck5leHQpIHtcbiAgICAgIHRoaXMuZm9yY2VOZXh0KCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLndpemFyZEhhc0FsdE5leHQgJiYgIXRoaXMud2l6YXJkU3RvcE5hdmlnYXRpb24pIHtcbiAgICAgIHRoaXMuX21vdmVkVG9OZXh0UGFnZS5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgcHVibGljIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvZ3JhbW1hdGljYWxseSBjb25jbHVkZVxuICAgKiB0aGUgd2l6YXJkLlxuICAgKlxuICAgKiBXaGVuIGludm9rZWQsIHRoaXMgbWV0aG9kIHdpbGwgIGluaXRpYXRlIHRoZSB3b3JrIGludm9sdmVkIHdpdGggZmluYWxpemluZ1xuICAgKiBhbmQgZmluaXNoaW5nIHRoZSB3aXphcmQgd29ya2Zsb3cuIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBnb2VzIHRocm91Z2ggYWxsXG4gICAqIGNoZWNrcyBhbmQgZXZlbnQgZW1pc3Npb25zIGFzIGlmIFdpemFyZC5maW5pc2goZmFsc2UpIGhhZCBiZWVuIGNhbGxlZC5cbiAgICpcbiAgICogSW4gbW9zdCBjYXNlcywgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byB1c2UgV2l6YXJkLmZpbmlzaChmYWxzZSkuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgZmluaXNoKCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tBbmRDb21taXRDdXJyZW50UGFnZSgnZmluaXNoJyk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZ3JhbW1hdGljYWxseSBtb3ZlcyB0aGUgd2l6YXJkIHRvIHRoZSBwYWdlIGJlZm9yZSB0aGUgY3VycmVudCBwYWdlLlxuICAgKlxuICAgKiBJbiBtb3N0IGluc3RhbmNlcywgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byBjYWxsIFdpemFyZC5wcmV2aW91cygpXG4gICAqIHdoaWNoIGRvZXMgdGhlIHNhbWUgdGhpbmcuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJc0ZpcnN0IHx8IHRoaXMud2l6YXJkU3RvcE5hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VDb2xsZWN0aW9uLmdldFByZXZpb3VzUGFnZSh0aGlzLmN1cnJlbnRQYWdlKTtcblxuICAgIGlmICghcHJldmlvdXNQYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbW92ZWRUb1ByZXZpb3VzUGFnZS5uZXh0KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuZm9yY2VGb3J3YXJkTmF2aWdhdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS5jb21wbGV0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcHJldmlvdXNQYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBhIGhvb2sgaW50byB0aGUgY2FuY2VsIHdvcmtmbG93IG9mIHRoZSB3aXphcmQgZnJvbSB0aGUgbmF2IHNlcnZpY2UuIE5vdGUgdGhhdFxuICAgKiB0aGlzIHJvdXRlIGdvZXMgdGhyb3VnaCBhbGwgY2hlY2tzIGFuZCBldmVudCBlbWlzc2lvbnMgYXMgaWYgYSBjYW5jZWwgYnV0dG9uIGhhZFxuICAgKiBiZWVuIGNsaWNrZWQuXG4gICAqXG4gICAqIEluIG1vc3QgY2FzZXMsIHVzZXJzIGxvb2tpbmcgZm9yIGEgaG9vayBpbnRvIHRoZSBjYW5jZWwgcm91dGluZSBhcmUgYWN0dWFsbHkgbG9va2luZ1xuICAgKiBmb3IgYSB3YXkgdG8gY2xvc2UgdGhlIHdpemFyZCBmcm9tIHRoZWlyIGhvc3QgY29tcG9uZW50IGJlY2F1c2UgdGhleSBoYXZlIHByZXZlbnRlZFxuICAgKiB0aGUgZGVmYXVsdCBjYW5jZWwgYWN0aW9uLlxuICAgKlxuICAgKiBJbiB0aGlzIGluc3RhbmNlLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgV2l6YXJkLmNsb3NlKCkgdG8gYXZvaWQgYW55IGV2ZW50XG4gICAqIGVtaXNzaW9uIGxvb3AgcmVzdWx0aW5nIGZyb20gYW4gZXZlbnQgaGFuZGxlciBjYWxsaW5nIGJhY2sgaW50byByb3V0aW5lIHRoYXQgd2lsbFxuICAgKiBhZ2FpbiBldm9rZSB0aGUgZXZlbnRzIGl0IGhhbmRsZXMuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuX2NhbmNlbFdpemFyZC5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgYWxsIHJlcXVpcmVkIGNoZWNrcyB0byBkZXRlcm1pbmUgaWYgYSB1c2VyIGNhbiBuYXZpZ2F0ZSB0byBhIHBhZ2UuIENoZWNraW5nIGF0IGVhY2hcbiAgICogcG9pbnQgaWYgYSBwYWdlIGlzIG5hdmlnYWJsZSAtLSBjb21wbGV0ZWQgd2hlcmUgdGhlIHBhZ2UgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxhc3QgY29tcGxldGVkXG4gICAqIHBhZ2UuXG4gICAqXG4gICAqIFRha2VzIHR3byBwYXJhbWV0ZXJzLiBUaGUgZmlyc3Qgb25lIG11c3QgYmUgZWl0aGVyIHRoZSBDbHJXaXphcmRQYWdlIG9iamVjdCBvciB0aGUgSUQgb2YgdGhlXG4gICAqIENscldpemFyZFBhZ2Ugb2JqZWN0IHRoYXQgeW91IHdhbnQgdG8gbWFrZSB0aGUgY3VycmVudCBwYWdlLlxuICAgKlxuICAgKiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyBvcHRpb25hbCBhbmQgaXMgYSBCb29sZWFuIGZsYWcgZm9yIFwibGF6eSBjb21wbGV0aW9uXCIuIFdoYXQgdGhpcyBtZWFuc1xuICAgKiBpcyB0aGUgV2l6YXJkIHdpbGwgbWFyayBhbGwgcGFnZXMgYmV0d2VlbiB0aGUgY3VycmVudCBwYWdlIGFuZCB0aGUgcGFnZSB5b3Ugd2FudCB0byBuYXZpZ2F0ZVxuICAgKiB0byBhcyBjb21wbGV0ZWQuIFRoaXMgaXMgdXNlZnVsIGZvciBpbmZvcm1hdGlvbmFsIHdpemFyZHMgdGhhdCBkbyBub3QgcmVxdWlyZSB1c2VyIGFjdGlvbixcbiAgICogYWxsb3dpbmcgYW4gZWFzeSBtZWFucyBmb3IgdXNlcnMgdG8ganVtcCBhaGVhZC5cbiAgICpcbiAgICogVG8gYXZvaWQgY2hlY2tzIG9uIG5hdmlnYXRpb24sIHVzZSBDbHJXaXphcmRQYWdlLm1ha2VDdXJyZW50KCkgaW5zdGVhZC5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICBnb1RvKHBhZ2VUb0dvVG9PcklkOiBhbnksIGxhenlDb21wbGV0ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgbXlQYWdlcyA9IHRoaXMucGFnZUNvbGxlY3Rpb247XG4gICAgY29uc3QgcGFnZVRvR29UbyA9IHR5cGVvZiBwYWdlVG9Hb1RvT3JJZCA9PT0gJ3N0cmluZycgPyBteVBhZ2VzLmdldFBhZ2VCeUlkKHBhZ2VUb0dvVG9PcklkKSA6IHBhZ2VUb0dvVG9PcklkO1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcblxuICAgIC8vIG5vIHBvaW50IGluIGdvaW5nIHRvIHRoZSBjdXJyZW50IHBhZ2UuIHlvdSdyZSB0aGVyZSBhbHJlYWR5IVxuICAgIC8vIGFsc28gaGFyZCBibG9jayBvbiBhbnkgbmF2aWdhdGlvbiB3aGVuIHN0b3BOYXZpZ2F0aW9uIGlzIHRydWVcbiAgICBpZiAocGFnZVRvR29UbyA9PT0gY3VycmVudFBhZ2UgfHwgdGhpcy53aXphcmRTdG9wTmF2aWdhdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRQYWdlSW5kZXggPSBteVBhZ2VzLmdldFBhZ2VJbmRleChjdXJyZW50UGFnZSk7XG4gICAgY29uc3QgZ29Ub1BhZ2VJbmRleCA9IG15UGFnZXMuZ2V0UGFnZUluZGV4KHBhZ2VUb0dvVG8pO1xuICAgIGNvbnN0IGdvaW5nRm9yd2FyZCA9IGdvVG9QYWdlSW5kZXggPiBjdXJyZW50UGFnZUluZGV4O1xuICAgIGNvbnN0IHBhZ2VzVG9DaGVjayA9IG15UGFnZXMuZ2V0UGFnZVJhbmdlRnJvbVBhZ2VzKHRoaXMuY3VycmVudFBhZ2UsIHBhZ2VUb0dvVG8pO1xuICAgIGNvbnN0IG9rYXlUb01vdmUgPSBsYXp5Q29tcGxldGUgfHwgdGhpcy5jYW5Hb1RvKHBhZ2VzVG9DaGVjayk7XG5cbiAgICBpZiAoIW9rYXlUb01vdmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZ29pbmdGb3J3YXJkICYmIGxhenlDb21wbGV0ZSkge1xuICAgICAgcGFnZXNUb0NoZWNrLmZvckVhY2goKHBhZ2U6IENscldpemFyZFBhZ2UpID0+IHtcbiAgICAgICAgaWYgKHBhZ2UgIT09IHBhZ2VUb0dvVG8pIHtcbiAgICAgICAgICBwYWdlLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIWdvaW5nRm9yd2FyZCAmJiB0aGlzLmZvcmNlRm9yd2FyZE5hdmlnYXRpb24pIHtcbiAgICAgIHBhZ2VzVG9DaGVjay5mb3JFYWNoKChwYWdlOiBDbHJXaXphcmRQYWdlKSA9PiB7XG4gICAgICAgIHBhZ2UuY29tcGxldGVkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZVRvR29UbztcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgcmFuZ2Ugb2YgQ2xyV2l6YXJkUGFnZSBvYmplY3RzIGFzIGEgcGFyYW1ldGVyLiBQZXJmb3JtcyB0aGUgd29yayBvZiBjaGVja2luZ1xuICAgKiB0aG9zZSBvYmplY3RzIHRvIGRldGVybWluZSBpZiBuYXZpZ2F0aW9uIGNhbiBiZSBhY2NvbXBsaXNoZWQuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgY2FuR29UbyhwYWdlc1RvQ2hlY2s6IENscldpemFyZFBhZ2VbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBva2F5VG9Nb3ZlID0gdHJ1ZTtcbiAgICBjb25zdCBteVBhZ2VzID0gdGhpcy5wYWdlQ29sbGVjdGlvbjtcblxuICAgIC8vIHByZXZpb3VzIHBhZ2UgY2FuIGJlIGltcG9ydGFudCB3aGVuIG1vdmluZyBiZWNhdXNlIGlmIGl0J3MgY29tcGxldGVkIGl0XG4gICAgLy8gYWxsb3dzIHVzIHRvIG1vdmUgdG8gdGhlIHBhZ2UgZXZlbiBpZiBpdCdzIGluY29tcGxldGUuLi5cbiAgICBsZXQgcHJldmlvdXNQYWdlUGFzc2VzOiBib29sZWFuO1xuXG4gICAgaWYgKCFwYWdlc1RvQ2hlY2sgfHwgcGFnZXNUb0NoZWNrLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwYWdlc1RvQ2hlY2suZm9yRWFjaCgocGFnZTogQ2xyV2l6YXJkUGFnZSkgPT4ge1xuICAgICAgaWYgKCFva2F5VG9Nb3ZlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhZ2UuY29tcGxldGVkKSB7XG4gICAgICAgIC8vIGRlZmF1bHQgaXMgdHJ1ZS4ganVzdCBqdW1wIG91dCBpbnN0ZWFkIG9mIGNvbXBsaWNhdGluZyBpdC5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBzbyB3ZSBrbm93IG91ciBwYWdlIGlzIG5vdCBjb21wbGV0ZWQuLi5cbiAgICAgIGNvbnN0IHByZXZpb3VzUGFnZSA9IG15UGFnZXMuZ2V0UGFnZUluZGV4KHBhZ2UpID4gMCA/IG15UGFnZXMuZ2V0UHJldmlvdXNQYWdlKHBhZ2UpIDogbnVsbDtcbiAgICAgIHByZXZpb3VzUGFnZVBhc3NlcyA9IHByZXZpb3VzUGFnZSA9PT0gbnVsbCB8fCBwcmV2aW91c1BhZ2UuY29tcGxldGVkID09PSB0cnVlO1xuXG4gICAgICAvLyB3ZSBhcmUgZmFsc2UgaWYgbm90IHRoZSBjdXJyZW50IHBhZ2UgQU5EIHByZXZpb3VzIHBhZ2UgaXMgbm90IGNvbXBsZXRlZFxuICAgICAgLy8gKGJ1dCBtdXN0IGhhdmUgYSBwcmV2aW91cyBwYWdlKVxuICAgICAgaWYgKCFwYWdlLmN1cnJlbnQgJiYgIXByZXZpb3VzUGFnZVBhc3Nlcykge1xuICAgICAgICBva2F5VG9Nb3ZlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBmYWxscyB0aHJvdWdoIHRvIHRydWUgYXMgZGVmYXVsdFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9rYXlUb01vdmU7XG4gIH1cblxuICAvKipcbiAgICogTG9va3MgdGhyb3VnaCB0aGUgY29sbGVjdGlvbiBvZiBwYWdlcyB0byBmaW5kIHRoZSBmaXJzdCBvbmUgdGhhdCBpcyBpbmNvbXBsZXRlXG4gICAqIGFuZCBtYWtlcyB0aGF0IHBhZ2UgdGhlIGN1cnJlbnQvYWN0aXZlIHBhZ2UuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBXaXphcmROYXZpZ2F0aW9uU2VydmljZVxuICAgKi9cbiAgc2V0TGFzdEVuYWJsZWRQYWdlQ3VycmVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBhbGxQYWdlczogQ2xyV2l6YXJkUGFnZVtdID0gdGhpcy5wYWdlQ29sbGVjdGlvbi5wYWdlc0FzQXJyYXk7XG4gICAgbGV0IGxhc3RDb21wbGV0ZWRQYWdlSW5kZXg6IG51bWJlciA9IG51bGw7XG5cbiAgICBhbGxQYWdlcy5mb3JFYWNoKChwYWdlOiBDbHJXaXphcmRQYWdlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAocGFnZS5jb21wbGV0ZWQpIHtcbiAgICAgICAgbGFzdENvbXBsZXRlZFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGxhc3RDb21wbGV0ZWRQYWdlSW5kZXggPT09IG51bGwpIHtcbiAgICAgIC8vIGFsd2F5cyBpcyBhdCBsZWFzdCB0aGUgZmlyc3QgaXRlbS4uLlxuICAgICAgbGFzdENvbXBsZXRlZFBhZ2VJbmRleCA9IDA7XG4gICAgfSBlbHNlIGlmIChsYXN0Q29tcGxldGVkUGFnZUluZGV4ICsgMSA8IGFsbFBhZ2VzLmxlbmd0aCkge1xuICAgICAgbGFzdENvbXBsZXRlZFBhZ2VJbmRleCA9IGxhc3RDb21wbGV0ZWRQYWdlSW5kZXggKyAxO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBhbGxQYWdlc1tsYXN0Q29tcGxldGVkUGFnZUluZGV4XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgZmlyc3QgcGFnZSBpbiB0aGUgY29sbGVjdGlvbiBvZiBwYWdlcyBhbmQgbWFrZXMgdGhhdCBwYWdlIHRoZVxuICAgKiBjdXJyZW50L2FjdGl2ZSBwYWdlLlxuICAgKlxuICAgKiBAbWVtYmVyb2YgV2l6YXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICovXG4gIHNldEZpcnN0UGFnZUN1cnJlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZUNvbGxlY3Rpb24ucGFnZXNBc0FycmF5WzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHN0ZXBuYXYgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgd2l6YXJkIHdoZW4gcGFnZXMgYXJlIGR5bmFtaWNhbGx5XG4gICAqIGFkZGVkIG9yIHJlbW92ZWQgZnJvbSB0aGUgY29sbGVjdGlvbiBvZiBwYWdlcy5cbiAgICpcbiAgICogQG1lbWJlcm9mIFdpemFyZE5hdmlnYXRpb25TZXJ2aWNlXG4gICAqL1xuICB1cGRhdGVOYXZpZ2F0aW9uKCk6IHZvaWQge1xuICAgIGxldCB0b1NldEN1cnJlbnQ6IENscldpemFyZFBhZ2U7XG5cbiAgICB0aGlzLnBhZ2VDb2xsZWN0aW9uLnVwZGF0ZUNvbXBsZXRlZFN0YXRlcygpO1xuXG4gICAgY29uc3QgY3VycmVudFBhZ2VSZW1vdmVkID0gdGhpcy5wYWdlQ29sbGVjdGlvbi5wYWdlc0FzQXJyYXkuaW5kZXhPZih0aGlzLmN1cnJlbnRQYWdlKSA8IDA7XG4gICAgaWYgKGN1cnJlbnRQYWdlUmVtb3ZlZCkge1xuICAgICAgdG9TZXRDdXJyZW50ID0gdGhpcy5wYWdlQ29sbGVjdGlvbi5maW5kRmlyc3RJbmNvbXBsZXRlUGFnZSgpO1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRvU2V0Q3VycmVudDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==