click event
This commit is contained in:
parent
e35b7302cb
commit
f40afe684a
13 changed files with 151 additions and 20 deletions
|
|
@ -19,9 +19,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
*/
|
||||
|
||||
const decoder = new TextDecoder();
|
||||
const encoder = new TextEncoder();
|
||||
|
||||
let memorycounter = -1;
|
||||
const jsmemory = new Map();
|
||||
const eventHandlers = new Map();
|
||||
|
||||
function freeJs(ptr) {
|
||||
jsmemory.delete(ptr);
|
||||
|
|
@ -37,10 +39,35 @@ function setInnerHTML(ptr, html, htmlLenght) {
|
|||
jsmemory.get(ptr).innerHTML = decoder.decode(new Int8Array(window.crafter_webbuild_wasi.instance.exports.memory.buffer, html, htmlLenght));
|
||||
}
|
||||
|
||||
function addClickListener(ptr, handlerID) {
|
||||
const element = jsmemory.get(ptr);
|
||||
|
||||
// Create a handler that will trigger a notification to C++
|
||||
const handler = function(event) {
|
||||
const { ExecuteClickHandler } = window.crafter_webbuild_wasi.instance.exports;
|
||||
ExecuteClickHandler(handlerID);
|
||||
};
|
||||
|
||||
eventHandlers.set(`${ptr}-${handlerID}`, handler);
|
||||
|
||||
element.addEventListener("click", handler);
|
||||
}
|
||||
|
||||
function removeClickListener(ptr, handlerID) {
|
||||
const element = jsmemory.get(ptr);
|
||||
|
||||
const handler = eventHandlers.get(`${ptr}-${handlerID}`);
|
||||
|
||||
element.removeEventListener("click", handler);
|
||||
eventHandlers.delete(handlerID);
|
||||
}
|
||||
|
||||
let env = {
|
||||
freeJs:freeJs,
|
||||
getElementById:getElementById,
|
||||
setInnerHTML:setInnerHTML,
|
||||
freeJs: freeJs,
|
||||
getElementById: getElementById,
|
||||
setInnerHTML: setInnerHTML,
|
||||
addClickListener: addClickListener,
|
||||
removeClickListener: removeClickListener,
|
||||
}
|
||||
|
||||
window.crafter_webbuild_env = env;
|
||||
Loading…
Add table
Add a link
Reference in a new issue