@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
|
-
horizontalAlignment: (el, value) => {
|
|
1694
|
-
const val = mapAlignmentValue(String(value));
|
|
1695
|
-
const flexDirection = getComputedStyle(el).flexDirection;
|
|
1696
|
-
if (flexDirection === "column" || flexDirection === "column-reverse") {
|
|
1697
|
-
el.style.alignItems = val;
|
|
1698
|
-
} else {
|
|
1699
|
-
el.style.justifyContent = val;
|
|
1700
|
-
}
|
|
1701
|
-
},
|
|
1702
|
-
horizontalAlign: (el, value) => {
|
|
1703
|
-
el.style.justifyContent = mapAlignmentValue(String(value));
|
|
1704
|
-
},
|
|
1705
|
-
verticalAlign: (el, value) => {
|
|
1706
|
-
el.style.alignItems = mapAlignmentValue(String(value));
|
|
1707
|
-
},
|
|
1708
|
-
gap: (el, value) => {
|
|
1709
|
-
el.style.gap = typeof value === "number" ? `${value}px` : String(value);
|
|
1710
|
-
},
|
|
1711
|
-
weight: (el, value) => {
|
|
1712
|
-
el.style.flex = String(value);
|
|
1713
|
-
},
|
|
1714
|
-
flex: (el, value) => {
|
|
1715
|
-
el.style.flex = String(value);
|
|
1716
|
-
},
|
|
1717
|
-
flexGrow: (el, value) => {
|
|
1718
|
-
el.style.flexGrow = String(value);
|
|
1719
|
-
},
|
|
1720
|
-
flexShrink: (el, value) => {
|
|
1721
|
-
el.style.flexShrink = String(value);
|
|
1722
|
-
},
|
|
1723
|
-
cursor: (el, value) => {
|
|
1724
|
-
el.style.cursor = String(value);
|
|
1725
|
-
},
|
|
1726
|
-
overflow: (el, value) => {
|
|
1727
|
-
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
|
-
}
|
|
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;
|
|
1745
1882
|
}
|
|
1746
|
-
}
|
|
1747
|
-
|
|
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%";
|
|
1896
|
+
}
|
|
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 {
|
|
1944
|
+
el.style.overflow = String(value);
|
|
1945
|
+
}
|
|
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)
|
|
@@ -3455,6 +3511,9 @@ class DOMRenderer {
|
|
|
3455
3511
|
}
|
|
3456
3512
|
|
|
3457
3513
|
// src/dom/events.ts
|
|
3514
|
+
import { frameworkLoggers as frameworkLoggers6 } from "@hypen-space/core";
|
|
3515
|
+
var log6 = frameworkLoggers6.events;
|
|
3516
|
+
|
|
3458
3517
|
class EventManager {
|
|
3459
3518
|
engine;
|
|
3460
3519
|
bindings = new Map;
|
|
@@ -3463,22 +3522,22 @@ class EventManager {
|
|
|
3463
3522
|
}
|
|
3464
3523
|
attach(elementId, element, eventName, actionName) {
|
|
3465
3524
|
const domEventName = eventName === "onClick" ? "click" : eventName;
|
|
3466
|
-
|
|
3525
|
+
log6.debug(`Attaching ${eventName} (DOM: ${domEventName}) to element ${elementId}, action: ${actionName}`);
|
|
3467
3526
|
const listener = (event) => {
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3527
|
+
log6.debug(`Event fired: ${eventName} on ${elementId}, dispatching action: ${actionName}`);
|
|
3528
|
+
log6.debug(`Event object:`, event);
|
|
3529
|
+
log6.debug(`Element:`, element);
|
|
3471
3530
|
if (eventName === "submit" || eventName === "click" && element.tagName === "A") {
|
|
3472
3531
|
event.preventDefault();
|
|
3473
3532
|
}
|
|
3474
3533
|
const payload = this.extractEventData(event, element);
|
|
3475
|
-
|
|
3476
|
-
|
|
3534
|
+
log6.debug(`Event payload:`, payload);
|
|
3535
|
+
log6.debug(`Calling engine.dispatchAction(${actionName})`);
|
|
3477
3536
|
try {
|
|
3478
3537
|
this.engine.dispatchAction(actionName, payload);
|
|
3479
|
-
|
|
3538
|
+
log6.debug(`dispatchAction succeeded`);
|
|
3480
3539
|
} catch (error) {
|
|
3481
|
-
|
|
3540
|
+
log6.error(`dispatchAction failed:`, error);
|
|
3482
3541
|
}
|
|
3483
3542
|
};
|
|
3484
3543
|
let elementBindings = this.bindings.get(elementId);
|
|
@@ -3488,8 +3547,8 @@ class EventManager {
|
|
|
3488
3547
|
}
|
|
3489
3548
|
elementBindings.set(eventName, listener);
|
|
3490
3549
|
element.addEventListener(domEventName, listener);
|
|
3491
|
-
|
|
3492
|
-
|
|
3550
|
+
log6.debug(`Listener attached to DOM for ${domEventName}`);
|
|
3551
|
+
log6.debug(`Element details:`, {
|
|
3493
3552
|
tagName: element.tagName,
|
|
3494
3553
|
id: element.id,
|
|
3495
3554
|
dataset: element.dataset,
|
|
@@ -3497,7 +3556,7 @@ class EventManager {
|
|
|
3497
3556
|
});
|
|
3498
3557
|
if (domEventName === "click") {
|
|
3499
3558
|
element.addEventListener("click", (e) => {
|
|
3500
|
-
|
|
3559
|
+
log6.debug(`Raw DOM click detected on ${element.tagName}`, e);
|
|
3501
3560
|
});
|
|
3502
3561
|
}
|
|
3503
3562
|
}
|
|
@@ -3566,4 +3625,4 @@ export {
|
|
|
3566
3625
|
ApplicatorRegistry
|
|
3567
3626
|
};
|
|
3568
3627
|
|
|
3569
|
-
//# debugId=
|
|
3628
|
+
//# debugId=B4E923D0EBE0B01664756E2164756E21
|