@openephemeris/mcp-server 4.17.0 → 4.18.0
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 +28 -0
- package/README.md +10 -10
- package/dist/backend/client.d.ts +57 -1
- package/dist/backend/client.js +125 -15
- package/dist/prompts.js +26 -24
- package/dist/server-sse.d.ts +18 -0
- package/dist/server-sse.js +41 -6
- package/dist/tools/apps/_render-token.d.ts +34 -0
- package/dist/tools/apps/_render-token.js +50 -0
- package/dist/tools/apps/bazi-app.js +36 -12
- package/dist/tools/apps/bi-wheel-app.d.ts +9 -2
- package/dist/tools/apps/bi-wheel-app.js +76 -117
- package/dist/tools/apps/bodygraph-app.js +88 -41
- package/dist/tools/apps/chart-wheel-app.js +56 -16
- package/dist/tools/apps/location-tools.js +10 -3
- package/dist/tools/apps/moon-phase-app.js +10 -2
- package/dist/tools/apps/transit-timeline-app.js +3 -4
- package/dist/tools/apps/vedic-chart-app.js +10 -1
- package/dist/tools/datetime-historical.js +7 -2
- package/dist/tools/datetime.js +2 -1
- package/dist/tools/dev.js +7 -6
- package/dist/tools/specialized/electional.js +4 -3
- package/dist/tools/specialized/ephemeris_extended.js +19 -4
- package/dist/tools/specialized/hd_group.js +2 -2
- package/dist/tools/specialized/moon.d.ts +1 -1
- package/dist/tools/specialized/moon.js +51 -43
- package/dist/tools/specialized/progressed.js +2 -25
- package/dist/tools/specialized/transits.js +5 -5
- package/dist/ui/bazi.html +1523 -1522
- package/dist/ui/bi-wheel.html +406 -374
- package/dist/ui/bodygraph.html +83 -79
- package/dist/ui/chart-wheel.html +394 -361
- package/dist/ui/transit-timeline.html +1 -1
- package/dist/ui/vedic-chart.html +818 -818
- package/package.json +1 -1
package/dist/ui/bi-wheel.html
CHANGED
|
@@ -6719,42 +6719,74 @@ function x_(e5, t2) {
|
|
|
6719
6719
|
function S_(e5) {
|
|
6720
6720
|
return (e5 % 360 + 360) % 360;
|
|
6721
6721
|
}
|
|
6722
|
-
var C_ =
|
|
6722
|
+
var C_ = "north node (mean)", w_ = "north node (true)", T_ = "south node (mean)", E_ = "south node (true)", D_ = [C_, w_, T_, E_], O_ = { [C_]: C_, north_node_mean: C_, "north node": C_, north_node: C_, "mean node": C_, mean_node: C_, [w_]: w_, north_node_true: w_, "true node": w_, true_node: w_, [T_]: T_, south_node_mean: T_, "south node": T_, south_node: T_, [E_]: E_, south_node_true: E_, "true south node": E_, true_south_node: E_ };
|
|
6723
|
+
function k_(e5) {
|
|
6724
|
+
var t2;
|
|
6725
|
+
return (t2 = O_[e5.trim().toLowerCase()]) == null ? null : t2;
|
|
6726
|
+
}
|
|
6727
|
+
var A_ = { [C_]: "\u260A\uFE0E", [w_]: "\u260A\uFE0E", [T_]: "\u260B\uFE0E", [E_]: "\u260B\uFE0E" }, j_ = { [C_]: "soul direction", [w_]: "soul direction", [T_]: "past-life gifts", [E_]: "past-life gifts" };
|
|
6728
|
+
function M_(e5) {
|
|
6729
|
+
let t2 = /* @__PURE__ */ new Set();
|
|
6730
|
+
for (let n2 of e5) {
|
|
6731
|
+
let e6 = k_(n2);
|
|
6732
|
+
e6 && t2.add(e6);
|
|
6733
|
+
}
|
|
6734
|
+
return t2.has("north node (mean)") && t2.has("north node (true)") || t2.has("south node (mean)") && t2.has("south node (true)");
|
|
6735
|
+
}
|
|
6736
|
+
function N_(e5, t2) {
|
|
6737
|
+
let n2 = new Set(e5.map((e6) => k_(e6.name)).filter(Boolean)), r2 = /* @__PURE__ */ new Set(), i2 = [[C_, w_], [T_, E_]];
|
|
6738
|
+
for (let [e6, a2] of i2) n2.has(e6) && n2.has(a2) && r2.add(t2 === "true" ? e6 : a2);
|
|
6739
|
+
return r2.size === 0 ? e5 : e5.filter((e6) => {
|
|
6740
|
+
var t3;
|
|
6741
|
+
return !r2.has((t3 = k_(e6.name)) == null ? "" : t3);
|
|
6742
|
+
});
|
|
6743
|
+
}
|
|
6744
|
+
var P_ = "lilith (mean)", F_ = "lilith (true)", I_ = "lilith (interpolated)", L_ = [P_, F_, I_], R_ = { [P_]: P_, lilith: P_, mean_lilith: P_, lilith_mean: P_, "mean apogee": P_, "black moon lilith": P_, [F_]: F_, lilith_true: F_, true_lilith: F_, "osculating apogee": F_, [I_]: I_, lilith_interpolated: I_, lilith_natural: I_, "interpolated apogee": I_ };
|
|
6745
|
+
function z_(e5) {
|
|
6746
|
+
var t2;
|
|
6747
|
+
return (t2 = R_[e5.trim().toLowerCase()]) == null ? null : t2;
|
|
6748
|
+
}
|
|
6749
|
+
var B_ = { [P_]: "\u26B8\uFE0E", [F_]: "\u26B8\uFE0E", [I_]: "\u26B8\uFE0E" }, V_ = { [P_]: "primal feminine & shadow", [F_]: "primal feminine & shadow", [I_]: "primal feminine & shadow" };
|
|
6750
|
+
function H_(e5) {
|
|
6751
|
+
var t2, n2;
|
|
6752
|
+
return (t2 = (n2 = k_(e5)) == null ? z_(e5) : n2) == null ? e5 : t2;
|
|
6753
|
+
}
|
|
6754
|
+
var U_ = 310, W_ = 310, G_ = 240, K_ = 204, q_ = 190, J_ = 152, Y_ = 118, X_ = 112, Z_ = 290, Q_ = 246, $_ = 264, ev = 16;
|
|
6723
6755
|
function Y(e5, t2, n2) {
|
|
6724
6756
|
let r2 = -(e5 - n2 + 180) * Math.PI / 180;
|
|
6725
|
-
return { x:
|
|
6757
|
+
return { x: U_ + t2 * Math.cos(r2), y: W_ + t2 * Math.sin(r2) };
|
|
6726
6758
|
}
|
|
6727
6759
|
function X(e5) {
|
|
6728
6760
|
return document.createElementNS("http://www.w3.org/2000/svg", e5);
|
|
6729
6761
|
}
|
|
6730
|
-
var
|
|
6731
|
-
function
|
|
6762
|
+
var tv = { sun: "\u2609\uFE0E", moon: "\u263D\uFE0E", mercury: "\u263F\uFE0E", venus: "\u2640\uFE0E", mars: "\u2642\uFE0E", jupiter: "\u2643\uFE0E", saturn: "\u2644\uFE0E", uranus: "\u2645\uFE0E", neptune: "\u2646\uFE0E", pluto: "\u2647\uFE0E", "north node": "\u260A\uFE0E", "south node": "\u260B\uFE0E", chiron: "\u26B7\uFE0E", "true node": "\u260A\uFE0E", north_node: "\u260A\uFE0E", south_node: "\u260B\uFE0E", true_node: "\u260A\uFE0E", ...A_, ...B_, asc: "AC", mc: "MC" }, nv = ["\u2648", "\u2649", "\u264A", "\u264B", "\u264C", "\u264D", "\u264E", "\u264F", "\u2650", "\u2651", "\u2652", "\u2653"].map((e5) => e5 + "\uFE0E"), rv = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], iv = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9" };
|
|
6763
|
+
function av(e5) {
|
|
6732
6764
|
let t2 = e5.toLowerCase();
|
|
6733
|
-
return getComputedStyle(document.documentElement).getPropertyValue("--xasp-".concat(t2)).trim() || u_(t2,
|
|
6765
|
+
return getComputedStyle(document.documentElement).getPropertyValue("--xasp-".concat(t2)).trim() || u_(t2, dv());
|
|
6734
6766
|
}
|
|
6735
|
-
function
|
|
6767
|
+
function ov(e5) {
|
|
6736
6768
|
return e5 <= 1 ? { dash: "", width: "1.8", opacity: "0.95" } : e5 <= 3 ? { dash: "5,4", width: "1.4", opacity: "0.75" } : { dash: "3,5", width: "1.0", opacity: "0.50" };
|
|
6737
6769
|
}
|
|
6738
|
-
var
|
|
6739
|
-
function
|
|
6740
|
-
let n2 =
|
|
6770
|
+
var sv = { sun: { domicile: [4], exaltation: [0], detriment: [10], fall: [6] }, moon: { domicile: [3], exaltation: [1], detriment: [9], fall: [7] }, mercury: { domicile: [2, 5], exaltation: [5], detriment: [8, 11], fall: [11] }, venus: { domicile: [1, 6], exaltation: [11], detriment: [7, 0], fall: [5] }, mars: { domicile: [0, 7], exaltation: [9], detriment: [6, 1], fall: [3] }, jupiter: { domicile: [8, 11], exaltation: [3], detriment: [2, 5], fall: [9] }, saturn: { domicile: [9, 10], exaltation: [6], detriment: [3, 4], fall: [0] } };
|
|
6771
|
+
function cv(e5, t2) {
|
|
6772
|
+
let n2 = sv[e5.toLowerCase()];
|
|
6741
6773
|
if (!n2) return null;
|
|
6742
6774
|
let r2 = Math.floor((t2 % 360 + 360) % 360 / 30);
|
|
6743
6775
|
return n2.domicile.includes(r2) ? { label: "Domicile", emoji: "\u{1F3DB}", cssClass: "dignity-domicile", positive: true } : n2.exaltation.includes(r2) ? { label: "Exaltation", emoji: "\u2B06", cssClass: "dignity-exaltation", positive: true } : n2.detriment.includes(r2) ? { label: "Detriment", emoji: "\u2B07", cssClass: "dignity-detriment", positive: false } : n2.fall.includes(r2) ? { label: "Fall", emoji: "\u{1F53B}", cssClass: "dignity-fall", positive: false } : null;
|
|
6744
6776
|
}
|
|
6745
|
-
var
|
|
6746
|
-
function
|
|
6777
|
+
var lv = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], uv = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"], dv = p_, fv = (e5) => l_(e5, dv());
|
|
6778
|
+
function pv(e5, t2, n2, r2, i2) {
|
|
6747
6779
|
let a2 = +(((t2 - e5) % 360 + 360) % 360 > 180), o2 = Y(e5, n2, i2), s2 = Y(e5, r2, i2), c2 = Y(t2, r2, i2), l2 = Y(t2, n2, i2);
|
|
6748
6780
|
return ["M ".concat(o2.x.toFixed(2), " ").concat(o2.y.toFixed(2)), "L ".concat(s2.x.toFixed(2), " ").concat(s2.y.toFixed(2)), "A ".concat(r2, " ").concat(r2, " 0 ").concat(a2, " 0 ").concat(c2.x.toFixed(2), " ").concat(c2.y.toFixed(2)), "L ".concat(l2.x.toFixed(2), " ").concat(l2.y.toFixed(2)), "A ".concat(n2, " ").concat(n2, " 0 ").concat(a2, " 1 ").concat(o2.x.toFixed(2), " ").concat(o2.y.toFixed(2)), "Z"].join(" ");
|
|
6749
6781
|
}
|
|
6750
|
-
function
|
|
6782
|
+
function mv(e5, t2, n2, r2, i2, a2, o2) {
|
|
6751
6783
|
let s2 = n2 * 30, c2 = s2 + 30, l2 = Y(s2, r2, t2), u2 = Y(s2, i2, t2), d2 = Y(c2, i2, t2), f2 = Y(c2, r2, t2), p2 = ["M ".concat(l2.x.toFixed(2), " ").concat(l2.y.toFixed(2)), "L ".concat(u2.x.toFixed(2), " ").concat(u2.y.toFixed(2)), "A ".concat(i2, " ").concat(i2, " 0 0 0 ").concat(d2.x.toFixed(2), " ").concat(d2.y.toFixed(2)), "L ".concat(f2.x.toFixed(2), " ").concat(f2.y.toFixed(2)), "A ".concat(r2, " ").concat(r2, " 0 0 1 ").concat(l2.x.toFixed(2), " ").concat(l2.y.toFixed(2)), "Z"].join(" "), m2 = X("path");
|
|
6752
6784
|
m2.setAttribute("d", p2), m2.setAttribute("fill", a2), m2.setAttribute("fill-opacity", String(o2)), m2.setAttribute("pointer-events", "none"), e5.appendChild(m2);
|
|
6753
6785
|
}
|
|
6754
|
-
var
|
|
6755
|
-
function
|
|
6786
|
+
var hv = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node", "north_node", "south_node", "true_node", "asc", "mc", ...D_, ...L_]);
|
|
6787
|
+
function gv(e5) {
|
|
6756
6788
|
let t2 = (e5 % 360 + 360) % 360, n2 = Math.floor(t2 / 30), r2 = Math.floor(t2 % 30);
|
|
6757
|
-
return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(
|
|
6789
|
+
return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(rv[n2]);
|
|
6758
6790
|
}
|
|
6759
6791
|
function Z(e5) {
|
|
6760
6792
|
return e5.replace(/\b\w/g, (e6) => e6.toUpperCase());
|
|
@@ -6762,29 +6794,29 @@ function Z(e5) {
|
|
|
6762
6794
|
function Q(e5) {
|
|
6763
6795
|
return String(e5).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
6764
6796
|
}
|
|
6765
|
-
var
|
|
6766
|
-
function
|
|
6767
|
-
|
|
6797
|
+
var _v = "true";
|
|
6798
|
+
function vv(e5) {
|
|
6799
|
+
_v = e5;
|
|
6768
6800
|
}
|
|
6769
|
-
function
|
|
6770
|
-
|
|
6771
|
-
|
|
6772
|
-
|
|
6773
|
-
|
|
6801
|
+
function yv(e5) {
|
|
6802
|
+
return N_(e5.map((e6) => {
|
|
6803
|
+
let t2 = H_(e6.name);
|
|
6804
|
+
return t2 === e6.name ? e6 : { ...e6, name: t2 };
|
|
6805
|
+
}), _v);
|
|
6774
6806
|
}
|
|
6775
|
-
function
|
|
6776
|
-
return Array.isArray(e5) ?
|
|
6807
|
+
function bv(e5) {
|
|
6808
|
+
return Array.isArray(e5) ? yv(e5.filter((e6) => e6 && typeof e6.longitude == "number" && isFinite(e6.longitude))) : e5 && typeof e5 == "object" ? yv(Object.entries(e5).filter(([e6]) => hv.has(e6.toLowerCase())).map(([e6, t2]) => {
|
|
6777
6809
|
var n2, r2, i2, a2, o2, s2;
|
|
6778
6810
|
return { name: e6.toLowerCase(), longitude: (n2 = (r2 = t2.longitude) == null ? t2.lon : r2) == null ? 0 : n2, speed: (i2 = t2.longitude_speed) == null ? t2.speed : i2, retrograde: !!((a2 = t2.is_retrograde) == null ? t2.retrograde : a2), sign: (o2 = t2.sign_name) == null ? t2.sign : o2, house: (s2 = t2.house_number) == null ? t2.house : s2 };
|
|
6779
6811
|
})) : [];
|
|
6780
6812
|
}
|
|
6781
|
-
var
|
|
6782
|
-
function
|
|
6813
|
+
var xv = [{ type: "conjunction", angle: 0, orb: 8 }, { type: "opposition", angle: 180, orb: 8 }, { type: "trine", angle: 120, orb: 6 }, { type: "square", angle: 90, orb: 5 }, { type: "sextile", angle: 60, orb: 4 }];
|
|
6814
|
+
function Sv(e5, t2, n2 = 1) {
|
|
6783
6815
|
let r2 = [];
|
|
6784
6816
|
for (let o2 of e5) for (let e6 of t2) {
|
|
6785
6817
|
let t3 = Math.abs(o2.longitude - e6.longitude) % 360;
|
|
6786
6818
|
t3 > 180 && (t3 = 360 - t3);
|
|
6787
|
-
for (let s2 of
|
|
6819
|
+
for (let s2 of xv) {
|
|
6788
6820
|
let c2 = s2.orb * n2, l2 = Math.abs(t3 - s2.angle);
|
|
6789
6821
|
if (l2 <= c2) {
|
|
6790
6822
|
var i2, a2;
|
|
@@ -6796,39 +6828,39 @@ function nv(e5, t2, n2 = 1) {
|
|
|
6796
6828
|
}
|
|
6797
6829
|
return r2.sort((e6, t3) => e6.orb - t3.orb).slice(0, 40);
|
|
6798
6830
|
}
|
|
6799
|
-
var
|
|
6800
|
-
function
|
|
6801
|
-
|
|
6831
|
+
var Cv = null;
|
|
6832
|
+
function wv(e5) {
|
|
6833
|
+
Cv = e5;
|
|
6802
6834
|
}
|
|
6803
|
-
var
|
|
6804
|
-
function
|
|
6805
|
-
return
|
|
6835
|
+
var Tv = null, Ev = null;
|
|
6836
|
+
function Dv() {
|
|
6837
|
+
return Ev || (Ev = document.getElementById("tooltip")), Ev;
|
|
6806
6838
|
}
|
|
6807
|
-
function
|
|
6808
|
-
let a2 =
|
|
6839
|
+
function Ov(e5, t2, n2, r2, i2) {
|
|
6840
|
+
let a2 = Dv();
|
|
6809
6841
|
a2.innerHTML = '\n <div class="tooltip-title">'.concat(n2, '</div>\n <div class="tooltip-detail">').concat(r2, "</div>\n ").concat(i2 ? '<div class="tooltip-hint">'.concat(i2, "</div>") : "", "\n ");
|
|
6810
6842
|
let o2 = a2.getBoundingClientRect(), s2 = o2.width || 240, c2 = o2.height || 80, l2 = e5 + 14, u2 = t2 + 10;
|
|
6811
6843
|
l2 + s2 > window.innerWidth && (l2 = e5 - s2 - 8), u2 + c2 > window.innerHeight && (u2 = t2 - c2 - 8), a2.style.left = "".concat(l2, "px"), a2.style.top = "".concat(u2, "px"), a2.classList.add("visible");
|
|
6812
6844
|
}
|
|
6813
|
-
function
|
|
6814
|
-
|
|
6845
|
+
function kv() {
|
|
6846
|
+
Dv().classList.remove("visible");
|
|
6815
6847
|
}
|
|
6816
|
-
var
|
|
6817
|
-
function
|
|
6848
|
+
var Av = { sun: "identity & vitality", moon: "emotions & instincts", mercury: "mind & communication", venus: "love & values", mars: "drive & desire", jupiter: "expansion & meaning", saturn: "discipline & mastery", uranus: "innovation & rebellion", neptune: "dreams & transcendence", pluto: "transformation & power", chiron: "wound & healing", "north node": "soul direction", "south node": "past-life gifts", "true node": "soul direction", ...j_, ...V_ }, jv = { conjunction: "fusion & amplification", opposition: "polarity & integration", trine: "ease & natural flow", square: "tension & growth", sextile: "opportunity & cooperation", quincunx: "adjustment & recalibration", semisquare: "friction & minor tension" }, Mv = null, Nv = null, Pv = /* @__PURE__ */ new Map();
|
|
6849
|
+
function Fv(e5) {
|
|
6818
6850
|
return "".concat(e5.planet1, "|inner|").concat(e5.planet2, "|outer|").concat(e5.type);
|
|
6819
6851
|
}
|
|
6820
|
-
var
|
|
6821
|
-
function
|
|
6852
|
+
var Iv = { ASC: { title: "Ascendant", symbol: "AC", keyword: "self & first impressions", meaning: "The Ascendant is the mask you wear before the world \u2014 your embodied presence, physical appearance, and instinctive approach to new situations.", themes: ["identity", "appearance", "beginnings", "vitality", "self-projection"] }, DSC: { title: "Descendant", symbol: "DC", keyword: "partnership & mirrors", meaning: "The Descendant describes what you seek in others and the qualities you project onto relationships \u2014 the face you recognise in those you're drawn to.", themes: ["partnership", "marriage", "open enemies", "projection", "attraction"] }, MC: { title: "Midheaven", symbol: "MC", keyword: "vocation & public legacy", meaning: "The Midheaven marks the chart's highest point and governs reputation, career, and the long arc of your public life.", themes: ["career", "ambition", "reputation", "authority", "life direction"] }, IC: { title: "Imum Coeli", symbol: "IC", keyword: "roots & inner foundation", meaning: "The IC anchors the chart at its lowest point \u2014 home, ancestry, psychological foundations, and the private self that sustains the public Midheaven.", themes: ["home", "family", "ancestry", "inner life", "psychological roots"] } };
|
|
6853
|
+
function Lv(e5, t2, n2, r2, i2) {
|
|
6822
6854
|
var a2, o2;
|
|
6823
|
-
let s2 =
|
|
6855
|
+
let s2 = Hv(), c2 = Iv[t2];
|
|
6824
6856
|
if (!c2) return;
|
|
6825
|
-
let l2 =
|
|
6857
|
+
let l2 = gv(n2), u2 = Math.floor((n2 % 360 + 360) % 360 / 30), d2 = lv[u2], f2 = uv[u2], p2 = nv[u2], m2 = fv(u2), h2 = i2 ? "".concat(i2, " \xB7 Natal") : "Inner \xB7 Natal", g2 = Tv ? '<button class="ask-claude-btn" id="bi-ask-claude-angle-btn">\u2728 Interpret this</button>' : "";
|
|
6826
6858
|
s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:#7060b8;font-family:system-ui;font-weight:700;font-size:14px">'.concat(Q(c2.symbol), '</span>\n <div class="info-title">\n <div style="display:flex;align-items:center;gap:6px;flex-wrap:wrap;">\n <strong>').concat(Q(c2.title), '</strong>\n <span class="wheel-badge inner">').concat(Q(h2), '</span>\n </div>\n <div class="info-subtitle">').concat(Q(p2), " ").concat(Q(l2), '</div>\n </div>\n <button class="info-close" id="bi-info-close-btn">\u2715</button>\n </div>\n <div style="font-size:11px;color:var(--text-secondary,#888);margin:6px 0 4px">\n <span style="color:').concat(m2, ';margin-right:4px">').concat(Q(p2), "</span>\n <em>").concat(Q(d2), " \xB7 ").concat(Q(f2), '</em>\n </div>\n <div style="font-size:12px;line-height:1.55;margin-bottom:8px">').concat(Q(c2.meaning), '</div>\n <div class="aspects-title">').concat(Q(c2.keyword), '</div>\n <div class="aspects-list">\n ').concat(c2.themes.map((e6) => '<div class="aspect-row"><span class="aspect-other">'.concat(Q(e6), "</span></div>")).join(""), "\n </div>\n ").concat(g2, "\n "), s2.classList.add("open"), s2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (a2 = document.getElementById("bi-info-close-btn")) == null || a2.addEventListener("click", () => {
|
|
6827
|
-
|
|
6859
|
+
Uv(), Xv();
|
|
6828
6860
|
}), (o2 = document.getElementById("bi-ask-claude-angle-btn")) == null || o2.addEventListener("click", () => {
|
|
6829
|
-
if (!
|
|
6861
|
+
if (!Tv) return;
|
|
6830
6862
|
let e6 = document.getElementById("bi-ask-claude-angle-btn");
|
|
6831
|
-
!e6 || e6.disabled || (e6.disabled = true, e6.textContent = "\u23F3 Sending\u2026", e6.classList.add("sending"),
|
|
6863
|
+
!e6 || e6.disabled || (e6.disabled = true, e6.textContent = "\u23F3 Sending\u2026", e6.classList.add("sending"), Tv({ type: "angle_interpretation", data: { angle: c2.title, longitude: n2, sign: rv[u2], position: l2, element: d2, modality: f2, mode: r2 } }).then(() => {
|
|
6832
6864
|
e6.textContent = "\u2713 Sent", e6.classList.remove("sending"), e6.classList.add("sent"), setTimeout(() => {
|
|
6833
6865
|
e6.textContent = "\u2728 Interpret this", e6.classList.remove("sent"), e6.disabled = false;
|
|
6834
6866
|
}, 2500);
|
|
@@ -6837,32 +6869,32 @@ function _v(e5, t2, n2, r2, i2) {
|
|
|
6837
6869
|
}));
|
|
6838
6870
|
});
|
|
6839
6871
|
}
|
|
6840
|
-
var
|
|
6841
|
-
function
|
|
6872
|
+
var Rv = { 1: "Identity & self", 2: "Resources & values", 3: "Mind & local", 4: "Roots & home", 5: "Creativity & play", 6: "Work & wellbeing", 7: "Partnership", 8: "Depth & shared", 9: "Meaning & travel", 10: "Vocation & visibility", 11: "Community & vision", 12: "Inner life" };
|
|
6873
|
+
function zv(e5, t2, n2) {
|
|
6842
6874
|
let r2 = (n2 - t2 + 360) % 360;
|
|
6843
6875
|
return e5.filter((e6) => {
|
|
6844
6876
|
let n3 = (e6.longitude - t2 + 360) % 360;
|
|
6845
6877
|
return n3 >= 0 && n3 < r2;
|
|
6846
6878
|
});
|
|
6847
6879
|
}
|
|
6848
|
-
function
|
|
6880
|
+
function Bv(e5, t2, n2, r2, i2, a2, o2, s2) {
|
|
6849
6881
|
var c2, l2, u2, d2, f2;
|
|
6850
|
-
let p2 =
|
|
6851
|
-
let n3 =
|
|
6882
|
+
let p2 = Hv(), m2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), h2 = (c2 = (l2 = t2.sign) == null ? rv[m2] : l2) == null ? "" : c2, g2 = (u2 = nv[m2]) == null ? "" : u2, _2 = zv(o2, t2.cusp_lon, n2.cusp_lon), v2 = zv(s2, t2.cusp_lon, n2.cusp_lon), y2 = i2 || "Natal", b2 = r2 === "synastry" ? a2 == null ? "Synastry" : a2 : "Transit", x2 = (e6, t3) => e6.length === 0 ? '<div class="no-aspects">\u2014</div>' : e6.map((e7) => {
|
|
6883
|
+
let n3 = gv(e7.longitude), r3 = e7.retrograde ? " \u211E" : "";
|
|
6852
6884
|
return '<div class="aspect-row">\n <span class="wheel-badge '.concat(t3, '" style="font-size:9px">').concat(Q(t3 === "inner" ? y2 : b2), '</span>\n <span class="aspect-other">').concat(Q(Z(e7.name))).concat(r3, '</span>\n <span class="aspect-meta">').concat(Q(n3), "</span>\n </div>");
|
|
6853
|
-
}).join(""), S2 =
|
|
6885
|
+
}).join(""), S2 = Tv ? '<button class="ask-claude-btn" id="bi-ask-claude-house-btn">\u2728 Interpret this</button>' : "";
|
|
6854
6886
|
p2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:#7060b8;font-family:system-ui;font-weight:700;font-size:14px">'.concat(t2.number, '</span>\n <div class="info-title">\n <div><strong>House ').concat(t2.number, '</strong></div>\n <div class="info-subtitle">').concat(Q(g2), " ").concat(Q(h2), " on cusp").concat(t2.ruler ? " \xB7 ruled by ".concat(Q(Z(t2.ruler))) : "", '</div>\n </div>\n <button class="info-close" id="bi-info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title" style="margin-top:6px">').concat(Q(y2), ' planets</div>\n <div class="aspects-list">').concat(x2(_2, "inner"), '</div>\n <div class="aspects-title" style="margin-top:8px">').concat(Q(b2), ' planets currently here</div>\n <div class="aspects-list">').concat(x2(v2, "outer"), "</div>\n ").concat(S2, "\n "), p2.classList.add("open"), p2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (d2 = document.getElementById("bi-info-close-btn")) == null || d2.addEventListener("click", () => {
|
|
6855
|
-
|
|
6887
|
+
Uv(), Xv();
|
|
6856
6888
|
}), (f2 = document.getElementById("bi-ask-claude-house-btn")) == null || f2.addEventListener("click", () => {
|
|
6857
6889
|
var e6;
|
|
6858
|
-
if (!
|
|
6890
|
+
if (!Tv) return;
|
|
6859
6891
|
let n3 = document.getElementById("bi-ask-claude-house-btn");
|
|
6860
|
-
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "\u23F3 Sending\u2026", n3.classList.add("sending"),
|
|
6892
|
+
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "\u23F3 Sending\u2026", n3.classList.add("sending"), Tv({ type: "house", data: { house_number: t2.number, cusp_sign: h2, cusp_longitude: t2.cusp_lon, ruler: (e6 = t2.ruler) == null ? null : e6, mode: r2, inner_label: y2, outer_label: b2, inner_planets: _2.map((e7) => {
|
|
6861
6893
|
var t3;
|
|
6862
|
-
return { name: e7.name, position:
|
|
6894
|
+
return { name: e7.name, position: gv(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3 };
|
|
6863
6895
|
}), outer_planets: v2.map((e7) => {
|
|
6864
6896
|
var t3;
|
|
6865
|
-
return { name: e7.name, position:
|
|
6897
|
+
return { name: e7.name, position: gv(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3 };
|
|
6866
6898
|
}) } }).then(() => {
|
|
6867
6899
|
n3.textContent = "\u2713 Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
|
|
6868
6900
|
n3.textContent = "\u2728 Interpret this", n3.classList.remove("sent"), n3.disabled = false;
|
|
@@ -6872,23 +6904,23 @@ function bv(e5, t2, n2, r2, i2, a2, o2, s2) {
|
|
|
6872
6904
|
}));
|
|
6873
6905
|
});
|
|
6874
6906
|
}
|
|
6875
|
-
function
|
|
6907
|
+
function Vv(e5, t2, n2, r2, i2, a2, o2) {
|
|
6876
6908
|
var s2, c2;
|
|
6877
|
-
let l2 =
|
|
6878
|
-
let n3 =
|
|
6909
|
+
let l2 = Hv(), u2 = rv[t2], d2 = nv[t2], f2 = lv[t2], p2 = uv[t2], m2 = (e6) => Math.floor((e6.longitude % 360 + 360) % 360 / 30) === t2, h2 = a2.filter(m2), g2 = o2.filter(m2), _2 = r2 || "Natal", v2 = n2 === "synastry" ? i2 == null ? "Synastry" : i2 : "Transit", y2 = (e6, t3) => e6.length === 0 ? '<div class="no-aspects">\u2014</div>' : e6.map((e7) => {
|
|
6910
|
+
let n3 = gv(e7.longitude), r3 = e7.retrograde ? " \u211E" : "";
|
|
6879
6911
|
return '<div class="aspect-row">\n <span class="wheel-badge '.concat(t3, '" style="font-size:9px">').concat(Q(t3 === "inner" ? _2 : v2), '</span>\n <span class="aspect-other">').concat(Q(Z(e7.name))).concat(r3, '</span>\n <span class="aspect-meta">').concat(Q(n3), "</span>\n </div>");
|
|
6880
|
-
}).join(""), b2 =
|
|
6881
|
-
l2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(
|
|
6882
|
-
|
|
6912
|
+
}).join(""), b2 = Tv ? '<button class="ask-claude-btn" id="bi-ask-claude-sign-btn">\u2728 Interpret this</button>' : "";
|
|
6913
|
+
l2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(fv(t2), ';font-family:serif;font-weight:700;font-size:16px">').concat(Q(d2), '</span>\n <div class="info-title">\n <div><strong>').concat(Q(u2), '</strong></div>\n <div class="info-subtitle"><em>').concat(Q(Z(f2)), " \xB7 ").concat(Q(Z(p2)), '</em></div>\n </div>\n <button class="info-close" id="bi-info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title" style="margin-top:6px">').concat(Q(_2), " planets in ").concat(Q(u2), '</div>\n <div class="aspects-list">').concat(y2(h2, "inner"), '</div>\n <div class="aspects-title" style="margin-top:8px">').concat(Q(v2), " planets currently in ").concat(Q(u2), '</div>\n <div class="aspects-list">').concat(y2(g2, "outer"), "</div>\n ").concat(b2, "\n "), l2.classList.add("open"), l2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (s2 = document.getElementById("bi-info-close-btn")) == null || s2.addEventListener("click", () => {
|
|
6914
|
+
Uv(), Xv();
|
|
6883
6915
|
}), (c2 = document.getElementById("bi-ask-claude-sign-btn")) == null || c2.addEventListener("click", () => {
|
|
6884
|
-
if (!
|
|
6916
|
+
if (!Tv) return;
|
|
6885
6917
|
let e6 = document.getElementById("bi-ask-claude-sign-btn");
|
|
6886
|
-
!e6 || e6.disabled || (e6.disabled = true, e6.textContent = "\u23F3 Sending\u2026", e6.classList.add("sending"),
|
|
6918
|
+
!e6 || e6.disabled || (e6.disabled = true, e6.textContent = "\u23F3 Sending\u2026", e6.classList.add("sending"), Tv({ type: "sign", data: { sign: u2, element: Z(f2), modality: Z(p2), mode: n2, inner_label: _2, outer_label: v2, inner_planets: h2.map((e7) => {
|
|
6887
6919
|
var t3;
|
|
6888
|
-
return { name: e7.name, position:
|
|
6920
|
+
return { name: e7.name, position: gv(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3 };
|
|
6889
6921
|
}), outer_planets: g2.map((e7) => {
|
|
6890
6922
|
var t3;
|
|
6891
|
-
return { name: e7.name, position:
|
|
6923
|
+
return { name: e7.name, position: gv(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3 };
|
|
6892
6924
|
}) } }).then(() => {
|
|
6893
6925
|
e6.textContent = "\u2713 Sent", e6.classList.remove("sending"), e6.classList.add("sent"), setTimeout(() => {
|
|
6894
6926
|
e6.textContent = "\u2728 Interpret this", e6.classList.remove("sent"), e6.disabled = false;
|
|
@@ -6898,7 +6930,7 @@ function xv(e5, t2, n2, r2, i2, a2, o2) {
|
|
|
6898
6930
|
}));
|
|
6899
6931
|
});
|
|
6900
6932
|
}
|
|
6901
|
-
function
|
|
6933
|
+
function Hv() {
|
|
6902
6934
|
if (document.body.classList.contains("is-fullscreen")) {
|
|
6903
6935
|
let e6 = document.querySelector("#fs-bottom-bar [data-column='right']");
|
|
6904
6936
|
if (e6) {
|
|
@@ -6906,36 +6938,36 @@ function Sv() {
|
|
|
6906
6938
|
return t3 || (t3 = document.createElement("div"), t3.className = "info-drawer info-drawer--fs", e6.appendChild(t3)), t3;
|
|
6907
6939
|
}
|
|
6908
6940
|
}
|
|
6909
|
-
if (
|
|
6910
|
-
|
|
6941
|
+
if (Mv && Mv.isConnected) return Mv;
|
|
6942
|
+
Mv = document.createElement("div"), Mv.id = "bi-info-drawer", Mv.className = "info-drawer";
|
|
6911
6943
|
let e5 = document.getElementById("chart-container");
|
|
6912
|
-
if (e5 != null && e5.parentElement) e5.parentElement.insertBefore(
|
|
6944
|
+
if (e5 != null && e5.parentElement) e5.parentElement.insertBefore(Mv, e5.nextSibling);
|
|
6913
6945
|
else {
|
|
6914
6946
|
var t2;
|
|
6915
|
-
(t2 = document.getElementById("app")) == null || t2.appendChild(
|
|
6947
|
+
(t2 = document.getElementById("app")) == null || t2.appendChild(Mv);
|
|
6916
6948
|
}
|
|
6917
|
-
return
|
|
6949
|
+
return Mv;
|
|
6918
6950
|
}
|
|
6919
|
-
function
|
|
6951
|
+
function Uv() {
|
|
6920
6952
|
var e5;
|
|
6921
|
-
|
|
6953
|
+
Mv == null || Mv.classList.remove("open"), (e5 = document.querySelector("#fs-bottom-bar [data-column='right'] .info-drawer--fs")) == null || e5.classList.remove("open"), Cv == null || Cv(null);
|
|
6922
6954
|
}
|
|
6923
|
-
function
|
|
6955
|
+
function Wv(e5, t2, n2, r2, i2, a2, o2) {
|
|
6924
6956
|
var s2, c2, l2, u2, d2;
|
|
6925
|
-
let f2 =
|
|
6957
|
+
let f2 = Hv(), p2 = (s2 = tv[t2.name.toLowerCase()]) == null ? "\u2605" : s2, m2 = (c2 = nv[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : c2, h2 = cv(t2.name, t2.longitude), g2;
|
|
6926
6958
|
g2 = n2 === "inner" ? a2 ? "".concat(a2, " \xB7 Natal") : "Inner \xB7 Natal" : i2 === "transit" ? "Outer \xB7 Transit" : o2 ? "".concat(o2, " \xB7 Synastry") : "Outer \xB7 Synastry";
|
|
6927
6959
|
let _2 = n2, v2 = r2.filter((e6) => n2 === "inner" && e6.planet1 === t2.name || n2 === "outer" && e6.planet2 === t2.name).sort((e6, t3) => e6.orb - t3.orb), y2 = v2.length ? v2.map((e6) => {
|
|
6928
6960
|
var t3, r3, a3, o3, s3, c3, l3;
|
|
6929
|
-
let u3 = n2 === "inner" ? e6.planet2 : e6.planet1, d3 = (t3 =
|
|
6961
|
+
let u3 = n2 === "inner" ? e6.planet2 : e6.planet1, d3 = (t3 = tv[u3.toLowerCase()]) == null ? u3 : t3, f3 = (r3 = (a3 = iv[(o3 = (s3 = e6.type) == null ? void 0 : s3.toLowerCase()) == null ? "" : o3]) == null ? e6.type : a3) == null ? "\u2014" : r3, p3 = av((c3 = (l3 = e6.type) == null ? void 0 : l3.toLowerCase()) == null ? "" : c3), m3 = "".concat(e6.orb.toFixed(1), "\xB0"), h3 = i2 === "transit" ? e6.applying ? "\u2197" : "\u2198" : e6.orb <= 1 ? "exact" : e6.orb <= 3 ? "tight" : "wide";
|
|
6930
6962
|
return '<div class="aspect-row">\n <span class="aspect-dot" style="background:'.concat(p3, '"></span>\n <span class="aspect-sym" style="color:').concat(p3, '">').concat(f3, '</span>\n <span class="aspect-other">').concat(Q(d3), " ").concat(Q(Z(u3)), '</span>\n <span class="aspect-meta">').concat(m3, " ").concat(h3, "</span>\n </div>");
|
|
6931
|
-
}).join("") : '<div class="no-aspects">No cross-aspects within orb</div>', b2 = (l2 =
|
|
6932
|
-
f2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(Q(p2), '</span>\n <div class="info-title">\n <div style="display:flex;align-items:center;gap:6px;flex-wrap:wrap;">\n <strong>').concat(Q(Z(t2.name)), "</strong>\n ").concat(t2.retrograde ? "<span style='color:#e05252'>\u211E</span>" : "", "\n ").concat(h2 ? '<span class="dignity-badge '.concat(h2.cssClass, '">').concat(h2.emoji, " ").concat(Q(h2.label), "</span>") : "", '\n <span class="wheel-badge ').concat(_2, '">').concat(Q(g2), '</span>\n </div>\n <div class="info-subtitle">').concat(Q(m2), " ").concat(Q(
|
|
6933
|
-
|
|
6963
|
+
}).join("") : '<div class="no-aspects">No cross-aspects within orb</div>', b2 = (l2 = rv[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "Unknown" : l2, x2 = Tv ? '<button class="ask-claude-btn" id="bi-ask-claude-planet-btn">\u2728 Interpret this</button>' : "";
|
|
6964
|
+
f2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(Q(p2), '</span>\n <div class="info-title">\n <div style="display:flex;align-items:center;gap:6px;flex-wrap:wrap;">\n <strong>').concat(Q(Z(t2.name)), "</strong>\n ").concat(t2.retrograde ? "<span style='color:#e05252'>\u211E</span>" : "", "\n ").concat(h2 ? '<span class="dignity-badge '.concat(h2.cssClass, '">').concat(h2.emoji, " ").concat(Q(h2.label), "</span>") : "", '\n <span class="wheel-badge ').concat(_2, '">').concat(Q(g2), '</span>\n </div>\n <div class="info-subtitle">').concat(Q(m2), " ").concat(Q(gv(t2.longitude))).concat(t2.house ? " \xB7 House ".concat(t2.house) : "", '</div>\n </div>\n <button class="info-close" id="bi-info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Cross-Aspects</div>\n <div class="aspects-list">').concat(y2, "</div>\n ").concat(x2, "\n "), f2.classList.add("open"), f2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (u2 = document.getElementById("bi-info-close-btn")) == null || u2.addEventListener("click", () => {
|
|
6965
|
+
Uv(), Xv();
|
|
6934
6966
|
}), (d2 = document.getElementById("bi-ask-claude-planet-btn")) == null || d2.addEventListener("click", () => {
|
|
6935
6967
|
var e6, r3;
|
|
6936
|
-
if (!
|
|
6968
|
+
if (!Tv) return;
|
|
6937
6969
|
let a3 = document.getElementById("bi-ask-claude-planet-btn");
|
|
6938
|
-
!a3 || a3.disabled || (a3.disabled = true, a3.textContent = "\u23F3 Sending\u2026", a3.classList.add("sending"),
|
|
6970
|
+
!a3 || a3.disabled || (a3.disabled = true, a3.textContent = "\u23F3 Sending\u2026", a3.classList.add("sending"), Tv({ type: "planet", data: { planet_name: t2.name, wheel: n2, longitude: t2.longitude, sign: b2, position: "".concat(Math.floor(t2.longitude % 30), "\xB0 ").concat(b2), house: (e6 = t2.house) == null ? null : e6, retrograde: (r3 = t2.retrograde) == null ? false : r3, mode: i2, cross_aspects: v2.map((e7) => ({ type: e7.type, partner: n2 === "inner" ? e7.planet2 : e7.planet1, orb: e7.orb, applying: e7.applying, orb_label: i2 === "transit" ? e7.applying ? "applying" : "separating" : e7.orb <= 1 ? "exact" : e7.orb <= 3 ? "tight" : "wide" })) } }).then(() => {
|
|
6939
6971
|
a3.textContent = "\u2713 Sent", a3.classList.remove("sending"), a3.classList.add("sent"), setTimeout(() => {
|
|
6940
6972
|
a3.textContent = "\u2728 Interpret this", a3.classList.remove("sent"), a3.disabled = false;
|
|
6941
6973
|
}, 2500);
|
|
@@ -6944,15 +6976,15 @@ function wv(e5, t2, n2, r2, i2, a2, o2) {
|
|
|
6944
6976
|
}));
|
|
6945
6977
|
});
|
|
6946
6978
|
}
|
|
6947
|
-
function
|
|
6979
|
+
function Gv(e5, t2, n2, r2, i2) {
|
|
6948
6980
|
var a2, o2, s2, c2, l2, u2, d2, f2, p2;
|
|
6949
|
-
let m2 =
|
|
6981
|
+
let m2 = Hv(), h2 = (a2 = tv[t2.planet1.toLowerCase()]) == null ? "\u2605" : a2, g2 = (o2 = tv[t2.planet2.toLowerCase()]) == null ? "\u2605" : o2, _2 = (s2 = iv[(c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2]) == null ? t2.type : s2, v2 = av((u2 = (d2 = t2.type) == null ? void 0 : d2.toLowerCase()) == null ? "" : u2), y2 = r2 ? "".concat(r2, "'s ").concat(Z(t2.planet1)) : Z(t2.planet1), b2 = n2 === "transit" ? "Tr. ".concat(Z(t2.planet2)) : i2 ? "".concat(i2, "'s ").concat(Z(t2.planet2)) : Z(t2.planet2), x2 = n2 === "transit" ? t2.applying ? "\u2197 Applying" : "\u2198 Separating" : t2.orb <= 1 ? "Exact" : t2.orb <= 3 ? "Tight" : "Wide", S2 = Tv ? '<button class="ask-claude-btn" id="bi-ask-claude-asp-btn">\u2728 Interpret this</button>' : "";
|
|
6950
6982
|
m2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(v2, '">').concat(Q(String(_2)), '</span>\n <div class="info-title">\n <div style="display:flex;align-items:center;gap:5px;flex-wrap:wrap;">\n <strong>').concat(Q(h2), " ").concat(Q(y2), '</strong>\n <span style="color:').concat(v2, '">').concat(Q(String(_2)), "</span>\n <strong>").concat(Q(g2), " ").concat(Q(b2), '</strong>\n </div>\n <div class="info-subtitle">').concat(t2.orb.toFixed(1), "\xB0 orb \xB7 ").concat(Q(x2), '</div>\n </div>\n <button class="info-close" id="bi-info-close-btn">\u2715</button>\n </div>\n <div style="display:flex;gap:6px;margin-bottom:10px;">\n <span class="wheel-badge inner">Inner \xB7 ').concat(Q(y2), '</span>\n <span class="wheel-badge outer">Outer \xB7 ').concat(Q(b2), "</span>\n </div>\n ").concat(S2, "\n "), m2.classList.add("open"), m2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (f2 = document.getElementById("bi-info-close-btn")) == null || f2.addEventListener("click", () => {
|
|
6951
|
-
|
|
6983
|
+
Uv(), Xv();
|
|
6952
6984
|
}), (p2 = document.getElementById("bi-ask-claude-asp-btn")) == null || p2.addEventListener("click", () => {
|
|
6953
|
-
if (!
|
|
6985
|
+
if (!Tv) return;
|
|
6954
6986
|
let e6 = document.getElementById("bi-ask-claude-asp-btn");
|
|
6955
|
-
!e6 || e6.disabled || (e6.disabled = true, e6.textContent = "\u23F3 Sending\u2026", e6.classList.add("sending"),
|
|
6987
|
+
!e6 || e6.disabled || (e6.disabled = true, e6.textContent = "\u23F3 Sending\u2026", e6.classList.add("sending"), Tv({ type: "cross_aspect", data: { planet1: t2.planet1, wheel1: t2.wheel1, planet2: t2.planet2, wheel2: t2.wheel2, aspect_type: t2.type, orb: t2.orb, applying: t2.applying, mode: n2 } }).then(() => {
|
|
6956
6988
|
e6.textContent = "\u2713 Sent", e6.classList.remove("sending"), e6.classList.add("sent"), setTimeout(() => {
|
|
6957
6989
|
e6.textContent = "\u2728 Interpret this", e6.classList.remove("sent"), e6.disabled = false;
|
|
6958
6990
|
}, 2500);
|
|
@@ -6961,82 +6993,82 @@ function Tv(e5, t2, n2, r2, i2) {
|
|
|
6961
6993
|
}));
|
|
6962
6994
|
});
|
|
6963
6995
|
}
|
|
6964
|
-
function
|
|
6965
|
-
|
|
6996
|
+
function Kv(e5, t2) {
|
|
6997
|
+
Pv.forEach(({ vis: n2, color: r2, symbolEls: i2 }, a2) => {
|
|
6966
6998
|
let o2 = a2.split("|");
|
|
6967
6999
|
(t2 === "inner" ? o2[0] === e5 : o2[2] === e5) ? (n2.style.stroke = r2, n2.style.strokeOpacity = "0.92", n2.style.strokeWidth = "1.8", n2.removeAttribute("stroke-dasharray"), n2.setAttribute("filter", "url(#aspect-glow)"), i2.forEach((e6) => e6.style.opacity = "1")) : (n2.style.strokeOpacity = "0.05", n2.style.strokeWidth = "0.5", n2.removeAttribute("filter"), i2.forEach((e6) => e6.style.opacity = "0.15"));
|
|
6968
|
-
}),
|
|
7000
|
+
}), Jv(e5, t2);
|
|
6969
7001
|
}
|
|
6970
|
-
function
|
|
6971
|
-
|
|
7002
|
+
function qv(e5, t2) {
|
|
7003
|
+
Pv.forEach(({ vis: n2, color: r2, symbolEls: i2 }, a2) => {
|
|
6972
7004
|
a2 === e5 ? (n2.style.stroke = t2, n2.style.strokeOpacity = "0.95", n2.style.strokeWidth = "2", n2.removeAttribute("stroke-dasharray"), n2.setAttribute("filter", "url(#aspect-glow)"), i2.forEach((e6) => e6.style.opacity = "1")) : (n2.style.strokeOpacity = "0.05", n2.style.strokeWidth = "0.5", n2.removeAttribute("filter"), i2.forEach((e6) => e6.style.opacity = "0.15"));
|
|
6973
7005
|
});
|
|
6974
7006
|
}
|
|
6975
|
-
function
|
|
7007
|
+
function Jv(e5, t2) {
|
|
6976
7008
|
let n2 = e5.toLowerCase(), r2 = /* @__PURE__ */ new Set(), i2 = /* @__PURE__ */ new Set();
|
|
6977
|
-
|
|
7009
|
+
Pv.forEach((e6, a3) => {
|
|
6978
7010
|
var o2, s2;
|
|
6979
7011
|
let c2 = a3.split("|"), l2 = ((o2 = c2[0]) == null ? "" : o2).toLowerCase(), u2 = ((s2 = c2[2]) == null ? "" : s2).toLowerCase();
|
|
6980
7012
|
t2 === "inner" && l2 === n2 && i2.add(u2), t2 === "outer" && u2 === n2 && r2.add(l2);
|
|
6981
7013
|
});
|
|
6982
7014
|
let a2 = (e6, t3) => t3 === "inner" && r2.has(e6) || t3 === "outer" && i2.has(e6);
|
|
6983
|
-
|
|
7015
|
+
Nv == null || Nv.querySelectorAll(".planet-hit").forEach((e6) => {
|
|
6984
7016
|
var r3;
|
|
6985
7017
|
let i3 = e6.dataset.wheel, o2 = (r3 = e6.dataset.planet) == null ? "" : r3, s2 = o2 === n2 && i3 === t2, c2 = !s2 && a2(o2, i3);
|
|
6986
7018
|
e6.classList.toggle("dim", !s2 && !c2);
|
|
6987
|
-
}),
|
|
7019
|
+
}), Nv == null || Nv.querySelectorAll(".planet-glyph-group").forEach((e6) => {
|
|
6988
7020
|
var r3;
|
|
6989
7021
|
let i3 = e6.dataset.wheel, o2 = (r3 = e6.dataset.planet) == null ? "" : r3;
|
|
6990
7022
|
o2 === n2 && i3 === t2 ? e6.style.opacity = "1" : a2(o2, i3) ? e6.style.opacity = "0.55" : e6.style.opacity = "0.12";
|
|
6991
7023
|
});
|
|
6992
7024
|
}
|
|
6993
|
-
function
|
|
6994
|
-
|
|
7025
|
+
function Yv() {
|
|
7026
|
+
Pv.forEach(({ vis: e5, symbolEls: t2 }) => {
|
|
6995
7027
|
e5.style.strokeOpacity = "0.05", e5.style.strokeWidth = "0.5", e5.removeAttribute("filter"), t2.forEach((e6) => e6.style.opacity = "0.15");
|
|
6996
|
-
}),
|
|
7028
|
+
}), Nv == null || Nv.querySelectorAll(".planet-glyph-group").forEach((e5) => {
|
|
6997
7029
|
e5.style.opacity = "0.3";
|
|
6998
|
-
}),
|
|
7030
|
+
}), Nv == null || Nv.querySelectorAll(".planet-hit").forEach((e5) => {
|
|
6999
7031
|
e5.classList.add("dim");
|
|
7000
7032
|
});
|
|
7001
7033
|
}
|
|
7002
|
-
function
|
|
7003
|
-
|
|
7004
|
-
let i2 =
|
|
7034
|
+
function Xv() {
|
|
7035
|
+
Pv.forEach(({ vis: e5, color: t2, orb: n2, symbolEls: r2 }) => {
|
|
7036
|
+
let i2 = ov(n2 == null ? 4 : n2);
|
|
7005
7037
|
e5.style.stroke = t2, e5.style.strokeOpacity = i2.opacity, e5.style.strokeWidth = i2.width, e5.removeAttribute("filter"), i2.dash ? e5.setAttribute("stroke-dasharray", i2.dash) : e5.removeAttribute("stroke-dasharray"), r2.forEach((e6) => e6.style.opacity = "");
|
|
7006
|
-
}),
|
|
7038
|
+
}), Nv == null || Nv.querySelectorAll(".planet-glyph-group").forEach((e5) => {
|
|
7007
7039
|
e5.style.opacity = "";
|
|
7008
|
-
}),
|
|
7040
|
+
}), Nv == null || Nv.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")), ay();
|
|
7009
7041
|
}
|
|
7010
|
-
function
|
|
7011
|
-
|
|
7042
|
+
function Zv(e5) {
|
|
7043
|
+
Pv.forEach(({ vis: t2, symbolEls: n2 }) => {
|
|
7012
7044
|
t2.style.display = e5 ? "" : "none", n2.forEach((t3) => t3.style.display = e5 ? "" : "none");
|
|
7013
|
-
}),
|
|
7045
|
+
}), Nv == null || Nv.querySelectorAll(".aspect-hit").forEach((t2) => {
|
|
7014
7046
|
t2.style.display = e5 ? "" : "none";
|
|
7015
7047
|
});
|
|
7016
7048
|
}
|
|
7017
|
-
function
|
|
7049
|
+
function Qv(e5, t2, n2) {
|
|
7018
7050
|
return "".concat(e5, "|inner|").concat(t2, "|outer|").concat(n2);
|
|
7019
7051
|
}
|
|
7020
|
-
function
|
|
7052
|
+
function $v(e5, t2, n2, r2, i2) {
|
|
7021
7053
|
return t2 === "inner" && r2 === "outer" ? "".concat(e5, "|inner|").concat(n2, "|outer|").concat(i2) : r2 === "inner" && t2 === "outer" ? "".concat(n2, "|inner|").concat(e5, "|outer|").concat(i2) : [e5, n2].sort().join("|") + "|".concat(i2);
|
|
7022
7054
|
}
|
|
7023
|
-
function
|
|
7055
|
+
function ey(e5, t2) {
|
|
7024
7056
|
return e5.filter((e6) => {
|
|
7025
7057
|
var n2;
|
|
7026
7058
|
return ((n2 = e6.type) == null ? "" : n2).toLowerCase() === t2;
|
|
7027
7059
|
});
|
|
7028
7060
|
}
|
|
7029
|
-
function
|
|
7061
|
+
function ty(e5) {
|
|
7030
7062
|
let t2 = [];
|
|
7031
7063
|
if (!e5.length) return t2;
|
|
7032
|
-
let n2 =
|
|
7064
|
+
let n2 = ey(e5, "trine"), r2 = ey(e5, "square"), i2 = ey(e5, "opposition"), a2 = ey(e5, "conjunction"), o2 = /* @__PURE__ */ new Set();
|
|
7033
7065
|
for (let e6 = 0; e6 < n2.length; e6++) for (let r3 = e6 + 1; r3 < n2.length; r3++) {
|
|
7034
7066
|
let i3 = n2[e6], a3 = n2[r3];
|
|
7035
7067
|
if (i3.planet1 !== a3.planet1) continue;
|
|
7036
7068
|
let s3 = i3.planet1, c3 = i3.planet2, l2 = a3.planet2;
|
|
7037
7069
|
if (c3 === l2) continue;
|
|
7038
7070
|
let u2 = [s3, c3, l2].sort().join("|");
|
|
7039
|
-
o2.has(u2) || (o2.add(u2), t2.push({ name: "Cross Trine", description: "".concat(Z(s3), " trines ").concat(Z(c3), " & ").concat(Z(l2)), planets: [{ name: s3, wheel: "inner" }, { name: c3, wheel: "outer" }, { name: l2, wheel: "outer" }], aspectKeys: [
|
|
7071
|
+
o2.has(u2) || (o2.add(u2), t2.push({ name: "Cross Trine", description: "".concat(Z(s3), " trines ").concat(Z(c3), " & ").concat(Z(l2)), planets: [{ name: s3, wheel: "inner" }, { name: c3, wheel: "outer" }, { name: l2, wheel: "outer" }], aspectKeys: [Qv(s3, c3, "trine"), Qv(s3, l2, "trine")] }));
|
|
7040
7072
|
}
|
|
7041
7073
|
let s2 = /* @__PURE__ */ new Set();
|
|
7042
7074
|
for (let e6 of i2) {
|
|
@@ -7051,7 +7083,7 @@ function Fv(e5) {
|
|
|
7051
7083
|
if (s2.has(c3)) continue;
|
|
7052
7084
|
let l2;
|
|
7053
7085
|
if (l2 = o3 === "outer" ? e7 : r2.find((e8) => e8.planet1 === a3 && e8.planet2 === i3), l2) {
|
|
7054
|
-
s2.add(c3), t2.push({ name: "Cross T-Square", description: "Apex: ".concat(Z(a3), " (").concat(o3, ")"), planets: [{ name: n3, wheel: "inner" }, { name: i3, wheel: "outer" }, { name: a3, wheel: o3 }], aspectKeys: [
|
|
7086
|
+
s2.add(c3), t2.push({ name: "Cross T-Square", description: "Apex: ".concat(Z(a3), " (").concat(o3, ")"), planets: [{ name: n3, wheel: "inner" }, { name: i3, wheel: "outer" }, { name: a3, wheel: o3 }], aspectKeys: [Qv(n3, i3, "opposition"), $v(n3, "inner", a3, o3, "square"), $v(a3, o3, i3, "outer", "square")] });
|
|
7055
7087
|
break;
|
|
7056
7088
|
}
|
|
7057
7089
|
}
|
|
@@ -7067,26 +7099,26 @@ function Fv(e5) {
|
|
|
7067
7099
|
for (let [r3, i3] of e6) {
|
|
7068
7100
|
if (i3.length < 2) continue;
|
|
7069
7101
|
let e7 = "".concat(r3, "|").concat([...i3].sort().join("|"));
|
|
7070
|
-
n3.has(e7) || (n3.add(e7), t2.push({ name: "Cross Stellium", description: "".concat(Z(r3), " conjunct ").concat(i3.map(Z).join(" & "), " (cross-wheel)"), planets: [{ name: r3, wheel: "inner" }, ...i3.map((e8) => ({ name: e8, wheel: "outer" }))], aspectKeys: i3.map((e8) =>
|
|
7102
|
+
n3.has(e7) || (n3.add(e7), t2.push({ name: "Cross Stellium", description: "".concat(Z(r3), " conjunct ").concat(i3.map(Z).join(" & "), " (cross-wheel)"), planets: [{ name: r3, wheel: "inner" }, ...i3.map((e8) => ({ name: e8, wheel: "outer" }))], aspectKeys: i3.map((e8) => Qv(r3, e8, "conjunction")) }));
|
|
7071
7103
|
}
|
|
7072
7104
|
}
|
|
7073
7105
|
return t2;
|
|
7074
7106
|
}
|
|
7075
|
-
var
|
|
7076
|
-
function
|
|
7107
|
+
var ny = { "Cross Trine": "rgba( 82,168,224, 0.14)", "Cross T-Square": "rgba(224,138, 82, 0.14)", "Cross Stellium": "rgba(154,127,212, 0.14)" }, ry = { "Cross Trine": "rgba( 82,168,224, 0.70)", "Cross T-Square": "rgba(224,138, 82, 0.70)", "Cross Stellium": "rgba(154,127,212, 0.70)" };
|
|
7108
|
+
function iy(e5, t2, n2, r2) {
|
|
7077
7109
|
var i2, a2;
|
|
7078
|
-
if (!
|
|
7110
|
+
if (!Nv) return null;
|
|
7079
7111
|
let o2 = /* @__PURE__ */ new Map();
|
|
7080
7112
|
for (let e6 of t2) o2.set(e6.name.toLowerCase(), e6.longitude);
|
|
7081
7113
|
let s2 = /* @__PURE__ */ new Map();
|
|
7082
7114
|
for (let e6 of n2) s2.set(e6.name.toLowerCase(), e6.longitude);
|
|
7083
7115
|
let c2 = [];
|
|
7084
7116
|
for (let { name: t3, wheel: n3 } of e5.planets) {
|
|
7085
|
-
let e6 = n3 === "inner" ? o2 : s2, i3 = n3 === "inner" ?
|
|
7117
|
+
let e6 = n3 === "inner" ? o2 : s2, i3 = n3 === "inner" ? X_ : $_, a3 = e6.get(t3.toLowerCase());
|
|
7086
7118
|
a3 != null && c2.push(Y(a3, i3, r2));
|
|
7087
7119
|
}
|
|
7088
7120
|
if (c2.length < 2) return null;
|
|
7089
|
-
let l2 = (i2 =
|
|
7121
|
+
let l2 = (i2 = ny[e5.name]) == null ? "rgba(128,128,128,0.12)" : i2, u2 = (a2 = ry[e5.name]) == null ? "rgba(128,128,128,0.60)" : a2, d2;
|
|
7090
7122
|
if (c2.length === 2) {
|
|
7091
7123
|
let e6 = X("line");
|
|
7092
7124
|
e6.setAttribute("x1", c2[0].x.toFixed(1)), e6.setAttribute("y1", c2[0].y.toFixed(1)), e6.setAttribute("x2", c2[1].x.toFixed(1)), e6.setAttribute("y2", c2[1].y.toFixed(1)), e6.setAttribute("stroke", u2), e6.setAttribute("stroke-width", "2"), e6.setAttribute("fill", "none"), d2 = e6;
|
|
@@ -7095,37 +7127,37 @@ function Rv(e5, t2, n2, r2) {
|
|
|
7095
7127
|
t3.setAttribute("points", e6.map((e7) => "".concat(e7.x.toFixed(1), ",").concat(e7.y.toFixed(1))).join(" ")), t3.setAttribute("fill", l2), t3.setAttribute("stroke", u2), t3.setAttribute("stroke-width", "1.5"), t3.setAttribute("stroke-linejoin", "round"), d2 = t3;
|
|
7096
7128
|
}
|
|
7097
7129
|
d2.setAttribute("pointer-events", "none"), d2.setAttribute("class", "pattern-overlay");
|
|
7098
|
-
let f2 =
|
|
7099
|
-
return f2 ?
|
|
7130
|
+
let f2 = Nv.querySelector(".aspect-hit");
|
|
7131
|
+
return f2 ? Nv.insertBefore(d2, f2) : Nv.appendChild(d2), d2;
|
|
7100
7132
|
}
|
|
7101
|
-
function
|
|
7102
|
-
|
|
7133
|
+
function ay() {
|
|
7134
|
+
Nv == null || Nv.querySelectorAll(".pattern-overlay").forEach((e5) => e5.remove());
|
|
7103
7135
|
}
|
|
7104
|
-
function
|
|
7136
|
+
function oy(e5) {
|
|
7105
7137
|
let t2 = new Set(e5.aspectKeys);
|
|
7106
|
-
|
|
7138
|
+
Pv.forEach(({ vis: e6, color: n3, symbolEls: r2 }, i2) => {
|
|
7107
7139
|
t2.has(i2) ? (e6.style.stroke = n3, e6.style.strokeOpacity = "0.92", e6.style.strokeWidth = "1.8", e6.removeAttribute("stroke-dasharray"), e6.setAttribute("filter", "url(#aspect-glow)"), r2.forEach((e7) => e7.style.opacity = "1")) : (e6.style.strokeOpacity = "0.05", e6.style.strokeWidth = "0.5", e6.removeAttribute("filter"), r2.forEach((e7) => e7.style.opacity = "0.15"));
|
|
7108
7140
|
});
|
|
7109
7141
|
let n2 = new Set(e5.planets.map((e6) => "".concat(e6.name.toLowerCase(), "|").concat(e6.wheel)));
|
|
7110
|
-
|
|
7142
|
+
Nv == null || Nv.querySelectorAll(".planet-glyph-group").forEach((e6) => {
|
|
7111
7143
|
var t3, r2;
|
|
7112
7144
|
let i2 = "".concat((t3 = e6.dataset.planet) == null ? "" : t3, "|").concat((r2 = e6.dataset.wheel) == null ? "" : r2);
|
|
7113
7145
|
e6.style.opacity = n2.has(i2) ? "1" : "0.12";
|
|
7114
|
-
}),
|
|
7146
|
+
}), Nv == null || Nv.querySelectorAll(".planet-hit").forEach((e6) => {
|
|
7115
7147
|
var t3, r2;
|
|
7116
7148
|
let i2 = "".concat((t3 = e6.dataset.planet) == null ? "" : t3, "|").concat((r2 = e6.dataset.wheel) == null ? "" : r2);
|
|
7117
7149
|
e6.classList.toggle("dim", !n2.has(i2));
|
|
7118
7150
|
});
|
|
7119
7151
|
}
|
|
7120
|
-
function
|
|
7152
|
+
function sy(e5, t2, n2, r2, i2, a2) {
|
|
7121
7153
|
var o2, s2, c2, l2, u2, d2, f2, p2, m2, h2, g2, _2;
|
|
7122
|
-
|
|
7154
|
+
Tv = i2 == null ? null : i2;
|
|
7123
7155
|
let v2 = (o2 = t2.mode) == null ? "synastry" : o2, y2 = (s2 = t2._birth_params_inner) == null ? void 0 : s2.location, b2 = (c2 = t2._birth_params_outer) == null ? void 0 : c2.location, x2 = e5.querySelector("#pan-zoom-controls");
|
|
7124
|
-
e5.innerHTML = "", x2 && e5.appendChild(x2),
|
|
7125
|
-
let S2 =
|
|
7126
|
-
te2.length === 0 && S2.length > 0 && ee2.length > 0 && (te2 =
|
|
7127
|
-
let w2 = (d2 = (f2 = (p2 = C2[0]) == null ? void 0 : p2.cusp_lon) == null ? t2.ascendant : f2) == null ? 0 : d2, T2 =
|
|
7128
|
-
E2.setAttribute("viewBox", "0 0 620 620"), E2.setAttribute("width", "100%"), E2.setAttribute("height", "100%"), E2.style.display = "block", e5.appendChild(E2),
|
|
7156
|
+
e5.innerHTML = "", x2 && e5.appendChild(x2), Pv.clear(), Uv();
|
|
7157
|
+
let S2 = bv(t2.inner), ee2 = bv(t2.outer), C2 = (l2 = t2.inner_houses) == null ? [] : l2, te2 = (u2 = t2.cross_aspects) == null ? [] : u2;
|
|
7158
|
+
te2.length === 0 && S2.length > 0 && ee2.length > 0 && (te2 = Sv(S2, ee2));
|
|
7159
|
+
let w2 = (d2 = (f2 = (p2 = C2[0]) == null ? void 0 : p2.cusp_lon) == null ? t2.ascendant : f2) == null ? 0 : d2, T2 = dv(), E2 = X("svg");
|
|
7160
|
+
E2.setAttribute("viewBox", "0 0 620 620"), E2.setAttribute("width", "100%"), E2.setAttribute("height", "100%"), E2.style.display = "block", e5.appendChild(E2), Nv = E2;
|
|
7129
7161
|
let ne2 = X("defs");
|
|
7130
7162
|
ne2.innerHTML = '\n <filter id="aspect-glow" x="-50%" y="-50%" width="200%" height="200%">\n <feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="blur" />\n <feComposite in="SourceGraphic" in2="blur" operator="over" />\n </filter>\n ', E2.appendChild(ne2), i_(E2, "pan-zoom-controls");
|
|
7131
7163
|
let re2 = X("g");
|
|
@@ -7147,47 +7179,47 @@ function Vv(e5, t2, n2, r2, i2, a2) {
|
|
|
7147
7179
|
};
|
|
7148
7180
|
ue2(ce2, "0.5"), ce2.setAttribute("pointer-events", "none"), re2.appendChild(ce2);
|
|
7149
7181
|
let de2 = X("circle");
|
|
7150
|
-
de2.setAttribute("cx", "310"), de2.setAttribute("cy", "310"), de2.setAttribute("r", String(
|
|
7182
|
+
de2.setAttribute("cx", "310"), de2.setAttribute("cy", "310"), de2.setAttribute("r", String(Z_)), de2.setAttribute("fill", "var(--outer-ring, #fdf5e4)"), ue2(de2, "0.8"), de2.setAttribute("pointer-events", "none"), D2.appendChild(de2);
|
|
7151
7183
|
let fe2 = X("circle");
|
|
7152
|
-
fe2.setAttribute("cx", "310"), fe2.setAttribute("cy", "310"), fe2.setAttribute("r", String(
|
|
7153
|
-
for (let e6 = 0; e6 < 12; e6++)
|
|
7184
|
+
fe2.setAttribute("cx", "310"), fe2.setAttribute("cy", "310"), fe2.setAttribute("r", String(Q_)), fe2.style.fill = "var(--bg, #faf9f5)", ue2(fe2, "0.8"), fe2.setAttribute("pointer-events", "none"), D2.appendChild(fe2);
|
|
7185
|
+
for (let e6 = 0; e6 < 12; e6++) mv(D2, w2, e6, Q_, Z_, cy(l_(e6, T2)), 0.16);
|
|
7154
7186
|
for (let e6 = 0; e6 < 12; e6++) {
|
|
7155
|
-
let t3 = e6 * 30, { x: n3, y: r3 } = Y(t3,
|
|
7187
|
+
let t3 = e6 * 30, { x: n3, y: r3 } = Y(t3, Q_, w2), { x: i3, y: a3 } = Y(t3, Z_, w2), o3 = X("line");
|
|
7156
7188
|
o3.setAttribute("x1", n3.toFixed(1)), o3.setAttribute("y1", r3.toFixed(1)), o3.setAttribute("x2", i3.toFixed(1)), o3.setAttribute("y2", a3.toFixed(1)), ue2(o3, "0.5"), o3.setAttribute("pointer-events", "none"), D2.appendChild(o3);
|
|
7157
7189
|
let { x: s3, y: c3 } = Y(t3 + 15, 536 / 2, w2), l3 = X("text");
|
|
7158
|
-
l3.setAttribute("x", s3.toFixed(1)), l3.setAttribute("y", c3.toFixed(1)), l3.setAttribute("text-anchor", "middle"), l3.setAttribute("dominant-baseline", "central"), l3.setAttribute("font-size", "12"), l3.setAttribute("fill",
|
|
7190
|
+
l3.setAttribute("x", s3.toFixed(1)), l3.setAttribute("y", c3.toFixed(1)), l3.setAttribute("text-anchor", "middle"), l3.setAttribute("dominant-baseline", "central"), l3.setAttribute("font-size", "12"), l3.setAttribute("fill", cy(l_(e6, T2))), l3.setAttribute("pointer-events", "none"), l3.style.fontFamily = a_, l3.textContent = nv[e6], D2.appendChild(l3);
|
|
7159
7191
|
for (let e7 = 1; e7 < 30; e7++) {
|
|
7160
|
-
let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ?
|
|
7192
|
+
let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ? Z_ - 8 : Z_ - 3.5, { x: a4, y: o4 } = Y(n4, Z_, w2), { x: s4, y: c4 } = Y(n4, i4, w2), l4 = X("line");
|
|
7161
7193
|
l4.setAttribute("x1", a4.toFixed(1)), l4.setAttribute("y1", o4.toFixed(1)), l4.setAttribute("x2", s4.toFixed(1)), l4.setAttribute("y2", c4.toFixed(1));
|
|
7162
7194
|
let u4 = r4 ? le2.tickMajor : le2.tickMinor;
|
|
7163
7195
|
l4.setAttribute("stroke", u4.stroke), l4.setAttribute("stroke-opacity", String(u4.opacity)), l4.setAttribute("stroke-width", r4 ? "0.8" : "0.5"), l4.setAttribute("pointer-events", "none"), D2.appendChild(l4);
|
|
7164
7196
|
}
|
|
7165
|
-
let { x: u3, y: d3 } = Y(t3,
|
|
7166
|
-
x3.setAttribute("d", ["M ".concat(u3.toFixed(1), " ").concat(d3.toFixed(1)), "A ".concat(
|
|
7167
|
-
let C3 = "".concat(
|
|
7168
|
-
|
|
7169
|
-
|
|
7197
|
+
let { x: u3, y: d3 } = Y(t3, Z_, w2), { x: f3, y: p3 } = Y(t3 + 30, Z_, w2), { x: m3, y: h3 } = Y(t3, Q_, w2), { x: g3, y: _3 } = Y(t3 + 30, Q_, w2), x3 = X("path");
|
|
7198
|
+
x3.setAttribute("d", ["M ".concat(u3.toFixed(1), " ").concat(d3.toFixed(1)), "A ".concat(Z_, " ").concat(Z_, " 0 0 0 ").concat(f3.toFixed(1), " ").concat(p3.toFixed(1)), "L ".concat(g3.toFixed(1), " ").concat(_3.toFixed(1)), "A ".concat(Q_, " ").concat(Q_, " 0 0 1 ").concat(m3.toFixed(1), " ").concat(h3.toFixed(1)), "Z"].join(" ")), x3.setAttribute("fill", "transparent"), x3.setAttribute("class", "hit-region sign-hit"), x3.style.pointerEvents = "all", x3.style.cursor = "pointer";
|
|
7199
|
+
let C3 = "".concat(nv[e6], " ").concat(rv[e6]), te3 = "".concat(Z(lv[e6]), " \xB7 ").concat(Z(uv[e6]));
|
|
7200
|
+
ly(x3, "".concat(rv[e6], " \u2014 click for sign info")), x3.addEventListener("mouseenter", (e7) => Ov(e7.clientX, e7.clientY, C3, te3, "Click for interpretation")), x3.addEventListener("mousemove", (e7) => Ov(e7.clientX, e7.clientY, C3, te3, "Click for interpretation")), x3.addEventListener("mouseleave", kv), x3.addEventListener("click", (t4) => {
|
|
7201
|
+
kv(), Cv == null || Cv("".concat(C3)), Vv(t4, e6, v2, y2, b2, S2, ee2);
|
|
7170
7202
|
}), se2.appendChild(x3);
|
|
7171
7203
|
}
|
|
7172
7204
|
let pe2 = X("circle");
|
|
7173
|
-
pe2.setAttribute("cx", "310"), pe2.setAttribute("cy", "310"), pe2.setAttribute("r", String(
|
|
7205
|
+
pe2.setAttribute("cx", "310"), pe2.setAttribute("cy", "310"), pe2.setAttribute("r", String(G_)), pe2.setAttribute("fill", "var(--inner-ring, #f2ede6)"), ue2(pe2, "0.6"), pe2.setAttribute("pointer-events", "none"), D2.appendChild(pe2);
|
|
7174
7206
|
let me2 = X("circle");
|
|
7175
|
-
me2.setAttribute("cx", "310"), me2.setAttribute("cy", "310"), me2.setAttribute("r", String(
|
|
7176
|
-
for (let e6 = 0; e6 < 12; e6++)
|
|
7207
|
+
me2.setAttribute("cx", "310"), me2.setAttribute("cy", "310"), me2.setAttribute("r", String(K_)), me2.style.fill = "var(--bg, #faf9f5)", ue2(me2, "0.6"), me2.setAttribute("pointer-events", "none"), D2.appendChild(me2);
|
|
7208
|
+
for (let e6 = 0; e6 < 12; e6++) mv(D2, w2, e6, K_, G_, l_(e6, T2), c_(T2).zodiacFillOpacity);
|
|
7177
7209
|
for (let e6 = 0; e6 < 12; e6++) {
|
|
7178
|
-
let t3 = e6 * 30, { x: n3, y: r3 } = Y(t3,
|
|
7210
|
+
let t3 = e6 * 30, { x: n3, y: r3 } = Y(t3, K_, w2), { x: i3, y: a3 } = Y(t3, G_, w2), o3 = X("line");
|
|
7179
7211
|
o3.setAttribute("x1", n3.toFixed(1)), o3.setAttribute("y1", r3.toFixed(1)), o3.setAttribute("x2", i3.toFixed(1)), o3.setAttribute("y2", a3.toFixed(1)), ue2(o3, "0.5"), o3.setAttribute("pointer-events", "none"), D2.appendChild(o3);
|
|
7180
7212
|
let { x: s3, y: c3 } = Y(t3 + 15, 444 / 2, w2), l3 = X("text");
|
|
7181
|
-
l3.setAttribute("x", s3.toFixed(1)), l3.setAttribute("y", c3.toFixed(1)), l3.setAttribute("text-anchor", "middle"), l3.setAttribute("dominant-baseline", "central"), l3.setAttribute("font-size", "13"), l3.setAttribute("fill", l_(e6, T2)), l3.setAttribute("pointer-events", "none"), l3.style.fontFamily = a_, l3.textContent =
|
|
7213
|
+
l3.setAttribute("x", s3.toFixed(1)), l3.setAttribute("y", c3.toFixed(1)), l3.setAttribute("text-anchor", "middle"), l3.setAttribute("dominant-baseline", "central"), l3.setAttribute("font-size", "13"), l3.setAttribute("fill", l_(e6, T2)), l3.setAttribute("pointer-events", "none"), l3.style.fontFamily = a_, l3.textContent = nv[e6], D2.appendChild(l3);
|
|
7182
7214
|
for (let e7 = 1; e7 < 30; e7++) {
|
|
7183
|
-
let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ?
|
|
7215
|
+
let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ? G_ - 7 : G_ - 3, { x: a4, y: o4 } = Y(n4, G_, w2), { x: s4, y: c4 } = Y(n4, i4, w2), l4 = X("line");
|
|
7184
7216
|
l4.setAttribute("x1", a4.toFixed(1)), l4.setAttribute("y1", o4.toFixed(1)), l4.setAttribute("x2", s4.toFixed(1)), l4.setAttribute("y2", c4.toFixed(1));
|
|
7185
7217
|
let u3 = r4 ? le2.tickMajor : le2.tickMinor;
|
|
7186
7218
|
l4.setAttribute("stroke", u3.stroke), l4.setAttribute("stroke-opacity", String(u3.opacity)), l4.setAttribute("stroke-width", r4 ? "0.8" : "0.5"), l4.setAttribute("pointer-events", "none"), D2.appendChild(l4);
|
|
7187
7219
|
}
|
|
7188
7220
|
}
|
|
7189
7221
|
let he2 = X("g");
|
|
7190
|
-
he2.setAttribute("pointer-events", "none"), he2.setAttribute("opacity", T2 ? "0.18" : "0.10"), he2.setAttribute("transform", "translate(".concat(
|
|
7222
|
+
he2.setAttribute("pointer-events", "none"), he2.setAttribute("opacity", T2 ? "0.18" : "0.10"), he2.setAttribute("transform", "translate(".concat(U_, ", ").concat(W_, ")"));
|
|
7191
7223
|
let ge2 = X("circle");
|
|
7192
7224
|
ge2.setAttribute("cx", "0"), ge2.setAttribute("cy", "0"), ge2.setAttribute("r", "46"), ge2.setAttribute("fill", "none"), ge2.setAttribute("stroke", "var(--gold, #c8a84b)"), ge2.setAttribute("stroke-width", "2"), he2.appendChild(ge2);
|
|
7193
7225
|
let _e2 = X("circle");
|
|
@@ -7200,52 +7232,52 @@ function Vv(e5, t2, n2, r2, i2, a2) {
|
|
|
7200
7232
|
}
|
|
7201
7233
|
re2.appendChild(he2);
|
|
7202
7234
|
let ye2 = X("circle");
|
|
7203
|
-
ye2.setAttribute("cx", "310"), ye2.setAttribute("cy", "310"), ye2.setAttribute("r", String(
|
|
7235
|
+
ye2.setAttribute("cx", "310"), ye2.setAttribute("cy", "310"), ye2.setAttribute("r", String(K_)), ye2.style.fill = "var(--surface, #f2f1ea)", ye2.setAttribute("pointer-events", "none"), ie2.appendChild(ye2);
|
|
7204
7236
|
let be2 = X("circle");
|
|
7205
|
-
if (be2.setAttribute("cx", "310"), be2.setAttribute("cy", "310"), be2.setAttribute("r", String(
|
|
7237
|
+
if (be2.setAttribute("cx", "310"), be2.setAttribute("cy", "310"), be2.setAttribute("r", String(Y_)), be2.style.fill = le2.center, ue2(be2, "0.8"), be2.setAttribute("pointer-events", "none"), ie2.appendChild(be2), C2.length > 0) for (let e6 = 0; e6 < C2.length; e6++) {
|
|
7206
7238
|
let t3 = C2[e6], n3 = C2[(e6 + 1) % C2.length], r3 = [1, 4, 7, 10].includes(t3.number), i3 = X("path");
|
|
7207
|
-
i3.setAttribute("d",
|
|
7208
|
-
let { x: a3, y: o3 } = Y(t3.cusp_lon,
|
|
7239
|
+
i3.setAttribute("d", pv(t3.cusp_lon, n3.cusp_lon, Y_, K_, w2)), i3.setAttribute("fill", l_(Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), T2)), i3.setAttribute("fill-opacity", String(c_(T2).houseFillOpacity)), i3.setAttribute("pointer-events", "none"), ie2.appendChild(i3);
|
|
7240
|
+
let { x: a3, y: o3 } = Y(t3.cusp_lon, Y_, w2), { x: s3, y: c3 } = Y(t3.cusp_lon, K_, w2), l3 = X("line");
|
|
7209
7241
|
l3.setAttribute("x1", a3.toFixed(1)), l3.setAttribute("y1", o3.toFixed(1)), l3.setAttribute("x2", s3.toFixed(1)), l3.setAttribute("y2", c3.toFixed(1));
|
|
7210
7242
|
let u3 = r3 ? le2.cuspAngular : le2.cuspIntermediate;
|
|
7211
7243
|
l3.setAttribute("stroke", u3.stroke), l3.setAttribute("stroke-opacity", String(u3.opacity)), l3.setAttribute("stroke-width", r3 ? "1.8" : "0.9"), r3 || l3.setAttribute("stroke-dasharray", le2.cuspDash(0.9)), l3.setAttribute("pointer-events", "none"), ie2.appendChild(l3);
|
|
7212
|
-
let d3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: f3, y: p3 } = Y(t3.cusp_lon + d3 / 2,
|
|
7244
|
+
let d3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: f3, y: p3 } = Y(t3.cusp_lon + d3 / 2, J_, w2), m3 = X("text");
|
|
7213
7245
|
m3.setAttribute("x", f3.toFixed(1)), m3.setAttribute("y", p3.toFixed(1)), m3.setAttribute("text-anchor", "middle"), m3.setAttribute("dominant-baseline", "central"), m3.setAttribute("font-size", "12"), m3.setAttribute("fill", c_(T2).foreground), m3.setAttribute("opacity", "0.9"), m3.setAttribute("font-weight", r3 ? "700" : "600"), m3.setAttribute("pointer-events", "none"), m3.textContent = String(t3.number), ie2.appendChild(m3);
|
|
7214
7246
|
let h3 = X("circle");
|
|
7215
7247
|
h3.setAttribute("cx", f3.toFixed(1)), h3.setAttribute("cy", p3.toFixed(1)), h3.setAttribute("r", "14"), h3.setAttribute("fill", "transparent"), h3.setAttribute("class", "hit-region house-hit"), h3.style.pointerEvents = "all", h3.style.cursor = "pointer";
|
|
7216
|
-
let g3 = "House ".concat(t3.number), _3 = "".concat(
|
|
7217
|
-
|
|
7218
|
-
|
|
7248
|
+
let g3 = "House ".concat(t3.number), _3 = "".concat(Rv[t3.number] ? Rv[t3.number] + " \xB7 " : "").concat(gv(t3.cusp_lon));
|
|
7249
|
+
ly(h3, "".concat(g3, " \u2014 click for interpretation")), h3.addEventListener("mouseenter", (e7) => Ov(e7.clientX, e7.clientY, g3, _3, "Click for interpretation")), h3.addEventListener("mousemove", (e7) => Ov(e7.clientX, e7.clientY, g3, _3, "Click for interpretation")), h3.addEventListener("mouseleave", kv), h3.addEventListener("click", (e7) => {
|
|
7250
|
+
kv(), Cv == null || Cv("".concat(g3, " \xB7 ").concat(gv(t3.cusp_lon))), Bv(e7, t3, n3, v2, y2, b2, S2, ee2);
|
|
7219
7251
|
}), se2.appendChild(h3);
|
|
7220
7252
|
}
|
|
7221
7253
|
let O2 = C2.find((e6) => e6.number === 1), xe2 = C2.find((e6) => e6.number === 4), k2 = C2.find((e6) => e6.number === 7), Se2 = C2.find((e6) => e6.number === 10), Ce2 = [{ lon: (m2 = O2 == null ? void 0 : O2.cusp_lon) == null ? w2 : m2, label: "ASC" }, { lon: (h2 = k2 == null ? void 0 : k2.cusp_lon) == null ? (w2 + 180) % 360 : h2, label: "DSC" }, { lon: (g2 = Se2 == null ? void 0 : Se2.cusp_lon) == null ? (w2 + 270) % 360 : g2, label: "MC" }, { lon: (_2 = xe2 == null ? void 0 : xe2.cusp_lon) == null ? (w2 + 90) % 360 : _2, label: "IC" }];
|
|
7222
7254
|
for (let e6 of Ce2) {
|
|
7223
7255
|
var we2;
|
|
7224
|
-
let t3 =
|
|
7256
|
+
let t3 = Iv[e6.label], { x: n3, y: r3 } = Y(e6.lon, Z_ - 8, w2), i3 = X("text");
|
|
7225
7257
|
i3.setAttribute("x", n3.toFixed(1)), i3.setAttribute("y", r3.toFixed(1)), i3.setAttribute("text-anchor", "middle"), i3.setAttribute("dominant-baseline", "central"), i3.setAttribute("font-size", "12"), i3.setAttribute("font-weight", "700"), i3.setAttribute("fill", c_(T2).foreground), i3.setAttribute("pointer-events", "none"), i3.style.transition = "opacity 150ms ease", i3.textContent = e6.label, ie2.appendChild(i3);
|
|
7226
7258
|
let a3 = X("circle");
|
|
7227
|
-
a3.setAttribute("cx", n3.toFixed(1)), a3.setAttribute("cy", r3.toFixed(1)), a3.setAttribute("r", "14"), a3.setAttribute("fill", "transparent"), a3.setAttribute("class", "hit-region angle-hit"), a3.style.pointerEvents = "all", a3.style.cursor = "pointer",
|
|
7228
|
-
let o3 =
|
|
7259
|
+
a3.setAttribute("cx", n3.toFixed(1)), a3.setAttribute("cy", r3.toFixed(1)), a3.setAttribute("r", "14"), a3.setAttribute("fill", "transparent"), a3.setAttribute("class", "hit-region angle-hit"), a3.style.pointerEvents = "all", a3.style.cursor = "pointer", ly(a3, "".concat((we2 = t3 == null ? void 0 : t3.title) == null ? e6.label : we2, " \u2014 click for interpretation"));
|
|
7260
|
+
let o3 = gv(e6.lon), s3 = "".concat(t3 != null && t3.keyword ? t3.keyword + " \xB7 " : "").concat(o3);
|
|
7229
7261
|
a3.addEventListener("mouseenter", (n4) => {
|
|
7230
7262
|
var r4;
|
|
7231
|
-
|
|
7263
|
+
Ov(n4.clientX, n4.clientY, "".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4), s3, "Click for interpretation"), i3.style.opacity = "0.6";
|
|
7232
7264
|
}), a3.addEventListener("mouseleave", () => {
|
|
7233
|
-
|
|
7265
|
+
kv(), i3.style.opacity = "";
|
|
7234
7266
|
}), a3.addEventListener("click", (n4) => {
|
|
7235
7267
|
var r4;
|
|
7236
|
-
|
|
7268
|
+
kv(), Yv(), Cv == null || Cv("".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4, " \xB7 ").concat(o3)), Lv(n4, e6.label, e6.lon, v2, y2);
|
|
7237
7269
|
}), se2.appendChild(a3);
|
|
7238
7270
|
}
|
|
7239
7271
|
for (let e6 of te2) {
|
|
7240
7272
|
var Te2, Ee2, De2, Oe2, ke2, Ae2, je2, Me2, Ne2, Pe2, Fe2, Ie2;
|
|
7241
7273
|
let t3 = S2.find((t4) => t4.name.toLowerCase() === e6.planet1.toLowerCase()), n3 = ee2.find((t4) => t4.name.toLowerCase() === e6.planet2.toLowerCase());
|
|
7242
7274
|
if (!t3 || !n3) continue;
|
|
7243
|
-
let i3 =
|
|
7275
|
+
let i3 = av((Te2 = (Ee2 = e6.type) == null ? void 0 : Ee2.toLowerCase()) == null ? "" : Te2), a3 = ov(e6.orb), { x: o3, y: s3 } = Y(t3.longitude, X_, w2), { x: c3, y: l3 } = Y(n3.longitude, Q_, w2), u3 = X("line");
|
|
7244
7276
|
u3.setAttribute("x1", o3.toFixed(1)), u3.setAttribute("y1", s3.toFixed(1)), u3.setAttribute("x2", c3.toFixed(1)), u3.setAttribute("y2", l3.toFixed(1)), a3.dash && u3.setAttribute("stroke-dasharray", a3.dash), u3.setAttribute("stroke-linecap", "round"), u3.setAttribute("pointer-events", "none"), u3.style.stroke = i3, u3.style.strokeOpacity = a3.opacity, u3.style.strokeWidth = a3.width, ae2.appendChild(u3);
|
|
7245
7277
|
let d3 = o3 + (c3 - o3) * 0.35, f3 = s3 + (l3 - s3) * 0.35, p3 = Math.hypot(c3 - o3, l3 - s3), m3 = [];
|
|
7246
7278
|
if (p3 > 40) {
|
|
7247
7279
|
var Le2, A2, Re2;
|
|
7248
|
-
let t4 = (Le2 =
|
|
7280
|
+
let t4 = (Le2 = iv[(A2 = (Re2 = e6.type) == null ? void 0 : Re2.toLowerCase()) == null ? "" : A2]) == null ? "" : Le2;
|
|
7249
7281
|
if (t4) {
|
|
7250
7282
|
let e7 = X("circle");
|
|
7251
7283
|
e7.setAttribute("cx", d3.toFixed(1)), e7.setAttribute("cy", f3.toFixed(1)), e7.setAttribute("r", "9"), e7.setAttribute("fill", le2.center), e7.setAttribute("stroke", i3), e7.setAttribute("stroke-opacity", "0.9"), e7.setAttribute("stroke-width", "1"), e7.setAttribute("pointer-events", "none"), e7.classList.add("aspect-symbol-group"), ae2.appendChild(e7), m3.push(e7);
|
|
@@ -7254,26 +7286,26 @@ function Vv(e5, t2, n2, r2, i2, a2) {
|
|
|
7254
7286
|
}
|
|
7255
7287
|
}
|
|
7256
7288
|
let h3 = X("line");
|
|
7257
|
-
h3.setAttribute("x1", o3.toFixed(1)), h3.setAttribute("y1", s3.toFixed(1)), h3.setAttribute("x2", c3.toFixed(1)), h3.setAttribute("y2", l3.toFixed(1)), h3.setAttribute("stroke", "transparent"), h3.setAttribute("stroke-width", "20"), h3.setAttribute("fill", "none"), h3.setAttribute("class", "hit-region aspect-hit"), h3.style.pointerEvents = "all",
|
|
7258
|
-
let g3 = (De2 =
|
|
7289
|
+
h3.setAttribute("x1", o3.toFixed(1)), h3.setAttribute("y1", s3.toFixed(1)), h3.setAttribute("x2", c3.toFixed(1)), h3.setAttribute("y2", l3.toFixed(1)), h3.setAttribute("stroke", "transparent"), h3.setAttribute("stroke-width", "20"), h3.setAttribute("fill", "none"), h3.setAttribute("class", "hit-region aspect-hit"), h3.style.pointerEvents = "all", ly(h3, "Aspect: ".concat(e6.type || "Aspect", " between inner ").concat(e6.planet1, " and outer ").concat(e6.planet2));
|
|
7290
|
+
let g3 = (De2 = tv[t3.name.toLowerCase()]) == null ? t3.name : De2, _3 = (Oe2 = tv[n3.name.toLowerCase()]) == null ? n3.name : Oe2, x3 = (ke2 = (Ae2 = iv[(je2 = (Me2 = e6.type) == null ? void 0 : Me2.toLowerCase()) == null ? "" : je2]) == null ? e6.type : Ae2) == null ? "" : ke2, C3 = v2 === "transit" ? e6.applying ? " (applying)" : " (separating)" : e6.orb <= 1 ? " (exact)" : e6.orb <= 3 ? " (tight)" : " (wide)", te3 = (Ne2 = jv[(Pe2 = (Fe2 = e6.type) == null ? void 0 : Fe2.toLowerCase()) == null ? "" : Pe2]) == null ? "" : Ne2, T3 = "".concat(te3 ? te3 + " \xB7 " : "").concat(g3, " ").concat(x3, " ").concat(_3, " \xB7 ").concat(e6.orb.toFixed(1), "\xB0 orb").concat(C3);
|
|
7259
7291
|
h3.addEventListener("mouseenter", (t4) => {
|
|
7260
7292
|
var n4;
|
|
7261
|
-
return
|
|
7293
|
+
return Ov(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Cross-Aspect" : n4), T3, "Click for interpretation");
|
|
7262
7294
|
}), h3.addEventListener("mousemove", (t4) => {
|
|
7263
7295
|
var n4;
|
|
7264
|
-
return
|
|
7265
|
-
}), h3.addEventListener("mouseleave",
|
|
7296
|
+
return Ov(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Cross-Aspect" : n4), T3, "Click for interpretation");
|
|
7297
|
+
}), h3.addEventListener("mouseleave", kv), h3.addEventListener("click", (t4) => {
|
|
7266
7298
|
var n4, a4, o4, s4, c4, l4;
|
|
7267
|
-
|
|
7268
|
-
let u4 = (n4 =
|
|
7269
|
-
|
|
7270
|
-
}),
|
|
7299
|
+
kv(), qv(Fv(e6), i3), Gv(t4, e6, v2, y2, b2);
|
|
7300
|
+
let u4 = (n4 = tv[e6.planet1.toLowerCase()]) == null ? e6.planet1 : n4, d4 = (a4 = tv[e6.planet2.toLowerCase()]) == null ? e6.planet2 : a4, f4 = (o4 = (s4 = iv[(c4 = (l4 = e6.type) == null ? void 0 : l4.toLowerCase()) == null ? "" : c4]) == null ? e6.type : s4) == null ? "" : o4, p4 = y2 ? "".concat(y2, "'s ").concat(u4) : "".concat(u4), m4 = v2 === "transit" ? "Tr. ".concat(d4) : b2 ? "".concat(b2, "'s ").concat(d4) : d4;
|
|
7301
|
+
Cv == null || Cv("".concat(p4, " ").concat(f4, " ").concat(m4, " \xB7 ").concat(e6.orb.toFixed(1), "\xB0")), r2(e6);
|
|
7302
|
+
}), Pv.set(Fv(e6), { vis: u3, color: i3, aspectType: ((Ie2 = e6.type) == null ? void 0 : Ie2.toLowerCase()) || "unknown", orb: e6.orb, symbolEls: m3 }), se2.appendChild(h3);
|
|
7271
7303
|
}
|
|
7272
7304
|
let ze2 = __(ee2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 7), Be2 = X("g");
|
|
7273
7305
|
Be2.setAttribute("class", "outer-planet-group"), oe2.appendChild(Be2);
|
|
7274
7306
|
for (let e6 of ee2) {
|
|
7275
7307
|
var Ve2, He2, Ue2;
|
|
7276
|
-
let t3 = (Ve2 =
|
|
7308
|
+
let t3 = (Ve2 = tv[e6.name.toLowerCase()]) == null ? "\u2605" : Ve2, r3 = e6.name.toLowerCase(), i3 = (He2 = ze2.get(r3)) == null ? e6.longitude : He2, { x: a3, y: o3 } = Y(i3, $_, w2), s3 = X("g");
|
|
7277
7309
|
s3.setAttribute("class", "planet-glyph-group"), s3.dataset.planet = r3, s3.dataset.wheel = "outer", s3.style.transition = "opacity 200ms ease", Be2.appendChild(s3);
|
|
7278
7310
|
let { x: c3, y: l3 } = Y(e6.longitude, 251, w2), u3 = X("circle");
|
|
7279
7311
|
if (u3.setAttribute("cx", c3.toFixed(1)), u3.setAttribute("cy", l3.toFixed(1)), u3.setAttribute("r", "2.5"), u3.setAttribute("fill", "var(--outer-tick, #c8860e)"), u3.setAttribute("opacity", "0.75"), u3.setAttribute("pointer-events", "none"), s3.appendChild(u3), x_(e6.longitude, i3) > 2) {
|
|
@@ -7282,95 +7314,95 @@ function Vv(e5, t2, n2, r2, i2, a2) {
|
|
|
7282
7314
|
}
|
|
7283
7315
|
let d3 = X("text");
|
|
7284
7316
|
d3.setAttribute("x", a3.toFixed(1)), d3.setAttribute("y", o3.toFixed(1)), d3.setAttribute("text-anchor", "middle"), d3.setAttribute("dominant-baseline", "central"), d3.setAttribute("font-size", "18"), d3.setAttribute("font-weight", "600"), d3.setAttribute("pointer-events", "none"), d3.style.fill = c_(T2).transit, d3.style.fontFamily = a_, d3.textContent = t3, s3.appendChild(d3);
|
|
7285
|
-
let f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), { x: p3, y: m3 } = Y(i3,
|
|
7317
|
+
let f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), { x: p3, y: m3 } = Y(i3, $_ - 14, w2), h3 = X("text");
|
|
7286
7318
|
if (h3.setAttribute("x", p3.toFixed(1)), h3.setAttribute("y", m3.toFixed(1)), h3.setAttribute("text-anchor", "middle"), h3.setAttribute("dominant-baseline", "central"), h3.setAttribute("font-size", "8.5"), h3.setAttribute("fill", "#b08030"), h3.setAttribute("pointer-events", "none"), h3.textContent = "".concat(f3, "\xB0"), s3.appendChild(h3), e6.retrograde) {
|
|
7287
7319
|
let { x: e7, y: t4 } = Y(i3, 277, w2), n3 = X("text");
|
|
7288
7320
|
n3.setAttribute("x", e7.toFixed(1)), n3.setAttribute("y", t4.toFixed(1)), n3.setAttribute("text-anchor", "middle"), n3.setAttribute("dominant-baseline", "central"), n3.setAttribute("font-size", "8"), n3.setAttribute("fill", "#e05252"), n3.setAttribute("pointer-events", "none"), n3.textContent = "\u211E", s3.appendChild(n3);
|
|
7289
7321
|
}
|
|
7290
|
-
let g3 =
|
|
7322
|
+
let g3 = cv(e6.name, e6.longitude);
|
|
7291
7323
|
if (g3) {
|
|
7292
7324
|
let { x: e7, y: t4 } = Y(i3, 276, w2), n3 = X("circle");
|
|
7293
7325
|
n3.setAttribute("cx", e7.toFixed(1)), n3.setAttribute("cy", t4.toFixed(1)), n3.setAttribute("r", "2.5"), n3.setAttribute("fill", g3.positive ? "oklch(72% 0.12 80)" : "oklch(55% 0.18 20 / 0.6)"), n3.setAttribute("pointer-events", "none"), s3.appendChild(n3);
|
|
7294
7326
|
}
|
|
7295
7327
|
let _3 = X("circle");
|
|
7296
|
-
_3.setAttribute("cx", a3.toFixed(1)), _3.setAttribute("cy", o3.toFixed(1)), _3.setAttribute("r", String(
|
|
7297
|
-
let x3 = "".concat(v2 === "transit" ? "Tr. " : b2 ? "".concat(b2, "'s ") : "").concat(t3, " ").concat(Z(e6.name)), S3 = g3 ? " \xB7 ".concat(g3.label) : "", ee3 = (Ue2 =
|
|
7298
|
-
_3.addEventListener("mouseenter", (e7) =>
|
|
7328
|
+
_3.setAttribute("cx", a3.toFixed(1)), _3.setAttribute("cy", o3.toFixed(1)), _3.setAttribute("r", String(ev)), _3.setAttribute("fill", "transparent"), _3.setAttribute("class", "hit-region planet-hit"), _3.dataset.planet = r3, _3.dataset.wheel = "outer", _3.style.pointerEvents = "all", ly(_3, "Outer Planet: ".concat(e6.name));
|
|
7329
|
+
let x3 = "".concat(v2 === "transit" ? "Tr. " : b2 ? "".concat(b2, "'s ") : "").concat(t3, " ").concat(Z(e6.name)), S3 = g3 ? " \xB7 ".concat(g3.label) : "", ee3 = (Ue2 = Av[e6.name.toLowerCase()]) == null ? "" : Ue2, C3 = "".concat(ee3 ? ee3 + " \xB7 " : "").concat(gv(e6.longitude)).concat(e6.house ? " \xB7 H".concat(e6.house) : "").concat(e6.retrograde ? " \u211E" : "").concat(S3);
|
|
7330
|
+
_3.addEventListener("mouseenter", (e7) => Ov(e7.clientX, e7.clientY, x3, C3, "Click to explore")), _3.addEventListener("mousemove", (e7) => Ov(e7.clientX, e7.clientY, x3, C3, "Click to explore")), _3.addEventListener("mouseleave", kv), _3.addEventListener("click", (t4) => {
|
|
7299
7331
|
var r4, i4;
|
|
7300
|
-
|
|
7301
|
-
let a4 = (r4 =
|
|
7302
|
-
|
|
7332
|
+
kv(), Kv(e6.name, "outer"), Wv(t4, e6, "outer", te2, v2, y2, b2);
|
|
7333
|
+
let a4 = (r4 = tv[e6.name.toLowerCase()]) == null ? "\u2605" : r4, o4 = Math.floor((e6.longitude % 360 + 360) % 360 / 30), s4 = v2 === "transit" ? "Tr. " : b2 ? "".concat(b2, "'s ") : "";
|
|
7334
|
+
Cv == null || Cv("".concat(s4).concat(a4, " ").concat(Z(e6.name), " \xB7 ").concat((i4 = rv[o4]) == null ? "" : i4)), n2(e6, "outer", te2);
|
|
7303
7335
|
}), s3.appendChild(_3);
|
|
7304
7336
|
}
|
|
7305
7337
|
let We2 = __(S2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 8), Ge2 = X("g");
|
|
7306
7338
|
Ge2.setAttribute("class", "inner-planet-group"), oe2.appendChild(Ge2);
|
|
7307
7339
|
for (let e6 of S2) {
|
|
7308
7340
|
var Ke2, qe2, Je2;
|
|
7309
|
-
let t3 = (Ke2 =
|
|
7341
|
+
let t3 = (Ke2 = tv[e6.name.toLowerCase()]) == null ? "\u2605" : Ke2, r3 = e6.name.toLowerCase(), i3 = (qe2 = We2.get(r3)) == null ? e6.longitude : qe2, { x: a3, y: o3 } = Y(i3, q_, w2), s3 = X("g");
|
|
7310
7342
|
s3.setAttribute("class", "planet-glyph-group"), s3.dataset.planet = r3, s3.dataset.wheel = "inner", s3.style.transition = "opacity 200ms ease", Ge2.appendChild(s3);
|
|
7311
|
-
let { x: c3, y: l3 } = Y(e6.longitude,
|
|
7343
|
+
let { x: c3, y: l3 } = Y(e6.longitude, K_ - 5, w2), u3 = X("circle");
|
|
7312
7344
|
if (u3.setAttribute("cx", c3.toFixed(1)), u3.setAttribute("cy", l3.toFixed(1)), u3.setAttribute("r", "2.5"), u3.setAttribute("fill", "var(--inner-tick, #7060b8)"), u3.setAttribute("opacity", "0.65"), u3.setAttribute("pointer-events", "none"), s3.appendChild(u3), x_(e6.longitude, i3) > 2) {
|
|
7313
7345
|
let e7 = X("line");
|
|
7314
7346
|
e7.setAttribute("x1", c3.toFixed(1)), e7.setAttribute("y1", l3.toFixed(1)), e7.setAttribute("x2", a3.toFixed(1)), e7.setAttribute("y2", o3.toFixed(1)), e7.setAttribute("stroke", "var(--inner-tick, #7060b8)"), e7.setAttribute("stroke-width", "0.7"), e7.setAttribute("stroke-opacity", "0.35"), e7.setAttribute("stroke-linecap", "round"), e7.setAttribute("pointer-events", "none"), s3.appendChild(e7);
|
|
7315
7347
|
}
|
|
7316
7348
|
let d3 = X("text");
|
|
7317
7349
|
d3.setAttribute("x", a3.toFixed(1)), d3.setAttribute("y", o3.toFixed(1)), d3.setAttribute("text-anchor", "middle"), d3.setAttribute("dominant-baseline", "central"), d3.setAttribute("font-size", "20"), d3.setAttribute("font-weight", "600"), d3.setAttribute("pointer-events", "none"), d3.style.fill = c_(T2).foreground, d3.style.fontFamily = a_, d3.textContent = t3, s3.appendChild(d3);
|
|
7318
|
-
let f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), { x: p3, y: m3 } = Y(i3,
|
|
7350
|
+
let f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), { x: p3, y: m3 } = Y(i3, q_ - 17, w2), h3 = X("text");
|
|
7319
7351
|
if (h3.setAttribute("x", p3.toFixed(1)), h3.setAttribute("y", m3.toFixed(1)), h3.setAttribute("text-anchor", "middle"), h3.setAttribute("dominant-baseline", "central"), h3.setAttribute("font-size", "8.5"), h3.setAttribute("fill", c_(T2).foreground), h3.setAttribute("opacity", "0.8"), h3.setAttribute("pointer-events", "none"), h3.textContent = "".concat(f3, "\xB0"), s3.appendChild(h3), e6.retrograde) {
|
|
7320
7352
|
let { x: e7, y: t4 } = Y(i3, 204, w2), n3 = X("text");
|
|
7321
7353
|
n3.setAttribute("x", e7.toFixed(1)), n3.setAttribute("y", t4.toFixed(1)), n3.setAttribute("text-anchor", "middle"), n3.setAttribute("dominant-baseline", "central"), n3.setAttribute("font-size", "8"), n3.setAttribute("fill", "#e05252"), n3.setAttribute("pointer-events", "none"), n3.textContent = "\u211E", s3.appendChild(n3);
|
|
7322
7354
|
}
|
|
7323
|
-
let g3 =
|
|
7355
|
+
let g3 = cv(e6.name, e6.longitude);
|
|
7324
7356
|
if (g3) {
|
|
7325
7357
|
let { x: e7, y: t4 } = Y(i3, 202, w2), n3 = X("circle");
|
|
7326
7358
|
n3.setAttribute("cx", e7.toFixed(1)), n3.setAttribute("cy", t4.toFixed(1)), n3.setAttribute("r", "2.5"), n3.setAttribute("fill", g3.positive ? "oklch(72% 0.12 80)" : "oklch(55% 0.18 20 / 0.6)"), n3.setAttribute("pointer-events", "none"), s3.appendChild(n3);
|
|
7327
7359
|
}
|
|
7328
7360
|
let _3 = X("circle");
|
|
7329
|
-
_3.setAttribute("cx", a3.toFixed(1)), _3.setAttribute("cy", o3.toFixed(1)), _3.setAttribute("r", String(
|
|
7330
|
-
let x3 = y2 ? "".concat(y2, "'s ").concat(t3, " ").concat(Z(e6.name)) : "".concat(t3, " ").concat(Z(e6.name), " (natal)"), S3 = g3 ? " \xB7 ".concat(g3.label) : "", ee3 = (Je2 =
|
|
7331
|
-
_3.addEventListener("mouseenter", (e7) =>
|
|
7361
|
+
_3.setAttribute("cx", a3.toFixed(1)), _3.setAttribute("cy", o3.toFixed(1)), _3.setAttribute("r", String(ev)), _3.setAttribute("fill", "transparent"), _3.setAttribute("class", "hit-region planet-hit"), _3.dataset.planet = r3, _3.dataset.wheel = "inner", _3.style.pointerEvents = "all", ly(_3, "Inner Planet: ".concat(e6.name));
|
|
7362
|
+
let x3 = y2 ? "".concat(y2, "'s ").concat(t3, " ").concat(Z(e6.name)) : "".concat(t3, " ").concat(Z(e6.name), " (natal)"), S3 = g3 ? " \xB7 ".concat(g3.label) : "", ee3 = (Je2 = Av[e6.name.toLowerCase()]) == null ? "" : Je2, C3 = "".concat(ee3 ? ee3 + " \xB7 " : "").concat(gv(e6.longitude)).concat(e6.house ? " \xB7 H".concat(e6.house) : "").concat(e6.retrograde ? " \u211E" : "").concat(S3);
|
|
7363
|
+
_3.addEventListener("mouseenter", (e7) => Ov(e7.clientX, e7.clientY, x3, C3, "Click to explore")), _3.addEventListener("mousemove", (e7) => Ov(e7.clientX, e7.clientY, x3, C3, "Click to explore")), _3.addEventListener("mouseleave", kv), _3.addEventListener("click", (t4) => {
|
|
7332
7364
|
var r4, i4, a4;
|
|
7333
|
-
|
|
7334
|
-
let o4 = (r4 =
|
|
7335
|
-
|
|
7365
|
+
kv(), Kv(e6.name, "inner"), Wv(t4, e6, "inner", te2, v2, y2, b2);
|
|
7366
|
+
let o4 = (r4 = tv[e6.name.toLowerCase()]) == null ? "\u2605" : r4, s4 = Math.floor((e6.longitude % 360 + 360) % 360 / 30), c4 = y2 ? "".concat(y2, "'s ").concat(o4, " ").concat(Z(e6.name), " \xB7 ").concat((i4 = rv[s4]) == null ? "" : i4) : "".concat(o4, " ").concat(Z(e6.name), " \xB7 ").concat((a4 = rv[s4]) == null ? "" : a4, " (natal)");
|
|
7367
|
+
Cv == null || Cv(c4), n2(e6, "inner", te2);
|
|
7336
7368
|
}), s3.appendChild(_3);
|
|
7337
7369
|
}
|
|
7338
7370
|
let Ye2 = "__biWheelClickOutside__", Xe2 = document[Ye2];
|
|
7339
7371
|
Xe2 && document.removeEventListener("click", Xe2, false);
|
|
7340
7372
|
let Ze2 = (e6) => {
|
|
7341
7373
|
let t3 = e6.target;
|
|
7342
|
-
!t3.closest(".hit-region") && !t3.closest("#bi-info-drawer") && (
|
|
7374
|
+
!t3.closest(".hit-region") && !t3.closest("#bi-info-drawer") && (Xv(), Uv());
|
|
7343
7375
|
};
|
|
7344
7376
|
document[Ye2] = Ze2, document.addEventListener("click", Ze2, false);
|
|
7345
7377
|
let Qe2 = (e6) => {
|
|
7346
|
-
e6.key === "Escape" && (
|
|
7378
|
+
e6.key === "Escape" && (Xv(), Uv());
|
|
7347
7379
|
};
|
|
7348
7380
|
document.removeEventListener("keydown", window.__biWheelEscHandler, false), window.__biWheelEscHandler = Qe2, document.addEventListener("keydown", Qe2, false);
|
|
7349
7381
|
}
|
|
7350
|
-
function
|
|
7382
|
+
function cy(e5) {
|
|
7351
7383
|
let t2 = parseInt(e5.slice(1, 3), 16), n2 = parseInt(e5.slice(3, 5), 16), r2 = parseInt(e5.slice(5, 7), 16), i2 = 0.6;
|
|
7352
7384
|
return "rgb(".concat(Math.round(t2 * (1 - i2) + 208 * i2), ",").concat(Math.round(n2 * (1 - i2) + 144 * i2), ",").concat(Math.round(r2 * (1 - i2) + 32 * i2), ")");
|
|
7353
7385
|
}
|
|
7354
|
-
function
|
|
7386
|
+
function ly(e5, t2) {
|
|
7355
7387
|
e5 && (e5.setAttribute("tabindex", "0"), e5.setAttribute("role", "button"), e5.setAttribute("aria-label", t2), e5.addEventListener("keydown", (t3) => {
|
|
7356
7388
|
let n2 = t3;
|
|
7357
7389
|
(n2.key === "Enter" || n2.key === " ") && (n2.preventDefault(), e5.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true })));
|
|
7358
7390
|
}));
|
|
7359
7391
|
}
|
|
7360
|
-
function
|
|
7392
|
+
function uy(e5) {
|
|
7361
7393
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
7362
7394
|
}
|
|
7363
|
-
function
|
|
7395
|
+
function dy(e5) {
|
|
7364
7396
|
return e5.replace(/_/g, " ").replace(/\b\w/g, (e6) => e6.toUpperCase());
|
|
7365
7397
|
}
|
|
7366
|
-
function
|
|
7367
|
-
let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(
|
|
7398
|
+
function fy(e5) {
|
|
7399
|
+
let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(uy(e6.title), "</span>") + e6.items.map((e7) => '<span class="legend-item"><span class="legend-glyph">'.concat(uy(e7.glyph), "</span>").concat(uy(e7.label), "</span>")).join("") + "</div>").join("");
|
|
7368
7400
|
return t2 ? '<details class="glyph-legend"><summary><span class="legend-spark">\u2726</span> Legend</summary><div class="legend-body">'.concat(t2, "</div></details>") : "";
|
|
7369
7401
|
}
|
|
7370
|
-
var
|
|
7371
|
-
function
|
|
7402
|
+
var py = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
|
|
7403
|
+
function my(e5, t2) {
|
|
7372
7404
|
if (!e5) return null;
|
|
7373
|
-
let n2 =
|
|
7405
|
+
let n2 = py.exec(e5.trim());
|
|
7374
7406
|
if (n2) {
|
|
7375
7407
|
let [, e6, t3, r3, i2, a2, o2] = n2, s2 = new Date(Date.UTC(+e6, t3 - 1, +r3, +i2, +a2, o2 ? +o2 : 0));
|
|
7376
7408
|
return isNaN(s2.getTime()) ? null : { date: s2, timeZone: "UTC" };
|
|
@@ -7378,17 +7410,17 @@ function Jv(e5, t2) {
|
|
|
7378
7410
|
let r2 = new Date(e5);
|
|
7379
7411
|
return isNaN(r2.getTime()) ? null : { date: r2, timeZone: t2 || "UTC" };
|
|
7380
7412
|
}
|
|
7381
|
-
function
|
|
7413
|
+
function hy(e5) {
|
|
7382
7414
|
var t2;
|
|
7383
7415
|
if (!e5) return "";
|
|
7384
7416
|
let n2 = [], r2 = (t2 = e5.location) == null ? void 0 : t2.trim();
|
|
7385
7417
|
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) {
|
|
7386
|
-
let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ?
|
|
7418
|
+
let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ? my(e5.datetime, e5.timezone) : null;
|
|
7387
7419
|
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);
|
|
7388
7420
|
}
|
|
7389
7421
|
return n2.join(" \xB7 ");
|
|
7390
7422
|
}
|
|
7391
|
-
var
|
|
7423
|
+
var gy = class e4 {
|
|
7392
7424
|
constructor(t2) {
|
|
7393
7425
|
var n2, r2, i2, a2, s2, c2;
|
|
7394
7426
|
o(this, "config", void 0), o(this, "params", void 0), o(this, "dateInput", void 0), o(this, "timeInput", void 0), o(this, "refreshBtn", void 0), o(this, "locInput", void 0), o(this, "locDropdown", void 0), o(this, "summaryBar", void 0), o(this, "extraToggleInput", void 0), o(this, "searchTimeout", null), o(this, "searchVersion", 0), o(this, "isSearching", false), o(this, "suggestions", []), o(this, "activeIndex", -1), o(this, "selecting", false), o(this, "listboxId", "loc-listbox-".concat(e4.comboSeq++)), this.config = t2, this.params = { date: ((n2 = t2.initialParams) == null ? void 0 : n2.date) || this.getTodayDate(), time: ((r2 = t2.initialParams) == null ? void 0 : r2.time) || "12:00", latitude: ((i2 = t2.initialParams) == null ? void 0 : i2.latitude) || null, longitude: ((a2 = t2.initialParams) == null ? void 0 : a2.longitude) || null, timezone: ((s2 = t2.initialParams) == null ? void 0 : s2.timezone) || null, locationName: ((c2 = t2.initialParams) == null ? void 0 : c2.locationName) || null }, this.render();
|
|
@@ -7568,14 +7600,14 @@ var Xv = class e4 {
|
|
|
7568
7600
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7569
7601
|
}
|
|
7570
7602
|
};
|
|
7571
|
-
o(
|
|
7572
|
-
var
|
|
7573
|
-
function
|
|
7603
|
+
o(gy, "comboSeq", 0);
|
|
7604
|
+
var _y = { "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." } }, vy = '\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';
|
|
7605
|
+
function yy() {
|
|
7574
7606
|
if (document.getElementById("oe-first-run-styles")) return;
|
|
7575
7607
|
let e5 = document.createElement("style");
|
|
7576
|
-
e5.id = "oe-first-run-styles", e5.textContent =
|
|
7608
|
+
e5.id = "oe-first-run-styles", e5.textContent = vy, document.head.appendChild(e5);
|
|
7577
7609
|
}
|
|
7578
|
-
function
|
|
7610
|
+
function by(e5) {
|
|
7579
7611
|
let t2 = document.activeElement, n2 = document.createElement("div");
|
|
7580
7612
|
n2.className = "oe-welcome-backdrop";
|
|
7581
7613
|
let r2 = document.createElement("div");
|
|
@@ -7593,34 +7625,34 @@ function ey(e5) {
|
|
|
7593
7625
|
e6.key === "Escape" && (e6.preventDefault(), o2()), e6.key === "Tab" && (e6.preventDefault(), a2.focus());
|
|
7594
7626
|
}), requestAnimationFrame(() => a2.focus()), n2;
|
|
7595
7627
|
}
|
|
7596
|
-
function
|
|
7597
|
-
|
|
7598
|
-
let t2 =
|
|
7628
|
+
function xy(e5) {
|
|
7629
|
+
yy();
|
|
7630
|
+
let t2 = by(_y[e5]);
|
|
7599
7631
|
document.body.appendChild(t2);
|
|
7600
7632
|
}
|
|
7601
|
-
var
|
|
7602
|
-
function
|
|
7633
|
+
var Sy = "\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";
|
|
7634
|
+
function Cy() {
|
|
7603
7635
|
if (document.getElementById("oe-info-button-styles")) return;
|
|
7604
7636
|
let e5 = document.createElement("style");
|
|
7605
|
-
e5.id = "oe-info-button-styles", e5.textContent =
|
|
7637
|
+
e5.id = "oe-info-button-styles", e5.textContent = Sy, document.head.appendChild(e5);
|
|
7606
7638
|
}
|
|
7607
|
-
function
|
|
7639
|
+
function wy(e5) {
|
|
7608
7640
|
if (document.getElementById("oe-info-button")) return;
|
|
7609
|
-
|
|
7641
|
+
Cy();
|
|
7610
7642
|
let t2 = document.createElement("button");
|
|
7611
|
-
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", () =>
|
|
7643
|
+
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", () => xy(e5)), document.body.appendChild(t2);
|
|
7612
7644
|
}
|
|
7613
|
-
function
|
|
7645
|
+
function Ty(e5) {
|
|
7614
7646
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7615
7647
|
}
|
|
7616
|
-
function
|
|
7617
|
-
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(
|
|
7618
|
-
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(
|
|
7648
|
+
function Ey(e5) {
|
|
7649
|
+
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(Ty(i2), "</button>") : "";
|
|
7650
|
+
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(Ty(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
|
|
7619
7651
|
var o2;
|
|
7620
7652
|
(o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
|
|
7621
7653
|
}
|
|
7622
7654
|
}
|
|
7623
|
-
function
|
|
7655
|
+
function Dy(e5) {
|
|
7624
7656
|
var t2;
|
|
7625
7657
|
if (!e5) return null;
|
|
7626
7658
|
if (e5.structuredContent != null && typeof e5.structuredContent == "object") return e5.structuredContent;
|
|
@@ -7633,7 +7665,7 @@ function sy(e5) {
|
|
|
7633
7665
|
}
|
|
7634
7666
|
return null;
|
|
7635
7667
|
}
|
|
7636
|
-
function
|
|
7668
|
+
function Oy(e5, t2, n2 = []) {
|
|
7637
7669
|
var r2, i2;
|
|
7638
7670
|
if (!t2 || t2.querySelector("#btn-fullscreen")) return;
|
|
7639
7671
|
let a2 = document.createElement("button");
|
|
@@ -7716,14 +7748,14 @@ function cy(e5, t2, n2 = []) {
|
|
|
7716
7748
|
}, 4e3);
|
|
7717
7749
|
}
|
|
7718
7750
|
}
|
|
7719
|
-
function
|
|
7751
|
+
function ky(e5, t2) {
|
|
7720
7752
|
e5.ontoolcancelled = (e6) => {
|
|
7721
7753
|
var n2, r2, i2;
|
|
7722
7754
|
let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
|
|
7723
|
-
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),
|
|
7755
|
+
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), Ay(a2);
|
|
7724
7756
|
};
|
|
7725
7757
|
}
|
|
7726
|
-
function
|
|
7758
|
+
function Ay(e5) {
|
|
7727
7759
|
var t2;
|
|
7728
7760
|
(t2 = document.getElementById("cancel-toast")) == null || t2.remove();
|
|
7729
7761
|
let n2 = document.createElement("div");
|
|
@@ -7731,7 +7763,7 @@ function uy(e5) {
|
|
|
7731
7763
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7732
7764
|
}, 3e3);
|
|
7733
7765
|
}
|
|
7734
|
-
function
|
|
7766
|
+
function jy(e5) {
|
|
7735
7767
|
var t2;
|
|
7736
7768
|
function n2(e6) {
|
|
7737
7769
|
if (!e6) return;
|
|
@@ -7744,149 +7776,149 @@ function dy(e5) {
|
|
|
7744
7776
|
n2(e6);
|
|
7745
7777
|
});
|
|
7746
7778
|
}
|
|
7747
|
-
var
|
|
7779
|
+
var My = document.getElementById("chart-container"), Ny = document.getElementById("loading-state"), Py = document.getElementById("mode-badge"), Fy = document.getElementById("chart-status"), Iy = document.getElementById("aspect-filter"), Ly = document.getElementById("chart-provenance"), Ry = document.getElementById("bi-patterns-strip"), zy = document.getElementById("param-controls-container"), By = new r_({ name: "Bi-Wheel Chart Explorer", version: "1.0.0" }), $ = null, Vy = null, Hy = false, Uy = false, Wy = "placidus";
|
|
7748
7780
|
h_(() => {
|
|
7749
|
-
$ &&
|
|
7781
|
+
$ && yb($);
|
|
7750
7782
|
});
|
|
7751
|
-
var
|
|
7752
|
-
function
|
|
7753
|
-
if (
|
|
7783
|
+
var Gy = "true";
|
|
7784
|
+
function Ky(e5) {
|
|
7785
|
+
if (Fy) {
|
|
7754
7786
|
if (!e5) {
|
|
7755
|
-
|
|
7787
|
+
Fy.classList.remove("visible");
|
|
7756
7788
|
return;
|
|
7757
7789
|
}
|
|
7758
|
-
|
|
7790
|
+
Fy.textContent = "\xB7 ".concat(e5), Fy.classList.add("visible");
|
|
7759
7791
|
}
|
|
7760
7792
|
}
|
|
7761
|
-
|
|
7762
|
-
function
|
|
7763
|
-
|
|
7793
|
+
wv(Ky);
|
|
7794
|
+
function qy() {
|
|
7795
|
+
Ny.hidden = false, My.hidden = true, Py.hidden = true, Ly && (Ly.hidden = true), Ry && (Ry.hidden = true, Ry.innerHTML = "");
|
|
7764
7796
|
}
|
|
7765
|
-
function
|
|
7766
|
-
|
|
7797
|
+
function Jy() {
|
|
7798
|
+
Ny.hidden = true, My.hidden = false, My.classList.remove("refreshing"), Py.hidden = false, Ly && (Ly.hidden = false);
|
|
7767
7799
|
}
|
|
7768
|
-
function
|
|
7769
|
-
if (!$ ||
|
|
7770
|
-
|
|
7800
|
+
function Yy() {
|
|
7801
|
+
if (!$ || My.hidden) {
|
|
7802
|
+
qy();
|
|
7771
7803
|
return;
|
|
7772
7804
|
}
|
|
7773
|
-
|
|
7805
|
+
My.classList.add("refreshing");
|
|
7774
7806
|
}
|
|
7775
|
-
function
|
|
7776
|
-
|
|
7807
|
+
function Xy() {
|
|
7808
|
+
My.classList.remove("refreshing"), My.classList.remove("chart-rendered"), My.offsetWidth, My.classList.add("chart-rendered");
|
|
7777
7809
|
}
|
|
7778
|
-
function
|
|
7779
|
-
|
|
7810
|
+
function Zy(e5, t2) {
|
|
7811
|
+
Ny.hidden = true, Ly && (Ly.hidden = true), Ey({ container: My, message: e5, onRetry: t2 });
|
|
7780
7812
|
}
|
|
7781
|
-
function
|
|
7813
|
+
function Qy(e5) {
|
|
7782
7814
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
7783
7815
|
}
|
|
7784
|
-
async function
|
|
7816
|
+
async function $y(e5) {
|
|
7785
7817
|
try {
|
|
7786
|
-
(await
|
|
7818
|
+
(await By.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[BiWheel] Host rejected sendMessage");
|
|
7787
7819
|
} catch (e6) {
|
|
7788
7820
|
console.error("[BiWheel] sendMessage failed:", e6);
|
|
7789
7821
|
}
|
|
7790
7822
|
}
|
|
7791
|
-
function
|
|
7792
|
-
let t2 =
|
|
7823
|
+
function eb(e5) {
|
|
7824
|
+
let t2 = Dy(e5);
|
|
7793
7825
|
return t2 && "inner" in t2 && "outer" in t2 ? t2 : null;
|
|
7794
7826
|
}
|
|
7795
|
-
var
|
|
7796
|
-
function
|
|
7827
|
+
var tb = [{ label: "Tight", mult: 0.55 }, { label: "Standard", mult: 1 }, { label: "Wide", mult: 1.6 }], nb = true, rb = 1;
|
|
7828
|
+
function ib() {
|
|
7797
7829
|
var e5, t2, n2;
|
|
7798
|
-
if (!
|
|
7830
|
+
if (!Iy) return;
|
|
7799
7831
|
let r2 = (t2 = { synastry: "Synastry \u2192 Natal", transit: "Transit \u2192 Natal", progressed: "Progressions \u2192 Natal", solar_return: "Solar Return \u2192 Natal", lunar_return: "Lunar Return \u2192 Natal", solar_arc: "Solar Arc \u2192 Natal" }[(e5 = $ == null ? void 0 : $.mode) == null ? "synastry" : e5]) == null ? "Cross-Wheel" : t2, i2 = [{ key: "placidus", label: "Placidus" }, { key: "whole_sign", label: "Whole Sign" }, { key: "equal", label: "Equal" }, { key: "koch", label: "Koch" }, { key: "regiomontanus", label: "Regio." }], a2 = (() => {
|
|
7800
7832
|
var e6, t3;
|
|
7801
7833
|
let n3 = /* @__PURE__ */ new Set();
|
|
7802
7834
|
for (let r3 of [...(e6 = $ == null ? void 0 : $.inner) == null ? [] : e6, ...(t3 = $ == null ? void 0 : $.outer) == null ? [] : t3]) r3 && typeof r3 == "object" && "name" in r3 && n3.add(String(r3.name).toLowerCase());
|
|
7803
|
-
return
|
|
7835
|
+
return M_(n3);
|
|
7804
7836
|
})();
|
|
7805
|
-
|
|
7806
|
-
let o2 = a2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(
|
|
7807
|
-
|
|
7808
|
-
let s2 = [...
|
|
7837
|
+
vv(Gy);
|
|
7838
|
+
let o2 = a2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(Gy === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(Gy === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
|
|
7839
|
+
nb = true, Iy.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="aspect-vis-toggle"\n title="Toggle all aspect lines & symbols">\n <span class="toggle-icon">\u2295</span> '.concat(r2, '\n </button>\n </div>\n <div class="asp-section">\n <span class="asp-section-label">Orb</span>\n ').concat(tb.map((e6) => '<button class="orb-preset-btn'.concat(e6.mult === rb ? " active" : "", '" data-mult="').concat(e6.mult, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), '\n </div>\n <div class="asp-section">\n <span class="asp-section-label">Houses</span>\n ').concat(i2.map((e6) => '<button class="orb-preset-btn house-btn'.concat(e6.key === Wy ? " active" : "", '" data-hs="').concat(e6.key, '" title="').concat(e6.label, ' houses">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(o2, "\n </div>\n ");
|
|
7840
|
+
let s2 = [...bv($ == null ? void 0 : $.inner), ...bv($ == null ? void 0 : $.outer)], c2 = /* @__PURE__ */ new Set(), l2 = [];
|
|
7809
7841
|
for (let e6 of s2) {
|
|
7810
7842
|
let t3 = e6.name.toLowerCase();
|
|
7811
7843
|
if (c2.has(t3)) continue;
|
|
7812
7844
|
c2.add(t3);
|
|
7813
|
-
let n3 =
|
|
7814
|
-
n3 && l2.push({ glyph: n3, label:
|
|
7845
|
+
let n3 = tv[t3];
|
|
7846
|
+
n3 && l2.push({ glyph: n3, label: dy(e6.name) });
|
|
7815
7847
|
}
|
|
7816
7848
|
let u2 = [...new Set(((n2 = $ == null ? void 0 : $.cross_aspects) == null ? [] : n2).map((e6) => {
|
|
7817
7849
|
var t3;
|
|
7818
7850
|
return ((t3 = e6.type) == null ? "" : t3).toLowerCase();
|
|
7819
7851
|
}).filter(Boolean))].map((e6) => {
|
|
7820
7852
|
var t3;
|
|
7821
|
-
return { glyph: (t3 =
|
|
7853
|
+
return { glyph: (t3 = iv[e6]) == null ? "" : t3, label: dy(e6) };
|
|
7822
7854
|
}).filter((e6) => e6.glyph);
|
|
7823
|
-
|
|
7855
|
+
Iy.insertAdjacentHTML("beforeend", fy([{ title: "Bodies", items: l2 }, { title: "Aspects", items: u2 }])), Iy.removeAttribute("hidden");
|
|
7824
7856
|
let d2 = document.getElementById("aspect-vis-toggle");
|
|
7825
7857
|
d2 == null || d2.addEventListener("click", () => {
|
|
7826
|
-
|
|
7827
|
-
}),
|
|
7858
|
+
nb = !nb, Zv(nb), d2.classList.toggle("active", nb), d2.querySelector(".toggle-icon").textContent = nb ? "\u2295" : "\u2296";
|
|
7859
|
+
}), Iy.querySelectorAll(".orb-preset-btn[data-mult]").forEach((e6) => {
|
|
7828
7860
|
e6.addEventListener("click", () => {
|
|
7829
7861
|
var t3;
|
|
7830
7862
|
let n3 = parseFloat((t3 = e6.dataset.mult) == null ? "1" : t3);
|
|
7831
|
-
n3 !==
|
|
7863
|
+
n3 !== rb && (rb = n3, Iy.querySelectorAll(".orb-preset-btn[data-mult]").forEach((e7) => e7.classList.toggle("active", e7.dataset.mult === String(n3))), $ && ab($, n3));
|
|
7832
7864
|
});
|
|
7833
|
-
}),
|
|
7865
|
+
}), Iy.querySelectorAll(".house-btn").forEach((e6) => {
|
|
7834
7866
|
e6.addEventListener("click", () => {
|
|
7835
7867
|
var t3;
|
|
7836
7868
|
let n3 = (t3 = e6.dataset.hs) == null ? "placidus" : t3;
|
|
7837
|
-
n3 ===
|
|
7869
|
+
n3 === Wy || !$ || (Wy = n3, Iy.querySelectorAll(".house-btn").forEach((e7) => e7.classList.toggle("active", e7.dataset.hs === n3)), Cb(n3));
|
|
7838
7870
|
});
|
|
7839
|
-
}),
|
|
7871
|
+
}), Iy.querySelectorAll(".node-btn").forEach((e6) => {
|
|
7840
7872
|
e6.addEventListener("click", () => {
|
|
7841
7873
|
let t3 = e6.dataset.node === "mean" ? "mean" : "true";
|
|
7842
|
-
t3 ===
|
|
7874
|
+
t3 === Gy || !$ || (Gy = t3, vv(t3), Iy.querySelectorAll(".node-btn").forEach((e7) => e7.classList.toggle("active", e7.dataset.node === t3)), ab($, rb));
|
|
7843
7875
|
});
|
|
7844
7876
|
});
|
|
7845
7877
|
}
|
|
7846
|
-
function
|
|
7878
|
+
function ab(e5, t2) {
|
|
7847
7879
|
var n2, r2, i2, a2;
|
|
7848
|
-
let o2 =
|
|
7849
|
-
|
|
7880
|
+
let o2 = bv(e5.inner), s2 = bv(e5.outer), c2 = Sv(o2, s2, t2), l2 = { ...e5, cross_aspects: c2 };
|
|
7881
|
+
sy(My, l2, wb, Tb, mb, vb()), nb || Zv(false);
|
|
7850
7882
|
let u2 = (r2 = (i2 = (a2 = ((n2 = l2.inner_houses) == null ? [] : n2)[0]) == null ? void 0 : a2.cusp_lon) == null ? l2.ascendant : i2) == null ? 0 : r2;
|
|
7851
|
-
|
|
7883
|
+
Sb(ty(c2), o2, s2, u2);
|
|
7852
7884
|
}
|
|
7853
|
-
var
|
|
7854
|
-
function
|
|
7855
|
-
|
|
7885
|
+
var ob = null;
|
|
7886
|
+
function sb(e5) {
|
|
7887
|
+
ob = e5, e5 ? My.setAttribute("data-focus", e5) : My.removeAttribute("data-focus"), Py.querySelectorAll(".mode-badge-name").forEach((t2) => {
|
|
7856
7888
|
let n2 = t2.dataset.focus;
|
|
7857
7889
|
t2.classList.toggle("focused", n2 === e5);
|
|
7858
|
-
}), $ &&
|
|
7890
|
+
}), $ && pb($, e5);
|
|
7859
7891
|
}
|
|
7860
|
-
function
|
|
7892
|
+
function cb(e5) {
|
|
7861
7893
|
var t2, n2, r2, i2, a2, o2, s2;
|
|
7862
7894
|
let c2 = (t2 = e5.mode) == null ? "synastry" : t2, l2 = (n2 = (r2 = e5._birth_params_inner) == null ? void 0 : r2.location) == null ? "Person 1" : n2, u2 = (i2 = (a2 = e5._birth_params_outer) == null ? void 0 : a2.location) == null ? c2 === "transit" ? "Transits" : "Person 2" : i2;
|
|
7863
|
-
|
|
7895
|
+
ob = null, My.removeAttribute("data-focus");
|
|
7864
7896
|
let d2 = "";
|
|
7865
7897
|
if (c2 === "transit" && (o2 = e5._birth_params_outer) != null && o2.datetime) try {
|
|
7866
|
-
let t3 =
|
|
7867
|
-
t3 && (d2 = '<span class="mode-badge-date">'.concat(
|
|
7898
|
+
let t3 = my(e5._birth_params_outer.datetime, e5._birth_params_outer.timezone);
|
|
7899
|
+
t3 && (d2 = '<span class="mode-badge-date">'.concat(Qy(t3.date.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric", timeZone: t3.timeZone })), "</span>"));
|
|
7868
7900
|
} catch (e6) {
|
|
7869
7901
|
}
|
|
7870
|
-
|
|
7902
|
+
Py.innerHTML = '\n <button class="mode-badge-name inner-name" data-focus="inner" title="Click to focus inner (natal) wheel">\n <span class="mode-badge-dot-inner"></span>'.concat(Qy(l2), '\n </button>\n <button class="mode-badge-swap" title="Toggle focus">\u21C4</button>\n <button class="mode-badge-name outer-name" data-focus="outer" title="Click to focus outer (').concat(c2, ') wheel">\n <span class="mode-badge-dot-outer"></span>').concat(Qy(u2), "\n </button>\n ").concat(d2), Py.querySelectorAll(".mode-badge-name").forEach((e6) => {
|
|
7871
7903
|
e6.addEventListener("click", () => {
|
|
7872
7904
|
let t3 = e6.dataset.focus;
|
|
7873
|
-
|
|
7905
|
+
sb(ob === t3 ? null : t3);
|
|
7874
7906
|
});
|
|
7875
|
-
}), (s2 =
|
|
7876
|
-
|
|
7907
|
+
}), (s2 = Py.querySelector(".mode-badge-swap")) == null || s2.addEventListener("click", () => {
|
|
7908
|
+
sb(ob === "inner" ? "outer" : "inner");
|
|
7877
7909
|
});
|
|
7878
7910
|
}
|
|
7879
|
-
var
|
|
7880
|
-
function
|
|
7911
|
+
var lb = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], ub = { sun: "\u2609", moon: "\u263D", mercury: "\u263F", venus: "\u2640", mars: "\u2642", jupiter: "\u2643", saturn: "\u2644", uranus: "\u2645", neptune: "\u2646", pluto: "\u2647", asc: "AC", mc: "MC" };
|
|
7912
|
+
function db(e5, t2) {
|
|
7881
7913
|
var n2, r2;
|
|
7882
7914
|
let i2 = e5.find((e6) => e6.name.toLowerCase() === t2);
|
|
7883
7915
|
if (!i2) return "\u2014";
|
|
7884
7916
|
let a2 = Math.floor((i2.longitude % 360 + 360) % 360 / 30), o2 = Math.floor(i2.longitude % 30);
|
|
7885
|
-
return "".concat((n2 =
|
|
7917
|
+
return "".concat((n2 = ub[t2]) == null ? t2 : n2, " ").concat(o2, "\xB0 ").concat((r2 = lb[a2]) == null ? "" : r2);
|
|
7886
7918
|
}
|
|
7887
|
-
function
|
|
7919
|
+
function fb(e5, t2) {
|
|
7888
7920
|
try {
|
|
7889
|
-
let n2 =
|
|
7921
|
+
let n2 = my(e5, t2);
|
|
7890
7922
|
if (!n2) return e5;
|
|
7891
7923
|
let { date: r2, timeZone: i2 } = n2;
|
|
7892
7924
|
return r2.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric", timeZone: i2 }) + " \xB7 " + r2.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", hour12: true, timeZone: i2 });
|
|
@@ -7894,22 +7926,22 @@ function Ky(e5, t2) {
|
|
|
7894
7926
|
return e5;
|
|
7895
7927
|
}
|
|
7896
7928
|
}
|
|
7897
|
-
function
|
|
7929
|
+
function pb(e5, t2) {
|
|
7898
7930
|
var n2, r2, i2, a2, o2;
|
|
7899
|
-
if (!
|
|
7900
|
-
let s2 = t2 == null ? "inner" : t2, c2 = s2 === "inner" ? e5.inner : e5.outer, l2 = s2 === "inner" ? e5._birth_params_inner : e5._birth_params_outer, u2 = (n2 = e5.mode) == null ? "synastry" : n2, d2 = (r2 = l2 == null ? void 0 : l2.location) == null ? s2 === "inner" ? "Inner chart" : u2 === "transit" ? "Transits" : "Outer chart" : r2, f2 = (i2 = l2 == null ? void 0 : l2.timezone) == null ? null : i2, p2 = l2 != null && l2.datetime ?
|
|
7931
|
+
if (!Ly) return;
|
|
7932
|
+
let s2 = t2 == null ? "inner" : t2, c2 = s2 === "inner" ? e5.inner : e5.outer, l2 = s2 === "inner" ? e5._birth_params_inner : e5._birth_params_outer, u2 = (n2 = e5.mode) == null ? "synastry" : n2, d2 = (r2 = l2 == null ? void 0 : l2.location) == null ? s2 === "inner" ? "Inner chart" : u2 === "transit" ? "Transits" : "Outer chart" : r2, f2 = (i2 = l2 == null ? void 0 : l2.timezone) == null ? null : i2, p2 = l2 != null && l2.datetime ? fb(l2.datetime, f2) : null, m2 = s2 === "inner" ? e5.inner_houses : (a2 = e5.outer_houses) == null ? [] : a2, h2 = (o2 = e5.house_system) == null ? m2.length > 0 ? "Placidus" : null : o2, g2 = db(c2, "sun"), _2 = db(c2, "moon"), v2 = db(c2, "asc");
|
|
7901
7933
|
if (v2 === "AC \u2014" && m2.length > 0) {
|
|
7902
7934
|
let e6 = m2.find((e7) => e7.number === 1);
|
|
7903
7935
|
if (e6) {
|
|
7904
7936
|
var y2;
|
|
7905
7937
|
let t3 = Math.floor((e6.cusp_lon % 360 + 360) % 360 / 30);
|
|
7906
|
-
v2 = "AC ".concat(Math.floor(e6.cusp_lon % 30), "\xB0 ").concat((y2 =
|
|
7938
|
+
v2 = "AC ".concat(Math.floor(e6.cusp_lon % 30), "\xB0 ").concat((y2 = lb[t3]) == null ? "" : y2);
|
|
7907
7939
|
}
|
|
7908
7940
|
}
|
|
7909
7941
|
let b2 = s2 === "outer" && u2 === "transit" ? "Transit" : s2 === "outer" ? "Synastry" : "Natal";
|
|
7910
|
-
|
|
7942
|
+
Ly.innerHTML = '\n <div class="prov-name">'.concat(Qy(d2), '\n <span class="prov-mode-tag">').concat(Qy(b2), '</span>\n </div>\n <div class="prov-trio">\n <span class="prov-planet">').concat(Qy(g2), '</span>\n <span class="prov-sep">\xB7</span>\n <span class="prov-planet">').concat(Qy(_2), '</span>\n <span class="prov-sep">\xB7</span>\n <span class="prov-planet">').concat(Qy(v2), "</span>\n </div>\n ").concat(p2 ? '<div class="prov-meta">'.concat(Qy(p2)).concat(f2 ? ' <span class="prov-tz">'.concat(Qy(f2), "</span>") : "", "</div>") : "", "\n ").concat(h2 ? '<div class="prov-meta">'.concat(Qy(h2), " houses</div>") : "", "\n "), Ly.hidden = false;
|
|
7911
7943
|
}
|
|
7912
|
-
async function
|
|
7944
|
+
async function mb(e5) {
|
|
7913
7945
|
var t2;
|
|
7914
7946
|
let n2 = (t2 = $ == null ? void 0 : $.mode) == null ? "synastry" : t2, r2 = "";
|
|
7915
7947
|
if (e5.type === "planet") {
|
|
@@ -7936,36 +7968,36 @@ async function Jy(e5) {
|
|
|
7936
7968
|
r2 = "Interpret the ".concat(String(t3.name), " forming in this ").concat(n2, " bi-wheel involving ").concat(s3, ". ") + (t3.description ? "".concat(String(t3.description), ". ") : "") + "This is a cross-chart pattern \u2014 it spans both wheels, so the meaning lives in the interaction between the ".concat(a3, " foundation and the ").concat(o3, " activation. Give a rich interpretation covering: (1) the core dynamic this pattern creates, (2) how the ").concat(a3, " planets set the stage, (3) what the ").concat(o3, " planets activate or challenge, (4) the psychological theme and practical expression").concat(n2 === "transit" ? ", and (5) timing \u2014 what to do with this energy now" : "", ".");
|
|
7937
7969
|
}
|
|
7938
7970
|
if (!r2) return;
|
|
7939
|
-
let h2 =
|
|
7971
|
+
let h2 = hy($ == null ? void 0 : $._birth_params_inner), g2 = hy($ == null ? void 0 : $._birth_params_outer);
|
|
7940
7972
|
if (h2 || g2) {
|
|
7941
7973
|
let e6 = n2 === "transit" ? "Natal" : "Inner wheel", t3 = n2 === "transit" ? "Transits" : "Outer wheel";
|
|
7942
7974
|
r2 = "".concat([h2 ? "".concat(e6, ": ").concat(h2) : "", g2 ? "".concat(t3, ": ").concat(g2) : ""].filter(Boolean).join("\n"), "\n\n").concat(r2);
|
|
7943
7975
|
}
|
|
7944
|
-
await
|
|
7976
|
+
await $y(r2);
|
|
7945
7977
|
}
|
|
7946
|
-
async function
|
|
7978
|
+
async function hb() {
|
|
7947
7979
|
var e5, t2, n2, r2, i2, a2, o2, s2;
|
|
7948
7980
|
if (!$) return;
|
|
7949
7981
|
let c2 = $, l2 = (e5 = c2.mode) == null ? "synastry" : e5, u2 = String((t2 = (n2 = c2._birth_params_inner) == null ? void 0 : n2.location) == null ? "Person 1" : t2), d2 = l2 === "transit" ? "transits (".concat(String((r2 = (i2 = c2._birth_params_outer) == null ? void 0 : i2.location) == null ? "today" : r2), ")") : String((a2 = (o2 = c2._birth_params_outer) == null ? void 0 : o2.location) == null ? "Person 2" : a2), f2 = ((s2 = c2.cross_aspects) == null ? [] : s2).slice(0, 8).map((e6) => " \u2022 ".concat(e6.planet1, " ").concat(e6.type, " ").concat(e6.planet2, " (").concat(e6.orb.toFixed(1), "\xB0").concat(e6.applying === void 0 ? "" : ", ".concat(e6.applying ? "applying" : "separating"), ")")).join("\n") || " \u2022 No cross-aspects within orb";
|
|
7950
|
-
await
|
|
7982
|
+
await $y(l2 === "transit" ? "Please interpret this transit chart for ".concat(u2, ".\n\nKey transit cross-aspects:\n").concat(f2, "\n\nCover: (1) The most significant active transits and their themes, (2) Timing \u2014 what's applying vs separating, (3) Practical guidance \u2014 what to focus on now, (4) The overall energetic signature of this moment in time.") : "Please interpret this synastry bi-wheel between ".concat(u2, " and ").concat(d2, ".\n\nTop cross-wheel aspects:\n").concat(f2, "\n\nCover: (1) The core relational dynamic and overall compatibility theme, (2) The most significant planet-to-planet contacts and their meaning, (3) Areas of natural ease vs creative tension, (4) How each person experiences the other energetically."));
|
|
7951
7983
|
}
|
|
7952
|
-
async function
|
|
7984
|
+
async function gb() {
|
|
7953
7985
|
var e5, t2, n2, r2, i2, a2;
|
|
7954
7986
|
if (!$) return;
|
|
7955
7987
|
let o2 = $, s2 = (e5 = o2.mode) == null ? "synastry" : e5, c2 = String((t2 = (n2 = o2._birth_params_inner) == null ? void 0 : n2.location) == null ? "Person 1" : t2), l2 = s2 === "transit" ? "today's transits" : String((r2 = (i2 = o2._birth_params_outer) == null ? void 0 : i2.location) == null ? "Person 2" : r2), u2 = ((a2 = o2.cross_aspects) == null ? [] : a2).slice(0, 6).map((e6) => "".concat(e6.planet1, " ").concat(e6.type, " ").concat(e6.planet2, " (").concat(e6.orb.toFixed(1), "\xB0)")).join(", ") || "none detected";
|
|
7956
|
-
await
|
|
7988
|
+
await $y(s2 === "transit" ? "I'm exploring a transit chart for ".concat(c2, ". The active cross-aspects include: ").concat(u2, ".\n\nBased on these transits, please suggest 3-4 specific, insightful questions I could ask to understand this moment \u2014 such as what each transit means for different life areas, timing, or how to work with the energy consciously. Present each as a tappable question I can ask you.") : "I'm exploring a synastry chart between ".concat(c2, " and ").concat(l2, ". The key cross-wheel contacts include: ").concat(u2, ".\n\nBased on these connections, please suggest 3-4 specific, insightful questions I could ask to understand this relationship dynamic \u2014 such as what specific aspects mean, areas of natural ease or tension, or how these two charts interact. Present each as a tappable question I can ask you."));
|
|
7957
7989
|
}
|
|
7958
|
-
async function
|
|
7959
|
-
if (
|
|
7990
|
+
async function _b(e5) {
|
|
7991
|
+
if (Hy) try {
|
|
7960
7992
|
var t2;
|
|
7961
|
-
await
|
|
7993
|
+
await By.updateModelContext({ content: [{ type: "text", text: "User selected ".concat(e5.type, ": ").concat(JSON.stringify(e5.data, null, 2), "\nMode: ").concat((t2 = $ == null ? void 0 : $.mode) == null ? "synastry" : t2) }] });
|
|
7962
7994
|
} catch (e6) {
|
|
7963
7995
|
}
|
|
7964
7996
|
}
|
|
7965
|
-
function
|
|
7966
|
-
if (
|
|
7997
|
+
function vb() {
|
|
7998
|
+
if (Uy) return async (e5) => {
|
|
7967
7999
|
var t2;
|
|
7968
|
-
let n2 = await
|
|
8000
|
+
let n2 = await By.createSamplingMessage({ maxTokens: 150, systemPrompt: "You are an expert astrologer interpreting a ".concat(($ == null ? void 0 : $.mode) === "synastry" ? "synastry (relationship)" : "".concat((t2 = $ == null ? void 0 : $.mode) == null ? "transit" : t2, " (planetary weather)"), " chart. Give a focused, mode-appropriate interpretation. Insightful and concise."), messages: [{ role: "user", content: { type: "text", text: e5 } }] });
|
|
7969
8001
|
if (n2.isError) {
|
|
7970
8002
|
var r2, i2;
|
|
7971
8003
|
throw Error((r2 = (i2 = n2.error) == null ? void 0 : i2.message) == null ? "Sampling failed" : r2);
|
|
@@ -7975,133 +8007,133 @@ function Qy() {
|
|
|
7975
8007
|
throw Error("Unexpected sampling response format");
|
|
7976
8008
|
};
|
|
7977
8009
|
}
|
|
7978
|
-
function
|
|
8010
|
+
function yb(e5) {
|
|
7979
8011
|
var t2, n2, r2, i2, a2, o2, s2;
|
|
7980
|
-
$ = e5, clearTimeout(
|
|
7981
|
-
let c2 =
|
|
7982
|
-
|
|
8012
|
+
$ = e5, clearTimeout(Db), cb(e5), sy(My, e5, wb, Tb, mb, vb()), ib(), pb(e5, ob);
|
|
8013
|
+
let c2 = bv(e5.inner), l2 = bv(e5.outer), u2 = (n2 = (r2 = (i2 = ((t2 = e5.inner_houses) == null ? [] : t2)[0]) == null ? void 0 : i2.cusp_lon) == null ? e5.ascendant : r2) == null ? 0 : n2;
|
|
8014
|
+
Sb(ty((a2 = e5.cross_aspects) == null ? [] : a2), c2, l2, u2), e5.house_system && (Wy = e5.house_system);
|
|
7983
8015
|
let d2 = document.getElementById("bi-action-bar");
|
|
7984
8016
|
if (!d2) {
|
|
7985
8017
|
d2 = document.createElement("div"), d2.id = "bi-action-bar", d2.className = "hd-action-bar";
|
|
7986
8018
|
let e6 = document.querySelector("#fs-bottom-bar [data-column='right']");
|
|
7987
8019
|
if (e6) e6.appendChild(d2);
|
|
7988
8020
|
else {
|
|
7989
|
-
let e7 = document.getElementById("app"), t3 =
|
|
8021
|
+
let e7 = document.getElementById("app"), t3 = Py.parentElement === e7 ? Py : null;
|
|
7990
8022
|
e7 == null || e7.insertBefore(d2, t3);
|
|
7991
8023
|
}
|
|
7992
8024
|
}
|
|
7993
|
-
d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="bi-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="bi-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = d2.querySelector("#bi-interpret-btn")) == null || o2.addEventListener("click", () => void
|
|
8025
|
+
d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="bi-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="bi-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = d2.querySelector("#bi-interpret-btn")) == null || o2.addEventListener("click", () => void hb()), (s2 = d2.querySelector("#bi-questions-btn")) == null || s2.addEventListener("click", () => void gb()), Jy(), Xy(), wy("bi-wheel");
|
|
7994
8026
|
}
|
|
7995
|
-
var
|
|
7996
|
-
function
|
|
7997
|
-
if (!
|
|
8027
|
+
var bb = null, xb = { "Cross Trine": "#52a8e0", "Cross T-Square": "#e08a52", "Cross Stellium": "#9a7fd4" };
|
|
8028
|
+
function Sb(e5, t2, n2, r2) {
|
|
8029
|
+
if (!Ry) return;
|
|
7998
8030
|
if (e5.length === 0) {
|
|
7999
|
-
|
|
8031
|
+
Ry.hidden = true, Ry.innerHTML = "";
|
|
8000
8032
|
return;
|
|
8001
8033
|
}
|
|
8002
|
-
|
|
8034
|
+
bb = null, Ry.innerHTML = '\n <span class="patterns-label">Cross-Patterns:</span>\n '.concat(e5.map((e6, t3) => {
|
|
8003
8035
|
var n3;
|
|
8004
|
-
let r3 = (n3 =
|
|
8036
|
+
let r3 = (n3 = xb[e6.name]) == null ? "#888" : n3;
|
|
8005
8037
|
return '<button class="pattern-pill"\n data-idx="'.concat(t3, '"\n data-color="').concat(r3, '"\n style="color:').concat(r3, ";border-color:").concat(r3, '"\n title="').concat(e6.description, '">\n ').concat(e6.name, '\n <span class="pattern-pill-detail">').concat(e6.description, "</span>\n </button>");
|
|
8006
|
-
}).join(""), "\n "),
|
|
8038
|
+
}).join(""), "\n "), Ry.removeAttribute("hidden");
|
|
8007
8039
|
let i2 = document.createElement("button");
|
|
8008
|
-
i2.className = "pattern-ask-claude-btn", i2.textContent = "\u2728 Interpret", i2.style.display = "none",
|
|
8040
|
+
i2.className = "pattern-ask-claude-btn", i2.textContent = "\u2728 Interpret", i2.style.display = "none", Ry.appendChild(i2), i2.addEventListener("click", () => {
|
|
8009
8041
|
var t3;
|
|
8010
|
-
let n3 =
|
|
8042
|
+
let n3 = bb;
|
|
8011
8043
|
if (n3 === null) return;
|
|
8012
8044
|
let r3 = e5[n3];
|
|
8013
|
-
r3 && (i2.disabled = true, i2.textContent = "\u23F3 Sending\u2026",
|
|
8045
|
+
r3 && (i2.disabled = true, i2.textContent = "\u23F3 Sending\u2026", mb({ type: "pattern", data: { name: r3.name, planets: r3.planets, description: (t3 = r3.description) == null ? "" : t3 } }).then(() => {
|
|
8014
8046
|
i2.textContent = "\u2713 Sent", setTimeout(() => {
|
|
8015
8047
|
i2.textContent = "\u2728 Interpret", i2.disabled = false;
|
|
8016
8048
|
}, 2500);
|
|
8017
8049
|
}).catch(() => {
|
|
8018
8050
|
i2.textContent = "\u26A0 Failed", i2.disabled = false;
|
|
8019
8051
|
}));
|
|
8020
|
-
}),
|
|
8052
|
+
}), Ry.querySelectorAll(".pattern-pill").forEach((a2) => {
|
|
8021
8053
|
a2.addEventListener("click", () => {
|
|
8022
8054
|
var o2, s2;
|
|
8023
8055
|
let c2 = parseInt((o2 = a2.dataset.idx) == null ? "-1" : o2, 10), l2 = e5[c2];
|
|
8024
8056
|
if (!l2) return;
|
|
8025
8057
|
let u2 = (s2 = a2.dataset.color) == null ? "#888" : s2;
|
|
8026
|
-
if (
|
|
8027
|
-
|
|
8058
|
+
if (bb === c2) {
|
|
8059
|
+
bb = null, a2.classList.remove("active"), a2.style.background = "transparent", a2.style.color = u2, a2.style.borderColor = u2, Xv(), ay(), i2.style.display = "none";
|
|
8028
8060
|
return;
|
|
8029
8061
|
}
|
|
8030
|
-
|
|
8062
|
+
bb = c2, Ry.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
8031
8063
|
var t3;
|
|
8032
8064
|
e6.classList.remove("active");
|
|
8033
8065
|
let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
|
|
8034
8066
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
8035
|
-
}), a2.classList.add("active"), a2.style.background = u2, a2.style.color = "#fff", a2.style.borderColor = u2,
|
|
8067
|
+
}), a2.classList.add("active"), a2.style.background = u2, a2.style.color = "#fff", a2.style.borderColor = u2, oy(l2), ay(), iy(l2, t2, n2, r2), i2.style.display = "", i2.textContent = "\u2728 Interpret", i2.disabled = false;
|
|
8036
8068
|
});
|
|
8037
8069
|
});
|
|
8038
8070
|
}
|
|
8039
|
-
async function
|
|
8071
|
+
async function Cb(e5) {
|
|
8040
8072
|
if (!$) return;
|
|
8041
8073
|
let t2 = $;
|
|
8042
|
-
|
|
8074
|
+
Yy();
|
|
8043
8075
|
try {
|
|
8044
8076
|
var n2, r2, i2, a2, o2, s2, c2, l2, u2, d2;
|
|
8045
|
-
let f2 = new Promise((e6, t3) => setTimeout(() => t3(Error("House system recalculate timed out")), 3e4)), p2 =
|
|
8046
|
-
p2 ?
|
|
8077
|
+
let f2 = new Promise((e6, t3) => setTimeout(() => t3(Error("House system recalculate timed out")), 3e4)), p2 = eb(await Promise.race([By.callServerTool({ name: "bi_wheel_recalculate", arguments: { mode: t2.mode, person1_datetime: (n2 = t2._birth_params_inner) == null ? void 0 : n2.datetime, person1_latitude: (r2 = t2._birth_params_inner) == null ? void 0 : r2.latitude, person1_longitude: (i2 = t2._birth_params_inner) == null ? void 0 : i2.longitude, person1_timezone: (a2 = t2._birth_params_inner) == null ? void 0 : a2.timezone, person1_name: (o2 = t2._birth_params_inner) == null ? void 0 : o2.location, person2_datetime: (s2 = t2._birth_params_outer) == null ? void 0 : s2.datetime, person2_latitude: (c2 = t2._birth_params_outer) == null ? void 0 : c2.latitude, person2_longitude: (l2 = t2._birth_params_outer) == null ? void 0 : l2.longitude, person2_timezone: (u2 = t2._birth_params_outer) == null ? void 0 : u2.timezone, person2_name: (d2 = t2._birth_params_outer) == null ? void 0 : d2.location, house_system: e5 } }), f2]));
|
|
8078
|
+
p2 ? yb(p2) : $ && Jy();
|
|
8047
8079
|
} catch (e6) {
|
|
8048
|
-
console.error("[BiWheel] House system recalculate failed:", e6), $ &&
|
|
8080
|
+
console.error("[BiWheel] House system recalculate failed:", e6), $ && Jy();
|
|
8049
8081
|
}
|
|
8050
8082
|
}
|
|
8051
|
-
function
|
|
8083
|
+
function wb(e5, t2, n2) {
|
|
8052
8084
|
var r2, i2, a2, o2, s2;
|
|
8053
8085
|
let c2 = Math.floor((e5.longitude % 360 + 360) % 360 / 30), l2 = (r2 = (i2 = e5.sign) == null ? ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"][c2] : i2) == null ? "Unknown" : r2;
|
|
8054
|
-
|
|
8086
|
+
_b({ type: "planet", data: { planet_name: e5.name, wheel: t2, longitude: e5.longitude, sign: l2, position: "".concat(Math.floor(e5.longitude % 30), "\xB0 ").concat(l2), house: (a2 = e5.house) == null ? null : a2, retrograde: (o2 = e5.retrograde) == null ? false : o2, mode: (s2 = $ == null ? void 0 : $.mode) == null ? "synastry" : s2, cross_aspects: n2.filter((n3) => t2 === "inner" && n3.planet1 === e5.name || t2 === "outer" && n3.planet2 === e5.name).slice(0, 5).map((e6) => ({ type: e6.type, partner: t2 === "inner" ? e6.planet2 : e6.planet1, orb: e6.orb, applying: e6.applying, orb_label: e6.orb <= 1 ? "exact" : e6.orb <= 3 ? "tight" : "wide" })) } });
|
|
8055
8087
|
}
|
|
8056
|
-
function
|
|
8088
|
+
function Tb(e5) {
|
|
8057
8089
|
var t2;
|
|
8058
8090
|
let n2 = $ == null ? void 0 : $.inner.find((t3) => t3.name === e5.planet1), r2 = $ == null ? void 0 : $.outer.find((t3) => t3.name === e5.planet2), i2 = n2 ? Math.floor((n2.longitude % 360 + 360) % 360 / 30) : NaN, a2 = r2 ? Math.floor((r2.longitude % 360 + 360) % 360 / 30) : NaN, o2 = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"];
|
|
8059
|
-
|
|
8091
|
+
_b({ type: "cross_aspect", data: { planet1: e5.planet1, wheel1: e5.wheel1, planet2: e5.planet2, wheel2: e5.wheel2, aspect_type: e5.type, orb: e5.orb, applying: e5.applying, planet1_sign: isNaN(i2) ? null : o2[i2], planet2_sign: isNaN(a2) ? null : o2[a2], mode: (t2 = $ == null ? void 0 : $.mode) == null ? "synastry" : t2 } });
|
|
8060
8092
|
}
|
|
8061
|
-
|
|
8062
|
-
clearTimeout(
|
|
8063
|
-
let t2 =
|
|
8093
|
+
By.ontoolresult = (e5) => {
|
|
8094
|
+
clearTimeout(Db);
|
|
8095
|
+
let t2 = eb(e5);
|
|
8064
8096
|
if (!t2) {
|
|
8065
|
-
|
|
8097
|
+
Zy("The chart didn't load. Tap to try again.", Eb);
|
|
8066
8098
|
return;
|
|
8067
8099
|
}
|
|
8068
|
-
if (!
|
|
8100
|
+
if (!Vy) {
|
|
8069
8101
|
var n2, r2, i2, a2;
|
|
8070
8102
|
let e6 = (n2 = t2._birth_params_outer) == null ? {} : n2, o2 = (r2 = e6.datetime) == null ? "" : r2, s2 = (i2 = e6.location) == null ? "" : i2, c2 = (a2 = e6.timezone) == null ? "" : a2, l2 = e6.latitude, u2 = e6.longitude, d2 = "", f2 = "12:00";
|
|
8071
8103
|
if (o2 && o2.includes("T")) {
|
|
8072
8104
|
let e7 = o2.split("T");
|
|
8073
8105
|
d2 = e7[0], f2 = e7[1].substring(0, 5);
|
|
8074
8106
|
}
|
|
8075
|
-
|
|
8076
|
-
|
|
8107
|
+
Vy = new gy({ app: By, container: zy, initialParams: { date: d2, time: f2, locationName: s2, timezone: c2, latitude: typeof l2 == "number" ? l2 : null, longitude: typeof u2 == "number" ? u2 : null }, showStepControls: t2.mode === "transit", costHint: "~2 credits", onRefresh: async (e7) => {
|
|
8108
|
+
Vy == null || Vy.setBusy(true), Yy(), zy.setAttribute("hidden", "");
|
|
8077
8109
|
try {
|
|
8078
8110
|
var n3, r3, i3, a3, o3;
|
|
8079
|
-
let s3 = "".concat(e7.date, "T").concat(e7.time, ":00"), c3 = new Promise((e8, t3) => setTimeout(() => t3(Error("Bi-wheel recalculate timed out after 30s")), 3e4)), l3 =
|
|
8080
|
-
l3 ?
|
|
8111
|
+
let s3 = "".concat(e7.date, "T").concat(e7.time, ":00"), c3 = new Promise((e8, t3) => setTimeout(() => t3(Error("Bi-wheel recalculate timed out after 30s")), 3e4)), l3 = eb(await Promise.race([By.callServerTool({ name: "bi_wheel_recalculate", arguments: { mode: t2.mode, person1_datetime: (n3 = t2._birth_params_inner) == null ? void 0 : n3.datetime, person1_latitude: (r3 = t2._birth_params_inner) == null ? void 0 : r3.latitude, person1_longitude: (i3 = t2._birth_params_inner) == null ? void 0 : i3.longitude, person1_timezone: (a3 = t2._birth_params_inner) == null ? void 0 : a3.timezone, person1_name: (o3 = t2._birth_params_inner) == null ? void 0 : o3.location, person2_datetime: "".concat(s3).concat(e7.timezone ? "" : "Z"), person2_latitude: e7.latitude, person2_longitude: e7.longitude, person2_timezone: e7.timezone, person2_name: e7.locationName } }), c3]));
|
|
8112
|
+
l3 ? yb(l3) : $ && Jy();
|
|
8081
8113
|
} catch (e8) {
|
|
8082
|
-
console.error("[BiWheel] Recalculate failed or timed out:", e8), $ &&
|
|
8114
|
+
console.error("[BiWheel] Recalculate failed or timed out:", e8), $ && Jy();
|
|
8083
8115
|
} finally {
|
|
8084
|
-
|
|
8116
|
+
Vy == null || Vy.setBusy(false), zy.removeAttribute("hidden");
|
|
8085
8117
|
}
|
|
8086
8118
|
} });
|
|
8087
8119
|
}
|
|
8088
|
-
|
|
8120
|
+
yb(t2), zy.removeAttribute("hidden");
|
|
8089
8121
|
};
|
|
8090
|
-
function
|
|
8091
|
-
clearTimeout(
|
|
8092
|
-
|
|
8093
|
-
}, 3e4),
|
|
8122
|
+
function Eb() {
|
|
8123
|
+
clearTimeout(Db), qy(), Db = setTimeout(() => {
|
|
8124
|
+
My.hidden && Zy("The chart didn't load. Tap to try again.", Eb);
|
|
8125
|
+
}, 3e4), By.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the bi-wheel chart." }] }).catch(() => {
|
|
8094
8126
|
});
|
|
8095
8127
|
}
|
|
8096
|
-
var
|
|
8097
|
-
|
|
8128
|
+
var Db = setTimeout(() => {
|
|
8129
|
+
My.hidden && Zy("Chart data is taking longer than expected.", Eb);
|
|
8098
8130
|
}, 3e4);
|
|
8099
|
-
|
|
8131
|
+
qy(), ky(By, { loadingEl: Ny, contentEl: My, statusFn: Ky, paramControls: () => Vy }), (async () => {
|
|
8100
8132
|
try {
|
|
8101
|
-
await
|
|
8102
|
-
let e5 =
|
|
8103
|
-
|
|
8104
|
-
$ &&
|
|
8133
|
+
await By.connect();
|
|
8134
|
+
let e5 = By.getHostCapabilities();
|
|
8135
|
+
Hy = !!(e5 != null && e5.modelContext), Uy = !!(e5 != null && e5.sampling), Oy(By, document.getElementById("pan-zoom-controls"), ["mode-badge", "aspect-filter", "param-controls-container", "chart-provenance", "bi-patterns-strip", "bi-action-bar"]), jy(By), g_(By, () => {
|
|
8136
|
+
$ && yb($);
|
|
8105
8137
|
});
|
|
8106
8138
|
} catch (e5) {
|
|
8107
8139
|
console.error("[BiWheel] connect() failed:", e5);
|