unclean SPARC

This commit is contained in:
STEINNI
2025-08-27 07:03:09 +00:00
commit f308460931
430 changed files with 54426 additions and 0 deletions
+98
View File
@@ -0,0 +1,98 @@
/**
*
* @category Core
* @subcategory Libraries
*/
class Events {
// collection of registered app events
static _registered = [];
constructor() {
this.channel = document.body;
}
/**
* Candidate for deprecation: registering callbacks sounds like shit load of issues
*
* @param {string} type
* @param {*} callback
* @param {string} scope
*/
addEvent(type, callback, scope) {
let available = Events._registered.find(o => o.type == type && o.scope == scope);
if(!available) {
switch(type) {
case 'resize':
window.addEventListener(type, callback);
break;
default:
this.channel.addEventListener(type, callback);
}
Events._registered.push({scope: scope, type: type, callback: callback})
}
}
removeEvent(type, callback, scope) {
let index = Events._registered.findIndex(o => o.type == type && o.scope == scope);
if(index != -1) {
switch(type) {
case 'resize':
window.removeEventListener(type, callback);
break;
default:
this.channel.removeEventListener(type, callback);
}
Events._registered.splice(index,1);
}
}
/**
*
* @param {string} type
* @param {*} data
*/
trigger(type, data) {
let event = new CustomEvent(type, {detail: data});
switch(type) {
case 'resize':
window.dispatchEvent(event);
break;
default:
this.channel.dispatchEvent(event);
}
}
/**
*
* @param {string} scope
*/
clear(scope) {
let i = 0;
while(i < Events._registered.length) {
let event = Events._registered[i];
if(event.scope == scope) {
switch(event.type) {
case 'resize':
window.removeEventListener(event.type, event.callback);
break;
default:
document.body.removeEventListener(event.type, event.callback);
}
Events._registered.splice(i, 1);
} else {
i++;
}
}
}
}
app.registerClass('Events', Events);