@aigne/afs-ui 1.11.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +26 -0
- package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.cjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.mjs +10 -0
- package/dist/aup-protocol.cjs +235 -0
- package/dist/aup-protocol.d.cts +78 -0
- package/dist/aup-protocol.d.cts.map +1 -0
- package/dist/aup-protocol.d.mts +78 -0
- package/dist/aup-protocol.d.mts.map +1 -0
- package/dist/aup-protocol.mjs +235 -0
- package/dist/aup-protocol.mjs.map +1 -0
- package/dist/aup-registry.cjs +2489 -0
- package/dist/aup-registry.mjs +2487 -0
- package/dist/aup-registry.mjs.map +1 -0
- package/dist/aup-spec.cjs +1467 -0
- package/dist/aup-spec.mjs +1466 -0
- package/dist/aup-spec.mjs.map +1 -0
- package/dist/aup-types.cjs +165 -0
- package/dist/aup-types.d.cts +157 -0
- package/dist/aup-types.d.cts.map +1 -0
- package/dist/aup-types.d.mts +157 -0
- package/dist/aup-types.d.mts.map +1 -0
- package/dist/aup-types.mjs +157 -0
- package/dist/aup-types.mjs.map +1 -0
- package/dist/backend.cjs +14 -0
- package/dist/backend.d.cts +104 -0
- package/dist/backend.d.cts.map +1 -0
- package/dist/backend.d.mts +104 -0
- package/dist/backend.d.mts.map +1 -0
- package/dist/backend.mjs +13 -0
- package/dist/backend.mjs.map +1 -0
- package/dist/degradation.cjs +85 -0
- package/dist/degradation.d.cts +17 -0
- package/dist/degradation.d.cts.map +1 -0
- package/dist/degradation.d.mts +17 -0
- package/dist/degradation.d.mts.map +1 -0
- package/dist/degradation.mjs +84 -0
- package/dist/degradation.mjs.map +1 -0
- package/dist/index.cjs +36 -0
- package/dist/index.d.cts +12 -0
- package/dist/index.d.mts +12 -0
- package/dist/index.mjs +13 -0
- package/dist/runtime.cjs +117 -0
- package/dist/runtime.d.cts +59 -0
- package/dist/runtime.d.cts.map +1 -0
- package/dist/runtime.d.mts +59 -0
- package/dist/runtime.d.mts.map +1 -0
- package/dist/runtime.mjs +118 -0
- package/dist/runtime.mjs.map +1 -0
- package/dist/session.cjs +159 -0
- package/dist/session.d.cts +80 -0
- package/dist/session.d.cts.map +1 -0
- package/dist/session.d.mts +80 -0
- package/dist/session.d.mts.map +1 -0
- package/dist/session.mjs +159 -0
- package/dist/session.mjs.map +1 -0
- package/dist/snapshot.cjs +162 -0
- package/dist/snapshot.mjs +163 -0
- package/dist/snapshot.mjs.map +1 -0
- package/dist/term-page.cjs +264 -0
- package/dist/term-page.mjs +264 -0
- package/dist/term-page.mjs.map +1 -0
- package/dist/term.cjs +295 -0
- package/dist/term.d.cts +84 -0
- package/dist/term.d.cts.map +1 -0
- package/dist/term.d.mts +84 -0
- package/dist/term.d.mts.map +1 -0
- package/dist/term.mjs +296 -0
- package/dist/term.mjs.map +1 -0
- package/dist/tty.cjs +136 -0
- package/dist/tty.d.cts +53 -0
- package/dist/tty.d.cts.map +1 -0
- package/dist/tty.d.mts +53 -0
- package/dist/tty.d.mts.map +1 -0
- package/dist/tty.mjs +135 -0
- package/dist/tty.mjs.map +1 -0
- package/dist/ui-provider.cjs +4615 -0
- package/dist/ui-provider.d.cts +307 -0
- package/dist/ui-provider.d.cts.map +1 -0
- package/dist/ui-provider.d.mts +307 -0
- package/dist/ui-provider.d.mts.map +1 -0
- package/dist/ui-provider.mjs +4616 -0
- package/dist/ui-provider.mjs.map +1 -0
- package/dist/web-page/core.cjs +1388 -0
- package/dist/web-page/core.mjs +1387 -0
- package/dist/web-page/core.mjs.map +1 -0
- package/dist/web-page/css.cjs +1699 -0
- package/dist/web-page/css.mjs +1698 -0
- package/dist/web-page/css.mjs.map +1 -0
- package/dist/web-page/icons.cjs +248 -0
- package/dist/web-page/icons.mjs +248 -0
- package/dist/web-page/icons.mjs.map +1 -0
- package/dist/web-page/overlay-themes.cjs +514 -0
- package/dist/web-page/overlay-themes.mjs +513 -0
- package/dist/web-page/overlay-themes.mjs.map +1 -0
- package/dist/web-page/renderers/action.cjs +72 -0
- package/dist/web-page/renderers/action.mjs +72 -0
- package/dist/web-page/renderers/action.mjs.map +1 -0
- package/dist/web-page/renderers/broadcast.cjs +160 -0
- package/dist/web-page/renderers/broadcast.mjs +160 -0
- package/dist/web-page/renderers/broadcast.mjs.map +1 -0
- package/dist/web-page/renderers/calendar.cjs +137 -0
- package/dist/web-page/renderers/calendar.mjs +137 -0
- package/dist/web-page/renderers/calendar.mjs.map +1 -0
- package/dist/web-page/renderers/canvas.cjs +173 -0
- package/dist/web-page/renderers/canvas.mjs +173 -0
- package/dist/web-page/renderers/canvas.mjs.map +1 -0
- package/dist/web-page/renderers/cdn-loader.cjs +25 -0
- package/dist/web-page/renderers/cdn-loader.mjs +25 -0
- package/dist/web-page/renderers/cdn-loader.mjs.map +1 -0
- package/dist/web-page/renderers/chart.cjs +101 -0
- package/dist/web-page/renderers/chart.mjs +101 -0
- package/dist/web-page/renderers/chart.mjs.map +1 -0
- package/dist/web-page/renderers/deck.cjs +390 -0
- package/dist/web-page/renderers/deck.mjs +390 -0
- package/dist/web-page/renderers/deck.mjs.map +1 -0
- package/dist/web-page/renderers/device.cjs +1015 -0
- package/dist/web-page/renderers/device.mjs +1015 -0
- package/dist/web-page/renderers/device.mjs.map +1 -0
- package/dist/web-page/renderers/editor.cjs +127 -0
- package/dist/web-page/renderers/editor.mjs +127 -0
- package/dist/web-page/renderers/editor.mjs.map +1 -0
- package/dist/web-page/renderers/finance-chart.cjs +178 -0
- package/dist/web-page/renderers/finance-chart.mjs +178 -0
- package/dist/web-page/renderers/finance-chart.mjs.map +1 -0
- package/dist/web-page/renderers/frame.cjs +274 -0
- package/dist/web-page/renderers/frame.mjs +274 -0
- package/dist/web-page/renderers/frame.mjs.map +1 -0
- package/dist/web-page/renderers/globe.cjs +119 -0
- package/dist/web-page/renderers/globe.mjs +119 -0
- package/dist/web-page/renderers/globe.mjs.map +1 -0
- package/dist/web-page/renderers/input.cjs +137 -0
- package/dist/web-page/renderers/input.mjs +137 -0
- package/dist/web-page/renderers/input.mjs.map +1 -0
- package/dist/web-page/renderers/list.cjs +1243 -0
- package/dist/web-page/renderers/list.mjs +1243 -0
- package/dist/web-page/renderers/list.mjs.map +1 -0
- package/dist/web-page/renderers/map.cjs +126 -0
- package/dist/web-page/renderers/map.mjs +126 -0
- package/dist/web-page/renderers/map.mjs.map +1 -0
- package/dist/web-page/renderers/media.cjs +106 -0
- package/dist/web-page/renderers/media.mjs +106 -0
- package/dist/web-page/renderers/media.mjs.map +1 -0
- package/dist/web-page/renderers/moonphase.cjs +105 -0
- package/dist/web-page/renderers/moonphase.mjs +105 -0
- package/dist/web-page/renderers/moonphase.mjs.map +1 -0
- package/dist/web-page/renderers/natal-chart.cjs +222 -0
- package/dist/web-page/renderers/natal-chart.mjs +222 -0
- package/dist/web-page/renderers/natal-chart.mjs.map +1 -0
- package/dist/web-page/renderers/overlay.cjs +531 -0
- package/dist/web-page/renderers/overlay.mjs +531 -0
- package/dist/web-page/renderers/overlay.mjs.map +1 -0
- package/dist/web-page/renderers/table.cjs +74 -0
- package/dist/web-page/renderers/table.mjs +74 -0
- package/dist/web-page/renderers/table.mjs.map +1 -0
- package/dist/web-page/renderers/terminal.cjs +30 -0
- package/dist/web-page/renderers/terminal.mjs +30 -0
- package/dist/web-page/renderers/terminal.mjs.map +1 -0
- package/dist/web-page/renderers/text.cjs +109 -0
- package/dist/web-page/renderers/text.mjs +109 -0
- package/dist/web-page/renderers/text.mjs.map +1 -0
- package/dist/web-page/renderers/ticker.cjs +133 -0
- package/dist/web-page/renderers/ticker.mjs +133 -0
- package/dist/web-page/renderers/ticker.mjs.map +1 -0
- package/dist/web-page/renderers/time.cjs +69 -0
- package/dist/web-page/renderers/time.mjs +69 -0
- package/dist/web-page/renderers/time.mjs.map +1 -0
- package/dist/web-page/renderers/unknown.cjs +20 -0
- package/dist/web-page/renderers/unknown.mjs +20 -0
- package/dist/web-page/renderers/unknown.mjs.map +1 -0
- package/dist/web-page/renderers/view.cjs +161 -0
- package/dist/web-page/renderers/view.mjs +161 -0
- package/dist/web-page/renderers/view.mjs.map +1 -0
- package/dist/web-page/renderers/wm.cjs +669 -0
- package/dist/web-page/renderers/wm.mjs +669 -0
- package/dist/web-page/renderers/wm.mjs.map +1 -0
- package/dist/web-page/skeleton.cjs +103 -0
- package/dist/web-page/skeleton.mjs +103 -0
- package/dist/web-page/skeleton.mjs.map +1 -0
- package/dist/web-page.cjs +114 -0
- package/dist/web-page.d.cts +19 -0
- package/dist/web-page.d.cts.map +1 -0
- package/dist/web-page.d.mts +19 -0
- package/dist/web-page.d.mts.map +1 -0
- package/dist/web-page.mjs +115 -0
- package/dist/web-page.mjs.map +1 -0
- package/dist/web.cjs +827 -0
- package/dist/web.d.cts +144 -0
- package/dist/web.d.cts.map +1 -0
- package/dist/web.d.mts +144 -0
- package/dist/web.d.mts.map +1 -0
- package/dist/web.mjs +828 -0
- package/dist/web.mjs.map +1 -0
- package/dist/wm-state.cjs +172 -0
- package/dist/wm-state.mjs +171 -0
- package/dist/wm-state.mjs.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/web-page/renderers/time.ts
|
|
3
|
+
const TIME_JS = `
|
|
4
|
+
// ── Time Primitive ──
|
|
5
|
+
var _timeIntervals = [];
|
|
6
|
+
function renderAupTime(node) {
|
|
7
|
+
var el = document.createElement("div");
|
|
8
|
+
el.className = "aup-time";
|
|
9
|
+
var p = node.props || {};
|
|
10
|
+
var mode = p.mode || "display";
|
|
11
|
+
|
|
12
|
+
if (mode === "display") {
|
|
13
|
+
el.classList.add("aup-time-display");
|
|
14
|
+
var val = p.value || new Date().toISOString();
|
|
15
|
+
try {
|
|
16
|
+
var d = new Date(val);
|
|
17
|
+
var fmt = p.format || {};
|
|
18
|
+
el.textContent = new Intl.DateTimeFormat(p.locale || undefined, Object.keys(fmt).length ? fmt : { dateStyle: "medium", timeStyle: "short" }).format(d);
|
|
19
|
+
} catch(e) { el.textContent = String(val); }
|
|
20
|
+
} else if (mode === "clock") {
|
|
21
|
+
el.classList.add("aup-time-clock");
|
|
22
|
+
function updateClock() {
|
|
23
|
+
var now = new Date();
|
|
24
|
+
el.textContent = now.toLocaleTimeString(p.locale || undefined);
|
|
25
|
+
}
|
|
26
|
+
updateClock();
|
|
27
|
+
var intv = setInterval(updateClock, 1000);
|
|
28
|
+
_timeIntervals.push(intv);
|
|
29
|
+
} else if (mode === "timer") {
|
|
30
|
+
el.classList.add("aup-time-timer");
|
|
31
|
+
var startTime = Date.now();
|
|
32
|
+
function updateTimer() {
|
|
33
|
+
var elapsed = Math.floor((Date.now() - startTime) / 1000);
|
|
34
|
+
var h = Math.floor(elapsed / 3600);
|
|
35
|
+
var m = Math.floor((elapsed % 3600) / 60);
|
|
36
|
+
var s = elapsed % 60;
|
|
37
|
+
el.textContent = (h ? h + ":" : "") + String(m).padStart(2, "0") + ":" + String(s).padStart(2, "0");
|
|
38
|
+
}
|
|
39
|
+
updateTimer();
|
|
40
|
+
var tIntv = setInterval(updateTimer, 1000);
|
|
41
|
+
_timeIntervals.push(tIntv);
|
|
42
|
+
} else if (mode === "countdown") {
|
|
43
|
+
el.classList.add("aup-time-countdown");
|
|
44
|
+
var target = p.target ? new Date(p.target).getTime() : Date.now();
|
|
45
|
+
function updateCountdown() {
|
|
46
|
+
var remaining = Math.max(0, Math.floor((target - Date.now()) / 1000));
|
|
47
|
+
var h = Math.floor(remaining / 3600);
|
|
48
|
+
var m = Math.floor((remaining % 3600) / 60);
|
|
49
|
+
var s = remaining % 60;
|
|
50
|
+
el.textContent = (h ? h + ":" : "") + String(m).padStart(2, "0") + ":" + String(s).padStart(2, "0");
|
|
51
|
+
if (remaining <= 0) el.textContent = p.expiredLabel || "00:00";
|
|
52
|
+
}
|
|
53
|
+
updateCountdown();
|
|
54
|
+
var cdIntv = setInterval(updateCountdown, 1000);
|
|
55
|
+
_timeIntervals.push(cdIntv);
|
|
56
|
+
} else if (mode === "picker") {
|
|
57
|
+
el.classList.add("aup-time-picker");
|
|
58
|
+
var inp = document.createElement("input");
|
|
59
|
+
inp.type = "datetime-local";
|
|
60
|
+
if (p.value) inp.value = p.value;
|
|
61
|
+
el.appendChild(inp);
|
|
62
|
+
}
|
|
63
|
+
return el;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
`;
|
|
67
|
+
|
|
68
|
+
//#endregion
|
|
69
|
+
exports.TIME_JS = TIME_JS;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
//#region src/web-page/renderers/time.ts
|
|
2
|
+
const TIME_JS = `
|
|
3
|
+
// ── Time Primitive ──
|
|
4
|
+
var _timeIntervals = [];
|
|
5
|
+
function renderAupTime(node) {
|
|
6
|
+
var el = document.createElement("div");
|
|
7
|
+
el.className = "aup-time";
|
|
8
|
+
var p = node.props || {};
|
|
9
|
+
var mode = p.mode || "display";
|
|
10
|
+
|
|
11
|
+
if (mode === "display") {
|
|
12
|
+
el.classList.add("aup-time-display");
|
|
13
|
+
var val = p.value || new Date().toISOString();
|
|
14
|
+
try {
|
|
15
|
+
var d = new Date(val);
|
|
16
|
+
var fmt = p.format || {};
|
|
17
|
+
el.textContent = new Intl.DateTimeFormat(p.locale || undefined, Object.keys(fmt).length ? fmt : { dateStyle: "medium", timeStyle: "short" }).format(d);
|
|
18
|
+
} catch(e) { el.textContent = String(val); }
|
|
19
|
+
} else if (mode === "clock") {
|
|
20
|
+
el.classList.add("aup-time-clock");
|
|
21
|
+
function updateClock() {
|
|
22
|
+
var now = new Date();
|
|
23
|
+
el.textContent = now.toLocaleTimeString(p.locale || undefined);
|
|
24
|
+
}
|
|
25
|
+
updateClock();
|
|
26
|
+
var intv = setInterval(updateClock, 1000);
|
|
27
|
+
_timeIntervals.push(intv);
|
|
28
|
+
} else if (mode === "timer") {
|
|
29
|
+
el.classList.add("aup-time-timer");
|
|
30
|
+
var startTime = Date.now();
|
|
31
|
+
function updateTimer() {
|
|
32
|
+
var elapsed = Math.floor((Date.now() - startTime) / 1000);
|
|
33
|
+
var h = Math.floor(elapsed / 3600);
|
|
34
|
+
var m = Math.floor((elapsed % 3600) / 60);
|
|
35
|
+
var s = elapsed % 60;
|
|
36
|
+
el.textContent = (h ? h + ":" : "") + String(m).padStart(2, "0") + ":" + String(s).padStart(2, "0");
|
|
37
|
+
}
|
|
38
|
+
updateTimer();
|
|
39
|
+
var tIntv = setInterval(updateTimer, 1000);
|
|
40
|
+
_timeIntervals.push(tIntv);
|
|
41
|
+
} else if (mode === "countdown") {
|
|
42
|
+
el.classList.add("aup-time-countdown");
|
|
43
|
+
var target = p.target ? new Date(p.target).getTime() : Date.now();
|
|
44
|
+
function updateCountdown() {
|
|
45
|
+
var remaining = Math.max(0, Math.floor((target - Date.now()) / 1000));
|
|
46
|
+
var h = Math.floor(remaining / 3600);
|
|
47
|
+
var m = Math.floor((remaining % 3600) / 60);
|
|
48
|
+
var s = remaining % 60;
|
|
49
|
+
el.textContent = (h ? h + ":" : "") + String(m).padStart(2, "0") + ":" + String(s).padStart(2, "0");
|
|
50
|
+
if (remaining <= 0) el.textContent = p.expiredLabel || "00:00";
|
|
51
|
+
}
|
|
52
|
+
updateCountdown();
|
|
53
|
+
var cdIntv = setInterval(updateCountdown, 1000);
|
|
54
|
+
_timeIntervals.push(cdIntv);
|
|
55
|
+
} else if (mode === "picker") {
|
|
56
|
+
el.classList.add("aup-time-picker");
|
|
57
|
+
var inp = document.createElement("input");
|
|
58
|
+
inp.type = "datetime-local";
|
|
59
|
+
if (p.value) inp.value = p.value;
|
|
60
|
+
el.appendChild(inp);
|
|
61
|
+
}
|
|
62
|
+
return el;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
`;
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
export { TIME_JS };
|
|
69
|
+
//# sourceMappingURL=time.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.mjs","names":[],"sources":["../../../src/web-page/renderers/time.ts"],"sourcesContent":["export const TIME_JS = `\n // ── Time Primitive ──\n var _timeIntervals = [];\n function renderAupTime(node) {\n var el = document.createElement(\"div\");\n el.className = \"aup-time\";\n var p = node.props || {};\n var mode = p.mode || \"display\";\n\n if (mode === \"display\") {\n el.classList.add(\"aup-time-display\");\n var val = p.value || new Date().toISOString();\n try {\n var d = new Date(val);\n var fmt = p.format || {};\n el.textContent = new Intl.DateTimeFormat(p.locale || undefined, Object.keys(fmt).length ? fmt : { dateStyle: \"medium\", timeStyle: \"short\" }).format(d);\n } catch(e) { el.textContent = String(val); }\n } else if (mode === \"clock\") {\n el.classList.add(\"aup-time-clock\");\n function updateClock() {\n var now = new Date();\n el.textContent = now.toLocaleTimeString(p.locale || undefined);\n }\n updateClock();\n var intv = setInterval(updateClock, 1000);\n _timeIntervals.push(intv);\n } else if (mode === \"timer\") {\n el.classList.add(\"aup-time-timer\");\n var startTime = Date.now();\n function updateTimer() {\n var elapsed = Math.floor((Date.now() - startTime) / 1000);\n var h = Math.floor(elapsed / 3600);\n var m = Math.floor((elapsed % 3600) / 60);\n var s = elapsed % 60;\n el.textContent = (h ? h + \":\" : \"\") + String(m).padStart(2, \"0\") + \":\" + String(s).padStart(2, \"0\");\n }\n updateTimer();\n var tIntv = setInterval(updateTimer, 1000);\n _timeIntervals.push(tIntv);\n } else if (mode === \"countdown\") {\n el.classList.add(\"aup-time-countdown\");\n var target = p.target ? new Date(p.target).getTime() : Date.now();\n function updateCountdown() {\n var remaining = Math.max(0, Math.floor((target - Date.now()) / 1000));\n var h = Math.floor(remaining / 3600);\n var m = Math.floor((remaining % 3600) / 60);\n var s = remaining % 60;\n el.textContent = (h ? h + \":\" : \"\") + String(m).padStart(2, \"0\") + \":\" + String(s).padStart(2, \"0\");\n if (remaining <= 0) el.textContent = p.expiredLabel || \"00:00\";\n }\n updateCountdown();\n var cdIntv = setInterval(updateCountdown, 1000);\n _timeIntervals.push(cdIntv);\n } else if (mode === \"picker\") {\n el.classList.add(\"aup-time-picker\");\n var inp = document.createElement(\"input\");\n inp.type = \"datetime-local\";\n if (p.value) inp.value = p.value;\n el.appendChild(inp);\n }\n return el;\n }\n\n`;\n"],"mappings":";AAAA,MAAa,UAAU"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/web-page/renderers/unknown.ts
|
|
3
|
+
const UNKNOWN_JS = `
|
|
4
|
+
function renderAupUnknown(node) {
|
|
5
|
+
var el = document.createElement("div");
|
|
6
|
+
el.className = "aup-unknown";
|
|
7
|
+
el.textContent = "Unknown: " + _escapeHtml(String(node.type));
|
|
8
|
+
// Still render children (graceful degradation)
|
|
9
|
+
if (node.children) {
|
|
10
|
+
node.children.forEach(function(child) {
|
|
11
|
+
var childEl = renderAupNode(child);
|
|
12
|
+
if (childEl) el.appendChild(childEl);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return el;
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
exports.UNKNOWN_JS = UNKNOWN_JS;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/web-page/renderers/unknown.ts
|
|
2
|
+
const UNKNOWN_JS = `
|
|
3
|
+
function renderAupUnknown(node) {
|
|
4
|
+
var el = document.createElement("div");
|
|
5
|
+
el.className = "aup-unknown";
|
|
6
|
+
el.textContent = "Unknown: " + _escapeHtml(String(node.type));
|
|
7
|
+
// Still render children (graceful degradation)
|
|
8
|
+
if (node.children) {
|
|
9
|
+
node.children.forEach(function(child) {
|
|
10
|
+
var childEl = renderAupNode(child);
|
|
11
|
+
if (childEl) el.appendChild(childEl);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
return el;
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { UNKNOWN_JS };
|
|
20
|
+
//# sourceMappingURL=unknown.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unknown.mjs","names":[],"sources":["../../../src/web-page/renderers/unknown.ts"],"sourcesContent":["export const UNKNOWN_JS = `\n function renderAupUnknown(node) {\n var el = document.createElement(\"div\");\n el.className = \"aup-unknown\";\n el.textContent = \"Unknown: \" + _escapeHtml(String(node.type));\n // Still render children (graceful degradation)\n if (node.children) {\n node.children.forEach(function(child) {\n var childEl = renderAupNode(child);\n if (childEl) el.appendChild(childEl);\n });\n }\n return el;\n }\n`;\n"],"mappings":";AAAA,MAAa,aAAa"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/web-page/renderers/view.ts
|
|
3
|
+
const VIEW_JS = `
|
|
4
|
+
function renderAupView(node) {
|
|
5
|
+
var el = document.createElement("div");
|
|
6
|
+
el.className = "aup-view";
|
|
7
|
+
var p = node.props || {};
|
|
8
|
+
// Layout: string (backward compat) or object (Spatial Intent v0.3)
|
|
9
|
+
var layout = p.layout;
|
|
10
|
+
var _layoutAliases = { horizontal: "row", vertical: "column" };
|
|
11
|
+
var layoutDir = typeof layout === "string" ? (_layoutAliases[layout] || layout) : (layout && (_layoutAliases[layout.direction] || layout.direction) || "");
|
|
12
|
+
if (typeof layout === "string") {
|
|
13
|
+
el.setAttribute("data-layout", layoutDir);
|
|
14
|
+
} else if (layout && typeof layout === "object") {
|
|
15
|
+
if (layoutDir) el.setAttribute("data-layout", layoutDir);
|
|
16
|
+
if (layout.align) el.setAttribute("data-align", layout.align);
|
|
17
|
+
if (layout.crossAlign) el.setAttribute("data-cross-align", layout.crossAlign);
|
|
18
|
+
if (layout.gap) el.setAttribute("data-gap", layout.gap);
|
|
19
|
+
if (layout.wrap) el.setAttribute("data-wrap", String(layout.wrap));
|
|
20
|
+
if (layout.gridMinWidth) el.style.setProperty("--grid-min-width", layout.gridMinWidth);
|
|
21
|
+
if (layout.overflow) el.setAttribute("data-overflow", layout.overflow);
|
|
22
|
+
}
|
|
23
|
+
if (p.mode) el.setAttribute("data-mode", p.mode);
|
|
24
|
+
if (p.role) el.setAttribute("data-role", p.role);
|
|
25
|
+
if (p.variant) el.setAttribute("data-variant", p.variant);
|
|
26
|
+
// Spatial Intent: sizing
|
|
27
|
+
var size = p.size;
|
|
28
|
+
if (size && typeof size === "object") {
|
|
29
|
+
if (size.width) el.setAttribute("data-width", size.width);
|
|
30
|
+
if (size.maxWidth) el.setAttribute("data-max-width", size.maxWidth);
|
|
31
|
+
if (size.height) el.setAttribute("data-height", size.height);
|
|
32
|
+
if (typeof size.flex === "number") el.style.flex = String(size.flex);
|
|
33
|
+
}
|
|
34
|
+
// ── Animate ──
|
|
35
|
+
if (p.animate && p.animate !== "none") {
|
|
36
|
+
el.setAttribute("data-animate", p.animate);
|
|
37
|
+
if (p.animateDelay) el.style.animationDelay = p.animateDelay + "ms";
|
|
38
|
+
if (p.animateDuration) el.style.animationDuration = p.animateDuration + "ms";
|
|
39
|
+
}
|
|
40
|
+
// ── Background ──
|
|
41
|
+
if (p.background) {
|
|
42
|
+
var bg = p.background;
|
|
43
|
+
if (typeof bg === "string") {
|
|
44
|
+
// Heuristic: URL if starts with http//, / or data:
|
|
45
|
+
if (/^(https?:\\/\\/|data:|\\/)/.test(bg)) {
|
|
46
|
+
el.style.backgroundImage = "url(" + bg + ")";
|
|
47
|
+
el.style.backgroundSize = "cover";
|
|
48
|
+
el.style.backgroundPosition = "center";
|
|
49
|
+
} else {
|
|
50
|
+
el.style.background = bg;
|
|
51
|
+
}
|
|
52
|
+
} else if (bg && typeof bg === "object") {
|
|
53
|
+
el.style.position = el.style.position || "relative";
|
|
54
|
+
if (bg.type === "gradient") {
|
|
55
|
+
el.style.background = bg.value;
|
|
56
|
+
} else if (bg.type === "image") {
|
|
57
|
+
el.style.backgroundImage = "url(" + (bg.src || bg.value || "") + ")";
|
|
58
|
+
el.style.backgroundSize = "cover";
|
|
59
|
+
el.style.backgroundPosition = "center";
|
|
60
|
+
if (typeof bg.opacity === "number") el.style.setProperty("--bg-opacity", String(bg.opacity));
|
|
61
|
+
if (bg.blur) el.style.setProperty("--bg-blur", bg.blur + "px");
|
|
62
|
+
} else if (bg.type === "video") {
|
|
63
|
+
var bgVid = document.createElement("video");
|
|
64
|
+
bgVid.className = "aup-bg-video";
|
|
65
|
+
var bgSrc = String(bg.src || bg.value || "");
|
|
66
|
+
if (bgSrc && !bgSrc.toLowerCase().startsWith("javascript:")) bgVid.src = bgSrc;
|
|
67
|
+
bgVid.autoplay = true;
|
|
68
|
+
bgVid.loop = bg.loop !== false;
|
|
69
|
+
bgVid.muted = bg.muted !== false;
|
|
70
|
+
bgVid.playsInline = true;
|
|
71
|
+
el.appendChild(bgVid);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Stack layout: CSS grid with all children in same cell
|
|
76
|
+
if (layoutDir === "stack") {
|
|
77
|
+
el.style.display = "grid";
|
|
78
|
+
}
|
|
79
|
+
// Overlay theme: apply when overlay-grid has a theme prop
|
|
80
|
+
if (layoutDir === "overlay-grid" && p.theme) {
|
|
81
|
+
_applyOverlayTheme(el, p.theme);
|
|
82
|
+
}
|
|
83
|
+
// ── Tabs mode ──
|
|
84
|
+
if (p.mode === "tabs" && node.children && node.children.length > 0) {
|
|
85
|
+
var activeTab = (node.state && node.state.activeTab) || (node.children[0] && node.children[0].id) || "";
|
|
86
|
+
var tabBar = document.createElement("div");
|
|
87
|
+
tabBar.className = "aup-tab-bar";
|
|
88
|
+
var panels = [];
|
|
89
|
+
node.children.forEach(function(child, idx) {
|
|
90
|
+
var isActive = child.id === activeTab || (!activeTab && idx === 0);
|
|
91
|
+
var tab = document.createElement("button");
|
|
92
|
+
tab.className = "aup-tab";
|
|
93
|
+
tab.textContent = (child.props && child.props.label) || child.id || ("Tab " + idx);
|
|
94
|
+
tab.setAttribute("data-active", String(isActive));
|
|
95
|
+
tab.setAttribute("data-tab-id", child.id || "");
|
|
96
|
+
tab.onclick = function() {
|
|
97
|
+
tabBar.querySelectorAll(".aup-tab").forEach(function(t) { t.setAttribute("data-active", "false"); });
|
|
98
|
+
tab.setAttribute("data-active", "true");
|
|
99
|
+
panels.forEach(function(pnl) { pnl.setAttribute("data-active", String(pnl.getAttribute("data-tab-id") === (child.id || ""))); });
|
|
100
|
+
_fireAupEvent(node.id, "tab-change", { activeTab: child.id });
|
|
101
|
+
};
|
|
102
|
+
tabBar.appendChild(tab);
|
|
103
|
+
var panel = document.createElement("div");
|
|
104
|
+
panel.className = "aup-tab-panel";
|
|
105
|
+
panel.setAttribute("data-active", String(isActive));
|
|
106
|
+
panel.setAttribute("data-tab-id", child.id || "");
|
|
107
|
+
var childEl = renderAupNode(child);
|
|
108
|
+
if (childEl) panel.appendChild(childEl);
|
|
109
|
+
panels.push(panel);
|
|
110
|
+
});
|
|
111
|
+
el.appendChild(tabBar);
|
|
112
|
+
panels.forEach(function(pnl) { el.appendChild(pnl); });
|
|
113
|
+
return el;
|
|
114
|
+
}
|
|
115
|
+
// ── Collapsible panels (shell sidebar/inspector) ──
|
|
116
|
+
var isCollapsible = p.role === "sidebar" || p.role === "inspector" || p.collapsible;
|
|
117
|
+
if (node.state && node.state.collapsed != null) {
|
|
118
|
+
el.setAttribute("data-collapsed", String(!!node.state.collapsed));
|
|
119
|
+
}
|
|
120
|
+
if (isCollapsible) {
|
|
121
|
+
var toggleBtn = document.createElement("button");
|
|
122
|
+
toggleBtn.className = "aup-collapse-toggle";
|
|
123
|
+
toggleBtn.textContent = (node.state && node.state.collapsed) ? "\u25B6" : "\u25C0";
|
|
124
|
+
toggleBtn.onclick = function() {
|
|
125
|
+
var nowCollapsed = el.getAttribute("data-collapsed") === "true";
|
|
126
|
+
var next = !nowCollapsed;
|
|
127
|
+
el.setAttribute("data-collapsed", String(next));
|
|
128
|
+
toggleBtn.textContent = next ? "\u25B6" : "\u25C0";
|
|
129
|
+
_fireAupEvent(node.id, "toggle", { collapsed: next });
|
|
130
|
+
};
|
|
131
|
+
el.appendChild(toggleBtn);
|
|
132
|
+
var bodyWrap = document.createElement("div");
|
|
133
|
+
bodyWrap.className = "aup-view-body";
|
|
134
|
+
if (node.children) {
|
|
135
|
+
node.children.forEach(function(child) {
|
|
136
|
+
var childEl = renderAupNode(child);
|
|
137
|
+
if (childEl) {
|
|
138
|
+
if (layoutDir === "stack") childEl.style.gridArea = "1 / 1";
|
|
139
|
+
bodyWrap.appendChild(childEl);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
el.appendChild(bodyWrap);
|
|
144
|
+
} else if (node.children) {
|
|
145
|
+
var staggerMs = (layout && typeof layout === "object" && layout.stagger) ? (typeof layout.stagger === "number" ? layout.stagger : 60) : 0;
|
|
146
|
+
node.children.forEach(function(child, idx) {
|
|
147
|
+
var childEl = renderAupNode(child);
|
|
148
|
+
if (childEl) {
|
|
149
|
+
if (layoutDir === "stack") childEl.style.gridArea = "1 / 1";
|
|
150
|
+
if (staggerMs && idx > 0) childEl.style.animationDelay = (staggerMs * idx) + "ms";
|
|
151
|
+
el.appendChild(childEl);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return el;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
`;
|
|
159
|
+
|
|
160
|
+
//#endregion
|
|
161
|
+
exports.VIEW_JS = VIEW_JS;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
//#region src/web-page/renderers/view.ts
|
|
2
|
+
const VIEW_JS = `
|
|
3
|
+
function renderAupView(node) {
|
|
4
|
+
var el = document.createElement("div");
|
|
5
|
+
el.className = "aup-view";
|
|
6
|
+
var p = node.props || {};
|
|
7
|
+
// Layout: string (backward compat) or object (Spatial Intent v0.3)
|
|
8
|
+
var layout = p.layout;
|
|
9
|
+
var _layoutAliases = { horizontal: "row", vertical: "column" };
|
|
10
|
+
var layoutDir = typeof layout === "string" ? (_layoutAliases[layout] || layout) : (layout && (_layoutAliases[layout.direction] || layout.direction) || "");
|
|
11
|
+
if (typeof layout === "string") {
|
|
12
|
+
el.setAttribute("data-layout", layoutDir);
|
|
13
|
+
} else if (layout && typeof layout === "object") {
|
|
14
|
+
if (layoutDir) el.setAttribute("data-layout", layoutDir);
|
|
15
|
+
if (layout.align) el.setAttribute("data-align", layout.align);
|
|
16
|
+
if (layout.crossAlign) el.setAttribute("data-cross-align", layout.crossAlign);
|
|
17
|
+
if (layout.gap) el.setAttribute("data-gap", layout.gap);
|
|
18
|
+
if (layout.wrap) el.setAttribute("data-wrap", String(layout.wrap));
|
|
19
|
+
if (layout.gridMinWidth) el.style.setProperty("--grid-min-width", layout.gridMinWidth);
|
|
20
|
+
if (layout.overflow) el.setAttribute("data-overflow", layout.overflow);
|
|
21
|
+
}
|
|
22
|
+
if (p.mode) el.setAttribute("data-mode", p.mode);
|
|
23
|
+
if (p.role) el.setAttribute("data-role", p.role);
|
|
24
|
+
if (p.variant) el.setAttribute("data-variant", p.variant);
|
|
25
|
+
// Spatial Intent: sizing
|
|
26
|
+
var size = p.size;
|
|
27
|
+
if (size && typeof size === "object") {
|
|
28
|
+
if (size.width) el.setAttribute("data-width", size.width);
|
|
29
|
+
if (size.maxWidth) el.setAttribute("data-max-width", size.maxWidth);
|
|
30
|
+
if (size.height) el.setAttribute("data-height", size.height);
|
|
31
|
+
if (typeof size.flex === "number") el.style.flex = String(size.flex);
|
|
32
|
+
}
|
|
33
|
+
// ── Animate ──
|
|
34
|
+
if (p.animate && p.animate !== "none") {
|
|
35
|
+
el.setAttribute("data-animate", p.animate);
|
|
36
|
+
if (p.animateDelay) el.style.animationDelay = p.animateDelay + "ms";
|
|
37
|
+
if (p.animateDuration) el.style.animationDuration = p.animateDuration + "ms";
|
|
38
|
+
}
|
|
39
|
+
// ── Background ──
|
|
40
|
+
if (p.background) {
|
|
41
|
+
var bg = p.background;
|
|
42
|
+
if (typeof bg === "string") {
|
|
43
|
+
// Heuristic: URL if starts with http//, / or data:
|
|
44
|
+
if (/^(https?:\\/\\/|data:|\\/)/.test(bg)) {
|
|
45
|
+
el.style.backgroundImage = "url(" + bg + ")";
|
|
46
|
+
el.style.backgroundSize = "cover";
|
|
47
|
+
el.style.backgroundPosition = "center";
|
|
48
|
+
} else {
|
|
49
|
+
el.style.background = bg;
|
|
50
|
+
}
|
|
51
|
+
} else if (bg && typeof bg === "object") {
|
|
52
|
+
el.style.position = el.style.position || "relative";
|
|
53
|
+
if (bg.type === "gradient") {
|
|
54
|
+
el.style.background = bg.value;
|
|
55
|
+
} else if (bg.type === "image") {
|
|
56
|
+
el.style.backgroundImage = "url(" + (bg.src || bg.value || "") + ")";
|
|
57
|
+
el.style.backgroundSize = "cover";
|
|
58
|
+
el.style.backgroundPosition = "center";
|
|
59
|
+
if (typeof bg.opacity === "number") el.style.setProperty("--bg-opacity", String(bg.opacity));
|
|
60
|
+
if (bg.blur) el.style.setProperty("--bg-blur", bg.blur + "px");
|
|
61
|
+
} else if (bg.type === "video") {
|
|
62
|
+
var bgVid = document.createElement("video");
|
|
63
|
+
bgVid.className = "aup-bg-video";
|
|
64
|
+
var bgSrc = String(bg.src || bg.value || "");
|
|
65
|
+
if (bgSrc && !bgSrc.toLowerCase().startsWith("javascript:")) bgVid.src = bgSrc;
|
|
66
|
+
bgVid.autoplay = true;
|
|
67
|
+
bgVid.loop = bg.loop !== false;
|
|
68
|
+
bgVid.muted = bg.muted !== false;
|
|
69
|
+
bgVid.playsInline = true;
|
|
70
|
+
el.appendChild(bgVid);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Stack layout: CSS grid with all children in same cell
|
|
75
|
+
if (layoutDir === "stack") {
|
|
76
|
+
el.style.display = "grid";
|
|
77
|
+
}
|
|
78
|
+
// Overlay theme: apply when overlay-grid has a theme prop
|
|
79
|
+
if (layoutDir === "overlay-grid" && p.theme) {
|
|
80
|
+
_applyOverlayTheme(el, p.theme);
|
|
81
|
+
}
|
|
82
|
+
// ── Tabs mode ──
|
|
83
|
+
if (p.mode === "tabs" && node.children && node.children.length > 0) {
|
|
84
|
+
var activeTab = (node.state && node.state.activeTab) || (node.children[0] && node.children[0].id) || "";
|
|
85
|
+
var tabBar = document.createElement("div");
|
|
86
|
+
tabBar.className = "aup-tab-bar";
|
|
87
|
+
var panels = [];
|
|
88
|
+
node.children.forEach(function(child, idx) {
|
|
89
|
+
var isActive = child.id === activeTab || (!activeTab && idx === 0);
|
|
90
|
+
var tab = document.createElement("button");
|
|
91
|
+
tab.className = "aup-tab";
|
|
92
|
+
tab.textContent = (child.props && child.props.label) || child.id || ("Tab " + idx);
|
|
93
|
+
tab.setAttribute("data-active", String(isActive));
|
|
94
|
+
tab.setAttribute("data-tab-id", child.id || "");
|
|
95
|
+
tab.onclick = function() {
|
|
96
|
+
tabBar.querySelectorAll(".aup-tab").forEach(function(t) { t.setAttribute("data-active", "false"); });
|
|
97
|
+
tab.setAttribute("data-active", "true");
|
|
98
|
+
panels.forEach(function(pnl) { pnl.setAttribute("data-active", String(pnl.getAttribute("data-tab-id") === (child.id || ""))); });
|
|
99
|
+
_fireAupEvent(node.id, "tab-change", { activeTab: child.id });
|
|
100
|
+
};
|
|
101
|
+
tabBar.appendChild(tab);
|
|
102
|
+
var panel = document.createElement("div");
|
|
103
|
+
panel.className = "aup-tab-panel";
|
|
104
|
+
panel.setAttribute("data-active", String(isActive));
|
|
105
|
+
panel.setAttribute("data-tab-id", child.id || "");
|
|
106
|
+
var childEl = renderAupNode(child);
|
|
107
|
+
if (childEl) panel.appendChild(childEl);
|
|
108
|
+
panels.push(panel);
|
|
109
|
+
});
|
|
110
|
+
el.appendChild(tabBar);
|
|
111
|
+
panels.forEach(function(pnl) { el.appendChild(pnl); });
|
|
112
|
+
return el;
|
|
113
|
+
}
|
|
114
|
+
// ── Collapsible panels (shell sidebar/inspector) ──
|
|
115
|
+
var isCollapsible = p.role === "sidebar" || p.role === "inspector" || p.collapsible;
|
|
116
|
+
if (node.state && node.state.collapsed != null) {
|
|
117
|
+
el.setAttribute("data-collapsed", String(!!node.state.collapsed));
|
|
118
|
+
}
|
|
119
|
+
if (isCollapsible) {
|
|
120
|
+
var toggleBtn = document.createElement("button");
|
|
121
|
+
toggleBtn.className = "aup-collapse-toggle";
|
|
122
|
+
toggleBtn.textContent = (node.state && node.state.collapsed) ? "\u25B6" : "\u25C0";
|
|
123
|
+
toggleBtn.onclick = function() {
|
|
124
|
+
var nowCollapsed = el.getAttribute("data-collapsed") === "true";
|
|
125
|
+
var next = !nowCollapsed;
|
|
126
|
+
el.setAttribute("data-collapsed", String(next));
|
|
127
|
+
toggleBtn.textContent = next ? "\u25B6" : "\u25C0";
|
|
128
|
+
_fireAupEvent(node.id, "toggle", { collapsed: next });
|
|
129
|
+
};
|
|
130
|
+
el.appendChild(toggleBtn);
|
|
131
|
+
var bodyWrap = document.createElement("div");
|
|
132
|
+
bodyWrap.className = "aup-view-body";
|
|
133
|
+
if (node.children) {
|
|
134
|
+
node.children.forEach(function(child) {
|
|
135
|
+
var childEl = renderAupNode(child);
|
|
136
|
+
if (childEl) {
|
|
137
|
+
if (layoutDir === "stack") childEl.style.gridArea = "1 / 1";
|
|
138
|
+
bodyWrap.appendChild(childEl);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
el.appendChild(bodyWrap);
|
|
143
|
+
} else if (node.children) {
|
|
144
|
+
var staggerMs = (layout && typeof layout === "object" && layout.stagger) ? (typeof layout.stagger === "number" ? layout.stagger : 60) : 0;
|
|
145
|
+
node.children.forEach(function(child, idx) {
|
|
146
|
+
var childEl = renderAupNode(child);
|
|
147
|
+
if (childEl) {
|
|
148
|
+
if (layoutDir === "stack") childEl.style.gridArea = "1 / 1";
|
|
149
|
+
if (staggerMs && idx > 0) childEl.style.animationDelay = (staggerMs * idx) + "ms";
|
|
150
|
+
el.appendChild(childEl);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
return el;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
`;
|
|
158
|
+
|
|
159
|
+
//#endregion
|
|
160
|
+
export { VIEW_JS };
|
|
161
|
+
//# sourceMappingURL=view.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.mjs","names":[],"sources":["../../../src/web-page/renderers/view.ts"],"sourcesContent":["export const VIEW_JS = `\n function renderAupView(node) {\n var el = document.createElement(\"div\");\n el.className = \"aup-view\";\n var p = node.props || {};\n // Layout: string (backward compat) or object (Spatial Intent v0.3)\n var layout = p.layout;\n var _layoutAliases = { horizontal: \"row\", vertical: \"column\" };\n var layoutDir = typeof layout === \"string\" ? (_layoutAliases[layout] || layout) : (layout && (_layoutAliases[layout.direction] || layout.direction) || \"\");\n if (typeof layout === \"string\") {\n el.setAttribute(\"data-layout\", layoutDir);\n } else if (layout && typeof layout === \"object\") {\n if (layoutDir) el.setAttribute(\"data-layout\", layoutDir);\n if (layout.align) el.setAttribute(\"data-align\", layout.align);\n if (layout.crossAlign) el.setAttribute(\"data-cross-align\", layout.crossAlign);\n if (layout.gap) el.setAttribute(\"data-gap\", layout.gap);\n if (layout.wrap) el.setAttribute(\"data-wrap\", String(layout.wrap));\n if (layout.gridMinWidth) el.style.setProperty(\"--grid-min-width\", layout.gridMinWidth);\n if (layout.overflow) el.setAttribute(\"data-overflow\", layout.overflow);\n }\n if (p.mode) el.setAttribute(\"data-mode\", p.mode);\n if (p.role) el.setAttribute(\"data-role\", p.role);\n if (p.variant) el.setAttribute(\"data-variant\", p.variant);\n // Spatial Intent: sizing\n var size = p.size;\n if (size && typeof size === \"object\") {\n if (size.width) el.setAttribute(\"data-width\", size.width);\n if (size.maxWidth) el.setAttribute(\"data-max-width\", size.maxWidth);\n if (size.height) el.setAttribute(\"data-height\", size.height);\n if (typeof size.flex === \"number\") el.style.flex = String(size.flex);\n }\n // ── Animate ──\n if (p.animate && p.animate !== \"none\") {\n el.setAttribute(\"data-animate\", p.animate);\n if (p.animateDelay) el.style.animationDelay = p.animateDelay + \"ms\";\n if (p.animateDuration) el.style.animationDuration = p.animateDuration + \"ms\";\n }\n // ── Background ──\n if (p.background) {\n var bg = p.background;\n if (typeof bg === \"string\") {\n // Heuristic: URL if starts with http//, / or data:\n if (/^(https?:\\\\/\\\\/|data:|\\\\/)/.test(bg)) {\n el.style.backgroundImage = \"url(\" + bg + \")\";\n el.style.backgroundSize = \"cover\";\n el.style.backgroundPosition = \"center\";\n } else {\n el.style.background = bg;\n }\n } else if (bg && typeof bg === \"object\") {\n el.style.position = el.style.position || \"relative\";\n if (bg.type === \"gradient\") {\n el.style.background = bg.value;\n } else if (bg.type === \"image\") {\n el.style.backgroundImage = \"url(\" + (bg.src || bg.value || \"\") + \")\";\n el.style.backgroundSize = \"cover\";\n el.style.backgroundPosition = \"center\";\n if (typeof bg.opacity === \"number\") el.style.setProperty(\"--bg-opacity\", String(bg.opacity));\n if (bg.blur) el.style.setProperty(\"--bg-blur\", bg.blur + \"px\");\n } else if (bg.type === \"video\") {\n var bgVid = document.createElement(\"video\");\n bgVid.className = \"aup-bg-video\";\n var bgSrc = String(bg.src || bg.value || \"\");\n if (bgSrc && !bgSrc.toLowerCase().startsWith(\"javascript:\")) bgVid.src = bgSrc;\n bgVid.autoplay = true;\n bgVid.loop = bg.loop !== false;\n bgVid.muted = bg.muted !== false;\n bgVid.playsInline = true;\n el.appendChild(bgVid);\n }\n }\n }\n // Stack layout: CSS grid with all children in same cell\n if (layoutDir === \"stack\") {\n el.style.display = \"grid\";\n }\n // Overlay theme: apply when overlay-grid has a theme prop\n if (layoutDir === \"overlay-grid\" && p.theme) {\n _applyOverlayTheme(el, p.theme);\n }\n // ── Tabs mode ──\n if (p.mode === \"tabs\" && node.children && node.children.length > 0) {\n var activeTab = (node.state && node.state.activeTab) || (node.children[0] && node.children[0].id) || \"\";\n var tabBar = document.createElement(\"div\");\n tabBar.className = \"aup-tab-bar\";\n var panels = [];\n node.children.forEach(function(child, idx) {\n var isActive = child.id === activeTab || (!activeTab && idx === 0);\n var tab = document.createElement(\"button\");\n tab.className = \"aup-tab\";\n tab.textContent = (child.props && child.props.label) || child.id || (\"Tab \" + idx);\n tab.setAttribute(\"data-active\", String(isActive));\n tab.setAttribute(\"data-tab-id\", child.id || \"\");\n tab.onclick = function() {\n tabBar.querySelectorAll(\".aup-tab\").forEach(function(t) { t.setAttribute(\"data-active\", \"false\"); });\n tab.setAttribute(\"data-active\", \"true\");\n panels.forEach(function(pnl) { pnl.setAttribute(\"data-active\", String(pnl.getAttribute(\"data-tab-id\") === (child.id || \"\"))); });\n _fireAupEvent(node.id, \"tab-change\", { activeTab: child.id });\n };\n tabBar.appendChild(tab);\n var panel = document.createElement(\"div\");\n panel.className = \"aup-tab-panel\";\n panel.setAttribute(\"data-active\", String(isActive));\n panel.setAttribute(\"data-tab-id\", child.id || \"\");\n var childEl = renderAupNode(child);\n if (childEl) panel.appendChild(childEl);\n panels.push(panel);\n });\n el.appendChild(tabBar);\n panels.forEach(function(pnl) { el.appendChild(pnl); });\n return el;\n }\n // ── Collapsible panels (shell sidebar/inspector) ──\n var isCollapsible = p.role === \"sidebar\" || p.role === \"inspector\" || p.collapsible;\n if (node.state && node.state.collapsed != null) {\n el.setAttribute(\"data-collapsed\", String(!!node.state.collapsed));\n }\n if (isCollapsible) {\n var toggleBtn = document.createElement(\"button\");\n toggleBtn.className = \"aup-collapse-toggle\";\n toggleBtn.textContent = (node.state && node.state.collapsed) ? \"\\u25B6\" : \"\\u25C0\";\n toggleBtn.onclick = function() {\n var nowCollapsed = el.getAttribute(\"data-collapsed\") === \"true\";\n var next = !nowCollapsed;\n el.setAttribute(\"data-collapsed\", String(next));\n toggleBtn.textContent = next ? \"\\u25B6\" : \"\\u25C0\";\n _fireAupEvent(node.id, \"toggle\", { collapsed: next });\n };\n el.appendChild(toggleBtn);\n var bodyWrap = document.createElement(\"div\");\n bodyWrap.className = \"aup-view-body\";\n if (node.children) {\n node.children.forEach(function(child) {\n var childEl = renderAupNode(child);\n if (childEl) {\n if (layoutDir === \"stack\") childEl.style.gridArea = \"1 / 1\";\n bodyWrap.appendChild(childEl);\n }\n });\n }\n el.appendChild(bodyWrap);\n } else if (node.children) {\n var staggerMs = (layout && typeof layout === \"object\" && layout.stagger) ? (typeof layout.stagger === \"number\" ? layout.stagger : 60) : 0;\n node.children.forEach(function(child, idx) {\n var childEl = renderAupNode(child);\n if (childEl) {\n if (layoutDir === \"stack\") childEl.style.gridArea = \"1 / 1\";\n if (staggerMs && idx > 0) childEl.style.animationDelay = (staggerMs * idx) + \"ms\";\n el.appendChild(childEl);\n }\n });\n }\n return el;\n }\n\n`;\n"],"mappings":";AAAA,MAAa,UAAU"}
|