1 | "use strict";
|
2 |
|
3 | var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
|
4 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports["default"] = void 0;
|
9 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
10 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11 | var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
12 | var _VerticalAlignTopOutlined = _interopRequireDefault(require("@ant-design/icons/VerticalAlignTopOutlined"));
|
13 | var _classnames = _interopRequireDefault(require("classnames"));
|
14 | var _rcMotion = _interopRequireDefault(require("rc-motion"));
|
15 | var _addEventListener = _interopRequireDefault(require("rc-util/lib/Dom/addEventListener"));
|
16 | var _omit = _interopRequireDefault(require("rc-util/lib/omit"));
|
17 | var React = _interopRequireWildcard(require("react"));
|
18 | var _configProvider = require("../config-provider");
|
19 | var _getScroll = _interopRequireDefault(require("../_util/getScroll"));
|
20 | var _reactNode = require("../_util/reactNode");
|
21 | var _scrollTo = _interopRequireDefault(require("../_util/scrollTo"));
|
22 | var _throttleByAnimationFrame = _interopRequireDefault(require("../_util/throttleByAnimationFrame"));
|
23 | var _warning = _interopRequireDefault(require("../_util/warning"));
|
24 | var _style = _interopRequireDefault(require("./style"));
|
25 | var 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 |
|
85 | var divProps = (0, _omit["default"])(props, ['prefixCls', 'className', 'children', 'visibilityHeight', 'target']);
|
86 | var defaultElement = React.createElement("div", {
|
87 | className: prefixCls + "-content"
|
88 | }, React.createElement("div", {
|
89 | className: prefixCls + "-icon"
|
90 | }, React.createElement(_VerticalAlignTopOutlined["default"], null)));
|
91 | return wrapSSR( React.createElement("div", (0, _extends2["default"])({}, divProps, {
|
92 | className: classString,
|
93 | onClick: scrollToTop,
|
94 | ref: ref
|
95 | }), 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 | };
|
108 | var _default = React.memo(BackTop);
|
109 | exports["default"] = _default; |
\ | No newline at end of file |