Add add/remove_document_event_listener() to core:sys/wasm/js

This commit is contained in:
Bailey Gibbons
2025-08-22 15:34:50 +10:00
parent d5b1fc48fb
commit 26d066d369
3 changed files with 64 additions and 0 deletions
+36
View File
@@ -1738,6 +1738,28 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement, memory) {
return true;
},
add_document_event_listener: (name_ptr, name_len, name_code, data, callback, use_capture) => {
let name = wasmMemoryInterface.loadString(name_ptr, name_len);
let element = document;
let key = listener_key('document', name, data, callback, !!use_capture);
if (wasmMemoryInterface.listenerMap.has(key)) {
return false;
}
let listener = (e) => {
let event_data = {};
event_data.id_ptr = 0;
event_data.id_len = 0;
event_data.event = e;
event_data.name_code = name_code;
onEventReceived(event_data, data, callback);
};
wasmMemoryInterface.listenerMap.set(key, listener);
element.addEventListener(name, listener, !!use_capture);
return true;
},
remove_event_listener: (id_ptr, id_len, name_ptr, name_len, data, callback, use_capture) => {
let id = wasmMemoryInterface.loadString(id_ptr, id_len);
let name = wasmMemoryInterface.loadString(name_ptr, name_len);
@@ -1770,6 +1792,20 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement, memory) {
element.removeEventListener(name, listener, !!use_capture);
return true;
},
remove_document_event_listener: (name_ptr, name_len, data, callback, use_capture) => {
let name = wasmMemoryInterface.loadString(name_ptr, name_len);
let element = document;
let key = listener_key('document', name, data, callback, !!use_capture);
let listener = wasmMemoryInterface.listenerMap.get(key);
if (listener === undefined) {
return false;
}
wasmMemoryInterface.listenerMap.delete(key);
element.removeEventListener(name, listener, !!use_capture);
return true;
},
event_stop_propagation: () => {
if (event_temp.data && event_temp.data.event) {