Rendering pages…
Page ' + n + ' could not be shown
'; }); fetchPage(n + 1); fetchPage(n + 2); countEl.textContent = 'Page ' + n + ' of ' + pages; overlay.querySelectorAll('.mr-preview-nav').forEach(function (b) { b.disabled = Number(b.dataset.step) < 0 ? n <= 1 : n >= pages; }); } function go(n) { if (!pages) return; n = Math.max(1, Math.min(pages, n)); if (n === current && frame.querySelector('img')) return; current = n; show(n); } function switchView(name) { view = name; overlay.querySelectorAll('.mr-preview-tab').forEach(function (t) { t.classList.toggle('is-on', t.dataset.view === name); t.setAttribute('aria-selected', String(t.dataset.view === name)); }); stage.dataset.view = name; overlay.querySelector('.mr-preview-foot').hidden = name !== 'pages'; if (name === 'pdf') { if (!pdfFrame) { pdfFrame = document.createElement('iframe'); pdfFrame.className = 'mr-preview-pdf'; pdfFrame.title = (title || 'Preview') + ' as PDF'; stage.appendChild(pdfFrame); fetch(opts.pdf, { headers: getAuthHeaders() }) .then(function (r) { if (!r.ok) throw new Error('The PDF could not be produced'); return r.blob(); }) .then(function (blob) { var u = URL.createObjectURL(new Blob([blob], { type: 'application/pdf' })); urls.push(u); pdfFrame.src = u; }) .catch(function (err) { pdfFrame.remove(); pdfFrame = null; frame.innerHTML = '' + err.message + '
'; }); } } } overlay.querySelectorAll('.mr-preview-tab').forEach(function (t) { t.addEventListener('click', function () { switchView(t.dataset.view); }); }); fetch(base, { headers: getAuthHeaders() }) .then(function (r) { return r.json(); }) .then(function (d) { if (!d.success) throw new Error(d.error || 'Could not render a preview'); pages = d.pages; show(1); }) .catch(function (err) { frame.innerHTML = ''; var p = document.createElement('p'); p.className = 'mr-preview-status'; p.textContent = err.message; frame.appendChild(p); }); } function fetchToFile(url, name) { fetch(url, { headers: getAuthHeaders() }) .then(function (r) { if (!r.ok) throw new Error('Download failed'); return r.blob(); }) .then(function (blob) { saveBlob(blob, name); }) .catch(function (err) { status(err.message); }); } function saveBlob(blob, name) { var url = URL.createObjectURL(blob); var link = document.createElement('a'); link.href = url; link.download = name; document.body.appendChild(link); link.click(); link.remove(); setTimeout(function () { URL.revokeObjectURL(url); }, 1000); } }());