diff --git a/src/lib/components/Actions.svelte b/src/lib/components/Actions.svelte index 67c7b3f2..a3ba7fcc 100644 --- a/src/lib/components/Actions.svelte +++ b/src/lib/components/Actions.svelte @@ -6,8 +6,7 @@ import { browser } from '$app/environment'; import { waitForRender } from '$lib/util/autoSync'; import { env } from '$lib/util/env'; - import { pakoSerde } from '$lib/util/serde'; - import { stateStore } from '$lib/util/state'; + import { stateStore, urlsStore } from '$lib/util/state'; import { logEvent } from '$lib/util/stats'; import { version as FAVersion } from '@fortawesome/fontawesome-free/package.json'; import dayjs from 'dayjs'; @@ -16,6 +15,7 @@ import DownloadIcon from '~icons/material-symbols/download'; import ExternalLinkIcon from '~icons/material-symbols/open-in-new-rounded'; import WidthIcon from '~icons/material-symbols/width-rounded'; + import CopyInput from './CopyInput.svelte'; import { Separator } from './ui/separator'; const FONT_AWESOME_URL = `https://cdnjs.cloudflare.com/ajax/libs/font-awesome/${FAVersion}/css/all.min.css`; @@ -151,12 +151,6 @@ ${svgString}`); }); }; - const onCopyMarkdown = () => { - document.querySelector('#markdown')?.select(); - document.execCommand('Copy'); - logEvent('copyMarkdown'); - }; - let gistURL = $state(''); stateStore.subscribe(({ loader }) => { if (loader?.type === 'gist') { @@ -173,10 +167,6 @@ ${svgString}`); logEvent('loadGist'); }; - let iUrl: string | undefined = $state(); - let svgUrl: string | undefined = $state(); - let krokiUrl: string | undefined = $state(); - let mdCode: string | undefined = $state(); let imageSizeMode: 'auto' | 'width' | 'height' = $state('auto'); $effect(() => { @@ -187,16 +177,8 @@ ${svgString}`); let imageSize = $state(1080); - let isNetlify = $state(false); - if (browser && ['mermaid.live', 'netlify'].some((path) => window.location.host.includes(path))) { - isNetlify = true; - } - stateStore.subscribe(({ code, serialized }) => { - iUrl = `${rendererUrl}/img/${serialized}?type=png`; - svgUrl = `${rendererUrl}/svg/${serialized}`; - krokiUrl = `${krokiRendererUrl}/mermaid/svg/${pakoSerde.serialize(code)}`; - mdCode = `[![](${iUrl})](${window.location.protocol}//${window.location.host}${window.location.pathname}#${serialized})`; - }); + const isNetlify = + browser && ['mermaid.live', 'netlify'].some((path) => window.location.host.includes(path)); {#snippet dualActionButton(text: string, download: (event: Event) => unknown, url?: string)} @@ -221,13 +203,6 @@ ${svgString}`); Width Height - - - {#if imageSizeMode !== 'auto'}
@@ -239,14 +214,13 @@ ${svgString}`); max="10000" disabled={imageSizeMode === 'auto'} bind:value={imageSize} /> -
- {@render dualActionButton('PNG', onDownloadPNG, iUrl)} - {@render dualActionButton('SVG', onDownloadSVG, svgUrl)} + {@render dualActionButton('PNG', onDownloadPNG, $urlsStore.png)} + {@render dualActionButton('SVG', onDownloadSVG, $urlsStore.svg)} {#if krokiRendererUrl} - + @@ -259,11 +233,8 @@ ${svgString}`); Copy Image {/if} - {#if rendererUrl} -
- - -
+ {#if $urlsStore.mdCode} + {/if}
diff --git a/src/lib/components/CopyInput.svelte b/src/lib/components/CopyInput.svelte new file mode 100644 index 00000000..e4068825 --- /dev/null +++ b/src/lib/components/CopyInput.svelte @@ -0,0 +1,51 @@ + + +
+ { + e.currentTarget.setSelectionRange(0, e.currentTarget.value.length); + }} /> + +
diff --git a/src/lib/components/MainMenu.svelte b/src/lib/components/MainMenu.svelte index b0765d95..cf9035a0 100644 --- a/src/lib/components/MainMenu.svelte +++ b/src/lib/components/MainMenu.svelte @@ -1,6 +1,8 @@ - +
{#each diagramOrder as sample}