This commit is contained in:
Jorijn van der Graaf 2025-11-12 20:45:35 +01:00
commit 9651d84dc4
8 changed files with 239 additions and 207 deletions

View file

@ -661,6 +661,47 @@ let env = {
const element = jsmemory.get(ptr);
const val = decoder.decode(new Int8Array(window.crafter_webbuild_wasi.instance.exports.memory.buffer, value, valueLength));
element.value = val;
}, getValue: function(ptr) {
const element = jsmemory.get(ptr);
if(element.value) {
return writeStringToWasm(element.value || "");
} else {
return 0;
}
},
setValue: function(ptr, value, valueLength) {
const element = jsmemory.get(ptr);
const val = decoder.decode(new Int8Array(window.crafter_webbuild_wasi.instance.exports.memory.buffer, value, valueLength));
element.value = val;
},
getPathName: function() {
return writeStringToWasm(window.location.pathname);
},
addPopStateListener: function(handlerID) {
const handler = function(event) {
const { ExecutePopStateHandler } = window.crafter_webbuild_wasi.instance.exports;
ExecutePopStateHandler(handlerID);
};
window.addEventListener('popstate', handler);
// Store handler for potential cleanup
eventHandlers.set(`popstate-${handlerID}`, handler);
},
removePopStateListener: function(handlerID) {
const handler = eventHandlers.get(`popstate-${handlerID}`);
if (handler) {
window.removeEventListener('popstate', handler);
eventHandlers.delete(`popstate-${handlerID}`);
}
},
pushState: function(data, dataLength, title, titleLength, url, urlLength) {
const dataStr = decoder.decode(new Int8Array(window.crafter_webbuild_wasi.instance.exports.memory.buffer, data, dataLength));
const titleStr = decoder.decode(new Int8Array(window.crafter_webbuild_wasi.instance.exports.memory.buffer, title, titleLength));
const urlStr = decoder.decode(new Int8Array(window.crafter_webbuild_wasi.instance.exports.memory.buffer, url, urlLength));
window.history.pushState(JSON.parse(dataStr), titleStr, urlStr);
},
addClickListener: addClickListener,
removeClickListener: removeClickListener,