UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

85 lines (68 loc) 2.07 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = keepRunning; var _createDefaultSetter = _interopRequireDefault(require("./createDefaultSetter")); var _EventManager = _interopRequireDefault(require("./EventManager")); var _TaskRunner = _interopRequireDefault(require("./TaskRunner")); function keep(fn, findEl, e) { var _this = this; if (e && e.target) { var currentTarget = e.currentTarget; e.persist(); var delayer = new _TaskRunner["default"](); var keeper = new _TaskRunner["default"](); var event = new _EventManager["default"](currentTarget); var stopFn = function stopFn() { if (delayer.isRunning) { delayer.cancel(); } if (keeper.isRunning) { keeper.cancel(); fn.call(_this, e); } event.clear(); }; var delayFn = function delayFn() { keeper.run(40, function () { if (findEl() !== currentTarget) { stopFn(); } else { fn.call(_this, e, true); } }); }; delayer.delay(500, delayFn); event.addEventListener('mouseleave', stopFn); event.addEventListener('mouseup', stopFn); } fn.call(this, e); } function keepRunning(findEl) { return function (target, key, descriptor) { var constructor = target.constructor; var fn = descriptor.value; return { configurable: true, get: function get() { if (this === target) { return fn; } if (this.constructor !== constructor && Object.getPrototypeOf(this).constructor === constructor) { return fn; } var boundFn = keep.bind(this, fn, findEl.bind(this)); Object.defineProperty(this, key, { value: boundFn, configurable: true, writable: true }); return boundFn; }, set: (0, _createDefaultSetter["default"])(key) }; }; } //# sourceMappingURL=keepRunning.js.map