@hypen-space/web 0.2.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.
Files changed (195) hide show
  1. package/dist/chunk-2s02mkzs.js +32 -0
  2. package/dist/chunk-2s02mkzs.js.map +9 -0
  3. package/dist/src/canvas/accessibility.js +152 -0
  4. package/dist/src/canvas/accessibility.js.map +10 -0
  5. package/dist/src/canvas/events.js +198 -0
  6. package/dist/src/canvas/events.js.map +10 -0
  7. package/dist/src/canvas/index.js +28 -0
  8. package/dist/src/canvas/index.js.map +9 -0
  9. package/dist/src/canvas/input.js +132 -0
  10. package/dist/src/canvas/input.js.map +10 -0
  11. package/dist/src/canvas/layout.js +309 -0
  12. package/dist/src/canvas/layout.js.map +10 -0
  13. package/dist/src/canvas/paint.js +878 -0
  14. package/dist/src/canvas/paint.js.map +10 -0
  15. package/dist/src/canvas/renderer.js +276 -0
  16. package/dist/src/canvas/renderer.js.map +10 -0
  17. package/dist/src/canvas/text.js +118 -0
  18. package/dist/src/canvas/text.js.map +10 -0
  19. package/dist/src/canvas/types.js +2 -0
  20. package/dist/src/canvas/types.js.map +9 -0
  21. package/dist/src/canvas/utils.js +139 -0
  22. package/dist/src/canvas/utils.js.map +10 -0
  23. package/dist/src/dom/applicators/advanced-layout.js +111 -0
  24. package/dist/src/dom/applicators/advanced-layout.js.map +10 -0
  25. package/dist/src/dom/applicators/background.js +54 -0
  26. package/dist/src/dom/applicators/background.js.map +10 -0
  27. package/dist/src/dom/applicators/border.js +33 -0
  28. package/dist/src/dom/applicators/border.js.map +10 -0
  29. package/dist/src/dom/applicators/color.js +36 -0
  30. package/dist/src/dom/applicators/color.js.map +10 -0
  31. package/dist/src/dom/applicators/display.js +57 -0
  32. package/dist/src/dom/applicators/display.js.map +10 -0
  33. package/dist/src/dom/applicators/effects.js +89 -0
  34. package/dist/src/dom/applicators/effects.js.map +10 -0
  35. package/dist/src/dom/applicators/events.js +518 -0
  36. package/dist/src/dom/applicators/events.js.map +10 -0
  37. package/dist/src/dom/applicators/font.js +39 -0
  38. package/dist/src/dom/applicators/font.js.map +10 -0
  39. package/dist/src/dom/applicators/index.js +296 -0
  40. package/dist/src/dom/applicators/index.js.map +10 -0
  41. package/dist/src/dom/applicators/layout.js +86 -0
  42. package/dist/src/dom/applicators/layout.js.map +10 -0
  43. package/dist/src/dom/applicators/margin.js +32 -0
  44. package/dist/src/dom/applicators/margin.js.map +10 -0
  45. package/dist/src/dom/applicators/padding.js +35 -0
  46. package/dist/src/dom/applicators/padding.js.map +10 -0
  47. package/dist/src/dom/applicators/size.js +42 -0
  48. package/dist/src/dom/applicators/size.js.map +10 -0
  49. package/dist/src/dom/applicators/transform.js +92 -0
  50. package/dist/src/dom/applicators/transform.js.map +10 -0
  51. package/dist/src/dom/applicators/transition.js +66 -0
  52. package/dist/src/dom/applicators/transition.js.map +10 -0
  53. package/dist/src/dom/applicators/typography.js +87 -0
  54. package/dist/src/dom/applicators/typography.js.map +10 -0
  55. package/dist/src/dom/canvas/index.js +50 -0
  56. package/dist/src/dom/canvas/index.js.map +10 -0
  57. package/dist/src/dom/components/audio.js +48 -0
  58. package/dist/src/dom/components/audio.js.map +10 -0
  59. package/dist/src/dom/components/avatar.js +58 -0
  60. package/dist/src/dom/components/avatar.js.map +10 -0
  61. package/dist/src/dom/components/badge.js +55 -0
  62. package/dist/src/dom/components/badge.js.map +10 -0
  63. package/dist/src/dom/components/button.js +29 -0
  64. package/dist/src/dom/components/button.js.map +10 -0
  65. package/dist/src/dom/components/card.js +33 -0
  66. package/dist/src/dom/components/card.js.map +10 -0
  67. package/dist/src/dom/components/center.js +32 -0
  68. package/dist/src/dom/components/center.js.map +10 -0
  69. package/dist/src/dom/components/checkbox.js +54 -0
  70. package/dist/src/dom/components/checkbox.js.map +10 -0
  71. package/dist/src/dom/components/column.js +31 -0
  72. package/dist/src/dom/components/column.js.map +10 -0
  73. package/dist/src/dom/components/container.js +29 -0
  74. package/dist/src/dom/components/container.js.map +10 -0
  75. package/dist/src/dom/components/divider.js +45 -0
  76. package/dist/src/dom/components/divider.js.map +10 -0
  77. package/dist/src/dom/components/grid.js +44 -0
  78. package/dist/src/dom/components/grid.js.map +10 -0
  79. package/dist/src/dom/components/heading.js +47 -0
  80. package/dist/src/dom/components/heading.js.map +10 -0
  81. package/dist/src/dom/components/image.js +39 -0
  82. package/dist/src/dom/components/image.js.map +10 -0
  83. package/dist/src/dom/components/index.js +217 -0
  84. package/dist/src/dom/components/index.js.map +10 -0
  85. package/dist/src/dom/components/input.js +41 -0
  86. package/dist/src/dom/components/input.js.map +10 -0
  87. package/dist/src/dom/components/link.js +42 -0
  88. package/dist/src/dom/components/link.js.map +10 -0
  89. package/dist/src/dom/components/list.js +42 -0
  90. package/dist/src/dom/components/list.js.map +10 -0
  91. package/dist/src/dom/components/paragraph.js +35 -0
  92. package/dist/src/dom/components/paragraph.js.map +10 -0
  93. package/dist/src/dom/components/progressbar.js +57 -0
  94. package/dist/src/dom/components/progressbar.js.map +10 -0
  95. package/dist/src/dom/components/route.js +44 -0
  96. package/dist/src/dom/components/route.js.map +10 -0
  97. package/dist/src/dom/components/router.js +33 -0
  98. package/dist/src/dom/components/router.js.map +10 -0
  99. package/dist/src/dom/components/row.js +31 -0
  100. package/dist/src/dom/components/row.js.map +10 -0
  101. package/dist/src/dom/components/select.js +57 -0
  102. package/dist/src/dom/components/select.js.map +10 -0
  103. package/dist/src/dom/components/slider.js +48 -0
  104. package/dist/src/dom/components/slider.js.map +10 -0
  105. package/dist/src/dom/components/spacer.js +30 -0
  106. package/dist/src/dom/components/spacer.js.map +10 -0
  107. package/dist/src/dom/components/spinner.js +65 -0
  108. package/dist/src/dom/components/spinner.js.map +10 -0
  109. package/dist/src/dom/components/stack.js +45 -0
  110. package/dist/src/dom/components/stack.js.map +10 -0
  111. package/dist/src/dom/components/switch.js +83 -0
  112. package/dist/src/dom/components/switch.js.map +10 -0
  113. package/dist/src/dom/components/text.js +37 -0
  114. package/dist/src/dom/components/text.js.map +10 -0
  115. package/dist/src/dom/components/textarea.js +51 -0
  116. package/dist/src/dom/components/textarea.js.map +10 -0
  117. package/dist/src/dom/components/video.js +51 -0
  118. package/dist/src/dom/components/video.js.map +10 -0
  119. package/dist/src/dom/debug.js +170 -0
  120. package/dist/src/dom/debug.js.map +10 -0
  121. package/dist/src/dom/events.js +112 -0
  122. package/dist/src/dom/events.js.map +10 -0
  123. package/dist/src/dom/index.js +73 -0
  124. package/dist/src/dom/index.js.map +9 -0
  125. package/dist/src/dom/renderer.js +277 -0
  126. package/dist/src/dom/renderer.js.map +10 -0
  127. package/dist/src/index.js +89 -0
  128. package/dist/src/index.js.map +9 -0
  129. package/package.json +84 -0
  130. package/src/canvas/QUICKSTART.md +421 -0
  131. package/src/canvas/README.md +376 -0
  132. package/src/canvas/accessibility.ts +218 -0
  133. package/src/canvas/events.ts +307 -0
  134. package/src/canvas/index.ts +35 -0
  135. package/src/canvas/input.ts +210 -0
  136. package/src/canvas/layout.ts +401 -0
  137. package/src/canvas/paint.ts +1321 -0
  138. package/src/canvas/renderer.ts +422 -0
  139. package/src/canvas/text.ts +182 -0
  140. package/src/canvas/types.ts +137 -0
  141. package/src/canvas/utils.ts +218 -0
  142. package/src/dom/README.md +265 -0
  143. package/src/dom/applicators/advanced-layout.ts +128 -0
  144. package/src/dom/applicators/background.ts +50 -0
  145. package/src/dom/applicators/border.ts +19 -0
  146. package/src/dom/applicators/color.ts +23 -0
  147. package/src/dom/applicators/display.ts +54 -0
  148. package/src/dom/applicators/effects.ts +97 -0
  149. package/src/dom/applicators/events.ts +689 -0
  150. package/src/dom/applicators/font.ts +27 -0
  151. package/src/dom/applicators/index.ts +354 -0
  152. package/src/dom/applicators/layout.ts +92 -0
  153. package/src/dom/applicators/margin.ts +18 -0
  154. package/src/dom/applicators/padding.ts +18 -0
  155. package/src/dom/applicators/size.ts +31 -0
  156. package/src/dom/applicators/transform.ts +93 -0
  157. package/src/dom/applicators/transition.ts +65 -0
  158. package/src/dom/applicators/typography.ts +91 -0
  159. package/src/dom/canvas/index.ts +60 -0
  160. package/src/dom/components/audio.ts +45 -0
  161. package/src/dom/components/avatar.ts +49 -0
  162. package/src/dom/components/badge.ts +45 -0
  163. package/src/dom/components/button.ts +13 -0
  164. package/src/dom/components/card.ts +19 -0
  165. package/src/dom/components/center.ts +16 -0
  166. package/src/dom/components/checkbox.ts +54 -0
  167. package/src/dom/components/column.ts +15 -0
  168. package/src/dom/components/container.ts +13 -0
  169. package/src/dom/components/divider.ts +37 -0
  170. package/src/dom/components/grid.ts +40 -0
  171. package/src/dom/components/heading.ts +41 -0
  172. package/src/dom/components/image.ts +27 -0
  173. package/src/dom/components/index.ts +115 -0
  174. package/src/dom/components/input.ts +29 -0
  175. package/src/dom/components/link.ts +35 -0
  176. package/src/dom/components/list.ts +30 -0
  177. package/src/dom/components/paragraph.ts +23 -0
  178. package/src/dom/components/progressbar.ts +51 -0
  179. package/src/dom/components/route.ts +37 -0
  180. package/src/dom/components/router.ts +22 -0
  181. package/src/dom/components/row.ts +15 -0
  182. package/src/dom/components/select.ts +56 -0
  183. package/src/dom/components/slider.ts +45 -0
  184. package/src/dom/components/spacer.ts +16 -0
  185. package/src/dom/components/spinner.ts +60 -0
  186. package/src/dom/components/stack.ts +34 -0
  187. package/src/dom/components/switch.ts +86 -0
  188. package/src/dom/components/text.ts +24 -0
  189. package/src/dom/components/textarea.ts +50 -0
  190. package/src/dom/components/video.ts +50 -0
  191. package/src/dom/debug.ts +247 -0
  192. package/src/dom/events.ts +168 -0
  193. package/src/dom/index.ts +11 -0
  194. package/src/dom/renderer.ts +327 -0
  195. package/src/index.ts +56 -0
@@ -0,0 +1,112 @@
1
+ import"../../chunk-2s02mkzs.js";
2
+
3
+ // src/dom/events.ts
4
+ class EventManager {
5
+ engine;
6
+ bindings = new Map;
7
+ constructor(engine) {
8
+ this.engine = engine;
9
+ }
10
+ attach(elementId, element, eventName, actionName) {
11
+ const domEventName = eventName === "onClick" ? "click" : eventName;
12
+ console.log(`[EventManager] Attaching ${eventName} (DOM: ${domEventName}) to element ${elementId}, action: ${actionName}`);
13
+ const listener = (event) => {
14
+ console.log(`\uD83D\uDD25 [EventManager] Event fired: ${eventName} on ${elementId}, dispatching action: ${actionName}`);
15
+ console.log(`\uD83D\uDD25 [EventManager] Event object:`, event);
16
+ console.log(`\uD83D\uDD25 [EventManager] Element:`, element);
17
+ if (eventName === "submit" || eventName === "click" && element.tagName === "A") {
18
+ event.preventDefault();
19
+ }
20
+ const payload = this.extractEventData(event, element);
21
+ console.log(`\uD83D\uDD25 [EventManager] Event payload:`, payload);
22
+ console.log(`\uD83D\uDD25 [EventManager] Calling engine.dispatchAction(${actionName})`);
23
+ try {
24
+ this.engine.dispatchAction(actionName, payload);
25
+ console.log(`\uD83D\uDD25 [EventManager] ✅ dispatchAction succeeded`);
26
+ } catch (error) {
27
+ console.error(`\uD83D\uDD25 [EventManager] ❌ dispatchAction failed:`, error);
28
+ }
29
+ };
30
+ let elementBindings = this.bindings.get(elementId);
31
+ if (!elementBindings) {
32
+ elementBindings = new Map;
33
+ this.bindings.set(elementId, elementBindings);
34
+ }
35
+ elementBindings.set(eventName, listener);
36
+ element.addEventListener(domEventName, listener);
37
+ console.log(`[EventManager] Listener attached to DOM for ${domEventName}`);
38
+ console.log(`[EventManager] Element details:`, {
39
+ tagName: element.tagName,
40
+ id: element.id,
41
+ dataset: element.dataset,
42
+ textContent: element.textContent?.substring(0, 50)
43
+ });
44
+ if (domEventName === "click") {
45
+ element.addEventListener("click", (e) => {
46
+ console.log(`\uD83E\uDDEA [TEST] Raw DOM click detected on ${element.tagName}`, e);
47
+ });
48
+ }
49
+ }
50
+ detach(elementId, element, eventName) {
51
+ const elementBindings = this.bindings.get(elementId);
52
+ if (!elementBindings)
53
+ return;
54
+ const listener = elementBindings.get(eventName);
55
+ if (listener) {
56
+ element.removeEventListener(eventName, listener);
57
+ elementBindings.delete(eventName);
58
+ }
59
+ if (elementBindings.size === 0) {
60
+ this.bindings.delete(elementId);
61
+ }
62
+ }
63
+ extractEventData(event, element) {
64
+ const data = {
65
+ type: event.type,
66
+ timestamp: Date.now()
67
+ };
68
+ if (event instanceof MouseEvent) {
69
+ data.clientX = event.clientX;
70
+ data.clientY = event.clientY;
71
+ data.button = event.button;
72
+ }
73
+ if (event instanceof KeyboardEvent) {
74
+ data.key = event.key;
75
+ data.code = event.code;
76
+ data.ctrlKey = event.ctrlKey;
77
+ data.shiftKey = event.shiftKey;
78
+ data.altKey = event.altKey;
79
+ data.metaKey = event.metaKey;
80
+ }
81
+ if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {
82
+ data.value = element.value;
83
+ }
84
+ if (element instanceof HTMLSelectElement) {
85
+ data.value = element.value;
86
+ data.selectedIndex = element.selectedIndex;
87
+ }
88
+ if (event.type === "submit" && element instanceof HTMLFormElement) {
89
+ data.formData = new FormData(element);
90
+ }
91
+ return data;
92
+ }
93
+ clearElement(elementId, element) {
94
+ const elementBindings = this.bindings.get(elementId);
95
+ if (!elementBindings)
96
+ return;
97
+ for (const [eventName, listener] of elementBindings) {
98
+ element.removeEventListener(eventName, listener);
99
+ }
100
+ this.bindings.delete(elementId);
101
+ }
102
+ clearAll() {
103
+ this.bindings.clear();
104
+ }
105
+ }
106
+ export {
107
+ EventManager
108
+ };
109
+
110
+ export { EventManager };
111
+
112
+ //# debugId=3F8DDE05C5522D9264756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/dom/events.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Event Management System\n *\n * Handles DOM event binding and action dispatching\n */\n\n// Interface for the engine that EventManager needs\ninterface IEngine {\n dispatchAction(name: string, payload?: any): void;\n}\n\nexport interface EventBinding {\n elementId: string;\n eventName: string;\n actionName: string;\n}\n\nexport class EventManager {\n private engine: IEngine;\n private bindings: Map<string, Map<string, EventListener>> = new Map();\n\n constructor(engine: IEngine) {\n this.engine = engine;\n }\n\n /**\n * Attach an event listener to an element\n */\n attach(elementId: string, element: HTMLElement, eventName: string, actionName: string): void {\n // Convert onClick to click for DOM events\n const domEventName = eventName === \"onClick\" ? \"click\" : eventName;\n console.log(`[EventManager] Attaching ${eventName} (DOM: ${domEventName}) to element ${elementId}, action: ${actionName}`);\n\n // Create event listener that dispatches action\n const listener = (event: Event) => {\n console.log(`🔥 [EventManager] Event fired: ${eventName} on ${elementId}, dispatching action: ${actionName}`);\n console.log(`🔥 [EventManager] Event object:`, event);\n console.log(`🔥 [EventManager] Element:`, element);\n\n // Prevent default for certain events\n if (eventName === \"submit\" || (eventName === \"click\" && element.tagName === \"A\")) {\n event.preventDefault();\n }\n\n // Extract event data\n const payload = this.extractEventData(event, element);\n console.log(`🔥 [EventManager] Event payload:`, payload);\n\n // Dispatch action to engine\n console.log(`🔥 [EventManager] Calling engine.dispatchAction(${actionName})`);\n try {\n this.engine.dispatchAction(actionName, payload);\n console.log(`🔥 [EventManager] ✅ dispatchAction succeeded`);\n } catch (error) {\n console.error(`🔥 [EventManager] ❌ dispatchAction failed:`, error);\n }\n };\n\n // Store listener reference\n let elementBindings = this.bindings.get(elementId);\n if (!elementBindings) {\n elementBindings = new Map();\n this.bindings.set(elementId, elementBindings);\n }\n elementBindings.set(eventName, listener);\n\n // Attach to DOM\n element.addEventListener(domEventName, listener);\n console.log(`[EventManager] Listener attached to DOM for ${domEventName}`);\n console.log(`[EventManager] Element details:`, {\n tagName: element.tagName,\n id: element.id,\n dataset: element.dataset,\n textContent: element.textContent?.substring(0, 50)\n });\n \n // Test: Add a simple click listener to verify DOM events work\n if (domEventName === \"click\") {\n element.addEventListener(\"click\", (e) => {\n console.log(`🧪 [TEST] Raw DOM click detected on ${element.tagName}`, e);\n });\n }\n }\n\n /**\n * Detach an event listener from an element\n */\n detach(elementId: string, element: HTMLElement, eventName: string): void {\n const elementBindings = this.bindings.get(elementId);\n if (!elementBindings) return;\n\n const listener = elementBindings.get(eventName);\n if (listener) {\n element.removeEventListener(eventName, listener);\n elementBindings.delete(eventName);\n }\n\n if (elementBindings.size === 0) {\n this.bindings.delete(elementId);\n }\n }\n\n /**\n * Extract relevant data from an event\n */\n private extractEventData(event: Event, element: HTMLElement): any {\n const data: any = {\n type: event.type,\n timestamp: Date.now(),\n };\n\n // Mouse events\n if (event instanceof MouseEvent) {\n data.clientX = event.clientX;\n data.clientY = event.clientY;\n data.button = event.button;\n }\n\n // Keyboard events\n if (event instanceof KeyboardEvent) {\n data.key = event.key;\n data.code = event.code;\n data.ctrlKey = event.ctrlKey;\n data.shiftKey = event.shiftKey;\n data.altKey = event.altKey;\n data.metaKey = event.metaKey;\n }\n\n // Input events (for form elements)\n if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {\n data.value = element.value;\n }\n\n // Select events\n if (element instanceof HTMLSelectElement) {\n data.value = element.value;\n data.selectedIndex = element.selectedIndex;\n }\n\n // Form events\n if (event.type === \"submit\" && element instanceof HTMLFormElement) {\n data.formData = new FormData(element);\n }\n\n return data;\n }\n\n /**\n * Clear all event bindings for an element\n */\n clearElement(elementId: string, element: HTMLElement): void {\n const elementBindings = this.bindings.get(elementId);\n if (!elementBindings) return;\n\n for (const [eventName, listener] of elementBindings) {\n element.removeEventListener(eventName, listener);\n }\n\n this.bindings.delete(elementId);\n }\n\n /**\n * Clear all event bindings\n */\n clearAll(): void {\n this.bindings.clear();\n }\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "3F8DDE05C5522D9264756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,73 @@
1
+ import {
2
+ EventManager
3
+ } from "./events.js";
4
+ import {
5
+ DOMRenderer
6
+ } from "./renderer.js";
7
+ import"./canvas/index.js";
8
+ import {
9
+ ComponentRegistry
10
+ } from "./components/index.js";
11
+ import"./components/list.js";
12
+ import"./components/textarea.js";
13
+ import"./components/grid.js";
14
+ import"./components/link.js";
15
+ import"./components/avatar.js";
16
+ import"./components/switch.js";
17
+ import"./components/badge.js";
18
+ import"./components/route.js";
19
+ import"./components/center.js";
20
+ import"./components/divider.js";
21
+ import"./components/spacer.js";
22
+ import"./components/input.js";
23
+ import"./components/stack.js";
24
+ import"./components/progressbar.js";
25
+ import"./components/button.js";
26
+ import"./components/heading.js";
27
+ import"./components/slider.js";
28
+ import"./components/card.js";
29
+ import"./components/container.js";
30
+ import"./components/video.js";
31
+ import"./components/spinner.js";
32
+ import"./components/row.js";
33
+ import"./components/select.js";
34
+ import"./components/router.js";
35
+ import"./components/audio.js";
36
+ import"./components/paragraph.js";
37
+ import"./components/text.js";
38
+ import {
39
+ ApplicatorRegistry
40
+ } from "./applicators/index.js";
41
+ import"./applicators/events.js";
42
+ import"./applicators/color.js";
43
+ import"./applicators/typography.js";
44
+ import"./applicators/effects.js";
45
+ import"./components/checkbox.js";
46
+ import"./components/column.js";
47
+ import"./components/image.js";
48
+ import"./applicators/margin.js";
49
+ import"./applicators/advanced-layout.js";
50
+ import"./applicators/display.js";
51
+ import"./applicators/size.js";
52
+ import"./applicators/font.js";
53
+ import"./applicators/background.js";
54
+ import"./applicators/transition.js";
55
+ import"./applicators/layout.js";
56
+ import {
57
+ RerenderTracker,
58
+ defaultDebugConfig
59
+ } from "./debug.js";
60
+ import"./applicators/padding.js";
61
+ import"./applicators/border.js";
62
+ import"./applicators/transform.js";
63
+ import"../../chunk-2s02mkzs.js";
64
+ export {
65
+ defaultDebugConfig,
66
+ RerenderTracker,
67
+ EventManager,
68
+ DOMRenderer,
69
+ ComponentRegistry,
70
+ ApplicatorRegistry
71
+ };
72
+
73
+ //# debugId=B37DC3169EBA00A264756E2164756E21
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "B37DC3169EBA00A264756E2164756E21",
8
+ "names": []
9
+ }
@@ -0,0 +1,277 @@
1
+ import {
2
+ canvasApplicators,
3
+ canvasHandler
4
+ } from "./canvas/index.js";
5
+ import {
6
+ ComponentRegistry
7
+ } from "./components/index.js";
8
+ import"./components/list.js";
9
+ import"./components/textarea.js";
10
+ import"./components/grid.js";
11
+ import"./components/link.js";
12
+ import"./components/avatar.js";
13
+ import"./components/switch.js";
14
+ import"./components/badge.js";
15
+ import"./components/route.js";
16
+ import"./components/center.js";
17
+ import"./components/divider.js";
18
+ import"./components/spacer.js";
19
+ import"./components/input.js";
20
+ import"./components/stack.js";
21
+ import"./components/progressbar.js";
22
+ import"./components/button.js";
23
+ import"./components/heading.js";
24
+ import"./components/slider.js";
25
+ import"./components/card.js";
26
+ import"./components/container.js";
27
+ import"./components/video.js";
28
+ import"./components/spinner.js";
29
+ import"./components/row.js";
30
+ import"./components/select.js";
31
+ import"./components/router.js";
32
+ import"./components/audio.js";
33
+ import"./components/paragraph.js";
34
+ import"./components/text.js";
35
+ import {
36
+ ApplicatorRegistry
37
+ } from "./applicators/index.js";
38
+ import"./applicators/events.js";
39
+ import"./applicators/color.js";
40
+ import"./applicators/typography.js";
41
+ import"./applicators/effects.js";
42
+ import"./components/checkbox.js";
43
+ import"./components/column.js";
44
+ import"./components/image.js";
45
+ import"./applicators/margin.js";
46
+ import"./applicators/advanced-layout.js";
47
+ import"./applicators/display.js";
48
+ import"./applicators/size.js";
49
+ import"./applicators/font.js";
50
+ import"./applicators/background.js";
51
+ import"./applicators/transition.js";
52
+ import"./applicators/layout.js";
53
+ import {
54
+ RerenderTracker,
55
+ defaultDebugConfig
56
+ } from "./debug.js";
57
+ import"./applicators/padding.js";
58
+ import"./applicators/border.js";
59
+ import"./applicators/transform.js";
60
+ import"../../chunk-2s02mkzs.js";
61
+
62
+ // src/dom/renderer.ts
63
+ class DOMRenderer {
64
+ container;
65
+ nodes = new Map;
66
+ rootId = null;
67
+ components;
68
+ applicators;
69
+ engine;
70
+ currentState = {};
71
+ routerContext = null;
72
+ globalContext = null;
73
+ componentInstances = new Map;
74
+ debugTracker;
75
+ constructor(container, engine, debugConfig) {
76
+ this.container = container;
77
+ this.engine = engine;
78
+ this.components = new ComponentRegistry;
79
+ this.applicators = new ApplicatorRegistry;
80
+ this.debugTracker = new RerenderTracker({ ...defaultDebugConfig, ...debugConfig });
81
+ this.components.register("canvas", canvasHandler);
82
+ for (const [name, handler] of Object.entries(canvasApplicators)) {
83
+ this.applicators.register(name, handler);
84
+ }
85
+ }
86
+ setContext(routerContext, globalContext) {
87
+ this.routerContext = routerContext;
88
+ this.globalContext = globalContext;
89
+ }
90
+ applyPatches(patches) {
91
+ for (const patch of patches) {
92
+ this.applyPatch(patch);
93
+ }
94
+ }
95
+ updateState(state) {
96
+ console.log(`[Renderer] Updating state:`, state);
97
+ this.currentState = state;
98
+ this.interpolateAllText();
99
+ }
100
+ mergeComponentState(componentState) {
101
+ this.currentState = { ...this.currentState, ...componentState };
102
+ console.log(`[Renderer] Merged state:`, this.currentState);
103
+ this.interpolateAllText();
104
+ }
105
+ interpolateAllText() {
106
+ for (const [id, element] of this.nodes.entries()) {
107
+ if (element.dataset.hypenType === "text" && element.dataset.textTemplate) {
108
+ const template = element.dataset.textTemplate;
109
+ const interpolated = this.interpolateText(template, this.currentState);
110
+ const currentText = element.textContent;
111
+ if (currentText !== interpolated) {
112
+ this.debugTracker.trackRerender(id, element, "interpolate");
113
+ }
114
+ element.textContent = interpolated;
115
+ }
116
+ }
117
+ }
118
+ interpolateText(template, state) {
119
+ return template.replace(/\$\{([^}]+)\}/g, (match, path) => {
120
+ try {
121
+ const value = path.split(".").reduce((obj, key) => {
122
+ if (key === "state")
123
+ return state;
124
+ return obj?.[key];
125
+ }, state);
126
+ return value !== undefined ? String(value) : match;
127
+ } catch {
128
+ return match;
129
+ }
130
+ });
131
+ }
132
+ applyPatch(patch) {
133
+ switch (patch.type) {
134
+ case "create":
135
+ this.onCreate(patch.id, patch.element_type, patch.props || {});
136
+ break;
137
+ case "setProp":
138
+ this.onSetProp(patch.id, patch.name, patch.value);
139
+ break;
140
+ case "setText":
141
+ this.onSetText(patch.id, patch.text);
142
+ break;
143
+ case "insert":
144
+ this.onInsert(patch.parent_id, patch.id, patch.before_id);
145
+ break;
146
+ case "move":
147
+ this.onMove(patch.parent_id, patch.id, patch.before_id);
148
+ break;
149
+ case "remove":
150
+ this.onRemove(patch.id);
151
+ break;
152
+ }
153
+ }
154
+ onCreate(id, elementType, props) {
155
+ const propsObj = props instanceof Map ? Object.fromEntries(props) : props;
156
+ const element = this.components.createElement(elementType, propsObj);
157
+ if (!element) {
158
+ const fallback = document.createElement("div");
159
+ fallback.dataset.hypenType = elementType;
160
+ fallback.textContent = `Unknown component: ${elementType}`;
161
+ this.nodes.set(id, fallback);
162
+ return;
163
+ }
164
+ element.dataset.hypenType = elementType.toLowerCase();
165
+ element.dataset.hypenId = id;
166
+ element.__hypenEngine = this.engine;
167
+ this.applicators.applyAll(element, propsObj);
168
+ this.nodes.set(id, element);
169
+ this.debugTracker.trackRerender(id, element, `create:${elementType}`);
170
+ if (!this.rootId) {
171
+ this.rootId = id;
172
+ if (!this.container.contains(element)) {
173
+ this.container.appendChild(element);
174
+ }
175
+ }
176
+ }
177
+ onSetProp(id, name, value) {
178
+ const element = this.nodes.get(id);
179
+ if (!element)
180
+ return;
181
+ this.debugTracker.trackRerender(id, element, `setProp:${name}`);
182
+ if (name === "0" || name === "text") {
183
+ const elementType = element.dataset.hypenType;
184
+ if (elementType === "input") {
185
+ const inputEl = element;
186
+ inputEl.value = String(value);
187
+ console.log(`[Renderer] Updated input value: "${value}"`);
188
+ return;
189
+ }
190
+ element.textContent = String(value);
191
+ if (element.dataset.textTemplate !== undefined) {
192
+ element.dataset.textTemplate = String(value);
193
+ }
194
+ console.log(`[Renderer] Updated text content: "${value}"`);
195
+ return;
196
+ }
197
+ this.applicators.apply(element, name, value);
198
+ }
199
+ onSetText(id, text) {
200
+ const element = this.nodes.get(id);
201
+ if (!element)
202
+ return;
203
+ this.debugTracker.trackRerender(id, element, "setText");
204
+ element.textContent = text;
205
+ }
206
+ onInsert(parentId, id, beforeId) {
207
+ const parent = parentId === "root" ? this.container : this.nodes.get(parentId);
208
+ const child = this.nodes.get(id);
209
+ console.log(`[Renderer] Inserting ${id} into ${parentId}`, {
210
+ parent: parent ? `${parent.tagName}#${parent.id || "no-id"}` : "null",
211
+ child: child ? `${child.tagName}#${child.id || "no-id"}` : "null",
212
+ childText: child?.textContent?.substring(0, 20)
213
+ });
214
+ if (!parent || !child)
215
+ return;
216
+ if (parentId === "root") {
217
+ this.rootId = id;
218
+ }
219
+ if (beforeId) {
220
+ const before = this.nodes.get(beforeId);
221
+ if (before && before.parentNode === parent) {
222
+ parent.insertBefore(child, before);
223
+ } else if (!parent.contains(child)) {
224
+ parent.appendChild(child);
225
+ }
226
+ } else {
227
+ if (!parent.contains(child)) {
228
+ parent.appendChild(child);
229
+ }
230
+ }
231
+ }
232
+ onMove(parentId, id, beforeId) {
233
+ this.onInsert(parentId, id, beforeId);
234
+ }
235
+ onRemove(id) {
236
+ const element = this.nodes.get(id);
237
+ if (!element)
238
+ return;
239
+ if (element.parentNode) {
240
+ element.parentNode.removeChild(element);
241
+ }
242
+ this.nodes.delete(id);
243
+ if (this.rootId === id) {
244
+ this.rootId = null;
245
+ }
246
+ }
247
+ getNode(id) {
248
+ return this.nodes.get(id);
249
+ }
250
+ clear() {
251
+ this.container.innerHTML = "";
252
+ this.nodes.clear();
253
+ this.rootId = null;
254
+ }
255
+ getComponentRegistry() {
256
+ return this.components;
257
+ }
258
+ getApplicatorRegistry() {
259
+ return this.applicators;
260
+ }
261
+ setDebugConfig(config) {
262
+ this.debugTracker.setConfig(config);
263
+ }
264
+ resetDebugTracking() {
265
+ this.debugTracker.resetAll();
266
+ }
267
+ getDebugStats() {
268
+ return this.debugTracker.getStats();
269
+ }
270
+ }
271
+ export {
272
+ DOMRenderer
273
+ };
274
+
275
+ export { DOMRenderer };
276
+
277
+ //# debugId=0B5D2325D2CA974964756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/dom/renderer.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * DOM Renderer\n *\n * Renders Hypen patches to the DOM\n */\n\nimport type { Patch } from \"@hypen/core\";\nimport type { HypenModuleInstance, RouterContext } from \"@hypen/core\";\nimport type { HypenRouter } from \"@hypen/core\";\nimport type { HypenGlobalContext } from \"@hypen/core\";\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\";\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 console.log(`[Renderer] 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 console.log(`[Renderer] 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 as any).element_type!, 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 as any).parent_id!, patch.id!, (patch as any).before_id);\n break;\n case \"move\":\n this.onMove((patch as any).parent_id!, patch.id!, (patch as any).before_id);\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 const element = this.components.createElement(elementType, propsObj);\n\n if (!element) {\n const fallback = document.createElement(\"div\");\n fallback.dataset.hypenType = elementType;\n fallback.textContent = `Unknown component: ${elementType}`;\n this.nodes.set(id, fallback);\n return;\n }\n\n element.dataset.hypenType = elementType.toLowerCase();\n element.dataset.hypenId = id;\n (element as any).__hypenEngine = 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 console.log(`[Renderer] Updated input value: \"${value}\"`);\n return;\n }\n\n element.textContent = String(value);\n if (element.dataset.textTemplate !== undefined) {\n element.dataset.textTemplate = String(value);\n }\n console.log(`[Renderer] 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 console.log(`[Renderer] 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"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "0B5D2325D2CA974964756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,89 @@
1
+ import {
2
+ CanvasRenderer
3
+ } from "./canvas/renderer.js";
4
+ import"./canvas/paint.js";
5
+ import"./canvas/layout.js";
6
+ import"./canvas/events.js";
7
+ import"./canvas/accessibility.js";
8
+ import"./canvas/text.js";
9
+ import"./canvas/input.js";
10
+ import"./canvas/utils.js";
11
+ import {
12
+ EventManager
13
+ } from "./dom/events.js";
14
+ import {
15
+ DOMRenderer
16
+ } from "./dom/renderer.js";
17
+ import {
18
+ canvasApplicators,
19
+ canvasHandler
20
+ } from "./dom/canvas/index.js";
21
+ import {
22
+ ComponentRegistry
23
+ } from "./dom/components/index.js";
24
+ import"./dom/components/list.js";
25
+ import"./dom/components/textarea.js";
26
+ import"./dom/components/grid.js";
27
+ import"./dom/components/link.js";
28
+ import"./dom/components/avatar.js";
29
+ import"./dom/components/switch.js";
30
+ import"./dom/components/badge.js";
31
+ import"./dom/components/route.js";
32
+ import"./dom/components/center.js";
33
+ import"./dom/components/divider.js";
34
+ import"./dom/components/spacer.js";
35
+ import"./dom/components/input.js";
36
+ import"./dom/components/stack.js";
37
+ import"./dom/components/progressbar.js";
38
+ import"./dom/components/button.js";
39
+ import"./dom/components/heading.js";
40
+ import"./dom/components/slider.js";
41
+ import"./dom/components/card.js";
42
+ import"./dom/components/container.js";
43
+ import"./dom/components/video.js";
44
+ import"./dom/components/spinner.js";
45
+ import"./dom/components/row.js";
46
+ import"./dom/components/select.js";
47
+ import"./dom/components/router.js";
48
+ import"./dom/components/audio.js";
49
+ import"./dom/components/paragraph.js";
50
+ import"./dom/components/text.js";
51
+ import {
52
+ ApplicatorRegistry
53
+ } from "./dom/applicators/index.js";
54
+ import"./dom/applicators/events.js";
55
+ import"./dom/applicators/color.js";
56
+ import"./dom/applicators/typography.js";
57
+ import"./dom/applicators/effects.js";
58
+ import"./dom/components/checkbox.js";
59
+ import"./dom/components/column.js";
60
+ import"./dom/components/image.js";
61
+ import"./dom/applicators/margin.js";
62
+ import"./dom/applicators/advanced-layout.js";
63
+ import"./dom/applicators/display.js";
64
+ import"./dom/applicators/size.js";
65
+ import"./dom/applicators/font.js";
66
+ import"./dom/applicators/background.js";
67
+ import"./dom/applicators/transition.js";
68
+ import"./dom/applicators/layout.js";
69
+ import {
70
+ RerenderTracker,
71
+ defaultDebugConfig
72
+ } from "./dom/debug.js";
73
+ import"./dom/applicators/padding.js";
74
+ import"./dom/applicators/border.js";
75
+ import"./dom/applicators/transform.js";
76
+ import"../chunk-2s02mkzs.js";
77
+ export {
78
+ defaultDebugConfig,
79
+ canvasHandler,
80
+ canvasApplicators,
81
+ RerenderTracker,
82
+ EventManager,
83
+ DOMRenderer,
84
+ ComponentRegistry,
85
+ CanvasRenderer,
86
+ ApplicatorRegistry
87
+ };
88
+
89
+ //# debugId=5264B236E9198B9564756E2164756E21
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "5264B236E9198B9564756E2164756E21",
8
+ "names": []
9
+ }