@hitachivantara/uikit-react-core 5.80.2 → 5.81.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 (445) hide show
  1. package/dist/cjs/BaseDropdown/BaseDropdown.cjs +82 -165
  2. package/dist/cjs/BaseDropdown/BaseDropdown.styles.cjs +2 -2
  3. package/dist/cjs/BaseDropdown/BaseDropdownPanel.cjs +80 -0
  4. package/dist/cjs/BaseDropdown/{BaseDropdownContext/BaseDropdownContext.cjs → context.cjs} +2 -2
  5. package/dist/cjs/Button/Button.styles.cjs +6 -2
  6. package/dist/cjs/DropDownMenu/DropDownMenu.cjs +21 -28
  7. package/dist/cjs/DropDownMenu/DropDownMenu.styles.cjs +15 -2
  8. package/dist/cjs/Dropdown/List/List.cjs +6 -5
  9. package/dist/cjs/MultiButton/MultiButton.cjs +3 -4
  10. package/dist/cjs/MultiButton/MultiButton.styles.cjs +48 -109
  11. package/dist/cjs/Pagination/Pagination.styles.cjs +1 -1
  12. package/dist/cjs/Table/TableCell/TableCell.styles.cjs +2 -5
  13. package/dist/cjs/Table/TableHeader/TableHeader.cjs +40 -49
  14. package/dist/cjs/Table/TableHeader/TableHeader.styles.cjs +18 -20
  15. package/dist/cjs/Table/TableRow/TableRow.styles.cjs +7 -15
  16. package/dist/esm/Accordion/Accordion.js.map +1 -1
  17. package/dist/esm/Accordion/Accordion.styles.js.map +1 -1
  18. package/dist/esm/ActionBar/ActionBar.js.map +1 -1
  19. package/dist/esm/ActionBar/ActionBar.styles.js.map +1 -1
  20. package/dist/esm/ActionsGeneric/ActionsGeneric.js.map +1 -1
  21. package/dist/esm/ActionsGeneric/ActionsGeneric.styles.js.map +1 -1
  22. package/dist/esm/AppSwitcher/Action/Action.js.map +1 -1
  23. package/dist/esm/AppSwitcher/Action/Action.styles.js.map +1 -1
  24. package/dist/esm/AppSwitcher/AppSwitcher.js.map +1 -1
  25. package/dist/esm/AppSwitcher/AppSwitcher.styles.js.map +1 -1
  26. package/dist/esm/Avatar/Avatar.js.map +1 -1
  27. package/dist/esm/Avatar/Avatar.styles.js.map +1 -1
  28. package/dist/esm/AvatarGroup/AvatarGroup.js.map +1 -1
  29. package/dist/esm/AvatarGroup/AvatarGroup.styles.js.map +1 -1
  30. package/dist/esm/Badge/Badge.js.map +1 -1
  31. package/dist/esm/Badge/Badge.styles.js.map +1 -1
  32. package/dist/esm/Banner/Banner.js.map +1 -1
  33. package/dist/esm/Banner/Banner.styles.js.map +1 -1
  34. package/dist/esm/Banner/BannerContent/ActionContainer/ActionContainer.js.map +1 -1
  35. package/dist/esm/Banner/BannerContent/ActionContainer/ActionContainer.styles.js.map +1 -1
  36. package/dist/esm/Banner/BannerContent/BannerContent.js.map +1 -1
  37. package/dist/esm/Banner/BannerContent/BannerContent.styles.js.map +1 -1
  38. package/dist/esm/Banner/BannerContent/MessageContainer/MessageContainer.js.map +1 -1
  39. package/dist/esm/Banner/BannerContent/MessageContainer/MessageContainer.styles.js.map +1 -1
  40. package/dist/esm/BaseCheckBox/BaseCheckBox.js.map +1 -1
  41. package/dist/esm/BaseCheckBox/BaseCheckBox.styles.js.map +1 -1
  42. package/dist/esm/BaseCheckBox/icons.js.map +1 -1
  43. package/dist/esm/BaseDropdown/BaseDropdown.js +82 -163
  44. package/dist/esm/BaseDropdown/BaseDropdown.js.map +1 -1
  45. package/dist/esm/BaseDropdown/BaseDropdown.styles.js +2 -2
  46. package/dist/esm/BaseDropdown/BaseDropdown.styles.js.map +1 -1
  47. package/dist/esm/BaseDropdown/BaseDropdownPanel.js +80 -0
  48. package/dist/esm/BaseDropdown/BaseDropdownPanel.js.map +1 -0
  49. package/dist/esm/BaseDropdown/{BaseDropdownContext/BaseDropdownContext.js → context.js} +1 -1
  50. package/dist/esm/BaseDropdown/context.js.map +1 -0
  51. package/dist/esm/BaseInput/BaseInput.js.map +1 -1
  52. package/dist/esm/BaseInput/BaseInput.styles.js.map +1 -1
  53. package/dist/esm/BaseInput/validations.js.map +1 -1
  54. package/dist/esm/BaseRadio/BaseRadio.js.map +1 -1
  55. package/dist/esm/BaseRadio/BaseRadio.styles.js.map +1 -1
  56. package/dist/esm/BaseRadio/icons.js.map +1 -1
  57. package/dist/esm/BaseSwitch/BaseSwitch.js.map +1 -1
  58. package/dist/esm/BaseSwitch/BaseSwitch.styles.js.map +1 -1
  59. package/dist/esm/BreadCrumb/BreadCrumb.js.map +1 -1
  60. package/dist/esm/BreadCrumb/BreadCrumb.styles.js.map +1 -1
  61. package/dist/esm/BreadCrumb/Page/Page.js.map +1 -1
  62. package/dist/esm/BreadCrumb/Page/Page.styles.js.map +1 -1
  63. package/dist/esm/BreadCrumb/PathElement/PathElement.js.map +1 -1
  64. package/dist/esm/BreadCrumb/PathElement/PathElement.styles.js.map +1 -1
  65. package/dist/esm/BreadCrumb/utils.js.map +1 -1
  66. package/dist/esm/BulkActions/BulkActions.js.map +1 -1
  67. package/dist/esm/BulkActions/BulkActions.styles.js.map +1 -1
  68. package/dist/esm/Button/Button.js.map +1 -1
  69. package/dist/esm/Button/Button.styles.js +6 -2
  70. package/dist/esm/Button/Button.styles.js.map +1 -1
  71. package/dist/esm/ButtonBase/ButtonBase.js.map +1 -1
  72. package/dist/esm/ButtonBase/ButtonBase.styles.js.map +1 -1
  73. package/dist/esm/Calendar/Calendar.js.map +1 -1
  74. package/dist/esm/Calendar/Calendar.styles.js.map +1 -1
  75. package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
  76. package/dist/esm/Calendar/CalendarHeader/CalendarHeader.styles.js.map +1 -1
  77. package/dist/esm/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js.map +1 -1
  78. package/dist/esm/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.styles.js.map +1 -1
  79. package/dist/esm/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js.map +1 -1
  80. package/dist/esm/Calendar/CalendarNavigation/MonthSelector/MonthSelector.styles.js.map +1 -1
  81. package/dist/esm/Calendar/CalendarNavigation/Navigation/Navigation.js.map +1 -1
  82. package/dist/esm/Calendar/CalendarNavigation/Navigation/Navigation.styles.js.map +1 -1
  83. package/dist/esm/Calendar/SingleCalendar/CalendarCell.js.map +1 -1
  84. package/dist/esm/Calendar/SingleCalendar/CalendarCell.styles.js.map +1 -1
  85. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.js.map +1 -1
  86. package/dist/esm/Calendar/SingleCalendar/SingleCalendar.styles.js.map +1 -1
  87. package/dist/esm/Calendar/model.js.map +1 -1
  88. package/dist/esm/Calendar/utils.js.map +1 -1
  89. package/dist/esm/Card/Card.js.map +1 -1
  90. package/dist/esm/Card/Card.styles.js.map +1 -1
  91. package/dist/esm/Card/Content/Content.js.map +1 -1
  92. package/dist/esm/Card/Content/Content.styles.js.map +1 -1
  93. package/dist/esm/Card/Header/Header.js.map +1 -1
  94. package/dist/esm/Card/Header/Header.styles.js.map +1 -1
  95. package/dist/esm/Card/Media/Media.js.map +1 -1
  96. package/dist/esm/Card/Media/Media.styles.js.map +1 -1
  97. package/dist/esm/Carousel/Carousel.js.map +1 -1
  98. package/dist/esm/Carousel/Carousel.styles.js.map +1 -1
  99. package/dist/esm/Carousel/CarouselControls.js.map +1 -1
  100. package/dist/esm/Carousel/CarouselSlide/CarouselSlide.js.map +1 -1
  101. package/dist/esm/Carousel/CarouselSlide/CarouselSlide.styles.js.map +1 -1
  102. package/dist/esm/Carousel/CarouselThumbnails.js.map +1 -1
  103. package/dist/esm/CheckBox/CheckBox.js.map +1 -1
  104. package/dist/esm/CheckBox/CheckBox.styles.js.map +1 -1
  105. package/dist/esm/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
  106. package/dist/esm/CheckBoxGroup/CheckBoxGroup.styles.js.map +1 -1
  107. package/dist/esm/ColorPicker/ColorPicker.js.map +1 -1
  108. package/dist/esm/ColorPicker/ColorPicker.styles.js.map +1 -1
  109. package/dist/esm/ColorPicker/Fields/Fields.js.map +1 -1
  110. package/dist/esm/ColorPicker/Fields/Fields.styles.js.map +1 -1
  111. package/dist/esm/ColorPicker/Picker/Picker.js.map +1 -1
  112. package/dist/esm/ColorPicker/Picker/Picker.styles.js.map +1 -1
  113. package/dist/esm/ColorPicker/PresetColors/PresetColors.js.map +1 -1
  114. package/dist/esm/ColorPicker/PresetColors/PresetColors.styles.js.map +1 -1
  115. package/dist/esm/ColorPicker/SavedColors/SavedColors.js.map +1 -1
  116. package/dist/esm/ColorPicker/SavedColors/SavedColors.styles.js.map +1 -1
  117. package/dist/esm/Container/Container.js.map +1 -1
  118. package/dist/esm/Container/Container.styles.js.map +1 -1
  119. package/dist/esm/Controls/Controls.js.map +1 -1
  120. package/dist/esm/Controls/Controls.styles.js.map +1 -1
  121. package/dist/esm/Controls/LeftControl/LeftControl.js.map +1 -1
  122. package/dist/esm/Controls/RightControl/RightControl.js.map +1 -1
  123. package/dist/esm/Controls/context/ControlsContext.js.map +1 -1
  124. package/dist/esm/DatePicker/DatePicker.js.map +1 -1
  125. package/dist/esm/DatePicker/DatePicker.styles.js.map +1 -1
  126. package/dist/esm/DatePicker/useVisibleDate.js.map +1 -1
  127. package/dist/esm/DatePicker/utils.js.map +1 -1
  128. package/dist/esm/Dialog/Actions/Actions.js.map +1 -1
  129. package/dist/esm/Dialog/Actions/Actions.styles.js.map +1 -1
  130. package/dist/esm/Dialog/Content/Content.js.map +1 -1
  131. package/dist/esm/Dialog/Content/Content.styles.js.map +1 -1
  132. package/dist/esm/Dialog/Dialog.js.map +1 -1
  133. package/dist/esm/Dialog/Dialog.styles.js.map +1 -1
  134. package/dist/esm/Dialog/Title/Title.js.map +1 -1
  135. package/dist/esm/Dialog/Title/Title.styles.js.map +1 -1
  136. package/dist/esm/Dialog/context.js.map +1 -1
  137. package/dist/esm/DotPagination/DotPagination.js.map +1 -1
  138. package/dist/esm/DotPagination/DotPagination.styles.js.map +1 -1
  139. package/dist/esm/Drawer/Drawer.js.map +1 -1
  140. package/dist/esm/Drawer/Drawer.styles.js.map +1 -1
  141. package/dist/esm/DropDownMenu/DropDownMenu.js +20 -27
  142. package/dist/esm/DropDownMenu/DropDownMenu.js.map +1 -1
  143. package/dist/esm/DropDownMenu/DropDownMenu.styles.js +15 -2
  144. package/dist/esm/DropDownMenu/DropDownMenu.styles.js.map +1 -1
  145. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  146. package/dist/esm/Dropdown/Dropdown.styles.js.map +1 -1
  147. package/dist/esm/Dropdown/List/List.js +6 -5
  148. package/dist/esm/Dropdown/List/List.js.map +1 -1
  149. package/dist/esm/Dropdown/List/List.styles.js.map +1 -1
  150. package/dist/esm/Dropdown/utils.js.map +1 -1
  151. package/dist/esm/DropdownButton/DropdownButton.js.map +1 -1
  152. package/dist/esm/DropdownButton/DropdownButton.styles.js.map +1 -1
  153. package/dist/esm/EmptyState/EmptyState.js.map +1 -1
  154. package/dist/esm/EmptyState/EmptyState.styles.js.map +1 -1
  155. package/dist/esm/FileUploader/DropZone/DropZone.js.map +1 -1
  156. package/dist/esm/FileUploader/DropZone/DropZone.styles.js.map +1 -1
  157. package/dist/esm/FileUploader/File/File.js.map +1 -1
  158. package/dist/esm/FileUploader/File/File.styles.js.map +1 -1
  159. package/dist/esm/FileUploader/FileList/FileList.js.map +1 -1
  160. package/dist/esm/FileUploader/FileList/FileList.styles.js.map +1 -1
  161. package/dist/esm/FileUploader/FileUploader.js.map +1 -1
  162. package/dist/esm/FileUploader/Preview/Preview.js.map +1 -1
  163. package/dist/esm/FileUploader/Preview/Preview.styles.js.map +1 -1
  164. package/dist/esm/FileUploader/utils.js.map +1 -1
  165. package/dist/esm/FilterGroup/Counter/Counter.js.map +1 -1
  166. package/dist/esm/FilterGroup/Counter/Counter.styles.js.map +1 -1
  167. package/dist/esm/FilterGroup/FilterContent/FilterContent.js.map +1 -1
  168. package/dist/esm/FilterGroup/FilterContent/FilterContent.styles.js.map +1 -1
  169. package/dist/esm/FilterGroup/FilterGroup.js.map +1 -1
  170. package/dist/esm/FilterGroup/FilterGroup.styles.js.map +1 -1
  171. package/dist/esm/FilterGroup/FilterGroupContext.js.map +1 -1
  172. package/dist/esm/FilterGroup/LeftPanel/LeftPanel.js.map +1 -1
  173. package/dist/esm/FilterGroup/LeftPanel/LeftPanel.styles.js.map +1 -1
  174. package/dist/esm/FilterGroup/RightPanel/RightPanel.js.map +1 -1
  175. package/dist/esm/FilterGroup/RightPanel/RightPanel.styles.js.map +1 -1
  176. package/dist/esm/Focus/Focus.js.map +1 -1
  177. package/dist/esm/Focus/Focus.styles.js.map +1 -1
  178. package/dist/esm/Focus/utils.js.map +1 -1
  179. package/dist/esm/Footer/Footer.js.map +1 -1
  180. package/dist/esm/Footer/Footer.styles.js.map +1 -1
  181. package/dist/esm/Forms/Adornment/Adornment.js.map +1 -1
  182. package/dist/esm/Forms/Adornment/Adornment.styles.js.map +1 -1
  183. package/dist/esm/Forms/CharCounter/CharCounter.js.map +1 -1
  184. package/dist/esm/Forms/FormElement/FormElement.js.map +1 -1
  185. package/dist/esm/Forms/FormElement/FormElement.styles.js.map +1 -1
  186. package/dist/esm/Forms/FormElement/context/FormElementContext.js.map +1 -1
  187. package/dist/esm/Forms/FormElement/context/FormElementDescriptorsContext.js.map +1 -1
  188. package/dist/esm/Forms/FormElement/utils/FormUtils.js.map +1 -1
  189. package/dist/esm/Forms/InfoMessage/InfoMessage.js.map +1 -1
  190. package/dist/esm/Forms/Label/Label.js.map +1 -1
  191. package/dist/esm/Forms/Suggestions/Suggestions.js.map +1 -1
  192. package/dist/esm/Forms/Suggestions/Suggestions.styles.js.map +1 -1
  193. package/dist/esm/Forms/WarningText/WarningText.js.map +1 -1
  194. package/dist/esm/GlobalActions/GlobalActions.js.map +1 -1
  195. package/dist/esm/GlobalActions/GlobalActions.styles.js.map +1 -1
  196. package/dist/esm/Grid/Grid.js.map +1 -1
  197. package/dist/esm/Grid/Grid.styles.js.map +1 -1
  198. package/dist/esm/Header/Actions/Actions.js.map +1 -1
  199. package/dist/esm/Header/Actions/Actions.styles.js.map +1 -1
  200. package/dist/esm/Header/Brand/Brand.js.map +1 -1
  201. package/dist/esm/Header/Brand/Brand.styles.js.map +1 -1
  202. package/dist/esm/Header/Header.js.map +1 -1
  203. package/dist/esm/Header/Header.styles.js.map +1 -1
  204. package/dist/esm/Header/Navigation/MenuBar/Bar.js.map +1 -1
  205. package/dist/esm/Header/Navigation/MenuBar/Bar.styles.js.map +1 -1
  206. package/dist/esm/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
  207. package/dist/esm/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
  208. package/dist/esm/Header/Navigation/MenuItem/MenuItem.styles.js.map +1 -1
  209. package/dist/esm/Header/Navigation/Navigation.js.map +1 -1
  210. package/dist/esm/Header/Navigation/Navigation.styles.js.map +1 -1
  211. package/dist/esm/Header/Navigation/useSelectionPath.js.map +1 -1
  212. package/dist/esm/Header/Navigation/utils/FocusContext.js.map +1 -1
  213. package/dist/esm/IconButton/IconButton.js.map +1 -1
  214. package/dist/esm/InlineEditor/InlineEditor.js.map +1 -1
  215. package/dist/esm/InlineEditor/InlineEditor.styles.js.map +1 -1
  216. package/dist/esm/Input/Input.js.map +1 -1
  217. package/dist/esm/Input/Input.styles.js.map +1 -1
  218. package/dist/esm/Kpi/Kpi.js.map +1 -1
  219. package/dist/esm/Link/Link.js.map +1 -1
  220. package/dist/esm/Link/Link.styles.js.map +1 -1
  221. package/dist/esm/List/List.js.map +1 -1
  222. package/dist/esm/List/List.styles.js.map +1 -1
  223. package/dist/esm/List/utils.js.map +1 -1
  224. package/dist/esm/ListContainer/ListContainer.js.map +1 -1
  225. package/dist/esm/ListContainer/ListContainer.styles.js.map +1 -1
  226. package/dist/esm/ListContainer/ListContext/ListContext.js.map +1 -1
  227. package/dist/esm/ListContainer/ListItem/ListItem.js.map +1 -1
  228. package/dist/esm/ListContainer/ListItem/ListItem.styles.js.map +1 -1
  229. package/dist/esm/Loading/Loading.js.map +1 -1
  230. package/dist/esm/Loading/Loading.styles.js.map +1 -1
  231. package/dist/esm/LoadingContainer/LoadingContainer.js.map +1 -1
  232. package/dist/esm/LoadingContainer/LoadingContainer.styles.js.map +1 -1
  233. package/dist/esm/Login/Login.js.map +1 -1
  234. package/dist/esm/Login/Login.styles.js.map +1 -1
  235. package/dist/esm/MultiButton/MultiButton.js +3 -4
  236. package/dist/esm/MultiButton/MultiButton.js.map +1 -1
  237. package/dist/esm/MultiButton/MultiButton.styles.js +48 -109
  238. package/dist/esm/MultiButton/MultiButton.styles.js.map +1 -1
  239. package/dist/esm/OverflowTooltip/OverflowTooltip.js.map +1 -1
  240. package/dist/esm/OverflowTooltip/OverflowTooltip.styles.js.map +1 -1
  241. package/dist/esm/Pagination/Pagination.js.map +1 -1
  242. package/dist/esm/Pagination/Pagination.styles.js +1 -1
  243. package/dist/esm/Pagination/Pagination.styles.js.map +1 -1
  244. package/dist/esm/Pagination/Select.js.map +1 -1
  245. package/dist/esm/Pagination/Select.styles.js.map +1 -1
  246. package/dist/esm/Panel/Panel.js.map +1 -1
  247. package/dist/esm/Panel/Panel.styles.js.map +1 -1
  248. package/dist/esm/ProgressBar/ProgressBar.js.map +1 -1
  249. package/dist/esm/ProgressBar/ProgressBar.styles.js.map +1 -1
  250. package/dist/esm/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  251. package/dist/esm/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.js.map +1 -1
  252. package/dist/esm/QueryBuilder/Context.js.map +1 -1
  253. package/dist/esm/QueryBuilder/QueryBuilder.js.map +1 -1
  254. package/dist/esm/QueryBuilder/QueryBuilder.styles.js.map +1 -1
  255. package/dist/esm/QueryBuilder/Rule/Attribute/Attribute.js.map +1 -1
  256. package/dist/esm/QueryBuilder/Rule/Operator/Operator.js.map +1 -1
  257. package/dist/esm/QueryBuilder/Rule/Rule.js.map +1 -1
  258. package/dist/esm/QueryBuilder/Rule/Rule.styles.js.map +1 -1
  259. package/dist/esm/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.js.map +1 -1
  260. package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js.map +1 -1
  261. package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.js.map +1 -1
  262. package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/utils.js.map +1 -1
  263. package/dist/esm/QueryBuilder/Rule/Value/EmptyValue/EmptyValue.js.map +1 -1
  264. package/dist/esm/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js.map +1 -1
  265. package/dist/esm/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +1 -1
  266. package/dist/esm/QueryBuilder/Rule/Value/TextValue/TextValue.js.map +1 -1
  267. package/dist/esm/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js.map +1 -1
  268. package/dist/esm/QueryBuilder/Rule/Value/Value.js.map +1 -1
  269. package/dist/esm/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
  270. package/dist/esm/QueryBuilder/utils/index.js.map +1 -1
  271. package/dist/esm/QueryBuilder/utils/reducer.js.map +1 -1
  272. package/dist/esm/Radio/Radio.js.map +1 -1
  273. package/dist/esm/Radio/Radio.styles.js.map +1 -1
  274. package/dist/esm/RadioGroup/RadioGroup.js.map +1 -1
  275. package/dist/esm/RadioGroup/RadioGroup.styles.js.map +1 -1
  276. package/dist/esm/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js.map +1 -1
  277. package/dist/esm/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.js.map +1 -1
  278. package/dist/esm/ScrollTo/Horizontal/ScrollToHorizontal.js.map +1 -1
  279. package/dist/esm/ScrollTo/Horizontal/ScrollToHorizontal.styles.js.map +1 -1
  280. package/dist/esm/ScrollTo/Vertical/ScrollToVertical.js.map +1 -1
  281. package/dist/esm/ScrollTo/Vertical/ScrollToVertical.styles.js.map +1 -1
  282. package/dist/esm/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js.map +1 -1
  283. package/dist/esm/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.js.map +1 -1
  284. package/dist/esm/ScrollTo/useScrollTo.js.map +1 -1
  285. package/dist/esm/ScrollTo/utils.js.map +1 -1
  286. package/dist/esm/Section/Section.js.map +1 -1
  287. package/dist/esm/Section/Section.styles.js.map +1 -1
  288. package/dist/esm/Select/Option.js.map +1 -1
  289. package/dist/esm/Select/OptionGroup.js.map +1 -1
  290. package/dist/esm/Select/Select.js.map +1 -1
  291. package/dist/esm/Select/Select.styles.js.map +1 -1
  292. package/dist/esm/SelectionList/SelectionList.js.map +1 -1
  293. package/dist/esm/SelectionList/SelectionList.styles.js.map +1 -1
  294. package/dist/esm/SimpleGrid/SimpleGrid.js.map +1 -1
  295. package/dist/esm/SimpleGrid/SimpleGrid.styles.js.map +1 -1
  296. package/dist/esm/Skeleton/Skeleton.js.map +1 -1
  297. package/dist/esm/Skeleton/Skeleton.styles.js.map +1 -1
  298. package/dist/esm/Slider/Slider.js.map +1 -1
  299. package/dist/esm/Slider/Slider.styles.js.map +1 -1
  300. package/dist/esm/Slider/SliderInput/SliderInput.js.map +1 -1
  301. package/dist/esm/Slider/base.js.map +1 -1
  302. package/dist/esm/Slider/utils.js.map +1 -1
  303. package/dist/esm/Snackbar/Snackbar.js.map +1 -1
  304. package/dist/esm/Snackbar/Snackbar.styles.js.map +1 -1
  305. package/dist/esm/Snackbar/SnackbarContent/SnackbarContent.js.map +1 -1
  306. package/dist/esm/Snackbar/SnackbarContent/SnackbarContent.styles.js.map +1 -1
  307. package/dist/esm/SnackbarProvider/SnackbarProvider.js.map +1 -1
  308. package/dist/esm/SnackbarProvider/SnackbarProvider.styles.js.map +1 -1
  309. package/dist/esm/Stack/Stack.js.map +1 -1
  310. package/dist/esm/Stack/Stack.styles.js.map +1 -1
  311. package/dist/esm/Switch/Switch.js.map +1 -1
  312. package/dist/esm/Switch/Switch.styles.js.map +1 -1
  313. package/dist/esm/Tab/Tab.js.map +1 -1
  314. package/dist/esm/Tab/Tab.styles.js.map +1 -1
  315. package/dist/esm/Table/Table.js.map +1 -1
  316. package/dist/esm/Table/Table.styles.js.map +1 -1
  317. package/dist/esm/Table/TableBody/TableBody.js.map +1 -1
  318. package/dist/esm/Table/TableCell/TableCell.js.map +1 -1
  319. package/dist/esm/Table/TableCell/TableCell.styles.js +2 -5
  320. package/dist/esm/Table/TableCell/TableCell.styles.js.map +1 -1
  321. package/dist/esm/Table/TableContainer/TableContainer.js.map +1 -1
  322. package/dist/esm/Table/TableContainer/TableContainer.styles.js.map +1 -1
  323. package/dist/esm/Table/TableHead/TableHead.js.map +1 -1
  324. package/dist/esm/Table/TableHeader/TableHeader.js +44 -52
  325. package/dist/esm/Table/TableHeader/TableHeader.js.map +1 -1
  326. package/dist/esm/Table/TableHeader/TableHeader.styles.js +18 -20
  327. package/dist/esm/Table/TableHeader/TableHeader.styles.js.map +1 -1
  328. package/dist/esm/Table/TableHeader/utils.js.map +1 -1
  329. package/dist/esm/Table/TableRow/TableRow.js.map +1 -1
  330. package/dist/esm/Table/TableRow/TableRow.styles.js +7 -15
  331. package/dist/esm/Table/TableRow/TableRow.styles.js.map +1 -1
  332. package/dist/esm/Table/hooks/useBulkActions.js.map +1 -1
  333. package/dist/esm/Table/hooks/useFilters.js.map +1 -1
  334. package/dist/esm/Table/hooks/useGlobalFilter.js.map +1 -1
  335. package/dist/esm/Table/hooks/useHeaderGroups.js.map +1 -1
  336. package/dist/esm/Table/hooks/usePagination.js.map +1 -1
  337. package/dist/esm/Table/hooks/useResizeColumns.js.map +1 -1
  338. package/dist/esm/Table/hooks/useRowExpand.js.map +1 -1
  339. package/dist/esm/Table/hooks/useRowSelection.js.map +1 -1
  340. package/dist/esm/Table/hooks/useRowState.js.map +1 -1
  341. package/dist/esm/Table/hooks/useSortBy.js.map +1 -1
  342. package/dist/esm/Table/hooks/useSticky.js.map +1 -1
  343. package/dist/esm/Table/hooks/useTable.js.map +1 -1
  344. package/dist/esm/Table/hooks/useTableStyles.js.map +1 -1
  345. package/dist/esm/Table/renderers/DateColumnCell/DateColumnCell.js.map +1 -1
  346. package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.js.map +1 -1
  347. package/dist/esm/Table/renderers/ProgressColumnCell/ProgressColumnCell.styles.js.map +1 -1
  348. package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.js.map +1 -1
  349. package/dist/esm/Table/renderers/SwitchColumnCell/SwitchColumnCell.styles.js.map +1 -1
  350. package/dist/esm/Table/renderers/renderers.js.map +1 -1
  351. package/dist/esm/Table/utils/fallbacks.js.map +1 -1
  352. package/dist/esm/Table/utils/utils.js.map +1 -1
  353. package/dist/esm/TableSection/TableSection.js.map +1 -1
  354. package/dist/esm/TableSection/TableSection.styles.js.map +1 -1
  355. package/dist/esm/Tabs/Tabs.js.map +1 -1
  356. package/dist/esm/Tabs/Tabs.styles.js.map +1 -1
  357. package/dist/esm/Tag/Tag.js.map +1 -1
  358. package/dist/esm/Tag/Tag.styles.js.map +1 -1
  359. package/dist/esm/TagsInput/TagsInput.js.map +1 -1
  360. package/dist/esm/TagsInput/TagsInput.styles.js.map +1 -1
  361. package/dist/esm/TextArea/TextArea.js.map +1 -1
  362. package/dist/esm/TimeAgo/TimeAgo.js.map +1 -1
  363. package/dist/esm/TimeAgo/TimeAgo.styles.js.map +1 -1
  364. package/dist/esm/TimeAgo/formatUtils.js.map +1 -1
  365. package/dist/esm/TimeAgo/useTimeAgo.js.map +1 -1
  366. package/dist/esm/TimePicker/Placeholder.js.map +1 -1
  367. package/dist/esm/TimePicker/TimePicker.js.map +1 -1
  368. package/dist/esm/TimePicker/TimePicker.styles.js.map +1 -1
  369. package/dist/esm/TimePicker/Unit/Unit.js.map +1 -1
  370. package/dist/esm/TimePicker/Unit/Unit.styles.js.map +1 -1
  371. package/dist/esm/ToggleButton/ToggleButton.js.map +1 -1
  372. package/dist/esm/Tooltip/Tooltip.js.map +1 -1
  373. package/dist/esm/Tooltip/Tooltip.styles.js.map +1 -1
  374. package/dist/esm/TreeView/TreeItem/DefaultContent.js.map +1 -1
  375. package/dist/esm/TreeView/TreeItem/TreeItem.js.map +1 -1
  376. package/dist/esm/TreeView/TreeItem/TreeItem.styles.js.map +1 -1
  377. package/dist/esm/TreeView/TreeItem/useHvTreeItem.js.map +1 -1
  378. package/dist/esm/TreeView/TreeView.js.map +1 -1
  379. package/dist/esm/TreeView/TreeView.styles.js.map +1 -1
  380. package/dist/esm/TreeView/internals/DescendantProvider.js.map +1 -1
  381. package/dist/esm/TreeView/internals/TreeViewProvider.js.map +1 -1
  382. package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewContextValueBuilder.js.map +1 -1
  383. package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewExpansion.js.map +1 -1
  384. package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewFocus.js.map +1 -1
  385. package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewKeyboardNavigation.js.map +1 -1
  386. package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewNodes.js.map +1 -1
  387. package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewSelection.js.map +1 -1
  388. package/dist/esm/TreeView/internals/hooks/useInstanceEventHandler.js.map +1 -1
  389. package/dist/esm/TreeView/internals/hooks/useTreeView.js.map +1 -1
  390. package/dist/esm/TreeView/internals/hooks/useTreeViewInstanceEvents.js.map +1 -1
  391. package/dist/esm/TreeView/internals/hooks/useTreeViewModels.js.map +1 -1
  392. package/dist/esm/TreeView/internals/hooks/utils.js.map +1 -1
  393. package/dist/esm/TreeView/internals/utils/EventManager.js.map +1 -1
  394. package/dist/esm/TreeView/internals/utils/FinalizationRegistryBasedCleanupTracking.js.map +1 -1
  395. package/dist/esm/TreeView/internals/utils/TimerBasedCleanupTracking.js.map +1 -1
  396. package/dist/esm/Typography/Typography.js.map +1 -1
  397. package/dist/esm/Typography/Typography.styles.js.map +1 -1
  398. package/dist/esm/VerticalNavigation/Actions/Action.js.map +1 -1
  399. package/dist/esm/VerticalNavigation/Actions/Action.styles.js.map +1 -1
  400. package/dist/esm/VerticalNavigation/Actions/Actions.js.map +1 -1
  401. package/dist/esm/VerticalNavigation/Actions/Actions.styles.js.map +1 -1
  402. package/dist/esm/VerticalNavigation/Header/Header.js.map +1 -1
  403. package/dist/esm/VerticalNavigation/Header/Header.styles.js.map +1 -1
  404. package/dist/esm/VerticalNavigation/Navigation/Navigation.js.map +1 -1
  405. package/dist/esm/VerticalNavigation/Navigation/Navigation.styles.js.map +1 -1
  406. package/dist/esm/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js.map +1 -1
  407. package/dist/esm/VerticalNavigation/NavigationPopup/NavigationPopupContainer.js.map +1 -1
  408. package/dist/esm/VerticalNavigation/NavigationSlider/NavigationSlider.js.map +1 -1
  409. package/dist/esm/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js.map +1 -1
  410. package/dist/esm/VerticalNavigation/NavigationSlider/utils.js.map +1 -1
  411. package/dist/esm/VerticalNavigation/TreeView/TreeView.js.map +1 -1
  412. package/dist/esm/VerticalNavigation/TreeView/TreeView.styles.js.map +1 -1
  413. package/dist/esm/VerticalNavigation/TreeView/TreeViewContext.js.map +1 -1
  414. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
  415. package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.styles.js.map +1 -1
  416. package/dist/esm/VerticalNavigation/VerticalNavigation.js.map +1 -1
  417. package/dist/esm/VerticalNavigation/VerticalNavigation.styles.js.map +1 -1
  418. package/dist/esm/VerticalNavigation/VerticalNavigationContext.js.map +1 -1
  419. package/dist/esm/hocs/withTooltip.js.map +1 -1
  420. package/dist/esm/hooks/useClickOutside.js.map +1 -1
  421. package/dist/esm/hooks/useComputation.js.map +1 -1
  422. package/dist/esm/hooks/useControlled.js.map +1 -1
  423. package/dist/esm/hooks/useExpandable.js.map +1 -1
  424. package/dist/esm/hooks/useForkRef.js.map +1 -1
  425. package/dist/esm/hooks/useImageLoaded.js.map +1 -1
  426. package/dist/esm/hooks/useIsMounted.js.map +1 -1
  427. package/dist/esm/hooks/useUniqueId.js.map +1 -1
  428. package/dist/esm/hooks/useWidth.js.map +1 -1
  429. package/dist/esm/providers/Provider.js.map +1 -1
  430. package/dist/esm/providers/ThemeProvider.js.map +1 -1
  431. package/dist/esm/utils/Random.js.map +1 -1
  432. package/dist/esm/utils/browser.js.map +1 -1
  433. package/dist/esm/utils/deepMerge.js.map +1 -1
  434. package/dist/esm/utils/document.js.map +1 -1
  435. package/dist/esm/utils/focusableElementFinder.js.map +1 -1
  436. package/dist/esm/utils/helpers.js.map +1 -1
  437. package/dist/esm/utils/iconVariant.js.map +1 -1
  438. package/dist/esm/utils/multiSelectionEventHandler.js.map +1 -1
  439. package/dist/esm/utils/sizes.js.map +1 -1
  440. package/dist/esm/utils/theme.js.map +1 -1
  441. package/dist/esm/utils/useSavedState.js.map +1 -1
  442. package/dist/esm/utils/wrapperTooltip.js.map +1 -1
  443. package/dist/types/index.d.ts +6 -3
  444. package/package.json +6 -6
  445. package/dist/esm/BaseDropdown/BaseDropdownContext/BaseDropdownContext.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TreeView.js","sources":["../../../../src/VerticalNavigation/TreeView/TreeView.tsx"],"sourcesContent":["import { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { useControlled } from \"../../hooks/useControlled\";\nimport { useForkRef } from \"../../hooks/useForkRef\";\nimport { useUniqueId } from \"../../hooks/useUniqueId\";\nimport { DescendantProvider } from \"../../TreeView/internals/DescendantProvider\";\nimport { HvBaseProps } from \"../../types/generic\";\nimport { staticClasses, useClasses } from \"./TreeView.styles\";\nimport {\n NavigationMode,\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\n\nexport { staticClasses as treeViewClasses };\n\nexport type HvVerticalNavigationTreeViewClasses = ExtractNames<\n typeof useClasses\n>;\n\nexport interface HvVerticalNavigationTreeViewProps\n extends HvBaseProps<HTMLUListElement, \"onChange\" | \"onToggle\"> {\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvVerticalNavigationTreeViewClasses;\n /** Modus operandi (role) of the widget instance. */\n mode?: NavigationMode;\n /** Enables selection. @default false */\n selectable?: boolean;\n /** Enables the simultaneous selection of multiple items. @default false */\n multiSelect?: boolean;\n /** The selected nodes' ids. When `multiSelect` is true this takes an array of strings; when false (default) a string. */\n selected?: string[] | string;\n /**\n * When uncontrolled, defines the initial selected nodes' ids.\n * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n * @default []\n */\n defaultSelected?: string[] | string;\n /** Can non-leaf nodes be collapsed / expanded. */\n collapsible?: boolean;\n /** Callback fired when a tree item is selected. */\n onChange?: (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeId: string | string[],\n payloads: any,\n ) => void;\n /** Expanded nodes' ids. */\n expanded?: string[];\n /** When uncontrolled, defines the initial expanded nodes' ids. @default [] */\n defaultExpanded?: string[];\n /** Callback fired when tree items are expanded/collapsed. */\n onToggle?: (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeIds: string[],\n ) => void;\n /** If `true`, will allow focus on disabled items. @default false */\n disabledItemsFocusable?: boolean;\n}\nfunction isPrintableCharacter(string: string) {\n return string && string.length === 1 && string.match(/\\S/);\n}\n\nfunction findNextFirstChar(\n firstChars: string[],\n startIndex: number,\n char: string,\n) {\n return firstChars.slice(startIndex).findIndex((c) => c === char);\n}\n\nfunction noopSelection() {\n return false;\n}\n\nexport const HvVerticalNavigationTreeView = forwardRef<\n HTMLUListElement,\n HvVerticalNavigationTreeViewProps\n>(function HvVerticalNavigationTreeView(props, ref) {\n const {\n id: idProp,\n className,\n classes: classesProp,\n mode = \"treeview\",\n collapsible = false,\n expanded: expandedProp,\n defaultExpanded = [],\n onToggle,\n selectable = false,\n multiSelect: multiSelectProp = false,\n selected: selectedProp,\n defaultSelected = [],\n onChange,\n disabledItemsFocusable = false,\n onFocus,\n onBlur,\n onKeyDown,\n children,\n ...others\n } = useDefaultProps(\"HvVerticalNavigationTreeView\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const treeviewMode = mode === \"treeview\";\n const multiSelect = selectable && multiSelectProp;\n\n const treeId = useUniqueId(idProp);\n const treeRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(treeRef, ref);\n\n const [expanded, setExpandedState] = useControlled(\n expandedProp,\n defaultExpanded,\n );\n\n const [selected, setSelectedState] = useControlled(\n selectedProp,\n defaultSelected,\n );\n\n const [focusedNodeId, setFocusedNodeId] = useState<string | null>(null);\n\n const nodeMap = useRef<Record<string, any>>({});\n\n const firstCharMap = useRef<Record<string, any>>({});\n\n const isExpanded = useCallback(\n (id: string) =>\n !collapsible ||\n (Array.isArray(expanded) ? expanded.indexOf(id) !== -1 : false),\n [collapsible, expanded],\n );\n\n const isExpandable = useCallback(\n (id: string) =>\n collapsible && nodeMap.current[id] && nodeMap.current[id].expandable,\n [collapsible],\n );\n\n const isSelected = useCallback(\n (id: string) =>\n selectable &&\n (Array.isArray(selected) ? selected.indexOf(id) !== -1 : selected === id),\n [selectable, selected],\n );\n\n const isSelectable = useCallback(\n (id: string) =>\n selectable && nodeMap.current[id] && nodeMap.current[id].selectable,\n [selectable],\n );\n\n const isDisabled = useCallback((id: string) => {\n let node = nodeMap.current[id];\n\n // This can be called before the node has been added to the node map.\n if (!node) {\n return false;\n }\n\n if (node.disabled) {\n return true;\n }\n\n while (node.parentId != null) {\n node = nodeMap.current[node.parentId];\n if (node.disabled) {\n return true;\n }\n }\n\n return false;\n }, []);\n\n const isFocused = useCallback(\n (id: string) => focusedNodeId === id,\n [focusedNodeId],\n );\n\n const isChildSelected = useCallback(\n // the second part of the condition is to ensure that the id we're\n // looking at is actually of a child (ie, there's at least one \"-\")\n (id: string) => {\n return Array<string>()\n .concat(selected)\n .some((s) => s.startsWith(id) && s.includes(\"-\"));\n },\n [selected],\n );\n\n const getChildrenIds = (id: string | null) =>\n Object.keys(nodeMap.current)\n .map((key) => {\n return nodeMap.current[key];\n })\n .filter((node) => node.parentId === id)\n .sort((a, b) => a.index - b.index)\n .map((child) => child.id);\n\n const getNavigableChildrenIds = useCallback(\n (id: string | null) => {\n let childrenIds = getChildrenIds(id);\n\n if (!disabledItemsFocusable) {\n childrenIds = childrenIds.filter((node) => !isDisabled(node));\n }\n return childrenIds;\n },\n [disabledItemsFocusable, isDisabled],\n );\n\n const getNextNode = useCallback(\n (id: string) => {\n // If expanded get first child\n if (isExpanded(id) && getNavigableChildrenIds(id).length > 0) {\n return getNavigableChildrenIds(id)[0];\n }\n\n let node = nodeMap.current[id];\n while (node != null) {\n // Try to get next sibling\n const siblings = getNavigableChildrenIds(node.parentId);\n const nextSibling = siblings[siblings.indexOf(node.id) + 1];\n\n if (nextSibling) {\n return nextSibling;\n }\n\n // If the sibling does not exist, go up a level to the parent and try again.\n node = nodeMap.current[node.parentId];\n }\n\n return null;\n },\n [getNavigableChildrenIds, isExpanded],\n );\n\n const getPreviousNode = (id: string) => {\n const node = nodeMap.current[id];\n const siblings = getNavigableChildrenIds(node.parentId);\n const nodeIndex = siblings.indexOf(id);\n\n if (nodeIndex === 0) {\n return node.parentId;\n }\n\n let currentNode = siblings[nodeIndex - 1];\n while (\n isExpanded(currentNode) &&\n getNavigableChildrenIds(currentNode).length > 0\n ) {\n currentNode = getNavigableChildrenIds(currentNode).pop();\n }\n\n return currentNode;\n };\n\n const getLastNode = () => {\n let lastNode = getNavigableChildrenIds(null).pop();\n\n while (isExpanded(lastNode)) {\n lastNode = getNavigableChildrenIds(lastNode).pop();\n }\n return lastNode;\n };\n const getFirstNode = () => getNavigableChildrenIds(null)[0];\n const getParent = (id: any) => nodeMap.current[id].parentId;\n\n /**\n * This is used to determine the start and end of a selection range so\n * we can get the nodes between the two border nodes.\n *\n * It finds the nodes' common ancestor using\n * a naive implementation of a lowest common ancestor algorithm\n * (https://en.wikipedia.org/wiki/Lowest_common_ancestor).\n * Then compares the ancestor's 2 children that are ancestors of nodeA and NodeB\n * so we can compare their indexes to work out which node comes first in a depth first search.\n * (https://en.wikipedia.org/wiki/Depth-first_search)\n *\n * Another way to put it is which node is shallower in a trémaux tree\n * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree\n */\n const findOrderInTremauxTree = useCallback(\n (nodeAId: string, nodeBId: string) => {\n if (nodeAId === nodeBId) {\n return [nodeAId, nodeBId];\n }\n\n const nodeA = nodeMap.current[nodeAId];\n const nodeB = nodeMap.current[nodeBId];\n\n if (nodeA.parentId === nodeB.id || nodeB.parentId === nodeA.id) {\n return nodeB.parentId === nodeA.id\n ? [nodeA.id, nodeB.id]\n : [nodeB.id, nodeA.id];\n }\n\n const aFamily = [nodeA.id];\n const bFamily = [nodeB.id];\n\n let aAncestor = nodeA.parentId;\n let bAncestor = nodeB.parentId;\n\n let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n\n let continueA = true;\n let continueB = true;\n\n while (!bAncestorIsCommon && !aAncestorIsCommon) {\n if (continueA) {\n aFamily.push(aAncestor);\n aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n continueA = aAncestor !== null;\n if (!aAncestorIsCommon && continueA) {\n aAncestor = nodeMap.current[aAncestor].parentId;\n }\n }\n\n if (continueB && !aAncestorIsCommon) {\n bFamily.push(bAncestor);\n bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n continueB = bAncestor !== null;\n if (!bAncestorIsCommon && continueB) {\n bAncestor = nodeMap.current[bAncestor].parentId;\n }\n }\n }\n\n const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;\n const ancestorFamily = getChildrenIds(commonAncestor);\n\n const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];\n const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];\n\n return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide)\n ? [nodeAId, nodeBId]\n : [nodeBId, nodeAId];\n },\n [],\n );\n\n const getNodesInRange = useCallback(\n (nodeA: string, nodeB: string) => {\n if (nodeA && nodeB) {\n const [first, last] = findOrderInTremauxTree(nodeA, nodeB);\n const nodes = [first];\n\n let current = first;\n\n while (current !== last) {\n current = getNextNode(current);\n nodes.push(current);\n }\n\n return nodes;\n }\n return [];\n },\n [findOrderInTremauxTree, getNextNode],\n );\n\n const focus = (\n event:\n | React.KeyboardEvent<HTMLUListElement>\n | React.FocusEvent<HTMLUListElement>,\n id: any,\n ) => {\n if (id) {\n setFocusedNodeId(id);\n\n if (nodeMap.current[id]?.onFocus) {\n nodeMap.current[id].onFocus(event);\n }\n }\n };\n\n const focusNextNode = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => focus(event, getNextNode(id));\n const focusPreviousNode = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => focus(event, getPreviousNode(id));\n const focusFirstNode = (event: React.KeyboardEvent<HTMLUListElement>) =>\n focus(event, getFirstNode());\n const focusLastNode = (event: React.KeyboardEvent<HTMLUListElement>) =>\n focus(event, getLastNode());\n\n const focusByFirstCharacter = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n char: any,\n ) => {\n let start;\n let index;\n const lowercaseChar = char.toLowerCase();\n\n const firstCharIds: string[] = [];\n const firstChars: string[] = [];\n // This really only works since the ids are strings\n Object.keys(firstCharMap.current).forEach((nodeId) => {\n const firstChar = firstCharMap.current[nodeId];\n const map = nodeMap.current[nodeId];\n const visible = map.parentId ? isExpanded(map.parentId) : true;\n const shouldBeSkipped = disabledItemsFocusable\n ? false\n : isDisabled(nodeId);\n\n if (visible && !shouldBeSkipped) {\n firstCharIds.push(nodeId);\n firstChars.push(firstChar);\n }\n });\n\n // Get start index for search based on position of currentItem\n start = firstCharIds.indexOf(id) + 1;\n if (start >= firstCharIds.length) {\n start = 0;\n }\n\n // Check remaining slots in the menu\n index = findNextFirstChar(firstChars, start, lowercaseChar);\n\n // If not found in remaining slots, check from beginning\n if (index === -1) {\n index = findNextFirstChar(firstChars, 0, lowercaseChar);\n }\n\n // If match was found...\n if (index > -1) {\n focus(event, firstCharIds[index]);\n }\n };\n\n const toggleExpansion = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>, value = focusedNodeId) => {\n if (!value) return;\n\n const newExpanded = expanded.includes(value)\n ? expanded.filter((id) => id !== value)\n : [value].concat(expanded);\n\n onToggle?.(event, newExpanded);\n\n setExpandedState(newExpanded);\n },\n [expanded, focusedNodeId, onToggle, setExpandedState],\n );\n\n const expandAllSiblings = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => {\n const map = nodeMap.current[id];\n const siblings = getChildrenIds(map.parentId);\n\n const diff = siblings.filter(\n (child) => isExpandable(child) && !isExpanded(child),\n );\n\n const newExpanded = expanded.concat(diff);\n\n if (diff.length > 0) {\n setExpandedState(newExpanded);\n onToggle?.(event, newExpanded);\n }\n };\n\n const lastSelectedNode = useRef<HTMLDivElement | null>(null);\n const lastSelectionWasRange = useRef(false);\n const currentRangeSelection = useRef<HTMLDivElement[]>([]);\n\n const isDivElement = (element: any): element is HTMLDivElement => {\n return (element as HTMLDivElement).nodeType === 1;\n };\n\n const handleRangeArrowSelect = useCallback(\n (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodes: { start?: any; next?: any; current?: any },\n ) => {\n let base = Array<string>().concat(selected);\n const { start, next, current } = nodes;\n\n if (!next || !current) {\n return;\n }\n\n if (\n isDivElement(current) &&\n currentRangeSelection.current.indexOf(current) === -1\n ) {\n currentRangeSelection.current = [];\n }\n\n if (lastSelectionWasRange.current) {\n if (\n isDivElement(next) &&\n currentRangeSelection.current.indexOf(next) !== -1\n ) {\n base = base.filter((id) => id === start || id !== current);\n currentRangeSelection.current = currentRangeSelection.current.filter(\n (id) => id === start || id !== current,\n );\n } else {\n base.push(next);\n currentRangeSelection.current.push(next);\n }\n } else {\n base.push(next);\n currentRangeSelection.current.push(current, next);\n }\n onChange?.(\n event,\n base,\n base.map((id) => nodeMap.current[id]?.payload),\n );\n setSelectedState(base);\n },\n [onChange, selected, setSelectedState],\n );\n\n const handleRangeSelect = useCallback(\n (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodes: { start?: any; end?: any; current?: any },\n ) => {\n let base = Array<string>().concat(selected);\n const { start, end } = nodes;\n // If last selection was a range selection ignore nodes that were selected.\n if (lastSelectionWasRange.current) {\n base = base.filter(\n (id) => !currentRangeSelection.current.includes(id as any),\n );\n }\n\n let range = getNodesInRange(start, end);\n range = range.filter((node) => !isDisabled(node));\n currentRangeSelection.current = range;\n let newSelected = base.concat(range);\n newSelected = newSelected.filter(\n (id, i) => newSelected.indexOf(id) === i,\n );\n\n onChange?.(\n event,\n newSelected,\n newSelected.map((id) => nodeMap.current[id]?.payload),\n );\n\n setSelectedState(newSelected);\n },\n [getNodesInRange, isDisabled, onChange, selected, setSelectedState],\n );\n\n const handleMultipleSelect = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>, value: any) => {\n const newSelected = selected.includes(value)\n ? (selected as string[]).filter((id) => id !== value)\n : [value].concat(selected);\n onChange?.(\n event,\n newSelected,\n newSelected.map((id) => nodeMap.current[id]?.payload),\n );\n setSelectedState(newSelected);\n },\n [onChange, selected, setSelectedState],\n );\n\n const handleSingleSelect = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>, value: any) => {\n const newSelected = multiSelect ? [value] : value;\n if (onChange) {\n const nodeValue = nodeMap.current[newSelected]?.payload;\n onChange(event, newSelected, multiSelect ? [nodeValue] : nodeValue);\n }\n\n setSelectedState(newSelected);\n },\n [multiSelect, onChange, setSelectedState],\n );\n\n const selectNode = useCallback(\n (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n multiple = false,\n ) => {\n if (id && isSelectable(id)) {\n if (multiple) {\n handleMultipleSelect(event, id);\n } else {\n handleSingleSelect(event, id);\n }\n lastSelectedNode.current = id;\n lastSelectionWasRange.current = false;\n currentRangeSelection.current = [];\n\n return true;\n }\n return false;\n },\n [handleMultipleSelect, handleSingleSelect, isSelectable],\n );\n\n const selectRange = useCallback(\n (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodes: { start?: any; end?: any; current?: HTMLDivElement | null },\n stacked = false,\n ) => {\n const { start = lastSelectedNode.current, end, current } = nodes;\n if (stacked) {\n handleRangeArrowSelect(event, { start, next: end, current });\n } else if (start != null && end != null) {\n handleRangeSelect(event, { start, end });\n }\n lastSelectionWasRange.current = true;\n },\n [handleRangeArrowSelect, handleRangeSelect],\n );\n\n const rangeSelectToFirst = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = id;\n }\n\n const start = lastSelectionWasRange.current ? lastSelectedNode.current : id;\n\n selectRange(event, {\n start,\n end: getFirstNode(),\n });\n };\n\n const rangeSelectToLast = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = id;\n }\n\n const start = lastSelectionWasRange.current ? lastSelectedNode.current : id;\n\n selectRange(event, {\n start,\n end: getLastNode(),\n });\n };\n\n const selectNextNode = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => {\n if (!isDisabled(getNextNode(id))) {\n selectRange(\n event,\n {\n end: getNextNode(id),\n current: id,\n },\n true,\n );\n }\n };\n\n const selectPreviousNode = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => {\n if (!isDisabled(getPreviousNode(id))) {\n selectRange(\n event,\n {\n end: getPreviousNode(id),\n current: id,\n },\n true,\n );\n }\n };\n\n const selectAllNodes = (event: React.KeyboardEvent<HTMLUListElement>) => {\n selectRange(event, { start: getFirstNode(), end: getLastNode() });\n };\n\n /*\n * Mapping Helpers\n */\n const registerNode = useCallback((node: any) => {\n const {\n id,\n index,\n parentId,\n expandable,\n idAttribute,\n disabled,\n selectable: nodeSelectable,\n onFocus: nodeOnFocus,\n payload,\n } = node;\n\n nodeMap.current[id] = {\n id,\n index,\n parentId,\n expandable,\n idAttribute,\n disabled,\n selectable: nodeSelectable,\n onFocus: nodeOnFocus,\n payload,\n };\n }, []);\n\n const unregisterNode = useCallback((id: any) => {\n const newMap = { ...nodeMap.current };\n delete newMap[id];\n nodeMap.current = newMap;\n\n setFocusedNodeId((oldFocusedNodeId) => {\n if (\n oldFocusedNodeId === id &&\n treeRef.current &&\n treeRef.current ===\n (treeRef.current.ownerDocument || document).activeElement\n ) {\n return getChildrenIds(null)[0];\n }\n return oldFocusedNodeId;\n });\n }, []);\n\n const mapFirstChar = useCallback((id: any, firstChar: any) => {\n firstCharMap.current[id] = firstChar;\n }, []);\n\n const unMapFirstChar = useCallback((id: any) => {\n const newMap = { ...firstCharMap.current };\n delete newMap[id];\n firstCharMap.current = newMap;\n }, []);\n\n /**\n * Event handlers and Navigation\n */\n const handleNextArrow = (event: React.KeyboardEvent<HTMLUListElement>) => {\n if (!focusedNodeId) return false;\n if (isExpandable(focusedNodeId)) {\n if (isExpanded(focusedNodeId)) {\n focusNextNode(event, focusedNodeId);\n } else if (!isDisabled(focusedNodeId)) {\n toggleExpansion(event);\n }\n }\n return true;\n };\n\n const handlePreviousArrow = (\n event: React.KeyboardEvent<HTMLUListElement>,\n ) => {\n if (!focusedNodeId) return false;\n if (isExpanded(focusedNodeId) && !isDisabled(focusedNodeId)) {\n toggleExpansion(event, focusedNodeId);\n return true;\n }\n\n const parent = getParent(focusedNodeId);\n if (parent) {\n focus(event, parent);\n return true;\n }\n return false;\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>) => {\n let flag = false;\n const { key } = event;\n\n // If the tree is empty there will be no focused node\n if (\n event.altKey ||\n event.currentTarget !== event.target ||\n !focusedNodeId\n ) {\n return;\n }\n\n const ctrlPressed = event.ctrlKey || event.metaKey;\n switch (key) {\n case \" \":\n if (isSelectable(focusedNodeId) && !isDisabled(focusedNodeId)) {\n if (multiSelect && event.shiftKey) {\n selectRange(event, { end: focusedNodeId });\n flag = true;\n } else if (multiSelect) {\n flag = selectNode(event, focusedNodeId, true);\n } else {\n flag = selectNode(event, focusedNodeId);\n }\n }\n event.stopPropagation();\n break;\n case \"Enter\":\n if (!isDisabled(focusedNodeId)) {\n if (isExpandable(focusedNodeId)) {\n toggleExpansion(event);\n flag = true;\n } else if (isSelectable(focusedNodeId)) {\n if (multiSelect && event.shiftKey) {\n selectRange(event, { end: focusedNodeId });\n flag = true;\n } else if (multiSelect) {\n flag = selectNode(event, focusedNodeId, true);\n } else {\n flag = selectNode(event, focusedNodeId);\n }\n }\n }\n event.stopPropagation();\n break;\n case \"ArrowDown\":\n if (multiSelect && event.shiftKey) {\n selectNextNode(event, focusedNodeId);\n }\n focusNextNode(event, focusedNodeId);\n flag = true;\n break;\n case \"ArrowUp\":\n if (multiSelect && event.shiftKey) {\n selectPreviousNode(event, focusedNodeId);\n }\n focusPreviousNode(event, focusedNodeId);\n flag = true;\n break;\n case \"ArrowRight\":\n flag = handleNextArrow(event);\n break;\n case \"ArrowLeft\":\n flag = handlePreviousArrow(event);\n break;\n case \"Home\":\n if (\n multiSelect &&\n ctrlPressed &&\n event.shiftKey &&\n !isDisabled(focusedNodeId)\n ) {\n rangeSelectToFirst(event, focusedNodeId);\n }\n focusFirstNode(event);\n flag = true;\n break;\n case \"End\":\n if (\n multiSelect &&\n ctrlPressed &&\n event.shiftKey &&\n !isDisabled(focusedNodeId)\n ) {\n rangeSelectToLast(event, focusedNodeId);\n }\n focusLastNode(event);\n flag = true;\n break;\n default:\n if (key === \"*\") {\n expandAllSiblings(event, focusedNodeId);\n flag = true;\n } else if (multiSelect && ctrlPressed && key.toLowerCase() === \"a\") {\n selectAllNodes(event);\n flag = true;\n } else if (\n !ctrlPressed &&\n !event.shiftKey &&\n isPrintableCharacter(key)\n ) {\n focusByFirstCharacter(event, focusedNodeId, key);\n flag = true;\n }\n }\n if (flag) {\n event.preventDefault();\n event.stopPropagation();\n }\n onKeyDown?.(event);\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLUListElement>) => {\n // if the event bubbled (which is React specific) we don't want to steal focus\n if (event.target === event.currentTarget) {\n const firstSelected = Array.isArray(selected) ? selected[0] : selected;\n focus(event, firstSelected || getNavigableChildrenIds(null)[0]);\n }\n onFocus?.(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLUListElement>) => {\n setFocusedNodeId(null);\n onBlur?.(event);\n };\n\n const activeDescendant =\n focusedNodeId && nodeMap.current[focusedNodeId]\n ? nodeMap.current[focusedNodeId].idAttribute\n : null;\n\n const treeControlContext = useMemo(\n () => ({\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode: selectable ? selectNode : noopSelection,\n selectRange: selectable ? selectRange : noopSelection,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n }),\n [\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n toggleExpansion,\n selectable,\n selectNode,\n selectRange,\n mode,\n collapsible,\n multiSelect,\n disabledItemsFocusable,\n treeId,\n ],\n );\n\n const treeStateContext = useMemo(\n () => ({\n isExpanded,\n isSelected,\n isFocused,\n isDisabled,\n isChildSelected,\n }),\n [isDisabled, isExpanded, isFocused, isSelected, isChildSelected],\n );\n\n return (\n <TreeViewControlContext.Provider value={treeControlContext}>\n <TreeViewStateContext.Provider value={treeStateContext}>\n <DescendantProvider>\n <ul\n ref={handleRef}\n id={idProp}\n className={cx(classes.root, className)}\n {...(treeviewMode && {\n id: treeId,\n role: \"tree\",\n \"aria-multiselectable\": multiSelect,\n \"aria-activedescendant\": activeDescendant,\n tabIndex: 0,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n })}\n {...others}\n >\n {children}\n </ul>\n </DescendantProvider>\n </TreeViewStateContext.Provider>\n </TreeViewControlContext.Provider>\n );\n});\n"],"names":["HvVerticalNavigationTreeView"],"mappings":"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"}
1
+ {"version":3,"file":"TreeView.js","sources":["../../../../src/VerticalNavigation/TreeView/TreeView.tsx"],"sourcesContent":["import { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { useControlled } from \"../../hooks/useControlled\";\nimport { useForkRef } from \"../../hooks/useForkRef\";\nimport { useUniqueId } from \"../../hooks/useUniqueId\";\nimport { DescendantProvider } from \"../../TreeView/internals/DescendantProvider\";\nimport { HvBaseProps } from \"../../types/generic\";\nimport { staticClasses, useClasses } from \"./TreeView.styles\";\nimport {\n NavigationMode,\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\n\nexport { staticClasses as treeViewClasses };\n\nexport type HvVerticalNavigationTreeViewClasses = ExtractNames<\n typeof useClasses\n>;\n\nexport interface HvVerticalNavigationTreeViewProps\n extends HvBaseProps<HTMLUListElement, \"onChange\" | \"onToggle\"> {\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvVerticalNavigationTreeViewClasses;\n /** Modus operandi (role) of the widget instance. */\n mode?: NavigationMode;\n /** Enables selection. @default false */\n selectable?: boolean;\n /** Enables the simultaneous selection of multiple items. @default false */\n multiSelect?: boolean;\n /** The selected nodes' ids. When `multiSelect` is true this takes an array of strings; when false (default) a string. */\n selected?: string[] | string;\n /**\n * When uncontrolled, defines the initial selected nodes' ids.\n * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n * @default []\n */\n defaultSelected?: string[] | string;\n /** Can non-leaf nodes be collapsed / expanded. */\n collapsible?: boolean;\n /** Callback fired when a tree item is selected. */\n onChange?: (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeId: string | string[],\n payloads: any,\n ) => void;\n /** Expanded nodes' ids. */\n expanded?: string[];\n /** When uncontrolled, defines the initial expanded nodes' ids. @default [] */\n defaultExpanded?: string[];\n /** Callback fired when tree items are expanded/collapsed. */\n onToggle?: (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeIds: string[],\n ) => void;\n /** If `true`, will allow focus on disabled items. @default false */\n disabledItemsFocusable?: boolean;\n}\nfunction isPrintableCharacter(string: string) {\n return string && string.length === 1 && string.match(/\\S/);\n}\n\nfunction findNextFirstChar(\n firstChars: string[],\n startIndex: number,\n char: string,\n) {\n return firstChars.slice(startIndex).findIndex((c) => c === char);\n}\n\nfunction noopSelection() {\n return false;\n}\n\nexport const HvVerticalNavigationTreeView = forwardRef<\n HTMLUListElement,\n HvVerticalNavigationTreeViewProps\n>(function HvVerticalNavigationTreeView(props, ref) {\n const {\n id: idProp,\n className,\n classes: classesProp,\n mode = \"treeview\",\n collapsible = false,\n expanded: expandedProp,\n defaultExpanded = [],\n onToggle,\n selectable = false,\n multiSelect: multiSelectProp = false,\n selected: selectedProp,\n defaultSelected = [],\n onChange,\n disabledItemsFocusable = false,\n onFocus,\n onBlur,\n onKeyDown,\n children,\n ...others\n } = useDefaultProps(\"HvVerticalNavigationTreeView\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const treeviewMode = mode === \"treeview\";\n const multiSelect = selectable && multiSelectProp;\n\n const treeId = useUniqueId(idProp);\n const treeRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(treeRef, ref);\n\n const [expanded, setExpandedState] = useControlled(\n expandedProp,\n defaultExpanded,\n );\n\n const [selected, setSelectedState] = useControlled(\n selectedProp,\n defaultSelected,\n );\n\n const [focusedNodeId, setFocusedNodeId] = useState<string | null>(null);\n\n const nodeMap = useRef<Record<string, any>>({});\n\n const firstCharMap = useRef<Record<string, any>>({});\n\n const isExpanded = useCallback(\n (id: string) =>\n !collapsible ||\n (Array.isArray(expanded) ? expanded.indexOf(id) !== -1 : false),\n [collapsible, expanded],\n );\n\n const isExpandable = useCallback(\n (id: string) =>\n collapsible && nodeMap.current[id] && nodeMap.current[id].expandable,\n [collapsible],\n );\n\n const isSelected = useCallback(\n (id: string) =>\n selectable &&\n (Array.isArray(selected) ? selected.indexOf(id) !== -1 : selected === id),\n [selectable, selected],\n );\n\n const isSelectable = useCallback(\n (id: string) =>\n selectable && nodeMap.current[id] && nodeMap.current[id].selectable,\n [selectable],\n );\n\n const isDisabled = useCallback((id: string) => {\n let node = nodeMap.current[id];\n\n // This can be called before the node has been added to the node map.\n if (!node) {\n return false;\n }\n\n if (node.disabled) {\n return true;\n }\n\n while (node.parentId != null) {\n node = nodeMap.current[node.parentId];\n if (node.disabled) {\n return true;\n }\n }\n\n return false;\n }, []);\n\n const isFocused = useCallback(\n (id: string) => focusedNodeId === id,\n [focusedNodeId],\n );\n\n const isChildSelected = useCallback(\n // the second part of the condition is to ensure that the id we're\n // looking at is actually of a child (ie, there's at least one \"-\")\n (id: string) => {\n return Array<string>()\n .concat(selected)\n .some((s) => s.startsWith(id) && s.includes(\"-\"));\n },\n [selected],\n );\n\n const getChildrenIds = (id: string | null) =>\n Object.keys(nodeMap.current)\n .map((key) => {\n return nodeMap.current[key];\n })\n .filter((node) => node.parentId === id)\n .sort((a, b) => a.index - b.index)\n .map((child) => child.id);\n\n const getNavigableChildrenIds = useCallback(\n (id: string | null) => {\n let childrenIds = getChildrenIds(id);\n\n if (!disabledItemsFocusable) {\n childrenIds = childrenIds.filter((node) => !isDisabled(node));\n }\n return childrenIds;\n },\n [disabledItemsFocusable, isDisabled],\n );\n\n const getNextNode = useCallback(\n (id: string) => {\n // If expanded get first child\n if (isExpanded(id) && getNavigableChildrenIds(id).length > 0) {\n return getNavigableChildrenIds(id)[0];\n }\n\n let node = nodeMap.current[id];\n while (node != null) {\n // Try to get next sibling\n const siblings = getNavigableChildrenIds(node.parentId);\n const nextSibling = siblings[siblings.indexOf(node.id) + 1];\n\n if (nextSibling) {\n return nextSibling;\n }\n\n // If the sibling does not exist, go up a level to the parent and try again.\n node = nodeMap.current[node.parentId];\n }\n\n return null;\n },\n [getNavigableChildrenIds, isExpanded],\n );\n\n const getPreviousNode = (id: string) => {\n const node = nodeMap.current[id];\n const siblings = getNavigableChildrenIds(node.parentId);\n const nodeIndex = siblings.indexOf(id);\n\n if (nodeIndex === 0) {\n return node.parentId;\n }\n\n let currentNode = siblings[nodeIndex - 1];\n while (\n isExpanded(currentNode) &&\n getNavigableChildrenIds(currentNode).length > 0\n ) {\n currentNode = getNavigableChildrenIds(currentNode).pop();\n }\n\n return currentNode;\n };\n\n const getLastNode = () => {\n let lastNode = getNavigableChildrenIds(null).pop();\n\n while (isExpanded(lastNode)) {\n lastNode = getNavigableChildrenIds(lastNode).pop();\n }\n return lastNode;\n };\n const getFirstNode = () => getNavigableChildrenIds(null)[0];\n const getParent = (id: any) => nodeMap.current[id].parentId;\n\n /**\n * This is used to determine the start and end of a selection range so\n * we can get the nodes between the two border nodes.\n *\n * It finds the nodes' common ancestor using\n * a naive implementation of a lowest common ancestor algorithm\n * (https://en.wikipedia.org/wiki/Lowest_common_ancestor).\n * Then compares the ancestor's 2 children that are ancestors of nodeA and NodeB\n * so we can compare their indexes to work out which node comes first in a depth first search.\n * (https://en.wikipedia.org/wiki/Depth-first_search)\n *\n * Another way to put it is which node is shallower in a trémaux tree\n * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree\n */\n const findOrderInTremauxTree = useCallback(\n (nodeAId: string, nodeBId: string) => {\n if (nodeAId === nodeBId) {\n return [nodeAId, nodeBId];\n }\n\n const nodeA = nodeMap.current[nodeAId];\n const nodeB = nodeMap.current[nodeBId];\n\n if (nodeA.parentId === nodeB.id || nodeB.parentId === nodeA.id) {\n return nodeB.parentId === nodeA.id\n ? [nodeA.id, nodeB.id]\n : [nodeB.id, nodeA.id];\n }\n\n const aFamily = [nodeA.id];\n const bFamily = [nodeB.id];\n\n let aAncestor = nodeA.parentId;\n let bAncestor = nodeB.parentId;\n\n let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n\n let continueA = true;\n let continueB = true;\n\n while (!bAncestorIsCommon && !aAncestorIsCommon) {\n if (continueA) {\n aFamily.push(aAncestor);\n aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n continueA = aAncestor !== null;\n if (!aAncestorIsCommon && continueA) {\n aAncestor = nodeMap.current[aAncestor].parentId;\n }\n }\n\n if (continueB && !aAncestorIsCommon) {\n bFamily.push(bAncestor);\n bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n continueB = bAncestor !== null;\n if (!bAncestorIsCommon && continueB) {\n bAncestor = nodeMap.current[bAncestor].parentId;\n }\n }\n }\n\n const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;\n const ancestorFamily = getChildrenIds(commonAncestor);\n\n const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];\n const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];\n\n return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide)\n ? [nodeAId, nodeBId]\n : [nodeBId, nodeAId];\n },\n [],\n );\n\n const getNodesInRange = useCallback(\n (nodeA: string, nodeB: string) => {\n if (nodeA && nodeB) {\n const [first, last] = findOrderInTremauxTree(nodeA, nodeB);\n const nodes = [first];\n\n let current = first;\n\n while (current !== last) {\n current = getNextNode(current);\n nodes.push(current);\n }\n\n return nodes;\n }\n return [];\n },\n [findOrderInTremauxTree, getNextNode],\n );\n\n const focus = (\n event:\n | React.KeyboardEvent<HTMLUListElement>\n | React.FocusEvent<HTMLUListElement>,\n id: any,\n ) => {\n if (id) {\n setFocusedNodeId(id);\n\n if (nodeMap.current[id]?.onFocus) {\n nodeMap.current[id].onFocus(event);\n }\n }\n };\n\n const focusNextNode = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => focus(event, getNextNode(id));\n const focusPreviousNode = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => focus(event, getPreviousNode(id));\n const focusFirstNode = (event: React.KeyboardEvent<HTMLUListElement>) =>\n focus(event, getFirstNode());\n const focusLastNode = (event: React.KeyboardEvent<HTMLUListElement>) =>\n focus(event, getLastNode());\n\n const focusByFirstCharacter = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n char: any,\n ) => {\n let start;\n let index;\n const lowercaseChar = char.toLowerCase();\n\n const firstCharIds: string[] = [];\n const firstChars: string[] = [];\n // This really only works since the ids are strings\n Object.keys(firstCharMap.current).forEach((nodeId) => {\n const firstChar = firstCharMap.current[nodeId];\n const map = nodeMap.current[nodeId];\n const visible = map.parentId ? isExpanded(map.parentId) : true;\n const shouldBeSkipped = disabledItemsFocusable\n ? false\n : isDisabled(nodeId);\n\n if (visible && !shouldBeSkipped) {\n firstCharIds.push(nodeId);\n firstChars.push(firstChar);\n }\n });\n\n // Get start index for search based on position of currentItem\n start = firstCharIds.indexOf(id) + 1;\n if (start >= firstCharIds.length) {\n start = 0;\n }\n\n // Check remaining slots in the menu\n index = findNextFirstChar(firstChars, start, lowercaseChar);\n\n // If not found in remaining slots, check from beginning\n if (index === -1) {\n index = findNextFirstChar(firstChars, 0, lowercaseChar);\n }\n\n // If match was found...\n if (index > -1) {\n focus(event, firstCharIds[index]);\n }\n };\n\n const toggleExpansion = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>, value = focusedNodeId) => {\n if (!value) return;\n\n const newExpanded = expanded.includes(value)\n ? expanded.filter((id) => id !== value)\n : [value].concat(expanded);\n\n onToggle?.(event, newExpanded);\n\n setExpandedState(newExpanded);\n },\n [expanded, focusedNodeId, onToggle, setExpandedState],\n );\n\n const expandAllSiblings = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => {\n const map = nodeMap.current[id];\n const siblings = getChildrenIds(map.parentId);\n\n const diff = siblings.filter(\n (child) => isExpandable(child) && !isExpanded(child),\n );\n\n const newExpanded = expanded.concat(diff);\n\n if (diff.length > 0) {\n setExpandedState(newExpanded);\n onToggle?.(event, newExpanded);\n }\n };\n\n const lastSelectedNode = useRef<HTMLDivElement | null>(null);\n const lastSelectionWasRange = useRef(false);\n const currentRangeSelection = useRef<HTMLDivElement[]>([]);\n\n const isDivElement = (element: any): element is HTMLDivElement => {\n return (element as HTMLDivElement).nodeType === 1;\n };\n\n const handleRangeArrowSelect = useCallback(\n (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodes: { start?: any; next?: any; current?: any },\n ) => {\n let base = Array<string>().concat(selected);\n const { start, next, current } = nodes;\n\n if (!next || !current) {\n return;\n }\n\n if (\n isDivElement(current) &&\n currentRangeSelection.current.indexOf(current) === -1\n ) {\n currentRangeSelection.current = [];\n }\n\n if (lastSelectionWasRange.current) {\n if (\n isDivElement(next) &&\n currentRangeSelection.current.indexOf(next) !== -1\n ) {\n base = base.filter((id) => id === start || id !== current);\n currentRangeSelection.current = currentRangeSelection.current.filter(\n (id) => id === start || id !== current,\n );\n } else {\n base.push(next);\n currentRangeSelection.current.push(next);\n }\n } else {\n base.push(next);\n currentRangeSelection.current.push(current, next);\n }\n onChange?.(\n event,\n base,\n base.map((id) => nodeMap.current[id]?.payload),\n );\n setSelectedState(base);\n },\n [onChange, selected, setSelectedState],\n );\n\n const handleRangeSelect = useCallback(\n (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodes: { start?: any; end?: any; current?: any },\n ) => {\n let base = Array<string>().concat(selected);\n const { start, end } = nodes;\n // If last selection was a range selection ignore nodes that were selected.\n if (lastSelectionWasRange.current) {\n base = base.filter(\n (id) => !currentRangeSelection.current.includes(id as any),\n );\n }\n\n let range = getNodesInRange(start, end);\n range = range.filter((node) => !isDisabled(node));\n currentRangeSelection.current = range;\n let newSelected = base.concat(range);\n newSelected = newSelected.filter(\n (id, i) => newSelected.indexOf(id) === i,\n );\n\n onChange?.(\n event,\n newSelected,\n newSelected.map((id) => nodeMap.current[id]?.payload),\n );\n\n setSelectedState(newSelected);\n },\n [getNodesInRange, isDisabled, onChange, selected, setSelectedState],\n );\n\n const handleMultipleSelect = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>, value: any) => {\n const newSelected = selected.includes(value)\n ? (selected as string[]).filter((id) => id !== value)\n : [value].concat(selected);\n onChange?.(\n event,\n newSelected,\n newSelected.map((id) => nodeMap.current[id]?.payload),\n );\n setSelectedState(newSelected);\n },\n [onChange, selected, setSelectedState],\n );\n\n const handleSingleSelect = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>, value: any) => {\n const newSelected = multiSelect ? [value] : value;\n if (onChange) {\n const nodeValue = nodeMap.current[newSelected]?.payload;\n onChange(event, newSelected, multiSelect ? [nodeValue] : nodeValue);\n }\n\n setSelectedState(newSelected);\n },\n [multiSelect, onChange, setSelectedState],\n );\n\n const selectNode = useCallback(\n (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n multiple = false,\n ) => {\n if (id && isSelectable(id)) {\n if (multiple) {\n handleMultipleSelect(event, id);\n } else {\n handleSingleSelect(event, id);\n }\n lastSelectedNode.current = id;\n lastSelectionWasRange.current = false;\n currentRangeSelection.current = [];\n\n return true;\n }\n return false;\n },\n [handleMultipleSelect, handleSingleSelect, isSelectable],\n );\n\n const selectRange = useCallback(\n (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodes: { start?: any; end?: any; current?: HTMLDivElement | null },\n stacked = false,\n ) => {\n const { start = lastSelectedNode.current, end, current } = nodes;\n if (stacked) {\n handleRangeArrowSelect(event, { start, next: end, current });\n } else if (start != null && end != null) {\n handleRangeSelect(event, { start, end });\n }\n lastSelectionWasRange.current = true;\n },\n [handleRangeArrowSelect, handleRangeSelect],\n );\n\n const rangeSelectToFirst = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = id;\n }\n\n const start = lastSelectionWasRange.current ? lastSelectedNode.current : id;\n\n selectRange(event, {\n start,\n end: getFirstNode(),\n });\n };\n\n const rangeSelectToLast = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = id;\n }\n\n const start = lastSelectionWasRange.current ? lastSelectedNode.current : id;\n\n selectRange(event, {\n start,\n end: getLastNode(),\n });\n };\n\n const selectNextNode = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => {\n if (!isDisabled(getNextNode(id))) {\n selectRange(\n event,\n {\n end: getNextNode(id),\n current: id,\n },\n true,\n );\n }\n };\n\n const selectPreviousNode = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: any,\n ) => {\n if (!isDisabled(getPreviousNode(id))) {\n selectRange(\n event,\n {\n end: getPreviousNode(id),\n current: id,\n },\n true,\n );\n }\n };\n\n const selectAllNodes = (event: React.KeyboardEvent<HTMLUListElement>) => {\n selectRange(event, { start: getFirstNode(), end: getLastNode() });\n };\n\n /*\n * Mapping Helpers\n */\n const registerNode = useCallback((node: any) => {\n const {\n id,\n index,\n parentId,\n expandable,\n idAttribute,\n disabled,\n selectable: nodeSelectable,\n onFocus: nodeOnFocus,\n payload,\n } = node;\n\n nodeMap.current[id] = {\n id,\n index,\n parentId,\n expandable,\n idAttribute,\n disabled,\n selectable: nodeSelectable,\n onFocus: nodeOnFocus,\n payload,\n };\n }, []);\n\n const unregisterNode = useCallback((id: any) => {\n const newMap = { ...nodeMap.current };\n delete newMap[id];\n nodeMap.current = newMap;\n\n setFocusedNodeId((oldFocusedNodeId) => {\n if (\n oldFocusedNodeId === id &&\n treeRef.current &&\n treeRef.current ===\n (treeRef.current.ownerDocument || document).activeElement\n ) {\n return getChildrenIds(null)[0];\n }\n return oldFocusedNodeId;\n });\n }, []);\n\n const mapFirstChar = useCallback((id: any, firstChar: any) => {\n firstCharMap.current[id] = firstChar;\n }, []);\n\n const unMapFirstChar = useCallback((id: any) => {\n const newMap = { ...firstCharMap.current };\n delete newMap[id];\n firstCharMap.current = newMap;\n }, []);\n\n /**\n * Event handlers and Navigation\n */\n const handleNextArrow = (event: React.KeyboardEvent<HTMLUListElement>) => {\n if (!focusedNodeId) return false;\n if (isExpandable(focusedNodeId)) {\n if (isExpanded(focusedNodeId)) {\n focusNextNode(event, focusedNodeId);\n } else if (!isDisabled(focusedNodeId)) {\n toggleExpansion(event);\n }\n }\n return true;\n };\n\n const handlePreviousArrow = (\n event: React.KeyboardEvent<HTMLUListElement>,\n ) => {\n if (!focusedNodeId) return false;\n if (isExpanded(focusedNodeId) && !isDisabled(focusedNodeId)) {\n toggleExpansion(event, focusedNodeId);\n return true;\n }\n\n const parent = getParent(focusedNodeId);\n if (parent) {\n focus(event, parent);\n return true;\n }\n return false;\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>) => {\n let flag = false;\n const { key } = event;\n\n // If the tree is empty there will be no focused node\n if (\n event.altKey ||\n event.currentTarget !== event.target ||\n !focusedNodeId\n ) {\n return;\n }\n\n const ctrlPressed = event.ctrlKey || event.metaKey;\n switch (key) {\n case \" \":\n if (isSelectable(focusedNodeId) && !isDisabled(focusedNodeId)) {\n if (multiSelect && event.shiftKey) {\n selectRange(event, { end: focusedNodeId });\n flag = true;\n } else if (multiSelect) {\n flag = selectNode(event, focusedNodeId, true);\n } else {\n flag = selectNode(event, focusedNodeId);\n }\n }\n event.stopPropagation();\n break;\n case \"Enter\":\n if (!isDisabled(focusedNodeId)) {\n if (isExpandable(focusedNodeId)) {\n toggleExpansion(event);\n flag = true;\n } else if (isSelectable(focusedNodeId)) {\n if (multiSelect && event.shiftKey) {\n selectRange(event, { end: focusedNodeId });\n flag = true;\n } else if (multiSelect) {\n flag = selectNode(event, focusedNodeId, true);\n } else {\n flag = selectNode(event, focusedNodeId);\n }\n }\n }\n event.stopPropagation();\n break;\n case \"ArrowDown\":\n if (multiSelect && event.shiftKey) {\n selectNextNode(event, focusedNodeId);\n }\n focusNextNode(event, focusedNodeId);\n flag = true;\n break;\n case \"ArrowUp\":\n if (multiSelect && event.shiftKey) {\n selectPreviousNode(event, focusedNodeId);\n }\n focusPreviousNode(event, focusedNodeId);\n flag = true;\n break;\n case \"ArrowRight\":\n flag = handleNextArrow(event);\n break;\n case \"ArrowLeft\":\n flag = handlePreviousArrow(event);\n break;\n case \"Home\":\n if (\n multiSelect &&\n ctrlPressed &&\n event.shiftKey &&\n !isDisabled(focusedNodeId)\n ) {\n rangeSelectToFirst(event, focusedNodeId);\n }\n focusFirstNode(event);\n flag = true;\n break;\n case \"End\":\n if (\n multiSelect &&\n ctrlPressed &&\n event.shiftKey &&\n !isDisabled(focusedNodeId)\n ) {\n rangeSelectToLast(event, focusedNodeId);\n }\n focusLastNode(event);\n flag = true;\n break;\n default:\n if (key === \"*\") {\n expandAllSiblings(event, focusedNodeId);\n flag = true;\n } else if (multiSelect && ctrlPressed && key.toLowerCase() === \"a\") {\n selectAllNodes(event);\n flag = true;\n } else if (\n !ctrlPressed &&\n !event.shiftKey &&\n isPrintableCharacter(key)\n ) {\n focusByFirstCharacter(event, focusedNodeId, key);\n flag = true;\n }\n }\n if (flag) {\n event.preventDefault();\n event.stopPropagation();\n }\n onKeyDown?.(event);\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLUListElement>) => {\n // if the event bubbled (which is React specific) we don't want to steal focus\n if (event.target === event.currentTarget) {\n const firstSelected = Array.isArray(selected) ? selected[0] : selected;\n focus(event, firstSelected || getNavigableChildrenIds(null)[0]);\n }\n onFocus?.(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLUListElement>) => {\n setFocusedNodeId(null);\n onBlur?.(event);\n };\n\n const activeDescendant =\n focusedNodeId && nodeMap.current[focusedNodeId]\n ? nodeMap.current[focusedNodeId].idAttribute\n : null;\n\n const treeControlContext = useMemo(\n () => ({\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode: selectable ? selectNode : noopSelection,\n selectRange: selectable ? selectRange : noopSelection,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n }),\n [\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n toggleExpansion,\n selectable,\n selectNode,\n selectRange,\n mode,\n collapsible,\n multiSelect,\n disabledItemsFocusable,\n treeId,\n ],\n );\n\n const treeStateContext = useMemo(\n () => ({\n isExpanded,\n isSelected,\n isFocused,\n isDisabled,\n isChildSelected,\n }),\n [isDisabled, isExpanded, isFocused, isSelected, isChildSelected],\n );\n\n return (\n <TreeViewControlContext.Provider value={treeControlContext}>\n <TreeViewStateContext.Provider value={treeStateContext}>\n <DescendantProvider>\n <ul\n ref={handleRef}\n id={idProp}\n className={cx(classes.root, className)}\n {...(treeviewMode && {\n id: treeId,\n role: \"tree\",\n \"aria-multiselectable\": multiSelect,\n \"aria-activedescendant\": activeDescendant,\n tabIndex: 0,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n })}\n {...others}\n >\n {children}\n </ul>\n </DescendantProvider>\n </TreeViewStateContext.Provider>\n </TreeViewControlContext.Provider>\n );\n});\n"],"names":["HvVerticalNavigationTreeView"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeView.styles.js","sources":["../../../../src/VerticalNavigation/TreeView/TreeView.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationTreeView\",\n {\n root: {\n display: \"block\",\n padding: `0px`,\n margin: \"0\",\n listStyle: \"none\",\n outline: \"none\",\n },\n },\n);\n"],"names":[],"mappings":";AAEa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IACX;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"TreeView.styles.js","sources":["../../../../src/VerticalNavigation/TreeView/TreeView.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationTreeView\",\n {\n root: {\n display: \"block\",\n padding: `0px`,\n margin: \"0\",\n listStyle: \"none\",\n outline: \"none\",\n },\n },\n);\n"],"names":[],"mappings":";AAEa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeViewContext.js","sources":["../../../../src/VerticalNavigation/TreeView/TreeViewContext.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nexport type NavigationMode = \"treeview\" | \"navigation\" | \"slider\";\n\nconst TreeViewControlContext = createContext<TreeViewControlContextValue>({});\nTreeViewControlContext.displayName = \"TreeViewControlContext\";\n\nconst TreeViewStateContext = createContext<TreeviewStateContextValue>({});\nTreeViewStateContext.displayName = \"TreeViewStateContext\";\n\nexport { TreeViewControlContext, TreeViewStateContext };\n\ninterface TreeviewStateContextValue {\n isExpanded?: (id: any) => boolean;\n isSelected?: (id: any) => boolean;\n isFocused?: (id: any) => boolean;\n isDisabled?: (id: any) => boolean;\n isChildSelected?: (id: any) => boolean;\n}\n\ninterface TreeViewControlContextValue {\n treeId?: any;\n mode?: NavigationMode;\n collapsible?: boolean;\n toggleExpansion?: (event: any, value?: any) => void;\n multiSelect?: boolean;\n selectNode?: (event: any, id: any, multiple?: any) => boolean;\n selectRange?: (event: any, nodes: any, stacked?: boolean) => void;\n disabledItemsFocusable?: boolean;\n registerNode?: (node: any) => void;\n unregisterNode?: (id: any) => void;\n mapFirstChar?: (id: any, firstChar: any) => void;\n unMapFirstChar?: (id: any, firstChar?: any) => void;\n focus?: (id: any, firstChar: any) => void;\n}\n"],"names":[],"mappings":";AAIM,MAAA,yBAAyB,cAA2C,EAAE;AAC5E,uBAAuB,cAAc;AAE/B,MAAA,uBAAuB,cAAyC,EAAE;AACxE,qBAAqB,cAAc;"}
1
+ {"version":3,"file":"TreeViewContext.js","sources":["../../../../src/VerticalNavigation/TreeView/TreeViewContext.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nexport type NavigationMode = \"treeview\" | \"navigation\" | \"slider\";\n\nconst TreeViewControlContext = createContext<TreeViewControlContextValue>({});\nTreeViewControlContext.displayName = \"TreeViewControlContext\";\n\nconst TreeViewStateContext = createContext<TreeviewStateContextValue>({});\nTreeViewStateContext.displayName = \"TreeViewStateContext\";\n\nexport { TreeViewControlContext, TreeViewStateContext };\n\ninterface TreeviewStateContextValue {\n isExpanded?: (id: any) => boolean;\n isSelected?: (id: any) => boolean;\n isFocused?: (id: any) => boolean;\n isDisabled?: (id: any) => boolean;\n isChildSelected?: (id: any) => boolean;\n}\n\ninterface TreeViewControlContextValue {\n treeId?: any;\n mode?: NavigationMode;\n collapsible?: boolean;\n toggleExpansion?: (event: any, value?: any) => void;\n multiSelect?: boolean;\n selectNode?: (event: any, id: any, multiple?: any) => boolean;\n selectRange?: (event: any, nodes: any, stacked?: boolean) => void;\n disabledItemsFocusable?: boolean;\n registerNode?: (node: any) => void;\n unregisterNode?: (id: any) => void;\n mapFirstChar?: (id: any, firstChar: any) => void;\n unMapFirstChar?: (id: any, firstChar?: any) => void;\n focus?: (id: any, firstChar: any) => void;\n}\n"],"names":[],"mappings":";AAIM,MAAA,yBAAyB,cAA2C,CAAE,CAAA;AAC5E,uBAAuB,cAAc;AAE/B,MAAA,uBAAuB,cAAyC,CAAE,CAAA;AACxE,qBAAqB,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeViewItem.js","sources":["../../../../src/VerticalNavigation/TreeView/TreeViewItem.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { DropDownXS, Forwards } from \"@hitachivantara/uikit-react-icons\";\nimport {\n mergeStyles,\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvAvatar } from \"../../Avatar\";\nimport { useForkRef } from \"../../hooks/useForkRef\";\nimport { HvOverflowTooltip } from \"../../OverflowTooltip\";\nimport { HvTooltip } from \"../../Tooltip\";\nimport {\n DescendantProvider,\n useDescendant,\n} from \"../../TreeView/internals/DescendantProvider\";\nimport { HvTypography } from \"../../Typography\";\nimport { setId } from \"../../utils/setId\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { staticClasses, useClasses } from \"./TreeViewItem.styles\";\n\nexport { staticClasses as treeViewItemClasses };\n\nexport type HvVerticalNavigationTreeViewItemClasses = ExtractNames<\n typeof useClasses\n>;\n\nexport interface HvVerticalNavigationTreeViewItemProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes?: HvVerticalNavigationTreeViewItemClasses;\n /**\n * Is the node disabled.\n */\n disabled?: boolean;\n /**\n * Can the node be selected.\n */\n selectable?: boolean;\n /**\n * The id of the node.\n */\n nodeId?: string;\n /**\n * The icon to display next to the node's label.\n */\n icon?: React.ReactNode;\n /**\n * The item label.\n */\n label?: React.ReactNode;\n /**\n * The url for the link.\n */\n href?: string;\n /**\n * The behavior when opening a link.\n */\n target?: string;\n /**\n * The node payload.\n */\n payload?: any;\n /**\n * @ignore\n */\n onClick?: any;\n /**\n * @ignore\n */\n onMouseDown?: any;\n /**\n * @ignore\n */\n onFocus?: any;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n /**\n * @ignore\n */\n onMouseEnter?: any;\n /**\n * Disables the appearence of a tooltip on hovering an element ( Only applicable when the in collapsed mode)\n */\n disableTooltip?: boolean;\n}\n\nconst preventSelection = (event: any, disabled: any) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nexport const HvVerticalNavigationTreeViewItem = forwardRef(\n (props: HvVerticalNavigationTreeViewItemProps, ref) => {\n const {\n id: idProp,\n className,\n classes: classesProp,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n disableTooltip,\n\n ...others\n } = useDefaultProps(\"HvVerticalNavigationTreeViewItem\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled, isChildSelected } =\n useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id: string | null = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState<HTMLLIElement>();\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement!,\n id: nodeId!,\n }),\n [nodeId, treeitemElement],\n );\n\n const { isOpen, useIcons, hasAnyChildWithData } = useContext(\n VerticalNavigationContext,\n );\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable =\n selectableProp != null\n ? selectableProp\n : !collapsible || !expandable || !isOpen;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (\n mapFirstChar &&\n unMapFirstChar &&\n label &&\n contentRef.current?.textContent\n ) {\n mapFirstChar(\n nodeId,\n contentRef.current?.textContent.substring(0, 1).toLowerCase(),\n );\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event: any) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (\n !focused &&\n event.currentTarget === event.target &&\n !unfocusable &&\n focus\n ) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId],\n );\n\n const handleExpansion = useCallback(\n (event: any) => {\n if (!disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (\n expandable &&\n isOpen &&\n !(multiple && isExpanded && isExpanded(nodeId))\n ) {\n if (toggleExpansion) toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n isOpen,\n ],\n );\n\n const handleSelection = useCallback(\n (event: any) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n if (selectRange) return selectRange(event, { end: nodeId });\n } else if (selectNode) return selectNode(event, nodeId, true);\n } else if (selectNode) return selectNode(event, nodeId);\n } else {\n return false;\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ],\n );\n\n const handleMouseDown = useCallback(\n (event: any) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown],\n );\n\n const handleClick = useCallback(\n (event: any) => {\n if (!disabled) {\n if (expandable && isOpen) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [\n disabled,\n expandable,\n handleExpansion,\n handleSelection,\n onClick,\n selectable,\n isOpen,\n ],\n );\n\n const handleKeyDown = useCallback(\n (event: any) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.currentTarget !== event.target\n ) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable && isOpen) {\n isEventHandled = handleExpansion(event) as unknown as boolean;\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event) as boolean;\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable, isOpen],\n );\n\n const renderedContent = useMemo(() => {\n const buttonLinkProps = {\n href,\n target,\n };\n\n const hasChildren = !!children;\n const showTooltip = !hasChildren && !isOpen && !disableTooltip;\n\n const isLink = href !== undefined && !disabled;\n\n return (\n <HvTooltip placement=\"right\" title={showTooltip && label}>\n <HvTypography\n id={setId(id, \"button\")}\n component={isLink ? \"a\" : \"div\"}\n {...(isLink ? buttonLinkProps : null)}\n ref={contentRef}\n classes={{\n root: cx(classes.content, {\n [classes.link]: isLink,\n [classes.minimized]: !isOpen,\n }),\n }}\n variant=\"body\"\n disabled={disabled}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft:\n (useIcons || !isOpen ? 0 : 10) +\n level * (collapsible ? 16 : 10),\n }}\n role={isLink ? undefined : \"button\"}\n {...(treeviewMode\n ? {\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\":\n (selectable && selected) ||\n (!isOpen && isChildSelected?.(nodeId))\n ? href\n ? \"page\"\n : true\n : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\":\n isOpen && expandable ? setId(id, \"group\") : undefined,\n \"aria-label\": payload?.label,\n })}\n >\n <div\n className={classes.icon}\n style={mergeStyles(undefined, {\n \"--icon-margin-left\": hasAnyChildWithData ? \"auto\" : \"unset\",\n })}\n >\n {!icon && useIcons ? (\n <HvAvatar\n variant=\"square\"\n size=\"xs\"\n backgroundColor=\"secondary_80\"\n >\n {payload?.label?.substring(0, 1)}\n </HvAvatar>\n ) : (\n useIcons && icon\n )}\n {hasChildren && !isOpen ? (\n <Forwards iconSize=\"XS\" />\n ) : (\n hasAnyChildWithData && !isOpen && <div />\n )}\n </div>\n\n {isOpen && (\n <div\n className={cx(classes.label, {\n [classes.labelIcon]: useIcons,\n [classes.labelExpandable]: !!expandable,\n })}\n >\n <HvOverflowTooltip data={label} />\n </div>\n )}\n\n {isOpen && expandable && (\n <DropDownXS\n color=\"currentcolor\"\n style={{ rotate: expanded ? \"180deg\" : undefined }}\n />\n )}\n </HvTypography>\n </HvTooltip>\n );\n }, [\n href,\n target,\n children,\n isOpen,\n disableTooltip,\n disabled,\n label,\n id,\n cx,\n classes.content,\n classes.link,\n classes.minimized,\n classes.icon,\n classes.label,\n classes.labelIcon,\n classes.labelExpandable,\n handleClick,\n handleMouseDown,\n useIcons,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n expandable,\n handleKeyDown,\n selected,\n isChildSelected,\n nodeId,\n expanded,\n payload?.label,\n icon,\n hasAnyChildWithData,\n ]);\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <ul\n id={setId(id, \"group\")}\n className={classes.group}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </ul>\n ),\n [children, classes?.group, id, treeviewMode],\n );\n\n return (\n <li\n ref={handleRef}\n id={id ?? undefined}\n className={cx(\n classes.node,\n {\n [classes.disabled]: disabled,\n [classes.expandable]: expandable,\n [classes.collapsed]: expandable && !expanded,\n [classes.expanded]: expandable && expanded,\n [classes.selectable]: selectable && !disabled,\n [classes.unselectable]: !disabled && !selectable,\n [classes.selected]:\n (!disabled && selectable && selected) ||\n (!isOpen &&\n useIcons &&\n isChildSelected &&\n isChildSelected(nodeId)),\n [classes.unselected]: !disabled && selectable && !selected,\n [classes.focused]: focused,\n [classes.hide]: !isOpen && !useIcons,\n },\n className,\n )}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n {isOpen && (\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n )}\n </li>\n );\n },\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TreeViewItem.js","sources":["../../../../src/VerticalNavigation/TreeView/TreeViewItem.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { DropDownXS, Forwards } from \"@hitachivantara/uikit-react-icons\";\nimport {\n mergeStyles,\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvAvatar } from \"../../Avatar\";\nimport { useForkRef } from \"../../hooks/useForkRef\";\nimport { HvOverflowTooltip } from \"../../OverflowTooltip\";\nimport { HvTooltip } from \"../../Tooltip\";\nimport {\n DescendantProvider,\n useDescendant,\n} from \"../../TreeView/internals/DescendantProvider\";\nimport { HvTypography } from \"../../Typography\";\nimport { setId } from \"../../utils/setId\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport {\n TreeViewControlContext,\n TreeViewStateContext,\n} from \"./TreeViewContext\";\nimport { staticClasses, useClasses } from \"./TreeViewItem.styles\";\n\nexport { staticClasses as treeViewItemClasses };\n\nexport type HvVerticalNavigationTreeViewItemClasses = ExtractNames<\n typeof useClasses\n>;\n\nexport interface HvVerticalNavigationTreeViewItemProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes?: HvVerticalNavigationTreeViewItemClasses;\n /**\n * Is the node disabled.\n */\n disabled?: boolean;\n /**\n * Can the node be selected.\n */\n selectable?: boolean;\n /**\n * The id of the node.\n */\n nodeId?: string;\n /**\n * The icon to display next to the node's label.\n */\n icon?: React.ReactNode;\n /**\n * The item label.\n */\n label?: React.ReactNode;\n /**\n * The url for the link.\n */\n href?: string;\n /**\n * The behavior when opening a link.\n */\n target?: string;\n /**\n * The node payload.\n */\n payload?: any;\n /**\n * @ignore\n */\n onClick?: any;\n /**\n * @ignore\n */\n onMouseDown?: any;\n /**\n * @ignore\n */\n onFocus?: any;\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n /**\n * @ignore\n */\n onMouseEnter?: any;\n /**\n * Disables the appearence of a tooltip on hovering an element ( Only applicable when the in collapsed mode)\n */\n disableTooltip?: boolean;\n}\n\nconst preventSelection = (event: any, disabled: any) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nexport const HvVerticalNavigationTreeViewItem = forwardRef(\n (props: HvVerticalNavigationTreeViewItemProps, ref) => {\n const {\n id: idProp,\n className,\n classes: classesProp,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n disableTooltip,\n\n ...others\n } = useDefaultProps(\"HvVerticalNavigationTreeViewItem\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled, isChildSelected } =\n useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id: string | null = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState<HTMLLIElement>();\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement!,\n id: nodeId!,\n }),\n [nodeId, treeitemElement],\n );\n\n const { isOpen, useIcons, hasAnyChildWithData } = useContext(\n VerticalNavigationContext,\n );\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable =\n selectableProp != null\n ? selectableProp\n : !collapsible || !expandable || !isOpen;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (\n mapFirstChar &&\n unMapFirstChar &&\n label &&\n contentRef.current?.textContent\n ) {\n mapFirstChar(\n nodeId,\n contentRef.current?.textContent.substring(0, 1).toLowerCase(),\n );\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event: any) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (\n !focused &&\n event.currentTarget === event.target &&\n !unfocusable &&\n focus\n ) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId],\n );\n\n const handleExpansion = useCallback(\n (event: any) => {\n if (!disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (\n expandable &&\n isOpen &&\n !(multiple && isExpanded && isExpanded(nodeId))\n ) {\n if (toggleExpansion) toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n isOpen,\n ],\n );\n\n const handleSelection = useCallback(\n (event: any) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused && focus) {\n focus(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n if (selectRange) return selectRange(event, { end: nodeId });\n } else if (selectNode) return selectNode(event, nodeId, true);\n } else if (selectNode) return selectNode(event, nodeId);\n } else {\n return false;\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ],\n );\n\n const handleMouseDown = useCallback(\n (event: any) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown],\n );\n\n const handleClick = useCallback(\n (event: any) => {\n if (!disabled) {\n if (expandable && isOpen) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [\n disabled,\n expandable,\n handleExpansion,\n handleSelection,\n onClick,\n selectable,\n isOpen,\n ],\n );\n\n const handleKeyDown = useCallback(\n (event: any) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.currentTarget !== event.target\n ) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable && isOpen) {\n isEventHandled = handleExpansion(event) as unknown as boolean;\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event) as boolean;\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable, isOpen],\n );\n\n const renderedContent = useMemo(() => {\n const buttonLinkProps = {\n href,\n target,\n };\n\n const hasChildren = !!children;\n const showTooltip = !hasChildren && !isOpen && !disableTooltip;\n\n const isLink = href !== undefined && !disabled;\n\n return (\n <HvTooltip placement=\"right\" title={showTooltip && label}>\n <HvTypography\n id={setId(id, \"button\")}\n component={isLink ? \"a\" : \"div\"}\n {...(isLink ? buttonLinkProps : null)}\n ref={contentRef}\n classes={{\n root: cx(classes.content, {\n [classes.link]: isLink,\n [classes.minimized]: !isOpen,\n }),\n }}\n variant=\"body\"\n disabled={disabled}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft:\n (useIcons || !isOpen ? 0 : 10) +\n level * (collapsible ? 16 : 10),\n }}\n role={isLink ? undefined : \"button\"}\n {...(treeviewMode\n ? {\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\":\n (selectable && selected) ||\n (!isOpen && isChildSelected?.(nodeId))\n ? href\n ? \"page\"\n : true\n : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\":\n isOpen && expandable ? setId(id, \"group\") : undefined,\n \"aria-label\": payload?.label,\n })}\n >\n <div\n className={classes.icon}\n style={mergeStyles(undefined, {\n \"--icon-margin-left\": hasAnyChildWithData ? \"auto\" : \"unset\",\n })}\n >\n {!icon && useIcons ? (\n <HvAvatar\n variant=\"square\"\n size=\"xs\"\n backgroundColor=\"secondary_80\"\n >\n {payload?.label?.substring(0, 1)}\n </HvAvatar>\n ) : (\n useIcons && icon\n )}\n {hasChildren && !isOpen ? (\n <Forwards iconSize=\"XS\" />\n ) : (\n hasAnyChildWithData && !isOpen && <div />\n )}\n </div>\n\n {isOpen && (\n <div\n className={cx(classes.label, {\n [classes.labelIcon]: useIcons,\n [classes.labelExpandable]: !!expandable,\n })}\n >\n <HvOverflowTooltip data={label} />\n </div>\n )}\n\n {isOpen && expandable && (\n <DropDownXS\n color=\"currentcolor\"\n style={{ rotate: expanded ? \"180deg\" : undefined }}\n />\n )}\n </HvTypography>\n </HvTooltip>\n );\n }, [\n href,\n target,\n children,\n isOpen,\n disableTooltip,\n disabled,\n label,\n id,\n cx,\n classes.content,\n classes.link,\n classes.minimized,\n classes.icon,\n classes.label,\n classes.labelIcon,\n classes.labelExpandable,\n handleClick,\n handleMouseDown,\n useIcons,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n expandable,\n handleKeyDown,\n selected,\n isChildSelected,\n nodeId,\n expanded,\n payload?.label,\n icon,\n hasAnyChildWithData,\n ]);\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <ul\n id={setId(id, \"group\")}\n className={classes.group}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </ul>\n ),\n [children, classes?.group, id, treeviewMode],\n );\n\n return (\n <li\n ref={handleRef}\n id={id ?? undefined}\n className={cx(\n classes.node,\n {\n [classes.disabled]: disabled,\n [classes.expandable]: expandable,\n [classes.collapsed]: expandable && !expanded,\n [classes.expanded]: expandable && expanded,\n [classes.selectable]: selectable && !disabled,\n [classes.unselectable]: !disabled && !selectable,\n [classes.selected]:\n (!disabled && selectable && selected) ||\n (!isOpen &&\n useIcons &&\n isChildSelected &&\n isChildSelected(nodeId)),\n [classes.unselected]: !disabled && selectable && !selected,\n [classes.focused]: focused,\n [classes.hide]: !isOpen && !useIcons,\n },\n className,\n )}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n {isOpen && (\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n )}\n </li>\n );\n },\n);\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeViewItem.styles.js","sources":["../../../../src/VerticalNavigation/TreeView/TreeViewItem.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { avatarClasses } from \"../../Avatar\";\nimport { outlineStyles } from \"../../utils/focusUtils\";\n\nconst selected = {\n background: theme.colors.atmo3,\n borderLeft: `4px solid ${theme.colors.secondary}`,\n};\n\nconst hover = {\n background: theme.colors.containerBackgroundHover,\n};\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationTreeViewItem\",\n {\n node: {\n listStyle: \"none\",\n minHeight: \"32px\",\n \"&:not(:last-child)\": {\n marginBottom: \"8px\",\n },\n \"&$collapsed\": {\n \"&>$group\": {\n display: \"none\",\n },\n },\n \"&$expanded\": {\n \"&>$group\": {\n display: \"block\",\n },\n },\n \"&$link\": {\n textDecoration: \"none\",\n },\n \"&$hide\": {\n display: \"none\",\n },\n },\n content: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n color: \"inherit\",\n alignItems: \"center\",\n height: \"32px\",\n borderLeft: `4px solid transparent`,\n paddingRight: theme.space.xs,\n \"&$minimized\": {\n justifyContent: \"center\",\n paddingRight: 0,\n },\n \"$expandable>&\": {\n fontWeight: 600,\n },\n \"$selected>&\": { ...selected },\n // hover\n \":not($disabled>&):not($selected>&):hover\": { ...hover },\n \":not($disabled)$selected>&:hover\": {},\n\n // focus\n \":not($disabled>&):not($selected>&):focus-visible\": { ...hover },\n \":not($disabled>&):not($selected>&).focus-visible\": { ...hover },\n\n \"*:focus-visible $focused>&\": {\n ...outlineStyles,\n },\n\n \".focus-visible $focused>&\": {\n ...outlineStyles,\n },\n \"$focused>&\": {\n ...hover,\n },\n\n \"&[disabled], &:active\": {\n outline: \"none\",\n },\n\n \"&:focus\": {\n outline: \"none\",\n },\n\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n\n \"&.focus-visible\": {\n ...outlineStyles,\n },\n\n // cursor\n cursor: \"pointer\",\n \"& *\": {\n cursor: \"pointer\",\n },\n\n \"$disabled>&\": {\n cursor: \"not-allowed\",\n \"& *\": {\n cursor: \"not-allowed\",\n },\n },\n },\n link: {},\n group: {\n margin: \"8px 0 0 0\",\n padding: 0,\n },\n disabled: {},\n expandable: {\n fontWeight: 600,\n },\n collapsed: {},\n expanded: {},\n selectable: {},\n unselectable: {},\n selected: {},\n unselected: {},\n focused: {},\n minimized: {},\n hide: {},\n label: {\n display: \"flex\",\n flexGrow: 1,\n maxWidth: \"100%\",\n },\n labelIcon: {\n maxWidth: \"calc(100% - 32px)\",\n },\n labelExpandable: {\n maxWidth: \"calc(100% - 32px)\",\n\n \"&$labelIcon\": {\n maxWidth: \"calc(100% - 64px)\",\n },\n },\n icon: {\n display: \"flex\",\n \"& .color0\": {\n fill: \"currentColor\",\n },\n \"> div:first-of-type\": {\n marginLeft: \"var(--icon-margin-left)\",\n },\n \"> div:nth-of-type(2)\": {\n width: \"14px\",\n marginLeft: \"auto\",\n },\n [`&& .${avatarClasses.root}`]: {\n fontSize: \"15px\",\n },\n },\n },\n);\n"],"names":["avatarClasses"],"mappings":"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"}
1
+ {"version":3,"file":"TreeViewItem.styles.js","sources":["../../../../src/VerticalNavigation/TreeView/TreeViewItem.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { avatarClasses } from \"../../Avatar\";\nimport { outlineStyles } from \"../../utils/focusUtils\";\n\nconst selected = {\n background: theme.colors.atmo3,\n borderLeft: `4px solid ${theme.colors.secondary}`,\n};\n\nconst hover = {\n background: theme.colors.containerBackgroundHover,\n};\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationTreeViewItem\",\n {\n node: {\n listStyle: \"none\",\n minHeight: \"32px\",\n \"&:not(:last-child)\": {\n marginBottom: \"8px\",\n },\n \"&$collapsed\": {\n \"&>$group\": {\n display: \"none\",\n },\n },\n \"&$expanded\": {\n \"&>$group\": {\n display: \"block\",\n },\n },\n \"&$link\": {\n textDecoration: \"none\",\n },\n \"&$hide\": {\n display: \"none\",\n },\n },\n content: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n color: \"inherit\",\n alignItems: \"center\",\n height: \"32px\",\n borderLeft: `4px solid transparent`,\n paddingRight: theme.space.xs,\n \"&$minimized\": {\n justifyContent: \"center\",\n paddingRight: 0,\n },\n \"$expandable>&\": {\n fontWeight: 600,\n },\n \"$selected>&\": { ...selected },\n // hover\n \":not($disabled>&):not($selected>&):hover\": { ...hover },\n \":not($disabled)$selected>&:hover\": {},\n\n // focus\n \":not($disabled>&):not($selected>&):focus-visible\": { ...hover },\n \":not($disabled>&):not($selected>&).focus-visible\": { ...hover },\n\n \"*:focus-visible $focused>&\": {\n ...outlineStyles,\n },\n\n \".focus-visible $focused>&\": {\n ...outlineStyles,\n },\n \"$focused>&\": {\n ...hover,\n },\n\n \"&[disabled], &:active\": {\n outline: \"none\",\n },\n\n \"&:focus\": {\n outline: \"none\",\n },\n\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n\n \"&.focus-visible\": {\n ...outlineStyles,\n },\n\n // cursor\n cursor: \"pointer\",\n \"& *\": {\n cursor: \"pointer\",\n },\n\n \"$disabled>&\": {\n cursor: \"not-allowed\",\n \"& *\": {\n cursor: \"not-allowed\",\n },\n },\n },\n link: {},\n group: {\n margin: \"8px 0 0 0\",\n padding: 0,\n },\n disabled: {},\n expandable: {\n fontWeight: 600,\n },\n collapsed: {},\n expanded: {},\n selectable: {},\n unselectable: {},\n selected: {},\n unselected: {},\n focused: {},\n minimized: {},\n hide: {},\n label: {\n display: \"flex\",\n flexGrow: 1,\n maxWidth: \"100%\",\n },\n labelIcon: {\n maxWidth: \"calc(100% - 32px)\",\n },\n labelExpandable: {\n maxWidth: \"calc(100% - 32px)\",\n\n \"&$labelIcon\": {\n maxWidth: \"calc(100% - 64px)\",\n },\n },\n icon: {\n display: \"flex\",\n \"& .color0\": {\n fill: \"currentColor\",\n },\n \"> div:first-of-type\": {\n marginLeft: \"var(--icon-margin-left)\",\n },\n \"> div:nth-of-type(2)\": {\n width: \"14px\",\n marginLeft: \"auto\",\n },\n [`&& .${avatarClasses.root}`]: {\n fontSize: \"15px\",\n },\n },\n },\n);\n"],"names":["avatarClasses"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalNavigation.js","sources":["../../../src/VerticalNavigation/VerticalNavigation.tsx"],"sourcesContent":["import { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvBaseProps } from \"../types/generic\";\nimport {\n fillDataWithParentId,\n getNavigationItemById,\n getParentItemById,\n} from \"./NavigationSlider/utils\";\nimport { hasChildNavigationItems } from \"./utils/VerticalNavigation.utils\";\nimport { staticClasses, useClasses } from \"./VerticalNavigation.styles\";\nimport {\n NavigationData,\n VerticalNavigationContext,\n} from \"./VerticalNavigationContext\";\n\nexport { staticClasses as verticalNavigationClasses };\n\nexport type HvVerticalNavigationClasses = ExtractNames<typeof useClasses>;\n\nexport type HvVerticalNavigationMode = \"icon\" | \"simple\";\n\nexport type HvVerticalNavigationPosition =\n | \"static\"\n | \"relative\"\n | \"fixed\"\n | \"absolute\";\n\nexport interface HvVerticalNavigationProps extends HvBaseProps<HTMLDivElement> {\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvVerticalNavigationClasses;\n /** Current State of the Vertical Navigation Collapse */\n open?: boolean;\n /**\n * Collapsed Mode for the Vertical Navigation, the default value is \"simple\".\n *\n * @deprecated - `useIcons` property should be used instead.\n */\n collapsedMode?: HvVerticalNavigationMode;\n /** Boolean to determine if treeview is in slider mode (for mobile navigation), the default value is false. */\n slider?: boolean;\n /**\n * Boolean to determine if icons should be displayed in the navigation menu.\n * When `true` a icon will always be displayed, if no icon is provided the first letter of the label will be\n * displayed inside an Avatar component.\n * When `false` no icons will be shown, even if an icon is provided.\n */\n useIcons?: boolean;\n}\n\n/**\n * Navigation enables users to move through an app to complete tasks.\n *\n * It is recommended to use vertical navigation when your application requires global navigation that is displayed on the left.\n * While vertical navigation menus generally consume more space than their horizontal counterparts, they have become more popular as desktop monitors move to wide-screen formats.\n *\n * Although both the hierarchically organized data and the visual style resemble a treeview-like structure, the [Treeview Design Pattern](https://w3c.github.io/aria-practices/#TreeView)\n * isn't necessarily the most appropriate.\n *\n * The tree role provides complex functionality that is not needed for typical site navigation, and changes the most common keyboard navigation using TAB.\n *\n * The [Disclosure Design Pattern](https://w3c.github.io/aria-practices/#disclosure) is more suited for typical site navigation, with expandable groups of links.\n * However it can be tedious to TAB through all navigation items to reach the actions panel.\n *\n * Both modes are available via the `mode` property and each app should choose the most appropriate.\n */\nexport const HvVerticalNavigation = forwardRef<\n HTMLDivElement,\n HvVerticalNavigationProps\n>(function HvVerticalNavigation(props, ref) {\n const {\n id,\n className,\n classes: classesProp,\n children,\n open = true,\n slider = false,\n useIcons = false,\n ...others\n } = useDefaultProps(\"HvVerticalNavigation\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const [parentData, setParentData] = useState<NavigationData[]>([]);\n\n const [parentSelected, setParentSelected] = useState();\n\n // navigationSlider\n const withParentData = useMemo(\n () => fillDataWithParentId(parentData),\n [parentData],\n );\n\n const initialParentItem = useMemo(\n () => getParentItemById(withParentData, parentSelected),\n [withParentData, parentSelected],\n );\n\n const [parentItem, setParentItem] = useState(initialParentItem);\n\n const hasAnyChildWithData = useMemo(\n () => hasChildNavigationItems(parentData),\n [parentData],\n );\n\n const headerTitle = useMemo(() => parentItem?.label, [parentItem]);\n\n const navigateToParentHandler = useCallback(() => {\n setParentItem(getParentItemById(withParentData, parentItem.id));\n }, [parentItem, withParentData]);\n\n const navigateToChildHandler = useCallback(\n (event: any, item: any) => {\n setParentItem(getNavigationItemById(withParentData, item.id));\n event.stopPropagation();\n },\n [withParentData],\n );\n\n const value = useMemo(\n () => ({\n isOpen: open,\n useIcons,\n slider,\n headerTitle,\n\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n\n parentData,\n setParentData,\n parentSelected,\n setParentSelected,\n hasAnyChildWithData,\n }),\n [\n open,\n useIcons,\n slider,\n headerTitle,\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n hasAnyChildWithData,\n parentData,\n parentSelected,\n ],\n );\n\n return (\n <VerticalNavigationContext.Provider value={value}>\n <div\n id={id}\n ref={ref}\n className={cx(\n classes.root,\n {\n [classes.collapsed]: !open,\n [classes.slider]: slider,\n [classes.childData]: hasAnyChildWithData,\n },\n className,\n )}\n {...others}\n >\n {children}\n </div>\n </VerticalNavigationContext.Provider>\n );\n});\n"],"names":["HvVerticalNavigation"],"mappings":";;;;;;;;AAqEO,MAAM,uBAAuB,WAGlC,SAASA,sBAAqB,OAAO,KAAK;AACpC,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,OAAO;AAAA,IACP,SAAS;AAAA,IACT,WAAW;AAAA,IACX,GAAG;AAAA,EAAA,IACD,gBAAgB,wBAAwB,KAAK;AACjD,QAAM,EAAE,SAAS,GAAG,IAAI,WAAW,WAAW;AAE9C,QAAM,CAAC,YAAY,aAAa,IAAI,SAA2B,CAAE,CAAA;AAEjE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS;AAGrD,QAAM,iBAAiB;AAAA,IACrB,MAAM,qBAAqB,UAAU;AAAA,IACrC,CAAC,UAAU;AAAA,EAAA;AAGb,QAAM,oBAAoB;AAAA,IACxB,MAAM,kBAAkB,gBAAgB,cAAc;AAAA,IACtD,CAAC,gBAAgB,cAAc;AAAA,EAAA;AAGjC,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,iBAAiB;AAE9D,QAAM,sBAAsB;AAAA,IAC1B,MAAM,wBAAwB,UAAU;AAAA,IACxC,CAAC,UAAU;AAAA,EAAA;AAGb,QAAM,cAAc,QAAQ,MAAM,YAAY,OAAO,CAAC,UAAU,CAAC;AAE3D,QAAA,0BAA0B,YAAY,MAAM;AAChD,kBAAc,kBAAkB,gBAAgB,WAAW,EAAE,CAAC;AAAA,EAAA,GAC7D,CAAC,YAAY,cAAc,CAAC;AAE/B,QAAM,yBAAyB;AAAA,IAC7B,CAAC,OAAY,SAAc;AACzB,oBAAc,sBAAsB,gBAAgB,KAAK,EAAE,CAAC;AAC5D,YAAM,gBAAgB;AAAA,IACxB;AAAA,IACA,CAAC,cAAc;AAAA,EAAA;AAGjB,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EAAA;AAGF,SACG,oBAAA,0BAA0B,UAA1B,EAAmC,OAClC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT,QAAQ;AAAA,QACR;AAAA,UACE,CAAC,QAAQ,SAAS,GAAG,CAAC;AAAA,UACtB,CAAC,QAAQ,MAAM,GAAG;AAAA,UAClB,CAAC,QAAQ,SAAS,GAAG;AAAA,QACvB;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAEL,EAAA,CAAA;AAEJ,CAAC;"}
1
+ {"version":3,"file":"VerticalNavigation.js","sources":["../../../src/VerticalNavigation/VerticalNavigation.tsx"],"sourcesContent":["import { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvBaseProps } from \"../types/generic\";\nimport {\n fillDataWithParentId,\n getNavigationItemById,\n getParentItemById,\n} from \"./NavigationSlider/utils\";\nimport { hasChildNavigationItems } from \"./utils/VerticalNavigation.utils\";\nimport { staticClasses, useClasses } from \"./VerticalNavigation.styles\";\nimport {\n NavigationData,\n VerticalNavigationContext,\n} from \"./VerticalNavigationContext\";\n\nexport { staticClasses as verticalNavigationClasses };\n\nexport type HvVerticalNavigationClasses = ExtractNames<typeof useClasses>;\n\nexport type HvVerticalNavigationMode = \"icon\" | \"simple\";\n\nexport type HvVerticalNavigationPosition =\n | \"static\"\n | \"relative\"\n | \"fixed\"\n | \"absolute\";\n\nexport interface HvVerticalNavigationProps extends HvBaseProps<HTMLDivElement> {\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvVerticalNavigationClasses;\n /** Current State of the Vertical Navigation Collapse */\n open?: boolean;\n /**\n * Collapsed Mode for the Vertical Navigation, the default value is \"simple\".\n *\n * @deprecated - `useIcons` property should be used instead.\n */\n collapsedMode?: HvVerticalNavigationMode;\n /** Boolean to determine if treeview is in slider mode (for mobile navigation), the default value is false. */\n slider?: boolean;\n /**\n * Boolean to determine if icons should be displayed in the navigation menu.\n * When `true` a icon will always be displayed, if no icon is provided the first letter of the label will be\n * displayed inside an Avatar component.\n * When `false` no icons will be shown, even if an icon is provided.\n */\n useIcons?: boolean;\n}\n\n/**\n * Navigation enables users to move through an app to complete tasks.\n *\n * It is recommended to use vertical navigation when your application requires global navigation that is displayed on the left.\n * While vertical navigation menus generally consume more space than their horizontal counterparts, they have become more popular as desktop monitors move to wide-screen formats.\n *\n * Although both the hierarchically organized data and the visual style resemble a treeview-like structure, the [Treeview Design Pattern](https://w3c.github.io/aria-practices/#TreeView)\n * isn't necessarily the most appropriate.\n *\n * The tree role provides complex functionality that is not needed for typical site navigation, and changes the most common keyboard navigation using TAB.\n *\n * The [Disclosure Design Pattern](https://w3c.github.io/aria-practices/#disclosure) is more suited for typical site navigation, with expandable groups of links.\n * However it can be tedious to TAB through all navigation items to reach the actions panel.\n *\n * Both modes are available via the `mode` property and each app should choose the most appropriate.\n */\nexport const HvVerticalNavigation = forwardRef<\n HTMLDivElement,\n HvVerticalNavigationProps\n>(function HvVerticalNavigation(props, ref) {\n const {\n id,\n className,\n classes: classesProp,\n children,\n open = true,\n slider = false,\n useIcons = false,\n ...others\n } = useDefaultProps(\"HvVerticalNavigation\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const [parentData, setParentData] = useState<NavigationData[]>([]);\n\n const [parentSelected, setParentSelected] = useState();\n\n // navigationSlider\n const withParentData = useMemo(\n () => fillDataWithParentId(parentData),\n [parentData],\n );\n\n const initialParentItem = useMemo(\n () => getParentItemById(withParentData, parentSelected),\n [withParentData, parentSelected],\n );\n\n const [parentItem, setParentItem] = useState(initialParentItem);\n\n const hasAnyChildWithData = useMemo(\n () => hasChildNavigationItems(parentData),\n [parentData],\n );\n\n const headerTitle = useMemo(() => parentItem?.label, [parentItem]);\n\n const navigateToParentHandler = useCallback(() => {\n setParentItem(getParentItemById(withParentData, parentItem.id));\n }, [parentItem, withParentData]);\n\n const navigateToChildHandler = useCallback(\n (event: any, item: any) => {\n setParentItem(getNavigationItemById(withParentData, item.id));\n event.stopPropagation();\n },\n [withParentData],\n );\n\n const value = useMemo(\n () => ({\n isOpen: open,\n useIcons,\n slider,\n headerTitle,\n\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n\n parentData,\n setParentData,\n parentSelected,\n setParentSelected,\n hasAnyChildWithData,\n }),\n [\n open,\n useIcons,\n slider,\n headerTitle,\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n navigateToParentHandler,\n hasAnyChildWithData,\n parentData,\n parentSelected,\n ],\n );\n\n return (\n <VerticalNavigationContext.Provider value={value}>\n <div\n id={id}\n ref={ref}\n className={cx(\n classes.root,\n {\n [classes.collapsed]: !open,\n [classes.slider]: slider,\n [classes.childData]: hasAnyChildWithData,\n },\n className,\n )}\n {...others}\n >\n {children}\n </div>\n </VerticalNavigationContext.Provider>\n );\n});\n"],"names":["HvVerticalNavigation"],"mappings":";;;;;;;;AAqEO,MAAM,uBAAuB,WAGlC,SAASA,sBAAqB,OAAO,KAAK;AACpC,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,OAAO;AAAA,IACP,SAAS;AAAA,IACT,WAAW;AAAA,IACX,GAAG;AAAA,EAAA,IACD,gBAAgB,wBAAwB,KAAK;AACjD,QAAM,EAAE,SAAS,OAAO,WAAW,WAAW;AAE9C,QAAM,CAAC,YAAY,aAAa,IAAI,SAA2B,CAAA,CAAE;AAEjE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS;AAGrD,QAAM,iBAAiB;AAAA,IACrB,MAAM,qBAAqB,UAAU;AAAA,IACrC,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,oBAAoB;AAAA,IACxB,MAAM,kBAAkB,gBAAgB,cAAc;AAAA,IACtD,CAAC,gBAAgB,cAAc;AAAA,EACjC;AAEA,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,iBAAiB;AAE9D,QAAM,sBAAsB;AAAA,IAC1B,MAAM,wBAAwB,UAAU;AAAA,IACxC,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,cAAc,QAAQ,MAAM,YAAY,OAAO,CAAC,UAAU,CAAC;AAE3D,QAAA,0BAA0B,YAAY,MAAM;AAChD,kBAAc,kBAAkB,gBAAgB,WAAW,EAAE,CAAC;AAAA,EAAA,GAC7D,CAAC,YAAY,cAAc,CAAC;AAE/B,QAAM,yBAAyB;AAAA,IAC7B,CAAC,OAAY,SAAc;AACzB,oBAAc,sBAAsB,gBAAgB,KAAK,EAAE,CAAC;AAC5D,YAAM,gBAAgB;AAAA,IACxB;AAAA,IACA,CAAC,cAAc;AAAA,EACjB;AAEA,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAEA,SACG,oBAAA,0BAA0B,UAA1B,EAAmC,OAClC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT,QAAQ;AAAA,QACR;AAAA,UACE,CAAC,QAAQ,SAAS,GAAG,CAAC;AAAA,UACtB,CAAC,QAAQ,MAAM,GAAG;AAAA,UAClB,CAAC,QAAQ,SAAS,GAAG;AAAA,QACvB;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalNavigation.styles.js","sources":["../../../src/VerticalNavigation/VerticalNavigation.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigation\",\n {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n\n width: \"220px\",\n\n backgroundColor: theme.colors.atmo1,\n boxShadow: theme.colors.shadow,\n clipPath: \"inset(0px -12px 0px 0px)\",\n\n \"& > :only-child\": {\n padding: theme.space.sm,\n },\n \"& > :not(nav:first-of-type)\": {\n borderTop: `3px solid ${theme.colors.atmo2}`,\n padding: theme.spacing(\"xs\", \"sm\", \"sm\", \"sm\"),\n },\n\n \"& > :first-of-type:not(:last-child)\": {\n borderTop: \"none\",\n padding: theme.spacing(\"sm\", \"sm\", \"xs\", \"sm\"),\n },\n },\n collapsed: {\n width: \"56px\",\n \"&$childData\": {\n width: \"66px\",\n },\n \"& > :first-of-type:not(:last-child)\": {\n padding: theme.spacing(\"sm\", \"xs\", \"xs\", \"xs\"),\n },\n\n \"& > :not(nav:first-of-type)\": {\n padding: theme.spacing(\"xs\", \"xs\", \"sm\", \"xs\"),\n },\n },\n\n slider: {\n \"& > div:first-of-type\": {\n borderBottom: `3px solid ${theme.colors.atmo2}`,\n },\n },\n\n childData: {},\n },\n);\n"],"names":[],"mappings":";;AAGa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,eAAe;AAAA,MACf,gBAAgB;AAAA,MAEhB,OAAO;AAAA,MAEP,iBAAiB,MAAM,OAAO;AAAA,MAC9B,WAAW,MAAM,OAAO;AAAA,MACxB,UAAU;AAAA,MAEV,mBAAmB;AAAA,QACjB,SAAS,MAAM,MAAM;AAAA,MACvB;AAAA,MACA,+BAA+B;AAAA,QAC7B,WAAW,aAAa,MAAM,OAAO,KAAK;AAAA,QAC1C,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,MAC/C;AAAA,MAEA,uCAAuC;AAAA,QACrC,WAAW;AAAA,QACX,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT,OAAO;AAAA,MACP,eAAe;AAAA,QACb,OAAO;AAAA,MACT;AAAA,MACA,uCAAuC;AAAA,QACrC,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,MAC/C;AAAA,MAEA,+BAA+B;AAAA,QAC7B,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,MAC/C;AAAA,IACF;AAAA,IAEA,QAAQ;AAAA,MACN,yBAAyB;AAAA,QACvB,cAAc,aAAa,MAAM,OAAO,KAAK;AAAA,MAC/C;AAAA,IACF;AAAA,IAEA,WAAW,CAAC;AAAA,EACd;AACF;"}
1
+ {"version":3,"file":"VerticalNavigation.styles.js","sources":["../../../src/VerticalNavigation/VerticalNavigation.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigation\",\n {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n\n width: \"220px\",\n\n backgroundColor: theme.colors.atmo1,\n boxShadow: theme.colors.shadow,\n clipPath: \"inset(0px -12px 0px 0px)\",\n\n \"& > :only-child\": {\n padding: theme.space.sm,\n },\n \"& > :not(nav:first-of-type)\": {\n borderTop: `3px solid ${theme.colors.atmo2}`,\n padding: theme.spacing(\"xs\", \"sm\", \"sm\", \"sm\"),\n },\n\n \"& > :first-of-type:not(:last-child)\": {\n borderTop: \"none\",\n padding: theme.spacing(\"sm\", \"sm\", \"xs\", \"sm\"),\n },\n },\n collapsed: {\n width: \"56px\",\n \"&$childData\": {\n width: \"66px\",\n },\n \"& > :first-of-type:not(:last-child)\": {\n padding: theme.spacing(\"sm\", \"xs\", \"xs\", \"xs\"),\n },\n\n \"& > :not(nav:first-of-type)\": {\n padding: theme.spacing(\"xs\", \"xs\", \"sm\", \"xs\"),\n },\n },\n\n slider: {\n \"& > div:first-of-type\": {\n borderBottom: `3px solid ${theme.colors.atmo2}`,\n },\n },\n\n childData: {},\n },\n);\n"],"names":[],"mappings":";;AAGa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,eAAe;AAAA,MACf,gBAAgB;AAAA,MAEhB,OAAO;AAAA,MAEP,iBAAiB,MAAM,OAAO;AAAA,MAC9B,WAAW,MAAM,OAAO;AAAA,MACxB,UAAU;AAAA,MAEV,mBAAmB;AAAA,QACjB,SAAS,MAAM,MAAM;AAAA,MACvB;AAAA,MACA,+BAA+B;AAAA,QAC7B,WAAW,aAAa,MAAM,OAAO,KAAK;AAAA,QAC1C,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,MAC/C;AAAA,MAEA,uCAAuC;AAAA,QACrC,WAAW;AAAA,QACX,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,MAAA;AAAA,IAEjD;AAAA,IACA,WAAW;AAAA,MACT,OAAO;AAAA,MACP,eAAe;AAAA,QACb,OAAO;AAAA,MACT;AAAA,MACA,uCAAuC;AAAA,QACrC,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,MAC/C;AAAA,MAEA,+BAA+B;AAAA,QAC7B,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA,MAAA;AAAA,IAEjD;AAAA,IAEA,QAAQ;AAAA,MACN,yBAAyB;AAAA,QACvB,cAAc,aAAa,MAAM,OAAO,KAAK;AAAA,MAAA;AAAA,IAEjD;AAAA,IAEA,WAAW,CAAA;AAAA,EAAC;AAEhB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalNavigationContext.js","sources":["../../../src/VerticalNavigation/VerticalNavigationContext.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nexport type NavigationData<T extends React.ElementType = \"a\"> =\n React.ComponentProps<T> &\n Record<string, any> & {\n /** The id to be applied to the root element. */\n id: string;\n /** The label to be rendered on the menu item. */\n label: string;\n /** The icon to be rendered. */\n icon?: React.ReactNode;\n /** The Data children subset. */\n data?: NavigationData<T>[];\n /** Whether the item is disabled and not interactive. */\n disabled?: boolean;\n /** Whether the item has a selected state. */\n selectable?: boolean;\n };\n\ninterface VerticalNavigationContextValue {\n isOpen: boolean;\n useIcons: boolean;\n slider?: boolean;\n headerTitle?: string;\n\n parentItem?: any;\n setParentItem?: React.Dispatch<React.SetStateAction<any>>;\n withParentData?: any;\n navigateToChildHandler?: (event: any, item: any) => void;\n navigateToParentHandler?: () => void;\n\n parentData?: NavigationData[];\n setParentData?: React.Dispatch<React.SetStateAction<any>>;\n parentSelected?: any;\n setParentSelected?: React.Dispatch<React.SetStateAction<any>>;\n\n hasAnyChildWithData?: boolean;\n}\n\nconst VerticalNavigationContext = createContext<VerticalNavigationContextValue>(\n {\n isOpen: true,\n useIcons: false,\n slider: false,\n },\n);\n\nexport { VerticalNavigationContext };\n"],"names":[],"mappings":";AAuCA,MAAM,4BAA4B;AAAA,EAChC;AAAA,IACE,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AACF;"}
1
+ {"version":3,"file":"VerticalNavigationContext.js","sources":["../../../src/VerticalNavigation/VerticalNavigationContext.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nexport type NavigationData<T extends React.ElementType = \"a\"> =\n React.ComponentProps<T> &\n Record<string, any> & {\n /** The id to be applied to the root element. */\n id: string;\n /** The label to be rendered on the menu item. */\n label: string;\n /** The icon to be rendered. */\n icon?: React.ReactNode;\n /** The Data children subset. */\n data?: NavigationData<T>[];\n /** Whether the item is disabled and not interactive. */\n disabled?: boolean;\n /** Whether the item has a selected state. */\n selectable?: boolean;\n };\n\ninterface VerticalNavigationContextValue {\n isOpen: boolean;\n useIcons: boolean;\n slider?: boolean;\n headerTitle?: string;\n\n parentItem?: any;\n setParentItem?: React.Dispatch<React.SetStateAction<any>>;\n withParentData?: any;\n navigateToChildHandler?: (event: any, item: any) => void;\n navigateToParentHandler?: () => void;\n\n parentData?: NavigationData[];\n setParentData?: React.Dispatch<React.SetStateAction<any>>;\n parentSelected?: any;\n setParentSelected?: React.Dispatch<React.SetStateAction<any>>;\n\n hasAnyChildWithData?: boolean;\n}\n\nconst VerticalNavigationContext = createContext<VerticalNavigationContextValue>(\n {\n isOpen: true,\n useIcons: false,\n slider: false,\n },\n);\n\nexport { VerticalNavigationContext };\n"],"names":[],"mappings":";AAuCA,MAAM,4BAA4B;AAAA,EAChC;AAAA,IACE,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,EAAA;AAEZ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"withTooltip.js","sources":["../../../src/hocs/withTooltip.tsx"],"sourcesContent":["import { useState } from \"react\";\n\nimport { HvTooltip, HvTooltipPlacementType, HvTooltipProps } from \"../Tooltip\";\nimport { HvBaseProps } from \"../types/generic\";\n\nconst styles: { truncate: React.CSSProperties } = {\n truncate: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n};\n\nexport const withTooltip =\n (\n Component: React.FunctionComponent,\n // eslint-disable-next-line @typescript-eslint/default-param-last\n label = \"\",\n placement: HvTooltipPlacementType,\n hideTooltip?: (event: React.MouseEvent<HTMLDivElement>) => boolean,\n tooltipProps?: Partial<HvTooltipProps>,\n tooltipContainerProps?: HvBaseProps,\n ) =>\n (props: any) => {\n const [isHoverDisabled, setIsHoverDisabled] = useState<boolean | undefined>(\n false,\n );\n const [open, setOpen] = useState<boolean>(false);\n\n const handleMouseEnter = (event: React.MouseEvent<HTMLDivElement>) => {\n const isHidden = hideTooltip?.(event);\n setIsHoverDisabled(isHidden);\n setOpen(!isHidden);\n };\n\n const handleMouseLeave = () => {\n setIsHoverDisabled(false);\n setOpen(false);\n };\n\n return (\n <HvTooltip\n style={{ ...styles.truncate }}\n disableHoverListener={isHoverDisabled}\n disableFocusListener\n disableTouchListener\n title={label}\n open={open}\n placement={placement}\n {...tooltipProps}\n >\n <div\n {...tooltipContainerProps}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Component {...props} />\n </div>\n </HvTooltip>\n );\n };\n"],"names":[],"mappings":";;;AAKA,MAAM,SAA4C;AAAA,EAChD,UAAU;AAAA,IACR,UAAU;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,EACd;AACF;AAEa,MAAA,cACX,CACE,WAEA,QAAQ,IACR,WACA,aACA,cACA,0BAEF,CAAC,UAAe;AACR,QAAA,CAAC,iBAAiB,kBAAkB,IAAI;AAAA,IAC5C;AAAA,EAAA;AAEF,QAAM,CAAC,MAAM,OAAO,IAAI,SAAkB,KAAK;AAEzC,QAAA,mBAAmB,CAAC,UAA4C;AAC9D,UAAA,WAAW,cAAc,KAAK;AACpC,uBAAmB,QAAQ;AAC3B,YAAQ,CAAC,QAAQ;AAAA,EAAA;AAGnB,QAAM,mBAAmB,MAAM;AAC7B,uBAAmB,KAAK;AACxB,YAAQ,KAAK;AAAA,EAAA;AAIb,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,GAAG,OAAO,SAAS;AAAA,MAC5B,sBAAsB;AAAA,MACtB,sBAAoB;AAAA,MACpB,sBAAoB;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAG;AAAA,UACJ,cAAc;AAAA,UACd,cAAc;AAAA,UAEd,UAAA,oBAAC,WAAW,EAAA,GAAG,MAAO,CAAA;AAAA,QAAA;AAAA,MACxB;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"withTooltip.js","sources":["../../../src/hocs/withTooltip.tsx"],"sourcesContent":["import { useState } from \"react\";\n\nimport { HvTooltip, HvTooltipPlacementType, HvTooltipProps } from \"../Tooltip\";\nimport { HvBaseProps } from \"../types/generic\";\n\nconst styles: { truncate: React.CSSProperties } = {\n truncate: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n};\n\nexport const withTooltip =\n (\n Component: React.FunctionComponent,\n // eslint-disable-next-line @typescript-eslint/default-param-last\n label = \"\",\n placement: HvTooltipPlacementType,\n hideTooltip?: (event: React.MouseEvent<HTMLDivElement>) => boolean,\n tooltipProps?: Partial<HvTooltipProps>,\n tooltipContainerProps?: HvBaseProps,\n ) =>\n (props: any) => {\n const [isHoverDisabled, setIsHoverDisabled] = useState<boolean | undefined>(\n false,\n );\n const [open, setOpen] = useState<boolean>(false);\n\n const handleMouseEnter = (event: React.MouseEvent<HTMLDivElement>) => {\n const isHidden = hideTooltip?.(event);\n setIsHoverDisabled(isHidden);\n setOpen(!isHidden);\n };\n\n const handleMouseLeave = () => {\n setIsHoverDisabled(false);\n setOpen(false);\n };\n\n return (\n <HvTooltip\n style={{ ...styles.truncate }}\n disableHoverListener={isHoverDisabled}\n disableFocusListener\n disableTouchListener\n title={label}\n open={open}\n placement={placement}\n {...tooltipProps}\n >\n <div\n {...tooltipContainerProps}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Component {...props} />\n </div>\n </HvTooltip>\n );\n };\n"],"names":[],"mappings":";;;AAKA,MAAM,SAA4C;AAAA,EAChD,UAAU;AAAA,IACR,UAAU;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,EAAA;AAEhB;AAEa,MAAA,cACX,CACE,WAEA,QAAQ,IACR,WACA,aACA,cACA,0BAEF,CAAC,UAAe;AACR,QAAA,CAAC,iBAAiB,kBAAkB,IAAI;AAAA,IAC5C;AAAA,EACF;AACA,QAAM,CAAC,MAAM,OAAO,IAAI,SAAkB,KAAK;AAEzC,QAAA,mBAAmB,CAAC,UAA4C;AAC9D,UAAA,WAAW,cAAc,KAAK;AACpC,uBAAmB,QAAQ;AAC3B,YAAQ,CAAC,QAAQ;AAAA,EACnB;AAEA,QAAM,mBAAmB,MAAM;AAC7B,uBAAmB,KAAK;AACxB,YAAQ,KAAK;AAAA,EACf;AAGE,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,GAAG,OAAO,SAAS;AAAA,MAC5B,sBAAsB;AAAA,MACtB,sBAAoB;AAAA,MACpB,sBAAoB;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAG;AAAA,UACJ,cAAc;AAAA,UACd,cAAc;AAAA,UAEd,UAAA,oBAAC,WAAW,EAAA,GAAG,MAAO,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACxB;AAAA,EACF;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useClickOutside.js","sources":["../../../src/hooks/useClickOutside.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nexport type HvClickOutsideEvent = MouseEvent | KeyboardEvent | TouchEvent;\n\nexport const useClickOutside = <T extends HTMLElement = HTMLElement>(\n ref: React.RefObject<T>,\n handler: (event: HvClickOutsideEvent) => void,\n) => {\n useEffect(() => {\n const listener = (event: HvClickOutsideEvent) => {\n const el = ref?.current;\n const isKeyUp = event.type === \"keyup\";\n const isEscape = (event as KeyboardEvent).key === \"Escape\";\n\n if (!el || el.contains((event?.target as Node) || null)) {\n return {};\n }\n\n return isKeyUp ? (isEscape ? handler(event) : null) : handler(event);\n };\n\n document.addEventListener(\"click\", listener);\n document.addEventListener(\"touchstart\", listener);\n document.addEventListener(\"keyup\", listener);\n\n return () => {\n document.removeEventListener(\"click\", listener);\n document.removeEventListener(\"touchstart\", listener);\n document.removeEventListener(\"keyup\", listener);\n };\n }, [ref, handler]);\n};\n"],"names":[],"mappings":";AAIa,MAAA,kBAAkB,CAC7B,KACA,YACG;AACH,YAAU,MAAM;AACR,UAAA,WAAW,CAAC,UAA+B;AAC/C,YAAM,KAAK,KAAK;AACV,YAAA,UAAU,MAAM,SAAS;AACzB,YAAA,WAAY,MAAwB,QAAQ;AAElD,UAAI,CAAC,MAAM,GAAG,SAAU,OAAO,UAAmB,IAAI,GAAG;AACvD,eAAO;MACT;AAEA,aAAO,UAAW,WAAW,QAAQ,KAAK,IAAI,OAAQ,QAAQ,KAAK;AAAA,IAAA;AAG5D,aAAA,iBAAiB,SAAS,QAAQ;AAClC,aAAA,iBAAiB,cAAc,QAAQ;AACvC,aAAA,iBAAiB,SAAS,QAAQ;AAE3C,WAAO,MAAM;AACF,eAAA,oBAAoB,SAAS,QAAQ;AACrC,eAAA,oBAAoB,cAAc,QAAQ;AAC1C,eAAA,oBAAoB,SAAS,QAAQ;AAAA,IAAA;AAAA,EAChD,GACC,CAAC,KAAK,OAAO,CAAC;AACnB;"}
1
+ {"version":3,"file":"useClickOutside.js","sources":["../../../src/hooks/useClickOutside.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nexport type HvClickOutsideEvent = MouseEvent | KeyboardEvent | TouchEvent;\n\nexport const useClickOutside = <T extends HTMLElement = HTMLElement>(\n ref: React.RefObject<T>,\n handler: (event: HvClickOutsideEvent) => void,\n) => {\n useEffect(() => {\n const listener = (event: HvClickOutsideEvent) => {\n const el = ref?.current;\n const isKeyUp = event.type === \"keyup\";\n const isEscape = (event as KeyboardEvent).key === \"Escape\";\n\n if (!el || el.contains((event?.target as Node) || null)) {\n return {};\n }\n\n return isKeyUp ? (isEscape ? handler(event) : null) : handler(event);\n };\n\n document.addEventListener(\"click\", listener);\n document.addEventListener(\"touchstart\", listener);\n document.addEventListener(\"keyup\", listener);\n\n return () => {\n document.removeEventListener(\"click\", listener);\n document.removeEventListener(\"touchstart\", listener);\n document.removeEventListener(\"keyup\", listener);\n };\n }, [ref, handler]);\n};\n"],"names":[],"mappings":";AAIa,MAAA,kBAAkB,CAC7B,KACA,YACG;AACH,YAAU,MAAM;AACR,UAAA,WAAW,CAAC,UAA+B;AAC/C,YAAM,KAAK,KAAK;AACV,YAAA,UAAU,MAAM,SAAS;AACzB,YAAA,WAAY,MAAwB,QAAQ;AAElD,UAAI,CAAC,MAAM,GAAG,SAAU,OAAO,UAAmB,IAAI,GAAG;AACvD,eAAO,CAAC;AAAA,MAAA;AAGV,aAAO,UAAW,WAAW,QAAQ,KAAK,IAAI,OAAQ,QAAQ,KAAK;AAAA,IACrE;AAES,aAAA,iBAAiB,SAAS,QAAQ;AAClC,aAAA,iBAAiB,cAAc,QAAQ;AACvC,aAAA,iBAAiB,SAAS,QAAQ;AAE3C,WAAO,MAAM;AACF,eAAA,oBAAoB,SAAS,QAAQ;AACrC,eAAA,oBAAoB,cAAc,QAAQ;AAC1C,eAAA,oBAAoB,SAAS,QAAQ;AAAA,IAChD;AAAA,EAAA,GACC,CAAC,KAAK,OAAO,CAAC;AACnB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useComputation.js","sources":["../../../src/hooks/useComputation.ts"],"sourcesContent":["import { useRef, useState } from \"react\";\n\nexport const useComputation = (valueFn: Function, valueFallback?: Function) => {\n const computed = useRef<any>(null);\n const [value, setValue] = useState(valueFallback);\n\n const computeValue = () => {\n if (!computed.current) {\n setValue(valueFn?.());\n computed.current = true;\n }\n };\n\n return [value, computeValue];\n};\n"],"names":[],"mappings":";AAEa,MAAA,iBAAiB,CAAC,SAAmB,kBAA6B;AACvE,QAAA,WAAW,OAAY,IAAI;AACjC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,aAAa;AAEhD,QAAM,eAAe,MAAM;AACrB,QAAA,CAAC,SAAS,SAAS;AACrB,eAAS,WAAW;AACpB,eAAS,UAAU;AAAA,IACrB;AAAA,EAAA;AAGK,SAAA,CAAC,OAAO,YAAY;AAC7B;"}
1
+ {"version":3,"file":"useComputation.js","sources":["../../../src/hooks/useComputation.ts"],"sourcesContent":["import { useRef, useState } from \"react\";\n\nexport const useComputation = (valueFn: Function, valueFallback?: Function) => {\n const computed = useRef<any>(null);\n const [value, setValue] = useState(valueFallback);\n\n const computeValue = () => {\n if (!computed.current) {\n setValue(valueFn?.());\n computed.current = true;\n }\n };\n\n return [value, computeValue];\n};\n"],"names":[],"mappings":";AAEa,MAAA,iBAAiB,CAAC,SAAmB,kBAA6B;AACvE,QAAA,WAAW,OAAY,IAAI;AACjC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,aAAa;AAEhD,QAAM,eAAe,MAAM;AACrB,QAAA,CAAC,SAAS,SAAS;AACrB,eAAS,WAAW;AACpB,eAAS,UAAU;AAAA,IAAA;AAAA,EAEvB;AAEO,SAAA,CAAC,OAAO,YAAY;AAC7B;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useControlled.js","sources":["../../../src/hooks/useControlled.ts"],"sourcesContent":["// based in https://raw.githubusercontent.com/mui-org/material-ui/next/packages/material-ui/src/utils/useControlled.js\n// modifications:\n// 1. renamed default to initialState, to convey the same meaning of the useState hook.\n// 2. removed the console error when initialState changes; that is acceptable and just ignored, like in useState.\n// 3. the console error regarding switching from controlled to uncontrolled (or vice-versa) is sent synchronously\n// so the stacktrace shows the caller\n// 4. given that, the hook signature was simplified, no need for metadata\n\nimport { useCallback, useRef, useState } from \"react\";\n\nexport const useControlled = <T>(\n controlledProp: T | undefined,\n initialState: T | (() => T),\n) => {\n const { current: isControlled } = useRef(controlledProp !== undefined);\n const [valueState, setValue] = useState(initialState);\n const value = isControlled ? (controlledProp as T) : valueState;\n\n if (import.meta.env.DEV && isControlled !== (controlledProp !== undefined)) {\n // eslint-disable-next-line no-console\n console.error(\n [\n `A component is changing the ${\n isControlled ? \"\" : \"un\"\n }controlled state to be ${isControlled ? \"un\" : \"\"}controlled.`,\n \"Elements should not switch from uncontrolled to controlled (or vice versa).\",\n \"Decide between using a controlled or uncontrolled element for the lifetime of the component.\",\n \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\",\n ].join(\"\\n\"),\n );\n }\n\n const setValueIfUncontrolled = useCallback(\n (newValue: React.SetStateAction<T>) => {\n if (!isControlled) {\n setValue(newValue);\n }\n },\n [isControlled],\n );\n\n return [value, setValueIfUncontrolled] as const;\n};\n"],"names":[],"mappings":";AAUa,MAAA,gBAAgB,CAC3B,gBACA,iBACG;AACH,QAAM,EAAE,SAAS,aAAiB,IAAA,OAAO,mBAAmB,MAAS;AACrE,QAAM,CAAC,YAAY,QAAQ,IAAI,SAAS,YAAY;AAC9C,QAAA,QAAQ,eAAgB,iBAAuB;AAgBrD,QAAM,yBAAyB;AAAA,IAC7B,CAAC,aAAsC;AACrC,UAAI,CAAC,cAAc;AACjB,iBAAS,QAAQ;AAAA,MACnB;AAAA,IACF;AAAA,IACA,CAAC,YAAY;AAAA,EAAA;AAGR,SAAA,CAAC,OAAO,sBAAsB;AACvC;"}
1
+ {"version":3,"file":"useControlled.js","sources":["../../../src/hooks/useControlled.ts"],"sourcesContent":["// based in https://raw.githubusercontent.com/mui-org/material-ui/next/packages/material-ui/src/utils/useControlled.js\n// modifications:\n// 1. renamed default to initialState, to convey the same meaning of the useState hook.\n// 2. removed the console error when initialState changes; that is acceptable and just ignored, like in useState.\n// 3. the console error regarding switching from controlled to uncontrolled (or vice-versa) is sent synchronously\n// so the stacktrace shows the caller\n// 4. given that, the hook signature was simplified, no need for metadata\n\nimport { useCallback, useRef, useState } from \"react\";\n\nexport const useControlled = <T>(\n controlledProp: T | undefined,\n initialState: T | (() => T),\n) => {\n const { current: isControlled } = useRef(controlledProp !== undefined);\n const [valueState, setValue] = useState(initialState);\n const value = isControlled ? (controlledProp as T) : valueState;\n\n if (import.meta.env.DEV && isControlled !== (controlledProp !== undefined)) {\n // eslint-disable-next-line no-console\n console.error(\n [\n `A component is changing the ${\n isControlled ? \"\" : \"un\"\n }controlled state to be ${isControlled ? \"un\" : \"\"}controlled.`,\n \"Elements should not switch from uncontrolled to controlled (or vice versa).\",\n \"Decide between using a controlled or uncontrolled element for the lifetime of the component.\",\n \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\",\n ].join(\"\\n\"),\n );\n }\n\n const setValueIfUncontrolled = useCallback(\n (newValue: React.SetStateAction<T>) => {\n if (!isControlled) {\n setValue(newValue);\n }\n },\n [isControlled],\n );\n\n return [value, setValueIfUncontrolled] as const;\n};\n"],"names":[],"mappings":";AAUa,MAAA,gBAAgB,CAC3B,gBACA,iBACG;AACH,QAAM,EAAE,SAAS,aAAA,IAAiB,OAAO,mBAAmB,MAAS;AACrE,QAAM,CAAC,YAAY,QAAQ,IAAI,SAAS,YAAY;AAC9C,QAAA,QAAQ,eAAgB,iBAAuB;AAgBrD,QAAM,yBAAyB;AAAA,IAC7B,CAAC,aAAsC;AACrC,UAAI,CAAC,cAAc;AACjB,iBAAS,QAAQ;AAAA,MAAA;AAAA,IAErB;AAAA,IACA,CAAC,YAAY;AAAA,EACf;AAEO,SAAA,CAAC,OAAO,sBAAsB;AACvC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useExpandable.js","sources":["../../../src/hooks/useExpandable.ts"],"sourcesContent":["import type { HvAccordionProps } from \"../Accordion\";\nimport { setId } from \"../utils/setId\";\nimport { useControlled } from \"./useControlled\";\nimport { useUniqueId } from \"./useUniqueId\";\n\nexport interface UseExpandableParams\n extends Pick<\n HvAccordionProps,\n \"id\" | \"disabled\" | \"expanded\" | \"defaultExpanded\"\n > {}\n\n/** expandable hook that handles a11y & open state for accordions, etc. */\nexport function useExpandable({\n id: idProp,\n disabled,\n expanded,\n defaultExpanded,\n}: UseExpandableParams) {\n const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));\n\n const id = useUniqueId(idProp);\n const buttonId = setId(id, \"button\");\n const regionId = setId(id, \"container\");\n\n return {\n isOpen,\n toggleOpen: (newOpen?: boolean) => setIsOpen((o) => newOpen ?? !o),\n buttonProps: {\n id: buttonId,\n \"aria-disabled\": disabled,\n \"aria-expanded\": isOpen,\n \"aria-controls\": isOpen ? regionId : undefined,\n },\n regionProps: {\n id: regionId,\n role: \"region\",\n \"aria-labelledby\": buttonId,\n },\n };\n}\n"],"names":[],"mappings":";;;AAYO,SAAS,cAAc;AAAA,EAC5B,IAAI;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AAChB,QAAA,CAAC,QAAQ,SAAS,IAAI,cAAc,UAAU,QAAQ,eAAe,CAAC;AAEtE,QAAA,KAAK,YAAY,MAAM;AACvB,QAAA,WAAW,MAAM,IAAI,QAAQ;AAC7B,QAAA,WAAW,MAAM,IAAI,WAAW;AAE/B,SAAA;AAAA,IACL;AAAA,IACA,YAAY,CAAC,YAAsB,UAAU,CAAC,MAAM,WAAW,CAAC,CAAC;AAAA,IACjE,aAAa;AAAA,MACX,IAAI;AAAA,MACJ,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB,SAAS,WAAW;AAAA,IACvC;AAAA,IACA,aAAa;AAAA,MACX,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,mBAAmB;AAAA,IACrB;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useExpandable.js","sources":["../../../src/hooks/useExpandable.ts"],"sourcesContent":["import type { HvAccordionProps } from \"../Accordion\";\nimport { setId } from \"../utils/setId\";\nimport { useControlled } from \"./useControlled\";\nimport { useUniqueId } from \"./useUniqueId\";\n\nexport interface UseExpandableParams\n extends Pick<\n HvAccordionProps,\n \"id\" | \"disabled\" | \"expanded\" | \"defaultExpanded\"\n > {}\n\n/** expandable hook that handles a11y & open state for accordions, etc. */\nexport function useExpandable({\n id: idProp,\n disabled,\n expanded,\n defaultExpanded,\n}: UseExpandableParams) {\n const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));\n\n const id = useUniqueId(idProp);\n const buttonId = setId(id, \"button\");\n const regionId = setId(id, \"container\");\n\n return {\n isOpen,\n toggleOpen: (newOpen?: boolean) => setIsOpen((o) => newOpen ?? !o),\n buttonProps: {\n id: buttonId,\n \"aria-disabled\": disabled,\n \"aria-expanded\": isOpen,\n \"aria-controls\": isOpen ? regionId : undefined,\n },\n regionProps: {\n id: regionId,\n role: \"region\",\n \"aria-labelledby\": buttonId,\n },\n };\n}\n"],"names":[],"mappings":";;;AAYO,SAAS,cAAc;AAAA,EAC5B,IAAI;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AAChB,QAAA,CAAC,QAAQ,SAAS,IAAI,cAAc,UAAU,QAAQ,eAAe,CAAC;AAEtE,QAAA,KAAK,YAAY,MAAM;AACvB,QAAA,WAAW,MAAM,IAAI,QAAQ;AAC7B,QAAA,WAAW,MAAM,IAAI,WAAW;AAE/B,SAAA;AAAA,IACL;AAAA,IACA,YAAY,CAAC,YAAsB,UAAU,CAAC,MAAM,WAAW,CAAC,CAAC;AAAA,IACjE,aAAa;AAAA,MACX,IAAI;AAAA,MACJ,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB,SAAS,WAAW;AAAA,IACvC;AAAA,IACA,aAAa;AAAA,MACX,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,mBAAmB;AAAA,IAAA;AAAA,EAEvB;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useForkRef.js","sources":["../../../src/hooks/useForkRef.ts"],"sourcesContent":["// copied from https://github.com/mui-org/material-ui/blob/03bd73be34424cb2cd17ac602def9ad2b9642de4/packages/material-ui-utils/src/useForkRef.js\nimport * as React from \"react\";\n\nconst setRef = (ref: any, value: any) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n};\n\nexport const useForkRef = (refA: any, refB: any) => {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n return (refValue: any) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n};\n"],"names":[],"mappings":";AAGA,MAAM,SAAS,CAAC,KAAU,UAAe;AACnC,MAAA,OAAO,QAAQ,YAAY;AAC7B,QAAI,KAAK;AAAA,aACA,KAAK;AACd,QAAI,UAAU;AAAA,EAChB;AACF;AAEa,MAAA,aAAa,CAAC,MAAW,SAAc;AAM3C,SAAA,MAAM,QAAQ,MAAM;AACrB,QAAA,QAAQ,QAAQ,QAAQ,MAAM;AACzB,aAAA;AAAA,IACT;AACA,WAAO,CAAC,aAAkB;AACxB,aAAO,MAAM,QAAQ;AACrB,aAAO,MAAM,QAAQ;AAAA,IAAA;AAAA,EACvB,GACC,CAAC,MAAM,IAAI,CAAC;AACjB;"}
1
+ {"version":3,"file":"useForkRef.js","sources":["../../../src/hooks/useForkRef.ts"],"sourcesContent":["// copied from https://github.com/mui-org/material-ui/blob/03bd73be34424cb2cd17ac602def9ad2b9642de4/packages/material-ui-utils/src/useForkRef.js\nimport * as React from \"react\";\n\nconst setRef = (ref: any, value: any) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n};\n\nexport const useForkRef = (refA: any, refB: any) => {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n return (refValue: any) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n};\n"],"names":[],"mappings":";AAGA,MAAM,SAAS,CAAC,KAAU,UAAe;AACnC,MAAA,OAAO,QAAQ,YAAY;AAC7B,QAAI,KAAK;AAAA,aACA,KAAK;AACd,QAAI,UAAU;AAAA,EAAA;AAElB;AAEa,MAAA,aAAa,CAAC,MAAW,SAAc;AAM3C,SAAA,MAAM,QAAQ,MAAM;AACrB,QAAA,QAAQ,QAAQ,QAAQ,MAAM;AACzB,aAAA;AAAA,IAAA;AAET,WAAO,CAAC,aAAkB;AACxB,aAAO,MAAM,QAAQ;AACrB,aAAO,MAAM,QAAQ;AAAA,IACvB;AAAA,EAAA,GACC,CAAC,MAAM,IAAI,CAAC;AACjB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useImageLoaded.js","sources":["../../../src/hooks/useImageLoaded.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport const useImageLoaded = (src?: string, srcSet?: string) => {\n const [imageLoaded, setImageLoaded] = useState<boolean | string>(false);\n\n useEffect(() => {\n if (!src && !srcSet) {\n return undefined;\n }\n\n setImageLoaded(false);\n\n let active = true;\n const image = new Image();\n image.src = src || \"\";\n image.srcset = srcSet || \"\";\n image.onload = () => {\n if (!active) {\n return;\n }\n\n setImageLoaded(\"loaded\");\n };\n image.onerror = () => {\n if (!active) {\n return;\n }\n\n setImageLoaded(\"error\");\n };\n\n return () => {\n active = false;\n };\n }, [src, srcSet]);\n\n return imageLoaded;\n};\n"],"names":[],"mappings":";AAEa,MAAA,iBAAiB,CAAC,KAAc,WAAoB;AAC/D,QAAM,CAAC,aAAa,cAAc,IAAI,SAA2B,KAAK;AAEtE,YAAU,MAAM;AACV,QAAA,CAAC,OAAO,CAAC,QAAQ;AACZ,aAAA;AAAA,IACT;AAEA,mBAAe,KAAK;AAEpB,QAAI,SAAS;AACP,UAAA,QAAQ,IAAI;AAClB,UAAM,MAAM,OAAO;AACnB,UAAM,SAAS,UAAU;AACzB,UAAM,SAAS,MAAM;AACnB,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AAEA,qBAAe,QAAQ;AAAA,IAAA;AAEzB,UAAM,UAAU,MAAM;AACpB,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AAEA,qBAAe,OAAO;AAAA,IAAA;AAGxB,WAAO,MAAM;AACF,eAAA;AAAA,IAAA;AAAA,EACX,GACC,CAAC,KAAK,MAAM,CAAC;AAET,SAAA;AACT;"}
1
+ {"version":3,"file":"useImageLoaded.js","sources":["../../../src/hooks/useImageLoaded.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport const useImageLoaded = (src?: string, srcSet?: string) => {\n const [imageLoaded, setImageLoaded] = useState<boolean | string>(false);\n\n useEffect(() => {\n if (!src && !srcSet) {\n return undefined;\n }\n\n setImageLoaded(false);\n\n let active = true;\n const image = new Image();\n image.src = src || \"\";\n image.srcset = srcSet || \"\";\n image.onload = () => {\n if (!active) {\n return;\n }\n\n setImageLoaded(\"loaded\");\n };\n image.onerror = () => {\n if (!active) {\n return;\n }\n\n setImageLoaded(\"error\");\n };\n\n return () => {\n active = false;\n };\n }, [src, srcSet]);\n\n return imageLoaded;\n};\n"],"names":[],"mappings":";AAEa,MAAA,iBAAiB,CAAC,KAAc,WAAoB;AAC/D,QAAM,CAAC,aAAa,cAAc,IAAI,SAA2B,KAAK;AAEtE,YAAU,MAAM;AACV,QAAA,CAAC,OAAO,CAAC,QAAQ;AACZ,aAAA;AAAA,IAAA;AAGT,mBAAe,KAAK;AAEpB,QAAI,SAAS;AACP,UAAA,QAAQ,IAAI,MAAM;AACxB,UAAM,MAAM,OAAO;AACnB,UAAM,SAAS,UAAU;AACzB,UAAM,SAAS,MAAM;AACnB,UAAI,CAAC,QAAQ;AACX;AAAA,MAAA;AAGF,qBAAe,QAAQ;AAAA,IACzB;AACA,UAAM,UAAU,MAAM;AACpB,UAAI,CAAC,QAAQ;AACX;AAAA,MAAA;AAGF,qBAAe,OAAO;AAAA,IACxB;AAEA,WAAO,MAAM;AACF,eAAA;AAAA,IACX;AAAA,EAAA,GACC,CAAC,KAAK,MAAM,CAAC;AAET,SAAA;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsMounted.js","sources":["../../../src/hooks/useIsMounted.ts"],"sourcesContent":["import React from \"react\";\n\nexport const useIsMounted = () => {\n const isMounted = React.useRef(false);\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n};\n"],"names":["React"],"mappings":";AAEO,MAAM,eAAe,MAAM;AAC1B,QAAA,YAAYA,eAAM,OAAO,KAAK;AAEpCA,iBAAM,UAAU,MAAM;AACpB,cAAU,UAAU;AAEpB,WAAO,MAAM;AACX,gBAAU,UAAU;AAAA,IAAA;AAAA,EAExB,GAAG,CAAE,CAAA;AAEE,SAAA;AACT;"}
1
+ {"version":3,"file":"useIsMounted.js","sources":["../../../src/hooks/useIsMounted.ts"],"sourcesContent":["import React from \"react\";\n\nexport const useIsMounted = () => {\n const isMounted = React.useRef(false);\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n};\n"],"names":["React"],"mappings":";AAEO,MAAM,eAAe,MAAM;AAC1B,QAAA,YAAYA,eAAM,OAAO,KAAK;AAEpCA,iBAAM,UAAU,MAAM;AACpB,cAAU,UAAU;AAEpB,WAAO,MAAM;AACX,gBAAU,UAAU;AAAA,IACtB;AAAA,EACF,GAAG,EAAE;AAEE,SAAA;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useUniqueId.js","sources":["../../../src/hooks/useUniqueId.ts"],"sourcesContent":["import * as React from \"react\"; // this can be optimized when react 17 support is dropped\n\nimport { useEnhancedEffect } from \"./useEnhancedEffect\";\n\n/** Credit: https://github.com/radix-ui/primitives/blob/main/packages/react/id/src/id.tsx\n * Modified slightly to suit our purposes.\n */\n// We `toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)[\"useId\".toString()] || (() => undefined);\nlet count = 0;\n\nexport const useUniqueId = (\n deterministicId?: string,\n /**\n * @deprecated\n * Users should pick between a fully deterministic or fully generated id\n * @example\n * useUniqueId(setId(idPrefix, deterministicId))\n * */\n idPrefix?: string,\n): string => {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n\n useEnhancedEffect(() => {\n // eslint-disable-next-line no-plusplus\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId, idPrefix]);\n\n return deterministicId || (idPrefix ? idPrefix + id : (id ?? \"\"));\n};\n"],"names":[],"mappings":";;AAQA,MAAM,aAAc,MAAc,QAAQ,SAAU,CAAA,MAAM,MAAM;AAChE,IAAI,QAAQ;AAEC,MAAA,cAAc,CACzB,iBAOA,aACW;AACX,QAAM,CAAC,IAAI,KAAK,IAAI,MAAM,SAA6B,YAAY;AAEnE,oBAAkB,MAAM;AAElB,QAAA,CAAC,gBAAuB,OAAA,CAAC,YAAY,WAAW,OAAO,OAAO,CAAC;AAAA,EAAA,GAClE,CAAC,iBAAiB,QAAQ,CAAC;AAE9B,SAAO,oBAAoB,WAAW,WAAW,KAAM,MAAM;AAC/D;"}
1
+ {"version":3,"file":"useUniqueId.js","sources":["../../../src/hooks/useUniqueId.ts"],"sourcesContent":["import * as React from \"react\"; // this can be optimized when react 17 support is dropped\n\nimport { useEnhancedEffect } from \"./useEnhancedEffect\";\n\n/** Credit: https://github.com/radix-ui/primitives/blob/main/packages/react/id/src/id.tsx\n * Modified slightly to suit our purposes.\n */\n// We `toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)[\"useId\".toString()] || (() => undefined);\nlet count = 0;\n\nexport const useUniqueId = (\n deterministicId?: string,\n /**\n * @deprecated\n * Users should pick between a fully deterministic or fully generated id\n * @example\n * useUniqueId(setId(idPrefix, deterministicId))\n * */\n idPrefix?: string,\n): string => {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n\n useEnhancedEffect(() => {\n // eslint-disable-next-line no-plusplus\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId, idPrefix]);\n\n return deterministicId || (idPrefix ? idPrefix + id : (id ?? \"\"));\n};\n"],"names":[],"mappings":";;AAQA,MAAM,aAAc,MAAc,QAAQ,SAAS,CAAC,MAAM,MAAM;AAChE,IAAI,QAAQ;AAEC,MAAA,cAAc,CACzB,iBAOA,aACW;AACX,QAAM,CAAC,IAAI,KAAK,IAAI,MAAM,SAA6B,YAAY;AAEnE,oBAAkB,MAAM;AAElB,QAAA,CAAC,gBAAuB,OAAA,CAAC,YAAY,WAAW,OAAO,OAAO,CAAC;AAAA,EAAA,GAClE,CAAC,iBAAiB,QAAQ,CAAC;AAE9B,SAAO,oBAAoB,WAAW,WAAW,KAAM,MAAM;AAC/D;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWidth.js","sources":["../../../src/hooks/useWidth.ts"],"sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\nimport { Breakpoint, useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const useWidth = () => {\n const muiTheme = useTheme();\n const keys = Object.keys(theme.breakpoints.values).reverse() as Breakpoint[];\n\n return (\n keys.reduce<Breakpoint | null>((output, key) => {\n const matches = useMediaQuery(muiTheme.breakpoints.up(key));\n\n return !output && matches ? key : output;\n }, null) || \"xs\"\n );\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,WAAW,MAAM;AAC5B,QAAM,WAAW;AACjB,QAAM,OAAO,OAAO,KAAK,MAAM,YAAY,MAAM,EAAE;AAEnD,SACE,KAAK,OAA0B,CAAC,QAAQ,QAAQ;AAC9C,UAAM,UAAU,cAAc,SAAS,YAAY,GAAG,GAAG,CAAC;AAEnD,WAAA,CAAC,UAAU,UAAU,MAAM;AAAA,EAAA,GACjC,IAAI,KAAK;AAEhB;"}
1
+ {"version":3,"file":"useWidth.js","sources":["../../../src/hooks/useWidth.ts"],"sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\nimport { Breakpoint, useTheme } from \"@mui/material/styles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const useWidth = () => {\n const muiTheme = useTheme();\n const keys = Object.keys(theme.breakpoints.values).reverse() as Breakpoint[];\n\n return (\n keys.reduce<Breakpoint | null>((output, key) => {\n const matches = useMediaQuery(muiTheme.breakpoints.up(key));\n\n return !output && matches ? key : output;\n }, null) || \"xs\"\n );\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,WAAW,MAAM;AAC5B,QAAM,WAAW,SAAS;AAC1B,QAAM,OAAO,OAAO,KAAK,MAAM,YAAY,MAAM,EAAE,QAAQ;AAE3D,SACE,KAAK,OAA0B,CAAC,QAAQ,QAAQ;AAC9C,UAAM,UAAU,cAAc,SAAS,YAAY,GAAG,GAAG,CAAC;AAEnD,WAAA,CAAC,UAAU,UAAU,MAAM;AAAA,EAAA,GACjC,IAAI,KAAK;AAEhB;"}