Small update to enum display + consistency

b68969ee3b9ae3fdac13b39f5492c811ee28f95d

Wolfsblvt <wolfsblvt@gmail.com>

2 files changed, +30 -14Ignore whitespace
public/script.js+8 -6
@@ -8453,11 +8453,11 @@ async function selectInstructCallback(_, name) {
84538453
84548454async function selectTokenizerCallback(_, name) {
84558455 if (!name) {
8456- return getFriendlyTokenizerName(main_api).tokenizerName;
8456+ return getAvailableTokenizers().find(tokenizer => tokenizer.tokenizerId === power_user.tokenizer)?.tokenizerKey ?? '';
84578457 }
84588458
84598459 const tokenizers = getAvailableTokenizers();
84608460 const fuse = new Fuse(tokenizers, { keys: ['tokenizerKey', 'tokenizerName'] });
84618461 const result = fuse.search(name);
84628462
84638463 if (result.length === 0) {
@@ -8465,9 +8465,11 @@ async function selectTokenizerCallback(_, name) {
84658465 return '';
84668466 }
84678467
8468+ /** @type {import('./scripts/tokenizers.js').Tokenizer} */
84688469 const foundTokenizer = result[0].item;
84698470 selectTokenizer(foundTokenizer.tokenizerName, foundTokenizer.tokenizerId);
8470- return foundTokenizer.tokenizerName;
8471+
8472+ return foundTokenizer.tokenizerKey;
84718473}
84728474
84738475async function enableInstructCallback() {
@@ -9123,7 +9125,7 @@ jQuery(async function () {
91239125 description: 'tokenizer name',
91249126 typeList: [ARGUMENT_TYPE.STRING],
91259127 enumList: getAvailableTokenizers().map(tokenizer =>
91269128 new SlashCommandEnumValue(tokenizer.tokenizerNametokenizerKey, nulltokenizer.tokenizerName, enumTypes.enum, enumIcons.default)),
91279129 }),
91289130 ],
91299131 helpString: `
@@ -9132,7 +9134,7 @@ jQuery(async function () {
91329134 </div>
91339135 <div>
91349136 <strong>Available tokenizers:</strong>
91359137 <pre><code>${getAvailableTokenizers().map(t => t.tokenizerNametokenizerKey).join(', ')}</code></pre>
91369138 </div>
91379139 `
91389140 }));
public/scripts/tokenizers.js+22 -8
@@ -148,33 +148,45 @@ async function resetTokenCache() {
148148}
149149
150150/**
151+ * @typedef {object} Tokenizer
152+ * @property {number} tokenizerId - The id of the tokenizer option
153+ * @property {string} tokenizerKey - Internal name/key of the tokenizer
154+ * @property {string} tokenizerName - Human-readable detailed name of the tokenizer (as displayed in the UI)
155+ */
156+
157+/**
151158 * Gets all tokenizers available to the user.
152159 * @returns { { tokenizerName: string, tokenizerId: number }Tokenizer[] } Tokenizer info.
153160 */
154161export function getAvailableTokenizers() {
155162 const tokenizerOptions = $('#tokenizer').find('option').toArray();
156163 return tokenizerOptions.map(tokenizerOption => ({
157- tokenizerName: tokenizerOption.text,
158164 tokenizerId: Number(tokenizerOption.value),
165+ tokenizerKey: Object.entries(tokenizers).find(([_, value]) => value === Number(tokenizerOption.value))[0].toLocaleLowerCase(),
166+ tokenizerName: tokenizerOption.text,
159167 }))
160168}
161169
162170/**
163171 * Selects tokenizer if not already selected.
164- * @param {string} tokenizerName Tokenizer name.
165172 * @param {number} tokenizerId Tokenizer ID.
166173 */
167174export function selectTokenizer(tokenizerName, tokenizerId) {
168175 if (tokenizerId !== power_user.tokenizer) {
169- $('#tokenizer').val(tokenizerId).trigger('change');
176+ const tokenizer = getAvailableTokenizers().find(tokenizer => tokenizer.tokenizerId === tokenizerId);
170- toastr.info(`Tokenizer: "${tokenizerName}" selected`);
177+ if (!tokenizer) {
178+ console.warn('Failed to find tokenizer with id', tokenizerId);
179+ return;
180+ }
181+ $('#tokenizer').val(tokenizer.tokenizerId).trigger('change');
182+ toastr.info(`Tokenizer: "${tokenizer.tokenizerName}" selected`);
171183 }
172184}
173185
174186/**
175187 * Gets the friendly name of the current tokenizer.
176188 * @param {string} forApi API to get the tokenizer for. Defaults to the main API.
177189 * @returns { { tokenizerName: string, tokenizerId: number } Tokenizer} Tokenizer info
178190 */
179191export function getFriendlyTokenizerName(forApi) {
180192 if (!forApi) {
@@ -209,7 +221,9 @@ export function getFriendlyTokenizerName(forApi) {
209221 ? tokenizers.OPENAI
210222 : tokenizerId;
211223
212- return { tokenizerName, tokenizerId };
224+ const tokenizerKey = Object.entries(tokenizers).find(([_, value]) => value === tokenizerId)[0].toLocaleLowerCase();
225+
226+ return { tokenizerName, tokenizerKey, tokenizerId };
213227}
214228
215229/**