", "warning"); return;
}
const label = args[0], command = args.slice(1).join(' ');
const id = 'gui-btn-' + Date.now();
// v4.5.68: Use addEventListener instead of onclick attribute to prevent quote-breaking XSS
this.terminal.printHTML(`
`);
const btn = document.getElementById(id);
if (btn) {
btn.addEventListener('click', () => {
(window.webx11 || window).executeCommand(command);
});
}
this.guiElements[id] = { type: 'button', label, command };
this.terminal.print(`Button '${label}' created`, "success");
}
_escapeHtml(str) {
return String(str).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''');
}
createInput(args) {
if (args.length < 2) {
this.terminal.print("Usage: gui-input ", "warning"); return;
}
const placeholder = args[0], varName = args[1], id = 'gui-input-' + Date.now();
this.terminal.printHTML(`
`);
this.guiElements[id] = { type: 'input', placeholder, varName };
this.terminal.print(`Input '${placeholder}' created (var: ${varName})`, "success");
}
createText(args) {
if (!args[0]) {
this.terminal.print("Usage: gui-text ", "warning"); return;
}
const content = args.join(' ');
this.terminal.printHTML(`${content}
`);
this.terminal.print("Text element created", "success");
}
clearGUI() { this.guiElements = {}; this.terminal.print("GUI elements cleared", "success"); }
runCommand(args) {
if (!args[0]) {
this.terminal.print("Usage: gui-run ", "warning"); return;
}
this.terminal.executeCommand(args.join(' '));
}
}