@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,74 @@
1
+ //#region src/web-page/renderers/table.ts
2
+ const TABLE_JS = `
3
+ function renderAupTable(node) {
4
+ var p = node.props || {};
5
+ var columns = Array.isArray(p.columns) ? p.columns : [];
6
+ var rows = Array.isArray(p.rows) ? p.rows : [];
7
+
8
+ var table = document.createElement("table");
9
+ table.className = "aup-table";
10
+
11
+ // Header
12
+ var thead = document.createElement("thead");
13
+ var headerRow = document.createElement("tr");
14
+ for (var c = 0; c < columns.length; c++) {
15
+ var th = document.createElement("th");
16
+ var col = columns[c];
17
+ th.textContent = _escapeHtml(String(col.label || col.key || ""));
18
+ if (col.align) th.setAttribute("data-align", col.align);
19
+ // Sort click event
20
+ (function(colKey) {
21
+ th.onclick = function() {
22
+ if (node.events && node.events.sort) {
23
+ _fireAupEvent(node.id, "sort", {});
24
+ }
25
+ };
26
+ })(col.key);
27
+ headerRow.appendChild(th);
28
+ }
29
+ thead.appendChild(headerRow);
30
+ table.appendChild(thead);
31
+
32
+ // Body
33
+ var tbody = document.createElement("tbody");
34
+ if (rows.length === 0) {
35
+ var emptyRow = document.createElement("tr");
36
+ var emptyCell = document.createElement("td");
37
+ emptyCell.className = "aup-table-empty";
38
+ emptyCell.colSpan = columns.length || 1;
39
+ emptyCell.textContent = "No data";
40
+ emptyRow.appendChild(emptyCell);
41
+ tbody.appendChild(emptyRow);
42
+ } else {
43
+ for (var r = 0; r < rows.length; r++) {
44
+ var tr = document.createElement("tr");
45
+ var row = rows[r];
46
+ for (var ci = 0; ci < columns.length; ci++) {
47
+ var td = document.createElement("td");
48
+ var colDef = columns[ci];
49
+ var cellVal = row[colDef.key];
50
+ td.textContent = cellVal != null ? _escapeHtml(String(cellVal)) : "";
51
+ if (colDef.align) td.setAttribute("data-align", colDef.align);
52
+ tr.appendChild(td);
53
+ }
54
+ // Row click for select event
55
+ (function(rowData) {
56
+ tr.onclick = function() {
57
+ if (node.events && node.events.select) {
58
+ _fireAupEvent(node.id, "select", {});
59
+ }
60
+ };
61
+ tr.style.cursor = node.events && node.events.select ? "pointer" : "default";
62
+ })(row);
63
+ tbody.appendChild(tr);
64
+ }
65
+ }
66
+ table.appendChild(tbody);
67
+ return table;
68
+ }
69
+
70
+ `;
71
+
72
+ //#endregion
73
+ export { TABLE_JS };
74
+ //# sourceMappingURL=table.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.mjs","names":[],"sources":["../../../src/web-page/renderers/table.ts"],"sourcesContent":["export const TABLE_JS = `\n function renderAupTable(node) {\n var p = node.props || {};\n var columns = Array.isArray(p.columns) ? p.columns : [];\n var rows = Array.isArray(p.rows) ? p.rows : [];\n\n var table = document.createElement(\"table\");\n table.className = \"aup-table\";\n\n // Header\n var thead = document.createElement(\"thead\");\n var headerRow = document.createElement(\"tr\");\n for (var c = 0; c < columns.length; c++) {\n var th = document.createElement(\"th\");\n var col = columns[c];\n th.textContent = _escapeHtml(String(col.label || col.key || \"\"));\n if (col.align) th.setAttribute(\"data-align\", col.align);\n // Sort click event\n (function(colKey) {\n th.onclick = function() {\n if (node.events && node.events.sort) {\n _fireAupEvent(node.id, \"sort\", {});\n }\n };\n })(col.key);\n headerRow.appendChild(th);\n }\n thead.appendChild(headerRow);\n table.appendChild(thead);\n\n // Body\n var tbody = document.createElement(\"tbody\");\n if (rows.length === 0) {\n var emptyRow = document.createElement(\"tr\");\n var emptyCell = document.createElement(\"td\");\n emptyCell.className = \"aup-table-empty\";\n emptyCell.colSpan = columns.length || 1;\n emptyCell.textContent = \"No data\";\n emptyRow.appendChild(emptyCell);\n tbody.appendChild(emptyRow);\n } else {\n for (var r = 0; r < rows.length; r++) {\n var tr = document.createElement(\"tr\");\n var row = rows[r];\n for (var ci = 0; ci < columns.length; ci++) {\n var td = document.createElement(\"td\");\n var colDef = columns[ci];\n var cellVal = row[colDef.key];\n td.textContent = cellVal != null ? _escapeHtml(String(cellVal)) : \"\";\n if (colDef.align) td.setAttribute(\"data-align\", colDef.align);\n tr.appendChild(td);\n }\n // Row click for select event\n (function(rowData) {\n tr.onclick = function() {\n if (node.events && node.events.select) {\n _fireAupEvent(node.id, \"select\", {});\n }\n };\n tr.style.cursor = node.events && node.events.select ? \"pointer\" : \"default\";\n })(row);\n tbody.appendChild(tr);\n }\n }\n table.appendChild(tbody);\n return table;\n }\n\n`;\n"],"mappings":";AAAA,MAAa,WAAW"}
@@ -0,0 +1,30 @@
1
+
2
+ //#region src/web-page/renderers/terminal.ts
3
+ const TERMINAL_JS = `
4
+ function renderAupTerminal(node) {
5
+ var el = document.createElement("div");
6
+ el.className = "aup-terminal";
7
+ var p = node.props || {};
8
+ if (p.rows) el.style.minHeight = (parseInt(p.rows) * 18) + "px";
9
+
10
+ var placeholder = document.createElement("div");
11
+ placeholder.className = "aup-terminal-placeholder";
12
+ placeholder.textContent = "Terminal (connect via WebSocket)";
13
+ el.appendChild(placeholder);
14
+
15
+ // Render children if provided
16
+ if (node.children) {
17
+ el.innerHTML = "";
18
+ node.children.forEach(function(child) {
19
+ var childEl = renderAupNode(child);
20
+ if (childEl) el.appendChild(childEl);
21
+ });
22
+ }
23
+
24
+ return el;
25
+ }
26
+
27
+ `;
28
+
29
+ //#endregion
30
+ exports.TERMINAL_JS = TERMINAL_JS;
@@ -0,0 +1,30 @@
1
+ //#region src/web-page/renderers/terminal.ts
2
+ const TERMINAL_JS = `
3
+ function renderAupTerminal(node) {
4
+ var el = document.createElement("div");
5
+ el.className = "aup-terminal";
6
+ var p = node.props || {};
7
+ if (p.rows) el.style.minHeight = (parseInt(p.rows) * 18) + "px";
8
+
9
+ var placeholder = document.createElement("div");
10
+ placeholder.className = "aup-terminal-placeholder";
11
+ placeholder.textContent = "Terminal (connect via WebSocket)";
12
+ el.appendChild(placeholder);
13
+
14
+ // Render children if provided
15
+ if (node.children) {
16
+ el.innerHTML = "";
17
+ node.children.forEach(function(child) {
18
+ var childEl = renderAupNode(child);
19
+ if (childEl) el.appendChild(childEl);
20
+ });
21
+ }
22
+
23
+ return el;
24
+ }
25
+
26
+ `;
27
+
28
+ //#endregion
29
+ export { TERMINAL_JS };
30
+ //# sourceMappingURL=terminal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.mjs","names":[],"sources":["../../../src/web-page/renderers/terminal.ts"],"sourcesContent":["export const TERMINAL_JS = `\n function renderAupTerminal(node) {\n var el = document.createElement(\"div\");\n el.className = \"aup-terminal\";\n var p = node.props || {};\n if (p.rows) el.style.minHeight = (parseInt(p.rows) * 18) + \"px\";\n\n var placeholder = document.createElement(\"div\");\n placeholder.className = \"aup-terminal-placeholder\";\n placeholder.textContent = \"Terminal (connect via WebSocket)\";\n el.appendChild(placeholder);\n\n // Render children if provided\n if (node.children) {\n el.innerHTML = \"\";\n node.children.forEach(function(child) {\n var childEl = renderAupNode(child);\n if (childEl) el.appendChild(childEl);\n });\n }\n\n return el;\n }\n\n`;\n"],"mappings":";AAAA,MAAa,cAAc"}
@@ -0,0 +1,109 @@
1
+
2
+ //#region src/web-page/renderers/text.ts
3
+ const TEXT_JS = `
4
+ function renderAupText(node) {
5
+ var p = node.props || {};
6
+ var level = p.level || node.state && node.state.level;
7
+ var tag = level ? "h" + Math.min(6, Math.max(1, parseInt(level))) : "div";
8
+ var el = document.createElement(tag);
9
+ el.className = "aup-text";
10
+ if (level) el.setAttribute("data-level", String(level));
11
+ if (p.scale) el.setAttribute("data-scale", p.scale);
12
+ if (p.format) el.setAttribute("data-format", p.format);
13
+ if (p.intent) el.setAttribute("data-intent", p.intent);
14
+ if (p.mode) el.setAttribute("data-mode", p.mode);
15
+ if (p.size) el.setAttribute("data-size", p.size);
16
+ // ── Animate ──
17
+ if (p.animate && p.animate !== "none") {
18
+ el.setAttribute("data-animate", p.animate);
19
+ if (p.animateDelay) el.style.animationDelay = p.animateDelay + "ms";
20
+ if (p.animateDuration) el.style.animationDuration = p.animateDuration + "ms";
21
+ }
22
+ // Render content as text (escape HTML)
23
+ var content = String(p.content || "");
24
+ if (p.format === "markdown" && typeof marked !== "undefined") {
25
+ el.innerHTML = renderMarkdown(content);
26
+ // Intercept internal link clicks — fire AUP event instead of navigating
27
+ el.addEventListener("click", function(e) {
28
+ var a = e.target.closest ? e.target.closest("a[href]") : null;
29
+ if (!a) return;
30
+ var href = a.getAttribute("href") || "";
31
+ // Skip external links (http://, https://, mailto:, tel:, #anchor)
32
+ if (/^(https?:|mailto:|tel:|#)/.test(href)) return;
33
+ e.preventDefault();
34
+ _fireAupEvent(node.id, "link-click", { href: href });
35
+ });
36
+ } else if (p.format === "code") {
37
+ var pre = document.createElement("pre");
38
+ var codeEl = document.createElement("code");
39
+ if (typeof hljs !== "undefined") {
40
+ if (p.language && hljs.getLanguage(p.language)) {
41
+ codeEl.innerHTML = hljs.highlight(content, { language: p.language }).value;
42
+ codeEl.className = "hljs language-" + p.language;
43
+ } else {
44
+ var autoResult = hljs.highlightAuto(content);
45
+ codeEl.innerHTML = autoResult.value;
46
+ codeEl.className = "hljs";
47
+ }
48
+ } else {
49
+ codeEl.textContent = content;
50
+ }
51
+ pre.appendChild(codeEl);
52
+ el.appendChild(pre);
53
+ } else {
54
+ el.textContent = content;
55
+ }
56
+ // ── Count-up animation ──
57
+ if (p.animate === "count-up") {
58
+ var raw = content.replace(/,/g, "");
59
+ var target = parseFloat(raw);
60
+ if (!isNaN(target)) {
61
+ var isInt = target === Math.floor(target) && raw.indexOf(".") < 0;
62
+ var hasCommas = content.indexOf(",") >= 0;
63
+ var prefix = content.match(/^([^0-9.-]*)/);
64
+ var suffix = content.match(/([^0-9.,]*)$/);
65
+ var pfx = prefix ? prefix[1] : "";
66
+ var sfx = suffix ? suffix[1] : "";
67
+ el.textContent = pfx + "0" + sfx;
68
+ el._countUpTarget = target;
69
+ el._countUpIsInt = isInt;
70
+ el._countUpHasCommas = hasCommas;
71
+ el._countUpPrefix = pfx;
72
+ el._countUpSuffix = sfx;
73
+ el._countUpDuration = p.animateDuration || 2000;
74
+ }
75
+ }
76
+ return el;
77
+ }
78
+
79
+ function _startCountUp(el) {
80
+ if (typeof el._countUpTarget !== "number") return;
81
+ var target = el._countUpTarget;
82
+ var isInt = el._countUpIsInt;
83
+ var hasCommas = el._countUpHasCommas;
84
+ var pfx = el._countUpPrefix;
85
+ var sfx = el._countUpSuffix;
86
+ var duration = el._countUpDuration;
87
+ var start = performance.now();
88
+
89
+ function formatNum(n) {
90
+ var s = isInt ? String(Math.round(n)) : n.toFixed(String(target).split(".")[1] ? String(target).split(".")[1].length : 2);
91
+ if (hasCommas) s = s.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ",");
92
+ return pfx + s + sfx;
93
+ }
94
+
95
+ function tick(now) {
96
+ var elapsed = now - start;
97
+ var progress = Math.min(elapsed / duration, 1);
98
+ // easeOutQuart for smooth deceleration
99
+ var eased = 1 - Math.pow(1 - progress, 4);
100
+ el.textContent = formatNum(target * eased);
101
+ if (progress < 1) requestAnimationFrame(tick);
102
+ }
103
+ requestAnimationFrame(tick);
104
+ }
105
+
106
+ `;
107
+
108
+ //#endregion
109
+ exports.TEXT_JS = TEXT_JS;
@@ -0,0 +1,109 @@
1
+ //#region src/web-page/renderers/text.ts
2
+ const TEXT_JS = `
3
+ function renderAupText(node) {
4
+ var p = node.props || {};
5
+ var level = p.level || node.state && node.state.level;
6
+ var tag = level ? "h" + Math.min(6, Math.max(1, parseInt(level))) : "div";
7
+ var el = document.createElement(tag);
8
+ el.className = "aup-text";
9
+ if (level) el.setAttribute("data-level", String(level));
10
+ if (p.scale) el.setAttribute("data-scale", p.scale);
11
+ if (p.format) el.setAttribute("data-format", p.format);
12
+ if (p.intent) el.setAttribute("data-intent", p.intent);
13
+ if (p.mode) el.setAttribute("data-mode", p.mode);
14
+ if (p.size) el.setAttribute("data-size", p.size);
15
+ // ── Animate ──
16
+ if (p.animate && p.animate !== "none") {
17
+ el.setAttribute("data-animate", p.animate);
18
+ if (p.animateDelay) el.style.animationDelay = p.animateDelay + "ms";
19
+ if (p.animateDuration) el.style.animationDuration = p.animateDuration + "ms";
20
+ }
21
+ // Render content as text (escape HTML)
22
+ var content = String(p.content || "");
23
+ if (p.format === "markdown" && typeof marked !== "undefined") {
24
+ el.innerHTML = renderMarkdown(content);
25
+ // Intercept internal link clicks — fire AUP event instead of navigating
26
+ el.addEventListener("click", function(e) {
27
+ var a = e.target.closest ? e.target.closest("a[href]") : null;
28
+ if (!a) return;
29
+ var href = a.getAttribute("href") || "";
30
+ // Skip external links (http://, https://, mailto:, tel:, #anchor)
31
+ if (/^(https?:|mailto:|tel:|#)/.test(href)) return;
32
+ e.preventDefault();
33
+ _fireAupEvent(node.id, "link-click", { href: href });
34
+ });
35
+ } else if (p.format === "code") {
36
+ var pre = document.createElement("pre");
37
+ var codeEl = document.createElement("code");
38
+ if (typeof hljs !== "undefined") {
39
+ if (p.language && hljs.getLanguage(p.language)) {
40
+ codeEl.innerHTML = hljs.highlight(content, { language: p.language }).value;
41
+ codeEl.className = "hljs language-" + p.language;
42
+ } else {
43
+ var autoResult = hljs.highlightAuto(content);
44
+ codeEl.innerHTML = autoResult.value;
45
+ codeEl.className = "hljs";
46
+ }
47
+ } else {
48
+ codeEl.textContent = content;
49
+ }
50
+ pre.appendChild(codeEl);
51
+ el.appendChild(pre);
52
+ } else {
53
+ el.textContent = content;
54
+ }
55
+ // ── Count-up animation ──
56
+ if (p.animate === "count-up") {
57
+ var raw = content.replace(/,/g, "");
58
+ var target = parseFloat(raw);
59
+ if (!isNaN(target)) {
60
+ var isInt = target === Math.floor(target) && raw.indexOf(".") < 0;
61
+ var hasCommas = content.indexOf(",") >= 0;
62
+ var prefix = content.match(/^([^0-9.-]*)/);
63
+ var suffix = content.match(/([^0-9.,]*)$/);
64
+ var pfx = prefix ? prefix[1] : "";
65
+ var sfx = suffix ? suffix[1] : "";
66
+ el.textContent = pfx + "0" + sfx;
67
+ el._countUpTarget = target;
68
+ el._countUpIsInt = isInt;
69
+ el._countUpHasCommas = hasCommas;
70
+ el._countUpPrefix = pfx;
71
+ el._countUpSuffix = sfx;
72
+ el._countUpDuration = p.animateDuration || 2000;
73
+ }
74
+ }
75
+ return el;
76
+ }
77
+
78
+ function _startCountUp(el) {
79
+ if (typeof el._countUpTarget !== "number") return;
80
+ var target = el._countUpTarget;
81
+ var isInt = el._countUpIsInt;
82
+ var hasCommas = el._countUpHasCommas;
83
+ var pfx = el._countUpPrefix;
84
+ var sfx = el._countUpSuffix;
85
+ var duration = el._countUpDuration;
86
+ var start = performance.now();
87
+
88
+ function formatNum(n) {
89
+ var s = isInt ? String(Math.round(n)) : n.toFixed(String(target).split(".")[1] ? String(target).split(".")[1].length : 2);
90
+ if (hasCommas) s = s.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ",");
91
+ return pfx + s + sfx;
92
+ }
93
+
94
+ function tick(now) {
95
+ var elapsed = now - start;
96
+ var progress = Math.min(elapsed / duration, 1);
97
+ // easeOutQuart for smooth deceleration
98
+ var eased = 1 - Math.pow(1 - progress, 4);
99
+ el.textContent = formatNum(target * eased);
100
+ if (progress < 1) requestAnimationFrame(tick);
101
+ }
102
+ requestAnimationFrame(tick);
103
+ }
104
+
105
+ `;
106
+
107
+ //#endregion
108
+ export { TEXT_JS };
109
+ //# sourceMappingURL=text.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.mjs","names":[],"sources":["../../../src/web-page/renderers/text.ts"],"sourcesContent":["export const TEXT_JS = `\n function renderAupText(node) {\n var p = node.props || {};\n var level = p.level || node.state && node.state.level;\n var tag = level ? \"h\" + Math.min(6, Math.max(1, parseInt(level))) : \"div\";\n var el = document.createElement(tag);\n el.className = \"aup-text\";\n if (level) el.setAttribute(\"data-level\", String(level));\n if (p.scale) el.setAttribute(\"data-scale\", p.scale);\n if (p.format) el.setAttribute(\"data-format\", p.format);\n if (p.intent) el.setAttribute(\"data-intent\", p.intent);\n if (p.mode) el.setAttribute(\"data-mode\", p.mode);\n if (p.size) el.setAttribute(\"data-size\", p.size);\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 // Render content as text (escape HTML)\n var content = String(p.content || \"\");\n if (p.format === \"markdown\" && typeof marked !== \"undefined\") {\n el.innerHTML = renderMarkdown(content);\n // Intercept internal link clicks — fire AUP event instead of navigating\n el.addEventListener(\"click\", function(e) {\n var a = e.target.closest ? e.target.closest(\"a[href]\") : null;\n if (!a) return;\n var href = a.getAttribute(\"href\") || \"\";\n // Skip external links (http://, https://, mailto:, tel:, #anchor)\n if (/^(https?:|mailto:|tel:|#)/.test(href)) return;\n e.preventDefault();\n _fireAupEvent(node.id, \"link-click\", { href: href });\n });\n } else if (p.format === \"code\") {\n var pre = document.createElement(\"pre\");\n var codeEl = document.createElement(\"code\");\n if (typeof hljs !== \"undefined\") {\n if (p.language && hljs.getLanguage(p.language)) {\n codeEl.innerHTML = hljs.highlight(content, { language: p.language }).value;\n codeEl.className = \"hljs language-\" + p.language;\n } else {\n var autoResult = hljs.highlightAuto(content);\n codeEl.innerHTML = autoResult.value;\n codeEl.className = \"hljs\";\n }\n } else {\n codeEl.textContent = content;\n }\n pre.appendChild(codeEl);\n el.appendChild(pre);\n } else {\n el.textContent = content;\n }\n // ── Count-up animation ──\n if (p.animate === \"count-up\") {\n var raw = content.replace(/,/g, \"\");\n var target = parseFloat(raw);\n if (!isNaN(target)) {\n var isInt = target === Math.floor(target) && raw.indexOf(\".\") < 0;\n var hasCommas = content.indexOf(\",\") >= 0;\n var prefix = content.match(/^([^0-9.-]*)/);\n var suffix = content.match(/([^0-9.,]*)$/);\n var pfx = prefix ? prefix[1] : \"\";\n var sfx = suffix ? suffix[1] : \"\";\n el.textContent = pfx + \"0\" + sfx;\n el._countUpTarget = target;\n el._countUpIsInt = isInt;\n el._countUpHasCommas = hasCommas;\n el._countUpPrefix = pfx;\n el._countUpSuffix = sfx;\n el._countUpDuration = p.animateDuration || 2000;\n }\n }\n return el;\n }\n\n function _startCountUp(el) {\n if (typeof el._countUpTarget !== \"number\") return;\n var target = el._countUpTarget;\n var isInt = el._countUpIsInt;\n var hasCommas = el._countUpHasCommas;\n var pfx = el._countUpPrefix;\n var sfx = el._countUpSuffix;\n var duration = el._countUpDuration;\n var start = performance.now();\n\n function formatNum(n) {\n var s = isInt ? String(Math.round(n)) : n.toFixed(String(target).split(\".\")[1] ? String(target).split(\".\")[1].length : 2);\n if (hasCommas) s = s.replace(/\\\\B(?=(\\\\d{3})+(?!\\\\d))/g, \",\");\n return pfx + s + sfx;\n }\n\n function tick(now) {\n var elapsed = now - start;\n var progress = Math.min(elapsed / duration, 1);\n // easeOutQuart for smooth deceleration\n var eased = 1 - Math.pow(1 - progress, 4);\n el.textContent = formatNum(target * eased);\n if (progress < 1) requestAnimationFrame(tick);\n }\n requestAnimationFrame(tick);\n }\n\n`;\n"],"mappings":";AAAA,MAAa,UAAU"}
@@ -0,0 +1,133 @@
1
+
2
+ //#region src/web-page/renderers/ticker.ts
3
+ const TICKER_JS = `
4
+ function renderAupTicker(node) {
5
+ var p = node.props || {};
6
+ var mode = p.mode === "flip" || p.mode === "static" ? p.mode : "scroll";
7
+ var intent = p.intent;
8
+ var separator = p.separator != null ? String(p.separator) : " \\u2022 ";
9
+ if (separator.length > 32) separator = separator.slice(0, 32);
10
+ var speed = p.speed;
11
+ var pauseOnHover = p.pauseOnHover !== false;
12
+ var direction = p.direction || "rtl";
13
+ var flipTransition = p.flipTransition || "fade";
14
+ var children = node.children || [];
15
+ if (children.length > 200) children = children.slice(0, 200);
16
+
17
+ var el = document.createElement("div");
18
+ el.className = "aup-ticker";
19
+ el.setAttribute("data-mode", mode);
20
+ if (intent) el.setAttribute("data-intent", intent);
21
+
22
+ var normalizedSpeed = _normalizeTickerSpeed(mode, speed);
23
+
24
+ if (mode === "static") {
25
+ return _buildStaticTicker(el, children, separator);
26
+ } else if (mode === "flip") {
27
+ return _buildFlipTicker(el, children, normalizedSpeed, flipTransition);
28
+ }
29
+ // Default: scroll
30
+ return _buildScrollTicker(el, children, separator, normalizedSpeed, pauseOnHover, direction);
31
+ }
32
+
33
+ function _normalizeTickerSpeed(mode, speed) {
34
+ var n = Number(speed);
35
+ if (!isFinite(n)) n = mode === "flip" ? 4000 : 60;
36
+ if (mode === "flip") {
37
+ n = Math.round(n);
38
+ if (n < 1000) n = 1000;
39
+ if (n > 60000) n = 60000;
40
+ return n;
41
+ }
42
+ if (n < 10) n = 10;
43
+ if (n > 400) n = 400;
44
+ return n;
45
+ }
46
+
47
+ function _buildStaticTicker(el, children, separator) {
48
+ var track = document.createElement("div");
49
+ track.className = "aup-ticker-track";
50
+ _appendTickerItems(track, children, separator);
51
+ el.appendChild(track);
52
+ return el;
53
+ }
54
+
55
+ function _buildScrollTicker(el, children, separator, pxPerSec, pauseOnHover, direction) {
56
+ var track = document.createElement("div");
57
+ track.className = "aup-ticker-track";
58
+
59
+ // First copy
60
+ _appendTickerItems(track, children, separator);
61
+ // Duplicate for seamless loop
62
+ _appendTickerItems(track, children, separator);
63
+
64
+ el.appendChild(track);
65
+
66
+ if (direction === "ltr") el.setAttribute("data-direction", "ltr");
67
+
68
+ // Calculate duration after DOM insertion (need widths)
69
+ requestAnimationFrame(function() {
70
+ var trackWidth = track.scrollWidth / 2;
71
+ if (trackWidth > 0 && pxPerSec > 0) {
72
+ var duration = trackWidth / pxPerSec;
73
+ el.style.setProperty("--ticker-duration", duration + "s");
74
+ }
75
+ });
76
+
77
+ if (pauseOnHover) {
78
+ el.addEventListener("mouseenter", function() { el.setAttribute("data-paused", "true"); });
79
+ el.addEventListener("mouseleave", function() { el.removeAttribute("data-paused"); });
80
+ }
81
+
82
+ return el;
83
+ }
84
+
85
+ function _buildFlipTicker(el, children, intervalMs, transition) {
86
+ var track = document.createElement("div");
87
+ track.className = "aup-ticker-track";
88
+ el.setAttribute("data-flip-transition", transition);
89
+
90
+ var items = [];
91
+ for (var i = 0; i < children.length; i++) {
92
+ var item = document.createElement("div");
93
+ item.className = "aup-ticker-item" + (i === 0 ? " active" : "");
94
+ var childEl = renderAupNode(children[i]);
95
+ if (childEl) item.appendChild(childEl);
96
+ track.appendChild(item);
97
+ items.push(item);
98
+ }
99
+ el.appendChild(track);
100
+
101
+ if (items.length > 1) {
102
+ var currentIdx = 0;
103
+ var flipTimer = setInterval(function() {
104
+ items[currentIdx].classList.remove("active");
105
+ currentIdx = (currentIdx + 1) % items.length;
106
+ items[currentIdx].classList.add("active");
107
+ }, intervalMs);
108
+ // Store timer for potential cleanup on re-render
109
+ el._flipTimer = flipTimer;
110
+ }
111
+
112
+ return el;
113
+ }
114
+
115
+ function _appendTickerItems(track, children, separator) {
116
+ for (var i = 0; i < children.length; i++) {
117
+ if (i > 0 && separator) {
118
+ var sep = document.createElement("span");
119
+ sep.className = "aup-ticker-separator";
120
+ sep.textContent = separator;
121
+ track.appendChild(sep);
122
+ }
123
+ var item = document.createElement("div");
124
+ item.className = "aup-ticker-item";
125
+ var childEl = renderAupNode(children[i]);
126
+ if (childEl) item.appendChild(childEl);
127
+ track.appendChild(item);
128
+ }
129
+ }
130
+ `;
131
+
132
+ //#endregion
133
+ exports.TICKER_JS = TICKER_JS;
@@ -0,0 +1,133 @@
1
+ //#region src/web-page/renderers/ticker.ts
2
+ const TICKER_JS = `
3
+ function renderAupTicker(node) {
4
+ var p = node.props || {};
5
+ var mode = p.mode === "flip" || p.mode === "static" ? p.mode : "scroll";
6
+ var intent = p.intent;
7
+ var separator = p.separator != null ? String(p.separator) : " \\u2022 ";
8
+ if (separator.length > 32) separator = separator.slice(0, 32);
9
+ var speed = p.speed;
10
+ var pauseOnHover = p.pauseOnHover !== false;
11
+ var direction = p.direction || "rtl";
12
+ var flipTransition = p.flipTransition || "fade";
13
+ var children = node.children || [];
14
+ if (children.length > 200) children = children.slice(0, 200);
15
+
16
+ var el = document.createElement("div");
17
+ el.className = "aup-ticker";
18
+ el.setAttribute("data-mode", mode);
19
+ if (intent) el.setAttribute("data-intent", intent);
20
+
21
+ var normalizedSpeed = _normalizeTickerSpeed(mode, speed);
22
+
23
+ if (mode === "static") {
24
+ return _buildStaticTicker(el, children, separator);
25
+ } else if (mode === "flip") {
26
+ return _buildFlipTicker(el, children, normalizedSpeed, flipTransition);
27
+ }
28
+ // Default: scroll
29
+ return _buildScrollTicker(el, children, separator, normalizedSpeed, pauseOnHover, direction);
30
+ }
31
+
32
+ function _normalizeTickerSpeed(mode, speed) {
33
+ var n = Number(speed);
34
+ if (!isFinite(n)) n = mode === "flip" ? 4000 : 60;
35
+ if (mode === "flip") {
36
+ n = Math.round(n);
37
+ if (n < 1000) n = 1000;
38
+ if (n > 60000) n = 60000;
39
+ return n;
40
+ }
41
+ if (n < 10) n = 10;
42
+ if (n > 400) n = 400;
43
+ return n;
44
+ }
45
+
46
+ function _buildStaticTicker(el, children, separator) {
47
+ var track = document.createElement("div");
48
+ track.className = "aup-ticker-track";
49
+ _appendTickerItems(track, children, separator);
50
+ el.appendChild(track);
51
+ return el;
52
+ }
53
+
54
+ function _buildScrollTicker(el, children, separator, pxPerSec, pauseOnHover, direction) {
55
+ var track = document.createElement("div");
56
+ track.className = "aup-ticker-track";
57
+
58
+ // First copy
59
+ _appendTickerItems(track, children, separator);
60
+ // Duplicate for seamless loop
61
+ _appendTickerItems(track, children, separator);
62
+
63
+ el.appendChild(track);
64
+
65
+ if (direction === "ltr") el.setAttribute("data-direction", "ltr");
66
+
67
+ // Calculate duration after DOM insertion (need widths)
68
+ requestAnimationFrame(function() {
69
+ var trackWidth = track.scrollWidth / 2;
70
+ if (trackWidth > 0 && pxPerSec > 0) {
71
+ var duration = trackWidth / pxPerSec;
72
+ el.style.setProperty("--ticker-duration", duration + "s");
73
+ }
74
+ });
75
+
76
+ if (pauseOnHover) {
77
+ el.addEventListener("mouseenter", function() { el.setAttribute("data-paused", "true"); });
78
+ el.addEventListener("mouseleave", function() { el.removeAttribute("data-paused"); });
79
+ }
80
+
81
+ return el;
82
+ }
83
+
84
+ function _buildFlipTicker(el, children, intervalMs, transition) {
85
+ var track = document.createElement("div");
86
+ track.className = "aup-ticker-track";
87
+ el.setAttribute("data-flip-transition", transition);
88
+
89
+ var items = [];
90
+ for (var i = 0; i < children.length; i++) {
91
+ var item = document.createElement("div");
92
+ item.className = "aup-ticker-item" + (i === 0 ? " active" : "");
93
+ var childEl = renderAupNode(children[i]);
94
+ if (childEl) item.appendChild(childEl);
95
+ track.appendChild(item);
96
+ items.push(item);
97
+ }
98
+ el.appendChild(track);
99
+
100
+ if (items.length > 1) {
101
+ var currentIdx = 0;
102
+ var flipTimer = setInterval(function() {
103
+ items[currentIdx].classList.remove("active");
104
+ currentIdx = (currentIdx + 1) % items.length;
105
+ items[currentIdx].classList.add("active");
106
+ }, intervalMs);
107
+ // Store timer for potential cleanup on re-render
108
+ el._flipTimer = flipTimer;
109
+ }
110
+
111
+ return el;
112
+ }
113
+
114
+ function _appendTickerItems(track, children, separator) {
115
+ for (var i = 0; i < children.length; i++) {
116
+ if (i > 0 && separator) {
117
+ var sep = document.createElement("span");
118
+ sep.className = "aup-ticker-separator";
119
+ sep.textContent = separator;
120
+ track.appendChild(sep);
121
+ }
122
+ var item = document.createElement("div");
123
+ item.className = "aup-ticker-item";
124
+ var childEl = renderAupNode(children[i]);
125
+ if (childEl) item.appendChild(childEl);
126
+ track.appendChild(item);
127
+ }
128
+ }
129
+ `;
130
+
131
+ //#endregion
132
+ export { TICKER_JS };
133
+ //# sourceMappingURL=ticker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticker.mjs","names":[],"sources":["../../../src/web-page/renderers/ticker.ts"],"sourcesContent":["export const TICKER_JS = `\n function renderAupTicker(node) {\n var p = node.props || {};\n var mode = p.mode === \"flip\" || p.mode === \"static\" ? p.mode : \"scroll\";\n var intent = p.intent;\n var separator = p.separator != null ? String(p.separator) : \" \\\\u2022 \";\n if (separator.length > 32) separator = separator.slice(0, 32);\n var speed = p.speed;\n var pauseOnHover = p.pauseOnHover !== false;\n var direction = p.direction || \"rtl\";\n var flipTransition = p.flipTransition || \"fade\";\n var children = node.children || [];\n if (children.length > 200) children = children.slice(0, 200);\n\n var el = document.createElement(\"div\");\n el.className = \"aup-ticker\";\n el.setAttribute(\"data-mode\", mode);\n if (intent) el.setAttribute(\"data-intent\", intent);\n\n var normalizedSpeed = _normalizeTickerSpeed(mode, speed);\n\n if (mode === \"static\") {\n return _buildStaticTicker(el, children, separator);\n } else if (mode === \"flip\") {\n return _buildFlipTicker(el, children, normalizedSpeed, flipTransition);\n }\n // Default: scroll\n return _buildScrollTicker(el, children, separator, normalizedSpeed, pauseOnHover, direction);\n }\n\n function _normalizeTickerSpeed(mode, speed) {\n var n = Number(speed);\n if (!isFinite(n)) n = mode === \"flip\" ? 4000 : 60;\n if (mode === \"flip\") {\n n = Math.round(n);\n if (n < 1000) n = 1000;\n if (n > 60000) n = 60000;\n return n;\n }\n if (n < 10) n = 10;\n if (n > 400) n = 400;\n return n;\n }\n\n function _buildStaticTicker(el, children, separator) {\n var track = document.createElement(\"div\");\n track.className = \"aup-ticker-track\";\n _appendTickerItems(track, children, separator);\n el.appendChild(track);\n return el;\n }\n\n function _buildScrollTicker(el, children, separator, pxPerSec, pauseOnHover, direction) {\n var track = document.createElement(\"div\");\n track.className = \"aup-ticker-track\";\n\n // First copy\n _appendTickerItems(track, children, separator);\n // Duplicate for seamless loop\n _appendTickerItems(track, children, separator);\n\n el.appendChild(track);\n\n if (direction === \"ltr\") el.setAttribute(\"data-direction\", \"ltr\");\n\n // Calculate duration after DOM insertion (need widths)\n requestAnimationFrame(function() {\n var trackWidth = track.scrollWidth / 2;\n if (trackWidth > 0 && pxPerSec > 0) {\n var duration = trackWidth / pxPerSec;\n el.style.setProperty(\"--ticker-duration\", duration + \"s\");\n }\n });\n\n if (pauseOnHover) {\n el.addEventListener(\"mouseenter\", function() { el.setAttribute(\"data-paused\", \"true\"); });\n el.addEventListener(\"mouseleave\", function() { el.removeAttribute(\"data-paused\"); });\n }\n\n return el;\n }\n\n function _buildFlipTicker(el, children, intervalMs, transition) {\n var track = document.createElement(\"div\");\n track.className = \"aup-ticker-track\";\n el.setAttribute(\"data-flip-transition\", transition);\n\n var items = [];\n for (var i = 0; i < children.length; i++) {\n var item = document.createElement(\"div\");\n item.className = \"aup-ticker-item\" + (i === 0 ? \" active\" : \"\");\n var childEl = renderAupNode(children[i]);\n if (childEl) item.appendChild(childEl);\n track.appendChild(item);\n items.push(item);\n }\n el.appendChild(track);\n\n if (items.length > 1) {\n var currentIdx = 0;\n var flipTimer = setInterval(function() {\n items[currentIdx].classList.remove(\"active\");\n currentIdx = (currentIdx + 1) % items.length;\n items[currentIdx].classList.add(\"active\");\n }, intervalMs);\n // Store timer for potential cleanup on re-render\n el._flipTimer = flipTimer;\n }\n\n return el;\n }\n\n function _appendTickerItems(track, children, separator) {\n for (var i = 0; i < children.length; i++) {\n if (i > 0 && separator) {\n var sep = document.createElement(\"span\");\n sep.className = \"aup-ticker-separator\";\n sep.textContent = separator;\n track.appendChild(sep);\n }\n var item = document.createElement(\"div\");\n item.className = \"aup-ticker-item\";\n var childEl = renderAupNode(children[i]);\n if (childEl) item.appendChild(childEl);\n track.appendChild(item);\n }\n }\n`;\n"],"mappings":";AAAA,MAAa,YAAY"}