@deephaven/components 1.7.2-beta.1 → 1.7.2-react-18-alpha.3

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 (278) hide show
  1. package/dist/AutoCompleteInput.d.ts +0 -17
  2. package/dist/AutoCompleteInput.d.ts.map +1 -1
  3. package/dist/AutoCompleteInput.js +12 -31
  4. package/dist/AutoCompleteInput.js.map +1 -1
  5. package/dist/AutoResizeTextarea.d.ts +0 -23
  6. package/dist/AutoResizeTextarea.d.ts.map +1 -1
  7. package/dist/AutoResizeTextarea.js +0 -21
  8. package/dist/AutoResizeTextarea.js.map +1 -1
  9. package/dist/BasicModal.d.ts +0 -27
  10. package/dist/BasicModal.d.ts.map +1 -1
  11. package/dist/BasicModal.js +2 -28
  12. package/dist/BasicModal.js.map +1 -1
  13. package/dist/BulkActionBar.js.map +1 -1
  14. package/dist/Button.d.ts +1 -1
  15. package/dist/Button.d.ts.map +1 -1
  16. package/dist/Button.js +2 -79
  17. package/dist/Button.js.map +1 -1
  18. package/dist/CardFlip.d.ts.map +1 -1
  19. package/dist/CardFlip.js +1 -2
  20. package/dist/CardFlip.js.map +1 -1
  21. package/dist/Checkbox.d.ts.map +1 -1
  22. package/dist/Checkbox.js +3 -45
  23. package/dist/Checkbox.js.map +1 -1
  24. package/dist/Collapse.d.ts +0 -8
  25. package/dist/Collapse.d.ts.map +1 -1
  26. package/dist/Collapse.js +0 -8
  27. package/dist/Collapse.js.map +1 -1
  28. package/dist/ComponentUtils.js.map +1 -1
  29. package/dist/CopyButton.js.map +1 -1
  30. package/dist/CustomTimeSelect.js +14 -15
  31. package/dist/CustomTimeSelect.js.map +1 -1
  32. package/dist/DateInput.js.map +1 -1
  33. package/dist/DateInputUtils.js.map +1 -1
  34. package/dist/DateTimeInput.d.ts.map +1 -1
  35. package/dist/DateTimeInput.js +0 -8
  36. package/dist/DateTimeInput.js.map +1 -1
  37. package/dist/DateTimeInputUtils.js.map +1 -1
  38. package/dist/DebouncedSearchInput.js +1 -1
  39. package/dist/DebouncedSearchInput.js.map +1 -1
  40. package/dist/DragUtils.js.map +1 -1
  41. package/dist/DraggableItemList.d.ts +2 -2
  42. package/dist/DraggableItemList.d.ts.map +1 -1
  43. package/dist/DraggableItemList.js +8 -7
  44. package/dist/DraggableItemList.js.map +1 -1
  45. package/dist/EditableItemList.js +1 -2
  46. package/dist/EditableItemList.js.map +1 -1
  47. package/dist/ErrorBoundary.js +1 -1
  48. package/dist/ErrorBoundary.js.map +1 -1
  49. package/dist/ErrorView.js +1 -2
  50. package/dist/ErrorView.js.map +1 -1
  51. package/dist/HierarchicalCheckboxMenu.d.ts +1 -1
  52. package/dist/HierarchicalCheckboxMenu.d.ts.map +1 -1
  53. package/dist/HierarchicalCheckboxMenu.js +1 -2
  54. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  55. package/dist/ItemList.d.ts +1 -1
  56. package/dist/ItemList.d.ts.map +1 -1
  57. package/dist/ItemList.js +14 -14
  58. package/dist/ItemList.js.map +1 -1
  59. package/dist/ItemListItem.js.map +1 -1
  60. package/dist/LoadingOverlay.js +1 -2
  61. package/dist/LoadingOverlay.js.map +1 -1
  62. package/dist/LoadingSpinner.js.map +1 -1
  63. package/dist/MaskedInput.d.ts.map +1 -1
  64. package/dist/MaskedInput.js +11 -31
  65. package/dist/MaskedInput.js.map +1 -1
  66. package/dist/MaskedInputUtils.js.map +1 -1
  67. package/dist/Option.js.map +1 -1
  68. package/dist/RadioGroup.js +1 -2
  69. package/dist/RadioGroup.js.map +1 -1
  70. package/dist/RadioItem.d.ts.map +1 -1
  71. package/dist/RadioItem.js +1 -13
  72. package/dist/RadioItem.js.map +1 -1
  73. package/dist/RandomAreaPlotAnimation.d.ts +1 -1
  74. package/dist/RandomAreaPlotAnimation.d.ts.map +1 -1
  75. package/dist/RandomAreaPlotAnimation.js +5 -8
  76. package/dist/RandomAreaPlotAnimation.js.map +1 -1
  77. package/dist/SearchInput.js +3 -5
  78. package/dist/SearchInput.js.map +1 -1
  79. package/dist/SearchableCombobox.js.map +1 -1
  80. package/dist/Select.d.ts +1 -1
  81. package/dist/Select.d.ts.map +1 -1
  82. package/dist/Select.js.map +1 -1
  83. package/dist/SelectValueList.js +9 -9
  84. package/dist/SelectValueList.js.map +1 -1
  85. package/dist/SocketedButton.d.ts +4 -4
  86. package/dist/SocketedButton.d.ts.map +1 -1
  87. package/dist/SocketedButton.js +5 -20
  88. package/dist/SocketedButton.js.map +1 -1
  89. package/dist/SplitButtonGroup.d.ts +2 -18
  90. package/dist/SplitButtonGroup.d.ts.map +1 -1
  91. package/dist/SplitButtonGroup.js +0 -13
  92. package/dist/SplitButtonGroup.js.map +1 -1
  93. package/dist/TableViewEmptyState.js +1 -2
  94. package/dist/TableViewEmptyState.js.map +1 -1
  95. package/dist/TextWithTooltip.js +1 -3
  96. package/dist/TextWithTooltip.js.map +1 -1
  97. package/dist/ThemeExport.js.map +1 -1
  98. package/dist/TimeInput.d.ts.map +1 -1
  99. package/dist/TimeInput.js +7 -17
  100. package/dist/TimeInput.js.map +1 -1
  101. package/dist/TimeSlider.js +3 -6
  102. package/dist/TimeSlider.js.map +1 -1
  103. package/dist/ToastNotification.d.ts +1 -2
  104. package/dist/ToastNotification.d.ts.map +1 -1
  105. package/dist/ToastNotification.js +1 -2
  106. package/dist/ToastNotification.js.map +1 -1
  107. package/dist/UIConstants.js.map +1 -1
  108. package/dist/UISwitch.d.ts.map +1 -1
  109. package/dist/UISwitch.js +18 -14
  110. package/dist/UISwitch.js.map +1 -1
  111. package/dist/XComponent.d.ts +1 -1
  112. package/dist/XComponent.d.ts.map +1 -1
  113. package/dist/XComponent.js.map +1 -1
  114. package/dist/XComponentMap.d.ts +2 -2
  115. package/dist/XComponentMap.d.ts.map +1 -1
  116. package/dist/XComponentMap.js.map +1 -1
  117. package/dist/actions/ConfirmActionButton.js.map +1 -1
  118. package/dist/actions/IconActionButton.js +1 -2
  119. package/dist/actions/IconActionButton.js.map +1 -1
  120. package/dist/actions/index.js.map +1 -1
  121. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  122. package/dist/context-actions/ContextActions.d.ts +1 -2
  123. package/dist/context-actions/ContextActions.d.ts.map +1 -1
  124. package/dist/context-actions/ContextActions.js +22 -22
  125. package/dist/context-actions/ContextActions.js.map +1 -1
  126. package/dist/context-actions/ContextMenu.js +5 -7
  127. package/dist/context-actions/ContextMenu.js.map +1 -1
  128. package/dist/context-actions/ContextMenuItem.d.ts.map +1 -1
  129. package/dist/context-actions/ContextMenuItem.js +21 -43
  130. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  131. package/dist/context-actions/ContextMenuRoot.js +1 -1
  132. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  133. package/dist/context-actions/GlobalContextAction.js +1 -1
  134. package/dist/context-actions/GlobalContextAction.js.map +1 -1
  135. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  136. package/dist/context-actions/index.js.map +1 -1
  137. package/dist/declaration.d.js.map +1 -1
  138. package/dist/dialogs/ActionButtonDialogTrigger.js +1 -2
  139. package/dist/dialogs/ActionButtonDialogTrigger.js.map +1 -1
  140. package/dist/dialogs/ConfirmationDialog.js +1 -2
  141. package/dist/dialogs/ConfirmationDialog.js.map +1 -1
  142. package/dist/dialogs/index.js.map +1 -1
  143. package/dist/index.js.map +1 -1
  144. package/dist/menu-actions/DropdownMenu.js +2 -2
  145. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  146. package/dist/menu-actions/Menu.js +4 -6
  147. package/dist/menu-actions/Menu.js.map +1 -1
  148. package/dist/menu-actions/index.js.map +1 -1
  149. package/dist/modal/DebouncedModal.js +1 -3
  150. package/dist/modal/DebouncedModal.js.map +1 -1
  151. package/dist/modal/InfoModal.js +1 -2
  152. package/dist/modal/InfoModal.js.map +1 -1
  153. package/dist/modal/Modal.js +2 -3
  154. package/dist/modal/Modal.js.map +1 -1
  155. package/dist/modal/ModalBody.js.map +1 -1
  156. package/dist/modal/ModalFooter.js.map +1 -1
  157. package/dist/modal/ModalHeader.js +1 -2
  158. package/dist/modal/ModalHeader.js.map +1 -1
  159. package/dist/modal/index.js.map +1 -1
  160. package/dist/navigation/DashboardList.js +3 -4
  161. package/dist/navigation/DashboardList.js.map +1 -1
  162. package/dist/navigation/Menu.js.map +1 -1
  163. package/dist/navigation/MenuItem.js +1 -2
  164. package/dist/navigation/MenuItem.js.map +1 -1
  165. package/dist/navigation/NavTab.d.ts +1 -1
  166. package/dist/navigation/NavTab.d.ts.map +1 -1
  167. package/dist/navigation/NavTab.js +4 -5
  168. package/dist/navigation/NavTab.js.map +1 -1
  169. package/dist/navigation/NavTabList.js +4 -5
  170. package/dist/navigation/NavTabList.js.map +1 -1
  171. package/dist/navigation/Page.js +1 -2
  172. package/dist/navigation/Page.js.map +1 -1
  173. package/dist/navigation/Stack.js +1 -3
  174. package/dist/navigation/Stack.js.map +1 -1
  175. package/dist/navigation/index.js.map +1 -1
  176. package/dist/popper/Popper.d.ts +1 -14
  177. package/dist/popper/Popper.d.ts.map +1 -1
  178. package/dist/popper/Popper.js +18 -29
  179. package/dist/popper/Popper.js.map +1 -1
  180. package/dist/popper/Tooltip.d.ts.map +1 -1
  181. package/dist/popper/Tooltip.js +18 -12
  182. package/dist/popper/Tooltip.js.map +1 -1
  183. package/dist/popper/index.js.map +1 -1
  184. package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
  185. package/dist/shortcuts/NavigationShortcuts.js.map +1 -1
  186. package/dist/shortcuts/Shortcut.js +11 -13
  187. package/dist/shortcuts/Shortcut.js.map +1 -1
  188. package/dist/shortcuts/ShortcutRegistry.js +1 -1
  189. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  190. package/dist/shortcuts/index.js.map +1 -1
  191. package/dist/spectrum/ActionGroup.js.map +1 -1
  192. package/dist/spectrum/ActionMenu.js.map +1 -1
  193. package/dist/spectrum/CheckboxGroup.js.map +1 -1
  194. package/dist/spectrum/Heading.js.map +1 -1
  195. package/dist/spectrum/ItemContent.js +2 -4
  196. package/dist/spectrum/ItemContent.js.map +1 -1
  197. package/dist/spectrum/ItemTooltip.js.map +1 -1
  198. package/dist/spectrum/ListActionGroup.js.map +1 -1
  199. package/dist/spectrum/ListActionMenu.js.map +1 -1
  200. package/dist/spectrum/TabPanels.d.ts.map +1 -1
  201. package/dist/spectrum/TabPanels.js +8 -5
  202. package/dist/spectrum/TabPanels.js.map +1 -1
  203. package/dist/spectrum/Text.js.map +1 -1
  204. package/dist/spectrum/View.js.map +1 -1
  205. package/dist/spectrum/buttons.js.map +1 -1
  206. package/dist/spectrum/collections.js.map +1 -1
  207. package/dist/spectrum/comboBox/ComboBox.js.map +1 -1
  208. package/dist/spectrum/comboBox/ComboBoxNormalized.js.map +1 -1
  209. package/dist/spectrum/comboBox/index.js.map +1 -1
  210. package/dist/spectrum/content.js.map +1 -1
  211. package/dist/spectrum/dateAndTime.js.map +1 -1
  212. package/dist/spectrum/forms.js.map +1 -1
  213. package/dist/spectrum/icons.js.map +1 -1
  214. package/dist/spectrum/index.js.map +1 -1
  215. package/dist/spectrum/layout.js.map +1 -1
  216. package/dist/spectrum/listView/ListView.js.map +1 -1
  217. package/dist/spectrum/listView/ListViewNormalized.js +1 -2
  218. package/dist/spectrum/listView/ListViewNormalized.js.map +1 -1
  219. package/dist/spectrum/listView/ListViewWrapper.js.map +1 -1
  220. package/dist/spectrum/listView/index.js.map +1 -1
  221. package/dist/spectrum/navigation.js.map +1 -1
  222. package/dist/spectrum/overlays.js.map +1 -1
  223. package/dist/spectrum/picker/Picker.js.map +1 -1
  224. package/dist/spectrum/picker/PickerNormalized.js.map +1 -1
  225. package/dist/spectrum/picker/PickerProps.js.map +1 -1
  226. package/dist/spectrum/picker/index.js.map +1 -1
  227. package/dist/spectrum/picker/usePickerItemScale.js.map +1 -1
  228. package/dist/spectrum/picker/usePickerNormalizedProps.d.ts +1 -2
  229. package/dist/spectrum/picker/usePickerNormalizedProps.d.ts.map +1 -1
  230. package/dist/spectrum/picker/usePickerNormalizedProps.js.map +1 -1
  231. package/dist/spectrum/picker/usePickerProps.js.map +1 -1
  232. package/dist/spectrum/picker/usePickerScrollOnOpen.js +1 -1
  233. package/dist/spectrum/picker/usePickerScrollOnOpen.js.map +1 -1
  234. package/dist/spectrum/shared.js.map +1 -1
  235. package/dist/spectrum/status.js.map +1 -1
  236. package/dist/spectrum/utils/index.js.map +1 -1
  237. package/dist/spectrum/utils/itemUtils.d.ts +2 -2
  238. package/dist/spectrum/utils/itemUtils.d.ts.map +1 -1
  239. package/dist/spectrum/utils/itemUtils.js +5 -1
  240. package/dist/spectrum/utils/itemUtils.js.map +1 -1
  241. package/dist/spectrum/utils/itemWrapperUtils.js +3 -4
  242. package/dist/spectrum/utils/itemWrapperUtils.js.map +1 -1
  243. package/dist/spectrum/utils/propsUtils.js.map +1 -1
  244. package/dist/spectrum/utils/themeUtils.js.map +1 -1
  245. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js +1 -1
  246. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js.map +1 -1
  247. package/dist/spectrum/utils/useRenderNormalizedItem.js +1 -2
  248. package/dist/spectrum/utils/useRenderNormalizedItem.js.map +1 -1
  249. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js +1 -1
  250. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js.map +1 -1
  251. package/dist/spectrum/utils/useStringifiedMultiSelection.d.ts +1 -1
  252. package/dist/spectrum/utils/useStringifiedMultiSelection.d.ts.map +1 -1
  253. package/dist/spectrum/utils/useStringifiedMultiSelection.js.map +1 -1
  254. package/dist/spectrum/utils/useStringifiedSelection.d.ts +1 -1
  255. package/dist/spectrum/utils/useStringifiedSelection.d.ts.map +1 -1
  256. package/dist/spectrum/utils/useStringifiedSelection.js.map +1 -1
  257. package/dist/theme/Logo.js.map +1 -1
  258. package/dist/theme/SpectrumThemeProvider.js.map +1 -1
  259. package/dist/theme/ThemeModel.js +1 -0
  260. package/dist/theme/ThemeModel.js.map +1 -1
  261. package/dist/theme/ThemePicker.d.ts.map +1 -1
  262. package/dist/theme/ThemePicker.js +3 -1
  263. package/dist/theme/ThemePicker.js.map +1 -1
  264. package/dist/theme/ThemeProvider.js +1 -3
  265. package/dist/theme/ThemeProvider.js.map +1 -1
  266. package/dist/theme/ThemeUtils.js.map +1 -1
  267. package/dist/theme/colorUtils.js.map +1 -1
  268. package/dist/theme/index.js.map +1 -1
  269. package/dist/theme/theme-dark/index.js.map +1 -1
  270. package/dist/theme/theme-light/index.js.map +1 -1
  271. package/dist/theme/theme-spectrum/index.js.map +1 -1
  272. package/dist/theme/useExternalTheme.js.map +1 -1
  273. package/dist/theme/useSpectrumThemeProvider.js.map +1 -1
  274. package/dist/theme/useTheme.js.map +1 -1
  275. package/dist/transitions/FadeTransition.js.map +1 -1
  276. package/dist/transitions/SlideTransition.js.map +1 -1
  277. package/dist/transitions/index.js.map +1 -1
  278. package/package.json +12 -13
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuItem.d.ts","sourceRoot":"","sources":["../../src/context-actions/ContextMenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,eAAe,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACpE,mBAAmB,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxE,qBAAqB,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,QAAA,MAAM,eAAe,6FA4IpB,CAAC;AAWF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"ContextMenuItem.d.ts","sourceRoot":"","sources":["../../src/context-actions/ContextMenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,eAAe,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACpE,mBAAmB,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxE,qBAAqB,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,QAAA,MAAM,eAAe,6FAgJpB,CAAC;AAIF,eAAe,eAAe,CAAC"}
@@ -1,44 +1,35 @@
1
- import React from 'react';
1
+ import React, { useCallback } from 'react';
2
2
  import classNames from 'classnames';
3
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
4
  import { vsChevronRight } from '@deephaven/icons';
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- import { jsxs as _jsxs } from "react/jsx-runtime";
7
- var ContextMenuItem = /*#__PURE__*/React.forwardRef((props, ref) => {
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ var ContextMenuItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {
8
7
  var _menuItem$shortcutTex, _menuItem$shortcut;
9
- function handleMenuItemClick(e) {
10
- var {
11
- menuItem,
12
- onMenuItemClick
13
- } = props;
8
+ var {
9
+ closeMenu,
10
+ children,
11
+ menuItem,
12
+ onMenuItemClick,
13
+ onMenuItemMouseMove,
14
+ onMenuItemContextMenu,
15
+ isKeyboardSelected = false,
16
+ isMouseSelected = false,
17
+ 'data-testid': dataTestId
18
+ } = _ref;
19
+ var handleMenuItemClick = useCallback(e => {
14
20
  onMenuItemClick(menuItem, e);
15
- }
16
- function handleMenuItemMouseMove(e) {
17
- var {
18
- menuItem,
19
- onMenuItemMouseMove
20
- } = props;
21
+ }, [menuItem, onMenuItemClick]);
22
+ var handleMenuItemMouseMove = useCallback(e => {
21
23
  onMenuItemMouseMove(menuItem, e);
22
- }
23
- function handleMenuItemContextMenu(e) {
24
- var {
25
- menuItem,
26
- onMenuItemContextMenu
27
- } = props;
24
+ }, [menuItem, onMenuItemMouseMove]);
25
+ var handleMenuItemContextMenu = useCallback(e => {
28
26
  onMenuItemContextMenu(menuItem, e);
29
- }
27
+ }, [menuItem, onMenuItemContextMenu]);
30
28
  function renderCustomMenuElement(element, iconElement, displayShortcut) {
31
29
  // Don't pass forwardedProps if menuElement is a native DOM node
32
30
  if (typeof element.type === 'string') {
33
31
  return element;
34
32
  }
35
- var {
36
- closeMenu,
37
- menuItem,
38
- isKeyboardSelected,
39
- isMouseSelected,
40
- 'data-testid': dataTestId
41
- } = props;
42
33
  var forwardedProps = {
43
34
  menuItem,
44
35
  closeMenu,
@@ -52,18 +43,11 @@ var ContextMenuItem = /*#__PURE__*/React.forwardRef((props, ref) => {
52
43
  forwardedProps
53
44
  });
54
45
  }
55
- var {
56
- children,
57
- menuItem,
58
- isKeyboardSelected = false,
59
- isMouseSelected = false,
60
- 'data-testid': dataTestId
61
- } = props;
62
46
  var displayShortcut = (_menuItem$shortcutTex = menuItem.shortcutText) !== null && _menuItem$shortcutTex !== void 0 ? _menuItem$shortcutTex : (_menuItem$shortcut = menuItem.shortcut) === null || _menuItem$shortcut === void 0 ? void 0 : _menuItem$shortcut.getDisplayText();
63
47
  var icon = null;
64
48
  if (menuItem.icon) {
65
49
  var menuItemIcon = menuItem.icon;
66
- if ( /*#__PURE__*/React.isValidElement(menuItemIcon)) {
50
+ if (/*#__PURE__*/React.isValidElement(menuItemIcon)) {
67
51
  icon = menuItemIcon;
68
52
  } else {
69
53
  var style;
@@ -139,11 +123,5 @@ var ContextMenuItem = /*#__PURE__*/React.forwardRef((props, ref) => {
139
123
  });
140
124
  });
141
125
  ContextMenuItem.displayName = 'ContextMenuItem';
142
- ContextMenuItem.defaultProps = {
143
- children: null,
144
- isKeyboardSelected: false,
145
- isMouseSelected: false,
146
- 'data-testid': undefined
147
- };
148
126
  export default ContextMenuItem;
149
127
  //# sourceMappingURL=ContextMenuItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuItem.js","names":["React","classNames","FontAwesomeIcon","vsChevronRight","jsx","_jsx","jsxs","_jsxs","ContextMenuItem","forwardRef","props","ref","_menuItem$shortcutTex","_menuItem$shortcut","handleMenuItemClick","e","menuItem","onMenuItemClick","handleMenuItemMouseMove","onMenuItemMouseMove","handleMenuItemContextMenu","onMenuItemContextMenu","renderCustomMenuElement","element","iconElement","displayShortcut","type","closeMenu","isKeyboardSelected","isMouseSelected","dataTestId","forwardedProps","cloneElement","children","shortcutText","shortcut","getDisplayText","icon","menuItemIcon","isValidElement","style","iconColor","disabled","undefined","color","subMenuIndicator","isSubMenuActive","Boolean","actions","content","menuElement","className","onMouseMove","_menuItem$description","menuItemDisabled","iconHasOutline","iconOutline","active","onClick","onContextMenu","title","description","outline","displayName","defaultProps"],"sources":["../../src/context-actions/ContextMenuItem.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight, type IconDefinition } from '@deephaven/icons';\nimport type { ContextAction } from './ContextActionUtils';\n\ninterface ContextMenuItemProps {\n children?: React.ReactNode;\n closeMenu: (closeAll: boolean) => void;\n isKeyboardSelected?: boolean;\n isMouseSelected?: boolean;\n menuItem: ContextAction;\n onMenuItemClick: (item: ContextAction, e: React.MouseEvent) => void;\n onMenuItemMouseMove: (item: ContextAction, e: React.MouseEvent) => void;\n onMenuItemContextMenu: (item: ContextAction, e: React.MouseEvent) => void;\n 'data-testid'?: string;\n}\n\nconst ContextMenuItem = React.forwardRef<HTMLDivElement, ContextMenuItemProps>(\n (props: ContextMenuItemProps, ref) => {\n function handleMenuItemClick(e: React.MouseEvent): void {\n const { menuItem, onMenuItemClick } = props;\n onMenuItemClick(menuItem, e);\n }\n\n function handleMenuItemMouseMove(e: React.MouseEvent): void {\n const { menuItem, onMenuItemMouseMove } = props;\n onMenuItemMouseMove(menuItem, e);\n }\n\n function handleMenuItemContextMenu(e: React.MouseEvent): void {\n const { menuItem, onMenuItemContextMenu } = props;\n onMenuItemContextMenu(menuItem, e);\n }\n\n function renderCustomMenuElement(\n element: React.ReactElement,\n iconElement: IconDefinition | React.ReactElement | null,\n displayShortcut: string | undefined\n ): JSX.Element {\n // Don't pass forwardedProps if menuElement is a native DOM node\n if (typeof element.type === 'string') {\n return element;\n }\n const {\n closeMenu,\n menuItem,\n isKeyboardSelected,\n isMouseSelected,\n 'data-testid': dataTestId,\n } = props;\n const forwardedProps = {\n menuItem,\n closeMenu,\n isKeyboardSelected,\n isMouseSelected,\n iconElement,\n displayShortcut,\n 'data-testid': dataTestId,\n };\n return React.cloneElement(element, {\n forwardedProps,\n });\n }\n\n const {\n children,\n menuItem,\n isKeyboardSelected = false,\n isMouseSelected = false,\n 'data-testid': dataTestId,\n } = props;\n\n const displayShortcut =\n menuItem.shortcutText ?? menuItem.shortcut?.getDisplayText();\n let icon: IconDefinition | React.ReactElement | null = null;\n if (menuItem.icon) {\n const menuItemIcon = menuItem.icon;\n if (React.isValidElement(menuItemIcon)) {\n icon = menuItemIcon;\n } else {\n let style: React.CSSProperties | undefined;\n if (\n menuItem.iconColor != null &&\n (menuItem.disabled === undefined || !menuItem.disabled)\n ) {\n style = { color: menuItem.iconColor };\n }\n icon = <FontAwesomeIcon icon={menuItemIcon} style={style} />;\n }\n }\n\n let subMenuIndicator = null;\n const isSubMenuActive = Boolean(children);\n if (menuItem.actions) {\n subMenuIndicator = <FontAwesomeIcon icon={vsChevronRight} />;\n }\n let content = null;\n if (menuItem.menuElement) {\n content = (\n <div className=\"custom-menu-item\" onMouseMove={handleMenuItemMouseMove}>\n {renderCustomMenuElement(menuItem.menuElement, icon, displayShortcut)}\n </div>\n );\n } else {\n const menuItemDisabled = menuItem.disabled;\n const iconHasOutline = menuItem.iconOutline;\n content = (\n <button\n type=\"button\"\n className={classNames(\n 'btn-context-menu',\n { disabled: menuItemDisabled },\n {\n active:\n (isSubMenuActive || isMouseSelected) &&\n (menuItemDisabled === undefined || !menuItemDisabled),\n },\n {\n 'keyboard-active':\n isKeyboardSelected &&\n (menuItemDisabled === undefined || !menuItemDisabled),\n }\n )}\n onClick={handleMenuItemClick}\n onMouseMove={handleMenuItemMouseMove}\n onContextMenu={handleMenuItemContextMenu}\n title={menuItem.description ?? ''}\n >\n <div className=\"btn-context-menu-wrapper\">\n <span className={classNames('icon', { outline: iconHasOutline })}>\n {icon}\n </span>\n <span className=\"title\">{menuItem.title}</span>\n {displayShortcut !== undefined && (\n <span className=\"shortcut\">{displayShortcut}</span>\n )}\n {subMenuIndicator && (\n <span\n className={classNames('submenu-indicator', {\n disabled: menuItemDisabled,\n })}\n >\n {subMenuIndicator}\n </span>\n )}\n </div>\n </button>\n );\n }\n\n return (\n <div className=\"context-menu-item\" ref={ref} data-testid={dataTestId}>\n {children}\n {content}\n </div>\n );\n }\n);\n\nContextMenuItem.displayName = 'ContextMenuItem';\n\nContextMenuItem.defaultProps = {\n children: null,\n isKeyboardSelected: false,\n isMouseSelected: false,\n 'data-testid': undefined,\n};\n\nexport default ContextMenuItem;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ContextMenuItem.js","names":["React","useCallback","classNames","FontAwesomeIcon","vsChevronRight","jsx","_jsx","jsxs","_jsxs","ContextMenuItem","forwardRef","_ref","ref","_menuItem$shortcutTex","_menuItem$shortcut","closeMenu","children","menuItem","onMenuItemClick","onMenuItemMouseMove","onMenuItemContextMenu","isKeyboardSelected","isMouseSelected","dataTestId","handleMenuItemClick","e","handleMenuItemMouseMove","handleMenuItemContextMenu","renderCustomMenuElement","element","iconElement","displayShortcut","type","forwardedProps","cloneElement","shortcutText","shortcut","getDisplayText","icon","menuItemIcon","isValidElement","style","iconColor","disabled","undefined","color","subMenuIndicator","isSubMenuActive","Boolean","actions","content","menuElement","className","onMouseMove","_menuItem$description","menuItemDisabled","iconHasOutline","iconOutline","active","onClick","onContextMenu","title","description","outline","displayName"],"sources":["../../src/context-actions/ContextMenuItem.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight, type IconDefinition } from '@deephaven/icons';\nimport type { ContextAction } from './ContextActionUtils';\n\ninterface ContextMenuItemProps {\n children?: React.ReactNode;\n closeMenu: (closeAll: boolean) => void;\n isKeyboardSelected?: boolean;\n isMouseSelected?: boolean;\n menuItem: ContextAction;\n onMenuItemClick: (item: ContextAction, e: React.MouseEvent) => void;\n onMenuItemMouseMove: (item: ContextAction, e: React.MouseEvent) => void;\n onMenuItemContextMenu: (item: ContextAction, e: React.MouseEvent) => void;\n 'data-testid'?: string;\n}\n\nconst ContextMenuItem = React.forwardRef<HTMLDivElement, ContextMenuItemProps>(\n (\n {\n closeMenu,\n children,\n menuItem,\n onMenuItemClick,\n onMenuItemMouseMove,\n onMenuItemContextMenu,\n isKeyboardSelected = false,\n isMouseSelected = false,\n 'data-testid': dataTestId,\n }: ContextMenuItemProps,\n ref\n ) => {\n const handleMenuItemClick = useCallback(\n (e: React.MouseEvent): void => {\n onMenuItemClick(menuItem, e);\n },\n [menuItem, onMenuItemClick]\n );\n\n const handleMenuItemMouseMove = useCallback(\n (e: React.MouseEvent): void => {\n onMenuItemMouseMove(menuItem, e);\n },\n [menuItem, onMenuItemMouseMove]\n );\n\n const handleMenuItemContextMenu = useCallback(\n (e: React.MouseEvent): void => {\n onMenuItemContextMenu(menuItem, e);\n },\n [menuItem, onMenuItemContextMenu]\n );\n\n function renderCustomMenuElement(\n element: React.ReactElement,\n iconElement: IconDefinition | React.ReactElement | null,\n displayShortcut: string | undefined\n ): JSX.Element {\n // Don't pass forwardedProps if menuElement is a native DOM node\n if (typeof element.type === 'string') {\n return element;\n }\n const forwardedProps = {\n menuItem,\n closeMenu,\n isKeyboardSelected,\n isMouseSelected,\n iconElement,\n displayShortcut,\n 'data-testid': dataTestId,\n };\n return React.cloneElement(element, {\n forwardedProps,\n });\n }\n\n const displayShortcut =\n menuItem.shortcutText ?? menuItem.shortcut?.getDisplayText();\n let icon: IconDefinition | React.ReactElement | null = null;\n if (menuItem.icon) {\n const menuItemIcon = menuItem.icon;\n if (React.isValidElement(menuItemIcon)) {\n icon = menuItemIcon;\n } else {\n let style: React.CSSProperties | undefined;\n if (\n menuItem.iconColor != null &&\n (menuItem.disabled === undefined || !menuItem.disabled)\n ) {\n style = { color: menuItem.iconColor };\n }\n icon = <FontAwesomeIcon icon={menuItemIcon} style={style} />;\n }\n }\n\n let subMenuIndicator = null;\n const isSubMenuActive = Boolean(children);\n if (menuItem.actions) {\n subMenuIndicator = <FontAwesomeIcon icon={vsChevronRight} />;\n }\n let content = null;\n if (menuItem.menuElement) {\n content = (\n <div className=\"custom-menu-item\" onMouseMove={handleMenuItemMouseMove}>\n {renderCustomMenuElement(menuItem.menuElement, icon, displayShortcut)}\n </div>\n );\n } else {\n const menuItemDisabled = menuItem.disabled;\n const iconHasOutline = menuItem.iconOutline;\n content = (\n <button\n type=\"button\"\n className={classNames(\n 'btn-context-menu',\n { disabled: menuItemDisabled },\n {\n active:\n (isSubMenuActive || isMouseSelected) &&\n (menuItemDisabled === undefined || !menuItemDisabled),\n },\n {\n 'keyboard-active':\n isKeyboardSelected &&\n (menuItemDisabled === undefined || !menuItemDisabled),\n }\n )}\n onClick={handleMenuItemClick}\n onMouseMove={handleMenuItemMouseMove}\n onContextMenu={handleMenuItemContextMenu}\n title={menuItem.description ?? ''}\n >\n <div className=\"btn-context-menu-wrapper\">\n <span className={classNames('icon', { outline: iconHasOutline })}>\n {icon}\n </span>\n <span className=\"title\">{menuItem.title}</span>\n {displayShortcut !== undefined && (\n <span className=\"shortcut\">{displayShortcut}</span>\n )}\n {subMenuIndicator && (\n <span\n className={classNames('submenu-indicator', {\n disabled: menuItemDisabled,\n })}\n >\n {subMenuIndicator}\n </span>\n )}\n </div>\n </button>\n );\n }\n\n return (\n <div className=\"context-menu-item\" ref={ref} data-testid={dataTestId}>\n {children}\n {content}\n </div>\n );\n }\n);\n\nContextMenuItem.displayName = 'ContextMenuItem';\n\nexport default ContextMenuItem;\n"],"mappings":"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","ignoreList":[]}
@@ -70,7 +70,7 @@ class ContextMenuRoot extends Component {
70
70
  bubbles: true,
71
71
  cancelable: true
72
72
  });
73
- element === null || element === void 0 ? void 0 : element.dispatchEvent(mouseEvent);
73
+ element === null || element === void 0 || element.dispatchEvent(mouseEvent);
74
74
  });
75
75
  return;
76
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuRoot.js","names":["React","Component","classNames","ContextMenu","ContextActionUtils","jsx","_jsx","ContextMenuRoot","constructor","props","_defineProperty","handleMenuClose","bind","handleContextMenu","container","createRef","openMenu","state","actions","left","top","componentDidMount","_this$container$curre","current","parentElement","addEventListener","componentWillUnmount","_this$container$curre2","removeEventListener","e","parentRect","getBoundingClientRect","clientY","clientX","target","preventDefault","setState","element","document","elementFromPoint","mouseEvent","MouseEvent","bubbles","cancelable","dispatchEvent","isContextActionEvent","metaKey","ctrlKey","contextActions","getMenuItems","length","menu","render","dataTestId","ref","onMenuClosed","updatePosition","verifiedTop","verifiedLeft","className","active","children"],"sources":["../../src/context-actions/ContextMenuRoot.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ContextMenu from './ContextMenu';\nimport ContextActionUtils, { type MenuItem } from './ContextActionUtils';\n\ntype ContextMenuRootProps = Record<string, never> & {\n 'data-testid'?: string;\n};\n\ninterface ContextMenuRootState {\n actions: MenuItem[] | null;\n left: number;\n top: number;\n}\n\n/**\n * Put at your root container, any contextmenu events that are unhandled in the root container will be handled by this\n */\nclass ContextMenuRoot extends Component<\n ContextMenuRootProps,\n ContextMenuRootState\n> {\n constructor(props: ContextMenuRootProps) {\n super(props);\n\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.container = React.createRef();\n this.openMenu = React.createRef();\n\n this.state = {\n actions: null,\n left: 0,\n top: 0,\n };\n }\n\n componentDidMount(): void {\n if (this.container.current?.parentElement) {\n this.container.current.parentElement.addEventListener(\n 'contextmenu',\n this.handleContextMenu\n );\n }\n }\n\n componentWillUnmount(): void {\n if (this.container.current?.parentElement) {\n this.container.current.parentElement.removeEventListener(\n 'contextmenu',\n this.handleContextMenu\n );\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n openMenu: React.RefObject<ContextMenu>;\n\n handleContextMenu(e: MouseEvent): void {\n if (!this.container.current) {\n return;\n }\n\n const parentRect = this.container.current.getBoundingClientRect();\n const top = e.clientY - parentRect.top;\n const left = e.clientX - parentRect.left;\n const { actions } = this.state;\n\n // Context menu is open and user clicked on the context-root blocking layer\n // Mac and Linux appear to trigger contextmenu events on mousedown vs. mouseup on Windows\n // Mouseup on Windows triggers blur before contextmenu which effectively does what this path does\n if (actions != null && e.target === this.container.current) {\n // re-emit right clicks that hit the context-root blocking layer\n // while we already have a custom context menu open\n e.preventDefault();\n\n // Set actions to null removes the menu\n // That allows a new menu to be opened on a different element so initial position is set properly\n // Otherwise the instance of this menu may be reused\n // A new contextmenu event is triggered on the element at the location the user clicked on the blocking layer\n this.setState({ actions: null }, () => {\n const element = document.elementFromPoint(left, top); // x y\n\n const mouseEvent = new MouseEvent('contextmenu', {\n clientX: e.clientX,\n clientY: e.clientY,\n bubbles: true,\n cancelable: true,\n });\n\n element?.dispatchEvent(mouseEvent);\n });\n return;\n }\n\n if (!ContextActionUtils.isContextActionEvent(e)) {\n // Open native menu if no custom context actions\n return;\n }\n\n if (e.metaKey || e.ctrlKey) {\n // debug escape hatch to native menu\n return;\n }\n\n const contextActions = ContextActionUtils.getMenuItems(e.contextActions);\n\n if (contextActions.length === 0) {\n // No actions after filtering. Use native menu\n return;\n }\n\n // new clicks, set actions\n e.preventDefault();\n this.setState({\n actions: contextActions,\n top,\n left,\n });\n }\n\n handleMenuClose(menu: ContextMenu): void {\n if (menu === this.openMenu.current) {\n this.setState({ actions: null });\n }\n }\n\n render(): JSX.Element {\n let menu = null;\n const { 'data-testid': dataTestId } = this.props;\n const { actions, top, left } = this.state;\n if (actions) {\n menu = (\n <ContextMenu\n ref={this.openMenu}\n actions={actions}\n onMenuClosed={this.handleMenuClose}\n top={top}\n left={left}\n updatePosition={(verifiedTop, verifiedLeft) => {\n this.setState({ top: verifiedTop, left: verifiedLeft });\n }}\n data-testid={dataTestId}\n />\n );\n }\n return (\n <div\n className={classNames('context-menu-root', { active: actions })}\n ref={this.container}\n >\n {menu}\n </div>\n );\n }\n}\n\nexport default ContextMenuRoot;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ContextMenuRoot.js","names":["React","Component","classNames","ContextMenu","ContextActionUtils","jsx","_jsx","ContextMenuRoot","constructor","props","_defineProperty","handleMenuClose","bind","handleContextMenu","container","createRef","openMenu","state","actions","left","top","componentDidMount","_this$container$curre","current","parentElement","addEventListener","componentWillUnmount","_this$container$curre2","removeEventListener","e","parentRect","getBoundingClientRect","clientY","clientX","target","preventDefault","setState","element","document","elementFromPoint","mouseEvent","MouseEvent","bubbles","cancelable","dispatchEvent","isContextActionEvent","metaKey","ctrlKey","contextActions","getMenuItems","length","menu","render","dataTestId","ref","onMenuClosed","updatePosition","verifiedTop","verifiedLeft","className","active","children"],"sources":["../../src/context-actions/ContextMenuRoot.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ContextMenu from './ContextMenu';\nimport ContextActionUtils, { type MenuItem } from './ContextActionUtils';\n\ntype ContextMenuRootProps = Record<string, never> & {\n 'data-testid'?: string;\n};\n\ninterface ContextMenuRootState {\n actions: MenuItem[] | null;\n left: number;\n top: number;\n}\n\n/**\n * Put at your root container, any contextmenu events that are unhandled in the root container will be handled by this\n */\nclass ContextMenuRoot extends Component<\n ContextMenuRootProps,\n ContextMenuRootState\n> {\n constructor(props: ContextMenuRootProps) {\n super(props);\n\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.container = React.createRef();\n this.openMenu = React.createRef();\n\n this.state = {\n actions: null,\n left: 0,\n top: 0,\n };\n }\n\n componentDidMount(): void {\n if (this.container.current?.parentElement) {\n this.container.current.parentElement.addEventListener(\n 'contextmenu',\n this.handleContextMenu\n );\n }\n }\n\n componentWillUnmount(): void {\n if (this.container.current?.parentElement) {\n this.container.current.parentElement.removeEventListener(\n 'contextmenu',\n this.handleContextMenu\n );\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n openMenu: React.RefObject<ContextMenu>;\n\n handleContextMenu(e: MouseEvent): void {\n if (!this.container.current) {\n return;\n }\n\n const parentRect = this.container.current.getBoundingClientRect();\n const top = e.clientY - parentRect.top;\n const left = e.clientX - parentRect.left;\n const { actions } = this.state;\n\n // Context menu is open and user clicked on the context-root blocking layer\n // Mac and Linux appear to trigger contextmenu events on mousedown vs. mouseup on Windows\n // Mouseup on Windows triggers blur before contextmenu which effectively does what this path does\n if (actions != null && e.target === this.container.current) {\n // re-emit right clicks that hit the context-root blocking layer\n // while we already have a custom context menu open\n e.preventDefault();\n\n // Set actions to null removes the menu\n // That allows a new menu to be opened on a different element so initial position is set properly\n // Otherwise the instance of this menu may be reused\n // A new contextmenu event is triggered on the element at the location the user clicked on the blocking layer\n this.setState({ actions: null }, () => {\n const element = document.elementFromPoint(left, top); // x y\n\n const mouseEvent = new MouseEvent('contextmenu', {\n clientX: e.clientX,\n clientY: e.clientY,\n bubbles: true,\n cancelable: true,\n });\n\n element?.dispatchEvent(mouseEvent);\n });\n return;\n }\n\n if (!ContextActionUtils.isContextActionEvent(e)) {\n // Open native menu if no custom context actions\n return;\n }\n\n if (e.metaKey || e.ctrlKey) {\n // debug escape hatch to native menu\n return;\n }\n\n const contextActions = ContextActionUtils.getMenuItems(e.contextActions);\n\n if (contextActions.length === 0) {\n // No actions after filtering. Use native menu\n return;\n }\n\n // new clicks, set actions\n e.preventDefault();\n this.setState({\n actions: contextActions,\n top,\n left,\n });\n }\n\n handleMenuClose(menu: ContextMenu): void {\n if (menu === this.openMenu.current) {\n this.setState({ actions: null });\n }\n }\n\n render(): JSX.Element {\n let menu = null;\n const { 'data-testid': dataTestId } = this.props;\n const { actions, top, left } = this.state;\n if (actions) {\n menu = (\n <ContextMenu\n ref={this.openMenu}\n actions={actions}\n onMenuClosed={this.handleMenuClose}\n top={top}\n left={left}\n updatePosition={(verifiedTop, verifiedLeft) => {\n this.setState({ top: verifiedTop, left: verifiedLeft });\n }}\n data-testid={dataTestId}\n />\n );\n }\n return (\n <div\n className={classNames('context-menu-root', { active: actions })}\n ref={this.container}\n >\n {menu}\n </div>\n );\n }\n}\n\nexport default ContextMenuRoot;\n"],"mappings":"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","ignoreList":[]}
@@ -40,7 +40,7 @@ class GlobalContextAction extends Component {
40
40
  if (!ContextActionUtils.actionsDisabled && action.shortcut !== undefined && action.shortcut.matchesEvent(e)) {
41
41
  var _action$action;
42
42
  log.debug('Global hotkey matched!', e);
43
- (_action$action = action.action) === null || _action$action === void 0 ? void 0 : _action$action.call(action, e);
43
+ (_action$action = action.action) === null || _action$action === void 0 || _action$action.call(action, e);
44
44
  e.preventDefault();
45
45
  e.stopPropagation();
46
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalContextAction.js","names":["Component","Log","ContextActionUtils","log","module","GlobalContextAction","constructor","props","handleContextMenu","bind","handleKeyDown","componentDidMount","document","body","addEventListener","componentWillUnmount","removeEventListener","evt","e","contextActions","action","title","menuElement","push","debug","actionsDisabled","shortcut","undefined","matchesEvent","_action$action","call","preventDefault","stopPropagation","render"],"sources":["../../src/context-actions/GlobalContextAction.tsx"],"sourcesContent":["import { Component } from 'react';\nimport Log from '@deephaven/log';\nimport ContextActionUtils from './ContextActionUtils';\nimport type { ContextAction, ContextActionEvent } from './ContextActionUtils';\n\nconst log = Log.module('GlobalContextAction');\n\ninterface GlobalContextActionProps {\n action: ContextAction;\n}\n\nclass GlobalContextAction extends Component<GlobalContextActionProps> {\n constructor(props: GlobalContextActionProps) {\n super(props);\n\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n componentDidMount(): void {\n document.body.addEventListener('contextmenu', this.handleContextMenu);\n document.body.addEventListener('keydown', this.handleKeyDown);\n }\n\n componentWillUnmount(): void {\n document.body.removeEventListener('contextmenu', this.handleContextMenu);\n document.body.removeEventListener('keydown', this.handleKeyDown);\n }\n\n handleContextMenu(evt: MouseEvent): void {\n const e = evt as ContextActionEvent;\n if (e.contextActions == null) {\n e.contextActions = [];\n }\n\n const { action } = this.props;\n\n if (action.title == null && !action.menuElement) {\n return;\n }\n\n if (e.contextActions == null) {\n e.contextActions = [];\n }\n\n e.contextActions.push(action);\n\n log.debug(\n 'Received context menu event at global action! Menu items are now: ',\n e.contextActions\n );\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n const { action } = this.props;\n if (\n !ContextActionUtils.actionsDisabled &&\n action.shortcut !== undefined &&\n action.shortcut.matchesEvent(e)\n ) {\n log.debug('Global hotkey matched!', e);\n\n action.action?.(e);\n\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default GlobalContextAction;\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,OAAOC,GAAG,MAAM,gBAAgB;AAAC,OAC1BC,kBAAkB;AAGzB,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAM,CAAC,qBAAqB,CAAC;AAM7C,MAAMC,mBAAmB,SAASL,SAAS,CAA2B;EACpEM,WAAWA,CAACC,KAA+B,EAAE;IAC3C,KAAK,CAACA,KAAK,CAAC;IAEZ,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACC,aAAa,GAAG,IAAI,CAACA,aAAa,CAACD,IAAI,CAAC,IAAI,CAAC;EACpD;EAEAE,iBAAiBA,CAAA,EAAS;IACxBC,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAACN,iBAAiB,CAAC;IACrEI,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACJ,aAAa,CAAC;EAC/D;EAEAK,oBAAoBA,CAAA,EAAS;IAC3BH,QAAQ,CAACC,IAAI,CAACG,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAACR,iBAAiB,CAAC;IACxEI,QAAQ,CAACC,IAAI,CAACG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACN,aAAa,CAAC;EAClE;EAEAF,iBAAiBA,CAACS,GAAe,EAAQ;IACvC,IAAMC,CAAC,GAAGD,GAAyB;IACnC,IAAIC,CAAC,CAACC,cAAc,IAAI,IAAI,EAAE;MAC5BD,CAAC,CAACC,cAAc,GAAG,EAAE;IACvB;IAEA,IAAM;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACb,KAAK;IAE7B,IAAIa,MAAM,CAACC,KAAK,IAAI,IAAI,IAAI,CAACD,MAAM,CAACE,WAAW,EAAE;MAC/C;IACF;IAEA,IAAIJ,CAAC,CAACC,cAAc,IAAI,IAAI,EAAE;MAC5BD,CAAC,CAACC,cAAc,GAAG,EAAE;IACvB;IAEAD,CAAC,CAACC,cAAc,CAACI,IAAI,CAACH,MAAM,CAAC;IAE7BjB,GAAG,CAACqB,KAAK,CACP,oEAAoE,EACpEN,CAAC,CAACC,cACJ,CAAC;EACH;EAEAT,aAAaA,CAACQ,CAAgB,EAAQ;IACpC,IAAM;MAAEE;IAAO,CAAC,GAAG,IAAI,CAACb,KAAK;IAC7B,IACE,CAACL,kBAAkB,CAACuB,eAAe,IACnCL,MAAM,CAACM,QAAQ,KAAKC,SAAS,IAC7BP,MAAM,CAACM,QAAQ,CAACE,YAAY,CAACV,CAAC,CAAC,EAC/B;MAAA,IAAAW,cAAA;MACA1B,GAAG,CAACqB,KAAK,CAAC,wBAAwB,EAAEN,CAAC,CAAC;MAEtC,CAAAW,cAAA,GAAAT,MAAM,CAACA,MAAM,cAAAS,cAAA,uBAAbA,cAAA,CAAAC,IAAA,CAAAV,MAAM,EAAUF,CAAC,CAAC;MAElBA,CAAC,CAACa,cAAc,CAAC,CAAC;MAClBb,CAAC,CAACc,eAAe,CAAC,CAAC;IACrB;EACF;EAEAC,MAAMA,CAAA,EAAS;IACb,OAAO,IAAI;EACb;AACF;AAEA,eAAe5B,mBAAmB"}
1
+ {"version":3,"file":"GlobalContextAction.js","names":["Component","Log","ContextActionUtils","log","module","GlobalContextAction","constructor","props","handleContextMenu","bind","handleKeyDown","componentDidMount","document","body","addEventListener","componentWillUnmount","removeEventListener","evt","e","contextActions","action","title","menuElement","push","debug","actionsDisabled","shortcut","undefined","matchesEvent","_action$action","call","preventDefault","stopPropagation","render"],"sources":["../../src/context-actions/GlobalContextAction.tsx"],"sourcesContent":["import { Component } from 'react';\nimport Log from '@deephaven/log';\nimport ContextActionUtils from './ContextActionUtils';\nimport type { ContextAction, ContextActionEvent } from './ContextActionUtils';\n\nconst log = Log.module('GlobalContextAction');\n\ninterface GlobalContextActionProps {\n action: ContextAction;\n}\n\nclass GlobalContextAction extends Component<GlobalContextActionProps> {\n constructor(props: GlobalContextActionProps) {\n super(props);\n\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n componentDidMount(): void {\n document.body.addEventListener('contextmenu', this.handleContextMenu);\n document.body.addEventListener('keydown', this.handleKeyDown);\n }\n\n componentWillUnmount(): void {\n document.body.removeEventListener('contextmenu', this.handleContextMenu);\n document.body.removeEventListener('keydown', this.handleKeyDown);\n }\n\n handleContextMenu(evt: MouseEvent): void {\n const e = evt as ContextActionEvent;\n if (e.contextActions == null) {\n e.contextActions = [];\n }\n\n const { action } = this.props;\n\n if (action.title == null && !action.menuElement) {\n return;\n }\n\n if (e.contextActions == null) {\n e.contextActions = [];\n }\n\n e.contextActions.push(action);\n\n log.debug(\n 'Received context menu event at global action! Menu items are now: ',\n e.contextActions\n );\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n const { action } = this.props;\n if (\n !ContextActionUtils.actionsDisabled &&\n action.shortcut !== undefined &&\n action.shortcut.matchesEvent(e)\n ) {\n log.debug('Global hotkey matched!', e);\n\n action.action?.(e);\n\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default GlobalContextAction;\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,OAAOC,GAAG,MAAM,gBAAgB;AAAC,OAC1BC,kBAAkB;AAGzB,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAM,CAAC,qBAAqB,CAAC;AAM7C,MAAMC,mBAAmB,SAASL,SAAS,CAA2B;EACpEM,WAAWA,CAACC,KAA+B,EAAE;IAC3C,KAAK,CAACA,KAAK,CAAC;IAEZ,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACC,aAAa,GAAG,IAAI,CAACA,aAAa,CAACD,IAAI,CAAC,IAAI,CAAC;EACpD;EAEAE,iBAAiBA,CAAA,EAAS;IACxBC,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAACN,iBAAiB,CAAC;IACrEI,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACJ,aAAa,CAAC;EAC/D;EAEAK,oBAAoBA,CAAA,EAAS;IAC3BH,QAAQ,CAACC,IAAI,CAACG,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAACR,iBAAiB,CAAC;IACxEI,QAAQ,CAACC,IAAI,CAACG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACN,aAAa,CAAC;EAClE;EAEAF,iBAAiBA,CAACS,GAAe,EAAQ;IACvC,IAAMC,CAAC,GAAGD,GAAyB;IACnC,IAAIC,CAAC,CAACC,cAAc,IAAI,IAAI,EAAE;MAC5BD,CAAC,CAACC,cAAc,GAAG,EAAE;IACvB;IAEA,IAAM;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACb,KAAK;IAE7B,IAAIa,MAAM,CAACC,KAAK,IAAI,IAAI,IAAI,CAACD,MAAM,CAACE,WAAW,EAAE;MAC/C;IACF;IAEA,IAAIJ,CAAC,CAACC,cAAc,IAAI,IAAI,EAAE;MAC5BD,CAAC,CAACC,cAAc,GAAG,EAAE;IACvB;IAEAD,CAAC,CAACC,cAAc,CAACI,IAAI,CAACH,MAAM,CAAC;IAE7BjB,GAAG,CAACqB,KAAK,CACP,oEAAoE,EACpEN,CAAC,CAACC,cACJ,CAAC;EACH;EAEAT,aAAaA,CAACQ,CAAgB,EAAQ;IACpC,IAAM;MAAEE;IAAO,CAAC,GAAG,IAAI,CAACb,KAAK;IAC7B,IACE,CAACL,kBAAkB,CAACuB,eAAe,IACnCL,MAAM,CAACM,QAAQ,KAAKC,SAAS,IAC7BP,MAAM,CAACM,QAAQ,CAACE,YAAY,CAACV,CAAC,CAAC,EAC/B;MAAA,IAAAW,cAAA;MACA1B,GAAG,CAACqB,KAAK,CAAC,wBAAwB,EAAEN,CAAC,CAAC;MAEtC,CAAAW,cAAA,GAAAT,MAAM,CAACA,MAAM,cAAAS,cAAA,eAAbA,cAAA,CAAAC,IAAA,CAAAV,MAAM,EAAUF,CAAC,CAAC;MAElBA,CAAC,CAACa,cAAc,CAAC,CAAC;MAClBb,CAAC,CAACc,eAAe,CAAC,CAAC;IACrB;EACF;EAEAC,MAAMA,CAAA,EAAS;IACb,OAAO,IAAI;EACb;AACF;AAEA,eAAe5B,mBAAmB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalContextActions.js","names":["React","Component","GlobalContextAction","jsx","_jsx","GlobalContextActions","render","actions","dataTestId","props","actionElements","i","length","action","shortcut","title","menuElement","actionElement","concat","id","push"],"sources":["../../src/context-actions/GlobalContextActions.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport GlobalContextAction from './GlobalContextAction';\nimport type { ContextAction } from './ContextActionUtils';\n\ninterface GlobalContextActionsProps {\n actions: ContextAction[];\n 'data-testid'?: string;\n}\n\nclass GlobalContextActions extends Component<GlobalContextActionsProps> {\n render(): React.ReactNode {\n const { actions, 'data-testid': dataTestId } = this.props;\n const actionElements = [];\n for (let i = 0; i < actions.length; i += 1) {\n const action = actions[i];\n const { shortcut } = action;\n if (action.title != null || action.menuElement || shortcut) {\n const actionElement = (\n <GlobalContextAction\n key={`${action.title}.${shortcut?.id}`}\n action={action}\n data-testid={dataTestId}\n />\n );\n actionElements.push(actionElement);\n }\n }\n return actionElements;\n }\n}\n\nexport default GlobalContextActions;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AAAC,OAClCC,mBAAmB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAQ1B,MAAMC,oBAAoB,SAASJ,SAAS,CAA4B;EACtEK,MAAMA,CAAA,EAAoB;IACxB,IAAM;MAAEC,OAAO;MAAE,aAAa,EAAEC;IAAW,CAAC,GAAG,IAAI,CAACC,KAAK;IACzD,IAAMC,cAAc,GAAG,EAAE;IACzB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,OAAO,CAACK,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MAC1C,IAAME,MAAM,GAAGN,OAAO,CAACI,CAAC,CAAC;MACzB,IAAM;QAAEG;MAAS,CAAC,GAAGD,MAAM;MAC3B,IAAIA,MAAM,CAACE,KAAK,IAAI,IAAI,IAAIF,MAAM,CAACG,WAAW,IAAIF,QAAQ,EAAE;QAC1D,IAAMG,aAAa,gBACjBb,IAAA,CAACF,mBAAmB;UAElBW,MAAM,EAAEA,MAAO;UACf,eAAaL;QAAW,MAAAU,MAAA,CAFhBL,MAAM,CAACE,KAAK,OAAAG,MAAA,CAAIJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,EAAE,CAGrC,CACF;QACDT,cAAc,CAACU,IAAI,CAACH,aAAa,CAAC;MACpC;IACF;IACA,OAAOP,cAAc;EACvB;AACF;AAEA,eAAeL,oBAAoB"}
1
+ {"version":3,"file":"GlobalContextActions.js","names":["React","Component","GlobalContextAction","jsx","_jsx","GlobalContextActions","render","actions","dataTestId","props","actionElements","i","length","action","shortcut","title","menuElement","actionElement","concat","id","push"],"sources":["../../src/context-actions/GlobalContextActions.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport GlobalContextAction from './GlobalContextAction';\nimport type { ContextAction } from './ContextActionUtils';\n\ninterface GlobalContextActionsProps {\n actions: ContextAction[];\n 'data-testid'?: string;\n}\n\nclass GlobalContextActions extends Component<GlobalContextActionsProps> {\n render(): React.ReactNode {\n const { actions, 'data-testid': dataTestId } = this.props;\n const actionElements = [];\n for (let i = 0; i < actions.length; i += 1) {\n const action = actions[i];\n const { shortcut } = action;\n if (action.title != null || action.menuElement || shortcut) {\n const actionElement = (\n <GlobalContextAction\n key={`${action.title}.${shortcut?.id}`}\n action={action}\n data-testid={dataTestId}\n />\n );\n actionElements.push(actionElement);\n }\n }\n return actionElements;\n }\n}\n\nexport default GlobalContextActions;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AAAC,OAClCC,mBAAmB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAQ1B,MAAMC,oBAAoB,SAASJ,SAAS,CAA4B;EACtEK,MAAMA,CAAA,EAAoB;IACxB,IAAM;MAAEC,OAAO;MAAE,aAAa,EAAEC;IAAW,CAAC,GAAG,IAAI,CAACC,KAAK;IACzD,IAAMC,cAAc,GAAG,EAAE;IACzB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,OAAO,CAACK,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MAC1C,IAAME,MAAM,GAAGN,OAAO,CAACI,CAAC,CAAC;MACzB,IAAM;QAAEG;MAAS,CAAC,GAAGD,MAAM;MAC3B,IAAIA,MAAM,CAACE,KAAK,IAAI,IAAI,IAAIF,MAAM,CAACG,WAAW,IAAIF,QAAQ,EAAE;QAC1D,IAAMG,aAAa,gBACjBb,IAAA,CAACF,mBAAmB;UAElBW,MAAM,EAAEA,MAAO;UACf,eAAaL;QAAW,MAAAU,MAAA,CAFhBL,MAAM,CAACE,KAAK,OAAAG,MAAA,CAAIJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,EAAE,CAGrC,CACF;QACDT,cAAc,CAACU,IAAI,CAACH,aAAa,CAAC;MACpC;IACF;IACA,OAAOP,cAAc;EACvB;AACF;AAEA,eAAeL,oBAAoB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","ContextActions","ContextActionUtils","ContextMenuItem","ContextMenuRoot"],"sources":["../../src/context-actions/index.ts"],"sourcesContent":["export { default as ContextActions } from './ContextActions';\nexport { default as ContextActionUtils } from './ContextActionUtils';\nexport type { ContextAction } from './ContextActionUtils';\nexport { default as ContextMenuItem } from './ContextMenuItem';\nexport { default as ContextMenuRoot } from './ContextMenuRoot';\nexport type { ResolvableContextAction } from './ContextActionUtils';\n"],"mappings":"SAASA,OAAO,IAAIC,cAAc;AAAA,SACzBD,OAAO,IAAIE,kBAAkB;AAAA,SAE7BF,OAAO,IAAIG,eAAe;AAAA,SAC1BH,OAAO,IAAII,eAAe"}
1
+ {"version":3,"file":"index.js","names":["default","ContextActions","ContextActionUtils","ContextMenuItem","ContextMenuRoot"],"sources":["../../src/context-actions/index.ts"],"sourcesContent":["export { default as ContextActions } from './ContextActions';\nexport { default as ContextActionUtils } from './ContextActionUtils';\nexport type { ContextAction } from './ContextActionUtils';\nexport { default as ContextMenuItem } from './ContextMenuItem';\nexport { default as ContextMenuRoot } from './ContextMenuRoot';\nexport type { ResolvableContextAction } from './ContextActionUtils';\n"],"mappings":"SAASA,OAAO,IAAIC,cAAc;AAAA,SACzBD,OAAO,IAAIE,kBAAkB;AAAA,SAE7BF,OAAO,IAAIG,eAAe;AAAA,SAC1BH,OAAO,IAAII,eAAe","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.css' {\n const content: Record<string, string>;\n export default content;\n}\ndeclare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.css?inline' {\n const content: string;\n export default content;\n}\n\ndeclare module '*.scss?inline' {\n const content: string;\n export default content;\n}\n\ndeclare module '*.css?raw' {\n const content: string;\n export default content;\n}\n\ndeclare module '*.scss?raw' {\n const content: string;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":""}
1
+ {"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.css' {\n const content: Record<string, string>;\n export default content;\n}\ndeclare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.css?inline' {\n const content: string;\n export default content;\n}\n\ndeclare module '*.scss?inline' {\n const content: string;\n export default content;\n}\n\ndeclare module '*.css?raw' {\n const content: string;\n export default content;\n}\n\ndeclare module '*.scss?raw' {\n const content: string;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":"","ignoreList":[]}
@@ -9,8 +9,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
9
9
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
10
10
  import { ActionButton, DialogTrigger, Icon, Text } from "../spectrum/index.js";
11
11
  import { Tooltip } from "../popper/index.js";
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
- import { jsxs as _jsxs } from "react/jsx-runtime";
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
13
  /**
15
14
  * Dialog trigger based on an ActionButton.
16
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ActionButtonDialogTrigger.js","names":["FontAwesomeIcon","ActionButton","DialogTrigger","Icon","Text","Tooltip","jsx","_jsx","jsxs","_jsxs","ActionButtonDialogTrigger","_ref","ariaLabel","icon","isQuiet","labelText","children","onOpenChange","tooltip","styleProps","_objectWithoutProperties","_excluded","iconClassName","undefined","type","_objectSpread","UNSAFE_className"],"sources":["../../src/dialogs/ActionButtonDialogTrigger.tsx"],"sourcesContent":["import { type ReactElement } from 'react';\nimport type { SpectrumDialogClose } from '@react-types/dialog';\nimport type { StyleProps } from '@react-types/shared';\nimport type { IconDefinition } from '@fortawesome/fontawesome-common-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ActionButton, DialogTrigger, Icon, Text } from '../spectrum';\nimport { Tooltip } from '../popper';\n\nexport interface ActionButtonDialogTriggerProps extends StyleProps {\n icon: IconDefinition;\n isQuiet?: boolean;\n labelText?: string;\n ariaLabel?: string;\n tooltip?: string;\n children: SpectrumDialogClose | ReactElement;\n onOpenChange?: (isOpen: boolean) => void;\n}\n\n/**\n * Dialog trigger based on an ActionButton.\n */\nexport function ActionButtonDialogTrigger({\n ariaLabel,\n icon,\n isQuiet,\n labelText,\n children,\n onOpenChange,\n tooltip,\n ...styleProps\n}: ActionButtonDialogTriggerProps): JSX.Element {\n const iconClassName =\n labelText == null && tooltip != null\n ? 'action-button-icon-with-tooltip'\n : undefined;\n\n return (\n <DialogTrigger type=\"popover\" onOpenChange={onOpenChange}>\n <ActionButton\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...styleProps}\n aria-label={ariaLabel ?? labelText}\n isQuiet={isQuiet}\n >\n <Icon UNSAFE_className={iconClassName}>\n <FontAwesomeIcon icon={icon} />\n </Icon>\n {labelText == null ? null : <Text>{labelText}</Text>}\n {tooltip == null ? null : <Tooltip>{tooltip}</Tooltip>}\n </ActionButton>\n {children}\n </DialogTrigger>\n );\n}\n\nexport default ActionButtonDialogTrigger;\n"],"mappings":";;;;;;;;AAIA,SAASA,eAAe,QAAQ,gCAAgC;AAAC,SACxDC,YAAY,EAAEC,aAAa,EAAEC,IAAI,EAAEC,IAAI;AAAA,SACvCC,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAYhB;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CAAAC,IAAA,EASO;EAAA,IATN;MACxCC,SAAS;MACTC,IAAI;MACJC,OAAO;MACPC,SAAS;MACTC,QAAQ;MACRC,YAAY;MACZC;IAE8B,CAAC,GAAAP,IAAA;IAD5BQ,UAAU,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAEb,IAAMC,aAAa,GACjBP,SAAS,IAAI,IAAI,IAAIG,OAAO,IAAI,IAAI,GAChC,iCAAiC,GACjCK,SAAS;EAEf,oBACEd,KAAA,CAACP,aAAa;IAACsB,IAAI,EAAC,SAAS;IAACP,YAAY,EAAEA,YAAa;IAAAD,QAAA,gBACvDP,KAAA,CAACR;IACC;IAAA,EAAAwB,aAAA,CAAAA,aAAA,KACIN,UAAU;MACd,cAAYP,SAAS,aAATA,SAAS,cAATA,SAAS,GAAIG,SAAU;MACnCD,OAAO,EAAEA,OAAQ;MAAAE,QAAA,gBAEjBT,IAAA,CAACJ,IAAI;QAACuB,gBAAgB,EAAEJ,aAAc;QAAAN,QAAA,eACpCT,IAAA,CAACP,eAAe;UAACa,IAAI,EAAEA;QAAK,CAAE;MAAC,CAC3B,CAAC,EACNE,SAAS,IAAI,IAAI,GAAG,IAAI,gBAAGR,IAAA,CAACH,IAAI;QAAAY,QAAA,EAAED;MAAS,CAAO,CAAC,EACnDG,OAAO,IAAI,IAAI,GAAG,IAAI,gBAAGX,IAAA,CAACF,OAAO;QAAAW,QAAA,EAAEE;MAAO,CAAU,CAAC;IAAA,EAC1C,CAAC,EACdF,QAAQ;EAAA,CACI,CAAC;AAEpB;AAEA,eAAeN,yBAAyB"}
1
+ {"version":3,"file":"ActionButtonDialogTrigger.js","names":["FontAwesomeIcon","ActionButton","DialogTrigger","Icon","Text","Tooltip","jsx","_jsx","jsxs","_jsxs","ActionButtonDialogTrigger","_ref","ariaLabel","icon","isQuiet","labelText","children","onOpenChange","tooltip","styleProps","_objectWithoutProperties","_excluded","iconClassName","undefined","type","_objectSpread","UNSAFE_className"],"sources":["../../src/dialogs/ActionButtonDialogTrigger.tsx"],"sourcesContent":["import { type ReactElement } from 'react';\nimport type { SpectrumDialogClose } from '@react-types/dialog';\nimport type { StyleProps } from '@react-types/shared';\nimport type { IconDefinition } from '@fortawesome/fontawesome-common-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ActionButton, DialogTrigger, Icon, Text } from '../spectrum';\nimport { Tooltip } from '../popper';\n\nexport interface ActionButtonDialogTriggerProps extends StyleProps {\n icon: IconDefinition;\n isQuiet?: boolean;\n labelText?: string;\n ariaLabel?: string;\n tooltip?: string;\n children: SpectrumDialogClose | ReactElement;\n onOpenChange?: (isOpen: boolean) => void;\n}\n\n/**\n * Dialog trigger based on an ActionButton.\n */\nexport function ActionButtonDialogTrigger({\n ariaLabel,\n icon,\n isQuiet,\n labelText,\n children,\n onOpenChange,\n tooltip,\n ...styleProps\n}: ActionButtonDialogTriggerProps): JSX.Element {\n const iconClassName =\n labelText == null && tooltip != null\n ? 'action-button-icon-with-tooltip'\n : undefined;\n\n return (\n <DialogTrigger type=\"popover\" onOpenChange={onOpenChange}>\n <ActionButton\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...styleProps}\n aria-label={ariaLabel ?? labelText}\n isQuiet={isQuiet}\n >\n <Icon UNSAFE_className={iconClassName}>\n <FontAwesomeIcon icon={icon} />\n </Icon>\n {labelText == null ? null : <Text>{labelText}</Text>}\n {tooltip == null ? null : <Tooltip>{tooltip}</Tooltip>}\n </ActionButton>\n {children}\n </DialogTrigger>\n );\n}\n\nexport default ActionButtonDialogTrigger;\n"],"mappings":";;;;;;;;AAIA,SAASA,eAAe,QAAQ,gCAAgC;AAAC,SACxDC,YAAY,EAAEC,aAAa,EAAEC,IAAI,EAAEC,IAAI;AAAA,SACvCC,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAYhB;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CAAAC,IAAA,EASO;EAAA,IATN;MACxCC,SAAS;MACTC,IAAI;MACJC,OAAO;MACPC,SAAS;MACTC,QAAQ;MACRC,YAAY;MACZC;IAE8B,CAAC,GAAAP,IAAA;IAD5BQ,UAAU,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAEb,IAAMC,aAAa,GACjBP,SAAS,IAAI,IAAI,IAAIG,OAAO,IAAI,IAAI,GAChC,iCAAiC,GACjCK,SAAS;EAEf,oBACEd,KAAA,CAACP,aAAa;IAACsB,IAAI,EAAC,SAAS;IAACP,YAAY,EAAEA,YAAa;IAAAD,QAAA,gBACvDP,KAAA,CAACR;IACC;IAAA,EAAAwB,aAAA,CAAAA,aAAA,KACIN,UAAU;MACd,cAAYP,SAAS,aAATA,SAAS,cAATA,SAAS,GAAIG,SAAU;MACnCD,OAAO,EAAEA,OAAQ;MAAAE,QAAA,gBAEjBT,IAAA,CAACJ,IAAI;QAACuB,gBAAgB,EAAEJ,aAAc;QAAAN,QAAA,eACpCT,IAAA,CAACP,eAAe;UAACa,IAAI,EAAEA;QAAK,CAAE;MAAC,CAC3B,CAAC,EACNE,SAAS,IAAI,IAAI,GAAG,IAAI,gBAAGR,IAAA,CAACH,IAAI;QAAAY,QAAA,EAAED;MAAS,CAAO,CAAC,EACnDG,OAAO,IAAI,IAAI,GAAG,IAAI,gBAAGX,IAAA,CAACF,OAAO;QAAAW,QAAA,EAAEE;MAAO,CAAU,CAAC;IAAA,EAC1C,CAAC,EACdF,QAAQ;EAAA,CACI,CAAC;AAEpB;AAEA,eAAeN,yBAAyB","ignoreList":[]}
@@ -8,8 +8,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
8
8
  import { useFormWithDetachedSubmitButton } from '@deephaven/react-hooks';
9
9
  import { SpectrumButton, ButtonGroup, Content, Dialog, Divider, Form, Heading } from "../spectrum/index.js";
10
10
  import styles from "../SpectrumComponent.module.css";
11
- import { jsx as _jsx } from "react/jsx-runtime";
12
- import { jsxs as _jsxs } from "react/jsx-runtime";
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
12
  export function ConfirmationDialog(_ref) {
14
13
  var {
15
14
  heading,
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmationDialog.js","names":["useFormWithDetachedSubmitButton","SpectrumButton","ButtonGroup","Content","Dialog","Divider","Form","Heading","styles","jsx","_jsx","jsxs","_jsxs","ConfirmationDialog","_ref","heading","confirmationButtonLabel","children","onCancel","onConfirm","formProps","submitButtonProps","level","UNSAFE_className","spectrumDialogComponentHeading","_objectSpread","variant","onPress","style","type"],"sources":["../../src/dialogs/ConfirmationDialog.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport { type ReactElement, type ReactNode } from 'react';\nimport type { SpectrumLabelableProps } from '@react-types/shared';\nimport { useFormWithDetachedSubmitButton } from '@deephaven/react-hooks';\nimport {\n SpectrumButton,\n ButtonGroup,\n Content,\n Dialog,\n Divider,\n Form,\n Heading,\n} from '../spectrum';\nimport styles from '../SpectrumComponent.module.scss';\n\nexport interface ConfirmationDialogProps {\n heading: ReactNode;\n confirmationButtonLabel: string;\n children:\n | ReactElement<SpectrumLabelableProps>\n | ReactElement<SpectrumLabelableProps>[];\n onCancel: () => void;\n onConfirm: () => void;\n}\n\nexport function ConfirmationDialog({\n heading,\n confirmationButtonLabel,\n children,\n onCancel,\n onConfirm,\n}: ConfirmationDialogProps): JSX.Element {\n const { formProps, submitButtonProps } = useFormWithDetachedSubmitButton();\n\n return (\n <Dialog>\n <Heading\n level={3}\n UNSAFE_className={styles.spectrumDialogComponentHeading}\n >\n {heading}\n </Heading>\n <Divider />\n <Content>\n <Form\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...formProps}\n >\n {children}\n </Form>\n </Content>\n <ButtonGroup>\n <SpectrumButton variant=\"secondary\" onPress={onCancel}>\n Cancel\n </SpectrumButton>\n <SpectrumButton\n {...submitButtonProps}\n // eslint-disable-next-line react/style-prop-object\n style=\"fill\"\n variant=\"negative\"\n onPress={onConfirm}\n type=\"submit\"\n >\n {confirmationButtonLabel}\n </SpectrumButton>\n </ButtonGroup>\n </Dialog>\n );\n}\n\nexport default ConfirmationDialog;\n"],"mappings":";;;;;AAAA;;AAGA,SAASA,+BAA+B,QAAQ,wBAAwB;AAAC,SAEvEC,cAAc,EACdC,WAAW,EACXC,OAAO,EACPC,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,OAAO;AAAA,OAEFC,MAAM;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAYb,OAAO,SAASC,kBAAkBA,CAAAC,IAAA,EAMO;EAAA,IANN;IACjCC,OAAO;IACPC,uBAAuB;IACvBC,QAAQ;IACRC,QAAQ;IACRC;EACuB,CAAC,GAAAL,IAAA;EACxB,IAAM;IAAEM,SAAS;IAAEC;EAAkB,CAAC,GAAGrB,+BAA+B,CAAC,CAAC;EAE1E,oBACEY,KAAA,CAACR,MAAM;IAAAa,QAAA,gBACLP,IAAA,CAACH,OAAO;MACNe,KAAK,EAAE,CAAE;MACTC,gBAAgB,EAAEf,MAAM,CAACgB,8BAA+B;MAAAP,QAAA,EAEvDF;IAAO,CACD,CAAC,eACVL,IAAA,CAACL,OAAO,IAAE,CAAC,eACXK,IAAA,CAACP,OAAO;MAAAc,QAAA,eACNP,IAAA,CAACJ;MACC;MAAA,EAAAmB,aAAA,CAAAA,aAAA,KACIL,SAAS;QAAAH,QAAA,EAEZA;MAAQ,EACL;IAAC,CACA,CAAC,eACVL,KAAA,CAACV,WAAW;MAAAe,QAAA,gBACVP,IAAA,CAACT,cAAc;QAACyB,OAAO,EAAC,WAAW;QAACC,OAAO,EAAET,QAAS;QAAAD,QAAA,EAAC;MAEvD,CAAgB,CAAC,eACjBP,IAAA,CAACT,cAAc,EAAAwB,aAAA,CAAAA,aAAA,KACTJ,iBAAiB;QACrB;QACAO,KAAK,EAAC,MAAM;QACZF,OAAO,EAAC,UAAU;QAClBC,OAAO,EAAER,SAAU;QACnBU,IAAI,EAAC,QAAQ;QAAAZ,QAAA,EAEZD;MAAuB,EACV,CAAC;IAAA,CACN,CAAC;EAAA,CACR,CAAC;AAEb;AAEA,eAAeH,kBAAkB"}
1
+ {"version":3,"file":"ConfirmationDialog.js","names":["useFormWithDetachedSubmitButton","SpectrumButton","ButtonGroup","Content","Dialog","Divider","Form","Heading","styles","jsx","_jsx","jsxs","_jsxs","ConfirmationDialog","_ref","heading","confirmationButtonLabel","children","onCancel","onConfirm","formProps","submitButtonProps","level","UNSAFE_className","spectrumDialogComponentHeading","_objectSpread","variant","onPress","style","type"],"sources":["../../src/dialogs/ConfirmationDialog.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport { type ReactElement, type ReactNode } from 'react';\nimport type { SpectrumLabelableProps } from '@react-types/shared';\nimport { useFormWithDetachedSubmitButton } from '@deephaven/react-hooks';\nimport {\n SpectrumButton,\n ButtonGroup,\n Content,\n Dialog,\n Divider,\n Form,\n Heading,\n} from '../spectrum';\nimport styles from '../SpectrumComponent.module.scss';\n\nexport interface ConfirmationDialogProps {\n heading: ReactNode;\n confirmationButtonLabel: string;\n children:\n | ReactElement<SpectrumLabelableProps>\n | ReactElement<SpectrumLabelableProps>[];\n onCancel: () => void;\n onConfirm: () => void;\n}\n\nexport function ConfirmationDialog({\n heading,\n confirmationButtonLabel,\n children,\n onCancel,\n onConfirm,\n}: ConfirmationDialogProps): JSX.Element {\n const { formProps, submitButtonProps } = useFormWithDetachedSubmitButton();\n\n return (\n <Dialog>\n <Heading\n level={3}\n UNSAFE_className={styles.spectrumDialogComponentHeading}\n >\n {heading}\n </Heading>\n <Divider />\n <Content>\n <Form\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...formProps}\n >\n {children}\n </Form>\n </Content>\n <ButtonGroup>\n <SpectrumButton variant=\"secondary\" onPress={onCancel}>\n Cancel\n </SpectrumButton>\n <SpectrumButton\n {...submitButtonProps}\n // eslint-disable-next-line react/style-prop-object\n style=\"fill\"\n variant=\"negative\"\n onPress={onConfirm}\n type=\"submit\"\n >\n {confirmationButtonLabel}\n </SpectrumButton>\n </ButtonGroup>\n </Dialog>\n );\n}\n\nexport default ConfirmationDialog;\n"],"mappings":";;;;;AAAA;;AAGA,SAASA,+BAA+B,QAAQ,wBAAwB;AAAC,SAEvEC,cAAc,EACdC,WAAW,EACXC,OAAO,EACPC,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,OAAO;AAAA,OAEFC,MAAM;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAYb,OAAO,SAASC,kBAAkBA,CAAAC,IAAA,EAMO;EAAA,IANN;IACjCC,OAAO;IACPC,uBAAuB;IACvBC,QAAQ;IACRC,QAAQ;IACRC;EACuB,CAAC,GAAAL,IAAA;EACxB,IAAM;IAAEM,SAAS;IAAEC;EAAkB,CAAC,GAAGrB,+BAA+B,CAAC,CAAC;EAE1E,oBACEY,KAAA,CAACR,MAAM;IAAAa,QAAA,gBACLP,IAAA,CAACH,OAAO;MACNe,KAAK,EAAE,CAAE;MACTC,gBAAgB,EAAEf,MAAM,CAACgB,8BAA+B;MAAAP,QAAA,EAEvDF;IAAO,CACD,CAAC,eACVL,IAAA,CAACL,OAAO,IAAE,CAAC,eACXK,IAAA,CAACP,OAAO;MAAAc,QAAA,eACNP,IAAA,CAACJ;MACC;MAAA,EAAAmB,aAAA,CAAAA,aAAA,KACIL,SAAS;QAAAH,QAAA,EAEZA;MAAQ,EACL;IAAC,CACA,CAAC,eACVL,KAAA,CAACV,WAAW;MAAAe,QAAA,gBACVP,IAAA,CAACT,cAAc;QAACyB,OAAO,EAAC,WAAW;QAACC,OAAO,EAAET,QAAS;QAAAD,QAAA,EAAC;MAEvD,CAAgB,CAAC,eACjBP,IAAA,CAACT,cAAc,EAAAwB,aAAA,CAAAA,aAAA,KACTJ,iBAAiB;QACrB;QACAO,KAAK,EAAC,MAAM;QACZF,OAAO,EAAC,UAAU;QAClBC,OAAO,EAAER,SAAU;QACnBU,IAAI,EAAC,QAAQ;QAAAZ,QAAA,EAEZD;MAAuB,EACV,CAAC;IAAA,CACN,CAAC;EAAA,CACR,CAAC;AAEb;AAEA,eAAeH,kBAAkB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/dialogs/index.ts"],"sourcesContent":["export * from './ActionButtonDialogTrigger';\nexport * from './ConfirmationDialog';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/dialogs/index.ts"],"sourcesContent":["export * from './ActionButtonDialogTrigger';\nexport * from './ConfirmationDialog';\n"],"mappings":"","ignoreList":[]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","AutoCompleteInput","AutoResizeTextarea","BasicModal","CardFlip","Collapse","Checkbox","CopyButton","CustomTimeSelect","DateInput","DebouncedSearchInput","DraggableItemList","DragUtils","EditableItemList","ErrorView","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RandomAreaPlotAnimation","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch"],"sources":["../src/index.ts"],"sourcesContent":["export type { Range } from '@deephaven/utils';\nexport * from './actions';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport * from './Button';\nexport * from './BulkActionBar';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport * from './ComponentUtils';\nexport { default as CopyButton } from './CopyButton';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport * from './DateTimeInput';\nexport { default as DateInput } from './DateInput';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport * from './dialogs';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as EditableItemList } from './EditableItemList';\nexport * from './ErrorBoundary';\nexport { default as ErrorView } from './ErrorView';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './MaskedInputUtils';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RandomAreaPlotAnimation } from './RandomAreaPlotAnimation';\nexport * from './SearchableCombobox';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport * from './spectrum';\nexport * from './SplitButtonGroup';\nexport * from './TableViewEmptyState';\nexport * from './TextWithTooltip';\nexport * from './theme';\nexport * from './transitions';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport * from './UIConstants';\nexport { default as UISwitch } from './UISwitch';\nexport * from './XComponent';\nexport * from './XComponentMap';\n"],"mappings":";SAESA,OAAO,IAAIC,iBAAiB;AAAA,SAC5BD,OAAO,IAAIE,kBAAkB;AAAA,SAC7BF,OAAO,IAAIG,UAAU;AAAA;AAAA;AAAA,SAGrBH,OAAO,IAAII,QAAQ;AAAA;AAAA,SAEnBJ,OAAO,IAAIK,QAAQ;AAAA,SACnBL,OAAO,IAAIM,QAAQ;AAAA;AAAA,SAEnBN,OAAO,IAAIO,UAAU;AAAA,SACrBP,OAAO,IAAIQ,gBAAgB;AAAA;AAAA,SAE3BR,OAAO,IAAIS,SAAS;AAAA,SACpBT,OAAO,IAAIU,oBAAoB;AAAA;AAAA,SAE/BV,OAAO,IAAIW,iBAAiB;AAAA;AAAA,SAE5BX,OAAO,IAAIY,SAAS;AAAA,SACpBZ,OAAO,IAAIa,gBAAgB;AAAA;AAAA,SAE3Bb,OAAO,IAAIc,SAAS;AAAA,SACpBd,OAAO,IAAIe,wBAAwB;AAAA;AAAA;AAAA,SAGnCf,OAAO,IAAIgB,YAAY;AAAA,SACvBhB,OAAO,IAAIiB,cAAc;AAAA,SACzBjB,OAAO,IAAIkB,cAAc;AAAA,SACzBlB,OAAO,IAAImB,YAAY;AAAA;AAAA,SAEvBnB,OAAO,IAAIoB,WAAW;AAAA;AAAA;AAAA;AAAA,SAItBpB,OAAO,IAAIqB,MAAM;AAAA;AAAA;AAAA,SAGjBrB,OAAO,IAAIsB,uBAAuB;AAAA;AAAA,SAElCtB,OAAO,IAAIuB,MAAM;AAAA,SACjBvB,OAAO,IAAIwB,WAAW;AAAA,SACtBxB,OAAO,IAAIyB,eAAe;AAAA;AAAA;AAAA,SAG1BzB,OAAO,IAAI0B,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAOzB1B,OAAO,IAAI2B,WAAW;AAAA,SACtB3B,OAAO,IAAI4B,SAAS;AAAA,SACpB5B,OAAO,IAAI6B,UAAU;AAAA,SACrB7B,OAAO,IAAI8B,iBAAiB;AAAA;AAAA,SAE5B9B,OAAO,IAAI+B,QAAQ;AAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":["default","AutoCompleteInput","AutoResizeTextarea","BasicModal","CardFlip","Collapse","Checkbox","CopyButton","CustomTimeSelect","DateInput","DebouncedSearchInput","DraggableItemList","DragUtils","EditableItemList","ErrorView","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RandomAreaPlotAnimation","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch"],"sources":["../src/index.ts"],"sourcesContent":["export type { Range } from '@deephaven/utils';\nexport * from './actions';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport * from './Button';\nexport * from './BulkActionBar';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport * from './ComponentUtils';\nexport { default as CopyButton } from './CopyButton';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport * from './DateTimeInput';\nexport { default as DateInput } from './DateInput';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport * from './dialogs';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as EditableItemList } from './EditableItemList';\nexport * from './ErrorBoundary';\nexport { default as ErrorView } from './ErrorView';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './MaskedInputUtils';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RandomAreaPlotAnimation } from './RandomAreaPlotAnimation';\nexport * from './SearchableCombobox';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport * from './spectrum';\nexport * from './SplitButtonGroup';\nexport * from './TableViewEmptyState';\nexport * from './TextWithTooltip';\nexport * from './theme';\nexport * from './transitions';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport * from './UIConstants';\nexport { default as UISwitch } from './UISwitch';\nexport * from './XComponent';\nexport * from './XComponentMap';\n"],"mappings":";SAESA,OAAO,IAAIC,iBAAiB;AAAA,SAC5BD,OAAO,IAAIE,kBAAkB;AAAA,SAC7BF,OAAO,IAAIG,UAAU;AAAA;AAAA;AAAA,SAGrBH,OAAO,IAAII,QAAQ;AAAA;AAAA,SAEnBJ,OAAO,IAAIK,QAAQ;AAAA,SACnBL,OAAO,IAAIM,QAAQ;AAAA;AAAA,SAEnBN,OAAO,IAAIO,UAAU;AAAA,SACrBP,OAAO,IAAIQ,gBAAgB;AAAA;AAAA,SAE3BR,OAAO,IAAIS,SAAS;AAAA,SACpBT,OAAO,IAAIU,oBAAoB;AAAA;AAAA,SAE/BV,OAAO,IAAIW,iBAAiB;AAAA;AAAA,SAE5BX,OAAO,IAAIY,SAAS;AAAA,SACpBZ,OAAO,IAAIa,gBAAgB;AAAA;AAAA,SAE3Bb,OAAO,IAAIc,SAAS;AAAA,SACpBd,OAAO,IAAIe,wBAAwB;AAAA;AAAA;AAAA,SAGnCf,OAAO,IAAIgB,YAAY;AAAA,SACvBhB,OAAO,IAAIiB,cAAc;AAAA,SACzBjB,OAAO,IAAIkB,cAAc;AAAA,SACzBlB,OAAO,IAAImB,YAAY;AAAA;AAAA,SAEvBnB,OAAO,IAAIoB,WAAW;AAAA;AAAA;AAAA;AAAA,SAItBpB,OAAO,IAAIqB,MAAM;AAAA;AAAA;AAAA,SAGjBrB,OAAO,IAAIsB,uBAAuB;AAAA;AAAA,SAElCtB,OAAO,IAAIuB,MAAM;AAAA,SACjBvB,OAAO,IAAIwB,WAAW;AAAA,SACtBxB,OAAO,IAAIyB,eAAe;AAAA;AAAA;AAAA,SAG1BzB,OAAO,IAAI0B,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAOzB1B,OAAO,IAAI2B,WAAW;AAAA,SACtB3B,OAAO,IAAI4B,SAAS;AAAA,SACpB5B,OAAO,IAAI6B,UAAU;AAAA,SACrB7B,OAAO,IAAI8B,iBAAiB;AAAA;AAAA,SAE5B9B,OAAO,IAAI+B,QAAQ;AAAA;AAAA","ignoreList":[]}
@@ -90,7 +90,7 @@ class DropdownMenu extends PureComponent {
90
90
  }
91
91
  closeMenu() {
92
92
  var _this$popper$current;
93
- (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 ? void 0 : _this$popper$current.hide();
93
+ (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 || _this$popper$current.hide();
94
94
  }
95
95
  openMenu() {
96
96
  if (this.popper.current && !this.isOpen) {
@@ -100,7 +100,7 @@ class DropdownMenu extends PureComponent {
100
100
  }
101
101
  scheduleUpdate() {
102
102
  var _this$popper$current2;
103
- (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.scheduleUpdate();
103
+ (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 || _this$popper$current2.scheduleUpdate();
104
104
  }
105
105
  handleClick(e) {
106
106
  e.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.js","names":["React","PureComponent","classNames","Popper","Menu","jsx","_jsx","DropdownMenu","constructor","props","_defineProperty","handleClick","bind","handleCloseMenu","handleExited","container","createRef","parent","popper","isOpen","componentDidMount","isShown","_this$container$curre","current","parentElement","addEventListener","openMenu","componentDidUpdate","prevProps","window","requestAnimationFrame","closeMenu","componentWillUnmount","removeEventListener","_this$popper$current","hide","show","scheduleUpdate","_this$popper$current2","e","preventDefault","stopPropagation","onMenuClosed","render","actions","onMenuOpened","popperClassName","dataTestId","menuStyle","options","popperOptions","_objectSpread","placement","separateKeyboardMouse","className","ref","children","onExited","closeOnBlur","interactive","undefined"],"sources":["../../src/menu-actions/DropdownMenu.tsx"],"sourcesContent":["/**\n * Add dropdown menu that you add onto any component.\n *\n * Similar to the context-actions package, accepts list of actions to create a dropdown menu.\n * Note: Does not support nested sub-menus.\n *\n * Usage:\n * let actions = [{\n * title: 'My Action',\n * action: () => { alert('My Action Clicked!') }\n * icon: faPrint, // Limited to FontAwesome icons for now.\n * shortcut: Shortcut, // Shortcut class instance\n * group: ContextActions.groups.default, // What group to group the context action with\n * order: null // Int where to order within group\n * }];\n *\n * Usage:\n * 1. Auto bind click to open event to parent\n * <div>\n * Click in this container\n * <DropdownMenu actions={actions}/>\n * </div>\n *\n * 2. Control via prop\n * <div>\n * DropdownMenu will not react to the click event if isShown prop is used\n * <DropdownMenu actions={actions} isShown={isShown} />\n * </div>\n *\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { type PopperOptions } from 'popper.js';\nimport { Popper } from '../popper';\nimport Menu, { type MenuOptions } from './Menu';\nimport { type ContextAction } from '../context-actions/ContextActionUtils';\nimport './DropdownMenu.scss';\n\nexport type DropdownAction = ContextAction & { actions?: never };\n\nexport type DropdownActions =\n | (() => DropdownAction[])\n | DropdownAction\n | DropdownAction[];\n\ntype DropdownMenuProps = {\n // Override to prevent nested lists\n actions: DropdownActions;\n isShown: boolean | null;\n onMenuClosed: () => void;\n onMenuOpened: () => void;\n options: MenuOptions;\n popperOptions: PopperOptions;\n popperClassName: string;\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n};\n\nclass DropdownMenu extends PureComponent<DropdownMenuProps> {\n static defaultProps = {\n isShown: null,\n onMenuClosed(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n options: {},\n popperOptions: {},\n popperClassName: '',\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n constructor(props: DropdownMenuProps) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n this.handleExited = this.handleExited.bind(this);\n\n this.container = React.createRef();\n this.parent = null;\n this.popper = React.createRef();\n\n this.isOpen = false;\n }\n\n componentDidMount(): void {\n const { isShown } = this.props;\n\n if (isShown === null) {\n if (this.container.current?.parentElement) {\n this.parent = this.container.current.parentElement;\n this.parent.addEventListener('click', this.handleClick);\n }\n } else if (isShown) {\n this.openMenu();\n }\n }\n\n componentDidUpdate(prevProps: DropdownMenuProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown !== null && isShown) {\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.openMenu();\n });\n } else {\n this.closeMenu();\n }\n }\n }\n\n componentWillUnmount(): void {\n if (this.parent) {\n this.parent.removeEventListener('click', this.handleClick);\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n parent: Element | null;\n\n popper: React.RefObject<Popper>;\n\n isOpen: boolean;\n\n closeMenu(): void {\n this.popper.current?.hide();\n }\n\n openMenu(): void {\n if (this.popper.current && !this.isOpen) {\n this.popper.current.show();\n this.isOpen = true;\n }\n }\n\n scheduleUpdate(): void {\n this.popper.current?.scheduleUpdate();\n }\n\n handleClick(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n\n this.openMenu();\n }\n\n handleCloseMenu(): void {\n this.closeMenu();\n }\n\n handleExited(): void {\n this.isOpen = false;\n\n const { onMenuClosed } = this.props;\n onMenuClosed();\n }\n\n render(): JSX.Element {\n const {\n actions,\n onMenuOpened,\n popperClassName,\n 'data-testid': dataTestId,\n } = this.props;\n const { menuStyle } = this.props;\n let { options, popperOptions } = this.props;\n popperOptions = { placement: 'bottom', ...popperOptions };\n options = {\n separateKeyboardMouse: true,\n ...options,\n };\n return (\n <div\n className=\"menu-actions-listener\"\n ref={this.container}\n data-testid={dataTestId}\n >\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('menu-popper', popperClassName)}\n onExited={this.handleExited}\n closeOnBlur\n interactive\n >\n <Menu\n actions={actions}\n closeMenu={this.handleCloseMenu}\n onMenuOpened={onMenuOpened}\n options={options}\n menuStyle={menuStyle}\n />\n </Popper>\n </div>\n );\n }\n}\n\nexport default DropdownMenu;\n"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenu.js","names":["React","PureComponent","classNames","Popper","Menu","jsx","_jsx","DropdownMenu","constructor","props","_defineProperty","handleClick","bind","handleCloseMenu","handleExited","container","createRef","parent","popper","isOpen","componentDidMount","isShown","_this$container$curre","current","parentElement","addEventListener","openMenu","componentDidUpdate","prevProps","window","requestAnimationFrame","closeMenu","componentWillUnmount","removeEventListener","_this$popper$current","hide","show","scheduleUpdate","_this$popper$current2","e","preventDefault","stopPropagation","onMenuClosed","render","actions","onMenuOpened","popperClassName","dataTestId","menuStyle","options","popperOptions","_objectSpread","placement","separateKeyboardMouse","className","ref","children","onExited","closeOnBlur","interactive","undefined"],"sources":["../../src/menu-actions/DropdownMenu.tsx"],"sourcesContent":["/**\n * Add dropdown menu that you add onto any component.\n *\n * Similar to the context-actions package, accepts list of actions to create a dropdown menu.\n * Note: Does not support nested sub-menus.\n *\n * Usage:\n * let actions = [{\n * title: 'My Action',\n * action: () => { alert('My Action Clicked!') }\n * icon: faPrint, // Limited to FontAwesome icons for now.\n * shortcut: Shortcut, // Shortcut class instance\n * group: ContextActions.groups.default, // What group to group the context action with\n * order: null // Int where to order within group\n * }];\n *\n * Usage:\n * 1. Auto bind click to open event to parent\n * <div>\n * Click in this container\n * <DropdownMenu actions={actions}/>\n * </div>\n *\n * 2. Control via prop\n * <div>\n * DropdownMenu will not react to the click event if isShown prop is used\n * <DropdownMenu actions={actions} isShown={isShown} />\n * </div>\n *\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { type PopperOptions } from 'popper.js';\nimport { Popper } from '../popper';\nimport Menu, { type MenuOptions } from './Menu';\nimport { type ContextAction } from '../context-actions/ContextActionUtils';\nimport './DropdownMenu.scss';\n\nexport type DropdownAction = ContextAction & { actions?: never };\n\nexport type DropdownActions =\n | (() => DropdownAction[])\n | DropdownAction\n | DropdownAction[];\n\ntype DropdownMenuProps = {\n // Override to prevent nested lists\n actions: DropdownActions;\n isShown: boolean | null;\n onMenuClosed: () => void;\n onMenuOpened: () => void;\n options: MenuOptions;\n popperOptions: PopperOptions;\n popperClassName: string;\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n};\n\nclass DropdownMenu extends PureComponent<DropdownMenuProps> {\n static defaultProps = {\n isShown: null,\n onMenuClosed(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n options: {},\n popperOptions: {},\n popperClassName: '',\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n constructor(props: DropdownMenuProps) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n this.handleExited = this.handleExited.bind(this);\n\n this.container = React.createRef();\n this.parent = null;\n this.popper = React.createRef();\n\n this.isOpen = false;\n }\n\n componentDidMount(): void {\n const { isShown } = this.props;\n\n if (isShown === null) {\n if (this.container.current?.parentElement) {\n this.parent = this.container.current.parentElement;\n this.parent.addEventListener('click', this.handleClick);\n }\n } else if (isShown) {\n this.openMenu();\n }\n }\n\n componentDidUpdate(prevProps: DropdownMenuProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown !== null && isShown) {\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.openMenu();\n });\n } else {\n this.closeMenu();\n }\n }\n }\n\n componentWillUnmount(): void {\n if (this.parent) {\n this.parent.removeEventListener('click', this.handleClick);\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n parent: Element | null;\n\n popper: React.RefObject<Popper>;\n\n isOpen: boolean;\n\n closeMenu(): void {\n this.popper.current?.hide();\n }\n\n openMenu(): void {\n if (this.popper.current && !this.isOpen) {\n this.popper.current.show();\n this.isOpen = true;\n }\n }\n\n scheduleUpdate(): void {\n this.popper.current?.scheduleUpdate();\n }\n\n handleClick(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n\n this.openMenu();\n }\n\n handleCloseMenu(): void {\n this.closeMenu();\n }\n\n handleExited(): void {\n this.isOpen = false;\n\n const { onMenuClosed } = this.props;\n onMenuClosed();\n }\n\n render(): JSX.Element {\n const {\n actions,\n onMenuOpened,\n popperClassName,\n 'data-testid': dataTestId,\n } = this.props;\n const { menuStyle } = this.props;\n let { options, popperOptions } = this.props;\n popperOptions = { placement: 'bottom', ...popperOptions };\n options = {\n separateKeyboardMouse: true,\n ...options,\n };\n return (\n <div\n className=\"menu-actions-listener\"\n ref={this.container}\n data-testid={dataTestId}\n >\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('menu-popper', popperClassName)}\n onExited={this.handleExited}\n closeOnBlur\n interactive\n >\n <Menu\n actions={actions}\n closeMenu={this.handleCloseMenu}\n onMenuOpened={onMenuOpened}\n options={options}\n menuStyle={menuStyle}\n />\n </Popper>\n </div>\n );\n }\n}\n\nexport default DropdownMenu;\n"],"mappings":"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","ignoreList":[]}
@@ -47,7 +47,7 @@ class Menu extends PureComponent {
47
47
  var _this$container$curre;
48
48
  // set initial focus to container so keyboard navigation works
49
49
  // components can still override focus in onMenuOpened callback
50
- (_this$container$curre = this.container.current) === null || _this$container$curre === void 0 ? void 0 : _this$container$curre.focus();
50
+ (_this$container$curre = this.container.current) === null || _this$container$curre === void 0 || _this$container$curre.focus();
51
51
  var {
52
52
  onMenuOpened
53
53
  } = this.props;
@@ -131,11 +131,9 @@ class Menu extends PureComponent {
131
131
  if (e.key === 'Escape') {
132
132
  newFocus = null;
133
133
  } else if (e.key === 'ArrowUp' || e.key === 'Tab' && e.shiftKey === true) {
134
- var _newFocus;
135
- newFocus = ContextActionUtils.getNextMenuItem((_newFocus = newFocus) !== null && _newFocus !== void 0 ? _newFocus : 0, -1, menuItems);
134
+ newFocus = ContextActionUtils.getNextMenuItem(newFocus !== null && newFocus !== void 0 ? newFocus : 0, -1, menuItems);
136
135
  } else if (e.key === 'ArrowDown' || e.key === 'Tab' && e.shiftKey === false) {
137
- var _newFocus2;
138
- newFocus = ContextActionUtils.getNextMenuItem((_newFocus2 = newFocus) !== null && _newFocus2 !== void 0 ? _newFocus2 : 0, 1, menuItems);
136
+ newFocus = ContextActionUtils.getNextMenuItem(newFocus !== null && newFocus !== void 0 ? newFocus : 0, 1, menuItems);
139
137
  }
140
138
  if (oldFocus !== newFocus) {
141
139
  if (newFocus !== null) {
@@ -196,7 +194,7 @@ class Menu extends PureComponent {
196
194
  for (var i = 0; i < menuItems.length; i += 1) {
197
195
  var menuItem = menuItems[i];
198
196
  if (i > 0 && menuItem.group !== menuItems[i - 1].group) {
199
- menuItemElements.push( /*#__PURE__*/_jsx("hr", {}, "".concat(i, ".separator")));
197
+ menuItemElements.push(/*#__PURE__*/_jsx("hr", {}, "".concat(i, ".separator")));
200
198
  }
201
199
  var menuItemElement = /*#__PURE__*/_jsx(ContextMenuItem, {
202
200
  isKeyboardSelected: keyboardIndex === i,
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","names":["React","PureComponent","ContextActionUtils","ContextMenuItem","jsx","_jsx","Menu","constructor","props","_options$initialKeybo","_defineProperty","handleKeyDown","bind","handleMenuItemClick","handleMenuItemMouseMove","handleMouseLeave","handleCloseMenu","container","createRef","oldFocus","document","activeElement","rAF","options","keyboardIndex","initialKeyboardIndex","state","menuItems","mouseIndex","componentDidMount","initMenu","window","requestAnimationFrame","_this$container$curre","current","focus","onMenuOpened","componentDidUpdate","prevProps","actions","componentWillUnmount","cancelAnimationFrame","getKeyboardIndex","separateKeyboardMouse","undefined","getMouseIndex","setKeyboardIndex","index","setState","setMouseIndex","getMenuItems","length","sortActions","concat","e","newFocus","key","shiftKey","_newFocus","getNextMenuItem","_newFocus2","closeMenu","HTMLElement","preventDefault","stopPropagation","closeAll","arguments","onMenuClosed","menuItem","disabled","action","nativeEvent","focusIndex","indexOf","render","menuItemElements","dataTestId","i","group","push","menuItemElement","isKeyboardSelected","isMouseSelected","onMenuItemClick","onMenuItemMouseMove","onMenuItemContextMenu","menuStyle","className","style","_objectSpread","ref","onKeyDown","onMouseLeave","role","tabIndex","children"],"sources":["../../src/menu-actions/Menu.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport ContextActionUtils, {\n type ContextAction,\n} from '../context-actions/ContextActionUtils';\nimport ContextMenuItem from '../context-actions/ContextMenuItem';\n\nexport type MenuOptions = {\n doNotVerifyPosition?: boolean;\n separateKeyboardMouse?: boolean;\n initialKeyboardIndex?: number;\n};\n\ntype MenuProps = {\n actions: (() => ContextAction[]) | ContextAction | ContextAction[];\n closeMenu: (closeAll: boolean) => void;\n onMenuClosed: (menu: Menu) => void;\n onMenuOpened: (menu: Menu) => void;\n options: MenuOptions;\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n};\n\ntype MenuState = {\n menuItems: ContextAction[];\n keyboardIndex: number;\n mouseIndex: number;\n};\n\n/**\n * Do not use this class directly. Use DropdownMenu instead.\n *\n * Generates list from actions for use by DropdownMenu.\n * It has beem split from the context-actions component, due to divergering requirements,\n * but still re-uses styling from context-menu. Depending on how usage evolves, may get split further.\n *\n */\n\nclass Menu extends PureComponent<MenuProps, MenuState> {\n static defaultProps = {\n closeMenu(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n onMenuClosed(): void {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n constructor(props: MenuProps) {\n super(props);\n\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n\n this.container = React.createRef();\n this.oldFocus = document.activeElement;\n this.rAF = 0;\n\n const { options } = props;\n const keyboardIndex = options.initialKeyboardIndex ?? -1;\n this.state = {\n menuItems: [],\n keyboardIndex,\n mouseIndex: -1,\n };\n }\n\n componentDidMount(): void {\n this.initMenu();\n\n this.rAF = window.requestAnimationFrame(() => {\n // set initial focus to container so keyboard navigation works\n // components can still override focus in onMenuOpened callback\n this.container.current?.focus();\n const { onMenuOpened } = this.props;\n onMenuOpened(this);\n });\n }\n\n componentDidUpdate(prevProps: MenuProps): void {\n const { actions } = this.props;\n if (prevProps.actions !== actions) {\n this.initMenu();\n }\n }\n\n componentWillUnmount(): void {\n cancelAnimationFrame(this.rAF);\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n oldFocus: Element | null;\n\n rAF: number;\n\n getKeyboardIndex(): number | null {\n const { options } = this.props;\n if (\n options.separateKeyboardMouse !== undefined &&\n options.separateKeyboardMouse\n ) {\n const { keyboardIndex } = this.state;\n return keyboardIndex;\n }\n\n return this.getMouseIndex();\n }\n\n setKeyboardIndex(index: number): void {\n const { options } = this.props;\n if (\n options.separateKeyboardMouse !== undefined &&\n options.separateKeyboardMouse\n ) {\n this.setState({ keyboardIndex: index });\n } else {\n this.setMouseIndex(index);\n }\n }\n\n getMouseIndex(): number {\n const { mouseIndex } = this.state;\n return mouseIndex;\n }\n\n setMouseIndex(index: number): void {\n this.setState({ mouseIndex: index });\n }\n\n initMenu(): void {\n // cancel any pending close\n cancelAnimationFrame(this.rAF);\n\n this.setState({\n menuItems: [],\n });\n\n const { actions } = this.props;\n const menuItems = ContextActionUtils.getMenuItems(actions, false);\n\n if (menuItems.length > 0) {\n this.setState(state => ({\n menuItems: ContextActionUtils.sortActions(\n state.menuItems.concat(menuItems)\n ),\n }));\n }\n }\n\n handleKeyDown(e: React.KeyboardEvent): void {\n const { menuItems } = this.state;\n const oldFocus = this.getKeyboardIndex();\n let newFocus = oldFocus;\n\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus != null && oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n newFocus = null;\n } else if (\n e.key === 'ArrowUp' ||\n (e.key === 'Tab' && e.shiftKey === true)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n -1,\n menuItems\n );\n } else if (\n e.key === 'ArrowDown' ||\n (e.key === 'Tab' && e.shiftKey === false)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n 1,\n menuItems\n );\n }\n\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n closeMenu(closeAll = false): void {\n const { closeMenu, onMenuClosed } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n\n handleCloseMenu(): void {\n this.closeMenu();\n }\n\n handleMenuItemClick(menuItem: ContextAction, e: React.SyntheticEvent): void {\n e.preventDefault();\n e.stopPropagation();\n\n if (\n menuItem != null &&\n (menuItem.disabled === undefined || !menuItem.disabled) &&\n menuItem.action != null\n ) {\n menuItem.action(e.nativeEvent);\n this.closeMenu(true);\n }\n }\n\n handleMenuItemMouseMove(menuItem: ContextAction): void {\n const { menuItems } = this.state;\n const focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n }\n\n handleMouseLeave(): void {\n this.setMouseIndex(-1);\n }\n\n render(): JSX.Element {\n const menuItemElements = [];\n const { 'data-testid': dataTestId } = this.props;\n const { keyboardIndex, menuItems, mouseIndex } = this.state;\n for (let i = 0; i < menuItems.length; i += 1) {\n const menuItem = menuItems[i];\n\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push(<hr key={`${i}.separator`} />);\n }\n\n const menuItemElement = (\n <ContextMenuItem\n key={i}\n isKeyboardSelected={keyboardIndex === i}\n isMouseSelected={mouseIndex === i}\n menuItem={menuItem}\n closeMenu={this.handleCloseMenu}\n onMenuItemClick={this.handleMenuItemClick}\n onMenuItemMouseMove={this.handleMenuItemMouseMove}\n onMenuItemContextMenu={() => false}\n />\n );\n\n menuItemElements.push(menuItemElement);\n }\n\n const { menuStyle } = this.props;\n\n return (\n <div\n className=\"context-menu-container\"\n style={{ ...menuStyle }}\n ref={this.container}\n onKeyDown={this.handleKeyDown}\n onMouseLeave={this.handleMouseLeave}\n role=\"menuitem\"\n tabIndex={0}\n data-testid={dataTestId}\n >\n {menuItemElements}\n </div>\n );\n }\n}\n\nexport default Menu;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.js","names":["React","PureComponent","ContextActionUtils","ContextMenuItem","jsx","_jsx","Menu","constructor","props","_options$initialKeybo","_defineProperty","handleKeyDown","bind","handleMenuItemClick","handleMenuItemMouseMove","handleMouseLeave","handleCloseMenu","container","createRef","oldFocus","document","activeElement","rAF","options","keyboardIndex","initialKeyboardIndex","state","menuItems","mouseIndex","componentDidMount","initMenu","window","requestAnimationFrame","_this$container$curre","current","focus","onMenuOpened","componentDidUpdate","prevProps","actions","componentWillUnmount","cancelAnimationFrame","getKeyboardIndex","separateKeyboardMouse","undefined","getMouseIndex","setKeyboardIndex","index","setState","setMouseIndex","getMenuItems","length","sortActions","concat","e","newFocus","key","shiftKey","getNextMenuItem","closeMenu","HTMLElement","preventDefault","stopPropagation","closeAll","arguments","onMenuClosed","menuItem","disabled","action","nativeEvent","focusIndex","indexOf","render","menuItemElements","dataTestId","i","group","push","menuItemElement","isKeyboardSelected","isMouseSelected","onMenuItemClick","onMenuItemMouseMove","onMenuItemContextMenu","menuStyle","className","style","_objectSpread","ref","onKeyDown","onMouseLeave","role","tabIndex","children"],"sources":["../../src/menu-actions/Menu.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport ContextActionUtils, {\n type ContextAction,\n} from '../context-actions/ContextActionUtils';\nimport ContextMenuItem from '../context-actions/ContextMenuItem';\n\nexport type MenuOptions = {\n doNotVerifyPosition?: boolean;\n separateKeyboardMouse?: boolean;\n initialKeyboardIndex?: number;\n};\n\ntype MenuProps = {\n actions: (() => ContextAction[]) | ContextAction | ContextAction[];\n closeMenu: (closeAll: boolean) => void;\n onMenuClosed: (menu: Menu) => void;\n onMenuOpened: (menu: Menu) => void;\n options: MenuOptions;\n menuStyle: React.CSSProperties;\n 'data-testid'?: string;\n};\n\ntype MenuState = {\n menuItems: ContextAction[];\n keyboardIndex: number;\n mouseIndex: number;\n};\n\n/**\n * Do not use this class directly. Use DropdownMenu instead.\n *\n * Generates list from actions for use by DropdownMenu.\n * It has beem split from the context-actions component, due to divergering requirements,\n * but still re-uses styling from context-menu. Depending on how usage evolves, may get split further.\n *\n */\n\nclass Menu extends PureComponent<MenuProps, MenuState> {\n static defaultProps = {\n closeMenu(): void {\n // no-op\n },\n onMenuOpened(): void {\n // no-op\n },\n onMenuClosed(): void {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined,\n };\n\n constructor(props: MenuProps) {\n super(props);\n\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n\n this.container = React.createRef();\n this.oldFocus = document.activeElement;\n this.rAF = 0;\n\n const { options } = props;\n const keyboardIndex = options.initialKeyboardIndex ?? -1;\n this.state = {\n menuItems: [],\n keyboardIndex,\n mouseIndex: -1,\n };\n }\n\n componentDidMount(): void {\n this.initMenu();\n\n this.rAF = window.requestAnimationFrame(() => {\n // set initial focus to container so keyboard navigation works\n // components can still override focus in onMenuOpened callback\n this.container.current?.focus();\n const { onMenuOpened } = this.props;\n onMenuOpened(this);\n });\n }\n\n componentDidUpdate(prevProps: MenuProps): void {\n const { actions } = this.props;\n if (prevProps.actions !== actions) {\n this.initMenu();\n }\n }\n\n componentWillUnmount(): void {\n cancelAnimationFrame(this.rAF);\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n oldFocus: Element | null;\n\n rAF: number;\n\n getKeyboardIndex(): number | null {\n const { options } = this.props;\n if (\n options.separateKeyboardMouse !== undefined &&\n options.separateKeyboardMouse\n ) {\n const { keyboardIndex } = this.state;\n return keyboardIndex;\n }\n\n return this.getMouseIndex();\n }\n\n setKeyboardIndex(index: number): void {\n const { options } = this.props;\n if (\n options.separateKeyboardMouse !== undefined &&\n options.separateKeyboardMouse\n ) {\n this.setState({ keyboardIndex: index });\n } else {\n this.setMouseIndex(index);\n }\n }\n\n getMouseIndex(): number {\n const { mouseIndex } = this.state;\n return mouseIndex;\n }\n\n setMouseIndex(index: number): void {\n this.setState({ mouseIndex: index });\n }\n\n initMenu(): void {\n // cancel any pending close\n cancelAnimationFrame(this.rAF);\n\n this.setState({\n menuItems: [],\n });\n\n const { actions } = this.props;\n const menuItems = ContextActionUtils.getMenuItems(actions, false);\n\n if (menuItems.length > 0) {\n this.setState(state => ({\n menuItems: ContextActionUtils.sortActions(\n state.menuItems.concat(menuItems)\n ),\n }));\n }\n }\n\n handleKeyDown(e: React.KeyboardEvent): void {\n const { menuItems } = this.state;\n const oldFocus = this.getKeyboardIndex();\n let newFocus = oldFocus;\n\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus != null && oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n newFocus = null;\n } else if (\n e.key === 'ArrowUp' ||\n (e.key === 'Tab' && e.shiftKey === true)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n -1,\n menuItems\n );\n } else if (\n e.key === 'ArrowDown' ||\n (e.key === 'Tab' && e.shiftKey === false)\n ) {\n newFocus = ContextActionUtils.getNextMenuItem(\n newFocus ?? 0,\n 1,\n menuItems\n );\n }\n\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n closeMenu(closeAll = false): void {\n const { closeMenu, onMenuClosed } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n\n handleCloseMenu(): void {\n this.closeMenu();\n }\n\n handleMenuItemClick(menuItem: ContextAction, e: React.SyntheticEvent): void {\n e.preventDefault();\n e.stopPropagation();\n\n if (\n menuItem != null &&\n (menuItem.disabled === undefined || !menuItem.disabled) &&\n menuItem.action != null\n ) {\n menuItem.action(e.nativeEvent);\n this.closeMenu(true);\n }\n }\n\n handleMenuItemMouseMove(menuItem: ContextAction): void {\n const { menuItems } = this.state;\n const focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n }\n\n handleMouseLeave(): void {\n this.setMouseIndex(-1);\n }\n\n render(): JSX.Element {\n const menuItemElements = [];\n const { 'data-testid': dataTestId } = this.props;\n const { keyboardIndex, menuItems, mouseIndex } = this.state;\n for (let i = 0; i < menuItems.length; i += 1) {\n const menuItem = menuItems[i];\n\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push(<hr key={`${i}.separator`} />);\n }\n\n const menuItemElement = (\n <ContextMenuItem\n key={i}\n isKeyboardSelected={keyboardIndex === i}\n isMouseSelected={mouseIndex === i}\n menuItem={menuItem}\n closeMenu={this.handleCloseMenu}\n onMenuItemClick={this.handleMenuItemClick}\n onMenuItemMouseMove={this.handleMenuItemMouseMove}\n onMenuItemContextMenu={() => false}\n />\n );\n\n menuItemElements.push(menuItemElement);\n }\n\n const { menuStyle } = this.props;\n\n return (\n <div\n className=\"context-menu-container\"\n style={{ ...menuStyle }}\n ref={this.container}\n onKeyDown={this.handleKeyDown}\n onMouseLeave={this.handleMouseLeave}\n role=\"menuitem\"\n tabIndex={0}\n data-testid={dataTestId}\n >\n {menuItemElements}\n </div>\n );\n }\n}\n\nexport default Menu;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DropdownMenu"],"sources":["../../src/menu-actions/index.ts"],"sourcesContent":["import DropdownMenu from './DropdownMenu';\n\nexport default DropdownMenu;\nexport * from './DropdownMenu';\n"],"mappings":"OAAOA,YAAY;AAEnB,eAAeA,YAAY;AAAC"}
1
+ {"version":3,"file":"index.js","names":["DropdownMenu"],"sources":["../../src/menu-actions/index.ts"],"sourcesContent":["import DropdownMenu from './DropdownMenu';\n\nexport default DropdownMenu;\nexport * from './DropdownMenu';\n"],"mappings":"OAAOA,YAAY;AAEnB,eAAeA,YAAY;AAAC","ignoreList":[]}
@@ -1,8 +1,6 @@
1
1
  import React from 'react';
2
2
  import { useDebouncedValue } from '@deephaven/react-hooks';
3
- import { jsx as _jsx } from "react/jsx-runtime";
4
- import { Fragment as _Fragment } from "react/jsx-runtime";
5
- import { jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
6
4
  /**
7
5
  * Display a modal after a debounce time. Blocks the screen from interaction immediately,
8
6
  * but then waits the set debounce time before rendering the modal.