Spaces:
Sleeping
Sleeping
<html> | |
<head> | |
<style> | |
iframe { | |
display: block; | |
} | |
</style> | |
<meta name="robots" content="noindex"> | |
</head> | |
<body> | |
<p>Iframe:</p> | |
<iframe width="600" height="600"></iframe> | |
<p> | |
<a href="" target="_blank" rel="opener">Open packager in new tab</a> | |
</p> | |
<script> | |
const frame = document.querySelector('iframe'); | |
const link = document.querySelector('a'); | |
const url = `/?import_from=${location.origin}`; | |
frame.src = url; | |
link.href = url; | |
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); | |
// In production, the expected origin is 'https://packager.turbowarp.org' | |
const expectedOrigin = location.origin; | |
window.addEventListener('message', async (e) => { | |
if (e.origin !== expectedOrigin) { | |
return; | |
} | |
const data = e.data && e.data.p4; | |
if (!data) { | |
return; | |
} | |
if (data.type === 'ready-for-import') { | |
e.source.postMessage({ | |
p4: { | |
type: 'start-import' | |
} | |
}, expectedOrigin); | |
await sleep(Math.random() * 2000); | |
const res = await fetch('./example.sb3'); | |
const buffer = await res.arrayBuffer(); | |
e.source.postMessage({ | |
p4: { | |
type: 'finish-import', | |
data: buffer, | |
name: 'example.sb3' | |
} | |
}, expectedOrigin, [buffer]); | |
} | |
}); | |
</script> | |
</body> | |
</html> | |