UNPKG

@redocly/theme

Version:

Shared UI components lib

26 lines (20 loc) 628 B
import nprogress from 'nprogress'; nprogress.configure({ trickleSpeed: 100, template: '<div class="bar" role="bar"><div class="peg"></div></div>', }); // Only the last caller should be able to call nprogress.done() let lastCalledBy: symbol; export async function withLoadProgress<T>(loadTarget: Promise<T>): Promise<T> { const callIdentifier = Symbol(); lastCalledBy = callIdentifier; // Cancel any existing progress and restart nprogress.done(); nprogress.start(); return loadTarget.finally(() => { if (lastCalledBy === callIdentifier) { nprogress.done(); nprogress.remove(); } }); }