File size: 824 Bytes
b7b13c6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <script lang="ts">
import { Eye } from '@lucide/svelte';
import { ActionIcon, ActionIconCopyToClipboard } from '$lib/components/app';
import { FileTypeText } from '$lib/enums';
interface Props {
code: string;
language: string;
disabled?: boolean;
onPreview?: (code: string, language: string) => void;
}
let { code, disabled = false, language, onPreview }: Props = $props();
const showPreview = $derived(language?.toLowerCase() === FileTypeText.HTML);
</script>
<div class="code-block-actions">
<ActionIconCopyToClipboard
ariaLabel={disabled ? 'Code incomplete' : 'Copy code'}
canCopy={!disabled}
text={code}
/>
{#if showPreview}
<ActionIcon
{disabled}
icon={Eye}
onclick={() => onPreview!(code, language)}
tooltip={disabled ? 'Code incomplete' : 'Preview code'}
/>
{/if}
</div>
|