Factor out some html helpers

This commit is contained in:
Tangent 2024-01-12 20:46:09 -05:00
parent d106823e19
commit 8bdd3158ea
2 changed files with 26 additions and 7 deletions

22
lib/html.ts Normal file
View file

@ -0,0 +1,22 @@
export function h<Name extends keyof HTMLElementTagNameMap>(
name: Name,
props: Partial<HTMLElementTagNameMap[Name]>,
...children: Node[]
): HTMLElementTagNameMap[Name] {
const element = Object.assign(document.createElement(name), props);
element.append(...children);
return element;
}
export function canvas2d(
props: Partial<HTMLCanvasElement>
): [HTMLCanvasElement, CanvasRenderingContext2D] {
const canvas = h("canvas", props);
const cx = canvas.getContext("2d");
if (!cx) {
throw new Error("2D rendering context not supported");
}
return [canvas, cx];
}