@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.
- package/dist/AutoCompleteInput.js +41 -79
- package/dist/AutoCompleteInput.js.map +1 -1
- package/dist/AutoResizeTextarea.js +29 -13
- package/dist/AutoResizeTextarea.js.map +1 -1
- package/dist/BasicModal.js +17 -15
- package/dist/BasicModal.js.map +1 -1
- package/dist/BulkActionBar.js +3 -5
- package/dist/BulkActionBar.js.map +1 -1
- package/dist/Button.js +24 -25
- package/dist/Button.js.map +1 -1
- package/dist/CardFlip.js +4 -6
- package/dist/CardFlip.js.map +1 -1
- package/dist/Checkbox.js +22 -13
- package/dist/Checkbox.js.map +1 -1
- package/dist/Collapse.js +6 -9
- package/dist/Collapse.js.map +1 -1
- package/dist/CopyButton.js +14 -6
- package/dist/CopyButton.js.map +1 -1
- package/dist/CustomTimeSelect.js +49 -88
- package/dist/CustomTimeSelect.js.map +1 -1
- package/dist/DateInput.js +25 -10
- package/dist/DateInput.js.map +1 -1
- package/dist/DateInputUtils.js +1 -3
- package/dist/DateInputUtils.js.map +1 -1
- package/dist/DateTimeInput.js +28 -12
- package/dist/DateTimeInput.js.map +1 -1
- package/dist/DebouncedSearchInput.js +10 -19
- package/dist/DebouncedSearchInput.js.map +1 -1
- package/dist/DragUtils.js +15 -6
- package/dist/DragUtils.js.map +1 -1
- package/dist/DraggableItemList.js +42 -57
- package/dist/DraggableItemList.js.map +1 -1
- package/dist/EditableItemList.js +28 -13
- package/dist/EditableItemList.js.map +1 -1
- package/dist/ErrorBoundary.js +6 -11
- package/dist/ErrorBoundary.js.map +1 -1
- package/dist/ErrorView.js +20 -8
- package/dist/ErrorView.js.map +1 -1
- package/dist/HierarchicalCheckboxMenu.js +30 -28
- package/dist/HierarchicalCheckboxMenu.js.map +1 -1
- package/dist/ItemList.js +96 -168
- package/dist/ItemList.js.map +1 -1
- package/dist/ItemListItem.js +46 -60
- package/dist/ItemListItem.js.map +1 -1
- package/dist/LoadingOverlay.js +13 -9
- package/dist/LoadingOverlay.js.map +1 -1
- package/dist/LoadingSpinner.js +3 -4
- package/dist/LoadingSpinner.js.map +1 -1
- package/dist/MaskedInput.js +44 -41
- package/dist/MaskedInput.js.map +1 -1
- package/dist/MaskedInputUtils.js +1 -3
- package/dist/MaskedInputUtils.js.map +1 -1
- package/dist/Option.js +1 -3
- package/dist/Option.js.map +1 -1
- package/dist/RadioGroup.js +17 -9
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioItem.js +25 -14
- package/dist/RadioItem.js.map +1 -1
- package/dist/RandomAreaPlotAnimation.js +17 -13
- package/dist/RandomAreaPlotAnimation.js.map +1 -1
- package/dist/SearchInput.js +13 -14
- package/dist/SearchInput.js.map +1 -1
- package/dist/SearchableCombobox.js +3 -5
- package/dist/SearchableCombobox.js.map +1 -1
- package/dist/Select.js +5 -7
- package/dist/Select.js.map +1 -1
- package/dist/SelectValueList.js +21 -30
- package/dist/SelectValueList.js.map +1 -1
- package/dist/SocketedButton.js +18 -17
- package/dist/SocketedButton.js.map +1 -1
- package/dist/SplitButtonGroup.js +4 -6
- package/dist/SplitButtonGroup.js.map +1 -1
- package/dist/TableViewEmptyState.js +14 -6
- package/dist/TableViewEmptyState.js.map +1 -1
- package/dist/TextWithTooltip.js +3 -4
- package/dist/TextWithTooltip.js.map +1 -1
- package/dist/TimeInput.js +29 -12
- package/dist/TimeInput.js.map +1 -1
- package/dist/TimeSlider.js +46 -38
- package/dist/TimeSlider.js.map +1 -1
- package/dist/ToastNotification.js +9 -10
- package/dist/ToastNotification.js.map +1 -1
- package/dist/UISwitch.js +8 -9
- package/dist/UISwitch.js.map +1 -1
- package/dist/actions/ConfirmActionButton.js +7 -9
- package/dist/actions/ConfirmActionButton.js.map +1 -1
- package/dist/actions/IconActionButton.js +3 -5
- package/dist/actions/IconActionButton.js.map +1 -1
- package/dist/context-actions/ContextActionUtils.js +1 -3
- package/dist/context-actions/ContextActionUtils.js.map +1 -1
- package/dist/context-actions/ContextActions.js +8 -18
- package/dist/context-actions/ContextActions.js.map +1 -1
- package/dist/context-actions/ContextMenu.js +53 -89
- package/dist/context-actions/ContextMenu.js.map +1 -1
- package/dist/context-actions/ContextMenuItem.js +11 -11
- package/dist/context-actions/ContextMenuItem.js.map +1 -1
- package/dist/context-actions/ContextMenuRoot.js +6 -11
- package/dist/context-actions/ContextMenuRoot.js.map +1 -1
- package/dist/context-actions/GlobalContextAction.js +2 -6
- package/dist/context-actions/GlobalContextAction.js.map +1 -1
- package/dist/context-actions/GlobalContextActions.js +4 -7
- package/dist/context-actions/GlobalContextActions.js.map +1 -1
- package/dist/dialogs/ActionButtonDialogTrigger.js +7 -9
- package/dist/dialogs/ActionButtonDialogTrigger.js.map +1 -1
- package/dist/dialogs/ConfirmationDialog.js +8 -11
- package/dist/dialogs/ConfirmationDialog.js.map +1 -1
- package/dist/menu-actions/DropdownMenu.js +12 -22
- package/dist/menu-actions/DropdownMenu.js.map +1 -1
- package/dist/menu-actions/Menu.js +19 -45
- package/dist/menu-actions/Menu.js.map +1 -1
- package/dist/modal/DebouncedModal.js +8 -9
- package/dist/modal/DebouncedModal.js.map +1 -1
- package/dist/modal/InfoModal.js +6 -7
- package/dist/modal/InfoModal.js.map +1 -1
- package/dist/modal/Modal.js +27 -15
- package/dist/modal/Modal.js.map +1 -1
- package/dist/modal/ModalBody.js +4 -6
- package/dist/modal/ModalBody.js.map +1 -1
- package/dist/modal/ModalFooter.js +3 -5
- package/dist/modal/ModalFooter.js.map +1 -1
- package/dist/modal/ModalHeader.js +7 -8
- package/dist/modal/ModalHeader.js.map +1 -1
- package/dist/navigation/DashboardList.js +17 -6
- package/dist/navigation/DashboardList.js.map +1 -1
- package/dist/navigation/Menu.js +4 -5
- package/dist/navigation/Menu.js.map +1 -1
- package/dist/navigation/MenuItem.js +7 -10
- package/dist/navigation/MenuItem.js.map +1 -1
- package/dist/navigation/NavTab.js +14 -17
- package/dist/navigation/NavTab.js.map +1 -1
- package/dist/navigation/NavTabList.js +39 -33
- package/dist/navigation/NavTabList.js.map +1 -1
- package/dist/navigation/Page.js +5 -7
- package/dist/navigation/Page.js.map +1 -1
- package/dist/navigation/Stack.js +20 -7
- package/dist/navigation/Stack.js.map +1 -1
- package/dist/popper/Popper.js +30 -57
- package/dist/popper/Popper.js.map +1 -1
- package/dist/popper/Tooltip.js +24 -54
- package/dist/popper/Tooltip.js.map +1 -1
- package/dist/shortcuts/Shortcut.js +10 -15
- package/dist/shortcuts/Shortcut.js.map +1 -1
- package/dist/shortcuts/ShortcutRegistry.js +1 -3
- package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
- package/dist/spectrum/ActionGroup.js +7 -9
- package/dist/spectrum/ActionGroup.js.map +1 -1
- package/dist/spectrum/ActionMenu.js +3 -5
- package/dist/spectrum/ActionMenu.js.map +1 -1
- package/dist/spectrum/CheckboxGroup.js +1 -3
- package/dist/spectrum/CheckboxGroup.js.map +1 -1
- package/dist/spectrum/Heading.js +2 -4
- package/dist/spectrum/Heading.js.map +1 -1
- package/dist/spectrum/ItemContent.js +16 -10
- package/dist/spectrum/ItemContent.js.map +1 -1
- package/dist/spectrum/ItemTooltip.js +2 -4
- package/dist/spectrum/ItemTooltip.js.map +1 -1
- package/dist/spectrum/TabPanels.js +3 -4
- package/dist/spectrum/TabPanels.js.map +1 -1
- package/dist/spectrum/Text.js +2 -4
- package/dist/spectrum/Text.js.map +1 -1
- package/dist/spectrum/View.js +11 -14
- package/dist/spectrum/View.js.map +1 -1
- package/dist/spectrum/comboBox/ComboBox.js +5 -9
- package/dist/spectrum/comboBox/ComboBox.js.map +1 -1
- package/dist/spectrum/comboBox/ComboBoxNormalized.js +3 -7
- package/dist/spectrum/comboBox/ComboBoxNormalized.js.map +1 -1
- package/dist/spectrum/listView/ListView.js +11 -11
- package/dist/spectrum/listView/ListView.js.map +1 -1
- package/dist/spectrum/listView/ListViewNormalized.js +22 -24
- package/dist/spectrum/listView/ListViewNormalized.js.map +1 -1
- package/dist/spectrum/listView/ListViewWrapper.js +11 -15
- package/dist/spectrum/listView/ListViewWrapper.js.map +1 -1
- package/dist/spectrum/multiSelect/MultiSelect.js +113 -100
- package/dist/spectrum/multiSelect/MultiSelect.js.map +1 -1
- package/dist/spectrum/multiSelect/MultiSelectListBox.js +9 -11
- package/dist/spectrum/multiSelect/MultiSelectListBox.js.map +1 -1
- package/dist/spectrum/multiSelect/MultiSelectNormalized.js +3 -7
- package/dist/spectrum/multiSelect/MultiSelectNormalized.js.map +1 -1
- package/dist/spectrum/multiSelect/MultiSelectTag.js +5 -7
- package/dist/spectrum/multiSelect/MultiSelectTag.js.map +1 -1
- package/dist/spectrum/multiSelect/useMultiSelectFilter.js +20 -14
- package/dist/spectrum/multiSelect/useMultiSelectFilter.js.map +1 -1
- package/dist/spectrum/multiSelect/useMultiSelectKeyboard.js +27 -20
- package/dist/spectrum/multiSelect/useMultiSelectKeyboard.js.map +1 -1
- package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.js +14 -7
- package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.js.map +1 -1
- package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.js +20 -22
- package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.js.map +1 -1
- package/dist/spectrum/multiSelect/useMultiSelectScrollListener.js +13 -6
- package/dist/spectrum/multiSelect/useMultiSelectScrollListener.js.map +1 -1
- package/dist/spectrum/multiSelect/useMultiSelectState.js +16 -9
- package/dist/spectrum/multiSelect/useMultiSelectState.js.map +1 -1
- package/dist/spectrum/picker/Picker.js +5 -9
- package/dist/spectrum/picker/Picker.js.map +1 -1
- package/dist/spectrum/picker/PickerNormalized.js +2 -6
- package/dist/spectrum/picker/PickerNormalized.js.map +1 -1
- package/dist/spectrum/picker/usePickerItemScale.js +2 -3
- package/dist/spectrum/picker/usePickerItemScale.js.map +1 -1
- package/dist/spectrum/picker/usePickerNormalizedProps.js +31 -33
- package/dist/spectrum/picker/usePickerNormalizedProps.js.map +1 -1
- package/dist/spectrum/picker/usePickerProps.js +26 -29
- package/dist/spectrum/picker/usePickerProps.js.map +1 -1
- package/dist/spectrum/picker/usePickerScrollOnOpen.js +6 -9
- package/dist/spectrum/picker/usePickerScrollOnOpen.js.map +1 -1
- package/dist/spectrum/utils/itemUtils.js +4 -6
- package/dist/spectrum/utils/itemUtils.js.map +1 -1
- package/dist/spectrum/utils/propsUtils.js +35 -37
- package/dist/spectrum/utils/propsUtils.js.map +1 -1
- package/dist/spectrum/utils/themeUtils.js +5 -7
- package/dist/spectrum/utils/themeUtils.js.map +1 -1
- package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js +13 -6
- package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js.map +1 -1
- package/dist/spectrum/utils/useRenderNormalizedItem.js +5 -7
- package/dist/spectrum/utils/useRenderNormalizedItem.js.map +1 -1
- package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js +4 -6
- package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js.map +1 -1
- package/dist/spectrum/utils/useStringifiedMultiSelection.js +5 -7
- package/dist/spectrum/utils/useStringifiedMultiSelection.js.map +1 -1
- package/dist/spectrum/utils/useStringifiedSelection.js +5 -7
- package/dist/spectrum/utils/useStringifiedSelection.js.map +1 -1
- package/dist/theme/FontBootstrap.js +13 -5
- package/dist/theme/FontBootstrap.js.map +1 -1
- package/dist/theme/FontsLoaded.js +1 -3
- package/dist/theme/FontsLoaded.js.map +1 -1
- package/dist/theme/Logo.js +2 -4
- package/dist/theme/Logo.js.map +1 -1
- package/dist/theme/SpectrumThemeProvider.js +17 -9
- package/dist/theme/SpectrumThemeProvider.js.map +1 -1
- package/dist/theme/ThemePicker.js +4 -5
- package/dist/theme/ThemePicker.js.map +1 -1
- package/dist/theme/ThemeProvider.js +20 -8
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/ThemeUtils.js +35 -19
- package/dist/theme/ThemeUtils.js.map +1 -1
- package/dist/theme/useExternalTheme.js +16 -7
- package/dist/theme/useExternalTheme.js.map +1 -1
- package/dist/transitions/FadeTransition.js +5 -6
- package/dist/transitions/FadeTransition.js.map +1 -1
- package/dist/transitions/SlideTransition.js +6 -7
- package/dist/transitions/SlideTransition.js.map +1 -1
- package/package.json +8 -8
package/dist/popper/Popper.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":[]}
|
package/dist/popper/Tooltip.js
CHANGED
|
@@ -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
|
-
|
|
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'
|
|
247
|
-
onEntered
|
|
248
|
-
|
|
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":";;;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,SAAS,QAAQ,WAAW;AACrC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,GAAG,MAAM,gBAAgB;AAAC,OAC1BC,MAAM;AAAA,SAAAC,IAAA,IAAAC,KAAA,EAAAC,GAAA,IAAAC,IAAA;AAEb,IAAMC,GAAG,GAAGN,GAAG,CAACO,MAAM,CAAC,SAAS,CAAC;AAkBjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,OAAO,SAASX,SAAS,CAA6B;EAsB1D,OAAOY,YAAYA,CAAA,EAAS;IAC1BD,OAAO,CAACE,iBAAiB,IAAI,CAAC;IAE9B,IAAIF,OAAO,CAACE,iBAAiB,KAAK,CAAC,EAAE;MACnCF,OAAO,CAACG,cAAc,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IACrC;EACF;EAEA,OAAOC,WAAWA,CAAA,EAAS;IACzBN,OAAO,CAACE,iBAAiB,IAAI,CAAC;EAChC;EAEAK,WAAWA,CAACC,KAAmB,EAAE;IAC/B,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IA4Df;IACA;IAAAA,eAAA;IA3DE,IAAI,CAACC,eAAe,GAAG,IAAI,CAACA,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACD,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACE,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACF,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACG,WAAW,GAAG,IAAI,CAACA,WAAW,CAACH,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACI,aAAa,GAAG,IAAI,CAACA,aAAa,CAACJ,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACK,YAAY,GAAG,IAAI,CAACA,YAAY,CAACL,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACM,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACN,IAAI,CAAC,IAAI,CAAC;IAE5D,IAAI,CAACO,SAAS,gBAAG9B,KAAK,CAAC+B,SAAS,CAAC,CAAC;IAClC,IAAI,CAACC,MAAM,gBAAGhC,KAAK,CAAC+B,SAAS,CAAC,CAAC;IAC/B,IAAI,CAACE,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,KAAK,GAAG,IAAI;IAEjB,IAAI,CAACC,KAAK,GAAG;MACXC,OAAO,EAAE;IACX,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACC,cAAc,CAAC,CAAC;IAErB,IAAQC,OAAO,GAAK,IAAI,CAACnB,KAAK,CAAtBmB,OAAO;IACf,IAAIA,OAAO,KAAK,CAAC,EAAE;MACjB,IAAI,CAACC,IAAI,CAAC,CAAC;IACb;EACF;EAEAC,kBAAkBA,CAACC,SAAuB,EAAEC,SAAuB,EAAQ;IACzE,IAAiBC,UAAU,GAAKD,SAAS,CAAjCP,OAAO;IACf,IAAQA,OAAO,GAAK,IAAI,CAACD,KAAK,CAAtBC,OAAO;IAEf,IAAIA,OAAO,KAAKQ,UAAU,EAAE;MAC1B,IAAIR,OAAO,EAAE;QACXxB,OAAO,CAACM,WAAW,CAAC,CAAC;MACvB,CAAC,MAAM;QACLN,OAAO,CAACC,YAAY,CAAC,CAAC;MACxB;IACF;EACF;EAEAgC,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAACC,aAAa,CAAC,CAAC;IACpB,IAAI,CAACC,mBAAmB,CAAC,CAAC;IAC1B,IAAI,CAACC,SAAS,CAAC,CAAC;IAEhB,IAAQZ,OAAO,GAAK,IAAI,CAACD,KAAK,CAAtBC,OAAO;IAEf,IAAIA,OAAO,EAAE;MACXxB,OAAO,CAACC,YAAY,CAAC,CAAC;IACxB;EACF;EAYAyB,cAAcA,CAAA,EAAS;IACrB,IAAI,CAAC,IAAI,CAACR,SAAS,CAACmB,OAAO,IAAI,CAAC,IAAI,CAACnB,SAAS,CAACmB,OAAO,CAACC,aAAa,EAAE;MACpExC,GAAG,CAACyC,KAAK,CAAC,mDAAmD,CAAC;MAC9D;IACF;IAEA,IAAI,CAAClB,MAAM,GAAG,IAAI,CAACH,SAAS,CAACmB,OAAO,CAACC,aAAa;IAClD,IAAI,CAACjB,MAAM,CAACmB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC9B,eAAe,CAAC;IAC/D,IAAI,CAACW,MAAM,CAACmB,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC5B,gBAAgB,CAAC;IACjE,IAAI,CAACS,MAAM,CAACmB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACvB,kBAAkB,CAAC;EACpE;EAEAiB,aAAaA,CAAA,EAAS;IACpB,IAAI,CAAC,IAAI,CAACb,MAAM,EAAE;MAChB;IACF;IAEA,IAAI,CAACA,MAAM,CAACoB,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC/B,eAAe,CAAC;IAClE,IAAI,CAACW,MAAM,CAACoB,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC7B,gBAAgB,CAAC;IACpE,IAAI,CAACS,MAAM,CAACoB,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACxB,kBAAkB,CAAC;EACvE;EAEAyB,oBAAoBA,CAAA,EAAS;IAC3BC,MAAM,CAACH,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC3B,qBAAqB,EAAE,IAAI,CAAC;IACtE8B,MAAM,CAACH,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAACvB,kBAAkB,EAAE,IAAI,CAAC;IACrE0B,MAAM,CAACH,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC1B,WAAW,CAAC;EACpD;EAEAqB,mBAAmBA,CAAA,EAAS;IAC1BQ,MAAM,CAACF,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC5B,qBAAqB,EAAE,IAAI,CAAC;IACzE8B,MAAM,CAACF,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAACxB,kBAAkB,EAAE,IAAI,CAAC;IACxE0B,MAAM,CAACF,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC3B,WAAW,CAAC;EACvD;EAEAJ,eAAeA,CAAA,EAAS;IACtB,IAAI,CAACkC,UAAU,CAAC,CAAC;EACnB;EAEA9B,WAAWA,CAAA,EAAS;IAClB,IAAQU,OAAO,GAAK,IAAI,CAACD,KAAK,CAAtBC,OAAO;IACf,IAAI,IAAI,CAACJ,MAAM,CAACiB,OAAO,IAAI,IAAI,CAAChB,MAAM,IAAIG,OAAO,EAAE;MACjD,IACE,CAAC,IAAI,CAACJ,MAAM,CAACiB,OAAO,CAACQ,OAAO,CAACC,OAAO,CAAC,QAAQ,CAAC,IAC9C,CAAC,IAAI,CAACzB,MAAM,CAACyB,OAAO,CAAC,QAAQ,CAAC,EAC9B;QACA,IAAI,CAACV,SAAS,CAAC,CAAC;QAChB,IAAI,CAACW,IAAI,CAAC,CAAC;MACb;IACF;EACF;EAEAnC,gBAAgBA,CAAA,EAAS;IACvB,IAAQY,OAAO,GAAK,IAAI,CAACD,KAAK,CAAtBC,OAAO;IACf,IAAI,CAACY,SAAS,CAAC,CAAC;IAEhB,IAAQY,WAAW,GAAK,IAAI,CAACxC,KAAK,CAA1BwC,WAAW;IACnB,IAAI,CAACA,WAAW,IAAIxB,OAAO,EAAE;MAC3B,IAAI,CAACuB,IAAI,CAAC,CAAC;IACb;EACF;EAEAhC,aAAaA,CAAA,EAAS;IACpB,IAAI,CAACa,IAAI,CAAC,CAAC;EACb;EAEAf,qBAAqBA,CAACoC,KAAiB,EAAQ;IAC7C,IAAMC,MAAM,GAAGD,KAAK,CAACE,OAAO;IAC5B,IAAMC,MAAM,GAAGH,KAAK,CAACI,OAAO;IAC5B,IAAQ7B,OAAO,GAAK,IAAI,CAACD,KAAK,CAAtBC,OAAO;IAEf,IAAI,CAAC,IAAI,CAACJ,MAAM,CAACiB,OAAO,IAAI,CAAC,IAAI,CAAChB,MAAM,EAAE;MACxC;IACF;IACA,IAAMiC,UAAU,GAAG,IAAI,CAAClC,MAAM,CAACiB,OAAO,CAACQ,OAAO,CAACU,qBAAqB,CAAC,CAAC;IACtE,IAAMC,UAAU,GAAG,IAAI,CAACnC,MAAM,CAACkC,qBAAqB,CAAC,CAAC;IAEtD,IACEL,MAAM,IAAII,UAAU,CAACG,IAAI,IACzBP,MAAM,IAAII,UAAU,CAACG,IAAI,GAAGH,UAAU,CAACI,KAAK,IAC5CN,MAAM,IAAIE,UAAU,CAACK,GAAG,IACxBP,MAAM,IAAIE,UAAU,CAACK,GAAG,GAAGL,UAAU,CAACM,MAAM,EAC5C;MACA,IAAI,CAAClD,eAAe,CAAC,CAAC;IACxB,CAAC,MAAM,IACLwC,MAAM,IAAIM,UAAU,CAACC,IAAI,IACzBP,MAAM,IAAIM,UAAU,CAACC,IAAI,GAAGD,UAAU,CAACE,KAAK,IAC5CN,MAAM,IAAII,UAAU,CAACG,GAAG,IACxBP,MAAM,IAAII,UAAU,CAACG,GAAG,GAAGH,UAAU,CAACI,MAAM,EAC5C;MACA,IAAI,CAAClD,eAAe,CAAC,CAAC;IACxB,CAAC,MAAM,IAAIc,OAAO,EAAE;MAClB,IAAI,CAACY,SAAS,CAAC,CAAC;MAChB,IAAI,CAACW,IAAI,CAAC,CAAC;IACb;EACF;EAEAH,UAAUA,CAAA,EAAS;IACjB,IAAI,CAACR,SAAS,CAAC,CAAC;IAEhB,IAAAyB,WAAA,GAAmC,IAAI,CAACrD,KAAK;MAArCmB,OAAO,GAAAkC,WAAA,CAAPlC,OAAO;MAAEmC,aAAa,GAAAD,WAAA,CAAbC,aAAa;IAC9B,IAAIC,YAAY,GAAGpC,OAAO;IAC1B,IACE3B,OAAO,CAACE,iBAAiB,GAAG,CAAC,IAC7BE,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGL,OAAO,CAACG,cAAc,GAAGH,OAAO,CAACgE,sBAAsB,EACpE;MACAD,YAAY,GAAGD,aAAa;IAC9B;IACA,IAAI,CAACxC,KAAK,GAAGqB,MAAM,CAACsB,UAAU,CAAC,IAAI,CAAClD,aAAa,EAAEgD,YAAY,CAAC;EAClE;EAEA3B,SAASA,CAAA,EAAS;IAChB,IAAI,IAAI,CAACd,KAAK,IAAI,IAAI,EAAE;MACtB4C,YAAY,CAAC,IAAI,CAAC5C,KAAK,CAAC;MACxB,IAAI,CAACA,KAAK,GAAG,IAAI;IACnB;EACF;EAEAM,IAAIA,CAAA,EAAS;IACX,IAAQJ,OAAO,GAAK,IAAI,CAACD,KAAK,CAAtBC,OAAO;IACf,IAAI,CAACY,SAAS,CAAC,CAAC;IAEhB,IAAI,CAACZ,OAAO,EAAE;MAAA,IAAA2C,oBAAA;MACZ,CAAAA,oBAAA,OAAI,CAAC/C,MAAM,CAACiB,OAAO,cAAA8B,oBAAA,eAAnBA,oBAAA,CAAqBvC,IAAI,CAAC,CAAC;MAC3B;MACA;MACA;MACAtC,SAAS,CAAC,MAAM;QACd,IAAI,CAAC8E,QAAQ,CAAC;UAAE5C,OAAO,EAAE;QAAK,CAAC,CAAC;MAClC,CAAC,CAAC;MAEF,IAAQwB,WAAW,GAAK,IAAI,CAACxC,KAAK,CAA1BwC,WAAW;MACnB,IAAIA,WAAW,EAAE;QACf,IAAI,CAACN,oBAAoB,CAAC,CAAC;MAC7B;IACF;EACF;EAEAK,IAAIA,CAAA,EAAS;IAAA,IAAAsB,qBAAA;IACX,CAAAA,qBAAA,OAAI,CAACjD,MAAM,CAACiB,OAAO,cAAAgC,qBAAA,eAAnBA,qBAAA,CAAqBtB,IAAI,CAAC,CAAC;IAC3B,IAAI,CAACZ,mBAAmB,CAAC,CAAC;EAC5B;EAEAmC,MAAMA,CAAA,EAAS;IAAA,IAAAC,qBAAA;IACb,CAAAA,qBAAA,OAAI,CAACnD,MAAM,CAACiB,OAAO,cAAAkC,qBAAA,eAAnBA,qBAAA,CAAqBC,cAAc,CAAC,CAAC;EACvC;EAEAxD,YAAYA,CAAA,EAAS;IACnB,IAAI,CAACoD,QAAQ,CAAC;MAAE5C,OAAO,EAAE;IAAM,CAAC,CAAC;IACjC,IAAQiD,QAAQ,GAAK,IAAI,CAACjE,KAAK,CAAvBiE,QAAQ;IAChBA,QAAQ,CAAC,CAAC;EACZ;EAEAxD,kBAAkBA,CAAA,EAAS;IACzB,IAAQO,OAAO,GAAK,IAAI,CAACD,KAAK,CAAtBC,OAAO;IACf,IAAI,CAACY,SAAS,CAAC,CAAC;IAChB,IAAIZ,OAAO,EAAE;MACX,IAAI,CAACuB,IAAI,CAAC,CAAC;IACb;EACF;EAEA2B,MAAMA,CAAA,EAAgB;IACpB,IAAAC,YAAA,GAOI,IAAI,CAACnE,KAAK;MANZwC,WAAW,GAAA2B,YAAA,CAAX3B,WAAW;MACX4B,QAAQ,GAAAD,YAAA,CAARC,QAAQ;MACRC,eAAe,GAAAF,YAAA,CAAfE,eAAe;MACfC,eAAe,GAAAH,YAAA,CAAfG,eAAe;MACAC,UAAU,GAAAJ,YAAA,CAAzB,aAAa;MACbK,SAAS,GAAAL,YAAA,CAATK,SAAS;IAEX,IAAQxD,OAAO,GAAK,IAAI,CAACD,KAAK,CAAtBC,OAAO;IAEf,IAAMyD,OAAO,GAAK,IAAI,CAACzE,KAAK,CAAtByE,OAAO;IACbA,OAAO,GAAAC,aAAA;MACLC,SAAS,EAAE;IAAQ,GAChBF,OAAO,CACX;IAED,oBACEpF,IAAA;MACEuF,GAAG,EAAE,IAAI,CAAClE,SAAU;MACpBmE,KAAK,EAAE;QAAEC,OAAO,EAAE;MAAO,CAAE;MAC3B,eAAaP,UAAW;MAAAH,QAAA,eAExB/E,IAAA,CAACJ,MAAM;QACL8F,SAAS,EAAEhG,UAAU,CAACuF,eAAe,EAAE,gBAAgB,CAAE;QACzDG,OAAO,EAAEA,OAAQ;QACjBG,GAAG,EAAE,IAAI,CAAChE,MAAO;QACjB4D,SAAS,EAAEA,SAAU;QACrBP,QAAQ,EAAE,IAAI,CAACzD,YAAa;QAC5BgC,WAAW,EAAEA,WAAY;QACzB6B,eAAe,EAAEA,eAAgB;QAAAD,QAAA,eAEjCjF,KAAA;UAAK4F,SAAS,EAAC,iBAAiB;UAAAX,QAAA,GAAC,GAAC,EAACpD,OAAO,IAAIoD,QAAQ;QAAA,CAAM;MAAC,CACvD;IAAC,CACN,CAAC;EAEV;AACF;AAACY,QAAA,GAxSKxF,OAAO;AAAAS,eAAA,CAAPT,OAAO,oBACa,GAAG;AAAAS,eAAA,CADvBT,OAAO,0BAGmB,GAAG;AAAAS,eAAA,CAH7BT,OAAO,4BAKqB,GAAG;AAAAS,eAAA,CAL/BT,OAAO,uBAOgB,CAAC;AAAAS,eAAA,CAPxBT,OAAO,oBASaI,IAAI,CAACC,GAAG,CAAC,CAAC;AAAAI,eAAA,CAT9BT,OAAO,kBAWW;EACpBgD,WAAW,EAAE,KAAK;EAClBiC,OAAO,EAAE,CAAC,CAAC;EACXH,eAAe,EAAE,EAAE;EACnBhB,aAAa,EAAE9D,QAAO,CAACyF,oBAAoB;EAC3C9D,OAAO,EAAE3B,QAAO,CAAC0F,cAAc;EAC/BV,SAAS,EAAEA,CAAA,KAAYW,SAAS;EAChClB,QAAQ,EAAEA,CAAA,KAAYkB,SAAS;EAC/B,aAAa,EAAEA;AACjB,CAAC;AAsRH,eAAe3F,OAAO","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
|
-
|
|
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
|
-
|
|
282
|
-
|
|
283
|
-
|
|
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
|