@deephaven/components 0.5.2-beta.0 → 0.6.1-demo.10

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 (119) hide show
  1. package/dist/AutoCompleteInput.js +410 -448
  2. package/dist/AutoCompleteInput.js.map +1 -1
  3. package/dist/AutoResizeTextarea.js +17 -46
  4. package/dist/AutoResizeTextarea.js.map +1 -1
  5. package/dist/BasicModal.js +18 -19
  6. package/dist/BasicModal.js.map +1 -1
  7. package/dist/Button.js +30 -21
  8. package/dist/Button.js.map +1 -1
  9. package/dist/ButtonGroup.js +6 -4
  10. package/dist/ButtonGroup.js.map +1 -1
  11. package/dist/ButtonOld.js +10 -8
  12. package/dist/ButtonOld.js.map +1 -1
  13. package/dist/CardFlip.js +10 -8
  14. package/dist/CardFlip.js.map +1 -1
  15. package/dist/Checkbox.js +18 -31
  16. package/dist/Checkbox.js.map +1 -1
  17. package/dist/Collapse.js +65 -105
  18. package/dist/Collapse.js.map +1 -1
  19. package/dist/ComboBox.js +432 -460
  20. package/dist/ComboBox.js.map +1 -1
  21. package/dist/CustomTimeSelect.js +485 -517
  22. package/dist/CustomTimeSelect.js.map +1 -1
  23. package/dist/DebouncedSearchInput.js +61 -91
  24. package/dist/DebouncedSearchInput.js.map +1 -1
  25. package/dist/DeephavenSpinner.js +6 -6
  26. package/dist/DeephavenSpinner.js.map +1 -1
  27. package/dist/DragUtils.js +65 -113
  28. package/dist/DragUtils.js.map +1 -1
  29. package/dist/DraggableItemList.d.ts +1 -0
  30. package/dist/DraggableItemList.d.ts.map +1 -1
  31. package/dist/DraggableItemList.js +219 -257
  32. package/dist/DraggableItemList.js.map +1 -1
  33. package/dist/HierarchicalCheckboxMenu.js +160 -227
  34. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  35. package/dist/ItemList.d.ts +4 -2
  36. package/dist/ItemList.d.ts.map +1 -1
  37. package/dist/ItemList.js +595 -598
  38. package/dist/ItemList.js.map +1 -1
  39. package/dist/ItemListItem.js +194 -215
  40. package/dist/ItemListItem.js.map +1 -1
  41. package/dist/LoadingOverlay.js +9 -10
  42. package/dist/LoadingOverlay.js.map +1 -1
  43. package/dist/LoadingSpinner.js +4 -3
  44. package/dist/LoadingSpinner.js.map +1 -1
  45. package/dist/MaskedInput.js +59 -70
  46. package/dist/MaskedInput.js.map +1 -1
  47. package/dist/Option.js +5 -3
  48. package/dist/Option.js.map +1 -1
  49. package/dist/RadioGroup.js +16 -34
  50. package/dist/RadioGroup.js.map +1 -1
  51. package/dist/RadioItem.js +14 -33
  52. package/dist/RadioItem.js.map +1 -1
  53. package/dist/SearchInput.js +42 -75
  54. package/dist/SearchInput.js.map +1 -1
  55. package/dist/Select.js +10 -8
  56. package/dist/Select.js.map +1 -1
  57. package/dist/SelectValueList.js +97 -134
  58. package/dist/SelectValueList.js.map +1 -1
  59. package/dist/SocketedButton.js +13 -11
  60. package/dist/SocketedButton.js.map +1 -1
  61. package/dist/ThemeExport.js.map +1 -1
  62. package/dist/TimeInput.js +16 -53
  63. package/dist/TimeInput.js.map +1 -1
  64. package/dist/TimeSlider.js +62 -88
  65. package/dist/TimeSlider.js.map +1 -1
  66. package/dist/ToastNotification.js +14 -13
  67. package/dist/ToastNotification.js.map +1 -1
  68. package/dist/UISwitch.js +9 -8
  69. package/dist/UISwitch.js.map +1 -1
  70. package/dist/context-actions/ContextActionUtils.js +173 -231
  71. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  72. package/dist/context-actions/ContextActions.js +135 -177
  73. package/dist/context-actions/ContextActions.js.map +1 -1
  74. package/dist/context-actions/ContextMenu.js +509 -543
  75. package/dist/context-actions/ContextMenu.js.map +1 -1
  76. package/dist/context-actions/ContextMenuItem.js +32 -22
  77. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  78. package/dist/context-actions/ContextMenuRoot.js +112 -152
  79. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  80. package/dist/context-actions/GlobalContextAction.js +49 -84
  81. package/dist/context-actions/GlobalContextAction.js.map +1 -1
  82. package/dist/context-actions/GlobalContextActions.js +25 -57
  83. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  84. package/dist/context-actions/index.js +4 -4
  85. package/dist/context-actions/index.js.map +1 -1
  86. package/dist/index.js +39 -39
  87. package/dist/index.js.map +1 -1
  88. package/dist/menu-actions/DropdownMenu.js +126 -159
  89. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  90. package/dist/menu-actions/Menu.js +215 -245
  91. package/dist/menu-actions/Menu.js.map +1 -1
  92. package/dist/menu-actions/index.js +1 -1
  93. package/dist/menu-actions/index.js.map +1 -1
  94. package/dist/navigation/Menu.js +14 -18
  95. package/dist/navigation/Menu.js.map +1 -1
  96. package/dist/navigation/MenuItem.js +15 -14
  97. package/dist/navigation/MenuItem.js.map +1 -1
  98. package/dist/navigation/Page.js +7 -5
  99. package/dist/navigation/Page.js.map +1 -1
  100. package/dist/navigation/Stack.js +14 -39
  101. package/dist/navigation/Stack.js.map +1 -1
  102. package/dist/navigation/index.js +4 -4
  103. package/dist/navigation/index.js.map +1 -1
  104. package/dist/popper/Popper.js +209 -235
  105. package/dist/popper/Popper.js.map +1 -1
  106. package/dist/popper/Tooltip.js +227 -257
  107. package/dist/popper/Tooltip.js.map +1 -1
  108. package/dist/popper/index.js +2 -2
  109. package/dist/popper/index.js.map +1 -1
  110. package/dist/shortcuts/GlobalShortcuts.js +2 -2
  111. package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
  112. package/dist/shortcuts/Shortcut.js +263 -291
  113. package/dist/shortcuts/Shortcut.js.map +1 -1
  114. package/dist/shortcuts/ShortcutRegistry.js +48 -71
  115. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  116. package/dist/shortcuts/index.js +4 -4
  117. package/dist/shortcuts/index.js.map +1 -1
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/package.json +30 -54
@@ -1,31 +1,9 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
-
3
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4
-
5
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6
-
7
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8
-
9
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
10
-
11
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12
-
13
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
14
-
15
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
16
-
17
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
18
-
19
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
20
-
21
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
22
-
23
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
2
 
25
3
  import React, { Component } from 'react';
26
4
  import classNames from 'classnames';
27
5
  import Log from '@deephaven/log';
28
- import Popper from './Popper';
6
+ import Popper from "./Popper.js";
29
7
  var log = Log.module('Tooltip');
30
8
 
31
9
  /**
@@ -40,290 +18,282 @@ var log = Log.module('Tooltip');
40
18
  * </Tooltip>
41
19
  * </div>
42
20
  */
43
- var Tooltip = /*#__PURE__*/function (_Component) {
44
- _inherits(Tooltip, _Component);
45
-
46
- var _super = _createSuper(Tooltip);
21
+ class Tooltip extends Component {
22
+ static handleHidden() {
23
+ Tooltip.shownTooltipCount -= 1;
47
24
 
48
- function Tooltip(props) {
49
- var _this;
25
+ if (Tooltip.shownTooltipCount === 0) {
26
+ Tooltip.lastHiddenTime = Date.now();
27
+ }
28
+ }
50
29
 
51
- _classCallCheck(this, Tooltip);
30
+ static handleShown() {
31
+ Tooltip.shownTooltipCount += 1;
32
+ }
52
33
 
53
- _this = _super.call(this, props);
34
+ constructor(props) {
35
+ super(props);
54
36
 
55
- _defineProperty(_assertThisInitialized(_this), "container", void 0);
37
+ _defineProperty(this, "container", void 0);
56
38
 
57
- _defineProperty(_assertThisInitialized(_this), "popper", void 0);
39
+ _defineProperty(this, "popper", void 0);
58
40
 
59
- _defineProperty(_assertThisInitialized(_this), "parent", void 0);
41
+ _defineProperty(this, "parent", void 0);
60
42
 
61
- _defineProperty(_assertThisInitialized(_this), "timer", void 0);
43
+ _defineProperty(this, "timer", void 0);
62
44
 
63
- _this.handleMouseMove = _this.handleMouseMove.bind(_assertThisInitialized(_this));
64
- _this.handleMouseLeave = _this.handleMouseLeave.bind(_assertThisInitialized(_this));
65
- _this.handleWindowMouseMove = _this.handleWindowMouseMove.bind(_assertThisInitialized(_this));
66
- _this.handleWheel = _this.handleWheel.bind(_assertThisInitialized(_this));
67
- _this.handleTimeout = _this.handleTimeout.bind(_assertThisInitialized(_this));
68
- _this.handleExited = _this.handleExited.bind(_assertThisInitialized(_this));
69
- _this.stopShowingTooltip = _this.stopShowingTooltip.bind(_assertThisInitialized(_this));
70
- _this.container = /*#__PURE__*/React.createRef();
71
- _this.popper = /*#__PURE__*/React.createRef();
72
- _this.parent = null;
73
- _this.timer = null;
74
- _this.state = {
45
+ this.handleMouseMove = this.handleMouseMove.bind(this);
46
+ this.handleMouseLeave = this.handleMouseLeave.bind(this);
47
+ this.handleWindowMouseMove = this.handleWindowMouseMove.bind(this);
48
+ this.handleWheel = this.handleWheel.bind(this);
49
+ this.handleTimeout = this.handleTimeout.bind(this);
50
+ this.handleExited = this.handleExited.bind(this);
51
+ this.stopShowingTooltip = this.stopShowingTooltip.bind(this);
52
+ this.container = /*#__PURE__*/React.createRef();
53
+ this.popper = /*#__PURE__*/React.createRef();
54
+ this.parent = null;
55
+ this.timer = null;
56
+ this.state = {
75
57
  isShown: false
76
58
  };
77
- return _this;
78
59
  }
79
60
 
80
- _createClass(Tooltip, [{
81
- key: "componentDidMount",
82
- value: function componentDidMount() {
83
- this.startListening();
84
- var timeout = this.props.timeout;
61
+ componentDidMount() {
62
+ this.startListening();
63
+ var {
64
+ timeout
65
+ } = this.props;
85
66
 
86
- if (timeout === 0) {
87
- this.show();
88
- }
89
- }
90
- }, {
91
- key: "componentDidUpdate",
92
- value: function componentDidUpdate(prevProps, prevState) {
93
- var oldIsShown = prevState.isShown;
94
- var isShown = this.state.isShown;
95
-
96
- if (isShown !== oldIsShown) {
97
- if (isShown) {
98
- Tooltip.handleShown();
99
- } else {
100
- Tooltip.handleHidden();
101
- }
102
- }
67
+ if (timeout === 0) {
68
+ this.show();
103
69
  }
104
- }, {
105
- key: "componentWillUnmount",
106
- value: function componentWillUnmount() {
107
- this.stopListening();
108
- this.stopListeningWindow();
109
- this.stopTimer();
110
- var isShown = this.state.isShown;
70
+ }
111
71
 
72
+ componentDidUpdate(prevProps, prevState) {
73
+ var {
74
+ isShown: oldIsShown
75
+ } = prevState;
76
+ var {
77
+ isShown
78
+ } = this.state;
79
+
80
+ if (isShown !== oldIsShown) {
112
81
  if (isShown) {
82
+ Tooltip.handleShown();
83
+ } else {
113
84
  Tooltip.handleHidden();
114
85
  }
115
86
  }
116
- }, {
117
- key: "startListening",
118
- value: function startListening() {
119
- if (!this.container.current || !this.container.current.parentElement) {
120
- log.error("Tooltip doesn't have a container or a parent set!");
121
- return;
122
- }
87
+ }
123
88
 
124
- this.parent = this.container.current.parentElement;
125
- this.parent.addEventListener('mousemove', this.handleMouseMove);
126
- this.parent.addEventListener('mouseleave', this.handleMouseLeave);
127
- this.parent.addEventListener('mousedown', this.stopShowingTooltip);
128
- }
129
- }, {
130
- key: "stopListening",
131
- value: function stopListening() {
132
- if (!this.parent) {
133
- return;
134
- }
89
+ componentWillUnmount() {
90
+ this.stopListening();
91
+ this.stopListeningWindow();
92
+ this.stopTimer();
93
+ var {
94
+ isShown
95
+ } = this.state;
135
96
 
136
- this.parent.removeEventListener('mousemove', this.handleMouseMove);
137
- this.parent.removeEventListener('mouseleave', this.handleMouseLeave);
138
- this.parent.removeEventListener('mousedown', this.stopShowingTooltip);
139
- }
140
- }, {
141
- key: "startListeningWindow",
142
- value: function startListeningWindow() {
143
- window.addEventListener('mousemove', this.handleWindowMouseMove, true);
144
- window.addEventListener('contextmenu', this.stopShowingTooltip, true);
145
- window.addEventListener('wheel', this.handleWheel);
146
- }
147
- }, {
148
- key: "stopListeningWindow",
149
- value: function stopListeningWindow() {
150
- window.removeEventListener('mousemove', this.handleWindowMouseMove, true);
151
- window.removeEventListener('contextmenu', this.stopShowingTooltip, true);
152
- window.removeEventListener('wheel', this.handleWheel);
153
- }
154
- }, {
155
- key: "handleMouseMove",
156
- value: function handleMouseMove() {
157
- this.startTimer();
97
+ if (isShown) {
98
+ Tooltip.handleHidden();
158
99
  }
159
- }, {
160
- key: "handleWheel",
161
- value: function handleWheel() {
162
- var isShown = this.state.isShown;
163
-
164
- if (this.popper.current && this.parent && isShown) {
165
- if (!this.popper.current.element.matches(':hover') && !this.parent.matches(':hover')) {
166
- this.stopTimer();
167
- this.hide();
168
- }
169
- }
170
- }
171
- }, {
172
- key: "handleMouseLeave",
173
- value: function handleMouseLeave() {
174
- var isShown = this.state.isShown;
175
- this.stopTimer();
176
- var interactive = this.props.interactive;
100
+ }
177
101
 
178
- if (!interactive && isShown) {
179
- this.hide();
180
- }
102
+ startListening() {
103
+ if (!this.container.current || !this.container.current.parentElement) {
104
+ log.error("Tooltip doesn't have a container or a parent set!");
105
+ return;
181
106
  }
182
- }, {
183
- key: "handleTimeout",
184
- value: function handleTimeout() {
185
- this.show();
107
+
108
+ this.parent = this.container.current.parentElement;
109
+ this.parent.addEventListener('mousemove', this.handleMouseMove);
110
+ this.parent.addEventListener('mouseleave', this.handleMouseLeave);
111
+ this.parent.addEventListener('mousedown', this.stopShowingTooltip);
112
+ }
113
+
114
+ stopListening() {
115
+ if (!this.parent) {
116
+ return;
186
117
  }
187
- }, {
188
- key: "handleWindowMouseMove",
189
- value: function handleWindowMouseMove(event) {
190
- var mouseX = event.clientX;
191
- var mouseY = event.clientY;
192
- var isShown = this.state.isShown;
193
-
194
- if (!this.popper.current || !this.parent) {
195
- return;
196
- }
197
118
 
198
- var popperRect = this.popper.current.element.getBoundingClientRect();
199
- var parentRect = this.parent.getBoundingClientRect();
119
+ this.parent.removeEventListener('mousemove', this.handleMouseMove);
120
+ this.parent.removeEventListener('mouseleave', this.handleMouseLeave);
121
+ this.parent.removeEventListener('mousedown', this.stopShowingTooltip);
122
+ }
123
+
124
+ startListeningWindow() {
125
+ window.addEventListener('mousemove', this.handleWindowMouseMove, true);
126
+ window.addEventListener('contextmenu', this.stopShowingTooltip, true);
127
+ window.addEventListener('wheel', this.handleWheel);
128
+ }
129
+
130
+ stopListeningWindow() {
131
+ window.removeEventListener('mousemove', this.handleWindowMouseMove, true);
132
+ window.removeEventListener('contextmenu', this.stopShowingTooltip, true);
133
+ window.removeEventListener('wheel', this.handleWheel);
134
+ }
135
+
136
+ handleMouseMove() {
137
+ this.startTimer();
138
+ }
139
+
140
+ handleWheel() {
141
+ var {
142
+ isShown
143
+ } = this.state;
200
144
 
201
- if (mouseX >= popperRect.left && mouseX <= popperRect.left + popperRect.width && mouseY >= popperRect.top && mouseY <= popperRect.top + popperRect.height) {
202
- this.handleMouseMove();
203
- } else if (mouseX >= parentRect.left && mouseX <= parentRect.left + parentRect.width && mouseY >= parentRect.top && mouseY <= parentRect.top + parentRect.height) {
204
- this.handleMouseMove();
205
- } else if (isShown) {
145
+ if (this.popper.current && this.parent && isShown) {
146
+ if (!this.popper.current.element.matches(':hover') && !this.parent.matches(':hover')) {
206
147
  this.stopTimer();
207
148
  this.hide();
208
149
  }
209
150
  }
210
- }, {
211
- key: "startTimer",
212
- value: function startTimer() {
213
- this.stopTimer();
214
- var _this$props = this.props,
215
- timeout = _this$props.timeout,
216
- reshowTimeout = _this$props.reshowTimeout;
217
- var timerTimeout = timeout;
218
-
219
- if (Tooltip.shownTooltipCount > 0 || Date.now() - Tooltip.lastHiddenTime < Tooltip.triggerReshowThreshold) {
220
- timerTimeout = reshowTimeout;
221
- }
151
+ }
222
152
 
223
- this.timer = window.setTimeout(this.handleTimeout, timerTimeout);
224
- }
225
- }, {
226
- key: "stopTimer",
227
- value: function stopTimer() {
228
- if (this.timer) {
229
- clearTimeout(this.timer);
230
- this.timer = null;
231
- }
153
+ handleMouseLeave() {
154
+ var {
155
+ isShown
156
+ } = this.state;
157
+ this.stopTimer();
158
+ var {
159
+ interactive
160
+ } = this.props;
161
+
162
+ if (!interactive && isShown) {
163
+ this.hide();
232
164
  }
233
- }, {
234
- key: "show",
235
- value: function show() {
236
- var isShown = this.state.isShown;
237
- this.stopTimer();
165
+ }
238
166
 
239
- if (!isShown) {
240
- var _this$popper$current;
167
+ handleTimeout() {
168
+ this.show();
169
+ }
241
170
 
242
- (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 ? void 0 : _this$popper$current.show();
243
- this.setState({
244
- isShown: true
245
- });
246
- var interactive = this.props.interactive;
171
+ handleWindowMouseMove(event) {
172
+ var mouseX = event.clientX;
173
+ var mouseY = event.clientY;
174
+ var {
175
+ isShown
176
+ } = this.state;
247
177
 
248
- if (interactive) {
249
- this.startListeningWindow();
250
- }
251
- }
178
+ if (!this.popper.current || !this.parent) {
179
+ return;
252
180
  }
253
- }, {
254
- key: "hide",
255
- value: function hide() {
256
- var _this$popper$current2;
257
181
 
258
- (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.hide();
259
- this.stopListeningWindow();
182
+ var popperRect = this.popper.current.element.getBoundingClientRect();
183
+ var parentRect = this.parent.getBoundingClientRect();
184
+
185
+ if (mouseX >= popperRect.left && mouseX <= popperRect.left + popperRect.width && mouseY >= popperRect.top && mouseY <= popperRect.top + popperRect.height) {
186
+ this.handleMouseMove();
187
+ } else if (mouseX >= parentRect.left && mouseX <= parentRect.left + parentRect.width && mouseY >= parentRect.top && mouseY <= parentRect.top + parentRect.height) {
188
+ this.handleMouseMove();
189
+ } else if (isShown) {
190
+ this.stopTimer();
191
+ this.hide();
260
192
  }
261
- }, {
262
- key: "update",
263
- value: function update() {
264
- var _this$popper$current3;
193
+ }
194
+
195
+ startTimer() {
196
+ this.stopTimer();
197
+ var {
198
+ timeout,
199
+ reshowTimeout
200
+ } = this.props;
201
+ var timerTimeout = timeout;
265
202
 
266
- (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 ? void 0 : _this$popper$current3.scheduleUpdate();
203
+ if (Tooltip.shownTooltipCount > 0 || Date.now() - Tooltip.lastHiddenTime < Tooltip.triggerReshowThreshold) {
204
+ timerTimeout = reshowTimeout;
267
205
  }
268
- }, {
269
- key: "handleExited",
270
- value: function handleExited() {
206
+
207
+ this.timer = window.setTimeout(this.handleTimeout, timerTimeout);
208
+ }
209
+
210
+ stopTimer() {
211
+ if (this.timer) {
212
+ clearTimeout(this.timer);
213
+ this.timer = null;
214
+ }
215
+ }
216
+
217
+ show() {
218
+ var {
219
+ isShown
220
+ } = this.state;
221
+ this.stopTimer();
222
+
223
+ if (!isShown) {
224
+ var _this$popper$current;
225
+
226
+ (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 ? void 0 : _this$popper$current.show();
271
227
  this.setState({
272
- isShown: false
228
+ isShown: true
273
229
  });
274
- }
275
- }, {
276
- key: "stopShowingTooltip",
277
- value: function stopShowingTooltip() {
278
- var isShown = this.state.isShown;
279
- this.stopTimer();
230
+ var {
231
+ interactive
232
+ } = this.props;
280
233
 
281
- if (isShown) {
282
- this.hide();
234
+ if (interactive) {
235
+ this.startListeningWindow();
283
236
  }
284
237
  }
285
- }, {
286
- key: "render",
287
- value: function render() {
288
- var _this$props2 = this.props,
289
- interactive = _this$props2.interactive,
290
- children = _this$props2.children,
291
- options = _this$props2.options,
292
- popperClassName = _this$props2.popperClassName;
293
- var isShown = this.state.isShown;
294
- return /*#__PURE__*/React.createElement("div", {
295
- ref: this.container,
296
- style: {
297
- display: 'none'
298
- }
299
- }, /*#__PURE__*/React.createElement(Popper, {
300
- className: classNames(popperClassName),
301
- options: options,
302
- ref: this.popper,
303
- onExited: this.handleExited,
304
- interactive: interactive
305
- }, /*#__PURE__*/React.createElement("div", {
306
- className: "tooltip-content"
307
- }, " ", isShown && children)));
238
+ }
239
+
240
+ hide() {
241
+ var _this$popper$current2;
242
+
243
+ (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.hide();
244
+ this.stopListeningWindow();
245
+ }
246
+
247
+ update() {
248
+ var _this$popper$current3;
249
+
250
+ (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 ? void 0 : _this$popper$current3.scheduleUpdate();
251
+ }
252
+
253
+ handleExited() {
254
+ this.setState({
255
+ isShown: false
256
+ });
257
+ }
258
+
259
+ stopShowingTooltip() {
260
+ var {
261
+ isShown
262
+ } = this.state;
263
+ this.stopTimer();
264
+
265
+ if (isShown) {
266
+ this.hide();
308
267
  }
309
- }], [{
310
- key: "handleHidden",
311
- value: function handleHidden() {
312
- Tooltip.shownTooltipCount -= 1;
268
+ }
313
269
 
314
- if (Tooltip.shownTooltipCount === 0) {
315
- Tooltip.lastHiddenTime = Date.now();
270
+ render() {
271
+ var {
272
+ interactive,
273
+ children,
274
+ options,
275
+ popperClassName
276
+ } = this.props;
277
+ var {
278
+ isShown
279
+ } = this.state;
280
+ return /*#__PURE__*/React.createElement("div", {
281
+ ref: this.container,
282
+ style: {
283
+ display: 'none'
316
284
  }
317
- }
318
- }, {
319
- key: "handleShown",
320
- value: function handleShown() {
321
- Tooltip.shownTooltipCount += 1;
322
- }
323
- }]);
285
+ }, /*#__PURE__*/React.createElement(Popper, {
286
+ className: classNames(popperClassName),
287
+ options: options,
288
+ ref: this.popper,
289
+ onExited: this.handleExited,
290
+ interactive: interactive
291
+ }, /*#__PURE__*/React.createElement("div", {
292
+ className: "tooltip-content"
293
+ }, " ", isShown && children)));
294
+ }
324
295
 
325
- return Tooltip;
326
- }(Component);
296
+ }
327
297
 
328
298
  _defineProperty(Tooltip, "defaultTimeout", 500);
329
299
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/popper/Tooltip.tsx"],"names":["React","Component","classNames","Log","Popper","log","module","Tooltip","props","handleMouseMove","bind","handleMouseLeave","handleWindowMouseMove","handleWheel","handleTimeout","handleExited","stopShowingTooltip","container","createRef","popper","parent","timer","state","isShown","startListening","timeout","show","prevProps","prevState","oldIsShown","handleShown","handleHidden","stopListening","stopListeningWindow","stopTimer","current","parentElement","error","addEventListener","removeEventListener","window","startTimer","element","matches","hide","interactive","event","mouseX","clientX","mouseY","clientY","popperRect","getBoundingClientRect","parentRect","left","width","top","height","reshowTimeout","timerTimeout","shownTooltipCount","Date","now","lastHiddenTime","triggerReshowThreshold","setTimeout","clearTimeout","setState","startListeningWindow","scheduleUpdate","children","options","popperClassName","display","defaultReshowTimeout","defaultTimeout"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport Popper, { PopperOptions } from './Popper';\n\nconst log = Log.module('Tooltip');\n\ninterface TooltipProps {\n interactive: boolean;\n options: PopperOptions;\n timeout: number;\n reshowTimeout: number;\n children: React.ReactNode;\n popperClassName: string;\n}\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 };\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) {\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.setState({ isShown: true });\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 }\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 { interactive, children, options, popperClassName } = this.props;\n const { isShown } = this.state;\n return (\n <div ref={this.container} style={{ display: 'none' }}>\n <Popper\n className={classNames(popperClassName)}\n options={options}\n ref={this.popper}\n onExited={this.handleExited}\n interactive={interactive}\n >\n <div className=\"tooltip-content\"> {isShown && children}</div>\n </Popper>\n </div>\n );\n }\n}\n\nexport default Tooltip;\n"],"file":"Tooltip.js"}
1
+ {"version":3,"sources":["../../src/popper/Tooltip.tsx"],"names":["React","Component","classNames","Log","Popper","log","module","Tooltip","handleHidden","shownTooltipCount","lastHiddenTime","Date","now","handleShown","constructor","props","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","setState","update","scheduleUpdate","render","children","options","popperClassName","display","defaultReshowTimeout","defaultTimeout"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport Popper, { PopperOptions } from './Popper';\n\nconst log = Log.module('Tooltip');\n\ninterface TooltipProps {\n interactive: boolean;\n options: PopperOptions;\n timeout: number;\n reshowTimeout: number;\n children: React.ReactNode;\n popperClassName: string;\n}\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 };\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) {\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.setState({ isShown: true });\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 }\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 { interactive, children, options, popperClassName } = this.props;\n const { isShown } = this.state;\n return (\n <div ref={this.container} style={{ display: 'none' }}>\n <Popper\n className={classNames(popperClassName)}\n options={options}\n ref={this.popper}\n onExited={this.handleExited}\n interactive={interactive}\n >\n <div className=\"tooltip-content\"> {isShown && children}</div>\n </Popper>\n </div>\n );\n }\n}\n\nexport default Tooltip;\n"],"file":"Tooltip.js"}
@@ -1,3 +1,3 @@
1
- export { default as Popper } from './Popper';
2
- export { default as Tooltip } from './Tooltip';
1
+ export { default as Popper } from "./Popper.js";
2
+ export { default as Tooltip } from "./Tooltip.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/popper/index.ts"],"names":["default","Popper","Tooltip"],"mappings":"AAAA,SAASA,OAAO,IAAIC,MAApB,QAAkC,UAAlC;AACA,SAASD,OAAO,IAAIE,OAApB,QAAmC,WAAnC","sourcesContent":["export { default as Popper } from './Popper';\nexport { default as Tooltip } from './Tooltip';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/popper/index.ts"],"names":["default","Popper","Tooltip"],"mappings":"SAASA,OAAO,IAAIC,M;SACXD,OAAO,IAAIE,O","sourcesContent":["export { default as Popper } from './Popper';\nexport { default as Tooltip } from './Tooltip';\n"],"file":"index.js"}
@@ -1,5 +1,5 @@
1
- import ShortcutRegistry from './ShortcutRegistry';
2
- import { MODIFIER, KEY } from './Shortcut';
1
+ import ShortcutRegistry from "./ShortcutRegistry.js";
2
+ import { MODIFIER, KEY } from "./Shortcut.js";
3
3
  var GLOBAL_SHORTCUTS = {
4
4
  COPY: ShortcutRegistry.createAndAdd({
5
5
  id: 'GLOBAL.COPY',