index.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  3. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  4. import * as React from 'react';
  5. import { useRef } from 'react';
  6. import classNames from 'classnames';
  7. import CSSMotion from 'rc-motion';
  8. import { offset } from "../../util";
  9. import Panel from "./Panel";
  10. var Content = /*#__PURE__*/React.forwardRef(function (props, ref) {
  11. var prefixCls = props.prefixCls,
  12. title = props.title,
  13. style = props.style,
  14. className = props.className,
  15. visible = props.visible,
  16. forceRender = props.forceRender,
  17. destroyOnClose = props.destroyOnClose,
  18. motionName = props.motionName,
  19. ariaId = props.ariaId,
  20. onVisibleChanged = props.onVisibleChanged,
  21. mousePosition = props.mousePosition;
  22. var dialogRef = useRef();
  23. // ============================= Style ==============================
  24. var _React$useState = React.useState(),
  25. _React$useState2 = _slicedToArray(_React$useState, 2),
  26. transformOrigin = _React$useState2[0],
  27. setTransformOrigin = _React$useState2[1];
  28. var contentStyle = {};
  29. if (transformOrigin) {
  30. contentStyle.transformOrigin = transformOrigin;
  31. }
  32. function onPrepare() {
  33. var elementOffset = offset(dialogRef.current);
  34. setTransformOrigin(mousePosition && (mousePosition.x || mousePosition.y) ? "".concat(mousePosition.x - elementOffset.left, "px ").concat(mousePosition.y - elementOffset.top, "px") : '');
  35. }
  36. // ============================= Render =============================
  37. return /*#__PURE__*/React.createElement(CSSMotion, {
  38. visible: visible,
  39. onVisibleChanged: onVisibleChanged,
  40. onAppearPrepare: onPrepare,
  41. onEnterPrepare: onPrepare,
  42. forceRender: forceRender,
  43. motionName: motionName,
  44. removeOnLeave: destroyOnClose,
  45. ref: dialogRef
  46. }, function (_ref, motionRef) {
  47. var motionClassName = _ref.className,
  48. motionStyle = _ref.style;
  49. return /*#__PURE__*/React.createElement(Panel, _extends({}, props, {
  50. ref: ref,
  51. title: title,
  52. ariaId: ariaId,
  53. prefixCls: prefixCls,
  54. holderRef: motionRef,
  55. style: _objectSpread(_objectSpread(_objectSpread({}, motionStyle), style), contentStyle),
  56. className: classNames(className, motionClassName)
  57. }));
  58. });
  59. });
  60. Content.displayName = 'Content';
  61. export default Content;