@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.
Files changed (196) hide show
  1. package/LICENSE.md +26 -0
  2. package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.cjs +11 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.mjs +10 -0
  4. package/dist/aup-protocol.cjs +235 -0
  5. package/dist/aup-protocol.d.cts +78 -0
  6. package/dist/aup-protocol.d.cts.map +1 -0
  7. package/dist/aup-protocol.d.mts +78 -0
  8. package/dist/aup-protocol.d.mts.map +1 -0
  9. package/dist/aup-protocol.mjs +235 -0
  10. package/dist/aup-protocol.mjs.map +1 -0
  11. package/dist/aup-registry.cjs +2489 -0
  12. package/dist/aup-registry.mjs +2487 -0
  13. package/dist/aup-registry.mjs.map +1 -0
  14. package/dist/aup-spec.cjs +1467 -0
  15. package/dist/aup-spec.mjs +1466 -0
  16. package/dist/aup-spec.mjs.map +1 -0
  17. package/dist/aup-types.cjs +165 -0
  18. package/dist/aup-types.d.cts +157 -0
  19. package/dist/aup-types.d.cts.map +1 -0
  20. package/dist/aup-types.d.mts +157 -0
  21. package/dist/aup-types.d.mts.map +1 -0
  22. package/dist/aup-types.mjs +157 -0
  23. package/dist/aup-types.mjs.map +1 -0
  24. package/dist/backend.cjs +14 -0
  25. package/dist/backend.d.cts +104 -0
  26. package/dist/backend.d.cts.map +1 -0
  27. package/dist/backend.d.mts +104 -0
  28. package/dist/backend.d.mts.map +1 -0
  29. package/dist/backend.mjs +13 -0
  30. package/dist/backend.mjs.map +1 -0
  31. package/dist/degradation.cjs +85 -0
  32. package/dist/degradation.d.cts +17 -0
  33. package/dist/degradation.d.cts.map +1 -0
  34. package/dist/degradation.d.mts +17 -0
  35. package/dist/degradation.d.mts.map +1 -0
  36. package/dist/degradation.mjs +84 -0
  37. package/dist/degradation.mjs.map +1 -0
  38. package/dist/index.cjs +36 -0
  39. package/dist/index.d.cts +12 -0
  40. package/dist/index.d.mts +12 -0
  41. package/dist/index.mjs +13 -0
  42. package/dist/runtime.cjs +117 -0
  43. package/dist/runtime.d.cts +59 -0
  44. package/dist/runtime.d.cts.map +1 -0
  45. package/dist/runtime.d.mts +59 -0
  46. package/dist/runtime.d.mts.map +1 -0
  47. package/dist/runtime.mjs +118 -0
  48. package/dist/runtime.mjs.map +1 -0
  49. package/dist/session.cjs +159 -0
  50. package/dist/session.d.cts +80 -0
  51. package/dist/session.d.cts.map +1 -0
  52. package/dist/session.d.mts +80 -0
  53. package/dist/session.d.mts.map +1 -0
  54. package/dist/session.mjs +159 -0
  55. package/dist/session.mjs.map +1 -0
  56. package/dist/snapshot.cjs +162 -0
  57. package/dist/snapshot.mjs +163 -0
  58. package/dist/snapshot.mjs.map +1 -0
  59. package/dist/term-page.cjs +264 -0
  60. package/dist/term-page.mjs +264 -0
  61. package/dist/term-page.mjs.map +1 -0
  62. package/dist/term.cjs +295 -0
  63. package/dist/term.d.cts +84 -0
  64. package/dist/term.d.cts.map +1 -0
  65. package/dist/term.d.mts +84 -0
  66. package/dist/term.d.mts.map +1 -0
  67. package/dist/term.mjs +296 -0
  68. package/dist/term.mjs.map +1 -0
  69. package/dist/tty.cjs +136 -0
  70. package/dist/tty.d.cts +53 -0
  71. package/dist/tty.d.cts.map +1 -0
  72. package/dist/tty.d.mts +53 -0
  73. package/dist/tty.d.mts.map +1 -0
  74. package/dist/tty.mjs +135 -0
  75. package/dist/tty.mjs.map +1 -0
  76. package/dist/ui-provider.cjs +4615 -0
  77. package/dist/ui-provider.d.cts +307 -0
  78. package/dist/ui-provider.d.cts.map +1 -0
  79. package/dist/ui-provider.d.mts +307 -0
  80. package/dist/ui-provider.d.mts.map +1 -0
  81. package/dist/ui-provider.mjs +4616 -0
  82. package/dist/ui-provider.mjs.map +1 -0
  83. package/dist/web-page/core.cjs +1388 -0
  84. package/dist/web-page/core.mjs +1387 -0
  85. package/dist/web-page/core.mjs.map +1 -0
  86. package/dist/web-page/css.cjs +1699 -0
  87. package/dist/web-page/css.mjs +1698 -0
  88. package/dist/web-page/css.mjs.map +1 -0
  89. package/dist/web-page/icons.cjs +248 -0
  90. package/dist/web-page/icons.mjs +248 -0
  91. package/dist/web-page/icons.mjs.map +1 -0
  92. package/dist/web-page/overlay-themes.cjs +514 -0
  93. package/dist/web-page/overlay-themes.mjs +513 -0
  94. package/dist/web-page/overlay-themes.mjs.map +1 -0
  95. package/dist/web-page/renderers/action.cjs +72 -0
  96. package/dist/web-page/renderers/action.mjs +72 -0
  97. package/dist/web-page/renderers/action.mjs.map +1 -0
  98. package/dist/web-page/renderers/broadcast.cjs +160 -0
  99. package/dist/web-page/renderers/broadcast.mjs +160 -0
  100. package/dist/web-page/renderers/broadcast.mjs.map +1 -0
  101. package/dist/web-page/renderers/calendar.cjs +137 -0
  102. package/dist/web-page/renderers/calendar.mjs +137 -0
  103. package/dist/web-page/renderers/calendar.mjs.map +1 -0
  104. package/dist/web-page/renderers/canvas.cjs +173 -0
  105. package/dist/web-page/renderers/canvas.mjs +173 -0
  106. package/dist/web-page/renderers/canvas.mjs.map +1 -0
  107. package/dist/web-page/renderers/cdn-loader.cjs +25 -0
  108. package/dist/web-page/renderers/cdn-loader.mjs +25 -0
  109. package/dist/web-page/renderers/cdn-loader.mjs.map +1 -0
  110. package/dist/web-page/renderers/chart.cjs +101 -0
  111. package/dist/web-page/renderers/chart.mjs +101 -0
  112. package/dist/web-page/renderers/chart.mjs.map +1 -0
  113. package/dist/web-page/renderers/deck.cjs +390 -0
  114. package/dist/web-page/renderers/deck.mjs +390 -0
  115. package/dist/web-page/renderers/deck.mjs.map +1 -0
  116. package/dist/web-page/renderers/device.cjs +1015 -0
  117. package/dist/web-page/renderers/device.mjs +1015 -0
  118. package/dist/web-page/renderers/device.mjs.map +1 -0
  119. package/dist/web-page/renderers/editor.cjs +127 -0
  120. package/dist/web-page/renderers/editor.mjs +127 -0
  121. package/dist/web-page/renderers/editor.mjs.map +1 -0
  122. package/dist/web-page/renderers/finance-chart.cjs +178 -0
  123. package/dist/web-page/renderers/finance-chart.mjs +178 -0
  124. package/dist/web-page/renderers/finance-chart.mjs.map +1 -0
  125. package/dist/web-page/renderers/frame.cjs +274 -0
  126. package/dist/web-page/renderers/frame.mjs +274 -0
  127. package/dist/web-page/renderers/frame.mjs.map +1 -0
  128. package/dist/web-page/renderers/globe.cjs +119 -0
  129. package/dist/web-page/renderers/globe.mjs +119 -0
  130. package/dist/web-page/renderers/globe.mjs.map +1 -0
  131. package/dist/web-page/renderers/input.cjs +137 -0
  132. package/dist/web-page/renderers/input.mjs +137 -0
  133. package/dist/web-page/renderers/input.mjs.map +1 -0
  134. package/dist/web-page/renderers/list.cjs +1243 -0
  135. package/dist/web-page/renderers/list.mjs +1243 -0
  136. package/dist/web-page/renderers/list.mjs.map +1 -0
  137. package/dist/web-page/renderers/map.cjs +126 -0
  138. package/dist/web-page/renderers/map.mjs +126 -0
  139. package/dist/web-page/renderers/map.mjs.map +1 -0
  140. package/dist/web-page/renderers/media.cjs +106 -0
  141. package/dist/web-page/renderers/media.mjs +106 -0
  142. package/dist/web-page/renderers/media.mjs.map +1 -0
  143. package/dist/web-page/renderers/moonphase.cjs +105 -0
  144. package/dist/web-page/renderers/moonphase.mjs +105 -0
  145. package/dist/web-page/renderers/moonphase.mjs.map +1 -0
  146. package/dist/web-page/renderers/natal-chart.cjs +222 -0
  147. package/dist/web-page/renderers/natal-chart.mjs +222 -0
  148. package/dist/web-page/renderers/natal-chart.mjs.map +1 -0
  149. package/dist/web-page/renderers/overlay.cjs +531 -0
  150. package/dist/web-page/renderers/overlay.mjs +531 -0
  151. package/dist/web-page/renderers/overlay.mjs.map +1 -0
  152. package/dist/web-page/renderers/table.cjs +74 -0
  153. package/dist/web-page/renderers/table.mjs +74 -0
  154. package/dist/web-page/renderers/table.mjs.map +1 -0
  155. package/dist/web-page/renderers/terminal.cjs +30 -0
  156. package/dist/web-page/renderers/terminal.mjs +30 -0
  157. package/dist/web-page/renderers/terminal.mjs.map +1 -0
  158. package/dist/web-page/renderers/text.cjs +109 -0
  159. package/dist/web-page/renderers/text.mjs +109 -0
  160. package/dist/web-page/renderers/text.mjs.map +1 -0
  161. package/dist/web-page/renderers/ticker.cjs +133 -0
  162. package/dist/web-page/renderers/ticker.mjs +133 -0
  163. package/dist/web-page/renderers/ticker.mjs.map +1 -0
  164. package/dist/web-page/renderers/time.cjs +69 -0
  165. package/dist/web-page/renderers/time.mjs +69 -0
  166. package/dist/web-page/renderers/time.mjs.map +1 -0
  167. package/dist/web-page/renderers/unknown.cjs +20 -0
  168. package/dist/web-page/renderers/unknown.mjs +20 -0
  169. package/dist/web-page/renderers/unknown.mjs.map +1 -0
  170. package/dist/web-page/renderers/view.cjs +161 -0
  171. package/dist/web-page/renderers/view.mjs +161 -0
  172. package/dist/web-page/renderers/view.mjs.map +1 -0
  173. package/dist/web-page/renderers/wm.cjs +669 -0
  174. package/dist/web-page/renderers/wm.mjs +669 -0
  175. package/dist/web-page/renderers/wm.mjs.map +1 -0
  176. package/dist/web-page/skeleton.cjs +103 -0
  177. package/dist/web-page/skeleton.mjs +103 -0
  178. package/dist/web-page/skeleton.mjs.map +1 -0
  179. package/dist/web-page.cjs +114 -0
  180. package/dist/web-page.d.cts +19 -0
  181. package/dist/web-page.d.cts.map +1 -0
  182. package/dist/web-page.d.mts +19 -0
  183. package/dist/web-page.d.mts.map +1 -0
  184. package/dist/web-page.mjs +115 -0
  185. package/dist/web-page.mjs.map +1 -0
  186. package/dist/web.cjs +827 -0
  187. package/dist/web.d.cts +144 -0
  188. package/dist/web.d.cts.map +1 -0
  189. package/dist/web.d.mts +144 -0
  190. package/dist/web.d.mts.map +1 -0
  191. package/dist/web.mjs +828 -0
  192. package/dist/web.mjs.map +1 -0
  193. package/dist/wm-state.cjs +172 -0
  194. package/dist/wm-state.mjs +171 -0
  195. package/dist/wm-state.mjs.map +1 -0
  196. 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"}