@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
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('react');
7
+ var reactDesc = require('react-desc');
8
+ var PopperImpl = require('./PopperImpl.js');
9
+ var positions = require('./positions.js');
10
+ var interaction = require('./interaction.js');
11
+ var props = require('./props.js');
12
+
13
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
+
15
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
16
+
17
+ const DSPopper = _ref => {
18
+ let {
19
+ containerProps,
20
+ arrowGap,
21
+ arrowSize,
22
+ blockName,
23
+ contentOffset,
24
+ contentStyle,
25
+ contentComponent,
26
+ delayClose,
27
+ delayOpen,
28
+ interactionType,
29
+ isOpen,
30
+ // if this is set DSPopper would be a controlled component if not, an uncontrolled one
31
+ onOpen,
32
+ onClose,
33
+ onPlacementChange,
34
+ placement,
35
+ preventOverflow,
36
+ showArrow,
37
+ closeAnimationConfig,
38
+ openAnimationConfig,
39
+ usePortal,
40
+ triggerComponent,
41
+ wrapExtraComponent,
42
+ getTargetFromChildren,
43
+ getContentFromChildren,
44
+ modifiers,
45
+ triggerRef,
46
+ children: customPopper,
47
+ renderReference,
48
+ referenceNode,
49
+ zIndex,
50
+ hideIfNotVisible
51
+ } = _ref;
52
+ return /*#__PURE__*/_jsx__default["default"](PopperImpl["default"], {
53
+ arrowGap: arrowGap,
54
+ arrowSize: arrowSize,
55
+ blockName: blockName,
56
+ closeAnimationConfig: closeAnimationConfig,
57
+ containerProps: containerProps,
58
+ contentComponent: contentComponent,
59
+ contentOffset: contentOffset,
60
+ contentStyle: contentStyle,
61
+ delayClose: delayClose,
62
+ delayOpen: delayOpen,
63
+ getContentFromChildren: getContentFromChildren,
64
+ getTargetFromChildren: getTargetFromChildren,
65
+ interactionType: interactionType,
66
+ isOpen: isOpen,
67
+ modifiers: modifiers,
68
+ onOpen: onOpen,
69
+ onClose: onClose,
70
+ onPlacementChange: onPlacementChange,
71
+ openAnimationConfig: openAnimationConfig,
72
+ placement: placement,
73
+ preventOverflow: preventOverflow,
74
+ referenceNode: referenceNode,
75
+ renderReference: renderReference,
76
+ showArrow: showArrow,
77
+ triggerComponent: triggerComponent,
78
+ triggerRef: triggerRef,
79
+ usePortal: usePortal,
80
+ wrapExtraComponent: wrapExtraComponent,
81
+ zIndex: zIndex,
82
+ hideIfNotVisible: hideIfNotVisible
83
+ }, void 0, customPopper);
84
+ }; // @deprecated: There's the NEW (not finished) popover that uses its own popper implementation.
85
+
86
+
87
+ DSPopper.defaultProps = props.defaultProps;
88
+ const DSPopperWithSchema = reactDesc.describe(DSPopper);
89
+ DSPopperWithSchema.propTypes = props.popperProps;
90
+
91
+ exports.PopperPositions = positions.Position;
92
+ exports.positions = positions.positions;
93
+ exports.PopperInteractions = interaction.Interaction;
94
+ exports.interactions = interaction.interactions;
95
+ exports.DSPopper = DSPopper;
96
+ exports.DSPopperWithSchema = DSPopperWithSchema;
97
+ exports["default"] = DSPopper;
@@ -0,0 +1,156 @@
1
+ 'use strict';
2
+
3
+ require('core-js/modules/esnext.async-iterator.filter.js');
4
+ require('core-js/modules/esnext.iterator.constructor.js');
5
+ require('core-js/modules/esnext.iterator.filter.js');
6
+ require('core-js/modules/esnext.async-iterator.for-each.js');
7
+ require('core-js/modules/esnext.iterator.for-each.js');
8
+ var _jsx = require('@babel/runtime/helpers/jsx');
9
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
10
+ var react = require('react');
11
+ var reactPopper = require('react-popper');
12
+ var renderprops = require('react-spring/renderprops');
13
+ var getComponentFromProps = require('@elliemae/ds-utilities/getComponentFromProps');
14
+ var DSOverlay = require('@elliemae/ds-overlay');
15
+ var getArrowStylesBySize = require('./getArrowStylesBySize.js');
16
+ var jsxRuntime = require('react/jsx-runtime');
17
+
18
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
+
20
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
21
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
22
+ var getComponentFromProps__default = /*#__PURE__*/_interopDefaultLegacy(getComponentFromProps);
23
+ var DSOverlay__default = /*#__PURE__*/_interopDefaultLegacy(DSOverlay);
24
+
25
+ var _svg;
26
+
27
+ 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; }
28
+
29
+ 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__default["default"](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; }
30
+ const Content = renderprops.Keyframes.Spring({});
31
+ class PopperContent extends react.PureComponent {
32
+ // eslint-disable-next-line react/static-property-placement
33
+ constructor(props) {
34
+ super(props);
35
+ this.renderContent = this.renderContent.bind(this);
36
+ this.renderArrow = this.renderArrow.bind(this);
37
+ this.handleRestAnimation = this.handleRestAnimation.bind(this);
38
+ this.handleRestAnimation = this.handleRestAnimation.bind(this);
39
+ }
40
+
41
+ handleRestAnimation() {
42
+ const {
43
+ isOpen,
44
+ onContentDestroyed
45
+ } = this.props;
46
+
47
+ if (!isOpen) {
48
+ onContentDestroyed();
49
+ }
50
+ }
51
+
52
+ renderArrow(_ref, placement) {
53
+ let {
54
+ ref,
55
+ style
56
+ } = _ref;
57
+ const {
58
+ blockName,
59
+ showArrow
60
+ } = this.props;
61
+ if (!showArrow) return null;
62
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
63
+ ref: ref,
64
+ className: "".concat(blockName || 'popper', "__arrow"),
65
+ "data-placement": placement,
66
+ style: _objectSpread(_objectSpread({}, style), getArrowStylesBySize.getArrowStylesBySize(placement, 25)),
67
+ children: _svg || (_svg = /*#__PURE__*/_jsx__default["default"]("svg", {
68
+ viewBox: "0 0 30 30"
69
+ }, void 0, /*#__PURE__*/_jsx__default["default"]("path", {
70
+ className: "stroke",
71
+ 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"
72
+ }), /*#__PURE__*/_jsx__default["default"]("path", {
73
+ className: "fill",
74
+ 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"
75
+ })))
76
+ }, "popper-arrow");
77
+ }
78
+
79
+ renderContent(_ref2) {
80
+ let {
81
+ ref,
82
+ style,
83
+ placement,
84
+ arrowProps,
85
+ scheduleUpdate,
86
+ outOfBoundaries
87
+ } = _ref2;
88
+ const {
89
+ contentComponent,
90
+ contentStyle,
91
+ isOpen,
92
+ closeAnimationConfig,
93
+ openAnimationConfig,
94
+ onMouseEnter,
95
+ onMouseLeave,
96
+ containerProps,
97
+ zIndex,
98
+ hideIfNotVisible
99
+ } = this.props;
100
+
101
+ const computedStyle = _objectSpread(_objectSpread(_objectSpread({}, style), contentStyle), {}, {
102
+ zIndex
103
+ });
104
+
105
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({}, containerProps), {}, {
106
+ "data-placement": placement,
107
+ onMouseEnter: onMouseEnter,
108
+ onMouseLeave: onMouseLeave,
109
+ style: computedStyle,
110
+ "data-testid": "popper-container",
111
+ children: /*#__PURE__*/_jsx__default["default"](Content, {
112
+ native: true,
113
+ onRest: this.handleRestAnimation,
114
+ state: isOpen && (!outOfBoundaries || !hideIfNotVisible) ? 'open' : 'close',
115
+ states: {
116
+ open: _objectSpread(_objectSpread({}, openAnimationConfig), {}, {
117
+ from: closeAnimationConfig.to
118
+ }),
119
+ close: closeAnimationConfig
120
+ }
121
+ }, void 0, animationStyle => /*#__PURE__*/jsxRuntime.jsx(renderprops.animated.div, {
122
+ ref: ref,
123
+ style: animationStyle,
124
+ children: getComponentFromProps__default["default"](contentComponent, {
125
+ scheduleUpdate
126
+ }, [this.renderArrow(arrowProps, placement)])
127
+ }))
128
+ }));
129
+ }
130
+
131
+ render() {
132
+ const {
133
+ destroyed = false,
134
+ onClickOutside = () => null,
135
+ placement = 'bottom-start',
136
+ modifiers = {},
137
+ referenceNode,
138
+ usePortal = true
139
+ } = this.props;
140
+ return /*#__PURE__*/_jsx__default["default"](DSOverlay__default["default"], {
141
+ isOpen: !destroyed,
142
+ onClickOutside: onClickOutside,
143
+ usePortal: usePortal
144
+ }, void 0, /*#__PURE__*/_jsx__default["default"](reactPopper.Popper, {
145
+ modifiers: modifiers,
146
+ placement: placement,
147
+ referenceElement: referenceNode
148
+ }, void 0, this.renderContent));
149
+ }
150
+
151
+ }
152
+ PopperContent.defaultProps = {
153
+ onContentDestroyed: () => null
154
+ };
155
+
156
+ module.exports = PopperContent;
@@ -0,0 +1,335 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
10
+ var _jsx = require('@babel/runtime/helpers/jsx');
11
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
12
+ var react = require('react');
13
+ var dsUtilities = require('@elliemae/ds-utilities');
14
+ var reactPopper = require('react-popper');
15
+ var memoizeOne = require('memoize-one');
16
+ var PopperContent = require('./PopperContent.js');
17
+ var interaction = require('./interaction.js');
18
+ var jsxRuntime = require('react/jsx-runtime');
19
+
20
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+
22
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
23
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
24
+ var memoizeOne__default = /*#__PURE__*/_interopDefaultLegacy(memoizeOne);
25
+
26
+ 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; }
27
+
28
+ 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__default["default"](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; }
29
+ class PopperImpl extends react.Component {
30
+ // we use safeIsMounted because isMounted is not allowed by React.
31
+ constructor(props) {
32
+ super(props);
33
+ this.safeIsMounted = false;
34
+ this.handlePopperPlacementChange = memoizeOne__default["default"](placement => {
35
+ const {
36
+ onPlacementChange
37
+ } = this.props;
38
+ onPlacementChange(placement);
39
+ });
40
+ this.state = {
41
+ isOpen: false,
42
+ destroyed: true
43
+ }; // TODO: Fix the autobinding to remove this!!
44
+
45
+ this.handleMouseEnter = this.handleMouseEnter.bind(this);
46
+ this.handleMouseLeave = this.handleMouseLeave.bind(this);
47
+ this.handleTriggerClick = this.handleTriggerClick.bind(this);
48
+ this.renderTarget = this.renderTarget.bind(this);
49
+ this.updatePopoverState = this.updatePopoverState.bind(this);
50
+ this.handlePopperPlacementChange = this.handlePopperPlacementChange.bind(this);
51
+ this.handleDestroyContent = this.handleDestroyContent.bind(this);
52
+ this.handleContentMouseEnter = this.handleContentMouseEnter.bind(this);
53
+ this.handleContentMouseLeave = this.handleContentMouseLeave.bind(this);
54
+ } // this is needed to prevent setState on unmounted components
55
+
56
+
57
+ componentDidMount() {
58
+ this.safeIsMounted = true;
59
+ }
60
+
61
+ componentDidUpdate() {
62
+ const {
63
+ isOpen,
64
+ destroyed
65
+ } = this.state;
66
+
67
+ if (isOpen === true && destroyed === true) {
68
+ // eslint-disable-next-line react/no-did-update-set-state
69
+ this.setState({
70
+ destroyed: false
71
+ });
72
+ }
73
+ }
74
+
75
+ componentWillUnmount() {
76
+ this.safeIsMounted = false;
77
+ }
78
+
79
+ static getDerivedStateFromProps(nextProps, prevState) {
80
+ const {
81
+ isOpen
82
+ } = nextProps;
83
+ const {
84
+ prevPropIsOpen
85
+ } = prevState; // todo: this causes multiple rerenders
86
+
87
+ if (isOpen !== prevPropIsOpen) {
88
+ return {
89
+ isOpen,
90
+ prevPropIsOpen: isOpen
91
+ };
92
+ }
93
+
94
+ return null;
95
+ }
96
+
97
+ getInteractionObject(interaction$1) {
98
+ let referenceProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
99
+ const {
100
+ isOpen
101
+ } = this.props;
102
+ if (isOpen !== undefined) return {};
103
+ return {
104
+ [interaction.Interaction.CLICK]: {
105
+ handlers: {
106
+ onClick: this.handleTriggerClick
107
+ },
108
+ canClose: () => true
109
+ },
110
+ [interaction.Interaction.HOVER]: {
111
+ handlers: {
112
+ onMouseEnter: referenceProps.onMouseEnter || this.handleMouseEnter,
113
+ onPointerEnter: referenceProps.onMouseEnter || this.handleMouseEnter,
114
+ onMouseLeave: referenceProps.onMouseLeave || this.handleMouseLeave,
115
+ onPointerLeave: referenceProps.onMouseLeave || this.handleMouseLeave,
116
+ onClick: this.handleTriggerClick
117
+ },
118
+ canClose: (isOnTrigger, isOnPopper) => !isOnTrigger && !isOnPopper
119
+ }
120
+ }[interaction$1] || {
121
+ handlers: {},
122
+ canClose: () => true
123
+ };
124
+ }
125
+
126
+ setOpen(opening) {
127
+ const {
128
+ onOpen
129
+ } = this.props;
130
+ const {
131
+ prevPropIsOpen
132
+ } = this.state;
133
+ if (!this.safeIsMounted) return;
134
+
135
+ if (prevPropIsOpen === undefined) {
136
+ this.setState({
137
+ isOpen: opening,
138
+ destroyed: false
139
+ });
140
+ }
141
+
142
+ onOpen(opening);
143
+ }
144
+
145
+ open() {
146
+ clearTimeout(this.closeTimer);
147
+ const {
148
+ delayOpen
149
+ } = this.props;
150
+ this.openTimer = setTimeout(() => this.setOpen(true), delayOpen);
151
+ }
152
+
153
+ close() {
154
+ clearTimeout(this.openTimer);
155
+ const {
156
+ delayClose,
157
+ onClose = () => null
158
+ } = this.props;
159
+ this.closeTimer = setTimeout(() => {
160
+ this.setOpen(false);
161
+ onClose();
162
+ }, delayClose);
163
+ }
164
+
165
+ handleTriggerClick(e) {
166
+ const {
167
+ triggerComponent
168
+ } = this.props;
169
+ const {
170
+ onClick
171
+ } = dsUtilities.get(triggerComponent, 'props') || {};
172
+ this.open();
173
+ if (dsUtilities.isFunction(onClick)) onClick(e);
174
+ }
175
+
176
+ handleContentMouseEnter() {
177
+ this.isMouseOverContent = true;
178
+ }
179
+
180
+ handleContentMouseLeave() {
181
+ this.isMouseOverContent = false;
182
+ const {
183
+ onClose = () => null
184
+ } = this.props;
185
+ setTimeout(() => {
186
+ if (!this.isMouseOverTarget) {
187
+ this.setOpen(false);
188
+ onClose();
189
+ }
190
+ }, 10);
191
+ }
192
+
193
+ handleMouseEnter() {
194
+ this.isMouseOverTarget = true;
195
+ this.open();
196
+ }
197
+
198
+ handleMouseLeave() {
199
+ this.isMouseOverTarget = false;
200
+ setTimeout(() => {
201
+ if (!this.isMouseOverContent) {
202
+ this.close();
203
+ }
204
+ }, 10);
205
+ }
206
+
207
+ updatePopoverState(popperData) {
208
+ this.handlePopperPlacementChange(popperData.placement);
209
+ return popperData;
210
+ }
211
+
212
+ handleDestroyContent() {
213
+ this.setState({
214
+ destroyed: true
215
+ });
216
+ }
217
+
218
+ renderTarget(_ref) {
219
+ let {
220
+ ref
221
+ } = _ref;
222
+ const {
223
+ isOpen
224
+ } = this.state;
225
+ const {
226
+ triggerComponent,
227
+ interactionType,
228
+ renderReference
229
+ } = this.props;
230
+ const componentInnerRef = dsUtilities.get(triggerComponent, ['props', 'innerRef'], () => null);
231
+ const compRef = dsUtilities.isDOMTypeElement(triggerComponent) ? {
232
+ ref
233
+ } : {
234
+ innerRef: dsUtilities.mergeRefs(ref, componentInnerRef)
235
+ };
236
+ const triggerHandler = this.getInteractionObject(interactionType, triggerComponent.props).handlers;
237
+
238
+ const targetProps = _objectSpread(_objectSpread(_objectSpread({}, triggerHandler), compRef), {}, {
239
+ 'aria-haspopup': true,
240
+ 'aria-expanded': isOpen
241
+ });
242
+
243
+ if (renderReference) {
244
+ return renderReference(_objectSpread({
245
+ ref
246
+ }, targetProps));
247
+ }
248
+
249
+ return dsUtilities.getComponentFromProps(triggerComponent, targetProps);
250
+ }
251
+
252
+ render() {
253
+ const {
254
+ isOpen,
255
+ destroyed
256
+ } = this.state;
257
+ const {
258
+ placement,
259
+ interactionType,
260
+ showArrow,
261
+ arrowSize,
262
+ arrowGap,
263
+ preventOverflow,
264
+ children: customPopper,
265
+ usePortal,
266
+ blockName,
267
+ contentComponent,
268
+ openAnimationConfig,
269
+ closeAnimationConfig,
270
+ modifiers,
271
+ referenceNode,
272
+ containerProps,
273
+ zIndex,
274
+ hideIfNotVisible
275
+ } = this.props;
276
+
277
+ const allModifiers = _objectSpread({
278
+ offset: {
279
+ enabled: showArrow,
280
+ offset: "0, ".concat(arrowSize + arrowGap)
281
+ },
282
+ preventOverflow: {
283
+ enabled: true,
284
+ padding: 0,
285
+ boundariesElement: preventOverflow
286
+ },
287
+ updatePopoverState: {
288
+ enabled: true,
289
+ fn: this.updatePopoverState,
290
+ order: 900
291
+ }
292
+ }, modifiers);
293
+
294
+ const triggerHandler = this.getInteractionObject(interactionType).handlers;
295
+ const popperContentProps = {
296
+ hideIfNotVisible,
297
+ containerProps,
298
+ isOpen,
299
+ destroyed: isOpen ? false : destroyed,
300
+ arrowSize,
301
+ blockName,
302
+ showArrow,
303
+ modifiers: allModifiers,
304
+ contentComponent,
305
+ onContentDestroyed: this.handleDestroyContent,
306
+ onClickOutside: () => this.close(),
307
+ placement,
308
+ usePortal,
309
+ openAnimationConfig,
310
+ closeAnimationConfig,
311
+ onMouseEnter: interactionType === interaction.Interaction.HOVER ? this.handleContentMouseEnter : undefined,
312
+ onMouseLeave: interactionType === interaction.Interaction.HOVER ? this.handleContentMouseLeave : undefined,
313
+ referenceNode,
314
+ zIndex
315
+ };
316
+
317
+ if (customPopper && typeof customPopper === 'function') {
318
+ return /*#__PURE__*/_jsx__default["default"](reactPopper.Manager, {}, void 0, customPopper({
319
+ Reference: reactPopper.Reference,
320
+ triggerHandler,
321
+ content: /*#__PURE__*/jsxRuntime.jsx(PopperContent, _objectSpread({}, popperContentProps))
322
+ }));
323
+ }
324
+
325
+ return /*#__PURE__*/_jsx__default["default"](reactPopper.Manager, {}, void 0, /*#__PURE__*/_jsx__default["default"](reactPopper.Reference, {}, void 0, this.renderTarget), /*#__PURE__*/jsxRuntime.jsx(PopperContent, _objectSpread({}, popperContentProps)));
326
+ }
327
+
328
+ }
329
+
330
+ Object.defineProperty(exports, 'Reference', {
331
+ enumerable: true,
332
+ get: function () { return reactPopper.Reference; }
333
+ });
334
+ exports.PopperContent = PopperContent;
335
+ exports["default"] = PopperImpl;
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
10
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
11
+
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
15
+
16
+ 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; }
17
+
18
+ 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__default["default"](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; }
19
+
20
+ const getArrowStylesBySize = function (position) {
21
+ let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30;
22
+ const basePosition = position && position.split('-')[0];
23
+ return _objectSpread({
24
+ borderWidth: size
25
+ }, {
26
+ top: {
27
+ top: '100% !important',
28
+ transform: "rotateZ(".concat(180, "deg)")
29
+ },
30
+ right: {
31
+ right: '100%',
32
+ transform: "rotateZ(".concat(-90, "deg)")
33
+ },
34
+ bottom: {
35
+ bottom: '100%',
36
+ transform: "rotateZ(".concat(0, "deg)")
37
+ },
38
+ left: {
39
+ left: '100%',
40
+ transform: "rotateZ(".concat(90, "deg)")
41
+ }
42
+ }[basePosition]);
43
+ };
44
+
45
+ exports["default"] = getArrowStylesBySize;
46
+ exports.getArrowStylesBySize = getArrowStylesBySize;
package/cjs/index.js ADDED
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var DSPopper = require('./DSPopper.js');
6
+ var getArrowStylesBySize = require('./getArrowStylesBySize.js');
7
+ var interaction = require('./interaction.js');
8
+ var positions = require('./positions.js');
9
+
10
+
11
+
12
+ exports.DSPopper = DSPopper.DSPopper;
13
+ exports.DSPopperWithSchema = DSPopper.DSPopperWithSchema;
14
+ exports["default"] = DSPopper.DSPopper;
15
+ exports.getArrowStylesBySize = getArrowStylesBySize.getArrowStylesBySize;
16
+ exports.PopperInteractions = interaction.Interaction;
17
+ exports.interactions = interaction.interactions;
18
+ exports.PopperPositions = positions.Position;
19
+ exports.positions = positions.positions;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const Interaction = {
6
+ CLICK: 'click',
7
+ HOVER: 'hover'
8
+ };
9
+ const interactions = [Interaction.CLICK, Interaction.HOVER];
10
+
11
+ exports.Interaction = Interaction;
12
+ exports.interactions = interactions;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const Position = {
6
+ AUTO: 'auto',
7
+ AUTO_START: 'auto-start',
8
+ AUTO_END: 'auto-end',
9
+ BOTTOM: 'bottom',
10
+ BOTTOM_START: 'bottom-start',
11
+ BOTTOM_END: 'bottom-end',
12
+ LEFT: 'left',
13
+ LEFT_END: 'left-end',
14
+ LEFT_START: 'left-start',
15
+ RIGHT: 'right',
16
+ RIGHT_END: 'right-end',
17
+ RIGHT_START: 'right-start',
18
+ TOP: 'top',
19
+ TOP_START: 'top-start',
20
+ TOP_END: 'top-end'
21
+ };
22
+ const positions = [Position.AUTO_START, Position.AUTO_END, Position.AUTO, Position.TOP_START, Position.TOP, Position.TOP_END, Position.RIGHT_START, Position.RIGHT, Position.RIGHT_END, Position.BOTTOM_START, Position.BOTTOM, Position.BOTTOM_END, Position.LEFT_START, Position.LEFT, Position.LEFT_END];
23
+
24
+ exports.Position = Position;
25
+ exports.positions = positions;