Bilibili-Evolved/registry/lib/deprecated/comments-translate/index.ts
2022-10-12 23:27:58 +08:00

40 lines
1.2 KiB
TypeScript

import { defineComponentMetadata } from '@/components/define'
import MachineTranslator from '@/components/i18n/machine-translator/MachineTranslator.vue'
const entry = async () => {
const injectButton = (element: HTMLElement) => {
const textElements = dqa(element, '.text, .text-con')
if (textElements.length === 0) {
return
}
textElements.forEach((textElement: HTMLElement) => {
if (textElement.nextElementSibling?.classList.contains('translate-container')) {
return
}
const translator = new MachineTranslator({
propsData: {
text: textElement.innerText,
},
}).$mount()
textElement.insertAdjacentElement('afterend', translator.$el)
})
}
const { forEachCommentItem } = await import('@/components/utils/comment-apis')
forEachCommentItem({
added: item => {
const { element } = item
item.onRepliesUpdate = replies => replies.forEach(r => injectButton(r.element))
injectButton(element)
},
})
}
export const component = defineComponentMetadata({
name: 'commentsTranslate',
displayName: '评论翻译',
description: {
'zh-CN': '在每条评论下方添加翻译按钮.',
},
tags: [componentsTags.utils, componentsTags.feeds],
entry,
})