mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
import { defineComponentMetadata } from '@/components/define'
|
|
import { allMutations } from '@/core/observer'
|
|
import { select } from '@/core/spin-query'
|
|
|
|
const DEFAULT_PLACEHOLDER = '搜索'
|
|
|
|
const resetPlaceholder = (input: HTMLInputElement) => {
|
|
input.placeholder = DEFAULT_PLACEHOLDER
|
|
input.title = DEFAULT_PLACEHOLDER
|
|
}
|
|
|
|
const isInLiveRoomPage = () => {
|
|
return window.location.host === 'live.bilibili.com'
|
|
}
|
|
|
|
const getSearchInputClassName = () => {
|
|
return isInLiveRoomPage() ? 'input.nav-search-content' : 'input.nav-search-input'
|
|
}
|
|
|
|
const isSearchInput = (target: Node) => {
|
|
if (!(target instanceof HTMLInputElement)) {
|
|
return false
|
|
}
|
|
|
|
const isSearch = ['nav-search-content', 'nav-search-input'].some(n =>
|
|
target.classList.contains(n),
|
|
)
|
|
|
|
return target.placeholder !== DEFAULT_PLACEHOLDER && isSearch
|
|
}
|
|
|
|
export const component = defineComponentMetadata({
|
|
name: 'hideTrendingSearch',
|
|
displayName: '隐藏热搜',
|
|
tags: [componentsTags.style],
|
|
instantStyles: [
|
|
{
|
|
name: 'hideTrendingSearch',
|
|
style: () => import('./hide-trending-search.scss'),
|
|
},
|
|
],
|
|
entry: async () => {
|
|
const clsName = getSearchInputClassName()
|
|
const input: HTMLInputElement = await select(clsName, {
|
|
queryInterval: 500,
|
|
})
|
|
|
|
if (input) {
|
|
resetPlaceholder(input)
|
|
return
|
|
}
|
|
|
|
// Fallback to observer
|
|
allMutations(records => {
|
|
records.forEach(record => {
|
|
if (isSearchInput(record.target)) {
|
|
resetPlaceholder(record.target as HTMLInputElement)
|
|
}
|
|
})
|
|
})
|
|
},
|
|
})
|