mirror of
https://github.com/rio-labs/rio.git
synced 2026-01-06 05:09:43 -06:00
30 lines
732 B
TypeScript
30 lines
732 B
TypeScript
import { ComponentBase, ComponentState } from './componentBase';
|
|
|
|
export type WebsiteState = ComponentState & {
|
|
_type_: 'Website-builtin';
|
|
url?: string;
|
|
};
|
|
|
|
export class WebsiteComponent extends ComponentBase {
|
|
state: Required<WebsiteState>;
|
|
element: HTMLIFrameElement;
|
|
|
|
createElement(): HTMLElement {
|
|
return document.createElement('iframe');
|
|
}
|
|
|
|
updateElement(
|
|
deltaState: WebsiteState,
|
|
latentComponents: Set<ComponentBase>
|
|
): void {
|
|
super.updateElement(deltaState, latentComponents);
|
|
|
|
if (
|
|
deltaState.url !== undefined &&
|
|
deltaState.url !== this.element.src
|
|
) {
|
|
this.element.src = deltaState.url;
|
|
}
|
|
}
|
|
}
|