1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | var _typeof = require("@babel/runtime/helpers/typeof");
|
6 |
|
7 | Object.defineProperty(exports, "__esModule", {
|
8 | value: true
|
9 | });
|
10 | exports["default"] = void 0;
|
11 |
|
12 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
13 |
|
14 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
15 |
|
16 | var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
17 |
|
18 | var React = _interopRequireWildcard(require("react"));
|
19 |
|
20 | var _rcMotion = _interopRequireDefault(require("rc-motion"));
|
21 |
|
22 | var _addEventListener = _interopRequireDefault(require("rc-util/lib/Dom/addEventListener"));
|
23 |
|
24 | var _useMergedState3 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
|
25 |
|
26 | var _classnames = _interopRequireDefault(require("classnames"));
|
27 |
|
28 | var _omit = _interopRequireDefault(require("rc-util/lib/omit"));
|
29 |
|
30 | var _VerticalAlignTopOutlined = _interopRequireDefault(require("@ant-design/icons/VerticalAlignTopOutlined"));
|
31 |
|
32 | var _throttleByAnimationFrame = require("../_util/throttleByAnimationFrame");
|
33 |
|
34 | var _configProvider = require("../config-provider");
|
35 |
|
36 | var _getScroll = _interopRequireDefault(require("../_util/getScroll"));
|
37 |
|
38 | var _scrollTo = _interopRequireDefault(require("../_util/scrollTo"));
|
39 |
|
40 | var _reactNode = require("../_util/reactNode");
|
41 |
|
42 | function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
43 |
|
44 | function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
45 |
|
46 | var BackTop = function BackTop(props) {
|
47 | var _useMergedState = (0, _useMergedState3["default"])(false, {
|
48 | value: props.visible
|
49 | }),
|
50 | _useMergedState2 = (0, _slicedToArray2["default"])(_useMergedState, 2),
|
51 | visible = _useMergedState2[0],
|
52 | setVisible = _useMergedState2[1];
|
53 |
|
54 | var ref = React.createRef();
|
55 | var scrollEvent = React.useRef();
|
56 |
|
57 | var getDefaultTarget = function getDefaultTarget() {
|
58 | return ref.current && ref.current.ownerDocument ? ref.current.ownerDocument : window;
|
59 | };
|
60 |
|
61 | var handleScroll = (0, _throttleByAnimationFrame.throttleByAnimationFrame)(function (e) {
|
62 | var visibilityHeight = props.visibilityHeight;
|
63 | var scrollTop = (0, _getScroll["default"])(e.target, true);
|
64 | setVisible(scrollTop > visibilityHeight);
|
65 | });
|
66 |
|
67 | var bindScrollEvent = function bindScrollEvent() {
|
68 | var target = props.target;
|
69 | var getTarget = target || getDefaultTarget;
|
70 | var container = getTarget();
|
71 | scrollEvent.current = (0, _addEventListener["default"])(container, 'scroll', function (e) {
|
72 | handleScroll(e);
|
73 | });
|
74 | handleScroll({
|
75 | target: container
|
76 | });
|
77 | };
|
78 |
|
79 | React.useEffect(function () {
|
80 | bindScrollEvent();
|
81 | return function () {
|
82 | if (scrollEvent.current) {
|
83 | scrollEvent.current.remove();
|
84 | }
|
85 |
|
86 | handleScroll.cancel();
|
87 | };
|
88 | }, [props.target]);
|
89 |
|
90 | var scrollToTop = function scrollToTop(e) {
|
91 | var onClick = props.onClick,
|
92 | target = props.target,
|
93 | _props$duration = props.duration,
|
94 | duration = _props$duration === void 0 ? 450 : _props$duration;
|
95 | (0, _scrollTo["default"])(0, {
|
96 | getContainer: target || getDefaultTarget,
|
97 | duration: duration
|
98 | });
|
99 |
|
100 | if (typeof onClick === 'function') {
|
101 | onClick(e);
|
102 | }
|
103 | };
|
104 |
|
105 | var renderChildren = function renderChildren(_ref) {
|
106 | var prefixCls = _ref.prefixCls,
|
107 | rootPrefixCls = _ref.rootPrefixCls;
|
108 | var children = props.children;
|
109 | var defaultElement = React.createElement("div", {
|
110 | className: "".concat(prefixCls, "-content")
|
111 | }, React.createElement("div", {
|
112 | className: "".concat(prefixCls, "-icon")
|
113 | }, React.createElement(_VerticalAlignTopOutlined["default"], null)));
|
114 | return React.createElement(_rcMotion["default"], {
|
115 | visible: visible,
|
116 | motionName: "".concat(rootPrefixCls, "-fade"),
|
117 | removeOnLeave: true
|
118 | }, function (_ref2) {
|
119 | var motionClassName = _ref2.className;
|
120 | var childNode = children || defaultElement;
|
121 | return React.createElement("div", null, (0, _reactNode.cloneElement)(childNode, function (_ref3) {
|
122 | var className = _ref3.className;
|
123 | return {
|
124 | className: (0, _classnames["default"])(motionClassName, className)
|
125 | };
|
126 | }));
|
127 | });
|
128 | };
|
129 |
|
130 | var _React$useContext = React.useContext(_configProvider.ConfigContext),
|
131 | getPrefixCls = _React$useContext.getPrefixCls,
|
132 | direction = _React$useContext.direction;
|
133 |
|
134 | var customizePrefixCls = props.prefixCls,
|
135 | _props$className = props.className,
|
136 | className = _props$className === void 0 ? '' : _props$className;
|
137 | var prefixCls = getPrefixCls('back-top', customizePrefixCls);
|
138 | var rootPrefixCls = getPrefixCls();
|
139 | var classString = (0, _classnames["default"])(prefixCls, (0, _defineProperty2["default"])({}, "".concat(prefixCls, "-rtl"), direction === 'rtl'), className);
|
140 |
|
141 | var divProps = (0, _omit["default"])(props, ['prefixCls', 'className', 'children', 'visibilityHeight', 'target', 'visible']);
|
142 | return React.createElement("div", (0, _extends2["default"])({}, divProps, {
|
143 | className: classString,
|
144 | onClick: scrollToTop,
|
145 | ref: ref
|
146 | }), renderChildren({
|
147 | prefixCls: prefixCls,
|
148 | rootPrefixCls: rootPrefixCls
|
149 | }));
|
150 | };
|
151 |
|
152 | BackTop.defaultProps = {
|
153 | visibilityHeight: 400
|
154 | };
|
155 |
|
156 | var _default = React.memo(BackTop);
|
157 |
|
158 | exports["default"] = _default; |
\ | No newline at end of file |