31 lines
673 B
JavaScript
31 lines
673 B
JavaScript
// Utilities
|
|
import { onScopeDispose } from 'vue';
|
|
const HOLD_REPEAT = 50;
|
|
const HOLD_DELAY = 500;
|
|
export function useHold(_ref) {
|
|
let {
|
|
toggleUpDown
|
|
} = _ref;
|
|
let timeout = -1;
|
|
let interval = -1;
|
|
onScopeDispose(holdStop);
|
|
function holdStart(value) {
|
|
holdStop();
|
|
tick(value);
|
|
timeout = window.setTimeout(() => {
|
|
interval = window.setInterval(() => tick(value), HOLD_REPEAT);
|
|
}, HOLD_DELAY);
|
|
}
|
|
function holdStop() {
|
|
window.clearTimeout(timeout);
|
|
window.clearInterval(interval);
|
|
}
|
|
function tick(value) {
|
|
toggleUpDown(value === 'up');
|
|
}
|
|
return {
|
|
holdStart,
|
|
holdStop
|
|
};
|
|
}
|
|
//# sourceMappingURL=hold.mjs.map
|