@agorapulse/ui-components 18.1.7 → 20.0.0-beta

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 (521) hide show
  1. package/action-dropdown/index.d.ts +102 -3
  2. package/add-comment/index.d.ts +24 -5
  3. package/agorapulse-ui-components-20.0.0-beta.tgz +0 -0
  4. package/autocomplete/index.d.ts +43 -5
  5. package/avatar/index.d.ts +64 -5
  6. package/badge/index.d.ts +11 -5
  7. package/button/index.d.ts +54 -5
  8. package/checkbox/index.d.ts +54 -5
  9. package/close-button/index.d.ts +14 -5
  10. package/confirm-modal/index.d.ts +32 -5
  11. package/counter/index.d.ts +17 -5
  12. package/datepicker/index.d.ts +99 -5
  13. package/directives/index.d.ts +149 -3
  14. package/dot-stepper/index.d.ts +23 -5
  15. package/fesm2022/agorapulse-ui-components-action-dropdown.mjs +18 -18
  16. package/fesm2022/agorapulse-ui-components-action-dropdown.mjs.map +1 -1
  17. package/fesm2022/agorapulse-ui-components-add-comment.mjs +5 -5
  18. package/fesm2022/agorapulse-ui-components-add-comment.mjs.map +1 -1
  19. package/fesm2022/agorapulse-ui-components-autocomplete.mjs +8 -8
  20. package/fesm2022/agorapulse-ui-components-autocomplete.mjs.map +1 -1
  21. package/fesm2022/agorapulse-ui-components-avatar.mjs +24 -24
  22. package/fesm2022/agorapulse-ui-components-avatar.mjs.map +1 -1
  23. package/fesm2022/agorapulse-ui-components-badge.mjs +4 -4
  24. package/fesm2022/agorapulse-ui-components-badge.mjs.map +1 -1
  25. package/fesm2022/agorapulse-ui-components-button.mjs +5 -5
  26. package/fesm2022/agorapulse-ui-components-button.mjs.map +1 -1
  27. package/fesm2022/agorapulse-ui-components-checkbox.mjs +4 -4
  28. package/fesm2022/agorapulse-ui-components-checkbox.mjs.map +1 -1
  29. package/fesm2022/agorapulse-ui-components-close-button.mjs +7 -7
  30. package/fesm2022/agorapulse-ui-components-close-button.mjs.map +1 -1
  31. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs +4 -4
  32. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs.map +1 -1
  33. package/fesm2022/agorapulse-ui-components-counter.mjs +9 -9
  34. package/fesm2022/agorapulse-ui-components-counter.mjs.map +1 -1
  35. package/fesm2022/agorapulse-ui-components-datepicker.mjs +6 -6
  36. package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
  37. package/fesm2022/agorapulse-ui-components-directives.mjs +26 -26
  38. package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
  39. package/fesm2022/agorapulse-ui-components-dot-stepper.mjs +4 -4
  40. package/fesm2022/agorapulse-ui-components-dot-stepper.mjs.map +1 -1
  41. package/fesm2022/agorapulse-ui-components-form-field.mjs +3 -3
  42. package/fesm2022/agorapulse-ui-components-form-field.mjs.map +1 -1
  43. package/fesm2022/agorapulse-ui-components-form-message.mjs +6 -6
  44. package/fesm2022/agorapulse-ui-components-form-message.mjs.map +1 -1
  45. package/fesm2022/agorapulse-ui-components-icon-button.mjs +5 -5
  46. package/fesm2022/agorapulse-ui-components-icon-button.mjs.map +1 -1
  47. package/fesm2022/agorapulse-ui-components-infobox.mjs +4 -4
  48. package/fesm2022/agorapulse-ui-components-infobox.mjs.map +1 -1
  49. package/fesm2022/agorapulse-ui-components-input-group.mjs +6 -6
  50. package/fesm2022/agorapulse-ui-components-input-group.mjs.map +1 -1
  51. package/fesm2022/agorapulse-ui-components-input-search.mjs +10 -10
  52. package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -1
  53. package/fesm2022/agorapulse-ui-components-input.mjs +3 -3
  54. package/fesm2022/agorapulse-ui-components-labels-selector.mjs +4 -4
  55. package/fesm2022/agorapulse-ui-components-labels-selector.mjs.map +1 -1
  56. package/fesm2022/agorapulse-ui-components-labels.mjs +8 -8
  57. package/fesm2022/agorapulse-ui-components-labels.mjs.map +1 -1
  58. package/fesm2022/agorapulse-ui-components-legacy-input.mjs +5 -5
  59. package/fesm2022/agorapulse-ui-components-legacy-input.mjs.map +1 -1
  60. package/fesm2022/agorapulse-ui-components-legacy-select.mjs +17 -17
  61. package/fesm2022/agorapulse-ui-components-legacy-select.mjs.map +1 -1
  62. package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs +5 -5
  63. package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs.map +1 -1
  64. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs +4 -4
  65. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs.map +1 -1
  66. package/fesm2022/agorapulse-ui-components-modal.mjs +4 -4
  67. package/fesm2022/agorapulse-ui-components-modal.mjs.map +1 -1
  68. package/fesm2022/agorapulse-ui-components-nav-selector.mjs +154 -154
  69. package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
  70. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs +8 -8
  71. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -1
  72. package/fesm2022/agorapulse-ui-components-notification.mjs +4 -4
  73. package/fesm2022/agorapulse-ui-components-notification.mjs.map +1 -1
  74. package/fesm2022/agorapulse-ui-components-paginator.mjs +7 -7
  75. package/fesm2022/agorapulse-ui-components-paginator.mjs.map +1 -1
  76. package/fesm2022/agorapulse-ui-components-password-input.mjs +4 -4
  77. package/fesm2022/agorapulse-ui-components-password-input.mjs.map +1 -1
  78. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs +16 -16
  79. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs.map +1 -1
  80. package/fesm2022/agorapulse-ui-components-popmenu.mjs +11 -11
  81. package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -1
  82. package/fesm2022/agorapulse-ui-components-radio.mjs +6 -6
  83. package/fesm2022/agorapulse-ui-components-radio.mjs.map +1 -1
  84. package/fesm2022/agorapulse-ui-components-range-slider.mjs +4 -4
  85. package/fesm2022/agorapulse-ui-components-range-slider.mjs.map +1 -1
  86. package/fesm2022/agorapulse-ui-components-select.mjs +65 -65
  87. package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
  88. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs +4 -4
  89. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs.map +1 -1
  90. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs +8 -8
  91. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs.map +1 -1
  92. package/fesm2022/agorapulse-ui-components-social-button.mjs +4 -4
  93. package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -1
  94. package/fesm2022/agorapulse-ui-components-split-button.mjs +5 -5
  95. package/fesm2022/agorapulse-ui-components-split-button.mjs.map +1 -1
  96. package/fesm2022/agorapulse-ui-components-status-card.mjs +3 -3
  97. package/fesm2022/agorapulse-ui-components-status-card.mjs.map +1 -1
  98. package/fesm2022/agorapulse-ui-components-status.mjs +4 -4
  99. package/fesm2022/agorapulse-ui-components-status.mjs.map +1 -1
  100. package/fesm2022/agorapulse-ui-components-stepper.mjs +4 -4
  101. package/fesm2022/agorapulse-ui-components-stepper.mjs.map +1 -1
  102. package/fesm2022/agorapulse-ui-components-tag.mjs +9 -9
  103. package/fesm2022/agorapulse-ui-components-tag.mjs.map +1 -1
  104. package/fesm2022/agorapulse-ui-components-text-measurement.mjs +3 -3
  105. package/fesm2022/agorapulse-ui-components-textarea.mjs +3 -3
  106. package/fesm2022/agorapulse-ui-components-toggle.mjs +4 -4
  107. package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -1
  108. package/fesm2022/agorapulse-ui-components-tooltip.mjs +15 -15
  109. package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -1
  110. package/fesm2022/agorapulse-ui-components.mjs +4 -4
  111. package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
  112. package/form-field/index.d.ts +8 -5
  113. package/form-message/index.d.ts +16 -5
  114. package/icon-button/index.d.ts +44 -5
  115. package/index.d.ts +50 -25
  116. package/infobox/index.d.ts +29 -5
  117. package/input/index.d.ts +10 -5
  118. package/input-group/index.d.ts +14 -5
  119. package/input-search/index.d.ts +35 -5
  120. package/labels/index.d.ts +59 -5
  121. package/labels-selector/index.d.ts +46 -5
  122. package/legacy/input/index.d.ts +64 -3
  123. package/legacy/select/index.d.ts +124 -3
  124. package/legacy/textarea/index.d.ts +54 -3
  125. package/media-display-overlay/index.d.ts +46 -5
  126. package/modal/index.d.ts +58 -5
  127. package/nav-selector/index.d.ts +362 -3
  128. package/neo-datepicker/index.d.ts +74 -5
  129. package/notification/index.d.ts +9 -5
  130. package/package.json +24 -124
  131. package/paginator/index.d.ts +57 -5
  132. package/password-input/index.d.ts +36 -5
  133. package/phone-number-input/index.d.ts +54 -5
  134. package/popmenu/index.d.ts +212 -3
  135. package/radio/index.d.ts +80 -5
  136. package/range-slider/index.d.ts +39 -5
  137. package/select/index.d.ts +214 -5
  138. package/slide-toggle/index.d.ts +23 -5
  139. package/snackbars-thread/index.d.ts +73 -3
  140. package/social-button/index.d.ts +34 -5
  141. package/split-button/index.d.ts +47 -5
  142. package/status/index.d.ts +13 -5
  143. package/status-card/index.d.ts +17 -5
  144. package/stepper/index.d.ts +26 -5
  145. package/tag/index.d.ts +28 -5
  146. package/text-measurement/index.d.ts +11 -5
  147. package/textarea/index.d.ts +14 -5
  148. package/toggle/index.d.ts +55 -5
  149. package/tooltip/index.d.ts +62 -5
  150. package/action-dropdown/action-dropdown-trigger.directive.d.ts +0 -17
  151. package/action-dropdown/action-dropdown.component.d.ts +0 -84
  152. package/action-dropdown/public_api.d.ts +0 -2
  153. package/add-comment/add-comment.component.d.ts +0 -21
  154. package/add-comment/public_api.d.ts +0 -1
  155. package/agorapulse-ui-components-18.1.7.tgz +0 -0
  156. package/autocomplete/autocomplete.component.d.ts +0 -40
  157. package/autocomplete/public_api.d.ts +0 -1
  158. package/avatar/avatar.component.d.ts +0 -61
  159. package/avatar/public_api.d.ts +0 -1
  160. package/badge/badge.component.d.ts +0 -7
  161. package/badge/public_api.d.ts +0 -1
  162. package/button/button.component.d.ts +0 -52
  163. package/button/public_api.d.ts +0 -1
  164. package/checkbox/checkbox.component.d.ts +0 -51
  165. package/checkbox/public_api.d.ts +0 -1
  166. package/close-button/close-button.component.d.ts +0 -11
  167. package/close-button/public_api.d.ts +0 -1
  168. package/confirm-modal/confirm-modal-texts.model.d.ts +0 -8
  169. package/confirm-modal/confirm-modal.component.d.ts +0 -20
  170. package/confirm-modal/public_api.d.ts +0 -2
  171. package/counter/counter.component.d.ts +0 -13
  172. package/counter/public_api.d.ts +0 -1
  173. package/datepicker/datepicker.component.d.ts +0 -100
  174. package/datepicker/public_api.d.ts +0 -1
  175. package/directives/autosize-textarea.directive.d.ts +0 -12
  176. package/directives/base-button.directive.d.ts +0 -13
  177. package/directives/checkbox.directive.d.ts +0 -32
  178. package/directives/default-image.directive.d.ts +0 -8
  179. package/directives/ellipsis.directive.d.ts +0 -29
  180. package/directives/equal-validator.directive.d.ts +0 -13
  181. package/directives/frozen-gif.directive.d.ts +0 -30
  182. package/directives/multi-style-text.directive.d.ts +0 -16
  183. package/directives/public_api.d.ts +0 -8
  184. package/dot-stepper/dot-stepper.component.d.ts +0 -20
  185. package/dot-stepper/public_api.d.ts +0 -1
  186. package/esm2022/action-dropdown/action-dropdown-trigger.directive.mjs +0 -54
  187. package/esm2022/action-dropdown/action-dropdown.component.mjs +0 -269
  188. package/esm2022/action-dropdown/agorapulse-ui-components-action-dropdown.mjs +0 -5
  189. package/esm2022/action-dropdown/public_api.mjs +0 -3
  190. package/esm2022/add-comment/add-comment.component.mjs +0 -72
  191. package/esm2022/add-comment/agorapulse-ui-components-add-comment.mjs +0 -5
  192. package/esm2022/add-comment/public_api.mjs +0 -2
  193. package/esm2022/agorapulse-ui-components.mjs +0 -5
  194. package/esm2022/autocomplete/agorapulse-ui-components-autocomplete.mjs +0 -5
  195. package/esm2022/autocomplete/autocomplete.component.mjs +0 -125
  196. package/esm2022/autocomplete/public_api.mjs +0 -2
  197. package/esm2022/avatar/agorapulse-ui-components-avatar.mjs +0 -5
  198. package/esm2022/avatar/avatar.component.mjs +0 -161
  199. package/esm2022/avatar/public_api.mjs +0 -2
  200. package/esm2022/badge/agorapulse-ui-components-badge.mjs +0 -5
  201. package/esm2022/badge/badge.component.mjs +0 -17
  202. package/esm2022/badge/public_api.mjs +0 -2
  203. package/esm2022/button/agorapulse-ui-components-button.mjs +0 -5
  204. package/esm2022/button/button.component.mjs +0 -105
  205. package/esm2022/button/public_api.mjs +0 -2
  206. package/esm2022/checkbox/agorapulse-ui-components-checkbox.mjs +0 -5
  207. package/esm2022/checkbox/checkbox.component.mjs +0 -177
  208. package/esm2022/checkbox/public_api.mjs +0 -2
  209. package/esm2022/close-button/agorapulse-ui-components-close-button.mjs +0 -5
  210. package/esm2022/close-button/close-button.component.mjs +0 -20
  211. package/esm2022/close-button/public_api.mjs +0 -2
  212. package/esm2022/confirm-modal/agorapulse-ui-components-confirm-modal.mjs +0 -5
  213. package/esm2022/confirm-modal/confirm-modal-texts.model.mjs +0 -2
  214. package/esm2022/confirm-modal/confirm-modal.component.mjs +0 -61
  215. package/esm2022/confirm-modal/public_api.mjs +0 -3
  216. package/esm2022/counter/agorapulse-ui-components-counter.mjs +0 -5
  217. package/esm2022/counter/counter.component.mjs +0 -32
  218. package/esm2022/counter/public_api.mjs +0 -2
  219. package/esm2022/datepicker/agorapulse-ui-components-datepicker.mjs +0 -5
  220. package/esm2022/datepicker/datepicker.component.mjs +0 -288
  221. package/esm2022/datepicker/public_api.mjs +0 -2
  222. package/esm2022/directives/agorapulse-ui-components-directives.mjs +0 -5
  223. package/esm2022/directives/autosize-textarea.directive.mjs +0 -45
  224. package/esm2022/directives/base-button.directive.mjs +0 -47
  225. package/esm2022/directives/checkbox.directive.mjs +0 -283
  226. package/esm2022/directives/default-image.directive.mjs +0 -37
  227. package/esm2022/directives/ellipsis.directive.mjs +0 -90
  228. package/esm2022/directives/equal-validator.directive.mjs +0 -73
  229. package/esm2022/directives/frozen-gif.directive.mjs +0 -125
  230. package/esm2022/directives/multi-style-text.directive.mjs +0 -61
  231. package/esm2022/directives/public_api.mjs +0 -9
  232. package/esm2022/dot-stepper/agorapulse-ui-components-dot-stepper.mjs +0 -5
  233. package/esm2022/dot-stepper/dot-stepper.component.mjs +0 -46
  234. package/esm2022/dot-stepper/public_api.mjs +0 -2
  235. package/esm2022/form-field/agorapulse-ui-components-form-field.mjs +0 -5
  236. package/esm2022/form-field/form-field.component.mjs +0 -11
  237. package/esm2022/form-field/public_api.mjs +0 -2
  238. package/esm2022/form-message/agorapulse-ui-components-form-message.mjs +0 -5
  239. package/esm2022/form-message/form-message.component.mjs +0 -34
  240. package/esm2022/form-message/public_api.mjs +0 -2
  241. package/esm2022/icon-button/agorapulse-ui-components-icon-button.mjs +0 -5
  242. package/esm2022/icon-button/icon-button.component.mjs +0 -123
  243. package/esm2022/icon-button/public_api.mjs +0 -2
  244. package/esm2022/index.mjs +0 -49
  245. package/esm2022/infobox/agorapulse-ui-components-infobox.mjs +0 -5
  246. package/esm2022/infobox/infobox.component.mjs +0 -72
  247. package/esm2022/infobox/public_api.mjs +0 -2
  248. package/esm2022/input/agorapulse-ui-components-input.mjs +0 -5
  249. package/esm2022/input/input.directive.mjs +0 -19
  250. package/esm2022/input/public_api.mjs +0 -2
  251. package/esm2022/input-group/agorapulse-ui-components-input-group.mjs +0 -5
  252. package/esm2022/input-group/input-group.component.mjs +0 -14
  253. package/esm2022/input-group/input-prefix/input-prefix.component.mjs +0 -11
  254. package/esm2022/input-group/public_api.mjs +0 -3
  255. package/esm2022/input-search/agorapulse-ui-components-input-search.mjs +0 -5
  256. package/esm2022/input-search/input-search.component.mjs +0 -78
  257. package/esm2022/input-search/public_api.mjs +0 -2
  258. package/esm2022/labels/agorapulse-ui-components-labels.mjs +0 -5
  259. package/esm2022/labels/label-list.component.mjs +0 -108
  260. package/esm2022/labels/label.component.mjs +0 -56
  261. package/esm2022/labels/public_api.mjs +0 -3
  262. package/esm2022/labels-selector/agorapulse-ui-components-labels-selector.mjs +0 -5
  263. package/esm2022/labels-selector/labels-selector.component.mjs +0 -122
  264. package/esm2022/labels-selector/public_api.mjs +0 -2
  265. package/esm2022/legacy/input/agorapulse-ui-components-legacy-input.mjs +0 -5
  266. package/esm2022/legacy/input/input.component.mjs +0 -189
  267. package/esm2022/legacy/input/public_api.mjs +0 -2
  268. package/esm2022/legacy/select/agorapulse-ui-components-legacy-select.mjs +0 -5
  269. package/esm2022/legacy/select/public_api.mjs +0 -2
  270. package/esm2022/legacy/select/select.component.mjs +0 -451
  271. package/esm2022/legacy/textarea/agorapulse-ui-components-legacy-textarea.mjs +0 -5
  272. package/esm2022/legacy/textarea/public_api.mjs +0 -2
  273. package/esm2022/legacy/textarea/textarea.component.mjs +0 -154
  274. package/esm2022/media-display-overlay/agorapulse-ui-components-media-display-overlay.mjs +0 -5
  275. package/esm2022/media-display-overlay/media-display-overlay-dialog.component.mjs +0 -122
  276. package/esm2022/media-display-overlay/public_api.mjs +0 -2
  277. package/esm2022/modal/agorapulse-ui-components-modal.mjs +0 -5
  278. package/esm2022/modal/modal.component.mjs +0 -116
  279. package/esm2022/modal/public_api.mjs +0 -2
  280. package/esm2022/nav-selector/agorapulse-ui-components-nav-selector.mjs +0 -5
  281. package/esm2022/nav-selector/directives/nav-selector-popover-trigger.directive.mjs +0 -71
  282. package/esm2022/nav-selector/directives/tree-node-accessibility.directive.mjs +0 -30
  283. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.component.mjs +0 -129
  284. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.presenter.mjs +0 -29
  285. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.component.mjs +0 -174
  286. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.presenter.mjs +0 -31
  287. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +0 -241
  288. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.mjs +0 -37
  289. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.mjs +0 -43
  290. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.mjs +0 -20
  291. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.mjs +0 -95
  292. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.mjs +0 -31
  293. package/esm2022/nav-selector/nav-selector-popover/nav-selector-popover-item.component.mjs +0 -65
  294. package/esm2022/nav-selector/nav-selector-popover/nav-selector-popover.component.mjs +0 -132
  295. package/esm2022/nav-selector/nav-selector.component.mjs +0 -204
  296. package/esm2022/nav-selector/nav-selector.mjs +0 -9
  297. package/esm2022/nav-selector/nav-selector.state.mjs +0 -214
  298. package/esm2022/nav-selector/public_api.mjs +0 -3
  299. package/esm2022/nav-selector/utils/leaf.utils.mjs +0 -44
  300. package/esm2022/nav-selector/utils/nav-selector.accessibility.mjs +0 -179
  301. package/esm2022/nav-selector/utils/nav-selector.builder.mjs +0 -271
  302. package/esm2022/nav-selector/utils/nav-selector.filter.mjs +0 -141
  303. package/esm2022/nav-selector/utils/nav-selector.folding.mjs +0 -282
  304. package/esm2022/nav-selector/utils/nav-selector.merger.mjs +0 -76
  305. package/esm2022/nav-selector/utils/nav-selector.minifying.mjs +0 -59
  306. package/esm2022/nav-selector/utils/nav-selector.multi-select.mjs +0 -215
  307. package/esm2022/nav-selector/utils/nav-selector.single-select.mjs +0 -119
  308. package/esm2022/nav-selector/utils/nav-selector.view-more.mjs +0 -98
  309. package/esm2022/neo-datepicker/agorapulse-ui-components-neo-datepicker.mjs +0 -5
  310. package/esm2022/neo-datepicker/day-detail.model.mjs +0 -2
  311. package/esm2022/neo-datepicker/day-disabled.pipe.mjs +0 -21
  312. package/esm2022/neo-datepicker/neo-datepicker.component.mjs +0 -241
  313. package/esm2022/neo-datepicker/public_api.mjs +0 -4
  314. package/esm2022/notification/agorapulse-ui-components-notification.mjs +0 -5
  315. package/esm2022/notification/notification.component.mjs +0 -15
  316. package/esm2022/notification/public_api.mjs +0 -2
  317. package/esm2022/paginator/agorapulse-ui-components-paginator.mjs +0 -5
  318. package/esm2022/paginator/paginator-button/paginator-button.component.mjs +0 -51
  319. package/esm2022/paginator/paginator.component.mjs +0 -114
  320. package/esm2022/paginator/public_api.mjs +0 -3
  321. package/esm2022/password-input/agorapulse-ui-components-password-input.mjs +0 -5
  322. package/esm2022/password-input/password-input.component.mjs +0 -78
  323. package/esm2022/password-input/public_api.mjs +0 -2
  324. package/esm2022/phone-number-input/agorapulse-ui-components-phone-number-input.mjs +0 -5
  325. package/esm2022/phone-number-input/phone-number-input.component.mjs +0 -195
  326. package/esm2022/phone-number-input/public_api.mjs +0 -2
  327. package/esm2022/popmenu/agorapulse-ui-components-popmenu.mjs +0 -5
  328. package/esm2022/popmenu/options.mjs +0 -17
  329. package/esm2022/popmenu/popmenu-options.interface.mjs +0 -2
  330. package/esm2022/popmenu/popmenu-options.service.mjs +0 -7
  331. package/esm2022/popmenu/popmenu.component.mjs +0 -383
  332. package/esm2022/popmenu/popmenu.directive.mjs +0 -296
  333. package/esm2022/popmenu/popmenu.module.mjs +0 -29
  334. package/esm2022/popmenu/public_api.mjs +0 -5
  335. package/esm2022/radio/agorapulse-ui-components-radio.mjs +0 -5
  336. package/esm2022/radio/public_api.mjs +0 -2
  337. package/esm2022/radio/radio.component.mjs +0 -319
  338. package/esm2022/range-slider/agorapulse-ui-components-range-slider.mjs +0 -5
  339. package/esm2022/range-slider/public_api.mjs +0 -2
  340. package/esm2022/range-slider/range-slider.component.mjs +0 -154
  341. package/esm2022/select/agorapulse-ui-components-select.mjs +0 -5
  342. package/esm2022/select/ap-select.module.mjs +0 -78
  343. package/esm2022/select/dropdown-group-item/dropdown-group-item.component.mjs +0 -51
  344. package/esm2022/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.mjs +0 -75
  345. package/esm2022/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.mjs +0 -79
  346. package/esm2022/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.mjs +0 -59
  347. package/esm2022/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.mjs +0 -60
  348. package/esm2022/select/dropdown-search-form/dropdown-search-form.component.mjs +0 -98
  349. package/esm2022/select/public_api.mjs +0 -13
  350. package/esm2022/select/select-base.directive.mjs +0 -69
  351. package/esm2022/select/select-label-multiple/select-label-multiple.component.mjs +0 -95
  352. package/esm2022/select/select-label-single/select-label-single.component.mjs +0 -33
  353. package/esm2022/select/select-multiple.directive.mjs +0 -35
  354. package/esm2022/select/select-single.directive.mjs +0 -34
  355. package/esm2022/slide-toggle/agorapulse-ui-components-slide-toggle.mjs +0 -5
  356. package/esm2022/slide-toggle/public_api.mjs +0 -2
  357. package/esm2022/slide-toggle/slide-toggle.component.mjs +0 -66
  358. package/esm2022/snackbars-thread/agorapulse-ui-components-snackbars-thread.mjs +0 -5
  359. package/esm2022/snackbars-thread/component/snackbars-thread.component.mjs +0 -93
  360. package/esm2022/snackbars-thread/model/snackbars-thread.model.mjs +0 -44
  361. package/esm2022/snackbars-thread/public_api.mjs +0 -4
  362. package/esm2022/snackbars-thread/service/snackbars-thread.service.mjs +0 -47
  363. package/esm2022/snackbars-thread/utils/const/snackbars-thread.const.mjs +0 -13
  364. package/esm2022/social-button/agorapulse-ui-components-social-button.mjs +0 -5
  365. package/esm2022/social-button/public_api.mjs +0 -2
  366. package/esm2022/social-button/social-button.component.mjs +0 -164
  367. package/esm2022/split-button/agorapulse-ui-components-split-button.mjs +0 -5
  368. package/esm2022/split-button/public_api.mjs +0 -2
  369. package/esm2022/split-button/split-button.component.mjs +0 -122
  370. package/esm2022/src/lib/agorapulse-ui-components.module.mjs +0 -200
  371. package/esm2022/status/agorapulse-ui-components-status.mjs +0 -5
  372. package/esm2022/status/public_api.mjs +0 -2
  373. package/esm2022/status/status.component.mjs +0 -21
  374. package/esm2022/status-card/agorapulse-ui-components-status-card.mjs +0 -5
  375. package/esm2022/status-card/public_api.mjs +0 -2
  376. package/esm2022/status-card/status-card.component.mjs +0 -23
  377. package/esm2022/stepper/agorapulse-ui-components-stepper.mjs +0 -5
  378. package/esm2022/stepper/public_api.mjs +0 -3
  379. package/esm2022/stepper/step.model.mjs +0 -2
  380. package/esm2022/stepper/stepper.component.mjs +0 -38
  381. package/esm2022/tag/agorapulse-ui-components-tag.mjs +0 -5
  382. package/esm2022/tag/public_api.mjs +0 -2
  383. package/esm2022/tag/tag.component.mjs +0 -35
  384. package/esm2022/text-measurement/agorapulse-ui-components-text-measurement.mjs +0 -5
  385. package/esm2022/text-measurement/public_api.mjs +0 -2
  386. package/esm2022/text-measurement/text-measurement.service.mjs +0 -29
  387. package/esm2022/textarea/agorapulse-ui-components-textarea.mjs +0 -5
  388. package/esm2022/textarea/public_api.mjs +0 -2
  389. package/esm2022/textarea/textarea.directive.mjs +0 -37
  390. package/esm2022/toggle/agorapulse-ui-components-toggle.mjs +0 -5
  391. package/esm2022/toggle/public_api.mjs +0 -2
  392. package/esm2022/toggle/toggle.component.mjs +0 -208
  393. package/esm2022/tooltip/agorapulse-ui-components-tooltip.mjs +0 -5
  394. package/esm2022/tooltip/public_api.mjs +0 -2
  395. package/esm2022/tooltip/tooltip.directive.mjs +0 -401
  396. package/esm2022/tooltip/tooltip.service.mjs +0 -29
  397. package/form-field/form-field.component.d.ts +0 -5
  398. package/form-field/public_api.d.ts +0 -1
  399. package/form-message/form-message.component.d.ts +0 -12
  400. package/form-message/public_api.d.ts +0 -1
  401. package/icon-button/icon-button.component.d.ts +0 -40
  402. package/icon-button/public_api.d.ts +0 -1
  403. package/infobox/infobox.component.d.ts +0 -26
  404. package/infobox/public_api.d.ts +0 -1
  405. package/input/input.directive.d.ts +0 -7
  406. package/input/public_api.d.ts +0 -1
  407. package/input-group/input-group.component.d.ts +0 -6
  408. package/input-group/input-prefix/input-prefix.component.d.ts +0 -5
  409. package/input-group/public_api.d.ts +0 -2
  410. package/input-search/input-search.component.d.ts +0 -32
  411. package/input-search/public_api.d.ts +0 -1
  412. package/labels/label-list.component.d.ts +0 -34
  413. package/labels/label.component.d.ts +0 -23
  414. package/labels/public_api.d.ts +0 -2
  415. package/labels-selector/labels-selector.component.d.ts +0 -42
  416. package/labels-selector/public_api.d.ts +0 -1
  417. package/legacy/input/input.component.d.ts +0 -64
  418. package/legacy/input/public_api.d.ts +0 -1
  419. package/legacy/select/public_api.d.ts +0 -1
  420. package/legacy/select/select.component.d.ts +0 -122
  421. package/legacy/textarea/public_api.d.ts +0 -1
  422. package/legacy/textarea/textarea.component.d.ts +0 -53
  423. package/media-display-overlay/media-display-overlay-dialog.component.d.ts +0 -42
  424. package/media-display-overlay/public_api.d.ts +0 -1
  425. package/modal/modal.component.d.ts +0 -54
  426. package/modal/public_api.d.ts +0 -1
  427. package/nav-selector/directives/nav-selector-popover-trigger.directive.d.ts +0 -25
  428. package/nav-selector/directives/tree-node-accessibility.directive.d.ts +0 -9
  429. package/nav-selector/nav-selector-category/nav-selector-category.component.d.ts +0 -28
  430. package/nav-selector/nav-selector-category/nav-selector-category.presenter.d.ts +0 -14
  431. package/nav-selector/nav-selector-group/nav-selector-group.component.d.ts +0 -37
  432. package/nav-selector/nav-selector-group/nav-selector-group.presenter.d.ts +0 -17
  433. package/nav-selector/nav-selector-leaf/nav-selector-leaf.component.d.ts +0 -48
  434. package/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.d.ts +0 -19
  435. package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.d.ts +0 -13
  436. package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.d.ts +0 -10
  437. package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.d.ts +0 -24
  438. package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.d.ts +0 -14
  439. package/nav-selector/nav-selector-popover/nav-selector-popover-item.component.d.ts +0 -14
  440. package/nav-selector/nav-selector-popover/nav-selector-popover.component.d.ts +0 -40
  441. package/nav-selector/nav-selector.component.d.ts +0 -39
  442. package/nav-selector/nav-selector.d.ts +0 -268
  443. package/nav-selector/nav-selector.state.d.ts +0 -49
  444. package/nav-selector/public_api.d.ts +0 -3
  445. package/nav-selector/utils/leaf.utils.d.ts +0 -20
  446. package/nav-selector/utils/nav-selector.accessibility.d.ts +0 -52
  447. package/nav-selector/utils/nav-selector.builder.d.ts +0 -32
  448. package/nav-selector/utils/nav-selector.filter.d.ts +0 -32
  449. package/nav-selector/utils/nav-selector.folding.d.ts +0 -73
  450. package/nav-selector/utils/nav-selector.merger.d.ts +0 -23
  451. package/nav-selector/utils/nav-selector.minifying.d.ts +0 -29
  452. package/nav-selector/utils/nav-selector.multi-select.d.ts +0 -54
  453. package/nav-selector/utils/nav-selector.single-select.d.ts +0 -17
  454. package/nav-selector/utils/nav-selector.view-more.d.ts +0 -30
  455. package/neo-datepicker/day-detail.model.d.ts +0 -9
  456. package/neo-datepicker/day-disabled.pipe.d.ts +0 -8
  457. package/neo-datepicker/neo-datepicker.component.d.ts +0 -61
  458. package/neo-datepicker/public_api.d.ts +0 -3
  459. package/notification/notification.component.d.ts +0 -6
  460. package/notification/public_api.d.ts +0 -1
  461. package/paginator/paginator-button/paginator-button.component.d.ts +0 -17
  462. package/paginator/paginator.component.d.ts +0 -38
  463. package/paginator/public_api.d.ts +0 -2
  464. package/password-input/password-input.component.d.ts +0 -33
  465. package/password-input/public_api.d.ts +0 -1
  466. package/phone-number-input/phone-number-input.component.d.ts +0 -50
  467. package/phone-number-input/public_api.d.ts +0 -1
  468. package/popmenu/options.d.ts +0 -16
  469. package/popmenu/popmenu-options.interface.d.ts +0 -48
  470. package/popmenu/popmenu-options.service.d.ts +0 -7
  471. package/popmenu/popmenu.component.d.ts +0 -66
  472. package/popmenu/popmenu.directive.d.ts +0 -90
  473. package/popmenu/popmenu.module.d.ts +0 -11
  474. package/popmenu/public_api.d.ts +0 -4
  475. package/radio/public_api.d.ts +0 -1
  476. package/radio/radio.component.d.ts +0 -77
  477. package/range-slider/public_api.d.ts +0 -1
  478. package/range-slider/range-slider.component.d.ts +0 -35
  479. package/select/ap-select.module.d.ts +0 -17
  480. package/select/dropdown-group-item/dropdown-group-item.component.d.ts +0 -16
  481. package/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.d.ts +0 -25
  482. package/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.d.ts +0 -26
  483. package/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.d.ts +0 -20
  484. package/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.d.ts +0 -20
  485. package/select/dropdown-search-form/dropdown-search-form.component.d.ts +0 -32
  486. package/select/public_api.d.ts +0 -12
  487. package/select/select-base.directive.d.ts +0 -18
  488. package/select/select-label-multiple/select-label-multiple.component.d.ts +0 -27
  489. package/select/select-label-single/select-label-single.component.d.ts +0 -12
  490. package/select/select-multiple.directive.d.ts +0 -10
  491. package/select/select-single.directive.d.ts +0 -10
  492. package/slide-toggle/public_api.d.ts +0 -1
  493. package/slide-toggle/slide-toggle.component.d.ts +0 -20
  494. package/snackbars-thread/component/snackbars-thread.component.d.ts +0 -24
  495. package/snackbars-thread/model/snackbars-thread.model.d.ts +0 -36
  496. package/snackbars-thread/public_api.d.ts +0 -3
  497. package/snackbars-thread/service/snackbars-thread.service.d.ts +0 -15
  498. package/snackbars-thread/utils/const/snackbars-thread.const.d.ts +0 -10
  499. package/social-button/public_api.d.ts +0 -1
  500. package/social-button/social-button.component.d.ts +0 -32
  501. package/split-button/public_api.d.ts +0 -1
  502. package/split-button/split-button.component.d.ts +0 -45
  503. package/src/lib/agorapulse-ui-components.module.d.ts +0 -29
  504. package/status/public_api.d.ts +0 -1
  505. package/status/status.component.d.ts +0 -9
  506. package/status-card/public_api.d.ts +0 -1
  507. package/status-card/status-card.component.d.ts +0 -13
  508. package/stepper/public_api.d.ts +0 -2
  509. package/stepper/step.model.d.ts +0 -6
  510. package/stepper/stepper.component.d.ts +0 -16
  511. package/tag/public_api.d.ts +0 -1
  512. package/tag/tag.component.d.ts +0 -24
  513. package/text-measurement/public_api.d.ts +0 -1
  514. package/text-measurement/text-measurement.service.d.ts +0 -8
  515. package/textarea/public_api.d.ts +0 -1
  516. package/textarea/textarea.directive.d.ts +0 -11
  517. package/toggle/public_api.d.ts +0 -1
  518. package/toggle/toggle.component.d.ts +0 -52
  519. package/tooltip/public_api.d.ts +0 -1
  520. package/tooltip/tooltip.directive.d.ts +0 -59
  521. package/tooltip/tooltip.service.d.ts +0 -11
@@ -1,271 +0,0 @@
1
- import { isInternalNavSelectorEntryALeaf, isNavSelectorEntryACategory, isNavSelectorEntryAGroup, isNavSelectorEntryALeaf, } from '../nav-selector';
2
- import { NavSelectorAccessibility } from '../utils/nav-selector.accessibility';
3
- import { NavSelectorFolding } from '../utils/nav-selector.folding';
4
- import { NavSelectorMultiSelect } from '../utils/nav-selector.multi-select';
5
- import { NavSelectorSingleSelect } from './nav-selector.single-select';
6
- const LeafLogics = {
7
- DISABLED: 'DISABLED',
8
- FEATURE_LOCKED: 'FEATURE_LOCKED',
9
- TOKEN_INVALID: 'TOKEN_INVALID',
10
- COUNTER: 'COUNTER',
11
- };
12
- /**
13
- * NavSelectorBuilder is a utility class that builds the NavSelector entries for single and multiple select modes.
14
- * It also checks the structure of the entries to ensure they are valid.
15
- */
16
- export class NavSelectorBuilder {
17
- // /!\/!\ Order of logics is important /!\/!\
18
- static LEAF_LOGICS_PRIORITY = {
19
- [LeafLogics.DISABLED]: (leaf) => leaf.disableReason !== null,
20
- [LeafLogics.FEATURE_LOCKED]: (leaf) => leaf.featureLocked,
21
- [LeafLogics.TOKEN_INVALID]: (leaf) => leaf.tokenInvalid,
22
- [LeafLogics.COUNTER]: (leaf) => leaf.counter !== null,
23
- };
24
- /**
25
- * Builds the NavSelector entries for single select mode.
26
- * @param entries nav selector entries
27
- * @param selectedEntryUid selected entry uid
28
- * @param detailsDisplayedLimit number of details displayed limit
29
- */
30
- static build(entries, selectedEntryUid, detailsDisplayedLimit) {
31
- this.structureChecker(entries);
32
- let builtEntries = this.buildEntries(entries, false, 1, detailsDisplayedLimit);
33
- if (selectedEntryUid) {
34
- builtEntries = NavSelectorSingleSelect.select(builtEntries, selectedEntryUid);
35
- builtEntries = NavSelectorFolding.unfoldParents(builtEntries, selectedEntryUid, { multipleMode: false, minified: false });
36
- }
37
- return builtEntries;
38
- }
39
- /**
40
- * Builds the NavSelector entries for multiple select mode.
41
- * @param entries nav selector entries
42
- * @param selectedEntryUids selected entry uids
43
- * @param detailsDisplayedLimit number of details displayed limit
44
- */
45
- static buildInMultipleMode(entries, selectedEntryUids, detailsDisplayedLimit) {
46
- this.structureChecker(entries, true);
47
- let builtEntries = this.buildEntries(entries, true, 1, detailsDisplayedLimit);
48
- if (selectedEntryUids) {
49
- for (const selectedEntryUid of selectedEntryUids) {
50
- builtEntries = NavSelectorMultiSelect.selectInMultipleMode(builtEntries, selectedEntryUid);
51
- builtEntries = NavSelectorFolding.unfoldParents(builtEntries, selectedEntryUid, { multipleMode: false, minified: false });
52
- }
53
- }
54
- return builtEntries;
55
- }
56
- static structureChecker(entries, multipleModeEnabled = false) {
57
- entries.forEach(entry => {
58
- if (isNavSelectorEntryAGroup(entry) || isNavSelectorEntryACategory(entry)) {
59
- this.structureChecker(entry.children, multipleModeEnabled);
60
- }
61
- else if (isNavSelectorEntryALeaf(entry)) {
62
- if (entry.details.length && multipleModeEnabled) {
63
- console.error(`NavSelectorBuilder: Leaf ${entry.uid} with details is not allowed in multiple mode`);
64
- }
65
- }
66
- });
67
- }
68
- static buildEntries(entries, multipleModeEnabled, level = 1, detailsDisplayedLimit) {
69
- const newEntries = entries
70
- .map((entry, idx) => this.buildEntry(entry, { multipleModeEnabled, level, idx, totalNumberOfEntry: entries.length, detailsDisplayedLimit }))
71
- .filter(it => it !== null);
72
- return NavSelectorAccessibility.resetFocus(newEntries);
73
- }
74
- static buildEntry(entry, { multipleModeEnabled, level, idx, totalNumberOfEntry, detailsDisplayedLimit, }) {
75
- if (isNavSelectorEntryALeaf(entry)) {
76
- return this.buildLeaf(entry, {
77
- multipleModeEnabled,
78
- level,
79
- idx,
80
- totalNumberOfLeaf: totalNumberOfEntry,
81
- focusable: true,
82
- detailsDisplayedLimit,
83
- });
84
- }
85
- else if (isNavSelectorEntryACategory(entry)) {
86
- return this.buildCategory(entry, {
87
- multipleModeEnabled,
88
- level,
89
- idx,
90
- totalNumberOfCategory: totalNumberOfEntry,
91
- detailsDisplayedLimit,
92
- });
93
- }
94
- else {
95
- return this.buildGroup(entry, {
96
- multipleModeEnabled,
97
- level,
98
- idx,
99
- totalNumberOfGroups: totalNumberOfEntry,
100
- focusable: true,
101
- detailsDisplayedLimit,
102
- });
103
- }
104
- }
105
- static buildCategoryChildren(entry, { focusable, multipleModeEnabled, categoryLevel, detailsDisplayedLimit, }) {
106
- return entry.children
107
- .map((child, idx) => {
108
- if (isNavSelectorEntryALeaf(child)) {
109
- return this.buildLeaf(child, {
110
- focusable,
111
- multipleModeEnabled,
112
- level: categoryLevel + 1,
113
- idx,
114
- totalNumberOfLeaf: entry.children.length,
115
- detailsDisplayedLimit,
116
- });
117
- }
118
- else {
119
- return this.buildGroup(child, {
120
- focusable,
121
- multipleModeEnabled,
122
- level: categoryLevel + 1,
123
- idx,
124
- totalNumberOfGroups: entry.children.length,
125
- detailsDisplayedLimit,
126
- });
127
- }
128
- })
129
- .filter(it => it !== null);
130
- }
131
- static buildCategory(node, { multipleModeEnabled, level, idx, totalNumberOfCategory, detailsDisplayedLimit, }) {
132
- const children = this.buildCategoryChildren(node, {
133
- focusable: !node.folded,
134
- multipleModeEnabled,
135
- categoryLevel: level,
136
- detailsDisplayedLimit,
137
- });
138
- return {
139
- uid: node.uid,
140
- alias: node.alias,
141
- children,
142
- hidden: false,
143
- focusable: true,
144
- accessibility: {
145
- tabIndex: -1,
146
- ariaLevel: level,
147
- ariaPosinset: idx + 1,
148
- ariaSetsize: totalNumberOfCategory,
149
- },
150
- folded: node.folded,
151
- emptyStateTitle: node.emptyStateTitle,
152
- type: node.type,
153
- };
154
- }
155
- static buildGroupChildren(entry, { multipleModeEnabled, groupLevel, focusable, detailsDisplayedLimit, }) {
156
- return entry.children
157
- .map((child, idx) => this.buildLeaf(child, {
158
- multipleModeEnabled,
159
- level: groupLevel + 1,
160
- idx,
161
- totalNumberOfLeaf: entry.children.length,
162
- focusable: focusable && !entry.folded,
163
- detailsDisplayedLimit,
164
- }))
165
- .filter(it => it !== null);
166
- }
167
- static buildGroup(node, { focusable, multipleModeEnabled, level, idx, totalNumberOfGroups, detailsDisplayedLimit, }) {
168
- const children = this.buildGroupChildren(node, { multipleModeEnabled, groupLevel: level, focusable, detailsDisplayedLimit });
169
- const displayTokenInvalid = children.some(({ displayTokenInvalid }) => displayTokenInvalid);
170
- const selectedChildrenCount = children.filter(({ selected }) => selected).length;
171
- return {
172
- uid: node.uid,
173
- alias: node.alias,
174
- children,
175
- childrenPictureUrlSample: children
176
- .map((child, idx) => isInternalNavSelectorEntryALeaf(child) && idx < 4 ? { url: child.pictureUrl, initial: child.alias[0] } : null)
177
- .filter(it => it !== null),
178
- hidden: false,
179
- accessibility: {
180
- tabIndex: -1,
181
- ariaPosinset: idx + 1,
182
- ariaLevel: level,
183
- ariaSetsize: totalNumberOfGroups,
184
- },
185
- focusable,
186
- displayCounter: node.folded && children.some(child => isInternalNavSelectorEntryALeaf(child) && child.counter !== 0),
187
- counter: children.reduce((acc, { counter }) => acc + counter, 0),
188
- displayTokenInvalid,
189
- selected: false,
190
- selectable: multipleModeEnabled && children.some(({ selectable }) => selectable),
191
- undeterminedSelection: selectedChildrenCount !== children.length && selectedChildrenCount > 0,
192
- folded: node.folded,
193
- type: node.type,
194
- };
195
- }
196
- static buildLeaf(leaf, { focusable, multipleModeEnabled, level, idx, totalNumberOfLeaf, detailsDisplayedLimit, }) {
197
- if (leaf.missingPermission) {
198
- return null;
199
- }
200
- const detailsDisplayable = this.isLeafLogicValid(leaf, LeafLogics.COUNTER) && !!leaf.details.length;
201
- const foldable = !!leaf.details.length && detailsDisplayable;
202
- const folded = true;
203
- const counter = (leaf.details.reduce((acc, detail) => acc + (detail.counter ?? 0), 0) || leaf.counter) ?? 0;
204
- const counterDisplayable = counter !== 0 && this.isLeafLogicValid(leaf, LeafLogics.COUNTER);
205
- const disabled = leaf.disableReason !== null;
206
- const viewMoreDisplayable = leaf.details.length > detailsDisplayedLimit;
207
- return {
208
- uid: leaf.uid,
209
- alias: leaf.alias,
210
- actions: leaf.actions,
211
- pictureUrl: leaf.pictureUrl,
212
- actionsDisplayable: !!leaf.actions.length && this.isLeafLogicValid(leaf, LeafLogics.COUNTER),
213
- disabled,
214
- disableReason: leaf.disableReason,
215
- hidden: false,
216
- focusable: focusable &&
217
- ((multipleModeEnabled && this.isLeafLogicValid(leaf, LeafLogics.COUNTER)) || (!multipleModeEnabled && !disabled)),
218
- accessibility: {
219
- tabIndex: -1,
220
- ariaPosinset: idx + 1,
221
- ariaLevel: level,
222
- ariaSetsize: totalNumberOfLeaf,
223
- },
224
- foldable,
225
- folded,
226
- displayCounter: folded && counterDisplayable,
227
- counterDisplayable,
228
- counter,
229
- network: leaf.network,
230
- displayTokenInvalid: leaf.tokenInvalid && this.isLeafLogicValid(leaf, LeafLogics.TOKEN_INVALID, LeafLogics.COUNTER),
231
- displayFeatureLocked: leaf.featureLocked && this.isLeafLogicValid(leaf, LeafLogics.FEATURE_LOCKED, LeafLogics.TOKEN_INVALID, LeafLogics.COUNTER),
232
- selected: false,
233
- selectable: multipleModeEnabled
234
- ? this.isLeafLogicValid(leaf, LeafLogics.COUNTER)
235
- : this.isLeafLogicValid(leaf, LeafLogics.FEATURE_LOCKED, LeafLogics.TOKEN_INVALID, LeafLogics.COUNTER),
236
- detailsDisplayable,
237
- details: leaf.details.map(detail => this.buildLeafDetail(detail, level + 1, focusable && !folded)),
238
- detailSelected: false,
239
- type: 'LEAF',
240
- viewMoreDisplayable,
241
- viewMoreDisplayed: viewMoreDisplayable,
242
- viewMoreDetailsDisplayedLimit: detailsDisplayedLimit,
243
- };
244
- }
245
- static buildLeafDetail(detail, level, focusable) {
246
- return {
247
- uid: detail.uid,
248
- counter: detail.counter ?? 0,
249
- displayCounter: detail.counter !== null,
250
- alias: detail.name,
251
- hidden: false,
252
- accessibility: {
253
- tabIndex: -1,
254
- ariaPosinset: 1,
255
- ariaLevel: level,
256
- ariaSetsize: 1,
257
- },
258
- focusable,
259
- selected: false,
260
- errorReason: detail.errorReason,
261
- displayError: detail.errorReason !== null,
262
- type: 'LEAF_DETAILS',
263
- };
264
- }
265
- static isLeafLogicValid(leaf, ...excludes) {
266
- return Object.entries(this.LEAF_LOGICS_PRIORITY)
267
- .filter(([key]) => !excludes.includes(key))
268
- .every(([, logic]) => !logic(leaf));
269
- }
270
- }
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmF2LXNlbGVjdG9yL3NyYy91dGlscy9uYXYtc2VsZWN0b3IuYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBTUgsK0JBQStCLEVBQy9CLDJCQUEyQixFQUMzQix3QkFBd0IsRUFDeEIsdUJBQXVCLEdBTTFCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdkUsTUFBTSxVQUFVLEdBQUc7SUFDZixRQUFRLEVBQUUsVUFBVTtJQUNwQixjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLE9BQU8sRUFBRSxTQUFTO0NBQ1osQ0FBQztBQUdYOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsNkNBQTZDO0lBQ3JDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBMEQ7UUFDekYsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUk7UUFDN0UsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYTtRQUMxRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLElBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZO1FBQ3hFLENBQUMsVUFBVSxDQUFDLE9B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QUFFLFNBQWtCO1FBQzVGLE9BQU87WUFDSCxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7WUFDZixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDO1lBQzVCLGNBQWMsRUFBRSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUk7WUFDdkMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2xCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsYUFBYSxFQUFFO2dCQUNYLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ1osWUFBWSxFQUFFLENBQUM7Z0JBQ2YsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLFdBQVcsRUFBRSxDQUFDO2FBQ2pCO1lBQ0QsU0FBUztZQUNULFFBQVEsRUFBRSxLQUFLO1lBQ2YsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLFlBQVksRUFBRSxNQUFNLENBQUMsV0FBVyxLQUFLLElBQUk7WUFDekMsSUFBSSxFQUFFLGNBQWM7U0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBcUIsRUFBRSxHQUFHLFFBQXNCO1FBQzVFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7YUFDM0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQWlCLENBQUMsQ0FBQzthQUN4RCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZEZXRhaWxzLFxuICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYsXG4gICAgaXNOYXZTZWxlY3RvckVudHJ5QUNhdGVnb3J5LFxuICAgIGlzTmF2U2VsZWN0b3JFbnRyeUFHcm91cCxcbiAgICBpc05hdlNlbGVjdG9yRW50cnlBTGVhZixcbiAgICBOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgIE5hdlNlbGVjdG9yRW50cnksXG4gICAgTmF2U2VsZWN0b3JHcm91cCxcbiAgICBOYXZTZWxlY3RvckxlYWYsXG4gICAgTmF2U2VsZWN0b3JMZWFmRGV0YWlscyxcbn0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yJztcbmltcG9ydCB7IE5hdlNlbGVjdG9yQWNjZXNzaWJpbGl0eSB9IGZyb20gJy4uL3V0aWxzL25hdi1zZWxlY3Rvci5hY2Nlc3NpYmlsaXR5JztcbmltcG9ydCB7IE5hdlNlbGVjdG9yRm9sZGluZyB9IGZyb20gJy4uL3V0aWxzL25hdi1zZWxlY3Rvci5mb2xkaW5nJztcbmltcG9ydCB7IE5hdlNlbGVjdG9yTXVsdGlTZWxlY3QgfSBmcm9tICcuLi91dGlscy9uYXYtc2VsZWN0b3IubXVsdGktc2VsZWN0JztcbmltcG9ydCB7IE5hdlNlbGVjdG9yU2luZ2xlU2VsZWN0IH0gZnJvbSAnLi9uYXYtc2VsZWN0b3Iuc2luZ2xlLXNlbGVjdCc7XG5cbmNvbnN0IExlYWZMb2dpY3MgPSB7XG4gICAgRElTQUJMRUQ6ICdESVNBQkxFRCcsXG4gICAgRkVBVFVSRV9MT0NLRUQ6ICdGRUFUVVJFX0xPQ0tFRCcsXG4gICAgVE9LRU5fSU5WQUxJRDogJ1RPS0VOX0lOVkFMSUQnLFxuICAgIENPVU5URVI6ICdDT1VOVEVSJyxcbn0gYXMgY29uc3Q7XG50eXBlIExlYWZMb2dpY3MgPSBrZXlvZiB0eXBlb2YgTGVhZkxvZ2ljcztcblxuLyoqXG4gKiBOYXZTZWxlY3RvckJ1aWxkZXIgaXMgYSB1dGlsaXR5IGNsYXNzIHRoYXQgYnVpbGRzIHRoZSBOYXZTZWxlY3RvciBlbnRyaWVzIGZvciBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdCBtb2Rlcy5cbiAqIEl0IGFsc28gY2hlY2tzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGVudHJpZXMgdG8gZW5zdXJlIHRoZXkgYXJlIHZhbGlkLlxuICovXG5leHBvcnQgY2xhc3MgTmF2U2VsZWN0b3JCdWlsZGVyIHtcbiAgICAvLyAvIVxcLyFcXCBPcmRlciBvZiBsb2dpY3MgaXMgaW1wb3J0YW50IC8hXFwvIVxcXG4gICAgcHJpdmF0ZSBzdGF0aWMgTEVBRl9MT0dJQ1NfUFJJT1JJVFk6IFJlY29yZDxMZWFmTG9naWNzLCAobGVmOiBOYXZTZWxlY3RvckxlYWYpID0+IGJvb2xlYW4+ID0ge1xuICAgICAgICBbTGVhZkxvZ2ljcy5ESVNBQkxFRF06IChsZWFmOiBOYXZTZWxlY3RvckxlYWYpID0+IGxlYWYuZGlzYWJsZVJlYXNvbiAhPT0gbnVsbCxcbiAgICAgICAgW0xlYWZMb2dpY3MuRkVBVFVSRV9MT0NLRURdOiAobGVhZjogTmF2U2VsZWN0b3JMZWFmKSA9PiBsZWFmLmZlYXR1cmVMb2NrZWQsXG4gICAgICAgIFtMZWFmTG9naWNzLlRPS0VOX0lOVkFMSURdOiAobGVhZjogTmF2U2VsZWN0b3JMZWFmKSA9PiBsZWFmLnRva2VuSW52YWxpZCxcbiAgICAgICAgW0xlYWZMb2dpY3MuQ09VTlRFUl06IChsZWFmOiBOYXZTZWxlY3RvckxlYWYpID0+IGxlYWYuY291bnRlciAhPT0gbnVsbCxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIHRoZSBOYXZTZWxlY3RvciBlbnRyaWVzIGZvciBzaW5nbGUgc2VsZWN0IG1vZGUuXG4gICAgICogQHBhcmFtIGVudHJpZXMgbmF2IHNlbGVjdG9yIGVudHJpZXNcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRFbnRyeVVpZCBzZWxlY3RlZCBlbnRyeSB1aWRcbiAgICAgKiBAcGFyYW0gZGV0YWlsc0Rpc3BsYXllZExpbWl0IG51bWJlciBvZiBkZXRhaWxzIGRpc3BsYXllZCBsaW1pdFxuICAgICAqL1xuICAgIHN0YXRpYyBidWlsZChlbnRyaWVzOiBOYXZTZWxlY3RvckVudHJ5W10sIHNlbGVjdGVkRW50cnlVaWQ6IHN0cmluZyB8IG51bGwsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10ge1xuICAgICAgICB0aGlzLnN0cnVjdHVyZUNoZWNrZXIoZW50cmllcyk7XG4gICAgICAgIGxldCBidWlsdEVudHJpZXMgPSB0aGlzLmJ1aWxkRW50cmllcyhlbnRyaWVzLCBmYWxzZSwgMSwgZGV0YWlsc0Rpc3BsYXllZExpbWl0KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRW50cnlVaWQpIHtcbiAgICAgICAgICAgIGJ1aWx0RW50cmllcyA9IE5hdlNlbGVjdG9yU2luZ2xlU2VsZWN0LnNlbGVjdChidWlsdEVudHJpZXMsIHNlbGVjdGVkRW50cnlVaWQpO1xuICAgICAgICAgICAgYnVpbHRFbnRyaWVzID0gTmF2U2VsZWN0b3JGb2xkaW5nLnVuZm9sZFBhcmVudHMoYnVpbHRFbnRyaWVzLCBzZWxlY3RlZEVudHJ5VWlkLCB7IG11bHRpcGxlTW9kZTogZmFsc2UsIG1pbmlmaWVkOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVpbHRFbnRyaWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyB0aGUgTmF2U2VsZWN0b3IgZW50cmllcyBmb3IgbXVsdGlwbGUgc2VsZWN0IG1vZGUuXG4gICAgICogQHBhcmFtIGVudHJpZXMgbmF2IHNlbGVjdG9yIGVudHJpZXNcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRFbnRyeVVpZHMgc2VsZWN0ZWQgZW50cnkgdWlkc1xuICAgICAqIEBwYXJhbSBkZXRhaWxzRGlzcGxheWVkTGltaXQgbnVtYmVyIG9mIGRldGFpbHMgZGlzcGxheWVkIGxpbWl0XG4gICAgICovXG4gICAgc3RhdGljIGJ1aWxkSW5NdWx0aXBsZU1vZGUoXG4gICAgICAgIGVudHJpZXM6IE5hdlNlbGVjdG9yRW50cnlbXSxcbiAgICAgICAgc2VsZWN0ZWRFbnRyeVVpZHM6IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXJcbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIHRoaXMuc3RydWN0dXJlQ2hlY2tlcihlbnRyaWVzLCB0cnVlKTtcbiAgICAgICAgbGV0IGJ1aWx0RW50cmllcyA9IHRoaXMuYnVpbGRFbnRyaWVzKGVudHJpZXMsIHRydWUsIDEsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEVudHJ5VWlkcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RlZEVudHJ5VWlkIG9mIHNlbGVjdGVkRW50cnlVaWRzKSB7XG4gICAgICAgICAgICAgICAgYnVpbHRFbnRyaWVzID0gTmF2U2VsZWN0b3JNdWx0aVNlbGVjdC5zZWxlY3RJbk11bHRpcGxlTW9kZShidWlsdEVudHJpZXMsIHNlbGVjdGVkRW50cnlVaWQpO1xuICAgICAgICAgICAgICAgIGJ1aWx0RW50cmllcyA9IE5hdlNlbGVjdG9yRm9sZGluZy51bmZvbGRQYXJlbnRzKGJ1aWx0RW50cmllcywgc2VsZWN0ZWRFbnRyeVVpZCwgeyBtdWx0aXBsZU1vZGU6IGZhbHNlLCBtaW5pZmllZDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1aWx0RW50cmllcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBzdHJ1Y3R1cmVDaGVja2VyKGVudHJpZXM6IE5hdlNlbGVjdG9yRW50cnlbXSwgbXVsdGlwbGVNb2RlRW5hYmxlZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUdyb3VwKGVudHJ5KSB8fCBpc05hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnkoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJ1Y3R1cmVDaGVja2VyKGVudHJ5LmNoaWxkcmVuLCBtdWx0aXBsZU1vZGVFbmFibGVkKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUxlYWYoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LmRldGFpbHMubGVuZ3RoICYmIG11bHRpcGxlTW9kZUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgTmF2U2VsZWN0b3JCdWlsZGVyOiBMZWFmICR7ZW50cnkudWlkfSB3aXRoIGRldGFpbHMgaXMgbm90IGFsbG93ZWQgaW4gbXVsdGlwbGUgbW9kZWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRFbnRyaWVzKFxuICAgICAgICBlbnRyaWVzOiBOYXZTZWxlY3RvckVudHJ5W10sXG4gICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQ6IGJvb2xlYW4sXG4gICAgICAgIGxldmVsID0gMSxcbiAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXJcbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIGNvbnN0IG5ld0VudHJpZXMgPSBlbnRyaWVzXG4gICAgICAgICAgICAubWFwKChlbnRyeSwgaWR4KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRFbnRyeShlbnRyeSwgeyBtdWx0aXBsZU1vZGVFbmFibGVkLCBsZXZlbCwgaWR4LCB0b3RhbE51bWJlck9mRW50cnk6IGVudHJpZXMubGVuZ3RoLCBkZXRhaWxzRGlzcGxheWVkTGltaXQgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoaXQgPT4gaXQgIT09IG51bGwpO1xuICAgICAgICByZXR1cm4gTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5LnJlc2V0Rm9jdXMobmV3RW50cmllcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRFbnRyeShcbiAgICAgICAgZW50cnk6IE5hdlNlbGVjdG9yRW50cnksXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZFbnRyeSxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfTogeyBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuOyBsZXZlbDogbnVtYmVyOyBpZHg6IG51bWJlcjsgdG90YWxOdW1iZXJPZkVudHJ5OiBudW1iZXI7IGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyIH1cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkgfCBudWxsIHtcbiAgICAgICAgaWYgKGlzTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGVudHJ5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRMZWFmKGVudHJ5LCB7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgdG90YWxOdW1iZXJPZkxlYWY6IHRvdGFsTnVtYmVyT2ZFbnRyeSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUNhdGVnb3J5KGVudHJ5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRDYXRlZ29yeShlbnRyeSwge1xuICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZDYXRlZ29yeTogdG90YWxOdW1iZXJPZkVudHJ5LFxuICAgICAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRHcm91cChlbnRyeSwge1xuICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZHcm91cHM6IHRvdGFsTnVtYmVyT2ZFbnRyeSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZENhdGVnb3J5Q2hpbGRyZW4oXG4gICAgICAgIGVudHJ5OiBOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgICAgICB7XG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgY2F0ZWdvcnlMZXZlbCxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfToge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiBib29sZWFuO1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGNhdGVnb3J5TGV2ZWw6IG51bWJlcjtcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKTogKEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB8IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKVtdIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmNoaWxkcmVuXG4gICAgICAgICAgICAubWFwKChjaGlsZCwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZExlYWYoY2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogY2F0ZWdvcnlMZXZlbCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mTGVhZjogZW50cnkuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZEdyb3VwKGNoaWxkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGNhdGVnb3J5TGV2ZWwgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxOdW1iZXJPZkdyb3VwczogZW50cnkuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcihpdCA9PiBpdCAhPT0gbnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRDYXRlZ29yeShcbiAgICAgICAgbm9kZTogTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkNhdGVnb3J5LFxuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICB9OiB7XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgICAgbGV2ZWw6IG51bWJlcjtcbiAgICAgICAgICAgIGlkeDogbnVtYmVyO1xuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkNhdGVnb3J5OiBudW1iZXI7XG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5idWlsZENhdGVnb3J5Q2hpbGRyZW4obm9kZSwge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiAhbm9kZS5mb2xkZWQsXG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgY2F0ZWdvcnlMZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1aWQ6IG5vZGUudWlkLFxuICAgICAgICAgICAgYWxpYXM6IG5vZGUuYWxpYXMsXG4gICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBmb2N1c2FibGU6IHRydWUsXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgICAgIGFyaWFMZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICAgICAgYXJpYVBvc2luc2V0OiBpZHggKyAxLFxuICAgICAgICAgICAgICAgIGFyaWFTZXRzaXplOiB0b3RhbE51bWJlck9mQ2F0ZWdvcnksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9sZGVkOiBub2RlLmZvbGRlZCxcbiAgICAgICAgICAgIGVtcHR5U3RhdGVUaXRsZTogbm9kZS5lbXB0eVN0YXRlVGl0bGUsXG4gICAgICAgICAgICB0eXBlOiBub2RlLnR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRHcm91cENoaWxkcmVuKFxuICAgICAgICBlbnRyeTogTmF2U2VsZWN0b3JHcm91cCxcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGdyb3VwTGV2ZWwsXG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH06IHsgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjsgZ3JvdXBMZXZlbDogbnVtYmVyOyBmb2N1c2FibGU6IGJvb2xlYW47IGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyIH1cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZltdIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmNoaWxkcmVuXG4gICAgICAgICAgICAubWFwKChjaGlsZCwgaWR4KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRMZWFmKGNoaWxkLCB7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBncm91cExldmVsICsgMSxcbiAgICAgICAgICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mTGVhZjogZW50cnkuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU6IGZvY3VzYWJsZSAmJiAhZW50cnkuZm9sZGVkLFxuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoaXQgPT4gaXQgIT09IG51bGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkR3JvdXAoXG4gICAgICAgIG5vZGU6IE5hdlNlbGVjdG9yR3JvdXAsXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZHcm91cHMsXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH06IHtcbiAgICAgICAgICAgIGZvY3VzYWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgICBsZXZlbDogbnVtYmVyO1xuICAgICAgICAgICAgaWR4OiBudW1iZXI7XG4gICAgICAgICAgICB0b3RhbE51bWJlck9mR3JvdXBzOiBudW1iZXI7XG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5idWlsZEdyb3VwQ2hpbGRyZW4obm9kZSwgeyBtdWx0aXBsZU1vZGVFbmFibGVkLCBncm91cExldmVsOiBsZXZlbCwgZm9jdXNhYmxlLCBkZXRhaWxzRGlzcGxheWVkTGltaXQgfSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlUb2tlbkludmFsaWQgPSBjaGlsZHJlbi5zb21lKCh7IGRpc3BsYXlUb2tlbkludmFsaWQgfSkgPT4gZGlzcGxheVRva2VuSW52YWxpZCk7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbkNvdW50ID0gY2hpbGRyZW4uZmlsdGVyKCh7IHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkKS5sZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVpZDogbm9kZS51aWQsXG4gICAgICAgICAgICBhbGlhczogbm9kZS5hbGlhcyxcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgY2hpbGRyZW5QaWN0dXJlVXJsU2FtcGxlOiBjaGlsZHJlblxuICAgICAgICAgICAgICAgIC5tYXAoKGNoaWxkLCBpZHgpID0+XG4gICAgICAgICAgICAgICAgICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYoY2hpbGQpICYmIGlkeCA8IDQgPyB7IHVybDogY2hpbGQucGljdHVyZVVybCwgaW5pdGlhbDogY2hpbGQuYWxpYXNbMF0gfSA6IG51bGxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZpbHRlcihpdCA9PiBpdCAhPT0gbnVsbCksXG4gICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgICAgICAgICBhcmlhUG9zaW5zZXQ6IGlkeCArIDEsXG4gICAgICAgICAgICAgICAgYXJpYUxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgICAgICBhcmlhU2V0c2l6ZTogdG90YWxOdW1iZXJPZkdyb3VwcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBkaXNwbGF5Q291bnRlcjogbm9kZS5mb2xkZWQgJiYgY2hpbGRyZW4uc29tZShjaGlsZCA9PiBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGNoaWxkKSAmJiBjaGlsZC5jb3VudGVyICE9PSAwKSxcbiAgICAgICAgICAgIGNvdW50ZXI6IGNoaWxkcmVuLnJlZHVjZSgoYWNjLCB7IGNvdW50ZXIgfSkgPT4gYWNjICsgY291bnRlciwgMCksXG4gICAgICAgICAgICBkaXNwbGF5VG9rZW5JbnZhbGlkLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc2VsZWN0YWJsZTogbXVsdGlwbGVNb2RlRW5hYmxlZCAmJiBjaGlsZHJlbi5zb21lKCh7IHNlbGVjdGFibGUgfSkgPT4gc2VsZWN0YWJsZSksXG4gICAgICAgICAgICB1bmRldGVybWluZWRTZWxlY3Rpb246IHNlbGVjdGVkQ2hpbGRyZW5Db3VudCAhPT0gY2hpbGRyZW4ubGVuZ3RoICYmIHNlbGVjdGVkQ2hpbGRyZW5Db3VudCA+IDAsXG4gICAgICAgICAgICBmb2xkZWQ6IG5vZGUuZm9sZGVkLFxuICAgICAgICAgICAgdHlwZTogbm9kZS50eXBlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkTGVhZihcbiAgICAgICAgbGVhZjogTmF2U2VsZWN0b3JMZWFmLFxuICAgICAgICB7XG4gICAgICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICB0b3RhbE51bWJlck9mTGVhZixcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfToge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiBib29sZWFuO1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGxldmVsOiBudW1iZXI7XG4gICAgICAgICAgICBpZHg6IG51bWJlcjtcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZMZWFmOiBudW1iZXI7XG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmIHwgbnVsbCB7XG4gICAgICAgIGlmIChsZWFmLm1pc3NpbmdQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRldGFpbHNEaXNwbGF5YWJsZSA9IHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkNPVU5URVIpICYmICEhbGVhZi5kZXRhaWxzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZm9sZGFibGUgPSAhIWxlYWYuZGV0YWlscy5sZW5ndGggJiYgZGV0YWlsc0Rpc3BsYXlhYmxlO1xuICAgICAgICBjb25zdCBmb2xkZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBjb3VudGVyID0gKGxlYWYuZGV0YWlscy5yZWR1Y2UoKGFjYywgZGV0YWlsKSA9PiBhY2MgKyAoZGV0YWlsLmNvdW50ZXIgPz8gMCksIDApIHx8IGxlYWYuY291bnRlcikgPz8gMDtcbiAgICAgICAgY29uc3QgY291bnRlckRpc3BsYXlhYmxlID0gY291bnRlciAhPT0gMCAmJiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5DT1VOVEVSKTtcblxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGxlYWYuZGlzYWJsZVJlYXNvbiAhPT0gbnVsbDtcblxuICAgICAgICBjb25zdCB2aWV3TW9yZURpc3BsYXlhYmxlID0gbGVhZi5kZXRhaWxzLmxlbmd0aCA+IGRldGFpbHNEaXNwbGF5ZWRMaW1pdDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdWlkOiBsZWFmLnVpZCxcbiAgICAgICAgICAgIGFsaWFzOiBsZWFmLmFsaWFzLFxuICAgICAgICAgICAgYWN0aW9uczogbGVhZi5hY3Rpb25zLFxuICAgICAgICAgICAgcGljdHVyZVVybDogbGVhZi5waWN0dXJlVXJsLFxuICAgICAgICAgICAgYWN0aW9uc0Rpc3BsYXlhYmxlOiAhIWxlYWYuYWN0aW9ucy5sZW5ndGggJiYgdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuQ09VTlRFUiksXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIGRpc2FibGVSZWFzb246IGxlYWYuZGlzYWJsZVJlYXNvbixcbiAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBmb2N1c2FibGU6XG4gICAgICAgICAgICAgICAgZm9jdXNhYmxlICYmXG4gICAgICAgICAgICAgICAgKChtdWx0aXBsZU1vZGVFbmFibGVkICYmIHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkNPVU5URVIpKSB8fCAoIW11bHRpcGxlTW9kZUVuYWJsZWQgJiYgIWRpc2FibGVkKSksXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgICAgIGFyaWFQb3NpbnNldDogaWR4ICsgMSxcbiAgICAgICAgICAgICAgICBhcmlhTGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgICAgIGFyaWFTZXRzaXplOiB0b3RhbE51bWJlck9mTGVhZixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmb2xkYWJsZSxcbiAgICAgICAgICAgIGZvbGRlZCxcbiAgICAgICAgICAgIGRpc3BsYXlDb3VudGVyOiBmb2xkZWQgJiYgY291bnRlckRpc3BsYXlhYmxlLFxuICAgICAgICAgICAgY291bnRlckRpc3BsYXlhYmxlLFxuICAgICAgICAgICAgY291bnRlcixcbiAgICAgICAgICAgIG5ldHdvcms6IGxlYWYubmV0d29yayxcbiAgICAgICAgICAgIGRpc3BsYXlUb2tlbkludmFsaWQ6IGxlYWYudG9rZW5JbnZhbGlkICYmIHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLlRPS0VOX0lOVkFMSUQsIExlYWZMb2dpY3MuQ09VTlRFUiksXG4gICAgICAgICAgICBkaXNwbGF5RmVhdHVyZUxvY2tlZDpcbiAgICAgICAgICAgICAgICBsZWFmLmZlYXR1cmVMb2NrZWQgJiYgdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuRkVBVFVSRV9MT0NLRUQsIExlYWZMb2dpY3MuVE9LRU5fSU5WQUxJRCwgTGVhZkxvZ2ljcy5DT1VOVEVSKSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IG11bHRpcGxlTW9kZUVuYWJsZWRcbiAgICAgICAgICAgICAgICA/IHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkNPVU5URVIpXG4gICAgICAgICAgICAgICAgOiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5GRUFUVVJFX0xPQ0tFRCwgTGVhZkxvZ2ljcy5UT0tFTl9JTlZBTElELCBMZWFmTG9naWNzLkNPVU5URVIpLFxuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXlhYmxlLFxuICAgICAgICAgICAgZGV0YWlsczogbGVhZi5kZXRhaWxzLm1hcChkZXRhaWwgPT4gdGhpcy5idWlsZExlYWZEZXRhaWwoZGV0YWlsLCBsZXZlbCArIDEsIGZvY3VzYWJsZSAmJiAhZm9sZGVkKSksXG4gICAgICAgICAgICBkZXRhaWxTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICB0eXBlOiAnTEVBRicsXG4gICAgICAgICAgICB2aWV3TW9yZURpc3BsYXlhYmxlLFxuICAgICAgICAgICAgdmlld01vcmVEaXNwbGF5ZWQ6IHZpZXdNb3JlRGlzcGxheWFibGUsXG4gICAgICAgICAgICB2aWV3TW9yZURldGFpbHNEaXNwbGF5ZWRMaW1pdDogZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkTGVhZkRldGFpbChkZXRhaWw6IE5hdlNlbGVjdG9yTGVhZkRldGFpbHMsIGxldmVsOiBudW1iZXIsIGZvY3VzYWJsZTogYm9vbGVhbik6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmRGV0YWlscyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1aWQ6IGRldGFpbC51aWQsXG4gICAgICAgICAgICBjb3VudGVyOiBkZXRhaWwuY291bnRlciA/PyAwLFxuICAgICAgICAgICAgZGlzcGxheUNvdW50ZXI6IGRldGFpbC5jb3VudGVyICE9PSBudWxsLFxuICAgICAgICAgICAgYWxpYXM6IGRldGFpbC5uYW1lLFxuICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgICAgICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgICAgICAgICAgYXJpYVBvc2luc2V0OiAxLFxuICAgICAgICAgICAgICAgIGFyaWFMZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICAgICAgYXJpYVNldHNpemU6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9jdXNhYmxlLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3JSZWFzb246IGRldGFpbC5lcnJvclJlYXNvbixcbiAgICAgICAgICAgIGRpc3BsYXlFcnJvcjogZGV0YWlsLmVycm9yUmVhc29uICE9PSBudWxsLFxuICAgICAgICAgICAgdHlwZTogJ0xFQUZfREVUQUlMUycsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNMZWFmTG9naWNWYWxpZChsZWFmOiBOYXZTZWxlY3RvckxlYWYsIC4uLmV4Y2x1ZGVzOiBMZWFmTG9naWNzW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuTEVBRl9MT0dJQ1NfUFJJT1JJVFkpXG4gICAgICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIWV4Y2x1ZGVzLmluY2x1ZGVzKGtleSBhcyBMZWFmTG9naWNzKSlcbiAgICAgICAgICAgIC5ldmVyeSgoWywgbG9naWNdKSA9PiAhbG9naWMobGVhZikpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,141 +0,0 @@
1
- import { isInternalNavSelectorEntryACategory, isInternalNavSelectorEntryAGroup, isInternalNavSelectorEntryALeaf, isInternalNavSelectorEntryANode, } from '../nav-selector';
2
- import { isInternalNavSelectorEntryALeafFocusable } from '../utils/leaf.utils';
3
- import { NavSelectorAccessibility } from '../utils/nav-selector.accessibility';
4
- /**
5
- * NavSelectorFilter is a utility class that provides methods to filter entries
6
- */
7
- export class NavSelectorFilter {
8
- /**
9
- * Filters the entries based on the search string
10
- *
11
- * The search string is normalized and lowercase and trimmed.
12
- *
13
- * If a category matches the search string, all its children are unfolded, marked as focusable, and not hidden.
14
- *
15
- * If a group matches the search string, the group is unfolded and all its children are unfolded, marked as focusable, and not hidden.
16
- *
17
- * If a leaf matches the search string, it is marked as not hidden and focusable.
18
- *
19
- * Else the entry marked as hidden and not focusable.
20
- *
21
- * It also determines whenever counter and token invalid should be displayed on groups and leaves.
22
- *
23
- * @param entries The entries to filter.
24
- * @param search The search string.
25
- * @param multipleMode to update the focusable state of leaves correctly.
26
- * @returns The filtered entries.
27
- */
28
- static filter(entries, search, multipleMode) {
29
- const formattedSearch = this.cleanValue(search);
30
- if (!formattedSearch) {
31
- return this.resetState(entries);
32
- }
33
- return this.filterEntries(entries, formattedSearch, multipleMode);
34
- }
35
- static filterEntries(entries, formattedSearch, multipleMode) {
36
- const newEntries = entries.map(entry => {
37
- if (this.matches(entry.alias, formattedSearch)) {
38
- return this.recursivelyUnfoldEntry(entry, multipleMode);
39
- }
40
- if (isInternalNavSelectorEntryANode(entry)) {
41
- const children = this.filterEntries(entry.children, formattedSearch, multipleMode);
42
- if (children.every(({ hidden }) => hidden)) {
43
- return {
44
- ...entry,
45
- children,
46
- focusable: false,
47
- hidden: true,
48
- };
49
- }
50
- return {
51
- ...entry,
52
- hidden: false,
53
- focusable: true,
54
- displayCounter: false,
55
- displayTokenInvalid: false,
56
- folded: false,
57
- children,
58
- };
59
- }
60
- if (isInternalNavSelectorEntryALeaf(entry)) {
61
- return {
62
- ...entry,
63
- focusable: false,
64
- hidden: true,
65
- details: entry.details.map(detail => ({
66
- ...detail,
67
- focusable: false,
68
- })),
69
- };
70
- }
71
- return {
72
- ...entry,
73
- focusable: false,
74
- hidden: true,
75
- };
76
- });
77
- return NavSelectorAccessibility.resetFocus(newEntries);
78
- }
79
- static recursivelyUnfoldEntry(entry, multipleMode) {
80
- if (isInternalNavSelectorEntryAGroup(entry)) {
81
- const children = entry.children.map(child => this.recursivelyUnfoldEntry(child, multipleMode));
82
- return {
83
- ...entry,
84
- hidden: false,
85
- folded: false,
86
- focusable: true,
87
- children,
88
- displayCounter: false,
89
- displayTokenInvalid: false,
90
- };
91
- }
92
- else if (isInternalNavSelectorEntryALeaf(entry)) {
93
- const leafFocusable = isInternalNavSelectorEntryALeafFocusable(entry, { parentFolded: false, multipleMode });
94
- return {
95
- ...entry,
96
- hidden: false,
97
- focusable: leafFocusable,
98
- displayCounter: entry.folded && entry.counterDisplayable,
99
- details: entry.details.map(detail => ({
100
- ...detail,
101
- focusable: !entry.folded,
102
- })),
103
- };
104
- }
105
- else if (isInternalNavSelectorEntryACategory(entry)) {
106
- const children = entry.children.map(child => this.recursivelyUnfoldEntry(child, multipleMode));
107
- return {
108
- ...entry,
109
- focusable: true,
110
- folded: false,
111
- hidden: false,
112
- children,
113
- };
114
- }
115
- return entry;
116
- }
117
- static matches(alias, formattedSearch) {
118
- return this.cleanValue(alias).includes(formattedSearch);
119
- }
120
- static cleanValue(value) {
121
- return value.trim().normalize('NFKC').toLowerCase();
122
- }
123
- static resetState(entries, parentFolded = false) {
124
- return entries.map(entry => {
125
- if (isInternalNavSelectorEntryANode(entry)) {
126
- return {
127
- ...entry,
128
- hidden: false,
129
- focusable: !parentFolded,
130
- children: this.resetState(entry.children, entry.folded),
131
- };
132
- }
133
- return {
134
- ...entry,
135
- focusable: !parentFolded,
136
- hidden: false,
137
- };
138
- });
139
- }
140
- }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL3V0aWxzL25hdi1zZWxlY3Rvci5maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlILG1DQUFtQyxFQUNuQyxnQ0FBZ0MsRUFDaEMsK0JBQStCLEVBQy9CLCtCQUErQixHQUNsQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRS9FOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBbUMsRUFBRSxNQUFjLEVBQUUsWUFBcUI7UUFDcEYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU8sTUFBTSxDQUFDLGFBQWEsQ0FDeEIsT0FBWSxFQUNaLGVBQXVCLEVBQ3ZCLFlBQXFCO1FBRXJCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENB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LENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5LFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JHcm91cCxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZixcbiAgICBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFDYXRlZ29yeSxcbiAgICBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFHcm91cCxcbiAgICBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmLFxuICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QU5vZGUsXG59IGZyb20gJy4uL25hdi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmRm9jdXNhYmxlIH0gZnJvbSAnLi4vdXRpbHMvbGVhZi51dGlscyc7XG5pbXBvcnQgeyBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkgfSBmcm9tICcuLi91dGlscy9uYXYtc2VsZWN0b3IuYWNjZXNzaWJpbGl0eSc7XG5cbi8qKlxuICogTmF2U2VsZWN0b3JGaWx0ZXIgaXMgYSB1dGlsaXR5IGNsYXNzIHRoYXQgcHJvdmlkZXMgbWV0aG9kcyB0byBmaWx0ZXIgZW50cmllc1xuICovXG5leHBvcnQgY2xhc3MgTmF2U2VsZWN0b3JGaWx0ZXIge1xuICAgIC8qKlxuICAgICAqIEZpbHRlcnMgdGhlIGVudHJpZXMgYmFzZWQgb24gdGhlIHNlYXJjaCBzdHJpbmdcbiAgICAgKlxuICAgICAqIFRoZSBzZWFyY2ggc3RyaW5nIGlzIG5vcm1hbGl6ZWQgYW5kIGxvd2VyY2FzZSBhbmQgdHJpbW1lZC5cbiAgICAgKlxuICAgICAqIElmIGEgY2F0ZWdvcnkgbWF0Y2hlcyB0aGUgc2VhcmNoIHN0cmluZywgYWxsIGl0cyBjaGlsZHJlbiBhcmUgdW5mb2xkZWQsIG1hcmtlZCBhcyBmb2N1c2FibGUsIGFuZCBub3QgaGlkZGVuLlxuICAgICAqXG4gICAgICogSWYgYSBncm91cCBtYXRjaGVzIHRoZSBzZWFyY2ggc3RyaW5nLCB0aGUgZ3JvdXAgaXMgdW5mb2xkZWQgYW5kIGFsbCBpdHMgY2hpbGRyZW4gYXJlIHVuZm9sZGVkLCBtYXJrZWQgYXMgZm9jdXNhYmxlLCBhbmQgbm90IGhpZGRlbi5cbiAgICAgKlxuICAgICAqIElmIGEgbGVhZiBtYXRjaGVzIHRoZSBzZWFyY2ggc3RyaW5nLCBpdCBpcyBtYXJrZWQgYXMgbm90IGhpZGRlbiBhbmQgZm9jdXNhYmxlLlxuICAgICAqXG4gICAgICogRWxzZSB0aGUgZW50cnkgbWFya2VkIGFzIGhpZGRlbiBhbmQgbm90IGZvY3VzYWJsZS5cbiAgICAgKlxuICAgICAqIEl0IGFsc28gZGV0ZXJtaW5lcyB3aGVuZXZlciBjb3VudGVyIGFuZCB0b2tlbiBpbnZhbGlkIHNob3VsZCBiZSBkaXNwbGF5ZWQgb24gZ3JvdXBzIGFuZCBsZWF2ZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW50cmllcyBUaGUgZW50cmllcyB0byBmaWx0ZXIuXG4gICAgICogQHBhcmFtIHNlYXJjaCBUaGUgc2VhcmNoIHN0cmluZy5cbiAgICAgKiBAcGFyYW0gbXVsdGlwbGVNb2RlIHRvIHVwZGF0ZSB0aGUgZm9jdXNhYmxlIHN0YXRlIG9mIGxlYXZlcyBjb3JyZWN0bHkuXG4gICAgICogQHJldHVybnMgVGhlIGZpbHRlcmVkIGVudHJpZXMuXG4gICAgICovXG4gICAgc3RhdGljIGZpbHRlcihlbnRyaWVzOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSwgc2VhcmNoOiBzdHJpbmcsIG11bHRpcGxlTW9kZTogYm9vbGVhbik6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkU2VhcmNoID0gdGhpcy5jbGVhblZhbHVlKHNlYXJjaCk7XG4gICAgICAgIGlmICghZm9ybWF0dGVkU2VhcmNoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNldFN0YXRlKGVudHJpZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlckVudHJpZXMoZW50cmllcywgZm9ybWF0dGVkU2VhcmNoLCBtdWx0aXBsZU1vZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGZpbHRlckVudHJpZXM8VCBleHRlbmRzIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeT4oXG4gICAgICAgIGVudHJpZXM6IFRbXSxcbiAgICAgICAgZm9ybWF0dGVkU2VhcmNoOiBzdHJpbmcsXG4gICAgICAgIG11bHRpcGxlTW9kZTogYm9vbGVhblxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdIHtcbiAgICAgICAgY29uc3QgbmV3RW50cmllcyA9IGVudHJpZXMubWFwKGVudHJ5ID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoZXMoZW50cnkuYWxpYXMsIGZvcm1hdHRlZFNlYXJjaCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWN1cnNpdmVseVVuZm9sZEVudHJ5KGVudHJ5LCBtdWx0aXBsZU1vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QU5vZGUoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmZpbHRlckVudHJpZXMoZW50cnkuY2hpbGRyZW4sIGZvcm1hdHRlZFNlYXJjaCwgbXVsdGlwbGVNb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4uZXZlcnkoKHsgaGlkZGVuIH0pID0+IGhpZGRlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmVudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Q291bnRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUb2tlbkludmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBmb2xkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZihlbnRyeSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzOiBlbnRyeS5kZXRhaWxzLm1hcChkZXRhaWwgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRldGFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmVudHJ5LFxuICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkucmVzZXRGb2N1cyhuZXdFbnRyaWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWN1cnNpdmVseVVuZm9sZEVudHJ5KGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnksIG11bHRpcGxlTW9kZTogYm9vbGVhbik6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSB7XG4gICAgICAgIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFHcm91cChlbnRyeSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZW50cnkuY2hpbGRyZW4ubWFwKGNoaWxkID0+IHRoaXMucmVjdXJzaXZlbHlVbmZvbGRFbnRyeShjaGlsZCwgbXVsdGlwbGVNb2RlKSBhcyBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmVudHJ5LFxuICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm9sZGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgZGlzcGxheUNvdW50ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlUb2tlbkludmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmKGVudHJ5KSkge1xuICAgICAgICAgICAgY29uc3QgbGVhZkZvY3VzYWJsZSA9IGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWZGb2N1c2FibGUoZW50cnksIHsgcGFyZW50Rm9sZGVkOiBmYWxzZSwgbXVsdGlwbGVNb2RlIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogbGVhZkZvY3VzYWJsZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5Q291bnRlcjogZW50cnkuZm9sZGVkICYmIGVudHJ5LmNvdW50ZXJEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgICAgICBkZXRhaWxzOiBlbnRyeS5kZXRhaWxzLm1hcChkZXRhaWwgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZGV0YWlsLFxuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU6ICFlbnRyeS5mb2xkZWQsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFDYXRlZ29yeShlbnRyeSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZW50cnkuY2hpbGRyZW4ubWFwKFxuICAgICAgICAgICAgICAgIGNoaWxkID0+IHRoaXMucmVjdXJzaXZlbHlVbmZvbGRFbnRyeShjaGlsZCwgbXVsdGlwbGVNb2RlKSBhcyBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAgfCBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgICAgICAgZm9jdXNhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZvbGRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIG1hdGNoZXMoYWxpYXM6IHN0cmluZywgZm9ybWF0dGVkU2VhcmNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5WYWx1ZShhbGlhcykuaW5jbHVkZXMoZm9ybWF0dGVkU2VhcmNoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjbGVhblZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUudHJpbSgpLm5vcm1hbGl6ZSgnTkZLQycpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVzZXRTdGF0ZTxUIGV4dGVuZHMgSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5PihlbnRyaWVzOiBUW10sIHBhcmVudEZvbGRlZDogYm9vbGVhbiA9IGZhbHNlKTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W10ge1xuICAgICAgICByZXR1cm4gZW50cmllcy5tYXAoZW50cnkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QU5vZGUoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogIXBhcmVudEZvbGRlZCxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHRoaXMucmVzZXRTdGF0ZShlbnRyeS5jaGlsZHJlbiwgZW50cnkuZm9sZGVkKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5lbnRyeSxcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU6ICFwYXJlbnRGb2xkZWQsXG4gICAgICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==