63 lines
2.3 KiB
JavaScript
63 lines
2.3 KiB
JavaScript
|
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 * as React from 'react';
|
||
|
import { useRef } from 'react';
|
||
|
import classNames from 'classnames';
|
||
|
import CSSMotion from 'rc-motion';
|
||
|
import { offset } from "../../util";
|
||
|
import Panel from "./Panel";
|
||
|
var Content = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
||
|
var prefixCls = props.prefixCls,
|
||
|
title = props.title,
|
||
|
style = props.style,
|
||
|
className = props.className,
|
||
|
visible = props.visible,
|
||
|
forceRender = props.forceRender,
|
||
|
destroyOnClose = props.destroyOnClose,
|
||
|
motionName = props.motionName,
|
||
|
ariaId = props.ariaId,
|
||
|
onVisibleChanged = props.onVisibleChanged,
|
||
|
mousePosition = props.mousePosition;
|
||
|
var dialogRef = useRef();
|
||
|
|
||
|
// ============================= Style ==============================
|
||
|
var _React$useState = React.useState(),
|
||
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
||
|
transformOrigin = _React$useState2[0],
|
||
|
setTransformOrigin = _React$useState2[1];
|
||
|
var contentStyle = {};
|
||
|
if (transformOrigin) {
|
||
|
contentStyle.transformOrigin = transformOrigin;
|
||
|
}
|
||
|
function onPrepare() {
|
||
|
var elementOffset = offset(dialogRef.current);
|
||
|
setTransformOrigin(mousePosition && (mousePosition.x || mousePosition.y) ? "".concat(mousePosition.x - elementOffset.left, "px ").concat(mousePosition.y - elementOffset.top, "px") : '');
|
||
|
}
|
||
|
|
||
|
// ============================= Render =============================
|
||
|
return /*#__PURE__*/React.createElement(CSSMotion, {
|
||
|
visible: visible,
|
||
|
onVisibleChanged: onVisibleChanged,
|
||
|
onAppearPrepare: onPrepare,
|
||
|
onEnterPrepare: onPrepare,
|
||
|
forceRender: forceRender,
|
||
|
motionName: motionName,
|
||
|
removeOnLeave: destroyOnClose,
|
||
|
ref: dialogRef
|
||
|
}, function (_ref, motionRef) {
|
||
|
var motionClassName = _ref.className,
|
||
|
motionStyle = _ref.style;
|
||
|
return /*#__PURE__*/React.createElement(Panel, _extends({}, props, {
|
||
|
ref: ref,
|
||
|
title: title,
|
||
|
ariaId: ariaId,
|
||
|
prefixCls: prefixCls,
|
||
|
holderRef: motionRef,
|
||
|
style: _objectSpread(_objectSpread(_objectSpread({}, motionStyle), style), contentStyle),
|
||
|
className: classNames(className, motionClassName)
|
||
|
}));
|
||
|
});
|
||
|
});
|
||
|
Content.displayName = 'Content';
|
||
|
export default Content;
|