import { ComponentEntry } from '@/components/types' import { defineComponentMetadata } from '@/components/define' // const PromotionMark = 'data-be-promotion-mark' const entry: ComponentEntry = async ({ settings, metadata }) => { const { addComponentListener } = await import('@/core/settings') if (document.URL.replace(window.location.search, '') === 'https://www.bilibili.com/') { const { selectAll, select } = await import('@/core/spin-query') select('.eva-extension-area').then(it => { if (!it) { return } it.parentElement.style.margin = '12px' }) selectAll('.gg-pic').then((pictures: HTMLElement[]) => { if (pictures.length === 0) { return } pictures.forEach(element => { const a = element.parentElement a.style.display = 'none' const index = [...a.parentElement.childNodes].indexOf(a) + 1 const li = a.parentElement.parentElement.querySelector( `.pic li:nth-child(${index})`, ) as HTMLElement if (li) { li.style.display = 'flex' const link = li.querySelector('a:not(.more-text)') as HTMLElement link.insertAdjacentHTML( 'afterend', /* html */ `
${settings.options.showPlaceholder ? '🚫已屏蔽广告' : ''}
`, ) link.style.visibility = 'hidden' const otherElements = [ li.querySelector('a.more-text'), li.querySelector('img'), ] as HTMLElement[] otherElements.forEach(it => (it.style.display = 'none')) } }) }) select('.focus-carousel.home-slide').then(slide => { if (!slide) { return } dqa(slide, '.gg-icon,.bypb-icon') .map(it => it.parentElement.parentElement) .forEach(it => { it.style.display = 'none' it.insertAdjacentHTML( 'afterend', /* html */ `
${ settings.options.showPlaceholder ? '🚫已屏蔽广告' : '' }
`, ) }) }) } addComponentListener( `${metadata.name}.preserveEventBanner`, (value: boolean) => { document.body.classList.toggle('preserve-event-banner', value) }, true, ) addComponentListener( `${metadata.name}.preserveFeedGoods`, (value: boolean) => { document.body.classList.toggle('preserve-feed-goods', value) }, true, ) addComponentListener( `${metadata.name}.preserveReplyNotice`, (value: boolean) => { document.body.classList.toggle('preserve-reply-notice', value) }, true, ) addComponentListener( `${metadata.name}.showPlaceholder`, (value: boolean) => { document.body.classList.toggle('promotion-show-placeholder', value) }, true, ) addComponentListener( `${metadata.name}.debug`, (value: boolean) => { document.body.classList.toggle('debug', value) }, true, ) } export const component = defineComponentMetadata({ name: 'removePromotions', displayName: '删除广告', entry, instantStyles: [ { name: 'removePromotions', style: () => import('./remove-promotions.scss'), }, ], tags: [componentsTags.utils], options: { showPlaceholder: { displayName: '占位文本', defaultValue: true, }, preserveEventBanner: { displayName: '保留活动横幅', defaultValue: false, }, preserveFeedGoods: { displayName: '保留动态商品推荐', defaultValue: false, }, debug: { displayName: 'debug', defaultValue: false, }, }, })