aotds-docks/src/routes/export/[format=outputFormat]/Serialized.svelte

54 lines
1.1 KiB
Svelte

<article>
<nav>
<button
use:clipboard={{ text: data }}
on:copied={copied}
on:error={copyError}>{copyLabel} <i>content_paste</i></button
>
<button on:click={handleSave}>download <i>download</i></button>
</nav>
<pre><code>{data}</code></pre>
<a hidden {href} {download} bind:this={fileDownload} />
</article>
<script>
import { clipboard } from "$lib/actions/clipboard.js";
export let data = "Loading...";
export let format;
let copyLabel = "clipboard";
const copied = () => {
copyLabel = "copied!";
setTimeout(() => (copyLabel = "clipboard"), 2000);
};
const copyError = () => {
copyLabel = "error copying";
setTimeout(() => (copyLabel = "clipboard"), 2000);
};
$: href = "data:text/plain;charset=utf-8," + encodeURIComponent(data);
$: download = (data?.identification?.shipClass || "ship") + "." + format;
let fileDownload;
function handleSave() {
fileDownload?.click();
}
</script>
<style>
article {
background-color: var(--primary-container);
}
button {
font-size: var(--font-scale-10);
}
nav {
position: absolute;
right: 5em;
}
</style>