mirror of
https://github.com/ElemeFE/element.git
synced 2025-12-13 11:34:02 +08:00
27 lines
712 B
JavaScript
27 lines
712 B
JavaScript
import { once, on } from 'element-ui/src/utils/dom';
|
|
import { isMac } from 'element-ui/src/utils/util';
|
|
|
|
export default {
|
|
bind(el, binding, vnode) {
|
|
let interval = null;
|
|
let startTime;
|
|
const maxIntervals = isMac() ? 100 : 300;
|
|
const handler = () => vnode.context[binding.expression].apply();
|
|
const clear = () => {
|
|
if (Date.now() - startTime < maxIntervals) {
|
|
handler();
|
|
}
|
|
clearInterval(interval);
|
|
interval = null;
|
|
};
|
|
|
|
on(el, 'mousedown', (e) => {
|
|
if (e.button !== 0) return;
|
|
startTime = Date.now();
|
|
once(document, 'mouseup', clear);
|
|
clearInterval(interval);
|
|
interval = setInterval(handler, maxIntervals);
|
|
});
|
|
}
|
|
};
|