aboutsummaryrefslogtreecommitdiff
path: root/src/lib/MarkdownLink.svelte
blob: ee8c49003f76ad518f4595307d85a506b9e4ca0f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script lang="ts">
  let { href, text }: { href: string; text: string } = $props();
  let safeHref = $derived.by(() => {
    try {
      let url = new URL(href);

      switch (url.protocol) {
        case 'javascript:':
          return '#';

        default:
          return href;
      }
    } catch (error) {
      return '#';
    }
  });
</script>

<a href={safeHref} target="_blank">{text}</a>