aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Schedule/CoverBypass.svelte
blob: 1f166e06c097a921175522970ccdd0555d628085 (plain) (blame)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<script lang="ts">
  import type { Media } from '$lib/Data/AniList/media';
  import MediaTitleDisplay from '$lib/List/MediaTitleDisplay.svelte';
  import type { SubsPleaseEpisode } from '$lib/Media/Anime/Airing/Subtitled/subsPlease';

  import { outboundLink } from '$lib/Media/links';
  import tooltip from '$lib/Tooltip/tooltip';
  import { abbreviate } from '$lib/Utility/string';
  import settings from '$stores/settings';

  export let media: Media | null;
  export let entry: SubsPleaseEpisode;
  export let cover = true;
  export let showTooltip = true;

  const abbreviateTo = 40;

  const titleSelect = (media: Media | null) =>
    media ? media.title.english || media.title.romaji || media.title.native : null;
</script>

<a
  href={media
    ? outboundLink(media, 'anime', $settings.displayOutboundLinksTo)
    : outboundLink(
        null,
        'anime',
        $settings.displayOutboundLinksTo,
        true,
        titleSelect(media) || entry.title
      )}
  target="_blank"
  title={`<img src="${
    $settings.displayDataSaver ? media?.coverImage.medium : media?.coverImage.extraLarge
  }" style="width: 250px; object-fit: cover; border-radius: 8px;" />`}
  use:tooltip
  data-tooltip-disable={media && cover ? false : true}
>
  {#if media}
    <MediaTitleDisplay
      title={media.title}
      abbreviate
      {abbreviateTo}
      tooltip={showTooltip
        ? media.title.english?.length > abbreviateTo ||
          media.title.romaji?.length > abbreviateTo ||
          media.title.native?.length > abbreviateTo
        : false}
    />
  {:else}
    <span title={entry.title} use:tooltip>
      {abbreviate(entry.title, abbreviateTo)}
    </span>
  {/if}
</a>