class HTMLWidget extends BaseWidget {
$el;
#root;
constructor(data, renderer) {
super(data, renderer);
this.makeLayout({
type: 'div',
name: 'el',
});
this.#root = this.$el.attachShadow({
mode: 'closed'
});
this.#root.innerHTML = waiter();
this.update(data);
}
update(data) {
super.update(data);
if (!data.value) return;
if (data.value.endsWith('.html')) {
this.addFile(data.value, 'text', file => {
this.#apply(file);
});
} else {
this.#apply(data.value);
}
}
#apply(text) {
if (!this.renderer.device.info.trust) {
this.#root.replaceChildren();
this.setPlabel('[BLOCKED]');
return;
}
this.#root.innerHTML = text;
}
}
Renderer.register('html', HTMLWidget);