Spaces:
Runtime error
Runtime error
<html> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<meta name="google" value="notranslate"> | |
<meta name="description" content="<%= htmlWebpackPlugin.options.APP_NAME %> is a powerful Scratch mod that enhances your Scratch experience with advanced features and optimizations." /> | |
<!-- OpenGraph Meta Tags for Discord/Social Embeds --> | |
<meta property="og:title" content="<%= htmlWebpackPlugin.options.title %>" /> | |
<meta property="og:description" content="<%= htmlWebpackPlugin.options.APP_NAME %> is a powerful Scratch mod that enhances your Scratch experience with advanced features and optimizations." /> | |
<meta property="og:type" content="website" /> | |
<meta property="og:image" content="<%= htmlWebpackPlugin.options.root %>images/apple-touch-icon.png" /> | |
<meta property="og:url" content="https://warp.mistium.com/" /> | |
<title><%= htmlWebpackPlugin.options.title %></title> | |
<link rel="apple-touch-icon" href="<%= htmlWebpackPlugin.options.root %>images/apple-touch-icon.png"> | |
<% if (htmlWebpackPlugin.options.root === "/" || htmlWebpackPlugin.options.root === "") { %> | |
<link rel="manifest" href="<%= htmlWebpackPlugin.options.root %>manifest.webmanifest"> | |
<% } %> | |
<style> | |
.splash-screen { | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
top: 0; | |
left: 0; | |
display: flex; | |
flex-direction: column; | |
gap: 1rem; | |
align-items: center; | |
justify-content: center; | |
text-align: center; | |
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; | |
} | |
.splash-screen[hidden] { | |
display: none; | |
} | |
.splash-screen[data-theme="dark"] { | |
background-color: #333; | |
color: white; | |
} | |
.splash-screen > * { | |
max-width: 80%; | |
} | |
.splash-spinner:after { | |
content: " "; | |
display: block; | |
width: 64px; | |
height: 64px; | |
border-radius: 50%; | |
border: 6px solid; | |
border-color: currentColor transparent currentColor transparent; | |
animation: splash-spinner 1.2s linear infinite; | |
} | |
@keyframes splash-spinner { | |
0% { transform: rotate(0deg); } | |
100% { transform: rotate(360deg); } | |
} | |
.splash-error-title { | |
font-weight: bold; | |
} | |
.splash-error-title a { | |
color: inherit; | |
} | |
.splash-errors { | |
font-family: monospace; | |
} | |
.splash-error-list { | |
white-space: pre-wrap; | |
} | |
.splash-reset { | |
color: inherit; | |
background: none; | |
padding: 0; | |
margin: 0; | |
border: none; | |
text-decoration: underline; | |
cursor: pointer; | |
} | |
.splash-reset:disabled { | |
opacity: 0.8; | |
} | |
</style> | |
</head> | |
<body> | |
<noscript> | |
<div class="splash-screen"> | |
<div> | |
<h1><%= htmlWebpackPlugin.options.APP_NAME %> requires JavaScript</h1> | |
<p>Consider using <a href="https://desktop.turbowarp.org/">TurboWarp Desktop</a> if you are afraid of remote JavaScript.</p> | |
</div> | |
</div> | |
</noscript> | |
<div class="splash-screen spash-waiting-for-js" hidden> | |
<div class="splash-spinner"></div> | |
<div class="splash-error-title" hidden>Something went wrong. <a href="https://scratch.mit.edu/users/M1stium/#comments" target="_blank" rel="noreferrer">Please report</a> with the information below.</div> | |
<div class="splash-errors" hidden></div> | |
<button class="splash-reset" hidden>Click here to reset caches (can fix some errors)</button> | |
</div> | |
<script> | |
(function () { | |
'use strict'; | |
var theme = ''; | |
var accent = '#ff4c4c'; | |
try { | |
var themeSetting = localStorage.getItem('tw:theme'); | |
} catch (e) { | |
// ignore | |
} | |
if (themeSetting === 'light') { | |
theme = 'light'; | |
} else if (themeSetting === 'dark') { | |
theme = 'dark'; | |
} else if (themeSetting) { | |
try { | |
var parsed = JSON.parse(themeSetting); | |
if (parsed.accent === 'purple') { | |
accent = '#855cd6'; | |
} else if (parsed.accent === 'blue') { | |
accent = '#4c97ff'; | |
} | |
if (parsed.gui === 'dark' || parsed.gui === 'light') { | |
theme = parsed.gui; | |
} | |
} catch (e) { | |
// ignore | |
} | |
} | |
if (!theme) { | |
theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; | |
} | |
var splash = document.querySelector('.spash-waiting-for-js'); | |
splash.setAttribute('data-theme', theme); | |
if (theme !== 'dark') { | |
if (<%= JSON.stringify(htmlWebpackPlugin.options.isEditor) %>) { | |
splash.style.backgroundColor = accent; | |
splash.style.color = 'white'; | |
} else { | |
splash.style.color = accent; | |
} | |
} | |
splash.hidden = false; | |
var splashErrorTitle = document.querySelector('.splash-error-title'); | |
var splashError = document.querySelector('.splash-errors'); | |
var splashReset = document.querySelector('.splash-reset'); | |
var totalErrors = 0; | |
window.onerror = function (event, source, line, col, err) { | |
if (++totalErrors > 5) return; // dont bother logging more | |
splashErrorTitle.hidden = splashError.hidden = splashReset.hidden = false; | |
var el = document.createElement('div'); | |
el.textContent = 'Error (splash) in ' + source + ' (' + line + ':' + col + '): ' + err; | |
splashError.appendChild(el); | |
}; | |
splashReset.onclick = function () { | |
splashReset.disabled = true; | |
function hardRefresh() { | |
var search = location.search.replace(/[?&]nocache=\d+/, ''); | |
location.replace(location.pathname + search + (search ? '&' : '?') + 'nocache=' + Math.floor(Math.random() * 100000)); | |
} | |
if ('serviceWorker' in navigator) { | |
setTimeout(hardRefresh, 5000); | |
navigator.serviceWorker.getRegistration(<%= JSON.stringify(htmlWebpackPlugin.options.root) %>) | |
.then(function(registration) { | |
if (registration) { | |
return registration.unregister(); | |
} | |
}) | |
.then(hardRefresh) | |
.catch(hardRefresh); | |
} else { | |
hardRefresh(); | |
} | |
}; | |
window.SplashEnd = () => { | |
splash.hidden = true; | |
window.onerror = null; | |
}; | |
})(); | |
</script> | |
<div id="app"></div> | |
</body> | |
</html> | |