@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,105 @@
1
+
2
+ //#region src/web-page/renderers/moonphase.ts
3
+ const MOONPHASE_JS = `
4
+ // ── Moon Phase Primitive (Pure JS, zero deps) ──
5
+ function renderAupMoonPhase(node) {
6
+ var el = document.createElement("div");
7
+ el.className = "aup-moonphase";
8
+ var p = node.props || {};
9
+ var mode = p.mode || "today"; // "today" | "month"
10
+ var targetDate = p.date ? new Date(p.date) : new Date();
11
+
12
+ // ── Moon phase calculation (inline, no library needed) ──
13
+ var SYNODIC = 29.53058770576;
14
+ var START_JDN = 2451550.1;
15
+ var BOUNDS = { WXC: 1, FQ: 6.382647, WXG: 8.382647, FM: 13.765294, WNG: 15.765294, LQ: 21.147941, WNC: 23.147941, NMU: 28.530588, NMUE: 29.530588 };
16
+ var PHASE_NAMES = ["New Moon","Waxing Crescent","First Quarter","Waxing Gibbous","Full Moon","Waning Gibbous","Last Quarter","Waning Crescent"];
17
+ var PHASE_EMOJI = ["\\u{1F311}","\\u{1F312}","\\u{1F313}","\\u{1F314}","\\u{1F315}","\\u{1F316}","\\u{1F317}","\\u{1F318}"];
18
+
19
+ function _toJDN(d) {
20
+ var day = d.getUTCDate(), mo = d.getUTCMonth() + 1, yr = d.getFullYear();
21
+ var a = Math.trunc((14 - mo) / 12), y = yr + 4800 - a, m = mo + 12 * a - 3;
22
+ return day + Math.trunc((153 * m + 2) / 5) + 365 * y + Math.trunc(y / 4) - Math.trunc(y / 100) + Math.trunc(y / 400) - 32045;
23
+ }
24
+ function _lunarDay(d) {
25
+ var raw = (_toJDN(d) - START_JDN) / SYNODIC;
26
+ var frac = raw - Math.floor(raw);
27
+ return (frac < 0 ? frac + 1 : frac) * SYNODIC;
28
+ }
29
+ function _phaseIndex(ld) {
30
+ if (ld < BOUNDS.WXC) return 0;
31
+ if (ld < BOUNDS.FQ) return 1;
32
+ if (ld < BOUNDS.WXG) return 2;
33
+ if (ld < BOUNDS.FM) return 3;
34
+ if (ld < BOUNDS.WNG) return 4;
35
+ if (ld < BOUNDS.LQ) return 5;
36
+ if (ld < BOUNDS.WNC) return 6;
37
+ if (ld < BOUNDS.NMU) return 7;
38
+ return 0;
39
+ }
40
+ function _illumination(ld) { return (1 - Math.cos((ld / SYNODIC) * 2 * Math.PI)) / 2; }
41
+
42
+ var ld = _lunarDay(targetDate);
43
+ var pi = _phaseIndex(ld);
44
+ var illum = _illumination(ld);
45
+
46
+ // Visual moon emoji
47
+ var visual = document.createElement("div");
48
+ visual.className = "aup-moonphase-visual";
49
+ visual.textContent = PHASE_EMOJI[pi];
50
+ el.appendChild(visual);
51
+
52
+ // Phase name
53
+ var name = document.createElement("div");
54
+ name.className = "aup-moonphase-name";
55
+ name.textContent = PHASE_NAMES[pi];
56
+ el.appendChild(name);
57
+
58
+ // Details
59
+ var details = document.createElement("div");
60
+ details.className = "aup-moonphase-details";
61
+ details.innerHTML = "<span>Day " + ld.toFixed(1) + " / " + SYNODIC.toFixed(1) + "</span>"
62
+ + "<span>Illumination: " + (illum * 100).toFixed(1) + "%</span>"
63
+ + "<span>" + targetDate.toLocaleDateString(p.locale || undefined, { year: "numeric", month: "long", day: "numeric" }) + "</span>";
64
+ el.appendChild(details);
65
+
66
+ // Month view
67
+ if (mode === "month") {
68
+ var grid = document.createElement("div");
69
+ grid.className = "aup-moonphase-month";
70
+ var yr = targetDate.getFullYear(), mo = targetDate.getMonth();
71
+ var daysInMonth = new Date(yr, mo + 1, 0).getDate();
72
+ var todayStr = new Date().toISOString().slice(0, 10);
73
+ for (var day = 1; day <= daysInMonth; day++) {
74
+ var d = new Date(yr, mo, day);
75
+ var dld = _lunarDay(d);
76
+ var dpi = _phaseIndex(dld);
77
+ var cell = document.createElement("div");
78
+ cell.className = "aup-moonphase-month-day";
79
+ if (d.toISOString().slice(0, 10) === todayStr) cell.classList.add("today");
80
+ cell.innerHTML = "<span class='moon-emoji'>" + PHASE_EMOJI[dpi] + "</span><span>" + day + "</span>";
81
+ grid.appendChild(cell);
82
+ }
83
+ el.appendChild(grid);
84
+ }
85
+
86
+ // src binding
87
+ if (p.src && window.afs) {
88
+ window.afs.read(p.src).then(function(result) {
89
+ if (result && result.content) {
90
+ var newDate = new Date(result.content.date || result.content);
91
+ var nld = _lunarDay(newDate);
92
+ var npi = _phaseIndex(nld);
93
+ visual.textContent = PHASE_EMOJI[npi];
94
+ name.textContent = PHASE_NAMES[npi];
95
+ }
96
+ }).catch(function() {});
97
+ }
98
+
99
+ return el;
100
+ }
101
+
102
+ `;
103
+
104
+ //#endregion
105
+ exports.MOONPHASE_JS = MOONPHASE_JS;
@@ -0,0 +1,105 @@
1
+ //#region src/web-page/renderers/moonphase.ts
2
+ const MOONPHASE_JS = `
3
+ // ── Moon Phase Primitive (Pure JS, zero deps) ──
4
+ function renderAupMoonPhase(node) {
5
+ var el = document.createElement("div");
6
+ el.className = "aup-moonphase";
7
+ var p = node.props || {};
8
+ var mode = p.mode || "today"; // "today" | "month"
9
+ var targetDate = p.date ? new Date(p.date) : new Date();
10
+
11
+ // ── Moon phase calculation (inline, no library needed) ──
12
+ var SYNODIC = 29.53058770576;
13
+ var START_JDN = 2451550.1;
14
+ var BOUNDS = { WXC: 1, FQ: 6.382647, WXG: 8.382647, FM: 13.765294, WNG: 15.765294, LQ: 21.147941, WNC: 23.147941, NMU: 28.530588, NMUE: 29.530588 };
15
+ var PHASE_NAMES = ["New Moon","Waxing Crescent","First Quarter","Waxing Gibbous","Full Moon","Waning Gibbous","Last Quarter","Waning Crescent"];
16
+ var PHASE_EMOJI = ["\\u{1F311}","\\u{1F312}","\\u{1F313}","\\u{1F314}","\\u{1F315}","\\u{1F316}","\\u{1F317}","\\u{1F318}"];
17
+
18
+ function _toJDN(d) {
19
+ var day = d.getUTCDate(), mo = d.getUTCMonth() + 1, yr = d.getFullYear();
20
+ var a = Math.trunc((14 - mo) / 12), y = yr + 4800 - a, m = mo + 12 * a - 3;
21
+ return day + Math.trunc((153 * m + 2) / 5) + 365 * y + Math.trunc(y / 4) - Math.trunc(y / 100) + Math.trunc(y / 400) - 32045;
22
+ }
23
+ function _lunarDay(d) {
24
+ var raw = (_toJDN(d) - START_JDN) / SYNODIC;
25
+ var frac = raw - Math.floor(raw);
26
+ return (frac < 0 ? frac + 1 : frac) * SYNODIC;
27
+ }
28
+ function _phaseIndex(ld) {
29
+ if (ld < BOUNDS.WXC) return 0;
30
+ if (ld < BOUNDS.FQ) return 1;
31
+ if (ld < BOUNDS.WXG) return 2;
32
+ if (ld < BOUNDS.FM) return 3;
33
+ if (ld < BOUNDS.WNG) return 4;
34
+ if (ld < BOUNDS.LQ) return 5;
35
+ if (ld < BOUNDS.WNC) return 6;
36
+ if (ld < BOUNDS.NMU) return 7;
37
+ return 0;
38
+ }
39
+ function _illumination(ld) { return (1 - Math.cos((ld / SYNODIC) * 2 * Math.PI)) / 2; }
40
+
41
+ var ld = _lunarDay(targetDate);
42
+ var pi = _phaseIndex(ld);
43
+ var illum = _illumination(ld);
44
+
45
+ // Visual moon emoji
46
+ var visual = document.createElement("div");
47
+ visual.className = "aup-moonphase-visual";
48
+ visual.textContent = PHASE_EMOJI[pi];
49
+ el.appendChild(visual);
50
+
51
+ // Phase name
52
+ var name = document.createElement("div");
53
+ name.className = "aup-moonphase-name";
54
+ name.textContent = PHASE_NAMES[pi];
55
+ el.appendChild(name);
56
+
57
+ // Details
58
+ var details = document.createElement("div");
59
+ details.className = "aup-moonphase-details";
60
+ details.innerHTML = "<span>Day " + ld.toFixed(1) + " / " + SYNODIC.toFixed(1) + "</span>"
61
+ + "<span>Illumination: " + (illum * 100).toFixed(1) + "%</span>"
62
+ + "<span>" + targetDate.toLocaleDateString(p.locale || undefined, { year: "numeric", month: "long", day: "numeric" }) + "</span>";
63
+ el.appendChild(details);
64
+
65
+ // Month view
66
+ if (mode === "month") {
67
+ var grid = document.createElement("div");
68
+ grid.className = "aup-moonphase-month";
69
+ var yr = targetDate.getFullYear(), mo = targetDate.getMonth();
70
+ var daysInMonth = new Date(yr, mo + 1, 0).getDate();
71
+ var todayStr = new Date().toISOString().slice(0, 10);
72
+ for (var day = 1; day <= daysInMonth; day++) {
73
+ var d = new Date(yr, mo, day);
74
+ var dld = _lunarDay(d);
75
+ var dpi = _phaseIndex(dld);
76
+ var cell = document.createElement("div");
77
+ cell.className = "aup-moonphase-month-day";
78
+ if (d.toISOString().slice(0, 10) === todayStr) cell.classList.add("today");
79
+ cell.innerHTML = "<span class='moon-emoji'>" + PHASE_EMOJI[dpi] + "</span><span>" + day + "</span>";
80
+ grid.appendChild(cell);
81
+ }
82
+ el.appendChild(grid);
83
+ }
84
+
85
+ // src binding
86
+ if (p.src && window.afs) {
87
+ window.afs.read(p.src).then(function(result) {
88
+ if (result && result.content) {
89
+ var newDate = new Date(result.content.date || result.content);
90
+ var nld = _lunarDay(newDate);
91
+ var npi = _phaseIndex(nld);
92
+ visual.textContent = PHASE_EMOJI[npi];
93
+ name.textContent = PHASE_NAMES[npi];
94
+ }
95
+ }).catch(function() {});
96
+ }
97
+
98
+ return el;
99
+ }
100
+
101
+ `;
102
+
103
+ //#endregion
104
+ export { MOONPHASE_JS };
105
+ //# sourceMappingURL=moonphase.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moonphase.mjs","names":[],"sources":["../../../src/web-page/renderers/moonphase.ts"],"sourcesContent":["export const MOONPHASE_JS = `\n // ── Moon Phase Primitive (Pure JS, zero deps) ──\n function renderAupMoonPhase(node) {\n var el = document.createElement(\"div\");\n el.className = \"aup-moonphase\";\n var p = node.props || {};\n var mode = p.mode || \"today\"; // \"today\" | \"month\"\n var targetDate = p.date ? new Date(p.date) : new Date();\n\n // ── Moon phase calculation (inline, no library needed) ──\n var SYNODIC = 29.53058770576;\n var START_JDN = 2451550.1;\n var BOUNDS = { WXC: 1, FQ: 6.382647, WXG: 8.382647, FM: 13.765294, WNG: 15.765294, LQ: 21.147941, WNC: 23.147941, NMU: 28.530588, NMUE: 29.530588 };\n var PHASE_NAMES = [\"New Moon\",\"Waxing Crescent\",\"First Quarter\",\"Waxing Gibbous\",\"Full Moon\",\"Waning Gibbous\",\"Last Quarter\",\"Waning Crescent\"];\n var PHASE_EMOJI = [\"\\\\u{1F311}\",\"\\\\u{1F312}\",\"\\\\u{1F313}\",\"\\\\u{1F314}\",\"\\\\u{1F315}\",\"\\\\u{1F316}\",\"\\\\u{1F317}\",\"\\\\u{1F318}\"];\n\n function _toJDN(d) {\n var day = d.getUTCDate(), mo = d.getUTCMonth() + 1, yr = d.getFullYear();\n var a = Math.trunc((14 - mo) / 12), y = yr + 4800 - a, m = mo + 12 * a - 3;\n return day + Math.trunc((153 * m + 2) / 5) + 365 * y + Math.trunc(y / 4) - Math.trunc(y / 100) + Math.trunc(y / 400) - 32045;\n }\n function _lunarDay(d) {\n var raw = (_toJDN(d) - START_JDN) / SYNODIC;\n var frac = raw - Math.floor(raw);\n return (frac < 0 ? frac + 1 : frac) * SYNODIC;\n }\n function _phaseIndex(ld) {\n if (ld < BOUNDS.WXC) return 0;\n if (ld < BOUNDS.FQ) return 1;\n if (ld < BOUNDS.WXG) return 2;\n if (ld < BOUNDS.FM) return 3;\n if (ld < BOUNDS.WNG) return 4;\n if (ld < BOUNDS.LQ) return 5;\n if (ld < BOUNDS.WNC) return 6;\n if (ld < BOUNDS.NMU) return 7;\n return 0;\n }\n function _illumination(ld) { return (1 - Math.cos((ld / SYNODIC) * 2 * Math.PI)) / 2; }\n\n var ld = _lunarDay(targetDate);\n var pi = _phaseIndex(ld);\n var illum = _illumination(ld);\n\n // Visual moon emoji\n var visual = document.createElement(\"div\");\n visual.className = \"aup-moonphase-visual\";\n visual.textContent = PHASE_EMOJI[pi];\n el.appendChild(visual);\n\n // Phase name\n var name = document.createElement(\"div\");\n name.className = \"aup-moonphase-name\";\n name.textContent = PHASE_NAMES[pi];\n el.appendChild(name);\n\n // Details\n var details = document.createElement(\"div\");\n details.className = \"aup-moonphase-details\";\n details.innerHTML = \"<span>Day \" + ld.toFixed(1) + \" / \" + SYNODIC.toFixed(1) + \"</span>\"\n + \"<span>Illumination: \" + (illum * 100).toFixed(1) + \"%</span>\"\n + \"<span>\" + targetDate.toLocaleDateString(p.locale || undefined, { year: \"numeric\", month: \"long\", day: \"numeric\" }) + \"</span>\";\n el.appendChild(details);\n\n // Month view\n if (mode === \"month\") {\n var grid = document.createElement(\"div\");\n grid.className = \"aup-moonphase-month\";\n var yr = targetDate.getFullYear(), mo = targetDate.getMonth();\n var daysInMonth = new Date(yr, mo + 1, 0).getDate();\n var todayStr = new Date().toISOString().slice(0, 10);\n for (var day = 1; day <= daysInMonth; day++) {\n var d = new Date(yr, mo, day);\n var dld = _lunarDay(d);\n var dpi = _phaseIndex(dld);\n var cell = document.createElement(\"div\");\n cell.className = \"aup-moonphase-month-day\";\n if (d.toISOString().slice(0, 10) === todayStr) cell.classList.add(\"today\");\n cell.innerHTML = \"<span class='moon-emoji'>\" + PHASE_EMOJI[dpi] + \"</span><span>\" + day + \"</span>\";\n grid.appendChild(cell);\n }\n el.appendChild(grid);\n }\n\n // src binding\n if (p.src && window.afs) {\n window.afs.read(p.src).then(function(result) {\n if (result && result.content) {\n var newDate = new Date(result.content.date || result.content);\n var nld = _lunarDay(newDate);\n var npi = _phaseIndex(nld);\n visual.textContent = PHASE_EMOJI[npi];\n name.textContent = PHASE_NAMES[npi];\n }\n }).catch(function() {});\n }\n\n return el;\n }\n\n`;\n"],"mappings":";AAAA,MAAa,eAAe"}
@@ -0,0 +1,222 @@
1
+
2
+ //#region src/web-page/renderers/natal-chart.ts
3
+ const NATAL_CHART_JS = `
4
+ // ── Natal Chart Primitive (@astrodraw/astrochart v3) ──
5
+ var _astroChartLoaded = false;
6
+
7
+ function _setNatalStatus(el, message) {
8
+ el.innerHTML = "";
9
+ var status = document.createElement("div");
10
+ status.className = "aup-natal-chart-loading";
11
+ status.textContent = message;
12
+ el.appendChild(status);
13
+ }
14
+
15
+ function _appendCell(row, value, strong) {
16
+ var td = document.createElement("td");
17
+ if (strong) {
18
+ var bold = document.createElement("strong");
19
+ bold.textContent = value;
20
+ td.appendChild(bold);
21
+ } else {
22
+ td.textContent = value;
23
+ }
24
+ row.appendChild(td);
25
+ }
26
+
27
+ function _appendHead(table, headers) {
28
+ var thead = document.createElement("thead");
29
+ var tr = document.createElement("tr");
30
+ for (var i = 0; i < headers.length; i++) {
31
+ var th = document.createElement("th");
32
+ th.textContent = headers[i];
33
+ tr.appendChild(th);
34
+ }
35
+ thead.appendChild(tr);
36
+ table.appendChild(thead);
37
+ }
38
+
39
+ function renderAupNatalChart(node) {
40
+ var el = document.createElement("div");
41
+ el.className = "aup-natal-chart";
42
+ var p = node.props || {};
43
+ var variant = p.variant || "radix"; // "radix" | "transit" | "aspects-table" | "planets-table"
44
+ var height = p.height || "500px";
45
+ var width = parseInt(p.width) || 500;
46
+ var chartSize = parseInt(p.size) || Math.min(width, 500);
47
+
48
+ // Data format: { planets: {"Sun":[degrees], "Moon":[degrees], ...}, cusps: [12 house cusps] }
49
+ var data = p.data || null;
50
+
51
+ // ── Aspects / Planets table mode (no chart rendering, calculation only) ──
52
+ if (variant === "aspects-table" || variant === "planets-table") {
53
+ if (!data || !data.planets) {
54
+ _setNatalStatus(el, "No chart data provided");
55
+ return el;
56
+ }
57
+
58
+ if (variant === "planets-table") {
59
+ var planetsDiv = document.createElement("div");
60
+ planetsDiv.className = "aup-natal-planets";
61
+ var tbl = document.createElement("table");
62
+ _appendHead(tbl, ["Planet", "Longitude", "Sign", "Degree in Sign"]);
63
+ var tbody = document.createElement("tbody");
64
+ var SIGNS = ["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"];
65
+ for (var planet in data.planets) {
66
+ if (data.planets.hasOwnProperty(planet)) {
67
+ var deg = Number(data.planets[planet] && data.planets[planet][0]);
68
+ if (!isFinite(deg)) continue;
69
+ var signIdx = Math.floor(deg / 30) % 12;
70
+ if (signIdx < 0) signIdx += 12;
71
+ var degInSign = ((deg % 30) + 30) % 30;
72
+ var row = document.createElement("tr");
73
+ _appendCell(row, String(planet), true);
74
+ _appendCell(row, deg.toFixed(2) + "\\u00B0");
75
+ _appendCell(row, SIGNS[signIdx]);
76
+ _appendCell(row, degInSign.toFixed(2) + "\\u00B0");
77
+ tbody.appendChild(row);
78
+ }
79
+ }
80
+ tbl.appendChild(tbody);
81
+ planetsDiv.appendChild(tbl);
82
+ el.appendChild(planetsDiv);
83
+ }
84
+
85
+ if (variant === "aspects-table") {
86
+ // Inline aspect calculation (no library needed — port of AspectCalculator core logic)
87
+ var ASPECTS_DEF = { conjunction: { degree: 0, orbit: 10 }, square: { degree: 90, orbit: 8 }, trine: { degree: 120, orbit: 8 }, opposition: { degree: 180, orbit: 10 }, sextile: { degree: 60, orbit: 6 } };
88
+ var aspectsList = [];
89
+ var planetNames = Object.keys(data.planets);
90
+ for (var i = 0; i < planetNames.length; i++) {
91
+ for (var j = i + 1; j < planetNames.length; j++) {
92
+ var pA = planetNames[i], pB = planetNames[j];
93
+ var degA = Number(data.planets[pA] && data.planets[pA][0]);
94
+ var degB = Number(data.planets[pB] && data.planets[pB][0]);
95
+ if (!isFinite(degA) || !isFinite(degB)) continue;
96
+ var gap = Math.abs(degA - degB);
97
+ if (gap > 180) gap = 360 - gap;
98
+ for (var aspName in ASPECTS_DEF) {
99
+ var asp = ASPECTS_DEF[aspName];
100
+ var orbitMin = asp.degree - asp.orbit / 2, orbitMax = asp.degree + asp.orbit / 2;
101
+ if (gap >= orbitMin && gap <= orbitMax) {
102
+ var precisionNum = Math.abs(gap - asp.degree);
103
+ aspectsList.push({
104
+ from: pA,
105
+ to: pB,
106
+ aspect: aspName,
107
+ precision: precisionNum.toFixed(2),
108
+ precisionNum: precisionNum,
109
+ });
110
+ }
111
+ }
112
+ }
113
+ }
114
+ aspectsList.sort(function(a, b) { return a.precisionNum - b.precisionNum; });
115
+
116
+ var aspDiv = document.createElement("div");
117
+ aspDiv.className = "aup-natal-aspects";
118
+ var aspTbl = document.createElement("table");
119
+ _appendHead(aspTbl, ["Planet", "Aspect", "Planet", "Orb"]);
120
+ var aspBody = document.createElement("tbody");
121
+ for (var k = 0; k < aspectsList.length; k++) {
122
+ var a = aspectsList[k];
123
+ var aspRow = document.createElement("tr");
124
+ _appendCell(aspRow, String(a.from));
125
+ _appendCell(aspRow, String(a.aspect), true);
126
+ _appendCell(aspRow, String(a.to));
127
+ _appendCell(aspRow, String(a.precision) + "\\u00B0");
128
+ aspBody.appendChild(aspRow);
129
+ }
130
+ aspTbl.appendChild(aspBody);
131
+ aspDiv.appendChild(aspTbl);
132
+ el.appendChild(aspDiv);
133
+ }
134
+
135
+ return el;
136
+ }
137
+
138
+ // ── SVG Chart mode — lazy-load @astrodraw/astrochart from CDN ──
139
+ el.style.minHeight = height;
140
+ _setNatalStatus(el, "Loading natal chart...");
141
+
142
+ if (!data || !data.planets || !data.cusps) {
143
+ _setNatalStatus(
144
+ el,
145
+ "No chart data provided. Expected: { planets: {Sun: [deg], ...}, cusps: [12 values] }",
146
+ );
147
+ return el;
148
+ }
149
+
150
+ var CDN_URL = "https://cdn.jsdelivr.net/npm/@astrodraw/astrochart@3.0.2/dist/astrochart.js";
151
+
152
+ function _initChart() {
153
+ el.innerHTML = "";
154
+ var chartContainerId = "aup-natal-" + (node.id || Math.random().toString(36).slice(2));
155
+ var container = document.createElement("div");
156
+ container.id = chartContainerId;
157
+ container.style.cssText = "display: flex; justify-content: center;";
158
+ el.appendChild(container);
159
+
160
+ // Detect dark mode
161
+ var bgHex = getComputedStyle(document.documentElement).getPropertyValue("--bg").trim();
162
+ var isDark = false;
163
+ if (bgHex && bgHex.charAt(0) === "#") {
164
+ var r = parseInt(bgHex.slice(1, 3), 16) || 0;
165
+ var g = parseInt(bgHex.slice(3, 5), 16) || 0;
166
+ var b = parseInt(bgHex.slice(5, 7), 16) || 0;
167
+ isDark = (r + g + b) / 3 < 128;
168
+ }
169
+
170
+ var chartSettings = {
171
+ COLOR_BACKGROUND: "transparent",
172
+ POINTS_COLOR: isDark ? "#e2e8f0" : "#1e293b",
173
+ SIGNS_COLOR: isDark ? "#cbd5e1" : "#334155",
174
+ CIRCLE_COLOR: isDark ? "#475569" : "#94a3b8",
175
+ LINE_COLOR: isDark ? "#475569" : "#94a3b8",
176
+ CUSPS_FONT_COLOR: isDark ? "#94a3b8" : "#64748b",
177
+ SYMBOL_AXIS_FONT_COLOR: isDark ? "#e2e8f0" : "#1e293b",
178
+ };
179
+ if (p.settings) {
180
+ for (var sk in p.settings) {
181
+ if (p.settings.hasOwnProperty(sk)) chartSettings[sk] = p.settings[sk];
182
+ }
183
+ }
184
+
185
+ try {
186
+ var astroLib = window.astrochart;
187
+ if (!astroLib || !astroLib.Chart) {
188
+ _setNatalStatus(el, "AstroChart library not loaded");
189
+ return;
190
+ }
191
+ var chart = new astroLib.Chart(chartContainerId, chartSize, chartSize, chartSettings);
192
+ var radix = chart.radix(data);
193
+ radix.aspects();
194
+
195
+ // Transit overlay
196
+ if (variant === "transit" && p.transitData) {
197
+ var transit = radix.transit(p.transitData);
198
+ transit.aspects();
199
+ }
200
+ } catch (err) {
201
+ var errMsg = err && err.message ? err.message : String(err);
202
+ _setNatalStatus(el, "Chart error: " + errMsg);
203
+ }
204
+ }
205
+
206
+ if (_astroChartLoaded || window.astrochart) {
207
+ _astroChartLoaded = true;
208
+ _initChart();
209
+ } else {
210
+ loadScript(CDN_URL, function() {
211
+ _astroChartLoaded = true;
212
+ _initChart();
213
+ });
214
+ }
215
+
216
+ return el;
217
+ }
218
+
219
+ `;
220
+
221
+ //#endregion
222
+ exports.NATAL_CHART_JS = NATAL_CHART_JS;
@@ -0,0 +1,222 @@
1
+ //#region src/web-page/renderers/natal-chart.ts
2
+ const NATAL_CHART_JS = `
3
+ // ── Natal Chart Primitive (@astrodraw/astrochart v3) ──
4
+ var _astroChartLoaded = false;
5
+
6
+ function _setNatalStatus(el, message) {
7
+ el.innerHTML = "";
8
+ var status = document.createElement("div");
9
+ status.className = "aup-natal-chart-loading";
10
+ status.textContent = message;
11
+ el.appendChild(status);
12
+ }
13
+
14
+ function _appendCell(row, value, strong) {
15
+ var td = document.createElement("td");
16
+ if (strong) {
17
+ var bold = document.createElement("strong");
18
+ bold.textContent = value;
19
+ td.appendChild(bold);
20
+ } else {
21
+ td.textContent = value;
22
+ }
23
+ row.appendChild(td);
24
+ }
25
+
26
+ function _appendHead(table, headers) {
27
+ var thead = document.createElement("thead");
28
+ var tr = document.createElement("tr");
29
+ for (var i = 0; i < headers.length; i++) {
30
+ var th = document.createElement("th");
31
+ th.textContent = headers[i];
32
+ tr.appendChild(th);
33
+ }
34
+ thead.appendChild(tr);
35
+ table.appendChild(thead);
36
+ }
37
+
38
+ function renderAupNatalChart(node) {
39
+ var el = document.createElement("div");
40
+ el.className = "aup-natal-chart";
41
+ var p = node.props || {};
42
+ var variant = p.variant || "radix"; // "radix" | "transit" | "aspects-table" | "planets-table"
43
+ var height = p.height || "500px";
44
+ var width = parseInt(p.width) || 500;
45
+ var chartSize = parseInt(p.size) || Math.min(width, 500);
46
+
47
+ // Data format: { planets: {"Sun":[degrees], "Moon":[degrees], ...}, cusps: [12 house cusps] }
48
+ var data = p.data || null;
49
+
50
+ // ── Aspects / Planets table mode (no chart rendering, calculation only) ──
51
+ if (variant === "aspects-table" || variant === "planets-table") {
52
+ if (!data || !data.planets) {
53
+ _setNatalStatus(el, "No chart data provided");
54
+ return el;
55
+ }
56
+
57
+ if (variant === "planets-table") {
58
+ var planetsDiv = document.createElement("div");
59
+ planetsDiv.className = "aup-natal-planets";
60
+ var tbl = document.createElement("table");
61
+ _appendHead(tbl, ["Planet", "Longitude", "Sign", "Degree in Sign"]);
62
+ var tbody = document.createElement("tbody");
63
+ var SIGNS = ["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"];
64
+ for (var planet in data.planets) {
65
+ if (data.planets.hasOwnProperty(planet)) {
66
+ var deg = Number(data.planets[planet] && data.planets[planet][0]);
67
+ if (!isFinite(deg)) continue;
68
+ var signIdx = Math.floor(deg / 30) % 12;
69
+ if (signIdx < 0) signIdx += 12;
70
+ var degInSign = ((deg % 30) + 30) % 30;
71
+ var row = document.createElement("tr");
72
+ _appendCell(row, String(planet), true);
73
+ _appendCell(row, deg.toFixed(2) + "\\u00B0");
74
+ _appendCell(row, SIGNS[signIdx]);
75
+ _appendCell(row, degInSign.toFixed(2) + "\\u00B0");
76
+ tbody.appendChild(row);
77
+ }
78
+ }
79
+ tbl.appendChild(tbody);
80
+ planetsDiv.appendChild(tbl);
81
+ el.appendChild(planetsDiv);
82
+ }
83
+
84
+ if (variant === "aspects-table") {
85
+ // Inline aspect calculation (no library needed — port of AspectCalculator core logic)
86
+ var ASPECTS_DEF = { conjunction: { degree: 0, orbit: 10 }, square: { degree: 90, orbit: 8 }, trine: { degree: 120, orbit: 8 }, opposition: { degree: 180, orbit: 10 }, sextile: { degree: 60, orbit: 6 } };
87
+ var aspectsList = [];
88
+ var planetNames = Object.keys(data.planets);
89
+ for (var i = 0; i < planetNames.length; i++) {
90
+ for (var j = i + 1; j < planetNames.length; j++) {
91
+ var pA = planetNames[i], pB = planetNames[j];
92
+ var degA = Number(data.planets[pA] && data.planets[pA][0]);
93
+ var degB = Number(data.planets[pB] && data.planets[pB][0]);
94
+ if (!isFinite(degA) || !isFinite(degB)) continue;
95
+ var gap = Math.abs(degA - degB);
96
+ if (gap > 180) gap = 360 - gap;
97
+ for (var aspName in ASPECTS_DEF) {
98
+ var asp = ASPECTS_DEF[aspName];
99
+ var orbitMin = asp.degree - asp.orbit / 2, orbitMax = asp.degree + asp.orbit / 2;
100
+ if (gap >= orbitMin && gap <= orbitMax) {
101
+ var precisionNum = Math.abs(gap - asp.degree);
102
+ aspectsList.push({
103
+ from: pA,
104
+ to: pB,
105
+ aspect: aspName,
106
+ precision: precisionNum.toFixed(2),
107
+ precisionNum: precisionNum,
108
+ });
109
+ }
110
+ }
111
+ }
112
+ }
113
+ aspectsList.sort(function(a, b) { return a.precisionNum - b.precisionNum; });
114
+
115
+ var aspDiv = document.createElement("div");
116
+ aspDiv.className = "aup-natal-aspects";
117
+ var aspTbl = document.createElement("table");
118
+ _appendHead(aspTbl, ["Planet", "Aspect", "Planet", "Orb"]);
119
+ var aspBody = document.createElement("tbody");
120
+ for (var k = 0; k < aspectsList.length; k++) {
121
+ var a = aspectsList[k];
122
+ var aspRow = document.createElement("tr");
123
+ _appendCell(aspRow, String(a.from));
124
+ _appendCell(aspRow, String(a.aspect), true);
125
+ _appendCell(aspRow, String(a.to));
126
+ _appendCell(aspRow, String(a.precision) + "\\u00B0");
127
+ aspBody.appendChild(aspRow);
128
+ }
129
+ aspTbl.appendChild(aspBody);
130
+ aspDiv.appendChild(aspTbl);
131
+ el.appendChild(aspDiv);
132
+ }
133
+
134
+ return el;
135
+ }
136
+
137
+ // ── SVG Chart mode — lazy-load @astrodraw/astrochart from CDN ──
138
+ el.style.minHeight = height;
139
+ _setNatalStatus(el, "Loading natal chart...");
140
+
141
+ if (!data || !data.planets || !data.cusps) {
142
+ _setNatalStatus(
143
+ el,
144
+ "No chart data provided. Expected: { planets: {Sun: [deg], ...}, cusps: [12 values] }",
145
+ );
146
+ return el;
147
+ }
148
+
149
+ var CDN_URL = "https://cdn.jsdelivr.net/npm/@astrodraw/astrochart@3.0.2/dist/astrochart.js";
150
+
151
+ function _initChart() {
152
+ el.innerHTML = "";
153
+ var chartContainerId = "aup-natal-" + (node.id || Math.random().toString(36).slice(2));
154
+ var container = document.createElement("div");
155
+ container.id = chartContainerId;
156
+ container.style.cssText = "display: flex; justify-content: center;";
157
+ el.appendChild(container);
158
+
159
+ // Detect dark mode
160
+ var bgHex = getComputedStyle(document.documentElement).getPropertyValue("--bg").trim();
161
+ var isDark = false;
162
+ if (bgHex && bgHex.charAt(0) === "#") {
163
+ var r = parseInt(bgHex.slice(1, 3), 16) || 0;
164
+ var g = parseInt(bgHex.slice(3, 5), 16) || 0;
165
+ var b = parseInt(bgHex.slice(5, 7), 16) || 0;
166
+ isDark = (r + g + b) / 3 < 128;
167
+ }
168
+
169
+ var chartSettings = {
170
+ COLOR_BACKGROUND: "transparent",
171
+ POINTS_COLOR: isDark ? "#e2e8f0" : "#1e293b",
172
+ SIGNS_COLOR: isDark ? "#cbd5e1" : "#334155",
173
+ CIRCLE_COLOR: isDark ? "#475569" : "#94a3b8",
174
+ LINE_COLOR: isDark ? "#475569" : "#94a3b8",
175
+ CUSPS_FONT_COLOR: isDark ? "#94a3b8" : "#64748b",
176
+ SYMBOL_AXIS_FONT_COLOR: isDark ? "#e2e8f0" : "#1e293b",
177
+ };
178
+ if (p.settings) {
179
+ for (var sk in p.settings) {
180
+ if (p.settings.hasOwnProperty(sk)) chartSettings[sk] = p.settings[sk];
181
+ }
182
+ }
183
+
184
+ try {
185
+ var astroLib = window.astrochart;
186
+ if (!astroLib || !astroLib.Chart) {
187
+ _setNatalStatus(el, "AstroChart library not loaded");
188
+ return;
189
+ }
190
+ var chart = new astroLib.Chart(chartContainerId, chartSize, chartSize, chartSettings);
191
+ var radix = chart.radix(data);
192
+ radix.aspects();
193
+
194
+ // Transit overlay
195
+ if (variant === "transit" && p.transitData) {
196
+ var transit = radix.transit(p.transitData);
197
+ transit.aspects();
198
+ }
199
+ } catch (err) {
200
+ var errMsg = err && err.message ? err.message : String(err);
201
+ _setNatalStatus(el, "Chart error: " + errMsg);
202
+ }
203
+ }
204
+
205
+ if (_astroChartLoaded || window.astrochart) {
206
+ _astroChartLoaded = true;
207
+ _initChart();
208
+ } else {
209
+ loadScript(CDN_URL, function() {
210
+ _astroChartLoaded = true;
211
+ _initChart();
212
+ });
213
+ }
214
+
215
+ return el;
216
+ }
217
+
218
+ `;
219
+
220
+ //#endregion
221
+ export { NATAL_CHART_JS };
222
+ //# sourceMappingURL=natal-chart.mjs.map