1 | import _extends from "@babel/runtime/helpers/esm/extends";
|
2 | import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
3 | import * as React from 'react';
|
4 | import classNames from 'classnames';
|
5 | import isMobile from "rc-util/es/isMobile";
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | var STEP_INTERVAL = 200;
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | var STEP_DELAY = 600;
|
16 | export default function StepHandler(_ref) {
|
17 | var prefixCls = _ref.prefixCls,
|
18 | upNode = _ref.upNode,
|
19 | downNode = _ref.downNode,
|
20 | upDisabled = _ref.upDisabled,
|
21 | downDisabled = _ref.downDisabled,
|
22 | onStep = _ref.onStep;
|
23 |
|
24 | var stepTimeoutRef = React.useRef();
|
25 | var onStepRef = React.useRef();
|
26 | onStepRef.current = onStep;
|
27 |
|
28 | var onStepMouseDown = function onStepMouseDown(e, up) {
|
29 | e.preventDefault();
|
30 | onStepRef.current(up);
|
31 |
|
32 | function loopStep() {
|
33 | onStepRef.current(up);
|
34 | stepTimeoutRef.current = setTimeout(loopStep, STEP_INTERVAL);
|
35 | }
|
36 |
|
37 |
|
38 | stepTimeoutRef.current = setTimeout(loopStep, STEP_DELAY);
|
39 | };
|
40 |
|
41 | var onStopStep = function onStopStep() {
|
42 | clearTimeout(stepTimeoutRef.current);
|
43 | };
|
44 |
|
45 | React.useEffect(function () {
|
46 | return onStopStep;
|
47 | }, []);
|
48 |
|
49 | if (isMobile()) {
|
50 | return null;
|
51 | }
|
52 |
|
53 | var handlerClassName = "".concat(prefixCls, "-handler");
|
54 | var upClassName = classNames(handlerClassName, "".concat(handlerClassName, "-up"), _defineProperty({}, "".concat(handlerClassName, "-up-disabled"), upDisabled));
|
55 | var downClassName = classNames(handlerClassName, "".concat(handlerClassName, "-down"), _defineProperty({}, "".concat(handlerClassName, "-down-disabled"), downDisabled));
|
56 | var sharedHandlerProps = {
|
57 | unselectable: 'on',
|
58 | role: 'button',
|
59 | onMouseUp: onStopStep,
|
60 | onMouseLeave: onStopStep
|
61 | };
|
62 | return React.createElement("div", {
|
63 | className: "".concat(handlerClassName, "-wrap")
|
64 | }, React.createElement("span", _extends({}, sharedHandlerProps, {
|
65 | onMouseDown: function onMouseDown(e) {
|
66 | onStepMouseDown(e, true);
|
67 | },
|
68 | "aria-label": "Increase Value",
|
69 | "aria-disabled": upDisabled,
|
70 | className: upClassName
|
71 | }), upNode || React.createElement("span", {
|
72 | unselectable: "on",
|
73 | className: "".concat(prefixCls, "-handler-up-inner")
|
74 | })), React.createElement("span", _extends({}, sharedHandlerProps, {
|
75 | onMouseDown: function onMouseDown(e) {
|
76 | onStepMouseDown(e, false);
|
77 | },
|
78 | "aria-label": "Decrease Value",
|
79 | "aria-disabled": downDisabled,
|
80 | className: downClassName
|
81 | }), downNode || React.createElement("span", {
|
82 | unselectable: "on",
|
83 | className: "".concat(prefixCls, "-handler-down-inner")
|
84 | })));
|
85 | } |
\ | No newline at end of file |