@hypen-space/web 0.3.0 → 0.3.2
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.
- package/dist/src/canvas/index.js.map +1 -1
- package/dist/src/canvas/renderer.js.map +1 -1
- package/dist/src/dom/applicators/events.js +3 -3
- package/dist/src/dom/applicators/events.js.map +3 -3
- package/dist/src/dom/applicators/index.js +3 -3
- package/dist/src/dom/applicators/index.js.map +3 -3
- package/dist/src/dom/element-data.js +2 -2
- package/dist/src/dom/element-data.js.map +2 -2
- package/dist/src/dom/index.js +3 -3
- package/dist/src/dom/index.js.map +4 -4
- package/dist/src/dom/renderer.js +3 -3
- package/dist/src/dom/renderer.js.map +4 -4
- package/dist/src/hypen.js +3 -3
- package/dist/src/hypen.js.map +4 -4
- package/dist/src/index.js +3 -3
- package/dist/src/index.js.map +6 -6
- package/package.json +2 -2
- package/src/canvas/QUICKSTART.md +3 -3
- package/src/canvas/README.md +2 -2
- package/src/canvas/renderer.ts +1 -1
- package/src/dom/README.md +4 -4
- package/src/dom/applicators/events.ts +1 -1
- package/src/dom/element-data.ts +1 -1
- package/src/dom/renderer.ts +4 -4
- package/src/index.ts +2 -2
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"/**\n * Event System\n *\n * Hit testing and event handling for canvas nodes\n */\n\nimport type { VirtualNode, Point } from \"./types.js\";\nimport { isPointInRoundedRect, getAbsoluteBounds } from \"./utils.js\";\n\n// Interface for the engine that CanvasEventManager needs\ninterface IEngine {\n dispatchAction(name: string, payload?: any): void;\n}\n\n/**\n * Canvas Event Manager\n */\nexport class CanvasEventManager {\n private canvas: HTMLCanvasElement;\n private engine: IEngine;\n private rootNode: VirtualNode | null = null;\n private hoveredNode: VirtualNode | null = null;\n private focusedNode: VirtualNode | null = null;\n private mouseDownNode: VirtualNode | null = null;\n\n constructor(canvas: HTMLCanvasElement, engine: IEngine) {\n this.canvas = canvas;\n this.engine = engine;\n this.setupEventListeners();\n }\n\n /**\n * Set the root node for hit testing\n */\n setRootNode(node: VirtualNode | null): void {\n this.rootNode = node;\n }\n\n /**\n * Setup canvas event listeners\n */\n private setupEventListeners(): void {\n this.canvas.addEventListener(\"mousemove\", this.onMouseMove.bind(this));\n this.canvas.addEventListener(\"mousedown\", this.onMouseDown.bind(this));\n this.canvas.addEventListener(\"mouseup\", this.onMouseUp.bind(this));\n this.canvas.addEventListener(\"click\", this.onClick.bind(this));\n this.canvas.addEventListener(\"dblclick\", this.onDoubleClick.bind(this));\n this.canvas.addEventListener(\"keydown\", this.onKeyDown.bind(this));\n this.canvas.addEventListener(\"keyup\", this.onKeyUp.bind(this));\n }\n\n /**\n * Get canvas coordinates from mouse event\n */\n private getCanvasCoordinates(e: MouseEvent): Point {\n const rect = this.canvas.getBoundingClientRect();\n const scaleX = this.canvas.width / rect.width;\n const scaleY = this.canvas.height / rect.height;\n\n return {\n x: (e.clientX - rect.left) * scaleX,\n y: (e.clientY - rect.top) * scaleY,\n };\n }\n\n /**\n * Find node at canvas coordinates\n */\n private hitTest(point: Point): VirtualNode | null {\n if (!this.rootNode) return null;\n return this.hitTestNode(this.rootNode, point);\n }\n\n /**\n * Recursively test node and children\n */\n private hitTestNode(node: VirtualNode, point: Point): VirtualNode | null {\n if (!node.visible || !node.layout) return null;\n\n const bounds = getAbsoluteBounds(node);\n if (!bounds) return null;\n\n // Test children first (front to back)\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const hit = this.hitTestNode(child, point);\n if (hit) return hit;\n }\n\n // Test this node\n const radius = node.layout.border.radius;\n if (isPointInRoundedRect(point, bounds, radius)) {\n return node;\n }\n\n return null;\n }\n\n /**\n * Handle mouse move\n */\n private onMouseMove(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n // Update hover state\n if (node !== this.hoveredNode) {\n // Leave old node\n if (this.hoveredNode) {\n this.hoveredNode.hovered = false;\n this.dispatchNodeEvent(this.hoveredNode, \"mouseleave\", {});\n }\n\n // Enter new node\n this.hoveredNode = node;\n if (node) {\n node.hovered = true;\n this.dispatchNodeEvent(node, \"mouseenter\", {});\n }\n\n // Update cursor\n this.updateCursor(node);\n\n // Request redraw for hover effects\n this.requestRedraw();\n }\n }\n\n /**\n * Handle mouse down\n */\n private onMouseDown(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n this.mouseDownNode = node;\n\n if (node && node.clickable) {\n this.dispatchNodeEvent(node, \"mousedown\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n\n // Update focus\n if (node && node.focusable) {\n this.setFocus(node);\n } else {\n this.setFocus(null);\n }\n }\n\n /**\n * Handle mouse up\n */\n private onMouseUp(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n if (node && node.clickable) {\n this.dispatchNodeEvent(node, \"mouseup\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n\n this.mouseDownNode = null;\n }\n\n /**\n * Handle click\n */\n private onClick(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n if (node && node.clickable && node === this.mouseDownNode) {\n this.dispatchNodeEvent(node, \"click\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n }\n\n /**\n * Handle double click\n */\n private onDoubleClick(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n if (node && node.clickable) {\n this.dispatchNodeEvent(node, \"dblclick\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n }\n\n /**\n * Handle keyboard events\n */\n private onKeyDown(e: KeyboardEvent): void {\n if (this.focusedNode) {\n this.dispatchNodeEvent(this.focusedNode, \"keydown\", {\n key: e.key,\n code: e.code,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n });\n }\n }\n\n private onKeyUp(e: KeyboardEvent): void {\n if (this.focusedNode) {\n this.dispatchNodeEvent(this.focusedNode, \"keyup\", {\n key: e.key,\n code: e.code,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n });\n }\n }\n\n /**\n * Set focused node\n */\n private setFocus(node: VirtualNode | null): void {\n if (node === this.focusedNode) return;\n\n if (this.focusedNode) {\n this.focusedNode.focused = false;\n this.dispatchNodeEvent(this.focusedNode, \"blur\", {});\n }\n\n this.focusedNode = node;\n\n if (node) {\n node.focused = true;\n this.dispatchNodeEvent(node, \"focus\", {});\n }\n\n this.requestRedraw();\n }\n\n /**\n * Update cursor based on node\n */\n private updateCursor(node: VirtualNode | null): void {\n if (!node) {\n this.canvas.style.cursor = \"default\";\n return;\n }\n\n const cursor = node.props.cursor || (node.clickable ? \"pointer\" : \"default\");\n this.canvas.style.cursor = cursor;\n }\n\n /**\n * Dispatch event to engine\n */\n private dispatchNodeEvent(node: VirtualNode, eventType: string, data: any): void {\n // Check if node has action handler for this event\n const actionName = node.props[`on${eventType}`] || node.props[eventType];\n\n if (actionName && typeof actionName === \"string\") {\n // Dispatch to engine\n this.engine.dispatchAction(actionName, {\n type: eventType,\n nodeId: node.id,\n timestamp: Date.now(),\n ...data,\n });\n }\n }\n\n /**\n * Request redraw from renderer\n */\n private requestRedraw(): void {\n // This will be called via a callback set by the renderer\n // For now, dispatch a custom event\n this.canvas.dispatchEvent(new CustomEvent(\"hypen:redraw\"));\n }\n\n /**\n * Cleanup\n */\n destroy(): void {\n // Remove event listeners if needed\n }\n}\n\n\n\n\n\n\n\n\n\n",
|
|
10
10
|
"/**\n * Input Overlay System\n *\n * Handle text input using DOM overlay elements\n */\n\nimport type { VirtualNode, Rectangle } from \"./types.js\";\nimport { getAbsoluteBounds } from \"./utils.js\";\n\n/**\n * Input Overlay Manager\n */\nexport class InputOverlay {\n private container: HTMLElement;\n private overlay: HTMLInputElement | HTMLTextAreaElement | null = null;\n private focusedNode: VirtualNode | null = null;\n private onChangeCallback: ((value: string) => void) | null = null;\n\n constructor(container: HTMLElement | null) {\n this.container = container || ({} as HTMLElement);\n }\n\n /**\n * Show input overlay for a node\n */\n showInput(\n node: VirtualNode,\n canvasBounds: DOMRect,\n onChange: (value: string) => void\n ): void {\n // Skip if document is not available (non-browser environment)\n if (typeof document === \"undefined\") return;\n\n this.hideInput();\n\n const bounds = getAbsoluteBounds(node);\n if (!bounds) return;\n\n const isMultiline = node.type === \"textarea\";\n this.overlay = isMultiline\n ? document.createElement(\"textarea\")\n : document.createElement(\"input\");\n\n // Style overlay\n this.styleOverlay(node, bounds, canvasBounds);\n\n // Set initial value\n const value = node.props.value || \"\";\n this.overlay.value = value;\n\n // Setup event handlers\n this.onChangeCallback = onChange;\n this.overlay.addEventListener(\"input\", this.onInput.bind(this));\n this.overlay.addEventListener(\"blur\", this.onBlur.bind(this));\n this.overlay.addEventListener(\"keydown\", this.onKeyDown.bind(this) as EventListener);\n\n // Add to DOM and focus\n this.container.appendChild(this.overlay);\n this.overlay.focus();\n\n this.focusedNode = node;\n }\n\n /**\n * Hide input overlay\n */\n hideInput(): void {\n if (this.overlay) {\n this.overlay.remove();\n this.overlay = null;\n }\n this.focusedNode = null;\n this.onChangeCallback = null;\n }\n\n /**\n * Update overlay position\n */\n updatePosition(node: VirtualNode, canvasBounds: DOMRect): void {\n if (!this.overlay || node !== this.focusedNode) return;\n\n const bounds = getAbsoluteBounds(node);\n if (!bounds) return;\n\n this.positionOverlay(bounds, canvasBounds);\n }\n\n /**\n * Style overlay to match canvas node\n */\n private styleOverlay(\n node: VirtualNode,\n bounds: Rectangle,\n canvasBounds: DOMRect\n ): void {\n if (!this.overlay) return;\n\n const props = node.props;\n\n // Position\n this.positionOverlay(bounds, canvasBounds);\n\n // Font and text styling\n const fontSize = parseFloat(props.fontSize) || 16;\n const fontWeight = props.fontWeight || \"normal\";\n const fontFamily = props.fontFamily || \"system-ui, sans-serif\";\n const color = props.color || \"#000000\";\n\n Object.assign(this.overlay.style, {\n fontSize: `${fontSize}px`,\n fontWeight: fontWeight,\n fontFamily: fontFamily,\n color: color,\n border: \"none\",\n outline: \"2px solid #007bff\",\n backgroundColor: props.backgroundColor || \"#ffffff\",\n padding: `${props.padding || 8}px`,\n borderRadius: `${props.borderRadius || 4}px`,\n boxSizing: \"border-box\",\n resize: \"none\",\n });\n\n // Placeholder\n if (props.placeholder) {\n this.overlay.placeholder = props.placeholder;\n }\n\n // Input type\n if (this.overlay instanceof HTMLInputElement && props.type) {\n this.overlay.type = props.type;\n }\n }\n\n /**\n * Position overlay over canvas node\n */\n private positionOverlay(bounds: Rectangle, canvasBounds: DOMRect): void {\n if (!this.overlay) return;\n\n // Calculate scale factor between canvas and display\n const canvas = this.container.querySelector(\"canvas\") as HTMLCanvasElement;\n const scaleX = canvasBounds.width / canvas.width;\n const scaleY = canvasBounds.height / canvas.height;\n\n const left = bounds.x * scaleX;\n const top = bounds.y * scaleY;\n const width = bounds.width * scaleX;\n const height = bounds.height * scaleY;\n\n Object.assign(this.overlay.style, {\n position: \"absolute\",\n left: `${left}px`,\n top: `${top}px`,\n width: `${width}px`,\n height: `${height}px`,\n });\n }\n\n /**\n * Handle input event\n */\n private onInput(e: Event): void {\n if (!this.overlay || !this.onChangeCallback) return;\n\n const value = this.overlay.value;\n this.onChangeCallback(value);\n }\n\n /**\n * Handle blur event\n */\n private onBlur(): void {\n // Hide overlay when focus is lost\n this.hideInput();\n }\n\n /**\n * Handle keyboard events\n */\n private onKeyDown(e: KeyboardEvent): void {\n if (!this.overlay) return;\n\n // Enter key submits (unless multiline)\n if (e.key === \"Enter\" && this.overlay instanceof HTMLInputElement) {\n e.preventDefault();\n this.overlay.blur();\n }\n\n // Escape cancels\n if (e.key === \"Escape\") {\n e.preventDefault();\n this.overlay.blur();\n }\n }\n\n /**\n * Check if input is currently shown\n */\n isShown(): boolean {\n return this.overlay !== null;\n }\n\n /**\n * Get current focused node\n */\n getFocusedNode(): VirtualNode | null {\n return this.focusedNode;\n }\n}\n\n",
|
|
11
11
|
"/**\n * Accessibility Layer\n *\n * Maintain shadow DOM for screen readers\n */\n\nimport type { VirtualNode } from \"./types.js\";\nimport { walkTree } from \"./utils.js\";\n\n/**\n * Accessibility Manager\n */\nexport class AccessibilityLayer {\n private shadowRoot: HTMLElement;\n private nodeMap = new Map<string, HTMLElement>();\n private enabled: boolean;\n\n constructor(container: HTMLElement | null, enabled: boolean = true) {\n this.enabled = enabled && typeof document !== \"undefined\";\n\n // Create shadow root container (only in browser)\n if (this.enabled && typeof document !== \"undefined\") {\n this.shadowRoot = document.createElement(\"div\");\n this.shadowRoot.setAttribute(\"role\", \"application\");\n this.shadowRoot.setAttribute(\"aria-label\", \"Hypen Canvas Application\");\n this.shadowRoot.style.position = \"absolute\";\n this.shadowRoot.style.left = \"-9999px\";\n this.shadowRoot.style.width = \"1px\";\n this.shadowRoot.style.height = \"1px\";\n this.shadowRoot.style.overflow = \"hidden\";\n\n if (container) {\n container.appendChild(this.shadowRoot);\n }\n } else {\n // Fallback for non-browser environments\n this.shadowRoot = {} as HTMLElement;\n }\n }\n\n /**\n * Sync shadow DOM with virtual tree\n */\n syncTree(root: VirtualNode): void {\n if (!this.enabled) return;\n\n // Clear existing\n this.shadowRoot.innerHTML = \"\";\n this.nodeMap.clear();\n\n // Build shadow DOM\n const shadowNode = this.createShadowNode(root);\n if (shadowNode) {\n this.shadowRoot.appendChild(shadowNode);\n }\n }\n\n /**\n * Create shadow DOM element for virtual node\n */\n private createShadowNode(node: VirtualNode): HTMLElement | null {\n if (!node.visible) return null;\n\n let element: HTMLElement;\n\n // Create appropriate HTML element\n switch (node.type.toLowerCase()) {\n case \"button\":\n element = document.createElement(\"button\");\n element.textContent = this.getNodeText(node);\n if (node.props.onclick) {\n element.setAttribute(\"aria-label\", \"Clickable button\");\n }\n break;\n\n case \"input\":\n element = document.createElement(\"input\");\n (element as HTMLInputElement).type = node.props.type || \"text\";\n (element as HTMLInputElement).value = node.props.value || \"\";\n if (node.props.placeholder) {\n (element as HTMLInputElement).placeholder = node.props.placeholder;\n }\n break;\n\n case \"textarea\":\n element = document.createElement(\"textarea\");\n (element as HTMLTextAreaElement).value = node.props.value || \"\";\n if (node.props.placeholder) {\n (element as HTMLTextAreaElement).placeholder = node.props.placeholder;\n }\n break;\n\n case \"image\":\n element = document.createElement(\"img\");\n (element as HTMLImageElement).src = node.props.src || \"\";\n (element as HTMLImageElement).alt = node.props.alt || \"Image\";\n break;\n\n case \"text\":\n element = document.createElement(\"span\");\n element.textContent = String(node.props[0] || node.props.text || \"\");\n break;\n\n case \"column\":\n case \"row\":\n case \"container\":\n case \"box\":\n element = document.createElement(\"div\");\n element.setAttribute(\"role\", node.type === \"column\" ? \"group\" : \"group\");\n break;\n\n default:\n element = document.createElement(\"div\");\n }\n\n // Set common attributes\n element.setAttribute(\"data-hypen-id\", node.id);\n\n if (node.props[\"aria-label\"]) {\n element.setAttribute(\"aria-label\", node.props[\"aria-label\"]);\n }\n\n if (node.focusable) {\n element.tabIndex = 0;\n }\n\n // Store mapping\n this.nodeMap.set(node.id, element);\n\n // Add children\n for (const child of node.children) {\n const childElement = this.createShadowNode(child);\n if (childElement) {\n element.appendChild(childElement);\n }\n }\n\n return element;\n }\n\n /**\n * Get text content from node tree\n */\n private getNodeText(node: VirtualNode): string {\n if (node.type === \"text\") {\n return String(node.props[0] || node.props.text || \"\");\n }\n\n let text = \"\";\n for (const child of node.children) {\n text += this.getNodeText(child);\n }\n return text;\n }\n\n /**\n * Focus node in shadow DOM\n */\n focusNode(nodeId: string): void {\n if (!this.enabled) return;\n\n const element = this.nodeMap.get(nodeId);\n if (element) {\n element.focus();\n }\n }\n\n /**\n * Update single node\n */\n updateNode(node: VirtualNode): void {\n if (!this.enabled) return;\n\n const element = this.nodeMap.get(node.id);\n if (!element) return;\n\n // Update text content\n if (node.type === \"text\") {\n element.textContent = String(node.props[0] || node.props.text || \"\");\n }\n\n // Update input value\n if (node.type === \"input\" || node.type === \"textarea\") {\n (element as HTMLInputElement | HTMLTextAreaElement).value = node.props.value || \"\";\n }\n\n // Update visibility\n element.style.display = node.visible ? \"\" : \"none\";\n }\n\n /**\n * Get shadow element by node ID\n */\n getElement(nodeId: string): HTMLElement | undefined {\n return this.nodeMap.get(nodeId);\n }\n\n /**\n * Enable or disable accessibility layer\n */\n setEnabled(enabled: boolean): void {\n this.enabled = enabled;\n if (!enabled && this.shadowRoot.parentElement) {\n this.shadowRoot.remove();\n }\n }\n\n /**\n * Cleanup\n */\n destroy(): void {\n if (this.shadowRoot.parentElement) {\n this.shadowRoot.remove();\n }\n this.nodeMap.clear();\n }\n}\n\n",
|
|
12
|
-
"/**\n * Canvas Renderer\n *\n * Main renderer class that orchestrates layout, painting, and events\n */\n\nimport type { Renderer, Patch } from \"@hypen/core\";\n\n// Interface for the engine that canvas renderer needs\ninterface IEngine {\n dispatchAction(name: string, payload?: any): void;\n}\nimport type {\n VirtualNode,\n CanvasRendererOptions,\n PainterFunction,\n LayoutFunction,\n} from \"./types.js\";\nimport { computeLayout } from \"./layout.js\";\nimport { paintNode, registerPainter } from \"./paint.js\";\nimport { CanvasEventManager } from \"./events.js\";\nimport { InputOverlay } from \"./input.js\";\nimport { AccessibilityLayer } from \"./accessibility.js\";\nimport { findNodeById } from \"./utils.js\";\n\nconst DEFAULT_OPTIONS: CanvasRendererOptions = {\n devicePixelRatio: typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 1,\n backgroundColor: \"#ffffff\",\n enableAccessibility: true,\n enableHitTesting: true,\n enableInputOverlay: true,\n enableDirtyRects: false,\n enableLayerCaching: false,\n maxLayerCacheSize: 10,\n showLayoutBounds: false,\n showDirtyRects: false,\n logPerformance: false,\n};\n\n/**\n * Canvas Renderer\n */\nexport class CanvasRenderer implements Renderer {\n private canvas: HTMLCanvasElement;\n private ctx: CanvasRenderingContext2D;\n private engine: IEngine;\n private options: CanvasRendererOptions;\n \n private rootNode: VirtualNode | null = null;\n private nodes = new Map<string, VirtualNode>();\n \n private eventManager: CanvasEventManager;\n private inputOverlay: InputOverlay;\n private accessibilityLayer: AccessibilityLayer;\n \n private rafId: number | null = null;\n private needsRedraw = false;\n \n private frameCount = 0;\n private lastFrameTime = 0;\n\n constructor(canvas: HTMLCanvasElement, engine: IEngine, options?: Partial<CanvasRendererOptions>) {\n this.canvas = canvas;\n this.engine = engine;\n this.options = { ...DEFAULT_OPTIONS, ...options };\n\n // Get context\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to get 2D context from canvas\");\n }\n this.ctx = ctx;\n\n // Setup HiDPI\n this.setupHiDPI();\n\n // Initialize subsystems\n this.eventManager = new CanvasEventManager(canvas, engine);\n this.inputOverlay = new InputOverlay(\n (canvas as any).parentElement || (typeof document !== \"undefined\" ? document.body : null)\n );\n this.accessibilityLayer = new AccessibilityLayer(\n (canvas as any).parentElement || (typeof document !== \"undefined\" ? document.body : null),\n this.options.enableAccessibility || false\n );\n\n // Listen for redraw requests from event manager\n this.canvas.addEventListener(\"hypen:redraw\", () => this.scheduleRedraw());\n\n // Don't schedule initial render - wait for patches\n }\n\n /**\n * Setup HiDPI rendering\n */\n private setupHiDPI(): void {\n const dpr = this.options.devicePixelRatio || 1;\n const rect = this.canvas.getBoundingClientRect();\n\n this.canvas.width = rect.width * dpr;\n this.canvas.height = rect.height * dpr;\n\n this.ctx.scale(dpr, dpr);\n\n // Update canvas display size\n this.canvas.style.width = `${rect.width}px`;\n this.canvas.style.height = `${rect.height}px`;\n }\n\n /**\n * Apply patches from engine\n */\n applyPatches(patches: Patch[]): void {\n for (const patch of patches) {\n this.applyPatch(patch);\n }\n\n // Update accessibility layer\n if (this.rootNode) {\n this.accessibilityLayer.syncTree(this.rootNode);\n }\n\n // Schedule redraw\n this.scheduleRedraw();\n }\n\n /**\n * Apply single patch\n */\n private applyPatch(patch: Patch): void {\n switch (patch.type) {\n case \"create\":\n this.onCreate(patch.id!, (patch as any).element_type!, patch.props || {});\n break;\n\n case \"setProp\":\n this.onSetProp(patch.id!, patch.name!, patch.value);\n break;\n\n case \"setText\":\n this.onSetText(patch.id!, patch.text!);\n break;\n\n case \"insert\":\n this.onInsert((patch as any).parent_id!, patch.id!, (patch as any).before_id);\n break;\n\n case \"move\":\n this.onMove((patch as any).parent_id!, patch.id!, (patch as any).before_id);\n break;\n\n case \"remove\":\n this.onRemove(patch.id!);\n break;\n }\n }\n\n /**\n * Create new virtual node\n */\n private onCreate(id: string, elementType: string, props: Record<string, any>): void {\n const node: VirtualNode = {\n id,\n type: elementType,\n props: props instanceof Map ? Object.fromEntries(props) : props,\n children: [],\n parent: null,\n visible: true,\n opacity: parseFloat(props.opacity) || 1,\n clickable: elementType === \"button\" || !!props.onclick,\n hoverable: true,\n focusable: elementType === \"input\" || elementType === \"textarea\" || elementType === \"button\",\n focused: false,\n hovered: false,\n };\n\n this.nodes.set(id, node);\n }\n\n /**\n * Set property on node\n */\n private onSetProp(id: string, name: string, value: any): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n node.props[name] = value;\n\n // Update computed properties\n if (name === \"visible\") {\n node.visible = !!value;\n }\n if (name === \"opacity\") {\n node.opacity = parseFloat(value) || 1;\n }\n\n // Update accessibility\n this.accessibilityLayer.updateNode(node);\n }\n\n /**\n * Set text on node\n */\n private onSetText(id: string, text: string): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n node.props[0] = text;\n\n // Update accessibility\n this.accessibilityLayer.updateNode(node);\n }\n\n /**\n * Insert node into tree\n */\n private onInsert(parentId: string, id: string, beforeId?: string): void {\n const child = this.nodes.get(id);\n if (!child) return;\n\n // Check if this is setting the root node (parent_id === id === \"root\" or similar)\n if (parentId === \"root\" && id === \"root\") {\n this.rootNode = child;\n this.eventManager.setRootNode(child);\n return;\n }\n\n // Otherwise find the parent node\n const parent = this.nodes.get(parentId);\n if (!parent) {\n // If parent is \"root\", this might be the first real root node\n if (parentId === \"root\") {\n this.rootNode = child;\n this.eventManager.setRootNode(child);\n }\n return;\n }\n\n // Insert child into parent\n child.parent = parent;\n\n if (beforeId) {\n const beforeIndex = parent.children.findIndex((c) => c.id === beforeId);\n if (beforeIndex >= 0) {\n parent.children.splice(beforeIndex, 0, child);\n } else {\n parent.children.push(child);\n }\n } else {\n parent.children.push(child);\n }\n }\n\n /**\n * Move node in tree\n */\n private onMove(parentId: string, id: string, beforeId?: string): void {\n // Remove from old parent\n const node = this.nodes.get(id);\n if (!node || !node.parent) return;\n\n const oldParent = node.parent;\n const oldIndex = oldParent.children.indexOf(node);\n if (oldIndex >= 0) {\n oldParent.children.splice(oldIndex, 1);\n }\n\n // Insert into new location\n this.onInsert(parentId, id, beforeId);\n }\n\n /**\n * Remove node from tree\n */\n private onRemove(id: string): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n // Remove from parent\n if (node.parent) {\n const index = node.parent.children.indexOf(node);\n if (index >= 0) {\n node.parent.children.splice(index, 1);\n }\n }\n\n // Remove from root\n if (this.rootNode === node) {\n this.rootNode = null;\n this.eventManager.setRootNode(null);\n }\n\n // Remove from nodes map\n this.nodes.delete(id);\n }\n\n /**\n * Schedule redraw\n */\n private scheduleRedraw(): void {\n if (this.rafId !== null) return;\n\n // Use requestAnimationFrame if available (browser), otherwise render immediately (tests)\n if (typeof requestAnimationFrame !== \"undefined\") {\n this.rafId = requestAnimationFrame(() => {\n this.render();\n this.rafId = null;\n });\n } else {\n // In non-browser environments (tests), render immediately\n this.render();\n }\n }\n\n /**\n * Main render function\n */\n private render(): void {\n const startTime = performance.now();\n\n // Clear canvas\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n // Draw background\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = this.options.backgroundColor;\n this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n // Layout and paint\n if (this.rootNode) {\n // Compute layout\n const dpr = this.options.devicePixelRatio || 1;\n computeLayout(\n this.ctx,\n this.rootNode,\n this.canvas.width / dpr,\n this.canvas.height / dpr\n );\n\n // Paint\n paintNode(this.ctx, this.rootNode);\n\n // Debug: show layout bounds\n if (this.options.showLayoutBounds) {\n this.drawLayoutBounds(this.rootNode);\n }\n }\n\n // Performance logging\n if (this.options.logPerformance) {\n const elapsed = performance.now() - startTime;\n this.frameCount++;\n if (performance.now() - this.lastFrameTime > 1000) {\n console.log(`Canvas FPS: ${this.frameCount}, Last frame: ${elapsed.toFixed(2)}ms`);\n this.frameCount = 0;\n this.lastFrameTime = performance.now();\n }\n }\n }\n\n /**\n * Draw layout bounds for debugging\n */\n private drawLayoutBounds(node: VirtualNode): void {\n if (!node.layout) return;\n\n const layout = node.layout;\n\n this.ctx.strokeStyle = \"#ff0000\";\n this.ctx.lineWidth = 1;\n this.ctx.strokeRect(layout.x, layout.y, layout.width, layout.height);\n\n for (const child of node.children) {\n this.drawLayoutBounds(child);\n }\n }\n\n /**\n * Get node by ID\n */\n getNode(id: string): VirtualNode | undefined {\n return this.nodes.get(id);\n }\n\n /**\n * Clear renderer\n */\n clear(): void {\n this.rootNode = null;\n this.nodes.clear();\n this.eventManager.setRootNode(null);\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n /**\n * Register custom painter\n */\n registerPainter(type: string, painter: PainterFunction): void {\n registerPainter(type, painter);\n }\n\n /**\n * Set renderer options\n */\n setOptions(options: Partial<CanvasRendererOptions>): void {\n this.options = { ...this.options, ...options };\n this.accessibilityLayer.setEnabled(this.options.enableAccessibility || false);\n }\n\n /**\n * Destroy renderer\n */\n destroy(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n }\n this.eventManager.destroy();\n this.accessibilityLayer.destroy();\n }\n}\n\n"
|
|
12
|
+
"/**\n * Canvas Renderer\n *\n * Main renderer class that orchestrates layout, painting, and events\n */\n\nimport type { Renderer, Patch } from \"@hypen-space/core\";\n\n// Interface for the engine that canvas renderer needs\ninterface IEngine {\n dispatchAction(name: string, payload?: any): void;\n}\nimport type {\n VirtualNode,\n CanvasRendererOptions,\n PainterFunction,\n LayoutFunction,\n} from \"./types.js\";\nimport { computeLayout } from \"./layout.js\";\nimport { paintNode, registerPainter } from \"./paint.js\";\nimport { CanvasEventManager } from \"./events.js\";\nimport { InputOverlay } from \"./input.js\";\nimport { AccessibilityLayer } from \"./accessibility.js\";\nimport { findNodeById } from \"./utils.js\";\n\nconst DEFAULT_OPTIONS: CanvasRendererOptions = {\n devicePixelRatio: typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 1,\n backgroundColor: \"#ffffff\",\n enableAccessibility: true,\n enableHitTesting: true,\n enableInputOverlay: true,\n enableDirtyRects: false,\n enableLayerCaching: false,\n maxLayerCacheSize: 10,\n showLayoutBounds: false,\n showDirtyRects: false,\n logPerformance: false,\n};\n\n/**\n * Canvas Renderer\n */\nexport class CanvasRenderer implements Renderer {\n private canvas: HTMLCanvasElement;\n private ctx: CanvasRenderingContext2D;\n private engine: IEngine;\n private options: CanvasRendererOptions;\n \n private rootNode: VirtualNode | null = null;\n private nodes = new Map<string, VirtualNode>();\n \n private eventManager: CanvasEventManager;\n private inputOverlay: InputOverlay;\n private accessibilityLayer: AccessibilityLayer;\n \n private rafId: number | null = null;\n private needsRedraw = false;\n \n private frameCount = 0;\n private lastFrameTime = 0;\n\n constructor(canvas: HTMLCanvasElement, engine: IEngine, options?: Partial<CanvasRendererOptions>) {\n this.canvas = canvas;\n this.engine = engine;\n this.options = { ...DEFAULT_OPTIONS, ...options };\n\n // Get context\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to get 2D context from canvas\");\n }\n this.ctx = ctx;\n\n // Setup HiDPI\n this.setupHiDPI();\n\n // Initialize subsystems\n this.eventManager = new CanvasEventManager(canvas, engine);\n this.inputOverlay = new InputOverlay(\n (canvas as any).parentElement || (typeof document !== \"undefined\" ? document.body : null)\n );\n this.accessibilityLayer = new AccessibilityLayer(\n (canvas as any).parentElement || (typeof document !== \"undefined\" ? document.body : null),\n this.options.enableAccessibility || false\n );\n\n // Listen for redraw requests from event manager\n this.canvas.addEventListener(\"hypen:redraw\", () => this.scheduleRedraw());\n\n // Don't schedule initial render - wait for patches\n }\n\n /**\n * Setup HiDPI rendering\n */\n private setupHiDPI(): void {\n const dpr = this.options.devicePixelRatio || 1;\n const rect = this.canvas.getBoundingClientRect();\n\n this.canvas.width = rect.width * dpr;\n this.canvas.height = rect.height * dpr;\n\n this.ctx.scale(dpr, dpr);\n\n // Update canvas display size\n this.canvas.style.width = `${rect.width}px`;\n this.canvas.style.height = `${rect.height}px`;\n }\n\n /**\n * Apply patches from engine\n */\n applyPatches(patches: Patch[]): void {\n for (const patch of patches) {\n this.applyPatch(patch);\n }\n\n // Update accessibility layer\n if (this.rootNode) {\n this.accessibilityLayer.syncTree(this.rootNode);\n }\n\n // Schedule redraw\n this.scheduleRedraw();\n }\n\n /**\n * Apply single patch\n */\n private applyPatch(patch: Patch): void {\n switch (patch.type) {\n case \"create\":\n this.onCreate(patch.id!, (patch as any).element_type!, patch.props || {});\n break;\n\n case \"setProp\":\n this.onSetProp(patch.id!, patch.name!, patch.value);\n break;\n\n case \"setText\":\n this.onSetText(patch.id!, patch.text!);\n break;\n\n case \"insert\":\n this.onInsert((patch as any).parent_id!, patch.id!, (patch as any).before_id);\n break;\n\n case \"move\":\n this.onMove((patch as any).parent_id!, patch.id!, (patch as any).before_id);\n break;\n\n case \"remove\":\n this.onRemove(patch.id!);\n break;\n }\n }\n\n /**\n * Create new virtual node\n */\n private onCreate(id: string, elementType: string, props: Record<string, any>): void {\n const node: VirtualNode = {\n id,\n type: elementType,\n props: props instanceof Map ? Object.fromEntries(props) : props,\n children: [],\n parent: null,\n visible: true,\n opacity: parseFloat(props.opacity) || 1,\n clickable: elementType === \"button\" || !!props.onclick,\n hoverable: true,\n focusable: elementType === \"input\" || elementType === \"textarea\" || elementType === \"button\",\n focused: false,\n hovered: false,\n };\n\n this.nodes.set(id, node);\n }\n\n /**\n * Set property on node\n */\n private onSetProp(id: string, name: string, value: any): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n node.props[name] = value;\n\n // Update computed properties\n if (name === \"visible\") {\n node.visible = !!value;\n }\n if (name === \"opacity\") {\n node.opacity = parseFloat(value) || 1;\n }\n\n // Update accessibility\n this.accessibilityLayer.updateNode(node);\n }\n\n /**\n * Set text on node\n */\n private onSetText(id: string, text: string): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n node.props[0] = text;\n\n // Update accessibility\n this.accessibilityLayer.updateNode(node);\n }\n\n /**\n * Insert node into tree\n */\n private onInsert(parentId: string, id: string, beforeId?: string): void {\n const child = this.nodes.get(id);\n if (!child) return;\n\n // Check if this is setting the root node (parent_id === id === \"root\" or similar)\n if (parentId === \"root\" && id === \"root\") {\n this.rootNode = child;\n this.eventManager.setRootNode(child);\n return;\n }\n\n // Otherwise find the parent node\n const parent = this.nodes.get(parentId);\n if (!parent) {\n // If parent is \"root\", this might be the first real root node\n if (parentId === \"root\") {\n this.rootNode = child;\n this.eventManager.setRootNode(child);\n }\n return;\n }\n\n // Insert child into parent\n child.parent = parent;\n\n if (beforeId) {\n const beforeIndex = parent.children.findIndex((c) => c.id === beforeId);\n if (beforeIndex >= 0) {\n parent.children.splice(beforeIndex, 0, child);\n } else {\n parent.children.push(child);\n }\n } else {\n parent.children.push(child);\n }\n }\n\n /**\n * Move node in tree\n */\n private onMove(parentId: string, id: string, beforeId?: string): void {\n // Remove from old parent\n const node = this.nodes.get(id);\n if (!node || !node.parent) return;\n\n const oldParent = node.parent;\n const oldIndex = oldParent.children.indexOf(node);\n if (oldIndex >= 0) {\n oldParent.children.splice(oldIndex, 1);\n }\n\n // Insert into new location\n this.onInsert(parentId, id, beforeId);\n }\n\n /**\n * Remove node from tree\n */\n private onRemove(id: string): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n // Remove from parent\n if (node.parent) {\n const index = node.parent.children.indexOf(node);\n if (index >= 0) {\n node.parent.children.splice(index, 1);\n }\n }\n\n // Remove from root\n if (this.rootNode === node) {\n this.rootNode = null;\n this.eventManager.setRootNode(null);\n }\n\n // Remove from nodes map\n this.nodes.delete(id);\n }\n\n /**\n * Schedule redraw\n */\n private scheduleRedraw(): void {\n if (this.rafId !== null) return;\n\n // Use requestAnimationFrame if available (browser), otherwise render immediately (tests)\n if (typeof requestAnimationFrame !== \"undefined\") {\n this.rafId = requestAnimationFrame(() => {\n this.render();\n this.rafId = null;\n });\n } else {\n // In non-browser environments (tests), render immediately\n this.render();\n }\n }\n\n /**\n * Main render function\n */\n private render(): void {\n const startTime = performance.now();\n\n // Clear canvas\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n // Draw background\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = this.options.backgroundColor;\n this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n // Layout and paint\n if (this.rootNode) {\n // Compute layout\n const dpr = this.options.devicePixelRatio || 1;\n computeLayout(\n this.ctx,\n this.rootNode,\n this.canvas.width / dpr,\n this.canvas.height / dpr\n );\n\n // Paint\n paintNode(this.ctx, this.rootNode);\n\n // Debug: show layout bounds\n if (this.options.showLayoutBounds) {\n this.drawLayoutBounds(this.rootNode);\n }\n }\n\n // Performance logging\n if (this.options.logPerformance) {\n const elapsed = performance.now() - startTime;\n this.frameCount++;\n if (performance.now() - this.lastFrameTime > 1000) {\n console.log(`Canvas FPS: ${this.frameCount}, Last frame: ${elapsed.toFixed(2)}ms`);\n this.frameCount = 0;\n this.lastFrameTime = performance.now();\n }\n }\n }\n\n /**\n * Draw layout bounds for debugging\n */\n private drawLayoutBounds(node: VirtualNode): void {\n if (!node.layout) return;\n\n const layout = node.layout;\n\n this.ctx.strokeStyle = \"#ff0000\";\n this.ctx.lineWidth = 1;\n this.ctx.strokeRect(layout.x, layout.y, layout.width, layout.height);\n\n for (const child of node.children) {\n this.drawLayoutBounds(child);\n }\n }\n\n /**\n * Get node by ID\n */\n getNode(id: string): VirtualNode | undefined {\n return this.nodes.get(id);\n }\n\n /**\n * Clear renderer\n */\n clear(): void {\n this.rootNode = null;\n this.nodes.clear();\n this.eventManager.setRootNode(null);\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n /**\n * Register custom painter\n */\n registerPainter(type: string, painter: PainterFunction): void {\n registerPainter(type, painter);\n }\n\n /**\n * Set renderer options\n */\n setOptions(options: Partial<CanvasRendererOptions>): void {\n this.options = { ...this.options, ...options };\n this.accessibilityLayer.setEnabled(this.options.enableAccessibility || false);\n }\n\n /**\n * Destroy renderer\n */\n destroy(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n }\n this.eventManager.destroy();\n this.accessibilityLayer.destroy();\n }\n}\n\n"
|
|
13
13
|
],
|
|
14
14
|
"mappings": "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",
|
|
15
15
|
"debugId": "03CD5B053F39237A64756E2164756E21",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"/**\n * Event System\n *\n * Hit testing and event handling for canvas nodes\n */\n\nimport type { VirtualNode, Point } from \"./types.js\";\nimport { isPointInRoundedRect, getAbsoluteBounds } from \"./utils.js\";\n\n// Interface for the engine that CanvasEventManager needs\ninterface IEngine {\n dispatchAction(name: string, payload?: any): void;\n}\n\n/**\n * Canvas Event Manager\n */\nexport class CanvasEventManager {\n private canvas: HTMLCanvasElement;\n private engine: IEngine;\n private rootNode: VirtualNode | null = null;\n private hoveredNode: VirtualNode | null = null;\n private focusedNode: VirtualNode | null = null;\n private mouseDownNode: VirtualNode | null = null;\n\n constructor(canvas: HTMLCanvasElement, engine: IEngine) {\n this.canvas = canvas;\n this.engine = engine;\n this.setupEventListeners();\n }\n\n /**\n * Set the root node for hit testing\n */\n setRootNode(node: VirtualNode | null): void {\n this.rootNode = node;\n }\n\n /**\n * Setup canvas event listeners\n */\n private setupEventListeners(): void {\n this.canvas.addEventListener(\"mousemove\", this.onMouseMove.bind(this));\n this.canvas.addEventListener(\"mousedown\", this.onMouseDown.bind(this));\n this.canvas.addEventListener(\"mouseup\", this.onMouseUp.bind(this));\n this.canvas.addEventListener(\"click\", this.onClick.bind(this));\n this.canvas.addEventListener(\"dblclick\", this.onDoubleClick.bind(this));\n this.canvas.addEventListener(\"keydown\", this.onKeyDown.bind(this));\n this.canvas.addEventListener(\"keyup\", this.onKeyUp.bind(this));\n }\n\n /**\n * Get canvas coordinates from mouse event\n */\n private getCanvasCoordinates(e: MouseEvent): Point {\n const rect = this.canvas.getBoundingClientRect();\n const scaleX = this.canvas.width / rect.width;\n const scaleY = this.canvas.height / rect.height;\n\n return {\n x: (e.clientX - rect.left) * scaleX,\n y: (e.clientY - rect.top) * scaleY,\n };\n }\n\n /**\n * Find node at canvas coordinates\n */\n private hitTest(point: Point): VirtualNode | null {\n if (!this.rootNode) return null;\n return this.hitTestNode(this.rootNode, point);\n }\n\n /**\n * Recursively test node and children\n */\n private hitTestNode(node: VirtualNode, point: Point): VirtualNode | null {\n if (!node.visible || !node.layout) return null;\n\n const bounds = getAbsoluteBounds(node);\n if (!bounds) return null;\n\n // Test children first (front to back)\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const hit = this.hitTestNode(child, point);\n if (hit) return hit;\n }\n\n // Test this node\n const radius = node.layout.border.radius;\n if (isPointInRoundedRect(point, bounds, radius)) {\n return node;\n }\n\n return null;\n }\n\n /**\n * Handle mouse move\n */\n private onMouseMove(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n // Update hover state\n if (node !== this.hoveredNode) {\n // Leave old node\n if (this.hoveredNode) {\n this.hoveredNode.hovered = false;\n this.dispatchNodeEvent(this.hoveredNode, \"mouseleave\", {});\n }\n\n // Enter new node\n this.hoveredNode = node;\n if (node) {\n node.hovered = true;\n this.dispatchNodeEvent(node, \"mouseenter\", {});\n }\n\n // Update cursor\n this.updateCursor(node);\n\n // Request redraw for hover effects\n this.requestRedraw();\n }\n }\n\n /**\n * Handle mouse down\n */\n private onMouseDown(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n this.mouseDownNode = node;\n\n if (node && node.clickable) {\n this.dispatchNodeEvent(node, \"mousedown\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n\n // Update focus\n if (node && node.focusable) {\n this.setFocus(node);\n } else {\n this.setFocus(null);\n }\n }\n\n /**\n * Handle mouse up\n */\n private onMouseUp(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n if (node && node.clickable) {\n this.dispatchNodeEvent(node, \"mouseup\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n\n this.mouseDownNode = null;\n }\n\n /**\n * Handle click\n */\n private onClick(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n if (node && node.clickable && node === this.mouseDownNode) {\n this.dispatchNodeEvent(node, \"click\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n }\n\n /**\n * Handle double click\n */\n private onDoubleClick(e: MouseEvent): void {\n const point = this.getCanvasCoordinates(e);\n const node = this.hitTest(point);\n\n if (node && node.clickable) {\n this.dispatchNodeEvent(node, \"dblclick\", {\n button: e.button,\n clientX: e.clientX,\n clientY: e.clientY,\n });\n }\n }\n\n /**\n * Handle keyboard events\n */\n private onKeyDown(e: KeyboardEvent): void {\n if (this.focusedNode) {\n this.dispatchNodeEvent(this.focusedNode, \"keydown\", {\n key: e.key,\n code: e.code,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n });\n }\n }\n\n private onKeyUp(e: KeyboardEvent): void {\n if (this.focusedNode) {\n this.dispatchNodeEvent(this.focusedNode, \"keyup\", {\n key: e.key,\n code: e.code,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n });\n }\n }\n\n /**\n * Set focused node\n */\n private setFocus(node: VirtualNode | null): void {\n if (node === this.focusedNode) return;\n\n if (this.focusedNode) {\n this.focusedNode.focused = false;\n this.dispatchNodeEvent(this.focusedNode, \"blur\", {});\n }\n\n this.focusedNode = node;\n\n if (node) {\n node.focused = true;\n this.dispatchNodeEvent(node, \"focus\", {});\n }\n\n this.requestRedraw();\n }\n\n /**\n * Update cursor based on node\n */\n private updateCursor(node: VirtualNode | null): void {\n if (!node) {\n this.canvas.style.cursor = \"default\";\n return;\n }\n\n const cursor = node.props.cursor || (node.clickable ? \"pointer\" : \"default\");\n this.canvas.style.cursor = cursor;\n }\n\n /**\n * Dispatch event to engine\n */\n private dispatchNodeEvent(node: VirtualNode, eventType: string, data: any): void {\n // Check if node has action handler for this event\n const actionName = node.props[`on${eventType}`] || node.props[eventType];\n\n if (actionName && typeof actionName === \"string\") {\n // Dispatch to engine\n this.engine.dispatchAction(actionName, {\n type: eventType,\n nodeId: node.id,\n timestamp: Date.now(),\n ...data,\n });\n }\n }\n\n /**\n * Request redraw from renderer\n */\n private requestRedraw(): void {\n // This will be called via a callback set by the renderer\n // For now, dispatch a custom event\n this.canvas.dispatchEvent(new CustomEvent(\"hypen:redraw\"));\n }\n\n /**\n * Cleanup\n */\n destroy(): void {\n // Remove event listeners if needed\n }\n}\n\n\n\n\n\n\n\n\n\n",
|
|
10
10
|
"/**\n * Input Overlay System\n *\n * Handle text input using DOM overlay elements\n */\n\nimport type { VirtualNode, Rectangle } from \"./types.js\";\nimport { getAbsoluteBounds } from \"./utils.js\";\n\n/**\n * Input Overlay Manager\n */\nexport class InputOverlay {\n private container: HTMLElement;\n private overlay: HTMLInputElement | HTMLTextAreaElement | null = null;\n private focusedNode: VirtualNode | null = null;\n private onChangeCallback: ((value: string) => void) | null = null;\n\n constructor(container: HTMLElement | null) {\n this.container = container || ({} as HTMLElement);\n }\n\n /**\n * Show input overlay for a node\n */\n showInput(\n node: VirtualNode,\n canvasBounds: DOMRect,\n onChange: (value: string) => void\n ): void {\n // Skip if document is not available (non-browser environment)\n if (typeof document === \"undefined\") return;\n\n this.hideInput();\n\n const bounds = getAbsoluteBounds(node);\n if (!bounds) return;\n\n const isMultiline = node.type === \"textarea\";\n this.overlay = isMultiline\n ? document.createElement(\"textarea\")\n : document.createElement(\"input\");\n\n // Style overlay\n this.styleOverlay(node, bounds, canvasBounds);\n\n // Set initial value\n const value = node.props.value || \"\";\n this.overlay.value = value;\n\n // Setup event handlers\n this.onChangeCallback = onChange;\n this.overlay.addEventListener(\"input\", this.onInput.bind(this));\n this.overlay.addEventListener(\"blur\", this.onBlur.bind(this));\n this.overlay.addEventListener(\"keydown\", this.onKeyDown.bind(this) as EventListener);\n\n // Add to DOM and focus\n this.container.appendChild(this.overlay);\n this.overlay.focus();\n\n this.focusedNode = node;\n }\n\n /**\n * Hide input overlay\n */\n hideInput(): void {\n if (this.overlay) {\n this.overlay.remove();\n this.overlay = null;\n }\n this.focusedNode = null;\n this.onChangeCallback = null;\n }\n\n /**\n * Update overlay position\n */\n updatePosition(node: VirtualNode, canvasBounds: DOMRect): void {\n if (!this.overlay || node !== this.focusedNode) return;\n\n const bounds = getAbsoluteBounds(node);\n if (!bounds) return;\n\n this.positionOverlay(bounds, canvasBounds);\n }\n\n /**\n * Style overlay to match canvas node\n */\n private styleOverlay(\n node: VirtualNode,\n bounds: Rectangle,\n canvasBounds: DOMRect\n ): void {\n if (!this.overlay) return;\n\n const props = node.props;\n\n // Position\n this.positionOverlay(bounds, canvasBounds);\n\n // Font and text styling\n const fontSize = parseFloat(props.fontSize) || 16;\n const fontWeight = props.fontWeight || \"normal\";\n const fontFamily = props.fontFamily || \"system-ui, sans-serif\";\n const color = props.color || \"#000000\";\n\n Object.assign(this.overlay.style, {\n fontSize: `${fontSize}px`,\n fontWeight: fontWeight,\n fontFamily: fontFamily,\n color: color,\n border: \"none\",\n outline: \"2px solid #007bff\",\n backgroundColor: props.backgroundColor || \"#ffffff\",\n padding: `${props.padding || 8}px`,\n borderRadius: `${props.borderRadius || 4}px`,\n boxSizing: \"border-box\",\n resize: \"none\",\n });\n\n // Placeholder\n if (props.placeholder) {\n this.overlay.placeholder = props.placeholder;\n }\n\n // Input type\n if (this.overlay instanceof HTMLInputElement && props.type) {\n this.overlay.type = props.type;\n }\n }\n\n /**\n * Position overlay over canvas node\n */\n private positionOverlay(bounds: Rectangle, canvasBounds: DOMRect): void {\n if (!this.overlay) return;\n\n // Calculate scale factor between canvas and display\n const canvas = this.container.querySelector(\"canvas\") as HTMLCanvasElement;\n const scaleX = canvasBounds.width / canvas.width;\n const scaleY = canvasBounds.height / canvas.height;\n\n const left = bounds.x * scaleX;\n const top = bounds.y * scaleY;\n const width = bounds.width * scaleX;\n const height = bounds.height * scaleY;\n\n Object.assign(this.overlay.style, {\n position: \"absolute\",\n left: `${left}px`,\n top: `${top}px`,\n width: `${width}px`,\n height: `${height}px`,\n });\n }\n\n /**\n * Handle input event\n */\n private onInput(e: Event): void {\n if (!this.overlay || !this.onChangeCallback) return;\n\n const value = this.overlay.value;\n this.onChangeCallback(value);\n }\n\n /**\n * Handle blur event\n */\n private onBlur(): void {\n // Hide overlay when focus is lost\n this.hideInput();\n }\n\n /**\n * Handle keyboard events\n */\n private onKeyDown(e: KeyboardEvent): void {\n if (!this.overlay) return;\n\n // Enter key submits (unless multiline)\n if (e.key === \"Enter\" && this.overlay instanceof HTMLInputElement) {\n e.preventDefault();\n this.overlay.blur();\n }\n\n // Escape cancels\n if (e.key === \"Escape\") {\n e.preventDefault();\n this.overlay.blur();\n }\n }\n\n /**\n * Check if input is currently shown\n */\n isShown(): boolean {\n return this.overlay !== null;\n }\n\n /**\n * Get current focused node\n */\n getFocusedNode(): VirtualNode | null {\n return this.focusedNode;\n }\n}\n\n",
|
|
11
11
|
"/**\n * Accessibility Layer\n *\n * Maintain shadow DOM for screen readers\n */\n\nimport type { VirtualNode } from \"./types.js\";\nimport { walkTree } from \"./utils.js\";\n\n/**\n * Accessibility Manager\n */\nexport class AccessibilityLayer {\n private shadowRoot: HTMLElement;\n private nodeMap = new Map<string, HTMLElement>();\n private enabled: boolean;\n\n constructor(container: HTMLElement | null, enabled: boolean = true) {\n this.enabled = enabled && typeof document !== \"undefined\";\n\n // Create shadow root container (only in browser)\n if (this.enabled && typeof document !== \"undefined\") {\n this.shadowRoot = document.createElement(\"div\");\n this.shadowRoot.setAttribute(\"role\", \"application\");\n this.shadowRoot.setAttribute(\"aria-label\", \"Hypen Canvas Application\");\n this.shadowRoot.style.position = \"absolute\";\n this.shadowRoot.style.left = \"-9999px\";\n this.shadowRoot.style.width = \"1px\";\n this.shadowRoot.style.height = \"1px\";\n this.shadowRoot.style.overflow = \"hidden\";\n\n if (container) {\n container.appendChild(this.shadowRoot);\n }\n } else {\n // Fallback for non-browser environments\n this.shadowRoot = {} as HTMLElement;\n }\n }\n\n /**\n * Sync shadow DOM with virtual tree\n */\n syncTree(root: VirtualNode): void {\n if (!this.enabled) return;\n\n // Clear existing\n this.shadowRoot.innerHTML = \"\";\n this.nodeMap.clear();\n\n // Build shadow DOM\n const shadowNode = this.createShadowNode(root);\n if (shadowNode) {\n this.shadowRoot.appendChild(shadowNode);\n }\n }\n\n /**\n * Create shadow DOM element for virtual node\n */\n private createShadowNode(node: VirtualNode): HTMLElement | null {\n if (!node.visible) return null;\n\n let element: HTMLElement;\n\n // Create appropriate HTML element\n switch (node.type.toLowerCase()) {\n case \"button\":\n element = document.createElement(\"button\");\n element.textContent = this.getNodeText(node);\n if (node.props.onclick) {\n element.setAttribute(\"aria-label\", \"Clickable button\");\n }\n break;\n\n case \"input\":\n element = document.createElement(\"input\");\n (element as HTMLInputElement).type = node.props.type || \"text\";\n (element as HTMLInputElement).value = node.props.value || \"\";\n if (node.props.placeholder) {\n (element as HTMLInputElement).placeholder = node.props.placeholder;\n }\n break;\n\n case \"textarea\":\n element = document.createElement(\"textarea\");\n (element as HTMLTextAreaElement).value = node.props.value || \"\";\n if (node.props.placeholder) {\n (element as HTMLTextAreaElement).placeholder = node.props.placeholder;\n }\n break;\n\n case \"image\":\n element = document.createElement(\"img\");\n (element as HTMLImageElement).src = node.props.src || \"\";\n (element as HTMLImageElement).alt = node.props.alt || \"Image\";\n break;\n\n case \"text\":\n element = document.createElement(\"span\");\n element.textContent = String(node.props[0] || node.props.text || \"\");\n break;\n\n case \"column\":\n case \"row\":\n case \"container\":\n case \"box\":\n element = document.createElement(\"div\");\n element.setAttribute(\"role\", node.type === \"column\" ? \"group\" : \"group\");\n break;\n\n default:\n element = document.createElement(\"div\");\n }\n\n // Set common attributes\n element.setAttribute(\"data-hypen-id\", node.id);\n\n if (node.props[\"aria-label\"]) {\n element.setAttribute(\"aria-label\", node.props[\"aria-label\"]);\n }\n\n if (node.focusable) {\n element.tabIndex = 0;\n }\n\n // Store mapping\n this.nodeMap.set(node.id, element);\n\n // Add children\n for (const child of node.children) {\n const childElement = this.createShadowNode(child);\n if (childElement) {\n element.appendChild(childElement);\n }\n }\n\n return element;\n }\n\n /**\n * Get text content from node tree\n */\n private getNodeText(node: VirtualNode): string {\n if (node.type === \"text\") {\n return String(node.props[0] || node.props.text || \"\");\n }\n\n let text = \"\";\n for (const child of node.children) {\n text += this.getNodeText(child);\n }\n return text;\n }\n\n /**\n * Focus node in shadow DOM\n */\n focusNode(nodeId: string): void {\n if (!this.enabled) return;\n\n const element = this.nodeMap.get(nodeId);\n if (element) {\n element.focus();\n }\n }\n\n /**\n * Update single node\n */\n updateNode(node: VirtualNode): void {\n if (!this.enabled) return;\n\n const element = this.nodeMap.get(node.id);\n if (!element) return;\n\n // Update text content\n if (node.type === \"text\") {\n element.textContent = String(node.props[0] || node.props.text || \"\");\n }\n\n // Update input value\n if (node.type === \"input\" || node.type === \"textarea\") {\n (element as HTMLInputElement | HTMLTextAreaElement).value = node.props.value || \"\";\n }\n\n // Update visibility\n element.style.display = node.visible ? \"\" : \"none\";\n }\n\n /**\n * Get shadow element by node ID\n */\n getElement(nodeId: string): HTMLElement | undefined {\n return this.nodeMap.get(nodeId);\n }\n\n /**\n * Enable or disable accessibility layer\n */\n setEnabled(enabled: boolean): void {\n this.enabled = enabled;\n if (!enabled && this.shadowRoot.parentElement) {\n this.shadowRoot.remove();\n }\n }\n\n /**\n * Cleanup\n */\n destroy(): void {\n if (this.shadowRoot.parentElement) {\n this.shadowRoot.remove();\n }\n this.nodeMap.clear();\n }\n}\n\n",
|
|
12
|
-
"/**\n * Canvas Renderer\n *\n * Main renderer class that orchestrates layout, painting, and events\n */\n\nimport type { Renderer, Patch } from \"@hypen/core\";\n\n// Interface for the engine that canvas renderer needs\ninterface IEngine {\n dispatchAction(name: string, payload?: any): void;\n}\nimport type {\n VirtualNode,\n CanvasRendererOptions,\n PainterFunction,\n LayoutFunction,\n} from \"./types.js\";\nimport { computeLayout } from \"./layout.js\";\nimport { paintNode, registerPainter } from \"./paint.js\";\nimport { CanvasEventManager } from \"./events.js\";\nimport { InputOverlay } from \"./input.js\";\nimport { AccessibilityLayer } from \"./accessibility.js\";\nimport { findNodeById } from \"./utils.js\";\n\nconst DEFAULT_OPTIONS: CanvasRendererOptions = {\n devicePixelRatio: typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 1,\n backgroundColor: \"#ffffff\",\n enableAccessibility: true,\n enableHitTesting: true,\n enableInputOverlay: true,\n enableDirtyRects: false,\n enableLayerCaching: false,\n maxLayerCacheSize: 10,\n showLayoutBounds: false,\n showDirtyRects: false,\n logPerformance: false,\n};\n\n/**\n * Canvas Renderer\n */\nexport class CanvasRenderer implements Renderer {\n private canvas: HTMLCanvasElement;\n private ctx: CanvasRenderingContext2D;\n private engine: IEngine;\n private options: CanvasRendererOptions;\n \n private rootNode: VirtualNode | null = null;\n private nodes = new Map<string, VirtualNode>();\n \n private eventManager: CanvasEventManager;\n private inputOverlay: InputOverlay;\n private accessibilityLayer: AccessibilityLayer;\n \n private rafId: number | null = null;\n private needsRedraw = false;\n \n private frameCount = 0;\n private lastFrameTime = 0;\n\n constructor(canvas: HTMLCanvasElement, engine: IEngine, options?: Partial<CanvasRendererOptions>) {\n this.canvas = canvas;\n this.engine = engine;\n this.options = { ...DEFAULT_OPTIONS, ...options };\n\n // Get context\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to get 2D context from canvas\");\n }\n this.ctx = ctx;\n\n // Setup HiDPI\n this.setupHiDPI();\n\n // Initialize subsystems\n this.eventManager = new CanvasEventManager(canvas, engine);\n this.inputOverlay = new InputOverlay(\n (canvas as any).parentElement || (typeof document !== \"undefined\" ? document.body : null)\n );\n this.accessibilityLayer = new AccessibilityLayer(\n (canvas as any).parentElement || (typeof document !== \"undefined\" ? document.body : null),\n this.options.enableAccessibility || false\n );\n\n // Listen for redraw requests from event manager\n this.canvas.addEventListener(\"hypen:redraw\", () => this.scheduleRedraw());\n\n // Don't schedule initial render - wait for patches\n }\n\n /**\n * Setup HiDPI rendering\n */\n private setupHiDPI(): void {\n const dpr = this.options.devicePixelRatio || 1;\n const rect = this.canvas.getBoundingClientRect();\n\n this.canvas.width = rect.width * dpr;\n this.canvas.height = rect.height * dpr;\n\n this.ctx.scale(dpr, dpr);\n\n // Update canvas display size\n this.canvas.style.width = `${rect.width}px`;\n this.canvas.style.height = `${rect.height}px`;\n }\n\n /**\n * Apply patches from engine\n */\n applyPatches(patches: Patch[]): void {\n for (const patch of patches) {\n this.applyPatch(patch);\n }\n\n // Update accessibility layer\n if (this.rootNode) {\n this.accessibilityLayer.syncTree(this.rootNode);\n }\n\n // Schedule redraw\n this.scheduleRedraw();\n }\n\n /**\n * Apply single patch\n */\n private applyPatch(patch: Patch): void {\n switch (patch.type) {\n case \"create\":\n this.onCreate(patch.id!, (patch as any).element_type!, patch.props || {});\n break;\n\n case \"setProp\":\n this.onSetProp(patch.id!, patch.name!, patch.value);\n break;\n\n case \"setText\":\n this.onSetText(patch.id!, patch.text!);\n break;\n\n case \"insert\":\n this.onInsert((patch as any).parent_id!, patch.id!, (patch as any).before_id);\n break;\n\n case \"move\":\n this.onMove((patch as any).parent_id!, patch.id!, (patch as any).before_id);\n break;\n\n case \"remove\":\n this.onRemove(patch.id!);\n break;\n }\n }\n\n /**\n * Create new virtual node\n */\n private onCreate(id: string, elementType: string, props: Record<string, any>): void {\n const node: VirtualNode = {\n id,\n type: elementType,\n props: props instanceof Map ? Object.fromEntries(props) : props,\n children: [],\n parent: null,\n visible: true,\n opacity: parseFloat(props.opacity) || 1,\n clickable: elementType === \"button\" || !!props.onclick,\n hoverable: true,\n focusable: elementType === \"input\" || elementType === \"textarea\" || elementType === \"button\",\n focused: false,\n hovered: false,\n };\n\n this.nodes.set(id, node);\n }\n\n /**\n * Set property on node\n */\n private onSetProp(id: string, name: string, value: any): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n node.props[name] = value;\n\n // Update computed properties\n if (name === \"visible\") {\n node.visible = !!value;\n }\n if (name === \"opacity\") {\n node.opacity = parseFloat(value) || 1;\n }\n\n // Update accessibility\n this.accessibilityLayer.updateNode(node);\n }\n\n /**\n * Set text on node\n */\n private onSetText(id: string, text: string): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n node.props[0] = text;\n\n // Update accessibility\n this.accessibilityLayer.updateNode(node);\n }\n\n /**\n * Insert node into tree\n */\n private onInsert(parentId: string, id: string, beforeId?: string): void {\n const child = this.nodes.get(id);\n if (!child) return;\n\n // Check if this is setting the root node (parent_id === id === \"root\" or similar)\n if (parentId === \"root\" && id === \"root\") {\n this.rootNode = child;\n this.eventManager.setRootNode(child);\n return;\n }\n\n // Otherwise find the parent node\n const parent = this.nodes.get(parentId);\n if (!parent) {\n // If parent is \"root\", this might be the first real root node\n if (parentId === \"root\") {\n this.rootNode = child;\n this.eventManager.setRootNode(child);\n }\n return;\n }\n\n // Insert child into parent\n child.parent = parent;\n\n if (beforeId) {\n const beforeIndex = parent.children.findIndex((c) => c.id === beforeId);\n if (beforeIndex >= 0) {\n parent.children.splice(beforeIndex, 0, child);\n } else {\n parent.children.push(child);\n }\n } else {\n parent.children.push(child);\n }\n }\n\n /**\n * Move node in tree\n */\n private onMove(parentId: string, id: string, beforeId?: string): void {\n // Remove from old parent\n const node = this.nodes.get(id);\n if (!node || !node.parent) return;\n\n const oldParent = node.parent;\n const oldIndex = oldParent.children.indexOf(node);\n if (oldIndex >= 0) {\n oldParent.children.splice(oldIndex, 1);\n }\n\n // Insert into new location\n this.onInsert(parentId, id, beforeId);\n }\n\n /**\n * Remove node from tree\n */\n private onRemove(id: string): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n // Remove from parent\n if (node.parent) {\n const index = node.parent.children.indexOf(node);\n if (index >= 0) {\n node.parent.children.splice(index, 1);\n }\n }\n\n // Remove from root\n if (this.rootNode === node) {\n this.rootNode = null;\n this.eventManager.setRootNode(null);\n }\n\n // Remove from nodes map\n this.nodes.delete(id);\n }\n\n /**\n * Schedule redraw\n */\n private scheduleRedraw(): void {\n if (this.rafId !== null) return;\n\n // Use requestAnimationFrame if available (browser), otherwise render immediately (tests)\n if (typeof requestAnimationFrame !== \"undefined\") {\n this.rafId = requestAnimationFrame(() => {\n this.render();\n this.rafId = null;\n });\n } else {\n // In non-browser environments (tests), render immediately\n this.render();\n }\n }\n\n /**\n * Main render function\n */\n private render(): void {\n const startTime = performance.now();\n\n // Clear canvas\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n // Draw background\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = this.options.backgroundColor;\n this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n // Layout and paint\n if (this.rootNode) {\n // Compute layout\n const dpr = this.options.devicePixelRatio || 1;\n computeLayout(\n this.ctx,\n this.rootNode,\n this.canvas.width / dpr,\n this.canvas.height / dpr\n );\n\n // Paint\n paintNode(this.ctx, this.rootNode);\n\n // Debug: show layout bounds\n if (this.options.showLayoutBounds) {\n this.drawLayoutBounds(this.rootNode);\n }\n }\n\n // Performance logging\n if (this.options.logPerformance) {\n const elapsed = performance.now() - startTime;\n this.frameCount++;\n if (performance.now() - this.lastFrameTime > 1000) {\n console.log(`Canvas FPS: ${this.frameCount}, Last frame: ${elapsed.toFixed(2)}ms`);\n this.frameCount = 0;\n this.lastFrameTime = performance.now();\n }\n }\n }\n\n /**\n * Draw layout bounds for debugging\n */\n private drawLayoutBounds(node: VirtualNode): void {\n if (!node.layout) return;\n\n const layout = node.layout;\n\n this.ctx.strokeStyle = \"#ff0000\";\n this.ctx.lineWidth = 1;\n this.ctx.strokeRect(layout.x, layout.y, layout.width, layout.height);\n\n for (const child of node.children) {\n this.drawLayoutBounds(child);\n }\n }\n\n /**\n * Get node by ID\n */\n getNode(id: string): VirtualNode | undefined {\n return this.nodes.get(id);\n }\n\n /**\n * Clear renderer\n */\n clear(): void {\n this.rootNode = null;\n this.nodes.clear();\n this.eventManager.setRootNode(null);\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n /**\n * Register custom painter\n */\n registerPainter(type: string, painter: PainterFunction): void {\n registerPainter(type, painter);\n }\n\n /**\n * Set renderer options\n */\n setOptions(options: Partial<CanvasRendererOptions>): void {\n this.options = { ...this.options, ...options };\n this.accessibilityLayer.setEnabled(this.options.enableAccessibility || false);\n }\n\n /**\n * Destroy renderer\n */\n destroy(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n }\n this.eventManager.destroy();\n this.accessibilityLayer.destroy();\n }\n}\n\n"
|
|
12
|
+
"/**\n * Canvas Renderer\n *\n * Main renderer class that orchestrates layout, painting, and events\n */\n\nimport type { Renderer, Patch } from \"@hypen-space/core\";\n\n// Interface for the engine that canvas renderer needs\ninterface IEngine {\n dispatchAction(name: string, payload?: any): void;\n}\nimport type {\n VirtualNode,\n CanvasRendererOptions,\n PainterFunction,\n LayoutFunction,\n} from \"./types.js\";\nimport { computeLayout } from \"./layout.js\";\nimport { paintNode, registerPainter } from \"./paint.js\";\nimport { CanvasEventManager } from \"./events.js\";\nimport { InputOverlay } from \"./input.js\";\nimport { AccessibilityLayer } from \"./accessibility.js\";\nimport { findNodeById } from \"./utils.js\";\n\nconst DEFAULT_OPTIONS: CanvasRendererOptions = {\n devicePixelRatio: typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 1,\n backgroundColor: \"#ffffff\",\n enableAccessibility: true,\n enableHitTesting: true,\n enableInputOverlay: true,\n enableDirtyRects: false,\n enableLayerCaching: false,\n maxLayerCacheSize: 10,\n showLayoutBounds: false,\n showDirtyRects: false,\n logPerformance: false,\n};\n\n/**\n * Canvas Renderer\n */\nexport class CanvasRenderer implements Renderer {\n private canvas: HTMLCanvasElement;\n private ctx: CanvasRenderingContext2D;\n private engine: IEngine;\n private options: CanvasRendererOptions;\n \n private rootNode: VirtualNode | null = null;\n private nodes = new Map<string, VirtualNode>();\n \n private eventManager: CanvasEventManager;\n private inputOverlay: InputOverlay;\n private accessibilityLayer: AccessibilityLayer;\n \n private rafId: number | null = null;\n private needsRedraw = false;\n \n private frameCount = 0;\n private lastFrameTime = 0;\n\n constructor(canvas: HTMLCanvasElement, engine: IEngine, options?: Partial<CanvasRendererOptions>) {\n this.canvas = canvas;\n this.engine = engine;\n this.options = { ...DEFAULT_OPTIONS, ...options };\n\n // Get context\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to get 2D context from canvas\");\n }\n this.ctx = ctx;\n\n // Setup HiDPI\n this.setupHiDPI();\n\n // Initialize subsystems\n this.eventManager = new CanvasEventManager(canvas, engine);\n this.inputOverlay = new InputOverlay(\n (canvas as any).parentElement || (typeof document !== \"undefined\" ? document.body : null)\n );\n this.accessibilityLayer = new AccessibilityLayer(\n (canvas as any).parentElement || (typeof document !== \"undefined\" ? document.body : null),\n this.options.enableAccessibility || false\n );\n\n // Listen for redraw requests from event manager\n this.canvas.addEventListener(\"hypen:redraw\", () => this.scheduleRedraw());\n\n // Don't schedule initial render - wait for patches\n }\n\n /**\n * Setup HiDPI rendering\n */\n private setupHiDPI(): void {\n const dpr = this.options.devicePixelRatio || 1;\n const rect = this.canvas.getBoundingClientRect();\n\n this.canvas.width = rect.width * dpr;\n this.canvas.height = rect.height * dpr;\n\n this.ctx.scale(dpr, dpr);\n\n // Update canvas display size\n this.canvas.style.width = `${rect.width}px`;\n this.canvas.style.height = `${rect.height}px`;\n }\n\n /**\n * Apply patches from engine\n */\n applyPatches(patches: Patch[]): void {\n for (const patch of patches) {\n this.applyPatch(patch);\n }\n\n // Update accessibility layer\n if (this.rootNode) {\n this.accessibilityLayer.syncTree(this.rootNode);\n }\n\n // Schedule redraw\n this.scheduleRedraw();\n }\n\n /**\n * Apply single patch\n */\n private applyPatch(patch: Patch): void {\n switch (patch.type) {\n case \"create\":\n this.onCreate(patch.id!, (patch as any).element_type!, patch.props || {});\n break;\n\n case \"setProp\":\n this.onSetProp(patch.id!, patch.name!, patch.value);\n break;\n\n case \"setText\":\n this.onSetText(patch.id!, patch.text!);\n break;\n\n case \"insert\":\n this.onInsert((patch as any).parent_id!, patch.id!, (patch as any).before_id);\n break;\n\n case \"move\":\n this.onMove((patch as any).parent_id!, patch.id!, (patch as any).before_id);\n break;\n\n case \"remove\":\n this.onRemove(patch.id!);\n break;\n }\n }\n\n /**\n * Create new virtual node\n */\n private onCreate(id: string, elementType: string, props: Record<string, any>): void {\n const node: VirtualNode = {\n id,\n type: elementType,\n props: props instanceof Map ? Object.fromEntries(props) : props,\n children: [],\n parent: null,\n visible: true,\n opacity: parseFloat(props.opacity) || 1,\n clickable: elementType === \"button\" || !!props.onclick,\n hoverable: true,\n focusable: elementType === \"input\" || elementType === \"textarea\" || elementType === \"button\",\n focused: false,\n hovered: false,\n };\n\n this.nodes.set(id, node);\n }\n\n /**\n * Set property on node\n */\n private onSetProp(id: string, name: string, value: any): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n node.props[name] = value;\n\n // Update computed properties\n if (name === \"visible\") {\n node.visible = !!value;\n }\n if (name === \"opacity\") {\n node.opacity = parseFloat(value) || 1;\n }\n\n // Update accessibility\n this.accessibilityLayer.updateNode(node);\n }\n\n /**\n * Set text on node\n */\n private onSetText(id: string, text: string): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n node.props[0] = text;\n\n // Update accessibility\n this.accessibilityLayer.updateNode(node);\n }\n\n /**\n * Insert node into tree\n */\n private onInsert(parentId: string, id: string, beforeId?: string): void {\n const child = this.nodes.get(id);\n if (!child) return;\n\n // Check if this is setting the root node (parent_id === id === \"root\" or similar)\n if (parentId === \"root\" && id === \"root\") {\n this.rootNode = child;\n this.eventManager.setRootNode(child);\n return;\n }\n\n // Otherwise find the parent node\n const parent = this.nodes.get(parentId);\n if (!parent) {\n // If parent is \"root\", this might be the first real root node\n if (parentId === \"root\") {\n this.rootNode = child;\n this.eventManager.setRootNode(child);\n }\n return;\n }\n\n // Insert child into parent\n child.parent = parent;\n\n if (beforeId) {\n const beforeIndex = parent.children.findIndex((c) => c.id === beforeId);\n if (beforeIndex >= 0) {\n parent.children.splice(beforeIndex, 0, child);\n } else {\n parent.children.push(child);\n }\n } else {\n parent.children.push(child);\n }\n }\n\n /**\n * Move node in tree\n */\n private onMove(parentId: string, id: string, beforeId?: string): void {\n // Remove from old parent\n const node = this.nodes.get(id);\n if (!node || !node.parent) return;\n\n const oldParent = node.parent;\n const oldIndex = oldParent.children.indexOf(node);\n if (oldIndex >= 0) {\n oldParent.children.splice(oldIndex, 1);\n }\n\n // Insert into new location\n this.onInsert(parentId, id, beforeId);\n }\n\n /**\n * Remove node from tree\n */\n private onRemove(id: string): void {\n const node = this.nodes.get(id);\n if (!node) return;\n\n // Remove from parent\n if (node.parent) {\n const index = node.parent.children.indexOf(node);\n if (index >= 0) {\n node.parent.children.splice(index, 1);\n }\n }\n\n // Remove from root\n if (this.rootNode === node) {\n this.rootNode = null;\n this.eventManager.setRootNode(null);\n }\n\n // Remove from nodes map\n this.nodes.delete(id);\n }\n\n /**\n * Schedule redraw\n */\n private scheduleRedraw(): void {\n if (this.rafId !== null) return;\n\n // Use requestAnimationFrame if available (browser), otherwise render immediately (tests)\n if (typeof requestAnimationFrame !== \"undefined\") {\n this.rafId = requestAnimationFrame(() => {\n this.render();\n this.rafId = null;\n });\n } else {\n // In non-browser environments (tests), render immediately\n this.render();\n }\n }\n\n /**\n * Main render function\n */\n private render(): void {\n const startTime = performance.now();\n\n // Clear canvas\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n // Draw background\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = this.options.backgroundColor;\n this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n // Layout and paint\n if (this.rootNode) {\n // Compute layout\n const dpr = this.options.devicePixelRatio || 1;\n computeLayout(\n this.ctx,\n this.rootNode,\n this.canvas.width / dpr,\n this.canvas.height / dpr\n );\n\n // Paint\n paintNode(this.ctx, this.rootNode);\n\n // Debug: show layout bounds\n if (this.options.showLayoutBounds) {\n this.drawLayoutBounds(this.rootNode);\n }\n }\n\n // Performance logging\n if (this.options.logPerformance) {\n const elapsed = performance.now() - startTime;\n this.frameCount++;\n if (performance.now() - this.lastFrameTime > 1000) {\n console.log(`Canvas FPS: ${this.frameCount}, Last frame: ${elapsed.toFixed(2)}ms`);\n this.frameCount = 0;\n this.lastFrameTime = performance.now();\n }\n }\n }\n\n /**\n * Draw layout bounds for debugging\n */\n private drawLayoutBounds(node: VirtualNode): void {\n if (!node.layout) return;\n\n const layout = node.layout;\n\n this.ctx.strokeStyle = \"#ff0000\";\n this.ctx.lineWidth = 1;\n this.ctx.strokeRect(layout.x, layout.y, layout.width, layout.height);\n\n for (const child of node.children) {\n this.drawLayoutBounds(child);\n }\n }\n\n /**\n * Get node by ID\n */\n getNode(id: string): VirtualNode | undefined {\n return this.nodes.get(id);\n }\n\n /**\n * Clear renderer\n */\n clear(): void {\n this.rootNode = null;\n this.nodes.clear();\n this.eventManager.setRootNode(null);\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n /**\n * Register custom painter\n */\n registerPainter(type: string, painter: PainterFunction): void {\n registerPainter(type, painter);\n }\n\n /**\n * Set renderer options\n */\n setOptions(options: Partial<CanvasRendererOptions>): void {\n this.options = { ...this.options, ...options };\n this.accessibilityLayer.setEnabled(this.options.enableAccessibility || false);\n }\n\n /**\n * Destroy renderer\n */\n destroy(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n }\n this.eventManager.destroy();\n this.accessibilityLayer.destroy();\n }\n}\n\n"
|
|
13
13
|
],
|
|
14
14
|
"mappings": "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",
|
|
15
15
|
"debugId": "000BEE03B23C15A564756E2164756E21",
|
|
@@ -28,7 +28,7 @@ var __export = (target, all) => {
|
|
|
28
28
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
29
29
|
|
|
30
30
|
// src/dom/element-data.ts
|
|
31
|
-
import { getElementDisposables } from "@hypen/core";
|
|
31
|
+
import { getElementDisposables } from "@hypen-space/core";
|
|
32
32
|
function getHypenData(element) {
|
|
33
33
|
let data = elementDataMap.get(element);
|
|
34
34
|
if (!data) {
|
|
@@ -125,7 +125,7 @@ import {
|
|
|
125
125
|
getElementDisposables as getElementDisposables2,
|
|
126
126
|
disposableListener,
|
|
127
127
|
disposableTimeout
|
|
128
|
-
} from "@hypen/core";
|
|
128
|
+
} from "@hypen-space/core";
|
|
129
129
|
function toPlainObject(value) {
|
|
130
130
|
if (value instanceof Map) {
|
|
131
131
|
const obj = {};
|
|
@@ -420,4 +420,4 @@ export {
|
|
|
420
420
|
eventHandlers
|
|
421
421
|
};
|
|
422
422
|
|
|
423
|
-
//# debugId=
|
|
423
|
+
//# debugId=436C6B268F7401DA64756E2164756E21
|