mirror of
				https://github.com/SillyTavern/SillyTavern.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	Merge branch 'dev' of https://github.com/SillyLossy/TavernAI into dev
This commit is contained in:
		@@ -2303,8 +2303,10 @@
 | 
			
		||||
                <div class="ch_name">
 | 
			
		||||
                    <span class="name_text">${characterName}</span>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    <div title="Edit" class="mes_edit fa-solid fa-pencil "></div>
 | 
			
		||||
                    <div class="mes_buttons">
 | 
			
		||||
                        <div title="Copy" class="mes_copy fa-solid fa-copy "></div>
 | 
			
		||||
                        <div title="Edit" class="mes_edit fa-solid fa-pencil "></div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <div class="mes_edit_buttons">
 | 
			
		||||
                        <div class="mes_edit_done menu_button  fa-solid fa-check" title="Confirm"></div>
 | 
			
		||||
                        <div class="mes_edit_copy menu_button  fa-solid fa-copy" title="Copy this message"></div>
 | 
			
		||||
 
 | 
			
		||||
@@ -1010,25 +1010,28 @@ function addCopyToCodeBlocks(messageElement) {
 | 
			
		||||
    const codeBlocks = $(messageElement).find("pre code");
 | 
			
		||||
    for (let i = 0; i < codeBlocks.length; i++) {
 | 
			
		||||
        hljs.highlightElement(codeBlocks.get(i));
 | 
			
		||||
        const copyButton = document.createElement('i');
 | 
			
		||||
        copyButton.classList.add('fa-solid', 'fa-copy', 'code-copy');
 | 
			
		||||
        copyButton.title = 'Copy code';
 | 
			
		||||
        codeBlocks.get(i).appendChild(copyButton);
 | 
			
		||||
        copyButton.addEventListener('click', function (event) {
 | 
			
		||||
            navigator.clipboard.writeText(codeBlocks.get(i).innerText);
 | 
			
		||||
            const copiedMsg = document.createElement("div");
 | 
			
		||||
            copiedMsg.classList.add('code-copied');
 | 
			
		||||
            copiedMsg.innerText = "Copied!";
 | 
			
		||||
            copiedMsg.style.top = `${event.clientY - 55}px`;
 | 
			
		||||
            copiedMsg.style.left = `${event.clientX - 55}px`;
 | 
			
		||||
            document.body.append(copiedMsg);
 | 
			
		||||
            setTimeout(() => {
 | 
			
		||||
                document.body.removeChild(copiedMsg);
 | 
			
		||||
            }, 2500);
 | 
			
		||||
        });
 | 
			
		||||
        if (navigator.clipboard !== undefined) {
 | 
			
		||||
            const copyButton = document.createElement('i');
 | 
			
		||||
            copyButton.classList.add('fa-solid', 'fa-copy', 'code-copy');
 | 
			
		||||
            copyButton.title = 'Copy code';
 | 
			
		||||
            codeBlocks.get(i).appendChild(copyButton);
 | 
			
		||||
            copyButton.addEventListener('pointerup', function (event) {
 | 
			
		||||
                navigator.clipboard.writeText(codeBlocks.get(i).innerText);
 | 
			
		||||
                const copiedMsg = document.createElement("div");
 | 
			
		||||
                copiedMsg.classList.add('code-copied');
 | 
			
		||||
                copiedMsg.innerText = "Copied!";
 | 
			
		||||
                copiedMsg.style.top = `${event.clientY - 55}px`;
 | 
			
		||||
                copiedMsg.style.left = `${event.clientX - 55}px`;
 | 
			
		||||
                document.body.append(copiedMsg);
 | 
			
		||||
                setTimeout(() => {
 | 
			
		||||
                    document.body.removeChild(copiedMsg);
 | 
			
		||||
                }, 1000);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function addOneMessage(mes, { type = "normal", insertAfter = null, scroll = true } = {}) {
 | 
			
		||||
    var messageText = mes["mes"];
 | 
			
		||||
 | 
			
		||||
@@ -1369,7 +1372,7 @@ class StreamingProcessor {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $(`#chat .mes[mesid="${messageId}"] .mes_stop`).css({ 'display': 'block' });
 | 
			
		||||
        $(`#chat .mes[mesid="${messageId}"] .mes_edit`).css({ 'display': 'none' });
 | 
			
		||||
        $(`#chat .mes[mesid="${messageId}"] .mes_buttons`).css({ 'display': 'none' });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    hideStopButton(messageId) {
 | 
			
		||||
@@ -1378,7 +1381,7 @@ class StreamingProcessor {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $(`#chat .mes[mesid="${messageId}"] .mes_stop`).css({ 'display': 'none' });
 | 
			
		||||
        $(`#chat .mes[mesid="${messageId}"] .mes_edit`).css({ 'display': 'block' });
 | 
			
		||||
        $(`#chat .mes[mesid="${messageId}"] .mes_buttons`).css({ 'display': 'block' });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    onStartStreaming(text) {
 | 
			
		||||
@@ -1460,7 +1463,7 @@ class StreamingProcessor {
 | 
			
		||||
        activateSendButtons();
 | 
			
		||||
        showSwipeButtons();
 | 
			
		||||
        setGenerationProgress(0);
 | 
			
		||||
        $('.mes_edit:last').show();
 | 
			
		||||
        $('.mes_buttons:last').show();
 | 
			
		||||
        generatedPromtCache = '';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -2296,7 +2299,7 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject,
 | 
			
		||||
                activateSendButtons();
 | 
			
		||||
                showSwipeButtons();
 | 
			
		||||
                setGenerationProgress(0);
 | 
			
		||||
                $('.mes_edit:last').show();
 | 
			
		||||
                $('.mes_buttons:last').show();
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            function onError(jqXHR, exception) {
 | 
			
		||||
@@ -2433,7 +2436,7 @@ function throwCircuitBreakerError() {
 | 
			
		||||
    activateSendButtons();
 | 
			
		||||
    setGenerationProgress(0);
 | 
			
		||||
    showSwipeButtons();
 | 
			
		||||
    $('.mes_edit:last').show();
 | 
			
		||||
    $('.mes_buttons:last').show();
 | 
			
		||||
    throw new Error('Generate circuit breaker interruption');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -3401,7 +3404,7 @@ function messageEditDone(div) {
 | 
			
		||||
 | 
			
		||||
    mesBlock.find(".mes_text").empty();
 | 
			
		||||
    mesBlock.find(".mes_edit_buttons").css("display", "none");
 | 
			
		||||
    mesBlock.find(".mes_edit").css("display", "inline-block");
 | 
			
		||||
    mesBlock.find(".mes_buttons").css("display", "inline-block");
 | 
			
		||||
    mesBlock.find(".mes_text").append(
 | 
			
		||||
        messageFormatting(
 | 
			
		||||
            text,
 | 
			
		||||
@@ -4147,7 +4150,7 @@ $(document).ready(function () {
 | 
			
		||||
                                    if (run_generate && !is_send_press && parseInt(chat[chat.length - 1]['swipe_id']) === chat[chat.length - 1]['swipes'].length) {
 | 
			
		||||
                                        console.log('caught here 2');
 | 
			
		||||
                                        is_send_press = true;
 | 
			
		||||
                                        $('.mes_edit:last').hide();
 | 
			
		||||
                                        $('.mes_buttons:last').hide();
 | 
			
		||||
                                        Generate('swipe');
 | 
			
		||||
                                    } else {
 | 
			
		||||
                                        if (parseInt(chat[chat.length - 1]['swipe_id']) !== chat[chat.length - 1]['swipes'].length) {
 | 
			
		||||
@@ -5294,6 +5297,39 @@ $(document).ready(function () {
 | 
			
		||||
        $("#load_select_chat_div").css("display", "block");
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    if (navigator.clipboard === undefined) {
 | 
			
		||||
        // No clipboard support
 | 
			
		||||
        $(".mes_copy").remove();
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        $(document).on("pointerup", ".mes_copy", function () {
 | 
			
		||||
            if (this_chid !== undefined || selected_group) {
 | 
			
		||||
                const message = $(this).closest(".mes");
 | 
			
		||||
 | 
			
		||||
                if (message.data("isSystem")) {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                try {
 | 
			
		||||
                    var edit_mes_id = $(this).closest(".mes").attr("mesid");
 | 
			
		||||
                    var text = chat[edit_mes_id]["mes"];
 | 
			
		||||
                        navigator.clipboard.writeText(text);
 | 
			
		||||
                        const copiedMsg = document.createElement("div");
 | 
			
		||||
                        copiedMsg.classList.add('code-copied');
 | 
			
		||||
                        copiedMsg.innerText = "Copied!";
 | 
			
		||||
                        copiedMsg.style.top = `${event.clientY - 55}px`;
 | 
			
		||||
                        copiedMsg.style.left = `${event.clientX - 55}px`;
 | 
			
		||||
                        document.body.append(copiedMsg);
 | 
			
		||||
                        setTimeout(() => {
 | 
			
		||||
                            document.body.removeChild(copiedMsg);
 | 
			
		||||
                        }, 1000);
 | 
			
		||||
                } catch (err) {
 | 
			
		||||
                    console.error('Failed to copy: ', err);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //********************
 | 
			
		||||
    //***Message Editor***
 | 
			
		||||
    $(document).on("click", ".mes_edit", function () {
 | 
			
		||||
@@ -5324,7 +5360,7 @@ $(document).ready(function () {
 | 
			
		||||
                messageEditDone(mes_edited);
 | 
			
		||||
            }
 | 
			
		||||
            $(this).closest(".mes_block").find(".mes_text").empty();
 | 
			
		||||
            $(this).css("display", "none");
 | 
			
		||||
            $(this).closest(".mes_block").find(".mes_buttons").css("display", "none");
 | 
			
		||||
            $(this).closest(".mes_block").find(".mes_edit_buttons").css("display", "inline-flex");
 | 
			
		||||
            var edit_mes_id = $(this).closest(".mes").attr("mesid");
 | 
			
		||||
            this_edit_mes_id = edit_mes_id;
 | 
			
		||||
@@ -5373,7 +5409,7 @@ $(document).ready(function () {
 | 
			
		||||
 | 
			
		||||
        $(this).closest(".mes_block").find(".mes_text").empty();
 | 
			
		||||
        $(this).closest(".mes_edit_buttons").css("display", "none");
 | 
			
		||||
        $(this).closest(".mes_block").find(".mes_edit").css("display", "inline-block");
 | 
			
		||||
        $(this).closest(".mes_block").find(".mes_buttons").css("display", "inline-block");
 | 
			
		||||
        $(this)
 | 
			
		||||
            .closest(".mes_block")
 | 
			
		||||
            .find(".mes_text")
 | 
			
		||||
 
 | 
			
		||||
@@ -2093,9 +2093,16 @@ input[type="range"]::-webkit-slider-thumb {
 | 
			
		||||
    width: 20px;
 | 
			
		||||
    opacity: 0.5;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mes_edit {
 | 
			
		||||
.mes_buttons {
 | 
			
		||||
    float: right;
 | 
			
		||||
    height: 20px;
 | 
			
		||||
    grid-row-start: 1;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    right: 0px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mes_copy,
 | 
			
		||||
.mes_edit {
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
    transition: 0.3s ease-in-out;
 | 
			
		||||
    height: 20px;
 | 
			
		||||
@@ -2105,10 +2112,18 @@ input[type="range"]::-webkit-slider-thumb {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.mes_edit:hover,
 | 
			
		||||
.mes_copy:hover,
 | 
			
		||||
.mes_stop:hover {
 | 
			
		||||
    opacity: 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.last_mes .mes_copy {
 | 
			
		||||
    grid-row-start: 1;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    right: -30px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.last_mes .mes_edit,
 | 
			
		||||
.last_mes .mes_edit_buttons,
 | 
			
		||||
.last_mes .mes_stop {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user