@ethlete/cdk 4.48.1 → 4.49.1

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 (655) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/fesm2022/ethlete-cdk.mjs +860 -881
  3. package/fesm2022/ethlete-cdk.mjs.map +1 -1
  4. package/lib/components/forms/utils/decorated-form-field.base.d.ts +1 -1
  5. package/lib/components/forms/utils/decorated-input.base.d.ts +1 -1
  6. package/lib/components/forms/utils/input.base.d.ts +1 -1
  7. package/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.d.ts +1 -1
  8. package/lib/components/overlay/components/dialog/services/dialog-base.service.d.ts +1 -1
  9. package/lib/components/tabs/utils/paginated-tab-header.directive.d.ts +1 -1
  10. package/package.json +8 -10
  11. package/esm2022/ethlete-cdk.mjs +0 -5
  12. package/esm2022/index.mjs +0 -24
  13. package/esm2022/lib/components/accordion/accordion.imports.mjs +0 -15
  14. package/esm2022/lib/components/accordion/components/accordion/accordion.component.animations.mjs +0 -9
  15. package/esm2022/lib/components/accordion/components/accordion/accordion.component.constants.mjs +0 -3
  16. package/esm2022/lib/components/accordion/components/accordion/accordion.component.mjs +0 -76
  17. package/esm2022/lib/components/accordion/components/accordion/index.mjs +0 -4
  18. package/esm2022/lib/components/accordion/components/accordion-group/accordion-group.component.mjs +0 -53
  19. package/esm2022/lib/components/accordion/components/accordion-group/index.mjs +0 -2
  20. package/esm2022/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.mjs +0 -17
  21. package/esm2022/lib/components/accordion/partials/accordion-hint/index.mjs +0 -2
  22. package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.constants.mjs +0 -3
  23. package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.mjs +0 -20
  24. package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/index.mjs +0 -3
  25. package/esm2022/lib/components/accordion/partials/accordion-label/accordion-label.directive.mjs +0 -17
  26. package/esm2022/lib/components/accordion/partials/accordion-label/index.mjs +0 -2
  27. package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.constants.mjs +0 -3
  28. package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.mjs +0 -20
  29. package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/index.mjs +0 -3
  30. package/esm2022/lib/components/accordion/public-api/index.mjs +0 -8
  31. package/esm2022/lib/components/bracket/bracket.imports.mjs +0 -5
  32. package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +0 -333
  33. package/esm2022/lib/components/bracket/components/bracket/bracket.component.types.mjs +0 -2
  34. package/esm2022/lib/components/bracket/components/bracket/index.mjs +0 -3
  35. package/esm2022/lib/components/bracket/components/new-bracket/bracket-new.mjs +0 -1044
  36. package/esm2022/lib/components/bracket/components/new-bracket/draw-man.mjs +0 -197
  37. package/esm2022/lib/components/bracket/components/new-bracket/grid-definitions.mjs +0 -47
  38. package/esm2022/lib/components/bracket/components/new-bracket/grid-placements.mjs +0 -105
  39. package/esm2022/lib/components/bracket/components/new-bracket/index.mjs +0 -8
  40. package/esm2022/lib/components/bracket/components/new-bracket/journey-highlight.mjs +0 -18
  41. package/esm2022/lib/components/bracket/components/new-bracket/new-bracket-default-match.component.mjs +0 -17
  42. package/esm2022/lib/components/bracket/components/new-bracket/new-bracket-default-round-header.component.mjs +0 -16
  43. package/esm2022/lib/components/bracket/components/new-bracket/new-bracket.component.mjs +0 -107
  44. package/esm2022/lib/components/bracket/constants/bracket.constants.mjs +0 -12
  45. package/esm2022/lib/components/bracket/constants/index.mjs +0 -2
  46. package/esm2022/lib/components/bracket/directives/bracket-match/bracket-match.directive.mjs +0 -19
  47. package/esm2022/lib/components/bracket/directives/bracket-match/index.mjs +0 -2
  48. package/esm2022/lib/components/bracket/directives/bracket-round/bracket-round.directive.mjs +0 -19
  49. package/esm2022/lib/components/bracket/directives/bracket-round/index.mjs +0 -2
  50. package/esm2022/lib/components/bracket/partials/bracket-match/bracket-match.component.mjs +0 -19
  51. package/esm2022/lib/components/bracket/partials/bracket-match/index.mjs +0 -2
  52. package/esm2022/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.mjs +0 -19
  53. package/esm2022/lib/components/bracket/partials/bracket-round-header/index.mjs +0 -2
  54. package/esm2022/lib/components/bracket/public-api/index.mjs +0 -14
  55. package/esm2022/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_DOUBLE_SYNC.mjs +0 -1116
  56. package/esm2022/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_SINGLE.mjs +0 -2691
  57. package/esm2022/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATA_SWISS.mjs +0 -72479
  58. package/esm2022/lib/components/bracket/stories/dummy-data/ET_DUMMY_DATE_DOUBLE_ASYNC.mjs +0 -1275
  59. package/esm2022/lib/components/bracket/stories/dummy-data/FIFA_DUMMY_DATA_DOUBLE.mjs +0 -2453
  60. package/esm2022/lib/components/bracket/stories/dummy-data/FIFA_DUMMY_DATA_SINGLE.mjs +0 -2570
  61. package/esm2022/lib/components/bracket/stories/dummy-data/index.mjs +0 -7
  62. package/esm2022/lib/components/bracket/types/bracket-config.types.mjs +0 -2
  63. package/esm2022/lib/components/bracket/types/bracket.types.mjs +0 -2
  64. package/esm2022/lib/components/bracket/types/index.mjs +0 -3
  65. package/esm2022/lib/components/bracket/utils/bracket-config.utils.mjs +0 -13
  66. package/esm2022/lib/components/bracket/utils/bracket.utils.mjs +0 -339
  67. package/esm2022/lib/components/bracket/utils/index.mjs +0 -3
  68. package/esm2022/lib/components/button/button.imports.mjs +0 -4
  69. package/esm2022/lib/components/button/components/button/button.component.mjs +0 -18
  70. package/esm2022/lib/components/button/components/button/index.mjs +0 -2
  71. package/esm2022/lib/components/button/components/query-button/index.mjs +0 -2
  72. package/esm2022/lib/components/button/components/query-button/query-button.component.mjs +0 -26
  73. package/esm2022/lib/components/button/directives/button/button.directive.mjs +0 -69
  74. package/esm2022/lib/components/button/directives/button/index.mjs +0 -2
  75. package/esm2022/lib/components/button/directives/query-button/index.mjs +0 -2
  76. package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +0 -136
  77. package/esm2022/lib/components/button/public-api/index.mjs +0 -6
  78. package/esm2022/lib/components/carousel/carousel.component.mjs +0 -51
  79. package/esm2022/lib/components/carousel/carousel.directive.mjs +0 -150
  80. package/esm2022/lib/components/carousel/carousel.imports.mjs +0 -12
  81. package/esm2022/lib/components/carousel/controls/carousel-item-nav.component.mjs +0 -64
  82. package/esm2022/lib/components/carousel/controls/carousel-item-nav.directive.mjs +0 -34
  83. package/esm2022/lib/components/carousel/controls/carousel-next-button.directive.mjs +0 -45
  84. package/esm2022/lib/components/carousel/controls/carousel-previous-button.directive.mjs +0 -45
  85. package/esm2022/lib/components/carousel/controls/carousel-toggle-auto-play-button.directive.mjs +0 -43
  86. package/esm2022/lib/components/carousel/controls/index.mjs +0 -6
  87. package/esm2022/lib/components/carousel/et-carousel-item.component.mjs +0 -24
  88. package/esm2022/lib/components/carousel/et-carousel-item.directive.mjs +0 -46
  89. package/esm2022/lib/components/carousel/public-api/index.mjs +0 -7
  90. package/esm2022/lib/components/filter/public-api/index.mjs +0 -7
  91. package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/index.mjs +0 -2
  92. package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/rich-filter-host.component.mjs +0 -70
  93. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/index.mjs +0 -2
  94. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/rich-filter-button.directive.mjs +0 -32
  95. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/index.mjs +0 -2
  96. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/rich-filter-button-slot.directive.mjs +0 -32
  97. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/index.mjs +0 -2
  98. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/rich-filter-content.directive.mjs +0 -32
  99. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/index.mjs +0 -2
  100. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/rich-filter-top.directive.mjs +0 -29
  101. package/esm2022/lib/components/filter/rich-filter/rich-filter.imports.mjs +0 -13
  102. package/esm2022/lib/components/forms/components/checkbox/checkbox.imports.mjs +0 -13
  103. package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +0 -24
  104. package/esm2022/lib/components/forms/components/checkbox/components/checkbox/index.mjs +0 -2
  105. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +0 -47
  106. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/index.mjs +0 -2
  107. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +0 -17
  108. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/index.mjs +0 -2
  109. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +0 -40
  110. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/index.mjs +0 -2
  111. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +0 -39
  112. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/index.mjs +0 -2
  113. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +0 -83
  114. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/index.mjs +0 -2
  115. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +0 -31
  116. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/index.mjs +0 -2
  117. package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +0 -55
  118. package/esm2022/lib/components/forms/components/error/components/error/index.mjs +0 -2
  119. package/esm2022/lib/components/forms/components/input/components/color-input/color-input.component.mjs +0 -24
  120. package/esm2022/lib/components/forms/components/input/components/color-input/index.mjs +0 -2
  121. package/esm2022/lib/components/forms/components/input/components/date-input/date-input.component.mjs +0 -27
  122. package/esm2022/lib/components/forms/components/input/components/date-input/index.mjs +0 -2
  123. package/esm2022/lib/components/forms/components/input/components/date-time-input/date-time-input.component.mjs +0 -27
  124. package/esm2022/lib/components/forms/components/input/components/date-time-input/index.mjs +0 -2
  125. package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +0 -24
  126. package/esm2022/lib/components/forms/components/input/components/email-input/index.mjs +0 -2
  127. package/esm2022/lib/components/forms/components/input/components/input-field/index.mjs +0 -2
  128. package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +0 -55
  129. package/esm2022/lib/components/forms/components/input/components/number-input/index.mjs +0 -2
  130. package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +0 -27
  131. package/esm2022/lib/components/forms/components/input/components/password-input/index.mjs +0 -2
  132. package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +0 -24
  133. package/esm2022/lib/components/forms/components/input/components/search-input/index.mjs +0 -2
  134. package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +0 -24
  135. package/esm2022/lib/components/forms/components/input/components/tel-input/index.mjs +0 -2
  136. package/esm2022/lib/components/forms/components/input/components/tel-input/tel-input.component.mjs +0 -24
  137. package/esm2022/lib/components/forms/components/input/components/text-input/index.mjs +0 -2
  138. package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +0 -24
  139. package/esm2022/lib/components/forms/components/input/components/textarea-input/index.mjs +0 -2
  140. package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +0 -32
  141. package/esm2022/lib/components/forms/components/input/components/time-input/index.mjs +0 -2
  142. package/esm2022/lib/components/forms/components/input/components/time-input/time-input.component.mjs +0 -24
  143. package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +0 -51
  144. package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/index.mjs +0 -2
  145. package/esm2022/lib/components/forms/components/input/directives/color-input/color-input.directive.mjs +0 -50
  146. package/esm2022/lib/components/forms/components/input/directives/color-input/index.mjs +0 -2
  147. package/esm2022/lib/components/forms/components/input/directives/date-input/date-input.directive.mjs +0 -61
  148. package/esm2022/lib/components/forms/components/input/directives/date-input/index.mjs +0 -2
  149. package/esm2022/lib/components/forms/components/input/directives/date-time-input/date-time-input.directive.mjs +0 -61
  150. package/esm2022/lib/components/forms/components/input/directives/date-time-input/index.mjs +0 -2
  151. package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +0 -50
  152. package/esm2022/lib/components/forms/components/input/directives/email-input/index.mjs +0 -2
  153. package/esm2022/lib/components/forms/components/input/directives/if-supports-show-picker/if-supports-show-picker.directive.mjs +0 -78
  154. package/esm2022/lib/components/forms/components/input/directives/if-supports-show-picker/index.mjs +0 -2
  155. package/esm2022/lib/components/forms/components/input/directives/number-input/index.mjs +0 -2
  156. package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +0 -51
  157. package/esm2022/lib/components/forms/components/input/directives/password-input/index.mjs +0 -2
  158. package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +0 -54
  159. package/esm2022/lib/components/forms/components/input/directives/search-input/index.mjs +0 -2
  160. package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +0 -58
  161. package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/index.mjs +0 -2
  162. package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/show-picker-trigger.directive.mjs +0 -42
  163. package/esm2022/lib/components/forms/components/input/directives/tel-input/index.mjs +0 -2
  164. package/esm2022/lib/components/forms/components/input/directives/tel-input/tel-input.directive.mjs +0 -50
  165. package/esm2022/lib/components/forms/components/input/directives/text-input/index.mjs +0 -2
  166. package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +0 -50
  167. package/esm2022/lib/components/forms/components/input/directives/textarea-input/index.mjs +0 -2
  168. package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +0 -50
  169. package/esm2022/lib/components/forms/components/input/directives/time-input/index.mjs +0 -2
  170. package/esm2022/lib/components/forms/components/input/directives/time-input/time-input.directive.mjs +0 -61
  171. package/esm2022/lib/components/forms/components/input/input.imports.mjs +0 -47
  172. package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/index.mjs +0 -2
  173. package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +0 -22
  174. package/esm2022/lib/components/forms/components/input/partials/search-input-clear/index.mjs +0 -2
  175. package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +0 -22
  176. package/esm2022/lib/components/forms/components/label/components/label/index.mjs +0 -2
  177. package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +0 -51
  178. package/esm2022/lib/components/forms/components/label/directives/label-suffix/index.mjs +0 -2
  179. package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +0 -27
  180. package/esm2022/lib/components/forms/components/label/label.imports.mjs +0 -4
  181. package/esm2022/lib/components/forms/components/radio/components/radio/index.mjs +0 -2
  182. package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +0 -29
  183. package/esm2022/lib/components/forms/components/radio/components/radio-field/index.mjs +0 -2
  184. package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +0 -27
  185. package/esm2022/lib/components/forms/components/radio/components/radio-group/index.mjs +0 -2
  186. package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +0 -45
  187. package/esm2022/lib/components/forms/components/radio/directives/radio/index.mjs +0 -2
  188. package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +0 -60
  189. package/esm2022/lib/components/forms/components/radio/directives/radio-field/index.mjs +0 -2
  190. package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +0 -36
  191. package/esm2022/lib/components/forms/components/radio/directives/radio-group/index.mjs +0 -2
  192. package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +0 -30
  193. package/esm2022/lib/components/forms/components/radio/radio.imports.mjs +0 -6
  194. package/esm2022/lib/components/forms/components/radio/types/index.mjs +0 -2
  195. package/esm2022/lib/components/forms/components/radio/types/radio.types.mjs +0 -2
  196. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/index.mjs +0 -2
  197. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +0 -38
  198. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/index.mjs +0 -2
  199. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +0 -25
  200. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/index.mjs +0 -2
  201. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +0 -51
  202. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/index.mjs +0 -2
  203. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +0 -70
  204. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/index.mjs +0 -2
  205. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +0 -36
  206. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/index.mjs +0 -2
  207. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +0 -63
  208. package/esm2022/lib/components/forms/components/segmented-button/segmented-button.imports.mjs +0 -9
  209. package/esm2022/lib/components/forms/components/select/components/combobox/combobox.imports.mjs +0 -23
  210. package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +0 -78
  211. package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/index.mjs +0 -2
  212. package/esm2022/lib/components/forms/components/select/components/combobox/constants/combobox.constants.mjs +0 -6
  213. package/esm2022/lib/components/forms/components/select/components/combobox/constants/index.mjs +0 -2
  214. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +0 -658
  215. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/index.mjs +0 -2
  216. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-empty-template/combobox-body-empty-template.directive.mjs +0 -30
  217. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-empty-template/index.mjs +0 -2
  218. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-error-template/combobox-body-error-template.directive.mjs +0 -30
  219. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-error-template/index.mjs +0 -2
  220. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-loading-template/combobox-body-loading-template.directive.mjs +0 -30
  221. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-loading-template/index.mjs +0 -2
  222. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-more-items-hint-template/combobox-body-more-items-hint-template.directive.mjs +0 -30
  223. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-more-items-hint-template/index.mjs +0 -2
  224. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-option-template/combobox-option-template.directive.mjs +0 -30
  225. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-option-template/index.mjs +0 -2
  226. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-selected-option-template/combobox-selected-option-template.directive.mjs +0 -30
  227. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-selected-option-template/index.mjs +0 -2
  228. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +0 -78
  229. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/index.mjs +0 -2
  230. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +0 -71
  231. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/index.mjs +0 -2
  232. package/esm2022/lib/components/forms/components/select/components/combobox/private/combobox.private.errors.mjs +0 -22
  233. package/esm2022/lib/components/forms/components/select/components/combobox/private/combobox.private.types.mjs +0 -5
  234. package/esm2022/lib/components/forms/components/select/components/combobox/private/index.mjs +0 -3
  235. package/esm2022/lib/components/forms/components/select/components/combobox/types/combobox.types.mjs +0 -2
  236. package/esm2022/lib/components/forms/components/select/components/combobox/types/index.mjs +0 -2
  237. package/esm2022/lib/components/forms/components/select/components/combobox/utils/combobox-config.utils.mjs +0 -13
  238. package/esm2022/lib/components/forms/components/select/components/combobox/utils/index.mjs +0 -2
  239. package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/index.mjs +0 -2
  240. package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +0 -24
  241. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/index.mjs +0 -2
  242. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +0 -58
  243. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/index.mjs +0 -2
  244. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +0 -45
  245. package/esm2022/lib/components/forms/components/select/components/native-select/native-select.imports.mjs +0 -19
  246. package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/index.mjs +0 -2
  247. package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +0 -32
  248. package/esm2022/lib/components/forms/components/select/components/native-select/types/index.mjs +0 -2
  249. package/esm2022/lib/components/forms/components/select/components/native-select/types/select.types.mjs +0 -2
  250. package/esm2022/lib/components/forms/components/select/components/select/components/select/index.mjs +0 -2
  251. package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +0 -37
  252. package/esm2022/lib/components/forms/components/select/components/select/directives/select/index.mjs +0 -2
  253. package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +0 -303
  254. package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/index.mjs +0 -2
  255. package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +0 -53
  256. package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/index.mjs +0 -2
  257. package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +0 -106
  258. package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/index.mjs +0 -2
  259. package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +0 -41
  260. package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/index.mjs +0 -2
  261. package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +0 -28
  262. package/esm2022/lib/components/forms/components/select/components/select/private/index.mjs +0 -2
  263. package/esm2022/lib/components/forms/components/select/components/select/private/select.private.types.mjs +0 -2
  264. package/esm2022/lib/components/forms/components/select/components/select/select.imports.mjs +0 -15
  265. package/esm2022/lib/components/forms/components/select/components/select-field/index.mjs +0 -2
  266. package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +0 -58
  267. package/esm2022/lib/components/forms/components/select/directives/select-field/index.mjs +0 -2
  268. package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +0 -19
  269. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-field/index.mjs +0 -2
  270. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-field/selection-list-field.component.mjs +0 -40
  271. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-option/index.mjs +0 -2
  272. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-option/selection-list-option.component.mjs +0 -29
  273. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-field/index.mjs +0 -2
  274. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-field/selection-list-field.directive.mjs +0 -125
  275. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-option/index.mjs +0 -2
  276. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-option/selection-list-option.directive.mjs +0 -110
  277. package/esm2022/lib/components/forms/components/selection-list/selection-list.imports.mjs +0 -4
  278. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/index.mjs +0 -2
  279. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +0 -24
  280. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/index.mjs +0 -2
  281. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +0 -53
  282. package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/index.mjs +0 -2
  283. package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +0 -38
  284. package/esm2022/lib/components/forms/components/slide-toggle/slide-toggle.imports.mjs +0 -5
  285. package/esm2022/lib/components/forms/components/slider/components/slider/index.mjs +0 -2
  286. package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +0 -331
  287. package/esm2022/lib/components/forms/components/slider/components/slider-field/index.mjs +0 -2
  288. package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +0 -53
  289. package/esm2022/lib/components/forms/components/slider/slider.imports.mjs +0 -5
  290. package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +0 -41
  291. package/esm2022/lib/components/forms/directives/dynamic-form-field/index.mjs +0 -2
  292. package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +0 -41
  293. package/esm2022/lib/components/forms/directives/dynamic-form-group/index.mjs +0 -2
  294. package/esm2022/lib/components/forms/directives/expose-input-vars/expose-input-vars.directive.mjs +0 -83
  295. package/esm2022/lib/components/forms/directives/expose-input-vars/index.mjs +0 -2
  296. package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +0 -40
  297. package/esm2022/lib/components/forms/directives/if-input-empty/index.mjs +0 -2
  298. package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +0 -40
  299. package/esm2022/lib/components/forms/directives/if-input-filled/index.mjs +0 -2
  300. package/esm2022/lib/components/forms/directives/input/index.mjs +0 -2
  301. package/esm2022/lib/components/forms/directives/input/input.directive.mjs +0 -314
  302. package/esm2022/lib/components/forms/directives/input-prefix/index.mjs +0 -2
  303. package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +0 -30
  304. package/esm2022/lib/components/forms/directives/input-suffix/index.mjs +0 -2
  305. package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +0 -30
  306. package/esm2022/lib/components/forms/directives/native-input-ref/index.mjs +0 -2
  307. package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +0 -19
  308. package/esm2022/lib/components/forms/directives/static-form-field/index.mjs +0 -2
  309. package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +0 -76
  310. package/esm2022/lib/components/forms/directives/static-form-group/index.mjs +0 -2
  311. package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +0 -29
  312. package/esm2022/lib/components/forms/directives/writeable-input/index.mjs +0 -2
  313. package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +0 -57
  314. package/esm2022/lib/components/forms/public-api/index.mjs +0 -113
  315. package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +0 -54
  316. package/esm2022/lib/components/forms/services/form-field-state.service.mjs +0 -32
  317. package/esm2022/lib/components/forms/services/form-group-state.service.mjs +0 -21
  318. package/esm2022/lib/components/forms/services/index.mjs +0 -5
  319. package/esm2022/lib/components/forms/services/input-state.service.mjs +0 -72
  320. package/esm2022/lib/components/forms/types/index.mjs +0 -2
  321. package/esm2022/lib/components/forms/types/input.types.mjs +0 -2
  322. package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +0 -19
  323. package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +0 -48
  324. package/esm2022/lib/components/forms/utils/form-changes-tracker.util.mjs +0 -31
  325. package/esm2022/lib/components/forms/utils/index.mjs +0 -5
  326. package/esm2022/lib/components/forms/utils/input.base.mjs +0 -27
  327. package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +0 -37
  328. package/esm2022/lib/components/icons/chevron-icon/index.mjs +0 -2
  329. package/esm2022/lib/components/icons/icon.imports.mjs +0 -4
  330. package/esm2022/lib/components/icons/public-api/index.mjs +0 -4
  331. package/esm2022/lib/components/icons/times-icon/index.mjs +0 -2
  332. package/esm2022/lib/components/icons/times-icon/times-icon.component.mjs +0 -37
  333. package/esm2022/lib/components/masonry/components/masonry/index.mjs +0 -2
  334. package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +0 -213
  335. package/esm2022/lib/components/masonry/masonry.imports.mjs +0 -4
  336. package/esm2022/lib/components/masonry/partials/masonry-item/index.mjs +0 -2
  337. package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +0 -74
  338. package/esm2022/lib/components/masonry/public-api/index.mjs +0 -5
  339. package/esm2022/lib/components/masonry/types/index.mjs +0 -2
  340. package/esm2022/lib/components/masonry/types/masonry.types.mjs +0 -2
  341. package/esm2022/lib/components/overlay/components/bottom-sheet/bottom-sheet.imports.mjs +0 -21
  342. package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +0 -54
  343. package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/index.mjs +0 -2
  344. package/esm2022/lib/components/overlay/components/bottom-sheet/constants/bottom-sheet.constants.mjs +0 -56
  345. package/esm2022/lib/components/overlay/components/bottom-sheet/constants/index.mjs +0 -2
  346. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +0 -46
  347. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/index.mjs +0 -2
  348. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +0 -115
  349. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/index.mjs +0 -2
  350. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +0 -42
  351. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/index.mjs +0 -2
  352. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +0 -117
  353. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +0 -57
  354. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +0 -34
  355. package/esm2022/lib/components/overlay/components/bottom-sheet/services/index.mjs +0 -4
  356. package/esm2022/lib/components/overlay/components/bottom-sheet/types/bottom-sheet.types.mjs +0 -2
  357. package/esm2022/lib/components/overlay/components/bottom-sheet/types/index.mjs +0 -2
  358. package/esm2022/lib/components/overlay/components/bottom-sheet/utils/bottom-sheet-config.mjs +0 -10
  359. package/esm2022/lib/components/overlay/components/bottom-sheet/utils/bottom-sheet-ref.mjs +0 -96
  360. package/esm2022/lib/components/overlay/components/bottom-sheet/utils/bottom-sheet.utils.mjs +0 -22
  361. package/esm2022/lib/components/overlay/components/bottom-sheet/utils/index.mjs +0 -4
  362. package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +0 -54
  363. package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/index.mjs +0 -2
  364. package/esm2022/lib/components/overlay/components/dialog/constants/dialog.constants.mjs +0 -52
  365. package/esm2022/lib/components/overlay/components/dialog/constants/index.mjs +0 -2
  366. package/esm2022/lib/components/overlay/components/dialog/dialog.imports.mjs +0 -17
  367. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +0 -67
  368. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/index.mjs +0 -2
  369. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +0 -46
  370. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/index.mjs +0 -2
  371. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +0 -42
  372. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/index.mjs +0 -2
  373. package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +0 -112
  374. package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +0 -34
  375. package/esm2022/lib/components/overlay/components/dialog/services/index.mjs +0 -3
  376. package/esm2022/lib/components/overlay/components/dialog/types/dialog.types.mjs +0 -2
  377. package/esm2022/lib/components/overlay/components/dialog/types/index.mjs +0 -2
  378. package/esm2022/lib/components/overlay/components/dialog/utils/dialog-config.mjs +0 -10
  379. package/esm2022/lib/components/overlay/components/dialog/utils/dialog-ref.mjs +0 -127
  380. package/esm2022/lib/components/overlay/components/dialog/utils/dialog.utils.mjs +0 -22
  381. package/esm2022/lib/components/overlay/components/dialog/utils/index.mjs +0 -4
  382. package/esm2022/lib/components/overlay/components/menu/components/menu/index.mjs +0 -2
  383. package/esm2022/lib/components/overlay/components/menu/components/menu/menu.component.mjs +0 -202
  384. package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/index.mjs +0 -2
  385. package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/menu-checkbox-item.component.mjs +0 -86
  386. package/esm2022/lib/components/overlay/components/menu/components/menu-container/index.mjs +0 -2
  387. package/esm2022/lib/components/overlay/components/menu/components/menu-container/menu-container.component.mjs +0 -47
  388. package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/index.mjs +0 -2
  389. package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/menu-radio-item.component.mjs +0 -77
  390. package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/index.mjs +0 -2
  391. package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/menu-checkbox-group.directive.mjs +0 -31
  392. package/esm2022/lib/components/overlay/components/menu/directives/menu-group/index.mjs +0 -2
  393. package/esm2022/lib/components/overlay/components/menu/directives/menu-group/menu-group.directive.mjs +0 -43
  394. package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/index.mjs +0 -2
  395. package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/menu-group-title.directive.mjs +0 -41
  396. package/esm2022/lib/components/overlay/components/menu/directives/menu-item/index.mjs +0 -2
  397. package/esm2022/lib/components/overlay/components/menu/directives/menu-item/menu-item.directive.mjs +0 -98
  398. package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/index.mjs +0 -2
  399. package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/menu-radio-group.directive.mjs +0 -45
  400. package/esm2022/lib/components/overlay/components/menu/directives/menu-search-template/index.mjs +0 -2
  401. package/esm2022/lib/components/overlay/components/menu/directives/menu-search-template/menu-search-template.directive.mjs +0 -29
  402. package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/index.mjs +0 -2
  403. package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/menu-trigger.directive.mjs +0 -183
  404. package/esm2022/lib/components/overlay/components/menu/menu.imports.mjs +0 -23
  405. package/esm2022/lib/components/overlay/components/menu-deprecated/context-menu-trigger.mjs +0 -165
  406. package/esm2022/lib/components/overlay/components/menu-deprecated/index.mjs +0 -17
  407. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-aim.mjs +0 -136
  408. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-bar.mjs +0 -112
  409. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-base.mjs +0 -171
  410. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-errors.mjs +0 -7
  411. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-group.mjs +0 -25
  412. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-interface.mjs +0 -3
  413. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-checkbox.mjs +0 -38
  414. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-radio.mjs +0 -55
  415. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-selectable.mjs +0 -38
  416. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item.mjs +0 -212
  417. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-module.mjs +0 -58
  418. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-stack.mjs +0 -99
  419. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger-base.mjs +0 -80
  420. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger.mjs +0 -250
  421. package/esm2022/lib/components/overlay/components/menu-deprecated/menu.mjs +0 -115
  422. package/esm2022/lib/components/overlay/components/menu-deprecated/pointer-focus-tracker.mjs +0 -29
  423. package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/index.mjs +0 -2
  424. package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.mjs +0 -287
  425. package/esm2022/lib/components/overlay/components/overlay/constants/index.mjs +0 -2
  426. package/esm2022/lib/components/overlay/components/overlay/constants/overlay.constants.mjs +0 -26
  427. package/esm2022/lib/components/overlay/components/overlay/overlay.imports.mjs +0 -40
  428. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-back-or-close/index.mjs +0 -2
  429. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-back-or-close/overlay-back-or-close.directive.mjs +0 -43
  430. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/index.mjs +0 -2
  431. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.mjs +0 -134
  432. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-close/index.mjs +0 -2
  433. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-close/overlay-close.directive.mjs +0 -61
  434. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/index.mjs +0 -2
  435. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/overlay-footer.directive.mjs +0 -45
  436. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/index.mjs +0 -2
  437. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/overlay-header.directive.mjs +0 -45
  438. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header-template/index.mjs +0 -2
  439. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header-template/overlay-header-template.directive.mjs +0 -50
  440. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-main/index.mjs +0 -2
  441. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-main/overlay-main.directive.mjs +0 -53
  442. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/index.mjs +0 -2
  443. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/overlay-route-header-template-outlet.component.mjs +0 -41
  444. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-link/index.mjs +0 -2
  445. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-link/overlay-router-link.directive.mjs +0 -46
  446. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet/index.mjs +0 -2
  447. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet/overlay-router-outlet.component.mjs +0 -137
  448. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet-disabled-template/index.mjs +0 -2
  449. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet-disabled-template/overlay-router-outlet-disabled-template.directive.mjs +0 -26
  450. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template/index.mjs +0 -2
  451. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template/overlay-shared-route-template.directive.mjs +0 -26
  452. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template-outlet/index.mjs +0 -2
  453. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template-outlet/overlay-shared-route-template-outlet.component.mjs +0 -26
  454. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar/index.mjs +0 -2
  455. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar/overlay-sidebar.component.mjs +0 -54
  456. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/index.mjs +0 -2
  457. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/overlay-sidebar-page.component.mjs +0 -52
  458. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-title/index.mjs +0 -2
  459. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-title/overlay-title.directive.mjs +0 -39
  460. package/esm2022/lib/components/overlay/components/overlay/services/index.mjs +0 -2
  461. package/esm2022/lib/components/overlay/components/overlay/services/overlay.service.mjs +0 -313
  462. package/esm2022/lib/components/overlay/components/overlay/types/index.mjs +0 -2
  463. package/esm2022/lib/components/overlay/components/overlay/types/overlay.types.mjs +0 -6
  464. package/esm2022/lib/components/overlay/components/overlay/utils/filter-overlay.mjs +0 -124
  465. package/esm2022/lib/components/overlay/components/overlay/utils/index.mjs +0 -10
  466. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-config.mjs +0 -7
  467. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-handler-link.directive.mjs +0 -33
  468. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-handler.mjs +0 -159
  469. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-position-builder.mjs +0 -224
  470. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-ref.mjs +0 -173
  471. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-router.mjs +0 -190
  472. package/esm2022/lib/components/overlay/components/overlay/utils/overlay.utils.mjs +0 -13
  473. package/esm2022/lib/components/overlay/components/overlay/utils/sidebar-overlay.mjs +0 -54
  474. package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/index.mjs +0 -2
  475. package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +0 -69
  476. package/esm2022/lib/components/overlay/components/toggletip/constants/index.mjs +0 -2
  477. package/esm2022/lib/components/overlay/components/toggletip/constants/toggletip.constants.mjs +0 -12
  478. package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/index.mjs +0 -2
  479. package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +0 -136
  480. package/esm2022/lib/components/overlay/components/toggletip/partials/toggletip-close/index.mjs +0 -2
  481. package/esm2022/lib/components/overlay/components/toggletip/partials/toggletip-close/toggletip-close.directive.mjs +0 -25
  482. package/esm2022/lib/components/overlay/components/toggletip/toggletip.imports.mjs +0 -3
  483. package/esm2022/lib/components/overlay/components/toggletip/types/index.mjs +0 -2
  484. package/esm2022/lib/components/overlay/components/toggletip/types/toggletip.types.mjs +0 -2
  485. package/esm2022/lib/components/overlay/components/toggletip/utils/index.mjs +0 -3
  486. package/esm2022/lib/components/overlay/components/toggletip/utils/toggletip-config.mjs +0 -6
  487. package/esm2022/lib/components/overlay/components/toggletip/utils/toggletip.util.mjs +0 -6
  488. package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/index.mjs +0 -2
  489. package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +0 -67
  490. package/esm2022/lib/components/overlay/components/tooltip/constants/index.mjs +0 -2
  491. package/esm2022/lib/components/overlay/components/tooltip/constants/tooltip.constants.mjs +0 -12
  492. package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/index.mjs +0 -2
  493. package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +0 -171
  494. package/esm2022/lib/components/overlay/components/tooltip/tooltip.imports.mjs +0 -3
  495. package/esm2022/lib/components/overlay/components/tooltip/types/index.mjs +0 -2
  496. package/esm2022/lib/components/overlay/components/tooltip/types/tooltip.types.mjs +0 -2
  497. package/esm2022/lib/components/overlay/components/tooltip/utils/index.mjs +0 -3
  498. package/esm2022/lib/components/overlay/components/tooltip/utils/tooltip-config.mjs +0 -6
  499. package/esm2022/lib/components/overlay/components/tooltip/utils/tooltip.util.mjs +0 -6
  500. package/esm2022/lib/components/overlay/directives/dynamic-overlay-title/dynamic-overlay-title.directive.mjs +0 -49
  501. package/esm2022/lib/components/overlay/directives/dynamic-overlay-title/index.mjs +0 -2
  502. package/esm2022/lib/components/overlay/directives/overlay-close-auto-blocker/index.mjs +0 -2
  503. package/esm2022/lib/components/overlay/directives/overlay-close-auto-blocker/overlay-close-auto-blocker.directive.mjs +0 -51
  504. package/esm2022/lib/components/overlay/public-api/index.mjs +0 -72
  505. package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +0 -31
  506. package/esm2022/lib/components/overlay/services/index.mjs +0 -2
  507. package/esm2022/lib/components/overlay/types/dynamic-overlay.types.mjs +0 -2
  508. package/esm2022/lib/components/overlay/types/index.mjs +0 -2
  509. package/esm2022/lib/components/overlay/utils/index.mjs +0 -2
  510. package/esm2022/lib/components/overlay/utils/overlay-dismiss-checker.util.mjs +0 -105
  511. package/esm2022/lib/components/pagination/components/pagination/index.mjs +0 -2
  512. package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +0 -110
  513. package/esm2022/lib/components/pagination/pagination.imports.mjs +0 -3
  514. package/esm2022/lib/components/pagination/partials/pagination-link/index.mjs +0 -2
  515. package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +0 -32
  516. package/esm2022/lib/components/pagination/public-api/index.mjs +0 -7
  517. package/esm2022/lib/components/pagination/services/index.mjs +0 -2
  518. package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +0 -74
  519. package/esm2022/lib/components/pagination/types/index.mjs +0 -2
  520. package/esm2022/lib/components/pagination/types/pagination.types.mjs +0 -2
  521. package/esm2022/lib/components/pagination/utils/index.mjs +0 -2
  522. package/esm2022/lib/components/pagination/utils/pagination.util.mjs +0 -98
  523. package/esm2022/lib/components/picture/components/picture/index.mjs +0 -2
  524. package/esm2022/lib/components/picture/components/picture/picture.component.mjs +0 -56
  525. package/esm2022/lib/components/picture/public-api/index.mjs +0 -4
  526. package/esm2022/lib/components/picture/types/picture.types.mjs +0 -2
  527. package/esm2022/lib/components/picture/utils/picture.utils.mjs +0 -31
  528. package/esm2022/lib/components/progress-spinner/index.mjs +0 -2
  529. package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +0 -94
  530. package/esm2022/lib/components/query-error/components/query-error/index.mjs +0 -2
  531. package/esm2022/lib/components/query-error/components/query-error/query-error.component.mjs +0 -27
  532. package/esm2022/lib/components/query-error/directives/query-error/index.mjs +0 -2
  533. package/esm2022/lib/components/query-error/directives/query-error/query-error.directive.mjs +0 -432
  534. package/esm2022/lib/components/query-error/public-api/index.mjs +0 -4
  535. package/esm2022/lib/components/query-error/types/index.mjs +0 -2
  536. package/esm2022/lib/components/query-error/types/query-error.types.mjs +0 -2
  537. package/esm2022/lib/components/scrollable/components/scrollable/index.mjs +0 -2
  538. package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +0 -510
  539. package/esm2022/lib/components/scrollable/components/scrollable-placeholder/index.mjs +0 -2
  540. package/esm2022/lib/components/scrollable/components/scrollable-placeholder/scrollable-placeholder.component.mjs +0 -26
  541. package/esm2022/lib/components/scrollable/directives/scrollable-ignore-child/index.mjs +0 -2
  542. package/esm2022/lib/components/scrollable/directives/scrollable-ignore-child/scrollable-ignore-child.directive.mjs +0 -44
  543. package/esm2022/lib/components/scrollable/directives/scrollable-is-active-child/index.mjs +0 -2
  544. package/esm2022/lib/components/scrollable/directives/scrollable-is-active-child/scrollable-is-active-child.directive.mjs +0 -45
  545. package/esm2022/lib/components/scrollable/directives/scrollable-loading-template/index.mjs +0 -2
  546. package/esm2022/lib/components/scrollable/directives/scrollable-loading-template/scrollable-loading-template.directive.mjs +0 -31
  547. package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-item-template/index.mjs +0 -2
  548. package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-item-template/scrollable-placeholder-item-template.directive.mjs +0 -26
  549. package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-overlay-template/index.mjs +0 -2
  550. package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-overlay-template/scrollable-placeholder-overlay-template.directive.mjs +0 -26
  551. package/esm2022/lib/components/scrollable/public-api/index.mjs +0 -10
  552. package/esm2022/lib/components/scrollable/scrollable.imports.mjs +0 -17
  553. package/esm2022/lib/components/scrollable/types/index.mjs +0 -2
  554. package/esm2022/lib/components/scrollable/types/scrollable.types.mjs +0 -2
  555. package/esm2022/lib/components/skeleton/components/skeleton/index.mjs +0 -2
  556. package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +0 -25
  557. package/esm2022/lib/components/skeleton/partials/skeleton-item/index.mjs +0 -2
  558. package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +0 -19
  559. package/esm2022/lib/components/skeleton/public-api/index.mjs +0 -4
  560. package/esm2022/lib/components/skeleton/skeleton.imports.mjs +0 -4
  561. package/esm2022/lib/components/sort/components/sort-header/index.mjs +0 -3
  562. package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +0 -198
  563. package/esm2022/lib/components/sort/components/sort-header/sort-header.types.mjs +0 -2
  564. package/esm2022/lib/components/sort/partials/sort/index.mjs +0 -3
  565. package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +0 -184
  566. package/esm2022/lib/components/sort/partials/sort/sort.types.mjs +0 -2
  567. package/esm2022/lib/components/sort/public-api/index.mjs +0 -6
  568. package/esm2022/lib/components/sort/services/index.mjs +0 -2
  569. package/esm2022/lib/components/sort/services/sort-header-intl.mjs +0 -23
  570. package/esm2022/lib/components/sort/sort.imports.mjs +0 -8
  571. package/esm2022/lib/components/sort/types/index.mjs +0 -2
  572. package/esm2022/lib/components/sort/types/sort-direction.mjs +0 -2
  573. package/esm2022/lib/components/table/components/table/index.mjs +0 -2
  574. package/esm2022/lib/components/table/components/table/table.component.mjs +0 -145
  575. package/esm2022/lib/components/table/constants/index.mjs +0 -2
  576. package/esm2022/lib/components/table/constants/table-data-source.constants.mjs +0 -2
  577. package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +0 -18
  578. package/esm2022/lib/components/table/partials/cells/cell/index.mjs +0 -2
  579. package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +0 -16
  580. package/esm2022/lib/components/table/partials/cells/cell-def/index.mjs +0 -2
  581. package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +0 -44
  582. package/esm2022/lib/components/table/partials/cells/column-def/index.mjs +0 -2
  583. package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +0 -18
  584. package/esm2022/lib/components/table/partials/cells/footer-cell/index.mjs +0 -2
  585. package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +0 -16
  586. package/esm2022/lib/components/table/partials/cells/footer-cell-def/index.mjs +0 -2
  587. package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +0 -19
  588. package/esm2022/lib/components/table/partials/cells/header-cell/index.mjs +0 -2
  589. package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +0 -16
  590. package/esm2022/lib/components/table/partials/cells/header-cell-def/index.mjs +0 -2
  591. package/esm2022/lib/components/table/partials/cells/text-column/index.mjs +0 -2
  592. package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +0 -53
  593. package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +0 -26
  594. package/esm2022/lib/components/table/partials/rows/footer-row/index.mjs +0 -2
  595. package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +0 -26
  596. package/esm2022/lib/components/table/partials/rows/footer-row-def/index.mjs +0 -2
  597. package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +0 -26
  598. package/esm2022/lib/components/table/partials/rows/header-row/index.mjs +0 -2
  599. package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +0 -26
  600. package/esm2022/lib/components/table/partials/rows/header-row-def/index.mjs +0 -2
  601. package/esm2022/lib/components/table/partials/rows/no-data-row/index.mjs +0 -2
  602. package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +0 -20
  603. package/esm2022/lib/components/table/partials/rows/recycle-rows/index.mjs +0 -2
  604. package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +0 -16
  605. package/esm2022/lib/components/table/partials/rows/row/index.mjs +0 -2
  606. package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +0 -26
  607. package/esm2022/lib/components/table/partials/rows/row-def/index.mjs +0 -2
  608. package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +0 -26
  609. package/esm2022/lib/components/table/partials/table-busy/index.mjs +0 -2
  610. package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +0 -18
  611. package/esm2022/lib/components/table/partials/table-busy-outlet/index.mjs +0 -2
  612. package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +0 -15
  613. package/esm2022/lib/components/table/public-api/index.mjs +0 -24
  614. package/esm2022/lib/components/table/table.imports.mjs +0 -39
  615. package/esm2022/lib/components/table/types/index.mjs +0 -2
  616. package/esm2022/lib/components/table/types/table-data-source.types.mjs +0 -2
  617. package/esm2022/lib/components/table/utils/index.mjs +0 -2
  618. package/esm2022/lib/components/table/utils/table-data-source.mjs +0 -168
  619. package/esm2022/lib/components/tabs/animations/index.mjs +0 -2
  620. package/esm2022/lib/components/tabs/animations/tabs.animations.mjs +0 -26
  621. package/esm2022/lib/components/tabs/components/inline-tabs/index.mjs +0 -2
  622. package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +0 -257
  623. package/esm2022/lib/components/tabs/components/nav-tabs/index.mjs +0 -2
  624. package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +0 -82
  625. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/index.mjs +0 -2
  626. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +0 -88
  627. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/index.mjs +0 -2
  628. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +0 -133
  629. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/index.mjs +0 -2
  630. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +0 -25
  631. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/index.mjs +0 -2
  632. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +0 -22
  633. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/index.mjs +0 -2
  634. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +0 -34
  635. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/index.mjs +0 -2
  636. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +0 -30
  637. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/index.mjs +0 -2
  638. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +0 -42
  639. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/index.mjs +0 -2
  640. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +0 -177
  641. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/index.mjs +0 -2
  642. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +0 -37
  643. package/esm2022/lib/components/tabs/public-api/index.mjs +0 -16
  644. package/esm2022/lib/components/tabs/tab.imports.mjs +0 -25
  645. package/esm2022/lib/components/tabs/types/index.mjs +0 -2
  646. package/esm2022/lib/components/tabs/types/tab-config.types.mjs +0 -3
  647. package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +0 -112
  648. package/esm2022/lib/components/tabs/utils/index.mjs +0 -3
  649. package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +0 -272
  650. package/esm2022/lib/services/index.mjs +0 -2
  651. package/esm2022/lib/services/swipe-handler.service.mjs +0 -102
  652. package/esm2022/lib/types/index.mjs +0 -2
  653. package/esm2022/lib/types/swipe.types.mjs +0 -2
  654. package/esm2022/lib/utils/floating-ui.utils.mjs +0 -15
  655. package/esm2022/lib/utils/index.mjs +0 -2
@@ -1,658 +0,0 @@
1
- import { A, BACKSPACE, ENTER, ESCAPE, TAB } from '@angular/cdk/keycodes';
2
- import { ContentChild, Directive, EventEmitter, InjectionToken, Input, Output, TemplateRef, booleanAttribute, inject, input, isDevMode, } from '@angular/core';
3
- import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
4
- import { ActiveSelectionModel, AnimatedOverlayDirective, KeyPressManager, SelectionModel, createDestroy, isEmptyArray, isObjectArray, isPrimitiveArray, scrollToElement, signalClasses, signalHostClasses, } from '@ethlete/core';
5
- import { THEME_PROVIDER } from '@ethlete/theming';
6
- import { BehaviorSubject, catchError, combineLatest, debounceTime, distinctUntilChanged, map, of, skip, skipWhile, startWith, switchMap, takeUntil, tap, throwError, } from 'rxjs';
7
- import { INPUT_TOKEN } from '../../../../../../directives/input';
8
- import { SELECT_FIELD_TOKEN } from '../../../../directives/select-field';
9
- import { COMBOBOX_CONFIG_TOKEN, COMBOBOX_DEFAULT_CONFIG } from '../../constants';
10
- import { ComboboxOptionType, assetComboboxBodyComponentSet, comboboxError, } from '../../private';
11
- import { COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN } from '../combobox-body-empty-template';
12
- import { COMBOBOX_BODY_ERROR_TEMPLATE_TOKEN } from '../combobox-body-error-template';
13
- import { COMBOBOX_BODY_LOADING_TEMPLATE_TOKEN } from '../combobox-body-loading-template';
14
- import { COMBOBOX_BODY_MORE_ITEMS_HINT_TEMPLATE_TOKEN } from '../combobox-body-more-items-hint-template';
15
- import { COMBOBOX_OPTION_TEMPLATE_TOKEN } from '../combobox-option-template';
16
- import { COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN } from '../combobox-selected-option-template';
17
- import * as i0 from "@angular/core";
18
- export const COMBOBOX_TOKEN = new InjectionToken('ET_COMBOBOX_INPUT_TOKEN');
19
- export class ComboboxDirective {
20
- //#region Inputs
21
- get options() {
22
- return this._selectionModel.getFilteredOptions();
23
- }
24
- set options(value) {
25
- this._selectionModel.setOptions(value);
26
- }
27
- set initialValue(value) {
28
- this._selectionModel.setSelection(value);
29
- this._initialValue$.next(value);
30
- }
31
- get filterInternal() {
32
- return this._filterInternal$.value;
33
- }
34
- set filterInternal(value) {
35
- const val = booleanAttribute(value);
36
- this._filterInternal$.next(val);
37
- if (!val) {
38
- this._selectionModel.setFilter('');
39
- }
40
- else {
41
- this._selectionModel.setFilter(this.currentFilter);
42
- }
43
- }
44
- get loading() {
45
- return this._loading$.value;
46
- }
47
- set loading(value) {
48
- this._loading$.next(booleanAttribute(value));
49
- }
50
- get error() {
51
- return this._error$.value;
52
- }
53
- set error(value) {
54
- this._error$.next(value);
55
- }
56
- /**
57
- * To be removed in v5.
58
- */
59
- get _tempEmptyText() {
60
- return (this.emptyText ??
61
- this.bodyEmptyText ??
62
- this._comboboxConfig?.bodyEmptyText ??
63
- this._comboboxConfig?.emptyText ??
64
- COMBOBOX_DEFAULT_CONFIG.bodyEmptyText);
65
- }
66
- get placeholder() {
67
- return this._placeholder$.value;
68
- }
69
- set placeholder(value) {
70
- this._placeholder$.next(value);
71
- }
72
- set multiple(value) {
73
- this._selectionModel.setAllowMultiple(booleanAttribute(value));
74
- }
75
- set bindLabel(value) {
76
- this._selectionModel.setLabelBinding(value);
77
- }
78
- set bindValue(value) {
79
- this._selectionModel.setValueBinding(value);
80
- }
81
- set bindKey(value) {
82
- this._selectionModel.setKeyBinding(value);
83
- }
84
- set bindDisabled(value) {
85
- this._selectionModel.setDisabledBinding(value);
86
- }
87
- get allowCustomValues() {
88
- return this._allowCustomValues$.value;
89
- }
90
- set allowCustomValues(value) {
91
- this._allowCustomValues$.next(booleanAttribute(value));
92
- }
93
- get showBodyMoreItemsHint() {
94
- return this._showBodyMoreItemsHint$.value;
95
- }
96
- set showBodyMoreItemsHint(value) {
97
- this._showBodyMoreItemsHint$.next(value);
98
- }
99
- get currentFilter() {
100
- return this._currentFilter$.value;
101
- }
102
- get _isOpen() {
103
- return this._animatedOverlay.isMounted;
104
- }
105
- set optionTemplate(value) {
106
- this._optionTemplate$.next(value ?? null);
107
- }
108
- set selectedOptionTemplate(value) {
109
- this._selectedOptionTemplate$.next(value ?? null);
110
- }
111
- set bodyLoadingTemplate(value) {
112
- this._bodyLoadingTemplate$.next(value ?? null);
113
- }
114
- set bodyErrorTemplate(value) {
115
- this._bodyErrorTemplate$.next(value ?? null);
116
- }
117
- set bodyEmptyTemplate(value) {
118
- this._bodyEmptyTemplate$.next(value ?? null);
119
- }
120
- set bodyMoreItemsHintTemplate(value) {
121
- this._bodyMoreItemsHintTemplate$.next(value ?? null);
122
- }
123
- //#endregion
124
- //#region Lifecycle
125
- constructor() {
126
- //#region Injects
127
- this._destroy$ = createDestroy();
128
- this._input = inject(INPUT_TOKEN);
129
- this._selectField = inject(SELECT_FIELD_TOKEN);
130
- this._animatedOverlay = inject(AnimatedOverlayDirective);
131
- this._comboboxConfig = inject(COMBOBOX_CONFIG_TOKEN, { optional: true });
132
- this._themeProvider = inject(THEME_PROVIDER, { optional: true });
133
- this._initialValue$ = new BehaviorSubject(null);
134
- this._filterInternal$ = new BehaviorSubject(false);
135
- this._loading$ = new BehaviorSubject(false);
136
- this.loading$ = this._loading$.asObservable();
137
- this._error$ = new BehaviorSubject(null);
138
- this.error$ = this._error$.asObservable();
139
- this._placeholder$ = new BehaviorSubject(null);
140
- this._allowCustomValues$ = new BehaviorSubject(false);
141
- this._showBodyMoreItemsHint$ = new BehaviorSubject(false);
142
- this.optionComponent = input();
143
- this.optionComponentInputs = input();
144
- this.selectedOptionComponent = input();
145
- this.bodyErrorComponentInputs = input();
146
- this.bodyErrorComponent = input();
147
- this.selectedOptionComponentInputs = input();
148
- this.bodyLoadingComponent = input();
149
- this.bodyLoadingComponentInputs = input();
150
- this.bodyEmptyComponent = input();
151
- this.bodyEmptyComponentInputs = input();
152
- this.bodyMoreItemsHintComponent = input();
153
- this.bodyMoreItemsHintComponentInputs = input();
154
- //#endregion
155
- //#region Outputs
156
- this.filterChange = new EventEmitter();
157
- //#endregion
158
- //#region Members
159
- this._shouldIgnoreNextBlurEvent = false;
160
- this._deletedSearchWithKeyPress = false;
161
- this.selectBodyId$ = new BehaviorSubject(null);
162
- this.activeOptionId$ = new BehaviorSubject(null);
163
- this._currentFilter$ = new BehaviorSubject('');
164
- this.isOpen$ = this._animatedOverlay.isMounted$;
165
- this.isOpen = toSignal(this.isOpen$);
166
- this._selectionModel = new SelectionModel();
167
- this._activeSelectionModel = new ActiveSelectionModel();
168
- this._backspaceKeyPressManager = new KeyPressManager(BACKSPACE);
169
- this.selectedOptions$ = this._selectionModel.selection$;
170
- this.multiple$ = this._selectionModel.allowMultiple$;
171
- this.multipleSignal = toSignal(this.multiple$, { requireSync: true });
172
- this.options$ = this._selectionModel.filteredOptions$;
173
- this.rawOptions$ = this._selectionModel.options$;
174
- this._optionTemplate$ = new BehaviorSubject(null);
175
- this._selectedOptionTemplate$ = new BehaviorSubject(null);
176
- this._bodyLoadingTemplate$ = new BehaviorSubject(null);
177
- this._bodyErrorTemplate$ = new BehaviorSubject(null);
178
- this._bodyEmptyTemplate$ = new BehaviorSubject(null);
179
- this._bodyMoreItemsHintTemplate$ = new BehaviorSubject(null);
180
- this.hostClassBindings = signalHostClasses({
181
- 'et-combobox--loading': toSignal(this._loading$),
182
- 'et-combobox--error': toSignal(this._error$.pipe(map((v) => !!v))),
183
- 'et-combobox--open': toSignal(this.isOpen$),
184
- 'et-select-field--multiple': toSignal(this.multiple$),
185
- 'et-select-field--open': this.isOpen,
186
- });
187
- this.fieldHostClassBindings = signalClasses(this._selectField.elementRef, {
188
- 'et-select-field--open': toSignal(this.isOpen$),
189
- 'et-select-field--multiple': toSignal(this.multiple$),
190
- });
191
- this._comboboxBodyComponent = null;
192
- //#endregion
193
- //#region Computes
194
- this.customOptionTpl$ = this._optionTemplate$.asObservable();
195
- this.customSelectedOptionTpl$ = this._selectedOptionTemplate$.asObservable();
196
- this.customBodyLoadingTpl$ = this._bodyLoadingTemplate$.asObservable();
197
- this.customBodyErrorTpl$ = this._bodyErrorTemplate$.asObservable();
198
- this.customBodyEmptyTpl$ = this._bodyEmptyTemplate$.asObservable();
199
- this.customBodyMoreItemsHintTpl$ = this._bodyMoreItemsHintTemplate$.asObservable();
200
- this.trackByOptionKeyFn = (index, item) => this._selectionModel.getKey(item);
201
- this._selectionModel.setDisabledBinding('disabled');
202
- this._activeSelectionModel.setSelectionModel(this._selectionModel);
203
- this._animatedOverlay.placement = 'bottom';
204
- this._animatedOverlay.fallbackPlacements = ['bottom', 'top'];
205
- this._animatedOverlay.autoResize = true;
206
- this._selectionModel.allowMultiple$
207
- .pipe(takeUntilDestroyed(), tap((allowMultiple) => {
208
- if (allowMultiple) {
209
- this._updateFilter('');
210
- }
211
- }))
212
- .subscribe();
213
- this._input._setEmptyHelper(this._currentFilter$);
214
- }
215
- ngOnInit() {
216
- this._initDispatchFilterChanges();
217
- this._closeBodyOnDisable();
218
- if (isDevMode()) {
219
- this._debugValidateComboboxConfig();
220
- this._debugValidateOptionAndInitialValueSchema();
221
- }
222
- this._selectionModel.setSelectionFromValue$(this._input.value);
223
- this._selectionModel.value$
224
- .pipe(takeUntil(this._destroy$), tap((value) => {
225
- this._input._updateValue(value);
226
- this._setFilterFromInputValue();
227
- }))
228
- .subscribe();
229
- this._input.onExternalUpdate$
230
- .pipe(takeUntil(this._destroy$), tap(() => this._selectionModel.setSelectionFromValue$(this._input.value)))
231
- .subscribe();
232
- }
233
- //#endregion
234
- //#region Public Methods
235
- setBodyComponent(component) {
236
- this._comboboxBodyComponent = component;
237
- }
238
- getOptionLabel(option) {
239
- return this._selectionModel.getLabel$(option);
240
- }
241
- getOptionValue(option) {
242
- return this._selectionModel.getValue$(option);
243
- }
244
- combineSelectedOptionWithComponentInputs(option) {
245
- return {
246
- ...(this.selectedOptionComponentInputs() ?? {}),
247
- option,
248
- };
249
- }
250
- removeSelectedOption(option) {
251
- this._selectionModel.removeSelectedOption(option);
252
- this._input._markAsTouched();
253
- }
254
- open() {
255
- assetComboboxBodyComponentSet(this._comboboxBodyComponent);
256
- if (this._isOpen || this._input.disabled || this._animatedOverlay.isMounting)
257
- return;
258
- const bodyRef = this._animatedOverlay.mount({
259
- component: this._comboboxBodyComponent,
260
- mirrorWidth: true,
261
- themeProvider: this._themeProvider,
262
- });
263
- if (!bodyRef)
264
- return;
265
- this.selectBodyId$.next(bodyRef.id);
266
- bodyRef._options$
267
- .pipe(switchMap((queryList) => combineLatest([
268
- queryList?.changes.pipe(startWith(queryList), map((l) => l.toArray())) ?? of([]),
269
- this._activeSelectionModel.activeOption$,
270
- ])), tap(([options, activeOptionData]) => {
271
- const optionRef = options.find((o) => o.option() === activeOptionData);
272
- if (!optionRef?.elementRef?.nativeElement)
273
- return;
274
- scrollToElement({
275
- behavior: 'instant',
276
- element: optionRef.elementRef.nativeElement,
277
- container: bodyRef._containerElementRef?.nativeElement,
278
- });
279
- this.activeOptionId$.next(optionRef.id);
280
- }), takeUntil(this._destroy$), takeUntil(this._animatedOverlay.afterClosed()))
281
- .subscribe();
282
- this._animatedOverlay
283
- .afterClosed()
284
- .pipe(takeUntil(this._destroy$), tap(() => {
285
- this.selectBodyId$.next(null);
286
- this.activeOptionId$.next(null);
287
- }))
288
- .subscribe();
289
- }
290
- close() {
291
- if (!this._isOpen || this._animatedOverlay.isUnmounting)
292
- return;
293
- this._animatedOverlay.unmount();
294
- }
295
- focus() {
296
- this._input.nativeInputRef?.element.nativeElement.focus();
297
- }
298
- selectInputAndOpen() {
299
- if (this._input.disabled)
300
- return;
301
- this._input.nativeInputRef?.element.nativeElement.select();
302
- this.open();
303
- }
304
- writeValueFromOption(option) {
305
- this._input._markAsTouched();
306
- if (this._selectionModel.allowMultiple) {
307
- this._selectionModel.toggleSelectedOption(option);
308
- }
309
- else {
310
- this._selectionModel.addSelectedOption(option);
311
- }
312
- if (!this._selectionModel.allowMultiple) {
313
- this.close();
314
- this._setFilterFromInputValue();
315
- }
316
- else {
317
- this._updateFilter('');
318
- }
319
- }
320
- clearValue() {
321
- this._selectionModel.clearSelectedOptions();
322
- this._input._markAsTouched();
323
- this._updateFilter('');
324
- }
325
- isOptionSelected(option) {
326
- return this._selectionModel.isSelected$(option);
327
- }
328
- isOptionActive(option) {
329
- return this._activeSelectionModel.isOptionActive$(option);
330
- }
331
- isOptionDisabled(option) {
332
- return this._selectionModel.isDisabled$(option);
333
- }
334
- //#endregion
335
- //#region Private Methods
336
- _ignoreNextBlurEvent() {
337
- this._shouldIgnoreNextBlurEvent = true;
338
- }
339
- _processKeydownEvent(event) {
340
- const keyCode = event.keyCode;
341
- const isOpen = this._isOpen;
342
- const isMultiple = this._selectionModel.allowMultiple;
343
- const canAddCustomValue = this.allowCustomValues;
344
- const value = event.target.value;
345
- const hasFilterValue = !!value;
346
- const selection = this._selectionModel.selection;
347
- const isBackspacePressed = this._backspaceKeyPressManager.isPressed(event);
348
- const result = {};
349
- if (keyCode === ENTER) {
350
- event.preventDefault();
351
- event.stopPropagation();
352
- // The user typed a custom value and pressed enter. Add it to the selected options.
353
- // FIXME: Currently it is impossible to select the active option with the keyboard if canAddCustomValue is true.
354
- // To fix this, the active option should also include the origin it got active from (keyboard or programmatic).
355
- // The "value" changing should put the combobox into a "use the custom input on enter" mode.
356
- // The "active option" changing via keyboard should put the combobox into a "use the active option on enter" mode.
357
- if (canAddCustomValue && hasFilterValue) {
358
- result.optionAction = { type: 'add', option: value };
359
- }
360
- else {
361
- const activeOption = this._activeSelectionModel.activeOption;
362
- if (activeOption) {
363
- if (isMultiple) {
364
- result.optionAction = { type: 'toggle', option: activeOption };
365
- }
366
- else {
367
- result.optionAction = { type: 'add', option: activeOption };
368
- }
369
- }
370
- }
371
- if (isMultiple) {
372
- result.setFilter = '';
373
- }
374
- else {
375
- result.overlayOperation = 'close';
376
- }
377
- return this._interpretKeyHandlerResult(result);
378
- }
379
- if (keyCode === ESCAPE) {
380
- if (isOpen) {
381
- result.overlayOperation = 'close';
382
- event.preventDefault();
383
- event.stopPropagation();
384
- }
385
- else if (!isMultiple) {
386
- if (this.currentFilter) {
387
- event.preventDefault();
388
- event.stopPropagation();
389
- }
390
- result.setFilter = '';
391
- result.optionAction = 'clear';
392
- }
393
- return this._interpretKeyHandlerResult(result);
394
- }
395
- if (keyCode === TAB) {
396
- result.overlayOperation = 'close';
397
- return this._interpretKeyHandlerResult(result);
398
- }
399
- if (keyCode === BACKSPACE) {
400
- if (isBackspacePressed && value) {
401
- this._deletedSearchWithKeyPress = true;
402
- }
403
- if (!hasFilterValue && isMultiple && selection.length && !this._deletedSearchWithKeyPress) {
404
- result.optionAction = { type: 'remove', option: selection[selection.length - 1] };
405
- return this._interpretKeyHandlerResult(result);
406
- }
407
- if (!isBackspacePressed) {
408
- this._deletedSearchWithKeyPress = false;
409
- }
410
- }
411
- else {
412
- this._deletedSearchWithKeyPress = false;
413
- }
414
- if (!isOpen) {
415
- result.overlayOperation = 'open';
416
- }
417
- this._activeSelectionModel.evaluateKeyboardEvent(event);
418
- if (keyCode === A && event.ctrlKey && isMultiple) {
419
- result.optionAction = 'toggleAll';
420
- event.preventDefault();
421
- }
422
- return this._interpretKeyHandlerResult(result);
423
- }
424
- _processKeyupEvent() {
425
- this._backspaceKeyPressManager.clear();
426
- }
427
- _processInputEvent(event) {
428
- const value = event.target.value;
429
- this._updateFilter(value);
430
- }
431
- _handleBlurEvent() {
432
- if (this._shouldIgnoreNextBlurEvent) {
433
- this._shouldIgnoreNextBlurEvent = false;
434
- return;
435
- }
436
- this._input._markAsTouched();
437
- this._input._setShouldDisplayError(true);
438
- if (this._selectionModel.allowMultiple) {
439
- this._updateFilter('');
440
- return;
441
- }
442
- if (this.currentFilter === '') {
443
- this._selectionModel.clearSelectedOptions();
444
- return;
445
- }
446
- this._setFilterFromInputValue();
447
- }
448
- _updateFilter(value) {
449
- if (this._input.nativeInputRef && this._input.nativeInputRef.element.nativeElement.value !== value) {
450
- this._input.nativeInputRef.element.nativeElement.value = value;
451
- }
452
- if (this.currentFilter === value)
453
- return;
454
- this._currentFilter$.next(value);
455
- if (this.filterInternal) {
456
- this._selectionModel.setFilter(value);
457
- }
458
- }
459
- _setFilterFromInputValue() {
460
- if (this._selectionModel.allowMultiple)
461
- return;
462
- const value = this._input.value;
463
- if (!value || Array.isArray(value)) {
464
- this._updateFilter('');
465
- return;
466
- }
467
- const option = this._selectionModel.getOptionByValue(value);
468
- if (!option)
469
- return;
470
- const label = this._selectionModel.getLabel(option);
471
- if (typeof label !== 'string')
472
- return;
473
- this._updateFilter(label);
474
- }
475
- _interpretKeyHandlerResult(result) {
476
- if (result.overlayOperation === 'close') {
477
- this.close();
478
- }
479
- else if (result.overlayOperation === 'open') {
480
- this.open();
481
- }
482
- if (result.setFilter !== undefined) {
483
- this._updateFilter(result.setFilter);
484
- }
485
- if (result.optionAction) {
486
- if (typeof result.optionAction === 'string') {
487
- if (result.optionAction === 'clear') {
488
- this._selectionModel.clearSelectedOptions();
489
- }
490
- else if (result.optionAction === 'toggleAll') {
491
- this._selectionModel.toggleAllSelectedOptions();
492
- }
493
- }
494
- else {
495
- const { type, option } = result.optionAction;
496
- if (this._selectionModel.isDisabled(option))
497
- return;
498
- if (type === 'add') {
499
- this._selectionModel.addSelectedOption(option);
500
- }
501
- if (type === 'remove') {
502
- this._selectionModel.removeSelectedOption(option);
503
- }
504
- if (type === 'toggle') {
505
- this._selectionModel.toggleSelectedOption(option);
506
- }
507
- }
508
- }
509
- }
510
- _initDispatchFilterChanges() {
511
- this._currentFilter$
512
- .pipe(skipWhile(() => this.filterInternal), debounceTime(300), distinctUntilChanged(), takeUntil(this._destroy$), tap((v) => this.filterChange.emit(v)))
513
- .subscribe();
514
- }
515
- _closeBodyOnDisable() {
516
- this._input.disabled$
517
- .pipe(tap((disabled) => {
518
- if (!disabled)
519
- return;
520
- this.close();
521
- }), takeUntil(this._destroy$))
522
- .subscribe();
523
- }
524
- //#endregion
525
- //#region Dev mode
526
- _debugValidateComboboxConfig(isRetry = false) {
527
- combineLatest([this._selectionModel.labelBinding$, this._selectionModel.valueBinding$, this._allowCustomValues$])
528
- .pipe(skip(isRetry ? 1 : 0), // Skip if retrying to avoid infinite loop
529
- debounceTime(0), takeUntil(this._destroy$), map(([bindLabel, bindValue, allowCustomValues]) => {
530
- const shouldBeObjects = bindLabel && bindValue && !allowCustomValues;
531
- if (shouldBeObjects) {
532
- return ComboboxOptionType.Object;
533
- }
534
- return ComboboxOptionType.Primitive;
535
- }), tap((expectedOptionType) => {
536
- const options = this._selectionModel.options;
537
- if (isEmptyArray(options)) {
538
- return;
539
- }
540
- if (expectedOptionType === ComboboxOptionType.Object) {
541
- if (!isObjectArray(options)) {
542
- throw comboboxError('options_object_mismatch', true, options);
543
- }
544
- }
545
- else if (expectedOptionType === ComboboxOptionType.Primitive) {
546
- if (!isPrimitiveArray(options)) {
547
- throw comboboxError('options_primitive_mismatch', true, options);
548
- }
549
- }
550
- }), catchError((e) => {
551
- this._debugValidateComboboxConfig(true);
552
- return throwError(() => e);
553
- }))
554
- .subscribe();
555
- }
556
- _debugValidateOptionAndInitialValueSchema(isRetry = false) {
557
- combineLatest([this.options$, this._initialValue$])
558
- .pipe(skip(isRetry ? 1 : 0), // Skip if retrying to avoid infinite loop
559
- takeUntil(this._destroy$), tap(([options, initialValue]) => {
560
- if (initialValue === null || initialValue === undefined)
561
- return;
562
- if (!this.multiple)
563
- return;
564
- const isPrimitive = isPrimitiveArray(options);
565
- const initialValueIsPrimitive = this.multiple
566
- ? isPrimitiveArray(initialValue)
567
- : typeof initialValue !== 'object';
568
- if (isPrimitive) {
569
- if (!initialValueIsPrimitive) {
570
- throw comboboxError('init_val_primitive_mismatch', true, { initialValue, options });
571
- }
572
- }
573
- else {
574
- if (initialValueIsPrimitive) {
575
- throw comboboxError('init_val_object_mismatch', true, { initialValue, options });
576
- }
577
- }
578
- }), catchError((e) => {
579
- this._debugValidateOptionAndInitialValueSchema(true);
580
- return throwError(() => e);
581
- }))
582
- .subscribe();
583
- }
584
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ComboboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
585
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.12", type: ComboboxDirective, isStandalone: true, inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: false, isRequired: true, transformFunction: null }, initialValue: { classPropertyName: "initialValue", publicName: "initialValue", isSignal: false, isRequired: false, transformFunction: null }, filterInternal: { classPropertyName: "filterInternal", publicName: "filterInternal", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: false, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: false, isRequired: false, transformFunction: null }, bodyEmptyText: { classPropertyName: "bodyEmptyText", publicName: "bodyEmptyText", isSignal: false, isRequired: false, transformFunction: null }, bodyMoreItemsHintText: { classPropertyName: "bodyMoreItemsHintText", publicName: "bodyMoreItemsHintText", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: false, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: false, isRequired: false, transformFunction: null }, bindKey: { classPropertyName: "bindKey", publicName: "bindKey", isSignal: false, isRequired: false, transformFunction: null }, bindDisabled: { classPropertyName: "bindDisabled", publicName: "bindDisabled", isSignal: false, isRequired: false, transformFunction: null }, allowCustomValues: { classPropertyName: "allowCustomValues", publicName: "allowCustomValues", isSignal: false, isRequired: false, transformFunction: null }, showBodyMoreItemsHint: { classPropertyName: "showBodyMoreItemsHint", publicName: "showBodyMoreItemsHint", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, optionComponent: { classPropertyName: "optionComponent", publicName: "optionComponent", isSignal: true, isRequired: false, transformFunction: null }, optionComponentInputs: { classPropertyName: "optionComponentInputs", publicName: "optionComponentInputs", isSignal: true, isRequired: false, transformFunction: null }, selectedOptionComponent: { classPropertyName: "selectedOptionComponent", publicName: "selectedOptionComponent", isSignal: true, isRequired: false, transformFunction: null }, bodyErrorComponentInputs: { classPropertyName: "bodyErrorComponentInputs", publicName: "bodyErrorComponentInputs", isSignal: true, isRequired: false, transformFunction: null }, bodyErrorComponent: { classPropertyName: "bodyErrorComponent", publicName: "bodyErrorComponent", isSignal: true, isRequired: false, transformFunction: null }, selectedOptionComponentInputs: { classPropertyName: "selectedOptionComponentInputs", publicName: "selectedOptionComponentInputs", isSignal: true, isRequired: false, transformFunction: null }, bodyLoadingComponent: { classPropertyName: "bodyLoadingComponent", publicName: "bodyLoadingComponent", isSignal: true, isRequired: false, transformFunction: null }, bodyLoadingComponentInputs: { classPropertyName: "bodyLoadingComponentInputs", publicName: "bodyLoadingComponentInputs", isSignal: true, isRequired: false, transformFunction: null }, bodyEmptyComponent: { classPropertyName: "bodyEmptyComponent", publicName: "bodyEmptyComponent", isSignal: true, isRequired: false, transformFunction: null }, bodyEmptyComponentInputs: { classPropertyName: "bodyEmptyComponentInputs", publicName: "bodyEmptyComponentInputs", isSignal: true, isRequired: false, transformFunction: null }, bodyMoreItemsHintComponent: { classPropertyName: "bodyMoreItemsHintComponent", publicName: "bodyMoreItemsHintComponent", isSignal: true, isRequired: false, transformFunction: null }, bodyMoreItemsHintComponentInputs: { classPropertyName: "bodyMoreItemsHintComponentInputs", publicName: "bodyMoreItemsHintComponentInputs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterChange: "filterChange" }, providers: [
586
- {
587
- provide: COMBOBOX_TOKEN,
588
- useExisting: ComboboxDirective,
589
- },
590
- ], queries: [{ propertyName: "optionTemplate", first: true, predicate: COMBOBOX_OPTION_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "selectedOptionTemplate", first: true, predicate: COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "bodyLoadingTemplate", first: true, predicate: COMBOBOX_BODY_LOADING_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "bodyErrorTemplate", first: true, predicate: COMBOBOX_BODY_ERROR_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "bodyEmptyTemplate", first: true, predicate: COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "bodyMoreItemsHintTemplate", first: true, predicate: COMBOBOX_BODY_MORE_ITEMS_HINT_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }], ngImport: i0 }); }
591
- }
592
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ComboboxDirective, decorators: [{
593
- type: Directive,
594
- args: [{
595
- standalone: true,
596
- providers: [
597
- {
598
- provide: COMBOBOX_TOKEN,
599
- useExisting: ComboboxDirective,
600
- },
601
- ],
602
- }]
603
- }], ctorParameters: () => [], propDecorators: { options: [{
604
- type: Input,
605
- args: [{ required: true }]
606
- }], initialValue: [{
607
- type: Input
608
- }], filterInternal: [{
609
- type: Input
610
- }], loading: [{
611
- type: Input
612
- }], error: [{
613
- type: Input
614
- }], emptyText: [{
615
- type: Input
616
- }], bodyEmptyText: [{
617
- type: Input
618
- }], bodyMoreItemsHintText: [{
619
- type: Input
620
- }], placeholder: [{
621
- type: Input
622
- }], multiple: [{
623
- type: Input
624
- }], bindLabel: [{
625
- type: Input
626
- }], bindValue: [{
627
- type: Input
628
- }], bindKey: [{
629
- type: Input
630
- }], bindDisabled: [{
631
- type: Input
632
- }], allowCustomValues: [{
633
- type: Input
634
- }], showBodyMoreItemsHint: [{
635
- type: Input,
636
- args: [{ transform: booleanAttribute }]
637
- }], filterChange: [{
638
- type: Output
639
- }], optionTemplate: [{
640
- type: ContentChild,
641
- args: [COMBOBOX_OPTION_TEMPLATE_TOKEN, { read: TemplateRef }]
642
- }], selectedOptionTemplate: [{
643
- type: ContentChild,
644
- args: [COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN, { read: TemplateRef }]
645
- }], bodyLoadingTemplate: [{
646
- type: ContentChild,
647
- args: [COMBOBOX_BODY_LOADING_TEMPLATE_TOKEN, { read: TemplateRef }]
648
- }], bodyErrorTemplate: [{
649
- type: ContentChild,
650
- args: [COMBOBOX_BODY_ERROR_TEMPLATE_TOKEN, { read: TemplateRef }]
651
- }], bodyEmptyTemplate: [{
652
- type: ContentChild,
653
- args: [COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN, { read: TemplateRef }]
654
- }], bodyMoreItemsHintTemplate: [{
655
- type: ContentChild,
656
- args: [COMBOBOX_BODY_MORE_ITEMS_HINT_TEMPLATE_TOKEN, { read: TemplateRef }]
657
- }] } });
658
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvZGlyZWN0aXZlcy9jb21ib2JveC9jb21ib2JveC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFFVCxZQUFZLEVBQ1osY0FBYyxFQUNkLEtBQUssRUFHTCxNQUFNLEVBQ04sV0FBVyxFQUVYLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUNMLG9CQUFvQixFQUVwQix3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLGNBQWMsRUFHZCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGFBQWEsRUFDYixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxFQUFFLEVBQ0YsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0gsVUFBVSxHQUNYLE1BQU0sTUFBTSxDQUFD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Q0FBa0MsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBT25FLHlCQUF5QjtzQkFENUIsWUFBWTt1QkFBQyw0Q0FBNEMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBLCBCQUNLU1BBQ0UsIEVOVEVSLCBFU0NBUEUsIFRBQiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBJbnB1dFNpZ25hbCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIGlzRGV2TW9kZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWN0aXZlU2VsZWN0aW9uTW9kZWwsXG4gIEFuaW1hdGVkT3ZlcmxheUNvbXBvbmVudEJhc2UsXG4gIEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSxcbiAgS2V5UHJlc3NNYW5hZ2VyLFxuICBTZWxlY3Rpb25Nb2RlbCxcbiAgU2VsZWN0aW9uTW9kZWxCaW5kaW5nLFxuICBUeXBlZFF1ZXJ5TGlzdCxcbiAgY3JlYXRlRGVzdHJveSxcbiAgaXNFbXB0eUFycmF5LFxuICBpc09iamVjdEFycmF5LFxuICBpc1ByaW1pdGl2ZUFycmF5LFxuICBzY3JvbGxUb0VsZW1lbnQsXG4gIHNpZ25hbENsYXNzZXMsXG4gIHNpZ25hbEhvc3RDbGFzc2VzLFxufSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IFRIRU1FX1BST1ZJREVSIH0gZnJvbSAnQGV0aGxldGUvdGhlbWluZyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNhdGNoRXJyb3IsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgb2YsXG4gIHNraXAsXG4gIHNraXBXaGlsZSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxuICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElOUFVUX1RPS0VOLCBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvaW5wdXQnO1xuaW1wb3J0IHsgU0VMRUNUX0ZJRUxEX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy9zZWxlY3QtZmllbGQnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQ09ORklHX1RPS0VOLCBDT01CT0JPWF9ERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBDb21ib2JveEtleUhhbmRsZXJSZXN1bHQsXG4gIENvbWJvYm94T3B0aW9uVHlwZSxcbiAgQ29tcG9uZW50V2l0aEVycm9yLFxuICBDb21wb25lbnRXaXRoT3B0aW9uLFxuICBUZW1wbGF0ZVJlZldpdGhFcnJvcixcbiAgVGVtcGxhdGVSZWZXaXRoT3B0aW9uLFxuICBhc3NldENvbWJvYm94Qm9keUNvbXBvbmVudFNldCxcbiAgY29tYm9ib3hFcnJvcixcbn0gZnJvbSAnLi4vLi4vcHJpdmF0ZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9CT0RZX0VNUFRZX1RFTVBMQVRFX1RPS0VOIH0gZnJvbSAnLi4vY29tYm9ib3gtYm9keS1lbXB0eS10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9CT0RZX0VSUk9SX1RFTVBMQVRFX1RPS0VOIH0gZnJvbSAnLi4vY29tYm9ib3gtYm9keS1lcnJvci10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9CT0RZX0xPQURJTkdfVEVNUExBVEVfVE9LRU4gfSBmcm9tICcuLi9jb21ib2JveC1ib2R5LWxvYWRpbmctdGVtcGxhdGUnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQk9EWV9NT1JFX0lURU1TX0hJTlRfVEVNUExBVEVfVE9LRU4gfSBmcm9tICcuLi9jb21ib2JveC1ib2R5LW1vcmUtaXRlbXMtaGludC10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9PUFRJT05fVEVNUExBVEVfVE9LRU4gfSBmcm9tICcuLi9jb21ib2JveC1vcHRpb24tdGVtcGxhdGUnO1xuaW1wb3J0IHsgQ09NQk9CT1hfU0VMRUNURURfT1BUSU9OX1RFTVBMQVRFX1RPS0VOIH0gZnJvbSAnLi4vY29tYm9ib3gtc2VsZWN0ZWQtb3B0aW9uLXRlbXBsYXRlJztcblxuZXhwb3J0IGNvbnN0IENPTUJPQk9YX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPENvbWJvYm94RGlyZWN0aXZlPignRVRfQ09NQk9CT1hfSU5QVVRfVE9LRU4nKTtcblxuZXhwb3J0IHR5cGUgQWJzdHJhY3RDb21ib2JveEJvZHkgPSBBbmltYXRlZE92ZXJsYXlDb21wb25lbnRCYXNlICYge1xuICBfb3B0aW9ucyQ6IEJlaGF2aW9yU3ViamVjdDxUeXBlZFF1ZXJ5TGlzdDxBYnN0cmFjdENvbWJvYm94T3B0aW9uPiB8IG51bGw+O1xuICBfY29udGFpbmVyRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQ7XG4gIGlkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBYnN0cmFjdENvbWJvYm94T3B0aW9uID0ge1xuICBvcHRpb246IElucHV0U2lnbmFsPHVua25vd24+O1xuICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgaWQ6IHN0cmluZztcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDT01CT0JPWF9UT0tFTixcbiAgICAgIHVzZUV4aXN0aW5nOiBDb21ib2JveERpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vI3JlZ2lvbiBJbmplY3RzXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIHJlYWRvbmx5IF9pbnB1dCA9IGluamVjdDxJbnB1dERpcmVjdGl2ZTx1bmtub3duLCBIVE1MSW5wdXRFbGVtZW50Pj4oSU5QVVRfVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RGaWVsZCA9IGluamVjdChTRUxFQ1RfRklFTERfVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbmltYXRlZE92ZXJsYXkgPSBpbmplY3Q8QW5pbWF0ZWRPdmVybGF5RGlyZWN0aXZlPEFic3RyYWN0Q29tYm9ib3hCb2R5Pj4oQW5pbWF0ZWRPdmVybGF5RGlyZWN0aXZlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29tYm9ib3hDb25maWcgPSBpbmplY3QoQ09NQk9CT1hfQ09ORklHX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aGVtZVByb3ZpZGVyID0gaW5qZWN0KFRIRU1FX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8vI3JlZ2lvbiBJbnB1dHNcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0RmlsdGVyZWRPcHRpb25zKCk7XG4gIH1cbiAgc2V0IG9wdGlvbnModmFsdWU6IHVua25vd25bXSkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldE9wdGlvbnModmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGluaXRpYWxWYWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGlvbih2YWx1ZSk7XG4gICAgdGhpcy5faW5pdGlhbFZhbHVlJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9pbml0aWFsVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPihudWxsKTtcblxuICBASW5wdXQoKVxuICBnZXQgZmlsdGVySW50ZXJuYWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckludGVybmFsJC52YWx1ZTtcbiAgfVxuICBzZXQgZmlsdGVySW50ZXJuYWwodmFsdWU6IHVua25vd24pIHtcbiAgICBjb25zdCB2YWwgPSBib29sZWFuQXR0cmlidXRlKHZhbHVlKTtcbiAgICB0aGlzLl9maWx0ZXJJbnRlcm5hbCQubmV4dCh2YWwpO1xuXG4gICAgaWYgKCF2YWwpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldEZpbHRlcignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldEZpbHRlcih0aGlzLmN1cnJlbnRGaWx0ZXIpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9maWx0ZXJJbnRlcm5hbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQudmFsdWU7XG4gIH1cbiAgc2V0IGxvYWRpbmcodmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKTtcbiAgfVxuICBwcml2YXRlIF9sb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICByZWFkb25seSBsb2FkaW5nJCA9IHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBlcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3IkLnZhbHVlO1xuICB9XG4gIHNldCBlcnJvcih2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2Vycm9yJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9lcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHVua25vd24+KG51bGwpO1xuICByZWFkb25seSBlcnJvciQgPSB0aGlzLl9lcnJvciQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYm9keUVtcHR5VGV4dGAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LlxuICAgKi9cbiAgQElucHV0KClcbiAgZW1wdHlUZXh0Pzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGJvZHlFbXB0eVRleHQ/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgYm9keU1vcmVJdGVtc0hpbnRUZXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUbyBiZSByZW1vdmVkIGluIHY1LlxuICAgKi9cbiAgZ2V0IF90ZW1wRW1wdHlUZXh0KCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmVtcHR5VGV4dCA/P1xuICAgICAgdGhpcy5ib2R5RW1wdHlUZXh0ID8/XG4gICAgICB0aGlzLl9jb21ib2JveENvbmZpZz8uYm9keUVtcHR5VGV4dCA/P1xuICAgICAgdGhpcy5fY29tYm9ib3hDb25maWc/LmVtcHR5VGV4dCA/P1xuICAgICAgQ09NQk9CT1hfREVGQVVMVF9DT05GSUcuYm9keUVtcHR5VGV4dFxuICAgICk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyJC52YWx1ZTtcbiAgfVxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBASW5wdXQoKVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRBbGxvd011bHRpcGxlKGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBiaW5kTGFiZWwodmFsdWU6IFNlbGVjdGlvbk1vZGVsQmluZGluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRMYWJlbEJpbmRpbmcodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGJpbmRWYWx1ZSh2YWx1ZTogU2VsZWN0aW9uTW9kZWxCaW5kaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldFZhbHVlQmluZGluZyh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgYmluZEtleSh2YWx1ZTogU2VsZWN0aW9uTW9kZWxCaW5kaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldEtleUJpbmRpbmcodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGJpbmREaXNhYmxlZCh2YWx1ZTogU2VsZWN0aW9uTW9kZWxCaW5kaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldERpc2FibGVkQmluZGluZyh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgYWxsb3dDdXN0b21WYWx1ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93Q3VzdG9tVmFsdWVzJC52YWx1ZTtcbiAgfVxuICBzZXQgYWxsb3dDdXN0b21WYWx1ZXModmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9hbGxvd0N1c3RvbVZhbHVlcyQubmV4dChib29sZWFuQXR0cmlidXRlKHZhbHVlKSk7XG4gIH1cbiAgcHJpdmF0ZSBfYWxsb3dDdXN0b21WYWx1ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGdldCBzaG93Qm9keU1vcmVJdGVtc0hpbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dCb2R5TW9yZUl0ZW1zSGludCQudmFsdWU7XG4gIH1cbiAgc2V0IHNob3dCb2R5TW9yZUl0ZW1zSGludCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dCb2R5TW9yZUl0ZW1zSGludCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfc2hvd0JvZHlNb3JlSXRlbXNIaW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIG9wdGlvbkNvbXBvbmVudCA9IGlucHV0PENvbXBvbmVudFdpdGhPcHRpb24gfCBudWxsPigpO1xuICBvcHRpb25Db21wb25lbnRJbnB1dHMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cbiAgc2VsZWN0ZWRPcHRpb25Db21wb25lbnQgPSBpbnB1dDxDb21wb25lbnRXaXRoT3B0aW9uIHwgbnVsbD4oKTtcbiAgYm9keUVycm9yQ29tcG9uZW50SW5wdXRzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuXG4gIGJvZHlFcnJvckNvbXBvbmVudCA9IGlucHV0PENvbXBvbmVudFdpdGhFcnJvciB8IG51bGw+KCk7XG4gIHNlbGVjdGVkT3B0aW9uQ29tcG9uZW50SW5wdXRzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuXG4gIGJvZHlMb2FkaW5nQ29tcG9uZW50ID0gaW5wdXQ8Q29tcG9uZW50VHlwZTx1bmtub3duPiB8IG51bGw+KCk7XG4gIGJvZHlMb2FkaW5nQ29tcG9uZW50SW5wdXRzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuXG4gIGJvZHlFbXB0eUNvbXBvbmVudCA9IGlucHV0PENvbXBvbmVudFR5cGU8dW5rbm93bj4gfCBudWxsPigpO1xuICBib2R5RW1wdHlDb21wb25lbnRJbnB1dHMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cbiAgYm9keU1vcmVJdGVtc0hpbnRDb21wb25lbnQgPSBpbnB1dDxDb21wb25lbnRUeXBlPHVua25vd24+IHwgbnVsbD4oKTtcbiAgYm9keU1vcmVJdGVtc0hpbnRDb21wb25lbnRJbnB1dHMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIE91dHB1dHNcblxuICBAT3V0cHV0KClcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBNZW1iZXJzXG5cbiAgcHJpdmF0ZSBfc2hvdWxkSWdub3JlTmV4dEJsdXJFdmVudCA9IGZhbHNlO1xuICBwcml2YXRlIF9kZWxldGVkU2VhcmNoV2l0aEtleVByZXNzID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgc2VsZWN0Qm9keUlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGFjdGl2ZU9wdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgZ2V0IGN1cnJlbnRGaWx0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRGaWx0ZXIkLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRGaWx0ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBwcml2YXRlIGdldCBfaXNPcGVuKCkge1xuICAgIHJldHVybiB0aGlzLl9hbmltYXRlZE92ZXJsYXkuaXNNb3VudGVkO1xuICB9XG4gIHJlYWRvbmx5IGlzT3BlbiQgPSB0aGlzLl9hbmltYXRlZE92ZXJsYXkuaXNNb3VudGVkJDtcbiAgcmVhZG9ubHkgaXNPcGVuID0gdG9TaWduYWwodGhpcy5pc09wZW4kKTtcblxuICByZWFkb25seSBfc2VsZWN0aW9uTW9kZWwgPSBuZXcgU2VsZWN0aW9uTW9kZWwoKTtcbiAgcmVhZG9ubHkgX2FjdGl2ZVNlbGVjdGlvbk1vZGVsID0gbmV3IEFjdGl2ZVNlbGVjdGlvbk1vZGVsKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JhY2tzcGFjZUtleVByZXNzTWFuYWdlciA9IG5ldyBLZXlQcmVzc01hbmFnZXIoQkFDS1NQQUNFKTtcblxuICByZWFkb25seSBzZWxlY3RlZE9wdGlvbnMkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uJDtcbiAgcmVhZG9ubHkgbXVsdGlwbGUkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZSQ7XG4gIHJlYWRvbmx5IG11bHRpcGxlU2lnbmFsID0gdG9TaWduYWwodGhpcy5tdWx0aXBsZSQsIHsgcmVxdWlyZVN5bmM6IHRydWUgfSk7XG4gIHJlYWRvbmx5IG9wdGlvbnMkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZmlsdGVyZWRPcHRpb25zJDtcbiAgcmVhZG9ubHkgcmF3T3B0aW9ucyQgPSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5vcHRpb25zJDtcblxuICBAQ29udGVudENoaWxkKENPTUJPQk9YX09QVElPTl9URU1QTEFURV9UT0tFTiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZXQgb3B0aW9uVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmV2l0aE9wdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX29wdGlvblRlbXBsYXRlJC5uZXh0KHZhbHVlID8/IG51bGwpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvblRlbXBsYXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWZXaXRoT3B0aW9uIHwgbnVsbD4obnVsbCk7XG5cbiAgQENvbnRlbnRDaGlsZChDT01CT0JPWF9TRUxFQ1RFRF9PUFRJT05fVEVNUExBVEVfVE9LRU4sIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgc2V0IHNlbGVjdGVkT3B0aW9uVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmV2l0aE9wdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3NlbGVjdGVkT3B0aW9uVGVtcGxhdGUkLm5leHQodmFsdWUgPz8gbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRPcHRpb25UZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmV2l0aE9wdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIEBDb250ZW50Q2hpbGQoQ09NQk9CT1hfQk9EWV9MT0FESU5HX1RFTVBMQVRFX1RPS0VOLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHNldCBib2R5TG9hZGluZ1RlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2JvZHlMb2FkaW5nVGVtcGxhdGUkLm5leHQodmFsdWUgPz8gbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYm9keUxvYWRpbmdUZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbD4obnVsbCk7XG5cbiAgQENvbnRlbnRDaGlsZChDT01CT0JPWF9CT0RZX0VSUk9SX1RFTVBMQVRFX1RPS0VOLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHNldCBib2R5RXJyb3JUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWZXaXRoRXJyb3IgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ib2R5RXJyb3JUZW1wbGF0ZSQubmV4dCh2YWx1ZSA/PyBudWxsKTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9ib2R5RXJyb3JUZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmV2l0aEVycm9yIHwgbnVsbD4obnVsbCk7XG5cbiAgQENvbnRlbnRDaGlsZChDT01CT0JPWF9CT0RZX0VNUFRZX1RFTVBMQVRFX1RPS0VOLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHNldCBib2R5RW1wdHlUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ib2R5RW1wdHlUZW1wbGF0ZSQubmV4dCh2YWx1ZSA/PyBudWxsKTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9ib2R5RW1wdHlUZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbD4obnVsbCk7XG5cbiAgQENvbnRlbnRDaGlsZChDT01CT0JPWF9CT0RZX01PUkVfSVRFTVNfSElOVF9URU1QTEFURV9UT0tFTiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZXQgYm9keU1vcmVJdGVtc0hpbnRUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ib2R5TW9yZUl0ZW1zSGludFRlbXBsYXRlJC5uZXh0KHZhbHVlID8/IG51bGwpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JvZHlNb3JlSXRlbXNIaW50VGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGhvc3RDbGFzc0JpbmRpbmdzID0gc2lnbmFsSG9zdENsYXNzZXMoe1xuICAgICdldC1jb21ib2JveC0tbG9hZGluZyc6IHRvU2lnbmFsKHRoaXMuX2xvYWRpbmckKSxcbiAgICAnZXQtY29tYm9ib3gtLWVycm9yJzogdG9TaWduYWwodGhpcy5fZXJyb3IkLnBpcGUobWFwKCh2KSA9PiAhIXYpKSksXG4gICAgJ2V0LWNvbWJvYm94LS1vcGVuJzogdG9TaWduYWwodGhpcy5pc09wZW4kKSxcbiAgICAnZXQtc2VsZWN0LWZpZWxkLS1tdWx0aXBsZSc6IHRvU2lnbmFsKHRoaXMubXVsdGlwbGUkKSxcbiAgICAnZXQtc2VsZWN0LWZpZWxkLS1vcGVuJzogdGhpcy5pc09wZW4sXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGZpZWxkSG9zdENsYXNzQmluZGluZ3MgPSBzaWduYWxDbGFzc2VzKHRoaXMuX3NlbGVjdEZpZWxkLmVsZW1lbnRSZWYsIHtcbiAgICAnZXQtc2VsZWN0LWZpZWxkLS1vcGVuJzogdG9TaWduYWwodGhpcy5pc09wZW4kKSxcbiAgICAnZXQtc2VsZWN0LWZpZWxkLS1tdWx0aXBsZSc6IHRvU2lnbmFsKHRoaXMubXVsdGlwbGUkKSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfY29tYm9ib3hCb2R5Q29tcG9uZW50OiBDb21wb25lbnRUeXBlPEFic3RyYWN0Q29tYm9ib3hCb2R5PiB8IG51bGwgPSBudWxsO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBDb21wdXRlc1xuXG4gIHJlYWRvbmx5IGN1c3RvbU9wdGlvblRwbCQgPSB0aGlzLl9vcHRpb25UZW1wbGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGN1c3RvbVNlbGVjdGVkT3B0aW9uVHBsJCA9IHRoaXMuX3NlbGVjdGVkT3B0aW9uVGVtcGxhdGUkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjdXN0b21Cb2R5TG9hZGluZ1RwbCQgPSB0aGlzLl9ib2R5TG9hZGluZ1RlbXBsYXRlJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tQm9keUVycm9yVHBsJCA9IHRoaXMuX2JvZHlFcnJvclRlbXBsYXRlJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tQm9keUVtcHR5VHBsJCA9IHRoaXMuX2JvZHlFbXB0eVRlbXBsYXRlJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tQm9keU1vcmVJdGVtc0hpbnRUcGwkID0gdGhpcy5fYm9keU1vcmVJdGVtc0hpbnRUZW1wbGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIExpZmVjeWNsZVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldERpc2FibGVkQmluZGluZygnZGlzYWJsZWQnKTtcblxuICAgIHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGlvbk1vZGVsKHRoaXMuX3NlbGVjdGlvbk1vZGVsKTtcblxuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5wbGFjZW1lbnQgPSAnYm90dG9tJztcbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXkuZmFsbGJhY2tQbGFjZW1lbnRzID0gWydib3R0b20nLCAndG9wJ107XG4gICAgdGhpcy5fYW5pbWF0ZWRPdmVybGF5LmF1dG9SZXNpemUgPSB0cnVlO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgdGFwKChhbGxvd011bHRpcGxlKSA9PiB7XG4gICAgICAgICAgaWYgKGFsbG93TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcignJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2lucHV0Ll9zZXRFbXB0eUhlbHBlcih0aGlzLl9jdXJyZW50RmlsdGVyJCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0RGlzcGF0Y2hGaWx0ZXJDaGFuZ2VzKCk7XG4gICAgdGhpcy5fY2xvc2VCb2R5T25EaXNhYmxlKCk7XG5cbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIHRoaXMuX2RlYnVnVmFsaWRhdGVDb21ib2JveENvbmZpZygpO1xuICAgICAgdGhpcy5fZGVidWdWYWxpZGF0ZU9wdGlvbkFuZEluaXRpYWxWYWx1ZVNjaGVtYSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGlvbkZyb21WYWx1ZSQodGhpcy5faW5wdXQudmFsdWUpO1xuXG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudmFsdWUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5fc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9pbnB1dC5vbkV4dGVybmFsVXBkYXRlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3Rpb25Gcm9tVmFsdWUkKHRoaXMuX2lucHV0LnZhbHVlKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICBzZXRCb2R5Q29tcG9uZW50KGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxBYnN0cmFjdENvbWJvYm94Qm9keT4pIHtcbiAgICB0aGlzLl9jb21ib2JveEJvZHlDb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICBnZXRPcHRpb25MYWJlbChvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0TGFiZWwkKG9wdGlvbik7XG4gIH1cblxuICBnZXRPcHRpb25WYWx1ZShvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0VmFsdWUkKG9wdGlvbik7XG4gIH1cblxuICBjb21iaW5lU2VsZWN0ZWRPcHRpb25XaXRoQ29tcG9uZW50SW5wdXRzKG9wdGlvbjogdW5rbm93bikge1xuICAgIHJldHVybiB7XG4gICAgICAuLi4odGhpcy5zZWxlY3RlZE9wdGlvbkNvbXBvbmVudElucHV0cygpID8/IHt9KSxcbiAgICAgIG9wdGlvbixcbiAgICB9O1xuICB9XG5cbiAgcmVtb3ZlU2VsZWN0ZWRPcHRpb24ob3B0aW9uOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwucmVtb3ZlU2VsZWN0ZWRPcHRpb24ob3B0aW9uKTtcblxuICAgIHRoaXMuX2lucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG4gIH1cblxuICBvcGVuKCkge1xuICAgIGFzc2V0Q29tYm9ib3hCb2R5Q29tcG9uZW50U2V0KHRoaXMuX2NvbWJvYm94Qm9keUNvbXBvbmVudCk7XG5cbiAgICBpZiAodGhpcy5faXNPcGVuIHx8IHRoaXMuX2lucHV0LmRpc2FibGVkIHx8IHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc01vdW50aW5nKSByZXR1cm47XG5cbiAgICBjb25zdCBib2R5UmVmID0gdGhpcy5fYW5pbWF0ZWRPdmVybGF5Lm1vdW50KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcy5fY29tYm9ib3hCb2R5Q29tcG9uZW50LFxuICAgICAgbWlycm9yV2lkdGg6IHRydWUsXG4gICAgICB0aGVtZVByb3ZpZGVyOiB0aGlzLl90aGVtZVByb3ZpZGVyLFxuICAgIH0pO1xuXG4gICAgaWYgKCFib2R5UmVmKSByZXR1cm47XG5cbiAgICB0aGlzLnNlbGVjdEJvZHlJZCQubmV4dChib2R5UmVmLmlkKTtcblxuICAgIGJvZHlSZWYuX29wdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChxdWVyeUxpc3QpID0+XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICBxdWVyeUxpc3Q/LmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgc3RhcnRXaXRoKHF1ZXJ5TGlzdCksXG4gICAgICAgICAgICAgIG1hcCgobCkgPT4gbC50b0FycmF5KCkpLFxuICAgICAgICAgICAgKSA/PyBvZihbXSBhcyBBYnN0cmFjdENvbWJvYm94T3B0aW9uW10pLFxuICAgICAgICAgICAgdGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZWwuYWN0aXZlT3B0aW9uJCxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKChbb3B0aW9ucywgYWN0aXZlT3B0aW9uRGF0YV0pID0+IHtcbiAgICAgICAgICBjb25zdCBvcHRpb25SZWYgPSBvcHRpb25zLmZpbmQoKG8pID0+IG8ub3B0aW9uKCkgPT09IGFjdGl2ZU9wdGlvbkRhdGEpO1xuXG4gICAgICAgICAgaWYgKCFvcHRpb25SZWY/LmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcblxuICAgICAgICAgIHNjcm9sbFRvRWxlbWVudCh7XG4gICAgICAgICAgICBiZWhhdmlvcjogJ2luc3RhbnQnLFxuICAgICAgICAgICAgZWxlbWVudDogb3B0aW9uUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogYm9keVJlZi5fY29udGFpbmVyRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuYWN0aXZlT3B0aW9uSWQkLm5leHQob3B0aW9uUmVmLmlkKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9hbmltYXRlZE92ZXJsYXkuYWZ0ZXJDbG9zZWQoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdEJvZHlJZCQubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbklkJC5uZXh0KG51bGwpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5faXNPcGVuIHx8IHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc1VubW91bnRpbmcpIHJldHVybjtcblxuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS51bm1vdW50KCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZj8uZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBzZWxlY3RJbnB1dEFuZE9wZW4oKSB7XG4gICAgaWYgKHRoaXMuX2lucHV0LmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZj8uZWxlbWVudC5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xuICAgIHRoaXMub3BlbigpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZUZyb21PcHRpb24ob3B0aW9uOiB1bmtub3duKSB7XG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcblxuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hbGxvd011bHRpcGxlKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC50b2dnbGVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hZGRTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgdGhpcy5fc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlRmlsdGVyKCcnKTtcbiAgICB9XG4gIH1cblxuICBjbGVhclZhbHVlKCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyU2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLl91cGRhdGVGaWx0ZXIoJycpO1xuICB9XG5cbiAgaXNPcHRpb25TZWxlY3RlZChvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCQob3B0aW9uKTtcbiAgfVxuXG4gIGlzT3B0aW9uQWN0aXZlKG9wdGlvbjogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlbC5pc09wdGlvbkFjdGl2ZSQob3B0aW9uKTtcbiAgfVxuXG4gIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzRGlzYWJsZWQkKG9wdGlvbik7XG4gIH1cblxuICB0cmFja0J5T3B0aW9uS2V5Rm46IFRyYWNrQnlGdW5jdGlvbjx1bmtub3duPiA9IChpbmRleCwgaXRlbSkgPT4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0S2V5KGl0ZW0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICBfaWdub3JlTmV4dEJsdXJFdmVudCgpIHtcbiAgICB0aGlzLl9zaG91bGRJZ25vcmVOZXh0Qmx1ckV2ZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIF9wcm9jZXNzS2V5ZG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaXNPcGVuID0gdGhpcy5faXNPcGVuO1xuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hbGxvd011bHRpcGxlO1xuICAgIGNvbnN0IGNhbkFkZEN1c3RvbVZhbHVlID0gdGhpcy5hbGxvd0N1c3RvbVZhbHVlcztcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgY29uc3QgaGFzRmlsdGVyVmFsdWUgPSAhIXZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbjtcbiAgICBjb25zdCBpc0JhY2tzcGFjZVByZXNzZWQgPSB0aGlzLl9iYWNrc3BhY2VLZXlQcmVzc01hbmFnZXIuaXNQcmVzc2VkKGV2ZW50KTtcblxuICAgIGNvbnN0IHJlc3VsdDogQ29tYm9ib3hLZXlIYW5kbGVyUmVzdWx0ID0ge307XG5cbiAgICBpZiAoa2V5Q29kZSA9PT0gRU5URVIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgLy8gVGhlIHVzZXIgdHlwZWQgYSBjdXN0b20gdmFsdWUgYW5kIHByZXNzZWQgZW50ZXIuIEFkZCBpdCB0byB0aGUgc2VsZWN0ZWQgb3B0aW9ucy5cbiAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgaXQgaXMgaW1wb3NzaWJsZSB0byBzZWxlY3QgdGhlIGFjdGl2ZSBvcHRpb24gd2l0aCB0aGUga2V5Ym9hcmQgaWYgY2FuQWRkQ3VzdG9tVmFsdWUgaXMgdHJ1ZS5cbiAgICAgIC8vIFRvIGZpeCB0aGlzLCB0aGUgYWN0aXZlIG9wdGlvbiBzaG91bGQgYWxzbyBpbmNsdWRlIHRoZSBvcmlnaW4gaXQgZ290IGFjdGl2ZSBmcm9tIChrZXlib2FyZCBvciBwcm9ncmFtbWF0aWMpLlxuICAgICAgLy8gVGhlIFwidmFsdWVcIiBjaGFuZ2luZyBzaG91bGQgcHV0IHRoZSBjb21ib2JveCBpbnRvIGEgXCJ1c2UgdGhlIGN1c3RvbSBpbnB1dCBvbiBlbnRlclwiIG1vZGUuXG4gICAgICAvLyBUaGUgXCJhY3RpdmUgb3B0aW9uXCIgY2hhbmdpbmcgdmlhIGtleWJvYXJkIHNob3VsZCBwdXQgdGhlIGNvbWJvYm94IGludG8gYSBcInVzZSB0aGUgYWN0aXZlIG9wdGlvbiBvbiBlbnRlclwiIG1vZGUuXG4gICAgICBpZiAoY2FuQWRkQ3VzdG9tVmFsdWUgJiYgaGFzRmlsdGVyVmFsdWUpIHtcbiAgICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9IHsgdHlwZTogJ2FkZCcsIG9wdGlvbjogdmFsdWUgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGVsLmFjdGl2ZU9wdGlvbjtcblxuICAgICAgICBpZiAoYWN0aXZlT3B0aW9uKSB7XG4gICAgICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJlc3VsdC5vcHRpb25BY3Rpb24gPSB7IHR5cGU6ICd0b2dnbGUnLCBvcHRpb246IGFjdGl2ZU9wdGlvbiB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQub3B0aW9uQWN0aW9uID0geyB0eXBlOiAnYWRkJywgb3B0aW9uOiBhY3RpdmVPcHRpb24gfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgcmVzdWx0LnNldEZpbHRlciA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnY2xvc2UnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGlmIChrZXlDb2RlID09PSBFU0NBUEUpIHtcbiAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnY2xvc2UnO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzTXVsdGlwbGUpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEZpbHRlcikge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQuc2V0RmlsdGVyID0gJyc7XG4gICAgICAgIHJlc3VsdC5vcHRpb25BY3Rpb24gPSAnY2xlYXInO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGlmIChrZXlDb2RlID09PSBUQUIpIHtcbiAgICAgIHJlc3VsdC5vdmVybGF5T3BlcmF0aW9uID0gJ2Nsb3NlJztcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcnByZXRLZXlIYW5kbGVyUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGtleUNvZGUgPT09IEJBQ0tTUEFDRSkge1xuICAgICAgaWYgKGlzQmFja3NwYWNlUHJlc3NlZCAmJiB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kZWxldGVkU2VhcmNoV2l0aEtleVByZXNzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNGaWx0ZXJWYWx1ZSAmJiBpc011bHRpcGxlICYmIHNlbGVjdGlvbi5sZW5ndGggJiYgIXRoaXMuX2RlbGV0ZWRTZWFyY2hXaXRoS2V5UHJlc3MpIHtcbiAgICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9IHsgdHlwZTogJ3JlbW92ZScsIG9wdGlvbjogc2VsZWN0aW9uW3NlbGVjdGlvbi5sZW5ndGggLSAxXSB9O1xuICAgICAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzQmFja3NwYWNlUHJlc3NlZCkge1xuICAgICAgICB0aGlzLl9kZWxldGVkU2VhcmNoV2l0aEtleVByZXNzID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RlbGV0ZWRTZWFyY2hXaXRoS2V5UHJlc3MgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnb3Blbic7XG4gICAgfVxuXG4gICAgdGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZWwuZXZhbHVhdGVLZXlib2FyZEV2ZW50KGV2ZW50KTtcblxuICAgIGlmIChrZXlDb2RlID09PSBBICYmIGV2ZW50LmN0cmxLZXkgJiYgaXNNdWx0aXBsZSkge1xuICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9ICd0b2dnbGVBbGwnO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICB9XG5cbiAgX3Byb2Nlc3NLZXl1cEV2ZW50KCkge1xuICAgIHRoaXMuX2JhY2tzcGFjZUtleVByZXNzTWFuYWdlci5jbGVhcigpO1xuICB9XG5cbiAgX3Byb2Nlc3NJbnB1dEV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgIHRoaXMuX3VwZGF0ZUZpbHRlcih2YWx1ZSk7XG4gIH1cblxuICBfaGFuZGxlQmx1ckV2ZW50KCkge1xuICAgIGlmICh0aGlzLl9zaG91bGRJZ25vcmVOZXh0Qmx1ckV2ZW50KSB7XG4gICAgICB0aGlzLl9zaG91bGRJZ25vcmVOZXh0Qmx1ckV2ZW50ID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLl9pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuXG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcignJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlciA9PT0gJycpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyU2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKTtcbiAgfVxuXG4gIF91cGRhdGVGaWx0ZXIodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZiAmJiB0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyID09PSB2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fY3VycmVudEZpbHRlciQubmV4dCh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5maWx0ZXJJbnRlcm5hbCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0RmlsdGVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBfc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUpIHJldHVybjtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5faW5wdXQudmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aGlzLl91cGRhdGVGaWx0ZXIoJycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmdldE9wdGlvbkJ5VmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKCFvcHRpb24pIHJldHVybjtcblxuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0TGFiZWwob3B0aW9uKTtcblxuICAgIGlmICh0eXBlb2YgbGFiZWwgIT09ICdzdHJpbmcnKSByZXR1cm47XG5cbiAgICB0aGlzLl91cGRhdGVGaWx0ZXIobGFiZWwpO1xuICB9XG5cbiAgX2ludGVycHJldEtleUhhbmRsZXJSZXN1bHQocmVzdWx0OiBDb21ib2JveEtleUhhbmRsZXJSZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPT09ICdjbG9zZScpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5vdmVybGF5T3BlcmF0aW9uID09PSAnb3BlbicpIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHQuc2V0RmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcihyZXN1bHQuc2V0RmlsdGVyKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0Lm9wdGlvbkFjdGlvbikge1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQub3B0aW9uQWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocmVzdWx0Lm9wdGlvbkFjdGlvbiA9PT0gJ2NsZWFyJykge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyU2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Lm9wdGlvbkFjdGlvbiA9PT0gJ3RvZ2dsZUFsbCcpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC50b2dnbGVBbGxTZWxlY3RlZE9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCBvcHRpb24gfSA9IHJlc3VsdC5vcHRpb25BY3Rpb247XG5cbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzRGlzYWJsZWQob3B0aW9uKSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0eXBlID09PSAnYWRkJykge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFkZFNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSA9PT0gJ3JlbW92ZScpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5yZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICd0b2dnbGUnKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudG9nZ2xlU2VsZWN0ZWRPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXREaXNwYXRjaEZpbHRlckNoYW5nZXMoKSB7XG4gICAgdGhpcy5fY3VycmVudEZpbHRlciRcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwV2hpbGUoKCkgPT4gdGhpcy5maWx0ZXJJbnRlcm5hbCksXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKHYpID0+IHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQodikpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VCb2R5T25EaXNhYmxlKCkge1xuICAgIHRoaXMuX2lucHV0LmRpc2FibGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZGlzYWJsZWQpID0+IHtcbiAgICAgICAgICBpZiAoIWRpc2FibGVkKSByZXR1cm47XG5cbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIERldiBtb2RlXG5cbiAgcHJpdmF0ZSBfZGVidWdWYWxpZGF0ZUNvbWJvYm94Q29uZmlnKGlzUmV0cnkgPSBmYWxzZSkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3NlbGVjdGlvbk1vZGVsLmxhYmVsQmluZGluZyQsIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnZhbHVlQmluZGluZyQsIHRoaXMuX2FsbG93Q3VzdG9tVmFsdWVzJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcChpc1JldHJ5ID8gMSA6IDApLCAvLyBTa2lwIGlmIHJldHJ5aW5nIHRvIGF2b2lkIGluZmluaXRlIGxvb3BcbiAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICBtYXAoKFtiaW5kTGFiZWwsIGJpbmRWYWx1ZSwgYWxsb3dDdXN0b21WYWx1ZXNdKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkQmVPYmplY3RzID0gYmluZExhYmVsICYmIGJpbmRWYWx1ZSAmJiAhYWxsb3dDdXN0b21WYWx1ZXM7XG5cbiAgICAgICAgICBpZiAoc2hvdWxkQmVPYmplY3RzKSB7XG4gICAgICAgICAgICByZXR1cm4gQ29tYm9ib3hPcHRpb25UeXBlLk9iamVjdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gQ29tYm9ib3hPcHRpb25UeXBlLlByaW1pdGl2ZTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoZXhwZWN0ZWRPcHRpb25UeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLm9wdGlvbnM7XG5cbiAgICAgICAgICBpZiAoaXNFbXB0eUFycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV4cGVjdGVkT3B0aW9uVHlwZSA9PT0gQ29tYm9ib3hPcHRpb25UeXBlLk9iamVjdCkge1xuICAgICAgICAgICAgaWYgKCFpc09iamVjdEFycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgIHRocm93IGNvbWJvYm94RXJyb3IoJ29wdGlvbnNfb2JqZWN0X21pc21hdGNoJywgdHJ1ZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChleHBlY3RlZE9wdGlvblR5cGUgPT09IENvbWJvYm94T3B0aW9uVHlwZS5QcmltaXRpdmUpIHtcbiAgICAgICAgICAgIGlmICghaXNQcmltaXRpdmVBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgICAgICB0aHJvdyBjb21ib2JveEVycm9yKCdvcHRpb25zX3ByaW1pdGl2ZV9taXNtYXRjaCcsIHRydWUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICB0aGlzLl9kZWJ1Z1ZhbGlkYXRlQ29tYm9ib3hDb25maWcodHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVidWdWYWxpZGF0ZU9wdGlvbkFuZEluaXRpYWxWYWx1ZVNjaGVtYShpc1JldHJ5ID0gZmFsc2UpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnMkLCB0aGlzLl9pbml0aWFsVmFsdWUkXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKGlzUmV0cnkgPyAxIDogMCksIC8vIFNraXAgaWYgcmV0cnlpbmcgdG8gYXZvaWQgaW5maW5pdGUgbG9vcFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKFtvcHRpb25zLCBpbml0aWFsVmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSA9PT0gbnVsbCB8fCBpbml0aWFsVmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBpc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlQXJyYXkob3B0aW9ucyk7XG4gICAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlSXNQcmltaXRpdmUgPSB0aGlzLm11bHRpcGxlXG4gICAgICAgICAgICA/IGlzUHJpbWl0aXZlQXJyYXkoaW5pdGlhbFZhbHVlKVxuICAgICAgICAgICAgOiB0eXBlb2YgaW5pdGlhbFZhbHVlICE9PSAnb2JqZWN0JztcblxuICAgICAgICAgIGlmIChpc1ByaW1pdGl2ZSkge1xuICAgICAgICAgICAgaWYgKCFpbml0aWFsVmFsdWVJc1ByaW1pdGl2ZSkge1xuICAgICAgICAgICAgICB0aHJvdyBjb21ib2JveEVycm9yKCdpbml0X3ZhbF9wcmltaXRpdmVfbWlzbWF0Y2gnLCB0cnVlLCB7IGluaXRpYWxWYWx1ZSwgb3B0aW9ucyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZUlzUHJpbWl0aXZlKSB7XG4gICAgICAgICAgICAgIHRocm93IGNvbWJvYm94RXJyb3IoJ2luaXRfdmFsX29iamVjdF9taXNtYXRjaCcsIHRydWUsIHsgaW5pdGlhbFZhbHVlLCBvcHRpb25zIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICB0aGlzLl9kZWJ1Z1ZhbGlkYXRlT3B0aW9uQW5kSW5pdGlhbFZhbHVlU2NoZW1hKHRydWUpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19