@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/bodygraph.html
CHANGED
|
@@ -6598,7 +6598,7 @@ function m_() {
|
|
|
6598
6598
|
}
|
|
6599
6599
|
function h_(e5, t2, n2, r2, i2, a2) {
|
|
6600
6600
|
var o2;
|
|
6601
|
-
let s2 = i_ ? '<button class="ask-claude-btn" id="hd-ask-claude-btn">
|
|
6601
|
+
let s2 = i_ ? '<button class="ask-claude-btn" id="hd-ask-claude-btn">Interpret</button>' : "", c2 = a2 ? '<div class="hd-popup-body">'.concat(a2, "</div>") : "", l2 = '\n <div class="hd-popup-header">\n <span class="hd-popup-icon">'.concat(__(t2), '</span>\n <div class="hd-popup-title">\n <strong>').concat(__(n2), '</strong>\n <div class="hd-popup-sub">').concat(__(r2), '</div>\n </div>\n <button class="hd-popup-close" id="hd-popup-close">\u2715</button>\n </div>\n ').concat(c2, "\n ").concat(s2, "\n "), u2 = document.querySelector("#fs-bottom-bar [data-column='right']");
|
|
6602
6602
|
if (u2 && document.body.classList.contains("is-fullscreen")) {
|
|
6603
6603
|
var d2;
|
|
6604
6604
|
let e6 = u2.querySelector(".hd-detail-panel");
|
|
@@ -6628,7 +6628,7 @@ function g_(e5, t2) {
|
|
|
6628
6628
|
let r2 = Object.fromEntries(Object.entries(t2.data).filter(([e6, t3]) => t3 != null && t3 !== "" && t3 !== 0)), i2 = { type: t2.type, data: r2 };
|
|
6629
6629
|
i_(i2).then(() => {
|
|
6630
6630
|
n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
|
|
6631
|
-
n3.textContent = "
|
|
6631
|
+
n3.textContent = "Interpret", n3.classList.remove("sent"), n3.disabled = false;
|
|
6632
6632
|
}, 2500);
|
|
6633
6633
|
}).catch(() => {
|
|
6634
6634
|
n3.textContent = "Failed \u2014 retry", n3.classList.remove("sending"), n3.classList.add("error"), n3.disabled = false;
|
|
@@ -6639,7 +6639,7 @@ function __(e5) {
|
|
|
6639
6639
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
6640
6640
|
}
|
|
6641
6641
|
function v_(e5, t2, n2, r2, i2, a2) {
|
|
6642
|
-
let o2 = (e6, t3) => t3 ? '<span class="info-value interactive-text" data-ask="true" data-topic="'.concat(__(e6), '" data-val="').concat(__(t3), '" tabindex="0" role="button" title="
|
|
6642
|
+
let o2 = (e6, t3) => t3 ? '<span class="info-value interactive-text" data-ask="true" data-topic="'.concat(__(e6), '" data-val="').concat(__(t3), '" tabindex="0" role="button" title="Interpret this">').concat(__(t3), "</span>") : '<span class="info-value">None</span>';
|
|
6643
6643
|
return '\n <div class="info-row"><span class="info-label">Type</span>'.concat(o2("Type", e5), '</div>\n <div class="info-row"><span class="info-label">Profile</span>').concat(o2("Profile", t2), '</div>\n <div class="info-row"><span class="info-label">Authority</span>').concat(o2("Authority", n2), '</div>\n <div class="info-row"><span class="info-label">Definition</span>').concat(o2("Definition", r2), '</div>\n <div class="info-row"><span class="info-label">Cross</span>').concat(o2("Incarnation Cross", i2), '</div>\n <div class="info-row"><span class="info-label">Defined</span><span class="info-value">').concat(a2.length > 0 ? a2.map(__).join(", ") : "None", "</span></div>\n ");
|
|
6644
6644
|
}
|
|
6645
6645
|
function y_(e5, t2, n2, r2) {
|
|
@@ -7019,13 +7019,38 @@ var E_ = class e4 {
|
|
|
7019
7019
|
}
|
|
7020
7020
|
};
|
|
7021
7021
|
o(E_, "comboSeq", 0);
|
|
7022
|
-
var D_ =
|
|
7023
|
-
function
|
|
7022
|
+
var D_ = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
|
|
7023
|
+
function O_(e5, t2) {
|
|
7024
|
+
if (!e5) return null;
|
|
7025
|
+
let n2 = D_.exec(e5.trim());
|
|
7026
|
+
if (n2) {
|
|
7027
|
+
let [, e6, t3, r3, i2, a2, o2] = n2, s2 = new Date(Date.UTC(+e6, t3 - 1, +r3, +i2, +a2, o2 ? +o2 : 0));
|
|
7028
|
+
return isNaN(s2.getTime()) ? null : { date: s2, timeZone: "UTC" };
|
|
7029
|
+
}
|
|
7030
|
+
let r2 = new Date(e5);
|
|
7031
|
+
return isNaN(r2.getTime()) ? null : { date: r2, timeZone: t2 || "UTC" };
|
|
7032
|
+
}
|
|
7033
|
+
function k_(e5) {
|
|
7034
|
+
var t2;
|
|
7035
|
+
if (!e5) return "";
|
|
7036
|
+
let n2 = [], r2 = (t2 = e5.location) == null ? void 0 : t2.trim();
|
|
7037
|
+
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) {
|
|
7038
|
+
let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ? O_(e5.datetime, e5.timezone) : null;
|
|
7039
|
+
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);
|
|
7040
|
+
}
|
|
7041
|
+
return n2.join(" \xB7 ");
|
|
7042
|
+
}
|
|
7043
|
+
function A_(e5, t2, n2 = "Chart") {
|
|
7044
|
+
let r2 = k_(t2);
|
|
7045
|
+
return r2 ? "".concat(n2, ": ").concat(r2, "\n\n").concat(e5) : e5;
|
|
7046
|
+
}
|
|
7047
|
+
var j_ = { "chart-wheel": { stripIcon: "\u2726", stripTitle: "About the Natal Chart", stripHints: ["Click any <strong>planet</strong> for a deep placement reading", "Click any <strong>aspect line</strong> for its dynamic interpretation", "Click any <strong>house cusp</strong> for house themes", "Use the <strong>date controls</strong> to move through time"], modalText: "This wheel is an exact celestial snapshot of the sky at a given moment and place \u2014 every planet, house, and aspect line is clickable." }, "bi-wheel": { stripIcon: "\u2295", stripTitle: "About the Bi-Wheel", stripHints: ["Click any <strong>inner planet</strong> for natal placement depth", "Click any <strong>outer planet</strong> for transit or synastry meaning", "Click a <strong>cross-aspect line</strong> for inter-chart dynamics", "Use the <strong>date controls</strong> to advance transits"], modalText: "Two charts are layered here \u2014 the inner wheel is the natal chart; the outer ring shows the second chart (transits or another person's planets)." }, bodygraph: { stripIcon: "\u25C8", stripTitle: "About the Bodygraph", stripHints: ["Click any <strong>center</strong> (defined or undefined) for its meaning", "Click any <strong>channel</strong> to explore its life theme", "Click any <strong>gate number</strong> for its I Ching hexagram reading", "Click a <strong>planet row</strong> in the sidebar for its HD role"], modalText: "The bodygraph is a living map of the energy centres, channels, and gates that define a Human Design chart." }, "vedic-chart": { stripIcon: "\u{1F549}", stripTitle: "About the Jyotish Chart", stripHints: ["Click any <strong>rashi cell</strong> for its themes and any planets placed there", "The <strong>diagonal mark</strong> shows the Lagna (Ascendant) rashi", "Use the <strong>action bar</strong> for a full chart interpretation", "Click <strong>Moon & Nakshatra</strong> for lunar mansion detail"], modalText: "This is a Vedic birth chart rendered as a South Indian Rashi grid \u2014 sidereal planetary placements by fixed sign." }, "transit-timeline": { stripIcon: "\u2604", stripTitle: "About the Transit Timeline", stripHints: ["Each entry is an <strong>exact transit hit</strong> \u2014 a transiting planet contacting a natal point", "Events are <strong>grouped by month</strong> in chronological order", "The <strong>\u211E marker</strong> flags a retrograde crossing", "Click any transit for a focused <strong>interpretation</strong>"], modalText: "This timeline lists upcoming transits to the natal chart \u2014 the exact dates outer-planet energies activate each placement." }, "moon-phase": { stripIcon: "\u263E", stripTitle: "About the Moon Phase Dial", stripHints: ["Click the <strong>Moon</strong> for its phase interpretation", "Click the <strong>Void-of-Course</strong> card when the Moon is VOC", "Use the <strong>date control</strong> to move the sky to any moment"], modalText: "The dial shows the Moon's live illumination, phase, sign, and void-of-course status for the selected moment." }, bazi: { stripIcon: "\u56DB", stripTitle: "About the BaZi Chart", stripHints: ["Click any <strong>pillar</strong> (Year, Month, Day, Hour) for its interpretation", "The <strong>Day Master</strong> is the core identity element", "The <strong>Wu Xing bar</strong> shows the Five Element balance"], modalText: "This BaZi (Four Pillars of Destiny) chart maps the Heavenly Stems and Earthly Branches present at a given moment of birth." } }, M_ = '\n .oe-welcome-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: oklch(0% 0 0 / 0.55);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: oe-fade-in 0.4s ease both;\n font-family: system-ui, sans-serif;\n }\n\n .oe-welcome-modal {\n /* Themed, not hardcoded: the title/text/hints below all resolve through\n var(--text\u2026), so a fixed dark surface here meant that once the light\n palette became reachable the modal rendered near-black text on a\n near-black card \u2014 1.09:1, effectively invisible. The fallback is the\n previous literal, and every app\'s dark --surface is oklch(11-12%), so\n dark rendering is unchanged. */\n background: var(--surface, oklch(11% 0.010 265));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n border-radius: 16px;\n padding: 32px;\n width: 90%;\n max-width: 440px;\n box-shadow: 0 20px 40px oklch(0% 0 0 / 0.55), inset 0 1px 0 oklch(100% 0 0 / 0.06);\n animation: oe-modal-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n @keyframes oe-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes oe-modal-in {\n from { opacity: 0; transform: scale(0.95) translateY(10px); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n\n .oe-welcome-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n }\n\n .oe-welcome-icon {\n font-size: 28px;\n color: var(--gold, oklch(72% 0.12 80));\n line-height: 1;\n text-shadow: 0 0 10px var(--gold-glow, oklch(72% 0.12 80 / 0.30));\n }\n\n .oe-welcome-title {\n font-size: 20px;\n font-weight: 600;\n color: var(--text, oklch(92% 0.006 265));\n margin: 0;\n letter-spacing: 0.02em;\n }\n\n .oe-welcome-text {\n font-size: 14.5px;\n line-height: 1.5;\n color: var(--text-secondary, oklch(68% 0.008 265));\n margin: 0;\n }\n\n .oe-welcome-hints {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin: 8px 0 12px 0;\n padding: 0;\n list-style: none;\n }\n\n .oe-welcome-hints li {\n font-size: 13.5px;\n line-height: 1.4;\n color: var(--text-secondary, oklch(68% 0.008 265));\n display: flex;\n align-items: flex-start;\n gap: 10px;\n opacity: 0;\n animation: oe-fade-in 0.4s ease forwards;\n }\n\n /* Stagger the hints */\n .oe-welcome-hints li:nth-child(1) { animation-delay: 0.15s; }\n .oe-welcome-hints li:nth-child(2) { animation-delay: 0.25s; }\n .oe-welcome-hints li:nth-child(3) { animation-delay: 0.35s; }\n .oe-welcome-hints li:nth-child(4) { animation-delay: 0.45s; }\n\n .oe-welcome-hints li::before {\n content: "\u2726";\n color: var(--gold-dim, oklch(52% 0.06 80));\n font-size: 12px;\n padding-top: 2px;\n }\n\n .oe-welcome-hints strong {\n color: var(--text, oklch(92% 0.006 265));\n font-weight: 600;\n }\n\n .oe-welcome-button {\n align-self: flex-end;\n background: var(--gold-subtle, oklch(72% 0.12 80 / 0.10));\n color: var(--gold, oklch(72% 0.12 80));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n padding: 10px 24px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.2s ease, border-color 0.2s ease;\n margin-top: 4px;\n }\n\n .oe-welcome-button:hover {\n background: oklch(72% 0.12 80 / 0.18);\n border-color: oklch(72% 0.12 80 / 0.40);\n }\n\n .oe-welcome-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n\n .oe-welcome-backdrop.is-dismissing {\n animation: oe-fade-out 0.3s ease forwards;\n }\n\n .oe-welcome-backdrop.is-dismissing .oe-welcome-modal {\n animation: oe-modal-out 0.3s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n }\n\n @keyframes oe-fade-out {\n to { opacity: 0; }\n }\n\n @keyframes oe-modal-out {\n to { opacity: 0; transform: scale(0.95) translateY(10px); }\n }\n';
|
|
7048
|
+
function N_() {
|
|
7024
7049
|
if (document.getElementById("oe-first-run-styles")) return;
|
|
7025
7050
|
let e5 = document.createElement("style");
|
|
7026
|
-
e5.id = "oe-first-run-styles", e5.textContent =
|
|
7051
|
+
e5.id = "oe-first-run-styles", e5.textContent = M_, document.head.appendChild(e5);
|
|
7027
7052
|
}
|
|
7028
|
-
function
|
|
7053
|
+
function P_(e5) {
|
|
7029
7054
|
let t2 = document.activeElement, n2 = document.createElement("div");
|
|
7030
7055
|
n2.className = "oe-welcome-backdrop";
|
|
7031
7056
|
let r2 = document.createElement("div");
|
|
@@ -7043,24 +7068,24 @@ function A_(e5) {
|
|
|
7043
7068
|
e6.key === "Escape" && (e6.preventDefault(), o2()), e6.key === "Tab" && (e6.preventDefault(), a2.focus());
|
|
7044
7069
|
}), requestAnimationFrame(() => a2.focus()), n2;
|
|
7045
7070
|
}
|
|
7046
|
-
function
|
|
7047
|
-
|
|
7048
|
-
let t2 =
|
|
7071
|
+
function F_(e5) {
|
|
7072
|
+
N_();
|
|
7073
|
+
let t2 = P_(j_[e5]);
|
|
7049
7074
|
document.body.appendChild(t2);
|
|
7050
7075
|
}
|
|
7051
|
-
var
|
|
7052
|
-
function
|
|
7076
|
+
var I_ = "\n .oe-info-button {\n position: fixed;\n top: 12px;\n right: 12px;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: var(--surface-2, oklch(16% 0.010 265));\n border: 1px solid var(--border-strong, oklch(30% 0.010 265));\n color: var(--text-secondary, oklch(68% 0.008 265));\n font: 600 14px/1 Georgia, serif;\n font-style: italic;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9998;\n transition: all 150ms ease;\n }\n\n .oe-info-button:hover {\n background: var(--surface, oklch(11% 0.010 265));\n border-color: var(--gold-dim, oklch(52% 0.06 80));\n color: var(--gold, oklch(72% 0.12 80));\n }\n\n .oe-info-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n";
|
|
7077
|
+
function L_() {
|
|
7053
7078
|
if (document.getElementById("oe-info-button-styles")) return;
|
|
7054
7079
|
let e5 = document.createElement("style");
|
|
7055
|
-
e5.id = "oe-info-button-styles", e5.textContent =
|
|
7080
|
+
e5.id = "oe-info-button-styles", e5.textContent = I_, document.head.appendChild(e5);
|
|
7056
7081
|
}
|
|
7057
|
-
function
|
|
7082
|
+
function R_(e5) {
|
|
7058
7083
|
if (document.getElementById("oe-info-button")) return;
|
|
7059
|
-
|
|
7084
|
+
L_();
|
|
7060
7085
|
let t2 = document.createElement("button");
|
|
7061
|
-
t2.id = "oe-info-button", t2.className = "oe-info-button", t2.setAttribute("aria-label", "About this chart"), t2.title = "About this chart", t2.textContent = "i", t2.addEventListener("click", () =>
|
|
7086
|
+
t2.id = "oe-info-button", t2.className = "oe-info-button", t2.setAttribute("aria-label", "About this chart"), t2.title = "About this chart", t2.textContent = "i", t2.addEventListener("click", () => F_(e5)), document.body.appendChild(t2);
|
|
7062
7087
|
}
|
|
7063
|
-
function
|
|
7088
|
+
function z_(e5) {
|
|
7064
7089
|
var t2;
|
|
7065
7090
|
if (!e5) return null;
|
|
7066
7091
|
if (e5.structuredContent != null && typeof e5.structuredContent == "object") return e5.structuredContent;
|
|
@@ -7073,45 +7098,45 @@ function F_(e5) {
|
|
|
7073
7098
|
}
|
|
7074
7099
|
return null;
|
|
7075
7100
|
}
|
|
7076
|
-
function
|
|
7101
|
+
function B_(e5) {
|
|
7077
7102
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7078
7103
|
}
|
|
7079
|
-
function
|
|
7080
|
-
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(
|
|
7081
|
-
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(
|
|
7104
|
+
function V_(e5) {
|
|
7105
|
+
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(B_(i2), "</button>") : "";
|
|
7106
|
+
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(B_(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
|
|
7082
7107
|
var o2;
|
|
7083
7108
|
(o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
|
|
7084
7109
|
}
|
|
7085
7110
|
}
|
|
7086
|
-
var
|
|
7087
|
-
function
|
|
7088
|
-
return
|
|
7111
|
+
var H_;
|
|
7112
|
+
function U_() {
|
|
7113
|
+
return H_ ? H_ === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
7089
7114
|
}
|
|
7090
|
-
function
|
|
7115
|
+
function W_(e5 = U_()) {
|
|
7091
7116
|
let t2 = e5 ? "dark" : "light";
|
|
7092
7117
|
return document.documentElement.setAttribute("data-theme", t2), t2;
|
|
7093
7118
|
}
|
|
7094
|
-
function
|
|
7095
|
-
|
|
7119
|
+
function G_(e5) {
|
|
7120
|
+
W_();
|
|
7096
7121
|
try {
|
|
7097
7122
|
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (t2) => {
|
|
7098
|
-
|
|
7123
|
+
H_ || e5 == null || e5(W_(t2.matches));
|
|
7099
7124
|
});
|
|
7100
7125
|
} catch (e6) {
|
|
7101
7126
|
}
|
|
7102
7127
|
}
|
|
7103
|
-
function
|
|
7128
|
+
function K_(e5, t2) {
|
|
7104
7129
|
var n2, r2;
|
|
7105
7130
|
let i2 = (e6) => {
|
|
7106
7131
|
let n3 = e6 == null ? void 0 : e6.theme;
|
|
7107
7132
|
if (n3 !== "light" && n3 !== "dark") return;
|
|
7108
|
-
|
|
7109
|
-
let r3 = document.documentElement.getAttribute("data-theme"), i3 =
|
|
7133
|
+
H_ = n3;
|
|
7134
|
+
let r3 = document.documentElement.getAttribute("data-theme"), i3 = W_(n3 === "dark");
|
|
7110
7135
|
i3 !== r3 && (t2 == null || t2(i3));
|
|
7111
7136
|
};
|
|
7112
7137
|
(n2 = e5.addEventListener) == null || n2.call(e5, "hostcontextchanged", i2), i2((r2 = e5.getHostContext) == null ? void 0 : r2.call(e5));
|
|
7113
7138
|
}
|
|
7114
|
-
function
|
|
7139
|
+
function q_(e5, t2, n2 = []) {
|
|
7115
7140
|
var r2, i2;
|
|
7116
7141
|
if (!t2 || t2.querySelector("#btn-fullscreen")) return;
|
|
7117
7142
|
let a2 = document.createElement("button");
|
|
@@ -7187,21 +7212,21 @@ function U_(e5, t2, n2 = []) {
|
|
|
7187
7212
|
let e6 = document.getElementById("fs-hint-banner");
|
|
7188
7213
|
e6 && e6.remove();
|
|
7189
7214
|
let t3 = document.createElement("div");
|
|
7190
|
-
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
|
|
7215
|
+
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(() => {
|
|
7191
7216
|
t3.style.opacity = "1";
|
|
7192
7217
|
}), setTimeout(() => {
|
|
7193
7218
|
t3.style.opacity = "0", setTimeout(() => t3.remove(), 350);
|
|
7194
7219
|
}, 4e3);
|
|
7195
7220
|
}
|
|
7196
7221
|
}
|
|
7197
|
-
function
|
|
7222
|
+
function J_(e5, t2) {
|
|
7198
7223
|
e5.ontoolcancelled = (e6) => {
|
|
7199
7224
|
var n2, r2, i2;
|
|
7200
7225
|
let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
|
|
7201
|
-
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),
|
|
7226
|
+
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), Y_(a2);
|
|
7202
7227
|
};
|
|
7203
7228
|
}
|
|
7204
|
-
function
|
|
7229
|
+
function Y_(e5) {
|
|
7205
7230
|
var t2;
|
|
7206
7231
|
(t2 = document.getElementById("cancel-toast")) == null || t2.remove();
|
|
7207
7232
|
let n2 = document.createElement("div");
|
|
@@ -7209,7 +7234,7 @@ function G_(e5) {
|
|
|
7209
7234
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7210
7235
|
}, 3e3);
|
|
7211
7236
|
}
|
|
7212
|
-
function
|
|
7237
|
+
function X_(e5) {
|
|
7213
7238
|
var t2;
|
|
7214
7239
|
function n2(e6) {
|
|
7215
7240
|
if (!e6) return;
|
|
@@ -7222,36 +7247,36 @@ function K_(e5) {
|
|
|
7222
7247
|
n2(e6);
|
|
7223
7248
|
});
|
|
7224
7249
|
}
|
|
7225
|
-
var
|
|
7226
|
-
function
|
|
7227
|
-
return e5 === "mandala" &&
|
|
7250
|
+
var Z_ = document.getElementById("loading-state"), Q_ = document.getElementById("bodygraph-container"), $_ = document.getElementById("info-panel"), ev = document.getElementById("controls-panel"), tv = document.getElementById("chart-status"), nv = document.getElementById("param-controls-container"), Z = new t_({ name: "Human Design Bodygraph Explorer", version: "1.0.0" }), Q = null, rv = null, iv = false, av = "dark", ov = false, $ = "graph", sv = false, cv = false, lv = false, uv = "quarter,zodiac,planets";
|
|
7251
|
+
function dv(e5) {
|
|
7252
|
+
return e5 === "mandala" && cv;
|
|
7228
7253
|
}
|
|
7229
|
-
function
|
|
7254
|
+
function fv() {
|
|
7230
7255
|
let e5 = Q == null ? void 0 : Q._birth_params;
|
|
7231
7256
|
return typeof (e5 == null ? void 0 : e5.latitude) == "number" && typeof (e5 == null ? void 0 : e5.longitude) == "number";
|
|
7232
7257
|
}
|
|
7233
|
-
function
|
|
7234
|
-
return e5 === "mandala" ? { layout: e5, rings: t2 ? "".concat(
|
|
7258
|
+
function pv(e5 = $, t2 = dv(e5)) {
|
|
7259
|
+
return e5 === "mandala" ? { layout: e5, rings: t2 ? "".concat(uv, ",houses") : uv } : { layout: e5 };
|
|
7235
7260
|
}
|
|
7236
|
-
var
|
|
7237
|
-
function
|
|
7261
|
+
var mv = {};
|
|
7262
|
+
function hv(e5, t2, n2) {
|
|
7238
7263
|
return "".concat(e5, ":").concat(t2, ":").concat(n2);
|
|
7239
7264
|
}
|
|
7240
|
-
function
|
|
7241
|
-
for (let e5 of Object.keys(
|
|
7265
|
+
function gv() {
|
|
7266
|
+
for (let e5 of Object.keys(mv)) delete mv[e5];
|
|
7242
7267
|
}
|
|
7243
|
-
function
|
|
7244
|
-
return
|
|
7268
|
+
function _v() {
|
|
7269
|
+
return W_();
|
|
7245
7270
|
}
|
|
7246
|
-
|
|
7247
|
-
async function
|
|
7248
|
-
if (e5 ===
|
|
7249
|
-
let t2 =
|
|
7271
|
+
G_((e5) => void vv(e5));
|
|
7272
|
+
async function vv(e5) {
|
|
7273
|
+
if (e5 === av || ov || !Q) return;
|
|
7274
|
+
let t2 = mv[hv($, e5, dv($))];
|
|
7250
7275
|
if (t2) {
|
|
7251
|
-
|
|
7276
|
+
av = e5, jv(t2);
|
|
7252
7277
|
return;
|
|
7253
7278
|
}
|
|
7254
|
-
|
|
7279
|
+
ov = true;
|
|
7255
7280
|
let n2 = Q._refetch;
|
|
7256
7281
|
try {
|
|
7257
7282
|
let t3;
|
|
@@ -7259,86 +7284,87 @@ async function mv(e5) {
|
|
|
7259
7284
|
else {
|
|
7260
7285
|
var r2, i2, a2, o2, s2;
|
|
7261
7286
|
let n3 = (r2 = Q._birth_params) == null ? { datetime: "" } : r2;
|
|
7262
|
-
t3 = await Z.callServerTool({ name: "bodygraph_recalculate", arguments: { datetime: n3.datetime, latitude: (i2 = n3.latitude) == null ? void 0 : i2, longitude: (a2 = n3.longitude) == null ? void 0 : a2, timezone: (o2 = n3.timezone) == null ? void 0 : o2, location: (s2 = n3.location) == null ? void 0 : s2, theme: e5, ...
|
|
7287
|
+
t3 = await Z.callServerTool({ name: "bodygraph_recalculate", arguments: { datetime: n3.datetime, latitude: (i2 = n3.latitude) == null ? void 0 : i2, longitude: (a2 = n3.longitude) == null ? void 0 : a2, timezone: (o2 = n3.timezone) == null ? void 0 : o2, location: (s2 = n3.location) == null ? void 0 : s2, theme: e5, ...pv() } });
|
|
7263
7288
|
}
|
|
7264
|
-
let c2 =
|
|
7265
|
-
c2 && (c2.type || c2.centers) ? (
|
|
7289
|
+
let c2 = Lv(z_(t3));
|
|
7290
|
+
c2 && (c2.type || c2.centers) ? (av = e5, mv[hv($, e5, dv($))] = c2, jv(c2)) : (console.error("[Bodygraph] Theme re-fetch returned no usable payload"), Cv("Couldn't switch theme \u2014 showing previous colors"));
|
|
7266
7291
|
} catch (e6) {
|
|
7267
|
-
console.error("[Bodygraph] Theme re-fetch failed:", e6),
|
|
7292
|
+
console.error("[Bodygraph] Theme re-fetch failed:", e6), Cv("Couldn't switch theme \u2014 showing previous colors");
|
|
7268
7293
|
} finally {
|
|
7269
|
-
|
|
7294
|
+
ov = false;
|
|
7270
7295
|
}
|
|
7271
7296
|
}
|
|
7272
|
-
async function
|
|
7273
|
-
if (!Q ||
|
|
7274
|
-
let e5 = $ === "graph" ? "mandala" : "graph", t2 =
|
|
7297
|
+
async function yv() {
|
|
7298
|
+
if (!Q || sv || ov) return;
|
|
7299
|
+
let e5 = $ === "graph" ? "mandala" : "graph", t2 = mv[hv(e5, av, dv(e5))];
|
|
7275
7300
|
if (t2) {
|
|
7276
|
-
$ = e5,
|
|
7301
|
+
$ = e5, jv(t2);
|
|
7277
7302
|
return;
|
|
7278
7303
|
}
|
|
7279
|
-
|
|
7304
|
+
sv = true;
|
|
7280
7305
|
let n2 = document.getElementById("hd-layout-btn");
|
|
7281
7306
|
n2 && (n2.disabled = true);
|
|
7282
7307
|
try {
|
|
7283
7308
|
let t3 = Q._refetch, n3;
|
|
7284
|
-
if (t3 != null && t3.tool) n3 = { name: t3.tool, arguments: { ...t3.args, theme:
|
|
7309
|
+
if (t3 != null && t3.tool) n3 = { name: t3.tool, arguments: { ...t3.args, theme: av, layout: e5 } };
|
|
7285
7310
|
else {
|
|
7286
7311
|
var r2, i2, a2, o2, s2;
|
|
7287
7312
|
let t4 = (r2 = Q._birth_params) == null ? { datetime: "" } : r2;
|
|
7288
|
-
n3 = { name: "bodygraph_recalculate", arguments: { datetime: t4.datetime, latitude: (i2 = t4.latitude) == null ? void 0 : i2, longitude: (a2 = t4.longitude) == null ? void 0 : a2, timezone: (o2 = t4.timezone) == null ? void 0 : o2, location: (s2 = t4.location) == null ? void 0 : s2, theme:
|
|
7313
|
+
n3 = { name: "bodygraph_recalculate", arguments: { datetime: t4.datetime, latitude: (i2 = t4.latitude) == null ? void 0 : i2, longitude: (a2 = t4.longitude) == null ? void 0 : a2, timezone: (o2 = t4.timezone) == null ? void 0 : o2, location: (s2 = t4.location) == null ? void 0 : s2, theme: av, ...pv(e5) } };
|
|
7289
7314
|
}
|
|
7290
|
-
let c2 =
|
|
7291
|
-
c2 && (c2.type || c2.centers) ? ($ = e5,
|
|
7315
|
+
let c2 = Lv(z_(await Z.callServerTool(n3)));
|
|
7316
|
+
c2 && (c2.type || c2.centers) ? ($ = e5, mv[hv($, av, dv($))] = c2, jv(c2)) : (console.error("[Bodygraph] Layout toggle returned no usable payload"), Cv("Couldn't switch layout \u2014 try again or check credits"));
|
|
7292
7317
|
} catch (e6) {
|
|
7293
|
-
console.error("[Bodygraph] Layout toggle failed:", e6),
|
|
7318
|
+
console.error("[Bodygraph] Layout toggle failed:", e6), Cv("Couldn't switch layout \u2014 try again or check credits");
|
|
7294
7319
|
} finally {
|
|
7295
|
-
|
|
7320
|
+
sv = false;
|
|
7296
7321
|
let e6 = document.getElementById("hd-layout-btn");
|
|
7297
7322
|
e6 && (e6.disabled = false);
|
|
7298
7323
|
}
|
|
7299
7324
|
}
|
|
7300
|
-
function
|
|
7301
|
-
|
|
7325
|
+
function bv() {
|
|
7326
|
+
cv && !fv() && (cv = false), rv == null || rv.syncExtraToggle({ checked: cv, available: $ === "mandala" && fv(), disabledTitle: $ === "mandala" ? "Add a birth location to draw houses" : "Switch to Mandala view to add house rings" });
|
|
7302
7327
|
}
|
|
7303
|
-
async function
|
|
7304
|
-
if (!Q || $ !== "mandala" ||
|
|
7305
|
-
|
|
7328
|
+
async function xv(e5) {
|
|
7329
|
+
if (!Q || $ !== "mandala" || lv) {
|
|
7330
|
+
bv();
|
|
7306
7331
|
return;
|
|
7307
7332
|
}
|
|
7308
|
-
let t2 =
|
|
7333
|
+
let t2 = mv[hv($, av, e5)];
|
|
7309
7334
|
if (t2) {
|
|
7310
|
-
|
|
7335
|
+
cv = e5, jv(t2);
|
|
7311
7336
|
return;
|
|
7312
7337
|
}
|
|
7313
|
-
|
|
7338
|
+
lv = true, rv == null || rv.syncExtraToggle({ available: false });
|
|
7314
7339
|
try {
|
|
7315
7340
|
var n2, r2, i2, a2, o2;
|
|
7316
|
-
let t3 = (n2 = Q._birth_params) == null ? { datetime: "" } : n2, s2 =
|
|
7317
|
-
s2 && (s2.type || s2.centers) ? (
|
|
7341
|
+
let t3 = (n2 = Q._birth_params) == null ? { datetime: "" } : n2, s2 = Lv(z_(await Z.callServerTool({ name: "bodygraph_recalculate", arguments: { datetime: t3.datetime, latitude: (r2 = t3.latitude) == null ? void 0 : r2, longitude: (i2 = t3.longitude) == null ? void 0 : i2, timezone: (a2 = t3.timezone) == null ? void 0 : a2, location: (o2 = t3.location) == null ? void 0 : o2, theme: av, ...pv($, e5) } })));
|
|
7342
|
+
s2 && (s2.type || s2.centers) ? (cv = e5, mv[hv($, av, e5)] = s2, jv(s2)) : (console.error("[Bodygraph] House ring toggle returned no usable payload"), Cv("Couldn't update house rings \u2014 try again or check credits"));
|
|
7318
7343
|
} catch (e6) {
|
|
7319
|
-
console.error("[Bodygraph] House ring toggle failed:", e6),
|
|
7344
|
+
console.error("[Bodygraph] House ring toggle failed:", e6), Cv("Couldn't update house rings \u2014 try again or check credits");
|
|
7320
7345
|
} finally {
|
|
7321
|
-
|
|
7346
|
+
lv = false, bv();
|
|
7322
7347
|
}
|
|
7323
7348
|
}
|
|
7324
|
-
async function
|
|
7349
|
+
async function Sv(e5) {
|
|
7350
|
+
e5 = A_(e5, Q == null ? void 0 : Q._birth_params, "Human Design chart");
|
|
7325
7351
|
try {
|
|
7326
7352
|
(await Z.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[Bodygraph] Host rejected sendMessage");
|
|
7327
7353
|
} catch (e6) {
|
|
7328
7354
|
console.error("[Bodygraph] sendMessage failed:", e6);
|
|
7329
7355
|
}
|
|
7330
7356
|
}
|
|
7331
|
-
function
|
|
7332
|
-
if (
|
|
7357
|
+
function Cv(e5) {
|
|
7358
|
+
if (tv) {
|
|
7333
7359
|
if (!e5) {
|
|
7334
|
-
|
|
7360
|
+
tv.classList.remove("visible");
|
|
7335
7361
|
return;
|
|
7336
7362
|
}
|
|
7337
|
-
|
|
7363
|
+
tv.textContent = "\xB7 ".concat(e5), tv.classList.add("visible");
|
|
7338
7364
|
}
|
|
7339
7365
|
}
|
|
7340
|
-
r_(
|
|
7341
|
-
async function
|
|
7366
|
+
r_(Cv);
|
|
7367
|
+
async function wv(e5) {
|
|
7342
7368
|
var t2, n2, r2, i2;
|
|
7343
7369
|
if (!Q) return;
|
|
7344
7370
|
let a2 = (t2 = Q.type) == null ? "Unknown" : t2, o2 = (n2 = Q.profile) == null ? "" : n2, s2 = (r2 = Q.authority) == null ? "" : r2, c2 = (i2 = Q.incarnation_cross) == null ? "" : i2, l2 = "";
|
|
@@ -7375,56 +7401,53 @@ async function bv(e5) {
|
|
|
7375
7401
|
}
|
|
7376
7402
|
return;
|
|
7377
7403
|
}
|
|
7378
|
-
l2 && await
|
|
7404
|
+
l2 && await Sv(l2);
|
|
7379
7405
|
}
|
|
7380
|
-
async function
|
|
7406
|
+
async function Tv() {
|
|
7381
7407
|
var e5, t2, n2, r2, i2, a2, o2;
|
|
7382
7408
|
if (!Q) return;
|
|
7383
|
-
let s2 = Q, c2 = (e5 = s2.type) == null ? "Unknown" : e5, l2 = (t2 = s2.profile) == null ? "" : t2, u2 = (n2 = s2.authority) == null ? "" : n2, d2 = (r2 = s2.incarnation_cross) == null ? "" : r2, f2 = (i2 = s2.definition) == null ? "" : i2, p2 = ((a2 = s2.centers) == null ? [] : a2).filter((e6) => e6.defined).map((e6) => e6.name).join(", ") || "none", m2 = ((o2 = s2.
|
|
7384
|
-
|
|
7385
|
-
return (t3 = e6.id) == null ? "".concat(e6.gate1, "-").concat(e6.gate2) : t3;
|
|
7386
|
-
}).join(", ") || "none";
|
|
7387
|
-
await vv("Please give me a complete Human Design reading for this chart.\n\nType: ".concat(c2, "\n") + (l2 ? "Profile: ".concat(l2, "\n") : "") + (u2 ? "Authority: ".concat(u2, "\n") : "") + (f2 ? "Definition: ".concat(f2, "\n") : "") + (d2 ? "Incarnation Cross: ".concat(d2, "\n") : "") + "Defined Centers: ".concat(p2, "\nDefined Channels: ").concat(m2, "\n\nCover: (1) Life theme and purpose of this Type, (2) Strategy and how it works practically, (3) Authority and how to make aligned decisions, (4) The defined channels as core personality traits, (5) Key shadows and conditioning to watch for, (6) A practical summary of how to live this design."));
|
|
7409
|
+
let s2 = Q, c2 = (e5 = s2.type) == null ? "Unknown" : e5, l2 = (t2 = s2.profile) == null ? "" : t2, u2 = (n2 = s2.authority) == null ? "" : n2, d2 = (r2 = s2.incarnation_cross) == null ? "" : r2, f2 = (i2 = s2.definition) == null ? "" : i2, p2 = ((a2 = s2.centers) == null ? [] : a2).filter((e6) => e6.defined).map((e6) => e6.name).join(", ") || "none", m2 = ((o2 = s2.active_channels) == null ? [] : o2).join(", ") || "none";
|
|
7410
|
+
await Sv("Please give me a complete Human Design reading for this chart.\n\nType: ".concat(c2, "\n") + (l2 ? "Profile: ".concat(l2, "\n") : "") + (u2 ? "Authority: ".concat(u2, "\n") : "") + (f2 ? "Definition: ".concat(f2, "\n") : "") + (d2 ? "Incarnation Cross: ".concat(d2, "\n") : "") + "Defined Centers: ".concat(p2, "\nDefined Channels: ").concat(m2, "\n\nCover: (1) Life theme and purpose of this Type, (2) Strategy and how it works practically, (3) Authority and how to make aligned decisions, (4) The defined channels as core personality traits, (5) Key shadows and conditioning to watch for, (6) A practical summary of how to live this design."));
|
|
7388
7411
|
}
|
|
7389
|
-
async function
|
|
7412
|
+
async function Ev() {
|
|
7390
7413
|
var e5, t2, n2, r2, i2;
|
|
7391
7414
|
if (!Q) return;
|
|
7392
7415
|
let a2 = Q, o2 = (e5 = a2.type) == null ? "Unknown" : e5, s2 = (t2 = a2.profile) == null ? "" : t2, c2 = (n2 = a2.authority) == null ? "" : n2, l2 = [...(r2 = a2.personality_gates) == null ? [] : r2, ...(i2 = a2.design_gates) == null ? [] : i2].slice(0, 6).map((e6) => {
|
|
7393
7416
|
var t3;
|
|
7394
7417
|
return typeof e6 == "number" ? "Gate ".concat(e6) : "Gate ".concat((t3 = e6.gate) == null ? e6 : t3);
|
|
7395
7418
|
}).join(", ") || "none";
|
|
7396
|
-
await
|
|
7419
|
+
await Sv("I'm exploring a Human Design Bodygraph for a ".concat(o2) + (s2 ? " with Profile ".concat(s2) : "") + (c2 ? " and ".concat(c2, " authority") : "") + ". Active gates include: ".concat(l2, ".\n\nBased on this design, please suggest 3-4 specific, insightful questions I could ask to understand this chart more deeply \u2014 such as how the type and authority work in daily life, what specific gates or channels mean, or how to live in alignment with this design. Present each as a tappable question I can ask you."));
|
|
7397
7420
|
}
|
|
7398
|
-
async function
|
|
7399
|
-
|
|
7421
|
+
async function Dv(e5) {
|
|
7422
|
+
iv && setTimeout(async () => {
|
|
7400
7423
|
try {
|
|
7401
7424
|
var t2, n2, r2;
|
|
7402
7425
|
let i2 = "User selected ".concat(e5.type, ": ").concat(JSON.stringify(e5.data, null, 2), "\nHD Type: ").concat((t2 = Q == null ? void 0 : Q.type) == null ? null : t2, "\nProfile: ").concat((n2 = Q == null ? void 0 : Q.profile) == null ? null : n2, "\nAuthority: ").concat((r2 = Q == null ? void 0 : Q.authority) == null ? null : r2);
|
|
7403
7426
|
await Z.updateModelContext({ content: [{ type: "text", text: i2 }] });
|
|
7404
7427
|
} catch (e6) {
|
|
7405
|
-
|
|
7428
|
+
iv = false;
|
|
7406
7429
|
}
|
|
7407
7430
|
}, 0);
|
|
7408
7431
|
}
|
|
7409
|
-
async function
|
|
7410
|
-
|
|
7432
|
+
async function Ov(e5, t2, n2) {
|
|
7433
|
+
Cv("".concat(t2 ? "\u25C9" : "\u25CB", " ").concat(e5, " Center (").concat(t2 ? "defined" : "undefined", ")")), Dv({ type: "center", data: { center_name: e5, defined: t2, active_gates: n2 } });
|
|
7411
7434
|
}
|
|
7412
|
-
async function
|
|
7413
|
-
|
|
7435
|
+
async function kv(e5, t2, n2) {
|
|
7436
|
+
Cv("Gate ".concat(e5, " \xB7 ").concat(n2, " \xB7 ").concat(t2 === true ? "Conscious" : t2 === false ? "Unconscious" : "Both")), Dv({ type: "gate", data: { gate: e5, conscious: t2, center: n2 } });
|
|
7414
7437
|
}
|
|
7415
|
-
async function
|
|
7416
|
-
|
|
7438
|
+
async function Av(e5, t2, n2, r2, i2, a2) {
|
|
7439
|
+
Cv(r2 && i2 ? "Channel ".concat(e5, " \xB7 ").concat(r2, "\u2013").concat(i2) : "Channel ".concat(e5)), Dv({ type: "channel", data: { channel: e5, gate1: t2, gate2: n2, center1: r2, center2: i2, color_type: a2 } });
|
|
7417
7440
|
}
|
|
7418
|
-
function
|
|
7441
|
+
function jv(e5) {
|
|
7419
7442
|
var t2, n2, r2, i2, a2, o2, s2;
|
|
7420
|
-
Q = e5,
|
|
7443
|
+
Q = e5, Z_.setAttribute("hidden", ""), Q_.removeAttribute("hidden"), document.body.classList.toggle("layout-mandala", $ === "mandala"), bv();
|
|
7421
7444
|
let c2 = e5._svg;
|
|
7422
7445
|
if (!c2) {
|
|
7423
|
-
|
|
7446
|
+
Pv("Bodygraph render unavailable \u2014 the server did not return an SVG.", Fv);
|
|
7424
7447
|
return;
|
|
7425
7448
|
}
|
|
7426
|
-
let l2 = C_(
|
|
7427
|
-
l2 && new URLSearchParams(window.location.search).has("debugHighlight") &&
|
|
7449
|
+
let l2 = C_(Q_, c2, e5, { onCenterClick: Ov, onGateClick: kv, onChannelClick: Av, onAskClaude: wv });
|
|
7450
|
+
l2 && new URLSearchParams(window.location.search).has("debugHighlight") && Iv(l2);
|
|
7428
7451
|
let u2 = document.getElementById("hd-action-bar");
|
|
7429
7452
|
if (!u2) {
|
|
7430
7453
|
u2 = document.createElement("div"), u2.id = "hd-action-bar", u2.className = "hd-action-bar";
|
|
@@ -7432,49 +7455,49 @@ function Dv(e5) {
|
|
|
7432
7455
|
if (e6) e6.appendChild(u2);
|
|
7433
7456
|
else {
|
|
7434
7457
|
var d2;
|
|
7435
|
-
(d2 =
|
|
7458
|
+
(d2 = Q_.parentElement) == null || d2.insertBefore(u2, Q_);
|
|
7436
7459
|
}
|
|
7437
7460
|
}
|
|
7438
|
-
let f2 = $ === "graph" ? "mandala" : "graph", p2 = !!
|
|
7439
|
-
u2.innerHTML = '\n <button class="action-btn action-btn--primary" id="hd-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="hd-questions-btn">\u{1F52E} What should I ask?</button>\n '.concat('<button class="action-btn" id="hd-layout-btn" title="'.concat(p2 ? "Already rendered this session \u2014 free to switch" : "Re-renders on the server (~2 credits)", '">').concat($ === "mandala" ? "\u2726 Graph view" : "\u2726 Mandala view").concat(p2 ? "" : " (~2 credits)", "</button>"), "\n "), (t2 = u2.querySelector("#hd-interpret-btn")) == null || t2.addEventListener("click", () => void
|
|
7461
|
+
let f2 = $ === "graph" ? "mandala" : "graph", p2 = !!mv[hv(f2, av, dv(f2))];
|
|
7462
|
+
u2.innerHTML = '\n <button class="action-btn action-btn--primary" id="hd-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="hd-questions-btn">\u{1F52E} What should I ask?</button>\n '.concat('<button class="action-btn" id="hd-layout-btn" title="'.concat(p2 ? "Already rendered this session \u2014 free to switch" : "Re-renders on the server (~2 credits)", '">').concat($ === "mandala" ? "\u2726 Graph view" : "\u2726 Mandala view").concat(p2 ? "" : " (~2 credits)", "</button>"), "\n "), (t2 = u2.querySelector("#hd-interpret-btn")) == null || t2.addEventListener("click", () => void Tv()), (n2 = u2.querySelector("#hd-questions-btn")) == null || n2.addEventListener("click", () => void Ev()), (r2 = u2.querySelector("#hd-layout-btn")) == null || r2.addEventListener("click", () => void yv());
|
|
7440
7463
|
let m2 = ((i2 = (a2 = e5.personality_gates) == null ? void 0 : a2.length) == null ? 0 : i2) > 0 || ((o2 = (s2 = e5.design_gates) == null ? void 0 : s2.length) == null ? 0 : o2) > 0, h2 = document.querySelector(".channel-legend");
|
|
7441
7464
|
if (m2 && !h2) {
|
|
7442
7465
|
let e6 = document.createElement("div");
|
|
7443
|
-
e6.className = "channel-legend", e6.innerHTML = '\n <span class="legend-item">\n <span class="legend-swatch" style="background:#a5b4fc"></span>Conscious\n </span>\n <span class="legend-item">\n <span class="legend-swatch" style="background:#f87171"></span>Unconscious\n </span>\n <span class="legend-item">\n <span class="legend-swatch" style="background:#f59e0b"></span>Both\n </span>\n ',
|
|
7466
|
+
e6.className = "channel-legend", e6.innerHTML = '\n <span class="legend-item">\n <span class="legend-swatch" style="background:#a5b4fc"></span>Conscious\n </span>\n <span class="legend-item">\n <span class="legend-swatch" style="background:#f87171"></span>Unconscious\n </span>\n <span class="legend-item">\n <span class="legend-swatch" style="background:#f59e0b"></span>Both\n </span>\n ', $_.prepend(e6);
|
|
7444
7467
|
}
|
|
7445
7468
|
if (e5._connectionSubjects) {
|
|
7446
7469
|
var g2, _2, ee2, te2, v2, y2, b2, ne2, re2, ie2, x2, ae2;
|
|
7447
7470
|
let { a: t3, b: n3 } = e5._connectionSubjects;
|
|
7448
|
-
|
|
7471
|
+
$_.innerHTML = y_("Person A", { type: (g2 = t3.type) == null ? "Unknown" : g2, profile: (_2 = t3.profile) == null ? "" : _2, authority: (ee2 = t3.authority) == null ? "" : ee2, definition: (te2 = t3.definition) == null ? "" : te2, cross: (v2 = t3.incarnation_cross) == null ? "" : v2, definedCenters: (y2 = t3.defined_centers) == null ? [] : y2 }, "Person B", { type: (b2 = n3.type) == null ? "Unknown" : b2, profile: (ne2 = n3.profile) == null ? "" : ne2, authority: (re2 = n3.authority) == null ? "" : re2, definition: (ie2 = n3.definition) == null ? "" : ie2, cross: (x2 = n3.incarnation_cross) == null ? "" : x2, definedCenters: (ae2 = n3.defined_centers) == null ? [] : ae2 });
|
|
7449
7472
|
} else {
|
|
7450
7473
|
var S2, oe2, se2, ce2, le2, ue2;
|
|
7451
7474
|
let t3 = ((S2 = e5.centers) == null ? [] : S2).filter((e6) => e6.defined).map((e6) => e6.name);
|
|
7452
|
-
|
|
7475
|
+
$_.innerHTML = v_((oe2 = e5.type) == null ? "Unknown" : oe2, (se2 = e5.profile) == null ? "" : se2, (ce2 = e5.authority) == null ? "" : ce2, (le2 = e5.definition) == null ? "" : le2, (ue2 = e5.incarnation_cross) == null ? "" : ue2, t3);
|
|
7453
7476
|
}
|
|
7454
|
-
|
|
7477
|
+
$_.removeAttribute("hidden"), $_.querySelectorAll(".interactive-text").forEach((e6) => {
|
|
7455
7478
|
e6.addEventListener("click", () => {
|
|
7456
7479
|
let t3 = e6.getAttribute("data-topic"), n3 = e6.getAttribute("data-val");
|
|
7457
|
-
t3 && n3 &&
|
|
7480
|
+
t3 && n3 && wv({ type: "attribute", data: { topic: t3, val: n3 } });
|
|
7458
7481
|
}), e6.addEventListener("keydown", (t3) => {
|
|
7459
7482
|
let n3 = t3;
|
|
7460
7483
|
(n3.key === "Enter" || n3.key === " ") && (n3.preventDefault(), e6.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true })));
|
|
7461
7484
|
});
|
|
7462
|
-
}),
|
|
7485
|
+
}), ev.setAttribute("hidden", ""), nv.removeAttribute("hidden"), R_("bodygraph");
|
|
7463
7486
|
}
|
|
7464
|
-
var
|
|
7465
|
-
function
|
|
7466
|
-
|
|
7487
|
+
var Mv;
|
|
7488
|
+
function Nv() {
|
|
7489
|
+
Mv && (clearTimeout(Mv), Mv = void 0);
|
|
7467
7490
|
}
|
|
7468
|
-
function
|
|
7469
|
-
|
|
7491
|
+
function Pv(e5, t2) {
|
|
7492
|
+
Nv(), Z_.setAttribute("hidden", ""), V_({ container: Q_, message: e5, onRetry: t2 });
|
|
7470
7493
|
}
|
|
7471
|
-
function
|
|
7472
|
-
|
|
7473
|
-
|
|
7494
|
+
function Fv() {
|
|
7495
|
+
Nv(), Q_.setAttribute("hidden", ""), Z_.removeAttribute("hidden"), Mv = setTimeout(() => {
|
|
7496
|
+
Pv("The bodygraph didn't load. Tap to try again.", Fv);
|
|
7474
7497
|
}, 3e4), Z.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the Human Design bodygraph." }] }).catch(() => {
|
|
7475
7498
|
});
|
|
7476
7499
|
}
|
|
7477
|
-
function
|
|
7500
|
+
function Iv(e5) {
|
|
7478
7501
|
e5.addEventListener("click", (t2) => {
|
|
7479
7502
|
let n2 = t2.target;
|
|
7480
7503
|
for (; n2 && n2 !== e5; ) {
|
|
@@ -7490,7 +7513,7 @@ function Mv(e5) {
|
|
|
7490
7513
|
w_(e5, {});
|
|
7491
7514
|
});
|
|
7492
7515
|
}
|
|
7493
|
-
function
|
|
7516
|
+
function Lv(e5) {
|
|
7494
7517
|
var t2;
|
|
7495
7518
|
if (!e5) return null;
|
|
7496
7519
|
if (e5.type || e5.centers) return e5;
|
|
@@ -7503,46 +7526,49 @@ function Nv(e5) {
|
|
|
7503
7526
|
return null;
|
|
7504
7527
|
}
|
|
7505
7528
|
Z.ontoolresult = (e5) => {
|
|
7506
|
-
|
|
7529
|
+
Nv();
|
|
7507
7530
|
try {
|
|
7508
|
-
let a2 =
|
|
7509
|
-
if ((o2 === "light" || o2 === "dark") && (
|
|
7510
|
-
|
|
7531
|
+
let a2 = Lv(z_(e5)), o2 = a2 == null ? void 0 : a2._theme;
|
|
7532
|
+
if ((o2 === "light" || o2 === "dark") && (av = o2), !a2) {
|
|
7533
|
+
Pv("Bodygraph data could not be parsed from the server response.", Fv);
|
|
7511
7534
|
return;
|
|
7512
7535
|
}
|
|
7513
|
-
if ($ = "graph",
|
|
7536
|
+
if ($ = "graph", cv = false, gv(), mv[hv($, av, false)] = a2, !rv && a2._birth_params) {
|
|
7514
7537
|
var t2, n2, r2, i2;
|
|
7515
7538
|
let e6 = (t2 = a2._birth_params) == null ? {} : t2, o3 = (n2 = e6.datetime) == null ? "" : n2, s2 = (r2 = e6.location) == null ? "" : r2, c2 = (i2 = e6.timezone) == null ? "" : i2, l2 = e6.latitude, u2 = e6.longitude, d2 = "", f2 = "12:00";
|
|
7516
7539
|
if (o3) try {
|
|
7517
|
-
let e7 =
|
|
7518
|
-
|
|
7540
|
+
let e7 = O_(o3, c2);
|
|
7541
|
+
if (e7) {
|
|
7542
|
+
let { date: t3, timeZone: n3 } = e7;
|
|
7543
|
+
d2 = t3.toLocaleDateString("en-CA", { timeZone: n3 }), f2 = t3.toLocaleTimeString("en-GB", { timeZone: n3, hour: "2-digit", minute: "2-digit", hour12: false });
|
|
7544
|
+
}
|
|
7519
7545
|
} catch (e7) {
|
|
7520
7546
|
o3.includes("T") && (d2 = o3.split("T")[0], f2 = o3.split("T")[1].substring(0, 5));
|
|
7521
7547
|
}
|
|
7522
|
-
|
|
7523
|
-
|
|
7548
|
+
rv = new E_({ app: Z, container: nv, initialParams: { date: d2, time: f2, locationName: s2, timezone: c2, latitude: typeof l2 == "number" ? l2 : null, longitude: typeof u2 == "number" ? u2 : null }, showStepControls: false, costHint: "~2 credits", extraToggle: { label: "Add house rings (+1 credit)", initialChecked: false, initialDisabled: true, disabledTitle: "Switch to Mandala view to add house rings", onChange: (e7) => void xv(e7) }, onRefresh: async (e7) => {
|
|
7549
|
+
rv == null || rv.setBusy(true), Z_.removeAttribute("hidden"), Q_.setAttribute("hidden", "");
|
|
7524
7550
|
try {
|
|
7525
7551
|
var t3, n3, r3, i3;
|
|
7526
|
-
let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o4 = e7.timezone ? a3 : "".concat(a3, "Z"), s3 = new Promise((e8, t4) => setTimeout(() => t4(Error("Bodygraph recalculate timed out after 30s")), 3e4)), c3 =
|
|
7527
|
-
l3 ? (
|
|
7552
|
+
let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o4 = e7.timezone ? a3 : "".concat(a3, "Z"), s3 = new Promise((e8, t4) => setTimeout(() => t4(Error("Bodygraph recalculate timed out after 30s")), 3e4)), c3 = z_(await Promise.race([Z.callServerTool({ name: "bodygraph_recalculate", arguments: { datetime: o4, latitude: (t3 = e7.latitude) == null ? void 0 : t3, longitude: (n3 = e7.longitude) == null ? void 0 : n3, timezone: (r3 = e7.timezone) == null ? void 0 : r3, location: (i3 = e7.locationName) == null ? void 0 : i3, theme: av, ...pv() } }), s3])), l3 = c3 && (c3.type || c3.centers) ? c3 : null;
|
|
7553
|
+
l3 ? (gv(), mv[hv($, av, dv($))] = l3, jv(l3)) : Q && (Z_.setAttribute("hidden", ""), Q_.removeAttribute("hidden"));
|
|
7528
7554
|
} catch (e8) {
|
|
7529
|
-
console.error("[Bodygraph] Recalculate failed or timed out:", e8), Q && (
|
|
7555
|
+
console.error("[Bodygraph] Recalculate failed or timed out:", e8), Q && (Z_.setAttribute("hidden", ""), Q_.removeAttribute("hidden"));
|
|
7530
7556
|
} finally {
|
|
7531
|
-
|
|
7557
|
+
rv == null || rv.setBusy(false);
|
|
7532
7558
|
}
|
|
7533
7559
|
} });
|
|
7534
7560
|
}
|
|
7535
|
-
|
|
7561
|
+
jv(a2), vv(_v());
|
|
7536
7562
|
} catch (e6) {
|
|
7537
|
-
|
|
7563
|
+
Pv("An error occurred while rendering the bodygraph.", Fv), console.error("[Bodygraph] Render error:", e6);
|
|
7538
7564
|
}
|
|
7539
|
-
},
|
|
7540
|
-
|
|
7565
|
+
}, J_(Z, { loadingEl: Z_, contentEl: Q_, statusFn: Cv, paramControls: () => rv }), Mv = setTimeout(() => {
|
|
7566
|
+
Pv("Bodygraph data is taking longer than expected.", Fv);
|
|
7541
7567
|
}, 3e4), (async () => {
|
|
7542
7568
|
try {
|
|
7543
7569
|
await Z.connect();
|
|
7544
7570
|
let e5 = Z.getHostCapabilities();
|
|
7545
|
-
|
|
7571
|
+
iv = !!(e5 != null && e5.modelContext), e5 == null || e5.sampling, q_(Z, document.getElementById("pan-zoom-controls"), ["param-controls-container", "controls-panel", "info-panel", "hd-action-bar"]), X_(Z), K_(Z, (e6) => void vv(e6));
|
|
7546
7572
|
} catch (e5) {
|
|
7547
7573
|
console.error("[Bodygraph] connect() failed:", e5);
|
|
7548
7574
|
}
|