You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.9 KiB
50 lines
1.9 KiB
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
var _excluded = ["visible", "mobile"];
|
|
import * as React from 'react';
|
|
import { useState, useEffect } from 'react';
|
|
import isMobile from "rc-util/es/isMobile";
|
|
import Mask from './Mask';
|
|
import PopupInner from './PopupInner';
|
|
import MobilePopupInner from './MobilePopupInner';
|
|
var Popup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
var visible = _ref.visible,
|
|
mobile = _ref.mobile,
|
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
|
|
var _useState = useState(visible),
|
|
_useState2 = _slicedToArray(_useState, 2),
|
|
innerVisible = _useState2[0],
|
|
serInnerVisible = _useState2[1];
|
|
|
|
var _useState3 = useState(false),
|
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
inMobile = _useState4[0],
|
|
setInMobile = _useState4[1];
|
|
|
|
var cloneProps = _objectSpread(_objectSpread({}, props), {}, {
|
|
visible: innerVisible
|
|
}); // We check mobile in visible changed here.
|
|
// And this also delay set `innerVisible` to avoid popup component render flash
|
|
|
|
|
|
useEffect(function () {
|
|
serInnerVisible(visible);
|
|
|
|
if (visible && mobile) {
|
|
setInMobile(isMobile());
|
|
}
|
|
}, [visible, mobile]);
|
|
var popupNode = inMobile ? /*#__PURE__*/React.createElement(MobilePopupInner, _extends({}, cloneProps, {
|
|
mobile: mobile,
|
|
ref: ref
|
|
})) : /*#__PURE__*/React.createElement(PopupInner, _extends({}, cloneProps, {
|
|
ref: ref
|
|
})); // We can use fragment directly but this may failed some selector usage. Keep as origin logic
|
|
|
|
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Mask, cloneProps), popupNode);
|
|
});
|
|
Popup.displayName = 'Popup';
|
|
export default Popup; |