@muraldevkit/ui-toolkit 4.73.0-dev-NYDL.1 → 4.73.0-dev-t0WE.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js +8 -1
  2. package/dist/cjs/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
  3. package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +14 -4
  4. package/dist/cjs/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
  5. package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +8 -1
  6. package/dist/cjs/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
  7. package/dist/cjs/components/button/MrlButton/MrlButton.js +3 -3
  8. package/dist/cjs/components/button/MrlButton/MrlButton.js.map +1 -1
  9. package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js +8 -1
  10. package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
  11. package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js +21 -2
  12. package/dist/cjs/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
  13. package/dist/cjs/components/callout/MrlCallout/MrlCallout.js +36 -3
  14. package/dist/cjs/components/callout/MrlCallout/MrlCallout.js.map +1 -1
  15. package/dist/cjs/components/filter/MrlFilter/MrlFilter.js +18 -2
  16. package/dist/cjs/components/filter/MrlFilter/MrlFilter.js.map +1 -1
  17. package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js +11 -1
  18. package/dist/cjs/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
  19. package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +17 -1
  20. package/dist/cjs/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
  21. package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +24 -1
  22. package/dist/cjs/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
  23. package/dist/cjs/components/form/date-picker/MrlDatePicker.js +17 -2
  24. package/dist/cjs/components/form/date-picker/MrlDatePicker.js.map +1 -1
  25. package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +11 -2
  26. package/dist/cjs/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
  27. package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +8 -1
  28. package/dist/cjs/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
  29. package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js +19 -1
  30. package/dist/cjs/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
  31. package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +19 -1
  32. package/dist/cjs/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
  33. package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +42 -2
  34. package/dist/cjs/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
  35. package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +42 -2
  36. package/dist/cjs/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
  37. package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js +34 -2
  38. package/dist/cjs/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
  39. package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js +34 -2
  40. package/dist/cjs/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
  41. package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js +14 -2
  42. package/dist/cjs/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
  43. package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +10 -1
  44. package/dist/cjs/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
  45. package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +20 -3
  46. package/dist/cjs/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
  47. package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js +20 -3
  48. package/dist/cjs/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
  49. package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -3
  50. package/dist/cjs/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
  51. package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js +38 -1
  52. package/dist/cjs/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
  53. package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js +12 -2
  54. package/dist/cjs/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
  55. package/dist/cjs/components/link/MrlLink/MrlLink.js +21 -2
  56. package/dist/cjs/components/link/MrlLink/MrlLink.js.map +1 -1
  57. package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js +12 -1
  58. package/dist/cjs/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
  59. package/dist/cjs/components/menu/MrlMenu/MrlMenu.js +20 -1
  60. package/dist/cjs/components/menu/MrlMenu/MrlMenu.js.map +1 -1
  61. package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js +18 -1
  62. package/dist/cjs/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
  63. package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -1
  64. package/dist/cjs/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
  65. package/dist/cjs/components/modal/MrlModal/MrlModal.js +22 -1
  66. package/dist/cjs/components/modal/MrlModal/MrlModal.js.map +1 -1
  67. package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js +27 -1
  68. package/dist/cjs/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
  69. package/dist/cjs/components/notification/MrlToast/MrlToast.js +28 -3
  70. package/dist/cjs/components/notification/MrlToast/MrlToast.js.map +1 -1
  71. package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js +18 -2
  72. package/dist/cjs/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
  73. package/dist/cjs/components/panel/MrlPanel/MrlPanel.js +24 -4
  74. package/dist/cjs/components/panel/MrlPanel/MrlPanel.js.map +1 -1
  75. package/dist/cjs/components/popover/MrlPopover/MrlPopover.js +18 -1
  76. package/dist/cjs/components/popover/MrlPopover/MrlPopover.js.map +1 -1
  77. package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js +31 -2
  78. package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
  79. package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js +13 -3
  80. package/dist/cjs/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
  81. package/dist/cjs/components/tabs/MrlTab/MrlTab.js +10 -1
  82. package/dist/cjs/components/tabs/MrlTab/MrlTab.js.map +1 -1
  83. package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js +10 -1
  84. package/dist/cjs/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
  85. package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +19 -3
  86. package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
  87. package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js +23 -1
  88. package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
  89. package/dist/cjs/hooks/useMrlAnalytics/useMrlAnalytics.js +7 -7
  90. package/dist/cjs/hooks/useMrlAnalytics/useMrlAnalytics.js.map +1 -1
  91. package/dist/cjs/version.js +1 -1
  92. package/dist/cjs/version.js.map +1 -1
  93. package/dist/components/avatar/MrlAvatarButton/MrlAvatarButton.d.ts +6 -1
  94. package/dist/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.d.ts +5 -0
  95. package/dist/components/button/MrlButton/MrlButton.d.ts +1 -1
  96. package/dist/components/button/MrlIconButton/MrlIconButton.d.ts +5 -0
  97. package/dist/components/callout/MrlCallout/MrlCallout.d.ts +7 -0
  98. package/dist/components/filter/MrlFilter/MrlFilter.d.ts +7 -0
  99. package/dist/components/filter/MrlFilterItem/MrlFilterItem.d.ts +7 -0
  100. package/dist/components/form/checkbox/MrlCheckbox/MrlCheckbox.d.ts +6 -1
  101. package/dist/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.d.ts +6 -1
  102. package/dist/components/form/date-picker/MrlDatePicker.d.ts +7 -0
  103. package/dist/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.d.ts +6 -1
  104. package/dist/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.d.ts +8 -1
  105. package/dist/components/form/radio/MrlRadioButton/MrlRadioButton.d.ts +6 -1
  106. package/dist/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.d.ts +6 -1
  107. package/dist/components/form/select/MrlCreatableSelect/MrlCreatableSelect.d.ts +7 -0
  108. package/dist/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.d.ts +7 -0
  109. package/dist/components/form/select/MrlMultiSelect/MrlMultiSelect.d.ts +7 -0
  110. package/dist/components/form/select/MrlSelect/MrlSelect.d.ts +7 -0
  111. package/dist/components/form/switch/MrlSwitch/MrlSwitch.d.ts +6 -1
  112. package/dist/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.d.ts +6 -1
  113. package/dist/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.d.ts +8 -0
  114. package/dist/components/form/text-input/MrlTextInput/MrlTextInput.d.ts +8 -0
  115. package/dist/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.d.ts +8 -0
  116. package/dist/components/form/textarea/MrlTextarea/MrlTextarea.d.ts +9 -1
  117. package/dist/components/layout/MrlSidebar/MrlSidebar.d.ts +8 -1
  118. package/dist/components/link/MrlLink/MrlLink.d.ts +6 -1
  119. package/dist/components/link/MrlLinkButton/MrlLinkButton.d.ts +5 -0
  120. package/dist/components/menu/MrlMenu/MrlMenu.d.ts +6 -1
  121. package/dist/components/menu/MrlMenuItem/MrlMenuItem.d.ts +6 -1
  122. package/dist/components/menu/MrlMenuItemLink/MrlMenuItemLink.d.ts +6 -1
  123. package/dist/components/modal/MrlModal/MrlModal.d.ts +5 -0
  124. package/dist/components/notification/MrlBlockNotification/MrlBlockNotification.d.ts +7 -0
  125. package/dist/components/notification/MrlToast/MrlToast.d.ts +8 -1
  126. package/dist/components/pagination/MrlPaginationButton/MrlPaginationButton.d.ts +6 -1
  127. package/dist/components/panel/MrlPanel/MrlPanel.d.ts +8 -0
  128. package/dist/components/popover/MrlPopover/MrlPopover.d.ts +6 -1
  129. package/dist/components/table/MrlSmartTable/MrlSmartTable.d.ts +7 -0
  130. package/dist/components/table/MrlTableRow/MrlTableRow.d.ts +7 -0
  131. package/dist/components/tabs/MrlTab/MrlTab.d.ts +6 -1
  132. package/dist/components/tabs/MrlTabLink/MrlTabLink.d.ts +6 -1
  133. package/dist/components/toolbar/MrlToolbarButton/MrlToolbarButton.d.ts +5 -0
  134. package/dist/components/tooltip/MrlTooltip/MrlTooltip.d.ts +8 -0
  135. package/dist/contexts/MrlAnalyticsContext/types.d.ts +1 -1
  136. package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js +8 -1
  137. package/dist/esm/components/avatar/MrlAvatarButton/MrlAvatarButton.js.map +1 -1
  138. package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js +14 -4
  139. package/dist/esm/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.js.map +1 -1
  140. package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js +8 -1
  141. package/dist/esm/components/button/MrlAnimatedIconButton/MrlAnimatedIconButton.js.map +1 -1
  142. package/dist/esm/components/button/MrlButton/MrlButton.js +3 -3
  143. package/dist/esm/components/button/MrlButton/MrlButton.js.map +1 -1
  144. package/dist/esm/components/button/MrlIconButton/MrlIconButton.js +8 -1
  145. package/dist/esm/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
  146. package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js +21 -2
  147. package/dist/esm/components/button/MrlProcessingButton/MrlProcessingButton.js.map +1 -1
  148. package/dist/esm/components/callout/MrlCallout/MrlCallout.js +36 -3
  149. package/dist/esm/components/callout/MrlCallout/MrlCallout.js.map +1 -1
  150. package/dist/esm/components/filter/MrlFilter/MrlFilter.js +18 -2
  151. package/dist/esm/components/filter/MrlFilter/MrlFilter.js.map +1 -1
  152. package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js +11 -1
  153. package/dist/esm/components/filter/MrlFilterItem/MrlFilterItem.js.map +1 -1
  154. package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js +17 -1
  155. package/dist/esm/components/form/checkbox/MrlCheckbox/MrlCheckbox.js.map +1 -1
  156. package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js +24 -1
  157. package/dist/esm/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.js.map +1 -1
  158. package/dist/esm/components/form/date-picker/MrlDatePicker.js +17 -2
  159. package/dist/esm/components/form/date-picker/MrlDatePicker.js.map +1 -1
  160. package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js +11 -2
  161. package/dist/esm/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.js.map +1 -1
  162. package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js +8 -1
  163. package/dist/esm/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.js.map +1 -1
  164. package/dist/esm/components/form/radio/MrlRadioButton/MrlRadioButton.js +19 -1
  165. package/dist/esm/components/form/radio/MrlRadioButton/MrlRadioButton.js.map +1 -1
  166. package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js +19 -1
  167. package/dist/esm/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.js.map +1 -1
  168. package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js +42 -2
  169. package/dist/esm/components/form/select/MrlCreatableSelect/MrlCreatableSelect.js.map +1 -1
  170. package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js +42 -2
  171. package/dist/esm/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.js.map +1 -1
  172. package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js +34 -2
  173. package/dist/esm/components/form/select/MrlMultiSelect/MrlMultiSelect.js.map +1 -1
  174. package/dist/esm/components/form/select/MrlSelect/MrlSelect.js +34 -2
  175. package/dist/esm/components/form/select/MrlSelect/MrlSelect.js.map +1 -1
  176. package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js +14 -2
  177. package/dist/esm/components/form/switch/MrlSwitch/MrlSwitch.js.map +1 -1
  178. package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js +10 -1
  179. package/dist/esm/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.js.map +1 -1
  180. package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js +20 -3
  181. package/dist/esm/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.js.map +1 -1
  182. package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js +20 -3
  183. package/dist/esm/components/form/text-input/MrlTextInput/MrlTextInput.js.map +1 -1
  184. package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js +20 -3
  185. package/dist/esm/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.js.map +1 -1
  186. package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js +38 -1
  187. package/dist/esm/components/form/textarea/MrlTextarea/MrlTextarea.js.map +1 -1
  188. package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js +12 -2
  189. package/dist/esm/components/layout/MrlSidebar/MrlSidebar.js.map +1 -1
  190. package/dist/esm/components/link/MrlLink/MrlLink.js +21 -2
  191. package/dist/esm/components/link/MrlLink/MrlLink.js.map +1 -1
  192. package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js +12 -1
  193. package/dist/esm/components/link/MrlLinkButton/MrlLinkButton.js.map +1 -1
  194. package/dist/esm/components/menu/MrlMenu/MrlMenu.js +20 -1
  195. package/dist/esm/components/menu/MrlMenu/MrlMenu.js.map +1 -1
  196. package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js +18 -1
  197. package/dist/esm/components/menu/MrlMenuItem/MrlMenuItem.js.map +1 -1
  198. package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js +10 -1
  199. package/dist/esm/components/menu/MrlMenuItemLink/MrlMenuItemLink.js.map +1 -1
  200. package/dist/esm/components/modal/MrlModal/MrlModal.js +22 -1
  201. package/dist/esm/components/modal/MrlModal/MrlModal.js.map +1 -1
  202. package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js +27 -1
  203. package/dist/esm/components/notification/MrlBlockNotification/MrlBlockNotification.js.map +1 -1
  204. package/dist/esm/components/notification/MrlToast/MrlToast.js +28 -3
  205. package/dist/esm/components/notification/MrlToast/MrlToast.js.map +1 -1
  206. package/dist/esm/components/pagination/MrlPaginationButton/MrlPaginationButton.js +18 -2
  207. package/dist/esm/components/pagination/MrlPaginationButton/MrlPaginationButton.js.map +1 -1
  208. package/dist/esm/components/panel/MrlPanel/MrlPanel.js +24 -4
  209. package/dist/esm/components/panel/MrlPanel/MrlPanel.js.map +1 -1
  210. package/dist/esm/components/popover/MrlPopover/MrlPopover.js +18 -1
  211. package/dist/esm/components/popover/MrlPopover/MrlPopover.js.map +1 -1
  212. package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js +31 -2
  213. package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
  214. package/dist/esm/components/table/MrlTableRow/MrlTableRow.js +13 -3
  215. package/dist/esm/components/table/MrlTableRow/MrlTableRow.js.map +1 -1
  216. package/dist/esm/components/tabs/MrlTab/MrlTab.js +10 -1
  217. package/dist/esm/components/tabs/MrlTab/MrlTab.js.map +1 -1
  218. package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js +10 -1
  219. package/dist/esm/components/tabs/MrlTabLink/MrlTabLink.js.map +1 -1
  220. package/dist/esm/components/toolbar/MrlToolbarButton/MrlToolbarButton.js +19 -3
  221. package/dist/esm/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
  222. package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js +23 -1
  223. package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
  224. package/dist/esm/hooks/useMrlAnalytics/useMrlAnalytics.js +7 -7
  225. package/dist/esm/hooks/useMrlAnalytics/useMrlAnalytics.js.map +1 -1
  226. package/dist/esm/version.js +1 -1
  227. package/dist/esm/version.js.map +1 -1
  228. package/dist/hooks/useMrlAnalytics/useMrlAnalytics.d.ts +4 -4
  229. package/dist/types/components/avatar/MrlAvatarButton/MrlAvatarButton.d.ts +6 -1
  230. package/dist/types/components/breadcrumb/MrlBreadcrumbItem/MrlBreadcrumbItem.d.ts +5 -0
  231. package/dist/types/components/button/MrlButton/MrlButton.d.ts +1 -1
  232. package/dist/types/components/button/MrlIconButton/MrlIconButton.d.ts +5 -0
  233. package/dist/types/components/callout/MrlCallout/MrlCallout.d.ts +7 -0
  234. package/dist/types/components/filter/MrlFilter/MrlFilter.d.ts +7 -0
  235. package/dist/types/components/filter/MrlFilterItem/MrlFilterItem.d.ts +7 -0
  236. package/dist/types/components/form/checkbox/MrlCheckbox/MrlCheckbox.d.ts +6 -1
  237. package/dist/types/components/form/checkbox/MrlCheckboxStandalone/MrlCheckboxStandalone.d.ts +6 -1
  238. package/dist/types/components/form/date-picker/MrlDatePicker.d.ts +7 -0
  239. package/dist/types/components/form/legacy-select/MrlLegacySelect/MrlLegacySelect.d.ts +6 -1
  240. package/dist/types/components/form/legacy-select/MrlLegacySelectItem/MrlLegacySelectItem.d.ts +8 -1
  241. package/dist/types/components/form/radio/MrlRadioButton/MrlRadioButton.d.ts +6 -1
  242. package/dist/types/components/form/radio/MrlRadioButtonStandalone/MrlRadioButtonStandalone.d.ts +6 -1
  243. package/dist/types/components/form/select/MrlCreatableSelect/MrlCreatableSelect.d.ts +7 -0
  244. package/dist/types/components/form/select/MrlMultiCreatableSelect/MrlMultiCreatableSelect.d.ts +7 -0
  245. package/dist/types/components/form/select/MrlMultiSelect/MrlMultiSelect.d.ts +7 -0
  246. package/dist/types/components/form/select/MrlSelect/MrlSelect.d.ts +7 -0
  247. package/dist/types/components/form/switch/MrlSwitch/MrlSwitch.d.ts +6 -1
  248. package/dist/types/components/form/switch/MrlSwitchStandalone/MrlSwitchStandalone.d.ts +6 -1
  249. package/dist/types/components/form/text-input/MrlEditableTextInput/MrlEditableTextInput.d.ts +8 -0
  250. package/dist/types/components/form/text-input/MrlTextInput/MrlTextInput.d.ts +8 -0
  251. package/dist/types/components/form/textarea/MrlEditableTextarea/MrlEditableTextarea.d.ts +8 -0
  252. package/dist/types/components/form/textarea/MrlTextarea/MrlTextarea.d.ts +9 -1
  253. package/dist/types/components/layout/MrlSidebar/MrlSidebar.d.ts +8 -1
  254. package/dist/types/components/link/MrlLink/MrlLink.d.ts +6 -1
  255. package/dist/types/components/link/MrlLinkButton/MrlLinkButton.d.ts +5 -0
  256. package/dist/types/components/menu/MrlMenu/MrlMenu.d.ts +6 -1
  257. package/dist/types/components/menu/MrlMenuItem/MrlMenuItem.d.ts +6 -1
  258. package/dist/types/components/menu/MrlMenuItemLink/MrlMenuItemLink.d.ts +6 -1
  259. package/dist/types/components/modal/MrlModal/MrlModal.d.ts +5 -0
  260. package/dist/types/components/notification/MrlBlockNotification/MrlBlockNotification.d.ts +7 -0
  261. package/dist/types/components/notification/MrlToast/MrlToast.d.ts +8 -1
  262. package/dist/types/components/pagination/MrlPaginationButton/MrlPaginationButton.d.ts +6 -1
  263. package/dist/types/components/panel/MrlPanel/MrlPanel.d.ts +8 -0
  264. package/dist/types/components/popover/MrlPopover/MrlPopover.d.ts +6 -1
  265. package/dist/types/components/table/MrlSmartTable/MrlSmartTable.d.ts +7 -0
  266. package/dist/types/components/table/MrlTableRow/MrlTableRow.d.ts +7 -0
  267. package/dist/types/components/tabs/MrlTab/MrlTab.d.ts +6 -1
  268. package/dist/types/components/tabs/MrlTabLink/MrlTabLink.d.ts +6 -1
  269. package/dist/types/components/toolbar/MrlToolbarButton/MrlToolbarButton.d.ts +5 -0
  270. package/dist/types/components/tooltip/MrlTooltip/MrlTooltip.d.ts +8 -0
  271. package/dist/types/contexts/MrlAnalyticsContext/types.d.ts +1 -1
  272. package/dist/types/hooks/useMrlAnalytics/useMrlAnalytics.d.ts +4 -4
  273. package/package.json +4 -9
@@ -8,6 +8,7 @@ var index = require('../../../hooks/useBreakpoint/index.js');
8
8
  var utils = require('../utils.js');
9
9
  var LayoutContext = require('../context/LayoutContext.js');
10
10
  var MrlSidebar_module = require('./MrlSidebar.module.scss.js');
11
+ var useMrlAnalytics = require('../../../hooks/useMrlAnalytics/useMrlAnalytics.js');
11
12
  var MrlIconButton = require('../../button/MrlIconButton/MrlIconButton.js');
12
13
  var MrlFocusTrap = require('../../focus-trap/MrlFocusTrap/MrlFocusTrap.js');
13
14
  var MrlSvg = require('../../svg/MrlSvg/MrlSvg.js');
@@ -35,7 +36,7 @@ function _interopNamespace(e) {
35
36
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
37
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
37
38
 
38
- var _excluded = ["children", "className", "hookOpen", "hookClose"];
39
+ var _excluded = ["children", "className", "hookOpen", "hookClose", "eventId"];
39
40
  /**
40
41
  * MrlSidebar React component.
41
42
  * @param props - component props
@@ -47,19 +48,28 @@ var MrlSidebar = /*#__PURE__*/React__namespace.forwardRef(function MrlSidebar(_r
47
48
  className = _ref$className === void 0 ? '' : _ref$className,
48
49
  hookOpen = _ref.hookOpen,
49
50
  hookClose = _ref.hookClose,
51
+ eventId = _ref.eventId,
50
52
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
51
53
  var _React$useState = React__namespace.useState(false),
52
54
  _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
53
55
  isExpanded = _React$useState2[0],
54
56
  setIsExpanded = _React$useState2[1];
57
+ var trackInteraction = useMrlAnalytics.useMrlTrackInteraction('MrlSidebar', eventId);
55
58
  var setExpandedAndNotify = React__namespace.useCallback((expanded, info) => {
59
+ // every open/close path funnels through here, including the imperative handle
60
+ trackInteraction({
61
+ action: expanded ? 'open' : 'close',
62
+ metadata: {
63
+ source: info.source
64
+ }
65
+ });
56
66
  if (expanded) {
57
67
  hookOpen === null || hookOpen === void 0 ? void 0 : hookOpen(info);
58
68
  } else {
59
69
  hookClose === null || hookClose === void 0 ? void 0 : hookClose(info);
60
70
  }
61
71
  setIsExpanded(expanded);
62
- }, [hookOpen, hookClose]);
72
+ }, [hookOpen, hookClose, trackInteraction]);
63
73
  var _useLayoutContext = LayoutContext.useLayoutContext(),
64
74
  isTopbarRendered = _useLayoutContext.isTopbarRendered;
65
75
  React__namespace.useImperativeHandle(ref, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"MrlSidebar.js","sources":["../../../../../src/components/layout/MrlSidebar/MrlSidebar.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { menu, close } from '@muraldevkit/ds-icons';\nimport { MrlIconButton, MrlFocusTrap, MrlSvg } from '../../';\nimport { LayoutComponent, LayoutSection } from '../constants';\nimport { useBreakpoint } from '../../../hooks/useBreakpoint';\nimport { isMobile } from '../utils';\nimport { useLayoutContext } from '../context/LayoutContext';\n\nimport styles from './MrlSidebar.module.scss';\n\nexport type MrlSidebarHookInfo = { source: 'userInteraction' | 'imperativeHandler' };\n\ninterface MrlSidebarHook {\n\thookClose?: (info: MrlSidebarHookInfo) => void;\n\thookOpen?: (info: MrlSidebarHookInfo) => void;\n}\n\ntype MrlSidebar = LayoutComponent & LayoutSection & MrlSidebarHook;\nexport interface MrlSidebarHandle {\n\tclose: () => void;\n\topen: () => void;\n\ttoggle: () => void;\n}\n\n/**\n * MrlSidebar React component.\n * @param props - component props\n * @returns a MrlSidebar React component.\n */\nexport const MrlSidebar = React.forwardRef<MrlSidebarHandle, MrlSidebar>(function MrlSidebar(\n\t{ children, className = '', hookOpen, hookClose, ...rest }: MrlSidebar,\n\tref: React.Ref<MrlSidebarHandle>\n): JSX.Element {\n\tconst [isExpanded, setIsExpanded] = React.useState<boolean>(false);\n\tconst setExpandedAndNotify = React.useCallback(\n\t\t(expanded: boolean, info: MrlSidebarHookInfo) => {\n\t\t\tif (expanded) {\n\t\t\t\thookOpen?.(info);\n\t\t\t} else {\n\t\t\t\thookClose?.(info);\n\t\t\t}\n\t\t\tsetIsExpanded(expanded);\n\t\t},\n\t\t[hookOpen, hookClose]\n\t);\n\n\tconst { isTopbarRendered } = useLayoutContext();\n\n\tReact.useImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tclose() {\n\t\t\t\tsetExpandedAndNotify(false, { source: 'imperativeHandler' });\n\t\t\t},\n\t\t\topen() {\n\t\t\t\tsetExpandedAndNotify(true, { source: 'imperativeHandler' });\n\t\t\t},\n\t\t\ttoggle() {\n\t\t\t\tsetExpandedAndNotify(!isExpanded, { source: 'imperativeHandler' });\n\t\t\t}\n\t\t};\n\t}, [isExpanded, setExpandedAndNotify]);\n\n\tconst breakpoint = useBreakpoint();\n\tconst renderMobile = isMobile(breakpoint);\n\n\tconst sidebarRef = React.useRef<HTMLDivElement>(null);\n\tconst triggerRef = React.useRef<HTMLButtonElement>(null);\n\n\t// If both of these are true, then we want to set focus trap disabled to \"False\"\n\t// which is kind of confusing, because these values actually return true.\n\t// So, we need to negate them. Don't worry, it works.\n\tconst shouldFocusTrap = !(renderMobile && isExpanded);\n\n\tconst offsetClass = classnames(isTopbarRendered && styles['MrlSidebar--offset']);\n\n\tconst sidebarClasses = classnames(styles['MrlSidebar'], 'MrlSidebar', className, offsetClass, {\n\t\t[styles['MrlSidebar--mobile']]: renderMobile,\n\t\t[styles['MrlSidebar--mobile--open']]: renderMobile && isExpanded\n\t});\n\n\tconst overlayClasses = classnames(\n\t\tstyles['MrlSidebar-overlay'],\n\t\t'MrlSidebar-overlay',\n\t\trenderMobile && isExpanded && styles['MrlSidebar-overlay--visible'],\n\t\toffsetClass\n\t);\n\n\tconst sidebarContentClasses = classnames(styles['MrlSidebar-content'], 'MrlSidebar-content', {\n\t\t[styles['MrlSidebar-content--visible']]: isExpanded || !renderMobile\n\t});\n\n\tconst handleKeyUp = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tif (e.key === 'Escape') {\n\t\t\tsetExpandedAndNotify(false, { source: 'userInteraction' });\n\t\t\ttriggerRef.current?.focus();\n\t\t}\n\t};\n\n\tconst handleClick = (e: React.SyntheticEvent<HTMLElement, Event>) => {\n\t\te.preventDefault();\n\t\tsetExpandedAndNotify(!isExpanded, { source: 'userInteraction' });\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// If the sidebar is rendered on mobile, we want to render the menu button and overlay.\n\t\t\t\trenderMobile && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\t\twrapperClassName={classnames(\n\t\t\t\t\t\t\t\t\tstyles['MrlSidebar-menu-trigger'],\n\t\t\t\t\t\t\t\t\tstyles['MrlSidebar-menu']\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\ticon={<MrlSvg svg={menu} />}\n\t\t\t\t\t\t\t\tkind=\"ghost\"\n\t\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t\t\tposition=\"bottom\"\n\t\t\t\t\t\t\t\tref={triggerRef}\n\t\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\t\ttext=\"Open\"\n\t\t\t\t\t\t\t\ttipAnchor=\"center\"\n\t\t\t\t\t\t\t\ttoggleAria=\"expanded\"\n\t\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={overlayClasses}\n\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t// we only want to allow click events on the overlay if the sidebar is expanded\n\t\t\t\t\t\t\t// otherwise pointer events are none and no click events are allowed\n\t\t\t\t\t\t\t{...(isExpanded && { onClick: handleClick })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t}\n\t\t\t<section\n\t\t\t\t{...rest}\n\t\t\t\tclassName={sidebarClasses}\n\t\t\t\tonKeyUp={handleKeyUp}\n\t\t\t\tref={sidebarRef}\n\t\t\t\trole=\"presentation\"\n\t\t\t\t{...(renderMobile && { 'aria-hidden': !isExpanded })}\n\t\t\t>\n\t\t\t\t<MrlFocusTrap disabled={shouldFocusTrap} containerRef={sidebarRef}>\n\t\t\t\t\t{isExpanded && (\n\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\twrapperClassName={classnames(\n\t\t\t\t\t\t\t\tstyles['MrlSidebar-menu-trigger'],\n\t\t\t\t\t\t\t\tstyles['MrlSidebar-menu'],\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t[styles['MrlSidebar-menu-close']]: isExpanded,\n\t\t\t\t\t\t\t\t\t'MrlSidebar-menu-close': isExpanded\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\ticon={<MrlSvg svg={close} />}\n\t\t\t\t\t\t\tkind=\"ghost\"\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t\tposition=\"bottom\"\n\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\ttext=\"Close\"\n\t\t\t\t\t\t\ttipAnchor=\"center\"\n\t\t\t\t\t\t\ttoggleAria=\"expanded\"\n\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className={sidebarContentClasses}>{children}</div>\n\t\t\t\t</MrlFocusTrap>\n\t\t\t</section>\n\t\t</>\n\t);\n});\n"],"names":["MrlSidebar","React","forwardRef","_ref","ref","children","_ref$className","className","hookOpen","hookClose","rest","_objectWithoutProperties","_excluded","_React$useState","useState","_React$useState2","_slicedToArray","isExpanded","setIsExpanded","setExpandedAndNotify","useCallback","expanded","info","_useLayoutContext","useLayoutContext","isTopbarRendered","useImperativeHandle","close","source","open","toggle","breakpoint","useBreakpoint","renderMobile","isMobile","sidebarRef","useRef","triggerRef","shouldFocusTrap","offsetClass","classnames","styles","sidebarClasses","overlayClasses","sidebarContentClasses","handleKeyUp","e","preventDefault","stopPropagation","key","_triggerRef$current","current","focus","handleClick","createElement","Fragment","MrlIconButton","wrapperClassName","icon","MrlSvg","svg","menu","kind","onClick","position","size","text","tipAnchor","toggleAria","state","_extends","role","tabIndex","onKeyUp","MrlFocusTrap","disabled","containerRef"],"mappings":"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"}
1
+ {"version":3,"file":"MrlSidebar.js","sources":["../../../../../src/components/layout/MrlSidebar/MrlSidebar.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { menu, close } from '@muraldevkit/ds-icons';\nimport { MrlIconButton, MrlFocusTrap, MrlSvg } from '../../';\nimport { LayoutComponent, LayoutSection } from '../constants';\nimport { useBreakpoint } from '../../../hooks/useBreakpoint';\nimport { isMobile } from '../utils';\nimport { useLayoutContext } from '../context/LayoutContext';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\nimport styles from './MrlSidebar.module.scss';\n\nexport type MrlSidebarHookInfo = { source: 'userInteraction' | 'imperativeHandler' };\n\ninterface MrlSidebarHook {\n\thookClose?: (info: MrlSidebarHookInfo) => void;\n\thookOpen?: (info: MrlSidebarHookInfo) => void;\n}\n\ninterface MrlSidebarAnalytics {\n\t/**\n\t * Enables interaction tracking for this sidebar. Provide a stable, non-PII id\n\t * (e.g. 'dashboard-sidebar'). When omitted, the sidebar emits no analytics.\n\t */\n\teventId?: string;\n}\n\ntype MrlSidebar = LayoutComponent & LayoutSection & MrlSidebarHook & MrlSidebarAnalytics;\nexport interface MrlSidebarHandle {\n\tclose: () => void;\n\topen: () => void;\n\ttoggle: () => void;\n}\n\n/**\n * MrlSidebar React component.\n * @param props - component props\n * @returns a MrlSidebar React component.\n */\nexport const MrlSidebar = React.forwardRef<MrlSidebarHandle, MrlSidebar>(function MrlSidebar(\n\t{ children, className = '', hookOpen, hookClose, eventId, ...rest }: MrlSidebar,\n\tref: React.Ref<MrlSidebarHandle>\n): JSX.Element {\n\tconst [isExpanded, setIsExpanded] = React.useState<boolean>(false);\n\tconst trackInteraction = useMrlTrackInteraction('MrlSidebar', eventId);\n\tconst setExpandedAndNotify = React.useCallback(\n\t\t(expanded: boolean, info: MrlSidebarHookInfo) => {\n\t\t\t// every open/close path funnels through here, including the imperative handle\n\t\t\ttrackInteraction({ action: expanded ? 'open' : 'close', metadata: { source: info.source } });\n\n\t\t\tif (expanded) {\n\t\t\t\thookOpen?.(info);\n\t\t\t} else {\n\t\t\t\thookClose?.(info);\n\t\t\t}\n\t\t\tsetIsExpanded(expanded);\n\t\t},\n\t\t[hookOpen, hookClose, trackInteraction]\n\t);\n\n\tconst { isTopbarRendered } = useLayoutContext();\n\n\tReact.useImperativeHandle(ref, () => {\n\t\treturn {\n\t\t\tclose() {\n\t\t\t\tsetExpandedAndNotify(false, { source: 'imperativeHandler' });\n\t\t\t},\n\t\t\topen() {\n\t\t\t\tsetExpandedAndNotify(true, { source: 'imperativeHandler' });\n\t\t\t},\n\t\t\ttoggle() {\n\t\t\t\tsetExpandedAndNotify(!isExpanded, { source: 'imperativeHandler' });\n\t\t\t}\n\t\t};\n\t}, [isExpanded, setExpandedAndNotify]);\n\n\tconst breakpoint = useBreakpoint();\n\tconst renderMobile = isMobile(breakpoint);\n\n\tconst sidebarRef = React.useRef<HTMLDivElement>(null);\n\tconst triggerRef = React.useRef<HTMLButtonElement>(null);\n\n\t// If both of these are true, then we want to set focus trap disabled to \"False\"\n\t// which is kind of confusing, because these values actually return true.\n\t// So, we need to negate them. Don't worry, it works.\n\tconst shouldFocusTrap = !(renderMobile && isExpanded);\n\n\tconst offsetClass = classnames(isTopbarRendered && styles['MrlSidebar--offset']);\n\n\tconst sidebarClasses = classnames(styles['MrlSidebar'], 'MrlSidebar', className, offsetClass, {\n\t\t[styles['MrlSidebar--mobile']]: renderMobile,\n\t\t[styles['MrlSidebar--mobile--open']]: renderMobile && isExpanded\n\t});\n\n\tconst overlayClasses = classnames(\n\t\tstyles['MrlSidebar-overlay'],\n\t\t'MrlSidebar-overlay',\n\t\trenderMobile && isExpanded && styles['MrlSidebar-overlay--visible'],\n\t\toffsetClass\n\t);\n\n\tconst sidebarContentClasses = classnames(styles['MrlSidebar-content'], 'MrlSidebar-content', {\n\t\t[styles['MrlSidebar-content--visible']]: isExpanded || !renderMobile\n\t});\n\n\tconst handleKeyUp = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tif (e.key === 'Escape') {\n\t\t\tsetExpandedAndNotify(false, { source: 'userInteraction' });\n\t\t\ttriggerRef.current?.focus();\n\t\t}\n\t};\n\n\tconst handleClick = (e: React.SyntheticEvent<HTMLElement, Event>) => {\n\t\te.preventDefault();\n\t\tsetExpandedAndNotify(!isExpanded, { source: 'userInteraction' });\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// If the sidebar is rendered on mobile, we want to render the menu button and overlay.\n\t\t\t\trenderMobile && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\t\twrapperClassName={classnames(\n\t\t\t\t\t\t\t\t\tstyles['MrlSidebar-menu-trigger'],\n\t\t\t\t\t\t\t\t\tstyles['MrlSidebar-menu']\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\ticon={<MrlSvg svg={menu} />}\n\t\t\t\t\t\t\t\tkind=\"ghost\"\n\t\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t\t\tposition=\"bottom\"\n\t\t\t\t\t\t\t\tref={triggerRef}\n\t\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\t\ttext=\"Open\"\n\t\t\t\t\t\t\t\ttipAnchor=\"center\"\n\t\t\t\t\t\t\t\ttoggleAria=\"expanded\"\n\t\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={overlayClasses}\n\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t// we only want to allow click events on the overlay if the sidebar is expanded\n\t\t\t\t\t\t\t// otherwise pointer events are none and no click events are allowed\n\t\t\t\t\t\t\t{...(isExpanded && { onClick: handleClick })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t}\n\t\t\t<section\n\t\t\t\t{...rest}\n\t\t\t\tclassName={sidebarClasses}\n\t\t\t\tonKeyUp={handleKeyUp}\n\t\t\t\tref={sidebarRef}\n\t\t\t\trole=\"presentation\"\n\t\t\t\t{...(renderMobile && { 'aria-hidden': !isExpanded })}\n\t\t\t>\n\t\t\t\t<MrlFocusTrap disabled={shouldFocusTrap} containerRef={sidebarRef}>\n\t\t\t\t\t{isExpanded && (\n\t\t\t\t\t\t<MrlIconButton\n\t\t\t\t\t\t\twrapperClassName={classnames(\n\t\t\t\t\t\t\t\tstyles['MrlSidebar-menu-trigger'],\n\t\t\t\t\t\t\t\tstyles['MrlSidebar-menu'],\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t[styles['MrlSidebar-menu-close']]: isExpanded,\n\t\t\t\t\t\t\t\t\t'MrlSidebar-menu-close': isExpanded\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\ticon={<MrlSvg svg={close} />}\n\t\t\t\t\t\t\tkind=\"ghost\"\n\t\t\t\t\t\t\tonClick={handleClick}\n\t\t\t\t\t\t\tposition=\"bottom\"\n\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\ttext=\"Close\"\n\t\t\t\t\t\t\ttipAnchor=\"center\"\n\t\t\t\t\t\t\ttoggleAria=\"expanded\"\n\t\t\t\t\t\t\tstate=\"default\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className={sidebarContentClasses}>{children}</div>\n\t\t\t\t</MrlFocusTrap>\n\t\t\t</section>\n\t\t</>\n\t);\n});\n"],"names":["MrlSidebar","React","forwardRef","_ref","ref","children","_ref$className","className","hookOpen","hookClose","eventId","rest","_objectWithoutProperties","_excluded","_React$useState","useState","_React$useState2","_slicedToArray","isExpanded","setIsExpanded","trackInteraction","useMrlTrackInteraction","setExpandedAndNotify","useCallback","expanded","info","action","metadata","source","_useLayoutContext","useLayoutContext","isTopbarRendered","useImperativeHandle","close","open","toggle","breakpoint","useBreakpoint","renderMobile","isMobile","sidebarRef","useRef","triggerRef","shouldFocusTrap","offsetClass","classnames","styles","sidebarClasses","overlayClasses","sidebarContentClasses","handleKeyUp","e","preventDefault","stopPropagation","key","_triggerRef$current","current","focus","handleClick","createElement","Fragment","MrlIconButton","wrapperClassName","icon","MrlSvg","svg","menu","kind","onClick","position","size","text","tipAnchor","toggleAria","state","_extends","role","tabIndex","onKeyUp","MrlFocusTrap","disabled","containerRef"],"mappings":"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"}
@@ -6,6 +6,7 @@ var classnames = require('classnames');
6
6
  var dsIcons = require('@muraldevkit/ds-icons');
7
7
  var constants = require('../constants.js');
8
8
  var MrlLink_module = require('./MrlLink.module.scss.js');
9
+ var useMrlAnalytics = require('../../../hooks/useMrlAnalytics/useMrlAnalytics.js');
9
10
  var MrlSvg = require('../../svg/MrlSvg/MrlSvg.js');
10
11
 
11
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -31,7 +32,7 @@ function _interopNamespace(e) {
31
32
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
33
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
33
34
 
34
- var _excluded = ["target", "className", "color", "kind", "size", "href", "attrs", "onClick", "text"];
35
+ var _excluded = ["target", "className", "color", "kind", "size", "href", "attrs", "onClick", "text", "eventId"];
35
36
  /**
36
37
  * Renders a link component
37
38
  *
@@ -52,7 +53,25 @@ var MrlLink = _ref => {
52
53
  attrs = _ref.attrs,
53
54
  onClick = _ref.onClick,
54
55
  text = _ref.text,
56
+ eventId = _ref.eventId,
55
57
  remainingProps = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
58
+ var trackInteraction = useMrlAnalytics.useMrlTrackInteraction('MrlLink', eventId);
59
+
60
+ /**
61
+ * Handle onClick events
62
+ *
63
+ * @param {React.MouseEvent<HTMLElement>} e - mouse event
64
+ */
65
+ var handleOnClick = e => {
66
+ trackInteraction({
67
+ action: 'click',
68
+ metadata: {
69
+ target
70
+ },
71
+ variant: kind
72
+ });
73
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
74
+ };
56
75
  var allClasses = classnames__default.default(className, 'mrl-link', {
57
76
  [MrlLink_module.default['mrl-link']]: true,
58
77
  [MrlLink_module.default["mrl-link--".concat(color)]]: color !== constants.defaults.color,
@@ -66,7 +85,7 @@ var MrlLink = _ref => {
66
85
  className: allClasses,
67
86
  href: href,
68
87
  target: target,
69
- onClick: onClick,
88
+ onClick: handleOnClick,
70
89
  rel: linkRel
71
90
  }, attrs), /*#__PURE__*/React__namespace.createElement("span", {
72
91
  className: "mrl-link-text ".concat(MrlLink_module.default.MrlLinkText)
@@ -1 +1 @@
1
- {"version":3,"file":"MrlLink.js","sources":["../../../../../src/components/link/MrlLink/MrlLink.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { linkOpen } from '@muraldevkit/ds-icons';\nimport { defaults, LinkColor, LinkKind, LinkSize, LinkTargetType } from '../constants';\nimport { AttrsObject } from '../../../utils';\nimport { MrlSvg } from '../../';\nimport styles from './MrlLink.module.scss';\n\nexport interface MrlLinkProptypes extends React.ComponentProps<'a'> {\n\t/** The textual label describing the link's purpose */\n\ttext: string;\n\t/** Specifies where to redirect the linked document */\n\thref: string;\n\t/** Specifies how to open the linked document */\n\ttarget?: LinkTargetType;\n\t/**\n\t * Color scheme to use based on the link's container background\n\t * - bold (default): a thicker underline to help a link stand out in a large amount of body copy\n\t * - simple: a thinner underline to help address visual hierarchy issues when many links are in a list\n\t */\n\tkind?: LinkKind;\n\t/**\n\t * Color scheme to use based on the link's container background\n\t * - default: most use cases\n\t * - mono: use on colored/saturated backgrounds (e.g. warning notifications)\n\t * - inverse: use on dark backgrounds\n\t */\n\tcolor?: LinkColor;\n\t/**\n\t * Allows developers to chose a specific font-size for the link. By default,\n\t * it will inherit the font-size of its parent/surrounding text.\n\t */\n\tsize?: LinkSize;\n\t/**\n\t * Applies additional HTML attributes to the nested anchor (`a`) element.\n\t * Example: `attrs='{ \"aria-label\": \"Special message for screen reader users\" }'`\n\t */\n\tattrs?: AttrsObject;\n\t/**\n\t * classes to apply to the component\n\t */\n\tclassName?: string;\n\t/**\n\t * Custom on click listener\n\t */\n\tonClick?: (e: React.MouseEvent<HTMLElement>) => void | undefined;\n}\n\n/**\n * Renders a link component\n *\n * @param {MrlLinkProptypes} props the props for your MrlLink\n * @returns {React.ReactElement} an a element containing the text you pass\n */\nexport const MrlLink = ({\n\ttarget = defaults.target,\n\tclassName,\n\tcolor = defaults.color,\n\tkind = defaults.kind,\n\tsize = defaults.size,\n\thref,\n\tattrs,\n\tonClick,\n\ttext,\n\t...remainingProps\n}: MrlLinkProptypes): React.ReactElement => {\n\tconst allClasses = classnames(className, 'mrl-link', {\n\t\t[styles['mrl-link']]: true,\n\t\t[styles[`mrl-link--${color}`]]: color !== defaults.color,\n\t\t[styles[`mrl-link--${kind}`]]: kind !== defaults.kind,\n\t\t[styles[`mrl-link--${size}`]]: size !== defaults.size\n\t});\n\n\tconst smallIconSizes = ['default', 'medium'];\n\tconst svgSize =\n\t\tsmallIconSizes.indexOf(size) > -1 ? 'small' : size === 'large' ? 'medium' : 'auto';\n\tconst linkRel =\n\t\ttarget === '_blank' ? 'noopener noreferrer' : (remainingProps as { rel?: string })['rel'];\n\n\treturn (\n\t\t<a\n\t\t\t{...remainingProps}\n\t\t\tclassName={allClasses}\n\t\t\thref={href}\n\t\t\ttarget={target}\n\t\t\tonClick={onClick}\n\t\t\trel={linkRel}\n\t\t\t{...attrs}\n\t\t>\n\t\t\t<span className={`mrl-link-text ${styles.MrlLinkText}`}>{text}</span>\n\t\t\t{target === '_blank' ? (\n\t\t\t\t<MrlSvg svg={linkOpen} size={svgSize} className={`mrl-link-icon ${styles.MrlLinkIcon}`} />\n\t\t\t) : null}\n\t\t</a>\n\t);\n};\n"],"names":["MrlLink","_ref","_ref$target","target","defaults","className","_ref$color","color","_ref$kind","kind","_ref$size","size","href","attrs","onClick","text","remainingProps","_objectWithoutProperties","_excluded","allClasses","classnames","styles","concat","smallIconSizes","svgSize","indexOf","linkRel","React","createElement","_extends","rel","MrlLinkText","MrlSvg","svg","linkOpen","MrlLinkIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,OAAO,GAAGC,IAAA,IAWqB;AAAA,EAAA,IAAAC,WAAA,GAAAD,IAAA,CAV3CE,MAAM;AAANA,IAAAA,MAAM,GAAAD,WAAA,KAAA,MAAA,GAAGE,kBAAQ,CAACD,MAAM,GAAAD,WAAA;IACxBG,SAAS,GAAAJ,IAAA,CAATI,SAAS;IAAAC,UAAA,GAAAL,IAAA,CACTM,KAAK;AAALA,IAAAA,KAAK,GAAAD,UAAA,KAAA,MAAA,GAAGF,kBAAQ,CAACG,KAAK,GAAAD,UAAA;IAAAE,SAAA,GAAAP,IAAA,CACtBQ,IAAI;AAAJA,IAAAA,IAAI,GAAAD,SAAA,KAAA,MAAA,GAAGJ,kBAAQ,CAACK,IAAI,GAAAD,SAAA;IAAAE,SAAA,GAAAT,IAAA,CACpBU,IAAI;AAAJA,IAAAA,IAAI,GAAAD,SAAA,KAAA,MAAA,GAAGN,kBAAQ,CAACO,IAAI,GAAAD,SAAA;IACpBE,IAAI,GAAAX,IAAA,CAAJW,IAAI;IACJC,KAAK,GAAAZ,IAAA,CAALY,KAAK;IACLC,OAAO,GAAAb,IAAA,CAAPa,OAAO;IACPC,IAAI,GAAAd,IAAA,CAAJc,IAAI;AACDC,IAAAA,cAAc,GAAAC,iDAAA,CAAAhB,IAAA,EAAAiB,SAAA,CAAA;AAEjB,EAAA,IAAMC,UAAU,GAAGC,2BAAU,CAACf,SAAS,EAAE,UAAU,EAAE;AACpD,IAAA,CAACgB,sBAAM,CAAC,UAAU,CAAC,GAAG,IAAI;IAC1B,CAACA,sBAAM,CAAA,YAAA,CAAAC,MAAA,CAAcf,KAAK,CAAA,CAAG,GAAGA,KAAK,KAAKH,kBAAQ,CAACG,KAAK;IACxD,CAACc,sBAAM,CAAA,YAAA,CAAAC,MAAA,CAAcb,IAAI,CAAA,CAAG,GAAGA,IAAI,KAAKL,kBAAQ,CAACK,IAAI;IACrD,CAACY,sBAAM,CAAA,YAAA,CAAAC,MAAA,CAAcX,IAAI,EAAG,GAAGA,IAAI,KAAKP,kBAAQ,CAACO;AAClD,GAAC,CAAC;AAEF,EAAA,IAAMY,cAAc,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC;EAC5C,IAAMC,OAAO,GACZD,cAAc,CAACE,OAAO,CAACd,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAGA,IAAI,KAAK,OAAO,GAAG,QAAQ,GAAG,MAAM;EACnF,IAAMe,OAAO,GACZvB,MAAM,KAAK,QAAQ,GAAG,qBAAqB,GAAIa,cAAc,CAAsB,KAAK,CAAC;AAE1F,EAAA,oBACCW,gBAAA,CAAAC,aAAA,CAAA,GAAA,EAAAC,iCAAA,KACKb,cAAc,EAAA;AAClBX,IAAAA,SAAS,EAAEc,UAAW;AACtBP,IAAAA,IAAI,EAAEA,IAAK;AACXT,IAAAA,MAAM,EAAEA,MAAO;AACfW,IAAAA,OAAO,EAAEA,OAAQ;AACjBgB,IAAAA,GAAG,EAAEJ;AAAQ,GAAA,EACTb,KAAK,CAAA,eAETc,gBAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMvB,IAAAA,SAAS,EAAA,gBAAA,CAAAiB,MAAA,CAAmBD,sBAAM,CAACU,WAAW;GAAG,EAAEhB,IAAW,CAAC,EACpEZ,MAAM,KAAK,QAAQ,gBACnBwB,gBAAA,CAAAC,aAAA,CAACI,aAAM,EAAA;AAACC,IAAAA,GAAG,EAAEC,gBAAS;AAACvB,IAAAA,IAAI,EAAEa,OAAQ;AAACnB,IAAAA,SAAS,EAAA,gBAAA,CAAAiB,MAAA,CAAmBD,sBAAM,CAACc,WAAW;GAAK,CAAC,GACvF,IACF,CAAC;AAEN;;;;"}
1
+ {"version":3,"file":"MrlLink.js","sources":["../../../../../src/components/link/MrlLink/MrlLink.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { linkOpen } from '@muraldevkit/ds-icons';\nimport { defaults, LinkColor, LinkKind, LinkSize, LinkTargetType } from '../constants';\nimport { AttrsObject } from '../../../utils';\nimport { MrlSvg } from '../../';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\nimport styles from './MrlLink.module.scss';\n\nexport interface MrlLinkProptypes extends React.ComponentProps<'a'> {\n\t/** The textual label describing the link's purpose */\n\ttext: string;\n\t/** Specifies where to redirect the linked document */\n\thref: string;\n\t/** Specifies how to open the linked document */\n\ttarget?: LinkTargetType;\n\t/**\n\t * Color scheme to use based on the link's container background\n\t * - bold (default): a thicker underline to help a link stand out in a large amount of body copy\n\t * - simple: a thinner underline to help address visual hierarchy issues when many links are in a list\n\t */\n\tkind?: LinkKind;\n\t/**\n\t * Color scheme to use based on the link's container background\n\t * - default: most use cases\n\t * - mono: use on colored/saturated backgrounds (e.g. warning notifications)\n\t * - inverse: use on dark backgrounds\n\t */\n\tcolor?: LinkColor;\n\t/**\n\t * Allows developers to chose a specific font-size for the link. By default,\n\t * it will inherit the font-size of its parent/surrounding text.\n\t */\n\tsize?: LinkSize;\n\t/**\n\t * Applies additional HTML attributes to the nested anchor (`a`) element.\n\t * Example: `attrs='{ \"aria-label\": \"Special message for screen reader users\" }'`\n\t */\n\tattrs?: AttrsObject;\n\t/**\n\t * classes to apply to the component\n\t */\n\tclassName?: string;\n\t/**\n\t * Custom on click listener\n\t */\n\tonClick?: (e: React.MouseEvent<HTMLElement>) => void | undefined;\n\t/**\n\t * Enables interaction tracking for this link. Provide a stable, non-PII id\n\t * (e.g. 'help-center-link'). When omitted, the link emits no analytics.\n\t */\n\teventId?: string;\n}\n\n/**\n * Renders a link component\n *\n * @param {MrlLinkProptypes} props the props for your MrlLink\n * @returns {React.ReactElement} an a element containing the text you pass\n */\nexport const MrlLink = ({\n\ttarget = defaults.target,\n\tclassName,\n\tcolor = defaults.color,\n\tkind = defaults.kind,\n\tsize = defaults.size,\n\thref,\n\tattrs,\n\tonClick,\n\ttext,\n\teventId,\n\t...remainingProps\n}: MrlLinkProptypes): React.ReactElement => {\n\tconst trackInteraction = useMrlTrackInteraction('MrlLink', eventId);\n\n\t/**\n\t * Handle onClick events\n\t *\n\t * @param {React.MouseEvent<HTMLElement>} e - mouse event\n\t */\n\tconst handleOnClick = (e: React.MouseEvent<HTMLElement>) => {\n\t\ttrackInteraction({ action: 'click', metadata: { target }, variant: kind });\n\n\t\tonClick?.(e);\n\t};\n\n\tconst allClasses = classnames(className, 'mrl-link', {\n\t\t[styles['mrl-link']]: true,\n\t\t[styles[`mrl-link--${color}`]]: color !== defaults.color,\n\t\t[styles[`mrl-link--${kind}`]]: kind !== defaults.kind,\n\t\t[styles[`mrl-link--${size}`]]: size !== defaults.size\n\t});\n\n\tconst smallIconSizes = ['default', 'medium'];\n\tconst svgSize =\n\t\tsmallIconSizes.indexOf(size) > -1 ? 'small' : size === 'large' ? 'medium' : 'auto';\n\tconst linkRel =\n\t\ttarget === '_blank' ? 'noopener noreferrer' : (remainingProps as { rel?: string })['rel'];\n\n\treturn (\n\t\t<a\n\t\t\t{...remainingProps}\n\t\t\tclassName={allClasses}\n\t\t\thref={href}\n\t\t\ttarget={target}\n\t\t\tonClick={handleOnClick}\n\t\t\trel={linkRel}\n\t\t\t{...attrs}\n\t\t>\n\t\t\t<span className={`mrl-link-text ${styles.MrlLinkText}`}>{text}</span>\n\t\t\t{target === '_blank' ? (\n\t\t\t\t<MrlSvg svg={linkOpen} size={svgSize} className={`mrl-link-icon ${styles.MrlLinkIcon}`} />\n\t\t\t) : null}\n\t\t</a>\n\t);\n};\n"],"names":["MrlLink","_ref","_ref$target","target","defaults","className","_ref$color","color","_ref$kind","kind","_ref$size","size","href","attrs","onClick","text","eventId","remainingProps","_objectWithoutProperties","_excluded","trackInteraction","useMrlTrackInteraction","handleOnClick","e","action","metadata","variant","allClasses","classnames","styles","concat","smallIconSizes","svgSize","indexOf","linkRel","React","createElement","_extends","rel","MrlLinkText","MrlSvg","svg","linkOpen","MrlLinkIcon"],"mappings":"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"}
@@ -7,6 +7,7 @@ var constants$1 = require('../../button/constants.js');
7
7
  var helpers = require('../../button/helpers.js');
8
8
  var constants$2 = require('../constants.js');
9
9
  var constants = require('../../loader/constants.js');
10
+ var useMrlAnalytics = require('../../../hooks/useMrlAnalytics/useMrlAnalytics.js');
10
11
  var MrlTooltip = require('../../tooltip/MrlTooltip/MrlTooltip.js');
11
12
  var MrlSpinner = require('../../loader/MrlSpinner/MrlSpinner.js');
12
13
 
@@ -33,7 +34,7 @@ function _interopNamespace(e) {
33
34
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
34
35
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
35
36
 
36
- var _excluded = ["className", "href", "icon", "iconPos", "kind", "loading", "loadingText", "onClick", "target", "text", "size", "tooltip"];
37
+ var _excluded = ["className", "href", "icon", "iconPos", "kind", "loading", "loadingText", "onClick", "target", "text", "size", "tooltip", "eventId"];
37
38
  /**
38
39
  * Warning: use this component with care. Our links generally do not look like buttons.
39
40
  * If this interaction does not navigate the user - use `MrlButton`.
@@ -57,7 +58,10 @@ var MrlLinkButton = /*#__PURE__*/React__namespace.forwardRef(function MrlLinkBut
57
58
  _ref$size = _ref.size,
58
59
  size = _ref$size === void 0 ? constants$1.buttonDefaults.size : _ref$size,
59
60
  tooltip = _ref.tooltip,
61
+ eventId = _ref.eventId,
60
62
  remainingProps = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
63
+ var trackInteraction = useMrlAnalytics.useMrlTrackInteraction('MrlLinkButton', eventId);
64
+
61
65
  /**
62
66
  * If the link has an href of `#` and an `onClick`
63
67
  * then a button should be used instead. Links should navigate
@@ -75,6 +79,13 @@ var MrlLinkButton = /*#__PURE__*/React__namespace.forwardRef(function MrlLinkBut
75
79
  */
76
80
  function handleOnClick(e) {
77
81
  e.stopPropagation();
82
+ trackInteraction({
83
+ action: 'click',
84
+ metadata: {
85
+ target
86
+ },
87
+ variant: kind
88
+ });
78
89
  if (onClick && typeof onClick === 'function') {
79
90
  onClick(e);
80
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MrlLinkButton.js","sources":["../../../../../src/components/link/MrlLinkButton/MrlLinkButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { buttonDefaults, MrlButtonKind, MrlButtonSize, IconPosition } from '../../button/constants';\nimport { _spinnerProps } from '../../button/helpers';\nimport { defaults, LinkTargetType, MrlLinkButtonKind } from '../constants';\nimport { MrlSpinner, MrlTooltip, TooltipConfig } from '../../';\nimport { spinnerDefaults } from '../../loader/constants';\nimport { MrlComponentProps } from '../../../utils';\n\nimport './MrlLinkButton.global.scss';\n\nexport interface MrlLinkButtonProps\n\textends Omit<MrlComponentProps, 'style'>,\n\t\tReact.ComponentProps<'a'> {\n\t/** Specifies where to redirect the linked document */\n\thref: string;\n\t/** Specifies how to open the linked document */\n\ttarget?: LinkTargetType;\n\t/**\n\t * Allow developers to add icon to buttons.\n\t */\n\ticon?: React.ReactElement;\n\t/**\n\t * Allows developers to right-align an icon within a button.\n\t */\n\ticonPos?: IconPosition;\n\t/**\n\t * Changes the visual emphasis of the button.\n\t */\n\tkind?: MrlLinkButtonKind;\n\t/**\n\t * Displays a spinner in the button to indicate some action is in progress.\n\t */\n\tloading?: boolean;\n\t/**\n\t * Text for the spinner when the button is in a loading state.\n\t */\n\tloadingText?: string;\n\t/**\n\t * onClick event for the button.\n\t */\n\tonClick?: (e: React.SyntheticEvent<HTMLAnchorElement>) => void;\n\t/**\n\t * Changes the size of the button so it can scale with its surrounding context.\n\t */\n\tsize?: MrlButtonSize;\n\t/**\n\t * The textual label describing the button's purpose/action.\n\t * Icon buttons require a text label to ensure accessibility.\n\t */\n\ttext: string;\n\n\t/**\n\t * Tooltip configuration for the button\n\t */\n\ttooltip?: TooltipConfig;\n}\n\n/**\n * Warning: use this component with care. Our links generally do not look like buttons.\n * If this interaction does not navigate the user - use `MrlButton`.\n */\nexport const MrlLinkButton = React.forwardRef<HTMLAnchorElement, MrlLinkButtonProps>(\n\tfunction MrlLinkButton(\n\t\t{\n\t\t\tclassName,\n\t\t\thref,\n\t\t\ticon,\n\t\t\ticonPos = buttonDefaults.iconPos,\n\t\t\tkind = defaults.linkButtonKind,\n\t\t\tloading = false,\n\t\t\tloadingText = spinnerDefaults.text,\n\t\t\tonClick,\n\t\t\ttarget = defaults.target,\n\t\t\ttext,\n\t\t\tsize = buttonDefaults.size,\n\t\t\ttooltip,\n\t\t\t...remainingProps\n\t\t}: MrlLinkButtonProps,\n\t\tref\n\t) {\n\t\t/**\n\t\t * If the link has an href of `#` and an `onClick`\n\t\t * then a button should be used instead. Links should navigate\n\t\t * the user somewhere, and this pattern shows us that we aren't\n\t\t * navigating but are performing an action instead.\n\t\t */\n\t\tif (href === '#' && onClick) {\n\t\t\tconsole.error('Error: `MrlLinkButton` should have an href that navigates the user somewhere');\n\t\t}\n\n\t\t/**\n\t\t * Handle onClick events\n\t\t *\n\t\t * @param {React.MouseEvent<HTMLAnchorElement>} e - mouse event\n\t\t */\n\t\tfunction handleOnClick(e: React.MouseEvent<HTMLAnchorElement>) {\n\t\t\te.stopPropagation();\n\n\t\t\tif (onClick && typeof onClick === 'function') {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t}\n\n\t\tconst classNames = classnames(\n\t\t\t'mrlButton mrlLinkButton',\n\t\t\t`mrlButton--${size}`,\n\t\t\t`mrlButton--${kind}`,\n\t\t\t!icon && loading && `mrlButton--loading`,\n\t\t\ticon && `mrlButton--icon-${iconPos}`,\n\t\t\tclassName\n\t\t);\n\n\t\tconst spinnerProps = _spinnerProps(kind as MrlButtonKind, size);\n\t\tconst spinnerClass = icon ? '' : 'mrlButton-spinner';\n\t\tconst spinner = (\n\t\t\t<MrlSpinner\n\t\t\t\tclassName={spinnerClass}\n\t\t\t\tkind={spinnerProps.kind}\n\t\t\t\trole=\"none\"\n\t\t\t\tsize={spinnerProps.size}\n\t\t\t\ttext={loadingText}\n\t\t\t/>\n\t\t);\n\n\t\tconst renderLinkButton = () => (\n\t\t\t<a\n\t\t\t\t{...remainingProps}\n\t\t\t\tclassName={classNames}\n\t\t\t\thref={href}\n\t\t\t\ttarget={target}\n\t\t\t\tref={ref}\n\t\t\t\tonClick={handleOnClick}\n\t\t\t>\n\t\t\t\t{loading ? spinner : icon}\n\t\t\t\t<span className=\"mrlButton-text\">{text}</span>\n\t\t\t</a>\n\t\t);\n\n\t\treturn !tooltip ? (\n\t\t\trenderLinkButton()\n\t\t) : (\n\t\t\t<MrlTooltip\n\t\t\t\tposition={tooltip.position || 'bottom'}\n\t\t\t\tanchor={tooltip.anchor || 'center'}\n\t\t\t\ttext={tooltip.text}\n\t\t\t\tdataQa={tooltip.dataQa}\n\t\t\t>\n\t\t\t\t{renderLinkButton()}\n\t\t\t</MrlTooltip>\n\t\t);\n\t}\n);\n"],"names":["MrlLinkButton","React","forwardRef","_ref","ref","className","href","icon","_ref$iconPos","iconPos","buttonDefaults","_ref$kind","kind","defaults","linkButtonKind","_ref$loading","loading","_ref$loadingText","loadingText","spinnerDefaults","text","onClick","_ref$target","target","_ref$size","size","tooltip","remainingProps","_objectWithoutProperties","_excluded","console","error","handleOnClick","e","stopPropagation","classNames","classnames","concat","spinnerProps","_spinnerProps","spinnerClass","spinner","createElement","MrlSpinner","role","renderLinkButton","_extends","MrlTooltip","position","anchor","dataQa"],"mappings":"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"}
1
+ {"version":3,"file":"MrlLinkButton.js","sources":["../../../../../src/components/link/MrlLinkButton/MrlLinkButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport { buttonDefaults, MrlButtonKind, MrlButtonSize, IconPosition } from '../../button/constants';\nimport { _spinnerProps } from '../../button/helpers';\nimport { defaults, LinkTargetType, MrlLinkButtonKind } from '../constants';\nimport { MrlSpinner, MrlTooltip, TooltipConfig } from '../../';\nimport { spinnerDefaults } from '../../loader/constants';\nimport { MrlComponentProps } from '../../../utils';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\nimport './MrlLinkButton.global.scss';\n\nexport interface MrlLinkButtonProps\n\textends Omit<MrlComponentProps, 'style'>,\n\t\tReact.ComponentProps<'a'> {\n\t/** Specifies where to redirect the linked document */\n\thref: string;\n\t/** Specifies how to open the linked document */\n\ttarget?: LinkTargetType;\n\t/**\n\t * Allow developers to add icon to buttons.\n\t */\n\ticon?: React.ReactElement;\n\t/**\n\t * Allows developers to right-align an icon within a button.\n\t */\n\ticonPos?: IconPosition;\n\t/**\n\t * Changes the visual emphasis of the button.\n\t */\n\tkind?: MrlLinkButtonKind;\n\t/**\n\t * Displays a spinner in the button to indicate some action is in progress.\n\t */\n\tloading?: boolean;\n\t/**\n\t * Text for the spinner when the button is in a loading state.\n\t */\n\tloadingText?: string;\n\t/**\n\t * onClick event for the button.\n\t */\n\tonClick?: (e: React.SyntheticEvent<HTMLAnchorElement>) => void;\n\t/**\n\t * Changes the size of the button so it can scale with its surrounding context.\n\t */\n\tsize?: MrlButtonSize;\n\t/**\n\t * The textual label describing the button's purpose/action.\n\t * Icon buttons require a text label to ensure accessibility.\n\t */\n\ttext: string;\n\n\t/**\n\t * Tooltip configuration for the button\n\t */\n\ttooltip?: TooltipConfig;\n\n\t/**\n\t * Enables interaction tracking for this link button. Provide a stable, non-PII id\n\t * (e.g. 'upgrade-plan-cta'). When omitted, the link button emits no analytics.\n\t */\n\teventId?: string;\n}\n\n/**\n * Warning: use this component with care. Our links generally do not look like buttons.\n * If this interaction does not navigate the user - use `MrlButton`.\n */\nexport const MrlLinkButton = React.forwardRef<HTMLAnchorElement, MrlLinkButtonProps>(\n\tfunction MrlLinkButton(\n\t\t{\n\t\t\tclassName,\n\t\t\thref,\n\t\t\ticon,\n\t\t\ticonPos = buttonDefaults.iconPos,\n\t\t\tkind = defaults.linkButtonKind,\n\t\t\tloading = false,\n\t\t\tloadingText = spinnerDefaults.text,\n\t\t\tonClick,\n\t\t\ttarget = defaults.target,\n\t\t\ttext,\n\t\t\tsize = buttonDefaults.size,\n\t\t\ttooltip,\n\t\t\teventId,\n\t\t\t...remainingProps\n\t\t}: MrlLinkButtonProps,\n\t\tref\n\t) {\n\t\tconst trackInteraction = useMrlTrackInteraction('MrlLinkButton', eventId);\n\n\t\t/**\n\t\t * If the link has an href of `#` and an `onClick`\n\t\t * then a button should be used instead. Links should navigate\n\t\t * the user somewhere, and this pattern shows us that we aren't\n\t\t * navigating but are performing an action instead.\n\t\t */\n\t\tif (href === '#' && onClick) {\n\t\t\tconsole.error('Error: `MrlLinkButton` should have an href that navigates the user somewhere');\n\t\t}\n\n\t\t/**\n\t\t * Handle onClick events\n\t\t *\n\t\t * @param {React.MouseEvent<HTMLAnchorElement>} e - mouse event\n\t\t */\n\t\tfunction handleOnClick(e: React.MouseEvent<HTMLAnchorElement>) {\n\t\t\te.stopPropagation();\n\n\t\t\ttrackInteraction({ action: 'click', metadata: { target }, variant: kind });\n\n\t\t\tif (onClick && typeof onClick === 'function') {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t}\n\n\t\tconst classNames = classnames(\n\t\t\t'mrlButton mrlLinkButton',\n\t\t\t`mrlButton--${size}`,\n\t\t\t`mrlButton--${kind}`,\n\t\t\t!icon && loading && `mrlButton--loading`,\n\t\t\ticon && `mrlButton--icon-${iconPos}`,\n\t\t\tclassName\n\t\t);\n\n\t\tconst spinnerProps = _spinnerProps(kind as MrlButtonKind, size);\n\t\tconst spinnerClass = icon ? '' : 'mrlButton-spinner';\n\t\tconst spinner = (\n\t\t\t<MrlSpinner\n\t\t\t\tclassName={spinnerClass}\n\t\t\t\tkind={spinnerProps.kind}\n\t\t\t\trole=\"none\"\n\t\t\t\tsize={spinnerProps.size}\n\t\t\t\ttext={loadingText}\n\t\t\t/>\n\t\t);\n\n\t\tconst renderLinkButton = () => (\n\t\t\t<a\n\t\t\t\t{...remainingProps}\n\t\t\t\tclassName={classNames}\n\t\t\t\thref={href}\n\t\t\t\ttarget={target}\n\t\t\t\tref={ref}\n\t\t\t\tonClick={handleOnClick}\n\t\t\t>\n\t\t\t\t{loading ? spinner : icon}\n\t\t\t\t<span className=\"mrlButton-text\">{text}</span>\n\t\t\t</a>\n\t\t);\n\n\t\treturn !tooltip ? (\n\t\t\trenderLinkButton()\n\t\t) : (\n\t\t\t<MrlTooltip\n\t\t\t\tposition={tooltip.position || 'bottom'}\n\t\t\t\tanchor={tooltip.anchor || 'center'}\n\t\t\t\ttext={tooltip.text}\n\t\t\t\tdataQa={tooltip.dataQa}\n\t\t\t>\n\t\t\t\t{renderLinkButton()}\n\t\t\t</MrlTooltip>\n\t\t);\n\t}\n);\n"],"names":["MrlLinkButton","React","forwardRef","_ref","ref","className","href","icon","_ref$iconPos","iconPos","buttonDefaults","_ref$kind","kind","defaults","linkButtonKind","_ref$loading","loading","_ref$loadingText","loadingText","spinnerDefaults","text","onClick","_ref$target","target","_ref$size","size","tooltip","eventId","remainingProps","_objectWithoutProperties","_excluded","trackInteraction","useMrlTrackInteraction","console","error","handleOnClick","e","stopPropagation","action","metadata","variant","classNames","classnames","concat","spinnerProps","_spinnerProps","spinnerClass","spinner","createElement","MrlSpinner","role","renderLinkButton","_extends","MrlTooltip","position","anchor","dataQa"],"mappings":"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"}
@@ -14,6 +14,7 @@ var web = require('@react-spring/web');
14
14
  var index$2 = require('../../../utils/isTouch/index.js');
15
15
  var getScrollableParent = require('../utilities/get-scrollable-parent.js');
16
16
  var useMenuScroll = require('../hooks/useMenuScroll.js');
17
+ var useMrlAnalytics = require('../../../hooks/useMrlAnalytics/useMrlAnalytics.js');
17
18
  var isElementAriaDisabled = require('../../../utils/isElementAriaDisabled/isElementAriaDisabled.js');
18
19
  var preventDefault = require('../../../utils/preventDefault/preventDefault.js');
19
20
  var findAdjacentInteractiveElement = require('../../../utils/findAdjacentInteractiveElement/findAdjacentInteractiveElement.js');
@@ -42,7 +43,7 @@ function _interopNamespace(e) {
42
43
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
43
44
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
44
45
 
45
- var _excluded = ["actionState", "alignment", "children", "closeOnScroll", "closeParent", "customPosition", "clickOutsideEvent", "disableArrowOpen", "disableFlipping", "id", "isInternal", "isSubMenu", "spacing", "menuOffset", "portalProps", "position", "triggerStopPropagation", "onClose", "triggerRef"];
46
+ var _excluded = ["actionState", "alignment", "children", "closeOnScroll", "closeParent", "customPosition", "clickOutsideEvent", "disableArrowOpen", "disableFlipping", "id", "isInternal", "isSubMenu", "spacing", "menuOffset", "portalProps", "position", "triggerStopPropagation", "onClose", "eventId", "triggerRef"];
46
47
  var MENU_ITEM_SELECTOR = '[role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"]';
47
48
 
48
49
  /**
@@ -88,6 +89,7 @@ function MrlMenu(_ref) {
88
89
  _ref$triggerStopPropa = _ref.triggerStopPropagation,
89
90
  triggerStopPropagation = _ref$triggerStopPropa === void 0 ? false : _ref$triggerStopPropa,
90
91
  onClose = _ref.onClose,
92
+ eventId = _ref.eventId,
91
93
  triggerRef = _ref.triggerRef,
92
94
  remainingProps = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
93
95
  var defaultOpenState = position === 'static' || false;
@@ -98,6 +100,23 @@ function MrlMenu(_ref) {
98
100
  _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
99
101
  state = _React$useState2[0],
100
102
  setState = _React$useState2[1];
103
+ var trackInteraction = useMrlAnalytics.useMrlTrackInteraction('MrlMenu', eventId);
104
+ // the menu opens and closes from several paths (click, keyboard, hover, click outside),
105
+ // so open/close is emitted from the resulting state rather than each individual handler.
106
+ var wasOpenRef = React__namespace.useRef(defaultOpenState);
107
+ React__namespace.useEffect(() => {
108
+ var _state$actionType;
109
+ if (wasOpenRef.current === state.isOpen) return;
110
+ wasOpenRef.current = state.isOpen;
111
+ trackInteraction({
112
+ action: state.isOpen ? 'open' : 'close',
113
+ metadata: {
114
+ isSubMenu,
115
+ trigger: (_state$actionType = state.actionType) !== null && _state$actionType !== void 0 ? _state$actionType : 'unknown'
116
+ },
117
+ variant: position
118
+ });
119
+ }, [state.isOpen, state.actionType, isSubMenu, position, trackInteraction]);
101
120
  var menuRef = React__namespace.useRef(null);
102
121
  var listRef = React__namespace.useRef(null);
103
122
  var _React$useState3 = React__namespace.useState([]),
@@ -1 +1 @@
1
- {"version":3,"file":"MrlMenu.js","sources":["../../../../../src/components/menu/MrlMenu/MrlMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MrlPortal, PortalProps } from '../../../components';\nimport { useTriggerPosition } from '../../../hooks/useTriggerPosition';\nimport { useClickOutside } from '../../../hooks/useClickOutside';\nimport { useSubMenuElementPosition } from '../hooks/useSubMenuElementPosition';\nimport {\n\tMenuPosition,\n\tMenuAlignment,\n\tActionState,\n\tActionType,\n\tCustomMenuPosition\n} from '../constants';\nimport { PORTAL_LAYERS } from '../../../utils/layers';\nimport {\n\tfindAdjacentInteractiveElement,\n\tpreventDefault,\n\tisElementAriaDisabled\n} from '../../../utils';\nimport classnames from 'classnames';\nimport { MrlMenuContext } from '../context/MrlMenuContext';\nimport styles from './MrlMenu.module.scss';\nimport itemStyles from '../MrlMenuItem/MrlMenuItem.module.scss';\nimport { useTransition, animated } from '@react-spring/web';\nimport { isTouchDevice } from '../../../utils/isTouch';\nimport { getScrollableParent } from '../utilities/get-scrollable-parent';\nimport { useMenuScroll } from '../hooks/useMenuScroll';\n\nexport interface MrlMenuProps {\n\t/** Custom position for the menu */\n\tcustomPosition?: CustomMenuPosition;\n\n\t/** Children to be rendered within the menu component*/\n\tchildren: React.ReactNode;\n\n\t/** Event to close the menu */\n\tclickOutsideEvent?: 'mousedown' | 'mouseup' | 'click';\n\n\t/**\n\t * Enables closing the menu when scrolling. Default is false.\n\t *\n\t */\n\tcloseOnScroll?: boolean;\n\n\t/**\n\t * Private closeParent prop for use with MrlMenuItem\n\t *\n\t * !!! Please do not use this prop directly, it is only used internally by MrlMenuItem !!!\n\t * @private\n\t */\n\tcloseParent?: () => void;\n\n\t/**\n\t * Disable arrows from opening the menu\n\t * - This is useful when you want to disable the default browser behavior of opening a menu on arrow down.\n\t *\n\t * Example usage: the menu is within a vertical toolbar and you want to use the arrow keys to navigate the toolbar.\n\t * By using this prop you can disable the arrow key open/close so that navigating the toolbar does not conflict\n\t * with opening/closing the menu.\n\t */\n\tdisableArrowOpen?: boolean;\n\n\t/**\n\t * Disable flipping of the menu when it goes off the screen\n\t * @default false\n\t */\n\tdisableFlipping?: boolean;\n\n\t/** Unique identifier for the menu */\n\tid?: string;\n\n\t/**\n\t * Use when the menu is embedded within another component\n\t * Removes the following styles:\n\t * - padding on the menu\n\t * - drop shadow and border\n\t * @default false\n\t */\n\tisInternal?: boolean;\n\n\t/**\n\t * Private isSubMenu prop for use with MrlMenuItem\n\t *\n\t * !!! Please do not use this prop directly, it is only used internally by MrlMenuItem !!!\n\t * @private\n\t */\n\tisSubMenu?: boolean;\n\n\t/**\n\t * spacing of menu\n\t * - compact has less padding\n\t * @default 'default'\n\t */\n\tspacing?: 'default' | 'compact';\n\n\t/**\n\t * Offset of the menu from the trigger element in pixels\n\t * @default 10px\n\t */\n\tmenuOffset?: number;\n\n\t/**\n\t * Configuration for the portal component\n\t */\n\tportalProps?: Omit<PortalProps, 'children'>;\n\n\t/**\n\t * Horizontal and vertical alignment of the menu relative to the trigger element\n\t * - position 'left', 'right', 'top', 'bottom' position relative to the trigger\n\t * - position 'static' renders the menu in place, not using the portal\n\t * - position 'ignore' will not position the menu, allowing you to use the customPosition prop to position the element\n\t * @default 'bottom'\n\t */\n\tposition?: MenuPosition;\n\n\t/**\n\t * Set initial state of menu\n\t * @default { actionType: null, isOpen: false }\n\t */\n\tactionState?: ActionState;\n\n\t/**\n\t * Reference to the DOM element that triggers this menu.\n\t */\n\ttriggerRef?: React.RefObject<HTMLButtonElement>;\n\n\t/**\n\t * Trigger stop propagation on click\n\t *\n\t * In some instances we may want the trigger element to stop propogation to the\n\t * rest of the DOM. Use this flag to enable and disable it.\n\t * @default false\n\t */\n\ttriggerStopPropagation?: boolean;\n\n\t/**\n\t * Vertical and horizontal alignment of the menu relative to the position of the menu with the trigger\n\t * - 'left' and 'right' work with position 'top' and 'bottom'\n\t * - 'top' and 'bottom' work with position 'left' and 'right'\n\t * - 'center' works with all positions\n\t *\n\t * This does not impact submenus\n\t */\n\talignment?: MenuAlignment;\n\n\t/**\n\t * Callback to be called when the menu is closed\n\t * @param type - type of close event\n\t */\n\tonClose?: (type?: string) => void;\n}\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]';\n\n/**\n * MrlMenu component\n *\n * Renders a menu component with alignment relative to a trigger element\n * @param {MrlMenuProps} props - The props for the MrlMenu component\n * @returns {Element} - rendered MrlMenu component\n */\nexport function MrlMenu({\n\tactionState = { actionType: null, isOpen: false },\n\talignment = 'center',\n\tchildren,\n\tcloseOnScroll = false,\n\tcloseParent,\n\tcustomPosition,\n\tclickOutsideEvent = 'mouseup',\n\tdisableArrowOpen,\n\tdisableFlipping = false,\n\tid,\n\tisInternal = false,\n\tisSubMenu = false,\n\tspacing = 'default',\n\tmenuOffset = 10,\n\tportalProps = { id: PORTAL_LAYERS.MENU.name },\n\tposition = 'bottom',\n\ttriggerStopPropagation = false,\n\tonClose,\n\ttriggerRef,\n\t...remainingProps\n}: MrlMenuProps): JSX.Element {\n\tconst defaultOpenState = position === 'static' || false;\n\n\tconst [state, setState] = React.useState({\n\t\tactionType: null,\n\t\tisOpen: defaultOpenState\n\t} as ActionState);\n\n\tconst menuRef = React.useRef<HTMLDivElement>(null);\n\tconst listRef = React.useRef<HTMLUListElement>(null);\n\tconst [menuItems, setMenuItems] = React.useState<HTMLButtonElement[]>([]);\n\tconst [menuRect, setMenuRect] = React.useState<DOMRect | null>(null);\n\n\t/**\n\t * Checks if the trigger element is disabled\n\t * @returns {boolean} - true if the trigger element is disabled, false otherwise\n\t */\n\tconst isTriggerDisabled = React.useCallback((): boolean => {\n\t\treturn isElementAriaDisabled(triggerRef?.current);\n\t}, [triggerRef]);\n\n\t/**\n\t * Sets up trigger event listeners to open and close the menu\n\t * @param e - mouse event\n\t */\n\tconst toggleMenuTrigger = React.useCallback(\n\t\t(e: MouseEvent) => {\n\t\t\tif (isTriggerDisabled()) return;\n\n\t\t\tif (triggerStopPropagation) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\n\t\t\tsetState((prevState) => ({ actionType: 'click', isOpen: !prevState.isOpen }));\n\t\t},\n\t\t[triggerStopPropagation, isTriggerDisabled]\n\t);\n\n\t/**\n\t * Used to display the menu when hovering over a menu item that has a submenu\n\t */\n\tconst showMenuHover = React.useCallback(() => {\n\t\tsetState({ actionType: 'click', isOpen: true });\n\t}, []);\n\n\tconst showMenuTap = React.useCallback(() => {\n\t\tsetState((prevState) => ({ actionType: 'click', isOpen: !prevState.isOpen }));\n\t}, []);\n\n\tconst hideMenuHover = React.useCallback(\n\t\t(event: MouseEvent) => {\n\t\t\tconst relatedTarget = event.relatedTarget as Node;\n\n\t\t\t// If the related target is not a child of the menu, close the menu\n\t\t\t// This prevents the menu from closing when hovering over a submenu item or trigger\n\t\t\tif (\n\t\t\t\ttriggerRef &&\n\t\t\t\tmenuRef.current &&\n\t\t\t\t!menuRef.current.contains(relatedTarget) &&\n\t\t\t\ttriggerRef.current &&\n\t\t\t\t!triggerRef.current.contains(relatedTarget)\n\t\t\t) {\n\t\t\t\tsetState({ actionType: null, isOpen: false });\n\t\t\t}\n\t\t},\n\t\t[triggerRef]\n\t);\n\n\t/**\n\t * Sets up trigger event listeners to open and close the menu with a keyboard\n\t */\n\tconst toggleMenuKey = React.useCallback(\n\t\t(e: KeyboardEvent) => {\n\t\t\tconst openMenu = () => {\n\t\t\t\tif (isTriggerDisabled()) return;\n\t\t\t\tsetState({ actionType: e.key as ActionType, isOpen: true });\n\t\t\t};\n\n\t\t\tif (!state.isOpen) {\n\t\t\t\tif (isSubMenu) {\n\t\t\t\t\tswitch (e.key) {\n\t\t\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\t\tcase 'Enter':\n\t\t\t\t\t\tcase ' ':\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\topenMenu();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tswitch (e.key) {\n\t\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\t\tif (!disableArrowOpen && !isTriggerDisabled()) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\topenMenu();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Enter':\n\t\t\t\t\tcase ' ':\n\t\t\t\t\t\tif (isTriggerDisabled()) return;\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\topenMenu();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[state.isOpen, isTriggerDisabled, disableArrowOpen, isSubMenu]\n\t);\n\n\tconst closeMenu = React.useCallback(\n\t\t(shouldCloseParent = true) => {\n\t\t\tif (position === 'static') return;\n\n\t\t\t/**\n\t\t\t * What is closeParent?\n\t\t\t *\n\t\t\t * It is passed from the context provider to the MenuItem (which helps render our submenus)\n\t\t\t * When we render the submenu, we pass the closeMenu function as \"closeParent\" to the submenu.\n\t\t\t * This allows us to trigger closing the parent menu when the submenu is closed. And that's\n\t\t\t * what this call is for.\n\t\t\t */\n\t\t\tif (shouldCloseParent && closeParent) closeParent();\n\n\t\t\tsetState({ actionType: null, isOpen: false });\n\t\t\tonClose?.();\n\t\t},\n\t\t[position, closeParent, onClose]\n\t);\n\n\t/**\n\t * Click outside to dismiss the menu\n\t * @param e\n\t */\n\tconst disableClickOutside = !state.isOpen || position === 'static';\n\tuseClickOutside(menuRef, triggerRef, clickOutsideEvent, closeMenu, disableClickOutside);\n\n\tconst handleMenuKeyUp = (e: React.KeyboardEvent) => {\n\t\tconst actions: ActionType[] = ['ArrowUp', 'ArrowDown', 'ArrowRight', 'Enter', 'Escape', ' '];\n\n\t\tif (actions.includes(e.key as ActionType)) {\n\t\t\tpreventDefault(e);\n\t\t}\n\t};\n\n\t/**\n\t * Focus management when someone is using a keyboard to navigate the menu\n\t * @param e - keyboard event\n\t */\n\tconst handleMenuKey = (e: React.KeyboardEvent) => {\n\t\tconst currentIndex = menuItems.findIndex((item) => document.activeElement === item);\n\t\tlet nextIndex: number;\n\n\t\tif (state.isOpen) {\n\t\t\tswitch (e.key) {\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tnextIndex = currentIndex < menuItems.length - 1 ? currentIndex + 1 : currentIndex;\n\t\t\t\t\tmenuItems[nextIndex]?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tnextIndex = currentIndex > 0 ? currentIndex - 1 : 0;\n\t\t\t\t\tmenuItems[nextIndex]?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\ttriggerRef?.current?.focus();\n\t\t\t\t\tcloseMenu(false);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Tab':\n\t\t\t\t\tif (!isSubMenu && position !== 'static') {\n\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\t// Handle shift + tab: move focus to the previous item\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tif (triggerRef) {\n\t\t\t\t\t\t\t\tconst prevElement = findAdjacentInteractiveElement(triggerRef, 'previous');\n\t\t\t\t\t\t\t\tprevElement?.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Regular tab: close the menu or move to the next item\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tif (triggerRef) {\n\t\t\t\t\t\t\t\tconst nextElement = findAdjacentInteractiveElement(triggerRef);\n\t\t\t\t\t\t\t\tnextElement?.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcloseMenu();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * useEffect hooks to handle menu state changes\n\t */\n\n\tReact.useEffect(() => {\n\t\tif (triggerRef?.current) {\n\t\t\ttriggerRef.current.setAttribute('aria-haspopup', 'menu');\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tReact.useEffect(() => {\n\t\tif (position === 'static') {\n\t\t\tsetState({ actionType: 'click', isOpen: true });\n\t\t}\n\t}, [position]);\n\n\tReact.useEffect(() => {\n\t\ttriggerRef?.current?.setAttribute('aria-expanded', state.isOpen.toString());\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen]);\n\n\tReact.useEffect(() => {\n\t\tif (!isSubMenu && position !== 'static')\n\t\t\tsetState({ actionType: actionState.actionType, isOpen: actionState.isOpen });\n\t}, [actionState.isOpen, actionState.actionType, isSubMenu, position]);\n\n\t// setup event handlers for mouse, keyboard, and scroll interactions\n\tReact.useEffect(() => {\n\t\tconst triggerElement = triggerRef?.current;\n\t\tconst menuElement = menuRef?.current;\n\t\tconst menuItems = menuElement?.querySelectorAll(MENU_ITEM_SELECTOR);\n\n\t\tlet scrollableParent: HTMLElement | Window;\n\n\t\tif (triggerElement) {\n\t\t\ttriggerElement.addEventListener('mousedown', preventDefault);\n\t\t\tif (!isSubMenu) triggerElement.addEventListener('click', toggleMenuTrigger);\n\t\t\ttriggerElement.addEventListener('keydown', toggleMenuKey);\n\n\t\t\t// Setup event listeners for when the menu is a submenu\n\t\t\tif (isSubMenu) {\n\t\t\t\ttriggerElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\ttriggerElement.addEventListener('mouseout', hideMenuHover);\n\n\t\t\t\tif (isTouchDevice()) {\n\t\t\t\t\ttriggerElement.addEventListener('touchend', showMenuTap);\n\t\t\t\t}\n\n\t\t\t\tif (menuElement) {\n\t\t\t\t\tmenuElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\t\tmenuElement.addEventListener('mouseout', hideMenuHover);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (closeOnScroll) {\n\t\t\t\tscrollableParent = getScrollableParent(triggerElement);\n\t\t\t\tif (scrollableParent) {\n\t\t\t\t\tscrollableParent.addEventListener('scroll', () => closeMenu(), {\n\t\t\t\t\t\tcapture: true,\n\t\t\t\t\t\tpassive: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\ttriggerElement.removeEventListener('mousedown', preventDefault);\n\t\t\t\tif (!isSubMenu) triggerElement.removeEventListener('click', toggleMenuTrigger);\n\t\t\t\ttriggerElement.removeEventListener('keydown', toggleMenuKey);\n\n\t\t\t\tif (menuItems) {\n\t\t\t\t\tmenuItems.forEach((item: Element) => {\n\t\t\t\t\t\tif (!item.getAttribute('aria-haspopup')) {\n\t\t\t\t\t\t\titem.removeEventListener('mousedown', () => closeMenu());\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (isSubMenu) {\n\t\t\t\t\ttriggerElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\ttriggerElement.removeEventListener('mouseout', hideMenuHover);\n\n\t\t\t\t\tif (isTouchDevice()) {\n\t\t\t\t\t\ttriggerElement.removeEventListener('touchstart', showMenuHover);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (menuElement) {\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseout', hideMenuHover);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (closeOnScroll && scrollableParent) {\n\t\t\t\t\tscrollableParent.removeEventListener('scroll', () => closeMenu());\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}, [\n\t\tcloseOnScroll,\n\t\tisSubMenu,\n\t\ttriggerRef,\n\t\ttoggleMenuTrigger,\n\t\ttoggleMenuKey,\n\t\tshowMenuHover,\n\t\thideMenuHover,\n\t\tcloseMenu,\n\t\tshowMenuTap\n\t]);\n\n\t// This use effect handles a few things when we open the menu:\n\t// - making sure that the menu component is aware of it's menu items\n\t// - adding a class to the trigger element when the submenu is open for styling\n\t// - storing the menu rect in state for positioning calculations\n\tReact.useEffect(() => {\n\t\tif (state.isOpen) {\n\t\t\tconst foundMenuItems = Array.from(\n\t\t\t\tmenuRef.current?.querySelectorAll(MENU_ITEM_SELECTOR) || []\n\t\t\t) as HTMLButtonElement[];\n\n\t\t\tsetMenuItems(foundMenuItems);\n\t\t}\n\n\t\tif (state.isOpen && isSubMenu) {\n\t\t\ttriggerRef?.current?.classList.add(itemStyles['MrlMenuItem--item--submenuOpen']);\n\t\t} else if (!state.isOpen && isSubMenu) {\n\t\t\ttriggerRef?.current?.classList.remove(itemStyles['MrlMenuItem--item--submenuOpen']);\n\t\t}\n\n\t\t// For consistent submenu calculations, we are storing the menu rect in state\n\t\t// Anytime we need to use the menu rect, we want to make sure the values are based\n\t\t// on the original state of the menu for proper transformations\n\t\tif (!menuRect && menuRef.current) {\n\t\t\tconst newRect = menuRef.current?.getBoundingClientRect();\n\t\t\tsetMenuRect(newRect || null);\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, menuRect, isSubMenu]);\n\n\t/**\n\t * Focus management for when the menu is opening or closing\n\t */\n\tReact.useEffect(() => {\n\t\tif (menuItems.length > 0) {\n\t\t\tlet menuItemToFocus;\n\n\t\t\tswitch (state.actionType) {\n\t\t\t\tcase 'Enter':\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\tcase ' ':\n\t\t\t\t\tmenuItemToFocus = menuItems[0];\n\t\t\t\t\tmenuItemToFocus?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tmenuItemToFocus = menuItems[menuItems.length - 1];\n\t\t\t\t\tmenuItemToFocus?.focus();\n\n\t\t\t\t\t// Scroll to the bottom of the menu when the last item is focused\n\t\t\t\t\t// setTimeout is required to ensure the element has been rendered\n\t\t\t\t\t// and the scrollHeight is accurate prior to scrolling\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (listRef.current) {\n\t\t\t\t\t\t\tlistRef.current.scrollTo(0, listRef.current.scrollHeight);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 20);\n\t\t\t}\n\n\t\t\tif (isSubMenu && state.actionType === 'ArrowRight') {\n\t\t\t\tmenuItemToFocus = menuItems[0];\n\t\t\t\tmenuItemToFocus?.focus();\n\t\t\t}\n\t\t}\n\t}, [isSubMenu, menuItems, state.actionType]);\n\n\t/**\n\t * Menu scroll behavior\n\t *\n\t * When the menu cannot fit in the preferred or flipped position,\n\t * this hook constrains the menu height and enables internal scrolling.\n\t * Called before useTriggerPosition so that isScrolling can disable flipping,\n\t * preventing the positioning hook from fighting the scroll constraint.\n\t */\n\tconst disableMenuScroll =\n\t\tisSubMenu || !state.isOpen || position === 'static' || position === 'ignore';\n\n\t/**\n\t * Sets overflow (scrolling) on menu when there is no space to display\n\t * the menu in the preferred or flipped position.\n\t */\n\tconst menuScroll = useMenuScroll(\n\t\ttriggerRef,\n\t\tlistRef,\n\t\tposition,\n\t\tmenuOffset,\n\t\tstate.isOpen,\n\t\tdisableMenuScroll\n\t);\n\n\t/**\n\t * Primary menu positioning, alignment, and transition styling\n\t *\n\t * This hook is only enabled if isSubMenu is FALSE\n\t */\n\tconst disableTriggerPosition = isSubMenu || !state.isOpen || position === 'static';\n\tconst menuPositionStyles = useTriggerPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\t{\n\t\t\talign: alignment,\n\t\t\tcustomPosition: customPosition,\n\t\t\tposition: position\n\t\t},\n\t\tstate.isOpen,\n\t\tmenuOffset,\n\t\tdisableTriggerPosition,\n\t\tdisableFlipping || menuScroll.isScrolling\n\t);\n\n\t/**\n\t * Submenu positioning and alignment\n\t *\n\t * This hook is only enabled if isSubMenu is TRUE\n\t */\n\tconst subMenuPosition = useSubMenuElementPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\tisSubMenu,\n\t\tstate.isOpen,\n\t\tmenuRect,\n\t\t// disable the subelement positioning if it's not a submenu\n\t\t!isSubMenu\n\t);\n\n\tconst inlineStyles = {\n\t\tmenu: {\n\t\t\tleft: menuPositionStyles.left,\n\t\t\tposition: 'fixed' as const,\n\t\t\ttop: menuPositionStyles.top\n\t\t},\n\t\tsubmenu: {\n\t\t\tleft: subMenuPosition.left,\n\t\t\ttop: subMenuPosition.top\n\t\t}\n\t};\n\n\t/**\n\t * React Spring transitions for the menu\n\t */\n\tconst transitionConfig = {\n\t\tconfig: { duration: state.isOpen ? 300 : 150 },\n\t\tenter: { opacity: 1, transform: 'translateY(0)' },\n\t\tfrom: { opacity: 0, transform: 'translateY(4px)' },\n\t\tleave: { opacity: 0, transform: 'translateY(4px)' }\n\t};\n\n\tconst transitionStatic = {\n\t\tconfig: { duration: 0 },\n\t\tenter: { opacity: 1, transform: 'translateY(0)' }\n\t};\n\n\tconst transitions = useTransition(\n\t\tstate.isOpen,\n\t\tposition === 'static' ? transitionStatic : transitionConfig\n\t);\n\n\tconst menuClasses = classnames(styles['MrlMenu'], 'MrlMenu', {\n\t\t[styles['MrlMenu--submenu']]: isSubMenu,\n\t\t[styles.open]: state.isOpen,\n\t\t[styles['MrlMenu--compact']]: spacing === 'compact',\n\t\t[styles['MrlMenu--static']]: position === 'static',\n\t\t[styles['MrlMenu--internal']]: isInternal,\n\t\t[styles['MrlMenu--scrolling']]: menuScroll.isScrolling,\n\t\t[styles['MrlMenu--ignore']]: position === 'ignore'\n\t});\n\n\tconst positionStyles = isSubMenu\n\t\t? inlineStyles.submenu\n\t\t: position !== 'static'\n\t\t\t? inlineStyles.menu\n\t\t\t: {};\n\n\tconst menuScrollStyles =\n\t\t(menuScroll.maxHeight !== undefined && { maxHeight: menuScroll.maxHeight }) || undefined;\n\n\tconst renderMenu = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{transitions(\n\t\t\t\t\t(style, item) =>\n\t\t\t\t\t\titem && (\n\t\t\t\t\t\t\t<animated.div\n\t\t\t\t\t\t\t\tclassName={menuClasses}\n\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\tstyle={{ ...positionStyles, ...style }}\n\t\t\t\t\t\t\t\tonKeyUp={handleMenuKeyUp}\n\t\t\t\t\t\t\t\tonKeyDown={handleMenuKey}\n\t\t\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\t\t\trole=\"none\"\n\t\t\t\t\t\t\t\t{...remainingProps}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ul ref={listRef} role=\"menu\" style={menuScrollStyles}>\n\t\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</animated.div>\n\t\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t};\n\n\t// For managing and restoring focus to the original menu trigger\n\t// Ensures the triggerRef in context is always the parent triggerRef\n\tconst parentContext = React.useContext(MrlMenuContext);\n\tconst contextTriggerRef = isSubMenu ? parentContext?.triggerRef : triggerRef;\n\n\treturn (\n\t\t<MrlMenuContext.Provider\n\t\t\tvalue={{\n\t\t\t\tcloseMenu,\n\t\t\t\tcloseParent: !isSubMenu ? closeMenu : undefined,\n\t\t\t\ttriggerRef: contextTriggerRef\n\t\t\t}}\n\t\t>\n\t\t\t{isSubMenu || position === 'static' ? (\n\t\t\t\trenderMenu()\n\t\t\t) : (\n\t\t\t\t<MrlPortal layer={portalProps.layer || PORTAL_LAYERS.MENU} {...portalProps}>\n\t\t\t\t\t{renderMenu()}\n\t\t\t\t</MrlPortal>\n\t\t\t)}\n\t\t</MrlMenuContext.Provider>\n\t);\n\t/* eslint-enable */\n}\n\nMrlMenu.componentType = 'Menu';\n"],"names":["MENU_ITEM_SELECTOR","MrlMenu","_ref","_ref$actionState","actionState","actionType","isOpen","_ref$alignment","alignment","children","_ref$closeOnScroll","closeOnScroll","closeParent","customPosition","_ref$clickOutsideEven","clickOutsideEvent","disableArrowOpen","_ref$disableFlipping","disableFlipping","id","_ref$isInternal","isInternal","_ref$isSubMenu","isSubMenu","_ref$spacing","spacing","_ref$menuOffset","menuOffset","_ref$portalProps","portalProps","PORTAL_LAYERS","MENU","name","_ref$position","position","_ref$triggerStopPropa","triggerStopPropagation","onClose","triggerRef","remainingProps","_objectWithoutProperties","_excluded","defaultOpenState","_React$useState","React","useState","_React$useState2","_slicedToArray","state","setState","menuRef","useRef","listRef","_React$useState3","_React$useState4","menuItems","setMenuItems","_React$useState5","_React$useState6","menuRect","setMenuRect","isTriggerDisabled","useCallback","isElementAriaDisabled","current","toggleMenuTrigger","e","preventDefault","prevState","showMenuHover","showMenuTap","hideMenuHover","event","relatedTarget","contains","toggleMenuKey","openMenu","key","closeMenu","shouldCloseParent","arguments","length","undefined","disableClickOutside","useClickOutside","handleMenuKeyUp","actions","includes","handleMenuKey","_menuItems$nextIndex","_menuItems$nextIndex2","_triggerRef$current","currentIndex","findIndex","item","document","activeElement","nextIndex","focus","shiftKey","prevElement","findAdjacentInteractiveElement","nextElement","useEffect","setAttribute","_triggerRef$current2","toString","triggerElement","menuElement","querySelectorAll","scrollableParent","addEventListener","isTouchDevice","getScrollableParent","capture","passive","removeEventListener","forEach","getAttribute","_menuRef$current","foundMenuItems","Array","from","_triggerRef$current3","classList","add","itemStyles","_triggerRef$current4","remove","_menuRef$current2","newRect","getBoundingClientRect","_menuItemToFocus","_menuItemToFocus2","menuItemToFocus","setTimeout","scrollTo","scrollHeight","_menuItemToFocus3","disableMenuScroll","menuScroll","useMenuScroll","disableTriggerPosition","menuPositionStyles","useTriggerPosition","align","isScrolling","subMenuPosition","useSubMenuElementPosition","inlineStyles","menu","left","top","submenu","transitionConfig","config","duration","enter","opacity","transform","leave","transitionStatic","transitions","useTransition","menuClasses","classnames","styles","open","positionStyles","menuScrollStyles","maxHeight","renderMenu","createElement","Fragment","style","animated","div","_extends","className","_objectSpread","onKeyUp","onKeyDown","ref","role","parentContext","useContext","MrlMenuContext","contextTriggerRef","Provider","value","MrlPortal","layer","componentType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuJA,IAAMA,kBAAkB,GAAG,sEAAsE;;AAEjG;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,OAAOA,CAAAC,IAAA,EAqBO;AAAA,EAAA,IAAAC,gBAAA,GAAAD,IAAA,CApB7BE,WAAW;IAAXA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAG;AAAEE,MAAAA,UAAU,EAAE,IAAI;AAAEC,MAAAA,MAAM,EAAE;AAAM,KAAC,GAAAH,gBAAA;IAAAI,cAAA,GAAAL,IAAA,CACjDM,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAA,MAAA,GAAG,QAAQ,GAAAA,cAAA;IACpBE,QAAQ,GAAAP,IAAA,CAARO,QAAQ;IAAAC,kBAAA,GAAAR,IAAA,CACRS,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,kBAAA;IACrBE,WAAW,GAAAV,IAAA,CAAXU,WAAW;IACXC,cAAc,GAAAX,IAAA,CAAdW,cAAc;IAAAC,qBAAA,GAAAZ,IAAA,CACda,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,GAAG,SAAS,GAAAA,qBAAA;IAC7BE,gBAAgB,GAAAd,IAAA,CAAhBc,gBAAgB;IAAAC,oBAAA,GAAAf,IAAA,CAChBgB,eAAe;AAAfA,IAAAA,eAAe,GAAAD,oBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,oBAAA;IACvBE,EAAE,GAAAjB,IAAA,CAAFiB,EAAE;IAAAC,eAAA,GAAAlB,IAAA,CACFmB,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,eAAA;IAAAE,cAAA,GAAApB,IAAA,CAClBqB,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,cAAA;IAAAE,YAAA,GAAAtB,IAAA,CACjBuB,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAA,MAAA,GAAG,SAAS,GAAAA,YAAA;IAAAE,eAAA,GAAAxB,IAAA,CACnByB,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,eAAA;IAAAE,gBAAA,GAAA1B,IAAA,CACf2B,WAAW;IAAXA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAG;AAAET,MAAAA,EAAE,EAAEW,mBAAa,CAACC,IAAI,CAACC;AAAK,KAAC,GAAAJ,gBAAA;IAAAK,aAAA,GAAA/B,IAAA,CAC7CgC,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,aAAA,KAAA,MAAA,GAAG,QAAQ,GAAAA,aAAA;IAAAE,qBAAA,GAAAjC,IAAA,CACnBkC,sBAAsB;AAAtBA,IAAAA,sBAAsB,GAAAD,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAC9BE,OAAO,GAAAnC,IAAA,CAAPmC,OAAO;IACPC,UAAU,GAAApC,IAAA,CAAVoC,UAAU;AACPC,IAAAA,cAAc,GAAAC,iDAAA,CAAAtC,IAAA,EAAAuC,SAAA,CAAA;AAEjB,EAAA,IAAMC,gBAAgB,GAAGR,QAAQ,KAAK,QAAQ,IAAI,KAAK;AAEvD,EAAA,IAAAS,eAAA,GAA0BC,gBAAK,CAACC,QAAQ,CAAC;AACxCxC,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,MAAM,EAAEoC;AACT,KAAgB,CAAC;IAAAI,gBAAA,GAAAC,uCAAA,CAAAJ,eAAA,EAAA,CAAA,CAAA;AAHVK,IAAAA,KAAK,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,QAAQ,GAAAH,gBAAA,CAAA,CAAA,CAAA;AAKtB,EAAA,IAAMI,OAAO,GAAGN,gBAAK,CAACO,MAAM,CAAiB,IAAI,CAAC;AAClD,EAAA,IAAMC,OAAO,GAAGR,gBAAK,CAACO,MAAM,CAAmB,IAAI,CAAC;AACpD,EAAA,IAAAE,gBAAA,GAAkCT,gBAAK,CAACC,QAAQ,CAAsB,EAAE,CAAC;IAAAS,gBAAA,GAAAP,uCAAA,CAAAM,gBAAA,EAAA,CAAA,CAAA;AAAlEE,IAAAA,SAAS,GAAAD,gBAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,YAAY,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAC9B,EAAA,IAAAG,gBAAA,GAAgCb,gBAAK,CAACC,QAAQ,CAAiB,IAAI,CAAC;IAAAa,gBAAA,GAAAX,uCAAA,CAAAU,gBAAA,EAAA,CAAA,CAAA;AAA7DE,IAAAA,QAAQ,GAAAD,gBAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,WAAW,GAAAF,gBAAA,CAAA,CAAA,CAAA;;AAE5B;AACD;AACA;AACA;AACC,EAAA,IAAMG,iBAAiB,GAAGjB,gBAAK,CAACkB,WAAW,CAAC,MAAe;IAC1D,OAAOC,2CAAqB,CAACzB,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAVA,UAAU,CAAE0B,OAAO,CAAC;AAClD,EAAA,CAAC,EAAE,CAAC1B,UAAU,CAAC,CAAC;;AAEhB;AACD;AACA;AACA;AACC,EAAA,IAAM2B,iBAAiB,GAAGrB,gBAAK,CAACkB,WAAW,CACzCI,CAAa,IAAK;IAClB,IAAIL,iBAAiB,EAAE,EAAE;AAEzB,IAAA,IAAIzB,sBAAsB,EAAE;MAC3B+B,6BAAc,CAACD,CAAC,CAAC;AAClB,IAAA;IAEAjB,QAAQ,CAAEmB,SAAS,KAAM;AAAE/D,MAAAA,UAAU,EAAE,OAAO;MAAEC,MAAM,EAAE,CAAC8D,SAAS,CAAC9D;AAAO,KAAC,CAAC,CAAC;AAC9E,EAAA,CAAC,EACD,CAAC8B,sBAAsB,EAAEyB,iBAAiB,CAC3C,CAAC;;AAED;AACD;AACA;AACC,EAAA,IAAMQ,aAAa,GAAGzB,gBAAK,CAACkB,WAAW,CAAC,MAAM;AAC7Cb,IAAAA,QAAQ,CAAC;AAAE5C,MAAAA,UAAU,EAAE,OAAO;AAAEC,MAAAA,MAAM,EAAE;AAAK,KAAC,CAAC;EAChD,CAAC,EAAE,EAAE,CAAC;AAEN,EAAA,IAAMgE,WAAW,GAAG1B,gBAAK,CAACkB,WAAW,CAAC,MAAM;IAC3Cb,QAAQ,CAAEmB,SAAS,KAAM;AAAE/D,MAAAA,UAAU,EAAE,OAAO;MAAEC,MAAM,EAAE,CAAC8D,SAAS,CAAC9D;AAAO,KAAC,CAAC,CAAC;EAC9E,CAAC,EAAE,EAAE,CAAC;AAEN,EAAA,IAAMiE,aAAa,GAAG3B,gBAAK,CAACkB,WAAW,CACrCU,KAAiB,IAAK;AACtB,IAAA,IAAMC,aAAa,GAAGD,KAAK,CAACC,aAAqB;;AAEjD;AACA;AACA,IAAA,IACCnC,UAAU,IACVY,OAAO,CAACc,OAAO,IACf,CAACd,OAAO,CAACc,OAAO,CAACU,QAAQ,CAACD,aAAa,CAAC,IACxCnC,UAAU,CAAC0B,OAAO,IAClB,CAAC1B,UAAU,CAAC0B,OAAO,CAACU,QAAQ,CAACD,aAAa,CAAC,EAC1C;AACDxB,MAAAA,QAAQ,CAAC;AAAE5C,QAAAA,UAAU,EAAE,IAAI;AAAEC,QAAAA,MAAM,EAAE;AAAM,OAAC,CAAC;AAC9C,IAAA;AACD,EAAA,CAAC,EACD,CAACgC,UAAU,CACZ,CAAC;;AAED;AACD;AACA;AACC,EAAA,IAAMqC,aAAa,GAAG/B,gBAAK,CAACkB,WAAW,CACrCI,CAAgB,IAAK;IACrB,IAAMU,QAAQ,GAAGA,MAAM;MACtB,IAAIf,iBAAiB,EAAE,EAAE;AACzBZ,MAAAA,QAAQ,CAAC;QAAE5C,UAAU,EAAE6D,CAAC,CAACW,GAAiB;AAAEvE,QAAAA,MAAM,EAAE;AAAK,OAAC,CAAC;IAC5D,CAAC;AAED,IAAA,IAAI,CAAC0C,KAAK,CAAC1C,MAAM,EAAE;AAClB,MAAA,IAAIiB,SAAS,EAAE;QACd,QAAQ2C,CAAC,CAACW,GAAG;AACZ,UAAA,KAAK,YAAY;AACjB,UAAA,KAAK,OAAO;AACZ,UAAA,KAAK,GAAG;YACPV,6BAAc,CAACD,CAAC,CAAC;AACjBU,YAAAA,QAAQ,EAAE;AACZ;AAEA,QAAA;AACD,MAAA;MAEA,QAAQV,CAAC,CAACW,GAAG;AACZ,QAAA,KAAK,WAAW;AAChB,QAAA,KAAK,SAAS;AACb,UAAA,IAAI,CAAC7D,gBAAgB,IAAI,CAAC6C,iBAAiB,EAAE,EAAE;YAC9CM,6BAAc,CAACD,CAAC,CAAC;AACjBU,YAAAA,QAAQ,EAAE;AACX,UAAA;AACA,UAAA;AACD,QAAA,KAAK,OAAO;AACZ,QAAA,KAAK,GAAG;UACP,IAAIf,iBAAiB,EAAE,EAAE;UACzBM,6BAAc,CAACD,CAAC,CAAC;AACjBU,UAAAA,QAAQ,EAAE;AACZ;AACD,IAAA;AACD,EAAA,CAAC,EACD,CAAC5B,KAAK,CAAC1C,MAAM,EAAEuD,iBAAiB,EAAE7C,gBAAgB,EAAEO,SAAS,CAC9D,CAAC;AAED,EAAA,IAAMuD,SAAS,GAAGlC,gBAAK,CAACkB,WAAW,CAClC,YAA8B;AAAA,IAAA,IAA7BiB,iBAAiB,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI;IACxB,IAAI9C,QAAQ,KAAK,QAAQ,EAAE;;AAE3B;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAA,IAAI6C,iBAAiB,IAAInE,WAAW,EAAEA,WAAW,EAAE;AAEnDqC,IAAAA,QAAQ,CAAC;AAAE5C,MAAAA,UAAU,EAAE,IAAI;AAAEC,MAAAA,MAAM,EAAE;AAAM,KAAC,CAAC;AAC7C+B,IAAAA,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,EAAI;EACZ,CAAC,EACD,CAACH,QAAQ,EAAEtB,WAAW,EAAEyB,OAAO,CAChC,CAAC;;AAED;AACD;AACA;AACA;EACC,IAAM8C,mBAAmB,GAAG,CAACnC,KAAK,CAAC1C,MAAM,IAAI4B,QAAQ,KAAK,QAAQ;EAClEkD,uBAAe,CAAClC,OAAO,EAAEZ,UAAU,EAAEvB,iBAAiB,EAAE+D,SAAS,EAAEK,mBAAmB,CAAC;EAEvF,IAAME,eAAe,GAAInB,CAAsB,IAAK;AACnD,IAAA,IAAMoB,OAAqB,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;IAE5F,IAAIA,OAAO,CAACC,QAAQ,CAACrB,CAAC,CAACW,GAAiB,CAAC,EAAE;MAC1CV,6BAAc,CAACD,CAAC,CAAC;AAClB,IAAA;EACD,CAAC;;AAED;AACD;AACA;AACA;EACC,IAAMsB,aAAa,GAAItB,CAAsB,IAAK;AAAA,IAAA,IAAAuB,oBAAA,EAAAC,qBAAA,EAAAC,mBAAA;AACjD,IAAA,IAAMC,YAAY,GAAGrC,SAAS,CAACsC,SAAS,CAAEC,IAAI,IAAKC,QAAQ,CAACC,aAAa,KAAKF,IAAI,CAAC;AACnF,IAAA,IAAIG,SAAiB;IAErB,IAAIjD,KAAK,CAAC1C,MAAM,EAAE;MACjB,QAAQ4D,CAAC,CAACW,GAAG;AACZ,QAAA,KAAK,WAAW;UACfV,6BAAc,CAACD,CAAC,CAAC;AACjB+B,UAAAA,SAAS,GAAGL,YAAY,GAAGrC,SAAS,CAAC0B,MAAM,GAAG,CAAC,GAAGW,YAAY,GAAG,CAAC,GAAGA,YAAY;AACjF,UAAA,CAAAH,oBAAA,GAAAlC,SAAS,CAAC0C,SAAS,CAAC,MAAA,IAAA,IAAAR,oBAAA,KAAA,MAAA,GAAA,MAAA,GAApBA,oBAAA,CAAsBS,KAAK,EAAE;AAC7B,UAAA;AACD,QAAA,KAAK,SAAS;UACb/B,6BAAc,CAACD,CAAC,CAAC;UACjB+B,SAAS,GAAGL,YAAY,GAAG,CAAC,GAAGA,YAAY,GAAG,CAAC,GAAG,CAAC;AACnD,UAAA,CAAAF,qBAAA,GAAAnC,SAAS,CAAC0C,SAAS,CAAC,MAAA,IAAA,IAAAP,qBAAA,KAAA,MAAA,GAAA,MAAA,GAApBA,qBAAA,CAAsBQ,KAAK,EAAE;AAC7B,UAAA;AACD,QAAA,KAAK,YAAY;AACjB,QAAA,KAAK,WAAW;UACf/B,6BAAc,CAACD,CAAC,CAAC;AACjB,UAAA;AAED,QAAA,KAAK,QAAQ;UACZC,6BAAc,CAACD,CAAC,CAAC;AACjB5B,UAAAA,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAA,CAAAqD,mBAAA,GAAVrD,UAAU,CAAE0B,OAAO,MAAA,IAAA,IAAA2B,mBAAA,KAAA,MAAA,GAAA,MAAA,GAAnBA,mBAAA,CAAqBO,KAAK,EAAE;UAC5BpB,SAAS,CAAC,KAAK,CAAC;AAChB,UAAA;AAED,QAAA,KAAK,KAAK;AACT,UAAA,IAAI,CAACvD,SAAS,IAAIW,QAAQ,KAAK,QAAQ,EAAE;YACxC,IAAIgC,CAAC,CAACiC,QAAQ,EAAE;AACf;cACAhC,6BAAc,CAACD,CAAC,CAAC;AACjB,cAAA,IAAI5B,UAAU,EAAE;AACf,gBAAA,IAAM8D,WAAW,GAAGC,6DAA8B,CAAC/D,UAAU,EAAE,UAAU,CAAC;AAC1E8D,gBAAAA,WAAW,aAAXA,WAAW,KAAA,MAAA,GAAA,MAAA,GAAXA,WAAW,CAAEF,KAAK,EAAE;AACrB,cAAA;AACD,YAAA,CAAC,MAAM;AACN;cACA/B,6BAAc,CAACD,CAAC,CAAC;AACjB,cAAA,IAAI5B,UAAU,EAAE;AACf,gBAAA,IAAMgE,WAAW,GAAGD,6DAA8B,CAAC/D,UAAU,CAAC;AAC9DgE,gBAAAA,WAAW,aAAXA,WAAW,KAAA,MAAA,GAAA,MAAA,GAAXA,WAAW,CAAEJ,KAAK,EAAE;AACrB,cAAA;AACD,YAAA;AAEApB,YAAAA,SAAS,EAAE;AACZ,UAAA;AACA,UAAA;AACF;AACD,IAAA;EACD,CAAC;;AAED;AACD;AACA;;EAEClC,gBAAK,CAAC2D,SAAS,CAAC,MAAM;AACrB,IAAA,IAAIjE,UAAU,KAAA,IAAA,IAAVA,UAAU,eAAVA,UAAU,CAAE0B,OAAO,EAAE;MACxB1B,UAAU,CAAC0B,OAAO,CAACwC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;AACzD,IAAA;AACA;EACD,CAAC,EAAE,EAAE,CAAC;EAEN5D,gBAAK,CAAC2D,SAAS,CAAC,MAAM;IACrB,IAAIrE,QAAQ,KAAK,QAAQ,EAAE;AAC1Be,MAAAA,QAAQ,CAAC;AAAE5C,QAAAA,UAAU,EAAE,OAAO;AAAEC,QAAAA,MAAM,EAAE;AAAK,OAAC,CAAC;AAChD,IAAA;AACD,EAAA,CAAC,EAAE,CAAC4B,QAAQ,CAAC,CAAC;EAEdU,gBAAK,CAAC2D,SAAS,CAAC,MAAM;AAAA,IAAA,IAAAE,oBAAA;IACrBnE,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAA,CAAAmE,oBAAA,GAAVnE,UAAU,CAAE0B,OAAO,MAAA,IAAA,IAAAyC,oBAAA,KAAA,MAAA,GAAA,MAAA,GAAnBA,oBAAA,CAAqBD,YAAY,CAAC,eAAe,EAAExD,KAAK,CAAC1C,MAAM,CAACoG,QAAQ,EAAE,CAAC;AAC3E;AACD,EAAA,CAAC,EAAE,CAAC1D,KAAK,CAAC1C,MAAM,CAAC,CAAC;EAElBsC,gBAAK,CAAC2D,SAAS,CAAC,MAAM;IACrB,IAAI,CAAChF,SAAS,IAAIW,QAAQ,KAAK,QAAQ,EACtCe,QAAQ,CAAC;MAAE5C,UAAU,EAAED,WAAW,CAACC,UAAU;MAAEC,MAAM,EAAEF,WAAW,CAACE;AAAO,KAAC,CAAC;AAC9E,EAAA,CAAC,EAAE,CAACF,WAAW,CAACE,MAAM,EAAEF,WAAW,CAACC,UAAU,EAAEkB,SAAS,EAAEW,QAAQ,CAAC,CAAC;;AAErE;EACAU,gBAAK,CAAC2D,SAAS,CAAC,MAAM;IACrB,IAAMI,cAAc,GAAGrE,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAVA,UAAU,CAAE0B,OAAO;IAC1C,IAAM4C,WAAW,GAAG1D,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAEc,OAAO;IACpC,IAAMT,SAAS,GAAGqD,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,MAAA,GAAA,MAAA,GAAXA,WAAW,CAAEC,gBAAgB,CAAC7G,kBAAkB,CAAC;AAEnE,IAAA,IAAI8G,gBAAsC;AAE1C,IAAA,IAAIH,cAAc,EAAE;AACnBA,MAAAA,cAAc,CAACI,gBAAgB,CAAC,WAAW,EAAE5C,6BAAc,CAAC;MAC5D,IAAI,CAAC5C,SAAS,EAAEoF,cAAc,CAACI,gBAAgB,CAAC,OAAO,EAAE9C,iBAAiB,CAAC;AAC3E0C,MAAAA,cAAc,CAACI,gBAAgB,CAAC,SAAS,EAAEpC,aAAa,CAAC;;AAEzD;AACA,MAAA,IAAIpD,SAAS,EAAE;AACdoF,QAAAA,cAAc,CAACI,gBAAgB,CAAC,WAAW,EAAE1C,aAAa,CAAC;AAC3DsC,QAAAA,cAAc,CAACI,gBAAgB,CAAC,UAAU,EAAExC,aAAa,CAAC;QAE1D,IAAIyC,qBAAa,EAAE,EAAE;AACpBL,UAAAA,cAAc,CAACI,gBAAgB,CAAC,UAAU,EAAEzC,WAAW,CAAC;AACzD,QAAA;AAEA,QAAA,IAAIsC,WAAW,EAAE;AAChBA,UAAAA,WAAW,CAACG,gBAAgB,CAAC,WAAW,EAAE1C,aAAa,CAAC;AACxDuC,UAAAA,WAAW,CAACG,gBAAgB,CAAC,UAAU,EAAExC,aAAa,CAAC;AACxD,QAAA;AACD,MAAA;AAEA,MAAA,IAAI5D,aAAa,EAAE;AAClBmG,QAAAA,gBAAgB,GAAGG,uCAAmB,CAACN,cAAc,CAAC;AACtD,QAAA,IAAIG,gBAAgB,EAAE;UACrBA,gBAAgB,CAACC,gBAAgB,CAAC,QAAQ,EAAE,MAAMjC,SAAS,EAAE,EAAE;AAC9DoC,YAAAA,OAAO,EAAE,IAAI;AACbC,YAAAA,OAAO,EAAE;AACV,WAAC,CAAC;AACH,QAAA;AACD,MAAA;AAEA,MAAA,OAAO,MAAM;AACZR,QAAAA,cAAc,CAACS,mBAAmB,CAAC,WAAW,EAAEjD,6BAAc,CAAC;QAC/D,IAAI,CAAC5C,SAAS,EAAEoF,cAAc,CAACS,mBAAmB,CAAC,OAAO,EAAEnD,iBAAiB,CAAC;AAC9E0C,QAAAA,cAAc,CAACS,mBAAmB,CAAC,SAAS,EAAEzC,aAAa,CAAC;AAE5D,QAAA,IAAIpB,SAAS,EAAE;AACdA,UAAAA,SAAS,CAAC8D,OAAO,CAAEvB,IAAa,IAAK;AACpC,YAAA,IAAI,CAACA,IAAI,CAACwB,YAAY,CAAC,eAAe,CAAC,EAAE;cACxCxB,IAAI,CAACsB,mBAAmB,CAAC,WAAW,EAAE,MAAMtC,SAAS,EAAE,CAAC;AACzD,YAAA;AACD,UAAA,CAAC,CAAC;AACH,QAAA;AAEA,QAAA,IAAIvD,SAAS,EAAE;AACdoF,UAAAA,cAAc,CAACS,mBAAmB,CAAC,WAAW,EAAE/C,aAAa,CAAC;AAC9DsC,UAAAA,cAAc,CAACS,mBAAmB,CAAC,UAAU,EAAE7C,aAAa,CAAC;UAE7D,IAAIyC,qBAAa,EAAE,EAAE;AACpBL,YAAAA,cAAc,CAACS,mBAAmB,CAAC,YAAY,EAAE/C,aAAa,CAAC;AAChE,UAAA;AAEA,UAAA,IAAIuC,WAAW,EAAE;AAChBA,YAAAA,WAAW,CAACQ,mBAAmB,CAAC,WAAW,EAAE/C,aAAa,CAAC;AAC3DuC,YAAAA,WAAW,CAACQ,mBAAmB,CAAC,UAAU,EAAE7C,aAAa,CAAC;AAC3D,UAAA;AACD,QAAA;QAEA,IAAI5D,aAAa,IAAImG,gBAAgB,EAAE;UACtCA,gBAAgB,CAACM,mBAAmB,CAAC,QAAQ,EAAE,MAAMtC,SAAS,EAAE,CAAC;AAClE,QAAA;MACD,CAAC;AACF,IAAA;EACD,CAAC,EAAE,CACFnE,aAAa,EACbY,SAAS,EACTe,UAAU,EACV2B,iBAAiB,EACjBU,aAAa,EACbN,aAAa,EACbE,aAAa,EACbO,SAAS,EACTR,WAAW,CACX,CAAC;;AAEF;AACA;AACA;AACA;EACA1B,gBAAK,CAAC2D,SAAS,CAAC,MAAM;IACrB,IAAIvD,KAAK,CAAC1C,MAAM,EAAE;AAAA,MAAA,IAAAiH,gBAAA;MACjB,IAAMC,cAAc,GAAGC,KAAK,CAACC,IAAI,CAChC,CAAA,CAAAH,gBAAA,GAAArE,OAAO,CAACc,OAAO,MAAA,IAAA,IAAAuD,gBAAA,KAAA,MAAA,GAAA,MAAA,GAAfA,gBAAA,CAAiBV,gBAAgB,CAAC7G,kBAAkB,CAAC,KAAI,EAC1D,CAAwB;MAExBwD,YAAY,CAACgE,cAAc,CAAC;AAC7B,IAAA;AAEA,IAAA,IAAIxE,KAAK,CAAC1C,MAAM,IAAIiB,SAAS,EAAE;AAAA,MAAA,IAAAoG,oBAAA;MAC9BrF,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAA,CAAAqF,oBAAA,GAAVrF,UAAU,CAAE0B,OAAO,MAAA,IAAA,IAAA2D,oBAAA,uBAAnBA,oBAAA,CAAqBC,SAAS,CAACC,GAAG,CAACC,0BAAU,CAAC,gCAAgC,CAAC,CAAC;IACjF,CAAC,MAAM,IAAI,CAAC9E,KAAK,CAAC1C,MAAM,IAAIiB,SAAS,EAAE;AAAA,MAAA,IAAAwG,oBAAA;MACtCzF,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAA,CAAAyF,oBAAA,GAAVzF,UAAU,CAAE0B,OAAO,MAAA,IAAA,IAAA+D,oBAAA,uBAAnBA,oBAAA,CAAqBH,SAAS,CAACI,MAAM,CAACF,0BAAU,CAAC,gCAAgC,CAAC,CAAC;AACpF,IAAA;;AAEA;AACA;AACA;AACA,IAAA,IAAI,CAACnE,QAAQ,IAAIT,OAAO,CAACc,OAAO,EAAE;AAAA,MAAA,IAAAiE,iBAAA;AACjC,MAAA,IAAMC,OAAO,GAAA,CAAAD,iBAAA,GAAG/E,OAAO,CAACc,OAAO,MAAA,IAAA,IAAAiE,iBAAA,KAAA,MAAA,GAAA,MAAA,GAAfA,iBAAA,CAAiBE,qBAAqB,EAAE;AACxDvE,MAAAA,WAAW,CAACsE,OAAO,IAAI,IAAI,CAAC;AAC7B,IAAA;;AAEA;EACD,CAAC,EAAE,CAAClF,KAAK,CAAC1C,MAAM,EAAEqD,QAAQ,EAAEpC,SAAS,CAAC,CAAC;;AAEvC;AACD;AACA;EACCqB,gBAAK,CAAC2D,SAAS,CAAC,MAAM;IAAA,IAAA6B,gBAAA,EAAAC,iBAAA;AACrB,IAAA,IAAI9E,SAAS,CAAC0B,MAAM,GAAG,CAAC,EAAE;AACzB,MAAA,IAAIqD,eAAe;MAEnB,QAAQtF,KAAK,CAAC3C,UAAU;AACvB,QAAA,KAAK,OAAO;AACZ,QAAA,KAAK,WAAW;AAChB,QAAA,KAAK,GAAG;AACPiI,UAAAA,eAAe,GAAG/E,SAAS,CAAC,CAAC,CAAC;UAC9B,CAAA6E,gBAAA,GAAAE,eAAe,MAAA,IAAA,IAAAF,gBAAA,uBAAfA,gBAAA,CAAiBlC,KAAK,EAAE;AACxB,UAAA;AACD,QAAA,KAAK,SAAS;UACboC,eAAe,GAAG/E,SAAS,CAACA,SAAS,CAAC0B,MAAM,GAAG,CAAC,CAAC;UACjD,CAAAoD,iBAAA,GAAAC,eAAe,MAAA,IAAA,IAAAD,iBAAA,uBAAfA,iBAAA,CAAiBnC,KAAK,EAAE;;AAExB;AACA;AACA;AACAqC,UAAAA,UAAU,CAAC,MAAM;YAChB,IAAInF,OAAO,CAACY,OAAO,EAAE;AACpBZ,cAAAA,OAAO,CAACY,OAAO,CAACwE,QAAQ,CAAC,CAAC,EAAEpF,OAAO,CAACY,OAAO,CAACyE,YAAY,CAAC;AAC1D,YAAA;UACD,CAAC,EAAE,EAAE,CAAC;AACR;AAEA,MAAA,IAAIlH,SAAS,IAAIyB,KAAK,CAAC3C,UAAU,KAAK,YAAY,EAAE;AAAA,QAAA,IAAAqI,iBAAA;AACnDJ,QAAAA,eAAe,GAAG/E,SAAS,CAAC,CAAC,CAAC;QAC9B,CAAAmF,iBAAA,GAAAJ,eAAe,MAAA,IAAA,IAAAI,iBAAA,uBAAfA,iBAAA,CAAiBxC,KAAK,EAAE;AACzB,MAAA;AACD,IAAA;EACD,CAAC,EAAE,CAAC3E,SAAS,EAAEgC,SAAS,EAAEP,KAAK,CAAC3C,UAAU,CAAC,CAAC;;AAE5C;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACC,EAAA,IAAMsI,iBAAiB,GACtBpH,SAAS,IAAI,CAACyB,KAAK,CAAC1C,MAAM,IAAI4B,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAK,QAAQ;;AAE7E;AACD;AACA;AACA;AACC,EAAA,IAAM0G,UAAU,GAAGC,2BAAa,CAC/BvG,UAAU,EACVc,OAAO,EACPlB,QAAQ,EACRP,UAAU,EACVqB,KAAK,CAAC1C,MAAM,EACZqI,iBACD,CAAC;;AAED;AACD;AACA;AACA;AACA;EACC,IAAMG,sBAAsB,GAAGvH,SAAS,IAAI,CAACyB,KAAK,CAAC1C,MAAM,IAAI4B,QAAQ,KAAK,QAAQ;AAClF,EAAA,IAAM6G,kBAAkB,GAAGC,0BAAkB,CAC5C1G,UAAU,EACVY,OAAO,EACP;AACC+F,IAAAA,KAAK,EAAEzI,SAAS;AAChBK,IAAAA,cAAc,EAAEA,cAAc;AAC9BqB,IAAAA,QAAQ,EAAEA;AACX,GAAC,EACDc,KAAK,CAAC1C,MAAM,EACZqB,UAAU,EACVmH,sBAAsB,EACtB5H,eAAe,IAAI0H,UAAU,CAACM,WAC/B,CAAC;;AAED;AACD;AACA;AACA;AACA;AACC,EAAA,IAAMC,eAAe,GAAGC,mDAAyB,CAChD9G,UAAU,EACVY,OAAO,EACP3B,SAAS,EACTyB,KAAK,CAAC1C,MAAM,EACZqD,QAAQ;AACR;AACA,EAAA,CAACpC,SACF,CAAC;AAED,EAAA,IAAM8H,YAAY,GAAG;AACpBC,IAAAA,IAAI,EAAE;MACLC,IAAI,EAAER,kBAAkB,CAACQ,IAAI;AAC7BrH,MAAAA,QAAQ,EAAE,OAAgB;MAC1BsH,GAAG,EAAET,kBAAkB,CAACS;KACxB;AACDC,IAAAA,OAAO,EAAE;MACRF,IAAI,EAAEJ,eAAe,CAACI,IAAI;MAC1BC,GAAG,EAAEL,eAAe,CAACK;AACtB;GACA;;AAED;AACD;AACA;AACC,EAAA,IAAME,gBAAgB,GAAG;AACxBC,IAAAA,MAAM,EAAE;AAAEC,MAAAA,QAAQ,EAAE5G,KAAK,CAAC1C,MAAM,GAAG,GAAG,GAAG;KAAK;AAC9CuJ,IAAAA,KAAK,EAAE;AAAEC,MAAAA,OAAO,EAAE,CAAC;AAAEC,MAAAA,SAAS,EAAE;KAAiB;AACjDrC,IAAAA,IAAI,EAAE;AAAEoC,MAAAA,OAAO,EAAE,CAAC;AAAEC,MAAAA,SAAS,EAAE;KAAmB;AAClDC,IAAAA,KAAK,EAAE;AAAEF,MAAAA,OAAO,EAAE,CAAC;AAAEC,MAAAA,SAAS,EAAE;AAAkB;GAClD;AAED,EAAA,IAAME,gBAAgB,GAAG;AACxBN,IAAAA,MAAM,EAAE;AAAEC,MAAAA,QAAQ,EAAE;KAAG;AACvBC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,OAAO,EAAE,CAAC;AAAEC,MAAAA,SAAS,EAAE;AAAgB;GAChD;AAED,EAAA,IAAMG,WAAW,GAAGC,iBAAa,CAChCnH,KAAK,CAAC1C,MAAM,EACZ4B,QAAQ,KAAK,QAAQ,GAAG+H,gBAAgB,GAAGP,gBAC5C,CAAC;EAED,IAAMU,WAAW,GAAGC,2BAAU,CAACC,sBAAM,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE;AAC5D,IAAA,CAACA,sBAAM,CAAC,kBAAkB,CAAC,GAAG/I,SAAS;AACvC,IAAA,CAAC+I,sBAAM,CAACC,IAAI,GAAGvH,KAAK,CAAC1C,MAAM;AAC3B,IAAA,CAACgK,sBAAM,CAAC,kBAAkB,CAAC,GAAG7I,OAAO,KAAK,SAAS;AACnD,IAAA,CAAC6I,sBAAM,CAAC,iBAAiB,CAAC,GAAGpI,QAAQ,KAAK,QAAQ;AAClD,IAAA,CAACoI,sBAAM,CAAC,mBAAmB,CAAC,GAAGjJ,UAAU;AACzC,IAAA,CAACiJ,sBAAM,CAAC,oBAAoB,CAAC,GAAG1B,UAAU,CAACM,WAAW;AACtD,IAAA,CAACoB,sBAAM,CAAC,iBAAiB,CAAC,GAAGpI,QAAQ,KAAK;AAC3C,GAAC,CAAC;AAEF,EAAA,IAAMsI,cAAc,GAAGjJ,SAAS,GAC7B8H,YAAY,CAACI,OAAO,GACpBvH,QAAQ,KAAK,QAAQ,GACpBmH,YAAY,CAACC,IAAI,GACjB,EAAE;AAEN,EAAA,IAAMmB,gBAAgB,GACpB7B,UAAU,CAAC8B,SAAS,KAAKxF,SAAS,IAAI;IAAEwF,SAAS,EAAE9B,UAAU,CAAC8B;AAAU,GAAC,IAAKxF,SAAS;EAEzF,IAAMyF,UAAU,GAAGA,MAAM;IACxB,oBACC/H,gBAAA,CAAAgI,aAAA,CAAAhI,gBAAA,CAAAiI,QAAA,EAAA,IAAA,EACEX,WAAW,CACX,CAACY,KAAK,EAAEhF,IAAI,KACXA,IAAI,iBACHlD,gBAAA,CAAAgI,aAAA,CAACG,YAAQ,CAACC,GAAG,EAAAC,iCAAA,CAAA;AACZC,MAAAA,SAAS,EAAEd,WAAY;AACvBjJ,MAAAA,EAAE,EAAEA,EAAG;MACP2J,KAAK,EAAAK,uCAAA,CAAAA,uCAAA,KAAOX,cAAc,CAAA,EAAKM,KAAK,CAAG;AACvCM,MAAAA,OAAO,EAAE/F,eAAgB;AACzBgG,MAAAA,SAAS,EAAE7F,aAAc;AACzB8F,MAAAA,GAAG,EAAEpI,OAAQ;AACbqI,MAAAA,IAAI,EAAC;AAAM,KAAA,EACPhJ,cAAc,CAAA,eAElBK,gBAAA,CAAAgI,aAAA,CAAA,IAAA,EAAA;AAAIU,MAAAA,GAAG,EAAElI,OAAQ;AAACmI,MAAAA,IAAI,EAAC,MAAM;AAACT,MAAAA,KAAK,EAAEL;AAAiB,KAAA,EACpDhK,QACE,CACS,CAEjB,CACC,CAAC;EAEL,CAAC;;AAED;AACA;AACA,EAAA,IAAM+K,aAAa,GAAG5I,gBAAK,CAAC6I,UAAU,CAACC,6BAAc,CAAC;AACtD,EAAA,IAAMC,iBAAiB,GAAGpK,SAAS,GAAGiK,aAAa,KAAA,IAAA,IAAbA,aAAa,KAAA,MAAA,GAAA,MAAA,GAAbA,aAAa,CAAElJ,UAAU,GAAGA,UAAU;AAE5E,EAAA,oBACCM,gBAAA,CAAAgI,aAAA,CAACc,6BAAc,CAACE,QAAQ,EAAA;AACvBC,IAAAA,KAAK,EAAE;MACN/G,SAAS;AACTlE,MAAAA,WAAW,EAAE,CAACW,SAAS,GAAGuD,SAAS,GAAGI,SAAS;AAC/C5C,MAAAA,UAAU,EAAEqJ;AACb;AAAE,GAAA,EAEDpK,SAAS,IAAIW,QAAQ,KAAK,QAAQ,GAClCyI,UAAU,EAAE,gBAEZ/H,gBAAA,CAAAgI,aAAA,CAACkB,mBAAS,EAAAb,iCAAA,CAAA;AAACc,IAAAA,KAAK,EAAElK,WAAW,CAACkK,KAAK,IAAIjK,mBAAa,CAACC;AAAK,GAAA,EAAKF,WAAW,CAAA,EACxE8I,UAAU,EACD,CAEY,CAAC;AAE3B;AACD;AAEA1K,OAAO,CAAC+L,aAAa,GAAG,MAAM;;;;"}
1
+ {"version":3,"file":"MrlMenu.js","sources":["../../../../../src/components/menu/MrlMenu/MrlMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MrlPortal, PortalProps } from '../../../components';\nimport { useTriggerPosition } from '../../../hooks/useTriggerPosition';\nimport { useClickOutside } from '../../../hooks/useClickOutside';\nimport { useSubMenuElementPosition } from '../hooks/useSubMenuElementPosition';\nimport {\n\tMenuPosition,\n\tMenuAlignment,\n\tActionState,\n\tActionType,\n\tCustomMenuPosition\n} from '../constants';\nimport { PORTAL_LAYERS } from '../../../utils/layers';\nimport {\n\tfindAdjacentInteractiveElement,\n\tpreventDefault,\n\tisElementAriaDisabled\n} from '../../../utils';\nimport classnames from 'classnames';\nimport { MrlMenuContext } from '../context/MrlMenuContext';\nimport styles from './MrlMenu.module.scss';\nimport itemStyles from '../MrlMenuItem/MrlMenuItem.module.scss';\nimport { useTransition, animated } from '@react-spring/web';\nimport { isTouchDevice } from '../../../utils/isTouch';\nimport { getScrollableParent } from '../utilities/get-scrollable-parent';\nimport { useMenuScroll } from '../hooks/useMenuScroll';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\nexport interface MrlMenuProps {\n\t/** Custom position for the menu */\n\tcustomPosition?: CustomMenuPosition;\n\n\t/** Children to be rendered within the menu component*/\n\tchildren: React.ReactNode;\n\n\t/** Event to close the menu */\n\tclickOutsideEvent?: 'mousedown' | 'mouseup' | 'click';\n\n\t/**\n\t * Enables closing the menu when scrolling. Default is false.\n\t *\n\t */\n\tcloseOnScroll?: boolean;\n\n\t/**\n\t * Private closeParent prop for use with MrlMenuItem\n\t *\n\t * !!! Please do not use this prop directly, it is only used internally by MrlMenuItem !!!\n\t * @private\n\t */\n\tcloseParent?: () => void;\n\n\t/**\n\t * Disable arrows from opening the menu\n\t * - This is useful when you want to disable the default browser behavior of opening a menu on arrow down.\n\t *\n\t * Example usage: the menu is within a vertical toolbar and you want to use the arrow keys to navigate the toolbar.\n\t * By using this prop you can disable the arrow key open/close so that navigating the toolbar does not conflict\n\t * with opening/closing the menu.\n\t */\n\tdisableArrowOpen?: boolean;\n\n\t/**\n\t * Disable flipping of the menu when it goes off the screen\n\t * @default false\n\t */\n\tdisableFlipping?: boolean;\n\n\t/** Unique identifier for the menu */\n\tid?: string;\n\n\t/**\n\t * Use when the menu is embedded within another component\n\t * Removes the following styles:\n\t * - padding on the menu\n\t * - drop shadow and border\n\t * @default false\n\t */\n\tisInternal?: boolean;\n\n\t/**\n\t * Private isSubMenu prop for use with MrlMenuItem\n\t *\n\t * !!! Please do not use this prop directly, it is only used internally by MrlMenuItem !!!\n\t * @private\n\t */\n\tisSubMenu?: boolean;\n\n\t/**\n\t * spacing of menu\n\t * - compact has less padding\n\t * @default 'default'\n\t */\n\tspacing?: 'default' | 'compact';\n\n\t/**\n\t * Offset of the menu from the trigger element in pixels\n\t * @default 10px\n\t */\n\tmenuOffset?: number;\n\n\t/**\n\t * Configuration for the portal component\n\t */\n\tportalProps?: Omit<PortalProps, 'children'>;\n\n\t/**\n\t * Horizontal and vertical alignment of the menu relative to the trigger element\n\t * - position 'left', 'right', 'top', 'bottom' position relative to the trigger\n\t * - position 'static' renders the menu in place, not using the portal\n\t * - position 'ignore' will not position the menu, allowing you to use the customPosition prop to position the element\n\t * @default 'bottom'\n\t */\n\tposition?: MenuPosition;\n\n\t/**\n\t * Set initial state of menu\n\t * @default { actionType: null, isOpen: false }\n\t */\n\tactionState?: ActionState;\n\n\t/**\n\t * Reference to the DOM element that triggers this menu.\n\t */\n\ttriggerRef?: React.RefObject<HTMLButtonElement>;\n\n\t/**\n\t * Trigger stop propagation on click\n\t *\n\t * In some instances we may want the trigger element to stop propogation to the\n\t * rest of the DOM. Use this flag to enable and disable it.\n\t * @default false\n\t */\n\ttriggerStopPropagation?: boolean;\n\n\t/**\n\t * Vertical and horizontal alignment of the menu relative to the position of the menu with the trigger\n\t * - 'left' and 'right' work with position 'top' and 'bottom'\n\t * - 'top' and 'bottom' work with position 'left' and 'right'\n\t * - 'center' works with all positions\n\t *\n\t * This does not impact submenus\n\t */\n\talignment?: MenuAlignment;\n\n\t/**\n\t * Callback to be called when the menu is closed\n\t * @param type - type of close event\n\t */\n\tonClose?: (type?: string) => void;\n\n\t/**\n\t * Enables interaction tracking for this menu. Provide a stable, non-PII id\n\t * (e.g. 'mural-context-menu'). When omitted, the menu emits no analytics.\n\t */\n\teventId?: string;\n}\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]';\n\n/**\n * MrlMenu component\n *\n * Renders a menu component with alignment relative to a trigger element\n * @param {MrlMenuProps} props - The props for the MrlMenu component\n * @returns {Element} - rendered MrlMenu component\n */\nexport function MrlMenu({\n\tactionState = { actionType: null, isOpen: false },\n\talignment = 'center',\n\tchildren,\n\tcloseOnScroll = false,\n\tcloseParent,\n\tcustomPosition,\n\tclickOutsideEvent = 'mouseup',\n\tdisableArrowOpen,\n\tdisableFlipping = false,\n\tid,\n\tisInternal = false,\n\tisSubMenu = false,\n\tspacing = 'default',\n\tmenuOffset = 10,\n\tportalProps = { id: PORTAL_LAYERS.MENU.name },\n\tposition = 'bottom',\n\ttriggerStopPropagation = false,\n\tonClose,\n\teventId,\n\ttriggerRef,\n\t...remainingProps\n}: MrlMenuProps): JSX.Element {\n\tconst defaultOpenState = position === 'static' || false;\n\n\tconst [state, setState] = React.useState({\n\t\tactionType: null,\n\t\tisOpen: defaultOpenState\n\t} as ActionState);\n\n\tconst trackInteraction = useMrlTrackInteraction('MrlMenu', eventId);\n\t// the menu opens and closes from several paths (click, keyboard, hover, click outside),\n\t// so open/close is emitted from the resulting state rather than each individual handler.\n\tconst wasOpenRef = React.useRef(defaultOpenState);\n\n\tReact.useEffect(() => {\n\t\tif (wasOpenRef.current === state.isOpen) return;\n\n\t\twasOpenRef.current = state.isOpen;\n\n\t\ttrackInteraction({\n\t\t\taction: state.isOpen ? 'open' : 'close',\n\t\t\tmetadata: { isSubMenu, trigger: state.actionType ?? 'unknown' },\n\t\t\tvariant: position\n\t\t});\n\t}, [state.isOpen, state.actionType, isSubMenu, position, trackInteraction]);\n\n\tconst menuRef = React.useRef<HTMLDivElement>(null);\n\tconst listRef = React.useRef<HTMLUListElement>(null);\n\tconst [menuItems, setMenuItems] = React.useState<HTMLButtonElement[]>([]);\n\tconst [menuRect, setMenuRect] = React.useState<DOMRect | null>(null);\n\n\t/**\n\t * Checks if the trigger element is disabled\n\t * @returns {boolean} - true if the trigger element is disabled, false otherwise\n\t */\n\tconst isTriggerDisabled = React.useCallback((): boolean => {\n\t\treturn isElementAriaDisabled(triggerRef?.current);\n\t}, [triggerRef]);\n\n\t/**\n\t * Sets up trigger event listeners to open and close the menu\n\t * @param e - mouse event\n\t */\n\tconst toggleMenuTrigger = React.useCallback(\n\t\t(e: MouseEvent) => {\n\t\t\tif (isTriggerDisabled()) return;\n\n\t\t\tif (triggerStopPropagation) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\n\t\t\tsetState((prevState) => ({ actionType: 'click', isOpen: !prevState.isOpen }));\n\t\t},\n\t\t[triggerStopPropagation, isTriggerDisabled]\n\t);\n\n\t/**\n\t * Used to display the menu when hovering over a menu item that has a submenu\n\t */\n\tconst showMenuHover = React.useCallback(() => {\n\t\tsetState({ actionType: 'click', isOpen: true });\n\t}, []);\n\n\tconst showMenuTap = React.useCallback(() => {\n\t\tsetState((prevState) => ({ actionType: 'click', isOpen: !prevState.isOpen }));\n\t}, []);\n\n\tconst hideMenuHover = React.useCallback(\n\t\t(event: MouseEvent) => {\n\t\t\tconst relatedTarget = event.relatedTarget as Node;\n\n\t\t\t// If the related target is not a child of the menu, close the menu\n\t\t\t// This prevents the menu from closing when hovering over a submenu item or trigger\n\t\t\tif (\n\t\t\t\ttriggerRef &&\n\t\t\t\tmenuRef.current &&\n\t\t\t\t!menuRef.current.contains(relatedTarget) &&\n\t\t\t\ttriggerRef.current &&\n\t\t\t\t!triggerRef.current.contains(relatedTarget)\n\t\t\t) {\n\t\t\t\tsetState({ actionType: null, isOpen: false });\n\t\t\t}\n\t\t},\n\t\t[triggerRef]\n\t);\n\n\t/**\n\t * Sets up trigger event listeners to open and close the menu with a keyboard\n\t */\n\tconst toggleMenuKey = React.useCallback(\n\t\t(e: KeyboardEvent) => {\n\t\t\tconst openMenu = () => {\n\t\t\t\tif (isTriggerDisabled()) return;\n\t\t\t\tsetState({ actionType: e.key as ActionType, isOpen: true });\n\t\t\t};\n\n\t\t\tif (!state.isOpen) {\n\t\t\t\tif (isSubMenu) {\n\t\t\t\t\tswitch (e.key) {\n\t\t\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\t\tcase 'Enter':\n\t\t\t\t\t\tcase ' ':\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\topenMenu();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tswitch (e.key) {\n\t\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\t\tif (!disableArrowOpen && !isTriggerDisabled()) {\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\topenMenu();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Enter':\n\t\t\t\t\tcase ' ':\n\t\t\t\t\t\tif (isTriggerDisabled()) return;\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\topenMenu();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[state.isOpen, isTriggerDisabled, disableArrowOpen, isSubMenu]\n\t);\n\n\tconst closeMenu = React.useCallback(\n\t\t(shouldCloseParent = true) => {\n\t\t\tif (position === 'static') return;\n\n\t\t\t/**\n\t\t\t * What is closeParent?\n\t\t\t *\n\t\t\t * It is passed from the context provider to the MenuItem (which helps render our submenus)\n\t\t\t * When we render the submenu, we pass the closeMenu function as \"closeParent\" to the submenu.\n\t\t\t * This allows us to trigger closing the parent menu when the submenu is closed. And that's\n\t\t\t * what this call is for.\n\t\t\t */\n\t\t\tif (shouldCloseParent && closeParent) closeParent();\n\n\t\t\tsetState({ actionType: null, isOpen: false });\n\t\t\tonClose?.();\n\t\t},\n\t\t[position, closeParent, onClose]\n\t);\n\n\t/**\n\t * Click outside to dismiss the menu\n\t * @param e\n\t */\n\tconst disableClickOutside = !state.isOpen || position === 'static';\n\tuseClickOutside(menuRef, triggerRef, clickOutsideEvent, closeMenu, disableClickOutside);\n\n\tconst handleMenuKeyUp = (e: React.KeyboardEvent) => {\n\t\tconst actions: ActionType[] = ['ArrowUp', 'ArrowDown', 'ArrowRight', 'Enter', 'Escape', ' '];\n\n\t\tif (actions.includes(e.key as ActionType)) {\n\t\t\tpreventDefault(e);\n\t\t}\n\t};\n\n\t/**\n\t * Focus management when someone is using a keyboard to navigate the menu\n\t * @param e - keyboard event\n\t */\n\tconst handleMenuKey = (e: React.KeyboardEvent) => {\n\t\tconst currentIndex = menuItems.findIndex((item) => document.activeElement === item);\n\t\tlet nextIndex: number;\n\n\t\tif (state.isOpen) {\n\t\t\tswitch (e.key) {\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tnextIndex = currentIndex < menuItems.length - 1 ? currentIndex + 1 : currentIndex;\n\t\t\t\t\tmenuItems[nextIndex]?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tnextIndex = currentIndex > 0 ? currentIndex - 1 : 0;\n\t\t\t\t\tmenuItems[nextIndex]?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\ttriggerRef?.current?.focus();\n\t\t\t\t\tcloseMenu(false);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Tab':\n\t\t\t\t\tif (!isSubMenu && position !== 'static') {\n\t\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\t\t// Handle shift + tab: move focus to the previous item\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tif (triggerRef) {\n\t\t\t\t\t\t\t\tconst prevElement = findAdjacentInteractiveElement(triggerRef, 'previous');\n\t\t\t\t\t\t\t\tprevElement?.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Regular tab: close the menu or move to the next item\n\t\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\t\tif (triggerRef) {\n\t\t\t\t\t\t\t\tconst nextElement = findAdjacentInteractiveElement(triggerRef);\n\t\t\t\t\t\t\t\tnextElement?.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcloseMenu();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * useEffect hooks to handle menu state changes\n\t */\n\n\tReact.useEffect(() => {\n\t\tif (triggerRef?.current) {\n\t\t\ttriggerRef.current.setAttribute('aria-haspopup', 'menu');\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tReact.useEffect(() => {\n\t\tif (position === 'static') {\n\t\t\tsetState({ actionType: 'click', isOpen: true });\n\t\t}\n\t}, [position]);\n\n\tReact.useEffect(() => {\n\t\ttriggerRef?.current?.setAttribute('aria-expanded', state.isOpen.toString());\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen]);\n\n\tReact.useEffect(() => {\n\t\tif (!isSubMenu && position !== 'static')\n\t\t\tsetState({ actionType: actionState.actionType, isOpen: actionState.isOpen });\n\t}, [actionState.isOpen, actionState.actionType, isSubMenu, position]);\n\n\t// setup event handlers for mouse, keyboard, and scroll interactions\n\tReact.useEffect(() => {\n\t\tconst triggerElement = triggerRef?.current;\n\t\tconst menuElement = menuRef?.current;\n\t\tconst menuItems = menuElement?.querySelectorAll(MENU_ITEM_SELECTOR);\n\n\t\tlet scrollableParent: HTMLElement | Window;\n\n\t\tif (triggerElement) {\n\t\t\ttriggerElement.addEventListener('mousedown', preventDefault);\n\t\t\tif (!isSubMenu) triggerElement.addEventListener('click', toggleMenuTrigger);\n\t\t\ttriggerElement.addEventListener('keydown', toggleMenuKey);\n\n\t\t\t// Setup event listeners for when the menu is a submenu\n\t\t\tif (isSubMenu) {\n\t\t\t\ttriggerElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\ttriggerElement.addEventListener('mouseout', hideMenuHover);\n\n\t\t\t\tif (isTouchDevice()) {\n\t\t\t\t\ttriggerElement.addEventListener('touchend', showMenuTap);\n\t\t\t\t}\n\n\t\t\t\tif (menuElement) {\n\t\t\t\t\tmenuElement.addEventListener('mouseover', showMenuHover);\n\t\t\t\t\tmenuElement.addEventListener('mouseout', hideMenuHover);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (closeOnScroll) {\n\t\t\t\tscrollableParent = getScrollableParent(triggerElement);\n\t\t\t\tif (scrollableParent) {\n\t\t\t\t\tscrollableParent.addEventListener('scroll', () => closeMenu(), {\n\t\t\t\t\t\tcapture: true,\n\t\t\t\t\t\tpassive: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\ttriggerElement.removeEventListener('mousedown', preventDefault);\n\t\t\t\tif (!isSubMenu) triggerElement.removeEventListener('click', toggleMenuTrigger);\n\t\t\t\ttriggerElement.removeEventListener('keydown', toggleMenuKey);\n\n\t\t\t\tif (menuItems) {\n\t\t\t\t\tmenuItems.forEach((item: Element) => {\n\t\t\t\t\t\tif (!item.getAttribute('aria-haspopup')) {\n\t\t\t\t\t\t\titem.removeEventListener('mousedown', () => closeMenu());\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (isSubMenu) {\n\t\t\t\t\ttriggerElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\ttriggerElement.removeEventListener('mouseout', hideMenuHover);\n\n\t\t\t\t\tif (isTouchDevice()) {\n\t\t\t\t\t\ttriggerElement.removeEventListener('touchstart', showMenuHover);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (menuElement) {\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseover', showMenuHover);\n\t\t\t\t\t\tmenuElement.removeEventListener('mouseout', hideMenuHover);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (closeOnScroll && scrollableParent) {\n\t\t\t\t\tscrollableParent.removeEventListener('scroll', () => closeMenu());\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}, [\n\t\tcloseOnScroll,\n\t\tisSubMenu,\n\t\ttriggerRef,\n\t\ttoggleMenuTrigger,\n\t\ttoggleMenuKey,\n\t\tshowMenuHover,\n\t\thideMenuHover,\n\t\tcloseMenu,\n\t\tshowMenuTap\n\t]);\n\n\t// This use effect handles a few things when we open the menu:\n\t// - making sure that the menu component is aware of it's menu items\n\t// - adding a class to the trigger element when the submenu is open for styling\n\t// - storing the menu rect in state for positioning calculations\n\tReact.useEffect(() => {\n\t\tif (state.isOpen) {\n\t\t\tconst foundMenuItems = Array.from(\n\t\t\t\tmenuRef.current?.querySelectorAll(MENU_ITEM_SELECTOR) || []\n\t\t\t) as HTMLButtonElement[];\n\n\t\t\tsetMenuItems(foundMenuItems);\n\t\t}\n\n\t\tif (state.isOpen && isSubMenu) {\n\t\t\ttriggerRef?.current?.classList.add(itemStyles['MrlMenuItem--item--submenuOpen']);\n\t\t} else if (!state.isOpen && isSubMenu) {\n\t\t\ttriggerRef?.current?.classList.remove(itemStyles['MrlMenuItem--item--submenuOpen']);\n\t\t}\n\n\t\t// For consistent submenu calculations, we are storing the menu rect in state\n\t\t// Anytime we need to use the menu rect, we want to make sure the values are based\n\t\t// on the original state of the menu for proper transformations\n\t\tif (!menuRect && menuRef.current) {\n\t\t\tconst newRect = menuRef.current?.getBoundingClientRect();\n\t\t\tsetMenuRect(newRect || null);\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [state.isOpen, menuRect, isSubMenu]);\n\n\t/**\n\t * Focus management for when the menu is opening or closing\n\t */\n\tReact.useEffect(() => {\n\t\tif (menuItems.length > 0) {\n\t\t\tlet menuItemToFocus;\n\n\t\t\tswitch (state.actionType) {\n\t\t\t\tcase 'Enter':\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\tcase ' ':\n\t\t\t\t\tmenuItemToFocus = menuItems[0];\n\t\t\t\t\tmenuItemToFocus?.focus();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tmenuItemToFocus = menuItems[menuItems.length - 1];\n\t\t\t\t\tmenuItemToFocus?.focus();\n\n\t\t\t\t\t// Scroll to the bottom of the menu when the last item is focused\n\t\t\t\t\t// setTimeout is required to ensure the element has been rendered\n\t\t\t\t\t// and the scrollHeight is accurate prior to scrolling\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (listRef.current) {\n\t\t\t\t\t\t\tlistRef.current.scrollTo(0, listRef.current.scrollHeight);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 20);\n\t\t\t}\n\n\t\t\tif (isSubMenu && state.actionType === 'ArrowRight') {\n\t\t\t\tmenuItemToFocus = menuItems[0];\n\t\t\t\tmenuItemToFocus?.focus();\n\t\t\t}\n\t\t}\n\t}, [isSubMenu, menuItems, state.actionType]);\n\n\t/**\n\t * Menu scroll behavior\n\t *\n\t * When the menu cannot fit in the preferred or flipped position,\n\t * this hook constrains the menu height and enables internal scrolling.\n\t * Called before useTriggerPosition so that isScrolling can disable flipping,\n\t * preventing the positioning hook from fighting the scroll constraint.\n\t */\n\tconst disableMenuScroll =\n\t\tisSubMenu || !state.isOpen || position === 'static' || position === 'ignore';\n\n\t/**\n\t * Sets overflow (scrolling) on menu when there is no space to display\n\t * the menu in the preferred or flipped position.\n\t */\n\tconst menuScroll = useMenuScroll(\n\t\ttriggerRef,\n\t\tlistRef,\n\t\tposition,\n\t\tmenuOffset,\n\t\tstate.isOpen,\n\t\tdisableMenuScroll\n\t);\n\n\t/**\n\t * Primary menu positioning, alignment, and transition styling\n\t *\n\t * This hook is only enabled if isSubMenu is FALSE\n\t */\n\tconst disableTriggerPosition = isSubMenu || !state.isOpen || position === 'static';\n\tconst menuPositionStyles = useTriggerPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\t{\n\t\t\talign: alignment,\n\t\t\tcustomPosition: customPosition,\n\t\t\tposition: position\n\t\t},\n\t\tstate.isOpen,\n\t\tmenuOffset,\n\t\tdisableTriggerPosition,\n\t\tdisableFlipping || menuScroll.isScrolling\n\t);\n\n\t/**\n\t * Submenu positioning and alignment\n\t *\n\t * This hook is only enabled if isSubMenu is TRUE\n\t */\n\tconst subMenuPosition = useSubMenuElementPosition(\n\t\ttriggerRef,\n\t\tmenuRef,\n\t\tisSubMenu,\n\t\tstate.isOpen,\n\t\tmenuRect,\n\t\t// disable the subelement positioning if it's not a submenu\n\t\t!isSubMenu\n\t);\n\n\tconst inlineStyles = {\n\t\tmenu: {\n\t\t\tleft: menuPositionStyles.left,\n\t\t\tposition: 'fixed' as const,\n\t\t\ttop: menuPositionStyles.top\n\t\t},\n\t\tsubmenu: {\n\t\t\tleft: subMenuPosition.left,\n\t\t\ttop: subMenuPosition.top\n\t\t}\n\t};\n\n\t/**\n\t * React Spring transitions for the menu\n\t */\n\tconst transitionConfig = {\n\t\tconfig: { duration: state.isOpen ? 300 : 150 },\n\t\tenter: { opacity: 1, transform: 'translateY(0)' },\n\t\tfrom: { opacity: 0, transform: 'translateY(4px)' },\n\t\tleave: { opacity: 0, transform: 'translateY(4px)' }\n\t};\n\n\tconst transitionStatic = {\n\t\tconfig: { duration: 0 },\n\t\tenter: { opacity: 1, transform: 'translateY(0)' }\n\t};\n\n\tconst transitions = useTransition(\n\t\tstate.isOpen,\n\t\tposition === 'static' ? transitionStatic : transitionConfig\n\t);\n\n\tconst menuClasses = classnames(styles['MrlMenu'], 'MrlMenu', {\n\t\t[styles['MrlMenu--submenu']]: isSubMenu,\n\t\t[styles.open]: state.isOpen,\n\t\t[styles['MrlMenu--compact']]: spacing === 'compact',\n\t\t[styles['MrlMenu--static']]: position === 'static',\n\t\t[styles['MrlMenu--internal']]: isInternal,\n\t\t[styles['MrlMenu--scrolling']]: menuScroll.isScrolling,\n\t\t[styles['MrlMenu--ignore']]: position === 'ignore'\n\t});\n\n\tconst positionStyles = isSubMenu\n\t\t? inlineStyles.submenu\n\t\t: position !== 'static'\n\t\t\t? inlineStyles.menu\n\t\t\t: {};\n\n\tconst menuScrollStyles =\n\t\t(menuScroll.maxHeight !== undefined && { maxHeight: menuScroll.maxHeight }) || undefined;\n\n\tconst renderMenu = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{transitions(\n\t\t\t\t\t(style, item) =>\n\t\t\t\t\t\titem && (\n\t\t\t\t\t\t\t<animated.div\n\t\t\t\t\t\t\t\tclassName={menuClasses}\n\t\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\t\tstyle={{ ...positionStyles, ...style }}\n\t\t\t\t\t\t\t\tonKeyUp={handleMenuKeyUp}\n\t\t\t\t\t\t\t\tonKeyDown={handleMenuKey}\n\t\t\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\t\t\trole=\"none\"\n\t\t\t\t\t\t\t\t{...remainingProps}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ul ref={listRef} role=\"menu\" style={menuScrollStyles}>\n\t\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</animated.div>\n\t\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t};\n\n\t// For managing and restoring focus to the original menu trigger\n\t// Ensures the triggerRef in context is always the parent triggerRef\n\tconst parentContext = React.useContext(MrlMenuContext);\n\tconst contextTriggerRef = isSubMenu ? parentContext?.triggerRef : triggerRef;\n\n\treturn (\n\t\t<MrlMenuContext.Provider\n\t\t\tvalue={{\n\t\t\t\tcloseMenu,\n\t\t\t\tcloseParent: !isSubMenu ? closeMenu : undefined,\n\t\t\t\ttriggerRef: contextTriggerRef\n\t\t\t}}\n\t\t>\n\t\t\t{isSubMenu || position === 'static' ? (\n\t\t\t\trenderMenu()\n\t\t\t) : (\n\t\t\t\t<MrlPortal layer={portalProps.layer || PORTAL_LAYERS.MENU} {...portalProps}>\n\t\t\t\t\t{renderMenu()}\n\t\t\t\t</MrlPortal>\n\t\t\t)}\n\t\t</MrlMenuContext.Provider>\n\t);\n\t/* eslint-enable */\n}\n\nMrlMenu.componentType = 'Menu';\n"],"names":["MENU_ITEM_SELECTOR","MrlMenu","_ref","_ref$actionState","actionState","actionType","isOpen","_ref$alignment","alignment","children","_ref$closeOnScroll","closeOnScroll","closeParent","customPosition","_ref$clickOutsideEven","clickOutsideEvent","disableArrowOpen","_ref$disableFlipping","disableFlipping","id","_ref$isInternal","isInternal","_ref$isSubMenu","isSubMenu","_ref$spacing","spacing","_ref$menuOffset","menuOffset","_ref$portalProps","portalProps","PORTAL_LAYERS","MENU","name","_ref$position","position","_ref$triggerStopPropa","triggerStopPropagation","onClose","eventId","triggerRef","remainingProps","_objectWithoutProperties","_excluded","defaultOpenState","_React$useState","React","useState","_React$useState2","_slicedToArray","state","setState","trackInteraction","useMrlTrackInteraction","wasOpenRef","useRef","useEffect","_state$actionType","current","action","metadata","trigger","variant","menuRef","listRef","_React$useState3","_React$useState4","menuItems","setMenuItems","_React$useState5","_React$useState6","menuRect","setMenuRect","isTriggerDisabled","useCallback","isElementAriaDisabled","toggleMenuTrigger","e","preventDefault","prevState","showMenuHover","showMenuTap","hideMenuHover","event","relatedTarget","contains","toggleMenuKey","openMenu","key","closeMenu","shouldCloseParent","arguments","length","undefined","disableClickOutside","useClickOutside","handleMenuKeyUp","actions","includes","handleMenuKey","_menuItems$nextIndex","_menuItems$nextIndex2","_triggerRef$current","currentIndex","findIndex","item","document","activeElement","nextIndex","focus","shiftKey","prevElement","findAdjacentInteractiveElement","nextElement","setAttribute","_triggerRef$current2","toString","triggerElement","menuElement","querySelectorAll","scrollableParent","addEventListener","isTouchDevice","getScrollableParent","capture","passive","removeEventListener","forEach","getAttribute","_menuRef$current","foundMenuItems","Array","from","_triggerRef$current3","classList","add","itemStyles","_triggerRef$current4","remove","_menuRef$current2","newRect","getBoundingClientRect","_menuItemToFocus","_menuItemToFocus2","menuItemToFocus","setTimeout","scrollTo","scrollHeight","_menuItemToFocus3","disableMenuScroll","menuScroll","useMenuScroll","disableTriggerPosition","menuPositionStyles","useTriggerPosition","align","isScrolling","subMenuPosition","useSubMenuElementPosition","inlineStyles","menu","left","top","submenu","transitionConfig","config","duration","enter","opacity","transform","leave","transitionStatic","transitions","useTransition","menuClasses","classnames","styles","open","positionStyles","menuScrollStyles","maxHeight","renderMenu","createElement","Fragment","style","animated","div","_extends","className","_objectSpread","onKeyUp","onKeyDown","ref","role","parentContext","useContext","MrlMenuContext","contextTriggerRef","Provider","value","MrlPortal","layer","componentType"],"mappings":"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"}