@hypen-space/web 0.4.5 → 0.4.12

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypen-space/web",
3
- "version": "0.4.5",
3
+ "version": "0.4.12",
4
4
  "description": "Hypen web renderers - DOM and Canvas rendering for browsers",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -56,7 +56,7 @@
56
56
  "clean": "rm -rf dist"
57
57
  },
58
58
  "dependencies": {
59
- "@hypen-space/core": "^0.4.5"
59
+ "@hypen-space/core": "^0.4.12"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@types/bun": "latest",
@@ -141,6 +141,10 @@ export class CanvasRenderer implements Renderer {
141
141
  this.onSetProp(patch.id!, patch.name!, patch.value);
142
142
  break;
143
143
 
144
+ case "removeProp":
145
+ this.onRemoveProp(patch.id!, patch.name!);
146
+ break;
147
+
144
148
  case "setText":
145
149
  this.onSetText(patch.id!, patch.text!);
146
150
  break;
@@ -202,6 +206,25 @@ export class CanvasRenderer implements Renderer {
202
206
  this.accessibilityLayer.updateNode(node);
203
207
  }
204
208
 
209
+ /**
210
+ * Remove a property from a node
211
+ */
212
+ private onRemoveProp(id: string, name: string): void {
213
+ const node = this.nodes.get(id);
214
+ if (!node) return;
215
+
216
+ delete node.props[name];
217
+
218
+ if (name === "visible") {
219
+ node.visible = true;
220
+ }
221
+ if (name === "opacity") {
222
+ node.opacity = 1;
223
+ }
224
+
225
+ this.accessibilityLayer.updateNode(node);
226
+ }
227
+
205
228
  /**
206
229
  * Set text on node
207
230
  */
@@ -23,10 +23,6 @@ export const advancedLayoutHandlers: Record<string, ApplicatorHandler> = {
23
23
  el.style.alignContent = String(value);
24
24
  },
25
25
 
26
- alignSelf: (el, value) => {
27
- el.style.alignSelf = String(value);
28
- },
29
-
30
26
  order: (el, value) => {
31
27
  el.style.order = String(value);
32
28
  },
@@ -144,6 +144,9 @@ export class DOMRenderer {
144
144
  case "setProp":
145
145
  this.onSetProp(id!, patch.name!, patch.value);
146
146
  break;
147
+ case "removeProp":
148
+ this.onRemoveProp(id!, patch.name!);
149
+ break;
147
150
  case "setText":
148
151
  this.onSetText(id!, patch.text!);
149
152
  break;
@@ -239,6 +242,17 @@ export class DOMRenderer {
239
242
  this.applicators.apply(element, name, value);
240
243
  }
241
244
 
245
+ /**
246
+ * Remove a property from an element
247
+ */
248
+ private onRemoveProp(id: string, name: string): void {
249
+ const element = this.nodes.get(id);
250
+ if (!element) return;
251
+
252
+ this.debugTracker.trackRerender(id, element, `removeProp:${name}`);
253
+ this.applicators.apply(element, name, undefined);
254
+ }
255
+
242
256
  /**
243
257
  * Set text content
244
258
  */