Merge pull request #475 from bdashore3/dev

Markdown escaping and reloading
This commit is contained in:
Cohee
2023-06-10 22:56:18 +03:00
committed by GitHub
4 changed files with 40 additions and 0 deletions

View File

@ -2130,6 +2130,9 @@
</a>
</label>
</div>
<div id="reload_chat" class="menu_button whitespacenowrap" data-i18n="Reload Chat">
Reload Chat</div>
</div>
<div name="NameAndAvatar" class="flex-container flexFlowColumn drawer25pWidth">

View File

@ -148,6 +148,7 @@ import {
} from "./scripts/secrets.js";
import { EventEmitter } from './scripts/eventemitter.js';
import { context_settings, loadContextTemplatesFromSettings } from "./scripts/context-template.js";
import { dinkusExtension } from "./scripts/showdown-dinkus.js";
//exporting functions and vars for mods
export {
@ -533,6 +534,14 @@ function reloadMarkdownProcessor(render_formulas = false) {
});
}
// Inject the dinkus extension after creating the converter
// Maybe move this into power_user init?
setTimeout(() => {
if (power_user) {
converter.addExtension(dinkusExtension(), 'dinkus');
}
}, 1)
return converter;
}

View File

@ -11,6 +11,7 @@ import {
updateVisibleDivs,
eventSource,
event_types,
getCurrentChatId,
} from "../script.js";
import { favsToHotswap } from "./RossAscends-mods.js";
import {
@ -933,6 +934,7 @@ $(document).ready(() => {
$("#custom_chat_separator").on('input', function () {
power_user.custom_chat_separator = $(this).val();
saveSettingsDebounced();
reloadMarkdownProcessor(power_user.render_formulas);
});
$("#multigen").change(function () {
@ -1155,6 +1157,13 @@ $(document).ready(() => {
saveSettingsDebounced();
});
$("#reload_chat").on('click', function () {
const currentChatId = getCurrentChatId();
if (currentChatId !== undefined && currentChatId !== null) {
reloadCurrentChat();
}
});
$("#allow_name1_display").on("input", function () {
power_user.allow_name1_display = !!$(this).prop('checked');
reloadCurrentChat();

View File

@ -0,0 +1,19 @@
import { power_user } from './power-user.js';
// Showdown extension to make chat separators (dinkuses) ignore markdown formatting
export const dinkusExtension = () => {
if (!power_user) {
console.log("Showdown-dinkus extension: power_user wasn't found! Returning.");
return []
}
// Create an escaped sequence so the regex can work with any character
const savedDinkus = power_user.custom_chat_separator
const escapedDinkus = savedDinkus.split('').map((e) => `\\${e}`).join('');
const replaceRegex = new RegExp(`^(${escapedDinkus})\n`, "gm")
return [{
type: "lang",
regex: replaceRegex,
replace: (match) => match.replace(replaceRegex, `<div>${savedDinkus}</div>`).trim()
}];
}