/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* filesLoader.js :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: edbernar setTimeout(resolve, ms)); } async function loadFiles() { const percentText = document.getElementById('percentLoad'); const loadBar = document.getElementsByClassName('loading-bar')[0]; window.addEventListener('beforeunload', () => { Object.values(files).forEach((file) => { URL.revokeObjectURL(file); }); }); Object.entries(url_files).forEach(([key, value]) => { if (typeof value === 'object') { files[key] = {}; Object.entries(value).forEach(([k, v]) => { fetch(v) .then(response => response.blob()) .then(blob => { files[key][k] = URL.createObjectURL(blob); }); }); return; } fetch(value) .then(response => response.blob()) .then(blob => { files[key] = URL.createObjectURL(blob); }); }); while (Object.values(files).length < Object.values(url_files).length) { const value = Math.round(Object.values(files).length * 100 / Object.values(url_files).length) + '%' percentText.innerText = value; loadBar.style.width = value; await sleep(50); } } export { files, loadFiles };