mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
84 lines
2.3 KiB
TypeScript
84 lines
2.3 KiB
TypeScript
import { getComponentSettings } from '@/core/settings'
|
|
import { mountVueComponent } from '@/core/utils'
|
|
import { addData, getData } from '@/plugins/data'
|
|
import { BlackListDataKey } from './common'
|
|
|
|
type SettingsVmType = Vue & {
|
|
toggle: () => void
|
|
triggerElement: HTMLElement
|
|
list: string[]
|
|
save: (items: string[]) => void
|
|
titleName: string
|
|
}
|
|
let nameSettingsVM: SettingsVmType
|
|
let regexSettingsVm: SettingsVmType
|
|
|
|
const blackListOptions = getComponentSettings('blackList').options as {
|
|
up: string[]
|
|
upRegex: string[]
|
|
}
|
|
|
|
export const setNameProps = (element: HTMLElement) => {
|
|
if (!nameSettingsVM) {
|
|
return
|
|
}
|
|
nameSettingsVM.triggerElement = element
|
|
const blackList = getData(BlackListDataKey)
|
|
nameSettingsVM.list = lodash.cloneDeep(blackList[0].up)
|
|
nameSettingsVM.save = (items: string[]) => {
|
|
addData(BlackListDataKey, data => {
|
|
data.up = items
|
|
})
|
|
blackListOptions.up = items
|
|
}
|
|
nameSettingsVM.titleName = '精确匹配'
|
|
}
|
|
export const setRegexProps = (element: HTMLElement) => {
|
|
if (!regexSettingsVm) {
|
|
return
|
|
}
|
|
regexSettingsVm.triggerElement = element
|
|
const blackList = getData(BlackListDataKey)
|
|
regexSettingsVm.list = lodash.cloneDeep(blackList[0].upRegex)
|
|
regexSettingsVm.save = (items: string[]) => {
|
|
addData(BlackListDataKey, data => {
|
|
data.upRegex = items
|
|
})
|
|
blackListOptions.upRegex = items
|
|
}
|
|
regexSettingsVm.titleName = '正则匹配'
|
|
}
|
|
|
|
export const loadNameSettings = async () => {
|
|
if (nameSettingsVM) {
|
|
return false
|
|
}
|
|
const blackListSettings = await import('./BlackListSettings.vue').then(m => m.default)
|
|
nameSettingsVM = mountVueComponent(blackListSettings)
|
|
document.body.insertAdjacentElement('beforeend', nameSettingsVM.$el)
|
|
return true
|
|
}
|
|
|
|
export const loadRegexSettings = async () => {
|
|
if (regexSettingsVm) {
|
|
return false
|
|
}
|
|
const blackListSettings = await import('./BlackListSettings.vue').then(m => m.default)
|
|
regexSettingsVm = mountVueComponent(blackListSettings)
|
|
document.body.insertAdjacentElement('beforeend', regexSettingsVm.$el)
|
|
return true
|
|
}
|
|
export const toggleNameSettings = async () => {
|
|
if (!nameSettingsVM) {
|
|
await loadNameSettings()
|
|
}
|
|
nameSettingsVM?.toggle()
|
|
}
|
|
|
|
export const toggleRegexSettings = async () => {
|
|
if (!regexSettingsVm) {
|
|
await loadRegexSettings()
|
|
}
|
|
regexSettingsVm?.toggle()
|
|
}
|