@servicetitan/anvil2 3.16.1 → 3.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/dist/{AiMark-BfmK30vL.js → AiMark-Ca7WmL-9.js} +114 -33
  3. package/dist/AiMark-Ca7WmL-9.js.map +1 -0
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-lLo1N7Tj.js → Alert-BOqBFMUV.js} +3 -3
  6. package/dist/{Alert-lLo1N7Tj.js.map → Alert-BOqBFMUV.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Announcement-PfnsVVz1.js → Announcement-AN9HnhZ-.js} +2 -2
  9. package/dist/{Announcement-PfnsVVz1.js.map → Announcement-AN9HnhZ-.js.map} +1 -1
  10. package/dist/Announcement.js +1 -1
  11. package/dist/{AnvilProvider-DagOuc9c.js → AnvilProvider-BVTxXzoS.js} +3 -3
  12. package/dist/{AnvilProvider-DagOuc9c.js.map → AnvilProvider-BVTxXzoS.js.map} +1 -1
  13. package/dist/AnvilProvider.js +1 -1
  14. package/dist/{Breadcrumbs-RdL4Fvmu.js → Breadcrumbs-1MCqy-gU.js} +2 -2
  15. package/dist/{Breadcrumbs-RdL4Fvmu.js.map → Breadcrumbs-1MCqy-gU.js.map} +1 -1
  16. package/dist/Breadcrumbs.js +1 -1
  17. package/dist/{Button-Dn6-01xl.js → Button-B_E6ybA-.js} +3 -3
  18. package/dist/{Button-Dn6-01xl.js.map → Button-B_E6ybA-.js.map} +1 -1
  19. package/dist/Button.js +1 -1
  20. package/dist/{ButtonToggle-BSU8GBxr.js → ButtonToggle-D0eXySEM.js} +2 -2
  21. package/dist/{ButtonToggle-BSU8GBxr.js.map → ButtonToggle-D0eXySEM.js.map} +1 -1
  22. package/dist/ButtonToggle.js +1 -1
  23. package/dist/{luxon-wpz4A-OQ.js → Calendar-BcsuV4Xv.js} +1761 -3
  24. package/dist/Calendar-BcsuV4Xv.js.map +1 -0
  25. package/dist/{Calendar-DoLRAWLp.js → Calendar-oBRbQqnG.js} +2 -2
  26. package/dist/{Calendar-DoLRAWLp.js.map → Calendar-oBRbQqnG.js.map} +1 -1
  27. package/dist/Calendar.js +2 -2
  28. package/dist/{Checkbox-U-kuWhgc.js → Checkbox-BCaUzwF_.js} +2 -2
  29. package/dist/{Checkbox-U-kuWhgc.js.map → Checkbox-BCaUzwF_.js.map} +1 -1
  30. package/dist/{Checkbox-CVxbe-iN.js → Checkbox-BocPrjKC.js} +4 -4
  31. package/dist/{Checkbox-CVxbe-iN.js.map → Checkbox-BocPrjKC.js.map} +1 -1
  32. package/dist/Checkbox.js +1 -1
  33. package/dist/{Chip-2OydLs66.js → Chip-BWqgUX71.js} +11 -24
  34. package/dist/Chip-BWqgUX71.js.map +1 -0
  35. package/dist/Chip.js +1 -1
  36. package/dist/Combobox.js +1 -1
  37. package/dist/{DataTable-DIXP9-Bx.js → DataTableEditColumnsDrawer-C7OHRsJU.js} +1373 -289
  38. package/dist/DataTableEditColumnsDrawer-C7OHRsJU.js.map +1 -0
  39. package/dist/{DataTable.css → DataTableEditColumnsDrawer.css} +90 -33
  40. package/dist/{DateFieldRange-X2jdOTYY.js → DateFieldRange-BPcsS6TW.js} +6 -7
  41. package/dist/{DateFieldRange-X2jdOTYY.js.map → DateFieldRange-BPcsS6TW.js.map} +1 -1
  42. package/dist/DateFieldRange.js +1 -1
  43. package/dist/{DateFieldSingle-BJ16tpOz.js → DateFieldSingle-BRMhe0OM.js} +6 -7
  44. package/dist/{DateFieldSingle-BJ16tpOz.js.map → DateFieldSingle-BRMhe0OM.js.map} +1 -1
  45. package/dist/DateFieldSingle.js +1 -1
  46. package/dist/{DateFieldYearless-CMm8vtz_.js → DateFieldYearless-NOgDKzrJ.js} +6 -6
  47. package/dist/{DateFieldYearless-CMm8vtz_.js.map → DateFieldYearless-NOgDKzrJ.js.map} +1 -1
  48. package/dist/DateFieldYearless.js +1 -1
  49. package/dist/{DateFieldYearlessRange-BHHs-Z1Q.js → DateFieldYearlessRange-ChvypgXC.js} +5 -5
  50. package/dist/{DateFieldYearlessRange-BHHs-Z1Q.js.map → DateFieldYearlessRange-ChvypgXC.js.map} +1 -1
  51. package/dist/DateFieldYearlessRange.js +1 -1
  52. package/dist/{DaysOfTheWeek-BHXxs0Bo.js → DaysOfTheWeek-nYitIKnQ.js} +4 -4
  53. package/dist/{DaysOfTheWeek-BHXxs0Bo.js.map → DaysOfTheWeek-nYitIKnQ.js.map} +1 -1
  54. package/dist/DaysOfTheWeek.js +1 -1
  55. package/dist/Details-B2F3auTX.js +216 -0
  56. package/dist/Details-B2F3auTX.js.map +1 -0
  57. package/dist/{Details-BxqP-5vp.js → Details-DQ-_Mg4o.js} +3 -3
  58. package/dist/{Details-BxqP-5vp.js.map → Details-DQ-_Mg4o.js.map} +1 -1
  59. package/dist/Details.css +92 -68
  60. package/dist/Details.js +1 -1
  61. package/dist/Details2.css +137 -0
  62. package/dist/{Dialog-_tHqOsbr.js → Dialog-BgWoV2on.js} +10 -7
  63. package/dist/Dialog-BgWoV2on.js.map +1 -0
  64. package/dist/Dialog.js +1 -1
  65. package/dist/{DialogCancelButton-C0r8hJ8Z.js → DialogCancelButton-CplrFu69.js} +2 -2
  66. package/dist/{DialogCancelButton-C0r8hJ8Z.js.map → DialogCancelButton-CplrFu69.js.map} +1 -1
  67. package/dist/Dnd.js +2 -2
  68. package/dist/{DndHandleButton-BRlodkDO.js → DndHandleButton-BJqj2hc0.js} +6 -4
  69. package/dist/DndHandleButton-BJqj2hc0.js.map +1 -0
  70. package/dist/DndSort.js +2 -2
  71. package/dist/{Drawer-D-ThWNp0.js → Drawer-BVBLtGn_.js} +12 -9
  72. package/dist/Drawer-BVBLtGn_.js.map +1 -0
  73. package/dist/Drawer.js +1 -1
  74. package/dist/DrillDown.css +41 -34
  75. package/dist/DrillDown.js +1 -1
  76. package/dist/DrillDown.module-BFE5BcJB.js +28 -0
  77. package/dist/DrillDown.module-BFE5BcJB.js.map +1 -0
  78. package/dist/{EditCard-B6l2vhBS.js → EditCard-hivZDPZh.js} +3 -3
  79. package/dist/{EditCard-B6l2vhBS.js.map → EditCard-hivZDPZh.js.map} +1 -1
  80. package/dist/EditCard.js +1 -1
  81. package/dist/{FieldLabel-ThEmUiAq.js → FieldLabel-Cn559Brf.js} +8 -58
  82. package/dist/FieldLabel-Cn559Brf.js.map +1 -0
  83. package/dist/FieldLabel.css +1 -12
  84. package/dist/FieldLabel.js +1 -1
  85. package/dist/FieldMessage.js +1 -1
  86. package/dist/{FilterBar-CGsDg6Hy.js → FilterBar-COd38Ent.js} +7 -7
  87. package/dist/{FilterBar-CGsDg6Hy.js.map → FilterBar-COd38Ent.js.map} +1 -1
  88. package/dist/FilterBar.js +1 -1
  89. package/dist/InlineMarkdown-CL1tKR01.js +87 -0
  90. package/dist/InlineMarkdown-CL1tKR01.js.map +1 -0
  91. package/dist/InlineMarkdown.css +12 -0
  92. package/dist/{InputMask-BQigi5oW.js → InputMask-DICWdeiF.js} +3 -3
  93. package/dist/{InputMask-BQigi5oW.js.map → InputMask-DICWdeiF.js.map} +1 -1
  94. package/dist/InputMask.js +1 -1
  95. package/dist/{ListView-YJscfG4x.js → ListView-BeGBn5Vk.js} +87 -108
  96. package/dist/ListView-BeGBn5Vk.js.map +1 -0
  97. package/dist/ListView.js +1 -1
  98. package/dist/{Listbox-CD9ZptSZ.js → Listbox-n1CmJ2gh.js} +2 -2
  99. package/dist/{Listbox-CD9ZptSZ.js.map → Listbox-n1CmJ2gh.js.map} +1 -1
  100. package/dist/Listbox.js +1 -1
  101. package/dist/{Menu-Da2OEN0o.js → Menu-DqP7YQgE.js} +2 -2
  102. package/dist/{Menu-Da2OEN0o.js.map → Menu-DqP7YQgE.js.map} +1 -1
  103. package/dist/Menu.js +1 -1
  104. package/dist/{MenuFooter-D__gg92C.js → MenuFooter-Dzhv0EfD.js} +2 -2
  105. package/dist/{MenuFooter-D__gg92C.js.map → MenuFooter-Dzhv0EfD.js.map} +1 -1
  106. package/dist/MultiSelectField.js +1 -1
  107. package/dist/{MultiSelectFieldSync-Cq5sena6.js → MultiSelectFieldSync-CWsOdu-o.js} +45 -63
  108. package/dist/MultiSelectFieldSync-CWsOdu-o.js.map +1 -0
  109. package/dist/MultiSelectFieldSync.css +107 -69
  110. package/dist/MultiSelectMenu.js +1 -1
  111. package/dist/{MultiSelectMenuSync-BhNXsgAN.js → MultiSelectMenuSync-AVcf8ZUZ.js} +17 -30
  112. package/dist/MultiSelectMenuSync-AVcf8ZUZ.js.map +1 -0
  113. package/dist/{useNumberField-CXFYUZ_n.js → NumberField-DjOvcCa1.js} +251 -5
  114. package/dist/NumberField-DjOvcCa1.js.map +1 -0
  115. package/dist/NumberField.js +1 -1
  116. package/dist/{Page-ZSHNJs7z.js → Page-_dh-JesM.js} +134 -85
  117. package/dist/Page-_dh-JesM.js.map +1 -0
  118. package/dist/Page.css +85 -80
  119. package/dist/Page.js +1 -1
  120. package/dist/{Pagination-Bsl99RRI.js → Pagination-CsSpaTCs.js} +5 -5
  121. package/dist/{Pagination-Bsl99RRI.js.map → Pagination-CsSpaTCs.js.map} +1 -1
  122. package/dist/Pagination.js +1 -1
  123. package/dist/{Popover-CIh1CsoJ.js → Popover-CEKl0WY3.js} +4 -4
  124. package/dist/{Popover-CIh1CsoJ.js.map → Popover-CEKl0WY3.js.map} +1 -1
  125. package/dist/Popover.js +1 -1
  126. package/dist/{ProgressBar-zPKYv4Il.js → ProgressBar-ubCKKewC.js} +3 -3
  127. package/dist/{ProgressBar-zPKYv4Il.js.map → ProgressBar-ubCKKewC.js.map} +1 -1
  128. package/dist/ProgressBar.js +1 -1
  129. package/dist/{Radio-C1VnatcL.js → Radio-DkB6zFsS.js} +2 -2
  130. package/dist/{Radio-C1VnatcL.js.map → Radio-DkB6zFsS.js.map} +1 -1
  131. package/dist/{Radio-BYowelK2.js → Radio-q1Vp_ZQG.js} +4 -4
  132. package/dist/{Radio-BYowelK2.js.map → Radio-q1Vp_ZQG.js.map} +1 -1
  133. package/dist/Radio.js +1 -1
  134. package/dist/{RichTextEditor-DcAVqd2d.js → RichTextEditor-BHt6sWMA.js} +11 -11
  135. package/dist/{RichTextEditor-DcAVqd2d.js.map → RichTextEditor-BHt6sWMA.js.map} +1 -1
  136. package/dist/RichTextEditor.js +1 -1
  137. package/dist/{SavedFiltersButton-BLvi8j1T.js → SavedFiltersButton-Cl58iHZe.js} +10 -10
  138. package/dist/{SavedFiltersButton-BLvi8j1T.js.map → SavedFiltersButton-Cl58iHZe.js.map} +1 -1
  139. package/dist/SavedFiltersButton.js +1 -1
  140. package/dist/{SearchField-ChoNtw8w.js → SearchField-Bk-Ltu4v.js} +2 -2
  141. package/dist/{SearchField-ChoNtw8w.js.map → SearchField-Bk-Ltu4v.js.map} +1 -1
  142. package/dist/{SearchField-DX8hZyo2.js → SearchField-INVftpNM.js} +2 -2
  143. package/dist/{SearchField-DX8hZyo2.js.map → SearchField-INVftpNM.js.map} +1 -1
  144. package/dist/SearchField.js +1 -1
  145. package/dist/{SegmentedControl-BHVJmmTH.js → SegmentedControl-BCqWq65N.js} +3 -3
  146. package/dist/{SegmentedControl-BHVJmmTH.js.map → SegmentedControl-BCqWq65N.js.map} +1 -1
  147. package/dist/SegmentedControl.js +1 -1
  148. package/dist/{SelectCard-DrmMU_GD.js → SelectCard-DeAUW1bL.js} +3 -3
  149. package/dist/{SelectCard-DrmMU_GD.js.map → SelectCard-DeAUW1bL.js.map} +1 -1
  150. package/dist/SelectCard.js +1 -1
  151. package/dist/SelectField.js +1 -1
  152. package/dist/{SelectFieldLabel-BxsKvfqo.js → SelectFieldLabel-DaXwIFZj.js} +2 -2
  153. package/dist/{SelectFieldLabel-BxsKvfqo.js.map → SelectFieldLabel-DaXwIFZj.js.map} +1 -1
  154. package/dist/{SelectFieldSync-CeazN-gI.js → SelectFieldSync-DpZL4wDo.js} +48 -69
  155. package/dist/SelectFieldSync-DpZL4wDo.js.map +1 -0
  156. package/dist/SelectMenu.js +1 -1
  157. package/dist/{SelectMenuSync-CPpE6vUG.js → SelectMenuSync-Klna2oqs.js} +17 -36
  158. package/dist/SelectMenuSync-Klna2oqs.js.map +1 -0
  159. package/dist/{SelectOptions-BDAu_9dv.js → SelectOptions-DGYYFU8i.js} +2 -2
  160. package/dist/{SelectOptions-BDAu_9dv.js.map → SelectOptions-DGYYFU8i.js.map} +1 -1
  161. package/dist/{SelectTrigger-B4OUTO9S.js → SelectTrigger-DKY7rpZn.js} +2 -2
  162. package/dist/{SelectTrigger-B4OUTO9S.js.map → SelectTrigger-DKY7rpZn.js.map} +1 -1
  163. package/dist/SelectTrigger.js +1 -1
  164. package/dist/{SelectTriggerBase-BTWSaiQ-.js → SelectTriggerBase-DUYq_L-6.js} +6 -6
  165. package/dist/{SelectTriggerBase-BTWSaiQ-.js.map → SelectTriggerBase-DUYq_L-6.js.map} +1 -1
  166. package/dist/SelectTriggerBase.css +94 -56
  167. package/dist/SelectTriggerBase.module-C-NmZbg4.js +41 -0
  168. package/dist/SelectTriggerBase.module-C-NmZbg4.js.map +1 -0
  169. package/dist/{Stepper-l_P6VPOv.js → Stepper-D3SHXfX1.js} +3 -3
  170. package/dist/{Stepper-l_P6VPOv.js.map → Stepper-D3SHXfX1.js.map} +1 -1
  171. package/dist/Stepper.js +1 -1
  172. package/dist/{Switch-1iNdXTik.js → Switch-C9yQgF4w.js} +2 -2
  173. package/dist/{Switch-1iNdXTik.js.map → Switch-C9yQgF4w.js.map} +1 -1
  174. package/dist/Switch.js +1 -1
  175. package/dist/{Tab-DR5YYXkq.js → Tab-CXwVQ5-G.js} +11 -7
  176. package/dist/Tab-CXwVQ5-G.js.map +1 -0
  177. package/dist/Tab.js +1 -1
  178. package/dist/Table.js +1 -1
  179. package/dist/{Text-rihxXHSe.js → Text-D4SWT4u-.js} +2 -2
  180. package/dist/{Text-rihxXHSe.js.map → Text-D4SWT4u-.js.map} +1 -1
  181. package/dist/Text.js +1 -1
  182. package/dist/{TextField-vuS7xeo-.js → TextField-CKXSxube.js} +5 -5
  183. package/dist/{TextField-vuS7xeo-.js.map → TextField-CKXSxube.js.map} +1 -1
  184. package/dist/{TextField-Bxd-Qzoi.js → TextField-DmdT2k0w.js} +2 -2
  185. package/dist/{TextField-Bxd-Qzoi.js.map → TextField-DmdT2k0w.js.map} +1 -1
  186. package/dist/TextField.css +38 -23
  187. package/dist/TextField.js +1 -1
  188. package/dist/TextField.module-B3y6caP9.js +25 -0
  189. package/dist/TextField.module-B3y6caP9.js.map +1 -0
  190. package/dist/{Textarea-ppapJUwh.js → Textarea-Dv__veBJ.js} +11 -11
  191. package/dist/{Textarea-ppapJUwh.js.map → Textarea-Dv__veBJ.js.map} +1 -1
  192. package/dist/Textarea.css +26 -11
  193. package/dist/Textarea.js +1 -1
  194. package/dist/{ThemeProvider-DW-Mflv6.js → ThemeProvider-DS2aL89d.js} +2 -2
  195. package/dist/{ThemeProvider-DW-Mflv6.js.map → ThemeProvider-DS2aL89d.js.map} +1 -1
  196. package/dist/ThemeProvider.css +6 -4
  197. package/dist/ThemeProvider.js +1 -1
  198. package/dist/ThemeProvider.module-BkKwAw2f.js +8 -0
  199. package/dist/ThemeProvider.module-BkKwAw2f.js.map +1 -0
  200. package/dist/{TimeField-Hwt_oRbg.js → TimeField-De9qBimk.js} +49 -11
  201. package/dist/TimeField-De9qBimk.js.map +1 -0
  202. package/dist/TimeField.js +1 -1
  203. package/dist/{TimezoneMessage-BrKB_psP.js → TimezoneMessage-DEJX87S3.js} +2 -2
  204. package/dist/{TimezoneMessage-BrKB_psP.js.map → TimezoneMessage-DEJX87S3.js.map} +1 -1
  205. package/dist/Toast.js +2 -2
  206. package/dist/{Toaster-dVGVVcat.js → Toaster-BlwTxTLf.js} +2 -2
  207. package/dist/{Toaster-dVGVVcat.js.map → Toaster-BlwTxTLf.js.map} +1 -1
  208. package/dist/{Toaster-SqkX0Kes.js → Toaster-sO16N9b5.js} +26 -14
  209. package/dist/Toaster-sO16N9b5.js.map +1 -0
  210. package/dist/{Toolbar-DGHZpFi9.js → Toolbar-BhrHuIN7.js} +7 -7
  211. package/dist/{Toolbar-DGHZpFi9.js.map → Toolbar-BhrHuIN7.js.map} +1 -1
  212. package/dist/{Toolbar-CMulzswf.js → Toolbar-Buq2zze0.js} +6 -6
  213. package/dist/{Toolbar-CMulzswf.js.map → Toolbar-Buq2zze0.js.map} +1 -1
  214. package/dist/Toolbar.js +2 -2
  215. package/dist/{ToolbarButtonToggle-T8YnSJ5x.js → ToolbarButtonToggle-CNIaqVWl.js} +3 -3
  216. package/dist/{ToolbarButtonToggle-T8YnSJ5x.js.map → ToolbarButtonToggle-CNIaqVWl.js.map} +1 -1
  217. package/dist/{Tooltip-C_VcYS9P.js → Tooltip-CsTkZqMg.js} +3 -3
  218. package/dist/{Tooltip-C_VcYS9P.js.map → Tooltip-CsTkZqMg.js.map} +1 -1
  219. package/dist/Tooltip.js +1 -1
  220. package/dist/TreeSelectField.js +1 -1
  221. package/dist/{TreeSelectFieldSync-DT6uZ3Ca.js → TreeSelectFieldSync-B7w31kbz.js} +23 -23
  222. package/dist/{TreeSelectFieldSync-DT6uZ3Ca.js.map → TreeSelectFieldSync-B7w31kbz.js.map} +1 -1
  223. package/dist/TreeSelectFieldSync.css +57 -34
  224. package/dist/TreeSelectMenu.js +1 -1
  225. package/dist/{TreeSelectMenuSync-D2TvKxP-.js → TreeSelectMenuSync-EjxlvDZp.js} +5 -5
  226. package/dist/{TreeSelectMenuSync-D2TvKxP-.js.map → TreeSelectMenuSync-EjxlvDZp.js.map} +1 -1
  227. package/dist/{TypeaheadTextField-DgazozK7.js → TypeaheadTextField-DTOkaJda.js} +3 -3
  228. package/dist/{TypeaheadTextField-DgazozK7.js.map → TypeaheadTextField-DTOkaJda.js.map} +1 -1
  229. package/dist/TypeaheadTextField.js +1 -1
  230. package/dist/{YearlessDateInputWithPicker-Bc8a33D5.js → YearlessDateInputWithPicker-DJUQypnF.js} +4 -4
  231. package/dist/{YearlessDateInputWithPicker-Bc8a33D5.js.map → YearlessDateInputWithPicker-DJUQypnF.js.map} +1 -1
  232. package/dist/assets/icons/st/gnav_messages_active.svg +1 -0
  233. package/dist/assets/icons/st/gnav_messages_inactive.svg +1 -0
  234. package/dist/assets/icons/st.ts +2 -0
  235. package/dist/beta.js +19 -18
  236. package/dist/beta.js.map +1 -1
  237. package/dist/{bulkActionTypes-SukoplGV.js → bulkActionTypes-bznuvizE.js} +2 -2
  238. package/dist/{bulkActionTypes-SukoplGV.js.map → bulkActionTypes-bznuvizE.js.map} +1 -1
  239. package/dist/{filter-state-D3-SYfuy.js → filter-state-DxwL15y1.js} +25 -25
  240. package/dist/{filter-state-D3-SYfuy.js.map → filter-state-DxwL15y1.js.map} +1 -1
  241. package/dist/{index-C2dOrf4N.js → index-Bn56UnMm.js} +2 -2
  242. package/dist/{index-C2dOrf4N.js.map → index-Bn56UnMm.js.map} +1 -1
  243. package/dist/{index-Bldaza5t.js → index-CyN5oapA.js} +2 -2
  244. package/dist/{index-Bldaza5t.js.map → index-CyN5oapA.js.map} +1 -1
  245. package/dist/index-DfZCfS0S.js +36 -0
  246. package/dist/index-DfZCfS0S.js.map +1 -0
  247. package/dist/{index.esm-C2ZhC_8d.js → index.esm-CQXMoq5w.js} +2 -2
  248. package/dist/{index.esm-C2ZhC_8d.js.map → index.esm-CQXMoq5w.js.map} +1 -1
  249. package/dist/index.js +171 -127
  250. package/dist/index.js.map +1 -1
  251. package/dist/index2.css +78 -73
  252. package/dist/{portalScopeClassNames-DA28LrXe.js → portalScopeClassNames-CMdDYHE0.js} +2 -2
  253. package/dist/{portalScopeClassNames-DA28LrXe.js.map → portalScopeClassNames-CMdDYHE0.js.map} +1 -1
  254. package/dist/{react-ORV84FjM.js → react-CG1BUt2y.js} +5 -38
  255. package/dist/react-CG1BUt2y.js.map +1 -0
  256. package/dist/src/beta/components/Details/Details.d.ts +25 -0
  257. package/dist/src/beta/components/Details/DetailsSummary.d.ts +121 -0
  258. package/dist/src/beta/components/Details/index.d.ts +4 -0
  259. package/dist/src/beta/components/Details/internal/DetailsArrow.d.ts +11 -0
  260. package/dist/src/beta/components/Details/internal/DetailsSummaryCells.d.ts +5 -0
  261. package/dist/src/beta/components/Page/Page.d.ts +1 -0
  262. package/dist/src/beta/components/Page/PageSidebar.d.ts +12 -0
  263. package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +31 -4
  264. package/dist/src/beta/components/Table/DataTable/DataTableEditColumnsDrawer.d.ts +18 -0
  265. package/dist/src/beta/components/Table/DataTable/index.d.ts +1 -0
  266. package/dist/src/beta/components/Table/DataTable/internal/DataTableAddRow.d.ts +11 -0
  267. package/dist/src/beta/components/Table/DataTable/internal/DataTableBulkActionBar.d.ts +23 -0
  268. package/dist/src/beta/components/Table/DataTable/internal/DataTableFilterToolbar.d.ts +12 -0
  269. package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +3 -3
  270. package/dist/src/beta/components/Table/DataTable/internal/columnEditing/EditColumnsDrawer.d.ts +29 -0
  271. package/dist/src/beta/components/Table/DataTable/internal/columnEditing/columnLayout.d.ts +43 -0
  272. package/dist/src/beta/components/Table/DataTable/internal/columnEditing/toEditColumnsSection.d.ts +7 -0
  273. package/dist/src/beta/components/Table/DataTable/internal/context/tabbables/CellTabbablesQueue.d.ts +23 -0
  274. package/dist/src/beta/components/Table/DataTable/parts.d.ts +17 -0
  275. package/dist/src/beta/components/Table/DataTable/types.d.ts +256 -2
  276. package/dist/src/beta/components/Table/types.d.ts +6 -0
  277. package/dist/src/beta/components/deprecatedReexports/MultiSelectField.d.ts +4 -4
  278. package/dist/src/beta/components/deprecatedReexports/MultiSelectMenu.d.ts +4 -4
  279. package/dist/src/beta/components/deprecatedReexports/SelectField.d.ts +4 -4
  280. package/dist/src/beta/components/deprecatedReexports/SelectMenu.d.ts +4 -4
  281. package/dist/src/beta/components/index.d.ts +1 -0
  282. package/dist/src/components/DrillDown/DrillDownHeader.d.ts +11 -2
  283. package/dist/src/components/DrillDown/index.d.ts +1 -1
  284. package/dist/src/components/DrillDown/internal/DrillDownContext.d.ts +7 -2
  285. package/dist/src/components/DrillDown/internal/useDrillDownContextState.d.ts +6 -3
  286. package/dist/src/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  287. package/dist/src/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  288. package/dist/src/components/MultiSelectField/internal/types.d.ts +0 -1
  289. package/dist/src/components/Page/Page.d.ts +1 -0
  290. package/dist/src/components/Page/PageSidebar.d.ts +12 -0
  291. package/dist/src/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  292. package/dist/src/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  293. package/dist/src/hooks/usePrefersReducedMotion/index.d.ts +2 -0
  294. package/dist/src/hooks/usePrefersReducedMotion/prefersReducedMotion.d.ts +6 -0
  295. package/dist/src/hooks/usePrefersReducedMotion/useReducedMotion.d.ts +5 -0
  296. package/dist/src/internal/components/InlineMarkdown/InlineMarkdown.d.ts +8 -1
  297. package/dist/src/internal/components/InlineMarkdown/index.d.ts +1 -1
  298. package/dist/src/internal/components/Popover/Popover.d.ts +10 -5
  299. package/dist/src/internal/components/Popover/internal/verticalPlacement.d.ts +9 -0
  300. package/dist/src/internal/contexts/DisableConditionalUnmountWarningContext.d.ts +6 -0
  301. package/dist/src/internal/contexts/SuppressPanelSwapWarningContext.d.ts +13 -0
  302. package/dist/src/internal/functions/inlineMarkdown.d.ts +5 -2
  303. package/dist/src/internal/functions/stripInlineMarkdown.d.ts +4 -2
  304. package/dist/src/internal/hooks/index.d.ts +1 -0
  305. package/dist/src/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.d.ts +9 -1
  306. package/dist/src/internal/hooks/useSelectOrchestration.d.ts +0 -1
  307. package/dist/src/internal/hooks/useWarnOnConditionalUnmount/index.d.ts +1 -0
  308. package/dist/src/internal/hooks/useWarnOnConditionalUnmount/useWarnOnConditionalUnmount.d.ts +1 -0
  309. package/dist/src/internal/testing/keepMutationObserversAlive.d.ts +9 -0
  310. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +0 -1
  311. package/dist/src/internal/utils/inlineMarkdownRegex.d.ts +5 -0
  312. package/dist/stripInlineMarkdown-BV12XXzl.js +35 -0
  313. package/dist/stripInlineMarkdown-BV12XXzl.js.map +1 -0
  314. package/dist/{syncFilterUtils-SMop8ckR.js → syncFilterUtils-BNbAB0jz.js} +110 -39
  315. package/dist/syncFilterUtils-BNbAB0jz.js.map +1 -0
  316. package/dist/token/core/component-variables.scss +52 -49
  317. package/dist/token/core/component.d.ts +2 -0
  318. package/dist/token/core/component.js +66 -49
  319. package/dist/token/core/component.scss +42 -40
  320. package/dist/token/core/semantic-variables.scss +2 -0
  321. package/dist/token/core/semantic.d.ts +1 -0
  322. package/dist/token/core/semantic.js +13 -0
  323. package/dist/token/core/semantic.scss +1 -0
  324. package/dist/token.js +82 -49
  325. package/dist/token.js.map +1 -1
  326. package/dist/{treeSync-B38r1dRQ.js → treeSync-BELsX1gY.js} +3 -3
  327. package/dist/{treeSync-B38r1dRQ.js.map → treeSync-BELsX1gY.js.map} +1 -1
  328. package/dist/{use-reduced-motion-yYB9Tb0D.js → use-reduced-motion-CUshwaEW.js} +2 -2
  329. package/dist/{use-reduced-motion-yYB9Tb0D.js.map → use-reduced-motion-CUshwaEW.js.map} +1 -1
  330. package/dist/{useDrillDownContext-D5_NjqY4.js → useDrillDownContext-BLDjyNEt.js} +2 -2
  331. package/dist/{useDrillDownContext-D5_NjqY4.js.map → useDrillDownContext-BLDjyNEt.js.map} +1 -1
  332. package/dist/{useDrilldown-BOeeNUsy.js → useDrilldown-B8pIhfWa.js} +55 -22
  333. package/dist/{useDrilldown-BOeeNUsy.js.map → useDrilldown-B8pIhfWa.js.map} +1 -1
  334. package/dist/{useInfiniteCombobox-ynkeFngn.js → useInfiniteCombobox-ZZalag0-.js} +4 -4
  335. package/dist/{useInfiniteCombobox-ynkeFngn.js.map → useInfiniteCombobox-ZZalag0-.js.map} +1 -1
  336. package/dist/{useInitialFocus-CGybEc6x.js → useInitialFocus-KdirjHEb.js} +51 -16
  337. package/dist/useInitialFocus-KdirjHEb.js.map +1 -0
  338. package/dist/{useInvalidateOnOptionsChange-BD2VBpbK.js → useInvalidateOnOptionsChange-ChrPmbtS.js} +6 -6
  339. package/dist/{useInvalidateOnOptionsChange-BD2VBpbK.js.map → useInvalidateOnOptionsChange-ChrPmbtS.js.map} +1 -1
  340. package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
  341. package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
  342. package/dist/{usePrefersReducedMotion-DR9B_D6w.js → usePrefersReducedMotion-BLoVFiJL.js} +11 -3
  343. package/dist/usePrefersReducedMotion-BLoVFiJL.js.map +1 -0
  344. package/dist/usePrefersReducedMotion.js +2 -1
  345. package/dist/usePrefersReducedMotion.js.map +1 -1
  346. package/dist/{utils-CM48ODEJ.js → utils-DwLrXpmt.js} +2 -2
  347. package/dist/{utils-CM48ODEJ.js.map → utils-DwLrXpmt.js.map} +1 -1
  348. package/package.json +4 -4
  349. package/dist/AiMark-BfmK30vL.js.map +0 -1
  350. package/dist/Calendar-IzXG1aJw.js +0 -1761
  351. package/dist/Calendar-IzXG1aJw.js.map +0 -1
  352. package/dist/Chip-2OydLs66.js.map +0 -1
  353. package/dist/DataTable-DIXP9-Bx.js.map +0 -1
  354. package/dist/Dialog-_tHqOsbr.js.map +0 -1
  355. package/dist/DndHandleButton-BRlodkDO.js.map +0 -1
  356. package/dist/Drawer-D-ThWNp0.js.map +0 -1
  357. package/dist/DrillDown.module-1VBKDZRA.js +0 -27
  358. package/dist/DrillDown.module-1VBKDZRA.js.map +0 -1
  359. package/dist/FieldLabel-ThEmUiAq.js.map +0 -1
  360. package/dist/Lato.css +0 -24
  361. package/dist/ListView-YJscfG4x.js.map +0 -1
  362. package/dist/MultiSelectFieldSync-Cq5sena6.js.map +0 -1
  363. package/dist/MultiSelectMenuSync-BhNXsgAN.js.map +0 -1
  364. package/dist/NumberField-CxmJx4gs.js +0 -252
  365. package/dist/NumberField-CxmJx4gs.js.map +0 -1
  366. package/dist/Page-ZSHNJs7z.js.map +0 -1
  367. package/dist/SelectFieldSync-CeazN-gI.js.map +0 -1
  368. package/dist/SelectMenuSync-CPpE6vUG.js.map +0 -1
  369. package/dist/SelectTriggerBase.module-Dt4-6YvC.js +0 -40
  370. package/dist/SelectTriggerBase.module-Dt4-6YvC.js.map +0 -1
  371. package/dist/Tab-DR5YYXkq.js.map +0 -1
  372. package/dist/TextField.module-DklyLNKz.js +0 -25
  373. package/dist/TextField.module-DklyLNKz.js.map +0 -1
  374. package/dist/ThemeProvider.module-B9qgsQ8S.js +0 -8
  375. package/dist/ThemeProvider.module-B9qgsQ8S.js.map +0 -1
  376. package/dist/TimeField-Hwt_oRbg.js.map +0 -1
  377. package/dist/Toaster-SqkX0Kes.js.map +0 -1
  378. package/dist/app-css.379821199ec8105f2efd.bundle.css +0 -57579
  379. package/dist/bugfix-71.1orion.css +0 -491
  380. package/dist/design-system.859a127fc3b66175f0f0.bundle.css +0 -34599
  381. package/dist/drag_indicator-BRHAPLSJ.js +0 -6
  382. package/dist/drag_indicator-BRHAPLSJ.js.map +0 -1
  383. package/dist/favicon.ico +0 -0
  384. package/dist/kendo-css.ed976099efbbcc8b0639.bundle.css +0 -20601
  385. package/dist/luxon-wpz4A-OQ.js.map +0 -1
  386. package/dist/main.e26f249642be9a4bd747.bundle.css +0 -50386
  387. package/dist/react-ORV84FjM.js.map +0 -1
  388. package/dist/stripInlineMarkdown-BhYLEiXu.js +0 -25
  389. package/dist/stripInlineMarkdown-BhYLEiXu.js.map +0 -1
  390. package/dist/sui.a9dc22e36a27b7ea1ee8.bundle.css +0 -41149
  391. package/dist/syncFilterUtils-SMop8ckR.js.map +0 -1
  392. package/dist/useInitialFocus-CGybEc6x.js.map +0 -1
  393. package/dist/useNumberField-CXFYUZ_n.js.map +0 -1
  394. package/dist/usePrefersReducedMotion-DR9B_D6w.js.map +0 -1
  395. package/dist/vite.svg +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Menu-Da2OEN0o.js","sources":["../../hammer-icon/mdi/round/arrow_drop_up.svg","../src/components/Menu/internal/MenuContext.ts","../src/components/Menu/internal/menuSelectors.ts","../src/components/Menu/MenuItem.tsx","../../hammer-icon/mdi/round/navigate_next.svg","../src/components/Menu/internal/MenuNested.tsx","../src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgArrowDropUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z\" }));\nexport default SvgArrowDropUp;\n","import { createContext } from \"react\";\n\nimport type { MenuProps } from \"../Menu\";\n\nexport type MenuContextProps = {\n closeRootMenu: () => void;\n disableAutoHeight: MenuProps[\"disableAutoHeight\"];\n};\nexport const MenuContext = createContext<MenuContextProps | null>(null);\n","export const getMenuFocusableItemsSelector = (scrollerId: string) =>\n `#${scrollerId} > [data-anv=\"menu-item\"], #${scrollerId} > div[data-nested=\"true\"] > [data-anv=\"menu-item\"], #${scrollerId} > a[href]`;\n","import {\n type ButtonHTMLAttributes,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type ReactNode,\n type MouseEvent,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../internal/functions\";\nimport type { DataTrackingId } from \"../../types\";\nimport { Icon, type IconProps } from \"../Icon\";\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport styles from \"./Menu.module.scss\";\n\nexport type MenuItemProps = {\n /** Shown before the item label. */\n icon?: IconProps[\"svg\"];\n /** Visible item content and the source of its tracking label. */\n label: ReactNode;\n /** Prevents selection while retaining the item in keyboard navigation. */\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\"> &\n DataTrackingId;\n\n/**\n * Action item within a `Menu`. Selecting it invokes `onClick` and closes\n * the root menu.\n */\nexport const MenuItem = forwardRef<\n HTMLButtonElement,\n MenuItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>((props, ref) => {\n const {\n label,\n disabled,\n icon,\n className,\n onClick,\n onMouseEnter,\n id: idProp,\n ...rest\n } = props;\n const menuContext = useContext(MenuContext);\n const uid = useId();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useMergeRefs([buttonRef, ref]);\n const [tabIndex, setTabIndex] = useState(-1);\n const itemCx = cx([styles[\"item\"]], className);\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n menuContext?.closeRootMenu();\n };\n const onMouseEnterHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(e);\n buttonRef.current?.focus();\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"MenuItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <button\n data-tracking-id={trackingId}\n {...rest}\n ref={combinedRef}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n id={idProp ?? `menuitem-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n aria-disabled={disabled}\n onClick={onClickHandler}\n onMouseEnter={onMouseEnterHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuItem.displayName = \"MenuItem\";\n","import * as React from \"react\";\nconst SvgNavigateNext = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.31 6.71a.996.996 0 0 0 0 1.41L13.19 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.72 6.7c-.38-.38-1.02-.38-1.41.01z\" }));\nexport default SvgNavigateNext;\n","import {\n type Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport {\n type ComponentPropsWithoutRef,\n useEffect,\n useId,\n useRef,\n useState,\n useLayoutEffect,\n useCallback,\n useContext,\n type MouseEvent,\n type KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport {\n getActiveElement,\n safeHidePopover,\n safeShowPopover,\n} from \"../../../internal/functions\";\nimport { Icon, type IconProps } from \"../../Icon\";\n\nimport type { MenuCommonProps, MenuReturnProps } from \"../types\";\nimport { MenuContext } from \"./MenuContext\";\nimport { getMenuFocusableItemsSelector } from \"./menuSelectors\";\n\nimport styles from \"../Menu.module.scss\";\n\nexport type MenuNestedProps = ComponentPropsWithoutRef<\"button\"> &\n MenuCommonProps & {\n /** Shown before the default submenu trigger's label. */\n icon?: IconProps[\"svg\"];\n };\n\n/** Implements nested `Menu` instances as horizontally positioned submenus. */\nexport const MenuNested = (props: MenuNestedProps) => {\n const {\n children,\n open,\n defaultOpen = false,\n label,\n className,\n icon,\n trigger,\n } = props;\n const uid = useId();\n const [tabIndex, setTabIndex] = useState(-1);\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const menuContext = useContext(MenuContext);\n\n // Stryker disable all\n /* istanbul ignore next */\n const fallbackArr = useCallback(() => {\n return menuContext?.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n }, [menuContext?.disableAutoHeight]);\n\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n }, [fallbackArr, menuContext?.disableAutoHeight, menuHeight]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 100);\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n if (!openState) return;\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [updatePosition, openState]);\n // Stryker restore all\n\n // A shared flag cancels the opposite delayed transition while focus crosses the gap.\n const popoverHoverTriggered = useRef<boolean>();\n\n const openMenu = useCallback(async () => {\n popoverHoverTriggered.current = true;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (\n !popoverHoverTriggered.current ||\n !menuRef.current ||\n !childrenRef.current\n )\n return;\n\n // Hide the unpositioned popover to avoid a visible jump.\n menuRef.current.style.opacity = \"0\";\n safeShowPopover(menuRef.current);\n\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n\n setOpenState(true);\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n getMenuFocusableItemsSelector(`scroller-${uid.replace(/:/g, \"\")}`),\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n\n // Let the positioned popover paint before starting its opacity transition.\n requestAnimationFrame(() => {\n if (!menuRef.current) return;\n menuRef.current.style.opacity = \"1\";\n });\n }, [uid, fallbackArr, menuContext?.disableAutoHeight]);\n\n const closeMenu = useCallback(async (fn?: () => void) => {\n popoverHoverTriggered.current = false;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (popoverHoverTriggered.current || !menuRef.current) return;\n fn?.();\n safeHidePopover(menuRef.current);\n setOpenState(false);\n }, []);\n\n const isControlled = typeof open !== \"undefined\";\n\n // Initial state alone does not open the native popover.\n const initialRender = useRef(true);\n useEffect(() => {\n if (initialRender.current === true) {\n initialRender.current = false;\n if (isControlled) {\n if (open && menuRef.current) {\n openMenu();\n }\n } else if (defaultOpen && menuRef.current) {\n openMenu();\n }\n return;\n }\n if (!isControlled) return;\n setOpenState(open);\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n }, [closeMenu, isControlled, open, openMenu, defaultOpen]);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const nestedContainer = containerRef.current;\n const handleFocusIn = () => {\n openMenu();\n };\n const handleFocusOut = () => {\n closeMenu();\n };\n nestedContainer.addEventListener(\"focusin\", handleFocusIn);\n nestedContainer.addEventListener(\"focusout\", handleFocusOut);\n return () => {\n nestedContainer.removeEventListener(\"focusin\", handleFocusIn);\n nestedContainer.removeEventListener(\"focusout\", handleFocusOut);\n };\n }, [closeMenu, openMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current) return;\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"Escape\") {\n menuContext?.closeRootMenu();\n }\n if (e.code === \"ArrowLeft\") {\n e.stopPropagation();\n e.preventDefault();\n invokerRef.current?.focus();\n closeMenu();\n }\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const MenuButtonOnKeyDownHandler = (e: KeyboardEvent<HTMLElement>) => {\n if (e.code === \"ArrowRight\") {\n e.stopPropagation();\n e.preventDefault();\n openMenu();\n menuRef.current\n ?.querySelector<HTMLElement>(\n getMenuFocusableItemsSelector(`scroller-${uid.replace(/:/g, \"\")}`),\n )\n ?.focus();\n }\n };\n\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n openMenu();\n };\n\n const itemCx = cx([styles[\"item\"]], className);\n\n const triggerProps: MenuReturnProps = {\n ref: invokerRef,\n onClick: MenuButtonOnClick,\n onKeyDown: MenuButtonOnKeyDownHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n onMouseEnter: (e) => {\n e.currentTarget.focus();\n },\n \"aria-haspopup\": true,\n \"aria-controls\": `menu-${uid.replace(/:/g, \"\")}`,\n \"aria-expanded\": openState,\n \"data-state\": openState ? \"open\" : \"close\",\n role: \"menuitem\",\n \"data-anv\": \"menu-item\",\n id: `menuitem-${uid.replace(/:/g, \"\")}`,\n className: itemCx,\n tabIndex,\n };\n\n return (\n <div ref={containerRef} data-nested=\"true\">\n {trigger ? (\n trigger(triggerProps)\n ) : (\n <button type=\"button\" {...triggerProps}>\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n )}\n <div\n popover=\"auto\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={styles.content}\n ref={menuRef}\n role=\"presentation\"\n onKeyDown={onKeyDownHandler}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </div>\n );\n};\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n useMemo,\n useLayoutEffect,\n useCallback,\n useContext,\n type KeyboardEvent,\n type MouseEvent,\n} from \"react\";\nimport {\n type Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, type ButtonProps } from \"../Button\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { DialogContext } from \"../Dialog/internal/DialogContext\";\nimport { getActiveElement } from \"../../internal/functions\";\nimport { Icon, type IconProps } from \"../Icon\";\nimport { safeHidePopover, safeShowPopover } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport type { DataTrackingId } from \"../../types\";\n\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { getMenuFocusableItemsSelector } from \"./internal/menuSelectors\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuNested } from \"./internal/MenuNested\";\nimport type { MenuCommonProps } from \"./types\";\n\nimport styles from \"./Menu.module.scss\";\n\nexport type MenuProps = Omit<ButtonProps, \"icon\"> &\n MenuCommonProps & {\n /** Shown before the default trigger's label. */\n icon?: IconProps[\"svg\"];\n } & DataTrackingId;\n\n/**\n * Triggered action menu with arrow-key navigation. Nest another `Menu` to\n * create a submenu; use a select component for form values.\n *\n * @example\n * <Menu label=\"Actions\">\n * <Menu.Item label=\"Edit\" onClick={edit} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={copyAsText} />\n * </Menu>\n * </Menu>\n */\nexport const Menu = Object.assign(\n function MenuInner(props: MenuProps) {\n const {\n children,\n placement = \"bottom-start\",\n open,\n defaultOpen = false,\n disableAutoHeight,\n label,\n onOutsidePress,\n trigger,\n contentClassName,\n maxHeight,\n ...rest\n } = props;\n\n const uid = useId();\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const dialogContext = useContext(DialogContext);\n const menuContext = useContext(MenuContext);\n\n // Stryker disable all\n const fallbackArr = useCallback(() => {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? [placement]\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? [placement]\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }, [disableAutoHeight, placement]);\n\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n\n computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50,\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: maxHeight\n ? `${Math.min(newHeight, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n }, [\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n disableAutoHeight,\n menuHeight,\n maxHeight,\n ]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 150);\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n if (!openState) return;\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [updatePosition, openState]);\n // Stryker restore all\n\n const openMenu = useCallback(async () => {\n if (!menuRef.current || !childrenRef.current) return;\n\n safeShowPopover(menuRef.current);\n\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50,\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n\n setOpenState(true);\n\n // Defer focus discovery until the open-state render commits.\n requestAnimationFrame(() => {\n if (!childrenRef.current) return;\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n getMenuFocusableItemsSelector(`scroller-${uid.replace(/:/g, \"\")}`),\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n });\n\n dialogContext?.setHasOpenPopover?.(true);\n }, [\n dialogContext,\n uid,\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n ]);\n\n const closeMenu = useCallback(\n async (fn?: () => void, options?: { skipInvokerRefocus?: boolean }) => {\n if (!menuRef.current || !openState) return;\n fn?.();\n setOpenState(false);\n safeHidePopover(menuRef.current);\n dialogContext?.setHasOpenPopover?.(false);\n if (!options?.skipInvokerRefocus) {\n invokerRef.current?.focus();\n }\n },\n [openState, dialogContext],\n );\n\n const isControlled = typeof open !== \"undefined\";\n\n // Initial state alone does not open the native popover.\n const initialRender = useRef(true);\n useEffect(() => {\n if (initialRender.current === true) {\n initialRender.current = false;\n if (isControlled) {\n if (open && menuRef.current) {\n openMenu();\n }\n } else if (defaultOpen && menuRef.current) {\n openMenu();\n }\n return;\n }\n if (!isControlled) return;\n if (open) {\n openMenu();\n } else {\n closeMenu(undefined, { skipInvokerRefocus: true });\n }\n }, [closeMenu, isControlled, open, openMenu, dialogContext, defaultOpen]);\n\n // Skip invoker refocus so we don't steal focus back from the next control.\n useEffect(() => {\n if (typeof document === \"undefined\" || !openState) return;\n\n const isInsideMenu = (e: Event) => {\n const path = e.composedPath();\n return (\n (!!invokerRef.current && path.includes(invokerRef.current)) ||\n (!!menuRef.current && path.includes(menuRef.current))\n );\n };\n\n let isClosable = false;\n const onMouseDownHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n if (!isInsideMenu(e)) {\n onOutsidePress?.(e);\n isClosable = true;\n }\n };\n const onMouseUpHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n if (isControlled || !isClosable || isInsideMenu(e)) return;\n\n closeMenu(undefined, { skipInvokerRefocus: true });\n };\n const onFocusInHandler = (e: FocusEvent) => {\n if (isControlled || isInsideMenu(e)) return;\n closeMenu(undefined, { skipInvokerRefocus: true });\n };\n\n document.addEventListener(\"mousedown\", onMouseDownHandler);\n document.addEventListener(\"mouseup\", onMouseUpHandler);\n document.addEventListener(\"focusin\", onFocusInHandler);\n return () => {\n document.removeEventListener(\"mousedown\", onMouseDownHandler);\n document.removeEventListener(\"mouseup\", onMouseUpHandler);\n document.removeEventListener(\"focusin\", onFocusInHandler);\n };\n }, [isControlled, openState, onOutsidePress, closeMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current || menuContext) return;\n if (e.code === \"Escape\") {\n e.stopPropagation();\n e.preventDefault();\n closeMenu();\n }\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const value = useMemo(() => {\n return {\n disableAutoHeight,\n closeRootMenu: menuContext?.closeRootMenu ?? closeMenu,\n };\n }, [disableAutoHeight, menuContext, closeMenu]);\n\n const MenuButtonOnKeyDownHandler = (e: KeyboardEvent<HTMLElement>) => {\n if (e.code === \"Escape\") {\n if (!openState) return;\n e.stopPropagation();\n e.preventDefault();\n closeMenu();\n return;\n }\n if (e.code === \"ArrowDown\") {\n focusItems?.[0].focus();\n e.stopPropagation();\n e.preventDefault();\n }\n };\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n if (openState) {\n closeMenu();\n return;\n }\n openMenu();\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"Menu\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (menuContext) {\n return (\n <MenuContext.Provider value={value}>\n <MenuNested\n data-tracking-id={trackingId}\n open={open}\n defaultOpen={defaultOpen}\n className={props.className}\n icon={props.icon}\n label={label}\n trigger={trigger}\n >\n {children}\n </MenuNested>\n </MenuContext.Provider>\n );\n }\n return (\n <MenuContext.Provider value={value}>\n {trigger ? (\n trigger({\n ref: invokerRef,\n onClick: () => MenuButtonOnClick(),\n onKeyDown: MenuButtonOnKeyDownHandler,\n \"aria-haspopup\": true,\n \"aria-controls\": `menu-${uid.replace(/:/g, \"\")}`,\n \"aria-expanded\": openState,\n \"data-state\": openState ? \"open\" : \"close\",\n })\n ) : (\n <Button\n ref={invokerRef}\n onClick={MenuButtonOnClick}\n onKeyDown={MenuButtonOnKeyDownHandler}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n data-state={openState ? \"open\" : \"close\"}\n aria-expanded={openState}\n {...rest}\n >\n {label}\n </Button>\n )}\n <div\n popover=\"manual\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={cx(styles.content, contentClassName)}\n onKeyDown={onKeyDownHandler}\n ref={menuRef}\n role=\"presentation\"\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: maxHeight\n ? `${Math.min(menuHeight ?? Infinity, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : (menuHeight ?? \"inherit\"),\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </MenuContext.Provider>\n );\n },\n {\n /** Action item that closes the root menu after selection. */\n Item: MenuItem,\n },\n);\n"],"names":["styles","Next","Up","Down"],"mappings":"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"}
1
+ {"version":3,"file":"Menu-DqP7YQgE.js","sources":["../../hammer-icon/mdi/round/arrow_drop_up.svg","../src/components/Menu/internal/MenuContext.ts","../src/components/Menu/internal/menuSelectors.ts","../src/components/Menu/MenuItem.tsx","../../hammer-icon/mdi/round/navigate_next.svg","../src/components/Menu/internal/MenuNested.tsx","../src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgArrowDropUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z\" }));\nexport default SvgArrowDropUp;\n","import { createContext } from \"react\";\n\nimport type { MenuProps } from \"../Menu\";\n\nexport type MenuContextProps = {\n closeRootMenu: () => void;\n disableAutoHeight: MenuProps[\"disableAutoHeight\"];\n};\nexport const MenuContext = createContext<MenuContextProps | null>(null);\n","export const getMenuFocusableItemsSelector = (scrollerId: string) =>\n `#${scrollerId} > [data-anv=\"menu-item\"], #${scrollerId} > div[data-nested=\"true\"] > [data-anv=\"menu-item\"], #${scrollerId} > a[href]`;\n","import {\n type ButtonHTMLAttributes,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type ReactNode,\n type MouseEvent,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../internal/functions\";\nimport type { DataTrackingId } from \"../../types\";\nimport { Icon, type IconProps } from \"../Icon\";\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport styles from \"./Menu.module.scss\";\n\nexport type MenuItemProps = {\n /** Shown before the item label. */\n icon?: IconProps[\"svg\"];\n /** Visible item content and the source of its tracking label. */\n label: ReactNode;\n /** Prevents selection while retaining the item in keyboard navigation. */\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\"> &\n DataTrackingId;\n\n/**\n * Action item within a `Menu`. Selecting it invokes `onClick` and closes\n * the root menu.\n */\nexport const MenuItem = forwardRef<\n HTMLButtonElement,\n MenuItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>((props, ref) => {\n const {\n label,\n disabled,\n icon,\n className,\n onClick,\n onMouseEnter,\n id: idProp,\n ...rest\n } = props;\n const menuContext = useContext(MenuContext);\n const uid = useId();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useMergeRefs([buttonRef, ref]);\n const [tabIndex, setTabIndex] = useState(-1);\n const itemCx = cx([styles[\"item\"]], className);\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n menuContext?.closeRootMenu();\n };\n const onMouseEnterHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(e);\n buttonRef.current?.focus();\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"MenuItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <button\n data-tracking-id={trackingId}\n {...rest}\n ref={combinedRef}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n id={idProp ?? `menuitem-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n aria-disabled={disabled}\n onClick={onClickHandler}\n onMouseEnter={onMouseEnterHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuItem.displayName = \"MenuItem\";\n","import * as React from \"react\";\nconst SvgNavigateNext = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.31 6.71a.996.996 0 0 0 0 1.41L13.19 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.72 6.7c-.38-.38-1.02-.38-1.41.01z\" }));\nexport default SvgNavigateNext;\n","import {\n type Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport {\n type ComponentPropsWithoutRef,\n useEffect,\n useId,\n useRef,\n useState,\n useLayoutEffect,\n useCallback,\n useContext,\n type MouseEvent,\n type KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport {\n getActiveElement,\n safeHidePopover,\n safeShowPopover,\n} from \"../../../internal/functions\";\nimport { Icon, type IconProps } from \"../../Icon\";\n\nimport type { MenuCommonProps, MenuReturnProps } from \"../types\";\nimport { MenuContext } from \"./MenuContext\";\nimport { getMenuFocusableItemsSelector } from \"./menuSelectors\";\n\nimport styles from \"../Menu.module.scss\";\n\nexport type MenuNestedProps = ComponentPropsWithoutRef<\"button\"> &\n MenuCommonProps & {\n /** Shown before the default submenu trigger's label. */\n icon?: IconProps[\"svg\"];\n };\n\n/** Implements nested `Menu` instances as horizontally positioned submenus. */\nexport const MenuNested = (props: MenuNestedProps) => {\n const {\n children,\n open,\n defaultOpen = false,\n label,\n className,\n icon,\n trigger,\n } = props;\n const uid = useId();\n const [tabIndex, setTabIndex] = useState(-1);\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const menuContext = useContext(MenuContext);\n\n // Stryker disable all\n /* istanbul ignore next */\n const fallbackArr = useCallback(() => {\n return menuContext?.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n }, [menuContext?.disableAutoHeight]);\n\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n }, [fallbackArr, menuContext?.disableAutoHeight, menuHeight]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 100);\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n if (!openState) return;\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [updatePosition, openState]);\n // Stryker restore all\n\n // A shared flag cancels the opposite delayed transition while focus crosses the gap.\n const popoverHoverTriggered = useRef<boolean>();\n\n const openMenu = useCallback(async () => {\n popoverHoverTriggered.current = true;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (\n !popoverHoverTriggered.current ||\n !menuRef.current ||\n !childrenRef.current\n )\n return;\n\n // Hide the unpositioned popover to avoid a visible jump.\n menuRef.current.style.opacity = \"0\";\n safeShowPopover(menuRef.current);\n\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n\n setOpenState(true);\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n getMenuFocusableItemsSelector(`scroller-${uid.replace(/:/g, \"\")}`),\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n\n // Let the positioned popover paint before starting its opacity transition.\n requestAnimationFrame(() => {\n if (!menuRef.current) return;\n menuRef.current.style.opacity = \"1\";\n });\n }, [uid, fallbackArr, menuContext?.disableAutoHeight]);\n\n const closeMenu = useCallback(async (fn?: () => void) => {\n popoverHoverTriggered.current = false;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (popoverHoverTriggered.current || !menuRef.current) return;\n fn?.();\n safeHidePopover(menuRef.current);\n setOpenState(false);\n }, []);\n\n const isControlled = typeof open !== \"undefined\";\n\n // Initial state alone does not open the native popover.\n const initialRender = useRef(true);\n useEffect(() => {\n if (initialRender.current === true) {\n initialRender.current = false;\n if (isControlled) {\n if (open && menuRef.current) {\n openMenu();\n }\n } else if (defaultOpen && menuRef.current) {\n openMenu();\n }\n return;\n }\n if (!isControlled) return;\n setOpenState(open);\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n }, [closeMenu, isControlled, open, openMenu, defaultOpen]);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const nestedContainer = containerRef.current;\n const handleFocusIn = () => {\n openMenu();\n };\n const handleFocusOut = () => {\n closeMenu();\n };\n nestedContainer.addEventListener(\"focusin\", handleFocusIn);\n nestedContainer.addEventListener(\"focusout\", handleFocusOut);\n return () => {\n nestedContainer.removeEventListener(\"focusin\", handleFocusIn);\n nestedContainer.removeEventListener(\"focusout\", handleFocusOut);\n };\n }, [closeMenu, openMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current) return;\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"Escape\") {\n menuContext?.closeRootMenu();\n }\n if (e.code === \"ArrowLeft\") {\n e.stopPropagation();\n e.preventDefault();\n invokerRef.current?.focus();\n closeMenu();\n }\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const MenuButtonOnKeyDownHandler = (e: KeyboardEvent<HTMLElement>) => {\n if (e.code === \"ArrowRight\") {\n e.stopPropagation();\n e.preventDefault();\n openMenu();\n menuRef.current\n ?.querySelector<HTMLElement>(\n getMenuFocusableItemsSelector(`scroller-${uid.replace(/:/g, \"\")}`),\n )\n ?.focus();\n }\n };\n\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n openMenu();\n };\n\n const itemCx = cx([styles[\"item\"]], className);\n\n const triggerProps: MenuReturnProps = {\n ref: invokerRef,\n onClick: MenuButtonOnClick,\n onKeyDown: MenuButtonOnKeyDownHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n onMouseEnter: (e) => {\n e.currentTarget.focus();\n },\n \"aria-haspopup\": true,\n \"aria-controls\": `menu-${uid.replace(/:/g, \"\")}`,\n \"aria-expanded\": openState,\n \"data-state\": openState ? \"open\" : \"close\",\n role: \"menuitem\",\n \"data-anv\": \"menu-item\",\n id: `menuitem-${uid.replace(/:/g, \"\")}`,\n className: itemCx,\n tabIndex,\n };\n\n return (\n <div ref={containerRef} data-nested=\"true\">\n {trigger ? (\n trigger(triggerProps)\n ) : (\n <button type=\"button\" {...triggerProps}>\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n )}\n <div\n popover=\"auto\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={styles.content}\n ref={menuRef}\n role=\"presentation\"\n onKeyDown={onKeyDownHandler}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </div>\n );\n};\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n useMemo,\n useLayoutEffect,\n useCallback,\n useContext,\n type KeyboardEvent,\n type MouseEvent,\n} from \"react\";\nimport {\n type Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, type ButtonProps } from \"../Button\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { DialogContext } from \"../Dialog/internal/DialogContext\";\nimport { getActiveElement } from \"../../internal/functions\";\nimport { Icon, type IconProps } from \"../Icon\";\nimport { safeHidePopover, safeShowPopover } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport type { DataTrackingId } from \"../../types\";\n\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { getMenuFocusableItemsSelector } from \"./internal/menuSelectors\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuNested } from \"./internal/MenuNested\";\nimport type { MenuCommonProps } from \"./types\";\n\nimport styles from \"./Menu.module.scss\";\n\nexport type MenuProps = Omit<ButtonProps, \"icon\"> &\n MenuCommonProps & {\n /** Shown before the default trigger's label. */\n icon?: IconProps[\"svg\"];\n } & DataTrackingId;\n\n/**\n * Triggered action menu with arrow-key navigation. Nest another `Menu` to\n * create a submenu; use a select component for form values.\n *\n * @example\n * <Menu label=\"Actions\">\n * <Menu.Item label=\"Edit\" onClick={edit} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={copyAsText} />\n * </Menu>\n * </Menu>\n */\nexport const Menu = Object.assign(\n function MenuInner(props: MenuProps) {\n const {\n children,\n placement = \"bottom-start\",\n open,\n defaultOpen = false,\n disableAutoHeight,\n label,\n onOutsidePress,\n trigger,\n contentClassName,\n maxHeight,\n ...rest\n } = props;\n\n const uid = useId();\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const dialogContext = useContext(DialogContext);\n const menuContext = useContext(MenuContext);\n\n // Stryker disable all\n const fallbackArr = useCallback(() => {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? [placement]\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? [placement]\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }, [disableAutoHeight, placement]);\n\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n\n computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50,\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: maxHeight\n ? `${Math.min(newHeight, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n }, [\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n disableAutoHeight,\n menuHeight,\n maxHeight,\n ]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 150);\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n if (!openState) return;\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [updatePosition, openState]);\n // Stryker restore all\n\n const openMenu = useCallback(async () => {\n if (!menuRef.current || !childrenRef.current) return;\n\n safeShowPopover(menuRef.current);\n\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50,\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n\n setOpenState(true);\n\n // Defer focus discovery until the open-state render commits.\n requestAnimationFrame(() => {\n if (!childrenRef.current) return;\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n getMenuFocusableItemsSelector(`scroller-${uid.replace(/:/g, \"\")}`),\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n });\n\n dialogContext?.setHasOpenPopover?.(true);\n }, [\n dialogContext,\n uid,\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n ]);\n\n const closeMenu = useCallback(\n async (fn?: () => void, options?: { skipInvokerRefocus?: boolean }) => {\n if (!menuRef.current || !openState) return;\n fn?.();\n setOpenState(false);\n safeHidePopover(menuRef.current);\n dialogContext?.setHasOpenPopover?.(false);\n if (!options?.skipInvokerRefocus) {\n invokerRef.current?.focus();\n }\n },\n [openState, dialogContext],\n );\n\n const isControlled = typeof open !== \"undefined\";\n\n // Initial state alone does not open the native popover.\n const initialRender = useRef(true);\n useEffect(() => {\n if (initialRender.current === true) {\n initialRender.current = false;\n if (isControlled) {\n if (open && menuRef.current) {\n openMenu();\n }\n } else if (defaultOpen && menuRef.current) {\n openMenu();\n }\n return;\n }\n if (!isControlled) return;\n if (open) {\n openMenu();\n } else {\n closeMenu(undefined, { skipInvokerRefocus: true });\n }\n }, [closeMenu, isControlled, open, openMenu, dialogContext, defaultOpen]);\n\n // Skip invoker refocus so we don't steal focus back from the next control.\n useEffect(() => {\n if (typeof document === \"undefined\" || !openState) return;\n\n const isInsideMenu = (e: Event) => {\n const path = e.composedPath();\n return (\n (!!invokerRef.current && path.includes(invokerRef.current)) ||\n (!!menuRef.current && path.includes(menuRef.current))\n );\n };\n\n let isClosable = false;\n const onMouseDownHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n if (!isInsideMenu(e)) {\n onOutsidePress?.(e);\n isClosable = true;\n }\n };\n const onMouseUpHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n if (isControlled || !isClosable || isInsideMenu(e)) return;\n\n closeMenu(undefined, { skipInvokerRefocus: true });\n };\n const onFocusInHandler = (e: FocusEvent) => {\n if (isControlled || isInsideMenu(e)) return;\n closeMenu(undefined, { skipInvokerRefocus: true });\n };\n\n document.addEventListener(\"mousedown\", onMouseDownHandler);\n document.addEventListener(\"mouseup\", onMouseUpHandler);\n document.addEventListener(\"focusin\", onFocusInHandler);\n return () => {\n document.removeEventListener(\"mousedown\", onMouseDownHandler);\n document.removeEventListener(\"mouseup\", onMouseUpHandler);\n document.removeEventListener(\"focusin\", onFocusInHandler);\n };\n }, [isControlled, openState, onOutsidePress, closeMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current || menuContext) return;\n if (e.code === \"Escape\") {\n e.stopPropagation();\n e.preventDefault();\n closeMenu();\n }\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const value = useMemo(() => {\n return {\n disableAutoHeight,\n closeRootMenu: menuContext?.closeRootMenu ?? closeMenu,\n };\n }, [disableAutoHeight, menuContext, closeMenu]);\n\n const MenuButtonOnKeyDownHandler = (e: KeyboardEvent<HTMLElement>) => {\n if (e.code === \"Escape\") {\n if (!openState) return;\n e.stopPropagation();\n e.preventDefault();\n closeMenu();\n return;\n }\n if (e.code === \"ArrowDown\") {\n focusItems?.[0].focus();\n e.stopPropagation();\n e.preventDefault();\n }\n };\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n if (openState) {\n closeMenu();\n return;\n }\n openMenu();\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"Menu\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (menuContext) {\n return (\n <MenuContext.Provider value={value}>\n <MenuNested\n data-tracking-id={trackingId}\n open={open}\n defaultOpen={defaultOpen}\n className={props.className}\n icon={props.icon}\n label={label}\n trigger={trigger}\n >\n {children}\n </MenuNested>\n </MenuContext.Provider>\n );\n }\n return (\n <MenuContext.Provider value={value}>\n {trigger ? (\n trigger({\n ref: invokerRef,\n onClick: () => MenuButtonOnClick(),\n onKeyDown: MenuButtonOnKeyDownHandler,\n \"aria-haspopup\": true,\n \"aria-controls\": `menu-${uid.replace(/:/g, \"\")}`,\n \"aria-expanded\": openState,\n \"data-state\": openState ? \"open\" : \"close\",\n })\n ) : (\n <Button\n ref={invokerRef}\n onClick={MenuButtonOnClick}\n onKeyDown={MenuButtonOnKeyDownHandler}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n data-state={openState ? \"open\" : \"close\"}\n aria-expanded={openState}\n {...rest}\n >\n {label}\n </Button>\n )}\n <div\n popover=\"manual\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={cx(styles.content, contentClassName)}\n onKeyDown={onKeyDownHandler}\n ref={menuRef}\n role=\"presentation\"\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: maxHeight\n ? `${Math.min(menuHeight ?? Infinity, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : (menuHeight ?? \"inherit\"),\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </MenuContext.Provider>\n );\n },\n {\n /** Action item that closes the root menu after selection. */\n Item: MenuItem,\n },\n);\n"],"names":["styles","Next","Up","Down"],"mappings":";;;;;;;;;;;;;;;AACA,MAAM,cAAc,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,6GAA6G,EAAE,CAAC,CAAC;;ACO9U,MAAM,WAAA,GAAc,cAAuC,IAAI,CAAA;;ACR/D,MAAM,6BAAA,GAAgC,CAAC,UAAA,KAC5C,CAAA,CAAA,EAAI,UAAU,CAAA,4BAAA,EAA+B,UAAU,yDAAyD,UAAU,CAAA,UAAA,CAAA;;ACkCrH,MAAM,QAAA,GAAW,UAAA,CAGtB,CAAC,KAAA,EAAO,GAAA,KAAQ;AAChB,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,EAAA,EAAI,MAAA;AAAA,IACJ,GAAG;AAAA,GACL,GAAI,KAAA;AACJ,EAAA,MAAM,WAAA,GAAc,WAAW,WAAW,CAAA;AAC1C,EAAA,MAAM,MAAM,KAAA,EAAM;AAClB,EAAA,MAAM,SAAA,GAAY,OAA0B,IAAI,CAAA;AAChD,EAAA,MAAM,WAAA,GAAc,YAAA,CAAa,CAAC,SAAA,EAAW,GAAG,CAAC,CAAA;AACjD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,SAAS,EAAA,CAAG,CAACA,WAAO,MAAM,CAAC,GAAG,SAAS,CAAA;AAC7C,EAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAqC;AAC3D,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA;AAAA,IACF;AACA,IAAA,OAAA,GAAU,CAAC,CAAA;AACX,IAAA,WAAA,EAAa,aAAA,EAAc;AAAA,EAC7B,CAAA;AACA,EAAA,MAAM,mBAAA,GAAsB,CAAC,CAAA,KAAqC;AAChE,IAAA,YAAA,GAAe,CAAC,CAAA;AAChB,IAAA,SAAA,CAAU,SAAS,KAAA,EAAM;AAAA,EAC3B,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,WAAA,CAAY,CAAC,CAAA;AAAA,EACf,CAAA;AACA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,WAAA,CAAY,EAAE,CAAA;AAAA,EAChB,CAAA;AAEA,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,KAAA,EAAO,gBAAA,CAAiB,KAAA,CAAM,KAAK;AAAA,GACrC;AAEA,EAAA,MAAM,aAAa,aAAA,CAAc;AAAA,IAC/B,IAAA,EAAM,UAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,GACxC,CAAA;AAED,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,kBAAA,EAAkB,UAAA;AAAA,MACjB,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,WAAA;AAAA,MACL,IAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAK,UAAA;AAAA,MACL,UAAA,EAAS,WAAA;AAAA,MACT,IAAI,MAAA,IAAU,CAAA,SAAA,EAAY,IAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,MAC/C,SAAA,EAAW,MAAA;AAAA,MACX,QAAA;AAAA,MACA,eAAA,EAAe,QAAA;AAAA,MACf,OAAA,EAAS,cAAA;AAAA,MACT,YAAA,EAAc,mBAAA;AAAA,MACd,OAAA,EAAS,cAAA;AAAA,MACT,MAAA,EAAQ,aAAA;AAAA,MAEP,QAAA,EAAA;AAAA,QAAA,IAAA,mBAAO,GAAA,CAAC,QAAK,OAAA,EAAO,IAAA,EAAC,eAAW,IAAA,EAAC,GAAA,EAAK,MAAM,CAAA,GAAK,IAAA;AAAA,QACjD;AAAA;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAED,QAAA,CAAS,WAAA,GAAc,UAAA;;AC5GvB,MAAM,eAAe,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,oJAAoJ,EAAE,CAAC,CAAC;;AC8CtX,MAAM,UAAA,GAAa,CAAC,KAAA,KAA2B;AACpD,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA,GAAc,KAAA;AAAA,IACd,KAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,MAAM,KAAA,EAAM;AAClB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,QAAA,CAAkB,QAAQ,WAAW,CAAA;AACvE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,CAAC,CAAA;AAC5C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAwB,IAAI,CAAA;AAChE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,UAAA,GAAa,OAA0B,IAAI,CAAA;AACjD,EAAA,MAAM,OAAA,GAAU,OAAuB,IAAI,CAAA;AAC3C,EAAA,MAAM,WAAA,GAAc,OAAuB,IAAI,CAAA;AAC/C,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA,EAAwB;AAC5D,EAAA,MAAM,WAAA,GAAc,WAAW,WAAW,CAAA;AAI1C,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,OAAO,WAAA,EAAa,oBAChB,CAAC,aAAa,IACd,CAAC,aAAA,EAAe,WAAA,EAAa,YAAA,EAAc,UAAU,CAAA;AAAA,EAC3D,CAAA,EAAG,CAAC,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAEnC,EAAA,MAAM,cAAA,GAAiB,YAAY,MAAM;AACvC,IAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAC7C,IAAA,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAAA,MACnD,SAAA,EAAW,aAAA;AAAA,MACX,UAAA,EAAY;AAAA,QACV,MAAA,CAAO;AAAA,UACL,QAAA,EAAU,CAAA;AAAA,UACV,aAAA,EAAe;AAAA,SAChB,CAAA;AAAA,QACD,IAAA,CAAK;AAAA,UACH,gBAAA,EAAkB,SAAA;AAAA,UAClB,oBAAoB,WAAA;AAAY,SACjC,CAAA;AAAA,QACD,KAAA,CAAM;AAAA,UACJ,QAAA,EAAU,CAAC,WAAA,EAAa,iBAAA;AAAA,UACxB,SAAA,EAAW,KAAA;AAAA,UACX,SAAS,UAAA,CAAW;AAAA,YAClB,QAAA,EAAU,CAAC,WAAA,EAAa;AAAA,WACzB;AAAA,SACF,CAAA;AAAA,QACD,IAAA,CAAK;AAAA,UACH,OAAA,EAAS,CAAA;AAAA,UACT,KAAA,CAAM,EAAE,cAAA,EAAgB,eAAA,EAAiB,UAAS,EAAG;AACnD,YAAA,IAAI,aAAa,iBAAA,EAAmB;AACpC,YAAA,MAAM,YAAY,eAAA,GAAkB,EAAA;AACpC,YAAA,IAAI,KAAK,GAAA,CAAA,CAAK,UAAA,IAAc,CAAA,IAAK,SAAS,IAAI,CAAA,EAAG;AAC/C,cAAA,aAAA,CAAc,SAAS,CAAA;AACvB,cAAA,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO;AAAA,gBACrC,QAAA,EAAU,CAAA,EAAG,cAAA,GAAiB,EAAE,CAAA,EAAA,CAAA;AAAA,gBAChC,SAAA,EAAW,GAAG,SAAS,CAAA,EAAA;AAAA,eACxB,CAAA;AAAA,YACH;AAAA,UACF;AAAA,SACD;AAAA;AACH,KACD,CAAA,CAAE,IAAA,CAAK,CAAC,EAAE,CAAA,EAAG,GAAE,KAAM;AACpB,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,MAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO;AAAA,QACnC,IAAA,EAAM,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,QACV,GAAA,EAAK,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAA;AAAA,OACd,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH,GAAG,CAAC,WAAA,EAAa,WAAA,EAAa,iBAAA,EAAmB,UAAU,CAAC,CAAA;AAE5D,EAAA,MAAM,aAAA,GAAgB,OAA8B,IAAI,CAAA;AACxD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA,YAAA,CAAa,CAAC,CAAA;AACd,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,IAAA,aAAA,CAAc,UAAU,OAAA,CAAQ,OAAA;AAEhC,IAAA,IAAI,aAAA,GAA+B,IAAA;AACnC,KAAuB;AAAA,MACrB,MAAA,EAAQ,cAAc,OAAA,CAAQ,YAAA;AAAA,MAC9B,YAAA,EAAc,WAAA,CAAY,OAAA,EAAS,YAAA,IAAgB;AAAA;AAGrD,IAAA,MAAM,YAAA,GAAe,CAAC,MAAA,EAAgB,YAAA,KAAyB;AAC7D,MAAA,IAAI,CAAC,YAAY,OAAA,EAAS;AAC1B,MAAA,MAAM,aAAa,YAAA,GAAe,MAAA;AAClC,MAAA,aAAA,CAAc,UAAA,IAAc,WAAA,CAAY,OAAA,CAAQ,SAAA,GAAY,CAAC,CAAA;AAC7D,MAAA,WAAA,CAAY,UAAA,IAAc,YAAA,GAAe,MAAA,GAAS,SAAA,GAAY,KAAK,CAAC,CAAA;AAAA,IACtE,CAAA;AAEA,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,MAAM;AACxC,MAAA,IAAI,CAAC,WAAA,CAAY,OAAA,IAAW,CAAC,cAAc,OAAA,EAAS;AAEpD,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,MAAA,CAAO,aAAa,aAAa,CAAA;AAAA,MACnC;AAEA,MAAA,aAAA,GAAgB,MAAA,CAAO,WAAW,MAAM;AACtC,QAAA,MAAM,SAAA,GAAY,aAAA,CAAc,OAAA,EAAS,YAAA,IAAgB,CAAA;AACzD,QAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,OAAA,EAAS,YAAA,IAAgB,CAAA;AAE7D,QAAA,IAAI,CAAC,SAAA,EAAW;AAKhB,QAAA,YAAA,CAAa,WAAW,eAAe,CAAA;AAAA,MACzC,GAAG,GAAG,CAAA;AAAA,IACR,CAAC,CAAA;AAED,IAAA,IAAI,cAAc,OAAA,EAAS;AACzB,MAAA,QAAA,CAAS,OAAA,CAAQ,cAAc,OAAO,CAAA;AAAA,IACxC;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,MAAA,CAAO,aAAa,aAAa,CAAA;AAAA,MACnC;AACA,MAAA,IAAI,cAAc,OAAA,EAAS;AACzB,QAAA,QAAA,CAAS,SAAA,CAAU,cAAc,OAAO,CAAA;AAAA,MAC1C;AACA,MAAA,QAAA,CAAS,UAAA,EAAW;AAAA,IACtB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,SAAS,CAAC,CAAA;AAEzB,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,CAAC,WAAW,OAAA,EAAS;AAC7C,IAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,IAAA,IAAI,SAAA,GAA2B,IAAA;AAC/B,IAAA,MAAM,UAAU,UAAA,CAAW,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,SAAS,MAAM;AACpE,MAAA,SAAA,GAAY,sBAAsB,cAAc,CAAA;AAAA,IAClD,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,SAAA,uBAAgC,SAAS,CAAA;AAC7C,MAAA,OAAA,EAAQ;AAAA,IACV,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,cAAA,EAAgB,SAAS,CAAC,CAAA;AAI9B,EAAA,MAAM,wBAAwB,MAAA,EAAgB;AAE9C,EAAA,MAAM,QAAA,GAAW,YAAY,YAAY;AACvC,IAAA,qBAAA,CAAsB,OAAA,GAAU,IAAA;AAChC,IAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,OAAA,EAAS,GAAG,CAAC,CAAA;AACvD,IAAA,IACE,CAAC,qBAAA,CAAsB,OAAA,IACvB,CAAC,OAAA,CAAQ,OAAA,IACT,CAAC,WAAA,CAAY,OAAA;AAEb,MAAA;AAGF,IAAA,OAAA,CAAQ,OAAA,CAAQ,MAAM,OAAA,GAAU,GAAA;AAChC,IAAA,eAAA,CAAgB,QAAQ,OAAO,CAAA;AAE/B,IAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAE7C,IAAA,MAAM,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAAA,MACzD,SAAA,EAAW,aAAA;AAAA,MACX,UAAA,EAAY;AAAA,QACV,MAAA,CAAO;AAAA,UACL,QAAA,EAAU,CAAA;AAAA,UACV,aAAA,EAAe;AAAA,SAChB,CAAA;AAAA,QACD,IAAA,CAAK;AAAA,UACH,gBAAA,EAAkB,SAAA;AAAA,UAClB,oBAAoB,WAAA;AAAY,SACjC,CAAA;AAAA,QACD,KAAA,CAAM;AAAA,UACJ,QAAA,EAAU,CAAC,WAAA,EAAa,iBAAA;AAAA,UACxB,SAAA,EAAW,KAAA;AAAA,UACX,SAAS,UAAA,CAAW;AAAA,YAClB,QAAA,EAAU,CAAC,WAAA,EAAa;AAAA,WACzB;AAAA,SACF;AAAA;AACH,KACD,CAAA,CAAE,IAAA,CAAK,CAAC,EAAE,CAAA,EAAG,GAAE,KAAM;AACpB,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,MAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO;AAAA,QACnC,IAAA,EAAM,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,QACV,GAAA,EAAK,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAA;AAAA,OACd,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,MAAM,aAAa,KAAA,CAAM,IAAA;AAAA,MACvB,YAAY,OAAA,CAAQ,gBAAA;AAAA,QAClB,8BAA8B,CAAA,SAAA,EAAY,GAAA,CAAI,QAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAE;AAAA;AACnE,KACF;AACA,IAAA,aAAA,CAAc,UAAU,CAAA;AAGxB,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,MAAA,OAAA,CAAQ,OAAA,CAAQ,MAAM,OAAA,GAAU,GAAA;AAAA,IAClC,CAAC,CAAA;AAAA,EACH,GAAG,CAAC,GAAA,EAAK,WAAA,EAAa,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAErD,EAAA,MAAM,SAAA,GAAY,WAAA,CAAY,OAAO,EAAA,KAAoB;AACvD,IAAA,qBAAA,CAAsB,OAAA,GAAU,KAAA;AAChC,IAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,OAAA,EAAS,GAAG,CAAC,CAAA;AACvD,IAAA,IAAI,qBAAA,CAAsB,OAAA,IAAW,CAAC,OAAA,CAAQ,OAAA,EAAS;AACvD,IAAA,EAAA,IAAK;AACL,IAAA,eAAA,CAAgB,QAAQ,OAAO,CAAA;AAC/B,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAe,OAAO,IAAA,KAAS,WAAA;AAGrC,EAAA,MAAM,aAAA,GAAgB,OAAO,IAAI,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,aAAA,CAAc,YAAY,IAAA,EAAM;AAClC,MAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,IAAI,IAAA,IAAQ,QAAQ,OAAA,EAAS;AAC3B,UAAA,QAAA,EAAS;AAAA,QACX;AAAA,MACF,CAAA,MAAA,IAAW,WAAA,IAAe,OAAA,CAAQ,OAAA,EAAS;AACzC,QAAA,QAAA,EAAS;AAAA,MACX;AACA,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAC,YAAA,EAAc;AACnB,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,QAAA,EAAS;AAAA,IACX,CAAA,MAAO;AACL,MAAA,SAAA,EAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,SAAA,EAAW,cAAc,IAAA,EAAM,QAAA,EAAU,WAAW,CAAC,CAAA;AAEzD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,IAAA,MAAM,kBAAkB,YAAA,CAAa,OAAA;AACrC,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,QAAA,EAAS;AAAA,IACX,CAAA;AACA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,SAAA,EAAU;AAAA,IACZ,CAAA;AACA,IAAA,eAAA,CAAgB,gBAAA,CAAiB,WAAW,aAAa,CAAA;AACzD,IAAA,eAAA,CAAgB,gBAAA,CAAiB,YAAY,cAAc,CAAA;AAC3D,IAAA,OAAO,MAAM;AACX,MAAA,eAAA,CAAgB,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAC5D,MAAA,eAAA,CAAgB,mBAAA,CAAoB,YAAY,cAAc,CAAA;AAAA,IAChE,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,QAAQ,CAAC,CAAA;AAExB,EAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAqC;AAC7D,IAAA,IAAI,CAAC,SAAA,IAAa,CAAC,WAAA,CAAY,OAAA,EAAS;AAExC,IAAA,MAAM,qBAAqB,UAAA,EAAY,SAAA;AAAA,MACrC,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,gBAAA,CAAiB,QAAQ,CAAA,EAAG;AAAA,KACpD;AAEA,IAAA,MAAM,SAAA,GAAY,aAAa,CAAC,CAAA;AAChC,IAAA,MAAM,QAAA,GAAW,UAAA,GAAa,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAEnD,IAAA,IAAI,CAAA,CAAE,SAAS,QAAA,EAAU;AACvB,MAAA,WAAA,EAAa,aAAA,EAAc;AAAA,IAC7B;AACA,IAAA,IAAI,CAAA,CAAE,SAAS,WAAA,EAAa;AAC1B,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAC1B,MAAA,SAAA,EAAU;AAAA,IACZ;AACA,IAAA,IAAI,CAAA,CAAE,SAAS,WAAA,EAAa;AAC1B,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,IAAI,kBAAA,KAAA,CAAwB,UAAA,EAAY,MAAA,IAAU,CAAA,IAAK,CAAA,EAAG;AACxD,QAAA,SAAA,CAAU,KAAA,EAAM;AAChB,QAAA;AAAA,MACF;AACA,MAAA,MAAM,QAAA,GAAW,UAAA,GAAA,CACd,kBAAA,IAAsB,CAAA,IAAK,CAC9B,CAAA;AACA,MAAA,QAAA,CAAS,KAAA,EAAM;AACf,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAI,uBAAuB,CAAA,EAAG;AAC5B,QAAA,QAAA,CAAS,KAAA,EAAM;AACf,QAAA;AAAA,MACF;AACA,MAAA,MAAM,QAAA,GAAW,UAAA,GAAA,CACd,kBAAA,IAAsB,CAAA,IAAK,CAC9B,CAAA;AACA,MAAA,QAAA,CAAS,KAAA,EAAM;AACf,MAAA;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,WAAA,CAAY,CAAC,CAAA;AAAA,EACf,CAAA;AACA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,WAAA,CAAY,EAAE,CAAA;AAAA,EAChB,CAAA;AAEA,EAAA,MAAM,0BAAA,GAA6B,CAAC,CAAA,KAAkC;AACpE,IAAA,IAAI,CAAA,CAAE,SAAS,YAAA,EAAc;AAC3B,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,QAAA,EAAS;AACT,MAAA,OAAA,CAAQ,OAAA,EACJ,aAAA;AAAA,QACA,8BAA8B,CAAA,SAAA,EAAY,GAAA,CAAI,QAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAE;AAAA,SAEjE,KAAA,EAAM;AAAA,IACZ;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,YAAA,EAAc;AAClB,IAAA,QAAA,EAAS;AAAA,EACX,CAAA;AAEA,EAAA,MAAM,SAAS,EAAA,CAAG,CAACA,WAAO,MAAM,CAAC,GAAG,SAAS,CAAA;AAE7C,EAAA,MAAM,YAAA,GAAgC;AAAA,IACpC,GAAA,EAAK,UAAA;AAAA,IACL,OAAA,EAAS,iBAAA;AAAA,IACT,SAAA,EAAW,0BAAA;AAAA,IACX,OAAA,EAAS,cAAA;AAAA,IACT,MAAA,EAAQ,aAAA;AAAA,IACR,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,MAAA,CAAA,CAAE,cAAc,KAAA,EAAM;AAAA,IACxB,CAAA;AAAA,IACA,eAAA,EAAiB,IAAA;AAAA,IACjB,iBAAiB,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,IAC9C,eAAA,EAAiB,SAAA;AAAA,IACjB,YAAA,EAAc,YAAY,MAAA,GAAS,OAAA;AAAA,IACnC,IAAA,EAAM,UAAA;AAAA,IACN,UAAA,EAAY,WAAA;AAAA,IACZ,IAAI,CAAA,SAAA,EAAY,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,IACrC,SAAA,EAAW,MAAA;AAAA,IACX;AAAA,GACF;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,YAAA,EAAc,eAAY,MAAA,EACjC,QAAA,EAAA;AAAA,IAAA,OAAA,GACC,OAAA,CAAQ,YAAY,CAAA,mBAEpB,IAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAU,GAAG,YAAA,EACvB,QAAA,EAAA;AAAA,MAAA,IAAA,mBAAO,GAAA,CAAC,QAAK,OAAA,EAAO,IAAA,EAAC,eAAW,IAAA,EAAC,GAAA,EAAK,MAAM,CAAA,GAAK,IAAA;AAAA,MACjD,KAAA;AAAA,0BACA,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,GAAE,EAAG,CAAA;AAAA,sBAC7B,GAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAC,KAAKC,eAAA,EAAM;AAAA,KAAA,EAC/B,CAAA;AAAA,oBAEF,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,MAAA;AAAA,QACR,IAAI,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,QACjC,UAAA,EAAS,cAAA;AAAA,QACT,WAAWD,UAAA,CAAO,OAAA;AAAA,QAClB,GAAA,EAAK,OAAA;AAAA,QACL,IAAA,EAAK,cAAA;AAAA,QACL,SAAA,EAAW,gBAAA;AAAA,QAEV,QAAA,EAAA;AAAA,UAAA,UAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAWA,WAAO,UAAU,CAAA,EAAG,eAAW,IAAA,EAC7C,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKE,gBAAI,IAAA,EAAK,QAAA,EAAS,WAAWF,UAAA,CAAO,YAAY,GAAG,CAAA,EAChE,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAWA,UAAA,CAAO,QAAA;AAAA,cAClB,QAAA,EAAU,EAAA;AAAA,cACV,GAAA,EAAK,WAAA;AAAA,cACL,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,UAAA;AAAA,gBACV,WAAW,UAAA,IAAc;AAAA,eAC3B;AAAA,cACA,UAAU,CAAC,CAAA,KACT,YAAA,CAAa,CAAA,CAAE,cAAc,SAAS,CAAA;AAAA,cAExC,IAAA,EAAK,MAAA;AAAA,cACL,IAAI,CAAA,SAAA,EAAY,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,cAEpC;AAAA;AAAA,WACH;AAAA,UACC,4BACC,GAAA,CAAC,KAAA,EAAA,EAAI,WAAWA,UAAA,CAAO,YAAY,GAAG,aAAA,EAAW,IAAA,EAC/C,8BAAC,IAAA,EAAA,EAAK,GAAA,EAAKG,kBAAM,IAAA,EAAK,QAAA,EAAS,WAAWH,UAAA,CAAO,YAAY,GAAG,CAAA,EAClE;AAAA;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ,CAAA;;ACxYO,MAAM,OAAO,MAAA,CAAO,MAAA;AAAA,EACzB,SAAS,UAAU,KAAA,EAAkB;AACnC,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA,GAAY,cAAA;AAAA,MACZ,IAAA;AAAA,MACA,WAAA,GAAc,KAAA;AAAA,MACd,iBAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,MAAM,KAAA,EAAM;AAClB,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,QAAA,CAAkB,QAAQ,WAAW,CAAA;AACvE,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,CAAC,CAAA;AAC5C,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAwB,IAAI,CAAA;AAChE,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9C,IAAA,MAAM,UAAA,GAAa,OAA0B,IAAI,CAAA;AACjD,IAAA,MAAM,OAAA,GAAU,OAAuB,IAAI,CAAA;AAC3C,IAAA,MAAM,WAAA,GAAc,OAAuB,IAAI,CAAA;AAC/C,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA,EAAwB;AAC5D,IAAA,MAAM,aAAA,GAAgB,WAAW,aAAa,CAAA;AAC9C,IAAA,MAAM,WAAA,GAAc,WAAW,WAAW,CAAA;AAG1C,IAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,MAAA,IAAI,SAAA,CAAU,UAAA,CAAW,KAAK,CAAA,EAAG;AAC/B,QAAA,OAAO,iBAAA,GACH,CAAC,SAAS,CAAA,GACV,CAAC,WAAA,EAAa,SAAA,EAAW,gBAAgB,YAAY,CAAA;AAAA,MAC3D;AACA,MAAA,OAAO,iBAAA,GACH,CAAC,SAAS,CAAA,GACV,CAAC,cAAA,EAAgB,YAAA,EAAc,aAAa,SAAS,CAAA;AAAA,IAC3D,CAAA,EAAG,CAAC,iBAAA,EAAmB,SAAS,CAAC,CAAA;AAGjC,IAAA,MAAM,cAAA,GAAiB,YAAY,MAAM;AACvC,MAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAE7C,MAAA,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAAA,QACnD,SAAA;AAAA,QACA,UAAA,EAAY;AAAA,UACV,MAAA,CAAO;AAAA,YACL,QAAA,EAAU,CAAA;AAAA,YACV,aAAA,EAAe;AAAA,WAChB,CAAA;AAAA,UACD,IAAA,CAAK;AAAA,YACH,gBAAA,EAAkB,SAAA;AAAA,YAClB,oBAAoB,WAAA,EAAY;AAAA,YAChC,OAAA,EAAS;AAAA,WACV,CAAA;AAAA,UACD,KAAA,CAAM;AAAA,YACJ,QAAA,EAAU,CAAC,WAAA,EAAa,iBAAA;AAAA,YACxB,SAAA,EAAW,KAAA;AAAA,YACX,SAAS,UAAA,CAAW;AAAA,cAClB,QAAA,EAAU,CAAC,WAAA,EAAa;AAAA,aACzB;AAAA,WACF,CAAA;AAAA,UACD,IAAA,CAAK;AAAA,YACH,OAAA,EAAS,CAAA;AAAA,YACT,KAAA,CAAM,EAAE,cAAA,EAAgB,eAAA,EAAiB,UAAS,EAAG;AACnD,cAAA,IAAI,iBAAA,IAAqB,aAAa,iBAAA,EAAmB;AACzD,cAAA,MAAM,YAAY,eAAA,GAAkB,EAAA;AACpC,cAAA,IAAI,KAAK,GAAA,CAAA,CAAK,UAAA,IAAc,CAAA,IAAK,SAAS,IAAI,CAAA,EAAG;AAC/C,gBAAA,aAAA,CAAc,SAAS,CAAA;AACvB,gBAAA,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO;AAAA,kBACrC,QAAA,EAAU,CAAA,EAAG,cAAA,GAAiB,EAAE,CAAA,EAAA,CAAA;AAAA,kBAChC,WAAW,SAAA,GACP,CAAA,EAAG,KAAK,GAAA,CAAI,SAAA,EAAW,OAAO,SAAA,KAAc,QAAA,GAAW,SAAA,GAAY,QAAA,CAAS,UAAU,QAAA,EAAU,CAAC,CAAC,CAAA,EAAA,CAAA,GAClG,GAAG,SAAS,CAAA,EAAA;AAAA,iBACjB,CAAA;AAAA,cACH;AAAA,YACF;AAAA,WACD;AAAA;AACH,OACD,CAAA,CAAE,IAAA,CAAK,CAAC,EAAE,CAAA,EAAG,GAAE,KAAM;AACpB,QAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,QAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO;AAAA,UACnC,IAAA,EAAM,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,UACV,GAAA,EAAK,GAAG,CAAC,CAAA,EAAA;AAAA,SACV,CAAA;AACD,QAAA,OAAA,CAAQ,OAAA,CAAQ,QAAQ,UAAA,GAAa,MAAA;AAAA,MACvC,CAAC,CAAA;AAAA,IACH,CAAA,EAAG;AAAA,MACD,SAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA,EAAa,iBAAA;AAAA,MACb,iBAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB,OAA8B,IAAI,CAAA;AAExD,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,aAAA,CAAc,IAAI,CAAA;AAClB,QAAA,YAAA,CAAa,CAAC,CAAA;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,MAAA,aAAA,CAAc,UAAU,OAAA,CAAQ,OAAA;AAEhC,MAAA,IAAI,aAAA,GAA+B,IAAA;AACnC,OAAuB;AAAA,QACrB,MAAA,EAAQ,cAAc,OAAA,CAAQ,YAAA;AAAA,QAC9B,YAAA,EAAc,WAAA,CAAY,OAAA,EAAS,YAAA,IAAgB;AAAA;AAGrD,MAAA,MAAM,YAAA,GAAe,CAAC,MAAA,EAAgB,YAAA,KAAyB;AAC7D,QAAA,IAAI,CAAC,YAAY,OAAA,EAAS;AAC1B,QAAA,MAAM,aAAa,YAAA,GAAe,MAAA;AAClC,QAAA,aAAA,CAAc,UAAA,IAAc,WAAA,CAAY,OAAA,CAAQ,SAAA,GAAY,CAAC,CAAA;AAC7D,QAAA,WAAA,CAAY,UAAA,IAAc,YAAA,GAAe,MAAA,GAAS,SAAA,GAAY,KAAK,CAAC,CAAA;AAAA,MACtE,CAAA;AAEA,MAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,MAAM;AACxC,QAAA,IAAI,CAAC,WAAA,CAAY,OAAA,IAAW,CAAC,cAAc,OAAA,EAAS;AAEpD,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,MAAA,CAAO,aAAa,aAAa,CAAA;AAAA,QACnC;AAEA,QAAA,aAAA,GAAgB,MAAA,CAAO,WAAW,MAAM;AACtC,UAAA,MAAM,SAAA,GAAY,aAAA,CAAc,OAAA,EAAS,YAAA,IAAgB,CAAA;AACzD,UAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,OAAA,EAAS,YAAA,IAAgB,CAAA;AAE7D,UAAA,IAAI,CAAC,SAAA,EAAW;AAKhB,UAAA,YAAA,CAAa,WAAW,eAAe,CAAA;AAAA,QACzC,GAAG,GAAG,CAAA;AAAA,MACR,CAAC,CAAA;AAED,MAAA,IAAI,cAAc,OAAA,EAAS;AACzB,QAAA,QAAA,CAAS,OAAA,CAAQ,cAAc,OAAO,CAAA;AAAA,MACxC;AAEA,MAAA,OAAO,MAAM;AACX,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,MAAA,CAAO,aAAa,aAAa,CAAA;AAAA,QACnC;AACA,QAAA,IAAI,cAAc,OAAA,EAAS;AACzB,UAAA,QAAA,CAAS,SAAA,CAAU,cAAc,OAAO,CAAA;AAAA,QAC1C;AACA,QAAA,QAAA,CAAS,UAAA,EAAW;AAAA,MACtB,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,SAAA,EAAW,SAAS,CAAC,CAAA;AAEzB,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,CAAC,WAAW,OAAA,EAAS;AAC7C,MAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,MAAA,IAAI,SAAA,GAA2B,IAAA;AAC/B,MAAA,MAAM,UAAU,UAAA,CAAW,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,SAAS,MAAM;AACpE,QAAA,SAAA,GAAY,sBAAsB,cAAc,CAAA;AAAA,MAClD,CAAC,CAAA;AAED,MAAA,OAAO,MAAM;AACX,QAAA,IAAI,SAAA,uBAAgC,SAAS,CAAA;AAC7C,QAAA,OAAA,EAAQ;AAAA,MACV,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,cAAA,EAAgB,SAAS,CAAC,CAAA;AAG9B,IAAA,MAAM,QAAA,GAAW,YAAY,YAAY;AACvC,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,CAAC,YAAY,OAAA,EAAS;AAE9C,MAAA,eAAA,CAAgB,QAAQ,OAAO,CAAA;AAE/B,MAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAE7C,MAAA,MAAM,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAAA,QACzD,SAAA;AAAA,QACA,UAAA,EAAY;AAAA,UACV,MAAA,CAAO;AAAA,YACL,QAAA,EAAU,CAAA;AAAA,YACV,aAAA,EAAe;AAAA,WAChB,CAAA;AAAA,UACD,IAAA,CAAK;AAAA,YACH,gBAAA,EAAkB,SAAA;AAAA,YAClB,oBAAoB,WAAA,EAAY;AAAA,YAChC,OAAA,EAAS;AAAA,WACV,CAAA;AAAA,UACD,KAAA,CAAM;AAAA,YACJ,QAAA,EAAU,CAAC,WAAA,EAAa,iBAAA;AAAA,YACxB,SAAA,EAAW,KAAA;AAAA,YACX,SAAS,UAAA,CAAW;AAAA,cAClB,QAAA,EAAU,CAAC,WAAA,EAAa;AAAA,aACzB;AAAA,WACF;AAAA;AACH,OACD,CAAA,CAAE,IAAA,CAAK,CAAC,EAAE,CAAA,EAAG,GAAE,KAAM;AACpB,QAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,QAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO;AAAA,UACnC,IAAA,EAAM,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,UACV,GAAA,EAAK,GAAG,CAAC,CAAA,EAAA;AAAA,SACV,CAAA;AACD,QAAA,OAAA,CAAQ,OAAA,CAAQ,QAAQ,UAAA,GAAa,MAAA;AAAA,MACvC,CAAC,CAAA;AAED,MAAA,YAAA,CAAa,IAAI,CAAA;AAGjB,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,IAAI,CAAC,YAAY,OAAA,EAAS;AAC1B,QAAA,MAAM,aAAa,KAAA,CAAM,IAAA;AAAA,UACvB,YAAY,OAAA,CAAQ,gBAAA;AAAA,YAClB,8BAA8B,CAAA,SAAA,EAAY,GAAA,CAAI,QAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAE;AAAA;AACnE,SACF;AACA,QAAA,aAAA,CAAc,UAAU,CAAA;AAAA,MAC1B,CAAC,CAAA;AAED,MAAA,aAAA,EAAe,oBAAoB,IAAI,CAAA;AAAA,IACzC,CAAA,EAAG;AAAA,MACD,aAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA,EAAa;AAAA,KACd,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,WAAA;AAAA,MAChB,OAAO,IAAiB,OAAA,KAA+C;AACrE,QAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,CAAC,SAAA,EAAW;AACpC,QAAA,EAAA,IAAK;AACL,QAAA,YAAA,CAAa,KAAK,CAAA;AAClB,QAAA,eAAA,CAAgB,QAAQ,OAAO,CAAA;AAC/B,QAAA,aAAA,EAAe,oBAAoB,KAAK,CAAA;AACxC,QAAA,IAAI,CAAC,SAAS,kBAAA,EAAoB;AAChC,UAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,QAC5B;AAAA,MACF,CAAA;AAAA,MACA,CAAC,WAAW,aAAa;AAAA,KAC3B;AAEA,IAAA,MAAM,YAAA,GAAe,OAAO,IAAA,KAAS,WAAA;AAGrC,IAAA,MAAM,aAAA,GAAgB,OAAO,IAAI,CAAA;AACjC,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,aAAA,CAAc,YAAY,IAAA,EAAM;AAClC,QAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,QAAA,IAAI,YAAA,EAAc;AAChB,UAAA,IAAI,IAAA,IAAQ,QAAQ,OAAA,EAAS;AAC3B,YAAA,QAAA,EAAS;AAAA,UACX;AAAA,QACF,CAAA,MAAA,IAAW,WAAA,IAAe,OAAA,CAAQ,OAAA,EAAS;AACzC,UAAA,QAAA,EAAS;AAAA,QACX;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAC,YAAA,EAAc;AACnB,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,QAAA,EAAS;AAAA,MACX,CAAA,MAAO;AACL,QAAA,SAAA,CAAU,MAAA,EAAW,EAAE,kBAAA,EAAoB,IAAA,EAAM,CAAA;AAAA,MACnD;AAAA,IACF,CAAA,EAAG,CAAC,SAAA,EAAW,YAAA,EAAc,MAAM,QAAA,EAAU,aAAA,EAAe,WAAW,CAAC,CAAA;AAGxE,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,OAAO,QAAA,KAAa,WAAA,IAAe,CAAC,SAAA,EAAW;AAEnD,MAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAa;AACjC,QAAA,MAAM,IAAA,GAAO,EAAE,YAAA,EAAa;AAC5B,QAAA,OACG,CAAC,CAAC,UAAA,CAAW,OAAA,IAAW,IAAA,CAAK,SAAS,UAAA,CAAW,OAAO,CAAA,IACxD,CAAC,CAAC,OAAA,CAAQ,OAAA,IAAW,IAAA,CAAK,QAAA,CAAS,QAAQ,OAAO,CAAA;AAAA,MAEvD,CAAA;AAEA,MAAA,IAAI,UAAA,GAAa,KAAA;AACjB,MAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAA6B;AACvD,QAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAC7C,QAAA,IAAI,CAAC,YAAA,CAAa,CAAC,CAAA,EAAG;AACpB,UAAA,cAAA,GAAiB,CAAC,CAAA;AAClB,UAAA,UAAA,GAAa,IAAA;AAAA,QACf;AAAA,MACF,CAAA;AACA,MAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAA6B;AACrD,QAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAC7C,QAAA,IAAI,YAAA,IAAgB,CAAC,UAAA,IAAc,YAAA,CAAa,CAAC,CAAA,EAAG;AAEpD,QAAA,SAAA,CAAU,MAAA,EAAW,EAAE,kBAAA,EAAoB,IAAA,EAAM,CAAA;AAAA,MACnD,CAAA;AACA,MAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAkB;AAC1C,QAAA,IAAI,YAAA,IAAgB,YAAA,CAAa,CAAC,CAAA,EAAG;AACrC,QAAA,SAAA,CAAU,MAAA,EAAW,EAAE,kBAAA,EAAoB,IAAA,EAAM,CAAA;AAAA,MACnD,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,gBAAgB,CAAA;AACrD,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,gBAAgB,CAAA;AACrD,MAAA,OAAO,MAAM;AACX,QAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,kBAAkB,CAAA;AAC5D,QAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,gBAAgB,CAAA;AACxD,QAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,gBAAgB,CAAA;AAAA,MAC1D,CAAA;AAAA,IACF,GAAG,CAAC,YAAA,EAAc,SAAA,EAAW,cAAA,EAAgB,SAAS,CAAC,CAAA;AAEvD,IAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAqC;AAC7D,MAAA,IAAI,CAAC,SAAA,IAAa,CAAC,WAAA,CAAY,WAAW,WAAA,EAAa;AACvD,MAAA,IAAI,CAAA,CAAE,SAAS,QAAA,EAAU;AACvB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,SAAA,EAAU;AAAA,MACZ;AAEA,MAAA,MAAM,qBAAqB,UAAA,EAAY,SAAA;AAAA,QACrC,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,gBAAA,CAAiB,QAAQ,CAAA,EAAG;AAAA,OACpD;AAEA,MAAA,MAAM,SAAA,GAAY,aAAa,CAAC,CAAA;AAChC,MAAA,MAAM,QAAA,GAAW,UAAA,GAAa,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAEnD,MAAA,IAAI,CAAA,CAAE,SAAS,WAAA,EAAa;AAC1B,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,kBAAA,KAAA,CAAwB,UAAA,EAAY,MAAA,IAAU,CAAA,IAAK,CAAA,EAAG;AACxD,UAAA,SAAA,CAAU,KAAA,EAAM;AAChB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,QAAA,GAAW,UAAA,GAAA,CACd,kBAAA,IAAsB,CAAA,IAAK,CAC9B,CAAA;AACA,QAAA,QAAA,CAAS,KAAA,EAAM;AACf,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,uBAAuB,CAAA,EAAG;AAC5B,UAAA,QAAA,CAAS,KAAA,EAAM;AACf,UAAA;AAAA,QACF;AACA,QAAA,MAAM,QAAA,GAAW,UAAA,GAAA,CACd,kBAAA,IAAsB,CAAA,IAAK,CAC9B,CAAA;AACA,QAAA,QAAA,CAAS,KAAA,EAAM;AACf,QAAA;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,KAAA,GAAQ,QAAQ,MAAM;AAC1B,MAAA,OAAO;AAAA,QACL,iBAAA;AAAA,QACA,aAAA,EAAe,aAAa,aAAA,IAAiB;AAAA,OAC/C;AAAA,IACF,CAAA,EAAG,CAAC,iBAAA,EAAmB,WAAA,EAAa,SAAS,CAAC,CAAA;AAE9C,IAAA,MAAM,0BAAA,GAA6B,CAAC,CAAA,KAAkC;AACpE,MAAA,IAAI,CAAA,CAAE,SAAS,QAAA,EAAU;AACvB,QAAA,IAAI,CAAC,SAAA,EAAW;AAChB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,SAAA,EAAU;AACV,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAA,CAAE,SAAS,WAAA,EAAa;AAC1B,QAAA,UAAA,GAAa,CAAC,EAAE,KAAA,EAAM;AACtB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,CAAA,CAAE,cAAA,EAAe;AAAA,MACnB;AAAA,IACF,CAAA;AACA,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAA,IAAI,YAAA,EAAc;AAClB,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,SAAA,EAAU;AACV,QAAA;AAAA,MACF;AACA,MAAA,QAAA,EAAS;AAAA,IACX,CAAA;AAEA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,KAAA,EAAO,gBAAA,CAAiB,KAAA,CAAM,KAAK;AAAA,KACrC;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,MAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,uBACE,GAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EACpB,QAAA,kBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,kBAAA,EAAkB,UAAA;AAAA,UAClB,IAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAW,KAAA,CAAM,SAAA;AAAA,UACjB,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,KAAA;AAAA,UACA,OAAA;AAAA,UAEC;AAAA;AAAA,OACH,EACF,CAAA;AAAA,IAEJ;AACA,IAAA,uBACE,IAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EACnB,QAAA,EAAA;AAAA,MAAA,OAAA,GACC,OAAA,CAAQ;AAAA,QACN,GAAA,EAAK,UAAA;AAAA,QACL,OAAA,EAAS,MAAM,iBAAA,EAAkB;AAAA,QACjC,SAAA,EAAW,0BAAA;AAAA,QACX,eAAA,EAAiB,IAAA;AAAA,QACjB,iBAAiB,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,QAC9C,eAAA,EAAiB,SAAA;AAAA,QACjB,YAAA,EAAc,YAAY,MAAA,GAAS;AAAA,OACpC,CAAA,mBAED,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,UAAA;AAAA,UACL,OAAA,EAAS,iBAAA;AAAA,UACT,SAAA,EAAW,0BAAA;AAAA,UACX,eAAA,EAAe,IAAA;AAAA,UACf,iBAAe,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,UAC5C,YAAA,EAAY,YAAY,MAAA,GAAS,OAAA;AAAA,UACjC,eAAA,EAAe,SAAA;AAAA,UACd,GAAG,IAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBAEF,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,QAAA;AAAA,UACR,IAAI,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,UACjC,UAAA,EAAS,cAAA;AAAA,UACT,SAAA,EAAW,EAAA,CAAGA,UAAA,CAAO,OAAA,EAAS,gBAAgB,CAAA;AAAA,UAC9C,SAAA,EAAW,gBAAA;AAAA,UACX,GAAA,EAAK,OAAA;AAAA,UACL,IAAA,EAAK,cAAA;AAAA,UAEJ,QAAA,EAAA;AAAA,YAAA,UAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAWA,WAAO,UAAU,CAAA,EAAG,eAAW,IAAA,EAC7C,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKE,gBAAI,IAAA,EAAK,QAAA,EAAS,WAAWF,UAAA,CAAO,YAAY,GAAG,CAAA,EAChE,CAAA;AAAA,4BAEF,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,WAAWA,UAAA,CAAO,QAAA;AAAA,gBAClB,QAAA,EAAU,EAAA;AAAA,gBACV,GAAA,EAAK,WAAA;AAAA,gBACL,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,UAAA;AAAA,kBACV,WAAW,SAAA,GACP,CAAA,EAAG,KAAK,GAAA,CAAI,UAAA,IAAc,UAAU,OAAO,SAAA,KAAc,QAAA,GAAW,SAAA,GAAY,SAAS,SAAA,CAAU,QAAA,EAAU,CAAC,CAAC,OAC9G,UAAA,IAAc;AAAA,iBACrB;AAAA,gBACA,UAAU,CAAC,CAAA,KACT,YAAA,CAAa,CAAA,CAAE,cAAc,SAAS,CAAA;AAAA,gBAExC,IAAA,EAAK,MAAA;AAAA,gBACL,IAAI,CAAA,SAAA,EAAY,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,gBAEpC;AAAA;AAAA,aACH;AAAA,YACC,4BACC,GAAA,CAAC,KAAA,EAAA,EAAI,WAAWA,UAAA,CAAO,YAAY,GAAG,aAAA,EAAW,IAAA,EAC/C,8BAAC,IAAA,EAAA,EAAK,GAAA,EAAKG,kBAAM,IAAA,EAAK,QAAA,EAAS,WAAWH,UAAA,CAAO,YAAY,GAAG,CAAA,EAClE;AAAA;AAAA;AAAA;AAEJ,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAAA,EACA;AAAA;AAAA,IAEE,IAAA,EAAM;AAAA;AAEV;;;;"}
package/dist/Menu.js CHANGED
@@ -1,2 +1,2 @@
1
- export { M as Menu, M as default } from './Menu-Da2OEN0o.js';
1
+ export { M as Menu, M as default } from './Menu-DqP7YQgE.js';
2
2
  //# sourceMappingURL=Menu.js.map
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
- import { B as Button } from './Button-Dn6-01xl.js';
2
+ import { B as Button } from './Button-B_E6ybA-.js';
3
3
  import { C as COMMON_PART, A as ANV_PART_ATTR } from './anvParts-DFVq7-Cm.js';
4
4
 
5
5
  import './MenuFooter.css';const stack = "_stack_o8ro5_1";
@@ -116,4 +116,4 @@ const MenuFooter = ({
116
116
  MenuFooter.displayName = "MenuFooter";
117
117
 
118
118
  export { MenuFooter as M };
119
- //# sourceMappingURL=MenuFooter-D__gg92C.js.map
119
+ //# sourceMappingURL=MenuFooter-Dzhv0EfD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuFooter-D__gg92C.js","sources":["../src/internal/components/MenuFooter/MenuFooter.tsx"],"sourcesContent":["import type { MouseEvent, ReactNode } from \"react\";\nimport Button from \"../../../components/Button\";\nimport styles from \"./MenuFooter.module.scss\";\nimport { ANV_PART_ATTR, COMMON_PART } from \"../../constants/anvParts\";\n\n// Safari does not focus the button on mousedown, so the host popover sees a\n// focusout with no related target and closes before the click runs.\nconst preventBlur = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n};\n\nexport type MenuFooterClearConfig = {\n /** Clears the host's current selection. */\n onClick: () => void;\n /** Button text. Defaults to `\"Clear\"`. */\n label?: string;\n /** Prevents clearing while preserving the control in the layout. */\n disabled?: boolean;\n};\n\nexport type MenuFooterConfirmationConfig = {\n /** Commits the host's pending selection. */\n onApply: () => void;\n /** Discards the host's pending selection. */\n onCancel: () => void;\n /** Commit button text. Defaults to `\"Apply\"`. */\n applyLabel?: string;\n /** Cancel button text. Defaults to `\"Cancel\"`. */\n cancelLabel?: string;\n /** Prevents committing while leaving cancellation available. */\n applyDisabled?: boolean;\n};\n\nexport type MenuFooterProps = {\n /** Clear-selection button config. Omit to suppress. */\n clear?: MenuFooterClearConfig;\n /** Apply/Cancel pair config. Omit when not in confirmation mode. */\n confirmation?: MenuFooterConfirmationConfig;\n /** Pre-rendered affordance; placement depends on the other footer controls. */\n addNew?: ReactNode;\n};\n\nconst ClearButton = ({\n onClick,\n label = \"Clear\",\n disabled,\n fullWidth,\n}: MenuFooterClearConfig & { fullWidth?: boolean }) => (\n <Button\n appearance=\"secondary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onClick}\n disabled={disabled}\n className={fullWidth ? styles[\"clear-full\"] : undefined}\n {...{ [ANV_PART_ATTR]: COMMON_PART.clearButton }}\n >\n {label}\n </Button>\n);\n\nconst ConfirmationRow = ({\n applyLabel = \"Apply\",\n cancelLabel = \"Cancel\",\n onApply,\n onCancel,\n applyDisabled,\n leading,\n}: MenuFooterConfirmationConfig & { leading?: ReactNode }) => (\n <div className={styles[\"confirmation-row\"]}>\n {leading ? <div className={styles[\"leading\"]}>{leading}</div> : null}\n <div className={styles[\"trailing\"]}>\n <Button\n appearance=\"secondary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onCancel}\n {...{ [ANV_PART_ATTR]: COMMON_PART.cancelButton }}\n >\n {cancelLabel}\n </Button>\n <Button\n appearance=\"primary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onApply}\n disabled={applyDisabled}\n {...{ [ANV_PART_ATTR]: COMMON_PART.applyButton }}\n >\n {applyLabel}\n </Button>\n </div>\n </div>\n);\n\n/**\n * Composes clear, confirmation, and add-new controls into a menu footer.\n * Returns `null` when all three are omitted.\n */\nexport const MenuFooter = ({\n clear,\n confirmation,\n addNew,\n}: MenuFooterProps) => {\n if (confirmation) {\n if (clear && addNew) {\n return (\n <div className={styles[\"stack\"]}>\n <div className={styles[\"stack-row\"]}>{addNew}</div>\n <ConfirmationRow\n {...confirmation}\n leading={<ClearButton {...clear} />}\n />\n </div>\n );\n }\n if (clear) {\n return (\n <ConfirmationRow\n {...confirmation}\n leading={<ClearButton {...clear} />}\n />\n );\n }\n return <ConfirmationRow {...confirmation} leading={addNew} />;\n }\n\n if (clear && addNew) {\n return (\n <div className={styles[\"stack\"]}>\n <div className={styles[\"stack-row\"]}>{addNew}</div>\n <div className={styles[\"stack-row\"]}>\n <ClearButton {...clear} fullWidth />\n </div>\n </div>\n );\n }\n if (clear) {\n return (\n <div className={styles[\"stack-row\"]}>\n <ClearButton {...clear} fullWidth />\n </div>\n );\n }\n if (addNew) {\n return <>{addNew}</>;\n }\n return null;\n};\n\nMenuFooter.displayName = \"MenuFooter\";\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MenuFooter-Dzhv0EfD.js","sources":["../src/internal/components/MenuFooter/MenuFooter.tsx"],"sourcesContent":["import type { MouseEvent, ReactNode } from \"react\";\nimport Button from \"../../../components/Button\";\nimport styles from \"./MenuFooter.module.scss\";\nimport { ANV_PART_ATTR, COMMON_PART } from \"../../constants/anvParts\";\n\n// Safari does not focus the button on mousedown, so the host popover sees a\n// focusout with no related target and closes before the click runs.\nconst preventBlur = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n};\n\nexport type MenuFooterClearConfig = {\n /** Clears the host's current selection. */\n onClick: () => void;\n /** Button text. Defaults to `\"Clear\"`. */\n label?: string;\n /** Prevents clearing while preserving the control in the layout. */\n disabled?: boolean;\n};\n\nexport type MenuFooterConfirmationConfig = {\n /** Commits the host's pending selection. */\n onApply: () => void;\n /** Discards the host's pending selection. */\n onCancel: () => void;\n /** Commit button text. Defaults to `\"Apply\"`. */\n applyLabel?: string;\n /** Cancel button text. Defaults to `\"Cancel\"`. */\n cancelLabel?: string;\n /** Prevents committing while leaving cancellation available. */\n applyDisabled?: boolean;\n};\n\nexport type MenuFooterProps = {\n /** Clear-selection button config. Omit to suppress. */\n clear?: MenuFooterClearConfig;\n /** Apply/Cancel pair config. Omit when not in confirmation mode. */\n confirmation?: MenuFooterConfirmationConfig;\n /** Pre-rendered affordance; placement depends on the other footer controls. */\n addNew?: ReactNode;\n};\n\nconst ClearButton = ({\n onClick,\n label = \"Clear\",\n disabled,\n fullWidth,\n}: MenuFooterClearConfig & { fullWidth?: boolean }) => (\n <Button\n appearance=\"secondary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onClick}\n disabled={disabled}\n className={fullWidth ? styles[\"clear-full\"] : undefined}\n {...{ [ANV_PART_ATTR]: COMMON_PART.clearButton }}\n >\n {label}\n </Button>\n);\n\nconst ConfirmationRow = ({\n applyLabel = \"Apply\",\n cancelLabel = \"Cancel\",\n onApply,\n onCancel,\n applyDisabled,\n leading,\n}: MenuFooterConfirmationConfig & { leading?: ReactNode }) => (\n <div className={styles[\"confirmation-row\"]}>\n {leading ? <div className={styles[\"leading\"]}>{leading}</div> : null}\n <div className={styles[\"trailing\"]}>\n <Button\n appearance=\"secondary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onCancel}\n {...{ [ANV_PART_ATTR]: COMMON_PART.cancelButton }}\n >\n {cancelLabel}\n </Button>\n <Button\n appearance=\"primary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onApply}\n disabled={applyDisabled}\n {...{ [ANV_PART_ATTR]: COMMON_PART.applyButton }}\n >\n {applyLabel}\n </Button>\n </div>\n </div>\n);\n\n/**\n * Composes clear, confirmation, and add-new controls into a menu footer.\n * Returns `null` when all three are omitted.\n */\nexport const MenuFooter = ({\n clear,\n confirmation,\n addNew,\n}: MenuFooterProps) => {\n if (confirmation) {\n if (clear && addNew) {\n return (\n <div className={styles[\"stack\"]}>\n <div className={styles[\"stack-row\"]}>{addNew}</div>\n <ConfirmationRow\n {...confirmation}\n leading={<ClearButton {...clear} />}\n />\n </div>\n );\n }\n if (clear) {\n return (\n <ConfirmationRow\n {...confirmation}\n leading={<ClearButton {...clear} />}\n />\n );\n }\n return <ConfirmationRow {...confirmation} leading={addNew} />;\n }\n\n if (clear && addNew) {\n return (\n <div className={styles[\"stack\"]}>\n <div className={styles[\"stack-row\"]}>{addNew}</div>\n <div className={styles[\"stack-row\"]}>\n <ClearButton {...clear} fullWidth />\n </div>\n </div>\n );\n }\n if (clear) {\n return (\n <div className={styles[\"stack-row\"]}>\n <ClearButton {...clear} fullWidth />\n </div>\n );\n }\n if (addNew) {\n return <>{addNew}</>;\n }\n return null;\n};\n\nMenuFooter.displayName = \"MenuFooter\";\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-Cq5sena6.js';
1
+ export { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-CWsOdu-o.js';
2
2
  //# sourceMappingURL=MultiSelectField.js.map
@@ -1,56 +1,56 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useRef, useState, useMemo, useEffect, useCallback, forwardRef, useId } from 'react';
3
- import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
4
- import { a as useToggleSelection, M as MultiSelectOptions, u as useBulkActionRunner, r as resolveBulkActionCheckState, b as resolveBulkActionLabel } from './bulkActionTypes-SukoplGV.js';
2
+ import { useRef, useState, useMemo, useEffect, useLayoutEffect, useCallback, forwardRef, useId } from 'react';
3
+ import { w as warnDeprecatedErrorUsage } from './utils-DwLrXpmt.js';
4
+ import { a as useToggleSelection, M as MultiSelectOptions, u as useBulkActionRunner, r as resolveBulkActionCheckState, b as resolveBulkActionLabel } from './bulkActionTypes-bznuvizE.js';
5
5
  import { c as cx } from './index-De1g9FRV.js';
6
- import { B as Button } from './Button-Dn6-01xl.js';
7
- import { C as Chip } from './Chip-2OydLs66.js';
6
+ import { B as Button } from './Button-B_E6ybA-.js';
7
+ import { C as Chip } from './Chip-BWqgUX71.js';
8
8
  import { F as Flex } from './Flex-CRF7gj0_.js';
9
9
  import { m as mergeRefs, u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
10
10
  import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
11
11
  import { S as SvgClose } from './close-DZj38AEh.js';
12
12
  import { u as useChipLayout } from './useChipLayout-BBe6Tzyl.js';
13
13
  import { C as COMMON_PART, A as ANV_PART_ATTR } from './anvParts-DFVq7-Cm.js';
14
- import { S as SelectFieldLabel, p as popoverTargetDomProps } from './SelectFieldLabel-BxsKvfqo.js';
15
- import { s as styles$1 } from './SelectTriggerBase.module-Dt4-6YvC.js';
14
+ import { S as SelectFieldLabel, p as popoverTargetDomProps } from './SelectFieldLabel-DaXwIFZj.js';
15
+ import { s as styles$1 } from './SelectTriggerBase.module-C-NmZbg4.js';
16
16
  import { u as useDownshiftEnvironment, a as useCombobox, b as useSelect } from './downshift.esm-U4VMqrF-.js';
17
- import { a as useProcessedOptions, b as buildSelectItems, s as shouldShowAddNewItem, A as AddNewItemButton, u as useSelectOrchestration, d as defaultSyncFilter, t as toSyncFilterFn } from './syncFilterUtils-SMop8ckR.js';
18
- import { O as OptionsDialog, a as OptionsPopover, u as useInvalidateOnOptionsChange } from './useInvalidateOnOptionsChange-BD2VBpbK.js';
17
+ import { a as useProcessedOptions, b as buildSelectItems, s as shouldShowAddNewItem, A as AddNewItemButton, u as useSelectOrchestration, d as defaultSyncFilter, t as toSyncFilterFn } from './syncFilterUtils-BNbAB0jz.js';
18
+ import { O as OptionsDialog, a as OptionsPopover, u as useInvalidateOnOptionsChange } from './useInvalidateOnOptionsChange-ChrPmbtS.js';
19
19
  import { F as FieldMessage } from './FieldMessage-8c9yA_kw.js';
20
20
  import { u as useDebouncedCallback } from './useDebouncedCallback-DLkapjcP.js';
21
21
  import { a as arrayIdsEqual } from './arrayIdsEqual-DnevhwqN.js';
22
22
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
23
23
  import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
24
24
 
25
- import './MultiSelectFieldSync.css';const input = "_input_nqn6u_26";
26
- const error = "_error_nqn6u_55";
27
- const disabled = "_disabled_nqn6u_62";
28
- const highlight = "_highlight_nqn6u_74";
29
- const chip = "_chip_nqn6u_157";
30
- const prefix = "_prefix_nqn6u_249";
31
- const suffix = "_suffix_nqn6u_250";
32
- const small = "_small_nqn6u_325";
33
- const large = "_large_nqn6u_331";
25
+ import './MultiSelectFieldSync.css';const input = "_input_1j4vn_26";
26
+ const error = "_error_1j4vn_61";
27
+ const disabled = "_disabled_1j4vn_68";
28
+ const highlight = "_highlight_1j4vn_83";
29
+ const chip = "_chip_1j4vn_189";
30
+ const prefix = "_prefix_1j4vn_281";
31
+ const suffix = "_suffix_1j4vn_282";
32
+ const small = "_small_1j4vn_357";
33
+ const large = "_large_1j4vn_363";
34
34
  const styles = {
35
- "input-wrapper": "_input-wrapper_nqn6u_26",
35
+ "input-wrapper": "_input-wrapper_1j4vn_26",
36
36
  input: input,
37
37
  error: error,
38
38
  disabled: disabled,
39
- "is-disabled": "_is-disabled_nqn6u_68",
39
+ "is-disabled": "_is-disabled_1j4vn_74",
40
40
  highlight: highlight,
41
- "input-flex": "_input-flex_nqn6u_78",
42
- "rows-wrapper": "_rows-wrapper_nqn6u_136",
43
- "chip-wrapper": "_chip-wrapper_nqn6u_157",
41
+ "input-flex": "_input-flex_1j4vn_90",
42
+ "rows-wrapper": "_rows-wrapper_1j4vn_168",
43
+ "chip-wrapper": "_chip-wrapper_1j4vn_189",
44
44
  chip: chip,
45
- "buttons-wrapper": "_buttons-wrapper_nqn6u_169",
46
- "close-button-wrapper": "_close-button-wrapper_nqn6u_186",
47
- "close-button": "_close-button_nqn6u_186",
48
- "toggle-button-wrapper": "_toggle-button-wrapper_nqn6u_209",
49
- "toggle-button": "_toggle-button_nqn6u_209",
45
+ "buttons-wrapper": "_buttons-wrapper_1j4vn_201",
46
+ "close-button-wrapper": "_close-button-wrapper_1j4vn_218",
47
+ "close-button": "_close-button_1j4vn_218",
48
+ "toggle-button-wrapper": "_toggle-button-wrapper_1j4vn_241",
49
+ "toggle-button": "_toggle-button_1j4vn_241",
50
50
  prefix: prefix,
51
51
  suffix: suffix,
52
- "no-clear-button": "_no-clear-button_nqn6u_317",
53
- "no-toggle-button": "_no-toggle-button_nqn6u_321",
52
+ "no-clear-button": "_no-clear-button_1j4vn_349",
53
+ "no-toggle-button": "_no-toggle-button_1j4vn_353",
54
54
  small: small,
55
55
  large: large};
56
56
 
@@ -511,7 +511,6 @@ const MultiSelectFieldComboboxMode = ({
511
511
  loadMore,
512
512
  initialLoad,
513
513
  initialLoadPerformed,
514
- setInitialLoadPerformed,
515
514
  inputWrapperRef,
516
515
  debounceMs,
517
516
  selectAll,
@@ -529,6 +528,7 @@ const MultiSelectFieldComboboxMode = ({
529
528
  dataAttributes
530
529
  }) => {
531
530
  const listRef = useRef(null);
531
+ const inputValueRef = useRef("");
532
532
  const debouncedOptionLoader = useDebouncedCallback((inputValue2) => {
533
533
  loadOptions(inputValue2, { initial: true });
534
534
  }, debounceMs);
@@ -561,27 +561,21 @@ const MultiSelectFieldComboboxMode = ({
561
561
  selectFiltered,
562
562
  bulkPending,
563
563
  onBulkActivate,
564
- async onIsOpenChange(changes) {
565
- if (initialLoad === "open" && !initialLoadPerformed && changes.isOpen) {
566
- await loadOptions("", { initial: true });
567
- setInitialLoadPerformed(true);
568
- }
569
- },
570
564
  onInputValueChange: ({ inputValue: iv }) => {
571
565
  debouncedOptionLoader(iv ?? "");
572
566
  onSearchChange?.(iv ?? "");
573
567
  },
574
568
  onScrollToHighlight: (i) => listRef.current?.scrollToIndex(i)
575
569
  });
570
+ useLayoutEffect(() => {
571
+ inputValueRef.current = inputValue;
572
+ });
573
+ const wantsInitialLoad = initialLoad === "immediate" || initialLoad === "open" && isOpen;
576
574
  useEffect(() => {
577
- const performInitialLoad = async () => {
578
- if (initialLoad === "immediate" && !initialLoadPerformed) {
579
- await loadOptions("", { initial: true });
580
- setInitialLoadPerformed(true);
581
- }
582
- };
583
- performInitialLoad();
584
- }, [loadOptions, initialLoadPerformed, initialLoad, setInitialLoadPerformed]);
575
+ if (wantsInitialLoad && !initialLoadPerformed) {
576
+ loadOptions(inputValueRef.current, { initial: true });
577
+ }
578
+ }, [loadOptions, initialLoadPerformed, wantsInitialLoad]);
585
579
  const handleLoadMore = async () => {
586
580
  await loadMore(inputValue);
587
581
  };
@@ -1146,7 +1140,6 @@ const MultiSelectFieldSelectMode = ({
1146
1140
  loadMore,
1147
1141
  initialLoad,
1148
1142
  initialLoadPerformed,
1149
- setInitialLoadPerformed,
1150
1143
  inputWrapperRef,
1151
1144
  selectAll,
1152
1145
  bulkPending,
@@ -1185,23 +1178,14 @@ const MultiSelectFieldSelectMode = ({
1185
1178
  selectAll,
1186
1179
  bulkPending,
1187
1180
  onBulkActivate,
1188
- async onIsOpenChange(changes) {
1189
- if (initialLoad === "open" && !initialLoadPerformed && changes.isOpen) {
1190
- await loadOptions("", { initial: true });
1191
- setInitialLoadPerformed(true);
1192
- }
1193
- },
1194
1181
  onScrollToHighlight: (i) => listRef.current?.scrollToIndex(i)
1195
1182
  });
1183
+ const wantsInitialLoad = initialLoad === "immediate" || initialLoad === "open" && isOpen;
1196
1184
  useEffect(() => {
1197
- const performInitialLoad = async () => {
1198
- if (initialLoad === "immediate" && !initialLoadPerformed) {
1199
- await loadOptions("", { initial: true });
1200
- setInitialLoadPerformed(true);
1201
- }
1202
- };
1203
- performInitialLoad();
1204
- }, [loadOptions, initialLoadPerformed, initialLoad, setInitialLoadPerformed]);
1185
+ if (wantsInitialLoad && !initialLoadPerformed) {
1186
+ loadOptions("", { initial: true });
1187
+ }
1188
+ }, [loadOptions, initialLoadPerformed, wantsInitialLoad]);
1205
1189
  const handleLoadMore = async () => {
1206
1190
  await loadMore("");
1207
1191
  };
@@ -1485,7 +1469,6 @@ const MultiSelectFieldInner = (propsWithLayout, ref) => {
1485
1469
  displayAs,
1486
1470
  initialLoad,
1487
1471
  initialLoadPerformed,
1488
- setInitialLoadPerformed,
1489
1472
  options,
1490
1473
  loading,
1491
1474
  loadingMore,
@@ -1598,7 +1581,6 @@ const MultiSelectFieldInner = (propsWithLayout, ref) => {
1598
1581
  loadMore,
1599
1582
  initialLoad,
1600
1583
  initialLoadPerformed,
1601
- setInitialLoadPerformed,
1602
1584
  inputWrapperRef,
1603
1585
  selectAll,
1604
1586
  bulkPending,
@@ -1737,4 +1719,4 @@ const MultiSelectFieldSync = (props) => {
1737
1719
  };
1738
1720
 
1739
1721
  export { MultiSelectField as M, MultiSelectFieldSync as a };
1740
- //# sourceMappingURL=MultiSelectFieldSync-Cq5sena6.js.map
1722
+ //# sourceMappingURL=MultiSelectFieldSync-CWsOdu-o.js.map