34 lines
945 B
Vue
34 lines
945 B
Vue
<!--
|
|
SPDX-FileCopyrightText: syuilo and other misskey contributors
|
|
SPDX-License-Identifier: AGPL-3.0-only
|
|
-->
|
|
|
|
<template>
|
|
<MkCustomEmoji v-if="reaction[0] === ':'" ref="elRef" :name="reaction" :normal="true" :noStyle="noStyle" :url="emojiUrl"/>
|
|
<MkEmoji v-else ref="elRef" :emoji="reaction" :normal="true" :noStyle="noStyle"/>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { defineAsyncComponent, shallowRef } from 'vue';
|
|
import { useTooltip } from '@/scripts/use-tooltip.js';
|
|
import * as os from '@/os.js';
|
|
|
|
const props = defineProps<{
|
|
reaction: string;
|
|
noStyle?: boolean;
|
|
emojiUrl?: string;
|
|
withTooltip?: boolean;
|
|
}>();
|
|
|
|
const elRef = shallowRef();
|
|
|
|
if (props.withTooltip) {
|
|
useTooltip(elRef, (showing) => {
|
|
os.popup(defineAsyncComponent(() => import('@/components/MkReactionTooltip.vue')), {
|
|
showing,
|
|
reaction: props.reaction.replace(/^:(\w+):$/, ':$1@.:'),
|
|
targetElement: elRef.value.$el,
|
|
}, {}, 'closed');
|
|
});
|
|
}
|
|
</script>
|