@openephemeris/mcp-server 4.15.0 → 4.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +18 -1
- package/dist/index.js +3 -12
- package/dist/server-sse.js +3 -12
- package/dist/tools/apps/bazi-app.js +1 -1
- package/dist/tools/apps/bodygraph-app.js +2 -2
- package/dist/tools/apps/chart-wheel-app.js +1 -1
- package/dist/tools/apps/moon-phase-app.js +1 -1
- package/dist/tools/apps/transit-timeline-app.js +1 -1
- package/dist/tools/apps/vedic-chart-app.js +1 -1
- package/dist/tools/specialized/bi_wheel.js +1 -1
- package/dist/tools/specialized/chart_wheel.js +1 -1
- package/dist/tools/specialized/ephemeris_core.js +3 -0
- package/dist/tools/specialized/hd_bodygraph.js +2 -2
- package/dist/tools/ui-meta.d.ts +39 -0
- package/dist/tools/ui-meta.js +48 -0
- package/dist/ui/bazi.html +6 -1
- package/dist/ui/bi-wheel.html +201 -174
- package/dist/ui/bodygraph.html +176 -150
- package/dist/ui/chart-wheel.html +164 -135
- package/dist/ui/moon-phase.html +1 -1
- package/dist/ui/transit-timeline.html +2 -2
- package/dist/ui/vedic-chart.html +82 -56
- package/package.json +7 -3
- package/smithery.yaml +3 -1
package/dist/ui/chart-wheel.html
CHANGED
|
@@ -6886,7 +6886,7 @@ function vv(e5, t2, n2) {
|
|
|
6886
6886
|
var n3, r3, i3, a3, o3, s3, c3;
|
|
6887
6887
|
let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 = M_[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = F_[(a3 = (o3 = e6.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e6.type : i3) == null ? "\u2014" : r3, f3 = (s3 = I_((c3 = e6.type) == null ? "" : c3)) == null ? "#888" : s3, p3 = e6.orb == null ? "" : "".concat(e6.orb.toFixed(1), "\xB0"), m3 = e6.applying === true ? "\u2197" : e6.applying === false ? "\u2198" : "\xB7";
|
|
6888
6888
|
return '<div class="aspect-row">\n <span class="aspect-dot" style="background:'.concat(f3, '"></span>\n <span class="aspect-sym" style="color:').concat(f3, '">').concat(d3, '</span>\n <span class="aspect-other">').concat(u3, " ").concat(Z(l3), '</span>\n <span class="aspect-meta">').concat(p3, " ").concat(m3, "</span>\n </div>");
|
|
6889
|
-
}).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">
|
|
6889
|
+
}).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
|
|
6890
6890
|
s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(U_(t2.longitude)).concat(t2.house ? " \xB7 House ".concat(t2.house) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Aspects</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), s2.classList.add("visible"), s2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (a2 = document.getElementById("info-close-btn")) == null || a2.addEventListener("click", () => {
|
|
6891
6891
|
Tv(), Nv();
|
|
6892
6892
|
}), (o2 = document.getElementById("ask-claude-btn")) == null || o2.addEventListener("click", () => {
|
|
@@ -6894,8 +6894,8 @@ function vv(e5, t2, n2) {
|
|
|
6894
6894
|
if (!pv) return;
|
|
6895
6895
|
let o3 = document.getElementById("ask-claude-btn");
|
|
6896
6896
|
!o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), pv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e6 = t2.sign) == null ? U_(t2.longitude) : e6, house: (n3 = t2.house) == null ? null : n3, retrograde: (r3 = t2.retrograde) == null ? false : r3, speed: (i3 = t2.speed) == null ? null : i3, dignity: (a3 = u2 == null ? void 0 : u2.label) == null ? null : a3, aspects: f2.map((e7) => ({ other: e7.planet1.toLowerCase() === t2.name.toLowerCase() ? e7.planet2 : e7.planet1, type: e7.type, orb: e7.orb, applying: e7.applying })) } }).then(() => {
|
|
6897
|
-
o3.textContent = "\u2713 Sent
|
|
6898
|
-
o3.textContent = "\u2728
|
|
6897
|
+
o3.textContent = "\u2713 Sent", o3.classList.remove("sending"), o3.classList.add("sent"), setTimeout(() => {
|
|
6898
|
+
o3.textContent = "\u2728 Interpret this", o3.classList.remove("sent"), o3.disabled = false;
|
|
6899
6899
|
}, 2500);
|
|
6900
6900
|
}).catch(() => {
|
|
6901
6901
|
o3.textContent = "\u26A0 Failed \u2014 tap to retry", o3.classList.remove("sending"), o3.classList.add("error"), o3.disabled = false;
|
|
@@ -6904,7 +6904,7 @@ function vv(e5, t2, n2) {
|
|
|
6904
6904
|
}
|
|
6905
6905
|
function yv(e5, t2, n2) {
|
|
6906
6906
|
var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
|
|
6907
|
-
let p2 = _v(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = M_[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = M_[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = F_[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = I_((c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2), y2 = t2.orb == null ? "unknown orb" : "".concat(t2.orb.toFixed(2), "\xB0"), b2 = t2.applying === true ? "Applying (growing closer)" : t2.applying === false ? "Separating (moving apart)" : "", x2 = m2 ? "".concat(U_(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(U_(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">
|
|
6907
|
+
let p2 = _v(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = M_[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = M_[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = F_[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = I_((c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2), y2 = t2.orb == null ? "unknown orb" : "".concat(t2.orb.toFixed(2), "\xB0"), b2 = t2.applying === true ? "Applying (growing closer)" : t2.applying === false ? "Separating (moving apart)" : "", x2 = m2 ? "".concat(U_(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(U_(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
|
|
6908
6908
|
p2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(ee2, '">').concat(v2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z((u2 = t2.type) == null ? "Aspect" : u2), '</strong>\n </div>\n <div class="info-pos">').concat(y2).concat(b2 ? " \xB7 ".concat(b2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in Aspect</div>\n <div class="aspect-pair-row">\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(g2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet1), '</div>\n <div class="aspect-pair-pos">').concat(x2, '</div>\n </div>\n </div>\n <span class="aspect-pair-sym" style="color:').concat(ee2, '">').concat(v2, '</span>\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(_2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet2), '</div>\n <div class="aspect-pair-pos">').concat(S2, "</div>\n </div>\n </div>\n </div>\n ").concat(C2, "\n "), p2.classList.add("visible"), p2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (d2 = document.getElementById("info-close-btn")) == null || d2.addEventListener("click", () => {
|
|
6909
6909
|
Tv(), Nv();
|
|
6910
6910
|
}), (f2 = document.getElementById("ask-claude-btn")) == null || f2.addEventListener("click", () => {
|
|
@@ -6913,7 +6913,7 @@ function yv(e5, t2, n2) {
|
|
|
6913
6913
|
let l3 = document.getElementById("ask-claude-btn");
|
|
6914
6914
|
!l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), pv({ type: "aspect", data: { planet1: t2.planet1, planet2: t2.planet2, aspect_type: (e6 = t2.type) == null ? null : e6, orb: (n3 = t2.orb) == null ? null : n3, applying: (r3 = t2.applying) == null ? null : r3, angle: (i3 = t2.angle) == null ? null : i3, planet1_sign: (a3 = m2 == null ? void 0 : m2.sign) == null ? null : a3, planet1_house: (o3 = m2 == null ? void 0 : m2.house) == null ? null : o3, planet2_sign: (s3 = h2 == null ? void 0 : h2.sign) == null ? null : s3, planet2_house: (c3 = h2 == null ? void 0 : h2.house) == null ? null : c3 } }).then(() => {
|
|
6915
6915
|
l3.textContent = "Sent", l3.classList.remove("sending"), l3.classList.add("sent"), setTimeout(() => {
|
|
6916
|
-
l3.textContent = "
|
|
6916
|
+
l3.textContent = "Interpret", l3.classList.remove("sent"), l3.disabled = false;
|
|
6917
6917
|
}, 2500);
|
|
6918
6918
|
}).catch(() => {
|
|
6919
6919
|
l3.textContent = "Failed \u2014 retry", l3.classList.remove("sending"), l3.classList.add("error"), l3.disabled = false;
|
|
@@ -6926,7 +6926,7 @@ function bv(e5, t2, n2) {
|
|
|
6926
6926
|
var t3;
|
|
6927
6927
|
let n3 = (t3 = M_[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = U_(e6.longitude), i3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "";
|
|
6928
6928
|
return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e6.name)).concat(i3, '</span>\n <span class="aspect-meta">').concat(r3, "</span>\n </div>");
|
|
6929
|
-
}).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">
|
|
6929
|
+
}).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
|
|
6930
6930
|
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>House ').concat(t2.number, '</strong>\n </div>\n <div class="info-pos">').concat(u2, " ").concat(d2, " on cusp").concat(t2.ruler ? " \xB7 ruled by ".concat(Z(t2.ruler)) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in House ').concat(t2.number, '</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
|
|
6931
6931
|
Tv(), Nv();
|
|
6932
6932
|
}), (s2 = document.getElementById("ask-claude-btn")) == null || s2.addEventListener("click", () => {
|
|
@@ -6938,7 +6938,7 @@ function bv(e5, t2, n2) {
|
|
|
6938
6938
|
return { name: e7.name, sign: (t3 = e7.sign) == null ? U_(e7.longitude) : t3, retrograde: (n4 = e7.retrograde) == null ? false : n4 };
|
|
6939
6939
|
}) } }).then(() => {
|
|
6940
6940
|
n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
|
|
6941
|
-
n3.textContent = "
|
|
6941
|
+
n3.textContent = "Interpret", n3.classList.remove("sent"), n3.disabled = false;
|
|
6942
6942
|
}, 2500);
|
|
6943
6943
|
}).catch(() => {
|
|
6944
6944
|
n3.textContent = "Failed \u2014 retry", n3.classList.remove("sending"), n3.classList.add("error"), n3.disabled = false;
|
|
@@ -6952,7 +6952,7 @@ function Sv(e5, t2, n2) {
|
|
|
6952
6952
|
var t3;
|
|
6953
6953
|
let n3 = (t3 = M_[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 30 - r3) * 60), a3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "", o3 = iv(e6.name, e6.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
|
|
6954
6954
|
return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e6.name)).concat(a3).concat(s3, '</span>\n <span class="aspect-meta">').concat(r3, "\xB0").concat(i3.toString().padStart(2, "0"), "\u2032</span>\n </div>");
|
|
6955
|
-
}).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 = pv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">
|
|
6955
|
+
}).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 = pv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Interpret '.concat(l2, "</button>") : "";
|
|
6956
6956
|
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(R_(t2), '">').concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(l2, '</strong>\n </div>\n <div class="info-pos">').concat(_2, " ").concat(d2, " \xB7 ").concat(f2).concat(p2 ? " \xB7 Ruled by ".concat(m2, " ").concat(p2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in ').concat(l2, '</div>\n <div class="aspects-list">').concat(g2, "</div>\n ").concat(v2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
|
|
6957
6957
|
Tv(), Nv();
|
|
6958
6958
|
}), (s2 = document.getElementById("sign-ask-claude-btn")) == null || s2.addEventListener("click", () => {
|
|
@@ -6963,7 +6963,7 @@ function Sv(e5, t2, n2) {
|
|
|
6963
6963
|
return { name: e7.name, longitude: e7.longitude, position: U_(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3, house: (n3 = e7.house) == null ? null : n3 };
|
|
6964
6964
|
}) } }).then(() => {
|
|
6965
6965
|
e6.textContent = "Sent", e6.classList.remove("sending"), e6.classList.add("sent"), setTimeout(() => {
|
|
6966
|
-
e6.textContent = "
|
|
6966
|
+
e6.textContent = "Interpret ".concat(l2), e6.classList.remove("sent"), e6.disabled = false;
|
|
6967
6967
|
}, 2500);
|
|
6968
6968
|
}).catch(() => {
|
|
6969
6969
|
e6.textContent = "Failed \u2014 retry", e6.classList.remove("sending"), e6.classList.add("error"), e6.disabled = false;
|
|
@@ -6976,13 +6976,13 @@ function wv(e5, t2, n2) {
|
|
|
6976
6976
|
let a2 = _v(), o2 = Cv[t2];
|
|
6977
6977
|
if (!o2) return;
|
|
6978
6978
|
let s2 = U_(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(av[c2]), u2 = Z(ov[c2]), d2 = N_[c2], f2 = R_(c2);
|
|
6979
|
-
a2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:#7060b8;font-family:system-ui;font-weight:700;font-size:15px">'.concat(o2.symbol, '</span>\n <div class="info-title">\n <div class="info-name-row"><strong>').concat(o2.title, '</strong></div>\n <div class="info-pos">').concat(o2.keyword, '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="planet-in-sign" style="margin:8px 0 4px">\n <span style="color:').concat(f2, ';font-family:serif;font-size:14px;margin-right:4px">').concat(d2, '</span>\n <span style="font-size:12px;color:var(--text-muted,#888)">').concat(s2, " \xB7 ").concat(l2, " \xB7 ").concat(u2, '</span>\n </div>\n <div class="planet-meaning" style="font-size:12px;line-height:1.55;margin-bottom:8px">').concat(o2.meaning, '</div>\n <div class="aspects-title">Themes</div>\n <div class="aspects-list">\n ').concat(o2.themes.map((e6) => '<div class="aspect-row"><span class="aspect-other">'.concat(e6, "</span></div>")).join(""), '\n </div>\n <div class="panel-actions" style="margin-top:10px">\n <button class="ask-claude-btn" id="angle-ask-claude-btn">\n
|
|
6979
|
+
a2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:#7060b8;font-family:system-ui;font-weight:700;font-size:15px">'.concat(o2.symbol, '</span>\n <div class="info-title">\n <div class="info-name-row"><strong>').concat(o2.title, '</strong></div>\n <div class="info-pos">').concat(o2.keyword, '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="planet-in-sign" style="margin:8px 0 4px">\n <span style="color:').concat(f2, ';font-family:serif;font-size:14px;margin-right:4px">').concat(d2, '</span>\n <span style="font-size:12px;color:var(--text-muted,#888)">').concat(s2, " \xB7 ").concat(l2, " \xB7 ").concat(u2, '</span>\n </div>\n <div class="planet-meaning" style="font-size:12px;line-height:1.55;margin-bottom:8px">').concat(o2.meaning, '</div>\n <div class="aspects-title">Themes</div>\n <div class="aspects-list">\n ').concat(o2.themes.map((e6) => '<div class="aspect-row"><span class="aspect-other">'.concat(e6, "</span></div>")).join(""), '\n </div>\n <div class="panel-actions" style="margin-top:10px">\n <button class="ask-claude-btn" id="angle-ask-claude-btn">\n Interpret ').concat(o2.title, "\n </button>\n </div>\n "), a2.classList.add("visible"), a2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (r2 = document.getElementById("info-close-btn")) == null || r2.addEventListener("click", () => {
|
|
6980
6980
|
Tv(), Nv();
|
|
6981
6981
|
}), (i2 = document.getElementById("angle-ask-claude-btn")) == null || i2.addEventListener("click", (e6) => {
|
|
6982
6982
|
let t3 = e6.currentTarget;
|
|
6983
6983
|
t3.textContent = "Sending\u2026", t3.disabled = true, pv == null || pv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: P_[c2], position: s2, element: l2, modality: u2 } }).then(() => {
|
|
6984
6984
|
t3.textContent = "Sent", setTimeout(() => {
|
|
6985
|
-
t3.textContent = "
|
|
6985
|
+
t3.textContent = "Interpret ".concat(o2.title), t3.disabled = false;
|
|
6986
6986
|
}, 2500);
|
|
6987
6987
|
}).catch(() => {
|
|
6988
6988
|
t3.textContent = "Failed \u2014 retry", t3.disabled = false;
|
|
@@ -7563,17 +7563,42 @@ function ry(e5) {
|
|
|
7563
7563
|
}
|
|
7564
7564
|
return null;
|
|
7565
7565
|
}
|
|
7566
|
-
|
|
7566
|
+
var iy = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
|
|
7567
|
+
function ay(e5, t2) {
|
|
7568
|
+
if (!e5) return null;
|
|
7569
|
+
let n2 = iy.exec(e5.trim());
|
|
7570
|
+
if (n2) {
|
|
7571
|
+
let [, e6, t3, r3, i2, a2, o2] = n2, s2 = new Date(Date.UTC(+e6, t3 - 1, +r3, +i2, +a2, o2 ? +o2 : 0));
|
|
7572
|
+
return isNaN(s2.getTime()) ? null : { date: s2, timeZone: "UTC" };
|
|
7573
|
+
}
|
|
7574
|
+
let r2 = new Date(e5);
|
|
7575
|
+
return isNaN(r2.getTime()) ? null : { date: r2, timeZone: t2 || "UTC" };
|
|
7576
|
+
}
|
|
7577
|
+
function oy(e5) {
|
|
7578
|
+
var t2;
|
|
7579
|
+
if (!e5) return "";
|
|
7580
|
+
let n2 = [], r2 = (t2 = e5.location) == null ? void 0 : t2.trim();
|
|
7581
|
+
if (r2 ? n2.push(r2) : typeof e5.latitude == "number" && typeof e5.longitude == "number" && n2.push("".concat(e5.latitude.toFixed(2), ", ").concat(e5.longitude.toFixed(2))), e5.datetime) {
|
|
7582
|
+
let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ? ay(e5.datetime, e5.timezone) : null;
|
|
7583
|
+
t3 ? n2.push(t3.date.toLocaleString("en-US", { timeZone: t3.timeZone, day: "numeric", month: "short", year: "numeric", hour: "numeric", minute: "2-digit" })) : n2.push(e5.datetime);
|
|
7584
|
+
}
|
|
7585
|
+
return n2.join(" \xB7 ");
|
|
7586
|
+
}
|
|
7587
|
+
function sy(e5, t2, n2 = "Chart") {
|
|
7588
|
+
let r2 = oy(t2);
|
|
7589
|
+
return r2 ? "".concat(n2, ": ").concat(r2, "\n\n").concat(e5) : e5;
|
|
7590
|
+
}
|
|
7591
|
+
function cy(e5) {
|
|
7567
7592
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7568
7593
|
}
|
|
7569
|
-
function
|
|
7570
|
-
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(
|
|
7571
|
-
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(
|
|
7594
|
+
function ly(e5) {
|
|
7595
|
+
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(cy(i2), "</button>") : "";
|
|
7596
|
+
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(cy(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
|
|
7572
7597
|
var o2;
|
|
7573
7598
|
(o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
|
|
7574
7599
|
}
|
|
7575
7600
|
}
|
|
7576
|
-
function
|
|
7601
|
+
function uy(e5, t2, n2 = []) {
|
|
7577
7602
|
var r2, i2;
|
|
7578
7603
|
if (!t2 || t2.querySelector("#btn-fullscreen")) return;
|
|
7579
7604
|
let a2 = document.createElement("button");
|
|
@@ -7649,21 +7674,21 @@ function oy(e5, t2, n2 = []) {
|
|
|
7649
7674
|
let e6 = document.getElementById("fs-hint-banner");
|
|
7650
7675
|
e6 && e6.remove();
|
|
7651
7676
|
let t3 = document.createElement("div");
|
|
7652
|
-
t3.id = "fs-hint-banner", Object.assign(t3.style, { position: "fixed", top: "12px", left: "50%", transform: "translateX(-50%)", background: "oklch(14% 0.012 265 / 0.90)", backdropFilter: "blur(12px)", WebkitBackdropFilter: "blur(12px)", border: "1px solid oklch(72% 0.12 80 / 0.3)", borderRadius: "20px", padding: "6px 16px", fontSize: "11px", fontWeight: "600", color: "oklch(80% 0.08 80)", letterSpacing: "0.04em", zIndex: "9999", pointerEvents: "none", opacity: "0", transition: "opacity 300ms ease", whiteSpace: "nowrap" }), t3.textContent = "Esc \u2014 exit fullscreen & return to
|
|
7677
|
+
t3.id = "fs-hint-banner", Object.assign(t3.style, { position: "fixed", top: "12px", left: "50%", transform: "translateX(-50%)", background: "oklch(14% 0.012 265 / 0.90)", backdropFilter: "blur(12px)", WebkitBackdropFilter: "blur(12px)", border: "1px solid oklch(72% 0.12 80 / 0.3)", borderRadius: "20px", padding: "6px 16px", fontSize: "11px", fontWeight: "600", color: "oklch(80% 0.08 80)", letterSpacing: "0.04em", zIndex: "9999", pointerEvents: "none", opacity: "0", transition: "opacity 300ms ease", whiteSpace: "nowrap" }), t3.textContent = "Esc \u2014 exit fullscreen & return to chat", document.body.appendChild(t3), requestAnimationFrame(() => {
|
|
7653
7678
|
t3.style.opacity = "1";
|
|
7654
7679
|
}), setTimeout(() => {
|
|
7655
7680
|
t3.style.opacity = "0", setTimeout(() => t3.remove(), 350);
|
|
7656
7681
|
}, 4e3);
|
|
7657
7682
|
}
|
|
7658
7683
|
}
|
|
7659
|
-
function
|
|
7684
|
+
function dy(e5, t2) {
|
|
7660
7685
|
e5.ontoolcancelled = (e6) => {
|
|
7661
7686
|
var n2, r2, i2;
|
|
7662
7687
|
let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
|
|
7663
|
-
console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false),
|
|
7688
|
+
console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false), fy(a2);
|
|
7664
7689
|
};
|
|
7665
7690
|
}
|
|
7666
|
-
function
|
|
7691
|
+
function fy(e5) {
|
|
7667
7692
|
var t2;
|
|
7668
7693
|
(t2 = document.getElementById("cancel-toast")) == null || t2.remove();
|
|
7669
7694
|
let n2 = document.createElement("div");
|
|
@@ -7671,7 +7696,7 @@ function cy(e5) {
|
|
|
7671
7696
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7672
7697
|
}, 3e3);
|
|
7673
7698
|
}
|
|
7674
|
-
function
|
|
7699
|
+
function py(e5) {
|
|
7675
7700
|
var t2;
|
|
7676
7701
|
function n2(e6) {
|
|
7677
7702
|
if (!e6) return;
|
|
@@ -7684,48 +7709,48 @@ function ly(e5) {
|
|
|
7684
7709
|
n2(e6);
|
|
7685
7710
|
});
|
|
7686
7711
|
}
|
|
7687
|
-
var
|
|
7712
|
+
var my = document.getElementById("loading-state"), hy = document.getElementById("chart-container"), gy = document.getElementById("chart-info"), _y = document.getElementById("chart-status"), vy = document.getElementById("controls-panel"), yy = document.getElementById("patterns-strip"), by = document.getElementById("aspect-filter"), xy = document.getElementById("overview-table"), Sy = document.getElementById("param-controls-container"), Cy = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, wy = "placidus", Ty = null;
|
|
7688
7713
|
m_(() => {
|
|
7689
|
-
$ &&
|
|
7714
|
+
$ && ky($);
|
|
7690
7715
|
});
|
|
7691
|
-
var
|
|
7692
|
-
function
|
|
7693
|
-
|
|
7716
|
+
var Ey = false, Dy = false;
|
|
7717
|
+
function Oy(e5) {
|
|
7718
|
+
_y && (e5 ? (_y.textContent = "\xB7 ".concat(e5), _y.setAttribute("data-active", "")) : (_y.textContent = "", _y.removeAttribute("data-active")));
|
|
7694
7719
|
}
|
|
7695
|
-
|
|
7720
|
+
Cy.ontoolresult = (e5) => {
|
|
7696
7721
|
var t2;
|
|
7697
7722
|
let n2 = ry(e5);
|
|
7698
|
-
if (
|
|
7699
|
-
console.error("[ChartWheel] \u274C No chart data found in tool result"),
|
|
7723
|
+
if ($y(), !n2 || !n2.planets) {
|
|
7724
|
+
console.error("[ChartWheel] \u274C No chart data found in tool result"), eb("Chart data could not be parsed from the server response.", tb);
|
|
7700
7725
|
return;
|
|
7701
7726
|
}
|
|
7702
|
-
if ($ = n2,
|
|
7727
|
+
if ($ = n2, wy = (t2 = n2.house_system) == null ? "placidus" : t2, !Ty) {
|
|
7703
7728
|
var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
|
|
7704
7729
|
let e6 = (r2 = n2._birth_params) == null ? {} : r2, t3 = (i2 = (a2 = (o2 = e6.datetime) == null ? n2.datetime : o2) == null ? n2.birth_datetime : a2) == null ? "" : i2, p2 = (s2 = (c2 = e6.location) == null ? n2.location : c2) == null ? "" : s2, m2 = (l2 = (u2 = e6.timezone) == null ? n2.timezone : u2) == null ? "" : l2, h2 = (d2 = e6.latitude) == null ? n2.latitude : d2, g2 = (f2 = e6.longitude) == null ? n2.longitude : f2, _2 = "", v2 = "12:00";
|
|
7705
7730
|
if (t3 && t3.includes("T")) {
|
|
7706
7731
|
let e7 = t3.split("T");
|
|
7707
7732
|
_2 = e7[0], v2 = e7[1].substring(0, 5);
|
|
7708
7733
|
}
|
|
7709
|
-
|
|
7710
|
-
|
|
7734
|
+
Ty = new Jv({ app: Cy, container: Sy, initialParams: { date: _2, time: v2, locationName: p2, timezone: m2, latitude: typeof h2 == "number" ? h2 : null, longitude: typeof g2 == "number" ? g2 : null }, showStepControls: false, costHint: "~1 credit", onRefresh: async (e7) => {
|
|
7735
|
+
Ty == null || Ty.setBusy(true), my.removeAttribute("hidden"), hy.setAttribute("hidden", "");
|
|
7711
7736
|
try {
|
|
7712
7737
|
var t4, n3, r3, i3;
|
|
7713
|
-
let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o3 = new Promise((e8, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 = ry(await Promise.race([
|
|
7714
|
-
s3 ? ($ = s3, s3.house_system && (
|
|
7738
|
+
let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o3 = new Promise((e8, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 = ry(await Promise.race([Cy.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: "".concat(a3).concat(e7.timezone ? "" : "Z"), latitude: (t4 = e7.latitude) == null ? void 0 : t4, longitude: (n3 = e7.longitude) == null ? void 0 : n3, timezone: (r3 = e7.timezone) == null ? void 0 : r3, location: (i3 = e7.locationName) == null ? void 0 : i3, house_system: wy || "placidus", chart_type: "natal" } }), o3]));
|
|
7739
|
+
s3 ? ($ = s3, s3.house_system && (wy = s3.house_system), ky(s3)) : $ && (my.setAttribute("hidden", ""), hy.removeAttribute("hidden"));
|
|
7715
7740
|
} catch (e8) {
|
|
7716
|
-
console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (
|
|
7741
|
+
console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (my.setAttribute("hidden", ""), hy.removeAttribute("hidden"));
|
|
7717
7742
|
} finally {
|
|
7718
|
-
|
|
7743
|
+
Ty == null || Ty.setBusy(false);
|
|
7719
7744
|
}
|
|
7720
7745
|
} });
|
|
7721
7746
|
}
|
|
7722
|
-
|
|
7747
|
+
ky(n2);
|
|
7723
7748
|
};
|
|
7724
|
-
function
|
|
7749
|
+
function ky(e5) {
|
|
7725
7750
|
var t2, n2, r2, i2, a2, o2, s2;
|
|
7726
|
-
|
|
7751
|
+
Fy = null, my.setAttribute("hidden", ""), hy.removeAttribute("hidden"), Sy.removeAttribute("hidden"), vy.removeAttribute("hidden"), Bv(hy, e5, Uy, Wy, Gy, Xy, Dy ? Ky() : void 0), hv(Oy), Uv(vy, wy, Zy), jy(e5), ny("chart-wheel");
|
|
7727
7752
|
let c2 = q_(e5.planets), l2 = (n2 = (r2 = (i2 = ((t2 = e5.houses) == null ? [] : t2)[0]) == null ? void 0 : i2.cusp_lon) == null ? e5.ascendant : r2) == null ? 0 : n2, u2 = (a2 = e5.aspects) == null ? [] : a2;
|
|
7728
|
-
c2.length > 0 &&
|
|
7753
|
+
c2.length > 0 && Ny(c2, u2), Iy(lv(u2, c2), c2, l2), Vy();
|
|
7729
7754
|
let d2 = document.getElementById("cw-action-bar");
|
|
7730
7755
|
if (!d2) {
|
|
7731
7756
|
d2 = document.createElement("div"), d2.id = "cw-action-bar", d2.className = "hd-action-bar";
|
|
@@ -7736,34 +7761,35 @@ function Ty(e5) {
|
|
|
7736
7761
|
(f2 = document.getElementById("app")) == null || f2.prepend(d2);
|
|
7737
7762
|
}
|
|
7738
7763
|
}
|
|
7739
|
-
d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void
|
|
7764
|
+
d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void Jy()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void Yy());
|
|
7740
7765
|
}
|
|
7741
|
-
function
|
|
7766
|
+
function Ay(e5) {
|
|
7742
7767
|
return String(e5).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
7743
7768
|
}
|
|
7744
|
-
function
|
|
7769
|
+
function jy(e5) {
|
|
7745
7770
|
var t2, n2, r2, i2, a2, o2, s2, c2, l2, u2;
|
|
7746
|
-
if (!
|
|
7771
|
+
if (!gy) return;
|
|
7747
7772
|
let d2 = (t2 = e5._birth_params) == null ? {} : t2, f2 = (n2 = (r2 = (i2 = d2.datetime) == null ? e5.datetime : i2) == null ? e5.birth_datetime : r2) == null ? "" : n2, p2 = (a2 = (o2 = d2.location) == null ? e5.location : o2) == null ? "" : a2, m2 = (s2 = (c2 = d2.timezone) == null ? e5.timezone : c2) == null ? "" : s2, h2 = (l2 = d2.latitude) == null ? e5.latitude : l2, g2 = (u2 = d2.longitude) == null ? e5.longitude : u2;
|
|
7748
|
-
|
|
7773
|
+
wy.charAt(0).toUpperCase() + wy.slice(1);
|
|
7749
7774
|
let _2 = q_(e5.planets).find((e6) => e6.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
|
|
7750
7775
|
try {
|
|
7751
|
-
|
|
7752
|
-
|
|
7753
|
-
|
|
7776
|
+
let e6 = f2 && f2.includes("T") ? ay(f2, m2) : null;
|
|
7777
|
+
if (e6) {
|
|
7778
|
+
let { date: t3, timeZone: n3 } = e6;
|
|
7779
|
+
ee2 = t3.toLocaleDateString("en-US", { weekday: "short", year: "numeric", month: "short", day: "numeric", timeZone: n3 }) + " \xB7 " + t3.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", hour12: true, timeZone: n3 });
|
|
7754
7780
|
}
|
|
7755
7781
|
} catch (e6) {
|
|
7756
7782
|
}
|
|
7757
7783
|
let y2 = typeof h2 == "number" && typeof g2 == "number" ? "".concat(Math.abs(h2).toFixed(2), "\xB0").concat(h2 >= 0 ? "N" : "S", ", ").concat(Math.abs(g2).toFixed(2), "\xB0").concat(g2 >= 0 ? "E" : "W") : "", b2 = [];
|
|
7758
|
-
if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(
|
|
7759
|
-
|
|
7784
|
+
if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(Ay(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat(Ay(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat(Ay(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat(Ay(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat(Ay(v2), "</span>")), b2.length === 0) {
|
|
7785
|
+
gy.setAttribute("hidden", "");
|
|
7760
7786
|
return;
|
|
7761
7787
|
}
|
|
7762
|
-
|
|
7788
|
+
gy.innerHTML = b2.join(""), gy.removeAttribute("hidden");
|
|
7763
7789
|
}
|
|
7764
|
-
var
|
|
7765
|
-
function
|
|
7766
|
-
if (!
|
|
7790
|
+
var My = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
|
|
7791
|
+
function Ny(e5, t2) {
|
|
7792
|
+
if (!xy || e5.length === 0) return;
|
|
7767
7793
|
let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"], r2 = [...e5].sort((e6, t3) => {
|
|
7768
7794
|
let r3 = n2.indexOf(e6.name.toLowerCase()), i3 = n2.indexOf(t3.name.toLowerCase());
|
|
7769
7795
|
return r3 !== -1 && i3 !== -1 ? r3 - i3 : r3 === -1 ? i3 === -1 ? e6.name.localeCompare(t3.name) : 1 : -1;
|
|
@@ -7774,15 +7800,15 @@ function ky(e5, t2) {
|
|
|
7774
7800
|
}
|
|
7775
7801
|
let s2 = (e6) => e6.replace(/(^|\s|_)\w/g, (e7) => e7.toUpperCase()).replace(/_/g, " "), c2 = (e6) => ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"][Math.floor((e6 % 360 + 360) % 360 / 30)], l2 = r2.map((e6) => {
|
|
7776
7802
|
var t3, n3, r3, a3;
|
|
7777
|
-
let o3 = e6.name.toLowerCase(), l3 = (t3 = M_[o3]) == null ? "\u2605" : t3, u3 = (n3 = e6.sign) == null ? c2(e6.longitude) : n3, d3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), p3 =
|
|
7803
|
+
let o3 = e6.name.toLowerCase(), l3 = (t3 = M_[o3]) == null ? "\u2605" : t3, u3 = (n3 = e6.sign) == null ? c2(e6.longitude) : n3, d3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), p3 = My.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
|
|
7778
7804
|
return '<tr class="'.concat(p3 ? "extended-row" : "", '" data-planet="').concat(o3, '">\n <td><span class="planet-sym">').concat(l3, "</span> ").concat(s2(e6.name)).concat(m2, "</td>\n <td>").concat(d3, "\xB0 ").concat(u3, " ").concat(String(f3).padStart(2, "0"), "\u2032</td>\n <td>H").concat((a3 = e6.house) == null ? "\u2013" : a3, "</td>\n <td>").concat(h2 > 0 ? h2 : "\u2013", "</td>\n </tr>");
|
|
7779
7805
|
}).join(""), u2 = "| Body | Sign | Degree | House | Retrograde |\n| --- | --- | --- | --- | --- |\n" + r2.map((e6) => {
|
|
7780
7806
|
var t3;
|
|
7781
7807
|
let n3 = (t3 = e6.sign) == null ? c2(e6.longitude) : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), a3 = e6.house == null ? "\u2013" : "H".concat(e6.house), o3 = e6.retrograde ? "\u211E" : "";
|
|
7782
7808
|
return "| ".concat(s2(e6.name), " | ").concat(n3, " | ").concat(r3, "\xB0 ").concat(String(i3).padStart(2, "0"), "\u2032 | ").concat(a3, " | ").concat(o3, " |");
|
|
7783
7809
|
}).join("\n");
|
|
7784
|
-
|
|
7785
|
-
let d2 =
|
|
7810
|
+
xy.innerHTML = '\n <div class="overview-header">\n <button class="overview-toggle" aria-expanded="false">\n <span class="overview-chevron">\u25B6</span>\n Planet Positions ('.concat(r2.length, ')\n </button>\n <button class="overview-copy" type="button" title="Copy positions as a Markdown table">Copy</button>\n </div>\n <div class="overview-body">\n <table class="overview-tbl">\n <thead><tr><th>Body</th><th>Position</th><th>House</th><th>Asp</th></tr></thead>\n <tbody>').concat(l2, "</tbody>\n </table>\n </div>\n "), xy.removeAttribute("hidden");
|
|
7811
|
+
let d2 = xy.querySelector(".overview-copy");
|
|
7786
7812
|
d2 && d2.addEventListener("click", async (e6) => {
|
|
7787
7813
|
e6.stopPropagation();
|
|
7788
7814
|
try {
|
|
@@ -7792,14 +7818,14 @@ function ky(e5, t2) {
|
|
|
7792
7818
|
d2.textContent = "Copy", d2.classList.remove("copied");
|
|
7793
7819
|
}, 1600);
|
|
7794
7820
|
} catch (e7) {
|
|
7795
|
-
|
|
7821
|
+
Py("Copy unavailable");
|
|
7796
7822
|
}
|
|
7797
7823
|
});
|
|
7798
|
-
let f2 =
|
|
7824
|
+
let f2 = xy.querySelector(".overview-toggle"), p2 = xy.querySelector(".overview-body");
|
|
7799
7825
|
f2 == null || f2.addEventListener("click", () => {
|
|
7800
7826
|
let e6 = f2.getAttribute("aria-expanded") === "true";
|
|
7801
7827
|
f2.setAttribute("aria-expanded", e6 ? "false" : "true"), p2.classList.toggle("open", !e6);
|
|
7802
|
-
}),
|
|
7828
|
+
}), xy.querySelectorAll("tbody tr").forEach((e6) => {
|
|
7803
7829
|
var t3;
|
|
7804
7830
|
let n3 = (t3 = e6.dataset.planet) == null ? "" : t3;
|
|
7805
7831
|
n3 && (e6.addEventListener("mouseenter", () => {
|
|
@@ -7811,7 +7837,7 @@ function ky(e5, t2) {
|
|
|
7811
7837
|
let t4 = document.querySelector("svg");
|
|
7812
7838
|
t4 && (t4.querySelectorAll(".planet-glyph-group").forEach((e7) => {
|
|
7813
7839
|
var t5;
|
|
7814
|
-
let n4 =
|
|
7840
|
+
let n4 = My.has((t5 = e7.dataset.planet) == null ? "" : t5);
|
|
7815
7841
|
e7.style.opacity = n4 ? "0.65" : "1";
|
|
7816
7842
|
}), e6.classList.remove("active-row"));
|
|
7817
7843
|
}), e6.addEventListener("click", () => {
|
|
@@ -7822,7 +7848,7 @@ function ky(e5, t2) {
|
|
|
7822
7848
|
}));
|
|
7823
7849
|
});
|
|
7824
7850
|
}
|
|
7825
|
-
function
|
|
7851
|
+
function Py(e5) {
|
|
7826
7852
|
var t2;
|
|
7827
7853
|
(t2 = document.getElementById("copy-toast")) == null || t2.remove();
|
|
7828
7854
|
let n2 = document.createElement("div");
|
|
@@ -7830,56 +7856,56 @@ function Ay(e5) {
|
|
|
7830
7856
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7831
7857
|
}, 2500);
|
|
7832
7858
|
}
|
|
7833
|
-
var
|
|
7834
|
-
function
|
|
7835
|
-
if (!
|
|
7859
|
+
var Fy = null;
|
|
7860
|
+
function Iy(e5, t2, n2) {
|
|
7861
|
+
if (!yy) return;
|
|
7836
7862
|
if (e5.length === 0) {
|
|
7837
|
-
|
|
7863
|
+
yy.setAttribute("hidden", ""), yy.innerHTML = "";
|
|
7838
7864
|
return;
|
|
7839
7865
|
}
|
|
7840
7866
|
let r2 = { "T-Square": "#e08a52", "Grand Trine": "#52a8e0", "Grand Cross": "#e05252", Stellium: "#9a7fd4", Yod: "#52c07a", Kite: "#c0b052" };
|
|
7841
|
-
if (
|
|
7867
|
+
if (yy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
|
|
7842
7868
|
var n3;
|
|
7843
7869
|
let i2 = (n3 = r2[e6.name]) == null ? "#888" : n3;
|
|
7844
7870
|
return '\n <button class="pattern-pill"\n data-idx="'.concat(t3, '"\n data-color="').concat(i2, '"\n style="color:').concat(i2, ";border-color:").concat(i2, '"\n title="').concat(e6.description, '">\n ').concat(e6.name, "\n </button>\n ");
|
|
7845
|
-
}).join(""), "\n "),
|
|
7871
|
+
}).join(""), "\n "), yy.removeAttribute("hidden"), !yy.querySelector(".pattern-ask-claude-btn")) {
|
|
7846
7872
|
let t3 = document.createElement("button");
|
|
7847
|
-
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728
|
|
7873
|
+
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Interpret", t3.style.display = "none", yy.appendChild(t3), t3.addEventListener("click", () => {
|
|
7848
7874
|
var n3;
|
|
7849
|
-
let r3 =
|
|
7875
|
+
let r3 = Fy;
|
|
7850
7876
|
if (r3 === null) return;
|
|
7851
7877
|
let i2 = e5[r3];
|
|
7852
|
-
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026",
|
|
7878
|
+
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", Xy({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
|
|
7853
7879
|
t3.textContent = "\u2713 Sent", setTimeout(() => {
|
|
7854
|
-
t3.textContent = "\u2728
|
|
7880
|
+
t3.textContent = "\u2728 Interpret", t3.disabled = false;
|
|
7855
7881
|
}, 2500);
|
|
7856
7882
|
}).catch(() => {
|
|
7857
7883
|
t3.textContent = "\u26A0 Failed", t3.disabled = false;
|
|
7858
7884
|
});
|
|
7859
7885
|
});
|
|
7860
7886
|
}
|
|
7861
|
-
|
|
7887
|
+
yy.querySelectorAll(".pattern-pill").forEach((r3) => {
|
|
7862
7888
|
r3.addEventListener("click", () => {
|
|
7863
7889
|
var i2;
|
|
7864
|
-
let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 =
|
|
7865
|
-
|
|
7890
|
+
let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = yy.querySelector(".pattern-ask-claude-btn");
|
|
7891
|
+
Fy === a2 ? (Fy = null, Nv(), c2 && (c2.style.display = "none"), yy.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
7866
7892
|
var t3;
|
|
7867
7893
|
e6.classList.remove("active");
|
|
7868
7894
|
let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
|
|
7869
7895
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
7870
|
-
})) : (
|
|
7896
|
+
})) : (Fy = a2, yy.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
7871
7897
|
var t3;
|
|
7872
7898
|
e6.classList.remove("active");
|
|
7873
7899
|
let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
|
|
7874
7900
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
7875
|
-
}), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, jv(o2.planets, o2.aspectKeys), t2 && n2 != null && (Lv(), Iv(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728
|
|
7901
|
+
}), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, jv(o2.planets, o2.aspectKeys), t2 && n2 != null && (Lv(), Iv(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Interpret", c2.disabled = false));
|
|
7876
7902
|
});
|
|
7877
7903
|
});
|
|
7878
7904
|
}
|
|
7879
|
-
var
|
|
7880
|
-
function
|
|
7905
|
+
var Ly = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], Ry = true, zy = 8, By = "true";
|
|
7906
|
+
function Vy() {
|
|
7881
7907
|
var e5;
|
|
7882
|
-
if (!
|
|
7908
|
+
if (!by) return;
|
|
7883
7909
|
let t2 = (() => {
|
|
7884
7910
|
let e6 = $ == null ? void 0 : $.planets, t3 = [];
|
|
7885
7911
|
Array.isArray(e6) ? e6.forEach((e7) => {
|
|
@@ -7889,9 +7915,9 @@ function Ly() {
|
|
|
7889
7915
|
let n3 = t3.some((e7) => e7 === "north node" || e7 === "north node (mean)" || e7 === "mean node"), r3 = t3.some((e7) => e7 === "true node" || e7 === "north node (true)");
|
|
7890
7916
|
return n3 && r3;
|
|
7891
7917
|
})();
|
|
7892
|
-
G_(
|
|
7893
|
-
let n2 = t2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(
|
|
7894
|
-
|
|
7918
|
+
G_(By);
|
|
7919
|
+
let n2 = t2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(By === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(By === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
|
|
7920
|
+
Ry = true, by.innerHTML = '\n <div class="asp-panel">\n <div class="asp-section">\n <span class="asp-section-label">Aspects</span>\n <button class="aspect-toggle-btn active" id="cw-aspect-vis-toggle"\n title="Toggle all natal aspect lines">\n <span class="toggle-icon">\u2295</span> Natal aspects\n </button>\n </div>\n <div class="asp-section">\n <span class="asp-section-label">Orb</span>\n '.concat(Ly.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === zy ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
|
|
7895
7921
|
let r2 = q_($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
|
|
7896
7922
|
for (let e6 of r2) {
|
|
7897
7923
|
let t3 = e6.name.toLowerCase();
|
|
@@ -7907,83 +7933,83 @@ function Ly() {
|
|
|
7907
7933
|
var t3;
|
|
7908
7934
|
return { glyph: (t3 = F_[e6]) == null ? "" : t3, label: Kv(e6) };
|
|
7909
7935
|
}).filter((e6) => e6.glyph);
|
|
7910
|
-
|
|
7936
|
+
by.insertAdjacentHTML("beforeend", qv([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), by.removeAttribute("hidden");
|
|
7911
7937
|
let s2 = document.getElementById("cw-aspect-vis-toggle");
|
|
7912
7938
|
s2 == null || s2.addEventListener("click", () => {
|
|
7913
|
-
|
|
7914
|
-
}),
|
|
7939
|
+
Ry = !Ry, Rv(Ry), s2.classList.toggle("active", Ry), s2.querySelector(".toggle-icon").textContent = Ry ? "\u2295" : "\u2296";
|
|
7940
|
+
}), by.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
|
|
7915
7941
|
e6.addEventListener("click", () => {
|
|
7916
7942
|
var t3;
|
|
7917
7943
|
let n3 = parseFloat((t3 = e6.dataset.orb) == null ? "8" : t3);
|
|
7918
|
-
n3 !==
|
|
7944
|
+
n3 !== zy && (zy = n3, by.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), zv(n3));
|
|
7919
7945
|
});
|
|
7920
|
-
}),
|
|
7946
|
+
}), by.querySelectorAll(".node-btn").forEach((e6) => {
|
|
7921
7947
|
e6.addEventListener("click", () => {
|
|
7922
7948
|
let t3 = e6.dataset.node === "mean" ? "mean" : "true";
|
|
7923
|
-
t3 ===
|
|
7949
|
+
t3 === By || !$ || (By = t3, G_(t3), ky($));
|
|
7924
7950
|
});
|
|
7925
7951
|
});
|
|
7926
7952
|
}
|
|
7927
|
-
async function
|
|
7928
|
-
if (
|
|
7953
|
+
async function Hy(e5, t2) {
|
|
7954
|
+
if (Ey) try {
|
|
7929
7955
|
let n2 = "[Chart Wheel] Selected ".concat(e5, " \u2014 ").concat(Object.entries(t2).filter(([, e6]) => e6 != null && e6 !== false && e6 !== "").map(([e6, t3]) => "".concat(e6, ": ").concat(t3)).join(", "));
|
|
7930
|
-
await
|
|
7956
|
+
await Cy.updateModelContext({ content: [{ type: "text", text: n2 }] });
|
|
7931
7957
|
} catch (e6) {
|
|
7932
7958
|
console.warn("[ChartWheel] \u26A0\uFE0F updateModelContext failed:", e6);
|
|
7933
7959
|
}
|
|
7934
7960
|
}
|
|
7935
|
-
async function
|
|
7961
|
+
async function Uy(e5) {
|
|
7936
7962
|
var t2, n2, r2, i2;
|
|
7937
|
-
|
|
7963
|
+
Fy = null, yy == null || yy.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
7938
7964
|
var t3;
|
|
7939
7965
|
e6.classList.remove("active");
|
|
7940
7966
|
let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
|
|
7941
7967
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
7942
|
-
}), await
|
|
7968
|
+
}), await Hy("planet", { planet: e5.name, longitude: e5.longitude, sign: (t2 = e5.sign) == null ? null : t2, house: (n2 = e5.house) == null ? null : n2, retrograde: (r2 = e5.retrograde) == null ? false : r2, speed: (i2 = e5.speed) == null ? null : i2 });
|
|
7943
7969
|
}
|
|
7944
|
-
async function
|
|
7970
|
+
async function Wy(e5) {
|
|
7945
7971
|
var t2, n2;
|
|
7946
|
-
await
|
|
7972
|
+
await Hy("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
|
|
7947
7973
|
}
|
|
7948
|
-
async function
|
|
7974
|
+
async function Gy(e5) {
|
|
7949
7975
|
var t2, n2, r2, i2;
|
|
7950
|
-
await
|
|
7976
|
+
await Hy("aspect", { planet1: e5.planet1, planet2: e5.planet2, aspect_type: (t2 = e5.type) == null ? null : t2, orb: (n2 = e5.orb) == null ? null : n2, applying: (r2 = e5.applying) == null ? null : r2, angle: (i2 = e5.angle) == null ? null : i2 });
|
|
7951
7977
|
}
|
|
7952
|
-
function
|
|
7978
|
+
function Ky() {
|
|
7953
7979
|
return async (e5) => {
|
|
7954
7980
|
try {
|
|
7955
7981
|
var t2, n2;
|
|
7956
|
-
let r2 = await
|
|
7982
|
+
let r2 = await Cy.createSamplingMessage({ messages: [{ role: "user", content: { type: "text", text: "You are interpreting a specific element in a natal chart. Be specific to the chart data \u2014 never generic. 2-3 sentences max.\n\nUser Request: ".concat(e5) } }], systemPrompt: "You are a professional Western astrologer giving a focused natal interpretation. Be specific to the chart data provided \u2014 never generic. Insightful and concise.", maxTokens: 300 });
|
|
7957
7983
|
return (t2 = r2 == null || (n2 = r2.content) == null ? void 0 : n2.text) == null ? null : t2;
|
|
7958
7984
|
} catch (e6) {
|
|
7959
7985
|
return console.error("[ChartWheel] Sampling failed:", e6), "Unable to load interpretation right now.";
|
|
7960
7986
|
}
|
|
7961
7987
|
};
|
|
7962
7988
|
}
|
|
7963
|
-
async function
|
|
7989
|
+
async function qy(e5) {
|
|
7964
7990
|
try {
|
|
7965
|
-
(await
|
|
7991
|
+
(await Cy.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
|
|
7966
7992
|
} catch (e6) {
|
|
7967
7993
|
console.error("[ChartWheel] sendMessage failed:", e6);
|
|
7968
7994
|
}
|
|
7969
7995
|
}
|
|
7970
|
-
async function
|
|
7996
|
+
async function Jy() {
|
|
7971
7997
|
var e5, t2, n2, r2;
|
|
7972
7998
|
if (!$) return;
|
|
7973
7999
|
let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = q_(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
|
|
7974
8000
|
var t3;
|
|
7975
8001
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
|
|
7976
8002
|
}).slice(0, 8).map((e6) => " \u2022 ".concat(e6.planet1, " ").concat(e6.type, " ").concat(e6.planet2, " (").concat(Number(e6.orb).toFixed(1), "\xB0, ").concat(e6.applying ? "applying" : "separating", ")")).join("\n") || " \u2022 No major aspects found";
|
|
7977
|
-
await
|
|
8003
|
+
await qy("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
|
|
7978
8004
|
var t3;
|
|
7979
8005
|
return " \u2022 ".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? ", House ".concat(e6.house) : "").concat(e6.retrograde ? " \u211E" : "");
|
|
7980
8006
|
}).join("\n"), "\n\nMajor aspects:\n").concat(c2, "\n\nCover: (1) Core identity and soul purpose (Sun, Moon, Ascendant), (2) The chart's dominant element, modality, and overall signature, (3) The most significant aspects and their psychological themes, (4) Key life areas of focus and challenge, (5) A practical synthesis \u2014 who is this person and what is their path?"));
|
|
7981
8007
|
}
|
|
7982
|
-
async function
|
|
8008
|
+
async function Yy() {
|
|
7983
8009
|
var e5, t2, n2, r2;
|
|
7984
8010
|
if (!$) return;
|
|
7985
8011
|
let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5;
|
|
7986
|
-
await
|
|
8012
|
+
await qy("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(q_(i2.planets).slice(0, 4).map((e6) => {
|
|
7987
8013
|
var t3;
|
|
7988
8014
|
return "".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? " H".concat(e6.house) : "");
|
|
7989
8015
|
}).join(", ") || "unknown placements", ". Major aspects: ").concat(((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
|
|
@@ -7991,7 +8017,7 @@ async function Gy() {
|
|
|
7991
8017
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
|
|
7992
8018
|
}).slice(0, 5).map((e6) => "".concat(e6.planet1, " ").concat(e6.type, " ").concat(e6.planet2, " (").concat(Number(e6.orb).toFixed(1), "\xB0)")).join(", ") || "none detected", ".\n\nBased on this chart, please suggest 3-4 specific, insightful questions I could ask to understand this person more deeply \u2014 such as how particular placements manifest in real life, the most significant aspect dynamics, or how to integrate the chart's core tensions. Present each as a tappable question I can ask you."));
|
|
7993
8019
|
}
|
|
7994
|
-
async function
|
|
8020
|
+
async function Xy(e5) {
|
|
7995
8021
|
let t2 = "";
|
|
7996
8022
|
if (e5.type === "planet") {
|
|
7997
8023
|
var n2;
|
|
@@ -8019,50 +8045,53 @@ async function Ky(e5) {
|
|
|
8019
8045
|
let n3 = e5.data;
|
|
8020
8046
|
t2 = "Interpret the ".concat(n3.angle, " at ").concat(n3.position, " (").concat(n3.sign, " \xB7 ").concat(n3.element, " \xB7 ").concat(n3.modality, ") in this natal chart. Give a focused interpretation of what this angle represents for the native \u2014 identity, life direction, relationships, or roots depending on which angle \u2014 and how the sign on the angle shapes that expression.");
|
|
8021
8047
|
}
|
|
8022
|
-
if (t2)
|
|
8023
|
-
|
|
8024
|
-
|
|
8025
|
-
|
|
8026
|
-
|
|
8048
|
+
if (t2) {
|
|
8049
|
+
t2 = sy(t2, $ == null ? void 0 : $._birth_params, "Natal chart");
|
|
8050
|
+
try {
|
|
8051
|
+
let e6 = await Cy.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
|
|
8052
|
+
if (e6.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e6), Error("Host rejected message");
|
|
8053
|
+
} catch (e6) {
|
|
8054
|
+
throw console.error("[ChartWheel] \u274C sendMessage failed:", e6), e6;
|
|
8055
|
+
}
|
|
8027
8056
|
}
|
|
8028
8057
|
}
|
|
8029
|
-
async function
|
|
8058
|
+
async function Zy(e5) {
|
|
8030
8059
|
if (!($ != null && $._birth_params)) {
|
|
8031
|
-
Wv(
|
|
8060
|
+
Wv(vy, wy);
|
|
8032
8061
|
return;
|
|
8033
8062
|
}
|
|
8034
8063
|
try {
|
|
8035
8064
|
var t2, n2, r2, i2;
|
|
8036
|
-
let a2 = ry(await
|
|
8037
|
-
a2 ? ($ = a2,
|
|
8065
|
+
let a2 = ry(await Cy.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: $._birth_params.datetime, timezone: (t2 = $._birth_params.timezone) == null ? void 0 : t2, latitude: (n2 = $._birth_params.latitude) == null ? void 0 : n2, longitude: (r2 = $._birth_params.longitude) == null ? void 0 : r2, location: (i2 = $._birth_params.location) == null ? void 0 : i2, house_system: e5 } }));
|
|
8066
|
+
a2 ? ($ = a2, wy = e5, ky(a2)) : Wv(vy, wy);
|
|
8038
8067
|
} catch (e6) {
|
|
8039
|
-
console.error("[Chart] Recalculate failed:", e6), Wv(
|
|
8068
|
+
console.error("[Chart] Recalculate failed:", e6), Wv(vy, wy);
|
|
8040
8069
|
}
|
|
8041
8070
|
}
|
|
8042
|
-
var
|
|
8043
|
-
function
|
|
8044
|
-
|
|
8071
|
+
var Qy;
|
|
8072
|
+
function $y() {
|
|
8073
|
+
Qy && (clearTimeout(Qy), Qy = void 0);
|
|
8045
8074
|
}
|
|
8046
|
-
function
|
|
8047
|
-
|
|
8075
|
+
function eb(e5, t2) {
|
|
8076
|
+
$y(), my.setAttribute("hidden", ""), ly({ container: hy, message: e5, onRetry: t2 });
|
|
8048
8077
|
}
|
|
8049
|
-
function
|
|
8050
|
-
|
|
8051
|
-
|
|
8052
|
-
}, 3e4),
|
|
8078
|
+
function tb() {
|
|
8079
|
+
$y(), hy.setAttribute("hidden", ""), my.removeAttribute("hidden"), Qy = setTimeout(() => {
|
|
8080
|
+
eb("The chart didn't load. Tap to try again.", tb);
|
|
8081
|
+
}, 3e4), Cy.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
|
|
8053
8082
|
});
|
|
8054
8083
|
}
|
|
8055
|
-
|
|
8056
|
-
|
|
8084
|
+
dy(Cy, { loadingEl: my, contentEl: hy, statusFn: Oy, paramControls: () => Ty }), Qy = setTimeout(() => {
|
|
8085
|
+
eb("Chart data is taking longer than expected.", tb);
|
|
8057
8086
|
}, 3e4), (async () => {
|
|
8058
8087
|
try {
|
|
8059
|
-
await
|
|
8060
|
-
let e5 =
|
|
8061
|
-
|
|
8062
|
-
$ &&
|
|
8063
|
-
}), $ &&
|
|
8088
|
+
await Cy.connect();
|
|
8089
|
+
let e5 = Cy.getHostCapabilities();
|
|
8090
|
+
Ey = !!(e5 != null && e5.modelContext), Dy = !!(e5 != null && e5.sampling), uy(Cy, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), py(Cy), h_(Cy, () => {
|
|
8091
|
+
$ && ky($);
|
|
8092
|
+
}), $ && ky($);
|
|
8064
8093
|
} catch (e5) {
|
|
8065
|
-
console.error("[ChartWheel] \u274C app.connect() FAILED:", e5),
|
|
8094
|
+
console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), eb("The chart didn't load. Tap to try again.", tb);
|
|
8066
8095
|
}
|
|
8067
8096
|
})();
|
|
8068
8097
|
</script>
|