2022-11-23 02:42:20 +03:00
|
|
|
<script setup lang="ts">
|
2023-01-08 09:21:09 +03:00
|
|
|
import type { mastodon } from 'masto'
|
2022-11-23 02:42:20 +03:00
|
|
|
|
2024-12-01 04:59:42 +03:00
|
|
|
const props = defineProps<{
|
2023-01-08 09:21:09 +03:00
|
|
|
account: mastodon.v1.Account
|
2023-01-05 15:10:22 +03:00
|
|
|
square?: boolean
|
2022-11-23 02:42:20 +03:00
|
|
|
}>()
|
2022-11-29 09:00:06 +03:00
|
|
|
|
2024-02-21 18:20:08 +03:00
|
|
|
const loaded = ref(false)
|
|
|
|
const error = ref(false)
|
2024-11-27 12:09:33 +03:00
|
|
|
|
|
|
|
const preferredMotion = usePreferredReducedMotion()
|
|
|
|
const accountAvatarSrc = computed(() => {
|
2024-12-01 04:59:42 +03:00
|
|
|
return preferredMotion.value === 'reduce' ? (props.account?.avatarStatic ?? props.account.avatar) : props.account.avatar
|
2024-11-27 12:09:33 +03:00
|
|
|
})
|
2022-11-23 02:42:20 +03:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
2022-11-27 05:35:26 +03:00
|
|
|
<img
|
2024-12-01 04:59:42 +03:00
|
|
|
:key="props.account.avatar"
|
2022-12-31 01:41:07 +03:00
|
|
|
width="400"
|
|
|
|
height="400"
|
2023-01-16 23:17:47 +03:00
|
|
|
select-none
|
2024-11-27 12:09:33 +03:00
|
|
|
:src="(error || !loaded) ? 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' : accountAvatarSrc"
|
2024-12-01 04:59:42 +03:00
|
|
|
:alt="$t('account.avatar_description', [props.account.username])"
|
2022-11-27 05:35:26 +03:00
|
|
|
loading="lazy"
|
2023-01-17 15:55:36 +03:00
|
|
|
class="account-avatar"
|
2024-12-01 04:59:42 +03:00
|
|
|
:class="(loaded ? 'bg-base' : 'bg-gray:10') + (props.square ? ' ' : ' rounded-full')"
|
|
|
|
:style="{ 'clip-path': props.square ? `url(#avatar-mask)` : 'none' }"
|
2022-11-27 05:35:26 +03:00
|
|
|
v-bind="$attrs"
|
2022-11-29 09:00:06 +03:00
|
|
|
@load="loaded = true"
|
2022-12-04 17:14:12 +03:00
|
|
|
@error="error = true"
|
2022-11-27 05:35:26 +03:00
|
|
|
>
|
2022-11-23 02:42:20 +03:00
|
|
|
</template>
|