| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = throttleByAnimationFrame;
- exports.throttleByAnimationFrameDecorator = throttleByAnimationFrameDecorator;
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
- var _raf = _interopRequireDefault(require("./raf"));
- function throttleByAnimationFrame(fn) {
- var requestId;
- var later = function later(args) {
- return function () {
- requestId = null;
- fn.apply(void 0, (0, _toConsumableArray2.default)(args));
- };
- };
- var throttled = function throttled() {
- if (requestId == null) {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- requestId = (0, _raf.default)(later(args));
- }
- };
- throttled.cancel = function () {
- return _raf.default.cancel(requestId);
- };
- return throttled;
- }
- function throttleByAnimationFrameDecorator() {
- // eslint-disable-next-line func-names
- return function (target, key, descriptor) {
- var fn = descriptor.value;
- var definingProperty = false;
- return {
- configurable: true,
- get: function get() {
- // eslint-disable-next-line no-prototype-builtins
- if (definingProperty || this === target.prototype || this.hasOwnProperty(key)) {
- return fn;
- }
- var boundFn = throttleByAnimationFrame(fn.bind(this));
- definingProperty = true;
- Object.defineProperty(this, key, {
- value: boundFn,
- configurable: true,
- writable: true
- });
- definingProperty = false;
- return boundFn;
- }
- };
- };
- }
|