@hypen-space/web 0.3.11 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,7 +32,7 @@
32
32
  "/**\n * Paragraph Component\n */\n\nimport type { ComponentHandler } from \"./index.js\";\n\nexport const paragraphHandler: ComponentHandler = {\n create(): HTMLElement {\n const el = document.createElement(\"p\");\n el.dataset.hypenType = \"paragraph\";\n return el;\n },\n\n applyProps(el: HTMLElement, props: Record<string, any>): void {\n // Text content\n const text = props[\"0\"] || props.text;\n if (text !== undefined) {\n el.textContent = String(text);\n }\n },\n};\n\n\n",
33
33
  "/**\n * Router Component - Container for routes\n */\n\nimport type { ComponentHandler } from \"./index.js\";\n\nexport const routerHandler: ComponentHandler = {\n create(): HTMLElement {\n const el = document.createElement(\"div\");\n el.style.display = \"flex\";\n el.style.flexDirection = \"column\";\n el.style.width = \"100%\";\n el.dataset.hypenType = \"router\";\n return el;\n },\n\n applyProps(el: HTMLElement, props: Record<string, any>): void {\n // Router doesn't need special prop handling\n // The routing logic is handled by the Router module\n },\n};\n\n",
34
34
  "/**\n * Route Component - Lazy rendering container for route content\n * Stores component name as metadata, Router handles actual rendering\n */\n\nimport type { ComponentHandler } from \"./index.js\";\nimport { frameworkLoggers } from \"@hypen-space/core\";\n\nconst log = frameworkLoggers.router;\n\nexport const routeHandler: ComponentHandler = {\n create(): HTMLElement {\n const el = document.createElement(\"div\");\n el.style.display = \"flex\";\n el.style.flexDirection = \"column\";\n el.style.width = \"100%\";\n el.dataset.hypenType = \"route\";\n el.dataset.routeRendered = \"false\"; // Track if component has been rendered\n return el;\n },\n\n applyProps(el: HTMLElement, props: Record<string, any>): void {\n // Extract route path from props\n const path = props.path || props[\"0\"] || \"/\";\n el.dataset.routePath = String(path);\n \n // Check if this is a lazy route (has __lazy flag)\n const isLazy = props.__lazy === true;\n el.dataset.routeLazy = String(isLazy);\n \n // Store component name - either from explicit prop or from lazy child\n const componentName = props.component || props.__lazy_child;\n if (componentName) {\n el.dataset.routeComponent = String(componentName);\n }\n \n log.debug(`Route created: path=\"${path}\", lazy=${isLazy}, component=\"${el.dataset.routeComponent || 'none'}\"`);\n },\n};\n\n",
35
- "/**\n * HypenApp Component\n *\n * Embeds a remote Hypen app via WebSocket\n *\n * Usage in Hypen DSL:\n * ```hypen\n * HypenApp(\"ws://localhost:3000\")\n *\n * // Or with named prop:\n * HypenApp(url: \"ws://localhost:3000\")\n * ```\n */\n\nimport type { ComponentHandler } from \"./index.js\";\nimport { RemoteEngine } from \"@hypen-space/core/remote/client\";\nimport type { Patch } from \"@hypen-space/core/remote\";\nimport { frameworkLoggers } from \"@hypen-space/core\";\n\nconst log = frameworkLoggers.remote;\n\n// Store active HypenApp instances for cleanup\nconst activeInstances = new WeakMap<\n HTMLElement,\n {\n engine: RemoteEngine;\n nodes: Map<string, HTMLElement>;\n }\n>();\n\nexport const hypenAppHandler: ComponentHandler = {\n create(): HTMLElement {\n const el = document.createElement(\"div\");\n el.dataset.hypenType = \"hypenapp\";\n el.style.display = \"contents\"; // Don't affect layout\n return el;\n },\n\n applyProps(element: HTMLElement, props: Record<string, any>): void {\n // Get URL from props (can be positional \"0\" or named \"url\")\n const url = props[\"0\"] || props.url;\n\n if (!url || typeof url !== \"string\") {\n log.error(\"HypenApp: URL is required\");\n element.innerHTML = '<div style=\"color: red;\">HypenApp: URL required</div>';\n return;\n }\n\n // Check if already connected\n const existing = activeInstances.get(element);\n if (existing) {\n // Already connected, don't reconnect\n return;\n }\n\n // Create the remote engine\n const engine = new RemoteEngine(url, {\n autoReconnect: props.autoReconnect ?? true,\n reconnectInterval: props.reconnectInterval ?? 3000,\n maxReconnectAttempts: props.maxReconnectAttempts ?? 10,\n });\n\n // Map to track created nodes\n const nodes = new Map<string, HTMLElement>();\n let rootId: string | null = null;\n\n // Store instance for cleanup\n activeInstances.set(element, { engine, nodes });\n\n // Set up patch handling\n engine.onPatches((patches) => {\n applyPatches(element, nodes, patches, engine, (id) => {\n if (!rootId) rootId = id;\n });\n });\n\n // Show loading state\n element.innerHTML = '<div class=\"hypen-app-loading\">Connecting...</div>';\n\n // Connect\n engine\n .connect()\n .then(() => {\n // Clear loading state - patches will populate content\n element.innerHTML = \"\";\n log.debug(`HypenApp connected to ${url}`);\n })\n .catch((error) => {\n element.innerHTML = `<div style=\"color: red;\">HypenApp: Connection failed - ${error.message}</div>`;\n log.error(\"HypenApp connection failed:\", error);\n });\n\n // Handle disconnection\n engine.onDisconnect(() => {\n log.debug(\"HypenApp disconnected\");\n });\n\n engine.onError((error) => {\n log.error(\"HypenApp error:\", error);\n });\n\n // Cleanup on element removal\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n for (const removedNode of mutation.removedNodes) {\n if (removedNode === element || (removedNode as Element).contains?.(element)) {\n engine.disconnect();\n activeInstances.delete(element);\n observer.disconnect();\n log.debug(\"HypenApp cleaned up\");\n return;\n }\n }\n }\n });\n\n // Observe parent for removal\n if (element.parentNode) {\n observer.observe(element.parentNode, { childList: true, subtree: true });\n }\n },\n};\n\n/**\n * Minimal patch application for HypenApp container\n */\nfunction applyPatches(\n container: HTMLElement,\n nodes: Map<string, HTMLElement>,\n patches: Patch[],\n engine: RemoteEngine,\n onRoot: (id: string) => void\n): void {\n for (const patch of patches) {\n switch (patch.type) {\n case \"create\": {\n const el = createElement(patch.elementType!, patch.props || {});\n el.dataset.hypenId = patch.id!;\n (el as any).__hypenEngine = engine;\n nodes.set(patch.id!, el);\n break;\n }\n\n case \"setProp\": {\n const el = nodes.get(patch.id!);\n if (el) {\n applyProp(el, patch.name!, patch.value);\n }\n break;\n }\n\n case \"setText\": {\n const el = nodes.get(patch.id!);\n if (el) {\n el.textContent = patch.text!;\n }\n break;\n }\n\n case \"insert\": {\n const parentId = patch.parentId;\n const parent = parentId === \"root\" ? container : nodes.get(parentId);\n const child = nodes.get(patch.id!);\n const beforeId = patch.beforeId;\n\n if (parent && child) {\n if (parentId === \"root\") {\n onRoot(patch.id!);\n }\n\n if (beforeId) {\n const before = nodes.get(beforeId);\n if (before && before.parentNode === parent) {\n parent.insertBefore(child, before);\n } else if (!parent.contains(child)) {\n parent.appendChild(child);\n }\n } else if (!parent.contains(child)) {\n parent.appendChild(child);\n }\n }\n break;\n }\n\n case \"move\": {\n const parentId = patch.parentId;\n const parent = parentId === \"root\" ? container : nodes.get(parentId);\n const child = nodes.get(patch.id!);\n const beforeId = patch.beforeId;\n\n if (parent && child) {\n if (beforeId) {\n const before = nodes.get(beforeId);\n if (before && before.parentNode === parent) {\n parent.insertBefore(child, before);\n }\n } else {\n parent.appendChild(child);\n }\n }\n break;\n }\n\n case \"remove\": {\n const el = nodes.get(patch.id!);\n if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n nodes.delete(patch.id!);\n break;\n }\n }\n }\n}\n\n/**\n * Create element by type\n */\nfunction createElement(type: string, props: Record<string, any>): HTMLElement {\n const normalizedType = type.toLowerCase();\n\n // Map Hypen types to HTML elements\n const tagMap: Record<string, string> = {\n column: \"div\",\n row: \"div\",\n text: \"span\",\n button: \"button\",\n input: \"input\",\n image: \"img\",\n container: \"div\",\n box: \"div\",\n center: \"div\",\n list: \"div\",\n spacer: \"div\",\n stack: \"div\",\n divider: \"hr\",\n grid: \"div\",\n card: \"div\",\n heading: \"h2\",\n link: \"a\",\n textarea: \"textarea\",\n checkbox: \"input\",\n select: \"select\",\n slider: \"input\",\n switch: \"input\",\n spinner: \"div\",\n badge: \"span\",\n avatar: \"img\",\n progressbar: \"div\",\n video: \"video\",\n audio: \"audio\",\n };\n\n const tag = tagMap[normalizedType] || \"div\";\n const el = document.createElement(tag);\n el.dataset.hypenType = normalizedType;\n\n // Apply basic styles\n if (normalizedType === \"column\") {\n el.style.display = \"flex\";\n el.style.flexDirection = \"column\";\n } else if (normalizedType === \"row\") {\n el.style.display = \"flex\";\n el.style.flexDirection = \"row\";\n } else if (normalizedType === \"center\") {\n el.style.display = \"flex\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n } else if (normalizedType === \"text\") {\n // Text content from props\n if (props[\"0\"]) {\n el.textContent = String(props[\"0\"]);\n }\n } else if (normalizedType === \"button\") {\n el.style.cursor = \"pointer\";\n } else if (normalizedType === \"checkbox\" || normalizedType === \"switch\") {\n (el as HTMLInputElement).type = \"checkbox\";\n } else if (normalizedType === \"slider\") {\n (el as HTMLInputElement).type = \"range\";\n }\n\n return el;\n}\n\n/**\n * Apply a prop to an element\n */\nfunction applyProp(el: HTMLElement, name: string, value: any): void {\n // Text content\n if (name === \"0\" || name === \"text\") {\n el.textContent = String(value);\n return;\n }\n\n // Style props\n const styleProps: Record<string, string> = {\n padding: \"padding\",\n margin: \"margin\",\n backgroundColor: \"backgroundColor\",\n background: \"background\",\n color: \"color\",\n fontSize: \"fontSize\",\n fontWeight: \"fontWeight\",\n width: \"width\",\n height: \"height\",\n minWidth: \"minWidth\",\n minHeight: \"minHeight\",\n maxWidth: \"maxWidth\",\n maxHeight: \"maxHeight\",\n borderRadius: \"borderRadius\",\n border: \"border\",\n gap: \"gap\",\n flex: \"flex\",\n alignItems: \"alignItems\",\n justifyContent: \"justifyContent\",\n opacity: \"opacity\",\n overflow: \"overflow\",\n };\n\n if (styleProps[name]) {\n const cssValue = typeof value === \"number\" ? `${value}px` : String(value);\n (el.style as any)[styleProps[name]] = cssValue;\n return;\n }\n\n // Event handlers\n if (name === \"onClick\" || name === \"onclick\") {\n el.onclick = () => {\n const engine = (el as any).__hypenEngine as RemoteEngine;\n if (engine && typeof value === \"string\" && value.startsWith(\"@actions.\")) {\n const action = value.replace(\"@actions.\", \"\");\n engine.dispatchAction(action);\n }\n };\n return;\n }\n\n // Other attributes\n el.setAttribute(name, String(value));\n}\n\n/**\n * Disconnect a HypenApp instance\n */\nexport function disconnectHypenApp(element: HTMLElement): void {\n const instance = activeInstances.get(element);\n if (instance) {\n instance.engine.disconnect();\n activeInstances.delete(element);\n }\n}\n",
35
+ "/**\n * HypenApp Component\n *\n * Embeds a remote Hypen app via WebSocket\n *\n * Usage in Hypen DSL:\n * ```hypen\n * HypenApp(\"ws://localhost:3000\")\n *\n * // Or with named prop:\n * HypenApp(url: \"ws://localhost:3000\")\n * ```\n */\n\nimport type { ComponentHandler } from \"./index.js\";\nimport { RemoteEngine } from \"@hypen-space/core/remote/client\";\nimport type { Patch } from \"@hypen-space/core/types\";\nimport { frameworkLoggers } from \"@hypen-space/core\";\n\nconst log = frameworkLoggers.remote;\n\n// Store active HypenApp instances for cleanup\nconst activeInstances = new WeakMap<\n HTMLElement,\n {\n engine: RemoteEngine;\n nodes: Map<string, HTMLElement>;\n }\n>();\n\nexport const hypenAppHandler: ComponentHandler = {\n create(): HTMLElement {\n const el = document.createElement(\"div\");\n el.dataset.hypenType = \"hypenapp\";\n el.style.display = \"contents\"; // Don't affect layout\n return el;\n },\n\n applyProps(element: HTMLElement, props: Record<string, any>): void {\n // Get URL from props (can be positional \"0\" or named \"url\")\n const url = props[\"0\"] || props.url;\n\n if (!url || typeof url !== \"string\") {\n log.error(\"HypenApp: URL is required\");\n element.innerHTML = '<div style=\"color: red;\">HypenApp: URL required</div>';\n return;\n }\n\n // Check if already connected\n const existing = activeInstances.get(element);\n if (existing) {\n // Already connected, don't reconnect\n return;\n }\n\n // Create the remote engine\n const engine = new RemoteEngine(url, {\n autoReconnect: props.autoReconnect ?? true,\n reconnectInterval: props.reconnectInterval ?? 3000,\n maxReconnectAttempts: props.maxReconnectAttempts ?? 10,\n });\n\n // Map to track created nodes\n const nodes = new Map<string, HTMLElement>();\n let rootId: string | null = null;\n\n // Store instance for cleanup\n activeInstances.set(element, { engine, nodes });\n\n // Set up patch handling\n engine.onPatches((patches) => {\n applyPatches(element, nodes, patches, engine, (id) => {\n if (!rootId) rootId = id;\n });\n });\n\n // Show loading state\n element.innerHTML = '<div class=\"hypen-app-loading\">Connecting...</div>';\n\n // Connect\n engine\n .connect()\n .then(() => {\n // Clear loading state - patches will populate content\n element.innerHTML = \"\";\n log.debug(`HypenApp connected to ${url}`);\n })\n .catch((error) => {\n element.innerHTML = `<div style=\"color: red;\">HypenApp: Connection failed - ${error.message}</div>`;\n log.error(\"HypenApp connection failed:\", error);\n });\n\n // Handle disconnection\n engine.onDisconnect(() => {\n log.debug(\"HypenApp disconnected\");\n });\n\n engine.onError((error) => {\n log.error(\"HypenApp error:\", error);\n });\n\n // Cleanup on element removal\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n for (const removedNode of mutation.removedNodes) {\n if (removedNode === element || (removedNode as Element).contains?.(element)) {\n engine.disconnect();\n activeInstances.delete(element);\n observer.disconnect();\n log.debug(\"HypenApp cleaned up\");\n return;\n }\n }\n }\n });\n\n // Observe parent for removal\n if (element.parentNode) {\n observer.observe(element.parentNode, { childList: true, subtree: true });\n }\n },\n};\n\n/**\n * Minimal patch application for HypenApp container\n */\nfunction applyPatches(\n container: HTMLElement,\n nodes: Map<string, HTMLElement>,\n patches: Patch[],\n engine: RemoteEngine,\n onRoot: (id: string) => void\n): void {\n for (const patch of patches) {\n switch (patch.type) {\n case \"create\": {\n const el = createElement(patch.elementType!, patch.props || {});\n el.dataset.hypenId = patch.id!;\n (el as any).__hypenEngine = engine;\n nodes.set(patch.id!, el);\n break;\n }\n\n case \"setProp\": {\n const el = nodes.get(patch.id!);\n if (el) {\n applyProp(el, patch.name!, patch.value);\n }\n break;\n }\n\n case \"setText\": {\n const el = nodes.get(patch.id!);\n if (el) {\n el.textContent = patch.text!;\n }\n break;\n }\n\n case \"insert\": {\n const parentId = patch.parentId!;\n const parent = parentId === \"root\" ? container : nodes.get(parentId);\n const child = nodes.get(patch.id!);\n const beforeId = patch.beforeId;\n\n if (parent && child) {\n if (parentId === \"root\") {\n onRoot(patch.id!);\n }\n\n if (beforeId) {\n const before = nodes.get(beforeId);\n if (before && before.parentNode === parent) {\n parent.insertBefore(child, before);\n } else if (!parent.contains(child)) {\n parent.appendChild(child);\n }\n } else if (!parent.contains(child)) {\n parent.appendChild(child);\n }\n }\n break;\n }\n\n case \"move\": {\n const parentId = patch.parentId!;\n const parent = parentId === \"root\" ? container : nodes.get(parentId);\n const child = nodes.get(patch.id!);\n const beforeId = patch.beforeId;\n\n if (parent && child) {\n if (beforeId) {\n const before = nodes.get(beforeId);\n if (before && before.parentNode === parent) {\n parent.insertBefore(child, before);\n }\n } else {\n parent.appendChild(child);\n }\n }\n break;\n }\n\n case \"remove\": {\n const el = nodes.get(patch.id!);\n if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n nodes.delete(patch.id!);\n break;\n }\n }\n }\n}\n\n/**\n * Create element by type\n */\nfunction createElement(type: string, props: Record<string, any>): HTMLElement {\n const normalizedType = type.toLowerCase();\n\n // Map Hypen types to HTML elements\n const tagMap: Record<string, string> = {\n column: \"div\",\n row: \"div\",\n text: \"span\",\n button: \"button\",\n input: \"input\",\n image: \"img\",\n container: \"div\",\n box: \"div\",\n center: \"div\",\n list: \"div\",\n spacer: \"div\",\n stack: \"div\",\n divider: \"hr\",\n grid: \"div\",\n card: \"div\",\n heading: \"h2\",\n link: \"a\",\n textarea: \"textarea\",\n checkbox: \"input\",\n select: \"select\",\n slider: \"input\",\n switch: \"input\",\n spinner: \"div\",\n badge: \"span\",\n avatar: \"img\",\n progressbar: \"div\",\n video: \"video\",\n audio: \"audio\",\n };\n\n const tag = tagMap[normalizedType] || \"div\";\n const el = document.createElement(tag);\n el.dataset.hypenType = normalizedType;\n\n // Apply basic styles\n if (normalizedType === \"column\") {\n el.style.display = \"flex\";\n el.style.flexDirection = \"column\";\n } else if (normalizedType === \"row\") {\n el.style.display = \"flex\";\n el.style.flexDirection = \"row\";\n } else if (normalizedType === \"center\") {\n el.style.display = \"flex\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n } else if (normalizedType === \"text\") {\n // Text content from props\n if (props[\"0\"]) {\n el.textContent = String(props[\"0\"]);\n }\n } else if (normalizedType === \"button\") {\n el.style.cursor = \"pointer\";\n } else if (normalizedType === \"checkbox\" || normalizedType === \"switch\") {\n (el as HTMLInputElement).type = \"checkbox\";\n } else if (normalizedType === \"slider\") {\n (el as HTMLInputElement).type = \"range\";\n }\n\n return el;\n}\n\n/**\n * Apply a prop to an element\n */\nfunction applyProp(el: HTMLElement, name: string, value: any): void {\n // Text content\n if (name === \"0\" || name === \"text\") {\n el.textContent = String(value);\n return;\n }\n\n // Style props\n const styleProps: Record<string, string> = {\n padding: \"padding\",\n margin: \"margin\",\n backgroundColor: \"backgroundColor\",\n background: \"background\",\n color: \"color\",\n fontSize: \"fontSize\",\n fontWeight: \"fontWeight\",\n width: \"width\",\n height: \"height\",\n minWidth: \"minWidth\",\n minHeight: \"minHeight\",\n maxWidth: \"maxWidth\",\n maxHeight: \"maxHeight\",\n borderRadius: \"borderRadius\",\n border: \"border\",\n gap: \"gap\",\n flex: \"flex\",\n alignItems: \"alignItems\",\n justifyContent: \"justifyContent\",\n opacity: \"opacity\",\n overflow: \"overflow\",\n };\n\n if (styleProps[name]) {\n const cssValue = typeof value === \"number\" ? `${value}px` : String(value);\n (el.style as any)[styleProps[name]] = cssValue;\n return;\n }\n\n // Event handlers\n if (name === \"onClick\" || name === \"onclick\") {\n el.onclick = () => {\n const engine = (el as any).__hypenEngine as RemoteEngine;\n if (engine && typeof value === \"string\" && value.startsWith(\"@actions.\")) {\n const action = value.replace(\"@actions.\", \"\");\n engine.dispatchAction(action);\n }\n };\n return;\n }\n\n // Other attributes\n el.setAttribute(name, String(value));\n}\n\n/**\n * Disconnect a HypenApp instance\n */\nexport function disconnectHypenApp(element: HTMLElement): void {\n const instance = activeInstances.get(element);\n if (instance) {\n instance.engine.disconnect();\n activeInstances.delete(element);\n }\n}\n",
36
36
  "/**\n * Component Registry\n *\n * Manages mappings from Hypen component types to DOM elements\n */\n\nexport interface ComponentHandler {\n create(): HTMLElement;\n applyProps?(element: HTMLElement, props: Record<string, any>): void;\n}\n\nexport class ComponentRegistry {\n private handlers: Map<string, ComponentHandler> = new Map();\n\n constructor() {\n this.registerDefaults();\n }\n\n /**\n * Register a component handler\n */\n register(type: string, handler: ComponentHandler): void {\n this.handlers.set(type.toLowerCase(), handler);\n }\n\n /**\n * Get handler for a component type\n */\n get(type: string): ComponentHandler | undefined {\n return this.handlers.get(type.toLowerCase());\n }\n\n /**\n * Create element for a component type\n */\n createElement(type: string, props: Record<string, any> = {}): HTMLElement | null {\n const handler = this.get(type);\n if (!handler) return null;\n\n const element = handler.create();\n if (handler.applyProps) {\n handler.applyProps(element, props);\n }\n return element;\n }\n\n /**\n * Register all default Hypen components\n */\n private registerDefaults(): void {\n // Import and register all component handlers\n const { columnHandler } = require(\"./column.js\");\n const { rowHandler } = require(\"./row.js\");\n const { textHandler } = require(\"./text.js\");\n const { imageHandler } = require(\"./image.js\");\n const { buttonHandler } = require(\"./button.js\");\n const { containerHandler } = require(\"./container.js\");\n const { centerHandler } = require(\"./center.js\");\n const { listHandler } = require(\"./list.js\");\n const { inputHandler } = require(\"./input.js\");\n const { linkHandler } = require(\"./link.js\");\n const { textareaHandler } = require(\"./textarea.js\");\n const { checkboxHandler } = require(\"./checkbox.js\");\n const { selectHandler } = require(\"./select.js\");\n const { spacerHandler } = require(\"./spacer.js\");\n const { stackHandler } = require(\"./stack.js\");\n const { dividerHandler } = require(\"./divider.js\");\n const { gridHandler } = require(\"./grid.js\");\n const { cardHandler } = require(\"./card.js\");\n const { headingHandler } = require(\"./heading.js\");\n const { switchHandler } = require(\"./switch.js\");\n const { sliderHandler } = require(\"./slider.js\");\n const { spinnerHandler } = require(\"./spinner.js\");\n const { badgeHandler } = require(\"./badge.js\");\n const { avatarHandler } = require(\"./avatar.js\");\n const { progressBarHandler } = require(\"./progressbar.js\");\n const { videoHandler } = require(\"./video.js\");\n const { audioHandler } = require(\"./audio.js\");\n const { paragraphHandler } = require(\"./paragraph.js\");\n const { routerHandler } = require(\"./router.js\");\n const { routeHandler } = require(\"./route.js\");\n const { hypenAppHandler } = require(\"./hypenapp.js\");\n\n this.register(\"column\", columnHandler);\n this.register(\"row\", rowHandler);\n this.register(\"text\", textHandler);\n this.register(\"image\", imageHandler);\n this.register(\"button\", buttonHandler);\n this.register(\"container\", containerHandler);\n this.register(\"box\", containerHandler);\n this.register(\"center\", centerHandler);\n this.register(\"list\", listHandler);\n this.register(\"input\", inputHandler);\n this.register(\"link\", linkHandler);\n this.register(\"textarea\", textareaHandler);\n this.register(\"checkbox\", checkboxHandler);\n this.register(\"select\", selectHandler);\n this.register(\"spacer\", spacerHandler);\n this.register(\"stack\", stackHandler);\n this.register(\"divider\", dividerHandler);\n this.register(\"grid\", gridHandler);\n this.register(\"card\", cardHandler);\n this.register(\"heading\", headingHandler);\n this.register(\"switch\", switchHandler);\n this.register(\"slider\", sliderHandler);\n this.register(\"spinner\", spinnerHandler);\n this.register(\"badge\", badgeHandler);\n this.register(\"avatar\", avatarHandler);\n this.register(\"progressbar\", progressBarHandler);\n this.register(\"video\", videoHandler);\n this.register(\"audio\", audioHandler);\n this.register(\"paragraph\", paragraphHandler);\n this.register(\"router\", routerHandler);\n this.register(\"route\", routeHandler);\n this.register(\"hypenapp\", hypenAppHandler);\n }\n}\n",
37
37
  "/**\n * Padding Applicators\n */\n\nimport type { ApplicatorHandler } from \"./types.js\";\n\n// Helper to extract numeric value from applicator value\nconst getNumericValue = (value: any): number | null => {\n if (typeof value === \"number\") return value;\n if (typeof value === \"object\" && value[\"0\"] !== undefined) return Number(value[\"0\"]);\n if (typeof value === \"string\") return parseFloat(value);\n return null;\n};\n\nexport const paddingHandler: ApplicatorHandler = (el, value) => {\n if (typeof value === \"number\") {\n el.style.padding = `${value}px`;\n } else if (typeof value === \"object\") {\n // Handle {0: value} format from .padding(value)\n if (value[\"0\"] !== undefined && Object.keys(value).length === 1) {\n el.style.padding = `${value[\"0\"]}px`;\n } else {\n if (value.left !== undefined) el.style.paddingLeft = `${value.left}px`;\n if (value.right !== undefined) el.style.paddingRight = `${value.right}px`;\n if (value.top !== undefined) el.style.paddingTop = `${value.top}px`;\n if (value.bottom !== undefined) el.style.paddingBottom = `${value.bottom}px`;\n }\n } else {\n el.style.padding = String(value);\n }\n};\n\n// Directional padding handlers for .paddingTop(8), .paddingBottom(8), etc.\nexport const paddingTopHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) el.style.paddingTop = `${v}px`;\n};\n\nexport const paddingBottomHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) el.style.paddingBottom = `${v}px`;\n};\n\nexport const paddingLeftHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) el.style.paddingLeft = `${v}px`;\n};\n\nexport const paddingRightHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) el.style.paddingRight = `${v}px`;\n};\n\nexport const paddingHorizontalHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) {\n el.style.paddingLeft = `${v}px`;\n el.style.paddingRight = `${v}px`;\n }\n};\n\nexport const paddingVerticalHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) {\n el.style.paddingTop = `${v}px`;\n el.style.paddingBottom = `${v}px`;\n }\n};\n",
38
38
  "/**\n * Margin Applicators\n */\n\nimport type { ApplicatorHandler } from \"./types.js\";\n\n// Helper to extract numeric value from applicator value\nconst getNumericValue = (value: any): number | null => {\n if (typeof value === \"number\") return value;\n if (typeof value === \"object\" && value[\"0\"] !== undefined) return Number(value[\"0\"]);\n if (typeof value === \"string\") return parseFloat(value);\n return null;\n};\n\nexport const marginHandler: ApplicatorHandler = (el, value) => {\n if (typeof value === \"number\") {\n el.style.margin = `${value}px`;\n } else if (typeof value === \"object\") {\n // Handle {0: value} format from .margin(value)\n if (value[\"0\"] !== undefined && Object.keys(value).length === 1) {\n el.style.margin = `${value[\"0\"]}px`;\n } else {\n if (value.left !== undefined) el.style.marginLeft = `${value.left}px`;\n if (value.right !== undefined) el.style.marginRight = `${value.right}px`;\n if (value.top !== undefined) el.style.marginTop = `${value.top}px`;\n if (value.bottom !== undefined) el.style.marginBottom = `${value.bottom}px`;\n }\n } else {\n el.style.margin = String(value);\n }\n};\n\n// Directional margin handlers for .marginTop(8), .marginBottom(8), etc.\nexport const marginTopHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) el.style.marginTop = `${v}px`;\n};\n\nexport const marginBottomHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) el.style.marginBottom = `${v}px`;\n};\n\nexport const marginLeftHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) el.style.marginLeft = `${v}px`;\n};\n\nexport const marginRightHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) el.style.marginRight = `${v}px`;\n};\n\nexport const marginHorizontalHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) {\n el.style.marginLeft = `${v}px`;\n el.style.marginRight = `${v}px`;\n }\n};\n\nexport const marginVerticalHandler: ApplicatorHandler = (el, value) => {\n const v = getNumericValue(value);\n if (v !== null) {\n el.style.marginTop = `${v}px`;\n el.style.marginBottom = `${v}px`;\n }\n};\n",
@@ -53,7 +53,7 @@
53
53
  "/**\n * Applicator Registry\n *\n * Handles style applicators (modifiers) for Hypen components\n */\n\n// Re-export the type from types.ts to maintain API compatibility\nexport type { ApplicatorHandler } from \"./types.js\";\nimport type { ApplicatorHandler } from \"./types.js\";\n\n// Static imports for all applicator handlers (avoids circular dependency)\nimport {\n paddingHandler,\n paddingTopHandler,\n paddingBottomHandler,\n paddingLeftHandler,\n paddingRightHandler,\n paddingHorizontalHandler,\n paddingVerticalHandler,\n} from \"./padding.js\";\nimport {\n marginHandler,\n marginTopHandler,\n marginBottomHandler,\n marginLeftHandler,\n marginRightHandler,\n marginHorizontalHandler,\n marginVerticalHandler,\n} from \"./margin.js\";\nimport { colorHandlers } from \"./color.js\";\nimport { borderHandlers } from \"./border.js\";\nimport { sizeHandlers } from \"./size.js\";\nimport { fontHandlers } from \"./font.js\";\nimport { layoutHandlers } from \"./layout.js\";\nimport { eventHandlers } from \"./events.js\";\nimport { typographyHandlers } from \"./typography.js\";\nimport { transformHandlers } from \"./transform.js\";\nimport { effectsHandlers } from \"./effects.js\";\nimport { advancedLayoutHandlers } from \"./advanced-layout.js\";\nimport { backgroundHandlers } from \"./background.js\";\nimport { displayHandlers } from \"./display.js\";\nimport { transitionHandlers } from \"./transition.js\";\n\n/**\n * Tailwind breakpoint values for responsive variants\n */\nconst BREAKPOINTS: Record<string, string> = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n};\n\n/**\n * Singleton stylesheet for variant CSS rules\n */\nlet variantStyleSheet: CSSStyleSheet | null = null;\n\n/**\n * Track inserted rules to avoid duplicates\n */\nconst insertedRules = new Set<string>();\n\n/**\n * Get or create the variant stylesheet\n */\nfunction getVariantStyleSheet(): CSSStyleSheet {\n if (!variantStyleSheet) {\n const style = document.createElement('style');\n style.id = 'hypen-variants';\n document.head.appendChild(style);\n variantStyleSheet = style.sheet as CSSStyleSheet;\n }\n return variantStyleSheet;\n}\n\n/**\n * Generate a simple hash for deduplication\n */\nfunction hashValue(value: any): string {\n return String(value).replace(/[^a-zA-Z0-9]/g, '').slice(0, 8);\n}\n\nexport class ApplicatorRegistry {\n private handlers: Map<string, ApplicatorHandler> = new Map();\n private elementState: WeakMap<HTMLElement, Map<string, any>> = new WeakMap();\n\n constructor() {\n this.registerDefaults();\n }\n\n /**\n * Register an applicator handler\n */\n register(name: string, handler: ApplicatorHandler): void {\n this.handlers.set(name, handler);\n }\n\n /**\n * Apply an applicator to an element\n */\n apply(element: HTMLElement, name: string, value: any): void {\n // Parse applicator metadata so we can normalize event arguments and retain legacy behavior\n const { handlerName, argKey, aggregate, fallbackName } = this.parseApplicatorName(name);\n\n const handler = this.handlers.get(handlerName);\n const state = this.getElementState(element);\n const previous = state.get(handlerName);\n\n if (aggregate && argKey !== null) {\n // Merge event payload updates with the previously applied arguments so handlers\n // always receive the full payload object (prevents stale dispatch data)\n const merged = this.mergeAggregateState(previous, argKey, this.normalizeValue(value));\n\n state.set(handlerName, merged);\n\n if (handler) {\n handler(element, merged);\n } else {\n // Fallback: set as CSS property using the original name if no handler exists\n this.setStyleProperty(element, fallbackName, value);\n }\n return;\n }\n\n if (handler) {\n if (this.isEventApplicator(handlerName)) {\n const normalizedValue = this.normalizeEventValue(previous, value);\n state.set(handlerName, normalizedValue);\n handler(element, normalizedValue);\n } else {\n state.set(handlerName, value);\n handler(element, value);\n }\n } else {\n // Fallback: set as CSS property\n this.setStyleProperty(element, handlerName, value);\n }\n }\n\n /**\n * Parse applicator name to handle indexed and event argument formats\n * e.g., \"fontSize.0\" -> { handlerName: \"fontSize\" }\n * \"onClick.id\" -> { handlerName: \"onClick\", aggregate: true, argKey: \"id\" }\n * Keeps compound names like \"padding.top\" as-is so they can fall back to CSS.\n */\n private parseApplicatorName(name: string): {\n handlerName: string;\n argKey: string | null;\n aggregate: boolean;\n fallbackName: string;\n } {\n const dotIndex = name.indexOf('.');\n if (dotIndex === -1) {\n return { handlerName: name, argKey: null, aggregate: false, fallbackName: name };\n }\n\n const baseName = name.substring(0, dotIndex);\n const argKey = name.substring(dotIndex + 1);\n\n if (this.handlers.has(baseName) && this.isEventApplicator(baseName)) {\n return { handlerName: baseName, argKey, aggregate: true, fallbackName: name };\n }\n\n if (/^\\d+$/.test(argKey)) {\n return { handlerName: baseName, argKey: null, aggregate: false, fallbackName: baseName };\n }\n\n return { handlerName: name, argKey: null, aggregate: false, fallbackName: name };\n }\n\n /**\n * Get or initialize per-element applicator state used for merging event payloads\n */\n private getElementState(element: HTMLElement): Map<string, any> {\n let state = this.elementState.get(element);\n if (!state) {\n state = new Map();\n this.elementState.set(element, state);\n }\n return state;\n }\n\n /**\n * Merge updated event argument into previously stored payload snapshot\n */\n private mergeAggregateState(previous: any, argKey: string, value: any): Record<string, any> {\n const base: Record<string, any> = this.cloneAggregateState(previous);\n\n if (value === undefined) {\n delete base[argKey];\n } else {\n base[argKey] = value;\n }\n\n return base;\n }\n\n /**\n * Convert stored state into a mutable payload object we can merge into\n */\n private cloneAggregateState(previous: any): Record<string, any> {\n if (previous && typeof previous === \"object\" && !Array.isArray(previous)) {\n return { ...previous };\n }\n\n if (typeof previous === \"string\") {\n return { \"0\": previous };\n }\n\n return {};\n }\n\n /**\n * Normalize event value updates so action payload arguments persist across SetProp orderings\n */\n private normalizeEventValue(previous: any, value: any): Record<string, any> {\n const normalizedInput = this.normalizeValue(value);\n const base = this.cloneAggregateState(previous);\n\n if (normalizedInput && typeof normalizedInput === \"object\" && !Array.isArray(normalizedInput)) {\n const next = { ...base, ...normalizedInput } as Record<string, any>;\n\n if (!Object.prototype.hasOwnProperty.call(next, \"0\") && base[\"0\"] !== undefined) {\n next[\"0\"] = base[\"0\"];\n }\n\n return next;\n }\n\n if (normalizedInput !== undefined) {\n base[\"0\"] = normalizedInput;\n }\n\n return base;\n }\n\n /**\n * Convert Maps (from WASM) and nested structures into plain JS values we can merge safely\n */\n private normalizeValue(value: any): any {\n if (value instanceof Map) {\n const obj: Record<string, any> = {};\n for (const [key, val] of value.entries()) {\n obj[key] = this.normalizeValue(val);\n }\n return obj;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.normalizeValue(item));\n }\n\n if (value && typeof value === \"object\") {\n const obj: Record<string, any> = {};\n for (const [key, val] of Object.entries(value)) {\n obj[key] = this.normalizeValue(val);\n }\n return obj;\n }\n\n return value;\n }\n\n /**\n * Determine if a handler name follows the event applicator naming convention\n */\n private isEventApplicator(name: string): boolean {\n return /^on[A-Z]/.test(name);\n }\n\n /**\n * Apply multiple applicators\n */\n applyAll(element: HTMLElement, applicators: Record<string, any>): void {\n //console.log(`[ApplicatorRegistry] Applying applicators:`, applicators);\n\n // Group applicators by their base name (treat applicators like components with arguments)\n // e.g., \"onClick.0\", \"onClick.id\", \"onClick.title\" -> onClick: {0: ..., id: ..., title: ...}\n const grouped = new Map<string, Record<string, any>>();\n\n for (const [name, value] of Object.entries(applicators)) {\n // Extract base name and argument key\n const dotIndex = name.indexOf('.');\n const baseName = dotIndex !== -1 ? name.substring(0, dotIndex) : name;\n const argKey = dotIndex !== -1 ? name.substring(dotIndex + 1) : null;\n\n if (!grouped.has(baseName)) {\n grouped.set(baseName, {});\n }\n\n const args = grouped.get(baseName)!;\n if (argKey !== null) {\n // This is an argument (e.g., \"onClick.0\" or \"onClick.id\")\n args[argKey] = value;\n } else {\n // This is a single-value applicator (e.g., \"padding\")\n args['__value'] = value;\n }\n }\n\n // Apply each applicator with its arguments\n for (const [baseName, args] of grouped.entries()) {\n // If it's a single value (either __value or just \"0\"), pass just the value\n if (Object.keys(args).length === 1) {\n if ('__value' in args) {\n this.apply(element, baseName, args['__value']);\n } else if ('0' in args) {\n // Single positional argument (e.g., padding.0 -> just pass the value)\n this.apply(element, baseName, args['0']);\n } else {\n // Single named argument? Pass the whole object\n this.apply(element, baseName, args);\n }\n } else {\n // Multiple arguments - pass the entire args object\n this.apply(element, baseName, args);\n }\n }\n }\n\n /**\n * Set a CSS property with automatic unit handling and variant support\n */\n private setStyleProperty(element: HTMLElement, name: string, value: any): void {\n const atIndex = name.indexOf('@');\n const colonIndex = name.indexOf(':');\n\n // Responsive variant: padding@md, width@lg, etc.\n if (atIndex !== -1) {\n const prop = name.slice(0, atIndex);\n const breakpoint = name.slice(atIndex + 1);\n const minWidth = BREAKPOINTS[breakpoint];\n\n if (minWidth) {\n const cssName = this.toKebabCase(prop);\n const cssValue = this.formatCssValue(cssName, value);\n const className = `hypen-${cssName.replace(/[^a-zA-Z0-9-]/g, '')}-${breakpoint}-${hashValue(value)}`;\n const ruleKey = `${className}:${cssValue}`;\n\n // Avoid duplicate rule insertion\n if (!insertedRules.has(ruleKey)) {\n const sheet = getVariantStyleSheet();\n sheet.insertRule(\n `@media (min-width: ${minWidth}) { .${className} { ${cssName}: ${cssValue}; } }`,\n sheet.cssRules.length\n );\n insertedRules.add(ruleKey);\n }\n\n element.classList.add(className);\n }\n return;\n }\n\n // State variant: background-color:hover, border-color:focus, etc.\n if (colonIndex !== -1) {\n const prop = name.slice(0, colonIndex);\n const state = name.slice(colonIndex + 1);\n\n // Only handle known CSS pseudo-states\n const validStates = ['hover', 'focus', 'active', 'disabled', 'focus-visible', 'focus-within'];\n if (validStates.includes(state)) {\n const cssName = this.toKebabCase(prop);\n const cssValue = this.formatCssValue(cssName, value);\n const className = `hypen-${cssName.replace(/[^a-zA-Z0-9-]/g, '')}-${state}-${hashValue(value)}`;\n const ruleKey = `${className}:${cssValue}`;\n\n // Avoid duplicate rule insertion\n if (!insertedRules.has(ruleKey)) {\n const sheet = getVariantStyleSheet();\n sheet.insertRule(\n `.${className}:${state} { ${cssName}: ${cssValue}; }`,\n sheet.cssRules.length\n );\n insertedRules.add(ruleKey);\n }\n\n element.classList.add(className);\n }\n return;\n }\n\n // Normal property: convert camelCase to kebab-case and apply\n const cssName = this.toKebabCase(name);\n element.style.setProperty(cssName, this.formatCssValue(cssName, value));\n }\n\n /**\n * Convert camelCase to kebab-case\n */\n private toKebabCase(name: string): string {\n return name.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n }\n\n /**\n * Format a CSS value with automatic unit handling\n */\n private formatCssValue(cssName: string, value: any): string {\n if (typeof value === \"number\" && this.needsUnit(cssName)) {\n return `${value}px`;\n }\n return String(value);\n }\n\n /**\n * Check if a property needs a unit\n */\n private needsUnit(prop: string): boolean {\n const unitless = [\n \"opacity\",\n \"z-index\",\n \"font-weight\",\n \"line-height\",\n \"flex\",\n \"flex-grow\",\n \"flex-shrink\",\n \"order\",\n ];\n return !unitless.includes(prop);\n }\n\n /**\n * Register default applicator handlers\n * Uses statically imported handlers (defined at top of file) to avoid circular dependencies\n */\n private registerDefaults(): void {\n this.register(\"padding\", paddingHandler);\n this.register(\"paddingTop\", paddingTopHandler);\n this.register(\"paddingBottom\", paddingBottomHandler);\n this.register(\"paddingLeft\", paddingLeftHandler);\n this.register(\"paddingRight\", paddingRightHandler);\n this.register(\"paddingHorizontal\", paddingHorizontalHandler);\n this.register(\"paddingVertical\", paddingVerticalHandler);\n this.register(\"margin\", marginHandler);\n this.register(\"marginTop\", marginTopHandler);\n this.register(\"marginBottom\", marginBottomHandler);\n this.register(\"marginLeft\", marginLeftHandler);\n this.register(\"marginRight\", marginRightHandler);\n this.register(\"marginHorizontal\", marginHorizontalHandler);\n this.register(\"marginVertical\", marginVerticalHandler);\n\n for (const [name, handler] of Object.entries(colorHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(borderHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(sizeHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(fontHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(layoutHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(eventHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(typographyHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(transformHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(effectsHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(advancedLayoutHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(backgroundHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(displayHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n\n for (const [name, handler] of Object.entries(transitionHandlers)) {\n this.register(name, handler as ApplicatorHandler);\n }\n }\n}\n",
54
54
  "/**\n * Canvas Component with Applicators\n *\n * Special handling for canvas rendering\n */\n\nimport type { ComponentHandler } from \"../components/index.js\";\nimport type { ApplicatorHandler } from \"../applicators/index.js\";\n\nexport const canvasHandler: ComponentHandler = {\n create(): HTMLElement {\n const el = document.createElement(\"canvas\");\n el.dataset.hypenType = \"canvas\";\n return el as any as HTMLElement;\n },\n\n applyProps(el: HTMLElement, props: Record<string, any>): void {\n const canvas = el as HTMLCanvasElement;\n\n if (props.width !== undefined) {\n canvas.width = Number(props.width);\n }\n\n if (props.height !== undefined) {\n canvas.height = Number(props.height);\n }\n },\n};\n\n/**\n * Canvas applicators - special drawing commands\n */\nexport const canvasApplicators: Record<string, ApplicatorHandler> = {\n // Fill style\n fillStyle: (el, value) => {\n const canvas = el as HTMLCanvasElement;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n ctx.fillStyle = String(value);\n }\n },\n\n // Stroke style\n strokeStyle: (el, value) => {\n const canvas = el as HTMLCanvasElement;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n ctx.strokeStyle = String(value);\n }\n },\n\n // Line width\n lineWidth: (el, value) => {\n const canvas = el as HTMLCanvasElement;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n ctx.lineWidth = Number(value);\n }\n },\n};\n",
55
55
  "/**\n * Debug utilities for DOM rendering visualization\n *\n * Provides heatmap overlays to visualize re-renders\n */\n\nimport { frameworkLoggers } from \"@hypen-space/core\";\n\nconst log = frameworkLoggers.debug;\n\nexport interface DebugConfig {\n /** Enable debug mode */\n enabled: boolean;\n /** Show heatmap overlays on re-renders */\n showHeatmap: boolean;\n /** Increment per re-render (default: 5%) */\n heatmapIncrement: number;\n /** Maximum opacity for heatmap (default: 0.8) */\n maxOpacity: number;\n /** Fade out duration in ms (0 to disable) */\n fadeOutDuration: number;\n}\n\nexport const defaultDebugConfig: DebugConfig = {\n enabled: false,\n showHeatmap: true,\n heatmapIncrement: 5,\n maxOpacity: 0.8,\n fadeOutDuration: 2000,\n};\n\n/**\n * Tracks re-render counts for each element\n */\nexport class RerenderTracker {\n private renderCounts = new Map<string, number>();\n private overlays = new Map<string, HTMLDivElement>();\n private config: DebugConfig;\n\n constructor(config: DebugConfig = defaultDebugConfig) {\n this.config = config;\n }\n\n /**\n * Update the configuration\n */\n setConfig(config: Partial<DebugConfig>): void {\n this.config = { ...this.config, ...config };\n\n // If debug mode is disabled, clean up all overlays\n if (!this.config.enabled) {\n this.cleanup();\n }\n }\n\n /**\n * Track a re-render for an element\n */\n trackRerender(id: string, element: HTMLElement, patchType: string): void {\n if (!this.config.enabled || !this.config.showHeatmap) {\n return;\n }\n\n log.debug(`Tracking re-render: ${id} - ${patchType}`);\n\n // Increment render count\n const currentCount = this.renderCounts.get(id) || 0;\n const newCount = currentCount + 1;\n this.renderCounts.set(id, newCount);\n\n // Create or update heatmap overlay\n this.updateHeatmap(id, element, newCount, patchType);\n }\n\n /**\n * Create or update the heatmap overlay for an element\n */\n private updateHeatmap(id: string, element: HTMLElement, renderCount: number, patchType: string): void {\n // Calculate opacity based on render count (increment by heatmapIncrement% each time)\n const opacity = Math.min(\n (renderCount * this.config.heatmapIncrement) / 100,\n this.config.maxOpacity\n );\n\n log.debug(`Updating heatmap for ${id}, count: ${renderCount}, opacity: ${opacity}`);\n\n // For inline elements or text, use a simpler approach: background color + outline\n const isInline = window.getComputedStyle(element).display.includes('inline');\n\n if (isInline || element.tagName === 'SPAN') {\n // Store original styles if not already stored\n if (!element.dataset.hypenDebugOriginalBg) {\n element.dataset.hypenDebugOriginalBg = element.style.backgroundColor || '';\n element.dataset.hypenDebugOriginalOutline = element.style.outline || '';\n element.dataset.hypenDebugOriginalPosition = element.style.position || '';\n }\n\n // Apply red background and outline directly to the element\n element.style.backgroundColor = `rgba(255, 0, 0, ${Math.max(opacity, 0.15)})`;\n element.style.outline = `2px solid rgba(255, 0, 0, ${Math.max(opacity + 0.2, 0.3)})`;\n element.style.outlineOffset = '2px';\n element.style.position = 'relative';\n\n // Add count badge as ::before pseudo-element or data attribute\n element.setAttribute('data-hypen-renders', `${renderCount}× ${patchType}`);\n\n // Add CSS for the badge if not already added\n if (!document.getElementById('hypen-debug-styles')) {\n const style = document.createElement('style');\n style.id = 'hypen-debug-styles';\n style.textContent = `\n [data-hypen-renders]::before {\n content: attr(data-hypen-renders);\n position: absolute;\n top: -18px;\n left: 0;\n background: rgba(255, 0, 0, 0.9);\n color: white;\n padding: 2px 6px;\n font-size: 10px;\n font-family: 'Courier New', monospace;\n font-weight: bold;\n border-radius: 3px;\n z-index: 999999;\n pointer-events: none;\n white-space: nowrap;\n text-shadow: none;\n }\n `;\n document.head.appendChild(style);\n }\n\n // Store in overlays map for cleanup\n this.overlays.set(id, element as any);\n\n // Fade out after duration if enabled\n if (this.config.fadeOutDuration > 0) {\n setTimeout(() => {\n const originalBg = element.dataset.hypenDebugOriginalBg || '';\n const originalOutline = element.dataset.hypenDebugOriginalOutline || '';\n element.style.backgroundColor = originalBg;\n element.style.outline = originalOutline;\n element.style.opacity = '1';\n }, this.config.fadeOutDuration);\n }\n } else {\n // For block elements, use overlay approach\n let overlay = this.overlays.get(id);\n\n if (!overlay) {\n overlay = document.createElement(\"div\");\n overlay.className = \"hypen-debug-overlay\";\n overlay.style.cssText = `\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n z-index: 999999 !important;\n transition: opacity ${this.config.fadeOutDuration}ms ease-out;\n border: 2px solid rgba(255, 0, 0, 0.7) !important;\n box-sizing: border-box;\n font-size: 11px;\n color: white;\n text-shadow: 0 0 3px black, 0 0 5px black;\n padding: 4px;\n font-family: 'Courier New', monospace;\n font-weight: bold;\n display: block !important;\n visibility: visible !important;\n `;\n\n const currentPosition = window.getComputedStyle(element).position;\n if (currentPosition === 'static') {\n element.style.position = 'relative';\n }\n\n element.appendChild(overlay);\n this.overlays.set(id, overlay);\n }\n\n overlay.style.backgroundColor = `rgba(255, 0, 0, ${Math.max(opacity, 0.15)})`;\n overlay.style.opacity = '1';\n overlay.textContent = `${renderCount}× ${patchType}`;\n\n if (this.config.fadeOutDuration > 0) {\n setTimeout(() => {\n if (overlay) {\n overlay.style.opacity = '0.2';\n }\n }, this.config.fadeOutDuration);\n }\n }\n }\n\n /**\n * Reset tracking for a specific element\n */\n reset(id: string): void {\n this.renderCounts.delete(id);\n const overlay = this.overlays.get(id);\n if (overlay) {\n overlay.remove();\n this.overlays.delete(id);\n }\n }\n\n /**\n * Reset tracking for all elements\n */\n resetAll(): void {\n this.renderCounts.clear();\n for (const overlay of this.overlays.values()) {\n overlay.remove();\n }\n this.overlays.clear();\n }\n\n /**\n * Get render count for an element\n */\n getRenderCount(id: string): number {\n return this.renderCounts.get(id) || 0;\n }\n\n /**\n * Clean up all overlays (called when debug mode is disabled)\n */\n private cleanup(): void {\n for (const overlay of this.overlays.values()) {\n overlay.remove();\n }\n this.overlays.clear();\n }\n\n /**\n * Get statistics about re-renders\n */\n getStats(): { totalRerenders: number; elementCount: number; avgRerenders: number } {\n const totalRerenders = Array.from(this.renderCounts.values()).reduce((sum, count) => sum + count, 0);\n const elementCount = this.renderCounts.size;\n const avgRerenders = elementCount > 0 ? totalRerenders / elementCount : 0;\n\n return {\n totalRerenders,\n elementCount,\n avgRerenders: Math.round(avgRerenders * 100) / 100,\n };\n }\n}\n",
56
- "/**\n * DOM Renderer\n *\n * Renders Hypen patches to the DOM\n */\n\nimport type { Patch } from \"@hypen-space/core\";\nimport type { HypenModuleInstance, RouterContext } from \"@hypen-space/core\";\nimport type { HypenRouter } from \"@hypen-space/core\";\nimport type { HypenGlobalContext } from \"@hypen-space/core\";\nimport { frameworkLoggers } from \"@hypen-space/core\";\n\nconst log = frameworkLoggers.renderer;\nimport { ComponentRegistry } from \"./components/index.js\";\nimport { ApplicatorRegistry } from \"./applicators/index.js\";\nimport { canvasHandler, canvasApplicators } from \"./canvas/index.js\";\nimport { RerenderTracker, type DebugConfig, defaultDebugConfig } from \"./debug.js\";\nimport { setEngine } from \"./element-data.js\";\n\n// Interface for the engine that renderer needs\ninterface IEngine {\n dispatchAction(name: string, payload?: any): void;\n}\n\nexport class DOMRenderer {\n private container: HTMLElement;\n private nodes: Map<string, HTMLElement> = new Map();\n private rootId: string | null = null;\n private components: ComponentRegistry;\n private applicators: ApplicatorRegistry;\n private engine: IEngine;\n private currentState: Record<string, any> = {};\n private routerContext: RouterContext | null = null;\n private globalContext: HypenGlobalContext | null = null;\n private componentInstances = new Map<string, HypenModuleInstance>();\n private debugTracker: RerenderTracker;\n\n constructor(container: HTMLElement, engine: IEngine, debugConfig?: Partial<DebugConfig>) {\n this.container = container;\n this.engine = engine;\n this.components = new ComponentRegistry();\n this.applicators = new ApplicatorRegistry();\n this.debugTracker = new RerenderTracker({ ...defaultDebugConfig, ...debugConfig });\n\n // Register canvas component and applicators\n this.components.register(\"canvas\", canvasHandler);\n for (const [name, handler] of Object.entries(canvasApplicators)) {\n this.applicators.register(name, handler);\n }\n }\n\n /**\n * Set router and global context for component composition\n */\n setContext(routerContext: RouterContext, globalContext: HypenGlobalContext): void {\n this.routerContext = routerContext;\n this.globalContext = globalContext;\n }\n\n /**\n * Apply a batch of patches to the DOM\n */\n applyPatches(patches: Patch[]): void {\n for (const patch of patches) {\n this.applyPatch(patch);\n }\n }\n\n /**\n * Update state and interpolate text content\n */\n updateState(state: Record<string, any>): void {\n log.debug(\"Updating state:\", state);\n this.currentState = state;\n this.interpolateAllText();\n }\n\n /**\n * Merge component state into current state and re-interpolate\n */\n private mergeComponentState(componentState: Record<string, any>): void {\n this.currentState = { ...this.currentState, ...componentState };\n log.debug(\"Merged state:\", this.currentState);\n this.interpolateAllText();\n }\n\n /**\n * Interpolate state values in all text elements\n */\n private interpolateAllText(): void {\n for (const [id, element] of this.nodes.entries()) {\n if (element.dataset.hypenType === \"text\" && element.dataset.textTemplate) {\n const template = element.dataset.textTemplate;\n const interpolated = this.interpolateText(template, this.currentState);\n\n // Track re-render if text actually changed\n const currentText = element.textContent;\n if (currentText !== interpolated) {\n this.debugTracker.trackRerender(id, element, \"interpolate\");\n }\n\n element.textContent = interpolated;\n }\n }\n }\n\n /**\n * Interpolate state values in text template\n */\n private interpolateText(template: string, state: Record<string, any>): string {\n return template.replace(/\\$\\{([^}]+)\\}/g, (match, path) => {\n try {\n const value = path.split('.').reduce((obj: any, key: string) => {\n if (key === 'state') return state;\n return obj?.[key];\n }, state);\n return value !== undefined ? String(value) : match;\n } catch {\n return match;\n }\n });\n }\n\n /**\n * Apply a single patch\n */\n private applyPatch(patch: Patch): void {\n switch (patch.type) {\n case \"create\":\n this.onCreate(patch.id!, patch.elementType!, patch.props || {});\n break;\n case \"setProp\":\n this.onSetProp(patch.id!, patch.name!, patch.value);\n break;\n case \"setText\":\n this.onSetText(patch.id!, patch.text!);\n break;\n case \"insert\":\n this.onInsert(patch.parentId!, patch.id!, patch.beforeId);\n break;\n case \"move\":\n this.onMove(patch.parentId!, patch.id!, patch.beforeId);\n break;\n case \"remove\":\n this.onRemove(patch.id!);\n break;\n }\n }\n\n /**\n * Create a new element\n */\n private onCreate(id: string, elementType: string, props: Record<string, any> | Map<string, any>): void {\n const propsObj = props instanceof Map ? Object.fromEntries(props) : props;\n\n let element = this.components.createElement(elementType, propsObj);\n\n if (!element) {\n // For unknown component types, create a transparent container (div).\n // This handles module wrappers (like \"App\") and custom components\n // that aren't registered but should act as layout containers.\n const fallback = document.createElement(\"div\");\n fallback.dataset.hypenType = elementType.toLowerCase();\n fallback.style.display = \"contents\"; // Make container transparent in layout\n element = fallback;\n log.debug(`Unknown component \"${elementType}\" - using transparent container`);\n }\n\n element.dataset.hypenType = elementType.toLowerCase();\n element.dataset.hypenId = id;\n setEngine(element, this.engine);\n\n this.applicators.applyAll(element, propsObj);\n this.nodes.set(id, element);\n this.debugTracker.trackRerender(id, element, `create:${elementType}`);\n\n if (!this.rootId) {\n this.rootId = id;\n if (!this.container.contains(element)) {\n this.container.appendChild(element);\n }\n }\n }\n\n /**\n * Set a property on an element\n */\n private onSetProp(id: string, name: string, value: any): void {\n const element = this.nodes.get(id);\n if (!element) return;\n\n this.debugTracker.trackRerender(id, element, `setProp:${name}`);\n\n if (name === \"0\" || name === \"text\") {\n const elementType = element.dataset.hypenType;\n\n if (elementType === \"input\") {\n const inputEl = element as HTMLInputElement;\n inputEl.value = String(value);\n log.debug(`Updated input value: \"${value}\"`);\n return;\n }\n\n const nextText = String(value);\n element.textContent = nextText;\n\n // Preserve the original template when it contains state interpolation.\n // Engine patches may send interpolated strings; if we overwrite the template,\n // future state updates won't be able to re-interpolate.\n const currentTemplate = element.dataset.textTemplate;\n const nextLooksLikeTemplate = nextText.includes(\"${\");\n const currentLooksLikeTemplate = typeof currentTemplate === \"string\" && currentTemplate.includes(\"${\");\n\n if (nextLooksLikeTemplate) {\n element.dataset.textTemplate = nextText;\n } else if (currentTemplate === undefined) {\n // No template stored yet; treat this as the template.\n element.dataset.textTemplate = nextText;\n } else if (!currentLooksLikeTemplate) {\n // If current template isn't a template, keep it in sync.\n element.dataset.textTemplate = nextText;\n }\n log.debug(`Updated text content: \"${value}\"`);\n return;\n }\n\n this.applicators.apply(element, name, value);\n }\n\n /**\n * Set text content\n */\n private onSetText(id: string, text: string): void {\n const element = this.nodes.get(id);\n if (!element) return;\n\n this.debugTracker.trackRerender(id, element, \"setText\");\n element.textContent = text;\n }\n\n /**\n * Insert an element into the tree\n */\n private onInsert(parentId: string, id: string, beforeId?: string): void {\n const parent = parentId === \"root\" ? this.container : this.nodes.get(parentId);\n const child = this.nodes.get(id);\n\n log.debug(`Inserting ${id} into ${parentId}`, {\n parent: parent ? `${parent.tagName}#${parent.id || 'no-id'}` : 'null',\n child: child ? `${child.tagName}#${child.id || 'no-id'}` : 'null',\n childText: child?.textContent?.substring(0, 20)\n });\n\n if (!parent || !child) return;\n\n if (parentId === \"root\") {\n this.rootId = id;\n }\n\n if (beforeId) {\n const before = this.nodes.get(beforeId);\n if (before && before.parentNode === parent) {\n parent.insertBefore(child, before);\n } else if (!parent.contains(child)) {\n parent.appendChild(child);\n }\n } else {\n if (!parent.contains(child)) {\n parent.appendChild(child);\n }\n }\n }\n\n /**\n * Move an element within the tree\n */\n private onMove(parentId: string, id: string, beforeId?: string): void {\n this.onInsert(parentId, id, beforeId);\n }\n\n /**\n * Remove an element from the tree\n */\n private onRemove(id: string): void {\n const element = this.nodes.get(id);\n if (!element) return;\n\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n\n this.nodes.delete(id);\n\n if (this.rootId === id) {\n this.rootId = null;\n }\n }\n\n /**\n * Get an element by ID\n */\n getNode(id: string): HTMLElement | undefined {\n return this.nodes.get(id);\n }\n\n /**\n * Clear all nodes\n */\n clear(): void {\n this.container.innerHTML = \"\";\n this.nodes.clear();\n this.rootId = null;\n }\n\n /**\n * Get the component registry (for registering custom components)\n */\n getComponentRegistry(): ComponentRegistry {\n return this.components;\n }\n\n /**\n * Get the applicator registry (for registering custom applicators)\n */\n getApplicatorRegistry(): ApplicatorRegistry {\n return this.applicators;\n }\n\n /**\n * Enable or configure debug mode\n */\n setDebugConfig(config: Partial<DebugConfig>): void {\n this.debugTracker.setConfig(config);\n }\n\n /**\n * Reset debug tracking for all elements\n */\n resetDebugTracking(): void {\n this.debugTracker.resetAll();\n }\n\n /**\n * Get debug statistics\n */\n getDebugStats(): { totalRerenders: number; elementCount: number; avgRerenders: number } {\n return this.debugTracker.getStats();\n }\n}\n"
56
+ "/**\n * DOM Renderer\n *\n * Renders Hypen patches to the DOM\n */\n\nimport type { Patch } from \"@hypen-space/core/types\";\nimport type { HypenModuleInstance, RouterContext } from \"@hypen-space/core/app\";\nimport type { HypenRouter } from \"@hypen-space/core/router\";\nimport type { HypenGlobalContext } from \"@hypen-space/core/context\";\nimport { frameworkLoggers } from \"@hypen-space/core\";\n\nconst log = frameworkLoggers.renderer;\nimport { ComponentRegistry } from \"./components/index.js\";\nimport { ApplicatorRegistry } from \"./applicators/index.js\";\nimport { canvasHandler, canvasApplicators } from \"./canvas/index.js\";\nimport { RerenderTracker, type DebugConfig, defaultDebugConfig } from \"./debug.js\";\nimport { setEngine } from \"./element-data.js\";\n\n// Interface for the engine that renderer needs\ninterface IEngine {\n dispatchAction(name: string, payload?: any): void;\n}\n\nexport class DOMRenderer {\n private container: HTMLElement;\n private nodes: Map<string, HTMLElement> = new Map();\n private rootId: string | null = null;\n private components: ComponentRegistry;\n private applicators: ApplicatorRegistry;\n private engine: IEngine;\n private currentState: Record<string, any> = {};\n private routerContext: RouterContext | null = null;\n private globalContext: HypenGlobalContext | null = null;\n private componentInstances = new Map<string, HypenModuleInstance>();\n private debugTracker: RerenderTracker;\n\n constructor(container: HTMLElement, engine: IEngine, debugConfig?: Partial<DebugConfig>) {\n this.container = container;\n this.engine = engine;\n this.components = new ComponentRegistry();\n this.applicators = new ApplicatorRegistry();\n this.debugTracker = new RerenderTracker({ ...defaultDebugConfig, ...debugConfig });\n\n // Register canvas component and applicators\n this.components.register(\"canvas\", canvasHandler);\n for (const [name, handler] of Object.entries(canvasApplicators)) {\n this.applicators.register(name, handler);\n }\n }\n\n /**\n * Set router and global context for component composition\n */\n setContext(routerContext: RouterContext, globalContext: HypenGlobalContext): void {\n this.routerContext = routerContext;\n this.globalContext = globalContext;\n }\n\n /**\n * Apply a batch of patches to the DOM\n */\n applyPatches(patches: Patch[]): void {\n for (const patch of patches) {\n this.applyPatch(patch);\n }\n }\n\n /**\n * Update state and interpolate text content\n */\n updateState(state: Record<string, any>): void {\n log.debug(\"Updating state:\", state);\n this.currentState = state;\n this.interpolateAllText();\n }\n\n /**\n * Merge component state into current state and re-interpolate\n */\n private mergeComponentState(componentState: Record<string, any>): void {\n this.currentState = { ...this.currentState, ...componentState };\n log.debug(\"Merged state:\", this.currentState);\n this.interpolateAllText();\n }\n\n /**\n * Interpolate state values in all text elements\n */\n private interpolateAllText(): void {\n for (const [id, element] of this.nodes.entries()) {\n if (element.dataset.hypenType === \"text\" && element.dataset.textTemplate) {\n const template = element.dataset.textTemplate;\n const interpolated = this.interpolateText(template, this.currentState);\n\n // Track re-render if text actually changed\n const currentText = element.textContent;\n if (currentText !== interpolated) {\n this.debugTracker.trackRerender(id, element, \"interpolate\");\n }\n\n element.textContent = interpolated;\n }\n }\n }\n\n /**\n * Interpolate state values in text template\n */\n private interpolateText(template: string, state: Record<string, any>): string {\n return template.replace(/\\$\\{([^}]+)\\}/g, (match, path) => {\n try {\n const value = path.split('.').reduce((obj: any, key: string) => {\n if (key === 'state') return state;\n return obj?.[key];\n }, state);\n return value !== undefined ? String(value) : match;\n } catch {\n return match;\n }\n });\n }\n\n /**\n * Apply a single patch\n */\n private applyPatch(patch: Patch): void {\n switch (patch.type) {\n case \"create\":\n this.onCreate(patch.id!, patch.elementType!, patch.props || {});\n break;\n case \"setProp\":\n this.onSetProp(patch.id!, patch.name!, patch.value);\n break;\n case \"setText\":\n this.onSetText(patch.id!, patch.text!);\n break;\n case \"insert\":\n this.onInsert(patch.parentId!, patch.id!, patch.beforeId);\n break;\n case \"move\":\n this.onMove(patch.parentId!, patch.id!, patch.beforeId);\n break;\n case \"remove\":\n this.onRemove(patch.id!);\n break;\n }\n }\n\n /**\n * Create a new element\n */\n private onCreate(id: string, elementType: string, props: Record<string, any> | Map<string, any>): void {\n const propsObj = props instanceof Map ? Object.fromEntries(props) : props;\n\n let element = this.components.createElement(elementType, propsObj);\n\n if (!element) {\n // For unknown component types, create a transparent container (div).\n // This handles module wrappers (like \"App\") and custom components\n // that aren't registered but should act as layout containers.\n const fallback = document.createElement(\"div\");\n fallback.dataset.hypenType = elementType.toLowerCase();\n fallback.style.display = \"contents\"; // Make container transparent in layout\n element = fallback;\n log.debug(`Unknown component \"${elementType}\" - using transparent container`);\n }\n\n element.dataset.hypenType = elementType.toLowerCase();\n element.dataset.hypenId = id;\n setEngine(element, this.engine);\n\n this.applicators.applyAll(element, propsObj);\n this.nodes.set(id, element);\n this.debugTracker.trackRerender(id, element, `create:${elementType}`);\n\n if (!this.rootId) {\n this.rootId = id;\n if (!this.container.contains(element)) {\n this.container.appendChild(element);\n }\n }\n }\n\n /**\n * Set a property on an element\n */\n private onSetProp(id: string, name: string, value: any): void {\n const element = this.nodes.get(id);\n if (!element) return;\n\n this.debugTracker.trackRerender(id, element, `setProp:${name}`);\n\n if (name === \"0\" || name === \"text\") {\n const elementType = element.dataset.hypenType;\n\n if (elementType === \"input\") {\n const inputEl = element as HTMLInputElement;\n inputEl.value = String(value);\n log.debug(`Updated input value: \"${value}\"`);\n return;\n }\n\n const nextText = String(value);\n element.textContent = nextText;\n\n // Preserve the original template when it contains state interpolation.\n // Engine patches may send interpolated strings; if we overwrite the template,\n // future state updates won't be able to re-interpolate.\n const currentTemplate = element.dataset.textTemplate;\n const nextLooksLikeTemplate = nextText.includes(\"${\");\n const currentLooksLikeTemplate = typeof currentTemplate === \"string\" && currentTemplate.includes(\"${\");\n\n if (nextLooksLikeTemplate) {\n element.dataset.textTemplate = nextText;\n } else if (currentTemplate === undefined) {\n // No template stored yet; treat this as the template.\n element.dataset.textTemplate = nextText;\n } else if (!currentLooksLikeTemplate) {\n // If current template isn't a template, keep it in sync.\n element.dataset.textTemplate = nextText;\n }\n log.debug(`Updated text content: \"${value}\"`);\n return;\n }\n\n this.applicators.apply(element, name, value);\n }\n\n /**\n * Set text content\n */\n private onSetText(id: string, text: string): void {\n const element = this.nodes.get(id);\n if (!element) return;\n\n this.debugTracker.trackRerender(id, element, \"setText\");\n element.textContent = text;\n }\n\n /**\n * Insert an element into the tree\n */\n private onInsert(parentId: string, id: string, beforeId?: string): void {\n const parent = parentId === \"root\" ? this.container : this.nodes.get(parentId);\n const child = this.nodes.get(id);\n\n log.debug(`Inserting ${id} into ${parentId}`, {\n parent: parent ? `${parent.tagName}#${parent.id || 'no-id'}` : 'null',\n child: child ? `${child.tagName}#${child.id || 'no-id'}` : 'null',\n childText: child?.textContent?.substring(0, 20)\n });\n\n if (!parent || !child) return;\n\n if (parentId === \"root\") {\n this.rootId = id;\n }\n\n if (beforeId) {\n const before = this.nodes.get(beforeId);\n if (before && before.parentNode === parent) {\n parent.insertBefore(child, before);\n } else if (!parent.contains(child)) {\n parent.appendChild(child);\n }\n } else {\n if (!parent.contains(child)) {\n parent.appendChild(child);\n }\n }\n }\n\n /**\n * Move an element within the tree\n */\n private onMove(parentId: string, id: string, beforeId?: string): void {\n this.onInsert(parentId, id, beforeId);\n }\n\n /**\n * Remove an element from the tree\n */\n private onRemove(id: string): void {\n const element = this.nodes.get(id);\n if (!element) return;\n\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n\n this.nodes.delete(id);\n\n if (this.rootId === id) {\n this.rootId = null;\n }\n }\n\n /**\n * Get an element by ID\n */\n getNode(id: string): HTMLElement | undefined {\n return this.nodes.get(id);\n }\n\n /**\n * Clear all nodes\n */\n clear(): void {\n this.container.innerHTML = \"\";\n this.nodes.clear();\n this.rootId = null;\n }\n\n /**\n * Get the component registry (for registering custom components)\n */\n getComponentRegistry(): ComponentRegistry {\n return this.components;\n }\n\n /**\n * Get the applicator registry (for registering custom applicators)\n */\n getApplicatorRegistry(): ApplicatorRegistry {\n return this.applicators;\n }\n\n /**\n * Enable or configure debug mode\n */\n setDebugConfig(config: Partial<DebugConfig>): void {\n this.debugTracker.setConfig(config);\n }\n\n /**\n * Reset debug tracking for all elements\n */\n resetDebugTracking(): void {\n this.debugTracker.resetAll();\n }\n\n /**\n * Get debug statistics\n */\n getDebugStats(): { totalRerenders: number; elementCount: number; avgRerenders: number } {\n return this.debugTracker.getStats();\n }\n}\n"
57
57
  ],
58
58
  "mappings": "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",
59
59
  "debugId": "2DB804639EB78B3764756E2164756E21",
package/dist/hypen.js CHANGED
@@ -3511,18 +3511,13 @@ class DOMRenderer {
3511
3511
  }
3512
3512
 
3513
3513
  // src/hypen.ts
3514
- import {
3515
- BrowserEngine as Engine,
3516
- HypenModuleInstance,
3517
- HypenRouter,
3518
- HypenGlobalContext,
3519
- componentLoader,
3520
- Router,
3521
- Route,
3522
- Link,
3523
- frameworkLoggers as frameworkLoggers6,
3524
- setDebugMode
3525
- } from "@hypen-space/core";
3514
+ import { Engine } from "@hypen-space/core/engine/browser";
3515
+ import { HypenModuleInstance } from "@hypen-space/core/app";
3516
+ import { HypenRouter } from "@hypen-space/core/router";
3517
+ import { HypenGlobalContext } from "@hypen-space/core/context";
3518
+ import { componentLoader } from "@hypen-space/core/loader";
3519
+ import { Router, Route, Link } from "@hypen-space/core/components";
3520
+ import { frameworkLoggers as frameworkLoggers6, setDebugMode } from "@hypen-space/core";
3526
3521
  var log6 = frameworkLoggers6.hypen;
3527
3522
 
3528
3523
  class Hypen {
@@ -3821,4 +3816,4 @@ export {
3821
3816
  Hypen
3822
3817
  };
3823
3818
 
3824
- //# debugId=800D8AED111973D264756E2164756E21
3819
+ //# debugId=08D4121802D226C564756E2164756E21