UNPKG

vue-wait

Version:

Vue Plugin for Global Loading Management

58 lines (46 loc) 1.33 kB
import { isMatch } from './lib/matcher'; function uniqArray(array) { return array.filter((el, index, arr) => index == arr.indexOf(el)); } export function is(waitingFor, waiter) { if (typeof waiter === 'string' && waiter.match(/[\*\!]/)) { return waitingFor.filter(w => isMatch(w, waiter)).length > 0; } return Array.isArray(waiter) ? waiter.some(w => is(waitingFor, w)) : waitingFor.includes(waiter); } export function any(waitingFor) { return waitingFor.length > 0; } export function start(waitingFor, waiter) { return uniqArray([...waitingFor, waiter]); } export function end(waitingFor, waiter) { return uniqArray(waitingFor).filter(l => l !== waiter); } export function progress(progresses, waiter, current, total = 100) { if (current > total) { return endProgress(progresses, waiter); } return { ...progresses, [waiter]: { current, total, percent: (100 * current) / total } }; } export function endProgress(progresses, waiter) { const { [waiter]: omit, ...omittedProgresses } = progresses; return omittedProgresses; } export function percent(progresses, waiter) { const progress = progresses[waiter]; if (!progress) return 0; return progress.percent; } export function nodeIsDebug() { return process.env.NODE_ENV !== 'production'; }