@agorapulse/ui-components 18.1.13 → 18.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/action-dropdown/index.d.ts +105 -3
  2. package/add-comment/index.d.ts +24 -5
  3. package/agorapulse-ui-components-18.2.0.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 +22 -32
  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 +6 -6
  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 -28
  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 +13 -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-testing.mjs.map +1 -1
  69. package/fesm2022/agorapulse-ui-components-nav-selector.mjs +164 -159
  70. package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
  71. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs +8 -8
  72. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -1
  73. package/fesm2022/agorapulse-ui-components-notification.mjs +4 -4
  74. package/fesm2022/agorapulse-ui-components-notification.mjs.map +1 -1
  75. package/fesm2022/agorapulse-ui-components-paginator.mjs +7 -7
  76. package/fesm2022/agorapulse-ui-components-paginator.mjs.map +1 -1
  77. package/fesm2022/agorapulse-ui-components-password-input.mjs +4 -4
  78. package/fesm2022/agorapulse-ui-components-password-input.mjs.map +1 -1
  79. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs +16 -16
  80. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs.map +1 -1
  81. package/fesm2022/agorapulse-ui-components-popmenu.mjs +11 -11
  82. package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -1
  83. package/fesm2022/agorapulse-ui-components-providers.mjs +19 -0
  84. package/fesm2022/agorapulse-ui-components-providers.mjs.map +1 -0
  85. package/fesm2022/agorapulse-ui-components-radio.mjs +6 -6
  86. package/fesm2022/agorapulse-ui-components-radio.mjs.map +1 -1
  87. package/fesm2022/agorapulse-ui-components-range-slider.mjs +4 -4
  88. package/fesm2022/agorapulse-ui-components-range-slider.mjs.map +1 -1
  89. package/fesm2022/agorapulse-ui-components-select.mjs +65 -65
  90. package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
  91. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs +4 -4
  92. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs.map +1 -1
  93. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs +8 -8
  94. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs.map +1 -1
  95. package/fesm2022/agorapulse-ui-components-social-button.mjs +4 -4
  96. package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -1
  97. package/fesm2022/agorapulse-ui-components-split-button.mjs +5 -5
  98. package/fesm2022/agorapulse-ui-components-split-button.mjs.map +1 -1
  99. package/fesm2022/agorapulse-ui-components-status-card.mjs +3 -3
  100. package/fesm2022/agorapulse-ui-components-status-card.mjs.map +1 -1
  101. package/fesm2022/agorapulse-ui-components-status.mjs +4 -4
  102. package/fesm2022/agorapulse-ui-components-status.mjs.map +1 -1
  103. package/fesm2022/agorapulse-ui-components-stepper.mjs +4 -4
  104. package/fesm2022/agorapulse-ui-components-stepper.mjs.map +1 -1
  105. package/fesm2022/agorapulse-ui-components-tag.mjs +9 -9
  106. package/fesm2022/agorapulse-ui-components-tag.mjs.map +1 -1
  107. package/fesm2022/agorapulse-ui-components-text-measurement.mjs +3 -3
  108. package/fesm2022/agorapulse-ui-components-textarea.mjs +3 -3
  109. package/fesm2022/agorapulse-ui-components-toggle.mjs +4 -4
  110. package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -1
  111. package/fesm2022/agorapulse-ui-components-tooltip.mjs +15 -15
  112. package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -1
  113. package/fesm2022/agorapulse-ui-components.mjs +4 -4
  114. package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
  115. package/form-field/index.d.ts +8 -5
  116. package/form-message/index.d.ts +16 -5
  117. package/icon-button/index.d.ts +44 -5
  118. package/index.d.ts +50 -25
  119. package/infobox/index.d.ts +29 -5
  120. package/input/index.d.ts +10 -5
  121. package/input-group/index.d.ts +14 -5
  122. package/input-search/index.d.ts +35 -5
  123. package/labels/index.d.ts +59 -5
  124. package/labels-selector/index.d.ts +46 -5
  125. package/legacy/input/index.d.ts +64 -3
  126. package/legacy/select/index.d.ts +124 -3
  127. package/legacy/textarea/index.d.ts +54 -3
  128. package/media-display-overlay/index.d.ts +46 -5
  129. package/modal/index.d.ts +58 -5
  130. package/nav-selector/index.d.ts +372 -3
  131. package/nav-selector/testing/index.d.ts +67 -3
  132. package/neo-datepicker/index.d.ts +74 -5
  133. package/notification/index.d.ts +9 -5
  134. package/package.json +14 -112
  135. package/paginator/index.d.ts +57 -5
  136. package/password-input/index.d.ts +36 -5
  137. package/phone-number-input/index.d.ts +54 -5
  138. package/popmenu/index.d.ts +212 -3
  139. package/providers/index.d.ts +11 -0
  140. package/radio/index.d.ts +80 -5
  141. package/range-slider/index.d.ts +39 -5
  142. package/select/index.d.ts +214 -5
  143. package/slide-toggle/index.d.ts +23 -5
  144. package/snackbars-thread/index.d.ts +73 -3
  145. package/social-button/index.d.ts +34 -5
  146. package/split-button/index.d.ts +47 -5
  147. package/status/index.d.ts +13 -5
  148. package/status-card/index.d.ts +17 -5
  149. package/stepper/index.d.ts +26 -5
  150. package/tag/index.d.ts +28 -5
  151. package/text-measurement/index.d.ts +11 -5
  152. package/textarea/index.d.ts +14 -5
  153. package/toggle/index.d.ts +55 -5
  154. package/tooltip/index.d.ts +62 -5
  155. package/action-dropdown/action-dropdown-trigger.directive.d.ts +0 -17
  156. package/action-dropdown/action-dropdown.component.d.ts +0 -87
  157. package/action-dropdown/providers.d.ts +0 -8
  158. package/action-dropdown/public_api.d.ts +0 -3
  159. package/add-comment/add-comment.component.d.ts +0 -21
  160. package/add-comment/public_api.d.ts +0 -1
  161. package/agorapulse-ui-components-18.1.13.tgz +0 -0
  162. package/autocomplete/autocomplete.component.d.ts +0 -40
  163. package/autocomplete/public_api.d.ts +0 -1
  164. package/avatar/avatar.component.d.ts +0 -61
  165. package/avatar/public_api.d.ts +0 -1
  166. package/badge/badge.component.d.ts +0 -7
  167. package/badge/public_api.d.ts +0 -1
  168. package/button/button.component.d.ts +0 -52
  169. package/button/public_api.d.ts +0 -1
  170. package/checkbox/checkbox.component.d.ts +0 -51
  171. package/checkbox/public_api.d.ts +0 -1
  172. package/close-button/close-button.component.d.ts +0 -11
  173. package/close-button/public_api.d.ts +0 -1
  174. package/confirm-modal/confirm-modal-texts.model.d.ts +0 -8
  175. package/confirm-modal/confirm-modal.component.d.ts +0 -20
  176. package/confirm-modal/public_api.d.ts +0 -2
  177. package/counter/counter.component.d.ts +0 -13
  178. package/counter/public_api.d.ts +0 -1
  179. package/datepicker/datepicker.component.d.ts +0 -100
  180. package/datepicker/public_api.d.ts +0 -1
  181. package/directives/autosize-textarea.directive.d.ts +0 -12
  182. package/directives/base-button.directive.d.ts +0 -13
  183. package/directives/checkbox.directive.d.ts +0 -32
  184. package/directives/default-image.directive.d.ts +0 -8
  185. package/directives/ellipsis.directive.d.ts +0 -29
  186. package/directives/equal-validator.directive.d.ts +0 -13
  187. package/directives/frozen-gif.directive.d.ts +0 -30
  188. package/directives/multi-style-text.directive.d.ts +0 -16
  189. package/directives/public_api.d.ts +0 -8
  190. package/dot-stepper/dot-stepper.component.d.ts +0 -20
  191. package/dot-stepper/public_api.d.ts +0 -1
  192. package/esm2022/action-dropdown/action-dropdown-trigger.directive.mjs +0 -54
  193. package/esm2022/action-dropdown/action-dropdown.component.mjs +0 -272
  194. package/esm2022/action-dropdown/agorapulse-ui-components-action-dropdown.mjs +0 -5
  195. package/esm2022/action-dropdown/providers.mjs +0 -12
  196. package/esm2022/action-dropdown/public_api.mjs +0 -4
  197. package/esm2022/add-comment/add-comment.component.mjs +0 -72
  198. package/esm2022/add-comment/agorapulse-ui-components-add-comment.mjs +0 -5
  199. package/esm2022/add-comment/public_api.mjs +0 -2
  200. package/esm2022/agorapulse-ui-components.mjs +0 -5
  201. package/esm2022/autocomplete/agorapulse-ui-components-autocomplete.mjs +0 -5
  202. package/esm2022/autocomplete/autocomplete.component.mjs +0 -125
  203. package/esm2022/autocomplete/public_api.mjs +0 -2
  204. package/esm2022/avatar/agorapulse-ui-components-avatar.mjs +0 -5
  205. package/esm2022/avatar/avatar.component.mjs +0 -161
  206. package/esm2022/avatar/public_api.mjs +0 -2
  207. package/esm2022/badge/agorapulse-ui-components-badge.mjs +0 -5
  208. package/esm2022/badge/badge.component.mjs +0 -17
  209. package/esm2022/badge/public_api.mjs +0 -2
  210. package/esm2022/button/agorapulse-ui-components-button.mjs +0 -5
  211. package/esm2022/button/button.component.mjs +0 -105
  212. package/esm2022/button/public_api.mjs +0 -2
  213. package/esm2022/checkbox/agorapulse-ui-components-checkbox.mjs +0 -5
  214. package/esm2022/checkbox/checkbox.component.mjs +0 -177
  215. package/esm2022/checkbox/public_api.mjs +0 -2
  216. package/esm2022/close-button/agorapulse-ui-components-close-button.mjs +0 -5
  217. package/esm2022/close-button/close-button.component.mjs +0 -20
  218. package/esm2022/close-button/public_api.mjs +0 -2
  219. package/esm2022/confirm-modal/agorapulse-ui-components-confirm-modal.mjs +0 -5
  220. package/esm2022/confirm-modal/confirm-modal-texts.model.mjs +0 -2
  221. package/esm2022/confirm-modal/confirm-modal.component.mjs +0 -61
  222. package/esm2022/confirm-modal/public_api.mjs +0 -3
  223. package/esm2022/counter/agorapulse-ui-components-counter.mjs +0 -5
  224. package/esm2022/counter/counter.component.mjs +0 -32
  225. package/esm2022/counter/public_api.mjs +0 -2
  226. package/esm2022/datepicker/agorapulse-ui-components-datepicker.mjs +0 -5
  227. package/esm2022/datepicker/datepicker.component.mjs +0 -288
  228. package/esm2022/datepicker/public_api.mjs +0 -2
  229. package/esm2022/directives/agorapulse-ui-components-directives.mjs +0 -5
  230. package/esm2022/directives/autosize-textarea.directive.mjs +0 -45
  231. package/esm2022/directives/base-button.directive.mjs +0 -47
  232. package/esm2022/directives/checkbox.directive.mjs +0 -283
  233. package/esm2022/directives/default-image.directive.mjs +0 -37
  234. package/esm2022/directives/ellipsis.directive.mjs +0 -90
  235. package/esm2022/directives/equal-validator.directive.mjs +0 -73
  236. package/esm2022/directives/frozen-gif.directive.mjs +0 -125
  237. package/esm2022/directives/multi-style-text.directive.mjs +0 -61
  238. package/esm2022/directives/public_api.mjs +0 -9
  239. package/esm2022/dot-stepper/agorapulse-ui-components-dot-stepper.mjs +0 -5
  240. package/esm2022/dot-stepper/dot-stepper.component.mjs +0 -46
  241. package/esm2022/dot-stepper/public_api.mjs +0 -2
  242. package/esm2022/form-field/agorapulse-ui-components-form-field.mjs +0 -5
  243. package/esm2022/form-field/form-field.component.mjs +0 -11
  244. package/esm2022/form-field/public_api.mjs +0 -2
  245. package/esm2022/form-message/agorapulse-ui-components-form-message.mjs +0 -5
  246. package/esm2022/form-message/form-message.component.mjs +0 -34
  247. package/esm2022/form-message/public_api.mjs +0 -2
  248. package/esm2022/icon-button/agorapulse-ui-components-icon-button.mjs +0 -5
  249. package/esm2022/icon-button/icon-button.component.mjs +0 -123
  250. package/esm2022/icon-button/public_api.mjs +0 -2
  251. package/esm2022/index.mjs +0 -49
  252. package/esm2022/infobox/agorapulse-ui-components-infobox.mjs +0 -5
  253. package/esm2022/infobox/infobox.component.mjs +0 -72
  254. package/esm2022/infobox/public_api.mjs +0 -2
  255. package/esm2022/input/agorapulse-ui-components-input.mjs +0 -5
  256. package/esm2022/input/input.directive.mjs +0 -19
  257. package/esm2022/input/public_api.mjs +0 -2
  258. package/esm2022/input-group/agorapulse-ui-components-input-group.mjs +0 -5
  259. package/esm2022/input-group/input-group.component.mjs +0 -14
  260. package/esm2022/input-group/input-prefix/input-prefix.component.mjs +0 -11
  261. package/esm2022/input-group/public_api.mjs +0 -3
  262. package/esm2022/input-search/agorapulse-ui-components-input-search.mjs +0 -5
  263. package/esm2022/input-search/input-search.component.mjs +0 -78
  264. package/esm2022/input-search/public_api.mjs +0 -2
  265. package/esm2022/labels/agorapulse-ui-components-labels.mjs +0 -5
  266. package/esm2022/labels/label-list.component.mjs +0 -108
  267. package/esm2022/labels/label.component.mjs +0 -56
  268. package/esm2022/labels/public_api.mjs +0 -3
  269. package/esm2022/labels-selector/agorapulse-ui-components-labels-selector.mjs +0 -5
  270. package/esm2022/labels-selector/labels-selector.component.mjs +0 -122
  271. package/esm2022/labels-selector/public_api.mjs +0 -2
  272. package/esm2022/legacy/input/agorapulse-ui-components-legacy-input.mjs +0 -5
  273. package/esm2022/legacy/input/input.component.mjs +0 -189
  274. package/esm2022/legacy/input/public_api.mjs +0 -2
  275. package/esm2022/legacy/select/agorapulse-ui-components-legacy-select.mjs +0 -5
  276. package/esm2022/legacy/select/public_api.mjs +0 -2
  277. package/esm2022/legacy/select/select.component.mjs +0 -451
  278. package/esm2022/legacy/textarea/agorapulse-ui-components-legacy-textarea.mjs +0 -5
  279. package/esm2022/legacy/textarea/public_api.mjs +0 -2
  280. package/esm2022/legacy/textarea/textarea.component.mjs +0 -154
  281. package/esm2022/media-display-overlay/agorapulse-ui-components-media-display-overlay.mjs +0 -5
  282. package/esm2022/media-display-overlay/media-display-overlay-dialog.component.mjs +0 -122
  283. package/esm2022/media-display-overlay/public_api.mjs +0 -2
  284. package/esm2022/modal/agorapulse-ui-components-modal.mjs +0 -5
  285. package/esm2022/modal/modal.component.mjs +0 -116
  286. package/esm2022/modal/public_api.mjs +0 -2
  287. package/esm2022/nav-selector/agorapulse-ui-components-nav-selector.mjs +0 -5
  288. package/esm2022/nav-selector/directives/nav-selector-popover-trigger.directive.mjs +0 -71
  289. package/esm2022/nav-selector/directives/tree-node-accessibility.directive.mjs +0 -30
  290. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.component.mjs +0 -129
  291. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.presenter.mjs +0 -28
  292. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.component.mjs +0 -174
  293. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.presenter.mjs +0 -30
  294. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +0 -242
  295. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.mjs +0 -36
  296. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.mjs +0 -43
  297. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.mjs +0 -20
  298. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.mjs +0 -95
  299. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.mjs +0 -31
  300. package/esm2022/nav-selector/nav-selector-popover/nav-selector-popover-item.component.mjs +0 -65
  301. package/esm2022/nav-selector/nav-selector-popover/nav-selector-popover.component.mjs +0 -132
  302. package/esm2022/nav-selector/nav-selector.component.mjs +0 -201
  303. package/esm2022/nav-selector/nav-selector.mjs +0 -9
  304. package/esm2022/nav-selector/nav-selector.state.mjs +0 -207
  305. package/esm2022/nav-selector/public_api.mjs +0 -3
  306. package/esm2022/nav-selector/testing/agorapulse-ui-components-nav-selector-testing.mjs +0 -5
  307. package/esm2022/nav-selector/testing/nav-selector-entry.mock.mjs +0 -91
  308. package/esm2022/nav-selector/testing/public_api.mjs +0 -2
  309. package/esm2022/nav-selector/utils/leaf.utils.mjs +0 -44
  310. package/esm2022/nav-selector/utils/nav-selector.accessibility.mjs +0 -179
  311. package/esm2022/nav-selector/utils/nav-selector.builder.mjs +0 -271
  312. package/esm2022/nav-selector/utils/nav-selector.filter.mjs +0 -141
  313. package/esm2022/nav-selector/utils/nav-selector.folding.mjs +0 -284
  314. package/esm2022/nav-selector/utils/nav-selector.merger.mjs +0 -76
  315. package/esm2022/nav-selector/utils/nav-selector.minifying.mjs +0 -59
  316. package/esm2022/nav-selector/utils/nav-selector.multi-select.mjs +0 -208
  317. package/esm2022/nav-selector/utils/nav-selector.single-select.mjs +0 -113
  318. package/esm2022/nav-selector/utils/nav-selector.view-more.mjs +0 -98
  319. package/esm2022/neo-datepicker/agorapulse-ui-components-neo-datepicker.mjs +0 -5
  320. package/esm2022/neo-datepicker/day-detail.model.mjs +0 -2
  321. package/esm2022/neo-datepicker/day-disabled.pipe.mjs +0 -21
  322. package/esm2022/neo-datepicker/neo-datepicker.component.mjs +0 -241
  323. package/esm2022/neo-datepicker/public_api.mjs +0 -4
  324. package/esm2022/notification/agorapulse-ui-components-notification.mjs +0 -5
  325. package/esm2022/notification/notification.component.mjs +0 -15
  326. package/esm2022/notification/public_api.mjs +0 -2
  327. package/esm2022/paginator/agorapulse-ui-components-paginator.mjs +0 -5
  328. package/esm2022/paginator/paginator-button/paginator-button.component.mjs +0 -51
  329. package/esm2022/paginator/paginator.component.mjs +0 -114
  330. package/esm2022/paginator/public_api.mjs +0 -3
  331. package/esm2022/password-input/agorapulse-ui-components-password-input.mjs +0 -5
  332. package/esm2022/password-input/password-input.component.mjs +0 -78
  333. package/esm2022/password-input/public_api.mjs +0 -2
  334. package/esm2022/phone-number-input/agorapulse-ui-components-phone-number-input.mjs +0 -5
  335. package/esm2022/phone-number-input/phone-number-input.component.mjs +0 -195
  336. package/esm2022/phone-number-input/public_api.mjs +0 -2
  337. package/esm2022/popmenu/agorapulse-ui-components-popmenu.mjs +0 -5
  338. package/esm2022/popmenu/options.mjs +0 -17
  339. package/esm2022/popmenu/popmenu-options.interface.mjs +0 -2
  340. package/esm2022/popmenu/popmenu-options.service.mjs +0 -7
  341. package/esm2022/popmenu/popmenu.component.mjs +0 -383
  342. package/esm2022/popmenu/popmenu.directive.mjs +0 -296
  343. package/esm2022/popmenu/popmenu.module.mjs +0 -29
  344. package/esm2022/popmenu/public_api.mjs +0 -5
  345. package/esm2022/radio/agorapulse-ui-components-radio.mjs +0 -5
  346. package/esm2022/radio/public_api.mjs +0 -2
  347. package/esm2022/radio/radio.component.mjs +0 -319
  348. package/esm2022/range-slider/agorapulse-ui-components-range-slider.mjs +0 -5
  349. package/esm2022/range-slider/public_api.mjs +0 -2
  350. package/esm2022/range-slider/range-slider.component.mjs +0 -154
  351. package/esm2022/select/agorapulse-ui-components-select.mjs +0 -5
  352. package/esm2022/select/ap-select.module.mjs +0 -78
  353. package/esm2022/select/dropdown-group-item/dropdown-group-item.component.mjs +0 -51
  354. package/esm2022/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.mjs +0 -75
  355. package/esm2022/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.mjs +0 -79
  356. package/esm2022/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.mjs +0 -59
  357. package/esm2022/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.mjs +0 -60
  358. package/esm2022/select/dropdown-search-form/dropdown-search-form.component.mjs +0 -98
  359. package/esm2022/select/public_api.mjs +0 -13
  360. package/esm2022/select/select-base.directive.mjs +0 -69
  361. package/esm2022/select/select-label-multiple/select-label-multiple.component.mjs +0 -95
  362. package/esm2022/select/select-label-single/select-label-single.component.mjs +0 -33
  363. package/esm2022/select/select-multiple.directive.mjs +0 -35
  364. package/esm2022/select/select-single.directive.mjs +0 -34
  365. package/esm2022/slide-toggle/agorapulse-ui-components-slide-toggle.mjs +0 -5
  366. package/esm2022/slide-toggle/public_api.mjs +0 -2
  367. package/esm2022/slide-toggle/slide-toggle.component.mjs +0 -66
  368. package/esm2022/snackbars-thread/agorapulse-ui-components-snackbars-thread.mjs +0 -5
  369. package/esm2022/snackbars-thread/component/snackbars-thread.component.mjs +0 -93
  370. package/esm2022/snackbars-thread/model/snackbars-thread.model.mjs +0 -44
  371. package/esm2022/snackbars-thread/public_api.mjs +0 -4
  372. package/esm2022/snackbars-thread/service/snackbars-thread.service.mjs +0 -47
  373. package/esm2022/snackbars-thread/utils/const/snackbars-thread.const.mjs +0 -13
  374. package/esm2022/social-button/agorapulse-ui-components-social-button.mjs +0 -5
  375. package/esm2022/social-button/public_api.mjs +0 -2
  376. package/esm2022/social-button/social-button.component.mjs +0 -164
  377. package/esm2022/split-button/agorapulse-ui-components-split-button.mjs +0 -5
  378. package/esm2022/split-button/public_api.mjs +0 -2
  379. package/esm2022/split-button/split-button.component.mjs +0 -122
  380. package/esm2022/src/lib/agorapulse-ui-components.module.mjs +0 -200
  381. package/esm2022/status/agorapulse-ui-components-status.mjs +0 -5
  382. package/esm2022/status/public_api.mjs +0 -2
  383. package/esm2022/status/status.component.mjs +0 -21
  384. package/esm2022/status-card/agorapulse-ui-components-status-card.mjs +0 -5
  385. package/esm2022/status-card/public_api.mjs +0 -2
  386. package/esm2022/status-card/status-card.component.mjs +0 -23
  387. package/esm2022/stepper/agorapulse-ui-components-stepper.mjs +0 -5
  388. package/esm2022/stepper/public_api.mjs +0 -3
  389. package/esm2022/stepper/step.model.mjs +0 -2
  390. package/esm2022/stepper/stepper.component.mjs +0 -38
  391. package/esm2022/tag/agorapulse-ui-components-tag.mjs +0 -5
  392. package/esm2022/tag/public_api.mjs +0 -2
  393. package/esm2022/tag/tag.component.mjs +0 -35
  394. package/esm2022/text-measurement/agorapulse-ui-components-text-measurement.mjs +0 -5
  395. package/esm2022/text-measurement/public_api.mjs +0 -2
  396. package/esm2022/text-measurement/text-measurement.service.mjs +0 -29
  397. package/esm2022/textarea/agorapulse-ui-components-textarea.mjs +0 -5
  398. package/esm2022/textarea/public_api.mjs +0 -2
  399. package/esm2022/textarea/textarea.directive.mjs +0 -37
  400. package/esm2022/toggle/agorapulse-ui-components-toggle.mjs +0 -5
  401. package/esm2022/toggle/public_api.mjs +0 -2
  402. package/esm2022/toggle/toggle.component.mjs +0 -208
  403. package/esm2022/tooltip/agorapulse-ui-components-tooltip.mjs +0 -5
  404. package/esm2022/tooltip/public_api.mjs +0 -2
  405. package/esm2022/tooltip/tooltip.directive.mjs +0 -401
  406. package/esm2022/tooltip/tooltip.service.mjs +0 -29
  407. package/form-field/form-field.component.d.ts +0 -5
  408. package/form-field/public_api.d.ts +0 -1
  409. package/form-message/form-message.component.d.ts +0 -12
  410. package/form-message/public_api.d.ts +0 -1
  411. package/icon-button/icon-button.component.d.ts +0 -40
  412. package/icon-button/public_api.d.ts +0 -1
  413. package/infobox/infobox.component.d.ts +0 -26
  414. package/infobox/public_api.d.ts +0 -1
  415. package/input/input.directive.d.ts +0 -7
  416. package/input/public_api.d.ts +0 -1
  417. package/input-group/input-group.component.d.ts +0 -6
  418. package/input-group/input-prefix/input-prefix.component.d.ts +0 -5
  419. package/input-group/public_api.d.ts +0 -2
  420. package/input-search/input-search.component.d.ts +0 -32
  421. package/input-search/public_api.d.ts +0 -1
  422. package/labels/label-list.component.d.ts +0 -34
  423. package/labels/label.component.d.ts +0 -23
  424. package/labels/public_api.d.ts +0 -2
  425. package/labels-selector/labels-selector.component.d.ts +0 -42
  426. package/labels-selector/public_api.d.ts +0 -1
  427. package/legacy/input/input.component.d.ts +0 -64
  428. package/legacy/input/public_api.d.ts +0 -1
  429. package/legacy/select/public_api.d.ts +0 -1
  430. package/legacy/select/select.component.d.ts +0 -122
  431. package/legacy/textarea/public_api.d.ts +0 -1
  432. package/legacy/textarea/textarea.component.d.ts +0 -53
  433. package/media-display-overlay/media-display-overlay-dialog.component.d.ts +0 -42
  434. package/media-display-overlay/public_api.d.ts +0 -1
  435. package/modal/modal.component.d.ts +0 -54
  436. package/modal/public_api.d.ts +0 -1
  437. package/nav-selector/directives/nav-selector-popover-trigger.directive.d.ts +0 -25
  438. package/nav-selector/directives/tree-node-accessibility.directive.d.ts +0 -9
  439. package/nav-selector/nav-selector-category/nav-selector-category.component.d.ts +0 -28
  440. package/nav-selector/nav-selector-category/nav-selector-category.presenter.d.ts +0 -13
  441. package/nav-selector/nav-selector-group/nav-selector-group.component.d.ts +0 -37
  442. package/nav-selector/nav-selector-group/nav-selector-group.presenter.d.ts +0 -16
  443. package/nav-selector/nav-selector-leaf/nav-selector-leaf.component.d.ts +0 -48
  444. package/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.d.ts +0 -18
  445. package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.d.ts +0 -13
  446. package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.d.ts +0 -10
  447. package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.d.ts +0 -24
  448. package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.d.ts +0 -14
  449. package/nav-selector/nav-selector-popover/nav-selector-popover-item.component.d.ts +0 -14
  450. package/nav-selector/nav-selector-popover/nav-selector-popover.component.d.ts +0 -40
  451. package/nav-selector/nav-selector.component.d.ts +0 -40
  452. package/nav-selector/nav-selector.d.ts +0 -270
  453. package/nav-selector/nav-selector.state.d.ts +0 -47
  454. package/nav-selector/public_api.d.ts +0 -3
  455. package/nav-selector/testing/nav-selector-entry.mock.d.ts +0 -67
  456. package/nav-selector/testing/public_api.d.ts +0 -1
  457. package/nav-selector/utils/leaf.utils.d.ts +0 -20
  458. package/nav-selector/utils/nav-selector.accessibility.d.ts +0 -52
  459. package/nav-selector/utils/nav-selector.builder.d.ts +0 -32
  460. package/nav-selector/utils/nav-selector.filter.d.ts +0 -32
  461. package/nav-selector/utils/nav-selector.folding.d.ts +0 -73
  462. package/nav-selector/utils/nav-selector.merger.d.ts +0 -23
  463. package/nav-selector/utils/nav-selector.minifying.d.ts +0 -29
  464. package/nav-selector/utils/nav-selector.multi-select.d.ts +0 -54
  465. package/nav-selector/utils/nav-selector.single-select.d.ts +0 -17
  466. package/nav-selector/utils/nav-selector.view-more.d.ts +0 -30
  467. package/neo-datepicker/day-detail.model.d.ts +0 -9
  468. package/neo-datepicker/day-disabled.pipe.d.ts +0 -8
  469. package/neo-datepicker/neo-datepicker.component.d.ts +0 -61
  470. package/neo-datepicker/public_api.d.ts +0 -3
  471. package/notification/notification.component.d.ts +0 -6
  472. package/notification/public_api.d.ts +0 -1
  473. package/paginator/paginator-button/paginator-button.component.d.ts +0 -17
  474. package/paginator/paginator.component.d.ts +0 -38
  475. package/paginator/public_api.d.ts +0 -2
  476. package/password-input/password-input.component.d.ts +0 -33
  477. package/password-input/public_api.d.ts +0 -1
  478. package/phone-number-input/phone-number-input.component.d.ts +0 -50
  479. package/phone-number-input/public_api.d.ts +0 -1
  480. package/popmenu/options.d.ts +0 -16
  481. package/popmenu/popmenu-options.interface.d.ts +0 -48
  482. package/popmenu/popmenu-options.service.d.ts +0 -7
  483. package/popmenu/popmenu.component.d.ts +0 -66
  484. package/popmenu/popmenu.directive.d.ts +0 -90
  485. package/popmenu/popmenu.module.d.ts +0 -11
  486. package/popmenu/public_api.d.ts +0 -4
  487. package/radio/public_api.d.ts +0 -1
  488. package/radio/radio.component.d.ts +0 -77
  489. package/range-slider/public_api.d.ts +0 -1
  490. package/range-slider/range-slider.component.d.ts +0 -35
  491. package/select/ap-select.module.d.ts +0 -17
  492. package/select/dropdown-group-item/dropdown-group-item.component.d.ts +0 -16
  493. package/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.d.ts +0 -25
  494. package/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.d.ts +0 -26
  495. package/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.d.ts +0 -20
  496. package/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.d.ts +0 -20
  497. package/select/dropdown-search-form/dropdown-search-form.component.d.ts +0 -32
  498. package/select/public_api.d.ts +0 -12
  499. package/select/select-base.directive.d.ts +0 -18
  500. package/select/select-label-multiple/select-label-multiple.component.d.ts +0 -27
  501. package/select/select-label-single/select-label-single.component.d.ts +0 -12
  502. package/select/select-multiple.directive.d.ts +0 -10
  503. package/select/select-single.directive.d.ts +0 -10
  504. package/slide-toggle/public_api.d.ts +0 -1
  505. package/slide-toggle/slide-toggle.component.d.ts +0 -20
  506. package/snackbars-thread/component/snackbars-thread.component.d.ts +0 -24
  507. package/snackbars-thread/model/snackbars-thread.model.d.ts +0 -36
  508. package/snackbars-thread/public_api.d.ts +0 -3
  509. package/snackbars-thread/service/snackbars-thread.service.d.ts +0 -15
  510. package/snackbars-thread/utils/const/snackbars-thread.const.d.ts +0 -10
  511. package/social-button/public_api.d.ts +0 -1
  512. package/social-button/social-button.component.d.ts +0 -32
  513. package/split-button/public_api.d.ts +0 -1
  514. package/split-button/split-button.component.d.ts +0 -45
  515. package/src/lib/agorapulse-ui-components.module.d.ts +0 -29
  516. package/status/public_api.d.ts +0 -1
  517. package/status/status.component.d.ts +0 -9
  518. package/status-card/public_api.d.ts +0 -1
  519. package/status-card/status-card.component.d.ts +0 -13
  520. package/stepper/public_api.d.ts +0 -2
  521. package/stepper/step.model.d.ts +0 -6
  522. package/stepper/stepper.component.d.ts +0 -16
  523. package/tag/public_api.d.ts +0 -1
  524. package/tag/tag.component.d.ts +0 -24
  525. package/text-measurement/public_api.d.ts +0 -1
  526. package/text-measurement/text-measurement.service.d.ts +0 -8
  527. package/textarea/public_api.d.ts +0 -1
  528. package/textarea/textarea.directive.d.ts +0 -11
  529. package/toggle/public_api.d.ts +0 -1
  530. package/toggle/toggle.component.d.ts +0 -52
  531. package/tooltip/public_api.d.ts +0 -1
  532. package/tooltip/tooltip.directive.d.ts +0 -59
  533. 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.filter(detail => !detail.excludedCounterSum).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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QUN2RCxDQUFDO0lBQ04sQ0FBQztJQUVPLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBOEIsRUFBRSxLQUFhLEVBQUUsU0FBa0I7UUFDNUYsT0FBTztZQUNILEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztZQUNmLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUM7WUFDNUIsY0FBYyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEtBQUssSUFBSTtZQUN2QyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDbEIsTUFBTSxFQUFFLEtBQUs7WUFDYixhQUFhLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDWixZQUFZLEVBQUUsQ0FBQztnQkFDZixTQUFTLEVBQUUsS0FBSztnQkFDaEIsV0FBVyxFQUFFLENBQUM7YUFDakI7WUFDRCxTQUFTO1lBQ1QsUUFBUSxFQUFFLEtBQUs7WUFDZixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7WUFDL0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxXQUFXLEtBQUssSUFBSTtZQUN6QyxJQUFJLEVBQUUsY0FBYztTQUN2QixDQUFDO0lBQ04sQ0FBQztJQUVPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFxQixFQUFFLEdBQUcsUUFBc0I7UUFDNUUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQzthQUMzQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBaUIsQ0FBQyxDQUFDO2FBQ3hELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnksXG4gICAgSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5LFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JHcm91cCxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZixcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHMsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZixcbiAgICBpc05hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnksXG4gICAgaXNOYXZTZWxlY3RvckVudHJ5QUdyb3VwLFxuICAgIGlzTmF2U2VsZWN0b3JFbnRyeUFMZWFmLFxuICAgIE5hdlNlbGVjdG9yQ2F0ZWdvcnksXG4gICAgTmF2U2VsZWN0b3JFbnRyeSxcbiAgICBOYXZTZWxlY3Rvckdyb3VwLFxuICAgIE5hdlNlbGVjdG9yTGVhZixcbiAgICBOYXZTZWxlY3RvckxlYWZEZXRhaWxzLFxufSBmcm9tICcuLi9uYXYtc2VsZWN0b3InO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JBY2Nlc3NpYmlsaXR5IH0gZnJvbSAnLi4vdXRpbHMvbmF2LXNlbGVjdG9yLmFjY2Vzc2liaWxpdHknO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JGb2xkaW5nIH0gZnJvbSAnLi4vdXRpbHMvbmF2LXNlbGVjdG9yLmZvbGRpbmcnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JNdWx0aVNlbGVjdCB9IGZyb20gJy4uL3V0aWxzL25hdi1zZWxlY3Rvci5tdWx0aS1zZWxlY3QnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JTaW5nbGVTZWxlY3QgfSBmcm9tICcuL25hdi1zZWxlY3Rvci5zaW5nbGUtc2VsZWN0JztcblxuY29uc3QgTGVhZkxvZ2ljcyA9IHtcbiAgICBESVNBQkxFRDogJ0RJU0FCTEVEJyxcbiAgICBGRUFUVVJFX0xPQ0tFRDogJ0ZFQVRVUkVfTE9DS0VEJyxcbiAgICBUT0tFTl9JTlZBTElEOiAnVE9LRU5fSU5WQUxJRCcsXG4gICAgQ09VTlRFUjogJ0NPVU5URVInLFxufSBhcyBjb25zdDtcbnR5cGUgTGVhZkxvZ2ljcyA9IGtleW9mIHR5cGVvZiBMZWFmTG9naWNzO1xuXG4vKipcbiAqIE5hdlNlbGVjdG9yQnVpbGRlciBpcyBhIHV0aWxpdHkgY2xhc3MgdGhhdCBidWlsZHMgdGhlIE5hdlNlbGVjdG9yIGVudHJpZXMgZm9yIHNpbmdsZSBhbmQgbXVsdGlwbGUgc2VsZWN0IG1vZGVzLlxuICogSXQgYWxzbyBjaGVja3MgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZW50cmllcyB0byBlbnN1cmUgdGhleSBhcmUgdmFsaWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYXZTZWxlY3RvckJ1aWxkZXIge1xuICAgIC8vIC8hXFwvIVxcIE9yZGVyIG9mIGxvZ2ljcyBpcyBpbXBvcnRhbnQgLyFcXC8hXFxcbiAgICBwcml2YXRlIHN0YXRpYyBMRUFGX0xPR0lDU19QUklPUklUWTogUmVjb3JkPExlYWZMb2dpY3MsIChsZWY6IE5hdlNlbGVjdG9yTGVhZikgPT4gYm9vbGVhbj4gPSB7XG4gICAgICAgIFtMZWFmTG9naWNzLkRJU0FCTEVEXTogKGxlYWY6IE5hdlNlbGVjdG9yTGVhZikgPT4gbGVhZi5kaXNhYmxlUmVhc29uICE9PSBudWxsLFxuICAgICAgICBbTGVhZkxvZ2ljcy5GRUFUVVJFX0xPQ0tFRF06IChsZWFmOiBOYXZTZWxlY3RvckxlYWYpID0+IGxlYWYuZmVhdHVyZUxvY2tlZCxcbiAgICAgICAgW0xlYWZMb2dpY3MuVE9LRU5fSU5WQUxJRF06IChsZWFmOiBOYXZTZWxlY3RvckxlYWYpID0+IGxlYWYudG9rZW5JbnZhbGlkLFxuICAgICAgICBbTGVhZkxvZ2ljcy5DT1VOVEVSXTogKGxlYWY6IE5hdlNlbGVjdG9yTGVhZikgPT4gbGVhZi5jb3VudGVyICE9PSBudWxsLFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBCdWlsZHMgdGhlIE5hdlNlbGVjdG9yIGVudHJpZXMgZm9yIHNpbmdsZSBzZWxlY3QgbW9kZS5cbiAgICAgKiBAcGFyYW0gZW50cmllcyBuYXYgc2VsZWN0b3IgZW50cmllc1xuICAgICAqIEBwYXJhbSBzZWxlY3RlZEVudHJ5VWlkIHNlbGVjdGVkIGVudHJ5IHVpZFxuICAgICAqIEBwYXJhbSBkZXRhaWxzRGlzcGxheWVkTGltaXQgbnVtYmVyIG9mIGRldGFpbHMgZGlzcGxheWVkIGxpbWl0XG4gICAgICovXG4gICAgc3RhdGljIGJ1aWxkKGVudHJpZXM6IE5hdlNlbGVjdG9yRW50cnlbXSwgc2VsZWN0ZWRFbnRyeVVpZDogc3RyaW5nIHwgbnVsbCwgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXIpOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIHRoaXMuc3RydWN0dXJlQ2hlY2tlcihlbnRyaWVzKTtcbiAgICAgICAgbGV0IGJ1aWx0RW50cmllcyA9IHRoaXMuYnVpbGRFbnRyaWVzKGVudHJpZXMsIGZhbHNlLCAxLCBkZXRhaWxzRGlzcGxheWVkTGltaXQpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRFbnRyeVVpZCkge1xuICAgICAgICAgICAgYnVpbHRFbnRyaWVzID0gTmF2U2VsZWN0b3JTaW5nbGVTZWxlY3Quc2VsZWN0KGJ1aWx0RW50cmllcywgc2VsZWN0ZWRFbnRyeVVpZCk7XG4gICAgICAgICAgICBidWlsdEVudHJpZXMgPSBOYXZTZWxlY3RvckZvbGRpbmcudW5mb2xkUGFyZW50cyhidWlsdEVudHJpZXMsIHNlbGVjdGVkRW50cnlVaWQsIHsgbXVsdGlwbGVNb2RlOiBmYWxzZSwgbWluaWZpZWQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBidWlsdEVudHJpZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIHRoZSBOYXZTZWxlY3RvciBlbnRyaWVzIGZvciBtdWx0aXBsZSBzZWxlY3QgbW9kZS5cbiAgICAgKiBAcGFyYW0gZW50cmllcyBuYXYgc2VsZWN0b3IgZW50cmllc1xuICAgICAqIEBwYXJhbSBzZWxlY3RlZEVudHJ5VWlkcyBzZWxlY3RlZCBlbnRyeSB1aWRzXG4gICAgICogQHBhcmFtIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCBudW1iZXIgb2YgZGV0YWlscyBkaXNwbGF5ZWQgbGltaXRcbiAgICAgKi9cbiAgICBzdGF0aWMgYnVpbGRJbk11bHRpcGxlTW9kZShcbiAgICAgICAgZW50cmllczogTmF2U2VsZWN0b3JFbnRyeVtdLFxuICAgICAgICBzZWxlY3RlZEVudHJ5VWlkczogc3RyaW5nW10gfCBudWxsLFxuICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlclxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdIHtcbiAgICAgICAgdGhpcy5zdHJ1Y3R1cmVDaGVja2VyKGVudHJpZXMsIHRydWUpO1xuICAgICAgICBsZXQgYnVpbHRFbnRyaWVzID0gdGhpcy5idWlsZEVudHJpZXMoZW50cmllcywgdHJ1ZSwgMSwgZGV0YWlsc0Rpc3BsYXllZExpbWl0KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRW50cnlVaWRzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNlbGVjdGVkRW50cnlVaWQgb2Ygc2VsZWN0ZWRFbnRyeVVpZHMpIHtcbiAgICAgICAgICAgICAgICBidWlsdEVudHJpZXMgPSBOYXZTZWxlY3Rvck11bHRpU2VsZWN0LnNlbGVjdEluTXVsdGlwbGVNb2RlKGJ1aWx0RW50cmllcywgc2VsZWN0ZWRFbnRyeVVpZCk7XG4gICAgICAgICAgICAgICAgYnVpbHRFbnRyaWVzID0gTmF2U2VsZWN0b3JGb2xkaW5nLnVuZm9sZFBhcmVudHMoYnVpbHRFbnRyaWVzLCBzZWxlY3RlZEVudHJ5VWlkLCB7IG11bHRpcGxlTW9kZTogZmFsc2UsIG1pbmlmaWVkOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVpbHRFbnRyaWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHN0cnVjdHVyZUNoZWNrZXIoZW50cmllczogTmF2U2VsZWN0b3JFbnRyeVtdLCBtdWx0aXBsZU1vZGVFbmFibGVkID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgICAgIGlmIChpc05hdlNlbGVjdG9yRW50cnlBR3JvdXAoZW50cnkpIHx8IGlzTmF2U2VsZWN0b3JFbnRyeUFDYXRlZ29yeShlbnRyeSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0cnVjdHVyZUNoZWNrZXIoZW50cnkuY2hpbGRyZW4sIG11bHRpcGxlTW9kZUVuYWJsZWQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc05hdlNlbGVjdG9yRW50cnlBTGVhZihlbnRyeSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnkuZGV0YWlscy5sZW5ndGggJiYgbXVsdGlwbGVNb2RlRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBOYXZTZWxlY3RvckJ1aWxkZXI6IExlYWYgJHtlbnRyeS51aWR9IHdpdGggZGV0YWlscyBpcyBub3QgYWxsb3dlZCBpbiBtdWx0aXBsZSBtb2RlYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZEVudHJpZXMoXG4gICAgICAgIGVudHJpZXM6IE5hdlNlbGVjdG9yRW50cnlbXSxcbiAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbixcbiAgICAgICAgbGV2ZWwgPSAxLFxuICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlclxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVtdIHtcbiAgICAgICAgY29uc3QgbmV3RW50cmllcyA9IGVudHJpZXNcbiAgICAgICAgICAgIC5tYXAoKGVudHJ5LCBpZHgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZEVudHJ5KGVudHJ5LCB7IG11bHRpcGxlTW9kZUVuYWJsZWQsIGxldmVsLCBpZHgsIHRvdGFsTnVtYmVyT2ZFbnRyeTogZW50cmllcy5sZW5ndGgsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbHRlcihpdCA9PiBpdCAhPT0gbnVsbCk7XG4gICAgICAgIHJldHVybiBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkucmVzZXRGb2N1cyhuZXdFbnRyaWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZEVudHJ5KFxuICAgICAgICBlbnRyeTogTmF2U2VsZWN0b3JFbnRyeSxcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkVudHJ5LFxuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICB9OiB7IG11bHRpcGxlTW9kZUVuYWJsZWQ6IGJvb2xlYW47IGxldmVsOiBudW1iZXI7IGlkeDogbnVtYmVyOyB0b3RhbE51bWJlck9mRW50cnk6IG51bWJlcjsgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXIgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSB8IG51bGwge1xuICAgICAgICBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUxlYWYoZW50cnkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZExlYWYoZW50cnksIHtcbiAgICAgICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mTGVhZjogdG90YWxOdW1iZXJPZkVudHJ5LFxuICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChpc05hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnkoZW50cnkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZENhdGVnb3J5KGVudHJ5LCB7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgdG90YWxOdW1iZXJPZkNhdGVnb3J5OiB0b3RhbE51bWJlck9mRW50cnksXG4gICAgICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZEdyb3VwKGVudHJ5LCB7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgdG90YWxOdW1iZXJPZkdyb3VwczogdG90YWxOdW1iZXJPZkVudHJ5LFxuICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkQ2F0ZWdvcnlDaGlsZHJlbihcbiAgICAgICAgZW50cnk6IE5hdlNlbGVjdG9yQ2F0ZWdvcnksXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBjYXRlZ29yeUxldmVsLFxuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICB9OiB7XG4gICAgICAgICAgICBmb2N1c2FibGU6IGJvb2xlYW47XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgICAgY2F0ZWdvcnlMZXZlbDogbnVtYmVyO1xuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXI7XG4gICAgICAgIH1cbiAgICApOiAoSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwIHwgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYpW10ge1xuICAgICAgICByZXR1cm4gZW50cnkuY2hpbGRyZW5cbiAgICAgICAgICAgIC5tYXAoKGNoaWxkLCBpZHgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZTZWxlY3RvckVudHJ5QUxlYWYoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkTGVhZihjaGlsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsOiBjYXRlZ29yeUxldmVsICsgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZMZWFmOiBlbnRyeS5jaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkR3JvdXAoY2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogY2F0ZWdvcnlMZXZlbCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mR3JvdXBzOiBlbnRyeS5jaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKGl0ID0+IGl0ICE9PSBudWxsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZENhdGVnb3J5KFxuICAgICAgICBub2RlOiBOYXZTZWxlY3RvckNhdGVnb3J5LFxuICAgICAgICB7XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICB0b3RhbE51bWJlck9mQ2F0ZWdvcnksXG4gICAgICAgICAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQsXG4gICAgICAgIH06IHtcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgICBsZXZlbDogbnVtYmVyO1xuICAgICAgICAgICAgaWR4OiBudW1iZXI7XG4gICAgICAgICAgICB0b3RhbE51bWJlck9mQ2F0ZWdvcnk6IG51bWJlcjtcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKTogSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5IHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmJ1aWxkQ2F0ZWdvcnlDaGlsZHJlbihub2RlLCB7XG4gICAgICAgICAgICBmb2N1c2FibGU6ICFub2RlLmZvbGRlZCxcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBjYXRlZ29yeUxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVpZDogbm9kZS51aWQsXG4gICAgICAgICAgICBhbGlhczogbm9kZS5hbGlhcyxcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGZvY3VzYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgICAgICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgICAgICAgICAgYXJpYUxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgICAgICBhcmlhUG9zaW5zZXQ6IGlkeCArIDEsXG4gICAgICAgICAgICAgICAgYXJpYVNldHNpemU6IHRvdGFsTnVtYmVyT2ZDYXRlZ29yeSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmb2xkZWQ6IG5vZGUuZm9sZGVkLFxuICAgICAgICAgICAgZW1wdHlTdGF0ZVRpdGxlOiBub2RlLmVtcHR5U3RhdGVUaXRsZSxcbiAgICAgICAgICAgIHR5cGU6IG5vZGUudHlwZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZEdyb3VwQ2hpbGRyZW4oXG4gICAgICAgIGVudHJ5OiBOYXZTZWxlY3Rvckdyb3VwLFxuICAgICAgICB7XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkLFxuICAgICAgICAgICAgZ3JvdXBMZXZlbCxcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfTogeyBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuOyBncm91cExldmVsOiBudW1iZXI7IGZvY3VzYWJsZTogYm9vbGVhbjsgZGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXIgfVxuICAgICk6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmW10ge1xuICAgICAgICByZXR1cm4gZW50cnkuY2hpbGRyZW5cbiAgICAgICAgICAgIC5tYXAoKGNoaWxkLCBpZHgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZExlYWYoY2hpbGQsIHtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGdyb3VwTGV2ZWwgKyAxLFxuICAgICAgICAgICAgICAgICAgICBpZHgsXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZMZWFmOiBlbnRyeS5jaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZTogZm9jdXNhYmxlICYmICFlbnRyeS5mb2xkZWQsXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbHRlcihpdCA9PiBpdCAhPT0gbnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRHcm91cChcbiAgICAgICAgbm9kZTogTmF2U2VsZWN0b3JHcm91cCxcbiAgICAgICAge1xuICAgICAgICAgICAgZm9jdXNhYmxlLFxuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgaWR4LFxuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkdyb3VwcyxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfToge1xuICAgICAgICAgICAgZm9jdXNhYmxlOiBib29sZWFuO1xuICAgICAgICAgICAgbXVsdGlwbGVNb2RlRW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGxldmVsOiBudW1iZXI7XG4gICAgICAgICAgICBpZHg6IG51bWJlcjtcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZHcm91cHM6IG51bWJlcjtcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKTogSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmJ1aWxkR3JvdXBDaGlsZHJlbihub2RlLCB7IG11bHRpcGxlTW9kZUVuYWJsZWQsIGdyb3VwTGV2ZWw6IGxldmVsLCBmb2N1c2FibGUsIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCB9KTtcbiAgICAgICAgY29uc3QgZGlzcGxheVRva2VuSW52YWxpZCA9IGNoaWxkcmVuLnNvbWUoKHsgZGlzcGxheVRva2VuSW52YWxpZCB9KSA9PiBkaXNwbGF5VG9rZW5JbnZhbGlkKTtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuQ291bnQgPSBjaGlsZHJlbi5maWx0ZXIoKHsgc2VsZWN0ZWQgfSkgPT4gc2VsZWN0ZWQpLmxlbmd0aDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdWlkOiBub2RlLnVpZCxcbiAgICAgICAgICAgIGFsaWFzOiBub2RlLmFsaWFzLFxuICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICBjaGlsZHJlblBpY3R1cmVVcmxTYW1wbGU6IGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgLm1hcCgoY2hpbGQsIGlkeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZihjaGlsZCkgJiYgaWR4IDwgNCA/IHsgdXJsOiBjaGlsZC5waWN0dXJlVXJsLCBpbml0aWFsOiBjaGlsZC5hbGlhc1swXSB9IDogbnVsbFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGl0ID0+IGl0ICE9PSBudWxsKSxcbiAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgICAgIGFyaWFQb3NpbnNldDogaWR4ICsgMSxcbiAgICAgICAgICAgICAgICBhcmlhTGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgICAgIGFyaWFTZXRzaXplOiB0b3RhbE51bWJlck9mR3JvdXBzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIGRpc3BsYXlDb3VudGVyOiBub2RlLmZvbGRlZCAmJiBjaGlsZHJlbi5zb21lKGNoaWxkID0+IGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYoY2hpbGQpICYmIGNoaWxkLmNvdW50ZXIgIT09IDApLFxuICAgICAgICAgICAgY291bnRlcjogY2hpbGRyZW4ucmVkdWNlKChhY2MsIHsgY291bnRlciB9KSA9PiBhY2MgKyBjb3VudGVyLCAwKSxcbiAgICAgICAgICAgIGRpc3BsYXlUb2tlbkludmFsaWQsXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBtdWx0aXBsZU1vZGVFbmFibGVkICYmIGNoaWxkcmVuLnNvbWUoKHsgc2VsZWN0YWJsZSB9KSA9PiBzZWxlY3RhYmxlKSxcbiAgICAgICAgICAgIHVuZGV0ZXJtaW5lZFNlbGVjdGlvbjogc2VsZWN0ZWRDaGlsZHJlbkNvdW50ICE9PSBjaGlsZHJlbi5sZW5ndGggJiYgc2VsZWN0ZWRDaGlsZHJlbkNvdW50ID4gMCxcbiAgICAgICAgICAgIGZvbGRlZDogbm9kZS5mb2xkZWQsXG4gICAgICAgICAgICB0eXBlOiBub2RlLnR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRMZWFmKFxuICAgICAgICBsZWFmOiBOYXZTZWxlY3RvckxlYWYsXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIG11bHRpcGxlTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGlkeCxcbiAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZMZWFmLFxuICAgICAgICAgICAgZGV0YWlsc0Rpc3BsYXllZExpbWl0LFxuICAgICAgICB9OiB7XG4gICAgICAgICAgICBmb2N1c2FibGU6IGJvb2xlYW47XG4gICAgICAgICAgICBtdWx0aXBsZU1vZGVFbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgICAgbGV2ZWw6IG51bWJlcjtcbiAgICAgICAgICAgIGlkeDogbnVtYmVyO1xuICAgICAgICAgICAgdG90YWxOdW1iZXJPZkxlYWY6IG51bWJlcjtcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgKTogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYgfCBudWxsIHtcbiAgICAgICAgaWYgKGxlYWYubWlzc2luZ1Blcm1pc3Npb24pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGV0YWlsc0Rpc3BsYXlhYmxlID0gdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuQ09VTlRFUikgJiYgISFsZWFmLmRldGFpbHMubGVuZ3RoO1xuICAgICAgICBjb25zdCBmb2xkYWJsZSA9ICEhbGVhZi5kZXRhaWxzLmxlbmd0aCAmJiBkZXRhaWxzRGlzcGxheWFibGU7XG4gICAgICAgIGNvbnN0IGZvbGRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGNvdW50ZXIgPSAobGVhZi5kZXRhaWxzLmZpbHRlcihkZXRhaWw9PiAhZGV0YWlsLmV4Y2x1ZGVkQ291bnRlclN1bSkucmVkdWNlKChhY2MsIGRldGFpbCkgPT4gYWNjICsgKGRldGFpbC5jb3VudGVyID8/IDApLCAwKSB8fCBsZWFmLmNvdW50ZXIpID8/IDA7XG4gICAgICAgIGNvbnN0IGNvdW50ZXJEaXNwbGF5YWJsZSA9IGNvdW50ZXIgIT09IDAgJiYgdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuQ09VTlRFUik7XG5cbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBsZWFmLmRpc2FibGVSZWFzb24gIT09IG51bGw7XG5cbiAgICAgICAgY29uc3Qgdmlld01vcmVEaXNwbGF5YWJsZSA9IGxlYWYuZGV0YWlscy5sZW5ndGggPiBkZXRhaWxzRGlzcGxheWVkTGltaXQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVpZDogbGVhZi51aWQsXG4gICAgICAgICAgICBhbGlhczogbGVhZi5hbGlhcyxcbiAgICAgICAgICAgIGFjdGlvbnM6IGxlYWYuYWN0aW9ucyxcbiAgICAgICAgICAgIHBpY3R1cmVVcmw6IGxlYWYucGljdHVyZVVybCxcbiAgICAgICAgICAgIGFjdGlvbnNEaXNwbGF5YWJsZTogISFsZWFmLmFjdGlvbnMubGVuZ3RoICYmIHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkNPVU5URVIpLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBkaXNhYmxlUmVhc29uOiBsZWFmLmRpc2FibGVSZWFzb24sXG4gICAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgICAgZm9jdXNhYmxlOlxuICAgICAgICAgICAgICAgIGZvY3VzYWJsZSAmJlxuICAgICAgICAgICAgICAgICgobXVsdGlwbGVNb2RlRW5hYmxlZCAmJiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5DT1VOVEVSKSkgfHwgKCFtdWx0aXBsZU1vZGVFbmFibGVkICYmICFkaXNhYmxlZCkpLFxuICAgICAgICAgICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgICAgICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgICAgICAgICBhcmlhUG9zaW5zZXQ6IGlkeCArIDEsXG4gICAgICAgICAgICAgICAgYXJpYUxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgICAgICBhcmlhU2V0c2l6ZTogdG90YWxOdW1iZXJPZkxlYWYsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9sZGFibGUsXG4gICAgICAgICAgICBmb2xkZWQsXG4gICAgICAgICAgICBkaXNwbGF5Q291bnRlcjogZm9sZGVkICYmIGNvdW50ZXJEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgIGNvdW50ZXJEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgIGNvdW50ZXIsXG4gICAgICAgICAgICBuZXR3b3JrOiBsZWFmLm5ldHdvcmssXG4gICAgICAgICAgICBkaXNwbGF5VG9rZW5JbnZhbGlkOiBsZWFmLnRva2VuSW52YWxpZCAmJiB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5UT0tFTl9JTlZBTElELCBMZWFmTG9naWNzLkNPVU5URVIpLFxuICAgICAgICAgICAgZGlzcGxheUZlYXR1cmVMb2NrZWQ6XG4gICAgICAgICAgICAgICAgbGVhZi5mZWF0dXJlTG9ja2VkICYmIHRoaXMuaXNMZWFmTG9naWNWYWxpZChsZWFmLCBMZWFmTG9naWNzLkZFQVRVUkVfTE9DS0VELCBMZWFmTG9naWNzLlRPS0VOX0lOVkFMSUQsIExlYWZMb2dpY3MuQ09VTlRFUiksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBtdWx0aXBsZU1vZGVFbmFibGVkXG4gICAgICAgICAgICAgICAgPyB0aGlzLmlzTGVhZkxvZ2ljVmFsaWQobGVhZiwgTGVhZkxvZ2ljcy5DT1VOVEVSKVxuICAgICAgICAgICAgICAgIDogdGhpcy5pc0xlYWZMb2dpY1ZhbGlkKGxlYWYsIExlYWZMb2dpY3MuRkVBVFVSRV9MT0NLRUQsIExlYWZMb2dpY3MuVE9LRU5fSU5WQUxJRCwgTGVhZkxvZ2ljcy5DT1VOVEVSKSxcbiAgICAgICAgICAgIGRldGFpbHNEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgIGRldGFpbHM6IGxlYWYuZGV0YWlscy5tYXAoZGV0YWlsID0+IHRoaXMuYnVpbGRMZWFmRGV0YWlsKGRldGFpbCwgbGV2ZWwgKyAxLCBmb2N1c2FibGUgJiYgIWZvbGRlZCkpLFxuICAgICAgICAgICAgZGV0YWlsU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgdHlwZTogJ0xFQUYnLFxuICAgICAgICAgICAgdmlld01vcmVEaXNwbGF5YWJsZSxcbiAgICAgICAgICAgIHZpZXdNb3JlRGlzcGxheWVkOiB2aWV3TW9yZURpc3BsYXlhYmxlLFxuICAgICAgICAgICAgdmlld01vcmVEZXRhaWxzRGlzcGxheWVkTGltaXQ6IGRldGFpbHNEaXNwbGF5ZWRMaW1pdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZExlYWZEZXRhaWwoZGV0YWlsOiBOYXZTZWxlY3RvckxlYWZEZXRhaWxzLCBsZXZlbDogbnVtYmVyLCBmb2N1c2FibGU6IGJvb2xlYW4pOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdWlkOiBkZXRhaWwudWlkLFxuICAgICAgICAgICAgY291bnRlcjogZGV0YWlsLmNvdW50ZXIgPz8gMCxcbiAgICAgICAgICAgIGRpc3BsYXlDb3VudGVyOiBkZXRhaWwuY291bnRlciAhPT0gbnVsbCxcbiAgICAgICAgICAgIGFsaWFzOiBkZXRhaWwubmFtZSxcbiAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgICAgIGFyaWFQb3NpbnNldDogMSxcbiAgICAgICAgICAgICAgICBhcmlhTGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgICAgIGFyaWFTZXRzaXplOiAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yUmVhc29uOiBkZXRhaWwuZXJyb3JSZWFzb24sXG4gICAgICAgICAgICBkaXNwbGF5RXJyb3I6IGRldGFpbC5lcnJvclJlYXNvbiAhPT0gbnVsbCxcbiAgICAgICAgICAgIHR5cGU6ICdMRUFGX0RFVEFJTFMnLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzTGVhZkxvZ2ljVmFsaWQobGVhZjogTmF2U2VsZWN0b3JMZWFmLCAuLi5leGNsdWRlczogTGVhZkxvZ2ljc1tdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLkxFQUZfTE9HSUNTX1BSSU9SSVRZKVxuICAgICAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICFleGNsdWRlcy5pbmNsdWRlcyhrZXkgYXMgTGVhZkxvZ2ljcykpXG4gICAgICAgICAgICAuZXZlcnkoKFssIGxvZ2ljXSkgPT4gIWxvZ2ljKGxlYWYpKTtcbiAgICB9XG59XG4iXX0=
@@ -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==