import{_ as t,o as i,c as a,ae as e}from"./chunks/framework.C8AWLET_.js";const k=JSON.parse('{"title":"๐๏ธ The DOM Factory: $html( )","description":"","frontmatter":{},"headers":[],"relativePath":"api/html.md","filePath":"api/html.md"}'),n={name:"api/html.md"};function l(h,s,r,o,p,d){return i(),a("div",null,[...s[0]||(s[0]=[e(`
$html( ) โ$html is the internal engine that creates, attributes, and attaches reactivity to DOM elements. It uses $.watch to maintain a live, high-performance link between your Signals and the Document Object Model.
$html(tagName: string, props?: Object, children?: any[] | any): HTMLElement| Parameter | Type | Required | Description |
|---|---|---|---|
tagName | string | Yes | Valid HTML tag name (e.g., "div", "button"). |
props | Object | No | HTML attributes, event listeners, and reactive bindings. |
children | any | No | Nested elements, text strings, or reactive functions. |
SigPro intelligently decides how to apply each property:
setAttribute or direct property assignment.class or className interchangeably.checked, disabled, hidden, etc.Events are defined by the on prefix. SigPro automatically registers the listener and ensures it is cleaned up when the element is destroyed.
Button({
onclick: (e) => console.log("Clicked!", e),
}, "Click Me");If an attribute value is a function (like a Signal), $html creates an internal $.watch to keep the DOM in sync with the state.
Div({
// Updates the class whenever 'theme()' changes
class: () => theme() === "dark" ? "bg-black" : "bg-white"
});SigPro automatically enables bidirectional synchronization when it detects a Signal assigned to a form-capable attribute (value or checked) on an input element (input, textarea, select).
// Syncs input value <-> signal automatically
Input({
type: "text",
value: username // No special symbols needed!
})Note: To use a Signal as read-only in an input, wrap it in an anonymous function:
value: () => username().
Children can be static or dynamic. When a child is a function, SigPro creates a reactive boundary using $.watch for that specific part of the DOM.
Div({}, [
H1("Static Title"),
// Only this text node re-renders when 'count' changes
() => \`Current count: \${count()}\`
]);Every element created with $html is "self-aware" regarding its reactive dependencies.
._cleanups: A hidden Set attached to the element that stores all stop() functions from its internal $.watch calls and event listeners.$.if, $.for, or $.router), SigPro performs a recursive "sweep" to execute these cleanups, ensuring zero memory leaks.Instead of writing $html("div", ...) every time, SigPro provides PascalCase global functions for all standard HTML tags:
// This:
Div({ class: "wrapper" }, [ Span("Hello") ])
// Is exactly equivalent to:
$html("div", { class: "wrapper" }, [ $html("span", {}, "Hello") ])