@hypen-space/web 0.4.3 → 0.4.11
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/canvas/index.js +30 -2
- package/dist/canvas/index.js.map +4 -4
- package/dist/canvas/input.d.ts +8 -1
- package/dist/canvas/input.js +14 -2
- package/dist/canvas/input.js.map +3 -3
- package/dist/canvas/renderer.d.ts +4 -0
- package/dist/canvas/renderer.js +30 -2
- package/dist/canvas/renderer.js.map +4 -4
- package/dist/client.js +71 -26
- package/dist/client.js.map +6 -6
- package/dist/dom/applicators/advanced-layout.js +1 -4
- package/dist/dom/applicators/advanced-layout.js.map +3 -3
- package/dist/dom/applicators/events.js +53 -2
- package/dist/dom/applicators/events.js.map +3 -3
- package/dist/dom/applicators/index.js +53 -5
- package/dist/dom/applicators/index.js.map +4 -4
- package/dist/dom/index.js +66 -8
- package/dist/dom/index.js.map +5 -5
- package/dist/dom/renderer.d.ts +7 -3
- package/dist/dom/renderer.js +66 -8
- package/dist/dom/renderer.js.map +5 -5
- package/dist/hypen.js +71 -26
- package/dist/hypen.js.map +6 -6
- package/dist/index.js +95 -9
- package/dist/index.js.map +7 -7
- package/package.json +2 -2
- package/src/canvas/input.ts +23 -1
- package/src/canvas/renderer.ts +23 -0
- package/src/dom/applicators/advanced-layout.ts +0 -4
- package/src/dom/applicators/events.ts +71 -0
- package/src/dom/renderer.ts +18 -4
- package/src/hypen.ts +7 -24
package/dist/hypen.js
CHANGED
|
@@ -2351,7 +2351,58 @@ var eventHandlers = {
|
|
|
2351
2351
|
onFocus: createEventHandler("focus", { extractPayload: focusPayload }),
|
|
2352
2352
|
onBlur: createEventHandler("blur", { extractPayload: focusPayload }),
|
|
2353
2353
|
onMouseEnter: createEventHandler("mouseenter", { extractPayload: mousePayload }),
|
|
2354
|
-
onMouseLeave: createEventHandler("mouseleave", { extractPayload: mousePayload })
|
|
2354
|
+
onMouseLeave: createEventHandler("mouseleave", { extractPayload: mousePayload }),
|
|
2355
|
+
bind: (element, value) => {
|
|
2356
|
+
const bindPath = typeof value === "string" ? value : null;
|
|
2357
|
+
if (!bindPath)
|
|
2358
|
+
return;
|
|
2359
|
+
const disposables = getElementDisposables2(element);
|
|
2360
|
+
const eventKey = `bind:${bindPath}`;
|
|
2361
|
+
if (getRegisteredEvents(element).has(eventKey))
|
|
2362
|
+
return;
|
|
2363
|
+
registerEvent(element, eventKey);
|
|
2364
|
+
const hypenType = element.dataset?.hypenType;
|
|
2365
|
+
if (hypenType === "checkbox" || hypenType === "switch") {
|
|
2366
|
+
const input = element.querySelector('input[type="checkbox"]');
|
|
2367
|
+
if (!input)
|
|
2368
|
+
return;
|
|
2369
|
+
const listener = () => {
|
|
2370
|
+
const engine = getEngine(element);
|
|
2371
|
+
if (engine) {
|
|
2372
|
+
engine.dispatchAction("__hypen_bind", {
|
|
2373
|
+
path: bindPath,
|
|
2374
|
+
value: input.checked
|
|
2375
|
+
});
|
|
2376
|
+
}
|
|
2377
|
+
};
|
|
2378
|
+
disposables.add(disposableListener(input, "change", listener, { passive: true }));
|
|
2379
|
+
} else if (element instanceof HTMLSelectElement) {
|
|
2380
|
+
const listener = () => {
|
|
2381
|
+
const engine = getEngine(element);
|
|
2382
|
+
if (engine) {
|
|
2383
|
+
engine.dispatchAction("__hypen_bind", {
|
|
2384
|
+
path: bindPath,
|
|
2385
|
+
value: element.value
|
|
2386
|
+
});
|
|
2387
|
+
}
|
|
2388
|
+
};
|
|
2389
|
+
disposables.add(disposableListener(element, "change", listener, { passive: true }));
|
|
2390
|
+
} else if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {
|
|
2391
|
+
const listener = () => {
|
|
2392
|
+
const engine = getEngine(element);
|
|
2393
|
+
if (engine) {
|
|
2394
|
+
engine.dispatchAction("__hypen_bind", {
|
|
2395
|
+
path: bindPath,
|
|
2396
|
+
value: element.value
|
|
2397
|
+
});
|
|
2398
|
+
}
|
|
2399
|
+
};
|
|
2400
|
+
disposables.add(disposableListener(element, "input", listener, { passive: true }));
|
|
2401
|
+
} else {
|
|
2402
|
+
return;
|
|
2403
|
+
}
|
|
2404
|
+
disposables.addCallback(() => unregisterEvent(element, eventKey));
|
|
2405
|
+
}
|
|
2355
2406
|
};
|
|
2356
2407
|
|
|
2357
2408
|
// src/dom/applicators/typography.ts
|
|
@@ -2612,9 +2663,6 @@ var advancedLayoutHandlers = {
|
|
|
2612
2663
|
alignContent: (el, value) => {
|
|
2613
2664
|
el.style.alignContent = String(value);
|
|
2614
2665
|
},
|
|
2615
|
-
alignSelf: (el, value) => {
|
|
2616
|
-
el.style.alignSelf = String(value);
|
|
2617
|
-
},
|
|
2618
2666
|
order: (el, value) => {
|
|
2619
2667
|
el.style.order = String(value);
|
|
2620
2668
|
},
|
|
@@ -3320,7 +3368,7 @@ class DOMRenderer {
|
|
|
3320
3368
|
applicators;
|
|
3321
3369
|
engine;
|
|
3322
3370
|
currentState = {};
|
|
3323
|
-
|
|
3371
|
+
router = null;
|
|
3324
3372
|
globalContext = null;
|
|
3325
3373
|
componentInstances = new Map;
|
|
3326
3374
|
debugTracker;
|
|
@@ -3335,8 +3383,8 @@ class DOMRenderer {
|
|
|
3335
3383
|
this.applicators.register(name, handler);
|
|
3336
3384
|
}
|
|
3337
3385
|
}
|
|
3338
|
-
setContext(
|
|
3339
|
-
this.
|
|
3386
|
+
setContext(router, globalContext) {
|
|
3387
|
+
this.router = router;
|
|
3340
3388
|
this.globalContext = globalContext;
|
|
3341
3389
|
}
|
|
3342
3390
|
applyPatches(patches) {
|
|
@@ -3395,6 +3443,9 @@ class DOMRenderer {
|
|
|
3395
3443
|
case "setProp":
|
|
3396
3444
|
this.onSetProp(id, patch.name, patch.value);
|
|
3397
3445
|
break;
|
|
3446
|
+
case "removeProp":
|
|
3447
|
+
this.onRemoveProp(id, patch.name);
|
|
3448
|
+
break;
|
|
3398
3449
|
case "setText":
|
|
3399
3450
|
this.onSetText(id, patch.text);
|
|
3400
3451
|
break;
|
|
@@ -3462,6 +3513,13 @@ class DOMRenderer {
|
|
|
3462
3513
|
}
|
|
3463
3514
|
this.applicators.apply(element, name, value);
|
|
3464
3515
|
}
|
|
3516
|
+
onRemoveProp(id, name) {
|
|
3517
|
+
const element = this.nodes.get(id);
|
|
3518
|
+
if (!element)
|
|
3519
|
+
return;
|
|
3520
|
+
this.debugTracker.trackRerender(id, element, `removeProp:${name}`);
|
|
3521
|
+
this.applicators.apply(element, name, undefined);
|
|
3522
|
+
}
|
|
3465
3523
|
onSetText(id, text) {
|
|
3466
3524
|
const element = this.nodes.get(id);
|
|
3467
3525
|
if (!element)
|
|
@@ -3568,7 +3626,6 @@ class Hypen {
|
|
|
3568
3626
|
componentLoader.register("Router", Router, "");
|
|
3569
3627
|
componentLoader.register("Route", Route, "");
|
|
3570
3628
|
componentLoader.register("Link", Link, "");
|
|
3571
|
-
this.globalContext.__router = this.router;
|
|
3572
3629
|
this.globalContext.__hypenEngine = this;
|
|
3573
3630
|
}
|
|
3574
3631
|
async init() {
|
|
@@ -3615,13 +3672,9 @@ class Hypen {
|
|
|
3615
3672
|
log6.debug(`Applying ${patches.length} patches`);
|
|
3616
3673
|
this.renderer.applyPatches(patches);
|
|
3617
3674
|
});
|
|
3618
|
-
|
|
3619
|
-
root: this.router,
|
|
3620
|
-
current: this.router
|
|
3621
|
-
};
|
|
3622
|
-
this.renderer.setContext(routerContext, this.globalContext);
|
|
3675
|
+
this.renderer.setContext(this.router, this.globalContext);
|
|
3623
3676
|
const moduleId = this.extractModuleId(componentName, component.template);
|
|
3624
|
-
this.moduleInstance = new HypenModuleInstance(this.engine, component.module,
|
|
3677
|
+
this.moduleInstance = new HypenModuleInstance(this.engine, component.module, this.router, this.globalContext);
|
|
3625
3678
|
this.globalContext.registerModule(moduleId, this.moduleInstance);
|
|
3626
3679
|
this.moduleInstances.set(moduleId, this.moduleInstance);
|
|
3627
3680
|
this.moduleInstance.onStateChange(() => {
|
|
@@ -3689,11 +3742,7 @@ class Hypen {
|
|
|
3689
3742
|
}
|
|
3690
3743
|
if (component.module && !this.moduleInstances.has(componentName)) {
|
|
3691
3744
|
const moduleId = this.extractModuleId(componentName, template);
|
|
3692
|
-
const
|
|
3693
|
-
root: this.router,
|
|
3694
|
-
current: this.router
|
|
3695
|
-
};
|
|
3696
|
-
const moduleInstance = new HypenModuleInstance(this.engine, component.module, routerContext, this.globalContext);
|
|
3745
|
+
const moduleInstance = new HypenModuleInstance(this.engine, component.module, this.router, this.globalContext);
|
|
3697
3746
|
this.globalContext.registerModule(moduleId, moduleInstance);
|
|
3698
3747
|
this.moduleInstances.set(componentName, moduleInstance);
|
|
3699
3748
|
moduleInstance.onStateChange(() => {
|
|
@@ -3720,12 +3769,8 @@ class Hypen {
|
|
|
3720
3769
|
return componentName;
|
|
3721
3770
|
}
|
|
3722
3771
|
createNestedModuleInstances() {
|
|
3723
|
-
const routerContext = {
|
|
3724
|
-
root: this.router,
|
|
3725
|
-
current: this.router
|
|
3726
|
-
};
|
|
3727
3772
|
if (Router && !this.moduleInstances.has("Router")) {
|
|
3728
|
-
const routerInstance = new HypenModuleInstance(this.engine, Router,
|
|
3773
|
+
const routerInstance = new HypenModuleInstance(this.engine, Router, this.router, this.globalContext);
|
|
3729
3774
|
this.globalContext.registerModule("Router", routerInstance);
|
|
3730
3775
|
this.moduleInstances.set("Router", routerInstance);
|
|
3731
3776
|
routerInstance.onStateChange(() => {
|
|
@@ -3744,7 +3789,7 @@ class Hypen {
|
|
|
3744
3789
|
continue;
|
|
3745
3790
|
}
|
|
3746
3791
|
log6.debug(`Creating nested module instance for: ${name}`);
|
|
3747
|
-
const moduleInstance = new HypenModuleInstance(this.engine, comp.module,
|
|
3792
|
+
const moduleInstance = new HypenModuleInstance(this.engine, comp.module, this.router, this.globalContext);
|
|
3748
3793
|
this.globalContext.registerModule(name, moduleInstance);
|
|
3749
3794
|
this.moduleInstances.set(name, moduleInstance);
|
|
3750
3795
|
moduleInstance.onStateChange(() => {
|
|
@@ -3841,4 +3886,4 @@ export {
|
|
|
3841
3886
|
Hypen
|
|
3842
3887
|
};
|
|
3843
3888
|
|
|
3844
|
-
//# debugId=
|
|
3889
|
+
//# debugId=8C40DA488E3B928064756E2164756E21
|