UNPKG

5.31 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports["default"] = void 0;
9var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12var _VerticalAlignTopOutlined = _interopRequireDefault(require("@ant-design/icons/VerticalAlignTopOutlined"));
13var _classnames = _interopRequireDefault(require("classnames"));
14var _rcMotion = _interopRequireDefault(require("rc-motion"));
15var _addEventListener = _interopRequireDefault(require("rc-util/lib/Dom/addEventListener"));
16var _omit = _interopRequireDefault(require("rc-util/lib/omit"));
17var React = _interopRequireWildcard(require("react"));
18var _configProvider = require("../config-provider");
19var _getScroll = _interopRequireDefault(require("../_util/getScroll"));
20var _reactNode = require("../_util/reactNode");
21var _scrollTo = _interopRequireDefault(require("../_util/scrollTo"));
22var _throttleByAnimationFrame = _interopRequireDefault(require("../_util/throttleByAnimationFrame"));
23var _warning = _interopRequireDefault(require("../_util/warning"));
24var _style = _interopRequireDefault(require("./style"));
25var BackTop = function BackTop(props) {
26 var customizePrefixCls = props.prefixCls,
27 _props$className = props.className,
28 className = _props$className === void 0 ? '' : _props$className,
29 _props$visibilityHeig = props.visibilityHeight,
30 visibilityHeight = _props$visibilityHeig === void 0 ? 400 : _props$visibilityHeig,
31 target = props.target,
32 onClick = props.onClick,
33 _props$duration = props.duration,
34 duration = _props$duration === void 0 ? 450 : _props$duration;
35 var _React$useState = React.useState(visibilityHeight === 0),
36 _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
37 visible = _React$useState2[0],
38 setVisible = _React$useState2[1];
39 var ref = React.useRef(null);
40 var scrollEvent = React.useRef(null);
41 var getDefaultTarget = function getDefaultTarget() {
42 return ref.current && ref.current.ownerDocument ? ref.current.ownerDocument : window;
43 };
44 var handleScroll = (0, _throttleByAnimationFrame["default"])(function (e) {
45 var scrollTop = (0, _getScroll["default"])(e.target, true);
46 setVisible(scrollTop >= visibilityHeight);
47 });
48 var bindScrollEvent = function bindScrollEvent() {
49 var getTarget = target || getDefaultTarget;
50 var container = getTarget();
51 scrollEvent.current = (0, _addEventListener["default"])(container, 'scroll', handleScroll);
52 handleScroll({
53 target: container
54 });
55 };
56 if (process.env.NODE_ENV !== 'production') {
57 process.env.NODE_ENV !== "production" ? (0, _warning["default"])(false, 'BackTop', '`BackTop` is deprecated, please use `FloatButton.BackTop` instead.') : void 0;
58 }
59 React.useEffect(function () {
60 bindScrollEvent();
61 return function () {
62 var _a;
63 handleScroll.cancel();
64 (_a = scrollEvent.current) === null || _a === void 0 ? void 0 : _a.remove();
65 };
66 }, [target]);
67 var scrollToTop = function scrollToTop(e) {
68 (0, _scrollTo["default"])(0, {
69 getContainer: target || getDefaultTarget,
70 duration: duration
71 });
72 onClick === null || onClick === void 0 ? void 0 : onClick(e);
73 };
74 var _React$useContext = React.useContext(_configProvider.ConfigContext),
75 getPrefixCls = _React$useContext.getPrefixCls,
76 direction = _React$useContext.direction;
77 var prefixCls = getPrefixCls('back-top', customizePrefixCls);
78 var rootPrefixCls = getPrefixCls();
79 var _useStyle = (0, _style["default"])(prefixCls),
80 _useStyle2 = (0, _slicedToArray2["default"])(_useStyle, 2),
81 wrapSSR = _useStyle2[0],
82 hashId = _useStyle2[1];
83 var classString = (0, _classnames["default"])(hashId, prefixCls, (0, _defineProperty2["default"])({}, prefixCls + "-rtl", direction === 'rtl'), className);
84 // fix https://fb.me/react-unknown-prop
85 var divProps = (0, _omit["default"])(props, ['prefixCls', 'className', 'children', 'visibilityHeight', 'target']);
86 var defaultElement = /*#__PURE__*/React.createElement("div", {
87 className: prefixCls + "-content"
88 }, /*#__PURE__*/React.createElement("div", {
89 className: prefixCls + "-icon"
90 }, /*#__PURE__*/React.createElement(_VerticalAlignTopOutlined["default"], null)));
91 return wrapSSR( /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, divProps, {
92 className: classString,
93 onClick: scrollToTop,
94 ref: ref
95 }), /*#__PURE__*/React.createElement(_rcMotion["default"], {
96 visible: visible,
97 motionName: rootPrefixCls + "-fade"
98 }, function (_ref) {
99 var motionClassName = _ref.className;
100 return (0, _reactNode.cloneElement)(props.children || defaultElement, function (_ref2) {
101 var cloneCls = _ref2.className;
102 return {
103 className: (0, _classnames["default"])(motionClassName, cloneCls)
104 };
105 });
106 })));
107};
108var _default = /*#__PURE__*/React.memo(BackTop);
109exports["default"] = _default;
\No newline at end of file