@hypen-space/web 0.3.8 → 0.3.10
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/{src/canvas → canvas}/index.js +10 -6
- package/dist/{src/canvas → canvas}/index.js.map +4 -4
- package/dist/{src/canvas → canvas}/layout.js +4 -2
- package/dist/{src/canvas → canvas}/layout.js.map +3 -3
- package/dist/{src/canvas → canvas}/paint.js +4 -2
- package/dist/{src/canvas → canvas}/paint.js.map +3 -3
- package/dist/{src/canvas → canvas}/renderer.js +10 -6
- package/dist/{src/canvas → canvas}/renderer.js.map +4 -4
- package/dist/{src/canvas → canvas}/text.js +4 -2
- package/dist/{src/canvas → canvas}/text.js.map +3 -3
- package/dist/dom/applicators/advanced-layout.js +245 -0
- package/dist/dom/applicators/advanced-layout.js.map +11 -0
- package/dist/{src/dom/applicators/margin.js → dom/applicators/background.js} +33 -21
- package/dist/{src/dom → dom}/applicators/background.js.map +3 -3
- package/dist/dom/applicators/border.js +97 -0
- package/dist/{src/dom → dom}/applicators/border.js.map +3 -3
- package/dist/dom/applicators/color.js +49 -0
- package/dist/{src/dom → dom}/applicators/color.js.map +3 -3
- package/dist/{src/dom/applicators/padding.js → dom/applicators/display.js} +36 -21
- package/dist/{src/dom → dom}/applicators/display.js.map +3 -3
- package/dist/dom/applicators/effects.js +138 -0
- package/dist/{src/dom → dom}/applicators/effects.js.map +3 -3
- package/dist/{src/dom → dom}/applicators/events.js +41 -48
- package/dist/dom/applicators/events.js.map +11 -0
- package/dist/{src/dom → dom}/applicators/font.js +76 -86
- package/dist/{src/dom → dom}/applicators/font.js.map +3 -3
- package/dist/dom/applicators/index.js +1728 -0
- package/dist/dom/applicators/index.js.map +26 -0
- package/dist/dom/applicators/layout.js +141 -0
- package/dist/dom/applicators/layout.js.map +10 -0
- package/dist/dom/applicators/margin.js +104 -0
- package/dist/dom/applicators/margin.js.map +10 -0
- package/dist/dom/applicators/padding.js +104 -0
- package/dist/dom/applicators/padding.js.map +10 -0
- package/dist/{src/dom → dom}/applicators/size.js +76 -76
- package/dist/dom/applicators/size.js.map +10 -0
- package/dist/dom/applicators/transform.js +105 -0
- package/dist/{src/dom → dom}/applicators/transform.js.map +3 -3
- package/dist/dom/applicators/transition.js +79 -0
- package/dist/{src/dom → dom}/applicators/transition.js.map +3 -3
- package/dist/dom/applicators/types.js +2 -0
- package/dist/dom/applicators/types.js.map +9 -0
- package/dist/dom/applicators/typography.js +100 -0
- package/dist/{src/dom → dom}/applicators/typography.js.map +3 -3
- package/dist/{src/dom → dom}/components/avatar.js +4 -3
- package/dist/dom/components/avatar.js.map +10 -0
- package/dist/{src/dom → dom}/components/button.js +11 -1
- package/dist/dom/components/button.js.map +10 -0
- package/dist/{src/dom → dom}/components/center.js +4 -1
- package/dist/dom/components/center.js.map +10 -0
- package/dist/dom/components/column.js.map +10 -0
- package/dist/{src/dom → dom}/components/container.js +1 -4
- package/dist/{src/dom → dom}/components/container.js.map +3 -3
- package/dist/{src/dom → dom}/components/grid.js +18 -2
- package/dist/dom/components/grid.js.map +10 -0
- package/dist/{src/dom → dom}/components/hypenapp.js +15 -13
- package/dist/dom/components/hypenapp.js.map +10 -0
- package/dist/{src/dom → dom}/components/index.js +64 -24
- package/dist/dom/components/index.js.map +41 -0
- package/dist/{src/dom → dom}/components/route.js +5 -3
- package/dist/dom/components/route.js.map +10 -0
- package/dist/{src/dom → dom}/components/row.js +5 -4
- package/dist/dom/components/row.js.map +10 -0
- package/dist/{src/dom → dom}/components/stack.js +5 -1
- package/dist/dom/components/stack.js.map +10 -0
- package/dist/{src/dom → dom}/components/text.js +5 -1
- package/dist/dom/components/text.js.map +10 -0
- package/dist/{src/dom → dom}/debug.js +5 -3
- package/dist/dom/debug.js.map +10 -0
- package/dist/{src/dom → dom}/element-data.js +6 -11
- package/dist/dom/element-data.js.map +10 -0
- package/dist/{src/dom → dom}/events.js +15 -12
- package/dist/dom/events.js.map +10 -0
- package/dist/{src/dom → dom}/index.js +1103 -1044
- package/dist/dom/index.js.map +62 -0
- package/dist/{src/dom → dom}/renderer.js +1089 -1033
- package/dist/dom/renderer.js.map +61 -0
- package/dist/{src/hypen.js → hypen.js} +1122 -1097
- package/dist/hypen.js.map +62 -0
- package/dist/{src/index.js → index.js} +1143 -1111
- package/dist/index.js.map +72 -0
- package/package.json +22 -22
- package/src/canvas/renderer.ts +7 -4
- package/src/canvas/text.ts +4 -1
- package/src/dom/applicators/background.ts +1 -1
- package/src/dom/applicators/border.ts +1 -1
- package/src/dom/applicators/color.ts +1 -1
- package/src/dom/applicators/display.ts +1 -1
- package/src/dom/applicators/effects.ts +1 -1
- package/src/dom/applicators/events.ts +8 -14
- package/src/dom/applicators/font.ts +1 -1
- package/src/dom/applicators/index.ts +49 -17
- package/src/dom/applicators/layout.ts +31 -8
- package/src/dom/applicators/margin.ts +56 -6
- package/src/dom/applicators/padding.ts +56 -6
- package/src/dom/applicators/size.ts +19 -4
- package/src/dom/applicators/transform.ts +1 -1
- package/src/dom/applicators/transition.ts +1 -1
- package/src/dom/applicators/types.ts +7 -0
- package/src/dom/applicators/typography.ts +1 -1
- package/src/dom/components/avatar.ts +4 -3
- package/src/dom/components/button.ts +17 -0
- package/src/dom/components/center.ts +9 -0
- package/src/dom/components/column.ts +4 -2
- package/src/dom/components/container.ts +2 -3
- package/src/dom/components/grid.ts +22 -0
- package/src/dom/components/hypenapp.ts +14 -11
- package/src/dom/components/route.ts +4 -1
- package/src/dom/components/row.ts +8 -7
- package/src/dom/components/stack.ts +4 -0
- package/src/dom/components/text.ts +7 -0
- package/src/dom/debug.ts +6 -2
- package/src/dom/element-data.ts +1 -1
- package/src/dom/events.ts +16 -12
- package/src/dom/renderer.ts +12 -9
- package/src/hypen.ts +32 -73
- package/dist/src/dom/applicators/advanced-layout.js +0 -250
- package/dist/src/dom/applicators/advanced-layout.js.map +0 -11
- package/dist/src/dom/applicators/background.js +0 -76
- package/dist/src/dom/applicators/border.js +0 -106
- package/dist/src/dom/applicators/color.js +0 -58
- package/dist/src/dom/applicators/display.js +0 -79
- package/dist/src/dom/applicators/effects.js +0 -147
- package/dist/src/dom/applicators/events.js.map +0 -11
- package/dist/src/dom/applicators/index.js +0 -1715
- package/dist/src/dom/applicators/index.js.map +0 -26
- package/dist/src/dom/applicators/layout.js +0 -138
- package/dist/src/dom/applicators/layout.js.map +0 -10
- package/dist/src/dom/applicators/margin.js.map +0 -10
- package/dist/src/dom/applicators/padding.js.map +0 -10
- package/dist/src/dom/applicators/size.js.map +0 -10
- package/dist/src/dom/applicators/transform.js +0 -114
- package/dist/src/dom/applicators/transition.js +0 -88
- package/dist/src/dom/applicators/typography.js +0 -109
- package/dist/src/dom/components/avatar.js.map +0 -10
- package/dist/src/dom/components/button.js.map +0 -10
- package/dist/src/dom/components/center.js.map +0 -10
- package/dist/src/dom/components/column.js.map +0 -10
- package/dist/src/dom/components/grid.js.map +0 -10
- package/dist/src/dom/components/hypenapp.js.map +0 -10
- package/dist/src/dom/components/index.js.map +0 -41
- package/dist/src/dom/components/route.js.map +0 -10
- package/dist/src/dom/components/row.js.map +0 -10
- package/dist/src/dom/components/stack.js.map +0 -10
- package/dist/src/dom/components/text.js.map +0 -10
- package/dist/src/dom/debug.js.map +0 -10
- package/dist/src/dom/element-data.js.map +0 -10
- package/dist/src/dom/events.js.map +0 -10
- package/dist/src/dom/index.js.map +0 -62
- package/dist/src/dom/renderer.js.map +0 -61
- package/dist/src/hypen.js.map +0 -62
- package/dist/src/index.js.map +0 -72
- /package/dist/{src/canvas → canvas}/accessibility.js +0 -0
- /package/dist/{src/canvas → canvas}/accessibility.js.map +0 -0
- /package/dist/{src/canvas → canvas}/events.js +0 -0
- /package/dist/{src/canvas → canvas}/events.js.map +0 -0
- /package/dist/{src/canvas → canvas}/input.js +0 -0
- /package/dist/{src/canvas → canvas}/input.js.map +0 -0
- /package/dist/{src/canvas → canvas}/types.js +0 -0
- /package/dist/{src/canvas → canvas}/types.js.map +0 -0
- /package/dist/{src/canvas → canvas}/utils.js +0 -0
- /package/dist/{src/canvas → canvas}/utils.js.map +0 -0
- /package/dist/{src/dom → dom}/canvas/index.js +0 -0
- /package/dist/{src/dom → dom}/canvas/index.js.map +0 -0
- /package/dist/{src/dom → dom}/components/audio.js +0 -0
- /package/dist/{src/dom → dom}/components/audio.js.map +0 -0
- /package/dist/{src/dom → dom}/components/badge.js +0 -0
- /package/dist/{src/dom → dom}/components/badge.js.map +0 -0
- /package/dist/{src/dom → dom}/components/card.js +0 -0
- /package/dist/{src/dom → dom}/components/card.js.map +0 -0
- /package/dist/{src/dom → dom}/components/checkbox.js +0 -0
- /package/dist/{src/dom → dom}/components/checkbox.js.map +0 -0
- /package/dist/{src/dom → dom}/components/column.js +0 -0
- /package/dist/{src/dom → dom}/components/divider.js +0 -0
- /package/dist/{src/dom → dom}/components/divider.js.map +0 -0
- /package/dist/{src/dom → dom}/components/heading.js +0 -0
- /package/dist/{src/dom → dom}/components/heading.js.map +0 -0
- /package/dist/{src/dom → dom}/components/image.js +0 -0
- /package/dist/{src/dom → dom}/components/image.js.map +0 -0
- /package/dist/{src/dom → dom}/components/input.js +0 -0
- /package/dist/{src/dom → dom}/components/input.js.map +0 -0
- /package/dist/{src/dom → dom}/components/link.js +0 -0
- /package/dist/{src/dom → dom}/components/link.js.map +0 -0
- /package/dist/{src/dom → dom}/components/list.js +0 -0
- /package/dist/{src/dom → dom}/components/list.js.map +0 -0
- /package/dist/{src/dom → dom}/components/paragraph.js +0 -0
- /package/dist/{src/dom → dom}/components/paragraph.js.map +0 -0
- /package/dist/{src/dom → dom}/components/progressbar.js +0 -0
- /package/dist/{src/dom → dom}/components/progressbar.js.map +0 -0
- /package/dist/{src/dom → dom}/components/router.js +0 -0
- /package/dist/{src/dom → dom}/components/router.js.map +0 -0
- /package/dist/{src/dom → dom}/components/select.js +0 -0
- /package/dist/{src/dom → dom}/components/select.js.map +0 -0
- /package/dist/{src/dom → dom}/components/slider.js +0 -0
- /package/dist/{src/dom → dom}/components/slider.js.map +0 -0
- /package/dist/{src/dom → dom}/components/spacer.js +0 -0
- /package/dist/{src/dom → dom}/components/spacer.js.map +0 -0
- /package/dist/{src/dom → dom}/components/spinner.js +0 -0
- /package/dist/{src/dom → dom}/components/spinner.js.map +0 -0
- /package/dist/{src/dom → dom}/components/switch.js +0 -0
- /package/dist/{src/dom → dom}/components/switch.js.map +0 -0
- /package/dist/{src/dom → dom}/components/textarea.js +0 -0
- /package/dist/{src/dom → dom}/components/textarea.js.map +0 -0
- /package/dist/{src/dom → dom}/components/video.js +0 -0
- /package/dist/{src/dom → dom}/components/video.js.map +0 -0
|
@@ -58,9 +58,10 @@ function ensureRowStyles() {
|
|
|
58
58
|
const style = document.createElement("style");
|
|
59
59
|
style.id = "hypen-row-styles";
|
|
60
60
|
style.textContent = `
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
/* Row expands to fill width when it has children with flex/weight */
|
|
62
|
+
/* This matches iOS/Android behavior where weighted children cause parent to expand */
|
|
63
|
+
[data-hypen-type="row"]:has(> [data-hypen-flex]) {
|
|
64
|
+
width: 100%;
|
|
64
65
|
}
|
|
65
66
|
`;
|
|
66
67
|
document.head.appendChild(style);
|
|
@@ -91,6 +92,10 @@ var init_text = __esm(() => {
|
|
|
91
92
|
create() {
|
|
92
93
|
const el = document.createElement("span");
|
|
93
94
|
el.style.display = "inline-block";
|
|
95
|
+
el.style.lineHeight = "1";
|
|
96
|
+
el.style.verticalAlign = "top";
|
|
97
|
+
el.style.margin = "0";
|
|
98
|
+
el.style.padding = "0";
|
|
94
99
|
el.dataset.hypenType = "text";
|
|
95
100
|
return el;
|
|
96
101
|
},
|
|
@@ -140,6 +145,16 @@ var init_button = __esm(() => {
|
|
|
140
145
|
buttonHandler = {
|
|
141
146
|
create() {
|
|
142
147
|
const el = document.createElement("button");
|
|
148
|
+
el.style.border = "none";
|
|
149
|
+
el.style.background = "none";
|
|
150
|
+
el.style.padding = "0";
|
|
151
|
+
el.style.margin = "0";
|
|
152
|
+
el.style.font = "inherit";
|
|
153
|
+
el.style.color = "inherit";
|
|
154
|
+
el.style.cursor = "pointer";
|
|
155
|
+
el.style.display = "flex";
|
|
156
|
+
el.style.flexDirection = "column";
|
|
157
|
+
el.style.alignItems = "flex-start";
|
|
143
158
|
el.dataset.hypenType = "button";
|
|
144
159
|
return el;
|
|
145
160
|
}
|
|
@@ -156,9 +171,6 @@ var init_container = __esm(() => {
|
|
|
156
171
|
containerHandler = {
|
|
157
172
|
create() {
|
|
158
173
|
const el = document.createElement("div");
|
|
159
|
-
el.style.display = "flex";
|
|
160
|
-
el.style.flexDirection = "column";
|
|
161
|
-
el.style.alignItems = "stretch";
|
|
162
174
|
el.dataset.hypenType = "container";
|
|
163
175
|
return el;
|
|
164
176
|
}
|
|
@@ -178,6 +190,9 @@ var init_center = __esm(() => {
|
|
|
178
190
|
el.style.display = "flex";
|
|
179
191
|
el.style.alignItems = "center";
|
|
180
192
|
el.style.justifyContent = "center";
|
|
193
|
+
el.style.width = "100%";
|
|
194
|
+
el.style.height = "100%";
|
|
195
|
+
el.style.alignSelf = "stretch";
|
|
181
196
|
el.dataset.hypenType = "center";
|
|
182
197
|
return el;
|
|
183
198
|
}
|
|
@@ -428,12 +443,16 @@ function ensureStackStyles() {
|
|
|
428
443
|
position: relative;
|
|
429
444
|
display: grid;
|
|
430
445
|
grid-template-areas: "stack";
|
|
446
|
+
/* Default alignment: top-left (matching iOS/Android ZStack default) */
|
|
447
|
+
justify-items: start;
|
|
448
|
+
align-items: start;
|
|
431
449
|
/* Ensure Stack participates properly in flex layouts (Row/Column) */
|
|
432
450
|
min-width: 0;
|
|
433
451
|
min-height: 0;
|
|
434
452
|
}
|
|
435
453
|
[data-hypen-type="stack"] > * {
|
|
436
454
|
grid-area: stack;
|
|
455
|
+
/* Don't set justify-self/align-self here - let parent's justify-items/align-items control */
|
|
437
456
|
}
|
|
438
457
|
`;
|
|
439
458
|
document.head.appendChild(style);
|
|
@@ -487,10 +506,26 @@ var exports_grid = {};
|
|
|
487
506
|
__export(exports_grid, {
|
|
488
507
|
gridHandler: () => gridHandler
|
|
489
508
|
});
|
|
490
|
-
|
|
509
|
+
function ensureGridStyles() {
|
|
510
|
+
if (gridStylesInjected)
|
|
511
|
+
return;
|
|
512
|
+
gridStylesInjected = true;
|
|
513
|
+
const style = document.createElement("style");
|
|
514
|
+
style.id = "hypen-grid-styles";
|
|
515
|
+
style.textContent = `
|
|
516
|
+
/* Grid children stretch to fill cells by default (matches Android behavior) */
|
|
517
|
+
[data-hypen-type="grid"] > * {
|
|
518
|
+
justify-self: stretch;
|
|
519
|
+
align-self: stretch;
|
|
520
|
+
}
|
|
521
|
+
`;
|
|
522
|
+
document.head.appendChild(style);
|
|
523
|
+
}
|
|
524
|
+
var gridStylesInjected = false, gridHandler;
|
|
491
525
|
var init_grid = __esm(() => {
|
|
492
526
|
gridHandler = {
|
|
493
527
|
create() {
|
|
528
|
+
ensureGridStyles();
|
|
494
529
|
const el = document.createElement("div");
|
|
495
530
|
el.style.display = "grid";
|
|
496
531
|
el.dataset.hypenType = "grid";
|
|
@@ -791,9 +826,10 @@ var init_avatar = __esm(() => {
|
|
|
791
826
|
return el;
|
|
792
827
|
},
|
|
793
828
|
applyProps(el, props) {
|
|
794
|
-
|
|
829
|
+
const src = props["src.0"] || props["0"] || props.src || props.source;
|
|
830
|
+
if (src !== undefined) {
|
|
795
831
|
const img = document.createElement("img");
|
|
796
|
-
img.src = String(
|
|
832
|
+
img.src = String(src);
|
|
797
833
|
img.style.width = "100%";
|
|
798
834
|
img.style.height = "100%";
|
|
799
835
|
img.style.objectFit = "cover";
|
|
@@ -975,8 +1011,10 @@ var exports_route = {};
|
|
|
975
1011
|
__export(exports_route, {
|
|
976
1012
|
routeHandler: () => routeHandler
|
|
977
1013
|
});
|
|
978
|
-
|
|
1014
|
+
import { frameworkLoggers } from "@hypen-space/core";
|
|
1015
|
+
var log, routeHandler;
|
|
979
1016
|
var init_route = __esm(() => {
|
|
1017
|
+
log = frameworkLoggers.router;
|
|
980
1018
|
routeHandler = {
|
|
981
1019
|
create() {
|
|
982
1020
|
const el = document.createElement("div");
|
|
@@ -996,7 +1034,7 @@ var init_route = __esm(() => {
|
|
|
996
1034
|
if (componentName) {
|
|
997
1035
|
el.dataset.routeComponent = String(componentName);
|
|
998
1036
|
}
|
|
999
|
-
|
|
1037
|
+
log.debug(`Route created: path="${path}", lazy=${isLazy}, component="${el.dataset.routeComponent || "none"}"`);
|
|
1000
1038
|
}
|
|
1001
1039
|
};
|
|
1002
1040
|
});
|
|
@@ -1008,11 +1046,12 @@ __export(exports_hypenapp, {
|
|
|
1008
1046
|
disconnectHypenApp: () => disconnectHypenApp
|
|
1009
1047
|
});
|
|
1010
1048
|
import { RemoteEngine } from "@hypen-space/core/remote/client";
|
|
1049
|
+
import { frameworkLoggers as frameworkLoggers2 } from "@hypen-space/core";
|
|
1011
1050
|
function applyPatches(container, nodes, patches, engine, onRoot) {
|
|
1012
1051
|
for (const patch of patches) {
|
|
1013
1052
|
switch (patch.type) {
|
|
1014
1053
|
case "create": {
|
|
1015
|
-
const el = createElement(patch.
|
|
1054
|
+
const el = createElement(patch.elementType, patch.props || {});
|
|
1016
1055
|
el.dataset.hypenId = patch.id;
|
|
1017
1056
|
el.__hypenEngine = engine;
|
|
1018
1057
|
nodes.set(patch.id, el);
|
|
@@ -1033,10 +1072,10 @@ function applyPatches(container, nodes, patches, engine, onRoot) {
|
|
|
1033
1072
|
break;
|
|
1034
1073
|
}
|
|
1035
1074
|
case "insert": {
|
|
1036
|
-
const parentId = patch.
|
|
1075
|
+
const parentId = patch.parentId;
|
|
1037
1076
|
const parent = parentId === "root" ? container : nodes.get(parentId);
|
|
1038
1077
|
const child = nodes.get(patch.id);
|
|
1039
|
-
const beforeId = patch.
|
|
1078
|
+
const beforeId = patch.beforeId;
|
|
1040
1079
|
if (parent && child) {
|
|
1041
1080
|
if (parentId === "root") {
|
|
1042
1081
|
onRoot(patch.id);
|
|
@@ -1055,10 +1094,10 @@ function applyPatches(container, nodes, patches, engine, onRoot) {
|
|
|
1055
1094
|
break;
|
|
1056
1095
|
}
|
|
1057
1096
|
case "move": {
|
|
1058
|
-
const parentId = patch.
|
|
1097
|
+
const parentId = patch.parentId;
|
|
1059
1098
|
const parent = parentId === "root" ? container : nodes.get(parentId);
|
|
1060
1099
|
const child = nodes.get(patch.id);
|
|
1061
|
-
const beforeId = patch.
|
|
1100
|
+
const beforeId = patch.beforeId;
|
|
1062
1101
|
if (parent && child) {
|
|
1063
1102
|
if (beforeId) {
|
|
1064
1103
|
const before = nodes.get(beforeId);
|
|
@@ -1192,8 +1231,9 @@ function disconnectHypenApp(element) {
|
|
|
1192
1231
|
activeInstances.delete(element);
|
|
1193
1232
|
}
|
|
1194
1233
|
}
|
|
1195
|
-
var activeInstances, hypenAppHandler;
|
|
1234
|
+
var log2, activeInstances, hypenAppHandler;
|
|
1196
1235
|
var init_hypenapp = __esm(() => {
|
|
1236
|
+
log2 = frameworkLoggers2.remote;
|
|
1197
1237
|
activeInstances = new WeakMap;
|
|
1198
1238
|
hypenAppHandler = {
|
|
1199
1239
|
create() {
|
|
@@ -1205,7 +1245,7 @@ var init_hypenapp = __esm(() => {
|
|
|
1205
1245
|
applyProps(element, props) {
|
|
1206
1246
|
const url = props["0"] || props.url;
|
|
1207
1247
|
if (!url || typeof url !== "string") {
|
|
1208
|
-
|
|
1248
|
+
log2.error("HypenApp: URL is required");
|
|
1209
1249
|
element.innerHTML = '<div style="color: red;">HypenApp: URL required</div>';
|
|
1210
1250
|
return;
|
|
1211
1251
|
}
|
|
@@ -1230,16 +1270,16 @@ var init_hypenapp = __esm(() => {
|
|
|
1230
1270
|
element.innerHTML = '<div class="hypen-app-loading">Connecting...</div>';
|
|
1231
1271
|
engine.connect().then(() => {
|
|
1232
1272
|
element.innerHTML = "";
|
|
1233
|
-
|
|
1273
|
+
log2.debug(`HypenApp connected to ${url}`);
|
|
1234
1274
|
}).catch((error) => {
|
|
1235
1275
|
element.innerHTML = `<div style="color: red;">HypenApp: Connection failed - ${error.message}</div>`;
|
|
1236
|
-
|
|
1276
|
+
log2.error("HypenApp connection failed:", error);
|
|
1237
1277
|
});
|
|
1238
1278
|
engine.onDisconnect(() => {
|
|
1239
|
-
|
|
1279
|
+
log2.debug("HypenApp disconnected");
|
|
1240
1280
|
});
|
|
1241
1281
|
engine.onError((error) => {
|
|
1242
|
-
|
|
1282
|
+
log2.error("HypenApp error:", error);
|
|
1243
1283
|
});
|
|
1244
1284
|
const observer = new MutationObserver((mutations) => {
|
|
1245
1285
|
for (const mutation of mutations) {
|
|
@@ -1248,7 +1288,7 @@ var init_hypenapp = __esm(() => {
|
|
|
1248
1288
|
engine.disconnect();
|
|
1249
1289
|
activeInstances.delete(element);
|
|
1250
1290
|
observer.disconnect();
|
|
1251
|
-
|
|
1291
|
+
log2.debug("HypenApp cleaned up");
|
|
1252
1292
|
return;
|
|
1253
1293
|
}
|
|
1254
1294
|
}
|
|
@@ -1261,149 +1301,306 @@ var init_hypenapp = __esm(() => {
|
|
|
1261
1301
|
};
|
|
1262
1302
|
});
|
|
1263
1303
|
|
|
1304
|
+
// src/dom/components/index.ts
|
|
1305
|
+
class ComponentRegistry {
|
|
1306
|
+
handlers = new Map;
|
|
1307
|
+
constructor() {
|
|
1308
|
+
this.registerDefaults();
|
|
1309
|
+
}
|
|
1310
|
+
register(type, handler) {
|
|
1311
|
+
this.handlers.set(type.toLowerCase(), handler);
|
|
1312
|
+
}
|
|
1313
|
+
get(type) {
|
|
1314
|
+
return this.handlers.get(type.toLowerCase());
|
|
1315
|
+
}
|
|
1316
|
+
createElement(type, props = {}) {
|
|
1317
|
+
const handler = this.get(type);
|
|
1318
|
+
if (!handler)
|
|
1319
|
+
return null;
|
|
1320
|
+
const element = handler.create();
|
|
1321
|
+
if (handler.applyProps) {
|
|
1322
|
+
handler.applyProps(element, props);
|
|
1323
|
+
}
|
|
1324
|
+
return element;
|
|
1325
|
+
}
|
|
1326
|
+
registerDefaults() {
|
|
1327
|
+
const { columnHandler: columnHandler2 } = (init_column(), __toCommonJS(exports_column));
|
|
1328
|
+
const { rowHandler: rowHandler2 } = (init_row(), __toCommonJS(exports_row));
|
|
1329
|
+
const { textHandler: textHandler2 } = (init_text(), __toCommonJS(exports_text));
|
|
1330
|
+
const { imageHandler: imageHandler2 } = (init_image(), __toCommonJS(exports_image));
|
|
1331
|
+
const { buttonHandler: buttonHandler2 } = (init_button(), __toCommonJS(exports_button));
|
|
1332
|
+
const { containerHandler: containerHandler2 } = (init_container(), __toCommonJS(exports_container));
|
|
1333
|
+
const { centerHandler: centerHandler2 } = (init_center(), __toCommonJS(exports_center));
|
|
1334
|
+
const { listHandler: listHandler2 } = (init_list(), __toCommonJS(exports_list));
|
|
1335
|
+
const { inputHandler: inputHandler2 } = (init_input(), __toCommonJS(exports_input));
|
|
1336
|
+
const { linkHandler: linkHandler2 } = (init_link(), __toCommonJS(exports_link));
|
|
1337
|
+
const { textareaHandler: textareaHandler2 } = (init_textarea(), __toCommonJS(exports_textarea));
|
|
1338
|
+
const { checkboxHandler: checkboxHandler2 } = (init_checkbox(), __toCommonJS(exports_checkbox));
|
|
1339
|
+
const { selectHandler: selectHandler2 } = (init_select(), __toCommonJS(exports_select));
|
|
1340
|
+
const { spacerHandler: spacerHandler2 } = (init_spacer(), __toCommonJS(exports_spacer));
|
|
1341
|
+
const { stackHandler: stackHandler2 } = (init_stack(), __toCommonJS(exports_stack));
|
|
1342
|
+
const { dividerHandler: dividerHandler2 } = (init_divider(), __toCommonJS(exports_divider));
|
|
1343
|
+
const { gridHandler: gridHandler2 } = (init_grid(), __toCommonJS(exports_grid));
|
|
1344
|
+
const { cardHandler: cardHandler2 } = (init_card(), __toCommonJS(exports_card));
|
|
1345
|
+
const { headingHandler: headingHandler2 } = (init_heading(), __toCommonJS(exports_heading));
|
|
1346
|
+
const { switchHandler: switchHandler2 } = (init_switch(), __toCommonJS(exports_switch));
|
|
1347
|
+
const { sliderHandler: sliderHandler2 } = (init_slider(), __toCommonJS(exports_slider));
|
|
1348
|
+
const { spinnerHandler: spinnerHandler2 } = (init_spinner(), __toCommonJS(exports_spinner));
|
|
1349
|
+
const { badgeHandler: badgeHandler2 } = (init_badge(), __toCommonJS(exports_badge));
|
|
1350
|
+
const { avatarHandler: avatarHandler2 } = (init_avatar(), __toCommonJS(exports_avatar));
|
|
1351
|
+
const { progressBarHandler: progressBarHandler2 } = (init_progressbar(), __toCommonJS(exports_progressbar));
|
|
1352
|
+
const { videoHandler: videoHandler2 } = (init_video(), __toCommonJS(exports_video));
|
|
1353
|
+
const { audioHandler: audioHandler2 } = (init_audio(), __toCommonJS(exports_audio));
|
|
1354
|
+
const { paragraphHandler: paragraphHandler2 } = (init_paragraph(), __toCommonJS(exports_paragraph));
|
|
1355
|
+
const { routerHandler: routerHandler2 } = (init_router(), __toCommonJS(exports_router));
|
|
1356
|
+
const { routeHandler: routeHandler2 } = (init_route(), __toCommonJS(exports_route));
|
|
1357
|
+
const { hypenAppHandler: hypenAppHandler2 } = (init_hypenapp(), __toCommonJS(exports_hypenapp));
|
|
1358
|
+
this.register("column", columnHandler2);
|
|
1359
|
+
this.register("row", rowHandler2);
|
|
1360
|
+
this.register("text", textHandler2);
|
|
1361
|
+
this.register("image", imageHandler2);
|
|
1362
|
+
this.register("button", buttonHandler2);
|
|
1363
|
+
this.register("container", containerHandler2);
|
|
1364
|
+
this.register("box", containerHandler2);
|
|
1365
|
+
this.register("center", centerHandler2);
|
|
1366
|
+
this.register("list", listHandler2);
|
|
1367
|
+
this.register("input", inputHandler2);
|
|
1368
|
+
this.register("link", linkHandler2);
|
|
1369
|
+
this.register("textarea", textareaHandler2);
|
|
1370
|
+
this.register("checkbox", checkboxHandler2);
|
|
1371
|
+
this.register("select", selectHandler2);
|
|
1372
|
+
this.register("spacer", spacerHandler2);
|
|
1373
|
+
this.register("stack", stackHandler2);
|
|
1374
|
+
this.register("divider", dividerHandler2);
|
|
1375
|
+
this.register("grid", gridHandler2);
|
|
1376
|
+
this.register("card", cardHandler2);
|
|
1377
|
+
this.register("heading", headingHandler2);
|
|
1378
|
+
this.register("switch", switchHandler2);
|
|
1379
|
+
this.register("slider", sliderHandler2);
|
|
1380
|
+
this.register("spinner", spinnerHandler2);
|
|
1381
|
+
this.register("badge", badgeHandler2);
|
|
1382
|
+
this.register("avatar", avatarHandler2);
|
|
1383
|
+
this.register("progressbar", progressBarHandler2);
|
|
1384
|
+
this.register("video", videoHandler2);
|
|
1385
|
+
this.register("audio", audioHandler2);
|
|
1386
|
+
this.register("paragraph", paragraphHandler2);
|
|
1387
|
+
this.register("router", routerHandler2);
|
|
1388
|
+
this.register("route", routeHandler2);
|
|
1389
|
+
this.register("hypenapp", hypenAppHandler2);
|
|
1390
|
+
}
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1264
1393
|
// src/dom/applicators/padding.ts
|
|
1265
|
-
var
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1394
|
+
var getNumericValue = (value) => {
|
|
1395
|
+
if (typeof value === "number")
|
|
1396
|
+
return value;
|
|
1397
|
+
if (typeof value === "object" && value["0"] !== undefined)
|
|
1398
|
+
return Number(value["0"]);
|
|
1399
|
+
if (typeof value === "string")
|
|
1400
|
+
return parseFloat(value);
|
|
1401
|
+
return null;
|
|
1402
|
+
};
|
|
1269
1403
|
var paddingHandler = (el, value) => {
|
|
1270
1404
|
if (typeof value === "number") {
|
|
1271
1405
|
el.style.padding = `${value}px`;
|
|
1272
1406
|
} else if (typeof value === "object") {
|
|
1273
|
-
if (value
|
|
1274
|
-
el.style.
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1407
|
+
if (value["0"] !== undefined && Object.keys(value).length === 1) {
|
|
1408
|
+
el.style.padding = `${value["0"]}px`;
|
|
1409
|
+
} else {
|
|
1410
|
+
if (value.left !== undefined)
|
|
1411
|
+
el.style.paddingLeft = `${value.left}px`;
|
|
1412
|
+
if (value.right !== undefined)
|
|
1413
|
+
el.style.paddingRight = `${value.right}px`;
|
|
1414
|
+
if (value.top !== undefined)
|
|
1415
|
+
el.style.paddingTop = `${value.top}px`;
|
|
1416
|
+
if (value.bottom !== undefined)
|
|
1417
|
+
el.style.paddingBottom = `${value.bottom}px`;
|
|
1418
|
+
}
|
|
1281
1419
|
} else {
|
|
1282
1420
|
el.style.padding = String(value);
|
|
1283
1421
|
}
|
|
1284
1422
|
};
|
|
1423
|
+
var paddingTopHandler = (el, value) => {
|
|
1424
|
+
const v = getNumericValue(value);
|
|
1425
|
+
if (v !== null)
|
|
1426
|
+
el.style.paddingTop = `${v}px`;
|
|
1427
|
+
};
|
|
1428
|
+
var paddingBottomHandler = (el, value) => {
|
|
1429
|
+
const v = getNumericValue(value);
|
|
1430
|
+
if (v !== null)
|
|
1431
|
+
el.style.paddingBottom = `${v}px`;
|
|
1432
|
+
};
|
|
1433
|
+
var paddingLeftHandler = (el, value) => {
|
|
1434
|
+
const v = getNumericValue(value);
|
|
1435
|
+
if (v !== null)
|
|
1436
|
+
el.style.paddingLeft = `${v}px`;
|
|
1437
|
+
};
|
|
1438
|
+
var paddingRightHandler = (el, value) => {
|
|
1439
|
+
const v = getNumericValue(value);
|
|
1440
|
+
if (v !== null)
|
|
1441
|
+
el.style.paddingRight = `${v}px`;
|
|
1442
|
+
};
|
|
1443
|
+
var paddingHorizontalHandler = (el, value) => {
|
|
1444
|
+
const v = getNumericValue(value);
|
|
1445
|
+
if (v !== null) {
|
|
1446
|
+
el.style.paddingLeft = `${v}px`;
|
|
1447
|
+
el.style.paddingRight = `${v}px`;
|
|
1448
|
+
}
|
|
1449
|
+
};
|
|
1450
|
+
var paddingVerticalHandler = (el, value) => {
|
|
1451
|
+
const v = getNumericValue(value);
|
|
1452
|
+
if (v !== null) {
|
|
1453
|
+
el.style.paddingTop = `${v}px`;
|
|
1454
|
+
el.style.paddingBottom = `${v}px`;
|
|
1455
|
+
}
|
|
1456
|
+
};
|
|
1285
1457
|
|
|
1286
1458
|
// src/dom/applicators/margin.ts
|
|
1287
|
-
var
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1459
|
+
var getNumericValue2 = (value) => {
|
|
1460
|
+
if (typeof value === "number")
|
|
1461
|
+
return value;
|
|
1462
|
+
if (typeof value === "object" && value["0"] !== undefined)
|
|
1463
|
+
return Number(value["0"]);
|
|
1464
|
+
if (typeof value === "string")
|
|
1465
|
+
return parseFloat(value);
|
|
1466
|
+
return null;
|
|
1467
|
+
};
|
|
1291
1468
|
var marginHandler = (el, value) => {
|
|
1292
1469
|
if (typeof value === "number") {
|
|
1293
1470
|
el.style.margin = `${value}px`;
|
|
1294
1471
|
} else if (typeof value === "object") {
|
|
1295
|
-
if (value
|
|
1296
|
-
el.style.
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1472
|
+
if (value["0"] !== undefined && Object.keys(value).length === 1) {
|
|
1473
|
+
el.style.margin = `${value["0"]}px`;
|
|
1474
|
+
} else {
|
|
1475
|
+
if (value.left !== undefined)
|
|
1476
|
+
el.style.marginLeft = `${value.left}px`;
|
|
1477
|
+
if (value.right !== undefined)
|
|
1478
|
+
el.style.marginRight = `${value.right}px`;
|
|
1479
|
+
if (value.top !== undefined)
|
|
1480
|
+
el.style.marginTop = `${value.top}px`;
|
|
1481
|
+
if (value.bottom !== undefined)
|
|
1482
|
+
el.style.marginBottom = `${value.bottom}px`;
|
|
1483
|
+
}
|
|
1303
1484
|
} else {
|
|
1304
1485
|
el.style.margin = String(value);
|
|
1305
1486
|
}
|
|
1306
1487
|
};
|
|
1488
|
+
var marginTopHandler = (el, value) => {
|
|
1489
|
+
const v = getNumericValue2(value);
|
|
1490
|
+
if (v !== null)
|
|
1491
|
+
el.style.marginTop = `${v}px`;
|
|
1492
|
+
};
|
|
1493
|
+
var marginBottomHandler = (el, value) => {
|
|
1494
|
+
const v = getNumericValue2(value);
|
|
1495
|
+
if (v !== null)
|
|
1496
|
+
el.style.marginBottom = `${v}px`;
|
|
1497
|
+
};
|
|
1498
|
+
var marginLeftHandler = (el, value) => {
|
|
1499
|
+
const v = getNumericValue2(value);
|
|
1500
|
+
if (v !== null)
|
|
1501
|
+
el.style.marginLeft = `${v}px`;
|
|
1502
|
+
};
|
|
1503
|
+
var marginRightHandler = (el, value) => {
|
|
1504
|
+
const v = getNumericValue2(value);
|
|
1505
|
+
if (v !== null)
|
|
1506
|
+
el.style.marginRight = `${v}px`;
|
|
1507
|
+
};
|
|
1508
|
+
var marginHorizontalHandler = (el, value) => {
|
|
1509
|
+
const v = getNumericValue2(value);
|
|
1510
|
+
if (v !== null) {
|
|
1511
|
+
el.style.marginLeft = `${v}px`;
|
|
1512
|
+
el.style.marginRight = `${v}px`;
|
|
1513
|
+
}
|
|
1514
|
+
};
|
|
1515
|
+
var marginVerticalHandler = (el, value) => {
|
|
1516
|
+
const v = getNumericValue2(value);
|
|
1517
|
+
if (v !== null) {
|
|
1518
|
+
el.style.marginTop = `${v}px`;
|
|
1519
|
+
el.style.marginBottom = `${v}px`;
|
|
1520
|
+
}
|
|
1521
|
+
};
|
|
1307
1522
|
|
|
1308
1523
|
// src/dom/applicators/color.ts
|
|
1309
|
-
var
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
}
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
el.style.borderColor = String(value);
|
|
1324
|
-
},
|
|
1325
|
-
opacity: (el, value) => {
|
|
1326
|
-
el.style.opacity = String(value);
|
|
1327
|
-
}
|
|
1328
|
-
};
|
|
1329
|
-
});
|
|
1524
|
+
var colorHandlers = {
|
|
1525
|
+
color: (el, value) => {
|
|
1526
|
+
el.style.color = String(value);
|
|
1527
|
+
},
|
|
1528
|
+
backgroundColor: (el, value) => {
|
|
1529
|
+
el.style.backgroundColor = String(value);
|
|
1530
|
+
},
|
|
1531
|
+
borderColor: (el, value) => {
|
|
1532
|
+
el.style.borderColor = String(value);
|
|
1533
|
+
},
|
|
1534
|
+
opacity: (el, value) => {
|
|
1535
|
+
el.style.opacity = String(value);
|
|
1536
|
+
}
|
|
1537
|
+
};
|
|
1330
1538
|
|
|
1331
1539
|
// src/dom/applicators/border.ts
|
|
1332
|
-
var
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
}
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
}
|
|
1348
|
-
if (obj.color !== undefined) {
|
|
1349
|
-
el.style.borderColor = String(obj.color);
|
|
1350
|
-
}
|
|
1351
|
-
if (obj.style !== undefined) {
|
|
1352
|
-
el.style.borderStyle = String(obj.style);
|
|
1353
|
-
} else {
|
|
1354
|
-
el.style.borderStyle = "solid";
|
|
1355
|
-
}
|
|
1356
|
-
if (obj.radius !== undefined) {
|
|
1357
|
-
el.style.borderRadius = typeof obj.radius === "number" ? `${obj.radius}px` : String(obj.radius);
|
|
1358
|
-
}
|
|
1359
|
-
} else if (typeof value === "string") {
|
|
1360
|
-
el.style.border = value;
|
|
1361
|
-
}
|
|
1362
|
-
},
|
|
1363
|
-
borderWidth: (el, value) => {
|
|
1364
|
-
el.style.borderWidth = typeof value === "number" ? `${value}px` : String(value);
|
|
1365
|
-
},
|
|
1366
|
-
borderStyle: (el, value) => {
|
|
1367
|
-
el.style.borderStyle = String(value);
|
|
1368
|
-
},
|
|
1369
|
-
borderRadius: (el, value) => {
|
|
1370
|
-
if (typeof value === "number") {
|
|
1371
|
-
el.style.borderRadius = `${value}px`;
|
|
1372
|
-
} else if (typeof value === "object" && value !== null) {
|
|
1373
|
-
const obj = value;
|
|
1374
|
-
const topLeft = obj.topLeft ?? obj.topStart ?? 0;
|
|
1375
|
-
const topRight = obj.topRight ?? obj.topEnd ?? 0;
|
|
1376
|
-
const bottomRight = obj.bottomRight ?? obj.bottomEnd ?? 0;
|
|
1377
|
-
const bottomLeft = obj.bottomLeft ?? obj.bottomStart ?? 0;
|
|
1378
|
-
const formatValue = (v) => typeof v === "number" ? `${v}px` : String(v);
|
|
1379
|
-
el.style.borderRadius = `${formatValue(topLeft)} ${formatValue(topRight)} ${formatValue(bottomRight)} ${formatValue(bottomLeft)}`;
|
|
1540
|
+
var borderHandlers = {
|
|
1541
|
+
border: (el, value) => {
|
|
1542
|
+
if (typeof value === "number") {
|
|
1543
|
+
el.style.borderWidth = `${value}px`;
|
|
1544
|
+
el.style.borderStyle = "solid";
|
|
1545
|
+
} else if (typeof value === "object" && value !== null) {
|
|
1546
|
+
const obj = value;
|
|
1547
|
+
if (obj.width !== undefined) {
|
|
1548
|
+
el.style.borderWidth = typeof obj.width === "number" ? `${obj.width}px` : String(obj.width);
|
|
1549
|
+
}
|
|
1550
|
+
if (obj.color !== undefined) {
|
|
1551
|
+
el.style.borderColor = String(obj.color);
|
|
1552
|
+
}
|
|
1553
|
+
if (obj.style !== undefined) {
|
|
1554
|
+
el.style.borderStyle = String(obj.style);
|
|
1380
1555
|
} else {
|
|
1381
|
-
el.style.
|
|
1556
|
+
el.style.borderStyle = "solid";
|
|
1382
1557
|
}
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
if (typeof value === "number") {
|
|
1386
|
-
el.style.borderRadius = `${value}px`;
|
|
1387
|
-
} else if (typeof value === "object" && value !== null) {
|
|
1388
|
-
const obj = value;
|
|
1389
|
-
const topLeft = obj.topLeft ?? obj.topStart ?? 0;
|
|
1390
|
-
const topRight = obj.topRight ?? obj.topEnd ?? 0;
|
|
1391
|
-
const bottomRight = obj.bottomRight ?? obj.bottomEnd ?? 0;
|
|
1392
|
-
const bottomLeft = obj.bottomLeft ?? obj.bottomStart ?? 0;
|
|
1393
|
-
const formatValue = (v) => typeof v === "number" ? `${v}px` : String(v);
|
|
1394
|
-
el.style.borderRadius = `${formatValue(topLeft)} ${formatValue(topRight)} ${formatValue(bottomRight)} ${formatValue(bottomLeft)}`;
|
|
1395
|
-
} else {
|
|
1396
|
-
el.style.borderRadius = String(value);
|
|
1558
|
+
if (obj.radius !== undefined) {
|
|
1559
|
+
el.style.borderRadius = typeof obj.radius === "number" ? `${obj.radius}px` : String(obj.radius);
|
|
1397
1560
|
}
|
|
1561
|
+
} else if (typeof value === "string") {
|
|
1562
|
+
el.style.border = value;
|
|
1398
1563
|
}
|
|
1399
|
-
}
|
|
1400
|
-
|
|
1564
|
+
},
|
|
1565
|
+
borderWidth: (el, value) => {
|
|
1566
|
+
el.style.borderWidth = typeof value === "number" ? `${value}px` : String(value);
|
|
1567
|
+
},
|
|
1568
|
+
borderStyle: (el, value) => {
|
|
1569
|
+
el.style.borderStyle = String(value);
|
|
1570
|
+
},
|
|
1571
|
+
borderRadius: (el, value) => {
|
|
1572
|
+
if (typeof value === "number") {
|
|
1573
|
+
el.style.borderRadius = `${value}px`;
|
|
1574
|
+
} else if (typeof value === "object" && value !== null) {
|
|
1575
|
+
const obj = value;
|
|
1576
|
+
const topLeft = obj.topLeft ?? obj.topStart ?? 0;
|
|
1577
|
+
const topRight = obj.topRight ?? obj.topEnd ?? 0;
|
|
1578
|
+
const bottomRight = obj.bottomRight ?? obj.bottomEnd ?? 0;
|
|
1579
|
+
const bottomLeft = obj.bottomLeft ?? obj.bottomStart ?? 0;
|
|
1580
|
+
const formatValue = (v) => typeof v === "number" ? `${v}px` : String(v);
|
|
1581
|
+
el.style.borderRadius = `${formatValue(topLeft)} ${formatValue(topRight)} ${formatValue(bottomRight)} ${formatValue(bottomLeft)}`;
|
|
1582
|
+
} else {
|
|
1583
|
+
el.style.borderRadius = String(value);
|
|
1584
|
+
}
|
|
1585
|
+
},
|
|
1586
|
+
cornerRadius: (el, value) => {
|
|
1587
|
+
if (typeof value === "number") {
|
|
1588
|
+
el.style.borderRadius = `${value}px`;
|
|
1589
|
+
} else if (typeof value === "object" && value !== null) {
|
|
1590
|
+
const obj = value;
|
|
1591
|
+
const topLeft = obj.topLeft ?? obj.topStart ?? 0;
|
|
1592
|
+
const topRight = obj.topRight ?? obj.topEnd ?? 0;
|
|
1593
|
+
const bottomRight = obj.bottomRight ?? obj.bottomEnd ?? 0;
|
|
1594
|
+
const bottomLeft = obj.bottomLeft ?? obj.bottomStart ?? 0;
|
|
1595
|
+
const formatValue = (v) => typeof v === "number" ? `${v}px` : String(v);
|
|
1596
|
+
el.style.borderRadius = `${formatValue(topLeft)} ${formatValue(topRight)} ${formatValue(bottomRight)} ${formatValue(bottomLeft)}`;
|
|
1597
|
+
} else {
|
|
1598
|
+
el.style.borderRadius = String(value);
|
|
1599
|
+
}
|
|
1600
|
+
}
|
|
1601
|
+
};
|
|
1401
1602
|
|
|
1402
1603
|
// src/dom/applicators/size.ts
|
|
1403
|
-
var exports_size = {};
|
|
1404
|
-
__export(exports_size, {
|
|
1405
|
-
sizeHandlers: () => sizeHandlers
|
|
1406
|
-
});
|
|
1407
1604
|
function parseSizeValue(value) {
|
|
1408
1605
|
if (value === null || value === undefined)
|
|
1409
1606
|
return null;
|
|
@@ -1454,88 +1651,113 @@ function parseSizeValue(value) {
|
|
|
1454
1651
|
return `${num}px`;
|
|
1455
1652
|
}
|
|
1456
1653
|
}
|
|
1457
|
-
var sizeHandlers
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1654
|
+
var sizeHandlers = {
|
|
1655
|
+
width: (el, value) => {
|
|
1656
|
+
const size = parseSizeValue(value);
|
|
1657
|
+
if (size)
|
|
1658
|
+
el.style.width = size;
|
|
1659
|
+
},
|
|
1660
|
+
height: (el, value) => {
|
|
1661
|
+
const size = parseSizeValue(value);
|
|
1662
|
+
if (size)
|
|
1663
|
+
el.style.height = size;
|
|
1664
|
+
},
|
|
1665
|
+
minWidth: (el, value) => {
|
|
1666
|
+
const size = parseSizeValue(value);
|
|
1667
|
+
if (size)
|
|
1668
|
+
el.style.minWidth = size;
|
|
1669
|
+
},
|
|
1670
|
+
minHeight: (el, value) => {
|
|
1671
|
+
const size = parseSizeValue(value);
|
|
1672
|
+
if (size)
|
|
1673
|
+
el.style.minHeight = size;
|
|
1674
|
+
},
|
|
1675
|
+
maxWidth: (el, value) => {
|
|
1676
|
+
const size = parseSizeValue(value);
|
|
1677
|
+
if (size)
|
|
1678
|
+
el.style.maxWidth = size;
|
|
1679
|
+
},
|
|
1680
|
+
maxHeight: (el, value) => {
|
|
1681
|
+
const size = parseSizeValue(value);
|
|
1682
|
+
if (size)
|
|
1683
|
+
el.style.maxHeight = size;
|
|
1684
|
+
},
|
|
1685
|
+
size: (el, value) => {
|
|
1686
|
+
if (typeof value === "object" && value !== null) {
|
|
1687
|
+
const obj = value;
|
|
1688
|
+
if (obj.width !== undefined) {
|
|
1689
|
+
const w = parseSizeValue(obj.width);
|
|
1690
|
+
if (w)
|
|
1691
|
+
el.style.width = w;
|
|
1692
|
+
}
|
|
1693
|
+
if (obj.height !== undefined) {
|
|
1694
|
+
const h = parseSizeValue(obj.height);
|
|
1695
|
+
if (h)
|
|
1696
|
+
el.style.height = h;
|
|
1697
|
+
}
|
|
1698
|
+
} else {
|
|
1461
1699
|
const size = parseSizeValue(value);
|
|
1462
|
-
if (size)
|
|
1700
|
+
if (size) {
|
|
1463
1701
|
el.style.width = size;
|
|
1464
|
-
},
|
|
1465
|
-
height: (el, value) => {
|
|
1466
|
-
const size = parseSizeValue(value);
|
|
1467
|
-
if (size)
|
|
1468
1702
|
el.style.height = size;
|
|
1469
|
-
},
|
|
1470
|
-
minWidth: (el, value) => {
|
|
1471
|
-
const size = parseSizeValue(value);
|
|
1472
|
-
if (size)
|
|
1473
|
-
el.style.minWidth = size;
|
|
1474
|
-
},
|
|
1475
|
-
minHeight: (el, value) => {
|
|
1476
|
-
const size = parseSizeValue(value);
|
|
1477
|
-
if (size)
|
|
1478
|
-
el.style.minHeight = size;
|
|
1479
|
-
},
|
|
1480
|
-
maxWidth: (el, value) => {
|
|
1481
|
-
const size = parseSizeValue(value);
|
|
1482
|
-
if (size)
|
|
1483
|
-
el.style.maxWidth = size;
|
|
1484
|
-
},
|
|
1485
|
-
maxHeight: (el, value) => {
|
|
1486
|
-
const size = parseSizeValue(value);
|
|
1487
|
-
if (size)
|
|
1488
|
-
el.style.maxHeight = size;
|
|
1489
|
-
},
|
|
1490
|
-
size: (el, value) => {
|
|
1491
|
-
if (typeof value === "object" && value !== null) {
|
|
1492
|
-
const obj = value;
|
|
1493
|
-
if (obj.width !== undefined) {
|
|
1494
|
-
const w = parseSizeValue(obj.width);
|
|
1495
|
-
if (w)
|
|
1496
|
-
el.style.width = w;
|
|
1497
|
-
}
|
|
1498
|
-
if (obj.height !== undefined) {
|
|
1499
|
-
const h = parseSizeValue(obj.height);
|
|
1500
|
-
if (h)
|
|
1501
|
-
el.style.height = h;
|
|
1502
|
-
}
|
|
1503
|
-
} else {
|
|
1504
|
-
const size = parseSizeValue(value);
|
|
1505
|
-
if (size) {
|
|
1506
|
-
el.style.width = size;
|
|
1507
|
-
el.style.height = size;
|
|
1508
|
-
}
|
|
1509
1703
|
}
|
|
1510
|
-
}
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
el.style.height = `${fraction * 100}%`;
|
|
1522
|
-
},
|
|
1523
|
-
fillMaxSize: (el, value) => {
|
|
1524
|
-
if (value === false)
|
|
1525
|
-
return;
|
|
1526
|
-
const fraction = typeof value === "number" ? value : 1;
|
|
1704
|
+
}
|
|
1705
|
+
},
|
|
1706
|
+
fillMaxWidth: (el, value) => {
|
|
1707
|
+
if (value === false)
|
|
1708
|
+
return;
|
|
1709
|
+
const fraction = typeof value === "number" ? value : 1;
|
|
1710
|
+
if (fraction === 1) {
|
|
1711
|
+
el.style.alignSelf = "stretch";
|
|
1712
|
+
el.style.width = "100%";
|
|
1713
|
+
el.style.minWidth = "0";
|
|
1714
|
+
} else {
|
|
1527
1715
|
el.style.width = `${fraction * 100}%`;
|
|
1528
|
-
el.style.height = `${fraction * 100}%`;
|
|
1529
1716
|
}
|
|
1530
|
-
|
|
1531
|
-
}
|
|
1717
|
+
el.style.justifySelf = "stretch";
|
|
1718
|
+
},
|
|
1719
|
+
fillMaxHeight: (el, value) => {
|
|
1720
|
+
if (value === false)
|
|
1721
|
+
return;
|
|
1722
|
+
const fraction = typeof value === "number" ? value : 1;
|
|
1723
|
+
el.style.height = `${fraction * 100}%`;
|
|
1724
|
+
},
|
|
1725
|
+
fillMaxSize: (el, value) => {
|
|
1726
|
+
if (value === false)
|
|
1727
|
+
return;
|
|
1728
|
+
const fraction = typeof value === "number" ? value : 1;
|
|
1729
|
+
el.style.width = `${fraction * 100}%`;
|
|
1730
|
+
el.style.height = `${fraction * 100}%`;
|
|
1731
|
+
el.style.alignSelf = "stretch";
|
|
1732
|
+
el.style.minWidth = "0";
|
|
1733
|
+
}
|
|
1734
|
+
};
|
|
1532
1735
|
|
|
1533
1736
|
// src/dom/applicators/font.ts
|
|
1534
|
-
var
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1737
|
+
var loadedGoogleFonts = new Set;
|
|
1738
|
+
var systemFontKeywords = new Set([
|
|
1739
|
+
"default",
|
|
1740
|
+
"system",
|
|
1741
|
+
"system-ui",
|
|
1742
|
+
"inherit",
|
|
1743
|
+
"initial",
|
|
1744
|
+
"unset",
|
|
1745
|
+
"serif",
|
|
1746
|
+
"sans-serif",
|
|
1747
|
+
"monospace",
|
|
1748
|
+
"cursive",
|
|
1749
|
+
"fantasy",
|
|
1750
|
+
"-apple-system",
|
|
1751
|
+
"BlinkMacSystemFont",
|
|
1752
|
+
"Segoe UI",
|
|
1753
|
+
"Arial",
|
|
1754
|
+
"Helvetica",
|
|
1755
|
+
"Times New Roman",
|
|
1756
|
+
"Georgia",
|
|
1757
|
+
"Courier New",
|
|
1758
|
+
"Verdana",
|
|
1759
|
+
"Tahoma"
|
|
1760
|
+
]);
|
|
1539
1761
|
function isSystemFont(fontName) {
|
|
1540
1762
|
const normalized = fontName.toLowerCase().trim();
|
|
1541
1763
|
return systemFontKeywords.has(normalized) || normalized.startsWith("-") || normalized.startsWith("ui-");
|
|
@@ -1565,91 +1787,59 @@ function processFontFamily(value) {
|
|
|
1565
1787
|
return f;
|
|
1566
1788
|
}).join(", ");
|
|
1567
1789
|
}
|
|
1568
|
-
var
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
preload: loadGoogleFont,
|
|
1620
|
-
isLoaded: (fontName) => loadedGoogleFonts.has(fontName.trim()),
|
|
1621
|
-
getLoadedFonts: () => Array.from(loadedGoogleFonts),
|
|
1622
|
-
popular: [
|
|
1623
|
-
"Roboto",
|
|
1624
|
-
"Open Sans",
|
|
1625
|
-
"Lato",
|
|
1626
|
-
"Montserrat",
|
|
1627
|
-
"Poppins",
|
|
1628
|
-
"Inter",
|
|
1629
|
-
"Nunito",
|
|
1630
|
-
"Playfair Display",
|
|
1631
|
-
"Merriweather",
|
|
1632
|
-
"Source Code Pro",
|
|
1633
|
-
"Fira Code",
|
|
1634
|
-
"JetBrains Mono",
|
|
1635
|
-
"Raleway",
|
|
1636
|
-
"Ubuntu",
|
|
1637
|
-
"Oswald",
|
|
1638
|
-
"Quicksand",
|
|
1639
|
-
"Work Sans",
|
|
1640
|
-
"Rubik",
|
|
1641
|
-
"Karla",
|
|
1642
|
-
"DM Sans"
|
|
1643
|
-
]
|
|
1644
|
-
};
|
|
1645
|
-
});
|
|
1790
|
+
var fontHandlers = {
|
|
1791
|
+
fontSize: (el, value) => {
|
|
1792
|
+
el.style.fontSize = typeof value === "number" ? `${value}px` : String(value);
|
|
1793
|
+
},
|
|
1794
|
+
fontWeight: (el, value) => {
|
|
1795
|
+
el.style.fontWeight = String(value);
|
|
1796
|
+
},
|
|
1797
|
+
fontFamily: (el, value) => {
|
|
1798
|
+
const fontValue = String(value);
|
|
1799
|
+
el.style.fontFamily = processFontFamily(fontValue);
|
|
1800
|
+
},
|
|
1801
|
+
textAlign: (el, value) => {
|
|
1802
|
+
el.style.textAlign = String(value);
|
|
1803
|
+
},
|
|
1804
|
+
lineHeight: (el, value) => {
|
|
1805
|
+
el.style.lineHeight = String(value);
|
|
1806
|
+
},
|
|
1807
|
+
fontStyle: (el, value) => {
|
|
1808
|
+
el.style.fontStyle = String(value);
|
|
1809
|
+
},
|
|
1810
|
+
textTransform: (el, value) => {
|
|
1811
|
+
el.style.textTransform = String(value);
|
|
1812
|
+
}
|
|
1813
|
+
};
|
|
1814
|
+
var GoogleFonts = {
|
|
1815
|
+
preload: loadGoogleFont,
|
|
1816
|
+
isLoaded: (fontName) => loadedGoogleFonts.has(fontName.trim()),
|
|
1817
|
+
getLoadedFonts: () => Array.from(loadedGoogleFonts),
|
|
1818
|
+
popular: [
|
|
1819
|
+
"Roboto",
|
|
1820
|
+
"Open Sans",
|
|
1821
|
+
"Lato",
|
|
1822
|
+
"Montserrat",
|
|
1823
|
+
"Poppins",
|
|
1824
|
+
"Inter",
|
|
1825
|
+
"Nunito",
|
|
1826
|
+
"Playfair Display",
|
|
1827
|
+
"Merriweather",
|
|
1828
|
+
"Source Code Pro",
|
|
1829
|
+
"Fira Code",
|
|
1830
|
+
"JetBrains Mono",
|
|
1831
|
+
"Raleway",
|
|
1832
|
+
"Ubuntu",
|
|
1833
|
+
"Oswald",
|
|
1834
|
+
"Quicksand",
|
|
1835
|
+
"Work Sans",
|
|
1836
|
+
"Rubik",
|
|
1837
|
+
"Karla",
|
|
1838
|
+
"DM Sans"
|
|
1839
|
+
]
|
|
1840
|
+
};
|
|
1646
1841
|
|
|
1647
1842
|
// src/dom/applicators/layout.ts
|
|
1648
|
-
var exports_layout = {};
|
|
1649
|
-
__export(exports_layout, {
|
|
1650
|
-
mapAlignmentValue: () => mapAlignmentValue,
|
|
1651
|
-
layoutHandlers: () => layoutHandlers
|
|
1652
|
-
});
|
|
1653
1843
|
function mapAlignmentValue(value) {
|
|
1654
1844
|
const v = String(value).toLowerCase();
|
|
1655
1845
|
switch (v) {
|
|
@@ -1678,76 +1868,87 @@ function mapAlignmentValue(value) {
|
|
|
1678
1868
|
return v;
|
|
1679
1869
|
}
|
|
1680
1870
|
}
|
|
1681
|
-
var layoutHandlers
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
}
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1871
|
+
var layoutHandlers = {
|
|
1872
|
+
verticalAlignment: (el, value) => {
|
|
1873
|
+
const val = mapAlignmentValue(String(value));
|
|
1874
|
+
const display = el.style.display || getComputedStyle(el).display;
|
|
1875
|
+
const flexDirection = el.style.flexDirection || getComputedStyle(el).flexDirection;
|
|
1876
|
+
if (display === "grid") {
|
|
1877
|
+
el.style.alignItems = val;
|
|
1878
|
+
} else if (flexDirection === "column" || flexDirection === "column-reverse") {
|
|
1879
|
+
el.style.justifyContent = val;
|
|
1880
|
+
} else {
|
|
1881
|
+
el.style.alignItems = val;
|
|
1882
|
+
}
|
|
1883
|
+
},
|
|
1884
|
+
horizontalAlignment: (el, value) => {
|
|
1885
|
+
const val = mapAlignmentValue(String(value));
|
|
1886
|
+
const display = el.style.display || getComputedStyle(el).display;
|
|
1887
|
+
const flexDirection = el.style.flexDirection || getComputedStyle(el).flexDirection;
|
|
1888
|
+
if (display === "grid") {
|
|
1889
|
+
el.style.justifyItems = val;
|
|
1890
|
+
} else if (flexDirection === "column" || flexDirection === "column-reverse") {
|
|
1891
|
+
el.style.alignItems = val;
|
|
1892
|
+
} else if (flexDirection === "row" || flexDirection === "row-reverse") {
|
|
1893
|
+
el.style.justifyContent = val;
|
|
1894
|
+
if (val !== "flex-start" && el.style.overflow !== "auto" && el.style.overflowX !== "auto") {
|
|
1895
|
+
el.style.width = "100%";
|
|
1700
1896
|
}
|
|
1701
|
-
}
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1897
|
+
} else {
|
|
1898
|
+
el.style.justifyContent = val;
|
|
1899
|
+
}
|
|
1900
|
+
},
|
|
1901
|
+
horizontalAlign: (el, value) => {
|
|
1902
|
+
el.style.justifyContent = mapAlignmentValue(String(value));
|
|
1903
|
+
},
|
|
1904
|
+
verticalAlign: (el, value) => {
|
|
1905
|
+
el.style.alignItems = mapAlignmentValue(String(value));
|
|
1906
|
+
},
|
|
1907
|
+
gap: (el, value) => {
|
|
1908
|
+
el.style.gap = typeof value === "number" ? `${value}px` : String(value);
|
|
1909
|
+
},
|
|
1910
|
+
weight: (el, value) => {
|
|
1911
|
+
el.style.flex = String(value);
|
|
1912
|
+
el.dataset.hypenFlex = "true";
|
|
1913
|
+
},
|
|
1914
|
+
flex: (el, value) => {
|
|
1915
|
+
el.style.flex = String(value);
|
|
1916
|
+
el.dataset.hypenFlex = "true";
|
|
1917
|
+
},
|
|
1918
|
+
flexGrow: (el, value) => {
|
|
1919
|
+
el.style.flexGrow = String(value);
|
|
1920
|
+
},
|
|
1921
|
+
flexShrink: (el, value) => {
|
|
1922
|
+
el.style.flexShrink = String(value);
|
|
1923
|
+
},
|
|
1924
|
+
cursor: (el, value) => {
|
|
1925
|
+
el.style.cursor = String(value);
|
|
1926
|
+
},
|
|
1927
|
+
overflow: (el, value) => {
|
|
1928
|
+
el.style.overflow = String(value);
|
|
1929
|
+
},
|
|
1930
|
+
scrollable: (el, value) => {
|
|
1931
|
+
if (value === true || value === "true") {
|
|
1932
|
+
el.style.overflow = "auto";
|
|
1933
|
+
} else if (value === false || value === "false") {
|
|
1934
|
+
el.style.overflow = "hidden";
|
|
1935
|
+
} else if (value === "vertical") {
|
|
1936
|
+
el.style.overflowX = "hidden";
|
|
1937
|
+
el.style.overflowY = "auto";
|
|
1938
|
+
} else if (value === "horizontal") {
|
|
1939
|
+
el.style.overflowX = "auto";
|
|
1940
|
+
el.style.overflowY = "hidden";
|
|
1941
|
+
} else if (value === "both") {
|
|
1942
|
+
el.style.overflow = "auto";
|
|
1943
|
+
} else {
|
|
1727
1944
|
el.style.overflow = String(value);
|
|
1728
|
-
},
|
|
1729
|
-
scrollable: (el, value) => {
|
|
1730
|
-
if (value === true || value === "true") {
|
|
1731
|
-
el.style.overflow = "auto";
|
|
1732
|
-
} else if (value === false || value === "false") {
|
|
1733
|
-
el.style.overflow = "hidden";
|
|
1734
|
-
} else if (value === "vertical") {
|
|
1735
|
-
el.style.overflowX = "hidden";
|
|
1736
|
-
el.style.overflowY = "auto";
|
|
1737
|
-
} else if (value === "horizontal") {
|
|
1738
|
-
el.style.overflowX = "auto";
|
|
1739
|
-
el.style.overflowY = "hidden";
|
|
1740
|
-
} else if (value === "both") {
|
|
1741
|
-
el.style.overflow = "auto";
|
|
1742
|
-
} else {
|
|
1743
|
-
el.style.overflow = String(value);
|
|
1744
|
-
}
|
|
1745
1945
|
}
|
|
1746
|
-
}
|
|
1747
|
-
}
|
|
1946
|
+
}
|
|
1947
|
+
};
|
|
1748
1948
|
|
|
1749
1949
|
// src/dom/element-data.ts
|
|
1750
|
-
import { getElementDisposables } from "@hypen-space/core";
|
|
1950
|
+
import { getElementDisposables } from "@hypen-space/core/disposable";
|
|
1951
|
+
var elementDataMap = new WeakMap;
|
|
1751
1952
|
function getHypenData(element) {
|
|
1752
1953
|
let data = elementDataMap.get(element);
|
|
1753
1954
|
if (!data) {
|
|
@@ -1817,6 +2018,9 @@ function disposeHypenElement(element) {
|
|
|
1817
2018
|
} catch {}
|
|
1818
2019
|
clearHypenData(element);
|
|
1819
2020
|
}
|
|
2021
|
+
var HYPEN_ENGINE_SYMBOL = Symbol.for("hypen.engine");
|
|
2022
|
+
var REGISTERED_EVENTS_SYMBOL = Symbol.for("hypen.registeredEvents");
|
|
2023
|
+
var KEY_TARGET_SYMBOL = Symbol.for("hypen.keyTarget");
|
|
1820
2024
|
function getLegacyEngine(element) {
|
|
1821
2025
|
const engine = getEngine(element);
|
|
1822
2026
|
if (engine)
|
|
@@ -1827,24 +2031,15 @@ function setLegacyEngine(element, engine) {
|
|
|
1827
2031
|
setEngine(element, engine);
|
|
1828
2032
|
element.__hypenEngine = engine;
|
|
1829
2033
|
}
|
|
1830
|
-
var elementDataMap, HYPEN_ENGINE_SYMBOL, REGISTERED_EVENTS_SYMBOL, KEY_TARGET_SYMBOL;
|
|
1831
|
-
var init_element_data = __esm(() => {
|
|
1832
|
-
elementDataMap = new WeakMap;
|
|
1833
|
-
HYPEN_ENGINE_SYMBOL = Symbol.for("hypen.engine");
|
|
1834
|
-
REGISTERED_EVENTS_SYMBOL = Symbol.for("hypen.registeredEvents");
|
|
1835
|
-
KEY_TARGET_SYMBOL = Symbol.for("hypen.keyTarget");
|
|
1836
|
-
});
|
|
1837
2034
|
|
|
1838
2035
|
// src/dom/applicators/events.ts
|
|
1839
|
-
var exports_events = {};
|
|
1840
|
-
__export(exports_events, {
|
|
1841
|
-
eventHandlers: () => eventHandlers
|
|
1842
|
-
});
|
|
1843
2036
|
import {
|
|
1844
2037
|
getElementDisposables as getElementDisposables2,
|
|
1845
2038
|
disposableListener,
|
|
1846
2039
|
disposableTimeout
|
|
1847
|
-
} from "@hypen-space/core";
|
|
2040
|
+
} from "@hypen-space/core/disposable";
|
|
2041
|
+
import { frameworkLoggers as frameworkLoggers3 } from "@hypen-space/core";
|
|
2042
|
+
var log3 = frameworkLoggers3.events;
|
|
1848
2043
|
function toPlainObject(value) {
|
|
1849
2044
|
if (value instanceof Map) {
|
|
1850
2045
|
const obj = {};
|
|
@@ -1938,7 +2133,7 @@ function createEventHandler(eventType, options = {}) {
|
|
|
1938
2133
|
return (element, value) => {
|
|
1939
2134
|
const { actionName, payload: customPayload } = extractActionDetails(value);
|
|
1940
2135
|
if (!actionName) {
|
|
1941
|
-
|
|
2136
|
+
log3.warn(`${eventType} requires an action reference starting with @, got:`, value);
|
|
1942
2137
|
return;
|
|
1943
2138
|
}
|
|
1944
2139
|
const disposables = getElementDisposables2(element);
|
|
@@ -1981,7 +2176,7 @@ function createKeyHandler(defaultKey = "Enter") {
|
|
|
1981
2176
|
return (element, value) => {
|
|
1982
2177
|
const { actionName, payload: customPayload } = extractActionDetails(value);
|
|
1983
2178
|
if (!actionName) {
|
|
1984
|
-
|
|
2179
|
+
log3.warn(`onKey requires an action reference starting with @, got:`, value);
|
|
1985
2180
|
return;
|
|
1986
2181
|
}
|
|
1987
2182
|
const disposables = getElementDisposables2(element);
|
|
@@ -2026,7 +2221,7 @@ function createLongClickHandler(thresholdMs = 500) {
|
|
|
2026
2221
|
return (element, value) => {
|
|
2027
2222
|
const { actionName, payload: customPayload } = extractActionDetails(value);
|
|
2028
2223
|
if (!actionName) {
|
|
2029
|
-
|
|
2224
|
+
log3.warn(`onLongClick requires an action reference starting with @, got:`, value);
|
|
2030
2225
|
return;
|
|
2031
2226
|
}
|
|
2032
2227
|
const disposables = getElementDisposables2(element);
|
|
@@ -2075,7 +2270,8 @@ var inputPayload = (event, element) => {
|
|
|
2075
2270
|
value: target.value,
|
|
2076
2271
|
input: target.value
|
|
2077
2272
|
};
|
|
2078
|
-
}
|
|
2273
|
+
};
|
|
2274
|
+
var scrollPayload = (_event, element) => {
|
|
2079
2275
|
const scrollTop = element.scrollTop;
|
|
2080
2276
|
const scrollHeight = element.scrollHeight;
|
|
2081
2277
|
const clientHeight = element.clientHeight;
|
|
@@ -2095,11 +2291,13 @@ var inputPayload = (event, element) => {
|
|
|
2095
2291
|
atBottom: scrollHeight - scrollTop === clientHeight,
|
|
2096
2292
|
atTop: scrollTop === 0
|
|
2097
2293
|
};
|
|
2098
|
-
}
|
|
2294
|
+
};
|
|
2295
|
+
var focusPayload = (event, element) => ({
|
|
2099
2296
|
type: event.type,
|
|
2100
2297
|
timestamp: Date.now(),
|
|
2101
2298
|
value: element.value ?? undefined
|
|
2102
|
-
})
|
|
2299
|
+
});
|
|
2300
|
+
var mousePayload = (event, _element) => {
|
|
2103
2301
|
const mouseEvent = event;
|
|
2104
2302
|
return {
|
|
2105
2303
|
type: event.type,
|
|
@@ -2107,637 +2305,495 @@ var inputPayload = (event, element) => {
|
|
|
2107
2305
|
clientX: mouseEvent.clientX,
|
|
2108
2306
|
clientY: mouseEvent.clientY
|
|
2109
2307
|
};
|
|
2110
|
-
}
|
|
2111
|
-
var
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
onMouseLeave: createEventHandler("mouseleave", { extractPayload: mousePayload })
|
|
2134
|
-
};
|
|
2135
|
-
});
|
|
2308
|
+
};
|
|
2309
|
+
var eventHandlers = {
|
|
2310
|
+
onClick: createEventHandler("click"),
|
|
2311
|
+
onPress: createEventHandler("click"),
|
|
2312
|
+
onChange: createEventHandler("change"),
|
|
2313
|
+
onSubmit: createEventHandler("submit", { preventDefault: true }),
|
|
2314
|
+
onInput: createEventHandler("input", { extractPayload: inputPayload }),
|
|
2315
|
+
onKey: createKeyHandler("Enter"),
|
|
2316
|
+
"onKey.key": (element, value) => {
|
|
2317
|
+
setKeyTarget(element, String(value));
|
|
2318
|
+
},
|
|
2319
|
+
"onKey.action": createKeyHandler("Enter"),
|
|
2320
|
+
onScroll: createEventHandler("scroll", {
|
|
2321
|
+
throttleMs: 100,
|
|
2322
|
+
passive: true,
|
|
2323
|
+
extractPayload: scrollPayload
|
|
2324
|
+
}),
|
|
2325
|
+
onLongClick: createLongClickHandler(500),
|
|
2326
|
+
onFocus: createEventHandler("focus", { extractPayload: focusPayload }),
|
|
2327
|
+
onBlur: createEventHandler("blur", { extractPayload: focusPayload }),
|
|
2328
|
+
onMouseEnter: createEventHandler("mouseenter", { extractPayload: mousePayload }),
|
|
2329
|
+
onMouseLeave: createEventHandler("mouseleave", { extractPayload: mousePayload })
|
|
2330
|
+
};
|
|
2136
2331
|
|
|
2137
2332
|
// src/dom/applicators/typography.ts
|
|
2138
|
-
var
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
}
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
el.style.
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
const lines = typeof value === "number" ? value : parseInt(String(value), 10);
|
|
2201
|
-
if (!isNaN(lines) && lines > 0) {
|
|
2202
|
-
el.style.display = "-webkit-box";
|
|
2203
|
-
el.style.setProperty("-webkit-line-clamp", String(lines));
|
|
2204
|
-
el.style.setProperty("-webkit-box-orient", "vertical");
|
|
2205
|
-
el.style.overflow = "hidden";
|
|
2206
|
-
}
|
|
2333
|
+
var typographyHandlers = {
|
|
2334
|
+
textAlign: (el, value) => {
|
|
2335
|
+
el.style.textAlign = String(value);
|
|
2336
|
+
},
|
|
2337
|
+
textTransform: (el, value) => {
|
|
2338
|
+
el.style.textTransform = String(value);
|
|
2339
|
+
},
|
|
2340
|
+
textDecoration: (el, value) => {
|
|
2341
|
+
el.style.textDecoration = String(value);
|
|
2342
|
+
},
|
|
2343
|
+
textDecorationColor: (el, value) => {
|
|
2344
|
+
el.style.textDecorationColor = String(value);
|
|
2345
|
+
},
|
|
2346
|
+
textDecorationStyle: (el, value) => {
|
|
2347
|
+
el.style.textDecorationStyle = String(value);
|
|
2348
|
+
},
|
|
2349
|
+
textDecorationThickness: (el, value) => {
|
|
2350
|
+
el.style.textDecorationThickness = typeof value === "number" ? `${value}px` : String(value);
|
|
2351
|
+
},
|
|
2352
|
+
letterSpacing: (el, value) => {
|
|
2353
|
+
el.style.letterSpacing = typeof value === "number" ? `${value}px` : String(value);
|
|
2354
|
+
},
|
|
2355
|
+
wordSpacing: (el, value) => {
|
|
2356
|
+
el.style.wordSpacing = typeof value === "number" ? `${value}px` : String(value);
|
|
2357
|
+
},
|
|
2358
|
+
lineHeight: (el, value) => {
|
|
2359
|
+
el.style.lineHeight = String(value);
|
|
2360
|
+
},
|
|
2361
|
+
textIndent: (el, value) => {
|
|
2362
|
+
el.style.textIndent = typeof value === "number" ? `${value}px` : String(value);
|
|
2363
|
+
},
|
|
2364
|
+
textOverflow: (el, value) => {
|
|
2365
|
+
el.style.textOverflow = String(value);
|
|
2366
|
+
},
|
|
2367
|
+
whiteSpace: (el, value) => {
|
|
2368
|
+
el.style.whiteSpace = String(value);
|
|
2369
|
+
},
|
|
2370
|
+
wordBreak: (el, value) => {
|
|
2371
|
+
el.style.wordBreak = String(value);
|
|
2372
|
+
},
|
|
2373
|
+
verticalAlign: (el, value) => {
|
|
2374
|
+
el.style.verticalAlign = String(value);
|
|
2375
|
+
},
|
|
2376
|
+
fontVariant: (el, value) => {
|
|
2377
|
+
el.style.fontVariant = String(value);
|
|
2378
|
+
},
|
|
2379
|
+
fontStretch: (el, value) => {
|
|
2380
|
+
el.style.fontStretch = String(value);
|
|
2381
|
+
},
|
|
2382
|
+
fontStyle: (el, value) => {
|
|
2383
|
+
el.style.fontStyle = String(value);
|
|
2384
|
+
},
|
|
2385
|
+
writingMode: (el, value) => {
|
|
2386
|
+
el.style.writingMode = String(value);
|
|
2387
|
+
},
|
|
2388
|
+
maxLines: (el, value) => {
|
|
2389
|
+
const lines = typeof value === "number" ? value : parseInt(String(value), 10);
|
|
2390
|
+
if (!isNaN(lines) && lines > 0) {
|
|
2391
|
+
el.style.display = "-webkit-box";
|
|
2392
|
+
el.style.setProperty("-webkit-line-clamp", String(lines));
|
|
2393
|
+
el.style.setProperty("-webkit-box-orient", "vertical");
|
|
2394
|
+
el.style.overflow = "hidden";
|
|
2207
2395
|
}
|
|
2208
|
-
}
|
|
2209
|
-
}
|
|
2396
|
+
}
|
|
2397
|
+
};
|
|
2210
2398
|
|
|
2211
2399
|
// src/dom/applicators/transform.ts
|
|
2212
|
-
var
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
}
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
}
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
}
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
el.style.transform = current ? `${current} skewY(${value})` : `skewY(${value})`;
|
|
2283
|
-
},
|
|
2284
|
-
perspective: (el, value) => {
|
|
2285
|
-
el.style.perspective = typeof value === "number" ? `${value}px` : String(value);
|
|
2286
|
-
}
|
|
2287
|
-
};
|
|
2288
|
-
});
|
|
2400
|
+
var transformHandlers = {
|
|
2401
|
+
transform: (el, value) => {
|
|
2402
|
+
el.style.transform = String(value);
|
|
2403
|
+
},
|
|
2404
|
+
transformOrigin: (el, value) => {
|
|
2405
|
+
el.style.transformOrigin = String(value);
|
|
2406
|
+
},
|
|
2407
|
+
translateX: (el, value) => {
|
|
2408
|
+
const current = el.style.transform || "";
|
|
2409
|
+
const val = typeof value === "number" ? `${value}px` : String(value);
|
|
2410
|
+
el.style.transform = current ? `${current} translateX(${val})` : `translateX(${val})`;
|
|
2411
|
+
},
|
|
2412
|
+
translateY: (el, value) => {
|
|
2413
|
+
const current = el.style.transform || "";
|
|
2414
|
+
const val = typeof value === "number" ? `${value}px` : String(value);
|
|
2415
|
+
el.style.transform = current ? `${current} translateY(${val})` : `translateY(${val})`;
|
|
2416
|
+
},
|
|
2417
|
+
translateZ: (el, value) => {
|
|
2418
|
+
const current = el.style.transform || "";
|
|
2419
|
+
const val = typeof value === "number" ? `${value}px` : String(value);
|
|
2420
|
+
el.style.transform = current ? `${current} translateZ(${val})` : `translateZ(${val})`;
|
|
2421
|
+
},
|
|
2422
|
+
rotate: (el, value) => {
|
|
2423
|
+
const current = el.style.transform || "";
|
|
2424
|
+
const val = String(value);
|
|
2425
|
+
el.style.transform = current ? `${current} rotate(${val})` : `rotate(${val})`;
|
|
2426
|
+
},
|
|
2427
|
+
rotateX: (el, value) => {
|
|
2428
|
+
const current = el.style.transform || "";
|
|
2429
|
+
const val = String(value);
|
|
2430
|
+
el.style.transform = current ? `${current} rotateX(${val})` : `rotateX(${val})`;
|
|
2431
|
+
},
|
|
2432
|
+
rotateY: (el, value) => {
|
|
2433
|
+
const current = el.style.transform || "";
|
|
2434
|
+
const val = String(value);
|
|
2435
|
+
el.style.transform = current ? `${current} rotateY(${val})` : `rotateY(${val})`;
|
|
2436
|
+
},
|
|
2437
|
+
rotateZ: (el, value) => {
|
|
2438
|
+
const current = el.style.transform || "";
|
|
2439
|
+
const val = String(value);
|
|
2440
|
+
el.style.transform = current ? `${current} rotateZ(${val})` : `rotateZ(${val})`;
|
|
2441
|
+
},
|
|
2442
|
+
scale: (el, value) => {
|
|
2443
|
+
const current = el.style.transform || "";
|
|
2444
|
+
el.style.transform = current ? `${current} scale(${value})` : `scale(${value})`;
|
|
2445
|
+
},
|
|
2446
|
+
scaleX: (el, value) => {
|
|
2447
|
+
const current = el.style.transform || "";
|
|
2448
|
+
el.style.transform = current ? `${current} scaleX(${value})` : `scaleX(${value})`;
|
|
2449
|
+
},
|
|
2450
|
+
scaleY: (el, value) => {
|
|
2451
|
+
const current = el.style.transform || "";
|
|
2452
|
+
el.style.transform = current ? `${current} scaleY(${value})` : `scaleY(${value})`;
|
|
2453
|
+
},
|
|
2454
|
+
skew: (el, value) => {
|
|
2455
|
+
const current = el.style.transform || "";
|
|
2456
|
+
el.style.transform = current ? `${current} skew(${value})` : `skew(${value})`;
|
|
2457
|
+
},
|
|
2458
|
+
skewX: (el, value) => {
|
|
2459
|
+
const current = el.style.transform || "";
|
|
2460
|
+
el.style.transform = current ? `${current} skewX(${value})` : `skewX(${value})`;
|
|
2461
|
+
},
|
|
2462
|
+
skewY: (el, value) => {
|
|
2463
|
+
const current = el.style.transform || "";
|
|
2464
|
+
el.style.transform = current ? `${current} skewY(${value})` : `skewY(${value})`;
|
|
2465
|
+
},
|
|
2466
|
+
perspective: (el, value) => {
|
|
2467
|
+
el.style.perspective = typeof value === "number" ? `${value}px` : String(value);
|
|
2468
|
+
}
|
|
2469
|
+
};
|
|
2289
2470
|
|
|
2290
2471
|
// src/dom/applicators/effects.ts
|
|
2291
|
-
var
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
const spread = typeof obj.spread === "number" ? `${obj.spread}px` : obj.spread ?? "0px";
|
|
2307
|
-
const color = obj.color ?? "rgba(0,0,0,0.2)";
|
|
2308
|
-
const inset = obj.inset ? "inset " : "";
|
|
2309
|
-
el.style.boxShadow = `${inset}${x} ${y} ${blur} ${spread} ${color}`;
|
|
2310
|
-
} else if (typeof value === "number") {
|
|
2311
|
-
el.style.boxShadow = `0 ${value}px ${value * 2}px rgba(0,0,0,0.2)`;
|
|
2312
|
-
}
|
|
2313
|
-
},
|
|
2314
|
-
shadow: (el, value) => {
|
|
2315
|
-
if (typeof value === "object" && value !== null) {
|
|
2316
|
-
const obj = value;
|
|
2317
|
-
const x = typeof obj.x === "number" ? `${obj.x}px` : obj.x ?? obj.offsetX ?? "0px";
|
|
2318
|
-
const y = typeof obj.y === "number" ? `${obj.y}px` : obj.y ?? obj.offsetY ?? "0px";
|
|
2319
|
-
const blur = typeof obj.blur === "number" ? `${obj.blur}px` : obj.blur ?? obj.radius ?? "4px";
|
|
2320
|
-
const color = obj.color ?? "rgba(0,0,0,0.2)";
|
|
2321
|
-
el.style.boxShadow = `${x} ${y} ${blur} ${color}`;
|
|
2322
|
-
} else if (typeof value === "number") {
|
|
2323
|
-
el.style.boxShadow = `0 ${value}px ${value * 2}px rgba(0,0,0,0.2)`;
|
|
2324
|
-
} else {
|
|
2325
|
-
el.style.boxShadow = String(value);
|
|
2326
|
-
}
|
|
2327
|
-
},
|
|
2328
|
-
elevation: (el, value) => {
|
|
2329
|
-
const level = typeof value === "number" ? value : parseInt(String(value), 10);
|
|
2330
|
-
if (!isNaN(level) && level >= 0) {
|
|
2331
|
-
const y = level * 0.5;
|
|
2332
|
-
const blur = level * 1.5;
|
|
2333
|
-
const opacity = Math.min(0.1 + level * 0.02, 0.4);
|
|
2334
|
-
el.style.boxShadow = `0 ${y}px ${blur}px rgba(0,0,0,${opacity})`;
|
|
2335
|
-
}
|
|
2336
|
-
},
|
|
2337
|
-
textShadow: (el, value) => {
|
|
2338
|
-
el.style.textShadow = String(value);
|
|
2339
|
-
},
|
|
2340
|
-
filter: (el, value) => {
|
|
2341
|
-
el.style.filter = String(value);
|
|
2342
|
-
},
|
|
2343
|
-
backdropFilter: (el, value) => {
|
|
2344
|
-
el.style.backdropFilter = String(value);
|
|
2345
|
-
},
|
|
2346
|
-
blur: (el, value) => {
|
|
2347
|
-
const val = typeof value === "number" ? `${value}px` : String(value);
|
|
2348
|
-
const current = el.style.filter || "";
|
|
2349
|
-
el.style.filter = current ? `${current} blur(${val})` : `blur(${val})`;
|
|
2350
|
-
},
|
|
2351
|
-
brightness: (el, value) => {
|
|
2352
|
-
const current = el.style.filter || "";
|
|
2353
|
-
el.style.filter = current ? `${current} brightness(${value})` : `brightness(${value})`;
|
|
2354
|
-
},
|
|
2355
|
-
contrast: (el, value) => {
|
|
2356
|
-
const current = el.style.filter || "";
|
|
2357
|
-
el.style.filter = current ? `${current} contrast(${value})` : `contrast(${value})`;
|
|
2358
|
-
},
|
|
2359
|
-
grayscale: (el, value) => {
|
|
2360
|
-
const current = el.style.filter || "";
|
|
2361
|
-
el.style.filter = current ? `${current} grayscale(${value})` : `grayscale(${value})`;
|
|
2362
|
-
},
|
|
2363
|
-
hueRotate: (el, value) => {
|
|
2364
|
-
const val = String(value);
|
|
2365
|
-
const current = el.style.filter || "";
|
|
2366
|
-
el.style.filter = current ? `${current} hue-rotate(${val})` : `hue-rotate(${val})`;
|
|
2367
|
-
},
|
|
2368
|
-
invert: (el, value) => {
|
|
2369
|
-
const current = el.style.filter || "";
|
|
2370
|
-
el.style.filter = current ? `${current} invert(${value})` : `invert(${value})`;
|
|
2371
|
-
},
|
|
2372
|
-
saturate: (el, value) => {
|
|
2373
|
-
const current = el.style.filter || "";
|
|
2374
|
-
el.style.filter = current ? `${current} saturate(${value})` : `saturate(${value})`;
|
|
2375
|
-
},
|
|
2376
|
-
sepia: (el, value) => {
|
|
2377
|
-
const current = el.style.filter || "";
|
|
2378
|
-
el.style.filter = current ? `${current} sepia(${value})` : `sepia(${value})`;
|
|
2379
|
-
},
|
|
2380
|
-
dropShadow: (el, value) => {
|
|
2381
|
-
const current = el.style.filter || "";
|
|
2382
|
-
el.style.filter = current ? `${current} drop-shadow(${value})` : `drop-shadow(${value})`;
|
|
2383
|
-
},
|
|
2384
|
-
mixBlendMode: (el, value) => {
|
|
2385
|
-
el.style.mixBlendMode = String(value);
|
|
2386
|
-
},
|
|
2387
|
-
backgroundBlendMode: (el, value) => {
|
|
2388
|
-
el.style.backgroundBlendMode = String(value);
|
|
2389
|
-
},
|
|
2390
|
-
clipPath: (el, value) => {
|
|
2391
|
-
el.style.clipPath = String(value);
|
|
2392
|
-
},
|
|
2393
|
-
mask: (el, value) => {
|
|
2394
|
-
el.style.mask = String(value);
|
|
2395
|
-
},
|
|
2396
|
-
maskImage: (el, value) => {
|
|
2397
|
-
el.style.maskImage = String(value);
|
|
2472
|
+
var effectsHandlers = {
|
|
2473
|
+
boxShadow: (el, value) => {
|
|
2474
|
+
if (typeof value === "string") {
|
|
2475
|
+
el.style.boxShadow = value;
|
|
2476
|
+
} else if (typeof value === "object" && value !== null) {
|
|
2477
|
+
const obj = value;
|
|
2478
|
+
const x = typeof obj.x === "number" ? `${obj.x}px` : obj.x ?? obj.offsetX ?? "0px";
|
|
2479
|
+
const y = typeof obj.y === "number" ? `${obj.y}px` : obj.y ?? obj.offsetY ?? "0px";
|
|
2480
|
+
const blur = typeof obj.blur === "number" ? `${obj.blur}px` : obj.blur ?? obj.radius ?? "0px";
|
|
2481
|
+
const spread = typeof obj.spread === "number" ? `${obj.spread}px` : obj.spread ?? "0px";
|
|
2482
|
+
const color = obj.color ?? "rgba(0,0,0,0.2)";
|
|
2483
|
+
const inset = obj.inset ? "inset " : "";
|
|
2484
|
+
el.style.boxShadow = `${inset}${x} ${y} ${blur} ${spread} ${color}`;
|
|
2485
|
+
} else if (typeof value === "number") {
|
|
2486
|
+
el.style.boxShadow = `0 ${value}px ${value * 2}px rgba(0,0,0,0.2)`;
|
|
2398
2487
|
}
|
|
2399
|
-
}
|
|
2400
|
-
|
|
2488
|
+
},
|
|
2489
|
+
shadow: (el, value) => {
|
|
2490
|
+
if (typeof value === "object" && value !== null) {
|
|
2491
|
+
const obj = value;
|
|
2492
|
+
const x = typeof obj.x === "number" ? `${obj.x}px` : obj.x ?? obj.offsetX ?? "0px";
|
|
2493
|
+
const y = typeof obj.y === "number" ? `${obj.y}px` : obj.y ?? obj.offsetY ?? "0px";
|
|
2494
|
+
const blur = typeof obj.blur === "number" ? `${obj.blur}px` : obj.blur ?? obj.radius ?? "4px";
|
|
2495
|
+
const color = obj.color ?? "rgba(0,0,0,0.2)";
|
|
2496
|
+
el.style.boxShadow = `${x} ${y} ${blur} ${color}`;
|
|
2497
|
+
} else if (typeof value === "number") {
|
|
2498
|
+
el.style.boxShadow = `0 ${value}px ${value * 2}px rgba(0,0,0,0.2)`;
|
|
2499
|
+
} else {
|
|
2500
|
+
el.style.boxShadow = String(value);
|
|
2501
|
+
}
|
|
2502
|
+
},
|
|
2503
|
+
elevation: (el, value) => {
|
|
2504
|
+
const level = typeof value === "number" ? value : parseInt(String(value), 10);
|
|
2505
|
+
if (!isNaN(level) && level >= 0) {
|
|
2506
|
+
const y = level * 0.5;
|
|
2507
|
+
const blur = level * 1.5;
|
|
2508
|
+
const opacity = Math.min(0.1 + level * 0.02, 0.4);
|
|
2509
|
+
el.style.boxShadow = `0 ${y}px ${blur}px rgba(0,0,0,${opacity})`;
|
|
2510
|
+
}
|
|
2511
|
+
},
|
|
2512
|
+
textShadow: (el, value) => {
|
|
2513
|
+
el.style.textShadow = String(value);
|
|
2514
|
+
},
|
|
2515
|
+
filter: (el, value) => {
|
|
2516
|
+
el.style.filter = String(value);
|
|
2517
|
+
},
|
|
2518
|
+
backdropFilter: (el, value) => {
|
|
2519
|
+
el.style.backdropFilter = String(value);
|
|
2520
|
+
},
|
|
2521
|
+
blur: (el, value) => {
|
|
2522
|
+
const val = typeof value === "number" ? `${value}px` : String(value);
|
|
2523
|
+
const current = el.style.filter || "";
|
|
2524
|
+
el.style.filter = current ? `${current} blur(${val})` : `blur(${val})`;
|
|
2525
|
+
},
|
|
2526
|
+
brightness: (el, value) => {
|
|
2527
|
+
const current = el.style.filter || "";
|
|
2528
|
+
el.style.filter = current ? `${current} brightness(${value})` : `brightness(${value})`;
|
|
2529
|
+
},
|
|
2530
|
+
contrast: (el, value) => {
|
|
2531
|
+
const current = el.style.filter || "";
|
|
2532
|
+
el.style.filter = current ? `${current} contrast(${value})` : `contrast(${value})`;
|
|
2533
|
+
},
|
|
2534
|
+
grayscale: (el, value) => {
|
|
2535
|
+
const current = el.style.filter || "";
|
|
2536
|
+
el.style.filter = current ? `${current} grayscale(${value})` : `grayscale(${value})`;
|
|
2537
|
+
},
|
|
2538
|
+
hueRotate: (el, value) => {
|
|
2539
|
+
const val = String(value);
|
|
2540
|
+
const current = el.style.filter || "";
|
|
2541
|
+
el.style.filter = current ? `${current} hue-rotate(${val})` : `hue-rotate(${val})`;
|
|
2542
|
+
},
|
|
2543
|
+
invert: (el, value) => {
|
|
2544
|
+
const current = el.style.filter || "";
|
|
2545
|
+
el.style.filter = current ? `${current} invert(${value})` : `invert(${value})`;
|
|
2546
|
+
},
|
|
2547
|
+
saturate: (el, value) => {
|
|
2548
|
+
const current = el.style.filter || "";
|
|
2549
|
+
el.style.filter = current ? `${current} saturate(${value})` : `saturate(${value})`;
|
|
2550
|
+
},
|
|
2551
|
+
sepia: (el, value) => {
|
|
2552
|
+
const current = el.style.filter || "";
|
|
2553
|
+
el.style.filter = current ? `${current} sepia(${value})` : `sepia(${value})`;
|
|
2554
|
+
},
|
|
2555
|
+
dropShadow: (el, value) => {
|
|
2556
|
+
const current = el.style.filter || "";
|
|
2557
|
+
el.style.filter = current ? `${current} drop-shadow(${value})` : `drop-shadow(${value})`;
|
|
2558
|
+
},
|
|
2559
|
+
mixBlendMode: (el, value) => {
|
|
2560
|
+
el.style.mixBlendMode = String(value);
|
|
2561
|
+
},
|
|
2562
|
+
backgroundBlendMode: (el, value) => {
|
|
2563
|
+
el.style.backgroundBlendMode = String(value);
|
|
2564
|
+
},
|
|
2565
|
+
clipPath: (el, value) => {
|
|
2566
|
+
el.style.clipPath = String(value);
|
|
2567
|
+
},
|
|
2568
|
+
mask: (el, value) => {
|
|
2569
|
+
el.style.mask = String(value);
|
|
2570
|
+
},
|
|
2571
|
+
maskImage: (el, value) => {
|
|
2572
|
+
el.style.maskImage = String(value);
|
|
2573
|
+
}
|
|
2574
|
+
};
|
|
2401
2575
|
|
|
2402
2576
|
// src/dom/applicators/advanced-layout.ts
|
|
2403
|
-
var
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
}
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2577
|
+
var advancedLayoutHandlers = {
|
|
2578
|
+
flexDirection: (el, value) => {
|
|
2579
|
+
el.style.flexDirection = String(value);
|
|
2580
|
+
},
|
|
2581
|
+
flexWrap: (el, value) => {
|
|
2582
|
+
el.style.flexWrap = String(value);
|
|
2583
|
+
},
|
|
2584
|
+
flexBasis: (el, value) => {
|
|
2585
|
+
el.style.flexBasis = typeof value === "number" ? `${value}px` : String(value);
|
|
2586
|
+
},
|
|
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
|
+
alignContent: (el, value) => {
|
|
2594
|
+
el.style.alignContent = String(value);
|
|
2595
|
+
},
|
|
2596
|
+
alignSelf: (el, value) => {
|
|
2597
|
+
el.style.alignSelf = String(value);
|
|
2598
|
+
},
|
|
2599
|
+
order: (el, value) => {
|
|
2600
|
+
el.style.order = String(value);
|
|
2601
|
+
},
|
|
2602
|
+
gridTemplateColumns: (el, value) => {
|
|
2603
|
+
el.style.gridTemplateColumns = String(value);
|
|
2604
|
+
},
|
|
2605
|
+
gridTemplateRows: (el, value) => {
|
|
2606
|
+
el.style.gridTemplateRows = String(value);
|
|
2607
|
+
},
|
|
2608
|
+
gridColumns: (el, value) => {
|
|
2609
|
+
if (typeof value === "number") {
|
|
2610
|
+
el.style.gridTemplateColumns = `repeat(${value}, 1fr)`;
|
|
2611
|
+
} else {
|
|
2436
2612
|
el.style.gridTemplateColumns = String(value);
|
|
2437
|
-
}
|
|
2438
|
-
|
|
2613
|
+
}
|
|
2614
|
+
},
|
|
2615
|
+
gridRows: (el, value) => {
|
|
2616
|
+
if (typeof value === "number") {
|
|
2617
|
+
el.style.gridTemplateRows = `repeat(${value}, 1fr)`;
|
|
2618
|
+
} else {
|
|
2439
2619
|
el.style.gridTemplateRows = String(value);
|
|
2440
|
-
},
|
|
2441
|
-
gridColumns: (el, value) => {
|
|
2442
|
-
if (typeof value === "number") {
|
|
2443
|
-
el.style.gridTemplateColumns = `repeat(${value}, 1fr)`;
|
|
2444
|
-
} else {
|
|
2445
|
-
el.style.gridTemplateColumns = String(value);
|
|
2446
|
-
}
|
|
2447
|
-
},
|
|
2448
|
-
gridRows: (el, value) => {
|
|
2449
|
-
if (typeof value === "number") {
|
|
2450
|
-
el.style.gridTemplateRows = `repeat(${value}, 1fr)`;
|
|
2451
|
-
} else {
|
|
2452
|
-
el.style.gridTemplateRows = String(value);
|
|
2453
|
-
}
|
|
2454
|
-
},
|
|
2455
|
-
gridTemplateAreas: (el, value) => {
|
|
2456
|
-
el.style.gridTemplateAreas = String(value);
|
|
2457
|
-
},
|
|
2458
|
-
gridColumn: (el, value) => {
|
|
2459
|
-
el.style.gridColumn = String(value);
|
|
2460
|
-
},
|
|
2461
|
-
gridRow: (el, value) => {
|
|
2462
|
-
el.style.gridRow = String(value);
|
|
2463
|
-
},
|
|
2464
|
-
gridArea: (el, value) => {
|
|
2465
|
-
el.style.gridArea = String(value);
|
|
2466
|
-
},
|
|
2467
|
-
gridAutoFlow: (el, value) => {
|
|
2468
|
-
el.style.gridAutoFlow = String(value);
|
|
2469
|
-
},
|
|
2470
|
-
gridAutoColumns: (el, value) => {
|
|
2471
|
-
el.style.gridAutoColumns = String(value);
|
|
2472
|
-
},
|
|
2473
|
-
gridAutoRows: (el, value) => {
|
|
2474
|
-
el.style.gridAutoRows = String(value);
|
|
2475
|
-
},
|
|
2476
|
-
rowGap: (el, value) => {
|
|
2477
|
-
el.style.rowGap = typeof value === "number" ? `${value}px` : String(value);
|
|
2478
|
-
},
|
|
2479
|
-
columnGap: (el, value) => {
|
|
2480
|
-
el.style.columnGap = typeof value === "number" ? `${value}px` : String(value);
|
|
2481
|
-
},
|
|
2482
|
-
placeItems: (el, value) => {
|
|
2483
|
-
el.style.placeItems = String(value);
|
|
2484
|
-
},
|
|
2485
|
-
placeContent: (el, value) => {
|
|
2486
|
-
el.style.placeContent = String(value);
|
|
2487
|
-
},
|
|
2488
|
-
placeSelf: (el, value) => {
|
|
2489
|
-
el.style.placeSelf = String(value);
|
|
2490
|
-
},
|
|
2491
|
-
position: (el, value) => {
|
|
2492
|
-
el.style.position = String(value);
|
|
2493
|
-
},
|
|
2494
|
-
top: (el, value) => {
|
|
2495
|
-
el.style.top = typeof value === "number" ? `${value}px` : String(value);
|
|
2496
|
-
},
|
|
2497
|
-
right: (el, value) => {
|
|
2498
|
-
el.style.right = typeof value === "number" ? `${value}px` : String(value);
|
|
2499
|
-
},
|
|
2500
|
-
bottom: (el, value) => {
|
|
2501
|
-
el.style.bottom = typeof value === "number" ? `${value}px` : String(value);
|
|
2502
|
-
},
|
|
2503
|
-
left: (el, value) => {
|
|
2504
|
-
el.style.left = typeof value === "number" ? `${value}px` : String(value);
|
|
2505
|
-
},
|
|
2506
|
-
inset: (el, value) => {
|
|
2507
|
-
el.style.inset = typeof value === "number" ? `${value}px` : String(value);
|
|
2508
|
-
},
|
|
2509
|
-
zIndex: (el, value) => {
|
|
2510
|
-
el.style.zIndex = String(value);
|
|
2511
2620
|
}
|
|
2512
|
-
}
|
|
2513
|
-
|
|
2621
|
+
},
|
|
2622
|
+
gridTemplateAreas: (el, value) => {
|
|
2623
|
+
el.style.gridTemplateAreas = String(value);
|
|
2624
|
+
},
|
|
2625
|
+
gridColumn: (el, value) => {
|
|
2626
|
+
el.style.gridColumn = String(value);
|
|
2627
|
+
},
|
|
2628
|
+
gridRow: (el, value) => {
|
|
2629
|
+
el.style.gridRow = String(value);
|
|
2630
|
+
},
|
|
2631
|
+
gridArea: (el, value) => {
|
|
2632
|
+
el.style.gridArea = String(value);
|
|
2633
|
+
},
|
|
2634
|
+
gridAutoFlow: (el, value) => {
|
|
2635
|
+
el.style.gridAutoFlow = String(value);
|
|
2636
|
+
},
|
|
2637
|
+
gridAutoColumns: (el, value) => {
|
|
2638
|
+
el.style.gridAutoColumns = String(value);
|
|
2639
|
+
},
|
|
2640
|
+
gridAutoRows: (el, value) => {
|
|
2641
|
+
el.style.gridAutoRows = String(value);
|
|
2642
|
+
},
|
|
2643
|
+
rowGap: (el, value) => {
|
|
2644
|
+
el.style.rowGap = typeof value === "number" ? `${value}px` : String(value);
|
|
2645
|
+
},
|
|
2646
|
+
columnGap: (el, value) => {
|
|
2647
|
+
el.style.columnGap = typeof value === "number" ? `${value}px` : String(value);
|
|
2648
|
+
},
|
|
2649
|
+
placeItems: (el, value) => {
|
|
2650
|
+
el.style.placeItems = String(value);
|
|
2651
|
+
},
|
|
2652
|
+
placeContent: (el, value) => {
|
|
2653
|
+
el.style.placeContent = String(value);
|
|
2654
|
+
},
|
|
2655
|
+
placeSelf: (el, value) => {
|
|
2656
|
+
el.style.placeSelf = String(value);
|
|
2657
|
+
},
|
|
2658
|
+
position: (el, value) => {
|
|
2659
|
+
el.style.position = String(value);
|
|
2660
|
+
},
|
|
2661
|
+
top: (el, value) => {
|
|
2662
|
+
el.style.top = typeof value === "number" ? `${value}px` : String(value);
|
|
2663
|
+
},
|
|
2664
|
+
right: (el, value) => {
|
|
2665
|
+
el.style.right = typeof value === "number" ? `${value}px` : String(value);
|
|
2666
|
+
},
|
|
2667
|
+
bottom: (el, value) => {
|
|
2668
|
+
el.style.bottom = typeof value === "number" ? `${value}px` : String(value);
|
|
2669
|
+
},
|
|
2670
|
+
left: (el, value) => {
|
|
2671
|
+
el.style.left = typeof value === "number" ? `${value}px` : String(value);
|
|
2672
|
+
},
|
|
2673
|
+
inset: (el, value) => {
|
|
2674
|
+
el.style.inset = typeof value === "number" ? `${value}px` : String(value);
|
|
2675
|
+
},
|
|
2676
|
+
zIndex: (el, value) => {
|
|
2677
|
+
el.style.zIndex = String(value);
|
|
2678
|
+
}
|
|
2679
|
+
};
|
|
2514
2680
|
|
|
2515
2681
|
// src/dom/applicators/background.ts
|
|
2516
|
-
var
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
}
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
el.style.backgroundImage = `radial-gradient(${value})`;
|
|
2549
|
-
},
|
|
2550
|
-
conicGradient: (el, value) => {
|
|
2551
|
-
el.style.backgroundImage = `conic-gradient(${value})`;
|
|
2552
|
-
}
|
|
2553
|
-
};
|
|
2554
|
-
});
|
|
2682
|
+
var backgroundHandlers = {
|
|
2683
|
+
backgroundImage: (el, value) => {
|
|
2684
|
+
el.style.backgroundImage = String(value);
|
|
2685
|
+
},
|
|
2686
|
+
backgroundSize: (el, value) => {
|
|
2687
|
+
el.style.backgroundSize = String(value);
|
|
2688
|
+
},
|
|
2689
|
+
backgroundPosition: (el, value) => {
|
|
2690
|
+
el.style.backgroundPosition = String(value);
|
|
2691
|
+
},
|
|
2692
|
+
backgroundRepeat: (el, value) => {
|
|
2693
|
+
el.style.backgroundRepeat = String(value);
|
|
2694
|
+
},
|
|
2695
|
+
backgroundAttachment: (el, value) => {
|
|
2696
|
+
el.style.backgroundAttachment = String(value);
|
|
2697
|
+
},
|
|
2698
|
+
backgroundClip: (el, value) => {
|
|
2699
|
+
el.style.backgroundClip = String(value);
|
|
2700
|
+
},
|
|
2701
|
+
backgroundOrigin: (el, value) => {
|
|
2702
|
+
el.style.backgroundOrigin = String(value);
|
|
2703
|
+
},
|
|
2704
|
+
linearGradient: (el, value) => {
|
|
2705
|
+
el.style.backgroundImage = `linear-gradient(${value})`;
|
|
2706
|
+
},
|
|
2707
|
+
radialGradient: (el, value) => {
|
|
2708
|
+
el.style.backgroundImage = `radial-gradient(${value})`;
|
|
2709
|
+
},
|
|
2710
|
+
conicGradient: (el, value) => {
|
|
2711
|
+
el.style.backgroundImage = `conic-gradient(${value})`;
|
|
2712
|
+
}
|
|
2713
|
+
};
|
|
2555
2714
|
|
|
2556
2715
|
// src/dom/applicators/display.ts
|
|
2557
|
-
var
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
}
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
el.style.objectFit = String(value);
|
|
2593
|
-
},
|
|
2594
|
-
objectPosition: (el, value) => {
|
|
2595
|
-
el.style.objectPosition = String(value);
|
|
2596
|
-
}
|
|
2597
|
-
};
|
|
2598
|
-
});
|
|
2716
|
+
var displayHandlers = {
|
|
2717
|
+
display: (el, value) => {
|
|
2718
|
+
el.style.display = String(value);
|
|
2719
|
+
},
|
|
2720
|
+
visibility: (el, value) => {
|
|
2721
|
+
el.style.visibility = String(value);
|
|
2722
|
+
},
|
|
2723
|
+
overflowX: (el, value) => {
|
|
2724
|
+
el.style.overflowX = String(value);
|
|
2725
|
+
},
|
|
2726
|
+
overflowY: (el, value) => {
|
|
2727
|
+
el.style.overflowY = String(value);
|
|
2728
|
+
},
|
|
2729
|
+
pointerEvents: (el, value) => {
|
|
2730
|
+
el.style.pointerEvents = String(value);
|
|
2731
|
+
},
|
|
2732
|
+
userSelect: (el, value) => {
|
|
2733
|
+
el.style.userSelect = String(value);
|
|
2734
|
+
},
|
|
2735
|
+
resize: (el, value) => {
|
|
2736
|
+
el.style.resize = String(value);
|
|
2737
|
+
},
|
|
2738
|
+
boxSizing: (el, value) => {
|
|
2739
|
+
el.style.boxSizing = String(value);
|
|
2740
|
+
},
|
|
2741
|
+
aspectRatio: (el, value) => {
|
|
2742
|
+
el.style.aspectRatio = String(value);
|
|
2743
|
+
},
|
|
2744
|
+
objectFit: (el, value) => {
|
|
2745
|
+
el.style.objectFit = String(value);
|
|
2746
|
+
},
|
|
2747
|
+
objectPosition: (el, value) => {
|
|
2748
|
+
el.style.objectPosition = String(value);
|
|
2749
|
+
}
|
|
2750
|
+
};
|
|
2599
2751
|
|
|
2600
2752
|
// src/dom/applicators/transition.ts
|
|
2601
|
-
var
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
}
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
},
|
|
2644
|
-
animationFillMode: (el, value) => {
|
|
2645
|
-
el.style.animationFillMode = String(value);
|
|
2646
|
-
},
|
|
2647
|
-
animationPlayState: (el, value) => {
|
|
2648
|
-
el.style.animationPlayState = String(value);
|
|
2649
|
-
}
|
|
2650
|
-
};
|
|
2651
|
-
});
|
|
2652
|
-
|
|
2653
|
-
// src/dom/components/index.ts
|
|
2654
|
-
class ComponentRegistry {
|
|
2655
|
-
handlers = new Map;
|
|
2656
|
-
constructor() {
|
|
2657
|
-
this.registerDefaults();
|
|
2658
|
-
}
|
|
2659
|
-
register(type, handler) {
|
|
2660
|
-
this.handlers.set(type.toLowerCase(), handler);
|
|
2661
|
-
}
|
|
2662
|
-
get(type) {
|
|
2663
|
-
return this.handlers.get(type.toLowerCase());
|
|
2664
|
-
}
|
|
2665
|
-
createElement(type, props = {}) {
|
|
2666
|
-
const handler = this.get(type);
|
|
2667
|
-
if (!handler)
|
|
2668
|
-
return null;
|
|
2669
|
-
const element = handler.create();
|
|
2670
|
-
if (handler.applyProps) {
|
|
2671
|
-
handler.applyProps(element, props);
|
|
2672
|
-
}
|
|
2673
|
-
return element;
|
|
2674
|
-
}
|
|
2675
|
-
registerDefaults() {
|
|
2676
|
-
const { columnHandler: columnHandler2 } = (init_column(), __toCommonJS(exports_column));
|
|
2677
|
-
const { rowHandler: rowHandler2 } = (init_row(), __toCommonJS(exports_row));
|
|
2678
|
-
const { textHandler: textHandler2 } = (init_text(), __toCommonJS(exports_text));
|
|
2679
|
-
const { imageHandler: imageHandler2 } = (init_image(), __toCommonJS(exports_image));
|
|
2680
|
-
const { buttonHandler: buttonHandler2 } = (init_button(), __toCommonJS(exports_button));
|
|
2681
|
-
const { containerHandler: containerHandler2 } = (init_container(), __toCommonJS(exports_container));
|
|
2682
|
-
const { centerHandler: centerHandler2 } = (init_center(), __toCommonJS(exports_center));
|
|
2683
|
-
const { listHandler: listHandler2 } = (init_list(), __toCommonJS(exports_list));
|
|
2684
|
-
const { inputHandler: inputHandler2 } = (init_input(), __toCommonJS(exports_input));
|
|
2685
|
-
const { linkHandler: linkHandler2 } = (init_link(), __toCommonJS(exports_link));
|
|
2686
|
-
const { textareaHandler: textareaHandler2 } = (init_textarea(), __toCommonJS(exports_textarea));
|
|
2687
|
-
const { checkboxHandler: checkboxHandler2 } = (init_checkbox(), __toCommonJS(exports_checkbox));
|
|
2688
|
-
const { selectHandler: selectHandler2 } = (init_select(), __toCommonJS(exports_select));
|
|
2689
|
-
const { spacerHandler: spacerHandler2 } = (init_spacer(), __toCommonJS(exports_spacer));
|
|
2690
|
-
const { stackHandler: stackHandler2 } = (init_stack(), __toCommonJS(exports_stack));
|
|
2691
|
-
const { dividerHandler: dividerHandler2 } = (init_divider(), __toCommonJS(exports_divider));
|
|
2692
|
-
const { gridHandler: gridHandler2 } = (init_grid(), __toCommonJS(exports_grid));
|
|
2693
|
-
const { cardHandler: cardHandler2 } = (init_card(), __toCommonJS(exports_card));
|
|
2694
|
-
const { headingHandler: headingHandler2 } = (init_heading(), __toCommonJS(exports_heading));
|
|
2695
|
-
const { switchHandler: switchHandler2 } = (init_switch(), __toCommonJS(exports_switch));
|
|
2696
|
-
const { sliderHandler: sliderHandler2 } = (init_slider(), __toCommonJS(exports_slider));
|
|
2697
|
-
const { spinnerHandler: spinnerHandler2 } = (init_spinner(), __toCommonJS(exports_spinner));
|
|
2698
|
-
const { badgeHandler: badgeHandler2 } = (init_badge(), __toCommonJS(exports_badge));
|
|
2699
|
-
const { avatarHandler: avatarHandler2 } = (init_avatar(), __toCommonJS(exports_avatar));
|
|
2700
|
-
const { progressBarHandler: progressBarHandler2 } = (init_progressbar(), __toCommonJS(exports_progressbar));
|
|
2701
|
-
const { videoHandler: videoHandler2 } = (init_video(), __toCommonJS(exports_video));
|
|
2702
|
-
const { audioHandler: audioHandler2 } = (init_audio(), __toCommonJS(exports_audio));
|
|
2703
|
-
const { paragraphHandler: paragraphHandler2 } = (init_paragraph(), __toCommonJS(exports_paragraph));
|
|
2704
|
-
const { routerHandler: routerHandler2 } = (init_router(), __toCommonJS(exports_router));
|
|
2705
|
-
const { routeHandler: routeHandler2 } = (init_route(), __toCommonJS(exports_route));
|
|
2706
|
-
const { hypenAppHandler: hypenAppHandler2 } = (init_hypenapp(), __toCommonJS(exports_hypenapp));
|
|
2707
|
-
this.register("column", columnHandler2);
|
|
2708
|
-
this.register("row", rowHandler2);
|
|
2709
|
-
this.register("text", textHandler2);
|
|
2710
|
-
this.register("image", imageHandler2);
|
|
2711
|
-
this.register("button", buttonHandler2);
|
|
2712
|
-
this.register("container", containerHandler2);
|
|
2713
|
-
this.register("box", containerHandler2);
|
|
2714
|
-
this.register("center", centerHandler2);
|
|
2715
|
-
this.register("list", listHandler2);
|
|
2716
|
-
this.register("input", inputHandler2);
|
|
2717
|
-
this.register("link", linkHandler2);
|
|
2718
|
-
this.register("textarea", textareaHandler2);
|
|
2719
|
-
this.register("checkbox", checkboxHandler2);
|
|
2720
|
-
this.register("select", selectHandler2);
|
|
2721
|
-
this.register("spacer", spacerHandler2);
|
|
2722
|
-
this.register("stack", stackHandler2);
|
|
2723
|
-
this.register("divider", dividerHandler2);
|
|
2724
|
-
this.register("grid", gridHandler2);
|
|
2725
|
-
this.register("card", cardHandler2);
|
|
2726
|
-
this.register("heading", headingHandler2);
|
|
2727
|
-
this.register("switch", switchHandler2);
|
|
2728
|
-
this.register("slider", sliderHandler2);
|
|
2729
|
-
this.register("spinner", spinnerHandler2);
|
|
2730
|
-
this.register("badge", badgeHandler2);
|
|
2731
|
-
this.register("avatar", avatarHandler2);
|
|
2732
|
-
this.register("progressbar", progressBarHandler2);
|
|
2733
|
-
this.register("video", videoHandler2);
|
|
2734
|
-
this.register("audio", audioHandler2);
|
|
2735
|
-
this.register("paragraph", paragraphHandler2);
|
|
2736
|
-
this.register("router", routerHandler2);
|
|
2737
|
-
this.register("route", routeHandler2);
|
|
2738
|
-
this.register("hypenapp", hypenAppHandler2);
|
|
2753
|
+
var transitionHandlers = {
|
|
2754
|
+
transition: (el, value) => {
|
|
2755
|
+
el.style.transition = String(value);
|
|
2756
|
+
},
|
|
2757
|
+
transitionProperty: (el, value) => {
|
|
2758
|
+
el.style.transitionProperty = String(value);
|
|
2759
|
+
},
|
|
2760
|
+
transitionDuration: (el, value) => {
|
|
2761
|
+
el.style.transitionDuration = String(value);
|
|
2762
|
+
},
|
|
2763
|
+
transitionTimingFunction: (el, value) => {
|
|
2764
|
+
el.style.transitionTimingFunction = String(value);
|
|
2765
|
+
},
|
|
2766
|
+
transitionDelay: (el, value) => {
|
|
2767
|
+
el.style.transitionDelay = String(value);
|
|
2768
|
+
},
|
|
2769
|
+
animation: (el, value) => {
|
|
2770
|
+
el.style.animation = String(value);
|
|
2771
|
+
},
|
|
2772
|
+
animationName: (el, value) => {
|
|
2773
|
+
el.style.animationName = String(value);
|
|
2774
|
+
},
|
|
2775
|
+
animationDuration: (el, value) => {
|
|
2776
|
+
el.style.animationDuration = String(value);
|
|
2777
|
+
},
|
|
2778
|
+
animationTimingFunction: (el, value) => {
|
|
2779
|
+
el.style.animationTimingFunction = String(value);
|
|
2780
|
+
},
|
|
2781
|
+
animationDelay: (el, value) => {
|
|
2782
|
+
el.style.animationDelay = String(value);
|
|
2783
|
+
},
|
|
2784
|
+
animationIterationCount: (el, value) => {
|
|
2785
|
+
el.style.animationIterationCount = String(value);
|
|
2786
|
+
},
|
|
2787
|
+
animationDirection: (el, value) => {
|
|
2788
|
+
el.style.animationDirection = String(value);
|
|
2789
|
+
},
|
|
2790
|
+
animationFillMode: (el, value) => {
|
|
2791
|
+
el.style.animationFillMode = String(value);
|
|
2792
|
+
},
|
|
2793
|
+
animationPlayState: (el, value) => {
|
|
2794
|
+
el.style.animationPlayState = String(value);
|
|
2739
2795
|
}
|
|
2740
|
-
}
|
|
2796
|
+
};
|
|
2741
2797
|
|
|
2742
2798
|
// src/dom/applicators/index.ts
|
|
2743
2799
|
var BREAKPOINTS = {
|
|
@@ -2973,60 +3029,57 @@ class ApplicatorRegistry {
|
|
|
2973
3029
|
return !unitless.includes(prop);
|
|
2974
3030
|
}
|
|
2975
3031
|
registerDefaults() {
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
const
|
|
2991
|
-
this.register("padding", paddingHandler2);
|
|
2992
|
-
this.register("margin", marginHandler2);
|
|
2993
|
-
for (const [name, handler] of Object.entries(colorHandlers2)) {
|
|
3032
|
+
this.register("padding", paddingHandler);
|
|
3033
|
+
this.register("paddingTop", paddingTopHandler);
|
|
3034
|
+
this.register("paddingBottom", paddingBottomHandler);
|
|
3035
|
+
this.register("paddingLeft", paddingLeftHandler);
|
|
3036
|
+
this.register("paddingRight", paddingRightHandler);
|
|
3037
|
+
this.register("paddingHorizontal", paddingHorizontalHandler);
|
|
3038
|
+
this.register("paddingVertical", paddingVerticalHandler);
|
|
3039
|
+
this.register("margin", marginHandler);
|
|
3040
|
+
this.register("marginTop", marginTopHandler);
|
|
3041
|
+
this.register("marginBottom", marginBottomHandler);
|
|
3042
|
+
this.register("marginLeft", marginLeftHandler);
|
|
3043
|
+
this.register("marginRight", marginRightHandler);
|
|
3044
|
+
this.register("marginHorizontal", marginHorizontalHandler);
|
|
3045
|
+
this.register("marginVertical", marginVerticalHandler);
|
|
3046
|
+
for (const [name, handler] of Object.entries(colorHandlers)) {
|
|
2994
3047
|
this.register(name, handler);
|
|
2995
3048
|
}
|
|
2996
|
-
for (const [name, handler] of Object.entries(
|
|
3049
|
+
for (const [name, handler] of Object.entries(borderHandlers)) {
|
|
2997
3050
|
this.register(name, handler);
|
|
2998
3051
|
}
|
|
2999
|
-
for (const [name, handler] of Object.entries(
|
|
3052
|
+
for (const [name, handler] of Object.entries(sizeHandlers)) {
|
|
3000
3053
|
this.register(name, handler);
|
|
3001
3054
|
}
|
|
3002
|
-
for (const [name, handler] of Object.entries(
|
|
3055
|
+
for (const [name, handler] of Object.entries(fontHandlers)) {
|
|
3003
3056
|
this.register(name, handler);
|
|
3004
3057
|
}
|
|
3005
|
-
for (const [name, handler] of Object.entries(
|
|
3058
|
+
for (const [name, handler] of Object.entries(layoutHandlers)) {
|
|
3006
3059
|
this.register(name, handler);
|
|
3007
3060
|
}
|
|
3008
|
-
for (const [name, handler] of Object.entries(
|
|
3061
|
+
for (const [name, handler] of Object.entries(eventHandlers)) {
|
|
3009
3062
|
this.register(name, handler);
|
|
3010
3063
|
}
|
|
3011
|
-
for (const [name, handler] of Object.entries(
|
|
3064
|
+
for (const [name, handler] of Object.entries(typographyHandlers)) {
|
|
3012
3065
|
this.register(name, handler);
|
|
3013
3066
|
}
|
|
3014
|
-
for (const [name, handler] of Object.entries(
|
|
3067
|
+
for (const [name, handler] of Object.entries(transformHandlers)) {
|
|
3015
3068
|
this.register(name, handler);
|
|
3016
3069
|
}
|
|
3017
|
-
for (const [name, handler] of Object.entries(
|
|
3070
|
+
for (const [name, handler] of Object.entries(effectsHandlers)) {
|
|
3018
3071
|
this.register(name, handler);
|
|
3019
3072
|
}
|
|
3020
|
-
for (const [name, handler] of Object.entries(
|
|
3073
|
+
for (const [name, handler] of Object.entries(advancedLayoutHandlers)) {
|
|
3021
3074
|
this.register(name, handler);
|
|
3022
3075
|
}
|
|
3023
|
-
for (const [name, handler] of Object.entries(
|
|
3076
|
+
for (const [name, handler] of Object.entries(backgroundHandlers)) {
|
|
3024
3077
|
this.register(name, handler);
|
|
3025
3078
|
}
|
|
3026
|
-
for (const [name, handler] of Object.entries(
|
|
3079
|
+
for (const [name, handler] of Object.entries(displayHandlers)) {
|
|
3027
3080
|
this.register(name, handler);
|
|
3028
3081
|
}
|
|
3029
|
-
for (const [name, handler] of Object.entries(
|
|
3082
|
+
for (const [name, handler] of Object.entries(transitionHandlers)) {
|
|
3030
3083
|
this.register(name, handler);
|
|
3031
3084
|
}
|
|
3032
3085
|
}
|
|
@@ -3074,6 +3127,8 @@ var canvasApplicators = {
|
|
|
3074
3127
|
};
|
|
3075
3128
|
|
|
3076
3129
|
// src/dom/debug.ts
|
|
3130
|
+
import { frameworkLoggers as frameworkLoggers4 } from "@hypen-space/core";
|
|
3131
|
+
var log4 = frameworkLoggers4.debug;
|
|
3077
3132
|
var defaultDebugConfig = {
|
|
3078
3133
|
enabled: false,
|
|
3079
3134
|
showHeatmap: true,
|
|
@@ -3099,7 +3154,7 @@ class RerenderTracker {
|
|
|
3099
3154
|
if (!this.config.enabled || !this.config.showHeatmap) {
|
|
3100
3155
|
return;
|
|
3101
3156
|
}
|
|
3102
|
-
|
|
3157
|
+
log4.debug(`Tracking re-render: ${id} - ${patchType}`);
|
|
3103
3158
|
const currentCount = this.renderCounts.get(id) || 0;
|
|
3104
3159
|
const newCount = currentCount + 1;
|
|
3105
3160
|
this.renderCounts.set(id, newCount);
|
|
@@ -3107,7 +3162,7 @@ class RerenderTracker {
|
|
|
3107
3162
|
}
|
|
3108
3163
|
updateHeatmap(id, element, renderCount, patchType) {
|
|
3109
3164
|
const opacity = Math.min(renderCount * this.config.heatmapIncrement / 100, this.config.maxOpacity);
|
|
3110
|
-
|
|
3165
|
+
log4.debug(`Updating heatmap for ${id}, count: ${renderCount}, opacity: ${opacity}`);
|
|
3111
3166
|
const isInline = window.getComputedStyle(element).display.includes("inline");
|
|
3112
3167
|
if (isInline || element.tagName === "SPAN") {
|
|
3113
3168
|
if (!element.dataset.hypenDebugOriginalBg) {
|
|
@@ -3235,7 +3290,8 @@ class RerenderTracker {
|
|
|
3235
3290
|
}
|
|
3236
3291
|
|
|
3237
3292
|
// src/dom/renderer.ts
|
|
3238
|
-
|
|
3293
|
+
import { frameworkLoggers as frameworkLoggers5 } from "@hypen-space/core";
|
|
3294
|
+
var log5 = frameworkLoggers5.renderer;
|
|
3239
3295
|
|
|
3240
3296
|
class DOMRenderer {
|
|
3241
3297
|
container;
|
|
@@ -3270,13 +3326,13 @@ class DOMRenderer {
|
|
|
3270
3326
|
}
|
|
3271
3327
|
}
|
|
3272
3328
|
updateState(state) {
|
|
3273
|
-
|
|
3329
|
+
log5.debug("Updating state:", state);
|
|
3274
3330
|
this.currentState = state;
|
|
3275
3331
|
this.interpolateAllText();
|
|
3276
3332
|
}
|
|
3277
3333
|
mergeComponentState(componentState) {
|
|
3278
3334
|
this.currentState = { ...this.currentState, ...componentState };
|
|
3279
|
-
|
|
3335
|
+
log5.debug("Merged state:", this.currentState);
|
|
3280
3336
|
this.interpolateAllText();
|
|
3281
3337
|
}
|
|
3282
3338
|
interpolateAllText() {
|
|
@@ -3309,7 +3365,7 @@ class DOMRenderer {
|
|
|
3309
3365
|
applyPatch(patch) {
|
|
3310
3366
|
switch (patch.type) {
|
|
3311
3367
|
case "create":
|
|
3312
|
-
this.onCreate(patch.id, patch.
|
|
3368
|
+
this.onCreate(patch.id, patch.elementType, patch.props || {});
|
|
3313
3369
|
break;
|
|
3314
3370
|
case "setProp":
|
|
3315
3371
|
this.onSetProp(patch.id, patch.name, patch.value);
|
|
@@ -3318,10 +3374,10 @@ class DOMRenderer {
|
|
|
3318
3374
|
this.onSetText(patch.id, patch.text);
|
|
3319
3375
|
break;
|
|
3320
3376
|
case "insert":
|
|
3321
|
-
this.onInsert(patch.
|
|
3377
|
+
this.onInsert(patch.parentId, patch.id, patch.beforeId);
|
|
3322
3378
|
break;
|
|
3323
3379
|
case "move":
|
|
3324
|
-
this.onMove(patch.
|
|
3380
|
+
this.onMove(patch.parentId, patch.id, patch.beforeId);
|
|
3325
3381
|
break;
|
|
3326
3382
|
case "remove":
|
|
3327
3383
|
this.onRemove(patch.id);
|
|
@@ -3336,7 +3392,7 @@ class DOMRenderer {
|
|
|
3336
3392
|
fallback.dataset.hypenType = elementType.toLowerCase();
|
|
3337
3393
|
fallback.style.display = "contents";
|
|
3338
3394
|
element = fallback;
|
|
3339
|
-
|
|
3395
|
+
log5.debug(`Unknown component "${elementType}" - using transparent container`);
|
|
3340
3396
|
}
|
|
3341
3397
|
element.dataset.hypenType = elementType.toLowerCase();
|
|
3342
3398
|
element.dataset.hypenId = id;
|
|
@@ -3361,7 +3417,7 @@ class DOMRenderer {
|
|
|
3361
3417
|
if (elementType === "input") {
|
|
3362
3418
|
const inputEl = element;
|
|
3363
3419
|
inputEl.value = String(value);
|
|
3364
|
-
|
|
3420
|
+
log5.debug(`Updated input value: "${value}"`);
|
|
3365
3421
|
return;
|
|
3366
3422
|
}
|
|
3367
3423
|
const nextText = String(value);
|
|
@@ -3376,7 +3432,7 @@ class DOMRenderer {
|
|
|
3376
3432
|
} else if (!currentLooksLikeTemplate) {
|
|
3377
3433
|
element.dataset.textTemplate = nextText;
|
|
3378
3434
|
}
|
|
3379
|
-
|
|
3435
|
+
log5.debug(`Updated text content: "${value}"`);
|
|
3380
3436
|
return;
|
|
3381
3437
|
}
|
|
3382
3438
|
this.applicators.apply(element, name, value);
|
|
@@ -3391,7 +3447,7 @@ class DOMRenderer {
|
|
|
3391
3447
|
onInsert(parentId, id, beforeId) {
|
|
3392
3448
|
const parent = parentId === "root" ? this.container : this.nodes.get(parentId);
|
|
3393
3449
|
const child = this.nodes.get(id);
|
|
3394
|
-
|
|
3450
|
+
log5.debug(`Inserting ${id} into ${parentId}`, {
|
|
3395
3451
|
parent: parent ? `${parent.tagName}#${parent.id || "no-id"}` : "null",
|
|
3396
3452
|
child: child ? `${child.tagName}#${child.id || "no-id"}` : "null",
|
|
3397
3453
|
childText: child?.textContent?.substring(0, 20)
|
|
@@ -3463,8 +3519,12 @@ import {
|
|
|
3463
3519
|
componentLoader,
|
|
3464
3520
|
Router,
|
|
3465
3521
|
Route,
|
|
3466
|
-
Link
|
|
3522
|
+
Link,
|
|
3523
|
+
frameworkLoggers as frameworkLoggers6,
|
|
3524
|
+
setDebugMode
|
|
3467
3525
|
} from "@hypen-space/core";
|
|
3526
|
+
var log6 = frameworkLoggers6.hypen;
|
|
3527
|
+
|
|
3468
3528
|
class Hypen {
|
|
3469
3529
|
engine = null;
|
|
3470
3530
|
renderer = null;
|
|
@@ -3480,6 +3540,9 @@ class Hypen {
|
|
|
3480
3540
|
debug: false,
|
|
3481
3541
|
...config
|
|
3482
3542
|
};
|
|
3543
|
+
if (this.config.debug) {
|
|
3544
|
+
setDebugMode(true);
|
|
3545
|
+
}
|
|
3483
3546
|
this.router = new HypenRouter;
|
|
3484
3547
|
this.globalContext = new HypenGlobalContext;
|
|
3485
3548
|
componentLoader.register("Router", Router, "");
|
|
@@ -3489,27 +3552,19 @@ class Hypen {
|
|
|
3489
3552
|
this.globalContext.__hypenEngine = this;
|
|
3490
3553
|
}
|
|
3491
3554
|
async init() {
|
|
3492
|
-
|
|
3493
|
-
console.log("[Hypen] Initializing...");
|
|
3494
|
-
}
|
|
3555
|
+
log6.debug("Initializing...");
|
|
3495
3556
|
this.engine = new Engine;
|
|
3496
3557
|
await this.engine.init({
|
|
3497
3558
|
wasmUrl: this.config.wasmUrl,
|
|
3498
3559
|
jsUrl: this.config.jsUrl
|
|
3499
3560
|
});
|
|
3500
|
-
|
|
3501
|
-
console.log("[Hypen] Engine initialized");
|
|
3502
|
-
}
|
|
3561
|
+
log6.debug("Engine initialized");
|
|
3503
3562
|
}
|
|
3504
3563
|
async loadComponents(componentsDir) {
|
|
3505
3564
|
const dir = componentsDir || this.config.componentsDir;
|
|
3506
|
-
|
|
3507
|
-
console.log(`[Hypen] Loading components from ${dir}...`);
|
|
3508
|
-
}
|
|
3565
|
+
log6.debug(`Loading components from ${dir}...`);
|
|
3509
3566
|
await componentLoader.loadFromComponentsDir(dir);
|
|
3510
|
-
|
|
3511
|
-
console.log(`[Hypen] Loaded ${componentLoader.getNames().length} components`);
|
|
3512
|
-
}
|
|
3567
|
+
log6.debug(`Loaded ${componentLoader.getNames().length} components`);
|
|
3513
3568
|
}
|
|
3514
3569
|
async render(componentName, containerSelector) {
|
|
3515
3570
|
if (!this.engine) {
|
|
@@ -3528,9 +3583,7 @@ class Hypen {
|
|
|
3528
3583
|
if (!component) {
|
|
3529
3584
|
throw new Error(`[Hypen] Component "${componentName}" not found. Available: ${componentLoader.getNames().join(", ")}`);
|
|
3530
3585
|
}
|
|
3531
|
-
|
|
3532
|
-
console.log(`[Hypen] Rendering ${componentName} to`, this.container);
|
|
3533
|
-
}
|
|
3586
|
+
log6.debug(`Rendering ${componentName} to`, this.container);
|
|
3534
3587
|
this.renderer = new DOMRenderer(this.container, this.engine, {
|
|
3535
3588
|
enabled: this.config.debugHeatmap || false,
|
|
3536
3589
|
showHeatmap: this.config.debugHeatmap || false,
|
|
@@ -3539,9 +3592,7 @@ class Hypen {
|
|
|
3539
3592
|
maxOpacity: 0.8
|
|
3540
3593
|
});
|
|
3541
3594
|
this.engine.setRenderCallback((patches) => {
|
|
3542
|
-
|
|
3543
|
-
console.log(`[Hypen] Applying ${patches.length} patches`);
|
|
3544
|
-
}
|
|
3595
|
+
log6.debug(`Applying ${patches.length} patches`);
|
|
3545
3596
|
this.renderer.applyPatches(patches);
|
|
3546
3597
|
});
|
|
3547
3598
|
const routerContext = {
|
|
@@ -3555,23 +3606,17 @@ class Hypen {
|
|
|
3555
3606
|
this.moduleInstances.set(moduleId, this.moduleInstance);
|
|
3556
3607
|
this.moduleInstance.onStateChange(() => {
|
|
3557
3608
|
const mergedState = this.getMergedState();
|
|
3558
|
-
|
|
3559
|
-
console.log(`[Hypen] State changed, merged state:`, mergedState);
|
|
3560
|
-
}
|
|
3609
|
+
log6.debug(`State changed, merged state:`, mergedState);
|
|
3561
3610
|
this.renderer.updateState(mergedState);
|
|
3562
3611
|
});
|
|
3563
3612
|
this.setupComponentResolver();
|
|
3564
3613
|
this.createNestedModuleInstances();
|
|
3565
3614
|
this.engine.renderSource(component.template);
|
|
3566
3615
|
this.renderer.updateState(this.getMergedState());
|
|
3567
|
-
|
|
3568
|
-
console.log(`[Hypen] ${componentName} rendered successfully`);
|
|
3569
|
-
}
|
|
3616
|
+
log6.debug(`${componentName} rendered successfully`);
|
|
3570
3617
|
}
|
|
3571
3618
|
async unmount() {
|
|
3572
|
-
|
|
3573
|
-
console.log("[Hypen] Unmounting...");
|
|
3574
|
-
}
|
|
3619
|
+
log6.debug("Unmounting...");
|
|
3575
3620
|
if (this.moduleInstance) {
|
|
3576
3621
|
await this.moduleInstance.destroy();
|
|
3577
3622
|
this.moduleInstance = null;
|
|
@@ -3581,9 +3626,7 @@ class Hypen {
|
|
|
3581
3626
|
this.container = null;
|
|
3582
3627
|
}
|
|
3583
3628
|
this.renderer = null;
|
|
3584
|
-
|
|
3585
|
-
console.log("[Hypen] Unmounted");
|
|
3586
|
-
}
|
|
3629
|
+
log6.debug("Unmounted");
|
|
3587
3630
|
}
|
|
3588
3631
|
getModuleInstance() {
|
|
3589
3632
|
return this.moduleInstance;
|
|
@@ -3600,17 +3643,13 @@ class Hypen {
|
|
|
3600
3643
|
setDebugHeatmap(enabled) {
|
|
3601
3644
|
if (this.renderer) {
|
|
3602
3645
|
this.renderer.setDebugConfig({ enabled, showHeatmap: enabled });
|
|
3603
|
-
|
|
3604
|
-
console.log(`[Hypen] Debug heatmap ${enabled ? "enabled" : "disabled"}`);
|
|
3605
|
-
}
|
|
3646
|
+
log6.debug(`Debug heatmap ${enabled ? "enabled" : "disabled"}`);
|
|
3606
3647
|
}
|
|
3607
3648
|
}
|
|
3608
3649
|
resetDebugTracking() {
|
|
3609
3650
|
if (this.renderer) {
|
|
3610
3651
|
this.renderer.resetDebugTracking();
|
|
3611
|
-
|
|
3612
|
-
console.log(`[Hypen] Debug tracking reset`);
|
|
3613
|
-
}
|
|
3652
|
+
log6.debug("Debug tracking reset");
|
|
3614
3653
|
}
|
|
3615
3654
|
}
|
|
3616
3655
|
getDebugStats() {
|
|
@@ -3639,9 +3678,7 @@ class Hypen {
|
|
|
3639
3678
|
this.moduleInstances.set(componentName, moduleInstance);
|
|
3640
3679
|
moduleInstance.onStateChange(() => {
|
|
3641
3680
|
const mergedState2 = this.getMergedState();
|
|
3642
|
-
|
|
3643
|
-
console.log(`[Hypen] Lazy component ${componentName} state changed:`, mergedState2);
|
|
3644
|
-
}
|
|
3681
|
+
log6.debug(`Lazy component ${componentName} state changed:`, mergedState2);
|
|
3645
3682
|
this.renderer.updateState(mergedState2);
|
|
3646
3683
|
});
|
|
3647
3684
|
}
|
|
@@ -3673,9 +3710,7 @@ class Hypen {
|
|
|
3673
3710
|
this.moduleInstances.set("Router", routerInstance);
|
|
3674
3711
|
routerInstance.onStateChange(() => {
|
|
3675
3712
|
const mergedState = this.getMergedState();
|
|
3676
|
-
|
|
3677
|
-
console.log(`[Hypen] Router state changed:`, mergedState);
|
|
3678
|
-
}
|
|
3713
|
+
log6.debug("Router state changed:", mergedState);
|
|
3679
3714
|
this.renderer.updateState(mergedState);
|
|
3680
3715
|
});
|
|
3681
3716
|
}
|
|
@@ -3688,17 +3723,13 @@ class Hypen {
|
|
|
3688
3723
|
if (!comp || !comp.module) {
|
|
3689
3724
|
continue;
|
|
3690
3725
|
}
|
|
3691
|
-
|
|
3692
|
-
console.log(`[Hypen] Creating nested module instance for: ${name}`);
|
|
3693
|
-
}
|
|
3726
|
+
log6.debug(`Creating nested module instance for: ${name}`);
|
|
3694
3727
|
const moduleInstance = new HypenModuleInstance(this.engine, comp.module, routerContext, this.globalContext);
|
|
3695
3728
|
this.globalContext.registerModule(name, moduleInstance);
|
|
3696
3729
|
this.moduleInstances.set(name, moduleInstance);
|
|
3697
3730
|
moduleInstance.onStateChange(() => {
|
|
3698
3731
|
const mergedState = this.getMergedState();
|
|
3699
|
-
|
|
3700
|
-
console.log(`[Hypen] Nested component ${name} state changed:`, mergedState);
|
|
3701
|
-
}
|
|
3732
|
+
log6.debug(`Nested component ${name} state changed:`, mergedState);
|
|
3702
3733
|
this.renderer.updateState(mergedState);
|
|
3703
3734
|
});
|
|
3704
3735
|
}
|
|
@@ -3738,14 +3769,10 @@ class Hypen {
|
|
|
3738
3769
|
if (builtInElements.has(componentName)) {
|
|
3739
3770
|
return null;
|
|
3740
3771
|
}
|
|
3741
|
-
|
|
3742
|
-
console.log(`[Hypen] Resolving component: ${componentName} (context: ${contextPath})`);
|
|
3743
|
-
}
|
|
3772
|
+
log6.debug(`Resolving component: ${componentName} (context: ${contextPath})`);
|
|
3744
3773
|
const componentDef = componentLoader.get(componentName);
|
|
3745
3774
|
if (!componentDef) {
|
|
3746
|
-
|
|
3747
|
-
console.log(`[Hypen] Component not found: ${componentName}`);
|
|
3748
|
-
}
|
|
3775
|
+
log6.debug(`Component not found: ${componentName}`);
|
|
3749
3776
|
return null;
|
|
3750
3777
|
}
|
|
3751
3778
|
const isPassthrough = componentName === "Router";
|
|
@@ -3756,15 +3783,13 @@ class Hypen {
|
|
|
3756
3783
|
passthrough: isPassthrough,
|
|
3757
3784
|
lazy: isLazy
|
|
3758
3785
|
};
|
|
3759
|
-
|
|
3760
|
-
|
|
3761
|
-
|
|
3762
|
-
|
|
3763
|
-
|
|
3764
|
-
|
|
3765
|
-
|
|
3766
|
-
console.log(`[Hypen] Resolved ${componentName} -> ${resolved.path}${flagStr}`);
|
|
3767
|
-
}
|
|
3786
|
+
const flags = [];
|
|
3787
|
+
if (isPassthrough)
|
|
3788
|
+
flags.push("passthrough");
|
|
3789
|
+
if (isLazy)
|
|
3790
|
+
flags.push("lazy");
|
|
3791
|
+
const flagStr = flags.length > 0 ? ` (${flags.join(", ")})` : "";
|
|
3792
|
+
log6.debug(`Resolved ${componentName} -> ${resolved.path}${flagStr}`);
|
|
3768
3793
|
return resolved;
|
|
3769
3794
|
});
|
|
3770
3795
|
}
|
|
@@ -3792,6 +3817,9 @@ async function renderWithComponents(components, componentName, containerSelector
|
|
|
3792
3817
|
}
|
|
3793
3818
|
|
|
3794
3819
|
// src/dom/events.ts
|
|
3820
|
+
import { frameworkLoggers as frameworkLoggers7 } from "@hypen-space/core";
|
|
3821
|
+
var log7 = frameworkLoggers7.events;
|
|
3822
|
+
|
|
3795
3823
|
class EventManager {
|
|
3796
3824
|
engine;
|
|
3797
3825
|
bindings = new Map;
|
|
@@ -3800,22 +3828,22 @@ class EventManager {
|
|
|
3800
3828
|
}
|
|
3801
3829
|
attach(elementId, element, eventName, actionName) {
|
|
3802
3830
|
const domEventName = eventName === "onClick" ? "click" : eventName;
|
|
3803
|
-
|
|
3831
|
+
log7.debug(`Attaching ${eventName} (DOM: ${domEventName}) to element ${elementId}, action: ${actionName}`);
|
|
3804
3832
|
const listener = (event) => {
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3833
|
+
log7.debug(`Event fired: ${eventName} on ${elementId}, dispatching action: ${actionName}`);
|
|
3834
|
+
log7.debug(`Event object:`, event);
|
|
3835
|
+
log7.debug(`Element:`, element);
|
|
3808
3836
|
if (eventName === "submit" || eventName === "click" && element.tagName === "A") {
|
|
3809
3837
|
event.preventDefault();
|
|
3810
3838
|
}
|
|
3811
3839
|
const payload = this.extractEventData(event, element);
|
|
3812
|
-
|
|
3813
|
-
|
|
3840
|
+
log7.debug(`Event payload:`, payload);
|
|
3841
|
+
log7.debug(`Calling engine.dispatchAction(${actionName})`);
|
|
3814
3842
|
try {
|
|
3815
3843
|
this.engine.dispatchAction(actionName, payload);
|
|
3816
|
-
|
|
3844
|
+
log7.debug(`dispatchAction succeeded`);
|
|
3817
3845
|
} catch (error) {
|
|
3818
|
-
|
|
3846
|
+
log7.error(`dispatchAction failed:`, error);
|
|
3819
3847
|
}
|
|
3820
3848
|
};
|
|
3821
3849
|
let elementBindings = this.bindings.get(elementId);
|
|
@@ -3825,8 +3853,8 @@ class EventManager {
|
|
|
3825
3853
|
}
|
|
3826
3854
|
elementBindings.set(eventName, listener);
|
|
3827
3855
|
element.addEventListener(domEventName, listener);
|
|
3828
|
-
|
|
3829
|
-
|
|
3856
|
+
log7.debug(`Listener attached to DOM for ${domEventName}`);
|
|
3857
|
+
log7.debug(`Element details:`, {
|
|
3830
3858
|
tagName: element.tagName,
|
|
3831
3859
|
id: element.id,
|
|
3832
3860
|
dataset: element.dataset,
|
|
@@ -3834,7 +3862,7 @@ class EventManager {
|
|
|
3834
3862
|
});
|
|
3835
3863
|
if (domEventName === "click") {
|
|
3836
3864
|
element.addEventListener("click", (e) => {
|
|
3837
|
-
|
|
3865
|
+
log7.debug(`Raw DOM click detected on ${element.tagName}`, e);
|
|
3838
3866
|
});
|
|
3839
3867
|
}
|
|
3840
3868
|
}
|
|
@@ -4019,6 +4047,8 @@ function getAbsoluteBounds(node) {
|
|
|
4019
4047
|
}
|
|
4020
4048
|
|
|
4021
4049
|
// src/canvas/text.ts
|
|
4050
|
+
import { frameworkLoggers as frameworkLoggers8 } from "@hypen-space/core";
|
|
4051
|
+
var log8 = frameworkLoggers8.canvas;
|
|
4022
4052
|
var textMetricsCache = new Map;
|
|
4023
4053
|
function getCacheKey(text, fontStyle, maxWidth) {
|
|
4024
4054
|
return `${text}|${fontStyle.fontSize}|${fontStyle.fontWeight}|${fontStyle.fontFamily}|${maxWidth || "auto"}`;
|
|
@@ -4118,7 +4148,7 @@ async function loadFont(fontFamily, fontWeight = "normal") {
|
|
|
4118
4148
|
try {
|
|
4119
4149
|
await document.fonts.load(font);
|
|
4120
4150
|
} catch (error) {
|
|
4121
|
-
|
|
4151
|
+
log8.warn(`Failed to load font: ${font}`, error);
|
|
4122
4152
|
}
|
|
4123
4153
|
}
|
|
4124
4154
|
|
|
@@ -5733,6 +5763,8 @@ class AccessibilityLayer {
|
|
|
5733
5763
|
}
|
|
5734
5764
|
|
|
5735
5765
|
// src/canvas/renderer.ts
|
|
5766
|
+
import { frameworkLoggers as frameworkLoggers9 } from "@hypen-space/core";
|
|
5767
|
+
var log9 = frameworkLoggers9.canvas;
|
|
5736
5768
|
var DEFAULT_OPTIONS = {
|
|
5737
5769
|
devicePixelRatio: typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1,
|
|
5738
5770
|
backgroundColor: "#ffffff",
|
|
@@ -5797,7 +5829,7 @@ class CanvasRenderer {
|
|
|
5797
5829
|
applyPatch(patch) {
|
|
5798
5830
|
switch (patch.type) {
|
|
5799
5831
|
case "create":
|
|
5800
|
-
this.onCreate(patch.id, patch.
|
|
5832
|
+
this.onCreate(patch.id, patch.elementType, patch.props || {});
|
|
5801
5833
|
break;
|
|
5802
5834
|
case "setProp":
|
|
5803
5835
|
this.onSetProp(patch.id, patch.name, patch.value);
|
|
@@ -5806,10 +5838,10 @@ class CanvasRenderer {
|
|
|
5806
5838
|
this.onSetText(patch.id, patch.text);
|
|
5807
5839
|
break;
|
|
5808
5840
|
case "insert":
|
|
5809
|
-
this.onInsert(patch.
|
|
5841
|
+
this.onInsert(patch.parentId, patch.id, patch.beforeId);
|
|
5810
5842
|
break;
|
|
5811
5843
|
case "move":
|
|
5812
|
-
this.onMove(patch.
|
|
5844
|
+
this.onMove(patch.parentId, patch.id, patch.beforeId);
|
|
5813
5845
|
break;
|
|
5814
5846
|
case "remove":
|
|
5815
5847
|
this.onRemove(patch.id);
|
|
@@ -5940,7 +5972,7 @@ class CanvasRenderer {
|
|
|
5940
5972
|
const elapsed = performance.now() - startTime;
|
|
5941
5973
|
this.frameCount++;
|
|
5942
5974
|
if (performance.now() - this.lastFrameTime > 1000) {
|
|
5943
|
-
|
|
5975
|
+
log9.debug(`Canvas FPS: ${this.frameCount}, Last frame: ${elapsed.toFixed(2)}ms`);
|
|
5944
5976
|
this.frameCount = 0;
|
|
5945
5977
|
this.lastFrameTime = performance.now();
|
|
5946
5978
|
}
|
|
@@ -6001,4 +6033,4 @@ export {
|
|
|
6001
6033
|
ApplicatorRegistry
|
|
6002
6034
|
};
|
|
6003
6035
|
|
|
6004
|
-
//# debugId=
|
|
6036
|
+
//# debugId=4FAEC1A16542965464756E2164756E21
|