~linuxgoose/bocpress

ref: a9d67bd9982533c3e42a9e8dcb61cbffc0e14945 bocpress/main/templates/assets/markdown-paste-link.js -rw-r--r-- 1.0 KiB
a9d67bd9Jordan Robinson add new setting for auto markdown link formatting on paste in the editor 2 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// get body element, used for paste into it
var bodyElem = document.querySelector('textarea[name="body"]');

function formatOnPaste(event) {
    const clipboardData = event.clipboardData || window.clipboardData;
    const pastedData = clipboardData.getData('text');

    const bodyElem = document.querySelector('textarea[name="body"]');

    const start = bodyElem.selectionStart;
    const end = bodyElem.selectionEnd;

    if (start !== end) {
        event.preventDefault(); // Stop the default paste

        const selectedText = bodyElem.value.substring(start, end);
        const before = bodyElem.value.substring(0, start);
        const after = bodyElem.value.substring(end);

        const markdownLink = `[${selectedText}](${pastedData})`;

        bodyElem.value = before + markdownLink + after;

        // Move cursor after inserted markdown
        const newCursorPosition = before.length + markdownLink.length;
        bodyElem.setSelectionRange(newCursorPosition, newCursorPosition);
    }
}

bodyElem.addEventListener('paste', formatOnPaste);