Plugin
BlurNSFW
Blur attachments in NSFW channels until hovered
1
import { definePluginSettings } from "@api/Settings";2
import { managedStyleRootNode } from "@api/Styles";3
import { Devs } from "@utils/constants";4
import { createAndAppendStyle } from "@utils/css";5
import definePlugin, { OptionType } from "@utils/types";6
7
let style: HTMLStyleElement;8
9
const settings = definePluginSettings({10
blurAmount: {11
type: OptionType.NUMBER,12
description: "Blur Amount (in pixels)",13
default: 10,14
onChange: setCss15
}16
});17
18
function setCss() {19
style.textContent = `20
.vc-nsfw-img [class*=imageContainer],21
.vc-nsfw-img [class*=wrapperPaused] {22
filter: blur(${settings.store.blurAmount}px);23
transition: filter 0.2s;24
25
&:hover {26
filter: blur(0);27
}28
}29
`;30
}31
32
export default definePlugin({33
name: "BlurNSFW",34
description: "Blur attachments in NSFW channels until hovered",35
tags: ["Privacy", "Appearance"],36
authors: [Devs.Ven],37
settings,38
39
patches: [40
{41
find: "}renderStickersAccessories(",42
replacement: [43
{44
match: /(\.renderReactions\(\i\).+?className:)/,45
replace: 039;$&(this?.props?.channel?.nsfw?"vc-nsfw-img ":"")+039;46
}47
]48
}49
],50
51
start() {52
style = createAndAppendStyle("VcBlurNsfw", managedStyleRootNode);53
54
setCss();55
},56
57
stop() {58
style?.remove();59
}60
});61