mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2024-12-11 17:07:07 +01:00
Move string utils to shared module
This commit is contained in:
parent
70ff35b4c3
commit
827fce4542
@ -7,7 +7,7 @@ import { ARGUMENT_TYPE, SlashCommandArgument } from '../../slash-commands/SlashC
|
||||
import { enumIcons } from '../../slash-commands/SlashCommandCommonEnumsProvider.js';
|
||||
import { enumTypes, SlashCommandEnumValue } from '../../slash-commands/SlashCommandEnumValue.js';
|
||||
import { SlashCommandParser } from '../../slash-commands/SlashCommandParser.js';
|
||||
import { uuidv4 } from '../../utils.js';
|
||||
import { collapseSpaces, getUniqueName, uuidv4 } from '../../utils.js';
|
||||
|
||||
const MODULE_NAME = 'connection-manager';
|
||||
const NONE = '<None>';
|
||||
@ -71,8 +71,6 @@ const profilesProvider = () => [
|
||||
*/
|
||||
|
||||
const escapeArgument = (a) => a.replace(/"/g, '\\"').replace(/\|/g, '\\|');
|
||||
const collapseSpaces = (s) => s.replace(/\s+/g, ' ').trim();
|
||||
const makeUnique = (s, f, i) => { if (!f(s)) { return s; } else { while (f(`${s} (${i})`)) { i++; } return `${s} (${i})`; } };
|
||||
|
||||
/**
|
||||
* Finds the best match for the search value.
|
||||
@ -150,7 +148,7 @@ async function createConnectionProfile(forceName = null) {
|
||||
const profileForDisplay = makeFancyProfile(profile);
|
||||
const template = await renderExtensionTemplateAsync(MODULE_NAME, 'profile', { profile: profileForDisplay });
|
||||
const checkName = (n) => extension_settings.connectionManager.profiles.some(p => p.name === n);
|
||||
const suggestedName = makeUnique(collapseSpaces(`${profile.api ?? ''} ${profile.model ?? ''} - ${profile.preset ?? ''}`), checkName, 1);
|
||||
const suggestedName = getUniqueName(collapseSpaces(`${profile.api ?? ''} ${profile.model ?? ''} - ${profile.preset ?? ''}`), checkName);
|
||||
const name = forceName ?? await callGenericPopup(template, POPUP_TYPE.INPUT, suggestedName, { rows: 2 });
|
||||
|
||||
if (!name) {
|
||||
|
@ -1436,6 +1436,15 @@ export function uuidv4() {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Collapses multiple spaces in a strings into one.
|
||||
* @param {string} s String to process
|
||||
* @returns {string} String with collapsed spaces
|
||||
*/
|
||||
export function collapseSpaces(s) {
|
||||
return s.replace(/\s+/g, ' ').trim();
|
||||
}
|
||||
|
||||
function postProcessText(text, collapse = true) {
|
||||
// Remove carriage returns
|
||||
text = text.replace(/\r/g, '');
|
||||
@ -2041,7 +2050,7 @@ export async function fetchFaFile(name) {
|
||||
style.remove();
|
||||
return [...sheet.cssRules]
|
||||
.filter(rule => rule.style?.content)
|
||||
.map(rule => rule.selectorText.split(/,\s*/).map(selector=>selector.split('::').shift().slice(1)))
|
||||
.map(rule => rule.selectorText.split(/,\s*/).map(selector => selector.split('::').shift().slice(1)))
|
||||
;
|
||||
}
|
||||
export async function fetchFa() {
|
||||
@ -2068,7 +2077,7 @@ export async function showFontAwesomePicker(customList = null) {
|
||||
qry.placeholder = 'Filter icons';
|
||||
qry.autofocus = true;
|
||||
const qryDebounced = debounce(() => {
|
||||
const result = faList.filter(fa => fa.find(className=>className.includes(qry.value.toLowerCase())));
|
||||
const result = faList.filter(fa => fa.find(className => className.includes(qry.value.toLowerCase())));
|
||||
for (const fa of faList) {
|
||||
if (!result.includes(fa)) {
|
||||
fas[fa].classList.add('hidden');
|
||||
@ -2090,7 +2099,7 @@ export async function showFontAwesomePicker(customList = null) {
|
||||
opt.classList.add('menu_button');
|
||||
opt.classList.add('fa-solid');
|
||||
opt.classList.add(fa[0]);
|
||||
opt.title = fa.map(it=>it.slice(3)).join(', ');
|
||||
opt.title = fa.map(it => it.slice(3)).join(', ');
|
||||
opt.dataset.result = POPUP_RESULT.AFFIRMATIVE.toString();
|
||||
opt.addEventListener('click', () => value = fa[0]);
|
||||
grid.append(opt);
|
||||
|
Loading…
Reference in New Issue
Block a user