diff options
| author | Josh Kingsley <josh@joshkingsley.me> | 2025-11-24 15:46:22 +0200 |
|---|---|---|
| committer | Josh Kingsley <josh@joshkingsley.me> | 2025-11-24 15:46:22 +0200 |
| commit | d724cc0bf6ff6d351319e6fb00f5184a04e16ac0 (patch) | |
| tree | cb43253479df5db8f4844e17e68a48ea5a212df4 /packages/web/src/html.ts | |
| parent | 7c966e105cd9f65853de1aba0ecce63aa56aca0b (diff) | |
chore: improve dev tasks
Diffstat (limited to 'packages/web/src/html.ts')
| -rw-r--r-- | packages/web/src/html.ts | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/packages/web/src/html.ts b/packages/web/src/html.ts deleted file mode 100644 index 3fccda3..0000000 --- a/packages/web/src/html.ts +++ /dev/null @@ -1,50 +0,0 @@ -export function createElement<T extends HTMLElement>( - tagName: string, - ...children: (Node | string)[] -): T; - -export function createElement<T extends HTMLElement>( - tagName: string, - attrs: Partial<T>, - ...children: (Node | string)[] -): T; - -export function createElement(tagName: string, ...args: any[]) { - const el = document.createElement(tagName); - - if (args[0]?.constructor === Object) { - const { dataset, style, ...attrs } = args.shift(); - Object.assign(el, attrs); - if (dataset) Object.assign(el.dataset, dataset); - if (style) Object.assign(el.style, style); - } - - el.append(...args.flat()); - - return el; -} - -export type CreateElement<T extends HTMLElement> = { - (...children: (Node | string)[]): T; - (attrs: Partial<T>, ...children: (Node | string)[]): T; -}; - -type ElementCreator = { - [K in keyof HTMLElementTagNameMap]: CreateElement<HTMLElementTagNameMap[K]>; -}; - -const h = new Proxy({} as ElementCreator, { - get: - (_, tagName: string) => - (...args: any[]) => { - return createElement(tagName, ...args); - }, -}); - -export default h; - -export function fragment(...children: (Node | string)[]): DocumentFragment { - const fragment = document.createDocumentFragment(); - fragment.append(...children); - return fragment; -} |
