mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Add events to SlashCommandAbortController
This commit is contained in:
36
public/scripts/slash-commands/AbstractEventTarget.js
Normal file
36
public/scripts/slash-commands/AbstractEventTarget.js
Normal file
@ -0,0 +1,36 @@
|
||||
/**
|
||||
* @abstract
|
||||
* @implements {EventTarget}
|
||||
*/
|
||||
export class AbstractEventTarget {
|
||||
constructor() {
|
||||
this.listeners = {};
|
||||
}
|
||||
|
||||
addEventListener(type, callback, _options) {
|
||||
if (!this.listeners[type]) {
|
||||
this.listeners[type] = [];
|
||||
}
|
||||
this.listeners[type].push(callback);
|
||||
}
|
||||
|
||||
dispatchEvent(event) {
|
||||
if (!this.listeners[event.type] || this.listeners[event.type].length === 0) {
|
||||
return true;
|
||||
}
|
||||
this.listeners[event.type].forEach(listener => {
|
||||
listener(event);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
removeEventListener(type, callback, _options) {
|
||||
if (!this.listeners[type]) {
|
||||
return;
|
||||
}
|
||||
const index = this.listeners[type].indexOf(callback);
|
||||
if (index !== -1) {
|
||||
this.listeners[type].splice(index, 1);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user