2020-09-28 14:30:15 +00:00
|
|
|
<template>
|
2022-10-27 13:07:12 +00:00
|
|
|
<img class="emoji"
|
|
|
|
draggable="false"
|
|
|
|
:alt="emoji"
|
2020-09-28 14:43:40 +00:00
|
|
|
:src="emojiUrl">
|
2020-09-28 14:30:15 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2020-09-28 14:43:40 +00:00
|
|
|
import { generateFilePath } from '@nextcloud/router'
|
2020-09-28 14:30:15 +00:00
|
|
|
import twemoji from 'twemoji'
|
|
|
|
|
|
|
|
// avoid using a string literal like '\u200D' here because minifiers expand it inline
|
2020-09-28 14:43:40 +00:00
|
|
|
const U200D = String.fromCharCode(0x200D)
|
|
|
|
const UFE0Fg = /\uFE0F/g
|
2020-09-28 14:30:15 +00:00
|
|
|
|
|
|
|
export default {
|
2020-09-28 14:43:40 +00:00
|
|
|
name: 'Emoji',
|
|
|
|
props: {
|
2022-10-27 13:07:12 +00:00
|
|
|
emoji: { type: String, default: '' },
|
2020-09-28 14:43:40 +00:00
|
|
|
},
|
2022-10-27 13:07:12 +00:00
|
|
|
data() {
|
2020-09-28 14:43:40 +00:00
|
|
|
return {}
|
|
|
|
},
|
|
|
|
computed: {
|
2023-01-16 09:14:51 +00:00
|
|
|
/**
|
|
|
|
* @return {string}
|
|
|
|
*/
|
2020-09-28 14:43:40 +00:00
|
|
|
icon() {
|
|
|
|
return twemoji.convert.toCodePoint(this.emoji.indexOf(U200D) < 0
|
|
|
|
? this.emoji.replace(UFE0Fg, '')
|
|
|
|
: this.emoji
|
|
|
|
)
|
|
|
|
},
|
2023-01-16 09:14:51 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @return {string}
|
|
|
|
*/
|
2020-09-28 14:43:40 +00:00
|
|
|
emojiUrl() {
|
|
|
|
return generateFilePath('social', 'img', 'twemoji/' + this.icon + '.svg')
|
2022-10-27 13:07:12 +00:00
|
|
|
},
|
|
|
|
},
|
2020-09-28 14:30:15 +00:00
|
|
|
}
|
|
|
|
</script>
|
|
|
|
<style scoped>
|
|
|
|
|
|
|
|
</style>
|