Blame: web/src/lib/ComposerText.svelte
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 1 | <script lang="ts"> |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 2 | import { segmentEmoji, twemojiUrl } from './twemoji'; |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 3 | |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 4 | export let text: string; |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 5 | |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 6 | let failed = new Set<string>(); |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 7 | $: segments = segmentEmoji(text); |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 8 | </script> |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 9 | |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 10 | {#each segments as segment}{#if segment.emoji && !failed.has(segment.text)}<span class="composer-emoji">{segment.text}<img src={twemojiUrl(segment.text)} alt="" draggable="false" on:error={() => (failed = new Set([...failed, segment.text]))} /></span>{:else}{segment.text}{/if}{/each} |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 11 | |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 12 | <style> |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 13 | .composer-emoji { position: relative; color: transparent; } |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 14 | .composer-emoji img { position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 100%; height: 1.15em; object-fit: contain; } |
2021154f9e16 | atagen | 2026-10-25 02:37 UTC | 15 | </style> |