atagen

malice

public
Star0
Watch0
20fe182f3204e4d4923607816147c3fa0ae4cccc
2
ssh://brewery@pls.lobotomise.me:33/atagen/malice.git

Blame: web/src/lib/Emoji.svelte

544a170ead2catagen2026-10-20 11:47 UTC1
<script lang="ts">
544a170ead2catagen2026-10-20 11:47 UTC2
  import { twemojiUrl } from './twemoji';
544a170ead2catagen2026-10-20 11:47 UTC3
544a170ead2catagen2026-10-20 11:47 UTC4
  export let emoji: string;
544a170ead2catagen2026-10-20 11:47 UTC5
  export let size: number | string = 20;
544a170ead2catagen2026-10-20 11:47 UTC6
  export let label: string | null = null;
d07bca5da4aeatagen2026-10-26 03:48 UTC7
  export let lazy = false;
544a170ead2catagen2026-10-20 11:47 UTC8
544a170ead2catagen2026-10-20 11:47 UTC9
  let failed = false;
544a170ead2catagen2026-10-20 11:47 UTC10
  $: emoji, (failed = false);
544a170ead2catagen2026-10-20 11:47 UTC11
  $: dim = typeof size === 'number' ? `${size}px` : size;
544a170ead2catagen2026-10-20 11:47 UTC12
  $: align = typeof size === 'number' ? 'middle' : '-0.25em';
544a170ead2catagen2026-10-20 11:47 UTC13
</script>
544a170ead2catagen2026-10-20 11:47 UTC14
544a170ead2catagen2026-10-20 11:47 UTC15
{#if failed}
544a170ead2catagen2026-10-20 11:47 UTC16
  <span class="native" style={`font-size:${dim}`} aria-label={label ?? undefined}>{emoji}</span>
544a170ead2catagen2026-10-20 11:47 UTC17
{:else}
544a170ead2catagen2026-10-20 11:47 UTC18
  <img
544a170ead2catagen2026-10-20 11:47 UTC19
    class="emoji"
544a170ead2catagen2026-10-20 11:47 UTC20
    src={twemojiUrl(emoji)}
544a170ead2catagen2026-10-20 11:47 UTC21
    alt={emoji}
544a170ead2catagen2026-10-20 11:47 UTC22
    aria-label={label ?? undefined}
544a170ead2catagen2026-10-20 11:47 UTC23
    style={`width:${dim};height:${dim};vertical-align:${align}`}
544a170ead2catagen2026-10-20 11:47 UTC24
    draggable="false"
d07bca5da4aeatagen2026-10-26 03:48 UTC25
    loading={lazy ? 'lazy' : undefined}
d07bca5da4aeatagen2026-10-26 03:48 UTC26
    decoding="async"
544a170ead2catagen2026-10-20 11:47 UTC27
    on:error={() => (failed = true)}
544a170ead2catagen2026-10-20 11:47 UTC28
  />
544a170ead2catagen2026-10-20 11:47 UTC29
{/if}
544a170ead2catagen2026-10-20 11:47 UTC30
544a170ead2catagen2026-10-20 11:47 UTC31
<style>
544a170ead2catagen2026-10-20 11:47 UTC32
  .emoji { display: inline-block; object-fit: contain; }
544a170ead2catagen2026-10-20 11:47 UTC33
  .native { display: inline-block; line-height: 1; vertical-align: middle; }
544a170ead2catagen2026-10-20 11:47 UTC34
</style>