@ethlete/cdk 4.3.5 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/CHANGELOG.md +59 -2
  2. package/esm2022/lib/components/accordion/components/accordion/accordion.component.mjs +3 -3
  3. package/esm2022/lib/components/accordion/components/accordion-group/accordion-group.component.mjs +3 -3
  4. package/esm2022/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.mjs +3 -3
  5. package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.mjs +3 -3
  6. package/esm2022/lib/components/accordion/partials/accordion-label/accordion-label.directive.mjs +3 -3
  7. package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.mjs +3 -3
  8. package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +3 -3
  9. package/esm2022/lib/components/bracket/directives/bracket-match/bracket-match.directive.mjs +3 -3
  10. package/esm2022/lib/components/bracket/directives/bracket-round/bracket-round.directive.mjs +3 -3
  11. package/esm2022/lib/components/bracket/partials/bracket-match/bracket-match.component.mjs +3 -3
  12. package/esm2022/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.mjs +3 -3
  13. package/esm2022/lib/components/button/components/button/button.component.mjs +3 -3
  14. package/esm2022/lib/components/button/components/query-button/query-button.component.mjs +3 -3
  15. package/esm2022/lib/components/button/directives/button/button.directive.mjs +3 -3
  16. package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +3 -3
  17. package/esm2022/lib/components/filter/filter-overlay/components/filter-overlay-page-outlet/filter-overlay-page-outlet.component.mjs +3 -3
  18. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-back-or-close/filter-overlay-back-or-close.directive.mjs +3 -3
  19. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-link/filter-overlay-link.directive.mjs +3 -3
  20. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-reset/filter-overlay-reset.directive.mjs +3 -3
  21. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-submit/filter-overlay-submit.directive.mjs +3 -3
  22. package/esm2022/lib/components/filter/filter-overlay/services/filter-overlay.service.mjs +3 -3
  23. package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/rich-filter-host.component.mjs +3 -3
  24. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/rich-filter-button.directive.mjs +3 -3
  25. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/rich-filter-button-slot.directive.mjs +3 -3
  26. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/rich-filter-content.directive.mjs +3 -3
  27. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/rich-filter-top.directive.mjs +3 -3
  28. package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +3 -3
  29. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +3 -3
  30. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +3 -3
  31. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +3 -3
  32. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +6 -6
  33. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +3 -3
  34. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +3 -3
  35. package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +3 -3
  36. package/esm2022/lib/components/forms/components/input/components/date-input/date-input.component.mjs +5 -5
  37. package/esm2022/lib/components/forms/components/input/components/date-time-input/date-time-input.component.mjs +23 -0
  38. package/esm2022/lib/components/forms/components/input/components/date-time-input/public-api.mjs +2 -0
  39. package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +3 -3
  40. package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +3 -3
  41. package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +3 -3
  42. package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +3 -3
  43. package/esm2022/lib/components/forms/components/input/components/public-api.mjs +2 -1
  44. package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +3 -3
  45. package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +3 -3
  46. package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +5 -5
  47. package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +3 -3
  48. package/esm2022/lib/components/forms/components/input/directives/date-input/date-input.directive.mjs +15 -15
  49. package/esm2022/lib/components/forms/components/input/directives/date-time-input/date-time-input.directive.mjs +61 -0
  50. package/esm2022/lib/components/forms/components/input/directives/date-time-input/public-api.mjs +2 -0
  51. package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +9 -9
  52. package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +9 -9
  53. package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +9 -9
  54. package/esm2022/lib/components/forms/components/input/directives/public-api.mjs +3 -1
  55. package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +9 -9
  56. package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/public-api.mjs +2 -0
  57. package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/show-picker-trigger.directive.mjs +42 -0
  58. package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +9 -9
  59. package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +9 -9
  60. package/esm2022/lib/components/forms/components/input/input.imports.mjs +5 -2
  61. package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +3 -3
  62. package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +3 -3
  63. package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +3 -3
  64. package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +3 -3
  65. package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +3 -3
  66. package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +3 -3
  67. package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +3 -3
  68. package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +3 -3
  69. package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +3 -3
  70. package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +3 -3
  71. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +3 -3
  72. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +3 -3
  73. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +3 -3
  74. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +3 -3
  75. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +3 -3
  76. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +5 -5
  77. package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +3 -3
  78. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +4 -4
  79. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-empty-template/combobox-body-empty-template.directive.mjs +3 -3
  80. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-error-template/combobox-body-error-template.directive.mjs +3 -3
  81. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-loading-template/combobox-body-loading-template.directive.mjs +3 -3
  82. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-more-items-hint-template/combobox-body-more-items-hint-template.directive.mjs +3 -3
  83. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-option-template/combobox-option-template.directive.mjs +3 -3
  84. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-selected-option-template/combobox-selected-option-template.directive.mjs +3 -3
  85. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +3 -3
  86. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +3 -3
  87. package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +3 -3
  88. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +3 -3
  89. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +3 -3
  90. package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +3 -3
  91. package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +3 -3
  92. package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +3 -3
  93. package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +3 -3
  94. package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +3 -3
  95. package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +3 -3
  96. package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +3 -3
  97. package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +3 -3
  98. package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +3 -3
  99. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-field/selection-list-field.component.mjs +3 -3
  100. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-option/selection-list-option.component.mjs +3 -3
  101. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-field/selection-list-field.directive.mjs +3 -3
  102. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-option/selection-list-option.directive.mjs +3 -3
  103. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +3 -3
  104. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +3 -3
  105. package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +3 -3
  106. package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +3 -3
  107. package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +3 -3
  108. package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +3 -3
  109. package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +3 -3
  110. package/esm2022/lib/components/forms/directives/expose-input-vars/expose-input-vars.directive.mjs +3 -3
  111. package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +3 -3
  112. package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +3 -3
  113. package/esm2022/lib/components/forms/directives/input/input.directive.mjs +12 -4
  114. package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +3 -3
  115. package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +3 -3
  116. package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +4 -4
  117. package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +3 -3
  118. package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +3 -3
  119. package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +4 -4
  120. package/esm2022/lib/components/forms/index.mjs +2 -0
  121. package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +3 -3
  122. package/esm2022/lib/components/forms/services/form-field-state.service.mjs +3 -3
  123. package/esm2022/lib/components/forms/services/form-group-state.service.mjs +3 -3
  124. package/esm2022/lib/components/forms/services/input-state.service.mjs +4 -4
  125. package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +3 -3
  126. package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +3 -3
  127. package/esm2022/lib/components/forms/utils/input.base.mjs +14 -8
  128. package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +3 -3
  129. package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +3 -3
  130. package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +3 -3
  131. package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +3 -3
  132. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +3 -3
  133. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +3 -3
  134. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +3 -3
  135. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +3 -3
  136. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +3 -3
  137. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +3 -3
  138. package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +3 -3
  139. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +3 -3
  140. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +3 -3
  141. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +3 -3
  142. package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +3 -3
  143. package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +3 -3
  144. package/esm2022/lib/components/overlay/components/menu/components/index.mjs +2 -0
  145. package/esm2022/lib/components/overlay/components/menu/components/menu/menu.component.mjs +168 -0
  146. package/esm2022/lib/components/overlay/components/menu/components/menu/public-api.mjs +2 -0
  147. package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/menu-checkbox-item.component.mjs +68 -0
  148. package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/public-api.mjs +2 -0
  149. package/esm2022/lib/components/overlay/components/menu/components/menu-container/menu-container.component.mjs +47 -0
  150. package/esm2022/lib/components/overlay/components/menu/components/menu-container/public-api.mjs +2 -0
  151. package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/menu-radio-item.component.mjs +61 -0
  152. package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/public-api.mjs +2 -0
  153. package/esm2022/lib/components/overlay/components/menu/components/public-api.mjs +5 -0
  154. package/esm2022/lib/components/overlay/components/menu/directives/index.mjs +2 -0
  155. package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/menu-checkbox-group.directive.mjs +31 -0
  156. package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/public-api.mjs +2 -0
  157. package/esm2022/lib/components/overlay/components/menu/directives/menu-group/index.mjs +2 -0
  158. package/esm2022/lib/components/overlay/components/menu/directives/menu-group/menu-group.directive.mjs +43 -0
  159. package/esm2022/lib/components/overlay/components/menu/directives/menu-group/public-api.mjs +2 -0
  160. package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/index.mjs +2 -0
  161. package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/menu-group-title.directive.mjs +41 -0
  162. package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/public-api.mjs +2 -0
  163. package/esm2022/lib/components/overlay/components/menu/directives/menu-item/menu-item.directive.mjs +97 -0
  164. package/esm2022/lib/components/overlay/components/menu/directives/menu-item/public-api.mjs +2 -0
  165. package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/menu-radio-group.directive.mjs +42 -0
  166. package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/public-api.mjs +2 -0
  167. package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/index.mjs +2 -0
  168. package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/menu-trigger.directive.mjs +145 -0
  169. package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/public-api.mjs +2 -0
  170. package/esm2022/lib/components/overlay/components/menu/directives/public-api.mjs +7 -0
  171. package/esm2022/lib/components/overlay/components/menu/menu.imports.mjs +14 -0
  172. package/esm2022/lib/components/overlay/components/menu/public-api.mjs +4 -17
  173. package/esm2022/lib/components/overlay/components/menu-deprecated/context-menu-trigger.mjs +166 -0
  174. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-aim.mjs +140 -0
  175. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-bar.mjs +116 -0
  176. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-base.mjs +176 -0
  177. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-errors.mjs +7 -0
  178. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-group.mjs +29 -0
  179. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-interface.mjs +3 -0
  180. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-checkbox.mjs +42 -0
  181. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-radio.mjs +59 -0
  182. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-selectable.mjs +38 -0
  183. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item.mjs +216 -0
  184. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-module.mjs +58 -0
  185. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-stack.mjs +104 -0
  186. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger-base.mjs +80 -0
  187. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger.mjs +243 -0
  188. package/esm2022/lib/components/overlay/components/menu-deprecated/menu.mjs +119 -0
  189. package/esm2022/lib/components/overlay/components/menu-deprecated/pointer-focus-tracker.mjs +29 -0
  190. package/esm2022/lib/components/overlay/components/menu-deprecated/public-api.mjs +17 -0
  191. package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.mjs +35 -8
  192. package/esm2022/lib/components/overlay/components/overlay/overlay.imports.mjs +9 -4
  193. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.mjs +147 -0
  194. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/public-api.mjs +2 -0
  195. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-close/overlay-close.directive.mjs +3 -3
  196. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/overlay-footer.directive.mjs +49 -0
  197. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/public-api.mjs +2 -0
  198. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/overlay-header.directive.mjs +49 -0
  199. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/public-api.mjs +2 -0
  200. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-title/overlay-title.directive.mjs +3 -3
  201. package/esm2022/lib/components/overlay/components/overlay/partials/public-api.mjs +4 -1
  202. package/esm2022/lib/components/overlay/components/overlay/services/overlay.service.mjs +5 -4
  203. package/esm2022/lib/components/overlay/components/overlay/utils/overlay-ref.mjs +16 -2
  204. package/esm2022/lib/components/overlay/components/public-api.mjs +2 -1
  205. package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +3 -3
  206. package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +3 -3
  207. package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +3 -3
  208. package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +3 -3
  209. package/esm2022/lib/components/overlay/directives/dynamic-overlay-title/dynamic-overlay-title.directive.mjs +3 -3
  210. package/esm2022/lib/components/overlay/directives/overlay-close-auto-blocker/overlay-close-auto-blocker.directive.mjs +3 -3
  211. package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +3 -3
  212. package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +3 -3
  213. package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +3 -3
  214. package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +3 -3
  215. package/esm2022/lib/components/picture/picture-data.directive.mjs +3 -3
  216. package/esm2022/lib/components/picture/picture.component.mjs +3 -3
  217. package/esm2022/lib/components/picture/pipes/normalize-source/normalize-source.pipe.mjs +3 -3
  218. package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +3 -3
  219. package/esm2022/lib/components/query-error/components/query-error/query-error.component.mjs +3 -3
  220. package/esm2022/lib/components/query-error/directives/query-error/query-error.directive.mjs +3 -3
  221. package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +5 -5
  222. package/esm2022/lib/components/scrollable/directives/scrollable-ignore-child/scrollable-ignore-child.directive.mjs +3 -3
  223. package/esm2022/lib/components/scrollable/directives/scrollable-is-active-child/scrollable-is-active-child.directive.mjs +3 -3
  224. package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +3 -3
  225. package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +3 -3
  226. package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +3 -3
  227. package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +3 -3
  228. package/esm2022/lib/components/sort/services/sort-header-intl.mjs +3 -3
  229. package/esm2022/lib/components/table/components/table/table.component.mjs +3 -3
  230. package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +3 -3
  231. package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +3 -3
  232. package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +3 -3
  233. package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +3 -3
  234. package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +3 -3
  235. package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +3 -3
  236. package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +3 -3
  237. package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +3 -3
  238. package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +3 -3
  239. package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +3 -3
  240. package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +3 -3
  241. package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +3 -3
  242. package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +3 -3
  243. package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +3 -3
  244. package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +3 -3
  245. package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +3 -3
  246. package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +3 -3
  247. package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +3 -3
  248. package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +3 -3
  249. package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +3 -3
  250. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +3 -3
  251. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +3 -3
  252. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +3 -3
  253. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +3 -3
  254. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +3 -3
  255. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +3 -3
  256. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +3 -3
  257. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +3 -3
  258. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +3 -3
  259. package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +3 -3
  260. package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +3 -3
  261. package/esm2022/lib/services/swipe-handler.service.mjs +3 -3
  262. package/fesm2022/ethlete-cdk.mjs +8846 -7724
  263. package/fesm2022/ethlete-cdk.mjs.map +1 -1
  264. package/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.d.ts +1 -1
  265. package/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.d.ts +1 -1
  266. package/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.d.ts +3 -3
  267. package/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.d.ts +1 -1
  268. package/lib/components/forms/components/input/components/date-input/date-input.component.d.ts +1 -1
  269. package/lib/components/forms/components/input/components/date-time-input/date-time-input.component.d.ts +10 -0
  270. package/lib/components/forms/components/input/components/date-time-input/public-api.d.ts +1 -0
  271. package/lib/components/forms/components/input/components/input-field/input-field.component.d.ts +1 -1
  272. package/lib/components/forms/components/input/components/public-api.d.ts +1 -0
  273. package/lib/components/forms/components/input/components/textarea-input/textarea-input.component.d.ts +1 -1
  274. package/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.d.ts +1 -1
  275. package/lib/components/forms/components/input/directives/date-input/date-input.directive.d.ts +2 -3
  276. package/lib/components/forms/components/input/directives/date-time-input/date-time-input.directive.d.ts +20 -0
  277. package/lib/components/forms/components/input/directives/date-time-input/public-api.d.ts +1 -0
  278. package/lib/components/forms/components/input/directives/email-input/email-input.directive.d.ts +1 -1
  279. package/lib/components/forms/components/input/directives/number-input/number-input.directive.d.ts +1 -1
  280. package/lib/components/forms/components/input/directives/password-input/password-input.directive.d.ts +1 -1
  281. package/lib/components/forms/components/input/directives/public-api.d.ts +2 -0
  282. package/lib/components/forms/components/input/directives/search-input/search-input.directive.d.ts +1 -1
  283. package/lib/components/forms/components/input/directives/show-picker-trigger/public-api.d.ts +1 -0
  284. package/lib/components/forms/components/input/directives/show-picker-trigger/show-picker-trigger.directive.d.ts +10 -0
  285. package/lib/components/forms/components/input/directives/text-input/text-input.directive.d.ts +1 -1
  286. package/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.d.ts +1 -1
  287. package/lib/components/forms/components/input/input.imports.d.ts +3 -2
  288. package/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.d.ts +1 -1
  289. package/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.d.ts +1 -1
  290. package/lib/components/forms/components/radio/components/radio-group/radio-group.component.d.ts +1 -1
  291. package/lib/components/forms/components/radio/directives/radio/radio.directive.d.ts +1 -1
  292. package/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.d.ts +1 -1
  293. package/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.d.ts +1 -1
  294. package/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.d.ts +1 -1
  295. package/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.d.ts +1 -1
  296. package/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.d.ts +2 -1
  297. package/lib/components/forms/components/select/components/select/directives/select/select.directive.d.ts +1 -1
  298. package/lib/components/forms/components/select/components/select-field/select-field.component.d.ts +1 -1
  299. package/lib/components/forms/components/selection-list/directives/selection-list-field/selection-list-field.directive.d.ts +1 -1
  300. package/lib/components/forms/components/selection-list/directives/selection-list-option/selection-list-option.directive.d.ts +1 -1
  301. package/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.d.ts +1 -1
  302. package/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.d.ts +1 -1
  303. package/lib/components/forms/components/slider/components/slider-field/slider-field.component.d.ts +1 -1
  304. package/lib/components/forms/directives/input/input.directive.d.ts +3 -2
  305. package/lib/components/forms/directives/native-input-ref/native-input-ref.directive.d.ts +2 -2
  306. package/lib/components/forms/directives/writeable-input/writeable-input.directive.d.ts +1 -1
  307. package/lib/components/forms/index.d.ts +1 -0
  308. package/lib/components/forms/services/input-state.service.d.ts +1 -1
  309. package/lib/components/forms/utils/input.base.d.ts +3 -1
  310. package/lib/components/overlay/components/menu/components/index.d.ts +1 -0
  311. package/lib/components/overlay/components/menu/components/menu/menu.component.d.ts +35 -0
  312. package/lib/components/overlay/components/menu/components/menu/public-api.d.ts +1 -0
  313. package/lib/components/overlay/components/menu/components/menu-checkbox-item/menu-checkbox-item.component.d.ts +23 -0
  314. package/lib/components/overlay/components/menu/components/menu-checkbox-item/public-api.d.ts +1 -0
  315. package/lib/components/overlay/components/menu/components/menu-container/menu-container.component.d.ts +20 -0
  316. package/lib/components/overlay/components/menu/components/menu-container/public-api.d.ts +1 -0
  317. package/lib/components/overlay/components/menu/components/menu-radio-item/menu-radio-item.component.d.ts +21 -0
  318. package/lib/components/overlay/components/menu/components/menu-radio-item/public-api.d.ts +1 -0
  319. package/lib/components/overlay/components/menu/components/public-api.d.ts +4 -0
  320. package/lib/components/overlay/components/menu/directives/index.d.ts +1 -0
  321. package/lib/components/overlay/components/menu/directives/menu-checkbox-group/menu-checkbox-group.directive.d.ts +9 -0
  322. package/lib/components/overlay/components/menu/directives/menu-checkbox-group/public-api.d.ts +1 -0
  323. package/lib/components/overlay/components/menu/directives/menu-group/index.d.ts +1 -0
  324. package/lib/components/overlay/components/menu/directives/menu-group/menu-group.directive.d.ts +15 -0
  325. package/lib/components/overlay/components/menu/directives/menu-group/public-api.d.ts +1 -0
  326. package/lib/components/overlay/components/menu/directives/menu-group-title/index.d.ts +1 -0
  327. package/lib/components/overlay/components/menu/directives/menu-group-title/menu-group-title.directive.d.ts +11 -0
  328. package/lib/components/overlay/components/menu/directives/menu-group-title/public-api.d.ts +1 -0
  329. package/lib/components/overlay/components/menu/directives/menu-item/menu-item.directive.d.ts +32 -0
  330. package/lib/components/overlay/components/menu/directives/menu-item/public-api.d.ts +1 -0
  331. package/lib/components/overlay/components/menu/directives/menu-radio-group/menu-radio-group.directive.d.ts +12 -0
  332. package/lib/components/overlay/components/menu/directives/menu-radio-group/public-api.d.ts +1 -0
  333. package/lib/components/overlay/components/menu/directives/menu-trigger/index.d.ts +1 -0
  334. package/lib/components/overlay/components/menu/directives/menu-trigger/menu-trigger.directive.d.ts +39 -0
  335. package/lib/components/overlay/components/menu/directives/menu-trigger/public-api.d.ts +1 -0
  336. package/lib/components/overlay/components/menu/directives/public-api.d.ts +6 -0
  337. package/lib/components/overlay/components/menu/menu.imports.d.ts +3 -0
  338. package/lib/components/overlay/components/menu/public-api.d.ts +3 -16
  339. package/lib/components/overlay/components/{menu → menu-deprecated}/context-menu-trigger.d.ts +3 -0
  340. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-bar.d.ts +3 -0
  341. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-base.d.ts +3 -0
  342. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-group.d.ts +3 -0
  343. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-item-checkbox.d.ts +3 -0
  344. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-item-radio.d.ts +3 -0
  345. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-item-selectable.d.ts +3 -0
  346. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-item.d.ts +3 -0
  347. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-module.d.ts +3 -0
  348. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-stack.d.ts +3 -0
  349. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-trigger-base.d.ts +3 -0
  350. package/lib/components/overlay/components/{menu → menu-deprecated}/menu-trigger.d.ts +3 -0
  351. package/lib/components/overlay/components/{menu → menu-deprecated}/menu.d.ts +3 -0
  352. package/lib/components/overlay/components/{menu → menu-deprecated}/pointer-focus-tracker.d.ts +3 -0
  353. package/lib/components/overlay/components/menu-deprecated/public-api.d.ts +16 -0
  354. package/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.d.ts +9 -0
  355. package/lib/components/overlay/components/overlay/overlay.imports.d.ts +2 -3
  356. package/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.d.ts +36 -0
  357. package/lib/components/overlay/components/overlay/partials/overlay-body/public-api.d.ts +1 -0
  358. package/lib/components/overlay/components/overlay/partials/overlay-footer/overlay-footer.directive.d.ts +12 -0
  359. package/lib/components/overlay/components/overlay/partials/overlay-footer/public-api.d.ts +1 -0
  360. package/lib/components/overlay/components/overlay/partials/overlay-header/overlay-header.directive.d.ts +12 -0
  361. package/lib/components/overlay/components/overlay/partials/overlay-header/public-api.d.ts +1 -0
  362. package/lib/components/overlay/components/overlay/partials/public-api.d.ts +3 -0
  363. package/lib/components/overlay/components/overlay/utils/overlay-ref.d.ts +11 -0
  364. package/lib/components/overlay/components/public-api.d.ts +1 -0
  365. package/package.json +8 -8
  366. package/esm2022/lib/components/overlay/components/menu/context-menu-trigger.mjs +0 -163
  367. package/esm2022/lib/components/overlay/components/menu/menu-aim.mjs +0 -140
  368. package/esm2022/lib/components/overlay/components/menu/menu-bar.mjs +0 -113
  369. package/esm2022/lib/components/overlay/components/menu/menu-base.mjs +0 -173
  370. package/esm2022/lib/components/overlay/components/menu/menu-errors.mjs +0 -7
  371. package/esm2022/lib/components/overlay/components/menu/menu-group.mjs +0 -26
  372. package/esm2022/lib/components/overlay/components/menu/menu-interface.mjs +0 -3
  373. package/esm2022/lib/components/overlay/components/menu/menu-item-checkbox.mjs +0 -39
  374. package/esm2022/lib/components/overlay/components/menu/menu-item-radio.mjs +0 -56
  375. package/esm2022/lib/components/overlay/components/menu/menu-item-selectable.mjs +0 -35
  376. package/esm2022/lib/components/overlay/components/menu/menu-item.mjs +0 -213
  377. package/esm2022/lib/components/overlay/components/menu/menu-module.mjs +0 -52
  378. package/esm2022/lib/components/overlay/components/menu/menu-stack.mjs +0 -101
  379. package/esm2022/lib/components/overlay/components/menu/menu-trigger-base.mjs +0 -77
  380. package/esm2022/lib/components/overlay/components/menu/menu-trigger.mjs +0 -240
  381. package/esm2022/lib/components/overlay/components/menu/menu.mjs +0 -116
  382. package/esm2022/lib/components/overlay/components/menu/pointer-focus-tracker.mjs +0 -26
  383. /package/lib/components/overlay/components/{menu → menu-deprecated}/menu-aim.d.ts +0 -0
  384. /package/lib/components/overlay/components/{menu → menu-deprecated}/menu-errors.d.ts +0 -0
  385. /package/lib/components/overlay/components/{menu → menu-deprecated}/menu-interface.d.ts +0 -0
@@ -0,0 +1,145 @@
1
+ import { Directive, ElementRef, InjectionToken, Input, TemplateRef, computed, inject, signal, } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { AnimatedOverlayDirective, ClickObserverService, signalHostAttributes, signalHostClasses } from '@ethlete/core';
4
+ import { THEME_PROVIDER } from '@ethlete/theming';
5
+ import { filter, fromEvent, take, tap } from 'rxjs';
6
+ import { OverlayCloseBlockerDirective } from '../../../../directives/overlay-close-auto-blocker';
7
+ import { MENU_TEMPLATE, MenuContainerComponent } from '../../components';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ethlete/core";
10
+ import * as i2 from "../../../../directives/overlay-close-auto-blocker/overlay-close-auto-blocker.directive";
11
+ export const MENU_TRIGGER_TOKEN = new InjectionToken('ET_MENU_TRIGGER_TOKEN');
12
+ let uniqueId = 0;
13
+ export class MenuTriggerDirective {
14
+ set __menuTemplate(value) {
15
+ this.menuTemplate.set(value);
16
+ }
17
+ constructor() {
18
+ this._elementRef = inject(ElementRef);
19
+ this._animatedOverlay = inject(AnimatedOverlayDirective);
20
+ this._themeProvider = inject(THEME_PROVIDER, { optional: true });
21
+ this._clickObserverService = inject(ClickObserverService);
22
+ this.id = `et-menu-trigger-${uniqueId++}`;
23
+ this.isOpen = signal(false);
24
+ this._listenerSubscriptions = [];
25
+ this._currentMenu = signal(null);
26
+ this._currentMenuId = computed(() => {
27
+ const menu = this._currentMenu();
28
+ return menu ? menu.id() : null;
29
+ });
30
+ this.currentMenu = this._currentMenu.asReadonly();
31
+ this.menuTemplate = signal(null);
32
+ this.hostClassBindings = signalHostClasses({
33
+ 'et-menu-trigger--open': this.isOpen,
34
+ });
35
+ this.hostAttributeBindings = signalHostAttributes({
36
+ 'aria-controls': this._currentMenuId,
37
+ 'aria-expanded': this.isOpen,
38
+ });
39
+ this._animatedOverlay.autoHide = true;
40
+ this._animatedOverlay.shift = false;
41
+ this._animatedOverlay.placement = 'bottom';
42
+ this._animatedOverlay.autoResize = true;
43
+ this._animatedOverlay.fallbackPlacements = ['bottom', 'bottom-start', 'bottom-end', 'top', 'top-start', 'top-end'];
44
+ fromEvent(this._elementRef.nativeElement, 'click')
45
+ .pipe(tap(() => this.mount()), takeUntilDestroyed())
46
+ .subscribe();
47
+ this._animatedOverlay
48
+ .afterClosed()
49
+ .pipe(tap(() => this._removeListeners()), takeUntilDestroyed())
50
+ .subscribe();
51
+ }
52
+ ngOnDestroy() {
53
+ this._animatedOverlay._destroy();
54
+ this._removeListeners();
55
+ }
56
+ mount() {
57
+ const menuTemplate = this.menuTemplate();
58
+ if (!menuTemplate) {
59
+ throw new Error('No menu template provided');
60
+ }
61
+ if (!this._animatedOverlay.canMount)
62
+ return;
63
+ const menuRef = this._animatedOverlay.mount({
64
+ component: MenuContainerComponent,
65
+ themeProvider: this._themeProvider,
66
+ providers: [
67
+ {
68
+ provide: MENU_TEMPLATE,
69
+ useValue: menuTemplate,
70
+ },
71
+ ],
72
+ });
73
+ if (menuRef) {
74
+ this.isOpen.set(true);
75
+ this._addListeners();
76
+ }
77
+ }
78
+ unmount(restoreFocus = true) {
79
+ if (!this._animatedOverlay.canUnmount)
80
+ return;
81
+ this._animatedOverlay.unmount();
82
+ this.isOpen.set(false);
83
+ if (restoreFocus) {
84
+ this._animatedOverlay
85
+ .afterClosed()
86
+ .pipe(tap(() => this._elementRef.nativeElement.focus()), take(1))
87
+ .subscribe();
88
+ }
89
+ }
90
+ _connectWithMenu(menu) {
91
+ this._currentMenu.set(menu);
92
+ }
93
+ _clearMenuConnection() {
94
+ this._currentMenu.set(null);
95
+ }
96
+ _addListeners() {
97
+ const keyupEscSub = fromEvent(document, 'keyup')
98
+ .pipe(filter((e) => e.key === 'Escape'), tap(() => this.unmount()))
99
+ .subscribe();
100
+ const clickOutsideSub = this._clickObserverService
101
+ .observe(this._animatedOverlay.componentRef?.location.nativeElement)
102
+ .subscribe((e) => {
103
+ const targetElement = e.target;
104
+ const isInside = this._animatedOverlay.componentRef?.location.nativeElement.contains(targetElement);
105
+ if (!isInside) {
106
+ this.unmount();
107
+ }
108
+ });
109
+ this._listenerSubscriptions.push(keyupEscSub, clickOutsideSub);
110
+ }
111
+ _removeListeners() {
112
+ this._listenerSubscriptions.forEach((s) => s.unsubscribe());
113
+ this._listenerSubscriptions.length = 0;
114
+ }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: MenuTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
116
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: MenuTriggerDirective, isStandalone: true, selector: "[etMenuTrigger]", inputs: { __menuTemplate: ["etMenuTrigger", "__menuTemplate"] }, host: { attributes: { "aria-haspopup": "menu" }, properties: { "id": "id" }, classAttribute: "et-menu-trigger" }, providers: [
117
+ {
118
+ provide: MENU_TRIGGER_TOKEN,
119
+ useExisting: MenuTriggerDirective,
120
+ },
121
+ ], hostDirectives: [{ directive: i1.AnimatedOverlayDirective }, { directive: i2.OverlayCloseBlockerDirective }], ngImport: i0 }); }
122
+ }
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: MenuTriggerDirective, decorators: [{
124
+ type: Directive,
125
+ args: [{
126
+ selector: '[etMenuTrigger]',
127
+ standalone: true,
128
+ providers: [
129
+ {
130
+ provide: MENU_TRIGGER_TOKEN,
131
+ useExisting: MenuTriggerDirective,
132
+ },
133
+ ],
134
+ hostDirectives: [AnimatedOverlayDirective, OverlayCloseBlockerDirective],
135
+ host: {
136
+ 'aria-haspopup': 'menu',
137
+ class: 'et-menu-trigger',
138
+ '[id]': 'id',
139
+ },
140
+ }]
141
+ }], ctorParameters: () => [], propDecorators: { __menuTemplate: [{
142
+ type: Input,
143
+ args: [{ alias: 'etMenuTrigger', required: true }]
144
+ }] } });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9vdmVybGF5L2NvbXBvbmVudHMvbWVudS9kaXJlY3RpdmVzL21lbnUtdHJpZ2dlci9tZW51LXRyaWdnZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLGNBQWMsRUFDZCxLQUFLLEVBRUwsV0FBVyxFQUNYLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFnQixNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBaUIsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQUV4RixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsdUJBQXVCLENBQUMsQ0FBQztBQUVwRyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFrQmpCLE1BQU0sT0FBTyxvQkFBb0I7SUFxQi9CLElBQ0ksY0FBYyxDQUFDLEtBQTJCO1FBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7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O29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxzQkFBc0I7eUJBQ2xDO3FCQUNGO29CQUNELGNBQWMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLDRCQUE0QixDQUFDO29CQUN4RSxJQUFJLEVBQUU7d0JBQ0osZUFBZSxFQUFFLE1BQU07d0JBQ3ZCLEtBQUssRUFBRSxpQkFBaUI7d0JBQ3hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO3dEQXVCSyxjQUFjO3NCQURqQixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmUsIENsaWNrT2JzZXJ2ZXJTZXJ2aWNlLCBzaWduYWxIb3N0QXR0cmlidXRlcywgc2lnbmFsSG9zdENsYXNzZXMgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IFRIRU1FX1BST1ZJREVSIH0gZnJvbSAnQGV0aGxldGUvdGhlbWluZyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciwgZnJvbUV2ZW50LCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE92ZXJsYXlDbG9zZUJsb2NrZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL292ZXJsYXktY2xvc2UtYXV0by1ibG9ja2VyJztcbmltcG9ydCB7IE1FTlVfVEVNUExBVEUsIE1lbnVDb21wb25lbnQsIE1lbnVDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcblxuZXhwb3J0IGNvbnN0IE1FTlVfVFJJR0dFUl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNZW51VHJpZ2dlckRpcmVjdGl2ZT4oJ0VUX01FTlVfVFJJR0dFUl9UT0tFTicpO1xuXG5sZXQgdW5pcXVlSWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZXRNZW51VHJpZ2dlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNRU5VX1RSSUdHRVJfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogTWVudVRyaWdnZXJEaXJlY3RpdmUsXG4gICAgfSxcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmUsIE92ZXJsYXlDbG9zZUJsb2NrZXJEaXJlY3RpdmVdLFxuICBob3N0OiB7XG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAnbWVudScsXG4gICAgY2xhc3M6ICdldC1tZW51LXRyaWdnZXInLFxuICAgICdbaWRdJzogJ2lkJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTWVudVRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgX2FuaW1hdGVkT3ZlcmxheSA9IGluamVjdDxBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmU8TWVudUNvbnRhaW5lckNvbXBvbmVudD4+KEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RoZW1lUHJvdmlkZXIgPSBpbmplY3QoVEhFTUVfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NsaWNrT2JzZXJ2ZXJTZXJ2aWNlID0gaW5qZWN0KENsaWNrT2JzZXJ2ZXJTZXJ2aWNlKTtcblxuICByZWFkb25seSBpZCA9IGBldC1tZW51LXRyaWdnZXItJHt1bmlxdWVJZCsrfWA7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzT3BlbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRNZW51ID0gc2lnbmFsPE1lbnVDb21wb25lbnQgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50TWVudUlkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1lbnUgPSB0aGlzLl9jdXJyZW50TWVudSgpO1xuICAgIHJldHVybiBtZW51ID8gbWVudS5pZCgpIDogbnVsbDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudE1lbnUgPSB0aGlzLl9jdXJyZW50TWVudS5hc1JlYWRvbmx5KCk7XG5cbiAgQElucHV0KHsgYWxpYXM6ICdldE1lbnVUcmlnZ2VyJywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgc2V0IF9fbWVudVRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjx1bmtub3duPikge1xuICAgIHRoaXMubWVudVRlbXBsYXRlLnNldCh2YWx1ZSk7XG4gIH1cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lbnVUZW1wbGF0ZSA9IHNpZ25hbDxUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGhvc3RDbGFzc0JpbmRpbmdzID0gc2lnbmFsSG9zdENsYXNzZXMoe1xuICAgICdldC1tZW51LXRyaWdnZXItLW9wZW4nOiB0aGlzLmlzT3BlbixcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaG9zdEF0dHJpYnV0ZUJpbmRpbmdzID0gc2lnbmFsSG9zdEF0dHJpYnV0ZXMoe1xuICAgICdhcmlhLWNvbnRyb2xzJzogdGhpcy5fY3VycmVudE1lbnVJZCxcbiAgICAnYXJpYS1leHBhbmRlZCc6IHRoaXMuaXNPcGVuLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXkuYXV0b0hpZGUgPSB0cnVlO1xuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5zaGlmdCA9IGZhbHNlO1xuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5wbGFjZW1lbnQgPSAnYm90dG9tJztcbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXkuYXV0b1Jlc2l6ZSA9IHRydWU7XG4gICAgdGhpcy5fYW5pbWF0ZWRPdmVybGF5LmZhbGxiYWNrUGxhY2VtZW50cyA9IFsnYm90dG9tJywgJ2JvdHRvbS1zdGFydCcsICdib3R0b20tZW5kJywgJ3RvcCcsICd0b3Atc3RhcnQnLCAndG9wLWVuZCddO1xuXG4gICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5tb3VudCgpKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX3JlbW92ZUxpc3RlbmVycygpKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXkuX2Rlc3Ryb3koKTtcbiAgICB0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIG1vdW50KCkge1xuICAgIGNvbnN0IG1lbnVUZW1wbGF0ZSA9IHRoaXMubWVudVRlbXBsYXRlKCk7XG5cbiAgICBpZiAoIW1lbnVUZW1wbGF0ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBtZW51IHRlbXBsYXRlIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9hbmltYXRlZE92ZXJsYXkuY2FuTW91bnQpIHJldHVybjtcblxuICAgIGNvbnN0IG1lbnVSZWYgPSB0aGlzLl9hbmltYXRlZE92ZXJsYXkubW91bnQoe1xuICAgICAgY29tcG9uZW50OiBNZW51Q29udGFpbmVyQ29tcG9uZW50LFxuICAgICAgdGhlbWVQcm92aWRlcjogdGhpcy5fdGhlbWVQcm92aWRlcixcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogTUVOVV9URU1QTEFURSxcbiAgICAgICAgICB1c2VWYWx1ZTogbWVudVRlbXBsYXRlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGlmIChtZW51UmVmKSB7XG4gICAgICB0aGlzLmlzT3Blbi5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLl9hZGRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICB1bm1vdW50KHJlc3RvcmVGb2N1cyA9IHRydWUpIHtcbiAgICBpZiAoIXRoaXMuX2FuaW1hdGVkT3ZlcmxheS5jYW5Vbm1vdW50KSByZXR1cm47XG5cbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXkudW5tb3VudCgpO1xuICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG5cbiAgICBpZiAocmVzdG9yZUZvY3VzKSB7XG4gICAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXlcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKCgpID0+IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpKSxcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBfY29ubmVjdFdpdGhNZW51KG1lbnU6IE1lbnVDb21wb25lbnQpIHtcbiAgICB0aGlzLl9jdXJyZW50TWVudS5zZXQobWVudSk7XG4gIH1cblxuICBfY2xlYXJNZW51Q29ubmVjdGlvbigpIHtcbiAgICB0aGlzLl9jdXJyZW50TWVudS5zZXQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIF9hZGRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3Qga2V5dXBFc2NTdWIgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXl1cCcpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChlKSA9PiBlLmtleSA9PT0gJ0VzY2FwZScpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy51bm1vdW50KCkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgY29uc3QgY2xpY2tPdXRzaWRlU3ViID0gdGhpcy5fY2xpY2tPYnNlcnZlclNlcnZpY2VcbiAgICAgIC5vYnNlcnZlKHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5jb21wb25lbnRSZWY/LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgaXNJbnNpZGUgPSB0aGlzLl9hbmltYXRlZE92ZXJsYXkuY29tcG9uZW50UmVmPy5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpO1xuXG4gICAgICAgIGlmICghaXNJbnNpZGUpIHtcbiAgICAgICAgICB0aGlzLnVubW91bnQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLl9saXN0ZW5lclN1YnNjcmlwdGlvbnMucHVzaChrZXl1cEVzY1N1YiwgY2xpY2tPdXRzaWRlU3ViKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZUxpc3RlbmVycygpIHtcbiAgICB0aGlzLl9saXN0ZW5lclN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLl9saXN0ZW5lclN1YnNjcmlwdGlvbnMubGVuZ3RoID0gMDtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './menu-trigger.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9vdmVybGF5L2NvbXBvbmVudHMvbWVudS9kaXJlY3RpdmVzL21lbnUtdHJpZ2dlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lbnUtdHJpZ2dlci5kaXJlY3RpdmUnO1xuIl19
@@ -0,0 +1,7 @@
1
+ export * from './menu-checkbox-group/public-api';
2
+ export * from './menu-group-title/public-api';
3
+ export * from './menu-group/public-api';
4
+ export * from './menu-item/public-api';
5
+ export * from './menu-radio-group/public-api';
6
+ export * from './menu-trigger/public-api';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9vdmVybGF5L2NvbXBvbmVudHMvbWVudS9kaXJlY3RpdmVzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lbnUtY2hlY2tib3gtZ3JvdXAvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtZ3JvdXAtdGl0bGUvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtZ3JvdXAvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtaXRlbS9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1yYWRpby1ncm91cC9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS10cmlnZ2VyL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,14 @@
1
+ import { MenuCheckboxItemComponent, MenuComponent, MenuRadioItemComponent } from './components';
2
+ import { MenuCheckboxGroupDirective, MenuGroupDirective, MenuGroupTitleDirective, MenuItemDirective, MenuRadioGroupDirective, MenuTriggerDirective, } from './directives';
3
+ export const MenuImports = [
4
+ MenuCheckboxGroupDirective,
5
+ MenuGroupDirective,
6
+ MenuGroupTitleDirective,
7
+ MenuItemDirective,
8
+ MenuRadioGroupDirective,
9
+ MenuTriggerDirective,
10
+ MenuCheckboxItemComponent,
11
+ MenuComponent,
12
+ MenuRadioItemComponent,
13
+ ];
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5pbXBvcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL292ZXJsYXkvY29tcG9uZW50cy9tZW51L21lbnUuaW1wb3J0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hHLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUV0QixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsMEJBQTBCO0lBQzFCLGtCQUFrQjtJQUNsQix1QkFBdUI7SUFDdkIsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2QixvQkFBb0I7SUFDcEIseUJBQXlCO0lBQ3pCLGFBQWE7SUFDYixzQkFBc0I7Q0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVudUNoZWNrYm94SXRlbUNvbXBvbmVudCwgTWVudUNvbXBvbmVudCwgTWVudVJhZGlvSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBNZW51Q2hlY2tib3hHcm91cERpcmVjdGl2ZSxcbiAgTWVudUdyb3VwRGlyZWN0aXZlLFxuICBNZW51R3JvdXBUaXRsZURpcmVjdGl2ZSxcbiAgTWVudUl0ZW1EaXJlY3RpdmUsXG4gIE1lbnVSYWRpb0dyb3VwRGlyZWN0aXZlLFxuICBNZW51VHJpZ2dlckRpcmVjdGl2ZSxcbn0gZnJvbSAnLi9kaXJlY3RpdmVzJztcblxuZXhwb3J0IGNvbnN0IE1lbnVJbXBvcnRzID0gW1xuICBNZW51Q2hlY2tib3hHcm91cERpcmVjdGl2ZSxcbiAgTWVudUdyb3VwRGlyZWN0aXZlLFxuICBNZW51R3JvdXBUaXRsZURpcmVjdGl2ZSxcbiAgTWVudUl0ZW1EaXJlY3RpdmUsXG4gIE1lbnVSYWRpb0dyb3VwRGlyZWN0aXZlLFxuICBNZW51VHJpZ2dlckRpcmVjdGl2ZSxcbiAgTWVudUNoZWNrYm94SXRlbUNvbXBvbmVudCxcbiAgTWVudUNvbXBvbmVudCxcbiAgTWVudVJhZGlvSXRlbUNvbXBvbmVudCxcbl0gYXMgY29uc3Q7XG4iXX0=
@@ -1,17 +1,4 @@
1
- export * from './context-menu-trigger';
2
- export * from './menu';
3
- export * from './menu-aim';
4
- export * from './menu-bar';
5
- export * from './menu-base';
6
- export * from './menu-group';
7
- export * from './menu-interface';
8
- export * from './menu-item';
9
- export * from './menu-item-checkbox';
10
- export * from './menu-item-radio';
11
- export * from './menu-item-selectable';
12
- export * from './menu-module';
13
- export * from './menu-stack';
14
- export * from './menu-trigger';
15
- export * from './menu-trigger-base';
16
- export * from './pointer-focus-tracker';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9vdmVybGF5L2NvbXBvbmVudHMvbWVudS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udGV4dC1tZW51LXRyaWdnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51JztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1haW0nO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LWJhcic7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtZ3JvdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LWludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtaXRlbSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtaXRlbS1jaGVja2JveCc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtaXRlbS1yYWRpbyc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtaXRlbS1zZWxlY3RhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LXN0YWNrJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS10cmlnZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS10cmlnZ2VyLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wb2ludGVyLWZvY3VzLXRyYWNrZXInO1xuIl19
1
+ export * from './components/public-api';
2
+ export * from './directives/public-api';
3
+ export * from './menu.imports';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9vdmVybGF5L2NvbXBvbmVudHMvbWVudS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LmltcG9ydHMnO1xuIl19
@@ -0,0 +1,166 @@
1
+ /* eslint-disable @angular-eslint/directive-class-suffix */
2
+ /* eslint-disable @angular-eslint/no-output-rename */
3
+ /* eslint-disable @angular-eslint/no-outputs-metadata-property */
4
+ /* eslint-disable @angular-eslint/no-input-rename */
5
+ /* eslint-disable @angular-eslint/no-inputs-metadata-property */
6
+ import { Directionality } from '@angular/cdk/bidi';
7
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
8
+ import { Overlay, OverlayConfig, STANDARD_DROPDOWN_BELOW_POSITIONS, } from '@angular/cdk/overlay';
9
+ import { _getEventTarget } from '@angular/cdk/platform';
10
+ import { Directive, Injectable, Input, inject } from '@angular/core';
11
+ import { merge, partition } from 'rxjs';
12
+ import { skip, takeUntil } from 'rxjs/operators';
13
+ import { MENU_STACK, MenuStack } from './menu-stack';
14
+ import { CdkMenuTriggerBase, MENU_TRIGGER } from './menu-trigger-base';
15
+ import * as i0 from "@angular/core";
16
+ const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS.map((position) => {
17
+ const offsetX = position.overlayX === 'start' ? 2 : -2;
18
+ const offsetY = position.overlayY === 'top' ? 2 : -2;
19
+ return { ...position, offsetX, offsetY };
20
+ });
21
+ export class ContextMenuTracker {
22
+ update(trigger) {
23
+ if (ContextMenuTracker._openContextMenuTrigger !== trigger) {
24
+ ContextMenuTracker._openContextMenuTrigger?.close();
25
+ ContextMenuTracker._openContextMenuTrigger = trigger;
26
+ }
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ContextMenuTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
29
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ContextMenuTracker, providedIn: 'root' }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ContextMenuTracker, decorators: [{
32
+ type: Injectable,
33
+ args: [{ providedIn: 'root' }]
34
+ }] });
35
+ /**
36
+ * @deprecated Use the new menu instead
37
+ */
38
+ export class CdkContextMenuTrigger extends CdkMenuTriggerBase {
39
+ get disabled() {
40
+ return this._disabled;
41
+ }
42
+ set disabled(value) {
43
+ this._disabled = coerceBooleanProperty(value);
44
+ }
45
+ constructor() {
46
+ super();
47
+ this._overlay = inject(Overlay);
48
+ this._directionality = inject(Directionality, { optional: true });
49
+ this._contextMenuTracker = inject(ContextMenuTracker);
50
+ this._disabled = false;
51
+ this._setMenuStackCloseListener();
52
+ }
53
+ open(coordinates) {
54
+ this._open(coordinates, false);
55
+ }
56
+ close() {
57
+ this.menuStack.closeAll();
58
+ }
59
+ _openOnContextMenu(event) {
60
+ if (!this.disabled) {
61
+ event.preventDefault();
62
+ event.stopPropagation();
63
+ this._contextMenuTracker.update(this);
64
+ this._open({ x: event.clientX, y: event.clientY }, true);
65
+ if (event.button === 2) {
66
+ this.childMenu?.focusFirstItem('mouse');
67
+ }
68
+ else if (event.button === 0) {
69
+ this.childMenu?.focusFirstItem('keyboard');
70
+ }
71
+ else {
72
+ this.childMenu?.focusFirstItem('program');
73
+ }
74
+ }
75
+ }
76
+ _getOverlayConfig(coordinates) {
77
+ return new OverlayConfig({
78
+ positionStrategy: this._getOverlayPositionStrategy(coordinates),
79
+ scrollStrategy: this._overlay.scrollStrategies.reposition(),
80
+ direction: this._directionality || undefined,
81
+ });
82
+ }
83
+ _getOverlayPositionStrategy(coordinates) {
84
+ return this._overlay
85
+ .position()
86
+ .flexibleConnectedTo(coordinates)
87
+ .withLockedPosition()
88
+ .withGrowAfterOpen()
89
+ .withPositions(this.menuPosition ?? CONTEXT_MENU_POSITIONS);
90
+ }
91
+ _setMenuStackCloseListener() {
92
+ this.menuStack.closed.pipe(takeUntil(this.destroyed)).subscribe(({ item }) => {
93
+ if (item === this.childMenu && this.isOpen()) {
94
+ this.closed.next();
95
+ this.overlayRef.detach();
96
+ }
97
+ });
98
+ }
99
+ _subscribeToOutsideClicks(ignoreFirstAuxClick) {
100
+ if (this.overlayRef) {
101
+ let outsideClicks = this.overlayRef.outsidePointerEvents();
102
+ if (ignoreFirstAuxClick) {
103
+ const [auxClicks, nonAuxClicks] = partition(outsideClicks, ({ type }) => type === 'auxclick');
104
+ outsideClicks = merge(nonAuxClicks, auxClicks.pipe(skip(1)));
105
+ }
106
+ outsideClicks.pipe(takeUntil(this.stopOutsideClicksListener)).subscribe((event) => {
107
+ if (!this.isElementInsideMenuStack(_getEventTarget(event))) {
108
+ this.menuStack.closeAll();
109
+ }
110
+ });
111
+ }
112
+ }
113
+ _open(coordinates, ignoreFirstOutsideAuxClick) {
114
+ if (this.disabled) {
115
+ return;
116
+ }
117
+ if (this.isOpen()) {
118
+ this.menuStack.closeSubMenuOf(this.childMenu);
119
+ this.overlayRef.getConfig().positionStrategy.setOrigin(coordinates);
120
+ this.overlayRef.updatePosition();
121
+ }
122
+ else {
123
+ this.opened.next();
124
+ if (this.overlayRef) {
125
+ this.overlayRef.getConfig().positionStrategy.setOrigin(coordinates);
126
+ this.overlayRef.updatePosition();
127
+ }
128
+ else {
129
+ this.overlayRef = this._overlay.create(this._getOverlayConfig(coordinates));
130
+ }
131
+ this.overlayRef.attach(this.getMenuContentPortal());
132
+ this._subscribeToOutsideClicks(ignoreFirstOutsideAuxClick);
133
+ }
134
+ }
135
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: CdkContextMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
136
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: CdkContextMenuTrigger, isStandalone: true, selector: "[cdkContextMenuTriggerFor]", inputs: { menuTemplateRef: ["cdkContextMenuTriggerFor", "menuTemplateRef"], menuPosition: ["cdkContextMenuPosition", "menuPosition"], menuData: ["cdkContextMenuTriggerData", "menuData"], disabled: ["cdkContextMenuDisabled", "disabled"] }, outputs: { opened: "cdkContextMenuOpened", closed: "cdkContextMenuClosed" }, host: { listeners: { "contextmenu": "_openOnContextMenu($event)" }, properties: { "attr.data-cdk-menu-stack-id": "null" } }, providers: [
137
+ { provide: MENU_TRIGGER, useExisting: CdkContextMenuTrigger },
138
+ { provide: MENU_STACK, useClass: MenuStack },
139
+ ], exportAs: ["cdkContextMenuTriggerFor"], usesInheritance: true, ngImport: i0 }); }
140
+ }
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: CdkContextMenuTrigger, decorators: [{
142
+ type: Directive,
143
+ args: [{
144
+ selector: '[cdkContextMenuTriggerFor]',
145
+ exportAs: 'cdkContextMenuTriggerFor',
146
+ standalone: true,
147
+ host: {
148
+ '[attr.data-cdk-menu-stack-id]': 'null',
149
+ '(contextmenu)': '_openOnContextMenu($event)',
150
+ },
151
+ inputs: [
152
+ 'menuTemplateRef: cdkContextMenuTriggerFor',
153
+ 'menuPosition: cdkContextMenuPosition',
154
+ 'menuData: cdkContextMenuTriggerData',
155
+ ],
156
+ outputs: ['opened: cdkContextMenuOpened', 'closed: cdkContextMenuClosed'],
157
+ providers: [
158
+ { provide: MENU_TRIGGER, useExisting: CdkContextMenuTrigger },
159
+ { provide: MENU_STACK, useClass: MenuStack },
160
+ ],
161
+ }]
162
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
163
+ type: Input,
164
+ args: ['cdkContextMenuDisabled']
165
+ }] } });
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LXRyaWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL21lbnUtZGVwcmVjYXRlZC9jb250ZXh0LW1lbnUtdHJpZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyREFBMkQ7QUFDM0QscURBQXFEO0FBQ3JELGlFQUFpRTtBQUNqRSxvREFBb0Q7QUFDcEQsZ0VBQWdFO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUVMLE9BQU8sRUFDUCxhQUFhLEVBQ2IsaUNBQWlDLEdBQ2xDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRXZFLE1BQU0sc0JBQXNCLEdBQUcsaUNBQWlDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7SUFDaEYsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENB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QUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMseUJBQXlCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7OEdBaEhVLHFCQUFxQjtrR0FBckIscUJBQXFCLGtnQkFMckI7WUFDVCxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFO1lBQzdELEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO1NBQzdDOzsyRkFFVSxxQkFBcUI7a0JBbkJqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0osK0JBQStCLEVBQUUsTUFBTTt3QkFDdkMsZUFBZSxFQUFFLDRCQUE0QjtxQkFDOUM7b0JBQ0QsTUFBTSxFQUFFO3dCQUNOLDJDQUEyQzt3QkFDM0Msc0NBQXNDO3dCQUN0QyxxQ0FBcUM7cUJBQ3RDO29CQUNELE9BQU8sRUFBRSxDQUFDLDhCQUE4QixFQUFFLDhCQUE4QixDQUFDO29CQUN6RSxTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsdUJBQXVCLEVBQUU7d0JBQzdELEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO3FCQUM3QztpQkFDRjt3REFTSyxRQUFRO3NCQURYLEtBQUs7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0cy1tZXRhZGF0YS1wcm9wZXJ0eSAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eSAqL1xuXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgU1RBTkRBUkRfRFJPUERPV05fQkVMT1dfUE9TSVRJT05TLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBfZ2V0RXZlbnRUYXJnZXQgfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RhYmxlLCBJbnB1dCwgT25EZXN0cm95LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1lcmdlLCBwYXJ0aXRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1FTlVfU1RBQ0ssIE1lbnVTdGFjayB9IGZyb20gJy4vbWVudS1zdGFjayc7XG5pbXBvcnQgeyBDZGtNZW51VHJpZ2dlckJhc2UsIE1FTlVfVFJJR0dFUiB9IGZyb20gJy4vbWVudS10cmlnZ2VyLWJhc2UnO1xuXG5jb25zdCBDT05URVhUX01FTlVfUE9TSVRJT05TID0gU1RBTkRBUkRfRFJPUERPV05fQkVMT1dfUE9TSVRJT05TLm1hcCgocG9zaXRpb24pID0+IHtcbiAgY29uc3Qgb2Zmc2V0WCA9IHBvc2l0aW9uLm92ZXJsYXlYID09PSAnc3RhcnQnID8gMiA6IC0yO1xuICBjb25zdCBvZmZzZXRZID0gcG9zaXRpb24ub3ZlcmxheVkgPT09ICd0b3AnID8gMiA6IC0yO1xuICByZXR1cm4geyAuLi5wb3NpdGlvbiwgb2Zmc2V0WCwgb2Zmc2V0WSB9O1xufSk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ29udGV4dE1lbnVUcmFja2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX29wZW5Db250ZXh0TWVudVRyaWdnZXI/OiBDZGtDb250ZXh0TWVudVRyaWdnZXI7XG5cbiAgdXBkYXRlKHRyaWdnZXI6IENka0NvbnRleHRNZW51VHJpZ2dlcikge1xuICAgIGlmIChDb250ZXh0TWVudVRyYWNrZXIuX29wZW5Db250ZXh0TWVudVRyaWdnZXIgIT09IHRyaWdnZXIpIHtcbiAgICAgIENvbnRleHRNZW51VHJhY2tlci5fb3BlbkNvbnRleHRNZW51VHJpZ2dlcj8uY2xvc2UoKTtcbiAgICAgIENvbnRleHRNZW51VHJhY2tlci5fb3BlbkNvbnRleHRNZW51VHJpZ2dlciA9IHRyaWdnZXI7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW51Q29vcmRpbmF0ZXMgPSB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBuZXcgbWVudSBpbnN0ZWFkXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjZGtDb250ZXh0TWVudVRyaWdnZXJGb3JdJyxcbiAgZXhwb3J0QXM6ICdjZGtDb250ZXh0TWVudVRyaWdnZXJGb3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmRhdGEtY2RrLW1lbnUtc3RhY2staWRdJzogJ251bGwnLFxuICAgICcoY29udGV4dG1lbnUpJzogJ19vcGVuT25Db250ZXh0TWVudSgkZXZlbnQpJyxcbiAgfSxcbiAgaW5wdXRzOiBbXG4gICAgJ21lbnVUZW1wbGF0ZVJlZjogY2RrQ29udGV4dE1lbnVUcmlnZ2VyRm9yJyxcbiAgICAnbWVudVBvc2l0aW9uOiBjZGtDb250ZXh0TWVudVBvc2l0aW9uJyxcbiAgICAnbWVudURhdGE6IGNka0NvbnRleHRNZW51VHJpZ2dlckRhdGEnLFxuICBdLFxuICBvdXRwdXRzOiBbJ29wZW5lZDogY2RrQ29udGV4dE1lbnVPcGVuZWQnLCAnY2xvc2VkOiBjZGtDb250ZXh0TWVudUNsb3NlZCddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1FTlVfVFJJR0dFUiwgdXNlRXhpc3Rpbmc6IENka0NvbnRleHRNZW51VHJpZ2dlciB9LFxuICAgIHsgcHJvdmlkZTogTUVOVV9TVEFDSywgdXNlQ2xhc3M6IE1lbnVTdGFjayB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtDb250ZXh0TWVudVRyaWdnZXIgZXh0ZW5kcyBDZGtNZW51VHJpZ2dlckJhc2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpcmVjdGlvbmFsaXR5ID0gaW5qZWN0KERpcmVjdGlvbmFsaXR5LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRleHRNZW51VHJhY2tlciA9IGluamVjdChDb250ZXh0TWVudVRyYWNrZXIpO1xuXG4gIEBJbnB1dCgnY2RrQ29udGV4dE1lbnVEaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX3NldE1lbnVTdGFja0Nsb3NlTGlzdGVuZXIoKTtcbiAgfVxuXG4gIG9wZW4oY29vcmRpbmF0ZXM6IENvbnRleHRNZW51Q29vcmRpbmF0ZXMpIHtcbiAgICB0aGlzLl9vcGVuKGNvb3JkaW5hdGVzLCBmYWxzZSk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLm1lbnVTdGFjay5jbG9zZUFsbCgpO1xuICB9XG5cbiAgX29wZW5PbkNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgdGhpcy5fY29udGV4dE1lbnVUcmFja2VyLnVwZGF0ZSh0aGlzKTtcbiAgICAgIHRoaXMuX29wZW4oeyB4OiBldmVudC5jbGllbnRYLCB5OiBldmVudC5jbGllbnRZIH0sIHRydWUpO1xuXG4gICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICAgIHRoaXMuY2hpbGRNZW51Py5mb2N1c0ZpcnN0SXRlbSgnbW91c2UnKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQuYnV0dG9uID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2hpbGRNZW51Py5mb2N1c0ZpcnN0SXRlbSgna2V5Ym9hcmQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2hpbGRNZW51Py5mb2N1c0ZpcnN0SXRlbSgncHJvZ3JhbScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldE92ZXJsYXlDb25maWcoY29vcmRpbmF0ZXM6IENvbnRleHRNZW51Q29vcmRpbmF0ZXMpIHtcbiAgICByZXR1cm4gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fZ2V0T3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3koY29vcmRpbmF0ZXMpLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBkaXJlY3Rpb246IHRoaXMuX2RpcmVjdGlvbmFsaXR5IHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5KGNvb3JkaW5hdGVzOiBDb250ZXh0TWVudUNvb3JkaW5hdGVzKTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGNvb3JkaW5hdGVzKVxuICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpXG4gICAgICAud2l0aEdyb3dBZnRlck9wZW4oKVxuICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5tZW51UG9zaXRpb24gPz8gQ09OVEVYVF9NRU5VX1BPU0lUSU9OUyk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRNZW51U3RhY2tDbG9zZUxpc3RlbmVyKCkge1xuICAgIHRoaXMubWVudVN0YWNrLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSgoeyBpdGVtIH0pID0+IHtcbiAgICAgIGlmIChpdGVtID09PSB0aGlzLmNoaWxkTWVudSAmJiB0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgIHRoaXMuY2xvc2VkLm5leHQoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmIS5kZXRhY2goKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvT3V0c2lkZUNsaWNrcyhpZ25vcmVGaXJzdEF1eENsaWNrOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgbGV0IG91dHNpZGVDbGlja3MgPSB0aGlzLm92ZXJsYXlSZWYub3V0c2lkZVBvaW50ZXJFdmVudHMoKTtcblxuICAgICAgaWYgKGlnbm9yZUZpcnN0QXV4Q2xpY2spIHtcbiAgICAgICAgY29uc3QgW2F1eENsaWNrcywgbm9uQXV4Q2xpY2tzXSA9IHBhcnRpdGlvbihvdXRzaWRlQ2xpY2tzLCAoeyB0eXBlIH0pID0+IHR5cGUgPT09ICdhdXhjbGljaycpO1xuICAgICAgICBvdXRzaWRlQ2xpY2tzID0gbWVyZ2Uobm9uQXV4Q2xpY2tzLCBhdXhDbGlja3MucGlwZShza2lwKDEpKSk7XG4gICAgICB9XG4gICAgICBvdXRzaWRlQ2xpY2tzLnBpcGUodGFrZVVudGlsKHRoaXMuc3RvcE91dHNpZGVDbGlja3NMaXN0ZW5lcikpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRWxlbWVudEluc2lkZU1lbnVTdGFjayhfZ2V0RXZlbnRUYXJnZXQoZXZlbnQpISkpIHtcbiAgICAgICAgICB0aGlzLm1lbnVTdGFjay5jbG9zZUFsbCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vcGVuKGNvb3JkaW5hdGVzOiBDb250ZXh0TWVudUNvb3JkaW5hdGVzLCBpZ25vcmVGaXJzdE91dHNpZGVBdXhDbGljazogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICB0aGlzLm1lbnVTdGFjay5jbG9zZVN1Yk1lbnVPZih0aGlzLmNoaWxkTWVudSEpO1xuXG4gICAgICAodGhpcy5vdmVybGF5UmVmIS5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5IGFzIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSkuc2V0T3JpZ2luKGNvb3JkaW5hdGVzKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiEudXBkYXRlUG9zaXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuZWQubmV4dCgpO1xuXG4gICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICh0aGlzLm92ZXJsYXlSZWYuZ2V0Q29uZmlnKCkucG9zaXRpb25TdHJhdGVneSBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpLnNldE9yaWdpbihjb29yZGluYXRlcyk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUodGhpcy5fZ2V0T3ZlcmxheUNvbmZpZyhjb29yZGluYXRlcykpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRoaXMuZ2V0TWVudUNvbnRlbnRQb3J0YWwoKSk7XG4gICAgICB0aGlzLl9zdWJzY3JpYmVUb091dHNpZGVDbGlja3MoaWdub3JlRmlyc3RPdXRzaWRlQXV4Q2xpY2spO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,140 @@
1
+ /* eslint-disable @angular-eslint/directive-class-suffix */
2
+ /* eslint-disable @angular-eslint/no-output-rename */
3
+ /* eslint-disable @angular-eslint/no-outputs-metadata-property */
4
+ /* eslint-disable @angular-eslint/no-input-rename */
5
+ /* eslint-disable @angular-eslint/no-inputs-metadata-property */
6
+ import { Directive, inject, Injectable, InjectionToken, isDevMode, NgZone } from '@angular/core';
7
+ import { fromEvent, Subject } from 'rxjs';
8
+ import { filter, takeUntil } from 'rxjs/operators';
9
+ import { throwMissingMenuReference, throwMissingPointerFocusTracker } from './menu-errors';
10
+ import * as i0 from "@angular/core";
11
+ export const MENU_AIM = new InjectionToken('cdk-menu-aim');
12
+ const MOUSE_MOVE_SAMPLE_FREQUENCY = 3;
13
+ const NUM_POINTS = 5;
14
+ const CLOSE_DELAY = 300;
15
+ function getSlope(a, b) {
16
+ return (b.y - a.y) / (b.x - a.x);
17
+ }
18
+ function getYIntercept(point, slope) {
19
+ return point.y - slope * point.x;
20
+ }
21
+ function isWithinSubmenu(submenuPoints, m, b) {
22
+ const { left, right, top, bottom } = submenuPoints;
23
+ return ((m * left + b >= top && m * left + b <= bottom) ||
24
+ (m * right + b >= top && m * right + b <= bottom) ||
25
+ ((top - b) / m >= left && (top - b) / m <= right) ||
26
+ ((bottom - b) / m >= left && (bottom - b) / m <= right));
27
+ }
28
+ export class TargetMenuAim {
29
+ constructor() {
30
+ this._ngZone = inject(NgZone);
31
+ this._points = [];
32
+ this._menu = null;
33
+ this._pointerTracker = null;
34
+ this._timeoutId = null;
35
+ this._destroyed = new Subject();
36
+ }
37
+ ngOnDestroy() {
38
+ this._destroyed.next();
39
+ this._destroyed.complete();
40
+ }
41
+ initialize(menu, pointerTracker) {
42
+ this._menu = menu;
43
+ this._pointerTracker = pointerTracker;
44
+ this._subscribeToMouseMoves();
45
+ }
46
+ toggle(doToggle) {
47
+ if (!this._menu)
48
+ return;
49
+ if (this._menu.orientation === 'horizontal') {
50
+ doToggle();
51
+ }
52
+ this._checkConfigured();
53
+ const siblingItemIsWaiting = !!this._timeoutId;
54
+ const hasPoints = this._points.length > 1;
55
+ if (hasPoints && !siblingItemIsWaiting) {
56
+ if (this._isMovingToSubmenu()) {
57
+ this._startTimeout(doToggle);
58
+ }
59
+ else {
60
+ doToggle();
61
+ }
62
+ }
63
+ else if (!siblingItemIsWaiting) {
64
+ doToggle();
65
+ }
66
+ }
67
+ _startTimeout(doToggle) {
68
+ const timeoutId = window.setTimeout(() => {
69
+ if (!this._pointerTracker)
70
+ return;
71
+ if (this._pointerTracker.activeElement && timeoutId === this._timeoutId) {
72
+ doToggle();
73
+ }
74
+ this._timeoutId = null;
75
+ }, CLOSE_DELAY);
76
+ this._timeoutId = timeoutId;
77
+ }
78
+ _isMovingToSubmenu() {
79
+ const submenuPoints = this._getSubmenuBounds();
80
+ if (!submenuPoints) {
81
+ return false;
82
+ }
83
+ let numMoving = 0;
84
+ const currPoint = this._points[this._points.length - 1];
85
+ for (let i = this._points.length - 2; i >= 0; i--) {
86
+ const previous = this._points[i];
87
+ const slope = getSlope(currPoint, previous);
88
+ if (isWithinSubmenu(submenuPoints, slope, getYIntercept(currPoint, slope))) {
89
+ numMoving++;
90
+ }
91
+ }
92
+ return numMoving >= Math.floor(NUM_POINTS / 2);
93
+ }
94
+ _getSubmenuBounds() {
95
+ return this._pointerTracker?.previousElement?.getMenu()?.nativeElement.getBoundingClientRect();
96
+ }
97
+ _checkConfigured() {
98
+ if (isDevMode()) {
99
+ if (!this._pointerTracker) {
100
+ throwMissingPointerFocusTracker();
101
+ }
102
+ if (!this._menu) {
103
+ throwMissingMenuReference();
104
+ }
105
+ }
106
+ }
107
+ _subscribeToMouseMoves() {
108
+ this._ngZone.runOutsideAngular(() => {
109
+ if (!this._menu)
110
+ return;
111
+ fromEvent(this._menu.nativeElement, 'mousemove')
112
+ .pipe(filter((_, index) => index % MOUSE_MOVE_SAMPLE_FREQUENCY === 0), takeUntil(this._destroyed))
113
+ .subscribe((event) => {
114
+ this._points.push({ x: event.clientX, y: event.clientY });
115
+ if (this._points.length > NUM_POINTS) {
116
+ this._points.shift();
117
+ }
118
+ });
119
+ });
120
+ }
121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TargetMenuAim, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
122
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TargetMenuAim }); }
123
+ }
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TargetMenuAim, decorators: [{
125
+ type: Injectable
126
+ }] });
127
+ export class CdkTargetMenuAim {
128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: CdkTargetMenuAim, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
129
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: CdkTargetMenuAim, isStandalone: true, selector: "[cdkTargetMenuAim]", providers: [{ provide: MENU_AIM, useClass: TargetMenuAim }], exportAs: ["cdkTargetMenuAim"], ngImport: i0 }); }
130
+ }
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: CdkTargetMenuAim, decorators: [{
132
+ type: Directive,
133
+ args: [{
134
+ selector: '[cdkTargetMenuAim]',
135
+ exportAs: 'cdkTargetMenuAim',
136
+ standalone: true,
137
+ providers: [{ provide: MENU_AIM, useClass: TargetMenuAim }],
138
+ }]
139
+ }] });
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1haW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL21lbnUtZGVwcmVjYXRlZC9tZW51LWFpbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyREFBMkQ7QUFDM0QscURBQXFEO0FBQ3JELGlFQUFpRTtBQUNqRSxvREFBb0Q7QUFDcEQsZ0VBQWdFO0FBRWhFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFVM0YsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFVLGNBQWMsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO0FBRXRDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQUVyQixNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFNeEIsU0FBUyxRQUFRLENBQUMsQ0FBUSxFQUFFLENBQVE7SUFDbEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEtBQVksRUFBRSxLQUFhO0lBQ2hELE9BQU8sS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBSUQsU0FBUyxlQUFlLENBQUMsYUFBc0IsRUFBRSxDQUFTLEVBQUUsQ0FBUztJQUNuRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDO0lBRW5ELE9BQU8sQ0FDTCxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUM7UUFDL0MsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLENBQ3hELENBQUM7QUFDSixDQUFDO0FBR0QsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFFbUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6QixZQUFPLEdBQVksRUFBRSxDQUFDO1FBRS9CLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBRTFCLG9CQUFlLEdBQTJELElBQUksQ0FBQztRQUUvRSxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUV4QixlQUFVLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7S0FvRzVEO0lBbEdDLFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFVLEVBQUUsY0FBK0Q7UUFDcEYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFvQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRXhCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEtBQUssWUFBWSxFQUFFO1lBQzNDLFFBQVEsRUFBRSxDQUFDO1NBQ1o7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUUxQyxJQUFJLFNBQVMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3RDLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsUUFBUSxFQUFFLENBQUM7YUFDWjtTQUNGO2FBQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ2hDLFFBQVEsRUFBRSxDQUFDO1NBQ1o7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQW9CO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZTtnQkFBRSxPQUFPO1lBRWxDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3ZFLFFBQVEsRUFBRSxDQUFDO2FBQ1o7WUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV4RCxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFNBQVUsRUFBRSxRQUFTLENBQUMsQ0FBQztZQUM5QyxJQUFJLGVBQWUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxTQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDM0UsU0FBUyxFQUFFLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pHLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN6QiwrQkFBK0IsRUFBRSxDQUFDO2FBQ25DO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2YseUJBQXlCLEVBQUUsQ0FBQzthQUM3QjtTQUNGO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTztZQUV4QixTQUFTLENBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO2lCQUN6RCxJQUFJLENBQ0gsTUFBTSxDQUFDLENBQUMsQ0FBYSxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLDJCQUEyQixLQUFLLENBQUMsQ0FBQyxFQUNuRixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUMzQjtpQkFDQSxTQUFTLENBQUMsQ0FBQyxLQUFpQixFQUFFLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDdEI7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E5R1UsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVOztBQXdIWCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7a0dBQWhCLGdCQUFnQixpRUFGaEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxDQUFDOzsyRkFFaEQsZ0JBQWdCO2tCQU41QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUM1RCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LXJlbmFtZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dHMtbWV0YWRhdGEtcHJvcGVydHkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWUgKi9cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHkgKi9cblxuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBpc0Rldk1vZGUsIE5nWm9uZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdGhyb3dNaXNzaW5nTWVudVJlZmVyZW5jZSwgdGhyb3dNaXNzaW5nUG9pbnRlckZvY3VzVHJhY2tlciB9IGZyb20gJy4vbWVudS1lcnJvcnMnO1xuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4vbWVudS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9jdXNhYmxlRWxlbWVudCwgUG9pbnRlckZvY3VzVHJhY2tlciB9IGZyb20gJy4vcG9pbnRlci1mb2N1cy10cmFja2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51QWltIHtcbiAgaW5pdGlhbGl6ZShtZW51OiBNZW51LCBwb2ludGVyVHJhY2tlcjogUG9pbnRlckZvY3VzVHJhY2tlcjxGb2N1c2FibGVFbGVtZW50ICYgVG9nZ2xlcj4pOiB2b2lkO1xuXG4gIHRvZ2dsZShkb1RvZ2dsZTogKCkgPT4gdm9pZCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBNRU5VX0FJTSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNZW51QWltPignY2RrLW1lbnUtYWltJyk7XG5cbmNvbnN0IE1PVVNFX01PVkVfU0FNUExFX0ZSRVFVRU5DWSA9IDM7XG5cbmNvbnN0IE5VTV9QT0lOVFMgPSA1O1xuXG5jb25zdCBDTE9TRV9ERUxBWSA9IDMwMDtcblxuZXhwb3J0IGludGVyZmFjZSBUb2dnbGVyIHtcbiAgZ2V0TWVudSgpOiBNZW51IHwgdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRTbG9wZShhOiBQb2ludCwgYjogUG9pbnQpIHtcbiAgcmV0dXJuIChiLnkgLSBhLnkpIC8gKGIueCAtIGEueCk7XG59XG5cbmZ1bmN0aW9uIGdldFlJbnRlcmNlcHQocG9pbnQ6IFBvaW50LCBzbG9wZTogbnVtYmVyKSB7XG4gIHJldHVybiBwb2ludC55IC0gc2xvcGUgKiBwb2ludC54O1xufVxuXG50eXBlIFBvaW50ID0geyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuXG5mdW5jdGlvbiBpc1dpdGhpblN1Ym1lbnUoc3VibWVudVBvaW50czogRE9NUmVjdCwgbTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgY29uc3QgeyBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20gfSA9IHN1Ym1lbnVQb2ludHM7XG5cbiAgcmV0dXJuIChcbiAgICAobSAqIGxlZnQgKyBiID49IHRvcCAmJiBtICogbGVmdCArIGIgPD0gYm90dG9tKSB8fFxuICAgIChtICogcmlnaHQgKyBiID49IHRvcCAmJiBtICogcmlnaHQgKyBiIDw9IGJvdHRvbSkgfHxcbiAgICAoKHRvcCAtIGIpIC8gbSA+PSBsZWZ0ICYmICh0b3AgLSBiKSAvIG0gPD0gcmlnaHQpIHx8XG4gICAgKChib3R0b20gLSBiKSAvIG0gPj0gbGVmdCAmJiAoYm90dG9tIC0gYikgLyBtIDw9IHJpZ2h0KVxuICApO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGFyZ2V0TWVudUFpbSBpbXBsZW1lbnRzIE1lbnVBaW0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BvaW50czogUG9pbnRbXSA9IFtdO1xuXG4gIHByaXZhdGUgX21lbnU6IE1lbnUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9wb2ludGVyVHJhY2tlcjogUG9pbnRlckZvY3VzVHJhY2tlcjxUb2dnbGVyICYgRm9jdXNhYmxlRWxlbWVudD4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF90aW1lb3V0SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGluaXRpYWxpemUobWVudTogTWVudSwgcG9pbnRlclRyYWNrZXI6IFBvaW50ZXJGb2N1c1RyYWNrZXI8Rm9jdXNhYmxlRWxlbWVudCAmIFRvZ2dsZXI+KSB7XG4gICAgdGhpcy5fbWVudSA9IG1lbnU7XG4gICAgdGhpcy5fcG9pbnRlclRyYWNrZXIgPSBwb2ludGVyVHJhY2tlcjtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb01vdXNlTW92ZXMoKTtcbiAgfVxuXG4gIHRvZ2dsZShkb1RvZ2dsZTogKCkgPT4gdm9pZCkge1xuICAgIGlmICghdGhpcy5fbWVudSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuX21lbnUub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgZG9Ub2dnbGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGVja0NvbmZpZ3VyZWQoKTtcblxuICAgIGNvbnN0IHNpYmxpbmdJdGVtSXNXYWl0aW5nID0gISF0aGlzLl90aW1lb3V0SWQ7XG4gICAgY29uc3QgaGFzUG9pbnRzID0gdGhpcy5fcG9pbnRzLmxlbmd0aCA+IDE7XG5cbiAgICBpZiAoaGFzUG9pbnRzICYmICFzaWJsaW5nSXRlbUlzV2FpdGluZykge1xuICAgICAgaWYgKHRoaXMuX2lzTW92aW5nVG9TdWJtZW51KCkpIHtcbiAgICAgICAgdGhpcy5fc3RhcnRUaW1lb3V0KGRvVG9nZ2xlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvVG9nZ2xlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghc2libGluZ0l0ZW1Jc1dhaXRpbmcpIHtcbiAgICAgIGRvVG9nZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3RhcnRUaW1lb3V0KGRvVG9nZ2xlOiAoKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9wb2ludGVyVHJhY2tlcikgcmV0dXJuO1xuXG4gICAgICBpZiAodGhpcy5fcG9pbnRlclRyYWNrZXIuYWN0aXZlRWxlbWVudCAmJiB0aW1lb3V0SWQgPT09IHRoaXMuX3RpbWVvdXRJZCkge1xuICAgICAgICBkb1RvZ2dsZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5fdGltZW91dElkID0gbnVsbDtcbiAgICB9LCBDTE9TRV9ERUxBWSk7XG5cbiAgICB0aGlzLl90aW1lb3V0SWQgPSB0aW1lb3V0SWQ7XG4gIH1cblxuICBwcml2YXRlIF9pc01vdmluZ1RvU3VibWVudSgpIHtcbiAgICBjb25zdCBzdWJtZW51UG9pbnRzID0gdGhpcy5fZ2V0U3VibWVudUJvdW5kcygpO1xuICAgIGlmICghc3VibWVudVBvaW50cykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBudW1Nb3ZpbmcgPSAwO1xuICAgIGNvbnN0IGN1cnJQb2ludCA9IHRoaXMuX3BvaW50c1t0aGlzLl9wb2ludHMubGVuZ3RoIC0gMV07XG5cbiAgICBmb3IgKGxldCBpID0gdGhpcy5fcG9pbnRzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuX3BvaW50c1tpXTtcbiAgICAgIGNvbnN0IHNsb3BlID0gZ2V0U2xvcGUoY3VyclBvaW50ISwgcHJldmlvdXMhKTtcbiAgICAgIGlmIChpc1dpdGhpblN1Ym1lbnUoc3VibWVudVBvaW50cywgc2xvcGUsIGdldFlJbnRlcmNlcHQoY3VyclBvaW50ISwgc2xvcGUpKSkge1xuICAgICAgICBudW1Nb3ZpbmcrKztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bU1vdmluZyA+PSBNYXRoLmZsb29yKE5VTV9QT0lOVFMgLyAyKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFN1Ym1lbnVCb3VuZHMoKTogRE9NUmVjdCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BvaW50ZXJUcmFja2VyPy5wcmV2aW91c0VsZW1lbnQ/LmdldE1lbnUoKT8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrQ29uZmlndXJlZCgpIHtcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIGlmICghdGhpcy5fcG9pbnRlclRyYWNrZXIpIHtcbiAgICAgICAgdGhyb3dNaXNzaW5nUG9pbnRlckZvY3VzVHJhY2tlcigpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLl9tZW51KSB7XG4gICAgICAgIHRocm93TWlzc2luZ01lbnVSZWZlcmVuY2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb01vdXNlTW92ZXMoKSB7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5fbWVudSkgcmV0dXJuO1xuXG4gICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fbWVudS5uYXRpdmVFbGVtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChfOiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyKSA9PiBpbmRleCAlIE1PVVNFX01PVkVfU0FNUExFX0ZSRVFVRU5DWSA9PT0gMCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9wb2ludHMucHVzaCh7IHg6IGV2ZW50LmNsaWVudFgsIHk6IGV2ZW50LmNsaWVudFkgfSk7XG4gICAgICAgICAgaWYgKHRoaXMuX3BvaW50cy5sZW5ndGggPiBOVU1fUE9JTlRTKSB7XG4gICAgICAgICAgICB0aGlzLl9wb2ludHMuc2hpZnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjZGtUYXJnZXRNZW51QWltXScsXG4gIGV4cG9ydEFzOiAnY2RrVGFyZ2V0TWVudUFpbScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTUVOVV9BSU0sIHVzZUNsYXNzOiBUYXJnZXRNZW51QWltIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtUYXJnZXRNZW51QWltIHt9XG4iXX0=