Add event listeners properly (#424)

This commit is contained in:
woxtu
2022-05-20 05:56:53 +09:00
committed by GitHub
parent 82c0d741e4
commit e95b90363e
2 changed files with 7 additions and 5 deletions

View File

@@ -34,10 +34,11 @@ export class PyInputBox extends BaseEvalElement {
// defined for this widget
this.appendChild(mainDiv);
this.code = this.code.split('self').join(this.mount_name);
let registrationCode = `${this.mount_name} = Element("${mainDiv.id}")`;
let registrationCode = `from pyodide import create_proxy`;
registrationCode += `\n${this.mount_name} = Element("${mainDiv.id}")`;
if (this.code.includes('def on_keypress')) {
this.code = this.code.replace('def on_keypress', `def on_keypress_${this.mount_name}`);
registrationCode += `\n${this.mount_name}.element.addEventListener('keypress', on_keypress_${this.mount_name})`;
registrationCode += `\n${this.mount_name}.element.addEventListener('keypress', create_proxy(on_keypress_${this.mount_name}))`;
}
// TODO: For now we delay execution to allow pyodide to load but in the future this