@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.
- package/dist/canvas/accessibility.d.ts +47 -0
- package/dist/canvas/events.d.ts +87 -0
- package/dist/canvas/index.d.ts +11 -0
- package/dist/canvas/index.js +19 -13
- package/dist/canvas/index.js.map +6 -6
- package/dist/canvas/input.d.ts +56 -0
- package/dist/canvas/layout.d.ts +10 -0
- package/dist/canvas/layout.js +17 -12
- package/dist/canvas/layout.js.map +4 -4
- package/dist/canvas/paint.d.ts +14 -0
- package/dist/canvas/paint.js +3 -2
- package/dist/canvas/paint.js.map +4 -4
- package/dist/canvas/renderer.d.ts +99 -0
- package/dist/canvas/renderer.js +19 -13
- package/dist/canvas/renderer.js.map +6 -6
- package/dist/canvas/text.d.ts +22 -0
- package/dist/canvas/text.js +2 -2
- package/dist/canvas/text.js.map +2 -2
- package/dist/canvas/types.d.ts +96 -0
- package/dist/canvas/utils.d.ts +44 -0
- package/dist/client.d.ts +19 -0
- package/dist/client.js +46 -21
- package/dist/client.js.map +12 -11
- package/dist/dom/applicators/advanced-layout.d.ts +5 -0
- package/dist/dom/applicators/advanced-layout.js +1 -114
- package/dist/dom/applicators/advanced-layout.js.map +4 -5
- package/dist/dom/applicators/background.d.ts +5 -0
- package/dist/dom/applicators/border.d.ts +5 -0
- package/dist/dom/applicators/color.d.ts +5 -0
- package/dist/dom/applicators/display.d.ts +5 -0
- package/dist/dom/applicators/effects.d.ts +5 -0
- package/dist/dom/applicators/events.d.ts +8 -0
- package/dist/dom/applicators/events.js +3 -2
- package/dist/dom/applicators/events.js.map +3 -3
- package/dist/dom/applicators/font.d.ts +29 -0
- package/dist/dom/applicators/index.d.ts +76 -0
- package/dist/dom/applicators/index.js +3 -8
- package/dist/dom/applicators/index.js.map +4 -4
- package/dist/dom/applicators/layout.d.ts +10 -0
- package/dist/dom/applicators/margin.d.ts +11 -0
- package/dist/dom/applicators/padding.d.ts +11 -0
- package/dist/dom/applicators/size.d.ts +14 -0
- package/dist/dom/applicators/transform.d.ts +5 -0
- package/dist/dom/applicators/transition.d.ts +5 -0
- package/dist/dom/applicators/types.d.ts +6 -0
- package/dist/dom/applicators/typography.d.ts +5 -0
- package/dist/dom/canvas/index.d.ts +12 -0
- package/dist/dom/components/app.d.ts +8 -0
- package/dist/dom/components/app.js +55 -0
- package/dist/dom/components/app.js.map +10 -0
- package/dist/dom/components/audio.d.ts +5 -0
- package/dist/dom/components/avatar.d.ts +5 -0
- package/dist/dom/components/badge.d.ts +5 -0
- package/dist/dom/components/button.d.ts +9 -0
- package/dist/dom/components/card.d.ts +5 -0
- package/dist/dom/components/center.d.ts +9 -0
- package/dist/dom/components/checkbox.d.ts +5 -0
- package/dist/dom/components/column.d.ts +8 -0
- package/dist/dom/components/container.d.ts +5 -0
- package/dist/dom/components/divider.d.ts +5 -0
- package/dist/dom/components/grid.d.ts +7 -0
- package/dist/dom/components/heading.d.ts +5 -0
- package/dist/dom/components/hypenapp.d.ts +19 -0
- package/dist/dom/components/hypenapp.js +2 -4
- package/dist/dom/components/hypenapp.js.map +3 -3
- package/dist/dom/components/image.d.ts +5 -0
- package/dist/dom/components/index.d.ts +29 -0
- package/dist/dom/components/index.js +29 -5
- package/dist/dom/components/index.js.map +7 -6
- package/dist/dom/components/input.d.ts +5 -0
- package/dist/dom/components/link.d.ts +5 -0
- package/dist/dom/components/list.d.ts +5 -0
- package/dist/dom/components/paragraph.d.ts +5 -0
- package/dist/dom/components/progressbar.d.ts +5 -0
- package/dist/dom/components/route.d.ts +6 -0
- package/dist/dom/components/route.js +2 -2
- package/dist/dom/components/route.js.map +2 -2
- package/dist/dom/components/router.d.ts +5 -0
- package/dist/dom/components/row.d.ts +7 -0
- package/dist/dom/components/select.d.ts +5 -0
- package/dist/dom/components/slider.d.ts +5 -0
- package/dist/dom/components/spacer.d.ts +5 -0
- package/dist/dom/components/spinner.d.ts +5 -0
- package/dist/dom/components/stack.d.ts +5 -0
- package/dist/dom/components/switch.d.ts +5 -0
- package/dist/dom/components/text.d.ts +5 -0
- package/dist/dom/components/textarea.d.ts +5 -0
- package/dist/dom/components/video.d.ts +5 -0
- package/dist/dom/debug.d.ts +63 -0
- package/dist/dom/debug.js +2 -2
- package/dist/dom/debug.js.map +2 -2
- package/dist/dom/element-data.d.ts +94 -0
- package/dist/dom/events.d.ts +39 -0
- package/dist/dom/events.js +2 -2
- package/dist/dom/events.js.map +2 -2
- package/dist/dom/index.d.ts +10 -0
- package/dist/dom/index.js +46 -21
- package/dist/dom/index.js.map +12 -11
- package/dist/dom/renderer.d.ts +115 -0
- package/dist/dom/renderer.js +45 -20
- package/dist/dom/renderer.js.map +11 -10
- package/dist/hypen.d.ts +140 -0
- package/dist/hypen.js +46 -21
- package/dist/hypen.js.map +12 -11
- package/dist/index.d.ts +28 -0
- package/dist/index.js +64 -33
- package/dist/index.js.map +16 -15
- package/package.json +3 -2
- package/src/dom/components/index.ts +2 -0
- package/src/dom/renderer.ts +18 -6
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hypen-space/web - Hypen Web Renderers
|
|
3
|
+
*
|
|
4
|
+
* Browser-only package providing DOM and Canvas rendering for Hypen applications.
|
|
5
|
+
* This entry point is WASM-free — it only contains renderers and the remote UI
|
|
6
|
+
* embed component.
|
|
7
|
+
*
|
|
8
|
+
* For client-side rendering (with WASM engine), use "@hypen-space/web/client":
|
|
9
|
+
*
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { render } from "@hypen-space/web/client";
|
|
12
|
+
* await render("Counter", "#app");
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* For remote UI (no WASM needed in the browser):
|
|
16
|
+
*
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { DOMRenderer } from "@hypen-space/web";
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export { DOMRenderer } from "./dom/renderer.js";
|
|
22
|
+
export { ComponentRegistry } from "./dom/components/index.js";
|
|
23
|
+
export { ApplicatorRegistry } from "./dom/applicators/index.js";
|
|
24
|
+
export { EventManager } from "./dom/events.js";
|
|
25
|
+
export { RerenderTracker, type DebugConfig, defaultDebugConfig } from "./dom/debug.js";
|
|
26
|
+
export { hypenAppHandler, disconnectHypenApp } from "./dom/components/hypenapp.js";
|
|
27
|
+
export { CanvasRenderer } from "./canvas/renderer.js";
|
|
28
|
+
export { canvasHandler, canvasApplicators } from "./dom/canvas/index.js";
|
package/dist/index.js
CHANGED
|
@@ -1011,7 +1011,7 @@ var exports_route = {};
|
|
|
1011
1011
|
__export(exports_route, {
|
|
1012
1012
|
routeHandler: () => routeHandler
|
|
1013
1013
|
});
|
|
1014
|
-
import { frameworkLoggers } from "@hypen-space/core";
|
|
1014
|
+
import { frameworkLoggers } from "@hypen-space/core/logger";
|
|
1015
1015
|
var log, routeHandler;
|
|
1016
1016
|
var init_route = __esm(() => {
|
|
1017
1017
|
log = frameworkLoggers.router;
|
|
@@ -1046,7 +1046,7 @@ __export(exports_hypenapp, {
|
|
|
1046
1046
|
disconnectHypenApp: () => disconnectHypenApp
|
|
1047
1047
|
});
|
|
1048
1048
|
import { RemoteEngine } from "@hypen-space/core/remote/client";
|
|
1049
|
-
import { frameworkLoggers as frameworkLoggers2 } from "@hypen-space/core";
|
|
1049
|
+
import { frameworkLoggers as frameworkLoggers2 } from "@hypen-space/core/logger";
|
|
1050
1050
|
function applyPatches(container, nodes, patches, engine, onRoot) {
|
|
1051
1051
|
for (const patch of patches) {
|
|
1052
1052
|
switch (patch.type) {
|
|
@@ -1202,8 +1202,6 @@ function applyProp(el, name, value) {
|
|
|
1202
1202
|
border: "border",
|
|
1203
1203
|
gap: "gap",
|
|
1204
1204
|
flex: "flex",
|
|
1205
|
-
alignItems: "alignItems",
|
|
1206
|
-
justifyContent: "justifyContent",
|
|
1207
1205
|
opacity: "opacity",
|
|
1208
1206
|
overflow: "overflow"
|
|
1209
1207
|
};
|
|
@@ -1301,6 +1299,26 @@ var init_hypenapp = __esm(() => {
|
|
|
1301
1299
|
};
|
|
1302
1300
|
});
|
|
1303
1301
|
|
|
1302
|
+
// src/dom/components/app.ts
|
|
1303
|
+
var exports_app = {};
|
|
1304
|
+
__export(exports_app, {
|
|
1305
|
+
appHandler: () => appHandler
|
|
1306
|
+
});
|
|
1307
|
+
var appHandler;
|
|
1308
|
+
var init_app = __esm(() => {
|
|
1309
|
+
appHandler = {
|
|
1310
|
+
create() {
|
|
1311
|
+
const el = document.createElement("div");
|
|
1312
|
+
el.style.display = "flex";
|
|
1313
|
+
el.style.flexDirection = "column";
|
|
1314
|
+
el.style.minHeight = "100vh";
|
|
1315
|
+
el.style.width = "100%";
|
|
1316
|
+
el.dataset.hypenType = "app";
|
|
1317
|
+
return el;
|
|
1318
|
+
}
|
|
1319
|
+
};
|
|
1320
|
+
});
|
|
1321
|
+
|
|
1304
1322
|
// src/dom/components/index.ts
|
|
1305
1323
|
class ComponentRegistry {
|
|
1306
1324
|
handlers = new Map;
|
|
@@ -1311,9 +1329,13 @@ class ComponentRegistry {
|
|
|
1311
1329
|
this.handlers.set(type.toLowerCase(), handler);
|
|
1312
1330
|
}
|
|
1313
1331
|
get(type) {
|
|
1332
|
+
if (!type)
|
|
1333
|
+
return;
|
|
1314
1334
|
return this.handlers.get(type.toLowerCase());
|
|
1315
1335
|
}
|
|
1316
1336
|
createElement(type, props = {}) {
|
|
1337
|
+
if (!type)
|
|
1338
|
+
return null;
|
|
1317
1339
|
const handler = this.get(type);
|
|
1318
1340
|
if (!handler)
|
|
1319
1341
|
return null;
|
|
@@ -1355,6 +1377,8 @@ class ComponentRegistry {
|
|
|
1355
1377
|
const { routerHandler: routerHandler2 } = (init_router(), __toCommonJS(exports_router));
|
|
1356
1378
|
const { routeHandler: routeHandler2 } = (init_route(), __toCommonJS(exports_route));
|
|
1357
1379
|
const { hypenAppHandler: hypenAppHandler2 } = (init_hypenapp(), __toCommonJS(exports_hypenapp));
|
|
1380
|
+
const { appHandler: appHandler2 } = (init_app(), __toCommonJS(exports_app));
|
|
1381
|
+
this.register("app", appHandler2);
|
|
1358
1382
|
this.register("column", columnHandler2);
|
|
1359
1383
|
this.register("row", rowHandler2);
|
|
1360
1384
|
this.register("text", textHandler2);
|
|
@@ -2038,7 +2062,7 @@ import {
|
|
|
2038
2062
|
disposableListener,
|
|
2039
2063
|
disposableTimeout
|
|
2040
2064
|
} from "@hypen-space/core/disposable";
|
|
2041
|
-
import { frameworkLoggers as frameworkLoggers3 } from "@hypen-space/core";
|
|
2065
|
+
import { frameworkLoggers as frameworkLoggers3 } from "@hypen-space/core/logger";
|
|
2042
2066
|
var log3 = frameworkLoggers3.events;
|
|
2043
2067
|
function toPlainObject(value) {
|
|
2044
2068
|
if (value instanceof Map) {
|
|
@@ -2323,6 +2347,7 @@ var eventHandlers = {
|
|
|
2323
2347
|
extractPayload: scrollPayload
|
|
2324
2348
|
}),
|
|
2325
2349
|
onLongClick: createLongClickHandler(500),
|
|
2350
|
+
onLongPress: createLongClickHandler(500),
|
|
2326
2351
|
onFocus: createEventHandler("focus", { extractPayload: focusPayload }),
|
|
2327
2352
|
onBlur: createEventHandler("blur", { extractPayload: focusPayload }),
|
|
2328
2353
|
onMouseEnter: createEventHandler("mouseenter", { extractPayload: mousePayload }),
|
|
@@ -2584,12 +2609,6 @@ var advancedLayoutHandlers = {
|
|
|
2584
2609
|
flexBasis: (el, value) => {
|
|
2585
2610
|
el.style.flexBasis = typeof value === "number" ? `${value}px` : String(value);
|
|
2586
2611
|
},
|
|
2587
|
-
justifyContent: (el, value) => {
|
|
2588
|
-
el.style.justifyContent = mapAlignmentValue(String(value));
|
|
2589
|
-
},
|
|
2590
|
-
alignItems: (el, value) => {
|
|
2591
|
-
el.style.alignItems = mapAlignmentValue(String(value));
|
|
2592
|
-
},
|
|
2593
2612
|
alignContent: (el, value) => {
|
|
2594
2613
|
el.style.alignContent = String(value);
|
|
2595
2614
|
},
|
|
@@ -3127,7 +3146,7 @@ var canvasApplicators = {
|
|
|
3127
3146
|
};
|
|
3128
3147
|
|
|
3129
3148
|
// src/dom/debug.ts
|
|
3130
|
-
import { frameworkLoggers as frameworkLoggers4 } from "@hypen-space/core";
|
|
3149
|
+
import { frameworkLoggers as frameworkLoggers4 } from "@hypen-space/core/logger";
|
|
3131
3150
|
var log4 = frameworkLoggers4.debug;
|
|
3132
3151
|
var defaultDebugConfig = {
|
|
3133
3152
|
enabled: false,
|
|
@@ -3290,7 +3309,7 @@ class RerenderTracker {
|
|
|
3290
3309
|
}
|
|
3291
3310
|
|
|
3292
3311
|
// src/dom/renderer.ts
|
|
3293
|
-
import { frameworkLoggers as frameworkLoggers5 } from "@hypen-space/core";
|
|
3312
|
+
import { frameworkLoggers as frameworkLoggers5 } from "@hypen-space/core/logger";
|
|
3294
3313
|
var log5 = frameworkLoggers5.renderer;
|
|
3295
3314
|
|
|
3296
3315
|
class DOMRenderer {
|
|
@@ -3363,24 +3382,30 @@ class DOMRenderer {
|
|
|
3363
3382
|
});
|
|
3364
3383
|
}
|
|
3365
3384
|
applyPatch(patch) {
|
|
3385
|
+
const p = patch;
|
|
3386
|
+
const id = patch.id ?? p.id;
|
|
3387
|
+
const elementType = patch.elementType ?? p.element_type;
|
|
3388
|
+
const parentId = patch.parentId ?? p.parent_id;
|
|
3389
|
+
const beforeId = patch.beforeId ?? p.before_id;
|
|
3390
|
+
const eventName = patch.eventName ?? p.event_name;
|
|
3366
3391
|
switch (patch.type) {
|
|
3367
3392
|
case "create":
|
|
3368
|
-
this.onCreate(
|
|
3393
|
+
this.onCreate(id, elementType ?? "container", patch.props || {});
|
|
3369
3394
|
break;
|
|
3370
3395
|
case "setProp":
|
|
3371
|
-
this.onSetProp(
|
|
3396
|
+
this.onSetProp(id, patch.name, patch.value);
|
|
3372
3397
|
break;
|
|
3373
3398
|
case "setText":
|
|
3374
|
-
this.onSetText(
|
|
3399
|
+
this.onSetText(id, patch.text);
|
|
3375
3400
|
break;
|
|
3376
3401
|
case "insert":
|
|
3377
|
-
this.onInsert(
|
|
3402
|
+
this.onInsert(parentId, id, beforeId);
|
|
3378
3403
|
break;
|
|
3379
3404
|
case "move":
|
|
3380
|
-
this.onMove(
|
|
3405
|
+
this.onMove(parentId, id, beforeId);
|
|
3381
3406
|
break;
|
|
3382
3407
|
case "remove":
|
|
3383
|
-
this.onRemove(
|
|
3408
|
+
this.onRemove(id);
|
|
3384
3409
|
break;
|
|
3385
3410
|
}
|
|
3386
3411
|
}
|
|
@@ -3511,7 +3536,7 @@ class DOMRenderer {
|
|
|
3511
3536
|
}
|
|
3512
3537
|
|
|
3513
3538
|
// src/dom/events.ts
|
|
3514
|
-
import { frameworkLoggers as frameworkLoggers6 } from "@hypen-space/core";
|
|
3539
|
+
import { frameworkLoggers as frameworkLoggers6 } from "@hypen-space/core/logger";
|
|
3515
3540
|
var log6 = frameworkLoggers6.events;
|
|
3516
3541
|
|
|
3517
3542
|
class EventManager {
|
|
@@ -3741,7 +3766,7 @@ function getAbsoluteBounds(node) {
|
|
|
3741
3766
|
}
|
|
3742
3767
|
|
|
3743
3768
|
// src/canvas/text.ts
|
|
3744
|
-
import { frameworkLoggers as frameworkLoggers7 } from "@hypen-space/core";
|
|
3769
|
+
import { frameworkLoggers as frameworkLoggers7 } from "@hypen-space/core/logger";
|
|
3745
3770
|
var log7 = frameworkLoggers7.canvas;
|
|
3746
3771
|
var textMetricsCache = new Map;
|
|
3747
3772
|
function getCacheKey(text, fontStyle, maxWidth) {
|
|
@@ -3877,7 +3902,12 @@ function computeLayout(ctx, node, availableWidth, availableHeight, x = 0, y = 0)
|
|
|
3877
3902
|
let width = parseSize(props.width);
|
|
3878
3903
|
let height = parseSize(props.height);
|
|
3879
3904
|
const type = node.type.toLowerCase();
|
|
3880
|
-
if (type === "
|
|
3905
|
+
if (type === "app") {
|
|
3906
|
+
if (width === null)
|
|
3907
|
+
width = availableAfterMargin.width;
|
|
3908
|
+
if (height === null)
|
|
3909
|
+
height = availableAfterMargin.height;
|
|
3910
|
+
} else if (type === "spacer") {
|
|
3881
3911
|
if (width === null)
|
|
3882
3912
|
width = availableAfterMargin.width;
|
|
3883
3913
|
if (height === null)
|
|
@@ -4000,10 +4030,10 @@ function layoutChildren(ctx, parent) {
|
|
|
4000
4030
|
return;
|
|
4001
4031
|
}
|
|
4002
4032
|
const flexDirection = props.flexDirection || (parent.type === "column" ? "column" : "row");
|
|
4003
|
-
const justifyContent = props.justifyContent || "flex-start";
|
|
4004
|
-
const alignItems = props.alignItems || "flex-start";
|
|
4005
|
-
const gap = parseFloat(props.gap) || 0;
|
|
4006
4033
|
const isColumn = flexDirection === "column";
|
|
4034
|
+
const justifyContent = isColumn ? props.verticalAlignment || "flex-start" : props.horizontalAlignment || "flex-start";
|
|
4035
|
+
const alignItems = isColumn ? props.horizontalAlignment || "flex-start" : props.verticalAlignment || "flex-start";
|
|
4036
|
+
const gap = parseFloat(props.gap) || 0;
|
|
4007
4037
|
const availableWidth = layout.contentWidth;
|
|
4008
4038
|
const availableHeight = layout.contentHeight;
|
|
4009
4039
|
const childInfo = [];
|
|
@@ -4116,8 +4146,8 @@ function layoutChildren(ctx, parent) {
|
|
|
4116
4146
|
function layoutStackChildren(ctx, parent) {
|
|
4117
4147
|
const layout = parent.layout;
|
|
4118
4148
|
const props = parent.props;
|
|
4119
|
-
const
|
|
4120
|
-
const
|
|
4149
|
+
const horizontalAlignment = props.horizontalAlignment || "flex-start";
|
|
4150
|
+
const verticalAlignment = props.verticalAlignment || "flex-start";
|
|
4121
4151
|
const availableWidth = layout.contentWidth;
|
|
4122
4152
|
const availableHeight = layout.contentHeight;
|
|
4123
4153
|
for (const child of parent.children) {
|
|
@@ -4125,14 +4155,14 @@ function layoutStackChildren(ctx, parent) {
|
|
|
4125
4155
|
const childLayout = child.layout;
|
|
4126
4156
|
let x = 0;
|
|
4127
4157
|
let y = 0;
|
|
4128
|
-
if (
|
|
4158
|
+
if (horizontalAlignment === "center") {
|
|
4129
4159
|
x = (availableWidth - childLayout.width) / 2;
|
|
4130
|
-
} else if (
|
|
4160
|
+
} else if (horizontalAlignment === "flex-end") {
|
|
4131
4161
|
x = availableWidth - childLayout.width;
|
|
4132
4162
|
}
|
|
4133
|
-
if (
|
|
4163
|
+
if (verticalAlignment === "center") {
|
|
4134
4164
|
y = (availableHeight - childLayout.height) / 2;
|
|
4135
|
-
} else if (
|
|
4165
|
+
} else if (verticalAlignment === "flex-end") {
|
|
4136
4166
|
y = availableHeight - childLayout.height;
|
|
4137
4167
|
}
|
|
4138
4168
|
childLayout.x = layout.x + layout.contentX + x;
|
|
@@ -4219,6 +4249,7 @@ function paintNode(ctx, node) {
|
|
|
4219
4249
|
case "link":
|
|
4220
4250
|
paintLink(ctx, node);
|
|
4221
4251
|
break;
|
|
4252
|
+
case "app":
|
|
4222
4253
|
case "container":
|
|
4223
4254
|
case "box":
|
|
4224
4255
|
paintContainer(ctx, node);
|
|
@@ -5457,7 +5488,7 @@ class AccessibilityLayer {
|
|
|
5457
5488
|
}
|
|
5458
5489
|
|
|
5459
5490
|
// src/canvas/renderer.ts
|
|
5460
|
-
import { frameworkLoggers as frameworkLoggers8 } from "@hypen-space/core";
|
|
5491
|
+
import { frameworkLoggers as frameworkLoggers8 } from "@hypen-space/core/logger";
|
|
5461
5492
|
var log8 = frameworkLoggers8.canvas;
|
|
5462
5493
|
var DEFAULT_OPTIONS = {
|
|
5463
5494
|
devicePixelRatio: typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1,
|
|
@@ -5724,4 +5755,4 @@ export {
|
|
|
5724
5755
|
ApplicatorRegistry
|
|
5725
5756
|
};
|
|
5726
5757
|
|
|
5727
|
-
//# debugId=
|
|
5758
|
+
//# debugId=F23E5C520868952164756E2164756E21
|