Refactor utils.js with improved debounce and escapeHTML

Refactor utils.js to improve readability and functionality.
This commit is contained in:
2025-12-27 12:02:03 +08:00
committed by GitHub
parent 5380bbddcf
commit 44d0a46d74

View File

@@ -1 +1,47 @@
(function(_0xda6dcf,_0x599fe8){const _0x53172e=_0xae83,_0x249641=_0xda6dcf();while(!![]){try{const _0x17e1e0=-parseInt(_0x53172e(0x84))/0x1+-parseInt(_0x53172e(0x7c))/0x2+parseInt(_0x53172e(0x83))/0x3*(parseInt(_0x53172e(0x7b))/0x4)+-parseInt(_0x53172e(0x86))/0x5+-parseInt(_0x53172e(0x81))/0x6+parseInt(_0x53172e(0x80))/0x7+parseInt(_0x53172e(0x7e))/0x8;if(_0x17e1e0===_0x599fe8)break;else _0x249641['push'](_0x249641['shift']());}catch(_0x19fe5d){_0x249641['push'](_0x249641['shift']());}}}(_0x5347,0x57b58));import{getContext}from'/scripts/extensions.js';function _0x5347(){const _0x153dfb=['is_user','4623kQcyAu','405781FoEDjJ','length','624920qsmnSU','788cdPuKV','42338JMwOMy','chat','3929448LbJtNo','apply','4633468XRogsK','3272952PMuOvA'];_0x5347=function(){return _0x153dfb;};return _0x5347();}import{saveChat}from'/script.js';function _0xae83(_0x50b1a2,_0x33f390){const _0x534779=_0x5347();return _0xae83=function(_0xae83fb,_0x403157){_0xae83fb=_0xae83fb-0x7b;let _0x4ee0a4=_0x534779[_0xae83fb];return _0x4ee0a4;},_0xae83(_0x50b1a2,_0x33f390);}function debounce(_0x4ba051,_0xb950bf){let _0x5bebb2;return function(..._0x1e8536){const _0x57da48=_0xae83,_0x15cb2b=this;clearTimeout(_0x5bebb2),_0x5bebb2=setTimeout(()=>_0x4ba051[_0x57da48(0x7f)](_0x15cb2b,_0x1e8536),_0xb950bf);};}export function getChatPiece(){const _0x71d765=_0xae83,_0x25b882=getContext();if(!_0x25b882||!_0x25b882['chat']||!_0x25b882[_0x71d765(0x7d)]['length'])return{'piece':null,'deep':-0x1};const _0x5ee69b=_0x25b882[_0x71d765(0x7d)];let _0x46c0cd=_0x5ee69b[_0x71d765(0x85)]-0x1;while(_0x46c0cd>=0x0){if(!_0x5ee69b[_0x46c0cd][_0x71d765(0x82)])return{'piece':_0x5ee69b[_0x46c0cd],'deep':_0x46c0cd};_0x46c0cd--;}if(_0x5ee69b[_0x71d765(0x85)]>0x0)return{'piece':_0x5ee69b[0x0],'deep':0x0};return{'piece':null,'deep':-0x1};}export const saveChatDebounced=debounce(()=>{saveChat();},0x1f4); import { getContext } from '/scripts/extensions.js';
import { saveChat } from '/script.js';
function debounce(func, delay) {
let timeout;
return function(...args) {
const context = this;
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(context, args), delay);
};
}
export function getChatPiece() {
const context = getContext();
if (!context || !context.chat || !context.chat.length) {
return { piece: null, deep: -1 };
}
const chat = context.chat;
let index = chat.length - 1;
while (index >= 0) {
if (!chat[index].is_user) {
return { piece: chat[index], deep: index };
}
index--;
}
if (chat.length > 0) {
return { piece: chat[0], deep: 0 };
}
return { piece: null, deep: -1 };
}
export const saveChatDebounced = debounce(() => {
saveChat();
}, 500);
export function escapeHTML(str) {
if (!str) return '';
return String(str)
.replace(/&/g, '&')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}