Merge branch 'staging' into tokenizers-cleanup
This commit is contained in:
commit
d5140142fb
|
@ -525,14 +525,17 @@ function getUrlSync(url, cache = true) {
|
||||||
}).responseText;
|
}).responseText;
|
||||||
}
|
}
|
||||||
|
|
||||||
const templateCache = {};
|
const templateCache = new Map();
|
||||||
|
|
||||||
export function renderTemplate(templateId, templateData = {}, sanitize = true, localize = true, fullPath = false) {
|
export function renderTemplate(templateId, templateData = {}, sanitize = true, localize = true, fullPath = false) {
|
||||||
try {
|
try {
|
||||||
const pathToTemplate = fullPath ? templateId : `/scripts/templates/${templateId}.html`;
|
const pathToTemplate = fullPath ? templateId : `/scripts/templates/${templateId}.html`;
|
||||||
const templateContent = (pathToTemplate in templateCache) ? templateCache[pathToTemplate] : getUrlSync(pathToTemplate);
|
let template = templateCache.get(pathToTemplate);
|
||||||
templateCache[pathToTemplate] = templateContent;
|
if (!template) {
|
||||||
const template = Handlebars.compile(templateContent);
|
const templateContent = getUrlSync(pathToTemplate);
|
||||||
|
template = Handlebars.compile(templateContent);
|
||||||
|
templateCache.set(pathToTemplate, template);
|
||||||
|
}
|
||||||
let result = template(templateData);
|
let result = template(templateData);
|
||||||
|
|
||||||
if (sanitize) {
|
if (sanitize) {
|
||||||
|
@ -1536,7 +1539,7 @@ function messageFormatting(mes, ch_name, isSystem, isUser) {
|
||||||
mes = mes.replace(new RegExp(`(^|\n)${ch_name}:`, 'g'), '$1');
|
mes = mes.replace(new RegExp(`(^|\n)${ch_name}:`, 'g'), '$1');
|
||||||
}
|
}
|
||||||
|
|
||||||
mes = DOMPurify.sanitize(mes);
|
mes = DOMPurify.sanitize(mes, { FORBID_TAGS: ['style'] });
|
||||||
|
|
||||||
return mes;
|
return mes;
|
||||||
}
|
}
|
||||||
|
|
|
@ -902,7 +902,7 @@ export function initRossMods() {
|
||||||
const chatBlock = $('#chat');
|
const chatBlock = $('#chat');
|
||||||
const originalScrollBottom = chatBlock[0].scrollHeight - (chatBlock.scrollTop() + chatBlock.outerHeight());
|
const originalScrollBottom = chatBlock[0].scrollHeight - (chatBlock.scrollTop() + chatBlock.outerHeight());
|
||||||
this.style.height = window.getComputedStyle(this).getPropertyValue('min-height');
|
this.style.height = window.getComputedStyle(this).getPropertyValue('min-height');
|
||||||
this.style.height = this.scrollHeight + 0.1 + 'px';
|
this.style.height = this.scrollHeight + 0.3 + 'px';
|
||||||
|
|
||||||
if (!isFirefox) {
|
if (!isFirefox) {
|
||||||
const newScrollTop = Math.round(chatBlock[0].scrollHeight - (chatBlock.outerHeight() + originalScrollBottom));
|
const newScrollTop = Math.round(chatBlock[0].scrollHeight - (chatBlock.outerHeight() + originalScrollBottom));
|
||||||
|
|
|
@ -35,7 +35,7 @@ import { registerSlashCommand } from './slash-commands.js';
|
||||||
import { tags } from './tags.js';
|
import { tags } from './tags.js';
|
||||||
import { tokenizers } from './tokenizers.js';
|
import { tokenizers } from './tokenizers.js';
|
||||||
|
|
||||||
import { countOccurrences, debounce, delay, isOdd, resetScrollHeight, sortMoments, stringToRange, timestampToMoment } from './utils.js';
|
import { countOccurrences, debounce, delay, isOdd, resetScrollHeight, shuffle, sortMoments, stringToRange, timestampToMoment } from './utils.js';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
loadPowerUserSettings,
|
loadPowerUserSettings,
|
||||||
|
@ -1818,10 +1818,6 @@ export function renderStoryString(params) {
|
||||||
|
|
||||||
const sortFunc = (a, b) => power_user.sort_order == 'asc' ? compareFunc(a, b) : compareFunc(b, a);
|
const sortFunc = (a, b) => power_user.sort_order == 'asc' ? compareFunc(a, b) : compareFunc(b, a);
|
||||||
const compareFunc = (first, second) => {
|
const compareFunc = (first, second) => {
|
||||||
if (power_user.sort_order == 'random') {
|
|
||||||
return Math.random() > 0.5 ? 1 : -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
const a = first[power_user.sort_field];
|
const a = first[power_user.sort_field];
|
||||||
const b = second[power_user.sort_field];
|
const b = second[power_user.sort_field];
|
||||||
|
|
||||||
|
@ -1853,6 +1849,11 @@ function sortEntitiesList(entities) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (power_user.sort_order === 'random') {
|
||||||
|
shuffle(entities);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
entities.sort((a, b) => {
|
entities.sort((a, b) => {
|
||||||
if (a.type === 'tag' && b.type !== 'tag') {
|
if (a.type === 'tag' && b.type !== 'tag') {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue