1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.throttleByAnimationFrame = throttleByAnimationFrame;
|
9 | exports.throttleByAnimationFrameDecorator = throttleByAnimationFrameDecorator;
|
10 |
|
11 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
12 |
|
13 | var _raf = _interopRequireDefault(require("rc-util/lib/raf"));
|
14 |
|
15 | function throttleByAnimationFrame(fn) {
|
16 | var requestId;
|
17 |
|
18 | var later = function later(args) {
|
19 | return function () {
|
20 | requestId = null;
|
21 | fn.apply(void 0, (0, _toConsumableArray2["default"])(args));
|
22 | };
|
23 | };
|
24 |
|
25 | var throttled = function throttled() {
|
26 | if (requestId == null) {
|
27 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
28 | args[_key] = arguments[_key];
|
29 | }
|
30 |
|
31 | requestId = (0, _raf["default"])(later(args));
|
32 | }
|
33 | };
|
34 |
|
35 | throttled.cancel = function () {
|
36 | return _raf["default"].cancel(requestId);
|
37 | };
|
38 |
|
39 | return throttled;
|
40 | }
|
41 |
|
42 | function throttleByAnimationFrameDecorator() {
|
43 | return function throttle(target, key, descriptor) {
|
44 | var fn = descriptor.value;
|
45 | var definingProperty = false;
|
46 | return {
|
47 | configurable: true,
|
48 | get: function get() {
|
49 |
|
50 |
|
51 |
|
52 |
|
53 | if (definingProperty || this === target.prototype || this.hasOwnProperty(key)) {
|
54 |
|
55 | return fn;
|
56 | }
|
57 |
|
58 | var boundFn = throttleByAnimationFrame(fn.bind(this));
|
59 | definingProperty = true;
|
60 | Object.defineProperty(this, key, {
|
61 | value: boundFn,
|
62 | configurable: true,
|
63 | writable: true
|
64 | });
|
65 | definingProperty = false;
|
66 | return boundFn;
|
67 | }
|
68 | };
|
69 | };
|
70 | } |
\ | No newline at end of file |