@hypen-space/web 0.4.1 → 0.4.3

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 (110) hide show
  1. package/dist/canvas/accessibility.d.ts +47 -0
  2. package/dist/canvas/events.d.ts +87 -0
  3. package/dist/canvas/index.d.ts +11 -0
  4. package/dist/canvas/index.js +19 -13
  5. package/dist/canvas/index.js.map +6 -6
  6. package/dist/canvas/input.d.ts +56 -0
  7. package/dist/canvas/layout.d.ts +10 -0
  8. package/dist/canvas/layout.js +17 -12
  9. package/dist/canvas/layout.js.map +4 -4
  10. package/dist/canvas/paint.d.ts +14 -0
  11. package/dist/canvas/paint.js +3 -2
  12. package/dist/canvas/paint.js.map +4 -4
  13. package/dist/canvas/renderer.d.ts +99 -0
  14. package/dist/canvas/renderer.js +19 -13
  15. package/dist/canvas/renderer.js.map +6 -6
  16. package/dist/canvas/text.d.ts +22 -0
  17. package/dist/canvas/text.js +2 -2
  18. package/dist/canvas/text.js.map +2 -2
  19. package/dist/canvas/types.d.ts +96 -0
  20. package/dist/canvas/utils.d.ts +44 -0
  21. package/dist/client.d.ts +19 -0
  22. package/dist/client.js +46 -21
  23. package/dist/client.js.map +12 -11
  24. package/dist/dom/applicators/advanced-layout.d.ts +5 -0
  25. package/dist/dom/applicators/advanced-layout.js +1 -114
  26. package/dist/dom/applicators/advanced-layout.js.map +4 -5
  27. package/dist/dom/applicators/background.d.ts +5 -0
  28. package/dist/dom/applicators/border.d.ts +5 -0
  29. package/dist/dom/applicators/color.d.ts +5 -0
  30. package/dist/dom/applicators/display.d.ts +5 -0
  31. package/dist/dom/applicators/effects.d.ts +5 -0
  32. package/dist/dom/applicators/events.d.ts +8 -0
  33. package/dist/dom/applicators/events.js +3 -2
  34. package/dist/dom/applicators/events.js.map +3 -3
  35. package/dist/dom/applicators/font.d.ts +29 -0
  36. package/dist/dom/applicators/index.d.ts +76 -0
  37. package/dist/dom/applicators/index.js +3 -8
  38. package/dist/dom/applicators/index.js.map +4 -4
  39. package/dist/dom/applicators/layout.d.ts +10 -0
  40. package/dist/dom/applicators/margin.d.ts +11 -0
  41. package/dist/dom/applicators/padding.d.ts +11 -0
  42. package/dist/dom/applicators/size.d.ts +14 -0
  43. package/dist/dom/applicators/transform.d.ts +5 -0
  44. package/dist/dom/applicators/transition.d.ts +5 -0
  45. package/dist/dom/applicators/types.d.ts +6 -0
  46. package/dist/dom/applicators/typography.d.ts +5 -0
  47. package/dist/dom/canvas/index.d.ts +12 -0
  48. package/dist/dom/components/app.d.ts +8 -0
  49. package/dist/dom/components/app.js +55 -0
  50. package/dist/dom/components/app.js.map +10 -0
  51. package/dist/dom/components/audio.d.ts +5 -0
  52. package/dist/dom/components/avatar.d.ts +5 -0
  53. package/dist/dom/components/badge.d.ts +5 -0
  54. package/dist/dom/components/button.d.ts +9 -0
  55. package/dist/dom/components/card.d.ts +5 -0
  56. package/dist/dom/components/center.d.ts +9 -0
  57. package/dist/dom/components/checkbox.d.ts +5 -0
  58. package/dist/dom/components/column.d.ts +8 -0
  59. package/dist/dom/components/container.d.ts +5 -0
  60. package/dist/dom/components/divider.d.ts +5 -0
  61. package/dist/dom/components/grid.d.ts +7 -0
  62. package/dist/dom/components/heading.d.ts +5 -0
  63. package/dist/dom/components/hypenapp.d.ts +19 -0
  64. package/dist/dom/components/hypenapp.js +2 -4
  65. package/dist/dom/components/hypenapp.js.map +3 -3
  66. package/dist/dom/components/image.d.ts +5 -0
  67. package/dist/dom/components/index.d.ts +29 -0
  68. package/dist/dom/components/index.js +29 -5
  69. package/dist/dom/components/index.js.map +7 -6
  70. package/dist/dom/components/input.d.ts +5 -0
  71. package/dist/dom/components/link.d.ts +5 -0
  72. package/dist/dom/components/list.d.ts +5 -0
  73. package/dist/dom/components/paragraph.d.ts +5 -0
  74. package/dist/dom/components/progressbar.d.ts +5 -0
  75. package/dist/dom/components/route.d.ts +6 -0
  76. package/dist/dom/components/route.js +2 -2
  77. package/dist/dom/components/route.js.map +2 -2
  78. package/dist/dom/components/router.d.ts +5 -0
  79. package/dist/dom/components/row.d.ts +7 -0
  80. package/dist/dom/components/select.d.ts +5 -0
  81. package/dist/dom/components/slider.d.ts +5 -0
  82. package/dist/dom/components/spacer.d.ts +5 -0
  83. package/dist/dom/components/spinner.d.ts +5 -0
  84. package/dist/dom/components/stack.d.ts +5 -0
  85. package/dist/dom/components/switch.d.ts +5 -0
  86. package/dist/dom/components/text.d.ts +5 -0
  87. package/dist/dom/components/textarea.d.ts +5 -0
  88. package/dist/dom/components/video.d.ts +5 -0
  89. package/dist/dom/debug.d.ts +63 -0
  90. package/dist/dom/debug.js +2 -2
  91. package/dist/dom/debug.js.map +2 -2
  92. package/dist/dom/element-data.d.ts +94 -0
  93. package/dist/dom/events.d.ts +39 -0
  94. package/dist/dom/events.js +2 -2
  95. package/dist/dom/events.js.map +2 -2
  96. package/dist/dom/index.d.ts +10 -0
  97. package/dist/dom/index.js +46 -21
  98. package/dist/dom/index.js.map +12 -11
  99. package/dist/dom/renderer.d.ts +115 -0
  100. package/dist/dom/renderer.js +45 -20
  101. package/dist/dom/renderer.js.map +11 -10
  102. package/dist/hypen.d.ts +140 -0
  103. package/dist/hypen.js +46 -21
  104. package/dist/hypen.js.map +12 -11
  105. package/dist/index.d.ts +28 -0
  106. package/dist/index.js +64 -33
  107. package/dist/index.js.map +16 -15
  108. package/package.json +3 -2
  109. package/src/dom/components/index.ts +2 -0
  110. package/src/dom/renderer.ts +18 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypen-space/web",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Hypen web renderers - DOM and Canvas rendering for browsers",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -51,11 +51,12 @@
51
51
  "scripts": {
52
52
  "build": "bun run build.ts",
53
53
  "build:types": "tsc --emitDeclarationOnly",
54
+ "prepublishOnly": "bun run build",
54
55
  "typecheck": "tsc --noEmit",
55
56
  "clean": "rm -rf dist"
56
57
  },
57
58
  "dependencies": {
58
- "@hypen-space/core": "^0.4.1"
59
+ "@hypen-space/core": "^0.4.3"
59
60
  },
60
61
  "devDependencies": {
61
62
  "@types/bun": "latest",
@@ -27,6 +27,7 @@ export class ComponentRegistry {
27
27
  * Get handler for a component type
28
28
  */
29
29
  get(type: string): ComponentHandler | undefined {
30
+ if (!type) return undefined;
30
31
  return this.handlers.get(type.toLowerCase());
31
32
  }
32
33
 
@@ -34,6 +35,7 @@ export class ComponentRegistry {
34
35
  * Create element for a component type
35
36
  */
36
37
  createElement(type: string, props: Record<string, any> = {}): HTMLElement | null {
38
+ if (!type) return null;
37
39
  const handler = this.get(type);
38
40
  if (!handler) return null;
39
41
 
@@ -123,26 +123,38 @@ export class DOMRenderer {
123
123
 
124
124
  /**
125
125
  * Apply a single patch
126
+ *
127
+ * Handles both camelCase (direct WASM) and snake_case (WebSocket JSON) field names.
126
128
  */
127
129
  private applyPatch(patch: Patch): void {
130
+ // Normalize: accept both camelCase and snake_case field names.
131
+ // WASM serde outputs camelCase, but patches forwarded via JSON over WebSocket
132
+ // may arrive with snake_case depending on the serialization path.
133
+ const p = patch as any;
134
+ const id: string | undefined = patch.id ?? p.id;
135
+ const elementType: string | undefined = patch.elementType ?? p.element_type;
136
+ const parentId: string | undefined = patch.parentId ?? p.parent_id;
137
+ const beforeId: string | undefined = patch.beforeId ?? p.before_id;
138
+ const eventName: string | undefined = patch.eventName ?? p.event_name;
139
+
128
140
  switch (patch.type) {
129
141
  case "create":
130
- this.onCreate(patch.id!, patch.elementType!, patch.props || {});
142
+ this.onCreate(id!, elementType ?? "container", patch.props || {});
131
143
  break;
132
144
  case "setProp":
133
- this.onSetProp(patch.id!, patch.name!, patch.value);
145
+ this.onSetProp(id!, patch.name!, patch.value);
134
146
  break;
135
147
  case "setText":
136
- this.onSetText(patch.id!, patch.text!);
148
+ this.onSetText(id!, patch.text!);
137
149
  break;
138
150
  case "insert":
139
- this.onInsert(patch.parentId!, patch.id!, patch.beforeId);
151
+ this.onInsert(parentId!, id!, beforeId);
140
152
  break;
141
153
  case "move":
142
- this.onMove(patch.parentId!, patch.id!, patch.beforeId);
154
+ this.onMove(parentId!, id!, beforeId);
143
155
  break;
144
156
  case "remove":
145
- this.onRemove(patch.id!);
157
+ this.onRemove(id!);
146
158
  break;
147
159
  }
148
160
  }