@elliemae/ds-popper 2.3.0-alpha.8 → 2.3.0-next.2

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 (56) hide show
  1. package/cjs/DSPopper.js +97 -0
  2. package/cjs/PopperContent.js +156 -0
  3. package/cjs/PopperImpl.js +335 -0
  4. package/cjs/getArrowStylesBySize.js +46 -0
  5. package/cjs/index.js +19 -0
  6. package/cjs/interaction.js +12 -0
  7. package/cjs/positions.js +25 -0
  8. package/cjs/props.js +88 -0
  9. package/esm/DSPopper.js +83 -0
  10. package/esm/PopperContent.js +147 -0
  11. package/{dist/esm → esm}/PopperImpl.js +148 -69
  12. package/esm/getArrowStylesBySize.js +37 -0
  13. package/esm/index.js +4 -0
  14. package/esm/interaction.js +7 -0
  15. package/esm/positions.js +20 -0
  16. package/esm/props.js +83 -0
  17. package/package.json +32 -34
  18. package/types/DSPopper.d.ts +156 -0
  19. package/types/PopperContent.d.ts +21 -0
  20. package/types/PopperImpl.d.ts +52 -0
  21. package/types/getArrowStylesBySize.d.ts +2 -0
  22. package/types/index.d.ts +3 -0
  23. package/types/interaction.d.ts +5 -0
  24. package/types/positions.d.ts +18 -0
  25. package/types/props.d.ts +119 -0
  26. package/dist/cjs/DSPopper.js +0 -117
  27. package/dist/cjs/DSPopper.js.map +0 -7
  28. package/dist/cjs/PopperContent.js +0 -148
  29. package/dist/cjs/PopperContent.js.map +0 -7
  30. package/dist/cjs/PopperImpl.js +0 -272
  31. package/dist/cjs/PopperImpl.js.map +0 -7
  32. package/dist/cjs/getArrowStylesBySize.js +0 -60
  33. package/dist/cjs/getArrowStylesBySize.js.map +0 -7
  34. package/dist/cjs/index.js +0 -37
  35. package/dist/cjs/index.js.map +0 -7
  36. package/dist/cjs/interaction.js +0 -40
  37. package/dist/cjs/interaction.js.map +0 -7
  38. package/dist/cjs/positions.js +0 -69
  39. package/dist/cjs/positions.js.map +0 -7
  40. package/dist/cjs/props.js +0 -89
  41. package/dist/cjs/props.js.map +0 -7
  42. package/dist/esm/DSPopper.js +0 -88
  43. package/dist/esm/DSPopper.js.map +0 -7
  44. package/dist/esm/PopperContent.js +0 -119
  45. package/dist/esm/PopperContent.js.map +0 -7
  46. package/dist/esm/PopperImpl.js.map +0 -7
  47. package/dist/esm/getArrowStylesBySize.js +0 -31
  48. package/dist/esm/getArrowStylesBySize.js.map +0 -7
  49. package/dist/esm/index.js +0 -8
  50. package/dist/esm/index.js.map +0 -7
  51. package/dist/esm/interaction.js +0 -11
  52. package/dist/esm/interaction.js.map +0 -7
  53. package/dist/esm/positions.js +0 -40
  54. package/dist/esm/positions.js.map +0 -7
  55. package/dist/esm/props.js +0 -60
  56. package/dist/esm/props.js.map +0 -7
package/cjs/props.js ADDED
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactDesc = require('react-desc');
6
+ var positions = require('./positions.js');
7
+ var interaction = require('./interaction.js');
8
+
9
+ const popperProps = {
10
+ /** Hide menu component if trigger component is not visible/scrolled away */
11
+ hideIfNotVisible: reactDesc.PropTypes.bool.description('Hide menu component if trigger component is not visible/scrolled away'),
12
+
13
+ /** props to inject to popper wrapper */
14
+ containerProps: reactDesc.PropTypes.object.description('props to inject to popper wrapper'),
15
+
16
+ /** Space between the arrow and the popup */
17
+ arrowGap: reactDesc.PropTypes.number.description('Space between the arrow and the popup'),
18
+
19
+ /** callback for when menu changes from close to open */
20
+ onOpen: reactDesc.PropTypes.func.description('callback for when menu changes from close to open'),
21
+
22
+ /** callback for when menu changes from open to close */
23
+ onClose: reactDesc.PropTypes.func.description('callback for when menu changes from open to close'),
24
+
25
+ /** Time in ms to delay close of menu */
26
+ delayClose: reactDesc.PropTypes.number.description('Time in ms to delay close of menu'),
27
+
28
+ /** Time in ms to delay open of menu */
29
+ delayOpen: reactDesc.PropTypes.number.description('Time in ms to delay open of menu'),
30
+
31
+ /** callback for when menu changes placement */
32
+ onPlacementChange: reactDesc.PropTypes.func.description('callback for when menu changes placement'),
33
+
34
+ /** Arrow size */
35
+ arrowSize: reactDesc.PropTypes.number.description('Arrow size'),
36
+
37
+ /** Bem blockname for the popper */
38
+ blockName: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.object]).description('Bem blockname for the popper'),
39
+ triggerComponent: reactDesc.PropTypes.element.description("The component that will open/close the tooltip. \n Cannot be used with disabled elements. \n https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled").isRequired
40
+ };
41
+ const defaultProps = {
42
+ containerProps: {},
43
+ arrowGap: 8,
44
+ arrowSize: 6,
45
+ blockName: '',
46
+ contentOffset: null,
47
+ contentStyle: null,
48
+ contentComponent: () => null,
49
+ delayClose: 300,
50
+ delayOpen: 200,
51
+ interactionType: interaction.Interaction.CLICK,
52
+ onOpen: () => null,
53
+ onClose: () => null,
54
+ onPlacementChange: () => null,
55
+ placement: positions.Position.BOTTOM,
56
+ preventOverflow: 'window',
57
+ showArrow: true,
58
+ closeAnimationConfig: {
59
+ to: {
60
+ transform: 'scale(0.8)',
61
+ opacity: '0'
62
+ },
63
+ config: {
64
+ delay: 80,
65
+ duration: 80
66
+ }
67
+ },
68
+ openAnimationConfig: {
69
+ to: {
70
+ transform: 'scale(1)',
71
+ opacity: '1'
72
+ },
73
+ config: {
74
+ delay: 80,
75
+ duration: 80
76
+ }
77
+ },
78
+ usePortal: true,
79
+ triggerComponent: () => null,
80
+ getTargetFromChildren: () => null,
81
+ getContentFromChildren: () => null,
82
+ modifiers: {},
83
+ triggerRef: () => null,
84
+ hideIfNotVisible: false
85
+ };
86
+
87
+ exports.defaultProps = defaultProps;
88
+ exports.popperProps = popperProps;
@@ -0,0 +1,83 @@
1
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
2
+ import 'react';
3
+ import { describe } from 'react-desc';
4
+ import PopperImpl from './PopperImpl.js';
5
+ export { Position as PopperPositions, positions } from './positions.js';
6
+ export { Interaction as PopperInteractions, interactions } from './interaction.js';
7
+ import { popperProps, defaultProps } from './props.js';
8
+
9
+ const DSPopper = _ref => {
10
+ let {
11
+ containerProps,
12
+ arrowGap,
13
+ arrowSize,
14
+ blockName,
15
+ contentOffset,
16
+ contentStyle,
17
+ contentComponent,
18
+ delayClose,
19
+ delayOpen,
20
+ interactionType,
21
+ isOpen,
22
+ // if this is set DSPopper would be a controlled component if not, an uncontrolled one
23
+ onOpen,
24
+ onClose,
25
+ onPlacementChange,
26
+ placement,
27
+ preventOverflow,
28
+ showArrow,
29
+ closeAnimationConfig,
30
+ openAnimationConfig,
31
+ usePortal,
32
+ triggerComponent,
33
+ wrapExtraComponent,
34
+ getTargetFromChildren,
35
+ getContentFromChildren,
36
+ modifiers,
37
+ triggerRef,
38
+ children: customPopper,
39
+ renderReference,
40
+ referenceNode,
41
+ zIndex,
42
+ hideIfNotVisible
43
+ } = _ref;
44
+ return /*#__PURE__*/_jsx(PopperImpl, {
45
+ arrowGap: arrowGap,
46
+ arrowSize: arrowSize,
47
+ blockName: blockName,
48
+ closeAnimationConfig: closeAnimationConfig,
49
+ containerProps: containerProps,
50
+ contentComponent: contentComponent,
51
+ contentOffset: contentOffset,
52
+ contentStyle: contentStyle,
53
+ delayClose: delayClose,
54
+ delayOpen: delayOpen,
55
+ getContentFromChildren: getContentFromChildren,
56
+ getTargetFromChildren: getTargetFromChildren,
57
+ interactionType: interactionType,
58
+ isOpen: isOpen,
59
+ modifiers: modifiers,
60
+ onOpen: onOpen,
61
+ onClose: onClose,
62
+ onPlacementChange: onPlacementChange,
63
+ openAnimationConfig: openAnimationConfig,
64
+ placement: placement,
65
+ preventOverflow: preventOverflow,
66
+ referenceNode: referenceNode,
67
+ renderReference: renderReference,
68
+ showArrow: showArrow,
69
+ triggerComponent: triggerComponent,
70
+ triggerRef: triggerRef,
71
+ usePortal: usePortal,
72
+ wrapExtraComponent: wrapExtraComponent,
73
+ zIndex: zIndex,
74
+ hideIfNotVisible: hideIfNotVisible
75
+ }, void 0, customPopper);
76
+ }; // @deprecated: There's the NEW (not finished) popover that uses its own popper implementation.
77
+
78
+
79
+ DSPopper.defaultProps = defaultProps;
80
+ const DSPopperWithSchema = describe(DSPopper);
81
+ DSPopperWithSchema.propTypes = popperProps;
82
+
83
+ export { DSPopper, DSPopperWithSchema, DSPopper as default };
@@ -0,0 +1,147 @@
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
6
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
7
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
8
+ import { PureComponent } from 'react';
9
+ import { Popper } from 'react-popper';
10
+ import { Keyframes, animated } from 'react-spring/renderprops';
11
+ import getComponentFromProps from '@elliemae/ds-utilities/getComponentFromProps';
12
+ import DSOverlay from '@elliemae/ds-overlay';
13
+ import { getArrowStylesBySize } from './getArrowStylesBySize.js';
14
+ import { jsx } from 'react/jsx-runtime';
15
+
16
+ var _svg;
17
+
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
+
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
+ const Content = Keyframes.Spring({});
22
+ class PopperContent extends PureComponent {
23
+ // eslint-disable-next-line react/static-property-placement
24
+ constructor(props) {
25
+ super(props);
26
+ this.renderContent = this.renderContent.bind(this);
27
+ this.renderArrow = this.renderArrow.bind(this);
28
+ this.handleRestAnimation = this.handleRestAnimation.bind(this);
29
+ this.handleRestAnimation = this.handleRestAnimation.bind(this);
30
+ }
31
+
32
+ handleRestAnimation() {
33
+ const {
34
+ isOpen,
35
+ onContentDestroyed
36
+ } = this.props;
37
+
38
+ if (!isOpen) {
39
+ onContentDestroyed();
40
+ }
41
+ }
42
+
43
+ renderArrow(_ref, placement) {
44
+ let {
45
+ ref,
46
+ style
47
+ } = _ref;
48
+ const {
49
+ blockName,
50
+ showArrow
51
+ } = this.props;
52
+ if (!showArrow) return null;
53
+ return /*#__PURE__*/jsx("div", {
54
+ ref: ref,
55
+ className: "".concat(blockName || 'popper', "__arrow"),
56
+ "data-placement": placement,
57
+ style: _objectSpread(_objectSpread({}, style), getArrowStylesBySize(placement, 25)),
58
+ children: _svg || (_svg = /*#__PURE__*/_jsx("svg", {
59
+ viewBox: "0 0 30 30"
60
+ }, void 0, /*#__PURE__*/_jsx("path", {
61
+ className: "stroke",
62
+ d: "M23.7,27.1L17,19.9C16.5,19.3,15.8,19,15,19s-1.6,0.3-2.1,0.9l-6.6,7.2C5.3,28.1,3.4,29,2,29h26 C26.7,29,24.6,28.1,23.7,27.1z"
63
+ }), /*#__PURE__*/_jsx("path", {
64
+ className: "fill",
65
+ d: "M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z"
66
+ })))
67
+ }, "popper-arrow");
68
+ }
69
+
70
+ renderContent(_ref2) {
71
+ let {
72
+ ref,
73
+ style,
74
+ placement,
75
+ arrowProps,
76
+ scheduleUpdate,
77
+ outOfBoundaries
78
+ } = _ref2;
79
+ const {
80
+ contentComponent,
81
+ contentStyle,
82
+ isOpen,
83
+ closeAnimationConfig,
84
+ openAnimationConfig,
85
+ onMouseEnter,
86
+ onMouseLeave,
87
+ containerProps,
88
+ zIndex,
89
+ hideIfNotVisible
90
+ } = this.props;
91
+
92
+ const computedStyle = _objectSpread(_objectSpread(_objectSpread({}, style), contentStyle), {}, {
93
+ zIndex
94
+ });
95
+
96
+ return /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({}, containerProps), {}, {
97
+ "data-placement": placement,
98
+ onMouseEnter: onMouseEnter,
99
+ onMouseLeave: onMouseLeave,
100
+ style: computedStyle,
101
+ "data-testid": "popper-container",
102
+ children: /*#__PURE__*/_jsx(Content, {
103
+ native: true,
104
+ onRest: this.handleRestAnimation,
105
+ state: isOpen && (!outOfBoundaries || !hideIfNotVisible) ? 'open' : 'close',
106
+ states: {
107
+ open: _objectSpread(_objectSpread({}, openAnimationConfig), {}, {
108
+ from: closeAnimationConfig.to
109
+ }),
110
+ close: closeAnimationConfig
111
+ }
112
+ }, void 0, animationStyle => /*#__PURE__*/jsx(animated.div, {
113
+ ref: ref,
114
+ style: animationStyle,
115
+ children: getComponentFromProps(contentComponent, {
116
+ scheduleUpdate
117
+ }, [this.renderArrow(arrowProps, placement)])
118
+ }))
119
+ }));
120
+ }
121
+
122
+ render() {
123
+ const {
124
+ destroyed = false,
125
+ onClickOutside = () => null,
126
+ placement = 'bottom-start',
127
+ modifiers = {},
128
+ referenceNode,
129
+ usePortal = true
130
+ } = this.props;
131
+ return /*#__PURE__*/_jsx(DSOverlay, {
132
+ isOpen: !destroyed,
133
+ onClickOutside: onClickOutside,
134
+ usePortal: usePortal
135
+ }, void 0, /*#__PURE__*/_jsx(Popper, {
136
+ modifiers: modifiers,
137
+ placement: placement,
138
+ referenceElement: referenceNode
139
+ }, void 0, this.renderContent));
140
+ }
141
+
142
+ }
143
+ PopperContent.defaultProps = {
144
+ onContentDestroyed: () => null
145
+ };
146
+
147
+ export { PopperContent as default };
@@ -1,22 +1,39 @@
1
- import * as React from "react";
2
- import React2, { Component } from "react";
3
- import { isFunction, get, isDOMTypeElement, getComponentFromProps, mergeRefs } from "@elliemae/ds-utilities";
4
- import { Manager, Reference } from "react-popper";
5
- import memoizeOne from "memoize-one";
6
- import PopperContent from "./PopperContent";
7
- import { Interaction } from "./interaction";
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
6
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
7
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
8
+ import { Component } from 'react';
9
+ import { get, isFunction, isDOMTypeElement, mergeRefs, getComponentFromProps } from '@elliemae/ds-utilities';
10
+ import { Manager, Reference } from 'react-popper';
11
+ export { Reference } from 'react-popper';
12
+ import memoizeOne from 'memoize-one';
13
+ import PopperContent from './PopperContent.js';
14
+ export { default as PopperContent } from './PopperContent.js';
15
+ import { Interaction } from './interaction.js';
16
+ import { jsx } from 'react/jsx-runtime';
17
+
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
+
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
21
  class PopperImpl extends Component {
22
+ // we use safeIsMounted because isMounted is not allowed by React.
9
23
  constructor(props) {
10
24
  super(props);
11
25
  this.safeIsMounted = false;
12
- this.handlePopperPlacementChange = memoizeOne((placement) => {
13
- const { onPlacementChange } = this.props;
26
+ this.handlePopperPlacementChange = memoizeOne(placement => {
27
+ const {
28
+ onPlacementChange
29
+ } = this.props;
14
30
  onPlacementChange(placement);
15
31
  });
16
32
  this.state = {
17
33
  isOpen: false,
18
34
  destroyed: true
19
- };
35
+ }; // TODO: Fix the autobinding to remove this!!
36
+
20
37
  this.handleMouseEnter = this.handleMouseEnter.bind(this);
21
38
  this.handleMouseLeave = this.handleMouseLeave.bind(this);
22
39
  this.handleTriggerClick = this.handleTriggerClick.bind(this);
@@ -26,34 +43,55 @@ class PopperImpl extends Component {
26
43
  this.handleDestroyContent = this.handleDestroyContent.bind(this);
27
44
  this.handleContentMouseEnter = this.handleContentMouseEnter.bind(this);
28
45
  this.handleContentMouseLeave = this.handleContentMouseLeave.bind(this);
29
- }
46
+ } // this is needed to prevent setState on unmounted components
47
+
48
+
30
49
  componentDidMount() {
31
50
  this.safeIsMounted = true;
32
51
  }
52
+
33
53
  componentDidUpdate() {
34
- const { isOpen, destroyed } = this.state;
54
+ const {
55
+ isOpen,
56
+ destroyed
57
+ } = this.state;
58
+
35
59
  if (isOpen === true && destroyed === true) {
36
- this.setState({ destroyed: false });
60
+ // eslint-disable-next-line react/no-did-update-set-state
61
+ this.setState({
62
+ destroyed: false
63
+ });
37
64
  }
38
65
  }
66
+
39
67
  componentWillUnmount() {
40
68
  this.safeIsMounted = false;
41
69
  }
70
+
42
71
  static getDerivedStateFromProps(nextProps, prevState) {
43
- const { isOpen } = nextProps;
44
- const { prevPropIsOpen } = prevState;
72
+ const {
73
+ isOpen
74
+ } = nextProps;
75
+ const {
76
+ prevPropIsOpen
77
+ } = prevState; // todo: this causes multiple rerenders
78
+
45
79
  if (isOpen !== prevPropIsOpen) {
46
80
  return {
47
81
  isOpen,
48
82
  prevPropIsOpen: isOpen
49
83
  };
50
84
  }
85
+
51
86
  return null;
52
87
  }
53
- getInteractionObject(interaction, referenceProps = {}) {
54
- const { isOpen } = this.props;
55
- if (isOpen !== void 0)
56
- return {};
88
+
89
+ getInteractionObject(interaction) {
90
+ let referenceProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
91
+ const {
92
+ isOpen
93
+ } = this.props;
94
+ if (isOpen !== undefined) return {};
57
95
  return {
58
96
  [Interaction.CLICK]: {
59
97
  handlers: {
@@ -76,45 +114,66 @@ class PopperImpl extends Component {
76
114
  canClose: () => true
77
115
  };
78
116
  }
117
+
79
118
  setOpen(opening) {
80
- const { onOpen } = this.props;
81
- const { prevPropIsOpen } = this.state;
82
- if (!this.safeIsMounted)
83
- return;
84
- if (prevPropIsOpen === void 0) {
119
+ const {
120
+ onOpen
121
+ } = this.props;
122
+ const {
123
+ prevPropIsOpen
124
+ } = this.state;
125
+ if (!this.safeIsMounted) return;
126
+
127
+ if (prevPropIsOpen === undefined) {
85
128
  this.setState({
86
129
  isOpen: opening,
87
130
  destroyed: false
88
131
  });
89
132
  }
133
+
90
134
  onOpen(opening);
91
135
  }
136
+
92
137
  open() {
93
138
  clearTimeout(this.closeTimer);
94
- const { delayOpen } = this.props;
139
+ const {
140
+ delayOpen
141
+ } = this.props;
95
142
  this.openTimer = setTimeout(() => this.setOpen(true), delayOpen);
96
143
  }
144
+
97
145
  close() {
98
146
  clearTimeout(this.openTimer);
99
- const { delayClose, onClose = () => null } = this.props;
147
+ const {
148
+ delayClose,
149
+ onClose = () => null
150
+ } = this.props;
100
151
  this.closeTimer = setTimeout(() => {
101
152
  this.setOpen(false);
102
153
  onClose();
103
154
  }, delayClose);
104
155
  }
156
+
105
157
  handleTriggerClick(e) {
106
- const { triggerComponent } = this.props;
107
- const { onClick } = get(triggerComponent, "props") || {};
158
+ const {
159
+ triggerComponent
160
+ } = this.props;
161
+ const {
162
+ onClick
163
+ } = get(triggerComponent, 'props') || {};
108
164
  this.open();
109
- if (isFunction(onClick))
110
- onClick(e);
165
+ if (isFunction(onClick)) onClick(e);
111
166
  }
167
+
112
168
  handleContentMouseEnter() {
113
169
  this.isMouseOverContent = true;
114
170
  }
171
+
115
172
  handleContentMouseLeave() {
116
173
  this.isMouseOverContent = false;
117
- const { onClose = () => null } = this.props;
174
+ const {
175
+ onClose = () => null
176
+ } = this.props;
118
177
  setTimeout(() => {
119
178
  if (!this.isMouseOverTarget) {
120
179
  this.setOpen(false);
@@ -122,10 +181,12 @@ class PopperImpl extends Component {
122
181
  }
123
182
  }, 10);
124
183
  }
184
+
125
185
  handleMouseEnter() {
126
186
  this.isMouseOverTarget = true;
127
187
  this.open();
128
188
  }
189
+
129
190
  handleMouseLeave() {
130
191
  this.isMouseOverTarget = false;
131
192
  setTimeout(() => {
@@ -134,35 +195,57 @@ class PopperImpl extends Component {
134
195
  }
135
196
  }, 10);
136
197
  }
198
+
137
199
  updatePopoverState(popperData) {
138
200
  this.handlePopperPlacementChange(popperData.placement);
139
201
  return popperData;
140
202
  }
203
+
141
204
  handleDestroyContent() {
142
- this.setState({ destroyed: true });
205
+ this.setState({
206
+ destroyed: true
207
+ });
143
208
  }
144
- renderTarget({ ref }) {
145
- const { isOpen } = this.state;
146
- const { triggerComponent, interactionType, renderReference } = this.props;
147
- const componentInnerRef = get(triggerComponent, ["props", "innerRef"], () => null);
148
- const compRef = isDOMTypeElement(triggerComponent) ? { ref } : { innerRef: mergeRefs(ref, componentInnerRef) };
149
- const triggerHandler = this.getInteractionObject(interactionType, triggerComponent.props).handlers;
150
- const targetProps = {
151
- ...triggerHandler,
152
- ...compRef,
153
- "aria-haspopup": true,
154
- "aria-expanded": isOpen
209
+
210
+ renderTarget(_ref) {
211
+ let {
212
+ ref
213
+ } = _ref;
214
+ const {
215
+ isOpen
216
+ } = this.state;
217
+ const {
218
+ triggerComponent,
219
+ interactionType,
220
+ renderReference
221
+ } = this.props;
222
+ const componentInnerRef = get(triggerComponent, ['props', 'innerRef'], () => null);
223
+ const compRef = isDOMTypeElement(triggerComponent) ? {
224
+ ref
225
+ } : {
226
+ innerRef: mergeRefs(ref, componentInnerRef)
155
227
  };
228
+ const triggerHandler = this.getInteractionObject(interactionType, triggerComponent.props).handlers;
229
+
230
+ const targetProps = _objectSpread(_objectSpread(_objectSpread({}, triggerHandler), compRef), {}, {
231
+ 'aria-haspopup': true,
232
+ 'aria-expanded': isOpen
233
+ });
234
+
156
235
  if (renderReference) {
157
- return renderReference({
158
- ref,
159
- ...targetProps
160
- });
236
+ return renderReference(_objectSpread({
237
+ ref
238
+ }, targetProps));
161
239
  }
240
+
162
241
  return getComponentFromProps(triggerComponent, targetProps);
163
242
  }
243
+
164
244
  render() {
165
- const { isOpen, destroyed } = this.state;
245
+ const {
246
+ isOpen,
247
+ destroyed
248
+ } = this.state;
166
249
  const {
167
250
  placement,
168
251
  interactionType,
@@ -182,10 +265,11 @@ class PopperImpl extends Component {
182
265
  zIndex,
183
266
  hideIfNotVisible
184
267
  } = this.props;
185
- const allModifiers = {
268
+
269
+ const allModifiers = _objectSpread({
186
270
  offset: {
187
271
  enabled: showArrow,
188
- offset: `0, ${arrowSize + arrowGap}`
272
+ offset: "0, ".concat(arrowSize + arrowGap)
189
273
  },
190
274
  preventOverflow: {
191
275
  enabled: true,
@@ -196,9 +280,9 @@ class PopperImpl extends Component {
196
280
  enabled: true,
197
281
  fn: this.updatePopoverState,
198
282
  order: 900
199
- },
200
- ...modifiers
201
- };
283
+ }
284
+ }, modifiers);
285
+
202
286
  const triggerHandler = this.getInteractionObject(interactionType).handlers;
203
287
  const popperContentProps = {
204
288
  hideIfNotVisible,
@@ -216,28 +300,23 @@ class PopperImpl extends Component {
216
300
  usePortal,
217
301
  openAnimationConfig,
218
302
  closeAnimationConfig,
219
- onMouseEnter: interactionType === Interaction.HOVER ? this.handleContentMouseEnter : void 0,
220
- onMouseLeave: interactionType === Interaction.HOVER ? this.handleContentMouseLeave : void 0,
303
+ onMouseEnter: interactionType === Interaction.HOVER ? this.handleContentMouseEnter : undefined,
304
+ onMouseLeave: interactionType === Interaction.HOVER ? this.handleContentMouseLeave : undefined,
221
305
  referenceNode,
222
306
  zIndex
223
307
  };
224
- if (customPopper && typeof customPopper === "function") {
225
- return /* @__PURE__ */ React2.createElement(Manager, null, customPopper({
308
+
309
+ if (customPopper && typeof customPopper === 'function') {
310
+ return /*#__PURE__*/_jsx(Manager, {}, void 0, customPopper({
226
311
  Reference,
227
312
  triggerHandler,
228
- content: /* @__PURE__ */ React2.createElement(PopperContent, {
229
- ...popperContentProps
230
- })
313
+ content: /*#__PURE__*/jsx(PopperContent, _objectSpread({}, popperContentProps))
231
314
  }));
232
315
  }
233
- return /* @__PURE__ */ React2.createElement(Manager, null, /* @__PURE__ */ React2.createElement(Reference, null, this.renderTarget), /* @__PURE__ */ React2.createElement(PopperContent, {
234
- ...popperContentProps
235
- }));
316
+
317
+ return /*#__PURE__*/_jsx(Manager, {}, void 0, /*#__PURE__*/_jsx(Reference, {}, void 0, this.renderTarget), /*#__PURE__*/jsx(PopperContent, _objectSpread({}, popperContentProps)));
236
318
  }
319
+
237
320
  }
238
- export {
239
- PopperContent,
240
- Reference,
241
- PopperImpl as default
242
- };
243
- //# sourceMappingURL=PopperImpl.js.map
321
+
322
+ export { PopperImpl as default };