new plugin: MaskedLinkPaste (#2514)
Co-authored-by: vee <vendicated@riseup.net>
This commit is contained in:
parent
c431b7d2ab
commit
c2f8837602
3 changed files with 42 additions and 1 deletions
5
src/plugins/maskedLinkPaste/README.md
Normal file
5
src/plugins/maskedLinkPaste/README.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
# MaskedLinkPaste
|
||||
|
||||
Pasting a link while you have text selected will paste your link as a masked link at that location
|
||||
|
||||
![](https://github.com/Vendicated/Vencord/assets/78964224/1d3be2c6-7957-44c9-92ec-551069d46c02)
|
36
src/plugins/maskedLinkPaste/index.ts
Normal file
36
src/plugins/maskedLinkPaste/index.ts
Normal file
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* Vencord, a Discord client mod
|
||||
* Copyright (c) 2023 Vendicated and contributors
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import { Devs } from "@utils/constants.js";
|
||||
import definePlugin from "@utils/types";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
|
||||
const linkRegex = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;
|
||||
|
||||
const { SlateTransforms } = findByPropsLazy("SlateTransforms");
|
||||
|
||||
export default definePlugin({
|
||||
name: "MaskedLinkPaste",
|
||||
authors: [Devs.TheSun],
|
||||
description: "Pasting a link while having text selected will paste a hyperlink",
|
||||
patches: [{
|
||||
find: ".selection,preventEmojiSurrogates:",
|
||||
replacement: {
|
||||
match: /(?<=SlateTransforms.delete.{0,50})(\i)\.insertText\((\i)\)/,
|
||||
replace: "$self.handlePaste($1, $2, () => $&)"
|
||||
}
|
||||
}],
|
||||
|
||||
handlePaste(editor, content: string, originalBehavior: () => void) {
|
||||
if (content && linkRegex.test(content) && editor.operations?.[0]?.type === "remove_text") {
|
||||
SlateTransforms.insertText(
|
||||
editor,
|
||||
`[${editor.operations[0].text}](${content})`
|
||||
);
|
||||
}
|
||||
else originalBehavior();
|
||||
}
|
||||
});
|
|
@ -186,7 +186,7 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
|||
id: 296776625432035328n,
|
||||
},
|
||||
TheSun: {
|
||||
name: "ActuallyTheSun",
|
||||
name: "sunnie",
|
||||
id: 406028027768733696n
|
||||
},
|
||||
axyie: {
|
||||
|
|
Loading…
Reference in a new issue