@rc-component/trigger 2.2.6 → 3.1.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/lib/index.js CHANGED
@@ -1,140 +1,127 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.default = void 0;
9
7
  exports.generateTrigger = generateTrigger;
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
8
  var _portal = _interopRequireDefault(require("@rc-component/portal"));
14
9
  var _classnames = _interopRequireDefault(require("classnames"));
15
- var _rcResizeObserver = _interopRequireDefault(require("rc-resize-observer"));
16
- var _findDOMNode = require("rc-util/lib/Dom/findDOMNode");
17
- var _shadow = require("rc-util/lib/Dom/shadow");
18
- var _useEvent = _interopRequireDefault(require("rc-util/lib/hooks/useEvent"));
19
- var _useId = _interopRequireDefault(require("rc-util/lib/hooks/useId"));
20
- var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
21
- var _isMobile = _interopRequireDefault(require("rc-util/lib/isMobile"));
10
+ var _resizeObserver = _interopRequireDefault(require("@rc-component/resize-observer"));
11
+ var _findDOMNode = require("@rc-component/util/lib/Dom/findDOMNode");
12
+ var _shadow = require("@rc-component/util/lib/Dom/shadow");
13
+ var _useEvent = _interopRequireDefault(require("@rc-component/util/lib/hooks/useEvent"));
14
+ var _useId = _interopRequireDefault(require("@rc-component/util/lib/hooks/useId"));
15
+ var _useLayoutEffect = _interopRequireDefault(require("@rc-component/util/lib/hooks/useLayoutEffect"));
16
+ var _isMobile = _interopRequireDefault(require("@rc-component/util/lib/isMobile"));
22
17
  var React = _interopRequireWildcard(require("react"));
23
18
  var _Popup = _interopRequireDefault(require("./Popup"));
24
19
  var _TriggerWrapper = _interopRequireDefault(require("./TriggerWrapper"));
25
20
  var _context = _interopRequireDefault(require("./context"));
26
- var _useAction3 = _interopRequireDefault(require("./hooks/useAction"));
27
- var _useAlign3 = _interopRequireDefault(require("./hooks/useAlign"));
21
+ var _useAction = _interopRequireDefault(require("./hooks/useAction"));
22
+ var _useAlign = _interopRequireDefault(require("./hooks/useAlign"));
28
23
  var _useWatch = _interopRequireDefault(require("./hooks/useWatch"));
29
24
  var _useWinClick = _interopRequireDefault(require("./hooks/useWinClick"));
30
25
  var _util = require("./util");
31
- var _excluded = ["prefixCls", "children", "action", "showAction", "hideAction", "popupVisible", "defaultPopupVisible", "onPopupVisibleChange", "afterPopupVisibleChange", "mouseEnterDelay", "mouseLeaveDelay", "focusDelay", "blurDelay", "mask", "maskClosable", "getPopupContainer", "forceRender", "autoDestroy", "destroyPopupOnHide", "popup", "popupClassName", "popupStyle", "popupPlacement", "builtinPlacements", "popupAlign", "zIndex", "stretch", "getPopupClassNameFromAlign", "fresh", "alignPoint", "onPopupClick", "onPopupAlign", "arrow", "popupMotion", "maskMotion", "popupTransitionName", "popupAnimation", "maskTransitionName", "maskAnimation", "className", "getTriggerDOMNode"];
26
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
27
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
29
  // Removed Props List
33
30
  // Seems this can be auto
34
31
  // getDocument?: (element?: HTMLElement) => Document;
35
32
 
36
33
  // New version will not wrap popup with `rc-trigger-popup-content` when multiple children
37
34
 
38
- function generateTrigger() {
39
- var PortalComponent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _portal.default;
40
- var Trigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
41
- var _props$prefixCls = props.prefixCls,
42
- prefixCls = _props$prefixCls === void 0 ? 'rc-trigger-popup' : _props$prefixCls,
43
- children = props.children,
44
- _props$action = props.action,
45
- action = _props$action === void 0 ? 'hover' : _props$action,
46
- showAction = props.showAction,
47
- hideAction = props.hideAction,
48
- popupVisible = props.popupVisible,
49
- defaultPopupVisible = props.defaultPopupVisible,
50
- onPopupVisibleChange = props.onPopupVisibleChange,
51
- afterPopupVisibleChange = props.afterPopupVisibleChange,
52
- mouseEnterDelay = props.mouseEnterDelay,
53
- _props$mouseLeaveDela = props.mouseLeaveDelay,
54
- mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,
55
- focusDelay = props.focusDelay,
56
- blurDelay = props.blurDelay,
57
- mask = props.mask,
58
- _props$maskClosable = props.maskClosable,
59
- maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,
60
- getPopupContainer = props.getPopupContainer,
61
- forceRender = props.forceRender,
62
- autoDestroy = props.autoDestroy,
63
- destroyPopupOnHide = props.destroyPopupOnHide,
64
- popup = props.popup,
65
- popupClassName = props.popupClassName,
66
- popupStyle = props.popupStyle,
67
- popupPlacement = props.popupPlacement,
68
- _props$builtinPlaceme = props.builtinPlacements,
69
- builtinPlacements = _props$builtinPlaceme === void 0 ? {} : _props$builtinPlaceme,
70
- popupAlign = props.popupAlign,
71
- zIndex = props.zIndex,
72
- stretch = props.stretch,
73
- getPopupClassNameFromAlign = props.getPopupClassNameFromAlign,
74
- fresh = props.fresh,
75
- alignPoint = props.alignPoint,
76
- onPopupClick = props.onPopupClick,
77
- onPopupAlign = props.onPopupAlign,
78
- arrow = props.arrow,
79
- popupMotion = props.popupMotion,
80
- maskMotion = props.maskMotion,
81
- popupTransitionName = props.popupTransitionName,
82
- popupAnimation = props.popupAnimation,
83
- maskTransitionName = props.maskTransitionName,
84
- maskAnimation = props.maskAnimation,
85
- className = props.className,
86
- getTriggerDOMNode = props.getTriggerDOMNode,
87
- restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
88
- var mergedAutoDestroy = autoDestroy || destroyPopupOnHide || false;
35
+ function generateTrigger(PortalComponent = _portal.default) {
36
+ const Trigger = /*#__PURE__*/React.forwardRef((props, ref) => {
37
+ const {
38
+ prefixCls = 'rc-trigger-popup',
39
+ children,
40
+ // Action
41
+ action = 'hover',
42
+ showAction,
43
+ hideAction,
44
+ // Open
45
+ popupVisible,
46
+ defaultPopupVisible,
47
+ onPopupVisibleChange,
48
+ afterPopupVisibleChange,
49
+ // Delay
50
+ mouseEnterDelay,
51
+ mouseLeaveDelay = 0.1,
52
+ focusDelay,
53
+ blurDelay,
54
+ // Mask
55
+ mask,
56
+ maskClosable = true,
57
+ // Portal
58
+ getPopupContainer,
59
+ forceRender,
60
+ autoDestroy,
61
+ // Popup
62
+ popup,
63
+ popupClassName,
64
+ popupStyle,
65
+ popupPlacement,
66
+ builtinPlacements = {},
67
+ popupAlign,
68
+ zIndex,
69
+ stretch,
70
+ getPopupClassNameFromAlign,
71
+ fresh,
72
+ alignPoint,
73
+ onPopupClick,
74
+ onPopupAlign,
75
+ // Arrow
76
+ arrow,
77
+ // Motion
78
+ popupMotion,
79
+ maskMotion,
80
+ // Private
81
+ getTriggerDOMNode,
82
+ ...restProps
83
+ } = props;
84
+ const mergedAutoDestroy = autoDestroy || false;
89
85
 
90
86
  // =========================== Mobile ===========================
91
- var _React$useState = React.useState(false),
92
- _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
93
- mobile = _React$useState2[0],
94
- setMobile = _React$useState2[1];
95
- (0, _useLayoutEffect.default)(function () {
87
+ const [mobile, setMobile] = React.useState(false);
88
+ (0, _useLayoutEffect.default)(() => {
96
89
  setMobile((0, _isMobile.default)());
97
90
  }, []);
98
91
 
99
92
  // ========================== Context ===========================
100
- var subPopupElements = React.useRef({});
101
- var parentContext = React.useContext(_context.default);
102
- var context = React.useMemo(function () {
93
+ const subPopupElements = React.useRef({});
94
+ const parentContext = React.useContext(_context.default);
95
+ const context = React.useMemo(() => {
103
96
  return {
104
- registerSubPopup: function registerSubPopup(id, subPopupEle) {
97
+ registerSubPopup: (id, subPopupEle) => {
105
98
  subPopupElements.current[id] = subPopupEle;
106
- parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, subPopupEle);
99
+ parentContext?.registerSubPopup(id, subPopupEle);
107
100
  }
108
101
  };
109
102
  }, [parentContext]);
110
103
 
111
104
  // =========================== Popup ============================
112
- var id = (0, _useId.default)();
113
- var _React$useState3 = React.useState(null),
114
- _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
115
- popupEle = _React$useState4[0],
116
- setPopupEle = _React$useState4[1];
105
+ const id = (0, _useId.default)();
106
+ const [popupEle, setPopupEle] = React.useState(null);
117
107
 
118
108
  // Used for forwardRef popup. Not use internal
119
- var externalPopupRef = React.useRef(null);
120
- var setPopupRef = (0, _useEvent.default)(function (node) {
109
+ const externalPopupRef = React.useRef(null);
110
+ const setPopupRef = (0, _useEvent.default)(node => {
121
111
  externalPopupRef.current = node;
122
112
  if ((0, _findDOMNode.isDOM)(node) && popupEle !== node) {
123
113
  setPopupEle(node);
124
114
  }
125
- parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, node);
115
+ parentContext?.registerSubPopup(id, node);
126
116
  });
127
117
 
128
118
  // =========================== Target ===========================
129
119
  // Use state to control here since `useRef` update not trigger render
130
- var _React$useState5 = React.useState(null),
131
- _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
132
- targetEle = _React$useState6[0],
133
- setTargetEle = _React$useState6[1];
120
+ const [targetEle, setTargetEle] = React.useState(null);
134
121
 
135
122
  // Used for forwardRef target. Not use internal
136
- var externalForwardRef = React.useRef(null);
137
- var setTargetRef = (0, _useEvent.default)(function (node) {
123
+ const externalForwardRef = React.useRef(null);
124
+ const setTargetRef = (0, _useEvent.default)(node => {
138
125
  if ((0, _findDOMNode.isDOM)(node) && targetEle !== node) {
139
126
  setTargetEle(node);
140
127
  externalForwardRef.current = node;
@@ -142,191 +129,141 @@ function generateTrigger() {
142
129
  });
143
130
 
144
131
  // ========================== Children ==========================
145
- var child = React.Children.only(children);
146
- var originChildProps = (child === null || child === void 0 ? void 0 : child.props) || {};
147
- var cloneProps = {};
148
- var inPopupOrChild = (0, _useEvent.default)(function (ele) {
149
- var _getShadowRoot, _getShadowRoot2;
150
- var childDOM = targetEle;
151
- return (childDOM === null || childDOM === void 0 ? void 0 : childDOM.contains(ele)) || ((_getShadowRoot = (0, _shadow.getShadowRoot)(childDOM)) === null || _getShadowRoot === void 0 ? void 0 : _getShadowRoot.host) === ele || ele === childDOM || (popupEle === null || popupEle === void 0 ? void 0 : popupEle.contains(ele)) || ((_getShadowRoot2 = (0, _shadow.getShadowRoot)(popupEle)) === null || _getShadowRoot2 === void 0 ? void 0 : _getShadowRoot2.host) === ele || ele === popupEle || Object.values(subPopupElements.current).some(function (subPopupEle) {
152
- return (subPopupEle === null || subPopupEle === void 0 ? void 0 : subPopupEle.contains(ele)) || ele === subPopupEle;
153
- });
132
+ const child = React.Children.only(children);
133
+ const originChildProps = child?.props || {};
134
+ const cloneProps = {};
135
+ const inPopupOrChild = (0, _useEvent.default)(ele => {
136
+ const childDOM = targetEle;
137
+ return childDOM?.contains(ele) || (0, _shadow.getShadowRoot)(childDOM)?.host === ele || ele === childDOM || popupEle?.contains(ele) || (0, _shadow.getShadowRoot)(popupEle)?.host === ele || ele === popupEle || Object.values(subPopupElements.current).some(subPopupEle => subPopupEle?.contains(ele) || ele === subPopupEle);
154
138
  });
155
139
 
156
- // =========================== Motion ===========================
157
- var mergePopupMotion = (0, _util.getMotion)(prefixCls, popupMotion, popupAnimation, popupTransitionName);
158
- var mergeMaskMotion = (0, _util.getMotion)(prefixCls, maskMotion, maskAnimation, maskTransitionName);
159
-
160
140
  // ============================ Open ============================
161
- var _React$useState7 = React.useState(defaultPopupVisible || false),
162
- _React$useState8 = (0, _slicedToArray2.default)(_React$useState7, 2),
163
- internalOpen = _React$useState8[0],
164
- setInternalOpen = _React$useState8[1];
141
+ const [internalOpen, setInternalOpen] = React.useState(defaultPopupVisible || false);
165
142
 
166
143
  // Render still use props as first priority
167
- var mergedOpen = popupVisible !== null && popupVisible !== void 0 ? popupVisible : internalOpen;
144
+ const mergedOpen = popupVisible ?? internalOpen;
168
145
 
169
146
  // We use effect sync here in case `popupVisible` back to `undefined`
170
- var setMergedOpen = (0, _useEvent.default)(function (nextOpen) {
147
+ const setMergedOpen = (0, _useEvent.default)(nextOpen => {
171
148
  if (popupVisible === undefined) {
172
149
  setInternalOpen(nextOpen);
173
150
  }
174
151
  });
175
- (0, _useLayoutEffect.default)(function () {
152
+ (0, _useLayoutEffect.default)(() => {
176
153
  setInternalOpen(popupVisible || false);
177
154
  }, [popupVisible]);
178
- var openRef = React.useRef(mergedOpen);
155
+ const openRef = React.useRef(mergedOpen);
179
156
  openRef.current = mergedOpen;
180
- var lastTriggerRef = React.useRef([]);
157
+ const lastTriggerRef = React.useRef([]);
181
158
  lastTriggerRef.current = [];
182
- var internalTriggerOpen = (0, _useEvent.default)(function (nextOpen) {
183
- var _lastTriggerRef$curre;
159
+ const internalTriggerOpen = (0, _useEvent.default)(nextOpen => {
184
160
  setMergedOpen(nextOpen);
185
161
 
186
162
  // Enter or Pointer will both trigger open state change
187
163
  // We only need take one to avoid duplicated change event trigger
188
164
  // Use `lastTriggerRef` to record last open type
189
- if (((_lastTriggerRef$curre = lastTriggerRef.current[lastTriggerRef.current.length - 1]) !== null && _lastTriggerRef$curre !== void 0 ? _lastTriggerRef$curre : mergedOpen) !== nextOpen) {
165
+ if ((lastTriggerRef.current[lastTriggerRef.current.length - 1] ?? mergedOpen) !== nextOpen) {
190
166
  lastTriggerRef.current.push(nextOpen);
191
- onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextOpen);
167
+ onPopupVisibleChange?.(nextOpen);
192
168
  }
193
169
  });
194
170
 
195
171
  // Trigger for delay
196
- var delayRef = React.useRef();
197
- var clearDelay = function clearDelay() {
172
+ const delayRef = React.useRef();
173
+ const clearDelay = () => {
198
174
  clearTimeout(delayRef.current);
199
175
  };
200
- var triggerOpen = function triggerOpen(nextOpen) {
201
- var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
176
+ const triggerOpen = (nextOpen, delay = 0) => {
202
177
  clearDelay();
203
178
  if (delay === 0) {
204
179
  internalTriggerOpen(nextOpen);
205
180
  } else {
206
- delayRef.current = setTimeout(function () {
181
+ delayRef.current = setTimeout(() => {
207
182
  internalTriggerOpen(nextOpen);
208
183
  }, delay * 1000);
209
184
  }
210
185
  };
211
- React.useEffect(function () {
212
- return clearDelay;
213
- }, []);
186
+ React.useEffect(() => clearDelay, []);
214
187
 
215
188
  // ========================== Motion ============================
216
- var _React$useState9 = React.useState(false),
217
- _React$useState10 = (0, _slicedToArray2.default)(_React$useState9, 2),
218
- inMotion = _React$useState10[0],
219
- setInMotion = _React$useState10[1];
220
- (0, _useLayoutEffect.default)(function (firstMount) {
189
+ const [inMotion, setInMotion] = React.useState(false);
190
+ (0, _useLayoutEffect.default)(firstMount => {
221
191
  if (!firstMount || mergedOpen) {
222
192
  setInMotion(true);
223
193
  }
224
194
  }, [mergedOpen]);
225
- var _React$useState11 = React.useState(null),
226
- _React$useState12 = (0, _slicedToArray2.default)(_React$useState11, 2),
227
- motionPrepareResolve = _React$useState12[0],
228
- setMotionPrepareResolve = _React$useState12[1];
195
+ const [motionPrepareResolve, setMotionPrepareResolve] = React.useState(null);
229
196
 
230
197
  // =========================== Align ============================
231
- var _React$useState13 = React.useState(null),
232
- _React$useState14 = (0, _slicedToArray2.default)(_React$useState13, 2),
233
- mousePos = _React$useState14[0],
234
- setMousePos = _React$useState14[1];
235
- var setMousePosByEvent = function setMousePosByEvent(event) {
198
+ const [mousePos, setMousePos] = React.useState(null);
199
+ const setMousePosByEvent = event => {
236
200
  setMousePos([event.clientX, event.clientY]);
237
201
  };
238
- var _useAlign = (0, _useAlign3.default)(mergedOpen, popupEle, alignPoint && mousePos !== null ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign),
239
- _useAlign2 = (0, _slicedToArray2.default)(_useAlign, 11),
240
- ready = _useAlign2[0],
241
- offsetX = _useAlign2[1],
242
- offsetY = _useAlign2[2],
243
- offsetR = _useAlign2[3],
244
- offsetB = _useAlign2[4],
245
- arrowX = _useAlign2[5],
246
- arrowY = _useAlign2[6],
247
- scaleX = _useAlign2[7],
248
- scaleY = _useAlign2[8],
249
- alignInfo = _useAlign2[9],
250
- onAlign = _useAlign2[10];
251
- var _useAction = (0, _useAction3.default)(mobile, action, showAction, hideAction),
252
- _useAction2 = (0, _slicedToArray2.default)(_useAction, 2),
253
- showActions = _useAction2[0],
254
- hideActions = _useAction2[1];
255
- var clickToShow = showActions.has('click');
256
- var clickToHide = hideActions.has('click') || hideActions.has('contextMenu');
257
- var triggerAlign = (0, _useEvent.default)(function () {
202
+ const [ready, offsetX, offsetY, offsetR, offsetB, arrowX, arrowY, scaleX, scaleY, alignInfo, onAlign] = (0, _useAlign.default)(mergedOpen, popupEle, alignPoint && mousePos !== null ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign);
203
+ const [showActions, hideActions] = (0, _useAction.default)(mobile, action, showAction, hideAction);
204
+ const clickToShow = showActions.has('click');
205
+ const clickToHide = hideActions.has('click') || hideActions.has('contextMenu');
206
+ const triggerAlign = (0, _useEvent.default)(() => {
258
207
  if (!inMotion) {
259
208
  onAlign();
260
209
  }
261
210
  });
262
- var onScroll = function onScroll() {
211
+ const onScroll = () => {
263
212
  if (openRef.current && alignPoint && clickToHide) {
264
213
  triggerOpen(false);
265
214
  }
266
215
  };
267
216
  (0, _useWatch.default)(mergedOpen, targetEle, popupEle, triggerAlign, onScroll);
268
- (0, _useLayoutEffect.default)(function () {
217
+ (0, _useLayoutEffect.default)(() => {
269
218
  triggerAlign();
270
219
  }, [mousePos, popupPlacement]);
271
220
 
272
221
  // When no builtinPlacements and popupAlign changed
273
- (0, _useLayoutEffect.default)(function () {
274
- if (mergedOpen && !(builtinPlacements !== null && builtinPlacements !== void 0 && builtinPlacements[popupPlacement])) {
222
+ (0, _useLayoutEffect.default)(() => {
223
+ if (mergedOpen && !builtinPlacements?.[popupPlacement]) {
275
224
  triggerAlign();
276
225
  }
277
226
  }, [JSON.stringify(popupAlign)]);
278
- var alignedClassName = React.useMemo(function () {
279
- var baseClassName = (0, _util.getAlignPopupClassName)(builtinPlacements, prefixCls, alignInfo, alignPoint);
280
- return (0, _classnames.default)(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo));
227
+ const alignedClassName = React.useMemo(() => {
228
+ const baseClassName = (0, _util.getAlignPopupClassName)(builtinPlacements, prefixCls, alignInfo, alignPoint);
229
+ return (0, _classnames.default)(baseClassName, getPopupClassNameFromAlign?.(alignInfo));
281
230
  }, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);
282
231
 
283
232
  // ============================ Refs ============================
284
- React.useImperativeHandle(ref, function () {
285
- return {
286
- nativeElement: externalForwardRef.current,
287
- popupElement: externalPopupRef.current,
288
- forceAlign: triggerAlign
289
- };
290
- });
233
+ React.useImperativeHandle(ref, () => ({
234
+ nativeElement: externalForwardRef.current,
235
+ popupElement: externalPopupRef.current,
236
+ forceAlign: triggerAlign
237
+ }));
291
238
 
292
239
  // ========================== Stretch ===========================
293
- var _React$useState15 = React.useState(0),
294
- _React$useState16 = (0, _slicedToArray2.default)(_React$useState15, 2),
295
- targetWidth = _React$useState16[0],
296
- setTargetWidth = _React$useState16[1];
297
- var _React$useState17 = React.useState(0),
298
- _React$useState18 = (0, _slicedToArray2.default)(_React$useState17, 2),
299
- targetHeight = _React$useState18[0],
300
- setTargetHeight = _React$useState18[1];
301
- var syncTargetSize = function syncTargetSize() {
240
+ const [targetWidth, setTargetWidth] = React.useState(0);
241
+ const [targetHeight, setTargetHeight] = React.useState(0);
242
+ const syncTargetSize = () => {
302
243
  if (stretch && targetEle) {
303
- var rect = targetEle.getBoundingClientRect();
244
+ const rect = targetEle.getBoundingClientRect();
304
245
  setTargetWidth(rect.width);
305
246
  setTargetHeight(rect.height);
306
247
  }
307
248
  };
308
- var onTargetResize = function onTargetResize() {
249
+ const onTargetResize = () => {
309
250
  syncTargetSize();
310
251
  triggerAlign();
311
252
  };
312
253
 
313
254
  // ========================== Motion ============================
314
- var onVisibleChanged = function onVisibleChanged(visible) {
255
+ const onVisibleChanged = visible => {
315
256
  setInMotion(false);
316
257
  onAlign();
317
- afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 || afterPopupVisibleChange(visible);
258
+ afterPopupVisibleChange?.(visible);
318
259
  };
319
260
 
320
261
  // We will trigger align when motion is in prepare
321
- var onPrepare = function onPrepare() {
322
- return new Promise(function (resolve) {
323
- syncTargetSize();
324
- setMotionPrepareResolve(function () {
325
- return resolve;
326
- });
327
- });
328
- };
329
- (0, _useLayoutEffect.default)(function () {
262
+ const onPrepare = () => new Promise(resolve => {
263
+ syncTargetSize();
264
+ setMotionPrepareResolve(() => resolve);
265
+ });
266
+ (0, _useLayoutEffect.default)(() => {
330
267
  if (motionPrepareResolve) {
331
268
  onAlign();
332
269
  motionPrepareResolve();
@@ -339,23 +276,18 @@ function generateTrigger() {
339
276
  * Util wrapper for trigger action
340
277
  */
341
278
  function wrapperAction(eventName, nextOpen, delay, preEvent) {
342
- cloneProps[eventName] = function (event) {
343
- var _originChildProps$eve;
344
- preEvent === null || preEvent === void 0 || preEvent(event);
279
+ cloneProps[eventName] = (event, ...args) => {
280
+ preEvent?.(event);
345
281
  triggerOpen(nextOpen, delay);
346
282
 
347
283
  // Pass to origin
348
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
349
- args[_key - 1] = arguments[_key];
350
- }
351
- (_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 || _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args));
284
+ originChildProps[eventName]?.(event, ...args);
352
285
  };
353
286
  }
354
287
 
355
288
  // ======================= Action: Click ========================
356
289
  if (clickToShow || clickToHide) {
357
- cloneProps.onClick = function (event) {
358
- var _originChildProps$onC;
290
+ cloneProps.onClick = (event, ...args) => {
359
291
  if (openRef.current && clickToHide) {
360
292
  triggerOpen(false);
361
293
  } else if (!openRef.current && clickToShow) {
@@ -364,49 +296,45 @@ function generateTrigger() {
364
296
  }
365
297
 
366
298
  // Pass to origin
367
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
368
- args[_key2 - 1] = arguments[_key2];
369
- }
370
- (_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 || _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args));
299
+ originChildProps.onClick?.(event, ...args);
371
300
  };
372
301
  }
373
302
 
374
303
  // Click to hide is special action since click popup element should not hide
375
- var onPopupPointerDown = (0, _useWinClick.default)(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen);
304
+ const onPopupPointerDown = (0, _useWinClick.default)(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen);
376
305
 
377
306
  // ======================= Action: Hover ========================
378
- var hoverToShow = showActions.has('hover');
379
- var hoverToHide = hideActions.has('hover');
380
- var onPopupMouseEnter;
381
- var onPopupMouseLeave;
307
+ const hoverToShow = showActions.has('hover');
308
+ const hoverToHide = hideActions.has('hover');
309
+ let onPopupMouseEnter;
310
+ let onPopupMouseLeave;
382
311
  if (hoverToShow) {
383
312
  // Compatible with old browser which not support pointer event
384
- wrapperAction('onMouseEnter', true, mouseEnterDelay, function (event) {
313
+ wrapperAction('onMouseEnter', true, mouseEnterDelay, event => {
385
314
  setMousePosByEvent(event);
386
315
  });
387
- wrapperAction('onPointerEnter', true, mouseEnterDelay, function (event) {
316
+ wrapperAction('onPointerEnter', true, mouseEnterDelay, event => {
388
317
  setMousePosByEvent(event);
389
318
  });
390
- onPopupMouseEnter = function onPopupMouseEnter(event) {
319
+ onPopupMouseEnter = event => {
391
320
  // Only trigger re-open when popup is visible
392
- if ((mergedOpen || inMotion) && popupEle !== null && popupEle !== void 0 && popupEle.contains(event.target)) {
321
+ if ((mergedOpen || inMotion) && popupEle?.contains(event.target)) {
393
322
  triggerOpen(true, mouseEnterDelay);
394
323
  }
395
324
  };
396
325
 
397
326
  // Align Point
398
327
  if (alignPoint) {
399
- cloneProps.onMouseMove = function (event) {
400
- var _originChildProps$onM;
328
+ cloneProps.onMouseMove = event => {
401
329
  // setMousePosByEvent(event);
402
- (_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 || _originChildProps$onM.call(originChildProps, event);
330
+ originChildProps.onMouseMove?.(event);
403
331
  };
404
332
  }
405
333
  }
406
334
  if (hoverToHide) {
407
335
  wrapperAction('onMouseLeave', false, mouseLeaveDelay);
408
336
  wrapperAction('onPointerLeave', false, mouseLeaveDelay);
409
- onPopupMouseLeave = function onPopupMouseLeave() {
337
+ onPopupMouseLeave = () => {
410
338
  triggerOpen(false, mouseLeaveDelay);
411
339
  };
412
340
  }
@@ -421,8 +349,7 @@ function generateTrigger() {
421
349
 
422
350
  // ==================== Action: ContextMenu =====================
423
351
  if (showActions.has('contextMenu')) {
424
- cloneProps.onContextMenu = function (event) {
425
- var _originChildProps$onC2;
352
+ cloneProps.onContextMenu = (event, ...args) => {
426
353
  if (openRef.current && hideActions.has('contextMenu')) {
427
354
  triggerOpen(false);
428
355
  } else {
@@ -432,47 +359,44 @@ function generateTrigger() {
432
359
  event.preventDefault();
433
360
 
434
361
  // Pass to origin
435
- for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
436
- args[_key3 - 1] = arguments[_key3];
437
- }
438
- (_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 || _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args));
362
+ originChildProps.onContextMenu?.(event, ...args);
439
363
  };
440
364
  }
441
365
 
442
- // ========================= ClassName ==========================
443
- if (className) {
444
- cloneProps.className = (0, _classnames.default)(originChildProps.className, className);
445
- }
446
-
447
366
  // =========================== Render ===========================
448
- var mergedChildrenProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originChildProps), cloneProps);
367
+ const mergedChildrenProps = {
368
+ ...originChildProps,
369
+ ...cloneProps
370
+ };
449
371
 
450
372
  // Pass props into cloneProps for nest usage
451
- var passedProps = {};
452
- var passedEventList = ['onContextMenu', 'onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur'];
453
- passedEventList.forEach(function (eventName) {
373
+ const passedProps = {};
374
+ const passedEventList = ['onContextMenu', 'onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur'];
375
+ passedEventList.forEach(eventName => {
454
376
  if (restProps[eventName]) {
455
- passedProps[eventName] = function () {
456
- var _mergedChildrenProps$;
457
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
458
- args[_key4] = arguments[_key4];
459
- }
460
- (_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 || _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args));
461
- restProps[eventName].apply(restProps, args);
377
+ passedProps[eventName] = (...args) => {
378
+ mergedChildrenProps[eventName]?.(...args);
379
+ restProps[eventName](...args);
462
380
  };
463
381
  }
464
382
  });
465
383
 
466
384
  // Child Node
467
- var triggerNode = /*#__PURE__*/React.cloneElement(child, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, mergedChildrenProps), passedProps));
468
- var arrowPos = {
385
+ const triggerNode = /*#__PURE__*/React.cloneElement(child, {
386
+ ...mergedChildrenProps,
387
+ ...passedProps
388
+ });
389
+ const arrowPos = {
469
390
  x: arrowX,
470
391
  y: arrowY
471
392
  };
472
- var innerArrow = arrow ? (0, _objectSpread2.default)({}, arrow !== true ? arrow : {}) : null;
393
+ const innerArrow = arrow ? {
394
+ // true and Object likely
395
+ ...(arrow !== true ? arrow : {})
396
+ } : null;
473
397
 
474
398
  // Render
475
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_rcResizeObserver.default, {
399
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_resizeObserver.default, {
476
400
  disabled: !mergedOpen,
477
401
  ref: setTargetRef,
478
402
  onResize: onTargetResize
@@ -508,8 +432,8 @@ function generateTrigger() {
508
432
  mask: mask
509
433
  // Motion
510
434
  ,
511
- motion: mergePopupMotion,
512
- maskMotion: mergeMaskMotion,
435
+ motion: popupMotion,
436
+ maskMotion: maskMotion,
513
437
  onVisibleChanged: onVisibleChanged,
514
438
  onPrepare: onPrepare
515
439
  // Portal