@deephaven/components 1.22.1 → 1.22.2-alpha-pivot-builder.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/AutoCompleteInput.js +41 -79
  2. package/dist/AutoCompleteInput.js.map +1 -1
  3. package/dist/AutoResizeTextarea.js +29 -13
  4. package/dist/AutoResizeTextarea.js.map +1 -1
  5. package/dist/BasicModal.js +17 -15
  6. package/dist/BasicModal.js.map +1 -1
  7. package/dist/BulkActionBar.js +3 -5
  8. package/dist/BulkActionBar.js.map +1 -1
  9. package/dist/Button.js +24 -25
  10. package/dist/Button.js.map +1 -1
  11. package/dist/CardFlip.js +4 -6
  12. package/dist/CardFlip.js.map +1 -1
  13. package/dist/Checkbox.js +22 -13
  14. package/dist/Checkbox.js.map +1 -1
  15. package/dist/Collapse.js +6 -9
  16. package/dist/Collapse.js.map +1 -1
  17. package/dist/CopyButton.js +14 -6
  18. package/dist/CopyButton.js.map +1 -1
  19. package/dist/CustomTimeSelect.js +49 -88
  20. package/dist/CustomTimeSelect.js.map +1 -1
  21. package/dist/DateInput.js +25 -10
  22. package/dist/DateInput.js.map +1 -1
  23. package/dist/DateInputUtils.js +1 -3
  24. package/dist/DateInputUtils.js.map +1 -1
  25. package/dist/DateTimeInput.js +28 -12
  26. package/dist/DateTimeInput.js.map +1 -1
  27. package/dist/DebouncedSearchInput.js +10 -19
  28. package/dist/DebouncedSearchInput.js.map +1 -1
  29. package/dist/DragUtils.js +15 -6
  30. package/dist/DragUtils.js.map +1 -1
  31. package/dist/DraggableItemList.js +42 -57
  32. package/dist/DraggableItemList.js.map +1 -1
  33. package/dist/EditableItemList.js +28 -13
  34. package/dist/EditableItemList.js.map +1 -1
  35. package/dist/ErrorBoundary.js +6 -11
  36. package/dist/ErrorBoundary.js.map +1 -1
  37. package/dist/ErrorView.js +20 -8
  38. package/dist/ErrorView.js.map +1 -1
  39. package/dist/HierarchicalCheckboxMenu.js +30 -28
  40. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  41. package/dist/ItemList.js +96 -168
  42. package/dist/ItemList.js.map +1 -1
  43. package/dist/ItemListItem.js +46 -60
  44. package/dist/ItemListItem.js.map +1 -1
  45. package/dist/LoadingOverlay.js +13 -9
  46. package/dist/LoadingOverlay.js.map +1 -1
  47. package/dist/LoadingSpinner.js +3 -4
  48. package/dist/LoadingSpinner.js.map +1 -1
  49. package/dist/MaskedInput.js +44 -41
  50. package/dist/MaskedInput.js.map +1 -1
  51. package/dist/MaskedInputUtils.js +1 -3
  52. package/dist/MaskedInputUtils.js.map +1 -1
  53. package/dist/Option.js +1 -3
  54. package/dist/Option.js.map +1 -1
  55. package/dist/RadioGroup.js +17 -9
  56. package/dist/RadioGroup.js.map +1 -1
  57. package/dist/RadioItem.js +25 -14
  58. package/dist/RadioItem.js.map +1 -1
  59. package/dist/RandomAreaPlotAnimation.js +17 -13
  60. package/dist/RandomAreaPlotAnimation.js.map +1 -1
  61. package/dist/SearchInput.js +13 -14
  62. package/dist/SearchInput.js.map +1 -1
  63. package/dist/SearchableCombobox.js +3 -5
  64. package/dist/SearchableCombobox.js.map +1 -1
  65. package/dist/Select.js +5 -7
  66. package/dist/Select.js.map +1 -1
  67. package/dist/SelectValueList.js +21 -30
  68. package/dist/SelectValueList.js.map +1 -1
  69. package/dist/SocketedButton.js +18 -17
  70. package/dist/SocketedButton.js.map +1 -1
  71. package/dist/SplitButtonGroup.js +4 -6
  72. package/dist/SplitButtonGroup.js.map +1 -1
  73. package/dist/TableViewEmptyState.js +14 -6
  74. package/dist/TableViewEmptyState.js.map +1 -1
  75. package/dist/TextWithTooltip.js +3 -4
  76. package/dist/TextWithTooltip.js.map +1 -1
  77. package/dist/TimeInput.js +29 -12
  78. package/dist/TimeInput.js.map +1 -1
  79. package/dist/TimeSlider.js +46 -38
  80. package/dist/TimeSlider.js.map +1 -1
  81. package/dist/ToastNotification.js +9 -10
  82. package/dist/ToastNotification.js.map +1 -1
  83. package/dist/UISwitch.js +8 -9
  84. package/dist/UISwitch.js.map +1 -1
  85. package/dist/actions/ConfirmActionButton.js +7 -9
  86. package/dist/actions/ConfirmActionButton.js.map +1 -1
  87. package/dist/actions/IconActionButton.js +3 -5
  88. package/dist/actions/IconActionButton.js.map +1 -1
  89. package/dist/context-actions/ContextActionUtils.js +1 -3
  90. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  91. package/dist/context-actions/ContextActions.js +8 -18
  92. package/dist/context-actions/ContextActions.js.map +1 -1
  93. package/dist/context-actions/ContextMenu.js +53 -89
  94. package/dist/context-actions/ContextMenu.js.map +1 -1
  95. package/dist/context-actions/ContextMenuItem.js +11 -11
  96. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  97. package/dist/context-actions/ContextMenuRoot.js +6 -11
  98. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  99. package/dist/context-actions/GlobalContextAction.js +2 -6
  100. package/dist/context-actions/GlobalContextAction.js.map +1 -1
  101. package/dist/context-actions/GlobalContextActions.js +4 -7
  102. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  103. package/dist/dialogs/ActionButtonDialogTrigger.js +7 -9
  104. package/dist/dialogs/ActionButtonDialogTrigger.js.map +1 -1
  105. package/dist/dialogs/ConfirmationDialog.js +8 -11
  106. package/dist/dialogs/ConfirmationDialog.js.map +1 -1
  107. package/dist/menu-actions/DropdownMenu.js +12 -22
  108. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  109. package/dist/menu-actions/Menu.js +19 -45
  110. package/dist/menu-actions/Menu.js.map +1 -1
  111. package/dist/modal/DebouncedModal.js +8 -9
  112. package/dist/modal/DebouncedModal.js.map +1 -1
  113. package/dist/modal/InfoModal.js +6 -7
  114. package/dist/modal/InfoModal.js.map +1 -1
  115. package/dist/modal/Modal.js +27 -15
  116. package/dist/modal/Modal.js.map +1 -1
  117. package/dist/modal/ModalBody.js +4 -6
  118. package/dist/modal/ModalBody.js.map +1 -1
  119. package/dist/modal/ModalFooter.js +3 -5
  120. package/dist/modal/ModalFooter.js.map +1 -1
  121. package/dist/modal/ModalHeader.js +7 -8
  122. package/dist/modal/ModalHeader.js.map +1 -1
  123. package/dist/navigation/DashboardList.js +17 -6
  124. package/dist/navigation/DashboardList.js.map +1 -1
  125. package/dist/navigation/Menu.js +4 -5
  126. package/dist/navigation/Menu.js.map +1 -1
  127. package/dist/navigation/MenuItem.js +7 -10
  128. package/dist/navigation/MenuItem.js.map +1 -1
  129. package/dist/navigation/NavTab.js +14 -17
  130. package/dist/navigation/NavTab.js.map +1 -1
  131. package/dist/navigation/NavTabList.js +39 -33
  132. package/dist/navigation/NavTabList.js.map +1 -1
  133. package/dist/navigation/Page.js +5 -7
  134. package/dist/navigation/Page.js.map +1 -1
  135. package/dist/navigation/Stack.js +20 -7
  136. package/dist/navigation/Stack.js.map +1 -1
  137. package/dist/popper/Popper.js +30 -57
  138. package/dist/popper/Popper.js.map +1 -1
  139. package/dist/popper/Tooltip.js +24 -54
  140. package/dist/popper/Tooltip.js.map +1 -1
  141. package/dist/shortcuts/Shortcut.js +10 -15
  142. package/dist/shortcuts/Shortcut.js.map +1 -1
  143. package/dist/shortcuts/ShortcutRegistry.js +1 -3
  144. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  145. package/dist/spectrum/ActionGroup.js +7 -9
  146. package/dist/spectrum/ActionGroup.js.map +1 -1
  147. package/dist/spectrum/ActionMenu.js +3 -5
  148. package/dist/spectrum/ActionMenu.js.map +1 -1
  149. package/dist/spectrum/CheckboxGroup.js +1 -3
  150. package/dist/spectrum/CheckboxGroup.js.map +1 -1
  151. package/dist/spectrum/Heading.js +2 -4
  152. package/dist/spectrum/Heading.js.map +1 -1
  153. package/dist/spectrum/ItemContent.js +16 -10
  154. package/dist/spectrum/ItemContent.js.map +1 -1
  155. package/dist/spectrum/ItemTooltip.js +2 -4
  156. package/dist/spectrum/ItemTooltip.js.map +1 -1
  157. package/dist/spectrum/TabPanels.js +3 -4
  158. package/dist/spectrum/TabPanels.js.map +1 -1
  159. package/dist/spectrum/Text.js +2 -4
  160. package/dist/spectrum/Text.js.map +1 -1
  161. package/dist/spectrum/View.js +11 -14
  162. package/dist/spectrum/View.js.map +1 -1
  163. package/dist/spectrum/comboBox/ComboBox.js +5 -9
  164. package/dist/spectrum/comboBox/ComboBox.js.map +1 -1
  165. package/dist/spectrum/comboBox/ComboBoxNormalized.js +3 -7
  166. package/dist/spectrum/comboBox/ComboBoxNormalized.js.map +1 -1
  167. package/dist/spectrum/listView/ListView.js +11 -11
  168. package/dist/spectrum/listView/ListView.js.map +1 -1
  169. package/dist/spectrum/listView/ListViewNormalized.js +22 -24
  170. package/dist/spectrum/listView/ListViewNormalized.js.map +1 -1
  171. package/dist/spectrum/listView/ListViewWrapper.js +11 -15
  172. package/dist/spectrum/listView/ListViewWrapper.js.map +1 -1
  173. package/dist/spectrum/multiSelect/MultiSelect.js +113 -100
  174. package/dist/spectrum/multiSelect/MultiSelect.js.map +1 -1
  175. package/dist/spectrum/multiSelect/MultiSelectListBox.js +9 -11
  176. package/dist/spectrum/multiSelect/MultiSelectListBox.js.map +1 -1
  177. package/dist/spectrum/multiSelect/MultiSelectNormalized.js +3 -7
  178. package/dist/spectrum/multiSelect/MultiSelectNormalized.js.map +1 -1
  179. package/dist/spectrum/multiSelect/MultiSelectTag.js +5 -7
  180. package/dist/spectrum/multiSelect/MultiSelectTag.js.map +1 -1
  181. package/dist/spectrum/multiSelect/useMultiSelectFilter.js +20 -14
  182. package/dist/spectrum/multiSelect/useMultiSelectFilter.js.map +1 -1
  183. package/dist/spectrum/multiSelect/useMultiSelectKeyboard.js +27 -20
  184. package/dist/spectrum/multiSelect/useMultiSelectKeyboard.js.map +1 -1
  185. package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.js +14 -7
  186. package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.js.map +1 -1
  187. package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.js +20 -22
  188. package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.js.map +1 -1
  189. package/dist/spectrum/multiSelect/useMultiSelectScrollListener.js +13 -6
  190. package/dist/spectrum/multiSelect/useMultiSelectScrollListener.js.map +1 -1
  191. package/dist/spectrum/multiSelect/useMultiSelectState.js +16 -9
  192. package/dist/spectrum/multiSelect/useMultiSelectState.js.map +1 -1
  193. package/dist/spectrum/picker/Picker.js +5 -9
  194. package/dist/spectrum/picker/Picker.js.map +1 -1
  195. package/dist/spectrum/picker/PickerNormalized.js +2 -6
  196. package/dist/spectrum/picker/PickerNormalized.js.map +1 -1
  197. package/dist/spectrum/picker/usePickerItemScale.js +2 -3
  198. package/dist/spectrum/picker/usePickerItemScale.js.map +1 -1
  199. package/dist/spectrum/picker/usePickerNormalizedProps.js +31 -33
  200. package/dist/spectrum/picker/usePickerNormalizedProps.js.map +1 -1
  201. package/dist/spectrum/picker/usePickerProps.js +26 -29
  202. package/dist/spectrum/picker/usePickerProps.js.map +1 -1
  203. package/dist/spectrum/picker/usePickerScrollOnOpen.js +6 -9
  204. package/dist/spectrum/picker/usePickerScrollOnOpen.js.map +1 -1
  205. package/dist/spectrum/utils/itemUtils.js +4 -6
  206. package/dist/spectrum/utils/itemUtils.js.map +1 -1
  207. package/dist/spectrum/utils/propsUtils.js +35 -37
  208. package/dist/spectrum/utils/propsUtils.js.map +1 -1
  209. package/dist/spectrum/utils/themeUtils.js +5 -7
  210. package/dist/spectrum/utils/themeUtils.js.map +1 -1
  211. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js +13 -6
  212. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js.map +1 -1
  213. package/dist/spectrum/utils/useRenderNormalizedItem.js +5 -7
  214. package/dist/spectrum/utils/useRenderNormalizedItem.js.map +1 -1
  215. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js +4 -6
  216. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js.map +1 -1
  217. package/dist/spectrum/utils/useStringifiedMultiSelection.js +5 -7
  218. package/dist/spectrum/utils/useStringifiedMultiSelection.js.map +1 -1
  219. package/dist/spectrum/utils/useStringifiedSelection.js +5 -7
  220. package/dist/spectrum/utils/useStringifiedSelection.js.map +1 -1
  221. package/dist/theme/FontBootstrap.js +13 -5
  222. package/dist/theme/FontBootstrap.js.map +1 -1
  223. package/dist/theme/FontsLoaded.js +1 -3
  224. package/dist/theme/FontsLoaded.js.map +1 -1
  225. package/dist/theme/Logo.js +2 -4
  226. package/dist/theme/Logo.js.map +1 -1
  227. package/dist/theme/SpectrumThemeProvider.js +17 -9
  228. package/dist/theme/SpectrumThemeProvider.js.map +1 -1
  229. package/dist/theme/ThemePicker.js +4 -5
  230. package/dist/theme/ThemePicker.js.map +1 -1
  231. package/dist/theme/ThemeProvider.js +20 -8
  232. package/dist/theme/ThemeProvider.js.map +1 -1
  233. package/dist/theme/ThemeUtils.js +35 -19
  234. package/dist/theme/ThemeUtils.js.map +1 -1
  235. package/dist/theme/useExternalTheme.js +16 -7
  236. package/dist/theme/useExternalTheme.js.map +1 -1
  237. package/dist/transitions/FadeTransition.js +5 -6
  238. package/dist/transitions/FadeTransition.js.map +1 -1
  239. package/dist/transitions/SlideTransition.js +6 -7
  240. package/dist/transitions/SlideTransition.js.map +1 -1
  241. package/package.json +8 -8
@@ -71,23 +71,18 @@ class Popper extends Component {
71
71
  // cancelAnimationFrame does nothing if the handle isn't recognized
72
72
  // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe
73
73
  this.rAF = 0;
74
- var {
75
- isShown
76
- } = this.props;
74
+ var isShown = this.props.isShown;
77
75
  this.state = {
78
76
  show: isShown,
79
77
  popper: null
80
78
  };
81
79
  }
82
80
  componentDidUpdate(prevProps) {
83
- var {
84
- isShown,
85
- containerClassName,
86
- isMaximized
87
- } = this.props;
88
- var {
89
- popper
90
- } = this.state;
81
+ var _this$props = this.props,
82
+ isShown = _this$props.isShown,
83
+ containerClassName = _this$props.containerClassName,
84
+ isMaximized = _this$props.isMaximized;
85
+ var popper = this.state.popper;
91
86
  if (prevProps.containerClassName !== containerClassName || prevProps.isMaximized !== isMaximized) {
92
87
  this.updateContainerClassName(containerClassName, isMaximized);
93
88
  }
@@ -123,23 +118,19 @@ class Popper extends Component {
123
118
  }
124
119
  initPopper() {
125
120
  var _defaultOptions$modif, _optionsProp$modifier;
126
- var {
127
- popper: statePopper
128
- } = this.state;
129
- var {
130
- closeOnBlur,
131
- referenceObject
132
- } = this.props;
121
+ var statePopper = this.state.popper;
122
+ var _this$props2 = this.props,
123
+ closeOnBlur = _this$props2.closeOnBlur,
124
+ referenceObject = _this$props2.referenceObject;
133
125
  if (statePopper) {
134
126
  return;
135
127
  }
136
128
  if (this.container.current === null) {
137
129
  return;
138
130
  }
139
- var {
140
- options: optionsProp,
141
- keepInParent
142
- } = this.props;
131
+ var _this$props3 = this.props,
132
+ optionsProp = _this$props3.options,
133
+ keepInParent = _this$props3.keepInParent;
143
134
  var defaultOptions = keepInParent ? KEEP_IN_PARENT_OPTIONS : {
144
135
  placement: 'auto',
145
136
  modifiers: {
@@ -185,9 +176,7 @@ class Popper extends Component {
185
176
  destroyPopper() {
186
177
  var updateState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
187
178
  cancelAnimationFrame(this.rAF);
188
- var {
189
- popper
190
- } = this.state;
179
+ var popper = this.state.popper;
191
180
  if (!popper) {
192
181
  return;
193
182
  }
@@ -221,16 +210,13 @@ class Popper extends Component {
221
210
  });
222
211
  }
223
212
  scheduleUpdate() {
224
- var {
225
- popper
226
- } = this.state;
213
+ var popper = this.state.popper;
227
214
  if (popper) popper.scheduleUpdate();
228
215
  }
229
216
  handleBlur(e) {
230
- var {
231
- closeOnBlur,
232
- onBlur
233
- } = this.props;
217
+ var _this$props4 = this.props,
218
+ closeOnBlur = _this$props4.closeOnBlur,
219
+ onBlur = _this$props4.onBlur;
234
220
  if (!(e.relatedTarget instanceof HTMLElement)) {
235
221
  return;
236
222
  }
@@ -242,34 +228,25 @@ class Popper extends Component {
242
228
  }
243
229
  }
244
230
  handleEnter() {
245
- var {
246
- onEntered
247
- } = this.props;
231
+ var onEntered = this.props.onEntered;
248
232
  onEntered(); // trigger any parent component waiting for enter handler
249
233
  }
250
234
  handleExit() {
251
- var {
252
- onExited
253
- } = this.props;
254
- var {
255
- show
256
- } = this.state;
235
+ var onExited = this.props.onExited;
236
+ var show = this.state.show;
257
237
  if (!show) {
258
238
  this.destroyPopper();
259
239
  }
260
240
  onExited(); // trigger any parent component waiting for exited handler
261
241
  }
262
242
  renderContent() {
263
- var {
264
- className,
265
- children,
266
- timeout,
267
- interactive,
268
- closeOnBlur
269
- } = this.props;
270
- var {
271
- show
272
- } = this.state;
243
+ var _this$props5 = this.props,
244
+ className = _this$props5.className,
245
+ children = _this$props5.children,
246
+ timeout = _this$props5.timeout,
247
+ interactive = _this$props5.interactive,
248
+ closeOnBlur = _this$props5.closeOnBlur;
249
+ var show = this.state.show;
273
250
  return /*#__PURE__*/_jsx(SpectrumThemeProvider, {
274
251
  isPortal: true,
275
252
  children: /*#__PURE__*/_jsx(CSSTransition, {
@@ -306,12 +283,8 @@ class Popper extends Component {
306
283
  });
307
284
  }
308
285
  render() {
309
- var {
310
- popper
311
- } = this.state;
312
- var {
313
- 'data-testid': dataTestId
314
- } = this.props;
286
+ var popper = this.state.popper;
287
+ var dataTestId = this.props['data-testid'];
315
288
  return /*#__PURE__*/_jsx("div", {
316
289
  className: "popper-parent-container",
317
290
  ref: this.container,
@@ -1 +1 @@
1
- {"version":3,"file":"Popper.js","names":["React","Component","ReactDOM","flushSync","classNames","CSSTransition","PopperJs","ThemeExport","SpectrumThemeProvider","jsx","_jsx","jsxs","_jsxs","POPPER_CLASS_NAME","POPPER_CONTAINER_CLASS_NAME","KEEP_IN_PARENT_OPTIONS","placement","modifiers","preventOverflow","boundariesElement","fn","data","options","_PopperJs$Defaults$mo","_PopperJs$Defaults$mo2","modified","Defaults","call","styles","maxHeight","concat","document","documentElement","clientHeight","offsets","popper","top","padding","flip","enabled","Popper","constructor","props","_defineProperty","createRef","handleEnter","bind","handleExit","handleBlur","element","createElement","updateContainerClassName","containerClassName","isMaximized","container","rAF","isShown","state","show","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","scheduleUpdate","componentWillUnmount","destroyPopper","className","maximized","getVisibleElement","clientWidth","parentElement","initPopper","_defaultOptions$modif","_optionsProp$modifier","statePopper","closeOnBlur","referenceObject","current","optionsProp","keepInParent","defaultOptions","_objectSpread","body","appendChild","parent","popperEl","querySelector","HTMLElement","contains","activeElement","focus","setState","updateState","arguments","length","undefined","destroy","removeChild","e","onBlur","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","isPortal","in","nodeRef","ref","onClick","stopPropagation","onKeyDown","key","tabIndex","role","render","dataTestId","style","display","createPortal","transitionMs"],"sources":["../../src/popper/Popper.tsx"],"sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM, { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { type PopperOptions, type ReferenceObject } from 'popper.js';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\nimport { SpectrumThemeProvider } from '../theme/SpectrumThemeProvider';\n\nconst POPPER_CLASS_NAME = 'popper';\nconst POPPER_CONTAINER_CLASS_NAME = 'popper-container';\n\nconst KEEP_IN_PARENT_OPTIONS: PopperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: {\n boundariesElement: 'scrollParent',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fn: (data, options: any) => {\n const modified = PopperJs.Defaults.modifiers?.preventOverflow?.fn?.(\n data,\n options\n );\n\n if (modified == null) {\n return data;\n }\n\n modified.styles.maxHeight = `${\n document.documentElement.clientHeight -\n data.offsets.popper.top -\n 2 * options.padding // Double padding because there is top and bottom to account for\n }px`;\n return modified ?? data;\n },\n },\n flip: {\n enabled: false,\n },\n },\n};\n\ninterface PopperProps {\n children: React.ReactNode;\n options: PopperOptions;\n className: string;\n containerClassName: string;\n isMaximized: boolean;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n onBlur: (e: React.FocusEvent) => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n keepInParent: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static defaultProps = {\n options: {},\n className: '',\n containerClassName: '',\n isMaximized: false,\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n onBlur(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n keepInParent: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.updateContainerClassName(props.containerClassName, props.isMaximized);\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown, containerClassName, isMaximized } = this.props;\n const { popper } = this.state;\n\n if (\n prevProps.containerClassName !== containerClassName ||\n prevProps.isMaximized !== isMaximized\n ) {\n this.updateContainerClassName(containerClassName, isMaximized);\n }\n\n if (prevProps.isShown !== isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n if (isShown) {\n this.show();\n } else {\n this.hide();\n }\n });\n }\n\n if (popper) {\n popper.scheduleUpdate();\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n nodeRef = React.createRef<HTMLDivElement>();\n\n // This is the request animation frame handle number\n rAF: number;\n\n private updateContainerClassName(\n containerClassName: string,\n isMaximized: boolean\n ): void {\n this.element.className = classNames(\n POPPER_CONTAINER_CLASS_NAME,\n containerClassName,\n {\n maximized: isMaximized,\n }\n );\n }\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n const { popper: statePopper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (statePopper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n const { options: optionsProp, keepInParent } = this.props;\n const defaultOptions = keepInParent\n ? KEEP_IN_PARENT_OPTIONS\n : ({\n placement: 'auto',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n } satisfies PopperOptions);\n\n const options = {\n ...defaultOptions,\n ...optionsProp,\n modifiers: {\n ...defaultOptions.modifiers,\n ...optionsProp.modifiers,\n preventOverflow: {\n ...defaultOptions.modifiers?.preventOverflow,\n ...optionsProp.modifiers?.preventOverflow,\n },\n },\n } satisfies PopperOptions;\n\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n const popper = new PopperJs(\n referenceObject || parent,\n this.element,\n options\n );\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // If the current focus is not on the .popper or one of its descendants,\n // set the focus to the .popper element. This is necessary for close on\n // blur to work.\n if (closeOnBlur) {\n const popperEl = this.element.querySelector(`.${POPPER_CLASS_NAME}`);\n\n if (\n popperEl instanceof HTMLElement &&\n !popperEl.contains(document.activeElement)\n ) {\n popperEl.focus();\n }\n }\n });\n\n // Needed to make the animation work\n flushSync(() => {\n this.setState({ popper });\n });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n\n // Needed to make the animation work\n flushSync(() => {\n this.setState({ show: true });\n });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n const { closeOnBlur, onBlur } = this.props;\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n onBlur?.(e);\n if (closeOnBlur) {\n this.hide();\n }\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const { className, children, timeout, interactive, closeOnBlur } =\n this.props;\n const { show } = this.state;\n\n return (\n <SpectrumThemeProvider isPortal>\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n nodeRef={this.nodeRef}\n >\n <div\n ref={this.nodeRef}\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames(\n POPPER_CLASS_NAME,\n { interactive },\n className\n )}\n onBlur={this.handleBlur}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n {/* eslint-disable-next-line react/no-unknown-property */}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n </SpectrumThemeProvider>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Popper.js","names":["React","Component","ReactDOM","flushSync","classNames","CSSTransition","PopperJs","ThemeExport","SpectrumThemeProvider","jsx","_jsx","jsxs","_jsxs","POPPER_CLASS_NAME","POPPER_CONTAINER_CLASS_NAME","KEEP_IN_PARENT_OPTIONS","placement","modifiers","preventOverflow","boundariesElement","fn","data","options","_PopperJs$Defaults$mo","_PopperJs$Defaults$mo2","modified","Defaults","call","styles","maxHeight","concat","document","documentElement","clientHeight","offsets","popper","top","padding","flip","enabled","Popper","constructor","props","_defineProperty","createRef","handleEnter","bind","handleExit","handleBlur","element","createElement","updateContainerClassName","containerClassName","isMaximized","container","rAF","isShown","state","show","componentDidUpdate","prevProps","_this$props","cancelAnimationFrame","window","requestAnimationFrame","hide","scheduleUpdate","componentWillUnmount","destroyPopper","className","maximized","getVisibleElement","clientWidth","parentElement","initPopper","_defaultOptions$modif","_optionsProp$modifier","statePopper","_this$props2","closeOnBlur","referenceObject","current","_this$props3","optionsProp","keepInParent","defaultOptions","_objectSpread","body","appendChild","parent","popperEl","querySelector","HTMLElement","contains","activeElement","focus","setState","updateState","arguments","length","undefined","destroy","removeChild","e","_this$props4","onBlur","relatedTarget","onEntered","onExited","renderContent","_this$props5","children","timeout","interactive","isPortal","in","nodeRef","ref","onClick","stopPropagation","onKeyDown","key","tabIndex","role","render","dataTestId","style","display","createPortal","transitionMs"],"sources":["../../src/popper/Popper.tsx"],"sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM, { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { type PopperOptions, type ReferenceObject } from 'popper.js';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\nimport { SpectrumThemeProvider } from '../theme/SpectrumThemeProvider';\n\nconst POPPER_CLASS_NAME = 'popper';\nconst POPPER_CONTAINER_CLASS_NAME = 'popper-container';\n\nconst KEEP_IN_PARENT_OPTIONS: PopperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: {\n boundariesElement: 'scrollParent',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fn: (data, options: any) => {\n const modified = PopperJs.Defaults.modifiers?.preventOverflow?.fn?.(\n data,\n options\n );\n\n if (modified == null) {\n return data;\n }\n\n modified.styles.maxHeight = `${\n document.documentElement.clientHeight -\n data.offsets.popper.top -\n 2 * options.padding // Double padding because there is top and bottom to account for\n }px`;\n return modified ?? data;\n },\n },\n flip: {\n enabled: false,\n },\n },\n};\n\ninterface PopperProps {\n children: React.ReactNode;\n options: PopperOptions;\n className: string;\n containerClassName: string;\n isMaximized: boolean;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n onBlur: (e: React.FocusEvent) => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n keepInParent: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static defaultProps = {\n options: {},\n className: '',\n containerClassName: '',\n isMaximized: false,\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n onBlur(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n keepInParent: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.updateContainerClassName(props.containerClassName, props.isMaximized);\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown, containerClassName, isMaximized } = this.props;\n const { popper } = this.state;\n\n if (\n prevProps.containerClassName !== containerClassName ||\n prevProps.isMaximized !== isMaximized\n ) {\n this.updateContainerClassName(containerClassName, isMaximized);\n }\n\n if (prevProps.isShown !== isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n if (isShown) {\n this.show();\n } else {\n this.hide();\n }\n });\n }\n\n if (popper) {\n popper.scheduleUpdate();\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n nodeRef = React.createRef<HTMLDivElement>();\n\n // This is the request animation frame handle number\n rAF: number;\n\n private updateContainerClassName(\n containerClassName: string,\n isMaximized: boolean\n ): void {\n this.element.className = classNames(\n POPPER_CONTAINER_CLASS_NAME,\n containerClassName,\n {\n maximized: isMaximized,\n }\n );\n }\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n const { popper: statePopper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (statePopper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n const { options: optionsProp, keepInParent } = this.props;\n const defaultOptions = keepInParent\n ? KEEP_IN_PARENT_OPTIONS\n : ({\n placement: 'auto',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n } satisfies PopperOptions);\n\n const options = {\n ...defaultOptions,\n ...optionsProp,\n modifiers: {\n ...defaultOptions.modifiers,\n ...optionsProp.modifiers,\n preventOverflow: {\n ...defaultOptions.modifiers?.preventOverflow,\n ...optionsProp.modifiers?.preventOverflow,\n },\n },\n } satisfies PopperOptions;\n\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n const popper = new PopperJs(\n referenceObject || parent,\n this.element,\n options\n );\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // If the current focus is not on the .popper or one of its descendants,\n // set the focus to the .popper element. This is necessary for close on\n // blur to work.\n if (closeOnBlur) {\n const popperEl = this.element.querySelector(`.${POPPER_CLASS_NAME}`);\n\n if (\n popperEl instanceof HTMLElement &&\n !popperEl.contains(document.activeElement)\n ) {\n popperEl.focus();\n }\n }\n });\n\n // Needed to make the animation work\n flushSync(() => {\n this.setState({ popper });\n });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n\n // Needed to make the animation work\n flushSync(() => {\n this.setState({ show: true });\n });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n const { closeOnBlur, onBlur } = this.props;\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n onBlur?.(e);\n if (closeOnBlur) {\n this.hide();\n }\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const { className, children, timeout, interactive, closeOnBlur } =\n this.props;\n const { show } = this.state;\n\n return (\n <SpectrumThemeProvider isPortal>\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n nodeRef={this.nodeRef}\n >\n <div\n ref={this.nodeRef}\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames(\n POPPER_CLASS_NAME,\n { interactive },\n className\n )}\n onBlur={this.handleBlur}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n {/* eslint-disable-next-line react/no-unknown-property */}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n </SpectrumThemeProvider>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"mappings":"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","ignoreList":[]}
@@ -58,20 +58,14 @@ class Tooltip extends Component {
58
58
  }
59
59
  componentDidMount() {
60
60
  this.startListening();
61
- var {
62
- timeout
63
- } = this.props;
61
+ var timeout = this.props.timeout;
64
62
  if (timeout === 0) {
65
63
  this.show();
66
64
  }
67
65
  }
68
66
  componentDidUpdate(prevProps, prevState) {
69
- var {
70
- isShown: oldIsShown
71
- } = prevState;
72
- var {
73
- isShown
74
- } = this.state;
67
+ var oldIsShown = prevState.isShown;
68
+ var isShown = this.state.isShown;
75
69
  if (isShown !== oldIsShown) {
76
70
  if (isShown) {
77
71
  Tooltip.handleShown();
@@ -84,9 +78,7 @@ class Tooltip extends Component {
84
78
  this.stopListening();
85
79
  this.stopListeningWindow();
86
80
  this.stopTimer();
87
- var {
88
- isShown
89
- } = this.state;
81
+ var isShown = this.state.isShown;
90
82
  if (isShown) {
91
83
  Tooltip.handleHidden();
92
84
  }
@@ -123,9 +115,7 @@ class Tooltip extends Component {
123
115
  this.startTimer();
124
116
  }
125
117
  handleWheel() {
126
- var {
127
- isShown
128
- } = this.state;
118
+ var isShown = this.state.isShown;
129
119
  if (this.popper.current && this.parent && isShown) {
130
120
  if (!this.popper.current.element.matches(':hover') && !this.parent.matches(':hover')) {
131
121
  this.stopTimer();
@@ -134,13 +124,9 @@ class Tooltip extends Component {
134
124
  }
135
125
  }
136
126
  handleMouseLeave() {
137
- var {
138
- isShown
139
- } = this.state;
127
+ var isShown = this.state.isShown;
140
128
  this.stopTimer();
141
- var {
142
- interactive
143
- } = this.props;
129
+ var interactive = this.props.interactive;
144
130
  if (!interactive && isShown) {
145
131
  this.hide();
146
132
  }
@@ -151,9 +137,7 @@ class Tooltip extends Component {
151
137
  handleWindowMouseMove(event) {
152
138
  var mouseX = event.clientX;
153
139
  var mouseY = event.clientY;
154
- var {
155
- isShown
156
- } = this.state;
140
+ var isShown = this.state.isShown;
157
141
  if (!this.popper.current || !this.parent) {
158
142
  return;
159
143
  }
@@ -170,10 +154,9 @@ class Tooltip extends Component {
170
154
  }
171
155
  startTimer() {
172
156
  this.stopTimer();
173
- var {
174
- timeout,
175
- reshowTimeout
176
- } = this.props;
157
+ var _this$props = this.props,
158
+ timeout = _this$props.timeout,
159
+ reshowTimeout = _this$props.reshowTimeout;
177
160
  var timerTimeout = timeout;
178
161
  if (Tooltip.shownTooltipCount > 0 || Date.now() - Tooltip.lastHiddenTime < Tooltip.triggerReshowThreshold) {
179
162
  timerTimeout = reshowTimeout;
@@ -187,9 +170,7 @@ class Tooltip extends Component {
187
170
  }
188
171
  }
189
172
  show() {
190
- var {
191
- isShown
192
- } = this.state;
173
+ var isShown = this.state.isShown;
193
174
  this.stopTimer();
194
175
  if (!isShown) {
195
176
  var _this$popper$current;
@@ -202,9 +183,7 @@ class Tooltip extends Component {
202
183
  isShown: true
203
184
  });
204
185
  });
205
- var {
206
- interactive
207
- } = this.props;
186
+ var interactive = this.props.interactive;
208
187
  if (interactive) {
209
188
  this.startListeningWindow();
210
189
  }
@@ -223,35 +202,26 @@ class Tooltip extends Component {
223
202
  this.setState({
224
203
  isShown: false
225
204
  });
226
- var {
227
- onExited
228
- } = this.props;
205
+ var onExited = this.props.onExited;
229
206
  onExited();
230
207
  }
231
208
  stopShowingTooltip() {
232
- var {
233
- isShown
234
- } = this.state;
209
+ var isShown = this.state.isShown;
235
210
  this.stopTimer();
236
211
  if (isShown) {
237
212
  this.hide();
238
213
  }
239
214
  }
240
215
  render() {
241
- var {
242
- interactive,
243
- children,
244
- referenceObject,
245
- popperClassName,
246
- 'data-testid': dataTestId,
247
- onEntered
248
- } = this.props;
249
- var {
250
- isShown
251
- } = this.state;
252
- var {
253
- options
254
- } = this.props;
216
+ var _this$props2 = this.props,
217
+ interactive = _this$props2.interactive,
218
+ children = _this$props2.children,
219
+ referenceObject = _this$props2.referenceObject,
220
+ popperClassName = _this$props2.popperClassName,
221
+ dataTestId = _this$props2['data-testid'],
222
+ onEntered = _this$props2.onEntered;
223
+ var isShown = this.state.isShown;
224
+ var options = this.props.options;
255
225
  options = _objectSpread({
256
226
  placement: 'bottom'
257
227
  }, options);
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","names":["React","Component","flushSync","classNames","Log","Popper","jsxs","_jsxs","jsx","_jsx","log","module","Tooltip","handleHidden","shownTooltipCount","lastHiddenTime","Date","now","handleShown","constructor","props","_defineProperty","handleMouseMove","bind","handleMouseLeave","handleWindowMouseMove","handleWheel","handleTimeout","handleExited","stopShowingTooltip","container","createRef","popper","parent","timer","state","isShown","componentDidMount","startListening","timeout","show","componentDidUpdate","prevProps","prevState","oldIsShown","componentWillUnmount","stopListening","stopListeningWindow","stopTimer","current","parentElement","error","addEventListener","removeEventListener","startListeningWindow","window","startTimer","element","matches","hide","interactive","event","mouseX","clientX","mouseY","clientY","popperRect","getBoundingClientRect","parentRect","left","width","top","height","reshowTimeout","timerTimeout","triggerReshowThreshold","setTimeout","clearTimeout","_this$popper$current","setState","_this$popper$current2","update","_this$popper$current3","scheduleUpdate","onExited","render","children","referenceObject","popperClassName","dataTestId","onEntered","options","_objectSpread","placement","ref","style","display","className","_Tooltip","defaultReshowTimeout","defaultTimeout","undefined"],"sources":["../../src/popper/Tooltip.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport Popper, { type PopperOptions, type ReferenceObject } from './Popper';\n\nconst log = Log.module('Tooltip');\n\ntype TooltipProps = typeof Tooltip.defaultProps & {\n children: React.ReactNode;\n interactive?: boolean;\n options?: PopperOptions;\n popperClassName?: string;\n reshowTimeout?: number;\n timeout?: number;\n referenceObject?: ReferenceObject | null;\n onEntered?: () => void;\n onExited?: () => void;\n 'data-testid'?: string;\n};\ninterface TooltipState {\n isShown: boolean;\n}\n\n/**\n * Component that can be added to an element to automatically display a tooltip.\n * Content is mounted lazily, so don't worry about complex tooltips!\n *\n * Usage:\n * <div className=\"parent-container\">\n * Hover this container to see a tooltip\n * <Tooltip>\n * <div>My tooltip content goes here!</div>\n * </Tooltip>\n * </div>\n */\nclass Tooltip extends Component<TooltipProps, TooltipState> {\n static defaultTimeout = 500;\n\n static defaultReshowTimeout = 100;\n\n static triggerReshowThreshold = 300;\n\n static shownTooltipCount = 0;\n\n static lastHiddenTime = Date.now();\n\n static defaultProps = {\n interactive: false,\n options: {},\n popperClassName: '',\n reshowTimeout: Tooltip.defaultReshowTimeout,\n timeout: Tooltip.defaultTimeout,\n onEntered: (): void => undefined,\n onExited: (): void => undefined,\n 'data-testid': undefined,\n };\n\n static handleHidden(): void {\n Tooltip.shownTooltipCount -= 1;\n\n if (Tooltip.shownTooltipCount === 0) {\n Tooltip.lastHiddenTime = Date.now();\n }\n }\n\n static handleShown(): void {\n Tooltip.shownTooltipCount += 1;\n }\n\n constructor(props: TooltipProps) {\n super(props);\n\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowMouseMove = this.handleWindowMouseMove.bind(this);\n this.handleWheel = this.handleWheel.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.stopShowingTooltip = this.stopShowingTooltip.bind(this);\n\n this.container = React.createRef();\n this.popper = React.createRef();\n this.parent = null;\n this.timer = null;\n\n this.state = {\n isShown: false,\n };\n }\n\n componentDidMount(): void {\n this.startListening();\n\n const { timeout } = this.props;\n if (timeout === 0) {\n this.show();\n }\n }\n\n componentDidUpdate(prevProps: TooltipProps, prevState: TooltipState): void {\n const { isShown: oldIsShown } = prevState;\n const { isShown } = this.state;\n\n if (isShown !== oldIsShown) {\n if (isShown) {\n Tooltip.handleShown();\n } else {\n Tooltip.handleHidden();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.stopListening();\n this.stopListeningWindow();\n this.stopTimer();\n\n const { isShown } = this.state;\n\n if (isShown) {\n Tooltip.handleHidden();\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n popper: React.RefObject<Popper>;\n\n parent: HTMLElement | null;\n\n // This is platform dependent of Node/DOM\n // Jest requires Node types\n timer: number | null;\n\n startListening(): void {\n if (!this.container.current || !this.container.current.parentElement) {\n log.error(\"Tooltip doesn't have a container or a parent set!\");\n return;\n }\n\n this.parent = this.container.current.parentElement;\n this.parent.addEventListener('mousemove', this.handleMouseMove);\n this.parent.addEventListener('mouseleave', this.handleMouseLeave);\n this.parent.addEventListener('mousedown', this.stopShowingTooltip);\n }\n\n stopListening(): void {\n if (!this.parent) {\n return;\n }\n\n this.parent.removeEventListener('mousemove', this.handleMouseMove);\n this.parent.removeEventListener('mouseleave', this.handleMouseLeave);\n this.parent.removeEventListener('mousedown', this.stopShowingTooltip);\n }\n\n startListeningWindow(): void {\n window.addEventListener('mousemove', this.handleWindowMouseMove, true);\n window.addEventListener('contextmenu', this.stopShowingTooltip, true);\n window.addEventListener('wheel', this.handleWheel);\n }\n\n stopListeningWindow(): void {\n window.removeEventListener('mousemove', this.handleWindowMouseMove, true);\n window.removeEventListener('contextmenu', this.stopShowingTooltip, true);\n window.removeEventListener('wheel', this.handleWheel);\n }\n\n handleMouseMove(): void {\n this.startTimer();\n }\n\n handleWheel(): void {\n const { isShown } = this.state;\n if (this.popper.current && this.parent && isShown) {\n if (\n !this.popper.current.element.matches(':hover') &&\n !this.parent.matches(':hover')\n ) {\n this.stopTimer();\n this.hide();\n }\n }\n }\n\n handleMouseLeave(): void {\n const { isShown } = this.state;\n this.stopTimer();\n\n const { interactive } = this.props;\n if (!interactive && isShown) {\n this.hide();\n }\n }\n\n handleTimeout(): void {\n this.show();\n }\n\n handleWindowMouseMove(event: MouseEvent): void {\n const mouseX = event.clientX;\n const mouseY = event.clientY;\n const { isShown } = this.state;\n\n if (!this.popper.current || !this.parent) {\n return;\n }\n const popperRect = this.popper.current.element.getBoundingClientRect();\n const parentRect = this.parent.getBoundingClientRect();\n\n if (\n mouseX >= popperRect.left &&\n mouseX <= popperRect.left + popperRect.width &&\n mouseY >= popperRect.top &&\n mouseY <= popperRect.top + popperRect.height\n ) {\n this.handleMouseMove();\n } else if (\n mouseX >= parentRect.left &&\n mouseX <= parentRect.left + parentRect.width &&\n mouseY >= parentRect.top &&\n mouseY <= parentRect.top + parentRect.height\n ) {\n this.handleMouseMove();\n } else if (isShown) {\n this.stopTimer();\n this.hide();\n }\n }\n\n startTimer(): void {\n this.stopTimer();\n\n const { timeout, reshowTimeout } = this.props;\n let timerTimeout = timeout;\n if (\n Tooltip.shownTooltipCount > 0 ||\n Date.now() - Tooltip.lastHiddenTime < Tooltip.triggerReshowThreshold\n ) {\n timerTimeout = reshowTimeout;\n }\n this.timer = window.setTimeout(this.handleTimeout, timerTimeout);\n }\n\n stopTimer(): void {\n if (this.timer != null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n show(): void {\n const { isShown } = this.state;\n this.stopTimer();\n\n if (!isShown) {\n this.popper.current?.show();\n // This is needed for the positioning to work consistently.\n // Without this, the tooltip sometimes overflows the screen\n // or ends up in a different position when hovered a second time.\n flushSync(() => {\n this.setState({ isShown: true });\n });\n\n const { interactive } = this.props;\n if (interactive) {\n this.startListeningWindow();\n }\n }\n }\n\n hide(): void {\n this.popper.current?.hide();\n this.stopListeningWindow();\n }\n\n update(): void {\n this.popper.current?.scheduleUpdate();\n }\n\n handleExited(): void {\n this.setState({ isShown: false });\n const { onExited } = this.props;\n onExited();\n }\n\n stopShowingTooltip(): void {\n const { isShown } = this.state;\n this.stopTimer();\n if (isShown) {\n this.hide();\n }\n }\n\n render(): JSX.Element {\n const {\n interactive,\n children,\n referenceObject,\n popperClassName,\n 'data-testid': dataTestId,\n onEntered,\n } = this.props;\n const { isShown } = this.state;\n\n let { options } = this.props;\n options = {\n placement: 'bottom',\n ...options,\n };\n\n return (\n <div\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n <Popper\n className={classNames(popperClassName, 'popper-tooltip')}\n options={options}\n ref={this.popper}\n onEntered={onEntered}\n onExited={this.handleExited}\n interactive={interactive}\n referenceObject={referenceObject}\n >\n <div className=\"tooltip-content\"> {isShown && children}</div>\n </Popper>\n </div>\n );\n }\n}\n\nexport default Tooltip;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Tooltip.js","names":["React","Component","flushSync","classNames","Log","Popper","jsxs","_jsxs","jsx","_jsx","log","module","Tooltip","handleHidden","shownTooltipCount","lastHiddenTime","Date","now","handleShown","constructor","props","_defineProperty","handleMouseMove","bind","handleMouseLeave","handleWindowMouseMove","handleWheel","handleTimeout","handleExited","stopShowingTooltip","container","createRef","popper","parent","timer","state","isShown","componentDidMount","startListening","timeout","show","componentDidUpdate","prevProps","prevState","oldIsShown","componentWillUnmount","stopListening","stopListeningWindow","stopTimer","current","parentElement","error","addEventListener","removeEventListener","startListeningWindow","window","startTimer","element","matches","hide","interactive","event","mouseX","clientX","mouseY","clientY","popperRect","getBoundingClientRect","parentRect","left","width","top","height","_this$props","reshowTimeout","timerTimeout","triggerReshowThreshold","setTimeout","clearTimeout","_this$popper$current","setState","_this$popper$current2","update","_this$popper$current3","scheduleUpdate","onExited","render","_this$props2","children","referenceObject","popperClassName","dataTestId","onEntered","options","_objectSpread","placement","ref","style","display","className","_Tooltip","defaultReshowTimeout","defaultTimeout","undefined"],"sources":["../../src/popper/Tooltip.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport Popper, { type PopperOptions, type ReferenceObject } from './Popper';\n\nconst log = Log.module('Tooltip');\n\ntype TooltipProps = typeof Tooltip.defaultProps & {\n children: React.ReactNode;\n interactive?: boolean;\n options?: PopperOptions;\n popperClassName?: string;\n reshowTimeout?: number;\n timeout?: number;\n referenceObject?: ReferenceObject | null;\n onEntered?: () => void;\n onExited?: () => void;\n 'data-testid'?: string;\n};\ninterface TooltipState {\n isShown: boolean;\n}\n\n/**\n * Component that can be added to an element to automatically display a tooltip.\n * Content is mounted lazily, so don't worry about complex tooltips!\n *\n * Usage:\n * <div className=\"parent-container\">\n * Hover this container to see a tooltip\n * <Tooltip>\n * <div>My tooltip content goes here!</div>\n * </Tooltip>\n * </div>\n */\nclass Tooltip extends Component<TooltipProps, TooltipState> {\n static defaultTimeout = 500;\n\n static defaultReshowTimeout = 100;\n\n static triggerReshowThreshold = 300;\n\n static shownTooltipCount = 0;\n\n static lastHiddenTime = Date.now();\n\n static defaultProps = {\n interactive: false,\n options: {},\n popperClassName: '',\n reshowTimeout: Tooltip.defaultReshowTimeout,\n timeout: Tooltip.defaultTimeout,\n onEntered: (): void => undefined,\n onExited: (): void => undefined,\n 'data-testid': undefined,\n };\n\n static handleHidden(): void {\n Tooltip.shownTooltipCount -= 1;\n\n if (Tooltip.shownTooltipCount === 0) {\n Tooltip.lastHiddenTime = Date.now();\n }\n }\n\n static handleShown(): void {\n Tooltip.shownTooltipCount += 1;\n }\n\n constructor(props: TooltipProps) {\n super(props);\n\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowMouseMove = this.handleWindowMouseMove.bind(this);\n this.handleWheel = this.handleWheel.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.stopShowingTooltip = this.stopShowingTooltip.bind(this);\n\n this.container = React.createRef();\n this.popper = React.createRef();\n this.parent = null;\n this.timer = null;\n\n this.state = {\n isShown: false,\n };\n }\n\n componentDidMount(): void {\n this.startListening();\n\n const { timeout } = this.props;\n if (timeout === 0) {\n this.show();\n }\n }\n\n componentDidUpdate(prevProps: TooltipProps, prevState: TooltipState): void {\n const { isShown: oldIsShown } = prevState;\n const { isShown } = this.state;\n\n if (isShown !== oldIsShown) {\n if (isShown) {\n Tooltip.handleShown();\n } else {\n Tooltip.handleHidden();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.stopListening();\n this.stopListeningWindow();\n this.stopTimer();\n\n const { isShown } = this.state;\n\n if (isShown) {\n Tooltip.handleHidden();\n }\n }\n\n container: React.RefObject<HTMLDivElement>;\n\n popper: React.RefObject<Popper>;\n\n parent: HTMLElement | null;\n\n // This is platform dependent of Node/DOM\n // Jest requires Node types\n timer: number | null;\n\n startListening(): void {\n if (!this.container.current || !this.container.current.parentElement) {\n log.error(\"Tooltip doesn't have a container or a parent set!\");\n return;\n }\n\n this.parent = this.container.current.parentElement;\n this.parent.addEventListener('mousemove', this.handleMouseMove);\n this.parent.addEventListener('mouseleave', this.handleMouseLeave);\n this.parent.addEventListener('mousedown', this.stopShowingTooltip);\n }\n\n stopListening(): void {\n if (!this.parent) {\n return;\n }\n\n this.parent.removeEventListener('mousemove', this.handleMouseMove);\n this.parent.removeEventListener('mouseleave', this.handleMouseLeave);\n this.parent.removeEventListener('mousedown', this.stopShowingTooltip);\n }\n\n startListeningWindow(): void {\n window.addEventListener('mousemove', this.handleWindowMouseMove, true);\n window.addEventListener('contextmenu', this.stopShowingTooltip, true);\n window.addEventListener('wheel', this.handleWheel);\n }\n\n stopListeningWindow(): void {\n window.removeEventListener('mousemove', this.handleWindowMouseMove, true);\n window.removeEventListener('contextmenu', this.stopShowingTooltip, true);\n window.removeEventListener('wheel', this.handleWheel);\n }\n\n handleMouseMove(): void {\n this.startTimer();\n }\n\n handleWheel(): void {\n const { isShown } = this.state;\n if (this.popper.current && this.parent && isShown) {\n if (\n !this.popper.current.element.matches(':hover') &&\n !this.parent.matches(':hover')\n ) {\n this.stopTimer();\n this.hide();\n }\n }\n }\n\n handleMouseLeave(): void {\n const { isShown } = this.state;\n this.stopTimer();\n\n const { interactive } = this.props;\n if (!interactive && isShown) {\n this.hide();\n }\n }\n\n handleTimeout(): void {\n this.show();\n }\n\n handleWindowMouseMove(event: MouseEvent): void {\n const mouseX = event.clientX;\n const mouseY = event.clientY;\n const { isShown } = this.state;\n\n if (!this.popper.current || !this.parent) {\n return;\n }\n const popperRect = this.popper.current.element.getBoundingClientRect();\n const parentRect = this.parent.getBoundingClientRect();\n\n if (\n mouseX >= popperRect.left &&\n mouseX <= popperRect.left + popperRect.width &&\n mouseY >= popperRect.top &&\n mouseY <= popperRect.top + popperRect.height\n ) {\n this.handleMouseMove();\n } else if (\n mouseX >= parentRect.left &&\n mouseX <= parentRect.left + parentRect.width &&\n mouseY >= parentRect.top &&\n mouseY <= parentRect.top + parentRect.height\n ) {\n this.handleMouseMove();\n } else if (isShown) {\n this.stopTimer();\n this.hide();\n }\n }\n\n startTimer(): void {\n this.stopTimer();\n\n const { timeout, reshowTimeout } = this.props;\n let timerTimeout = timeout;\n if (\n Tooltip.shownTooltipCount > 0 ||\n Date.now() - Tooltip.lastHiddenTime < Tooltip.triggerReshowThreshold\n ) {\n timerTimeout = reshowTimeout;\n }\n this.timer = window.setTimeout(this.handleTimeout, timerTimeout);\n }\n\n stopTimer(): void {\n if (this.timer != null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n show(): void {\n const { isShown } = this.state;\n this.stopTimer();\n\n if (!isShown) {\n this.popper.current?.show();\n // This is needed for the positioning to work consistently.\n // Without this, the tooltip sometimes overflows the screen\n // or ends up in a different position when hovered a second time.\n flushSync(() => {\n this.setState({ isShown: true });\n });\n\n const { interactive } = this.props;\n if (interactive) {\n this.startListeningWindow();\n }\n }\n }\n\n hide(): void {\n this.popper.current?.hide();\n this.stopListeningWindow();\n }\n\n update(): void {\n this.popper.current?.scheduleUpdate();\n }\n\n handleExited(): void {\n this.setState({ isShown: false });\n const { onExited } = this.props;\n onExited();\n }\n\n stopShowingTooltip(): void {\n const { isShown } = this.state;\n this.stopTimer();\n if (isShown) {\n this.hide();\n }\n }\n\n render(): JSX.Element {\n const {\n interactive,\n children,\n referenceObject,\n popperClassName,\n 'data-testid': dataTestId,\n onEntered,\n } = this.props;\n const { isShown } = this.state;\n\n let { options } = this.props;\n options = {\n placement: 'bottom',\n ...options,\n };\n\n return (\n <div\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n <Popper\n className={classNames(popperClassName, 'popper-tooltip')}\n options={options}\n ref={this.popper}\n onEntered={onEntered}\n onExited={this.handleExited}\n interactive={interactive}\n referenceObject={referenceObject}\n >\n <div className=\"tooltip-content\"> {isShown && children}</div>\n </Popper>\n </div>\n );\n }\n}\n\nexport default Tooltip;\n"],"mappings":"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","ignoreList":[]}
@@ -112,9 +112,7 @@ export default class Shortcut extends EventTarget {
112
112
  * @returns True if KeyState is is using an allowed keyCode
113
113
  */
114
114
  static isValidKeyState(state) {
115
- var {
116
- keyValue
117
- } = state;
115
+ var keyValue = state.keyValue;
118
116
  if (keyValue === null) {
119
117
  // Null state is valid
120
118
  return true;
@@ -164,10 +162,8 @@ export default class Shortcut extends EventTarget {
164
162
  return keyState;
165
163
  }
166
164
  static getKeyStateFromEvent(e) {
167
- var {
168
- key: eventKey,
169
- keyCode
170
- } = e;
165
+ var eventKey = e.key,
166
+ keyCode = e.keyCode;
171
167
  var key = '';
172
168
  if (eventKey === 'Shift' || eventKey === 'Meta' || eventKey === 'Control' || eventKey === 'Alt') {
173
169
  key = '';
@@ -277,14 +273,13 @@ export default class Shortcut extends EventTarget {
277
273
  return Shortcut.isMacPlatform ? Shortcut.getMacDisplayText(keyState) : Shortcut.getWindowsDisplayText(keyState);
278
274
  }
279
275
  constructor(_ref) {
280
- var {
281
- id,
282
- shortcut,
283
- macShortcut,
284
- isEditable = true,
285
- name,
286
- tooltip
287
- } = _ref;
276
+ var id = _ref.id,
277
+ shortcut = _ref.shortcut,
278
+ macShortcut = _ref.macShortcut,
279
+ _ref$isEditable = _ref.isEditable,
280
+ isEditable = _ref$isEditable === void 0 ? true : _ref$isEditable,
281
+ name = _ref.name,
282
+ tooltip = _ref.tooltip;
288
283
  super();
289
284
  _defineProperty(this, "id", void 0);
290
285
  // Unique identifier for the shortcut