@spartan-ng/brain 0.0.1-alpha.563 → 0.0.1-alpha.564

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 (272) hide show
  1. package/accordion/index.d.ts +125 -10
  2. package/alert-dialog/index.d.ts +40 -13
  3. package/autocomplete/index.d.ts +113 -15
  4. package/avatar/index.d.ts +40 -8
  5. package/button/index.d.ts +15 -3
  6. package/calendar/index.d.ts +465 -29
  7. package/checkbox/index.d.ts +156 -3
  8. package/collapsible/index.d.ts +70 -8
  9. package/command/index.d.ts +147 -16
  10. package/core/index.d.ts +153 -11
  11. package/date-time/index.d.ts +321 -3
  12. package/date-time-luxon/index.d.ts +32 -1
  13. package/dialog/index.d.ts +225 -21
  14. package/fesm2022/spartan-ng-brain-accordion.mjs +12 -12
  15. package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -1
  16. package/fesm2022/spartan-ng-brain-alert-dialog.mjs +18 -18
  17. package/fesm2022/spartan-ng-brain-alert-dialog.mjs.map +1 -1
  18. package/fesm2022/spartan-ng-brain-autocomplete.mjs +18 -18
  19. package/fesm2022/spartan-ng-brain-autocomplete.mjs.map +1 -1
  20. package/fesm2022/spartan-ng-brain-avatar.mjs +12 -12
  21. package/fesm2022/spartan-ng-brain-avatar.mjs.map +1 -1
  22. package/fesm2022/spartan-ng-brain-button.mjs +3 -3
  23. package/fesm2022/spartan-ng-brain-button.mjs.map +1 -1
  24. package/fesm2022/spartan-ng-brain-calendar.mjs +42 -42
  25. package/fesm2022/spartan-ng-brain-calendar.mjs.map +1 -1
  26. package/fesm2022/spartan-ng-brain-checkbox.mjs +5 -5
  27. package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -1
  28. package/fesm2022/spartan-ng-brain-collapsible.mjs +9 -9
  29. package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -1
  30. package/fesm2022/spartan-ng-brain-command.mjs +29 -34
  31. package/fesm2022/spartan-ng-brain-command.mjs.map +1 -1
  32. package/fesm2022/spartan-ng-brain-core.mjs.map +1 -1
  33. package/fesm2022/spartan-ng-brain-date-time-luxon.mjs.map +1 -1
  34. package/fesm2022/spartan-ng-brain-date-time.mjs.map +1 -1
  35. package/fesm2022/spartan-ng-brain-dialog.mjs +24 -24
  36. package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -1
  37. package/fesm2022/spartan-ng-brain-form-field.mjs +3 -3
  38. package/fesm2022/spartan-ng-brain-form-field.mjs.map +1 -1
  39. package/fesm2022/spartan-ng-brain-forms.mjs +6 -6
  40. package/fesm2022/spartan-ng-brain-forms.mjs.map +1 -1
  41. package/fesm2022/spartan-ng-brain-hover-card.mjs +12 -12
  42. package/fesm2022/spartan-ng-brain-hover-card.mjs.map +1 -1
  43. package/fesm2022/spartan-ng-brain-input-otp.mjs +6 -6
  44. package/fesm2022/spartan-ng-brain-input-otp.mjs.map +1 -1
  45. package/fesm2022/spartan-ng-brain-label.mjs +3 -3
  46. package/fesm2022/spartan-ng-brain-label.mjs.map +1 -1
  47. package/fesm2022/spartan-ng-brain-menu.mjs +24 -24
  48. package/fesm2022/spartan-ng-brain-menu.mjs.map +1 -1
  49. package/fesm2022/spartan-ng-brain-navigation-menu.mjs +21 -21
  50. package/fesm2022/spartan-ng-brain-navigation-menu.mjs.map +1 -1
  51. package/fesm2022/spartan-ng-brain-popover.mjs +12 -12
  52. package/fesm2022/spartan-ng-brain-popover.mjs.map +1 -1
  53. package/fesm2022/spartan-ng-brain-progress.mjs +6 -6
  54. package/fesm2022/spartan-ng-brain-progress.mjs.map +1 -1
  55. package/fesm2022/spartan-ng-brain-radio-group.mjs +6 -6
  56. package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -1
  57. package/fesm2022/spartan-ng-brain-resizable.mjs +10 -11
  58. package/fesm2022/spartan-ng-brain-resizable.mjs.map +1 -1
  59. package/fesm2022/spartan-ng-brain-select.mjs +33 -33
  60. package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
  61. package/fesm2022/spartan-ng-brain-separator.mjs +3 -3
  62. package/fesm2022/spartan-ng-brain-separator.mjs.map +1 -1
  63. package/fesm2022/spartan-ng-brain-sheet.mjs +21 -21
  64. package/fesm2022/spartan-ng-brain-sheet.mjs.map +1 -1
  65. package/fesm2022/spartan-ng-brain-slider.mjs +17 -17
  66. package/fesm2022/spartan-ng-brain-slider.mjs.map +1 -1
  67. package/fesm2022/spartan-ng-brain-switch.mjs +8 -8
  68. package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -1
  69. package/fesm2022/spartan-ng-brain-tabs.mjs +15 -15
  70. package/fesm2022/spartan-ng-brain-tabs.mjs.map +1 -1
  71. package/fesm2022/spartan-ng-brain-toggle-group.mjs +6 -6
  72. package/fesm2022/spartan-ng-brain-toggle-group.mjs.map +1 -1
  73. package/fesm2022/spartan-ng-brain-toggle.mjs +3 -3
  74. package/fesm2022/spartan-ng-brain-toggle.mjs.map +1 -1
  75. package/fesm2022/spartan-ng-brain-tooltip.mjs +14 -14
  76. package/fesm2022/spartan-ng-brain-tooltip.mjs.map +1 -1
  77. package/fesm2022/spartan-ng-brain.mjs.map +1 -1
  78. package/form-field/index.d.ts +14 -1
  79. package/forms/index.d.ts +35 -3
  80. package/hover-card/index.d.ts +86 -5
  81. package/index.d.ts +2 -2
  82. package/input-otp/index.d.ts +82 -5
  83. package/label/index.d.ts +20 -3
  84. package/menu/index.d.ts +79 -17
  85. package/navigation-menu/index.d.ts +185 -13
  86. package/package.json +24 -24
  87. package/popover/index.d.ts +39 -9
  88. package/progress/index.d.ts +39 -6
  89. package/radio-group/index.d.ts +124 -6
  90. package/resizable/index.d.ts +103 -3
  91. package/select/index.d.ts +217 -21
  92. package/separator/index.d.ts +27 -4
  93. package/sheet/index.d.ts +51 -15
  94. package/slider/index.d.ts +100 -12
  95. package/switch/index.d.ts +141 -5
  96. package/tabs/index.d.ts +276 -10
  97. package/toggle/index.d.ts +30 -3
  98. package/toggle-group/index.d.ts +108 -6
  99. package/tooltip/index.d.ts +261 -10
  100. package/accordion/lib/brn-accordion-content.d.ts +0 -20
  101. package/accordion/lib/brn-accordion-item.d.ts +0 -28
  102. package/accordion/lib/brn-accordion-token.d.ts +0 -19
  103. package/accordion/lib/brn-accordion-trigger.d.ts +0 -16
  104. package/accordion/lib/brn-accordion.d.ts +0 -39
  105. package/alert-dialog/lib/brn-alert-dialog-content.d.ts +0 -6
  106. package/alert-dialog/lib/brn-alert-dialog-description.d.ts +0 -6
  107. package/alert-dialog/lib/brn-alert-dialog-overlay.d.ts +0 -6
  108. package/alert-dialog/lib/brn-alert-dialog-title.d.ts +0 -6
  109. package/alert-dialog/lib/brn-alert-dialog-trigger.d.ts +0 -10
  110. package/alert-dialog/lib/brn-alert-dialog.d.ts +0 -7
  111. package/autocomplete/lib/brn-autocomplete-empty.d.ts +0 -11
  112. package/autocomplete/lib/brn-autocomplete-group.d.ts +0 -8
  113. package/autocomplete/lib/brn-autocomplete-item.d.ts +0 -32
  114. package/autocomplete/lib/brn-autocomplete-item.token.d.ts +0 -4
  115. package/autocomplete/lib/brn-autocomplete-list.d.ts +0 -8
  116. package/autocomplete/lib/brn-autocomplete-search-input.d.ts +0 -13
  117. package/autocomplete/lib/brn-autocomplete.d.ts +0 -30
  118. package/autocomplete/lib/brn-autocomplete.token.d.ts +0 -5
  119. package/avatar/lib/brn-avatar.d.ts +0 -7
  120. package/avatar/lib/fallback/brn-avatar-fallback.d.ts +0 -9
  121. package/avatar/lib/fallback/index.d.ts +0 -1
  122. package/avatar/lib/image/brn-avatar-image.d.ts +0 -9
  123. package/avatar/lib/image/index.d.ts +0 -1
  124. package/avatar/lib/util/hex-color-for.d.ts +0 -1
  125. package/avatar/lib/util/index.d.ts +0 -3
  126. package/avatar/lib/util/initials.pipe.d.ts +0 -7
  127. package/avatar/lib/util/is-bright.d.ts +0 -1
  128. package/button/lib/brn-button.d.ts +0 -10
  129. package/calendar/lib/brn-calendar-cell-button.d.ts +0 -62
  130. package/calendar/lib/brn-calendar-cell.d.ts +0 -5
  131. package/calendar/lib/brn-calendar-grid.d.ts +0 -7
  132. package/calendar/lib/brn-calendar-header.d.ts +0 -7
  133. package/calendar/lib/brn-calendar-month-select.d.ts +0 -17
  134. package/calendar/lib/brn-calendar-next-button.d.ts +0 -13
  135. package/calendar/lib/brn-calendar-previous-button.d.ts +0 -13
  136. package/calendar/lib/brn-calendar-week.d.ts +0 -25
  137. package/calendar/lib/brn-calendar-weekday.d.ts +0 -28
  138. package/calendar/lib/brn-calendar-year-select.d.ts +0 -16
  139. package/calendar/lib/brn-calendar.d.ts +0 -74
  140. package/calendar/lib/brn-calendar.token.d.ts +0 -22
  141. package/calendar/lib/i18n/calendar-i18n.d.ts +0 -32
  142. package/calendar/lib/mode/brn-calendar-multiple.d.ts +0 -77
  143. package/calendar/lib/mode/brn-calendar-range.d.ts +0 -79
  144. package/checkbox/lib/brn-checkbox.d.ts +0 -151
  145. package/collapsible/lib/brn-collapsible-content.d.ts +0 -15
  146. package/collapsible/lib/brn-collapsible-token.d.ts +0 -16
  147. package/collapsible/lib/brn-collapsible-trigger.d.ts +0 -9
  148. package/collapsible/lib/brn-collapsible.d.ts +0 -24
  149. package/command/lib/brn-command-empty.d.ts +0 -11
  150. package/command/lib/brn-command-group.d.ts +0 -12
  151. package/command/lib/brn-command-item.d.ts +0 -42
  152. package/command/lib/brn-command-item.token.d.ts +0 -4
  153. package/command/lib/brn-command-list.d.ts +0 -8
  154. package/command/lib/brn-command-search-input.d.ts +0 -24
  155. package/command/lib/brn-command-search-input.token.d.ts +0 -4
  156. package/command/lib/brn-command.d.ts +0 -29
  157. package/command/lib/brn-command.token.d.ts +0 -11
  158. package/core/helpers/computed-previous.d.ts +0 -36
  159. package/core/helpers/create-hover-observable.d.ts +0 -7
  160. package/core/helpers/create-injection-token.d.ts +0 -20
  161. package/core/helpers/custom-element-class-settable.d.ts +0 -12
  162. package/core/helpers/debounced-signal.d.ts +0 -9
  163. package/core/helpers/dev-mode.d.ts +0 -5
  164. package/core/helpers/exposes-side.d.ts +0 -13
  165. package/core/helpers/exposes-state.d.ts +0 -13
  166. package/core/helpers/measure-dimensions.d.ts +0 -5
  167. package/core/helpers/table-classes-settable.d.ts +0 -16
  168. package/core/helpers/wait-for-element-animations.d.ts +0 -5
  169. package/core/helpers/zone-free.d.ts +0 -10
  170. package/date-time/lib/date-adapter.d.ts +0 -186
  171. package/date-time/lib/native-date-adapter.d.ts +0 -103
  172. package/date-time/lib/utc-date-adapter.d.ts +0 -28
  173. package/date-time-luxon/lib/date-adapter.d.ts +0 -29
  174. package/dialog/lib/brn-dialog-close.d.ts +0 -8
  175. package/dialog/lib/brn-dialog-content.d.ts +0 -12
  176. package/dialog/lib/brn-dialog-description.d.ts +0 -8
  177. package/dialog/lib/brn-dialog-options.d.ts +0 -26
  178. package/dialog/lib/brn-dialog-overlay.d.ts +0 -9
  179. package/dialog/lib/brn-dialog-ref.d.ts +0 -24
  180. package/dialog/lib/brn-dialog-state.d.ts +0 -1
  181. package/dialog/lib/brn-dialog-title.d.ts +0 -8
  182. package/dialog/lib/brn-dialog-token.d.ts +0 -29
  183. package/dialog/lib/brn-dialog-trigger.d.ts +0 -18
  184. package/dialog/lib/brn-dialog-utils.d.ts +0 -1
  185. package/dialog/lib/brn-dialog.d.ts +0 -61
  186. package/dialog/lib/brn-dialog.service.d.ts +0 -23
  187. package/form-field/lib/brn-form-field-control.d.ts +0 -11
  188. package/forms/lib/control-value-accessor.d.ts +0 -2
  189. package/forms/lib/error-options.d.ts +0 -14
  190. package/forms/lib/error-state-tracker.d.ts +0 -15
  191. package/hover-card/lib/brn-hover-card-content.service.d.ts +0 -72
  192. package/hover-card/lib/brn-hover-card.d.ts +0 -9
  193. package/input-otp/lib/brn-input-otp-slot.d.ts +0 -15
  194. package/input-otp/lib/brn-input-otp.d.ts +0 -61
  195. package/input-otp/lib/brn-input-otp.token.d.ts +0 -5
  196. package/label/lib/brn-label.d.ts +0 -15
  197. package/menu/lib/brn-context-menu-trigger.d.ts +0 -14
  198. package/menu/lib/brn-menu-align.d.ts +0 -4
  199. package/menu/lib/brn-menu-bar.d.ts +0 -6
  200. package/menu/lib/brn-menu-group.d.ts +0 -6
  201. package/menu/lib/brn-menu-item-checkbox.d.ts +0 -11
  202. package/menu/lib/brn-menu-item-radio.d.ts +0 -11
  203. package/menu/lib/brn-menu-item.d.ts +0 -10
  204. package/menu/lib/brn-menu-trigger.d.ts +0 -11
  205. package/menu/lib/brn-menu.d.ts +0 -11
  206. package/navigation-menu/lib/brn-navigation-menu-content.d.ts +0 -22
  207. package/navigation-menu/lib/brn-navigation-menu-content.service.d.ts +0 -44
  208. package/navigation-menu/lib/brn-navigation-menu-item-focusable.token.d.ts +0 -4
  209. package/navigation-menu/lib/brn-navigation-menu-item.d.ts +0 -23
  210. package/navigation-menu/lib/brn-navigation-menu-item.token.d.ts +0 -5
  211. package/navigation-menu/lib/brn-navigation-menu-link.d.ts +0 -22
  212. package/navigation-menu/lib/brn-navigation-menu-list.d.ts +0 -7
  213. package/navigation-menu/lib/brn-navigation-menu-trigger.d.ts +0 -44
  214. package/navigation-menu/lib/brn-navigation-menu.d.ts +0 -61
  215. package/navigation-menu/lib/brn-navigation-menu.token.d.ts +0 -5
  216. package/navigation-menu/lib/brn-parent-nav-menu.token.d.ts +0 -8
  217. package/popover/lib/brn-popover-close.d.ts +0 -6
  218. package/popover/lib/brn-popover-content.d.ts +0 -6
  219. package/popover/lib/brn-popover-trigger.d.ts +0 -10
  220. package/popover/lib/brn-popover.d.ts +0 -15
  221. package/progress/lib/brn-progress-indicator.d.ts +0 -6
  222. package/progress/lib/brn-progress.d.ts +0 -24
  223. package/progress/lib/brn-progress.token.d.ts +0 -4
  224. package/radio-group/lib/brn-radio-group.d.ts +0 -59
  225. package/radio-group/lib/brn-radio-group.token.d.ts +0 -4
  226. package/radio-group/lib/brn-radio.d.ts +0 -58
  227. package/resizable/lib/brn-resizable-group.d.ts +0 -37
  228. package/resizable/lib/brn-resizable-handle.d.ts +0 -26
  229. package/resizable/lib/brn-resizable-panel.d.ts +0 -39
  230. package/select/lib/brn-select-content.d.ts +0 -48
  231. package/select/lib/brn-select-content.token.d.ts +0 -4
  232. package/select/lib/brn-select-group.d.ts +0 -6
  233. package/select/lib/brn-select-label.d.ts +0 -9
  234. package/select/lib/brn-select-option.d.ts +0 -25
  235. package/select/lib/brn-select-placeholder.d.ts +0 -8
  236. package/select/lib/brn-select-trigger.d.ts +0 -24
  237. package/select/lib/brn-select-value-template.d.ts +0 -11
  238. package/select/lib/brn-select-value.d.ts +0 -18
  239. package/select/lib/brn-select.d.ts +0 -69
  240. package/select/lib/brn-select.token.d.ts +0 -4
  241. package/separator/lib/brn-separator.d.ts +0 -14
  242. package/separator/lib/brn-separator.token.d.ts +0 -7
  243. package/sheet/lib/brn-sheet-close.d.ts +0 -6
  244. package/sheet/lib/brn-sheet-content.d.ts +0 -8
  245. package/sheet/lib/brn-sheet-description.d.ts +0 -6
  246. package/sheet/lib/brn-sheet-overlay.d.ts +0 -6
  247. package/sheet/lib/brn-sheet-title.d.ts +0 -6
  248. package/sheet/lib/brn-sheet-trigger.d.ts +0 -10
  249. package/sheet/lib/brn-sheet.d.ts +0 -10
  250. package/slider/lib/brn-slider-range.d.ts +0 -7
  251. package/slider/lib/brn-slider-thumb.d.ts +0 -24
  252. package/slider/lib/brn-slider-tick.d.ts +0 -12
  253. package/slider/lib/brn-slider-track.d.ts +0 -12
  254. package/slider/lib/brn-slider-track.token.d.ts +0 -5
  255. package/slider/lib/brn-slider.d.ts +0 -39
  256. package/slider/lib/brn-slider.token.d.ts +0 -4
  257. package/switch/lib/brn-switch-thumb.d.ts +0 -5
  258. package/switch/lib/brn-switch.d.ts +0 -131
  259. package/tabs/lib/brn-tabs-content.d.ts +0 -15
  260. package/tabs/lib/brn-tabs-list.d.ts +0 -17
  261. package/tabs/lib/brn-tabs-paginated-list.d.ts +0 -196
  262. package/tabs/lib/brn-tabs-trigger.d.ts +0 -21
  263. package/tabs/lib/brn-tabs.d.ts +0 -38
  264. package/toggle/lib/brn-toggle.d.ts +0 -25
  265. package/toggle-group/lib/brn-toggle-group.d.ts +0 -68
  266. package/toggle-group/lib/brn-toggle-group.token.d.ts +0 -4
  267. package/toggle-group/lib/brn-toggle-item.d.ts +0 -31
  268. package/tooltip/lib/brn-tooltip-content-template.d.ts +0 -8
  269. package/tooltip/lib/brn-tooltip-content.d.ts +0 -73
  270. package/tooltip/lib/brn-tooltip-trigger.d.ts +0 -141
  271. package/tooltip/lib/brn-tooltip.d.ts +0 -7
  272. package/tooltip/lib/brn-tooltip.token.d.ts +0 -28
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-navigation-menu.mjs","sources":["../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.service.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item-focusable.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-link.ts","../../../../libs/brain/navigation-menu/src/lib/brn-parent-nav-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-list.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-trigger.ts","../../../../libs/brain/navigation-menu/src/index.ts","../../../../libs/brain/navigation-menu/src/spartan-ng-brain-navigation-menu.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayConfig,\n\tOverlayPositionBuilder,\n\tOverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tElementRef,\n\tinject,\n\tInjectable,\n\tNgZone,\n\tRenderer2,\n\tsignal,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport { createHoverObservable, waitForElementAnimations } from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, Observable, of, Subject } from 'rxjs';\nimport { map, share, switchMap, takeUntil } from 'rxjs/operators';\n\nexport type BrnNavigationMenuContentOptions = Partial<\n\t{\n\t\tattachTo: ElementRef<HTMLElement>;\n\t\torientation: 'horizontal' | 'vertical';\n\t} & OverlayConfig\n>;\n\nconst horizontalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n];\n\nconst verticalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'top',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'top',\n\t\toverlayX: 'end',\n\t\toverlayY: 'top',\n\t},\n];\n\n@Injectable()\nexport class BrnNavigationMenuContentService {\n\tprivate static _id = 0;\n\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\n\tpublic readonly id = `brn-navigation-menu-content-${++BrnNavigationMenuContentService._id}`;\n\n\tprivate _shouldDetach = false;\n\n\tprivate _config: BrnNavigationMenuContentOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _contentEl = signal<HTMLElement | undefined>(undefined);\n\tpublic readonly contentEl = this._contentEl.asReadonly();\n\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tprivate readonly _overlayShiftTabObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tprivate readonly _overlayEscapeObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable !== undefined ? overlayHoveredObservable : of())),\n\t\tshare(),\n\t);\n\n\tprivate readonly _shiftTabPressed$ = this._overlayShiftTabObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tpublic readonly escapePressed$ = this._overlayEscapeObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tconstructor() {\n\t\tthis._shiftTabPressed$.pipe(takeUntil(this._destroyed$)).subscribe((e) => {\n\t\t\tif (this._config.attachTo?.nativeElement) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._config.attachTo.nativeElement.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic setConfig(config: BrnNavigationMenuContentOptions) {\n\t\tthis._config = config;\n\n\t\tif (config.attachTo) {\n\t\t\tconst positions = this._getPositions(config.orientation);\n\t\t\tthis._positionStrategy = this._buildPositionStrategy(config.attachTo, positions);\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t}\n\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic updateOrientation(orientation: 'horizontal' | 'vertical') {\n\t\tif (!this._config.attachTo) return;\n\n\t\tconst positions = this._getPositions(orientation);\n\t\tthis._positionStrategy = this._buildPositionStrategy(this._config.attachTo, positions);\n\n\t\tthis._config = {\n\t\t\t...this._config,\n\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t};\n\n\t\tthis._overlayRef?.updatePositionStrategy(this._positionStrategy);\n\t}\n\n\tpublic updateDirection(dir: Direction) {\n\t\tthis._overlayRef?.setDirection(dir);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown>, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\t\tthis._shouldDetach = false;\n\n\t\tthis._overlayRef?.detach();\n\t\tconst embededViewRef = this._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tconst contentEl = embededViewRef.rootNodes[0] as HTMLElement;\n\n\t\tconst attachToId = this._config.attachTo?.nativeElement.id;\n\n\t\tthis._renderer.setAttribute(contentEl, 'id', this.id);\n\t\tif (attachToId !== undefined) {\n\t\t\tthis._renderer.setAttribute(contentEl, 'aria-labelledby', attachToId);\n\t\t}\n\n\t\tthis._contentEl.set(contentEl);\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\n\t\tthis._overlayShiftTabObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Tab' && e.shiftKey && e.target === this.contentEl() ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\n\t\tthis._overlayEscapeObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Escape' && !hasModifierKey(e) ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\t}\n\n\tpublic async hide() {\n\t\tconst contentEl = this._contentEl();\n\t\tif (!contentEl) return;\n\n\t\tthis._shouldDetach = true;\n\t\tif (!this._hasAnimation()) {\n\t\t\tthis._detach();\n\t\t}\n\n\t\tawait waitForElementAnimations(contentEl);\n\t\tthis._detach();\n\t}\n\n\tprivate readonly _detach = () => {\n\t\tif (!this._shouldDetach) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._contentEl.set(undefined);\n\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t};\n\n\tprivate _hasAnimation() {\n\t\tconst contentEl = this.contentEl();\n\t\tif (!contentEl) return;\n\n\t\treturn getComputedStyle(contentEl).animationName !== 'none';\n\t}\n\n\tprivate _getPositions(orientation?: 'horizontal' | 'vertical') {\n\t\treturn orientation === 'vertical' ? verticalPositions : horizontalPositions;\n\t}\n\n\tprivate _buildPositionStrategy(attachTo: ElementRef, positions: ConnectedPosition[]) {\n\t\treturn this._psBuilder\n\t\t\t.flexibleConnectedTo(attachTo)\n\t\t\t.withPositions(positions)\n\t\t\t.withDefaultOffsetY(0)\n\t\t\t.withDefaultOffsetX(0)\n\t\t\t.withPush(false);\n\t}\n}\n","import type { FocusableOption } from '@angular/cdk/a11y';\nimport { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\n\nexport const BrnNavigationMenuFocusable = new InjectionToken<FocusableOption>('BrnNavigationMenuFocusable');\n\nexport function provideBrnNavigationMenuFocusable<T extends FocusableOption>(focusable: Type<T>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuFocusable, useExisting: focusable };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenuItem } from './brn-navigation-menu-item';\n\nexport const BrnNavigationMenuItemToken = new InjectionToken<BrnNavigationMenuItem>('BrnNavigationMenuItemToken');\n\nexport function injectBrnNavigationMenuItem(): BrnNavigationMenuItem {\n\treturn inject(BrnNavigationMenuItemToken);\n}\n\nexport function provideBrnNavigationMenuItem(navigationMenuItem: Type<BrnNavigationMenuItem>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuItemToken, useExisting: navigationMenuItem };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenu } from './brn-navigation-menu';\n\nexport const BrnNavigationMenuToken = new InjectionToken<BrnNavigationMenu>('BrnNavigationMenuToken');\n\nexport function injectBrnNavigationMenu(): BrnNavigationMenu {\n\treturn inject(BrnNavigationMenuToken);\n}\n\nexport function provideBrnNavigationMenu(navigationMenu: Type<BrnNavigationMenu>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuToken, useExisting: navigationMenu };\n}\n","import { computed, contentChild, Directive, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { Observable, Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { provideBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'li[brnNavigationMenuItem]',\n\tproviders: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService],\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'[attr.data-disabled]': 'disabled() || null',\n\t\t'data-slot': 'navigation-menu-item',\n\t},\n})\nexport class BrnNavigationMenuItem {\n\tprivate static _id = 0;\n\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tpublic readonly navMenuElRef = this._navigationMenu.el;\n\n\t/** The id of the navigation menu item */\n\tpublic readonly id = input<string>(`brn-navigation-menu-item-${++BrnNavigationMenuItem._id}`);\n\n\tpublic readonly isActive = computed(() => this.id() === this._navigationMenu.value());\n\n\tpublic readonly wasActive = computed(() => this.id() === this._navigationMenu.previousValue());\n\n\tpublic readonly state = computed(() => (this.isActive() ? 'open' : 'closed'));\n\n\tpublic readonly contentTemplate = signal<TemplateRef<unknown> | null>(null);\n\n\tpublic readonly contentHovered$ = this._contentService.hovered$;\n\n\tpublic readonly subNavVisible$ = new Subject<Observable<boolean>>();\n\n\tpublic readonly focusable = contentChild.required(BrnNavigationMenuFocusable);\n\n\tprivate readonly _triggerOrLinkBtn = contentChild.required(BrnNavigationMenuFocusable, { read: BrnButton });\n\n\tpublic readonly disabled = computed(() => this._triggerOrLinkBtn().disabled());\n}\n","import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'a[brnNavigationMenuLink]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(click)': 'onClick()',\n\t\t'(mouseenter)': 'activate()',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[attr.data-active]': '_isActive() ? \"\" : undefined',\n\t\t'[attr.aria-current]': '_isActive() ? \"page\" : undefined',\n\t\t'data-slot': 'navigation-menu-link',\n\t},\n})\nexport class BrnNavigationMenuLink implements FocusableOption {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _el = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n\t// Returns false if this BrnNavigationMenuLink is used \"standalone\", meaning it doesn't have a parent BrnNavigationMenuItem element.\n\tprivate readonly _hasParentNavMenuItem =\n\t\tthis._el.nativeElement.parentElement === this._navigationMenuItem.el.nativeElement;\n\n\t/**\n\t * Used to identify the link as the currently active page.\n\t */\n\tpublic readonly active = input<boolean | undefined, BooleanInput>(undefined, { transform: booleanAttribute });\n\n\tprotected readonly _isActive = computed(() => {\n\t\tconst active = this.active();\n\t\tif (active !== undefined) return active;\n\n\t\tif (!this._hasParentNavMenuItem) return false;\n\n\t\treturn this._navigationMenuItem.isActive();\n\t});\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (!this._hasParentNavMenuItem || this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onClick() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprotected activate() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n}\n","import { type FactoryProvider, inject, InjectionToken } from '@angular/core';\nimport type { Subject } from 'rxjs';\n\nexport interface BrnParentNavMenu {\n\tsubNavVisible$: Subject<boolean>;\n}\n\nexport const BrnParentNavMenu = new InjectionToken<BrnParentNavMenu>('BrnParentNavMenu');\n\nexport function injectBrnParentNavMenu(): BrnParentNavMenu | null {\n\treturn inject(BrnParentNavMenu, { optional: true });\n}\n\nexport function provideBrnParentNavMenu(parentNavMenu: () => BrnParentNavMenu): FactoryProvider {\n\treturn { provide: BrnParentNavMenu, useFactory: parentNavMenu };\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\tOnDestroy,\n\tsignal,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { computedPrevious, createHoverObservable } from '@spartan-ng/brain/core';\nimport { combineLatest, merge, of, Subject } from 'rxjs';\nimport { debounceTime, filter, map, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './brn-navigation-menu-link';\nimport { provideBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { injectBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\nfunction areArraysSameByElRef(arr1: unknown[], arr2: unknown[]) {\n\tif (arr1.length !== arr2.length) return false;\n\treturn arr1.every((item, index) => item === arr2[index]);\n}\n\n@Directive({\n\tselector: 'nav[brnNavigationMenu]',\n\tproviders: [provideBrnNavigationMenu(BrnNavigationMenu)],\n\thost: {\n\t\t'(keydown)': 'handleKeydown($event)',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t\t'[attr.dir]': '_dir()',\n\t\t'aria-label': 'Main',\n\t\t'data-slot': 'navigation-menu',\n\t},\n})\nexport class BrnNavigationMenu implements OnDestroy {\n\tprivate readonly _directionality = inject(Directionality);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _destroy$ = new Subject<void>();\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tpublic readonly parentNavMenu = injectBrnParentNavMenu();\n\n\t/**\n\t * The controlled value of the menu item to activate.\n\t */\n\tpublic readonly value = model<string>();\n\n\t/**\n\t * The duration from when the mouse enters a trigger until the content opens.\n\t */\n\tpublic readonly delayDuration = input<number>(200);\n\n\t/**\n\t * How much time a user has to enter another trigger without incurring a delay again.\n\t */\n\tpublic readonly skipDelayDuration = input<number>(300);\n\n\t/**\n\t * The reading direction of the menu when applicable.\n\t */\n\tpublic readonly dir = input<'ltr' | 'rtl'>();\n\n\t/**\n\t * The orientation of the menu.\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n\tprivate readonly _isOpenDelayed = signal(true);\n\tpublic readonly isOpenDelayed = this._isOpenDelayed.asReadonly();\n\n\tprivate _skipDelayTimerRef: ReturnType<typeof setTimeout> | undefined;\n\n\tprivate readonly _navAndSubnavMenuItems = contentChildren(BrnNavigationMenuItem, { descendants: true });\n\n\tpublic readonly menuItems = computed(\n\t\t() => this._navAndSubnavMenuItems().filter((mi) => mi.navMenuElRef === this.el),\n\t\t{\n\t\t\tequal: areArraysSameByElRef,\n\t\t},\n\t);\n\n\tpublic readonly menuItemIds = computed(() => this.menuItems().map((mi) => mi.id()));\n\n\tprivate readonly _triggersAndLinks = computed(() => this.menuItems().map((mi) => mi.focusable()));\n\n\tprivate readonly _linkMenuItems = computed(() =>\n\t\tthis.menuItems().filter((i) => i.focusable() instanceof BrnNavigationMenuLink),\n\t);\n\n\tprivate readonly _keyManager = computed(() => {\n\t\treturn new FocusKeyManager<FocusableOption>(this._triggersAndLinks())\n\t\t\t.withHorizontalOrientation(this._dir())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((e) => !!e.disabled);\n\t});\n\n\tprivate readonly _reset$ = toObservable(this.value).pipe(\n\t\tpairwise(),\n\t\tfilter(([prev, curr]) => curr === undefined && curr !== prev),\n\t\tmap(() => undefined),\n\t);\n\n\tprivate readonly _hovered$ = merge(\n\t\tcreateHoverObservable(this.el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tprivate readonly _contentHovered$ = merge(\n\t\ttoObservable(this._navAndSubnavMenuItems).pipe(\n\t\t\tswitchMap((menuItems) => merge(...menuItems.map((mi) => mi.contentHovered$))),\n\t\t),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tpublic readonly previousValue = computedPrevious(this.value);\n\n\tprivate readonly _dir$ = toObservable(this.dir);\n\n\t/**\n\t * The reading direction of the menu when applicable.\n\t * If input is not passed, inherits globally from Directionality or assumes LTR (left-to-right) reading mode.\n\t */\n\tprotected readonly _dir = toSignal(\n\t\tcombineLatest([\n\t\t\tthis._dir$.pipe(startWith(undefined)),\n\t\t\tthis._directionality.change.pipe(startWith(undefined)),\n\t\t\tof('ltr' as const),\n\t\t]).pipe(map(([dir, dirChange, fallback]) => dir ?? dirChange ?? fallback)),\n\t\t{ requireSync: true },\n\t);\n\n\tpublic readonly context = computed(() => ({ orientation: this.orientation(), dir: this._dir() }));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst isOpen = this.value() !== undefined;\n\t\t\tconst hasSkipDelayDuration = this.skipDelayDuration() > 0;\n\n\t\t\tif (isOpen) {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tif (hasSkipDelayDuration) this._isOpenDelayed.set(false);\n\t\t\t} else {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tthis._skipDelayTimerRef = setTimeout(() => {\n\t\t\t\t\tthis._isOpenDelayed.set(true);\n\t\t\t\t}, this.skipDelayDuration());\n\t\t\t}\n\t\t});\n\n\t\tcombineLatest([this._hovered$, this._contentHovered$])\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(0),\n\t\t\t\tfilter(([hovered, contentHovered]) => !(hovered === undefined && contentHovered === undefined)),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t)\n\t\t\t.subscribe(([hovered, contentHovered]) => {\n\t\t\t\tif (!hovered && !contentHovered) {\n\t\t\t\t\tthis.value.set(undefined);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tpublic isLink(id?: string): boolean {\n\t\treturn !!this._linkMenuItems().find((item) => item.id() === id);\n\t}\n\n\tpublic setActiveItem(item: FocusableOption) {\n\t\tthis._keyManager().setActiveItem(item);\n\t}\n\n\tprotected handleKeydown(event: KeyboardEvent) {\n\t\tthis._keyManager().onKeydown(event);\n\t}\n\n\tngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tclearTimeout(this._skipDelayTimerRef);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, untracked } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { BrnParentNavMenu, provideBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\n@Directive({\n\tselector: '[brnNavigationMenuContent]',\n\tproviders: [provideBrnParentNavMenu(() => ({ subNavVisible$: new Subject<boolean>() }))],\n})\nexport class BrnNavigationMenuContent {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\tprivate readonly _tpl = inject(TemplateRef);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _subNavContext = inject(BrnParentNavMenu);\n\n\tprivate readonly _navMenuValue = this._navigationMenu.value;\n\tprivate readonly _prevNavMenuValue = this._navigationMenu.previousValue;\n\n\tprivate readonly _id = this._navigationMenuItem.id;\n\tprivate readonly _isActive = this._navigationMenuItem.isActive;\n\tprivate readonly _wasActive = this._navigationMenuItem.wasActive;\n\tprivate readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _contentEl = this._contentService.contentEl;\n\n\tprivate readonly _menuItemsIds = this._navigationMenu.menuItemIds;\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tconstructor() {\n\t\tif (!this._tpl) return;\n\t\tthis._navigationMenuItem.contentTemplate.set(this._tpl);\n\t\tthis._navigationMenuItem.subNavVisible$.next(this._subNavContext.subNavVisible$);\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'tabindex', '0');\n\t\t\t\tthis._renderer.setAttribute(el, 'data-slot', 'navigation-menu-content');\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-state', this._state());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-orientation', this._orientation());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst isActive = this._isActive();\n\t\t\tconst wasActive = this._wasActive();\n\t\t\tconst dir = this._dir();\n\t\t\tconst orientation = this._orientation();\n\n\t\t\tconst el = untracked(this._contentEl);\n\t\t\tif (!el) return;\n\n\t\t\tconst id = this._id();\n\t\t\tconst menuItemsIds =\n\t\t\t\tdir === 'rtl' && orientation === 'horizontal' ? this._menuItemsIds().slice().reverse() : this._menuItemsIds();\n\n\t\t\tif (isActive) {\n\t\t\t\tconst prevNavMenuValue = this._prevNavMenuValue();\n\t\t\t\tconst isPrevLink = untracked(() => this._navigationMenu.isLink(prevNavMenuValue));\n\n\t\t\t\tif (prevNavMenuValue && !isPrevLink) {\n\t\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(prevNavMenuValue) ? 'from-end' : 'from-start';\n\t\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t\t}\n\t\t\t} else if (wasActive) {\n\t\t\t\tconst navMenuValue = this._navMenuValue();\n\t\t\t\tconst isLink = untracked(() => this._navigationMenu.isLink(navMenuValue));\n\t\t\t\tif (!navMenuValue || isLink) return;\n\n\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(navMenuValue) ? 'to-end' : 'to-start';\n\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'ul[brnNavigationMenuList]',\n\thost: {\n\t\t'[attr.data-orientation]': '_orientation()',\n\t\t'data-slot': 'navigation-menu-list',\n\t},\n})\nexport class BrnNavigationMenuList {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\n\tprotected readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n}\n","import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tPLATFORM_ID,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { createHoverObservable, isElement } from '@spartan-ng/brain/core';\nimport { fromEvent, merge, Observable, of, Subject } from 'rxjs';\nimport {\n\tdebounceTime,\n\tdelay,\n\tdistinctUntilChanged,\n\tfilter,\n\tmap,\n\tshare,\n\tswitchMap,\n\ttakeUntil,\n\ttap,\n} from 'rxjs/operators';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\ninterface TriggerEvent {\n\ttype: 'click' | 'hover' | 'set';\n\tvisible: boolean;\n\trelatedTarget?: EventTarget | null;\n}\n\n@Directive({\n\tselector: 'button[brnNavigationMenuTrigger]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(keydown.escape)': 'onEscape($event)',\n\t\t'(keydown.tab)': 'onTab($event)',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[id]': '_id',\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.aria-expanded]': '_isActive()',\n\t\t'[attr.aria-controls]': '_contentId',\n\t\t'data-slot': 'navigation-menu-trigger',\n\t},\n})\nexport class BrnNavigationMenuTrigger implements OnInit, OnDestroy, FocusableOption {\n\tprivate static _id = 0;\n\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tprotected readonly _id = `brn-navigation-menu-trigger-${++BrnNavigationMenuTrigger._id}`;\n\n\tprivate readonly _parentNavMenu = this._navigationMenu.parentNavMenu;\n\n\tprotected readonly _isActive = this._navigationMenuItem.isActive;\n\n\tprotected readonly _contentId = this._contentService.id;\n\n\tprotected readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\n\tprivate readonly _isOpenDelayed = this._navigationMenu.isOpenDelayed;\n\n\tprivate readonly _delayDuration = this._navigationMenu.delayDuration;\n\n\tprivate readonly _contentTemplate = this._navigationMenuItem.contentTemplate;\n\n\tprivate readonly _isSubNavVisible = toSignal(this._navigationMenuItem.subNavVisible$.pipe(switchMap((c) => c)), {\n\t\tinitialValue: false,\n\t});\n\n\tprivate readonly _isActive$: Observable<TriggerEvent> = toObservable(this._navigationMenuItem.isActive).pipe(\n\t\tmap((value) => ({ type: 'set', visible: value })),\n\t);\n\n\tprivate readonly _clicked$: Observable<TriggerEvent> = fromEvent(this._el.nativeElement, 'click').pipe(\n\t\tmap(() => !this._navigationMenuItem.isActive()),\n\t\tmap((value) => ({ type: 'click', visible: value })),\n\t);\n\n\tprivate readonly _hovered$: Observable<TriggerEvent> = merge(\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$),\n\t\tthis._contentService.hovered$.pipe(map((v) => ({ hover: v, relatedTarget: null }))),\n\t).pipe(\n\t\t// Hover event is NOT allowed when a sub-navigation is currently visible, AND the current hover event is false.\n\t\tfilter((e) => !(this._isSubNavVisible() && !e.hover)),\n\t\tmap((e) => ({ type: 'hover' as const, visible: e.hover, relatedTarget: e.relatedTarget })),\n\t);\n\n\tprivate readonly _showing$ = merge(this._isActive$, this._clicked$, this._hovered$).pipe(\n\t\tdebounceTime(0),\n\t\tdistinctUntilChanged((prev, curr) => prev.visible === curr.visible),\n\t\tswitchMap((ev) => {\n\t\t\tconst shouldDelay = ev.visible && ev.type !== 'click' && this._isOpenDelayed();\n\t\t\treturn of(ev).pipe(delay(shouldDelay ? this._delayDuration() : 0));\n\t\t}),\n\t\t// Deactivate needs to be called if the menu item content is hidden with a user click OR\n\t\t// If nav item is hovered out to a disabled sibling nav item\n\t\ttap((ev) => {\n\t\t\tif (ev.visible) {\n\t\t\t\tthis._activate();\n\t\t\t} else {\n\t\t\t\tconst shouldDeactivate =\n\t\t\t\t\t(ev.type === 'click' || !this._isHoverOnSibling(ev)) && this._navigationMenuItem.isActive();\n\n\t\t\t\tif (shouldDeactivate) {\n\t\t\t\t\tthis._deactivate();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._contentTemplate();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst orientation = this._orientation();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateOrientation(orientation);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst dir = this._dir();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateDirection(dir);\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, direction: this._dir(), orientation: this._orientation() });\n\t\tthis._showing$.pipe(takeUntil(this._destroy$)).subscribe((ev) => {\n\t\t\tif (this._parentNavMenu) {\n\t\t\t\tthis._parentNavMenu.subNavVisible$.next(ev.visible);\n\t\t\t}\n\n\t\t\tif (ev.visible) {\n\t\t\t\tif (this._isBrowser) {\n\t\t\t\t\tthis._contentService.show();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis._contentService.escapePressed$.pipe(takeUntil(this._destroy$)).subscribe((e) => {\n\t\t\te.preventDefault();\n\t\t\tthis._el.nativeElement.focus();\n\t\t\tthis._deactivate();\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onTab(e: KeyboardEvent) {\n\t\tconst contentEl = this._contentService.contentEl();\n\n\t\tif (contentEl && !hasModifierKey(e)) {\n\t\t\te.preventDefault();\n\t\t\tcontentEl.focus();\n\t\t}\n\t}\n\n\tprotected onEscape(e: KeyboardEvent) {\n\t\te.preventDefault();\n\t\tthis._deactivate();\n\t}\n\n\tprivate _activate() {\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprivate _deactivate() {\n\t\tthis._navigationMenu.value.set(undefined);\n\t}\n\n\tprivate _isHoverOnSibling(ev: TriggerEvent): boolean {\n\t\tif (ev.type !== 'hover' || !isElement(ev.relatedTarget)) return false;\n\n\t\tconst menuItem = this._isMenuItemOrChild(ev.relatedTarget);\n\n\t\treturn !!menuItem && !menuItem.disabled();\n\t}\n\n\tprivate _isMenuItemOrChild(node: Node): BrnNavigationMenuItem | undefined {\n\t\treturn this._navigationMenu\n\t\t\t.menuItems()\n\t\t\t.find((ref) => ref.el.nativeElement === node || ref.el.nativeElement.contains(node));\n\t}\n}\n","import { BrnNavigationMenu } from './lib/brn-navigation-menu';\nimport { BrnNavigationMenuContent } from './lib/brn-navigation-menu-content';\nimport { BrnNavigationMenuItem } from './lib/brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './lib/brn-navigation-menu-link';\nimport { BrnNavigationMenuList } from './lib/brn-navigation-menu-list';\nimport { BrnNavigationMenuTrigger } from './lib/brn-navigation-menu-trigger';\n\nexport * from './lib/brn-navigation-menu';\nexport * from './lib/brn-navigation-menu-content';\nexport * from './lib/brn-navigation-menu-item';\nexport * from './lib/brn-navigation-menu-link';\nexport * from './lib/brn-navigation-menu-list';\nexport * from './lib/brn-navigation-menu-trigger';\n\nexport const BrnNavigationMenuImports = [\n\tBrnNavigationMenu,\n\tBrnNavigationMenuItem,\n\tBrnNavigationMenuList,\n\tBrnNavigationMenuTrigger,\n\tBrnNavigationMenuContent,\n\tBrnNavigationMenuLink,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-navigation-menu.mjs","sources":["../tmp-esm2022/navigation-menu/lib/brn-navigation-menu-content.service.js","../tmp-esm2022/navigation-menu/lib/brn-navigation-menu-item-focusable.token.js","../tmp-esm2022/navigation-menu/lib/brn-navigation-menu-item.token.js","../tmp-esm2022/navigation-menu/lib/brn-navigation-menu.token.js","../tmp-esm2022/navigation-menu/lib/brn-navigation-menu-item.js","../tmp-esm2022/navigation-menu/lib/brn-navigation-menu-link.js","../tmp-esm2022/navigation-menu/lib/brn-parent-nav-menu.token.js","../tmp-esm2022/navigation-menu/lib/brn-navigation-menu.js","../tmp-esm2022/navigation-menu/lib/brn-navigation-menu-content.js","../tmp-esm2022/navigation-menu/lib/brn-navigation-menu-list.js","../tmp-esm2022/navigation-menu/lib/brn-navigation-menu-trigger.js","../tmp-esm2022/navigation-menu/index.js","../tmp-esm2022/navigation-menu/spartan-ng-brain-navigation-menu.js"],"sourcesContent":["import { hasModifierKey } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayPositionBuilder, } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { inject, Injectable, NgZone, Renderer2, signal, } from '@angular/core';\nimport { createHoverObservable, waitForElementAnimations } from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, of, Subject } from 'rxjs';\nimport { map, share, switchMap, takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nconst horizontalPositions = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n];\nconst verticalPositions = [\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n },\n];\nexport class BrnNavigationMenuContentService {\n static _id = 0;\n _overlay = inject(Overlay);\n _zone = inject(NgZone);\n _psBuilder = inject(OverlayPositionBuilder);\n _renderer = inject(Renderer2);\n _content = signal(null);\n id = `brn-navigation-menu-content-${++BrnNavigationMenuContentService._id}`;\n _shouldDetach = false;\n _config = {};\n _overlayRef;\n _positionStrategy;\n _destroyed$ = new Subject();\n _contentEl = signal(undefined);\n contentEl = this._contentEl.asReadonly();\n _overlayHoveredObservables$ = new BehaviorSubject(undefined);\n _overlayShiftTabObservables$ = new BehaviorSubject(undefined);\n _overlayEscapeObservables$ = new BehaviorSubject(undefined);\n hovered$ = this._overlayHoveredObservables$.pipe(switchMap((overlayHoveredObservable) => (overlayHoveredObservable !== undefined ? overlayHoveredObservable : of())), share());\n _shiftTabPressed$ = this._overlayShiftTabObservables$.pipe(switchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())));\n escapePressed$ = this._overlayEscapeObservables$.pipe(switchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())));\n constructor() {\n this._shiftTabPressed$.pipe(takeUntil(this._destroyed$)).subscribe((e) => {\n if (this._config.attachTo?.nativeElement) {\n e.preventDefault();\n this._config.attachTo.nativeElement.focus();\n }\n });\n }\n setConfig(config) {\n this._config = config;\n if (config.attachTo) {\n const positions = this._getPositions(config.orientation);\n this._positionStrategy = this._buildPositionStrategy(config.attachTo, positions);\n this._config = {\n ...this._config,\n positionStrategy: this._positionStrategy,\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\n };\n }\n this._overlayRef = this._overlay.create(this._config);\n }\n updateOrientation(orientation) {\n if (!this._config.attachTo)\n return;\n const positions = this._getPositions(orientation);\n this._positionStrategy = this._buildPositionStrategy(this._config.attachTo, positions);\n this._config = {\n ...this._config,\n positionStrategy: this._positionStrategy,\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\n };\n this._overlayRef?.updatePositionStrategy(this._positionStrategy);\n }\n updateDirection(dir) {\n this._overlayRef?.setDirection(dir);\n }\n setContent(value, vcr) {\n this._content.set(new TemplatePortal(value, vcr));\n if (!this._overlayRef) {\n this._overlayRef = this._overlay.create(this._config);\n }\n }\n show() {\n const content = this._content();\n if (!content || !this._overlayRef)\n return;\n this._shouldDetach = false;\n this._overlayRef?.detach();\n const embededViewRef = this._overlayRef?.attach(content);\n this._destroyed$ = new Subject();\n const contentEl = embededViewRef.rootNodes[0];\n const attachToId = this._config.attachTo?.nativeElement.id;\n this._renderer.setAttribute(contentEl, 'id', this.id);\n if (attachToId !== undefined) {\n this._renderer.setAttribute(contentEl, 'aria-labelledby', attachToId);\n }\n this._contentEl.set(contentEl);\n this._overlayHoveredObservables$.next(createHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)));\n this._overlayShiftTabObservables$.next(fromEvent(contentEl, 'keydown').pipe(switchMap((e) => (e.key === 'Tab' && e.shiftKey && e.target === this.contentEl() ? of(e) : of())), takeUntil(this._destroyed$)));\n this._overlayEscapeObservables$.next(fromEvent(contentEl, 'keydown').pipe(switchMap((e) => (e.key === 'Escape' && !hasModifierKey(e) ? of(e) : of())), takeUntil(this._destroyed$)));\n }\n async hide() {\n const contentEl = this._contentEl();\n if (!contentEl)\n return;\n this._shouldDetach = true;\n if (!this._hasAnimation()) {\n this._detach();\n }\n await waitForElementAnimations(contentEl);\n this._detach();\n }\n _detach = () => {\n if (!this._shouldDetach)\n return;\n this._overlayRef?.detach();\n this._contentEl.set(undefined);\n this._destroyed$.next();\n this._destroyed$.complete();\n this._destroyed$ = new Subject();\n };\n _hasAnimation() {\n const contentEl = this.contentEl();\n if (!contentEl)\n return;\n return getComputedStyle(contentEl).animationName !== 'none';\n }\n _getPositions(orientation) {\n return orientation === 'vertical' ? verticalPositions : horizontalPositions;\n }\n _buildPositionStrategy(attachTo, positions) {\n return this._psBuilder\n .flexibleConnectedTo(attachTo)\n .withPositions(positions)\n .withDefaultOffsetY(0)\n .withDefaultOffsetX(0)\n .withPush(false);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuContentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuContentService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuContentService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLW5hdmlnYXRpb24tbWVudS1jb250ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL25hdmlnYXRpb24tbWVudS9zcmMvbGliL2Jybi1uYXZpZ2F0aW9uLW1lbnUtY29udGVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBR04sT0FBTyxFQUVQLHNCQUFzQixHQUV0QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBRU4sTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFTbEUsTUFBTSxtQkFBbUIsR0FBd0I7SUFDaEQ7UUFDQyxPQUFPLEVBQUUsT0FBTztRQUNoQixPQUFPLEVBQUUsUUFBUTtRQUNqQixRQUFRLEVBQUUsT0FBTztRQUNqQixRQUFRLEVBQUUsS0FBSztLQUNmO0NBQ0QsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQXdCO0lBQzlDO1FBQ0MsT0FBTyxFQUFFLEtBQUs7UUFDZCxPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxLQUFLO0tBQ2Y7SUFDRDtRQUNDLE9BQU8sRUFBRSxPQUFPO1FB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QzthQUN4QixrQkFBa0IsQ0FBQyxDQUFDLENBQUM7YUFDckIsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2FBQ3JCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDOzBIQWhMVywrQkFBK0I7OEhBQS9CLCtCQUErQjs7MkZBQS9CLCtCQUErQjtrQkFEM0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG5cdENvbm5lY3RlZFBvc2l0aW9uLFxuXHRGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG5cdE92ZXJsYXksXG5cdE92ZXJsYXlDb25maWcsXG5cdE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXG5cdE92ZXJsYXlSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdEluamVjdGFibGUsXG5cdE5nWm9uZSxcblx0UmVuZGVyZXIyLFxuXHRzaWduYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZUhvdmVyT2JzZXJ2YWJsZSwgd2FpdEZvckVsZW1lbnRBbmltYXRpb25zIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmUsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBCcm5OYXZpZ2F0aW9uTWVudUNvbnRlbnRPcHRpb25zID0gUGFydGlhbDxcblx0e1xuXHRcdGF0dGFjaFRvOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pjtcblx0XHRvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJztcblx0fSAmIE92ZXJsYXlDb25maWdcbj47XG5cbmNvbnN0IGhvcml6b250YWxQb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXG5cdHtcblx0XHRvcmlnaW5YOiAnc3RhcnQnLFxuXHRcdG9yaWdpblk6ICdib3R0b20nLFxuXHRcdG92ZXJsYXlYOiAnc3RhcnQnLFxuXHRcdG92ZXJsYXlZOiAndG9wJyxcblx0fSxcbl07XG5cbmNvbnN0IHZlcnRpY2FsUG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xuXHR7XG5cdFx0b3JpZ2luWDogJ2VuZCcsXG5cdFx0b3JpZ2luWTogJ3RvcCcsXG5cdFx0b3ZlcmxheVg6ICdzdGFydCcsXG5cdFx0b3ZlcmxheVk6ICd0b3AnLFxuXHR9LFxuXHR7XG5cdFx0b3JpZ2luWDogJ3N0YXJ0Jyxcblx0XHRvcmlnaW5ZOiAndG9wJyxcblx0XHRvdmVybGF5WDogJ2VuZCcsXG5cdFx0b3ZlcmxheVk6ICd0b3AnLFxuXHR9LFxuXTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJybk5hdmlnYXRpb25NZW51Q29udGVudFNlcnZpY2Uge1xuXHRwcml2YXRlIHN0YXRpYyBfaWQgPSAwO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX292ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3pvbmUgPSBpbmplY3QoTmdab25lKTtcblx0cHJpdmF0ZSByZWFkb25seSBfcHNCdWlsZGVyID0gaW5qZWN0KE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnQgPSBzaWduYWw8VGVtcGxhdGVQb3J0YWw8dW5rbm93bj4gfCBudWxsPihudWxsKTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgaWQgPSBgYnJuLW5hdmlnYXRpb24tbWVudS1jb250ZW50LSR7KytCcm5OYXZpZ2F0aW9uTWVudUNvbnRlbnRTZXJ2aWNlLl9pZH1gO1xuXG5cdHByaXZhdGUgX3Nob3VsZERldGFjaCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgX2NvbmZpZzogQnJuTmF2aWdhdGlvbk1lbnVDb250ZW50T3B0aW9ucyA9IHt9O1xuXHRwcml2YXRlIF9vdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcblx0cHJpdmF0ZSBfcG9zaXRpb25TdHJhdGVneT86IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTtcblx0cHJpdmF0ZSBfZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfY29udGVudEVsID0gc2lnbmFsPEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXHRwdWJsaWMgcmVhZG9ubHkgY29udGVudEVsID0gdGhpcy5fY29udGVudEVsLmFzUmVhZG9ubHkoKTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5SG92ZXJlZE9ic2VydmFibGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTxib29sZWFuPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5U2hpZnRUYWJPYnNlcnZhYmxlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8S2V5Ym9hcmRFdmVudD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheUVzY2FwZU9ic2VydmFibGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTxLZXlib2FyZEV2ZW50PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgaG92ZXJlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9vdmVybGF5SG92ZXJlZE9ic2VydmFibGVzJC5waXBlKFxuXHRcdHN3aXRjaE1hcCgob3ZlcmxheUhvdmVyZWRPYnNlcnZhYmxlKSA9PiAob3ZlcmxheUhvdmVyZWRPYnNlcnZhYmxlICE9PSB1bmRlZmluZWQgPyBvdmVybGF5SG92ZXJlZE9ic2VydmFibGUgOiBvZigpKSksXG5cdFx0c2hhcmUoKSxcblx0KTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9zaGlmdFRhYlByZXNzZWQkID0gdGhpcy5fb3ZlcmxheVNoaWZ0VGFiT2JzZXJ2YWJsZXMkLnBpcGUoXG5cdFx0c3dpdGNoTWFwKChjb250ZW50Rm9jdXNlZCQpID0+IChjb250ZW50Rm9jdXNlZCQgIT09IHVuZGVmaW5lZCA/IGNvbnRlbnRGb2N1c2VkJCA6IG9mKCkpKSxcblx0KTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgZXNjYXBlUHJlc3NlZCQgPSB0aGlzLl9vdmVybGF5RXNjYXBlT2JzZXJ2YWJsZXMkLnBpcGUoXG5cdFx0c3dpdGNoTWFwKChjb250ZW50Rm9jdXNlZCQpID0+IChjb250ZW50Rm9jdXNlZCQgIT09IHVuZGVmaW5lZCA/IGNvbnRlbnRGb2N1c2VkJCA6IG9mKCkpKSxcblx0KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLl9zaGlmdFRhYlByZXNzZWQkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGUpID0+IHtcblx0XHRcdGlmICh0aGlzLl9jb25maWcuYXR0YWNoVG8/Lm5hdGl2ZUVsZW1lbnQpIHtcblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR0aGlzLl9jb25maWcuYXR0YWNoVG8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIHNldENvbmZpZyhjb25maWc6IEJybk5hdmlnYXRpb25NZW51Q29udGVudE9wdGlvbnMpIHtcblx0XHR0aGlzLl9jb25maWcgPSBjb25maWc7XG5cblx0XHRpZiAoY29uZmlnLmF0dGFjaFRvKSB7XG5cdFx0XHRjb25zdCBwb3NpdGlvbnMgPSB0aGlzLl9nZXRQb3NpdGlvbnMoY29uZmlnLm9yaWVudGF0aW9uKTtcblx0XHRcdHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9idWlsZFBvc2l0aW9uU3RyYXRlZ3koY29uZmlnLmF0dGFjaFRvLCBwb3NpdGlvbnMpO1xuXG5cdFx0XHR0aGlzLl9jb25maWcgPSB7XG5cdFx0XHRcdC4uLnRoaXMuX2NvbmZpZyxcblx0XHRcdFx0cG9zaXRpb25TdHJhdGVneTogdGhpcy5fcG9zaXRpb25TdHJhdGVneSxcblx0XHRcdFx0c2Nyb2xsU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh0aGlzLl9jb25maWcpO1xuXHR9XG5cblx0cHVibGljIHVwZGF0ZU9yaWVudGF0aW9uKG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnKSB7XG5cdFx0aWYgKCF0aGlzLl9jb25maWcuYXR0YWNoVG8pIHJldHVybjtcblxuXHRcdGNvbnN0IHBvc2l0aW9ucyA9IHRoaXMuX2dldFBvc2l0aW9ucyhvcmllbnRhdGlvbik7XG5cdFx0dGhpcy5fcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX2J1aWxkUG9zaXRpb25TdHJhdGVneSh0aGlzLl9jb25maWcuYXR0YWNoVG8sIHBvc2l0aW9ucyk7XG5cblx0XHR0aGlzLl9jb25maWcgPSB7XG5cdFx0XHQuLi50aGlzLl9jb25maWcsXG5cdFx0XHRwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LFxuXHRcdFx0c2Nyb2xsU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG5cdFx0fTtcblxuXHRcdHRoaXMuX292ZXJsYXlSZWY/LnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb25TdHJhdGVneSk7XG5cdH1cblxuXHRwdWJsaWMgdXBkYXRlRGlyZWN0aW9uKGRpcjogRGlyZWN0aW9uKSB7XG5cdFx0dGhpcy5fb3ZlcmxheVJlZj8uc2V0RGlyZWN0aW9uKGRpcik7XG5cdH1cblxuXHRwdWJsaWMgc2V0Q29udGVudCh2YWx1ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4sIHZjcjogVmlld0NvbnRhaW5lclJlZikge1xuXHRcdHRoaXMuX2NvbnRlbnQuc2V0KG5ldyBUZW1wbGF0ZVBvcnRhbDx1bmtub3duPih2YWx1ZSwgdmNyKSk7XG5cblx0XHRpZiAoIXRoaXMuX292ZXJsYXlSZWYpIHtcblx0XHRcdHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh0aGlzLl9jb25maWcpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzaG93KCkge1xuXHRcdGNvbnN0IGNvbnRlbnQgPSB0aGlzLl9jb250ZW50KCk7XG5cdFx0aWYgKCFjb250ZW50IHx8ICF0aGlzLl9vdmVybGF5UmVmKSByZXR1cm47XG5cdFx0dGhpcy5fc2hvdWxkRGV0YWNoID0gZmFsc2U7XG5cblx0XHR0aGlzLl9vdmVybGF5UmVmPy5kZXRhY2goKTtcblx0XHRjb25zdCBlbWJlZGVkVmlld1JlZiA9IHRoaXMuX292ZXJsYXlSZWY/LmF0dGFjaChjb250ZW50KTtcblxuXHRcdHRoaXMuX2Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG5cdFx0Y29uc3QgY29udGVudEVsID0gZW1iZWRlZFZpZXdSZWYucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuXG5cdFx0Y29uc3QgYXR0YWNoVG9JZCA9IHRoaXMuX2NvbmZpZy5hdHRhY2hUbz8ubmF0aXZlRWxlbWVudC5pZDtcblxuXHRcdHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShjb250ZW50RWwsICdpZCcsIHRoaXMuaWQpO1xuXHRcdGlmIChhdHRhY2hUb0lkICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShjb250ZW50RWwsICdhcmlhLWxhYmVsbGVkYnknLCBhdHRhY2hUb0lkKTtcblx0XHR9XG5cblx0XHR0aGlzLl9jb250ZW50RWwuc2V0KGNvbnRlbnRFbCk7XG5cblx0XHR0aGlzLl9vdmVybGF5SG92ZXJlZE9ic2VydmFibGVzJC5uZXh0KFxuXHRcdFx0Y3JlYXRlSG92ZXJPYnNlcnZhYmxlKHRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQsIHRoaXMuX3pvbmUsIHRoaXMuX2Rlc3Ryb3llZCQpLnBpcGUobWFwKChlKSA9PiBlLmhvdmVyKSksXG5cdFx0KTtcblxuXHRcdHRoaXMuX292ZXJsYXlTaGlmdFRhYk9ic2VydmFibGVzJC5uZXh0KFxuXHRcdFx0ZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGNvbnRlbnRFbCwgJ2tleWRvd24nKS5waXBlKFxuXHRcdFx0XHRzd2l0Y2hNYXAoKGUpID0+IChlLmtleSA9PT0gJ1RhYicgJiYgZS5zaGlmdEtleSAmJiBlLnRhcmdldCA9PT0gdGhpcy5jb250ZW50RWwoKSA/IG9mKGUpIDogb2YoKSkpLFxuXHRcdFx0XHR0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCksXG5cdFx0XHQpLFxuXHRcdCk7XG5cblx0XHR0aGlzLl9vdmVybGF5RXNjYXBlT2JzZXJ2YWJsZXMkLm5leHQoXG5cdFx0XHRmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oY29udGVudEVsLCAna2V5ZG93bicpLnBpcGUoXG5cdFx0XHRcdHN3aXRjaE1hcCgoZSkgPT4gKGUua2V5ID09PSAnRXNjYXBlJyAmJiAhaGFzTW9kaWZpZXJLZXkoZSkgPyBvZihlKSA6IG9mKCkpKSxcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuXHRcdFx0KSxcblx0XHQpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGhpZGUoKSB7XG5cdFx0Y29uc3QgY29udGVudEVsID0gdGhpcy5fY29udGVudEVsKCk7XG5cdFx0aWYgKCFjb250ZW50RWwpIHJldHVybjtcblxuXHRcdHRoaXMuX3Nob3VsZERldGFjaCA9IHRydWU7XG5cdFx0aWYgKCF0aGlzLl9oYXNBbmltYXRpb24oKSkge1xuXHRcdFx0dGhpcy5fZGV0YWNoKCk7XG5cdFx0fVxuXG5cdFx0YXdhaXQgd2FpdEZvckVsZW1lbnRBbmltYXRpb25zKGNvbnRlbnRFbCk7XG5cdFx0dGhpcy5fZGV0YWNoKCk7XG5cdH1cblxuXHRwcml2YXRlIHJlYWRvbmx5IF9kZXRhY2ggPSAoKSA9PiB7XG5cdFx0aWYgKCF0aGlzLl9zaG91bGREZXRhY2gpIHJldHVybjtcblxuXHRcdHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xuXHRcdHRoaXMuX2NvbnRlbnRFbC5zZXQodW5kZWZpbmVkKTtcblxuXHRcdHRoaXMuX2Rlc3Ryb3llZCQubmV4dCgpO1xuXHRcdHRoaXMuX2Rlc3Ryb3llZCQuY29tcGxldGUoKTtcblx0XHR0aGlzLl9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblx0fTtcblxuXHRwcml2YXRlIF9oYXNBbmltYXRpb24oKSB7XG5cdFx0Y29uc3QgY29udGVudEVsID0gdGhpcy5jb250ZW50RWwoKTtcblx0XHRpZiAoIWNvbnRlbnRFbCkgcmV0dXJuO1xuXG5cdFx0cmV0dXJuIGdldENvbXB1dGVkU3R5bGUoY29udGVudEVsKS5hbmltYXRpb25OYW1lICE9PSAnbm9uZSc7XG5cdH1cblxuXHRwcml2YXRlIF9nZXRQb3NpdGlvbnMob3JpZW50YXRpb24/OiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnKSB7XG5cdFx0cmV0dXJuIG9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gdmVydGljYWxQb3NpdGlvbnMgOiBob3Jpem9udGFsUG9zaXRpb25zO1xuXHR9XG5cblx0cHJpdmF0ZSBfYnVpbGRQb3NpdGlvblN0cmF0ZWd5KGF0dGFjaFRvOiBFbGVtZW50UmVmLCBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10pIHtcblx0XHRyZXR1cm4gdGhpcy5fcHNCdWlsZGVyXG5cdFx0XHQuZmxleGlibGVDb25uZWN0ZWRUbyhhdHRhY2hUbylcblx0XHRcdC53aXRoUG9zaXRpb25zKHBvc2l0aW9ucylcblx0XHRcdC53aXRoRGVmYXVsdE9mZnNldFkoMClcblx0XHRcdC53aXRoRGVmYXVsdE9mZnNldFgoMClcblx0XHRcdC53aXRoUHVzaChmYWxzZSk7XG5cdH1cbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const BrnNavigationMenuFocusable = new InjectionToken('BrnNavigationMenuFocusable');\nexport function provideBrnNavigationMenuFocusable(focusable) {\n return { provide: BrnNavigationMenuFocusable, useExisting: focusable };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLW5hdmlnYXRpb24tbWVudS1pdGVtLWZvY3VzYWJsZS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vbmF2aWdhdGlvbi1tZW51L3NyYy9saWIvYnJuLW5hdmlnYXRpb24tbWVudS1pdGVtLWZvY3VzYWJsZS50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXlCLGNBQWMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVqRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsNEJBQTRCLENBQUMsQ0FBQztBQUU1RyxNQUFNLFVBQVUsaUNBQWlDLENBQTRCLFNBQWtCO0lBQzlGLE9BQU8sRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IHR5cGUgRXhpc3RpbmdQcm92aWRlciwgSW5qZWN0aW9uVG9rZW4sIHR5cGUgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQnJuTmF2aWdhdGlvbk1lbnVGb2N1c2FibGUgPSBuZXcgSW5qZWN0aW9uVG9rZW48Rm9jdXNhYmxlT3B0aW9uPignQnJuTmF2aWdhdGlvbk1lbnVGb2N1c2FibGUnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVCcm5OYXZpZ2F0aW9uTWVudUZvY3VzYWJsZTxUIGV4dGVuZHMgRm9jdXNhYmxlT3B0aW9uPihmb2N1c2FibGU6IFR5cGU8VD4pOiBFeGlzdGluZ1Byb3ZpZGVyIHtcblx0cmV0dXJuIHsgcHJvdmlkZTogQnJuTmF2aWdhdGlvbk1lbnVGb2N1c2FibGUsIHVzZUV4aXN0aW5nOiBmb2N1c2FibGUgfTtcbn1cbiJdfQ==","import { inject, InjectionToken } from '@angular/core';\nexport const BrnNavigationMenuItemToken = new InjectionToken('BrnNavigationMenuItemToken');\nexport function injectBrnNavigationMenuItem() {\n return inject(BrnNavigationMenuItemToken);\n}\nexport function provideBrnNavigationMenuItem(navigationMenuItem) {\n return { provide: BrnNavigationMenuItemToken, useExisting: navigationMenuItem };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLW5hdmlnYXRpb24tbWVudS1pdGVtLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9uYXZpZ2F0aW9uLW1lbnUvc3JjL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51LWl0ZW0udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QixNQUFNLEVBQUUsY0FBYyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3pGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUF3Qiw0QkFBNEIsQ0FBQyxDQUFDO0FBRWxILE1BQU0sVUFBVSwyQkFBMkI7SUFDMUMsT0FBTyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLGtCQUErQztJQUMzRixPQUFPLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO0FBQ2pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEV4aXN0aW5nUHJvdmlkZXIsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIHR5cGUgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBCcm5OYXZpZ2F0aW9uTWVudUl0ZW0gfSBmcm9tICcuL2Jybi1uYXZpZ2F0aW9uLW1lbnUtaXRlbSc7XG5cbmV4cG9ydCBjb25zdCBCcm5OYXZpZ2F0aW9uTWVudUl0ZW1Ub2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxCcm5OYXZpZ2F0aW9uTWVudUl0ZW0+KCdCcm5OYXZpZ2F0aW9uTWVudUl0ZW1Ub2tlbicpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0QnJuTmF2aWdhdGlvbk1lbnVJdGVtKCk6IEJybk5hdmlnYXRpb25NZW51SXRlbSB7XG5cdHJldHVybiBpbmplY3QoQnJuTmF2aWdhdGlvbk1lbnVJdGVtVG9rZW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUJybk5hdmlnYXRpb25NZW51SXRlbShuYXZpZ2F0aW9uTWVudUl0ZW06IFR5cGU8QnJuTmF2aWdhdGlvbk1lbnVJdGVtPik6IEV4aXN0aW5nUHJvdmlkZXIge1xuXHRyZXR1cm4geyBwcm92aWRlOiBCcm5OYXZpZ2F0aW9uTWVudUl0ZW1Ub2tlbiwgdXNlRXhpc3Rpbmc6IG5hdmlnYXRpb25NZW51SXRlbSB9O1xufVxuIl19","import { inject, InjectionToken } from '@angular/core';\nexport const BrnNavigationMenuToken = new InjectionToken('BrnNavigationMenuToken');\nexport function injectBrnNavigationMenu() {\n return inject(BrnNavigationMenuToken);\n}\nexport function provideBrnNavigationMenu(navigationMenu) {\n return { provide: BrnNavigationMenuToken, useExisting: navigationMenu };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLW5hdmlnYXRpb24tbWVudS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vbmF2aWdhdGlvbi1tZW51L3NyYy9saWIvYnJuLW5hdmlnYXRpb24tbWVudS50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXlCLE1BQU0sRUFBRSxjQUFjLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHekYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQW9CLHdCQUF3QixDQUFDLENBQUM7QUFFdEcsTUFBTSxVQUFVLHVCQUF1QjtJQUN0QyxPQUFPLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsY0FBdUM7SUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRXhpc3RpbmdQcm92aWRlciwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgdHlwZSBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEJybk5hdmlnYXRpb25NZW51IH0gZnJvbSAnLi9icm4tbmF2aWdhdGlvbi1tZW51JztcblxuZXhwb3J0IGNvbnN0IEJybk5hdmlnYXRpb25NZW51VG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QnJuTmF2aWdhdGlvbk1lbnU+KCdCcm5OYXZpZ2F0aW9uTWVudVRva2VuJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcm5OYXZpZ2F0aW9uTWVudSgpOiBCcm5OYXZpZ2F0aW9uTWVudSB7XG5cdHJldHVybiBpbmplY3QoQnJuTmF2aWdhdGlvbk1lbnVUb2tlbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQnJuTmF2aWdhdGlvbk1lbnUobmF2aWdhdGlvbk1lbnU6IFR5cGU8QnJuTmF2aWdhdGlvbk1lbnU+KTogRXhpc3RpbmdQcm92aWRlciB7XG5cdHJldHVybiB7IHByb3ZpZGU6IEJybk5hdmlnYXRpb25NZW51VG9rZW4sIHVzZUV4aXN0aW5nOiBuYXZpZ2F0aW9uTWVudSB9O1xufVxuIl19","import { computed, contentChild, Directive, ElementRef, inject, input, signal } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { provideBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnNavigationMenuItem {\n static _id = 0;\n _navigationMenu = injectBrnNavigationMenu();\n _contentService = inject(BrnNavigationMenuContentService);\n el = inject(ElementRef);\n navMenuElRef = this._navigationMenu.el;\n /** The id of the navigation menu item */\n id = input(`brn-navigation-menu-item-${++BrnNavigationMenuItem._id}`);\n isActive = computed(() => this.id() === this._navigationMenu.value());\n wasActive = computed(() => this.id() === this._navigationMenu.previousValue());\n state = computed(() => (this.isActive() ? 'open' : 'closed'));\n contentTemplate = signal(null);\n contentHovered$ = this._contentService.hovered$;\n subNavVisible$ = new Subject();\n focusable = contentChild.required(BrnNavigationMenuFocusable);\n _triggerOrLinkBtn = contentChild.required(BrnNavigationMenuFocusable, { read: BrnButton });\n disabled = computed(() => this._triggerOrLinkBtn().disabled());\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.2.0\", version: \"20.0.7\", type: BrnNavigationMenuItem, isStandalone: true, selector: \"li[brnNavigationMenuItem]\", inputs: { id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { \"data-slot\": \"navigation-menu-item\" }, properties: { \"id\": \"id()\", \"attr.data-disabled\": \"disabled() || null\" } }, providers: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService], queries: [{ propertyName: \"focusable\", first: true, predicate: BrnNavigationMenuFocusable, descendants: true, isSignal: true }, { propertyName: \"_triggerOrLinkBtn\", first: true, predicate: BrnNavigationMenuFocusable, descendants: true, read: BrnButton, isSignal: true }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuItem, decorators: [{\n type: Directive,\n args: [{\n selector: 'li[brnNavigationMenuItem]',\n providers: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService],\n host: {\n '[id]': 'id()',\n '[attr.data-disabled]': 'disabled() || null',\n 'data-slot': 'navigation-menu-item',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLW5hdmlnYXRpb24tbWVudS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9uYXZpZ2F0aW9uLW1lbnUvc3JjL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51LWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFXdEUsTUFBTSxPQUFPLHFCQUFxQjtJQUN6QixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUVOLGVBQWUsR0FBRyx1QkFBdUIsRUFBRSxDQUFDO0lBQzVDLGVBQWUsR0FBRyxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUUzRCxFQUFFLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztJQUVqRCxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7SUFFdkQseUNBQXlDO0lBQ3pCLEVBQUUsR0FBRyxLQUFLLENBQVMsNEJBQTRCLEVBQUUscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUU5RSxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFdEUsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBRS9FLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUU5RCxlQUFlLEdBQUcsTUFBTSxDQUE4QixJQUFJLENBQUMsQ0FBQztJQUU1RCxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7SUFFaEQsY0FBYyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0lBRXBELFNBQVMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFFN0QsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBRTVGLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzswSEE3Qm5FLHFCQUFxQjs4R0FBckIscUJBQXFCLDRVQVB0QixDQUFDLDRCQUE0QixDQUFDLHFCQUFxQixDQUFDLEVBQUUsK0JBQStCLENBQUMsaUVBZ0MvQywwQkFBMEIsb0dBRWpCLDBCQUEwQiwyQkFBVSxTQUFTOzsyRkEzQjVGLHFCQUFxQjtrQkFUakMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsdUJBQXVCLEVBQUUsK0JBQStCLENBQUM7b0JBQ2pHLElBQUksRUFBRTt3QkFDTCxNQUFNLEVBQUUsTUFBTTt3QkFDZCxzQkFBc0IsRUFBRSxvQkFBb0I7d0JBQzVDLFdBQVcsRUFBRSxzQkFBc0I7cUJBQ25DO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGNvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcm5CdXR0b24gfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9idXR0b24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnJuTmF2aWdhdGlvbk1lbnVDb250ZW50U2VydmljZSB9IGZyb20gJy4vYnJuLW5hdmlnYXRpb24tbWVudS1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQnJuTmF2aWdhdGlvbk1lbnVGb2N1c2FibGUgfSBmcm9tICcuL2Jybi1uYXZpZ2F0aW9uLW1lbnUtaXRlbS1mb2N1c2FibGUudG9rZW4nO1xuaW1wb3J0IHsgcHJvdmlkZUJybk5hdmlnYXRpb25NZW51SXRlbSB9IGZyb20gJy4vYnJuLW5hdmlnYXRpb24tbWVudS1pdGVtLnRva2VuJztcbmltcG9ydCB7IGluamVjdEJybk5hdmlnYXRpb25NZW51IH0gZnJvbSAnLi9icm4tbmF2aWdhdGlvbi1tZW51LnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnbGlbYnJuTmF2aWdhdGlvbk1lbnVJdGVtXScsXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVCcm5OYXZpZ2F0aW9uTWVudUl0ZW0oQnJuTmF2aWdhdGlvbk1lbnVJdGVtKSwgQnJuTmF2aWdhdGlvbk1lbnVDb250ZW50U2VydmljZV0sXG5cdGhvc3Q6IHtcblx0XHQnW2lkXSc6ICdpZCgpJyxcblx0XHQnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQoKSB8fCBudWxsJyxcblx0XHQnZGF0YS1zbG90JzogJ25hdmlnYXRpb24tbWVudS1pdGVtJyxcblx0fSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuTmF2aWdhdGlvbk1lbnVJdGVtIHtcblx0cHJpdmF0ZSBzdGF0aWMgX2lkID0gMDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uTWVudSA9IGluamVjdEJybk5hdmlnYXRpb25NZW51KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRTZXJ2aWNlID0gaW5qZWN0KEJybk5hdmlnYXRpb25NZW51Q29udGVudFNlcnZpY2UpO1xuXG5cdHB1YmxpYyByZWFkb25seSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cblx0cHVibGljIHJlYWRvbmx5IG5hdk1lbnVFbFJlZiA9IHRoaXMuX25hdmlnYXRpb25NZW51LmVsO1xuXG5cdC8qKiBUaGUgaWQgb2YgdGhlIG5hdmlnYXRpb24gbWVudSBpdGVtICovXG5cdHB1YmxpYyByZWFkb25seSBpZCA9IGlucHV0PHN0cmluZz4oYGJybi1uYXZpZ2F0aW9uLW1lbnUtaXRlbS0keysrQnJuTmF2aWdhdGlvbk1lbnVJdGVtLl9pZH1gKTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgaXNBY3RpdmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlkKCkgPT09IHRoaXMuX25hdmlnYXRpb25NZW51LnZhbHVlKCkpO1xuXG5cdHB1YmxpYyByZWFkb25seSB3YXNBY3RpdmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlkKCkgPT09IHRoaXMuX25hdmlnYXRpb25NZW51LnByZXZpb3VzVmFsdWUoKSk7XG5cblx0cHVibGljIHJlYWRvbmx5IHN0YXRlID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuaXNBY3RpdmUoKSA/ICdvcGVuJyA6ICdjbG9zZWQnKSk7XG5cblx0cHVibGljIHJlYWRvbmx5IGNvbnRlbnRUZW1wbGF0ZSA9IHNpZ25hbDxUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw+KG51bGwpO1xuXG5cdHB1YmxpYyByZWFkb25seSBjb250ZW50SG92ZXJlZCQgPSB0aGlzLl9jb250ZW50U2VydmljZS5ob3ZlcmVkJDtcblxuXHRwdWJsaWMgcmVhZG9ubHkgc3ViTmF2VmlzaWJsZSQgPSBuZXcgU3ViamVjdDxPYnNlcnZhYmxlPGJvb2xlYW4+PigpO1xuXG5cdHB1YmxpYyByZWFkb25seSBmb2N1c2FibGUgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoQnJuTmF2aWdhdGlvbk1lbnVGb2N1c2FibGUpO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX3RyaWdnZXJPckxpbmtCdG4gPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoQnJuTmF2aWdhdGlvbk1lbnVGb2N1c2FibGUsIHsgcmVhZDogQnJuQnV0dG9uIH0pO1xuXG5cdHB1YmxpYyByZWFkb25seSBkaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3RyaWdnZXJPckxpbmtCdG4oKS5kaXNhYmxlZCgpKTtcbn1cbiJdfQ==","import { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@spartan-ng/brain/button\";\nexport class BrnNavigationMenuLink {\n _navigationMenu = injectBrnNavigationMenu();\n _navigationMenuItem = injectBrnNavigationMenuItem();\n _el = inject(ElementRef);\n // Returns false if this BrnNavigationMenuLink is used \"standalone\", meaning it doesn't have a parent BrnNavigationMenuItem element.\n _hasParentNavMenuItem = this._el.nativeElement.parentElement === this._navigationMenuItem.el.nativeElement;\n /**\n * Used to identify the link as the currently active page.\n */\n active = input(undefined, { transform: booleanAttribute });\n _isActive = computed(() => {\n const active = this.active();\n if (active !== undefined)\n return active;\n if (!this._hasParentNavMenuItem)\n return false;\n return this._navigationMenuItem.isActive();\n });\n get disabled() {\n return this._navigationMenuItem.disabled();\n }\n focus(_origin) {\n if (!this._hasParentNavMenuItem || this._navigationMenuItem.disabled())\n return;\n this._el.nativeElement.focus();\n }\n handleFocus() {\n if (!this._hasParentNavMenuItem)\n return;\n this._navigationMenu.setActiveItem(this);\n }\n onClick() {\n if (!this._hasParentNavMenuItem)\n return;\n this._navigationMenu.value.set(this._navigationMenuItem.id());\n }\n activate() {\n if (!this._hasParentNavMenuItem)\n return;\n this._navigationMenu.value.set(this._navigationMenuItem.id());\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuLink, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.7\", type: BrnNavigationMenuLink, isStandalone: true, selector: \"a[brnNavigationMenuLink]\", inputs: { active: { classPropertyName: \"active\", publicName: \"active\", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { \"data-slot\": \"navigation-menu-link\" }, listeners: { \"click\": \"onClick()\", \"mouseenter\": \"activate()\", \"focus\": \"handleFocus()\" }, properties: { \"attr.data-active\": \"_isActive() ? \\\"\\\" : undefined\", \"attr.aria-current\": \"_isActive() ? \\\"page\\\" : undefined\" } }, providers: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)], hostDirectives: [{ directive: i1.BrnButton, inputs: [\"disabled\", \"disabled\"] }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuLink, decorators: [{\n type: Directive,\n args: [{\n selector: 'a[brnNavigationMenuLink]',\n providers: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)],\n hostDirectives: [\n {\n directive: BrnButton,\n inputs: ['disabled'],\n },\n ],\n host: {\n '(click)': 'onClick()',\n '(mouseenter)': 'activate()',\n '(focus)': 'handleFocus()',\n '[attr.data-active]': '_isActive() ? \"\" : undefined',\n '[attr.aria-current]': '_isActive() ? \"page\" : undefined',\n 'data-slot': 'navigation-menu-link',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLW5hdmlnYXRpb24tbWVudS1saW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9uYXZpZ2F0aW9uLW1lbnUvc3JjL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51LWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFvQnRFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEIsZUFBZSxHQUFHLHVCQUF1QixFQUFFLENBQUM7SUFDNUMsbUJBQW1CLEdBQUcsMkJBQTJCLEVBQUUsQ0FBQztJQUNwRCxHQUFHLEdBQUcsTUFBTSxDQUFnQyxVQUFVLENBQUMsQ0FBQztJQUV6RSxvSUFBb0k7SUFDbkgscUJBQXFCLEdBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUVwRjs7T0FFRztJQUNhLE1BQU0sR0FBRyxLQUFLLENBQW9DLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFFM0YsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLElBQUksTUFBTSxLQUFLLFNBQVM7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUV4QyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTlDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBVyxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBcUI7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztRQUUvRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRVMsV0FBVztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtZQUFFLE9BQU87UUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVTLE9BQU87UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUI7WUFBRSxPQUFPO1FBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRVMsUUFBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtZQUFFLE9BQU87UUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7MEhBOUNXLHFCQUFxQjs4R0FBckIscUJBQXFCLHllQWhCdEIsQ0FBQyxpQ0FBaUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDOzsyRkFnQnpELHFCQUFxQjtrQkFsQmpDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsU0FBUyxFQUFFLENBQUMsaUNBQWlDLHVCQUF1QixDQUFDO29CQUNyRSxjQUFjLEVBQUU7d0JBQ2Y7NEJBQ0MsU0FBUyxFQUFFLFNBQVM7NEJBQ3BCLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQzt5QkFDcEI7cUJBQ0Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNMLFNBQVMsRUFBRSxXQUFXO3dCQUN0QixjQUFjLEVBQUUsWUFBWTt3QkFDNUIsU0FBUyxFQUFFLGVBQWU7d0JBQzFCLG9CQUFvQixFQUFFLDhCQUE4Qjt3QkFDcEQscUJBQXFCLEVBQUUsa0NBQWtDO3dCQUN6RCxXQUFXLEVBQUUsc0JBQXNCO3FCQUNuQztpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgY29tcHV0ZWQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJuQnV0dG9uIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vYnV0dG9uJztcbmltcG9ydCB7IHByb3ZpZGVCcm5OYXZpZ2F0aW9uTWVudUZvY3VzYWJsZSB9IGZyb20gJy4vYnJuLW5hdmlnYXRpb24tbWVudS1pdGVtLWZvY3VzYWJsZS50b2tlbic7XG5pbXBvcnQgeyBpbmplY3RCcm5OYXZpZ2F0aW9uTWVudUl0ZW0gfSBmcm9tICcuL2Jybi1uYXZpZ2F0aW9uLW1lbnUtaXRlbS50b2tlbic7XG5pbXBvcnQgeyBpbmplY3RCcm5OYXZpZ2F0aW9uTWVudSB9IGZyb20gJy4vYnJuLW5hdmlnYXRpb24tbWVudS50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ2FbYnJuTmF2aWdhdGlvbk1lbnVMaW5rXScsXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVCcm5OYXZpZ2F0aW9uTWVudUZvY3VzYWJsZShCcm5OYXZpZ2F0aW9uTWVudUxpbmspXSxcblx0aG9zdERpcmVjdGl2ZXM6IFtcblx0XHR7XG5cdFx0XHRkaXJlY3RpdmU6IEJybkJ1dHRvbixcblx0XHRcdGlucHV0czogWydkaXNhYmxlZCddLFxuXHRcdH0sXG5cdF0sXG5cdGhvc3Q6IHtcblx0XHQnKGNsaWNrKSc6ICdvbkNsaWNrKCknLFxuXHRcdCcobW91c2VlbnRlciknOiAnYWN0aXZhdGUoKScsXG5cdFx0Jyhmb2N1cyknOiAnaGFuZGxlRm9jdXMoKScsXG5cdFx0J1thdHRyLmRhdGEtYWN0aXZlXSc6ICdfaXNBY3RpdmUoKSA/IFwiXCIgOiB1bmRlZmluZWQnLFxuXHRcdCdbYXR0ci5hcmlhLWN1cnJlbnRdJzogJ19pc0FjdGl2ZSgpID8gXCJwYWdlXCIgOiB1bmRlZmluZWQnLFxuXHRcdCdkYXRhLXNsb3QnOiAnbmF2aWdhdGlvbi1tZW51LWxpbmsnLFxuXHR9LFxufSlcbmV4cG9ydCBjbGFzcyBCcm5OYXZpZ2F0aW9uTWVudUxpbmsgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24ge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uTWVudSA9IGluamVjdEJybk5hdmlnYXRpb25NZW51KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRpb25NZW51SXRlbSA9IGluamVjdEJybk5hdmlnYXRpb25NZW51SXRlbSgpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9lbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxBbmNob3JFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cblx0Ly8gUmV0dXJucyBmYWxzZSBpZiB0aGlzIEJybk5hdmlnYXRpb25NZW51TGluayBpcyB1c2VkIFwic3RhbmRhbG9uZVwiLCBtZWFuaW5nIGl0IGRvZXNuJ3QgaGF2ZSBhIHBhcmVudCBCcm5OYXZpZ2F0aW9uTWVudUl0ZW0gZWxlbWVudC5cblx0cHJpdmF0ZSByZWFkb25seSBfaGFzUGFyZW50TmF2TWVudUl0ZW0gPVxuXHRcdHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCA9PT0gdGhpcy5fbmF2aWdhdGlvbk1lbnVJdGVtLmVsLm5hdGl2ZUVsZW1lbnQ7XG5cblx0LyoqXG5cdCAqIFVzZWQgdG8gaWRlbnRpZnkgdGhlIGxpbmsgYXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgcGFnZS5cblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBhY3RpdmUgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkLCBCb29sZWFuSW5wdXQ+KHVuZGVmaW5lZCwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9pc0FjdGl2ZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBhY3RpdmUgPSB0aGlzLmFjdGl2ZSgpO1xuXHRcdGlmIChhY3RpdmUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGFjdGl2ZTtcblxuXHRcdGlmICghdGhpcy5faGFzUGFyZW50TmF2TWVudUl0ZW0pIHJldHVybiBmYWxzZTtcblxuXHRcdHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uTWVudUl0ZW0uaXNBY3RpdmUoKTtcblx0fSk7XG5cblx0cHVibGljIGdldCBkaXNhYmxlZCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fbmF2aWdhdGlvbk1lbnVJdGVtLmRpc2FibGVkKCk7XG5cdH1cblxuXHRwdWJsaWMgZm9jdXMoX29yaWdpbj86IEZvY3VzT3JpZ2luKSB7XG5cdFx0aWYgKCF0aGlzLl9oYXNQYXJlbnROYXZNZW51SXRlbSB8fCB0aGlzLl9uYXZpZ2F0aW9uTWVudUl0ZW0uZGlzYWJsZWQoKSkgcmV0dXJuO1xuXG5cdFx0dGhpcy5fZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGhhbmRsZUZvY3VzKCkge1xuXHRcdGlmICghdGhpcy5faGFzUGFyZW50TmF2TWVudUl0ZW0pIHJldHVybjtcblx0XHR0aGlzLl9uYXZpZ2F0aW9uTWVudS5zZXRBY3RpdmVJdGVtKHRoaXMpO1xuXHR9XG5cblx0cHJvdGVjdGVkIG9uQ2xpY2soKSB7XG5cdFx0aWYgKCF0aGlzLl9oYXNQYXJlbnROYXZNZW51SXRlbSkgcmV0dXJuO1xuXHRcdHRoaXMuX25hdmlnYXRpb25NZW51LnZhbHVlLnNldCh0aGlzLl9uYXZpZ2F0aW9uTWVudUl0ZW0uaWQoKSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgYWN0aXZhdGUoKSB7XG5cdFx0aWYgKCF0aGlzLl9oYXNQYXJlbnROYXZNZW51SXRlbSkgcmV0dXJuO1xuXHRcdHRoaXMuX25hdmlnYXRpb25NZW51LnZhbHVlLnNldCh0aGlzLl9uYXZpZ2F0aW9uTWVudUl0ZW0uaWQoKSk7XG5cdH1cbn1cbiJdfQ==","import { inject, InjectionToken } from '@angular/core';\nexport const BrnParentNavMenu = new InjectionToken('BrnParentNavMenu');\nexport function injectBrnParentNavMenu() {\n return inject(BrnParentNavMenu, { optional: true });\n}\nexport function provideBrnParentNavMenu(parentNavMenu) {\n return { provide: BrnParentNavMenu, useFactory: parentNavMenu };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXBhcmVudC1uYXYtbWVudS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vbmF2aWdhdGlvbi1tZW51L3NyYy9saWIvYnJuLXBhcmVudC1uYXYtbWVudS50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPN0UsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQW1CLGtCQUFrQixDQUFDLENBQUM7QUFFekYsTUFBTSxVQUFVLHNCQUFzQjtJQUNyQyxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsYUFBcUM7SUFDNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRmFjdG9yeVByb3ZpZGVyLCBpbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBCcm5QYXJlbnROYXZNZW51IHtcblx0c3ViTmF2VmlzaWJsZSQ6IFN1YmplY3Q8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBjb25zdCBCcm5QYXJlbnROYXZNZW51ID0gbmV3IEluamVjdGlvblRva2VuPEJyblBhcmVudE5hdk1lbnU+KCdCcm5QYXJlbnROYXZNZW51Jyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcm5QYXJlbnROYXZNZW51KCk6IEJyblBhcmVudE5hdk1lbnUgfCBudWxsIHtcblx0cmV0dXJuIGluamVjdChCcm5QYXJlbnROYXZNZW51LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUJyblBhcmVudE5hdk1lbnUocGFyZW50TmF2TWVudTogKCkgPT4gQnJuUGFyZW50TmF2TWVudSk6IEZhY3RvcnlQcm92aWRlciB7XG5cdHJldHVybiB7IHByb3ZpZGU6IEJyblBhcmVudE5hdk1lbnUsIHVzZUZhY3Rvcnk6IHBhcmVudE5hdk1lbnUgfTtcbn1cbiJdfQ==","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { computed, contentChildren, Directive, effect, ElementRef, inject, input, model, NgZone, signal, } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { computedPrevious, createHoverObservable } from '@spartan-ng/brain/core';\nimport { combineLatest, merge, of, Subject } from 'rxjs';\nimport { debounceTime, filter, map, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './brn-navigation-menu-link';\nimport { provideBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { injectBrnParentNavMenu } from './brn-parent-nav-menu.token';\nimport * as i0 from \"@angular/core\";\nfunction areArraysSameByElRef(arr1, arr2) {\n if (arr1.length !== arr2.length)\n return false;\n return arr1.every((item, index) => item === arr2[index]);\n}\nexport class BrnNavigationMenu {\n _directionality = inject(Directionality);\n _zone = inject(NgZone);\n _destroy$ = new Subject();\n el = inject(ElementRef);\n parentNavMenu = injectBrnParentNavMenu();\n /**\n * The controlled value of the menu item to activate.\n */\n value = model();\n /**\n * The duration from when the mouse enters a trigger until the content opens.\n */\n delayDuration = input(200);\n /**\n * How much time a user has to enter another trigger without incurring a delay again.\n */\n skipDelayDuration = input(300);\n /**\n * The reading direction of the menu when applicable.\n */\n dir = input();\n /**\n * The orientation of the menu.\n */\n orientation = input('horizontal');\n _isOpenDelayed = signal(true);\n isOpenDelayed = this._isOpenDelayed.asReadonly();\n _skipDelayTimerRef;\n _navAndSubnavMenuItems = contentChildren(BrnNavigationMenuItem, { descendants: true });\n menuItems = computed(() => this._navAndSubnavMenuItems().filter((mi) => mi.navMenuElRef === this.el), {\n equal: areArraysSameByElRef,\n });\n menuItemIds = computed(() => this.menuItems().map((mi) => mi.id()));\n _triggersAndLinks = computed(() => this.menuItems().map((mi) => mi.focusable()));\n _linkMenuItems = computed(() => this.menuItems().filter((i) => i.focusable() instanceof BrnNavigationMenuLink));\n _keyManager = computed(() => {\n return new FocusKeyManager(this._triggersAndLinks())\n .withHorizontalOrientation(this._dir())\n .withHomeAndEnd()\n .withPageUpDown()\n .withWrap()\n .skipPredicate((e) => !!e.disabled);\n });\n _reset$ = toObservable(this.value).pipe(pairwise(), filter(([prev, curr]) => curr === undefined && curr !== prev), map(() => undefined));\n _hovered$ = merge(createHoverObservable(this.el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)), this._reset$).pipe(startWith(undefined));\n _contentHovered$ = merge(toObservable(this._navAndSubnavMenuItems).pipe(switchMap((menuItems) => merge(...menuItems.map((mi) => mi.contentHovered$)))), this._reset$).pipe(startWith(undefined));\n previousValue = computedPrevious(this.value);\n _dir$ = toObservable(this.dir);\n /**\n * The reading direction of the menu when applicable.\n * If input is not passed, inherits globally from Directionality or assumes LTR (left-to-right) reading mode.\n */\n _dir = toSignal(combineLatest([\n this._dir$.pipe(startWith(undefined)),\n this._directionality.change.pipe(startWith(undefined)),\n of('ltr'),\n ]).pipe(map(([dir, dirChange, fallback]) => dir ?? dirChange ?? fallback)), { requireSync: true });\n context = computed(() => ({ orientation: this.orientation(), dir: this._dir() }));\n constructor() {\n effect(() => {\n const isOpen = this.value() !== undefined;\n const hasSkipDelayDuration = this.skipDelayDuration() > 0;\n if (isOpen) {\n clearTimeout(this._skipDelayTimerRef);\n if (hasSkipDelayDuration)\n this._isOpenDelayed.set(false);\n }\n else {\n clearTimeout(this._skipDelayTimerRef);\n this._skipDelayTimerRef = setTimeout(() => {\n this._isOpenDelayed.set(true);\n }, this.skipDelayDuration());\n }\n });\n combineLatest([this._hovered$, this._contentHovered$])\n .pipe(debounceTime(0), filter(([hovered, contentHovered]) => !(hovered === undefined && contentHovered === undefined)), takeUntil(this._destroy$))\n .subscribe(([hovered, contentHovered]) => {\n if (!hovered && !contentHovered) {\n this.value.set(undefined);\n }\n });\n }\n isLink(id) {\n return !!this._linkMenuItems().find((item) => item.id() === id);\n }\n setActiveItem(item) {\n this._keyManager().setActiveItem(item);\n }\n handleKeydown(event) {\n this._keyManager().onKeydown(event);\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n clearTimeout(this._skipDelayTimerRef);\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.2.0\", version: \"20.0.7\", type: BrnNavigationMenu, isStandalone: true, selector: \"nav[brnNavigationMenu]\", inputs: { value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null }, delayDuration: { classPropertyName: \"delayDuration\", publicName: \"delayDuration\", isSignal: true, isRequired: false, transformFunction: null }, skipDelayDuration: { classPropertyName: \"skipDelayDuration\", publicName: \"skipDelayDuration\", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: \"dir\", publicName: \"dir\", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: \"orientation\", publicName: \"orientation\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: \"valueChange\" }, host: { attributes: { \"aria-label\": \"Main\", \"data-slot\": \"navigation-menu\" }, listeners: { \"keydown\": \"handleKeydown($event)\" }, properties: { \"attr.data-orientation\": \"orientation()\", \"attr.dir\": \"_dir()\" } }, providers: [provideBrnNavigationMenu(BrnNavigationMenu)], queries: [{ propertyName: \"_navAndSubnavMenuItems\", predicate: BrnNavigationMenuItem, descendants: true, isSignal: true }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenu, decorators: [{\n type: Directive,\n args: [{\n selector: 'nav[brnNavigationMenu]',\n providers: [provideBrnNavigationMenu(BrnNavigationMenu)],\n host: {\n '(keydown)': 'handleKeydown($event)',\n '[attr.data-orientation]': 'orientation()',\n '[attr.dir]': '_dir()',\n 'aria-label': 'Main',\n 'data-slot': 'navigation-menu',\n },\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLW5hdmlnYXRpb24tbWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vbmF2aWdhdGlvbi1tZW51L3NyYy9saWIvYnJuLW5hdmlnYXRpb24tbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sUUFBUSxFQUNSLGVBQWUsRUFDZixTQUFTLEVBQ1QsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRXJFLFNBQVMsb0JBQW9CLENBQUMsSUFBZSxFQUFFLElBQWU7SUFDN0Qs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Q0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7MEhBbEpXLGlCQUFpQjs4R0FBakIsaUJBQWlCLHUrQkFUbEIsQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLGlFQStDRSxxQkFBcUI7OzJGQXRDbkUsaUJBQWlCO2tCQVg3QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFNBQVMsRUFBRSxDQUFDLHdCQUF3QixtQkFBbUIsQ0FBQztvQkFDeEQsSUFBSSxFQUFFO3dCQUNMLFdBQVcsRUFBRSx1QkFBdUI7d0JBQ3BDLHlCQUF5QixFQUFFLGVBQWU7d0JBQzFDLFlBQVksRUFBRSxRQUFRO3dCQUN0QixZQUFZLEVBQUUsTUFBTTt3QkFDcEIsV0FBVyxFQUFFLGlCQUFpQjtxQkFDOUI7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c2FibGVPcHRpb24sIEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtcblx0Y29tcHV0ZWQsXG5cdGNvbnRlbnRDaGlsZHJlbixcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG1vZGVsLFxuXHROZ1pvbmUsXG5cdE9uRGVzdHJveSxcblx0c2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBjb21wdXRlZFByZXZpb3VzLCBjcmVhdGVIb3Zlck9ic2VydmFibGUgfSBmcm9tICdAc3BhcnRhbi1uZy9icmFpbi9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgcGFpcndpc2UsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCcm5OYXZpZ2F0aW9uTWVudUl0ZW0gfSBmcm9tICcuL2Jybi1uYXZpZ2F0aW9uLW1lbnUtaXRlbSc7XG5pbXBvcnQgeyBCcm5OYXZpZ2F0aW9uTWVudUxpbmsgfSBmcm9tICcuL2Jybi1uYXZpZ2F0aW9uLW1lbnUtbGluayc7XG5pbXBvcnQgeyBwcm92aWRlQnJuTmF2aWdhdGlvbk1lbnUgfSBmcm9tICcuL2Jybi1uYXZpZ2F0aW9uLW1lbnUudG9rZW4nO1xuaW1wb3J0IHsgaW5qZWN0QnJuUGFyZW50TmF2TWVudSB9IGZyb20gJy4vYnJuLXBhcmVudC1uYXYtbWVudS50b2tlbic7XG5cbmZ1bmN0aW9uIGFyZUFycmF5c1NhbWVCeUVsUmVmKGFycjE6IHVua25vd25bXSwgYXJyMjogdW5rbm93bltdKSB7XG5cdGlmIChhcnIxLmxlbmd0aCAhPT0gYXJyMi5sZW5ndGgpIHJldHVybiBmYWxzZTtcblx0cmV0dXJuIGFycjEuZXZlcnkoKGl0ZW0sIGluZGV4KSA9PiBpdGVtID09PSBhcnIyW2luZGV4XSk7XG59XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ25hdlticm5OYXZpZ2F0aW9uTWVudV0nLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlQnJuTmF2aWdhdGlvbk1lbnUoQnJuTmF2aWdhdGlvbk1lbnUpXSxcblx0aG9zdDoge1xuXHRcdCcoa2V5ZG93biknOiAnaGFuZGxlS2V5ZG93bigkZXZlbnQpJyxcblx0XHQnW2F0dHIuZGF0YS1vcmllbnRhdGlvbl0nOiAnb3JpZW50YXRpb24oKScsXG5cdFx0J1thdHRyLmRpcl0nOiAnX2RpcigpJyxcblx0XHQnYXJpYS1sYWJlbCc6ICdNYWluJyxcblx0XHQnZGF0YS1zbG90JzogJ25hdmlnYXRpb24tbWVudScsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJybk5hdmlnYXRpb25NZW51IGltcGxlbWVudHMgT25EZXN0cm95IHtcblx0cHJpdmF0ZSByZWFkb25seSBfZGlyZWN0aW9uYWxpdHkgPSBpbmplY3QoRGlyZWN0aW9uYWxpdHkpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgZWwgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXHRwdWJsaWMgcmVhZG9ubHkgcGFyZW50TmF2TWVudSA9IGluamVjdEJyblBhcmVudE5hdk1lbnUoKTtcblxuXHQvKipcblx0ICogVGhlIGNvbnRyb2xsZWQgdmFsdWUgb2YgdGhlIG1lbnUgaXRlbSB0byBhY3RpdmF0ZS5cblx0ICovXG5cdHB1YmxpYyByZWFkb25seSB2YWx1ZSA9IG1vZGVsPHN0cmluZz4oKTtcblxuXHQvKipcblx0ICogVGhlIGR1cmF0aW9uIGZyb20gd2hlbiB0aGUgbW91c2UgZW50ZXJzIGEgdHJpZ2dlciB1bnRpbCB0aGUgY29udGVudCBvcGVucy5cblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBkZWxheUR1cmF0aW9uID0gaW5wdXQ8bnVtYmVyPigyMDApO1xuXG5cdC8qKlxuXHQgKiBIb3cgbXVjaCB0aW1lIGEgdXNlciBoYXMgdG8gZW50ZXIgYW5vdGhlciB0cmlnZ2VyIHdpdGhvdXQgaW5jdXJyaW5nIGEgZGVsYXkgYWdhaW4uXG5cdCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgc2tpcERlbGF5RHVyYXRpb24gPSBpbnB1dDxudW1iZXI+KDMwMCk7XG5cblx0LyoqXG5cdCAqIFRoZSByZWFkaW5nIGRpcmVjdGlvbiBvZiB0aGUgbWVudSB3aGVuIGFwcGxpY2FibGUuXG5cdCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgZGlyID0gaW5wdXQ8J2x0cicgfCAncnRsJz4oKTtcblxuXHQvKipcblx0ICogVGhlIG9yaWVudGF0aW9uIG9mIHRoZSBtZW51LlxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IG9yaWVudGF0aW9uID0gaW5wdXQ8J2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJz4oJ2hvcml6b250YWwnKTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9pc09wZW5EZWxheWVkID0gc2lnbmFsKHRydWUpO1xuXHRwdWJsaWMgcmVhZG9ubHkgaXNPcGVuRGVsYXllZCA9IHRoaXMuX2lzT3BlbkRlbGF5ZWQuYXNSZWFkb25seSgpO1xuXG5cdHByaXZhdGUgX3NraXBEZWxheVRpbWVyUmVmOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9uYXZBbmRTdWJuYXZNZW51SXRlbXMgPSBjb250ZW50Q2hpbGRyZW4oQnJuTmF2aWdhdGlvbk1lbnVJdGVtLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pO1xuXG5cdHB1YmxpYyByZWFkb25seSBtZW51SXRlbXMgPSBjb21wdXRlZChcblx0XHQoKSA9PiB0aGlzLl9uYXZBbmRTdWJuYXZNZW51SXRlbXMoKS5maWx0ZXIoKG1pKSA9PiBtaS5uYXZNZW51RWxSZWYgPT09IHRoaXMuZWwpLFxuXHRcdHtcblx0XHRcdGVxdWFsOiBhcmVBcnJheXNTYW1lQnlFbFJlZixcblx0XHR9LFxuXHQpO1xuXG5cdHB1YmxpYyByZWFkb25seSBtZW51SXRlbUlkcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWVudUl0ZW1zKCkubWFwKChtaSkgPT4gbWkuaWQoKSkpO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX3RyaWdnZXJzQW5kTGlua3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbnVJdGVtcygpLm1hcCgobWkpID0+IG1pLmZvY3VzYWJsZSgpKSk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfbGlua01lbnVJdGVtcyA9IGNvbXB1dGVkKCgpID0+XG5cdFx0dGhpcy5tZW51SXRlbXMoKS5maWx0ZXIoKGkpID0+IGkuZm9jdXNhYmxlKCkgaW5zdGFuY2VvZiBCcm5OYXZpZ2F0aW9uTWVudUxpbmspLFxuXHQpO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX2tleU1hbmFnZXIgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBGb2N1c0tleU1hbmFnZXI8Rm9jdXNhYmxlT3B0aW9uPih0aGlzLl90cmlnZ2Vyc0FuZExpbmtzKCkpXG5cdFx0XHQud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0aGlzLl9kaXIoKSlcblx0XHRcdC53aXRoSG9tZUFuZEVuZCgpXG5cdFx0XHQud2l0aFBhZ2VVcERvd24oKVxuXHRcdFx0LndpdGhXcmFwKClcblx0XHRcdC5za2lwUHJlZGljYXRlKChlKSA9PiAhIWUuZGlzYWJsZWQpO1xuXHR9KTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9yZXNldCQgPSB0b09ic2VydmFibGUodGhpcy52YWx1ZSkucGlwZShcblx0XHRwYWlyd2lzZSgpLFxuXHRcdGZpbHRlcigoW3ByZXYsIGN1cnJdKSA9PiBjdXJyID09PSB1bmRlZmluZWQgJiYgY3VyciAhPT0gcHJldiksXG5cdFx0bWFwKCgpID0+IHVuZGVmaW5lZCksXG5cdCk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfaG92ZXJlZCQgPSBtZXJnZShcblx0XHRjcmVhdGVIb3Zlck9ic2VydmFibGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLl96b25lLCB0aGlzLl9kZXN0cm95JCkucGlwZShtYXAoKGUpID0+IGUuaG92ZXIpKSxcblx0XHR0aGlzLl9yZXNldCQsXG5cdCkucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfY29udGVudEhvdmVyZWQkID0gbWVyZ2UoXG5cdFx0dG9PYnNlcnZhYmxlKHRoaXMuX25hdkFuZFN1Ym5hdk1lbnVJdGVtcykucGlwZShcblx0XHRcdHN3aXRjaE1hcCgobWVudUl0ZW1zKSA9PiBtZXJnZSguLi5tZW51SXRlbXMubWFwKChtaSkgPT4gbWkuY29udGVudEhvdmVyZWQkKSkpLFxuXHRcdCksXG5cdFx0dGhpcy5fcmVzZXQkLFxuXHQpLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCkpO1xuXG5cdHB1YmxpYyByZWFkb25seSBwcmV2aW91c1ZhbHVlID0gY29tcHV0ZWRQcmV2aW91cyh0aGlzLnZhbHVlKTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9kaXIkID0gdG9PYnNlcnZhYmxlKHRoaXMuZGlyKTtcblxuXHQvKipcblx0ICogVGhlIHJlYWRpbmcgZGlyZWN0aW9uIG9mIHRoZSBtZW51IHdoZW4gYXBwbGljYWJsZS5cblx0ICogSWYgaW5wdXQgaXMgbm90IHBhc3NlZCwgaW5oZXJpdHMgZ2xvYmFsbHkgZnJvbSBEaXJlY3Rpb25hbGl0eSBvciBhc3N1bWVzIExUUiAobGVmdC10by1yaWdodCkgcmVhZGluZyBtb2RlLlxuXHQgKi9cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9kaXIgPSB0b1NpZ25hbChcblx0XHRjb21iaW5lTGF0ZXN0KFtcblx0XHRcdHRoaXMuX2RpciQucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSksXG5cdFx0XHR0aGlzLl9kaXJlY3Rpb25hbGl0eS5jaGFuZ2UucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSksXG5cdFx0XHRvZignbHRyJyBhcyBjb25zdCksXG5cdFx0XSkucGlwZShtYXAoKFtkaXIsIGRpckNoYW5nZSwgZmFsbGJhY2tdKSA9PiBkaXIgPz8gZGlyQ2hhbmdlID8/IGZhbGxiYWNrKSksXG5cdFx0eyByZXF1aXJlU3luYzogdHJ1ZSB9LFxuXHQpO1xuXG5cdHB1YmxpYyByZWFkb25seSBjb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4gKHsgb3JpZW50YXRpb246IHRoaXMub3JpZW50YXRpb24oKSwgZGlyOiB0aGlzLl9kaXIoKSB9KSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IGlzT3BlbiA9IHRoaXMudmFsdWUoKSAhPT0gdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3QgaGFzU2tpcERlbGF5RHVyYXRpb24gPSB0aGlzLnNraXBEZWxheUR1cmF0aW9uKCkgPiAwO1xuXG5cdFx0XHRpZiAoaXNPcGVuKSB7XG5cdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLl9za2lwRGVsYXlUaW1lclJlZik7XG5cdFx0XHRcdGlmIChoYXNTa2lwRGVsYXlEdXJhdGlvbikgdGhpcy5faXNPcGVuRGVsYXllZC5zZXQoZmFsc2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMuX3NraXBEZWxheVRpbWVyUmVmKTtcblx0XHRcdFx0dGhpcy5fc2tpcERlbGF5VGltZXJSZWYgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9pc09wZW5EZWxheWVkLnNldCh0cnVlKTtcblx0XHRcdFx0fSwgdGhpcy5za2lwRGVsYXlEdXJhdGlvbigpKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGNvbWJpbmVMYXRlc3QoW3RoaXMuX2hvdmVyZWQkLCB0aGlzLl9jb250ZW50SG92ZXJlZCRdKVxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdGRlYm91bmNlVGltZSgwKSxcblx0XHRcdFx0ZmlsdGVyKChbaG92ZXJlZCwgY29udGVudEhvdmVyZWRdKSA9PiAhKGhvdmVyZWQgPT09IHVuZGVmaW5lZCAmJiBjb250ZW50SG92ZXJlZCA9PT0gdW5kZWZpbmVkKSksXG5cdFx0XHRcdHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG5cdFx0XHQpXG5cdFx0XHQuc3Vic2NyaWJlKChbaG92ZXJlZCwgY29udGVudEhvdmVyZWRdKSA9PiB7XG5cdFx0XHRcdGlmICghaG92ZXJlZCAmJiAhY29udGVudEhvdmVyZWQpIHtcblx0XHRcdFx0XHR0aGlzLnZhbHVlLnNldCh1bmRlZmluZWQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBpc0xpbmsoaWQ/OiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLl9saW5rTWVudUl0ZW1zKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCgpID09PSBpZCk7XG5cdH1cblxuXHRwdWJsaWMgc2V0QWN0aXZlSXRlbShpdGVtOiBGb2N1c2FibGVPcHRpb24pIHtcblx0XHR0aGlzLl9rZXlNYW5hZ2VyKCkuc2V0QWN0aXZlSXRlbShpdGVtKTtcblx0fVxuXG5cdHByb3RlY3RlZCBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0dGhpcy5fa2V5TWFuYWdlcigpLm9uS2V5ZG93bihldmVudCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG5cdFx0dGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcblx0XHRjbGVhclRpbWVvdXQodGhpcy5fc2tpcERlbGF5VGltZXJSZWYpO1xuXHR9XG59XG4iXX0=","import { computed, Directive, effect, inject, Renderer2, TemplateRef, untracked } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { BrnParentNavMenu, provideBrnParentNavMenu } from './brn-parent-nav-menu.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnNavigationMenuContent {\n _navigationMenu = injectBrnNavigationMenu();\n _navigationMenuItem = injectBrnNavigationMenuItem();\n _contentService = inject(BrnNavigationMenuContentService);\n _tpl = inject(TemplateRef);\n _renderer = inject(Renderer2);\n _subNavContext = inject(BrnParentNavMenu);\n _navMenuValue = this._navigationMenu.value;\n _prevNavMenuValue = this._navigationMenu.previousValue;\n _id = this._navigationMenuItem.id;\n _isActive = this._navigationMenuItem.isActive;\n _wasActive = this._navigationMenuItem.wasActive;\n _state = this._navigationMenuItem.state;\n _contentEl = this._contentService.contentEl;\n _menuItemsIds = this._navigationMenu.menuItemIds;\n _orientation = computed(() => this._navigationMenu.context().orientation);\n _dir = computed(() => this._navigationMenu.context().dir);\n constructor() {\n if (!this._tpl)\n return;\n this._navigationMenuItem.contentTemplate.set(this._tpl);\n this._navigationMenuItem.subNavVisible$.next(this._subNavContext.subNavVisible$);\n effect(() => {\n const el = this._contentEl();\n if (el) {\n this._renderer.setAttribute(el, 'tabindex', '0');\n this._renderer.setAttribute(el, 'data-slot', 'navigation-menu-content');\n }\n });\n effect(() => {\n const el = this._contentEl();\n if (el) {\n this._renderer.setAttribute(el, 'data-state', this._state());\n }\n });\n effect(() => {\n const el = this._contentEl();\n if (el) {\n this._renderer.setAttribute(el, 'data-orientation', this._orientation());\n }\n });\n effect(() => {\n const isActive = this._isActive();\n const wasActive = this._wasActive();\n const dir = this._dir();\n const orientation = this._orientation();\n const el = untracked(this._contentEl);\n if (!el)\n return;\n const id = this._id();\n const menuItemsIds = dir === 'rtl' && orientation === 'horizontal' ? this._menuItemsIds().slice().reverse() : this._menuItemsIds();\n if (isActive) {\n const prevNavMenuValue = this._prevNavMenuValue();\n const isPrevLink = untracked(() => this._navigationMenu.isLink(prevNavMenuValue));\n if (prevNavMenuValue && !isPrevLink) {\n const motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(prevNavMenuValue) ? 'from-end' : 'from-start';\n this._renderer.setAttribute(el, 'data-motion', motion);\n }\n }\n else if (wasActive) {\n const navMenuValue = this._navMenuValue();\n const isLink = untracked(() => this._navigationMenu.isLink(navMenuValue));\n if (!navMenuValue || isLink)\n return;\n const motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(navMenuValue) ? 'to-end' : 'to-start';\n this._renderer.setAttribute(el, 'data-motion', motion);\n }\n });\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnNavigationMenuContent, isStandalone: true, selector: \"[brnNavigationMenuContent]\", providers: [provideBrnParentNavMenu((() => ({ subNavVisible$: new Subject() })))], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[brnNavigationMenuContent]',\n providers: [provideBrnParentNavMenu((() => ({ subNavVisible$: new Subject() })))],\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLW5hdmlnYXRpb24tbWVudS1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9uYXZpZ2F0aW9uLW1lbnUvc3JjL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51LWNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQU14RixNQUFNLE9BQU8sd0JBQXdCO0lBQ25CLGVBQWUsR0FBRyx1QkFBdUIsRUFBRSxDQUFDO0lBQzVDLG1CQUFtQixHQUFHLDJCQUEyQixFQUFFLENBQUM7SUFDcEQsZUFBZSxHQUFHLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQzFELElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0IsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixjQUFjLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFMUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQzNDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO0lBRXZELEdBQUcsR0FBRyxJQUFJLENB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QUFNLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzBIQS9FVyx3QkFBd0I7OEdBQXhCLHdCQUF3Qix5RUFGekIsQ0FBQyx1QkFBdUIsRUFBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksT0FBTyxFQUFXLEVBQUUsQ0FBQyxFQUFDLENBQUM7OzJGQUU1RSx3QkFBd0I7a0JBSnBDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsU0FBUyxFQUFFLENBQUMsdUJBQXVCLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLE9BQU8sRUFBVyxFQUFFLENBQUMsRUFBQyxDQUFDO2lCQUN4RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0LCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJybk5hdmlnYXRpb25NZW51Q29udGVudFNlcnZpY2UgfSBmcm9tICcuL2Jybi1uYXZpZ2F0aW9uLW1lbnUtY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGluamVjdEJybk5hdmlnYXRpb25NZW51SXRlbSB9IGZyb20gJy4vYnJuLW5hdmlnYXRpb24tbWVudS1pdGVtLnRva2VuJztcbmltcG9ydCB7IGluamVjdEJybk5hdmlnYXRpb25NZW51IH0gZnJvbSAnLi9icm4tbmF2aWdhdGlvbi1tZW51LnRva2VuJztcbmltcG9ydCB7IEJyblBhcmVudE5hdk1lbnUsIHByb3ZpZGVCcm5QYXJlbnROYXZNZW51IH0gZnJvbSAnLi9icm4tcGFyZW50LW5hdi1tZW51LnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2Jybk5hdmlnYXRpb25NZW51Q29udGVudF0nLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlQnJuUGFyZW50TmF2TWVudSgoKSA9PiAoeyBzdWJOYXZWaXNpYmxlJDogbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKSB9KSldLFxufSlcbmV4cG9ydCBjbGFzcyBCcm5OYXZpZ2F0aW9uTWVudUNvbnRlbnQge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uTWVudSA9IGluamVjdEJybk5hdmlnYXRpb25NZW51KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRpb25NZW51SXRlbSA9IGluamVjdEJybk5hdmlnYXRpb25NZW51SXRlbSgpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50U2VydmljZSA9IGluamVjdChCcm5OYXZpZ2F0aW9uTWVudUNvbnRlbnRTZXJ2aWNlKTtcblx0cHJpdmF0ZSByZWFkb25seSBfdHBsID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcblx0cHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblx0cHJpdmF0ZSByZWFkb25seSBfc3ViTmF2Q29udGV4dCA9IGluamVjdChCcm5QYXJlbnROYXZNZW51KTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9uYXZNZW51VmFsdWUgPSB0aGlzLl9uYXZpZ2F0aW9uTWVudS52YWx1ZTtcblx0cHJpdmF0ZSByZWFkb25seSBfcHJldk5hdk1lbnVWYWx1ZSA9IHRoaXMuX25hdmlnYXRpb25NZW51LnByZXZpb3VzVmFsdWU7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfaWQgPSB0aGlzLl9uYXZpZ2F0aW9uTWVudUl0ZW0uaWQ7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2lzQWN0aXZlID0gdGhpcy5fbmF2aWdhdGlvbk1lbnVJdGVtLmlzQWN0aXZlO1xuXHRwcml2YXRlIHJlYWRvbmx5IF93YXNBY3RpdmUgPSB0aGlzLl9uYXZpZ2F0aW9uTWVudUl0ZW0ud2FzQWN0aXZlO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSA9IHRoaXMuX25hdmlnYXRpb25NZW51SXRlbS5zdGF0ZTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50RWwgPSB0aGlzLl9jb250ZW50U2VydmljZS5jb250ZW50RWw7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfbWVudUl0ZW1zSWRzID0gdGhpcy5fbmF2aWdhdGlvbk1lbnUubWVudUl0ZW1JZHM7XG5cdHByaXZhdGUgcmVhZG9ubHkgX29yaWVudGF0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fbmF2aWdhdGlvbk1lbnUuY29udGV4dCgpLm9yaWVudGF0aW9uKTtcblx0cHJpdmF0ZSByZWFkb25seSBfZGlyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fbmF2aWdhdGlvbk1lbnUuY29udGV4dCgpLmRpcik7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aWYgKCF0aGlzLl90cGwpIHJldHVybjtcblx0XHR0aGlzLl9uYXZpZ2F0aW9uTWVudUl0ZW0uY29udGVudFRlbXBsYXRlLnNldCh0aGlzLl90cGwpO1xuXHRcdHRoaXMuX25hdmlnYXRpb25NZW51SXRlbS5zdWJOYXZWaXNpYmxlJC5uZXh0KHRoaXMuX3N1Yk5hdkNvbnRleHQuc3ViTmF2VmlzaWJsZSQpO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IGVsID0gdGhpcy5fY29udGVudEVsKCk7XG5cdFx0XHRpZiAoZWwpIHtcblx0XHRcdFx0dGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCAndGFiaW5kZXgnLCAnMCcpO1xuXHRcdFx0XHR0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWwsICdkYXRhLXNsb3QnLCAnbmF2aWdhdGlvbi1tZW51LWNvbnRlbnQnKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBlbCA9IHRoaXMuX2NvbnRlbnRFbCgpO1xuXHRcdFx0aWYgKGVsKSB7XG5cdFx0XHRcdHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwgJ2RhdGEtc3RhdGUnLCB0aGlzLl9zdGF0ZSgpKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBlbCA9IHRoaXMuX2NvbnRlbnRFbCgpO1xuXHRcdFx0aWYgKGVsKSB7XG5cdFx0XHRcdHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwgJ2RhdGEtb3JpZW50YXRpb24nLCB0aGlzLl9vcmllbnRhdGlvbigpKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBpc0FjdGl2ZSA9IHRoaXMuX2lzQWN0aXZlKCk7XG5cdFx0XHRjb25zdCB3YXNBY3RpdmUgPSB0aGlzLl93YXNBY3RpdmUoKTtcblx0XHRcdGNvbnN0IGRpciA9IHRoaXMuX2RpcigpO1xuXHRcdFx0Y29uc3Qgb3JpZW50YXRpb24gPSB0aGlzLl9vcmllbnRhdGlvbigpO1xuXG5cdFx0XHRjb25zdCBlbCA9IHVudHJhY2tlZCh0aGlzLl9jb250ZW50RWwpO1xuXHRcdFx0aWYgKCFlbCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBpZCA9IHRoaXMuX2lkKCk7XG5cdFx0XHRjb25zdCBtZW51SXRlbXNJZHMgPVxuXHRcdFx0XHRkaXIgPT09ICdydGwnICYmIG9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgPyB0aGlzLl9tZW51SXRlbXNJZHMoKS5zbGljZSgpLnJldmVyc2UoKSA6IHRoaXMuX21lbnVJdGVtc0lkcygpO1xuXG5cdFx0XHRpZiAoaXNBY3RpdmUpIHtcblx0XHRcdFx0Y29uc3QgcHJldk5hdk1lbnVWYWx1ZSA9IHRoaXMuX3ByZXZOYXZNZW51VmFsdWUoKTtcblx0XHRcdFx0Y29uc3QgaXNQcmV2TGluayA9IHVudHJhY2tlZCgoKSA9PiB0aGlzLl9uYXZpZ2F0aW9uTWVudS5pc0xpbmsocHJldk5hdk1lbnVWYWx1ZSkpO1xuXG5cdFx0XHRcdGlmIChwcmV2TmF2TWVudVZhbHVlICYmICFpc1ByZXZMaW5rKSB7XG5cdFx0XHRcdFx0Y29uc3QgbW90aW9uID0gbWVudUl0ZW1zSWRzLmluZGV4T2YoaWQpID4gbWVudUl0ZW1zSWRzLmluZGV4T2YocHJldk5hdk1lbnVWYWx1ZSkgPyAnZnJvbS1lbmQnIDogJ2Zyb20tc3RhcnQnO1xuXHRcdFx0XHRcdHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwgJ2RhdGEtbW90aW9uJywgbW90aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh3YXNBY3RpdmUpIHtcblx0XHRcdFx0Y29uc3QgbmF2TWVudVZhbHVlID0gdGhpcy5fbmF2TWVudVZhbHVlKCk7XG5cdFx0XHRcdGNvbnN0IGlzTGluayA9IHVudHJhY2tlZCgoKSA9PiB0aGlzLl9uYXZpZ2F0aW9uTWVudS5pc0xpbmsobmF2TWVudVZhbHVlKSk7XG5cdFx0XHRcdGlmICghbmF2TWVudVZhbHVlIHx8IGlzTGluaykgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IG1vdGlvbiA9IG1lbnVJdGVtc0lkcy5pbmRleE9mKGlkKSA+IG1lbnVJdGVtc0lkcy5pbmRleE9mKG5hdk1lbnVWYWx1ZSkgPyAndG8tZW5kJyA6ICd0by1zdGFydCc7XG5cdFx0XHRcdHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwgJ2RhdGEtbW90aW9uJywgbW90aW9uKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19","import { computed, Directive } from '@angular/core';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport * as i0 from \"@angular/core\";\nexport class BrnNavigationMenuList {\n _navigationMenu = injectBrnNavigationMenu();\n _orientation = computed(() => this._navigationMenu.context().orientation);\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuList, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnNavigationMenuList, isStandalone: true, selector: \"ul[brnNavigationMenuList]\", host: { attributes: { \"data-slot\": \"navigation-menu-list\" }, properties: { \"attr.data-orientation\": \"_orientation()\" } }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuList, decorators: [{\n type: Directive,\n args: [{\n selector: 'ul[brnNavigationMenuList]',\n host: {\n '[attr.data-orientation]': '_orientation()',\n 'data-slot': 'navigation-menu-list',\n },\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLW5hdmlnYXRpb24tbWVudS1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9uYXZpZ2F0aW9uLW1lbnUvc3JjL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51LWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBU3RFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEIsZUFBZSxHQUFHLHVCQUF1QixFQUFFLENBQUM7SUFFMUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDOzBIQUhqRixxQkFBcUI7OEdBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFQakMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxJQUFJLEVBQUU7d0JBQ0wseUJBQXlCLEVBQUUsZ0JBQWdCO3dCQUMzQyxXQUFXLEVBQUUsc0JBQXNCO3FCQUNuQztpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdEJybk5hdmlnYXRpb25NZW51IH0gZnJvbSAnLi9icm4tbmF2aWdhdGlvbi1tZW51LnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAndWxbYnJuTmF2aWdhdGlvbk1lbnVMaXN0XScsXG5cdGhvc3Q6IHtcblx0XHQnW2F0dHIuZGF0YS1vcmllbnRhdGlvbl0nOiAnX29yaWVudGF0aW9uKCknLFxuXHRcdCdkYXRhLXNsb3QnOiAnbmF2aWdhdGlvbi1tZW51LWxpc3QnLFxuXHR9LFxufSlcbmV4cG9ydCBjbGFzcyBCcm5OYXZpZ2F0aW9uTWVudUxpc3Qge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uTWVudSA9IGluamVjdEJybk5hdmlnYXRpb25NZW51KCk7XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9vcmllbnRhdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX25hdmlnYXRpb25NZW51LmNvbnRleHQoKS5vcmllbnRhdGlvbik7XG59XG4iXX0=","import { hasModifierKey } from '@angular/cdk/keycodes';\nimport { isPlatformBrowser } from '@angular/common';\nimport { computed, Directive, effect, ElementRef, inject, NgZone, PLATFORM_ID, untracked, ViewContainerRef, } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { createHoverObservable, isElement } from '@spartan-ng/brain/core';\nimport { fromEvent, merge, of, Subject } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, share, switchMap, takeUntil, tap, } from 'rxjs/operators';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@spartan-ng/brain/button\";\nexport class BrnNavigationMenuTrigger {\n static _id = 0;\n _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n _navigationMenu = injectBrnNavigationMenu();\n _navigationMenuItem = injectBrnNavigationMenuItem();\n _destroy$ = new Subject();\n _vcr = inject(ViewContainerRef);\n _zone = inject(NgZone);\n _el = inject(ElementRef);\n _contentService = inject(BrnNavigationMenuContentService);\n _id = `brn-navigation-menu-trigger-${++BrnNavigationMenuTrigger._id}`;\n _parentNavMenu = this._navigationMenu.parentNavMenu;\n _isActive = this._navigationMenuItem.isActive;\n _contentId = this._contentService.id;\n _state = this._navigationMenuItem.state;\n _dir = computed(() => this._navigationMenu.context().dir);\n _orientation = computed(() => this._navigationMenu.context().orientation);\n _isOpenDelayed = this._navigationMenu.isOpenDelayed;\n _delayDuration = this._navigationMenu.delayDuration;\n _contentTemplate = this._navigationMenuItem.contentTemplate;\n _isSubNavVisible = toSignal(this._navigationMenuItem.subNavVisible$.pipe(switchMap((c) => c)), {\n initialValue: false,\n });\n _isActive$ = toObservable(this._navigationMenuItem.isActive).pipe(map((value) => ({ type: 'set', visible: value })));\n _clicked$ = fromEvent(this._el.nativeElement, 'click').pipe(map(() => !this._navigationMenuItem.isActive()), map((value) => ({ type: 'click', visible: value })));\n _hovered$ = merge(createHoverObservable(this._el.nativeElement, this._zone, this._destroy$), this._contentService.hovered$.pipe(map((v) => ({ hover: v, relatedTarget: null })))).pipe(\n // Hover event is NOT allowed when a sub-navigation is currently visible, AND the current hover event is false.\n filter((e) => !(this._isSubNavVisible() && !e.hover)), map((e) => ({ type: 'hover', visible: e.hover, relatedTarget: e.relatedTarget })));\n _showing$ = merge(this._isActive$, this._clicked$, this._hovered$).pipe(debounceTime(0), distinctUntilChanged((prev, curr) => prev.visible === curr.visible), switchMap((ev) => {\n const shouldDelay = ev.visible && ev.type !== 'click' && this._isOpenDelayed();\n return of(ev).pipe(delay(shouldDelay ? this._delayDuration() : 0));\n }), \n // Deactivate needs to be called if the menu item content is hidden with a user click OR\n // If nav item is hovered out to a disabled sibling nav item\n tap((ev) => {\n if (ev.visible) {\n this._activate();\n }\n else {\n const shouldDeactivate = (ev.type === 'click' || !this._isHoverOnSibling(ev)) && this._navigationMenuItem.isActive();\n if (shouldDeactivate) {\n this._deactivate();\n }\n }\n }), share(), takeUntil(this._destroy$));\n get disabled() {\n return this._navigationMenuItem.disabled();\n }\n constructor() {\n effect(() => {\n const value = this._contentTemplate();\n untracked(() => {\n if (value) {\n this._contentService.setContent(value, this._vcr);\n }\n });\n });\n effect(() => {\n const orientation = this._orientation();\n untracked(() => {\n this._contentService.updateOrientation(orientation);\n });\n });\n effect(() => {\n const dir = this._dir();\n untracked(() => {\n this._contentService.updateDirection(dir);\n });\n });\n }\n ngOnInit() {\n this._contentService.setConfig({ attachTo: this._el, direction: this._dir(), orientation: this._orientation() });\n this._showing$.pipe(takeUntil(this._destroy$)).subscribe((ev) => {\n if (this._parentNavMenu) {\n this._parentNavMenu.subNavVisible$.next(ev.visible);\n }\n if (ev.visible) {\n if (this._isBrowser) {\n this._contentService.show();\n }\n }\n else {\n this._contentService.hide();\n }\n });\n this._contentService.escapePressed$.pipe(takeUntil(this._destroy$)).subscribe((e) => {\n e.preventDefault();\n this._el.nativeElement.focus();\n this._deactivate();\n });\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n focus(_origin) {\n if (this._navigationMenuItem.disabled())\n return;\n this._el.nativeElement.focus();\n }\n handleFocus() {\n this._navigationMenu.setActiveItem(this);\n }\n onTab(e) {\n const contentEl = this._contentService.contentEl();\n if (contentEl && !hasModifierKey(e)) {\n e.preventDefault();\n contentEl.focus();\n }\n }\n onEscape(e) {\n e.preventDefault();\n this._deactivate();\n }\n _activate() {\n this._navigationMenu.value.set(this._navigationMenuItem.id());\n }\n _deactivate() {\n this._navigationMenu.value.set(undefined);\n }\n _isHoverOnSibling(ev) {\n if (ev.type !== 'hover' || !isElement(ev.relatedTarget))\n return false;\n const menuItem = this._isMenuItemOrChild(ev.relatedTarget);\n return !!menuItem && !menuItem.disabled();\n }\n _isMenuItemOrChild(node) {\n return this._navigationMenu\n .menuItems()\n .find((ref) => ref.el.nativeElement === node || ref.el.nativeElement.contains(node));\n }\n /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: BrnNavigationMenuTrigger, isStandalone: true, selector: \"button[brnNavigationMenuTrigger]\", host: { attributes: { \"data-slot\": \"navigation-menu-trigger\" }, listeners: { \"keydown.escape\": \"onEscape($event)\", \"keydown.tab\": \"onTab($event)\", \"focus\": \"handleFocus()\" }, properties: { \"id\": \"_id\", \"attr.data-state\": \"_state()\", \"attr.aria-expanded\": \"_isActive()\", \"attr.aria-controls\": \"_contentId\" } }, providers: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)], hostDirectives: [{ directive: i1.BrnButton, inputs: [\"disabled\", \"disabled\"] }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: BrnNavigationMenuTrigger, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[brnNavigationMenuTrigger]',\n providers: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)],\n hostDirectives: [\n {\n directive: BrnButton,\n inputs: ['disabled'],\n },\n ],\n host: {\n '(keydown.escape)': 'onEscape($event)',\n '(keydown.tab)': 'onTab($event)',\n '(focus)': 'handleFocus()',\n '[id]': '_id',\n '[attr.data-state]': '_state()',\n '[attr.aria-expanded]': '_isActive()',\n '[attr.aria-controls]': '_contentId',\n 'data-slot': 'navigation-menu-trigger',\n },\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLW5hdmlnYXRpb24tbWVudS10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9uYXZpZ2F0aW9uLW1lbnUvc3JjL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51LXRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFHTixXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ0gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV4RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUs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Szt3QkFDYixtQkFBbUIsRUFBRSxVQUFVO3dCQUMvQixzQkFBc0IsRUFBRSxhQUFhO3dCQUNyQyxzQkFBc0IsRUFBRSxZQUFZO3dCQUNwQyxXQUFXLEVBQUUseUJBQXlCO3FCQUN0QztpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBoYXNNb2RpZmllcktleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRjb21wdXRlZCxcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0Tmdab25lLFxuXHRPbkRlc3Ryb3ksXG5cdE9uSW5pdCxcblx0UExBVEZPUk1fSUQsXG5cdHVudHJhY2tlZCxcblx0Vmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQnJuQnV0dG9uIH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vYnV0dG9uJztcbmltcG9ydCB7IGNyZWF0ZUhvdmVyT2JzZXJ2YWJsZSwgaXNFbGVtZW50IH0gZnJvbSAnQHNwYXJ0YW4tbmcvYnJhaW4vY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcblx0ZGVib3VuY2VUaW1lLFxuXHRkZWxheSxcblx0ZGlzdGluY3RVbnRpbENoYW5nZWQsXG5cdGZpbHRlcixcblx0bWFwLFxuXHRzaGFyZSxcblx0c3dpdGNoTWFwLFxuXHR0YWtlVW50aWwsXG5cdHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQnJuTmF2aWdhdGlvbk1lbnVDb250ZW50U2VydmljZSB9IGZyb20gJy4vYnJuLW5hdmlnYXRpb24tbWVudS1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQnJuTmF2aWdhdGlvbk1lbnVJdGVtIH0gZnJvbSAnLi9icm4tbmF2aWdhdGlvbi1tZW51LWl0ZW0nO1xuaW1wb3J0IHsgcHJvdmlkZUJybk5hdmlnYXRpb25NZW51Rm9jdXNhYmxlIH0gZnJvbSAnLi9icm4tbmF2aWdhdGlvbi1tZW51LWl0ZW0tZm9jdXNhYmxlLnRva2VuJztcbmltcG9ydCB7IGluamVjdEJybk5hdmlnYXRpb25NZW51SXRlbSB9IGZyb20gJy4vYnJuLW5hdmlnYXRpb24tbWVudS1pdGVtLnRva2VuJztcbmltcG9ydCB7IGluamVjdEJybk5hdmlnYXRpb25NZW51IH0gZnJvbSAnLi9icm4tbmF2aWdhdGlvbi1tZW51LnRva2VuJztcblxuaW50ZXJmYWNlIFRyaWdnZXJFdmVudCB7XG5cdHR5cGU6ICdjbGljaycgfCAnaG92ZXInIHwgJ3NldCc7XG5cdHZpc2libGU6IGJvb2xlYW47XG5cdHJlbGF0ZWRUYXJnZXQ/OiBFdmVudFRhcmdldCB8IG51bGw7XG59XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ2J1dHRvblticm5OYXZpZ2F0aW9uTWVudVRyaWdnZXJdJyxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZUJybk5hdmlnYXRpb25NZW51Rm9jdXNhYmxlKEJybk5hdmlnYXRpb25NZW51VHJpZ2dlcildLFxuXHRob3N0RGlyZWN0aXZlczogW1xuXHRcdHtcblx0XHRcdGRpcmVjdGl2ZTogQnJuQnV0dG9uLFxuXHRcdFx0aW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG5cdFx0fSxcblx0XSxcblx0aG9zdDoge1xuXHRcdCcoa2V5ZG93bi5lc2NhcGUpJzogJ29uRXNjYXBlKCRldmVudCknLFxuXHRcdCcoa2V5ZG93bi50YWIpJzogJ29uVGFiKCRldmVudCknLFxuXHRcdCcoZm9jdXMpJzogJ2hhbmRsZUZvY3VzKCknLFxuXHRcdCdbaWRdJzogJ19pZCcsXG5cdFx0J1thdHRyLmRhdGEtc3RhdGVdJzogJ19zdGF0ZSgpJyxcblx0XHQnW2F0dHIuYXJpYS1leHBhbmRlZF0nOiAnX2lzQWN0aXZlKCknLFxuXHRcdCdbYXR0ci5hcmlhLWNvbnRyb2xzXSc6ICdfY29udGVudElkJyxcblx0XHQnZGF0YS1zbG90JzogJ25hdmlnYXRpb24tbWVudS10cmlnZ2VyJyxcblx0fSxcbn0pXG5leHBvcnQgY2xhc3MgQnJuTmF2aWdhdGlvbk1lbnVUcmlnZ2VyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEZvY3VzYWJsZU9wdGlvbiB7XG5cdHByaXZhdGUgc3RhdGljIF9pZCA9IDA7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIoaW5qZWN0KFBMQVRGT1JNX0lEKSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRpb25NZW51ID0gaW5qZWN0QnJuTmF2aWdhdGlvbk1lbnUoKTtcblx0cHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdGlvbk1lbnVJdGVtID0gaW5qZWN0QnJuTmF2aWdhdGlvbk1lbnVJdGVtKCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2VsID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblx0cHJpdmF0ZSByZWFkb25seSBfY29udGVudFNlcnZpY2UgPSBpbmplY3QoQnJuTmF2aWdhdGlvbk1lbnVDb250ZW50U2VydmljZSk7XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9pZCA9IGBicm4tbmF2aWdhdGlvbi1tZW51LXRyaWdnZXItJHsrK0Jybk5hdmlnYXRpb25NZW51VHJpZ2dlci5faWR9YDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9wYXJlbnROYXZNZW51ID0gdGhpcy5fbmF2aWdhdGlvbk1lbnUucGFyZW50TmF2TWVudTtcblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2lzQWN0aXZlID0gdGhpcy5fbmF2aWdhdGlvbk1lbnVJdGVtLmlzQWN0aXZlO1xuXG5cdHByb3RlY3RlZCByZWFkb25seSBfY29udGVudElkID0gdGhpcy5fY29udGVudFNlcnZpY2UuaWQ7XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0ZSA9IHRoaXMuX25hdmlnYXRpb25NZW51SXRlbS5zdGF0ZTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9kaXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9uYXZpZ2F0aW9uTWVudS5jb250ZXh0KCkuZGlyKTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9vcmllbnRhdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX25hdmlnYXRpb25NZW51LmNvbnRleHQoKS5vcmllbnRhdGlvbik7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfaXNPcGVuRGVsYXllZCA9IHRoaXMuX25hdmlnYXRpb25NZW51LmlzT3BlbkRlbGF5ZWQ7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfZGVsYXlEdXJhdGlvbiA9IHRoaXMuX25hdmlnYXRpb25NZW51LmRlbGF5RHVyYXRpb247XG5cblx0cHJpdmF0ZSByZWFkb25seSBfY29udGVudFRlbXBsYXRlID0gdGhpcy5fbmF2aWdhdGlvbk1lbnVJdGVtLmNvbnRlbnRUZW1wbGF0ZTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9pc1N1Yk5hdlZpc2libGUgPSB0b1NpZ25hbCh0aGlzLl9uYXZpZ2F0aW9uTWVudUl0ZW0uc3ViTmF2VmlzaWJsZSQucGlwZShzd2l0Y2hNYXAoKGMpID0+IGMpKSwge1xuXHRcdGluaXRpYWxWYWx1ZTogZmFsc2UsXG5cdH0pO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX2lzQWN0aXZlJDogT2JzZXJ2YWJsZTxUcmlnZ2VyRXZlbnQ+ID0gdG9PYnNlcnZhYmxlKHRoaXMuX25hdmlnYXRpb25NZW51SXRlbS5pc0FjdGl2ZSkucGlwZShcblx0XHRtYXAoKHZhbHVlKSA9PiAoeyB0eXBlOiAnc2V0JywgdmlzaWJsZTogdmFsdWUgfSkpLFxuXHQpO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgX2NsaWNrZWQkOiBPYnNlcnZhYmxlPFRyaWdnZXJFdmVudD4gPSBmcm9tRXZlbnQodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ2NsaWNrJykucGlwZShcblx0XHRtYXAoKCkgPT4gIXRoaXMuX25hdmlnYXRpb25NZW51SXRlbS5pc0FjdGl2ZSgpKSxcblx0XHRtYXAoKHZhbHVlKSA9PiAoeyB0eXBlOiAnY2xpY2snLCB2aXNpYmxlOiB2YWx1ZSB9KSksXG5cdCk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfaG92ZXJlZCQ6IE9ic2VydmFibGU8VHJpZ2dlckV2ZW50PiA9IG1lcmdlKFxuXHRcdGNyZWF0ZUhvdmVyT2JzZXJ2YWJsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCB0aGlzLl96b25lLCB0aGlzLl9kZXN0cm95JCksXG5cdFx0dGhpcy5fY29udGVudFNlcnZpY2UuaG92ZXJlZCQucGlwZShtYXAoKHYpID0+ICh7IGhvdmVyOiB2LCByZWxhdGVkVGFyZ2V0OiBudWxsIH0pKSksXG5cdCkucGlwZShcblx0XHQvLyBIb3ZlciBldmVudCBpcyBOT1QgYWxsb3dlZCB3aGVuIGEgc3ViLW5hdmlnYXRpb24gaXMgY3VycmVudGx5IHZpc2libGUsIEFORCB0aGUgY3VycmVudCBob3ZlciBldmVudCBpcyBmYWxzZS5cblx0XHRmaWx0ZXIoKGUpID0+ICEodGhpcy5faXNTdWJOYXZWaXNpYmxlKCkgJiYgIWUuaG92ZXIpKSxcblx0XHRtYXAoKGUpID0+ICh7IHR5cGU6ICdob3ZlcicgYXMgY29uc3QsIHZpc2libGU6IGUuaG92ZXIsIHJlbGF0ZWRUYXJnZXQ6IGUucmVsYXRlZFRhcmdldCB9KSksXG5cdCk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfc2hvd2luZyQgPSBtZXJnZSh0aGlzLl9pc0FjdGl2ZSQsIHRoaXMuX2NsaWNrZWQkLCB0aGlzLl9ob3ZlcmVkJCkucGlwZShcblx0XHRkZWJvdW5jZVRpbWUoMCksXG5cdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnIpID0+IHByZXYudmlzaWJsZSA9PT0gY3Vyci52aXNpYmxlKSxcblx0XHRzd2l0Y2hNYXAoKGV2KSA9PiB7XG5cdFx0XHRjb25zdCBzaG91bGREZWxheSA9IGV2LnZpc2libGUgJiYgZXYudHlwZSAhPT0gJ2NsaWNrJyAmJiB0aGlzLl9pc09wZW5EZWxheWVkKCk7XG5cdFx0XHRyZXR1cm4gb2YoZXYpLnBpcGUoZGVsYXkoc2hvdWxkRGVsYXkgPyB0aGlzLl9kZWxheUR1cmF0aW9uKCkgOiAwKSk7XG5cdFx0fSksXG5cdFx0Ly8gRGVhY3RpdmF0ZSBuZWVkcyB0byBiZSBjYWxsZWQgaWYgdGhlIG1lbnUgaXRlbSBjb250ZW50IGlzIGhpZGRlbiB3aXRoIGEgdXNlciBjbGljayBPUlxuXHRcdC8vIElmIG5hdiBpdGVtIGlzIGhvdmVyZWQgb3V0IHRvIGEgZGlzYWJsZWQgc2libGluZyBuYXYgaXRlbVxuXHRcdHRhcCgoZXYpID0+IHtcblx0XHRcdGlmIChldi52aXNpYmxlKSB7XG5cdFx0XHRcdHRoaXMuX2FjdGl2YXRlKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBzaG91bGREZWFjdGl2YXRlID1cblx0XHRcdFx0XHQoZXYudHlwZSA9PT0gJ2NsaWNrJyB8fCAhdGhpcy5faXNIb3Zlck9uU2libGluZyhldikpICYmIHRoaXMuX25hdmlnYXRpb25NZW51SXRlbS5pc0FjdGl2ZSgpO1xuXG5cdFx0XHRcdGlmIChzaG91bGREZWFjdGl2YXRlKSB7XG5cdFx0XHRcdFx0dGhpcy5fZGVhY3RpdmF0ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSksXG5cdFx0c2hhcmUoKSxcblx0XHR0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuXHQpO1xuXG5cdHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX25hdmlnYXRpb25NZW51SXRlbS5kaXNhYmxlZCgpO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5fY29udGVudFRlbXBsYXRlKCk7XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLl9jb250ZW50U2VydmljZS5zZXRDb250ZW50KHZhbHVlLCB0aGlzLl92Y3IpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBvcmllbnRhdGlvbiA9IHRoaXMuX29yaWVudGF0aW9uKCk7XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLl9jb250ZW50U2VydmljZS51cGRhdGVPcmllbnRhdGlvbihvcmllbnRhdGlvbik7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBkaXIgPSB0aGlzLl9kaXIoKTtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuX2NvbnRlbnRTZXJ2aWNlLnVwZGF0ZURpcmVjdGlvbihkaXIpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgbmdPbkluaXQoKSB7XG5cdFx0dGhpcy5fY29udGVudFNlcnZpY2Uuc2V0Q29uZmlnKHsgYXR0YWNoVG86IHRoaXMuX2VsLCBkaXJlY3Rpb246IHRoaXMuX2RpcigpLCBvcmllbnRhdGlvbjogdGhpcy5fb3JpZW50YXRpb24oKSB9KTtcblx0XHR0aGlzLl9zaG93aW5nJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZXYpID0+IHtcblx0XHRcdGlmICh0aGlzLl9wYXJlbnROYXZNZW51KSB7XG5cdFx0XHRcdHRoaXMuX3BhcmVudE5hdk1lbnUuc3ViTmF2VmlzaWJsZSQubmV4dChldi52aXNpYmxlKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGV2LnZpc2libGUpIHtcblx0XHRcdFx0aWYgKHRoaXMuX2lzQnJvd3Nlcikge1xuXHRcdFx0XHRcdHRoaXMuX2NvbnRlbnRTZXJ2aWNlLnNob3coKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5fY29udGVudFNlcnZpY2UuaGlkZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5fY29udGVudFNlcnZpY2UuZXNjYXBlUHJlc3NlZCQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0XHRcdHRoaXMuX2RlYWN0aXZhdGUoKTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG5cdFx0dGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcblx0fVxuXG5cdHB1YmxpYyBmb2N1cyhfb3JpZ2luPzogRm9jdXNPcmlnaW4pIHtcblx0XHRpZiAodGhpcy5fbmF2aWdhdGlvbk1lbnVJdGVtLmRpc2FibGVkKCkpIHJldHVybjtcblxuXHRcdHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0fVxuXG5cdHByb3RlY3RlZCBoYW5kbGVGb2N1cygpIHtcblx0XHR0aGlzLl9uYXZpZ2F0aW9uTWVudS5zZXRBY3RpdmVJdGVtKHRoaXMpO1xuXHR9XG5cblx0cHJvdGVjdGVkIG9uVGFiKGU6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRjb25zdCBjb250ZW50RWwgPSB0aGlzLl9jb250ZW50U2VydmljZS5jb250ZW50RWwoKTtcblxuXHRcdGlmIChjb250ZW50RWwgJiYgIWhhc01vZGlmaWVyS2V5KGUpKSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRjb250ZW50RWwuZm9jdXMoKTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgb25Fc2NhcGUoZTogS2V5Ym9hcmRFdmVudCkge1xuXHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR0aGlzLl9kZWFjdGl2YXRlKCk7XG5cdH1cblxuXHRwcml2YXRlIF9hY3RpdmF0ZSgpIHtcblx0XHR0aGlzLl9uYXZpZ2F0aW9uTWVudS52YWx1ZS5zZXQodGhpcy5fbmF2aWdhdGlvbk1lbnVJdGVtLmlkKCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBfZGVhY3RpdmF0ZSgpIHtcblx0XHR0aGlzLl9uYXZpZ2F0aW9uTWVudS52YWx1ZS5zZXQodW5kZWZpbmVkKTtcblx0fVxuXG5cdHByaXZhdGUgX2lzSG92ZXJPblNpYmxpbmcoZXY6IFRyaWdnZXJFdmVudCk6IGJvb2xlYW4ge1xuXHRcdGlmIChldi50eXBlICE9PSAnaG92ZXInIHx8ICFpc0VsZW1lbnQoZXYucmVsYXRlZFRhcmdldCkpIHJldHVybiBmYWxzZTtcblxuXHRcdGNvbnN0IG1lbnVJdGVtID0gdGhpcy5faXNNZW51SXRlbU9yQ2hpbGQoZXYucmVsYXRlZFRhcmdldCk7XG5cblx0XHRyZXR1cm4gISFtZW51SXRlbSAmJiAhbWVudUl0ZW0uZGlzYWJsZWQoKTtcblx0fVxuXG5cdHByaXZhdGUgX2lzTWVudUl0ZW1PckNoaWxkKG5vZGU6IE5vZGUpOiBCcm5OYXZpZ2F0aW9uTWVudUl0ZW0gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uTWVudVxuXHRcdFx0Lm1lbnVJdGVtcygpXG5cdFx0XHQuZmluZCgocmVmKSA9PiByZWYuZWwubmF0aXZlRWxlbWVudCA9PT0gbm9kZSB8fCByZWYuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhub2RlKSk7XG5cdH1cbn1cbiJdfQ==","import { BrnNavigationMenu } from './lib/brn-navigation-menu';\nimport { BrnNavigationMenuContent } from './lib/brn-navigation-menu-content';\nimport { BrnNavigationMenuItem } from './lib/brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './lib/brn-navigation-menu-link';\nimport { BrnNavigationMenuList } from './lib/brn-navigation-menu-list';\nimport { BrnNavigationMenuTrigger } from './lib/brn-navigation-menu-trigger';\nexport * from './lib/brn-navigation-menu';\nexport * from './lib/brn-navigation-menu-content';\nexport * from './lib/brn-navigation-menu-item';\nexport * from './lib/brn-navigation-menu-link';\nexport * from './lib/brn-navigation-menu-list';\nexport * from './lib/brn-navigation-menu-trigger';\nexport const BrnNavigationMenuImports = [\n BrnNavigationMenu,\n BrnNavigationMenuItem,\n BrnNavigationMenuList,\n BrnNavigationMenuTrigger,\n BrnNavigationMenuContent,\n BrnNavigationMenuLink,\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL25hdmlnYXRpb24tbWVudS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFN0UsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdkMsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsd0JBQXdCO0lBQ3hCLHdCQUF3QjtJQUN4QixxQkFBcUI7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJuTmF2aWdhdGlvbk1lbnUgfSBmcm9tICcuL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51JztcbmltcG9ydCB7IEJybk5hdmlnYXRpb25NZW51Q29udGVudCB9IGZyb20gJy4vbGliL2Jybi1uYXZpZ2F0aW9uLW1lbnUtY29udGVudCc7XG5pbXBvcnQgeyBCcm5OYXZpZ2F0aW9uTWVudUl0ZW0gfSBmcm9tICcuL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51LWl0ZW0nO1xuaW1wb3J0IHsgQnJuTmF2aWdhdGlvbk1lbnVMaW5rIH0gZnJvbSAnLi9saWIvYnJuLW5hdmlnYXRpb24tbWVudS1saW5rJztcbmltcG9ydCB7IEJybk5hdmlnYXRpb25NZW51TGlzdCB9IGZyb20gJy4vbGliL2Jybi1uYXZpZ2F0aW9uLW1lbnUtbGlzdCc7XG5pbXBvcnQgeyBCcm5OYXZpZ2F0aW9uTWVudVRyaWdnZXIgfSBmcm9tICcuL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51LXRyaWdnZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1uYXZpZ2F0aW9uLW1lbnUtY29udGVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51LWl0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJuLW5hdmlnYXRpb24tbWVudS1saW5rJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1uYXZpZ2F0aW9uLW1lbnUtbGlzdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icm4tbmF2aWdhdGlvbi1tZW51LXRyaWdnZXInO1xuXG5leHBvcnQgY29uc3QgQnJuTmF2aWdhdGlvbk1lbnVJbXBvcnRzID0gW1xuXHRCcm5OYXZpZ2F0aW9uTWVudSxcblx0QnJuTmF2aWdhdGlvbk1lbnVJdGVtLFxuXHRCcm5OYXZpZ2F0aW9uTWVudUxpc3QsXG5cdEJybk5hdmlnYXRpb25NZW51VHJpZ2dlcixcblx0QnJuTmF2aWdhdGlvbk1lbnVDb250ZW50LFxuXHRCcm5OYXZpZ2F0aW9uTWVudUxpbmssXG5dIGFzIGNvbnN0O1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnRhbi1uZy1icmFpbi1uYXZpZ2F0aW9uLW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL25hdmlnYXRpb24tbWVudS9zcmMvc3BhcnRhbi1uZy1icmFpbi1uYXZpZ2F0aW9uLW1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}