@openephemeris/mcp-server 4.16.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 +46 -0
- package/README.md +15 -15
- package/config/dev-allowlist.json +31 -19
- 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.d.ts +3 -0
- package/dist/tools/apps/transit-timeline-app.js +77 -9
- 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 +3 -3
- package/dist/ui/vedic-chart.html +818 -818
- package/package.json +1 -1
package/dist/ui/chart-wheel.html
CHANGED
|
@@ -6709,86 +6709,121 @@ function x_(e5, t2) {
|
|
|
6709
6709
|
function S_(e5) {
|
|
6710
6710
|
return (e5 % 360 + 360) % 360;
|
|
6711
6711
|
}
|
|
6712
|
-
var C_ =
|
|
6712
|
+
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_ };
|
|
6713
|
+
function k_(e5) {
|
|
6714
|
+
var t2;
|
|
6715
|
+
return (t2 = O_[e5.trim().toLowerCase()]) == null ? null : t2;
|
|
6716
|
+
}
|
|
6717
|
+
function A_(e5) {
|
|
6718
|
+
return k_(e5) !== null;
|
|
6719
|
+
}
|
|
6720
|
+
var j_ = { [C_]: "\u260A\uFE0E", [w_]: "\u260A\uFE0E", [T_]: "\u260B\uFE0E", [E_]: "\u260B\uFE0E" }, M_ = { [C_]: "soul direction", [w_]: "soul direction", [T_]: "past-life gifts", [E_]: "past-life gifts" };
|
|
6721
|
+
function N_(e5) {
|
|
6722
|
+
let t2 = /* @__PURE__ */ new Set();
|
|
6723
|
+
for (let n2 of e5) {
|
|
6724
|
+
let e6 = k_(n2);
|
|
6725
|
+
e6 && t2.add(e6);
|
|
6726
|
+
}
|
|
6727
|
+
return t2.has("north node (mean)") && t2.has("north node (true)") || t2.has("south node (mean)") && t2.has("south node (true)");
|
|
6728
|
+
}
|
|
6729
|
+
function P_(e5, t2) {
|
|
6730
|
+
let n2 = new Set(e5.map((e6) => k_(e6.name)).filter(Boolean)), r2 = /* @__PURE__ */ new Set(), i2 = [[C_, w_], [T_, E_]];
|
|
6731
|
+
for (let [e6, a2] of i2) n2.has(e6) && n2.has(a2) && r2.add(t2 === "true" ? e6 : a2);
|
|
6732
|
+
return r2.size === 0 ? e5 : e5.filter((e6) => {
|
|
6733
|
+
var t3;
|
|
6734
|
+
return !r2.has((t3 = k_(e6.name)) == null ? "" : t3);
|
|
6735
|
+
});
|
|
6736
|
+
}
|
|
6737
|
+
var F_ = "lilith (mean)", I_ = "lilith (true)", L_ = "lilith (interpolated)", R_ = [F_, I_, L_], z_ = { [F_]: F_, lilith: F_, mean_lilith: F_, lilith_mean: F_, "mean apogee": F_, "black moon lilith": F_, [I_]: I_, lilith_true: I_, true_lilith: I_, "osculating apogee": I_, [L_]: L_, lilith_interpolated: L_, lilith_natural: L_, "interpolated apogee": L_ };
|
|
6738
|
+
function B_(e5) {
|
|
6739
|
+
var t2;
|
|
6740
|
+
return (t2 = z_[e5.trim().toLowerCase()]) == null ? null : t2;
|
|
6741
|
+
}
|
|
6742
|
+
var V_ = { [F_]: "\u26B8\uFE0E", [I_]: "\u26B8\uFE0E", [L_]: "\u26B8\uFE0E" }, H_ = { [F_]: "primal feminine & shadow", [I_]: "primal feminine & shadow", [L_]: "primal feminine & shadow" };
|
|
6743
|
+
function U_(e5) {
|
|
6744
|
+
var t2, n2;
|
|
6745
|
+
return (t2 = (n2 = k_(e5)) == null ? B_(e5) : n2) == null ? e5 : t2;
|
|
6746
|
+
}
|
|
6747
|
+
var W_ = 250, G_ = 250, K_ = 240, q_ = 204, J_ = 190, Y_ = 152, X_ = 118, Z_ = 112, Q_ = 15, $_ = 20;
|
|
6713
6748
|
function Y(e5, t2, n2) {
|
|
6714
6749
|
let r2 = -(e5 - n2 + 180) * Math.PI / 180;
|
|
6715
|
-
return { x:
|
|
6750
|
+
return { x: W_ + t2 * Math.cos(r2), y: G_ + t2 * Math.sin(r2) };
|
|
6716
6751
|
}
|
|
6717
6752
|
function X(e5) {
|
|
6718
6753
|
return document.createElementNS("http://www.w3.org/2000/svg", e5);
|
|
6719
6754
|
}
|
|
6720
|
-
function
|
|
6755
|
+
function ev(e5, t2, n2, r2, i2) {
|
|
6721
6756
|
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);
|
|
6722
6757
|
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(" ");
|
|
6723
6758
|
}
|
|
6724
|
-
var
|
|
6725
|
-
function
|
|
6759
|
+
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", ...j_, ...V_, mean_lilith: "\u26B8\uFE0E", lilith: "\u26B8\uFE0E", true_lilith: "\u26B8\uFE0E", ceres: "\u26B3\uFE0E", juno: "\u26B5\uFE0E", vesta: "\u26B6\uFE0E", pallas: "\u26B4\uFE0E", pholus: "\u2BDB\uFE0E", vertex: "Vx", part_of_fortune: "\u2295\uFE0E", "part of fortune": "\u2295\uFE0E", eris: "\u2BF0\uFE0E", sedna: "\u2BF2\uFE0E" }, 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", quincunx: "\u26BB", semisquare: "\u2220" };
|
|
6760
|
+
function av(e5) {
|
|
6726
6761
|
var t2;
|
|
6727
6762
|
let n2 = e5.toLowerCase(), r2 = "--aspect-".concat(n2);
|
|
6728
6763
|
return getComputedStyle(document.documentElement).getPropertyValue(r2).trim() || ((t2 = { conjunction: "#9a7fd4", opposition: "#e05252", trine: "#52a8e0", square: "#e08a52", sextile: "#52c07a", quincunx: "#c0b052", semisquare: "#b07a5a" }[n2]) == null ? "#888" : t2);
|
|
6729
6764
|
}
|
|
6730
|
-
var
|
|
6731
|
-
function
|
|
6765
|
+
var ov = p_, sv = (e5) => l_(e5, ov());
|
|
6766
|
+
function cv(e5) {
|
|
6732
6767
|
let t2 = "--planet-".concat(e5.toLowerCase().replace(/\s+/g, "-"));
|
|
6733
6768
|
return getComputedStyle(document.documentElement).getPropertyValue(t2).trim() || "var(--text)";
|
|
6734
6769
|
}
|
|
6735
|
-
var
|
|
6736
|
-
function
|
|
6770
|
+
var lv = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node", ...D_]), uv = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", ...R_, "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]), dv = /* @__PURE__ */ new Set([...lv, ...uv]);
|
|
6771
|
+
function fv(e5) {
|
|
6737
6772
|
let t2 = (e5 % 360 + 360) % 360, n2 = Math.floor(t2 / 30), r2 = Math.floor(t2 % 30);
|
|
6738
|
-
return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(
|
|
6773
|
+
return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(rv[n2]);
|
|
6739
6774
|
}
|
|
6740
6775
|
function Z(e5) {
|
|
6741
6776
|
return e5.replace(/\b\w/g, (e6) => e6.toUpperCase());
|
|
6742
6777
|
}
|
|
6743
|
-
var
|
|
6744
|
-
function
|
|
6745
|
-
|
|
6778
|
+
var pv = "true";
|
|
6779
|
+
function mv(e5) {
|
|
6780
|
+
pv = e5;
|
|
6746
6781
|
}
|
|
6747
|
-
function
|
|
6748
|
-
|
|
6749
|
-
|
|
6750
|
-
|
|
6751
|
-
|
|
6782
|
+
function hv(e5) {
|
|
6783
|
+
return P_(e5.map((e6) => {
|
|
6784
|
+
let t2 = U_(e6.name);
|
|
6785
|
+
return t2 === e6.name ? e6 : { ...e6, name: t2 };
|
|
6786
|
+
}), pv);
|
|
6752
6787
|
}
|
|
6753
|
-
function
|
|
6754
|
-
return Array.isArray(e5) ?
|
|
6788
|
+
function gv(e5) {
|
|
6789
|
+
return Array.isArray(e5) ? hv(e5) : e5 && typeof e5 == "object" ? hv(Object.entries(e5).filter(([e6]) => dv.has(e6.toLowerCase())).map(([e6, t2]) => {
|
|
6755
6790
|
var n2, r2, i2, a2, o2, s2;
|
|
6756
6791
|
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 };
|
|
6757
6792
|
})) : [];
|
|
6758
6793
|
}
|
|
6759
|
-
var
|
|
6760
|
-
function
|
|
6761
|
-
|
|
6762
|
-
let a2 =
|
|
6763
|
-
c2 + o2 > window.innerWidth - 14 && (c2 = e5 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14),
|
|
6794
|
+
var _v = document.getElementById("tooltip");
|
|
6795
|
+
function vv(e5, t2, n2, r2, i2) {
|
|
6796
|
+
_v.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 ");
|
|
6797
|
+
let a2 = _v.getBoundingClientRect(), o2 = a2.width || 220, s2 = a2.height || 80, c2 = e5 + 14, l2 = t2 + 14;
|
|
6798
|
+
c2 + o2 > window.innerWidth - 14 && (c2 = e5 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14), _v.style.left = "".concat(Math.max(14, c2), "px"), _v.style.top = "".concat(Math.max(14, l2), "px"), _v.classList.add("visible");
|
|
6764
6799
|
}
|
|
6765
|
-
function
|
|
6766
|
-
|
|
6800
|
+
function yv() {
|
|
6801
|
+
_v.classList.remove("visible");
|
|
6767
6802
|
}
|
|
6768
|
-
var
|
|
6769
|
-
function
|
|
6803
|
+
var bv = { 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", ...M_, ...H_, mean_lilith: "primal feminine & shadow", lilith: "primal feminine & shadow", true_lilith: "primal feminine & shadow", ceres: "nurturing & sustenance", juno: "partnership & commitment", vesta: "devotion & sacred focus", pallas: "wisdom & strategy", pholus: "catalyst & small cause, big effect", vertex: "fated encounters", part_of_fortune: "joy & worldly success", "part of fortune": "joy & worldly success", eris: "discord & radical individuation", sedna: "deep betrayal & transcendence" }, xv = { 1: "self & first impressions", 2: "resources & values", 3: "communication & learning", 4: "home & roots", 5: "creativity & joy", 6: "health & service", 7: "partnerships & others", 8: "transformation & shared resources", 9: "philosophy & exploration", 10: "career & public role", 11: "community & ideals", 12: "solitude & the unconscious" }, Sv = { Aries: "initiative & courage", Taurus: "stability & patience", Gemini: "curiosity & adaptability", Cancer: "nurturing & emotional depth", Leo: "self-expression & confidence", Virgo: "precision & service", Libra: "harmony & relationships", Scorpio: "intensity & transformation", Sagittarius: "expansion & seeking", Capricorn: "discipline & ambition", Aquarius: "innovation & vision", Pisces: "empathy & imagination" }, Cv = { conjunction: "fusion & amplification", opposition: "polarity & integration", trine: "ease & natural flow", square: "tension & growth", sextile: "opportunity & cooperation", quincunx: "adjustment & recalibration", semisquare: "friction & minor tension" };
|
|
6804
|
+
function wv(e5) {
|
|
6770
6805
|
return Math.floor((e5 % 360 + 360) % 360 / 30);
|
|
6771
6806
|
}
|
|
6772
|
-
var
|
|
6773
|
-
function
|
|
6774
|
-
let n2 = e5.toLowerCase(), r2 =
|
|
6807
|
+
var Tv = { sun: [4], moon: [3], mercury: [2, 5], venus: [1, 6], mars: [0, 7], jupiter: [8, 11], saturn: [9, 10] }, Ev = { sun: 0, moon: 1, mercury: 5, venus: 11, mars: 9, jupiter: 3, saturn: 6 };
|
|
6808
|
+
function Dv(e5, t2) {
|
|
6809
|
+
let n2 = e5.toLowerCase(), r2 = wv(t2), i2 = Tv[n2];
|
|
6775
6810
|
if (i2 != null && i2.includes(r2)) return { type: "domicile", label: "Domicile", emoji: "\u2302", cssClass: "dignity-domicile" };
|
|
6776
6811
|
if (i2 && i2.map((e6) => (e6 + 6) % 12).includes(r2)) return { type: "detriment", label: "Detriment", emoji: "\u2B07", cssClass: "dignity-detriment" };
|
|
6777
|
-
let a2 =
|
|
6812
|
+
let a2 = Ev[n2];
|
|
6778
6813
|
return a2 !== void 0 && a2 === r2 ? { type: "exaltation", label: "Exaltation", emoji: "\u2605", cssClass: "dignity-exaltation" } : a2 !== void 0 && (a2 + 6) % 12 === r2 ? { type: "fall", label: "Fall", emoji: "\u2193", cssClass: "dignity-fall" } : null;
|
|
6779
6814
|
}
|
|
6780
|
-
var
|
|
6781
|
-
function
|
|
6815
|
+
var Ov = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], kv = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"];
|
|
6816
|
+
function Av(e5, t2) {
|
|
6782
6817
|
return [e5.toLowerCase(), t2.toLowerCase()].sort().join("|");
|
|
6783
6818
|
}
|
|
6784
|
-
function
|
|
6819
|
+
function jv(e5, t2) {
|
|
6785
6820
|
return e5.filter((e6) => {
|
|
6786
6821
|
var n2;
|
|
6787
6822
|
return ((n2 = e6.type) == null ? "" : n2).toLowerCase() === t2;
|
|
6788
6823
|
});
|
|
6789
6824
|
}
|
|
6790
|
-
function
|
|
6791
|
-
let n2 = [], r2 =
|
|
6825
|
+
function Mv(e5, t2) {
|
|
6826
|
+
let n2 = [], r2 = jv(e5, "square"), i2 = jv(e5, "opposition"), a2 = jv(e5, "trine"), o2 = jv(e5, "sextile"), s2 = jv(e5, "quincunx"), c2 = /* @__PURE__ */ new Set();
|
|
6792
6827
|
for (let e6 of i2) {
|
|
6793
6828
|
let i3 = e6.planet1.toLowerCase(), a3 = e6.planet2.toLowerCase(), o3 = r2.filter((e7) => e7.planet1.toLowerCase() === i3 || e7.planet2.toLowerCase() === i3);
|
|
6794
6829
|
for (let e7 of o3) {
|
|
@@ -6797,8 +6832,8 @@ function dv(e5, t2) {
|
|
|
6797
6832
|
let s3 = [i3, a3, o4].sort().join("|");
|
|
6798
6833
|
if (!c2.has(s3) && r2.find((e8) => e8.planet1.toLowerCase() === o4 && e8.planet2.toLowerCase() === a3 || e8.planet2.toLowerCase() === o4 && e8.planet1.toLowerCase() === a3)) {
|
|
6799
6834
|
c2.add(s3);
|
|
6800
|
-
let e8 = t2.find((e9) => e9.name.toLowerCase() === o4), r3 = e8 ? Z(
|
|
6801
|
-
n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [
|
|
6835
|
+
let e8 = t2.find((e9) => e9.name.toLowerCase() === o4), r3 = e8 ? Z(kv[wv(e8.longitude)]) : "";
|
|
6836
|
+
n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [Av(i3, a3), Av(i3, o4), Av(a3, o4)] });
|
|
6802
6837
|
break;
|
|
6803
6838
|
}
|
|
6804
6839
|
}
|
|
@@ -6808,7 +6843,7 @@ function dv(e5, t2) {
|
|
|
6808
6843
|
let r3 = a2[e6], i3 = a2[t3], o3 = [r3.planet1.toLowerCase(), r3.planet2.toLowerCase()], s3 = [i3.planet1.toLowerCase(), i3.planet2.toLowerCase()], c3 = o3.find((e7) => s3.includes(e7));
|
|
6809
6844
|
if (!c3) continue;
|
|
6810
6845
|
let u3 = o3.find((e7) => e7 !== c3), d3 = s3.find((e7) => e7 !== c3), f3 = [u3, c3, d3].sort().join("|");
|
|
6811
|
-
l2.has(f3) || a2.find((e7) => e7.planet1.toLowerCase() === u3 && e7.planet2.toLowerCase() === d3 || e7.planet2.toLowerCase() === u3 && e7.planet1.toLowerCase() === d3) && (l2.add(f3), n2.push({ name: "Grand Trine", description: "".concat(Z(u3), " \xB7 ").concat(Z(c3), " \xB7 ").concat(Z(d3)), planets: [u3, c3, d3], aspectKeys: [
|
|
6846
|
+
l2.has(f3) || a2.find((e7) => e7.planet1.toLowerCase() === u3 && e7.planet2.toLowerCase() === d3 || e7.planet2.toLowerCase() === u3 && e7.planet1.toLowerCase() === d3) && (l2.add(f3), n2.push({ name: "Grand Trine", description: "".concat(Z(u3), " \xB7 ").concat(Z(c3), " \xB7 ").concat(Z(d3)), planets: [u3, c3, d3], aspectKeys: [Av(u3, c3), Av(c3, d3), Av(u3, d3)] }));
|
|
6812
6847
|
}
|
|
6813
6848
|
if (i2.length >= 2 && r2.length >= 4) for (let e6 = 0; e6 < i2.length; e6++) for (let a3 = e6 + 1; a3 < i2.length; a3++) {
|
|
6814
6849
|
let o3 = i2[e6], s3 = i2[a3], [c3, l3] = [o3.planet1.toLowerCase(), o3.planet2.toLowerCase()], [u3, d3] = [s3.planet1.toLowerCase(), s3.planet2.toLowerCase()];
|
|
@@ -6819,19 +6854,19 @@ function dv(e5, t2) {
|
|
|
6819
6854
|
var n3, r3;
|
|
6820
6855
|
return { name: e8, lon: (n3 = (r3 = t2.find((t3) => t3.name.toLowerCase() === e8)) == null ? void 0 : r3.longitude) == null ? 0 : n3 };
|
|
6821
6856
|
}).sort((e8, t3) => e8.lon - t3.lon).map((e8) => e8.name);
|
|
6822
|
-
n2.push({ name: "Grand Cross", description: e7.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [
|
|
6857
|
+
n2.push({ name: "Grand Cross", description: e7.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [Av(c3, l3), Av(u3, d3), ...f3.map(([e8, t3]) => Av(e8, t3))] });
|
|
6823
6858
|
}
|
|
6824
6859
|
}
|
|
6825
|
-
let u2 = /* @__PURE__ */ new Set(["
|
|
6860
|
+
let u2 = /* @__PURE__ */ new Set(["chiron"]), d2 = t2.filter((e6) => !u2.has(e6.name.toLowerCase()) && !A_(e6.name)).map((e6) => ({ name: e6.name.toLowerCase(), lon: e6.longitude })), f2 = /* @__PURE__ */ new Map();
|
|
6826
6861
|
for (let { name: e6, lon: t3 } of d2) {
|
|
6827
6862
|
var p2;
|
|
6828
|
-
let n3 =
|
|
6863
|
+
let n3 = wv(t3), r3 = (p2 = f2.get(n3)) == null ? [] : p2;
|
|
6829
6864
|
r3.push(e6), f2.set(n3, r3);
|
|
6830
6865
|
}
|
|
6831
6866
|
for (let [e6, t3] of f2) if (t3.length >= 3) {
|
|
6832
6867
|
let r3 = [...t3].sort().join("|"), i3 = [];
|
|
6833
|
-
for (let e7 = 0; e7 < t3.length; e7++) for (let n3 = e7 + 1; n3 < t3.length; n3++) i3.push(
|
|
6834
|
-
n2.push({ name: "Stellium", description: "".concat(
|
|
6868
|
+
for (let e7 = 0; e7 < t3.length; e7++) for (let n3 = e7 + 1; n3 < t3.length; n3++) i3.push(Av(t3[e7], t3[n3]));
|
|
6869
|
+
n2.push({ name: "Stellium", description: "".concat(rv[e6], ": ").concat(t3.map(Z).join(", ")), planets: t3, aspectKeys: i3, _dedupeKey: r3 });
|
|
6835
6870
|
}
|
|
6836
6871
|
let m2 = [...d2].sort((e6, t3) => e6.lon - t3.lon), h2 = [...m2, ...m2.map((e6) => ({ ...e6, lon: e6.lon + 360 }))], g2 = /* @__PURE__ */ new Set();
|
|
6837
6872
|
for (let e6 = 0; e6 < h2.length - 2; e6++) {
|
|
@@ -6844,7 +6879,7 @@ function dv(e5, t2) {
|
|
|
6844
6879
|
if (g2.has(t4)) continue;
|
|
6845
6880
|
if (g2.add(t4), !n2.some((e8) => e8._dedupeKey === t4)) {
|
|
6846
6881
|
let t5 = [];
|
|
6847
|
-
for (let n3 = 0; n3 < e7.length; n3++) for (let r4 = n3 + 1; r4 < e7.length; r4++) t5.push(
|
|
6882
|
+
for (let n3 = 0; n3 < e7.length; n3++) for (let r4 = n3 + 1; r4 < e7.length; r4++) t5.push(Av(e7[n3], e7[r4]));
|
|
6848
6883
|
n2.push({ name: "Stellium", description: "Tight cluster: ".concat(e7.map(Z).join(", ")), planets: e7, aspectKeys: t5 });
|
|
6849
6884
|
}
|
|
6850
6885
|
}
|
|
@@ -6854,7 +6889,7 @@ function dv(e5, t2) {
|
|
|
6854
6889
|
let r3 = s2[e6], i3 = s2[t3], a3 = [r3.planet1.toLowerCase(), r3.planet2.toLowerCase()], c3 = [i3.planet1.toLowerCase(), i3.planet2.toLowerCase()], l3 = a3.find((e7) => c3.includes(e7));
|
|
6855
6890
|
if (!l3) continue;
|
|
6856
6891
|
let u3 = a3.find((e7) => e7 !== l3), d3 = c3.find((e7) => e7 !== l3), f3 = [l3, u3, d3].sort().join("|");
|
|
6857
|
-
_2.has(f3) || o2.find((e7) => e7.planet1.toLowerCase() === u3 && e7.planet2.toLowerCase() === d3 || e7.planet2.toLowerCase() === u3 && e7.planet1.toLowerCase() === d3) && (_2.add(f3), n2.push({ name: "Yod", description: "Apex: ".concat(Z(l3)), planets: [l3, u3, d3], aspectKeys: [
|
|
6892
|
+
_2.has(f3) || o2.find((e7) => e7.planet1.toLowerCase() === u3 && e7.planet2.toLowerCase() === d3 || e7.planet2.toLowerCase() === u3 && e7.planet1.toLowerCase() === d3) && (_2.add(f3), n2.push({ name: "Yod", description: "Apex: ".concat(Z(l3)), planets: [l3, u3, d3], aspectKeys: [Av(l3, u3), Av(l3, d3), Av(u3, d3)] }));
|
|
6858
6893
|
}
|
|
6859
6894
|
let v2 = /* @__PURE__ */ new Set(), ee2 = n2.filter((e6) => e6.name === "Grand Trine");
|
|
6860
6895
|
for (let e6 of ee2) {
|
|
@@ -6865,43 +6900,43 @@ function dv(e5, t2) {
|
|
|
6865
6900
|
let p3 = o2.find((e7) => e7.planet1.toLowerCase() === f3 && e7.planet2.toLowerCase() === l3 || e7.planet2.toLowerCase() === f3 && e7.planet1.toLowerCase() === l3), m3 = o2.find((e7) => e7.planet1.toLowerCase() === f3 && e7.planet2.toLowerCase() === u3 || e7.planet2.toLowerCase() === f3 && e7.planet1.toLowerCase() === u3);
|
|
6866
6901
|
if (!p3 || !m3) continue;
|
|
6867
6902
|
let h3 = [t3, r3, a3, f3].sort().join("|");
|
|
6868
|
-
v2.has(h3) || (v2.add(h3), n2.push({ name: "Kite", description: "Apex: ".concat(Z(f3), " \xB7 Tail: ").concat(Z(c3)), planets: [t3, r3, a3, f3], aspectKeys: [...e6.aspectKeys,
|
|
6903
|
+
v2.has(h3) || (v2.add(h3), n2.push({ name: "Kite", description: "Apex: ".concat(Z(f3), " \xB7 Tail: ").concat(Z(c3)), planets: [t3, r3, a3, f3], aspectKeys: [...e6.aspectKeys, Av(f3, c3), Av(f3, l3), Av(f3, u3)] }));
|
|
6869
6904
|
}
|
|
6870
6905
|
}
|
|
6871
6906
|
for (let e6 of n2) delete e6._dedupeKey;
|
|
6872
6907
|
return n2;
|
|
6873
6908
|
}
|
|
6874
|
-
var
|
|
6875
|
-
function
|
|
6876
|
-
|
|
6909
|
+
var Nv = null, Pv = null, Q = null, Fv = null, Iv = null, Lv = null;
|
|
6910
|
+
function Rv(e5) {
|
|
6911
|
+
Lv = e5;
|
|
6877
6912
|
}
|
|
6878
|
-
var
|
|
6879
|
-
function
|
|
6913
|
+
var zv = /* @__PURE__ */ new Map();
|
|
6914
|
+
function Bv() {
|
|
6880
6915
|
var e5;
|
|
6881
|
-
if (
|
|
6916
|
+
if (Nv) return Nv;
|
|
6882
6917
|
let t2 = document.getElementById("info-panel");
|
|
6883
|
-
if (t2) return
|
|
6884
|
-
|
|
6918
|
+
if (t2) return Nv = t2, Nv;
|
|
6919
|
+
Nv = document.createElement("div"), Nv.id = "info-panel", Nv.className = "info-panel";
|
|
6885
6920
|
let n2 = document.getElementById("chart-container");
|
|
6886
|
-
return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(
|
|
6921
|
+
return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(Nv, n2.nextSibling) : (e5 = document.getElementById("app")) == null || e5.appendChild(Nv), Nv;
|
|
6887
6922
|
}
|
|
6888
|
-
function
|
|
6923
|
+
function Vv(e5, t2, n2) {
|
|
6889
6924
|
var r2, i2, a2, o2;
|
|
6890
|
-
let s2 =
|
|
6925
|
+
let s2 = Bv(), c2 = (r2 = tv[t2.name.toLowerCase()]) == null ? "\u2605" : r2, l2 = (i2 = nv[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : i2, u2 = Dv(t2.name, t2.longitude), d2 = u2 ? '<span class="dignity-badge '.concat(u2.cssClass, '" title="').concat(u2.label, '">').concat(u2.emoji, " ").concat(u2.label, "</span>") : "", f2 = n2.filter((e6) => e6.planet1.toLowerCase() === t2.name.toLowerCase() || e6.planet2.toLowerCase() === t2.name.toLowerCase()).sort((e6, t3) => {
|
|
6891
6926
|
var n3, r3;
|
|
6892
6927
|
return ((n3 = e6.orb) == null ? 99 : n3) - ((r3 = t3.orb) == null ? 99 : r3);
|
|
6893
6928
|
}), p2 = f2.length ? f2.map((e6) => {
|
|
6894
6929
|
var n3, r3, i3, a3, o3, s3, c3;
|
|
6895
|
-
let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 =
|
|
6930
|
+
let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 = tv[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = iv[(a3 = (o3 = e6.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e6.type : i3) == null ? "\u2014" : r3, f3 = (s3 = av((c3 = e6.type) == null ? "" : c3)) == null ? "#888" : s3, p3 = e6.orb == null ? "" : "".concat(e6.orb.toFixed(1), "\xB0"), m3 = e6.applying === true ? "\u2197" : e6.applying === false ? "\u2198" : "\xB7";
|
|
6896
6931
|
return '<div class="aspect-row">\n <span class="aspect-dot" style="background:'.concat(f3, '"></span>\n <span class="aspect-sym" style="color:').concat(f3, '">').concat(d3, '</span>\n <span class="aspect-other">').concat(u3, " ").concat(Z(l3), '</span>\n <span class="aspect-meta">').concat(p3, " ").concat(m3, "</span>\n </div>");
|
|
6897
|
-
}).join("") : '<div class="no-aspects">No listed aspects</div>', m2 =
|
|
6898
|
-
s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(
|
|
6899
|
-
|
|
6932
|
+
}).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = Iv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
|
|
6933
|
+
s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(fv(t2.longitude)).concat(t2.house ? " \xB7 House ".concat(t2.house) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Aspects</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), s2.classList.add("visible"), s2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (a2 = document.getElementById("info-close-btn")) == null || a2.addEventListener("click", () => {
|
|
6934
|
+
Jv(), ny();
|
|
6900
6935
|
}), (o2 = document.getElementById("ask-claude-btn")) == null || o2.addEventListener("click", () => {
|
|
6901
6936
|
var e6, n3, r3, i3, a3;
|
|
6902
|
-
if (!
|
|
6937
|
+
if (!Iv) return;
|
|
6903
6938
|
let o3 = document.getElementById("ask-claude-btn");
|
|
6904
|
-
!o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"),
|
|
6939
|
+
!o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), Iv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e6 = t2.sign) == null ? fv(t2.longitude) : e6, house: (n3 = t2.house) == null ? null : n3, retrograde: (r3 = t2.retrograde) == null ? false : r3, speed: (i3 = t2.speed) == null ? null : i3, dignity: (a3 = u2 == null ? void 0 : u2.label) == null ? null : a3, aspects: f2.map((e7) => ({ other: e7.planet1.toLowerCase() === t2.name.toLowerCase() ? e7.planet2 : e7.planet1, type: e7.type, orb: e7.orb, applying: e7.applying })) } }).then(() => {
|
|
6905
6940
|
o3.textContent = "\u2713 Sent", o3.classList.remove("sending"), o3.classList.add("sent"), setTimeout(() => {
|
|
6906
6941
|
o3.textContent = "\u2728 Interpret this", o3.classList.remove("sent"), o3.disabled = false;
|
|
6907
6942
|
}, 2500);
|
|
@@ -6910,16 +6945,16 @@ function bv(e5, t2, n2) {
|
|
|
6910
6945
|
}));
|
|
6911
6946
|
});
|
|
6912
6947
|
}
|
|
6913
|
-
function
|
|
6948
|
+
function Hv(e5, t2, n2) {
|
|
6914
6949
|
var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
|
|
6915
|
-
let p2 =
|
|
6950
|
+
let p2 = Bv(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = tv[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = tv[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = iv[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = av((c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2), y2 = t2.orb == null ? "unknown orb" : "".concat(t2.orb.toFixed(2), "\xB0"), b2 = t2.applying === true ? "Applying (growing closer)" : t2.applying === false ? "Separating (moving apart)" : "", x2 = m2 ? "".concat(fv(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(fv(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = Iv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
|
|
6916
6951
|
p2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(ee2, '">').concat(v2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z((u2 = t2.type) == null ? "Aspect" : u2), '</strong>\n </div>\n <div class="info-pos">').concat(y2).concat(b2 ? " \xB7 ".concat(b2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in Aspect</div>\n <div class="aspect-pair-row">\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(g2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet1), '</div>\n <div class="aspect-pair-pos">').concat(x2, '</div>\n </div>\n </div>\n <span class="aspect-pair-sym" style="color:').concat(ee2, '">').concat(v2, '</span>\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(_2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet2), '</div>\n <div class="aspect-pair-pos">').concat(S2, "</div>\n </div>\n </div>\n </div>\n ").concat(C2, "\n "), p2.classList.add("visible"), p2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (d2 = document.getElementById("info-close-btn")) == null || d2.addEventListener("click", () => {
|
|
6917
|
-
|
|
6952
|
+
Jv(), ny();
|
|
6918
6953
|
}), (f2 = document.getElementById("ask-claude-btn")) == null || f2.addEventListener("click", () => {
|
|
6919
6954
|
var e6, n3, r3, i3, a3, o3, s3, c3;
|
|
6920
|
-
if (!
|
|
6955
|
+
if (!Iv) return;
|
|
6921
6956
|
let l3 = document.getElementById("ask-claude-btn");
|
|
6922
|
-
!l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"),
|
|
6957
|
+
!l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), Iv({ type: "aspect", data: { planet1: t2.planet1, planet2: t2.planet2, aspect_type: (e6 = t2.type) == null ? null : e6, orb: (n3 = t2.orb) == null ? null : n3, applying: (r3 = t2.applying) == null ? null : r3, angle: (i3 = t2.angle) == null ? null : i3, planet1_sign: (a3 = m2 == null ? void 0 : m2.sign) == null ? null : a3, planet1_house: (o3 = m2 == null ? void 0 : m2.house) == null ? null : o3, planet2_sign: (s3 = h2 == null ? void 0 : h2.sign) == null ? null : s3, planet2_house: (c3 = h2 == null ? void 0 : h2.house) == null ? null : c3 } }).then(() => {
|
|
6923
6958
|
l3.textContent = "Sent", l3.classList.remove("sending"), l3.classList.add("sent"), setTimeout(() => {
|
|
6924
6959
|
l3.textContent = "Interpret", l3.classList.remove("sent"), l3.disabled = false;
|
|
6925
6960
|
}, 2500);
|
|
@@ -6928,22 +6963,22 @@ function xv(e5, t2, n2) {
|
|
|
6928
6963
|
}));
|
|
6929
6964
|
});
|
|
6930
6965
|
}
|
|
6931
|
-
function
|
|
6966
|
+
function Uv(e5, t2, n2) {
|
|
6932
6967
|
var r2, i2, a2, o2, s2;
|
|
6933
|
-
let c2 =
|
|
6968
|
+
let c2 = Bv(), l2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), u2 = (r2 = nv[l2]) == null ? "" : r2, d2 = (i2 = (a2 = t2.sign) == null ? rv[l2] : a2) == null ? "" : i2, f2 = n2.filter((e6) => e6.house === t2.number), p2 = f2.length ? f2.map((e6) => {
|
|
6934
6969
|
var t3;
|
|
6935
|
-
let n3 = (t3 =
|
|
6970
|
+
let n3 = (t3 = tv[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = fv(e6.longitude), i3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "";
|
|
6936
6971
|
return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e6.name)).concat(i3, '</span>\n <span class="aspect-meta">').concat(r3, "</span>\n </div>");
|
|
6937
|
-
}).join("") : '<div class="no-aspects">No planets in this house</div>', m2 =
|
|
6972
|
+
}).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = Iv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
|
|
6938
6973
|
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>House ').concat(t2.number, '</strong>\n </div>\n <div class="info-pos">').concat(u2, " ").concat(d2, " on cusp").concat(t2.ruler ? " \xB7 ruled by ".concat(Z(t2.ruler)) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in House ').concat(t2.number, '</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
|
|
6939
|
-
|
|
6974
|
+
Jv(), ny();
|
|
6940
6975
|
}), (s2 = document.getElementById("ask-claude-btn")) == null || s2.addEventListener("click", () => {
|
|
6941
6976
|
var e6;
|
|
6942
|
-
if (!
|
|
6977
|
+
if (!Iv) return;
|
|
6943
6978
|
let n3 = document.getElementById("ask-claude-btn");
|
|
6944
|
-
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"),
|
|
6979
|
+
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), Iv({ type: "house", data: { house_number: t2.number, sign: d2, cusp_longitude: t2.cusp_lon, ruler: (e6 = t2.ruler) == null ? null : e6, planets_in_house: f2.map((e7) => {
|
|
6945
6980
|
var t3, n4;
|
|
6946
|
-
return { name: e7.name, sign: (t3 = e7.sign) == null ?
|
|
6981
|
+
return { name: e7.name, sign: (t3 = e7.sign) == null ? fv(e7.longitude) : t3, retrograde: (n4 = e7.retrograde) == null ? false : n4 };
|
|
6947
6982
|
}) } }).then(() => {
|
|
6948
6983
|
n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
|
|
6949
6984
|
n3.textContent = "Interpret", n3.classList.remove("sent"), n3.disabled = false;
|
|
@@ -6953,22 +6988,22 @@ function Sv(e5, t2, n2) {
|
|
|
6953
6988
|
}));
|
|
6954
6989
|
});
|
|
6955
6990
|
}
|
|
6956
|
-
var
|
|
6957
|
-
function
|
|
6991
|
+
var Wv = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
|
|
6992
|
+
function Gv(e5, t2, n2) {
|
|
6958
6993
|
var r2, i2, a2, o2, s2;
|
|
6959
|
-
let c2 =
|
|
6994
|
+
let c2 = Bv(), l2 = rv[t2], u2 = nv[t2], d2 = Z(Ov[t2]), f2 = Z(kv[t2]), p2 = (r2 = Wv[l2]) == null ? "" : r2, m2 = (i2 = tv[p2.toLowerCase()]) == null ? "" : i2, h2 = n2.filter((e6) => Math.floor((e6.longitude % 360 + 360) % 360 / 30) === t2), g2 = h2.length ? h2.map((e6) => {
|
|
6960
6995
|
var t3;
|
|
6961
|
-
let n3 = (t3 =
|
|
6996
|
+
let n3 = (t3 = tv[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 30 - r3) * 60), a3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "", o3 = Dv(e6.name, e6.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
|
|
6962
6997
|
return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e6.name)).concat(a3).concat(s3, '</span>\n <span class="aspect-meta">').concat(r3, "\xB0").concat(i3.toString().padStart(2, "0"), "\u2032</span>\n </div>");
|
|
6963
|
-
}).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 =
|
|
6964
|
-
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(
|
|
6965
|
-
|
|
6998
|
+
}).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 = Iv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Interpret '.concat(l2, "</button>") : "";
|
|
6999
|
+
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(sv(t2), '">').concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(l2, '</strong>\n </div>\n <div class="info-pos">').concat(_2, " ").concat(d2, " \xB7 ").concat(f2).concat(p2 ? " \xB7 Ruled by ".concat(m2, " ").concat(p2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in ').concat(l2, '</div>\n <div class="aspects-list">').concat(g2, "</div>\n ").concat(v2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
|
|
7000
|
+
Jv(), ny();
|
|
6966
7001
|
}), (s2 = document.getElementById("sign-ask-claude-btn")) == null || s2.addEventListener("click", () => {
|
|
6967
|
-
if (!
|
|
7002
|
+
if (!Iv) return;
|
|
6968
7003
|
let e6 = document.getElementById("sign-ask-claude-btn");
|
|
6969
|
-
!e6 || e6.disabled || (e6.disabled = true, e6.textContent = "Sending\u2026", e6.classList.add("sending"),
|
|
7004
|
+
!e6 || e6.disabled || (e6.disabled = true, e6.textContent = "Sending\u2026", e6.classList.add("sending"), Iv({ type: "sign", data: { sign: l2, element: d2, modality: f2, ruler: p2 || null, planets_in_sign: h2.map((e7) => {
|
|
6970
7005
|
var t3, n3;
|
|
6971
|
-
return { name: e7.name, longitude: e7.longitude, position:
|
|
7006
|
+
return { name: e7.name, longitude: e7.longitude, position: fv(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3, house: (n3 = e7.house) == null ? null : n3 };
|
|
6972
7007
|
}) } }).then(() => {
|
|
6973
7008
|
e6.textContent = "Sent", e6.classList.remove("sending"), e6.classList.add("sent"), setTimeout(() => {
|
|
6974
7009
|
e6.textContent = "Interpret ".concat(l2), e6.classList.remove("sent"), e6.disabled = false;
|
|
@@ -6978,17 +7013,17 @@ function wv(e5, t2, n2) {
|
|
|
6978
7013
|
}));
|
|
6979
7014
|
});
|
|
6980
7015
|
}
|
|
6981
|
-
var
|
|
6982
|
-
function
|
|
7016
|
+
var Kv = { 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. It colours every first impression you make.", 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. It is the shadow-partner of the Ascendant \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 (Medium Coeli) marks the highest point of the chart and governs reputation, career, and the long arc of your public life. It describes the contribution the world remembers you for.", themes: ["career", "ambition", "reputation", "authority", "life direction"] }, IC: { title: "Imum Coeli", symbol: "IC", keyword: "roots & inner foundation", meaning: "The IC (Imum Coeli) anchors the chart at its lowest point \u2014 home, ancestry, psychological foundations, and the private self that sustains the public Midheaven. It is where you return to be restored.", themes: ["home", "family", "ancestry", "inner life", "psychological roots"] } };
|
|
7017
|
+
function qv(e5, t2, n2) {
|
|
6983
7018
|
var r2, i2;
|
|
6984
|
-
let a2 =
|
|
7019
|
+
let a2 = Bv(), o2 = Kv[t2];
|
|
6985
7020
|
if (!o2) return;
|
|
6986
|
-
let s2 =
|
|
7021
|
+
let s2 = fv(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(Ov[c2]), u2 = Z(kv[c2]), d2 = nv[c2], f2 = sv(c2);
|
|
6987
7022
|
a2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:#7060b8;font-family:system-ui;font-weight:700;font-size:15px">'.concat(o2.symbol, '</span>\n <div class="info-title">\n <div class="info-name-row"><strong>').concat(o2.title, '</strong></div>\n <div class="info-pos">').concat(o2.keyword, '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="planet-in-sign" style="margin:8px 0 4px">\n <span style="color:').concat(f2, ';font-family:serif;font-size:14px;margin-right:4px">').concat(d2, '</span>\n <span style="font-size:12px;color:var(--text-muted,#888)">').concat(s2, " \xB7 ").concat(l2, " \xB7 ").concat(u2, '</span>\n </div>\n <div class="planet-meaning" style="font-size:12px;line-height:1.55;margin-bottom:8px">').concat(o2.meaning, '</div>\n <div class="aspects-title">Themes</div>\n <div class="aspects-list">\n ').concat(o2.themes.map((e6) => '<div class="aspect-row"><span class="aspect-other">'.concat(e6, "</span></div>")).join(""), '\n </div>\n <div class="panel-actions" style="margin-top:10px">\n <button class="ask-claude-btn" id="angle-ask-claude-btn">\n Interpret ').concat(o2.title, "\n </button>\n </div>\n "), a2.classList.add("visible"), a2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (r2 = document.getElementById("info-close-btn")) == null || r2.addEventListener("click", () => {
|
|
6988
|
-
|
|
7023
|
+
Jv(), ny();
|
|
6989
7024
|
}), (i2 = document.getElementById("angle-ask-claude-btn")) == null || i2.addEventListener("click", (e6) => {
|
|
6990
7025
|
let t3 = e6.currentTarget;
|
|
6991
|
-
t3.textContent = "Sending\u2026", t3.disabled = true,
|
|
7026
|
+
t3.textContent = "Sending\u2026", t3.disabled = true, Iv == null || Iv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: rv[c2], position: s2, element: l2, modality: u2 } }).then(() => {
|
|
6992
7027
|
t3.textContent = "Sent", setTimeout(() => {
|
|
6993
7028
|
t3.textContent = "Interpret ".concat(o2.title), t3.disabled = false;
|
|
6994
7029
|
}, 2500);
|
|
@@ -6997,22 +7032,22 @@ function Ev(e5, t2, n2) {
|
|
|
6997
7032
|
});
|
|
6998
7033
|
});
|
|
6999
7034
|
}
|
|
7000
|
-
function
|
|
7001
|
-
|
|
7035
|
+
function Jv() {
|
|
7036
|
+
Nv == null || Nv.classList.remove("visible"), Pv = null, Qv(), Lv == null || Lv(null);
|
|
7002
7037
|
}
|
|
7003
|
-
var
|
|
7004
|
-
function
|
|
7005
|
-
let n2 =
|
|
7038
|
+
var Yv = null, Xv = 0;
|
|
7039
|
+
function Zv(e5, t2 = false) {
|
|
7040
|
+
let n2 = Yv;
|
|
7006
7041
|
if (!n2) return;
|
|
7007
|
-
let r2 =
|
|
7042
|
+
let r2 = Xv, i2 = Y(e5, K_, r2), a2 = Y(e5, 198, r2);
|
|
7008
7043
|
n2.setAttribute("x1", i2.x.toFixed(1)), n2.setAttribute("y1", i2.y.toFixed(1)), n2.setAttribute("x2", a2.x.toFixed(1)), n2.setAttribute("y2", a2.y.toFixed(1)), n2.style.opacity = "1", n2.style.strokeWidth = t2 ? "1.5" : "1";
|
|
7009
7044
|
}
|
|
7010
|
-
function
|
|
7011
|
-
|
|
7045
|
+
function Qv() {
|
|
7046
|
+
Yv && (Yv.style.opacity = "0");
|
|
7012
7047
|
}
|
|
7013
|
-
function
|
|
7048
|
+
function $v(e5) {
|
|
7014
7049
|
let t2 = e5.toLowerCase(), n2 = /* @__PURE__ */ new Set();
|
|
7015
|
-
|
|
7050
|
+
zv.forEach(({ vis: e6, color: r2, symbolEls: i2 }, a2) => {
|
|
7016
7051
|
let o2 = a2.split("|");
|
|
7017
7052
|
if (o2.includes(t2)) {
|
|
7018
7053
|
e6.style.stroke = r2, e6.style.strokeOpacity = "0.95", e6.style.strokeWidth = "2", e6.setAttribute("filter", "url(#aspect-glow)"), i2.forEach((e7) => {
|
|
@@ -7032,9 +7067,9 @@ function Mv(e5) {
|
|
|
7032
7067
|
e6.classList.toggle("dim", i2 !== t2 && !n2.has(i2));
|
|
7033
7068
|
});
|
|
7034
7069
|
}
|
|
7035
|
-
function
|
|
7070
|
+
function ey(e5, t2) {
|
|
7036
7071
|
let n2 = new Set(e5.map((e6) => e6.toLowerCase())), r2 = new Set(t2);
|
|
7037
|
-
|
|
7072
|
+
zv.forEach(({ vis: e6, color: t3, symbolEls: n3 }, i2) => {
|
|
7038
7073
|
r2.has(i2) ? (e6.style.stroke = t3, e6.style.strokeOpacity = "0.95", e6.style.strokeWidth = "2", e6.setAttribute("filter", "url(#aspect-glow)"), n3.forEach((e7) => {
|
|
7039
7074
|
e7.style.opacity = "1";
|
|
7040
7075
|
})) : (e6.style.strokeOpacity = "0.05", e6.style.strokeWidth = "0.7", e6.removeAttribute("filter"), n3.forEach((e7) => {
|
|
@@ -7048,8 +7083,8 @@ function Nv(e5, t2) {
|
|
|
7048
7083
|
return e6.classList.toggle("dim", !n2.has((t3 = e6.dataset.planet) == null ? "" : t3));
|
|
7049
7084
|
});
|
|
7050
7085
|
}
|
|
7051
|
-
function
|
|
7052
|
-
|
|
7086
|
+
function ty() {
|
|
7087
|
+
zv.forEach(({ vis: e5, symbolEls: t2 }) => {
|
|
7053
7088
|
e5.style.strokeOpacity = "0.05", e5.style.strokeWidth = "0.7", e5.removeAttribute("filter"), t2.forEach((e6) => {
|
|
7054
7089
|
e6.style.opacity = "0.12";
|
|
7055
7090
|
});
|
|
@@ -7057,17 +7092,17 @@ function Pv() {
|
|
|
7057
7092
|
e5.style.opacity = "0.35";
|
|
7058
7093
|
}), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.add("dim"));
|
|
7059
7094
|
}
|
|
7060
|
-
function
|
|
7061
|
-
|
|
7095
|
+
function ny() {
|
|
7096
|
+
zv.forEach(({ vis: e5, color: t2, baseOpacity: n2, baseWidth: r2, symbolEls: i2 }) => {
|
|
7062
7097
|
e5.style.stroke = t2, e5.style.strokeOpacity = n2, e5.style.strokeWidth = r2, e5.removeAttribute("filter"), i2.forEach((e6) => {
|
|
7063
7098
|
e6.style.opacity = "";
|
|
7064
7099
|
});
|
|
7065
7100
|
}), Q == null || Q.querySelectorAll(".planet-glyph-group").forEach((e5) => {
|
|
7066
7101
|
e5.style.opacity = "";
|
|
7067
|
-
}), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")),
|
|
7102
|
+
}), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")), oy();
|
|
7068
7103
|
}
|
|
7069
|
-
var
|
|
7070
|
-
function
|
|
7104
|
+
var ry = { "T-Square": "rgba(224,138, 82, 0.14)", "Grand Trine": "rgba( 82,168,224, 0.14)", "Grand Cross": "rgba(224, 82, 82, 0.14)", Stellium: "rgba(154,127,212, 0.14)", Yod: "rgba( 82,192,122, 0.14)", Kite: "rgba(192,176, 82, 0.14)" }, iy = { "T-Square": "rgba(224,138, 82, 0.70)", "Grand Trine": "rgba( 82,168,224, 0.70)", "Grand Cross": "rgba(224, 82, 82, 0.70)", Stellium: "rgba(154,127,212, 0.70)", Yod: "rgba( 82,192,122, 0.70)", Kite: "rgba(192,176, 82, 0.70)" };
|
|
7105
|
+
function ay(e5, t2, n2) {
|
|
7071
7106
|
var r2, i2;
|
|
7072
7107
|
if (!Q) return null;
|
|
7073
7108
|
let a2 = /* @__PURE__ */ new Map();
|
|
@@ -7075,26 +7110,26 @@ function Rv(e5, t2, n2) {
|
|
|
7075
7110
|
let o2 = [];
|
|
7076
7111
|
for (let t3 of e5.planets) {
|
|
7077
7112
|
let e6 = a2.get(t3.toLowerCase());
|
|
7078
|
-
e6 != null && o2.push(Y(e6,
|
|
7113
|
+
e6 != null && o2.push(Y(e6, Z_, n2));
|
|
7079
7114
|
}
|
|
7080
7115
|
if (o2.length < 2) return null;
|
|
7081
|
-
let s2 = (r2 =
|
|
7116
|
+
let s2 = (r2 = ry[e5.name]) == null ? "rgba(128,128,128,0.12)" : r2, c2 = (i2 = iy[e5.name]) == null ? "rgba(128,128,128,0.60)" : i2, l2;
|
|
7082
7117
|
if (o2.length === 2) {
|
|
7083
7118
|
let e6 = X("line");
|
|
7084
7119
|
e6.setAttribute("x1", o2[0].x.toFixed(1)), e6.setAttribute("y1", o2[0].y.toFixed(1)), e6.setAttribute("x2", o2[1].x.toFixed(1)), e6.setAttribute("y2", o2[1].y.toFixed(1)), e6.setAttribute("stroke", c2), e6.setAttribute("stroke-width", "2"), e6.setAttribute("fill", "none"), l2 = e6;
|
|
7085
7120
|
} else {
|
|
7086
|
-
let e6 = [...o2].sort((e7, t4) => Math.atan2(e7.y -
|
|
7121
|
+
let e6 = [...o2].sort((e7, t4) => Math.atan2(e7.y - G_, e7.x - W_) - Math.atan2(t4.y - G_, t4.x - W_)).map((e7) => "".concat(e7.x.toFixed(1), ",").concat(e7.y.toFixed(1))).join(" "), t3 = X("polygon");
|
|
7087
7122
|
t3.setAttribute("points", e6), t3.setAttribute("fill", s2), t3.setAttribute("stroke", c2), t3.setAttribute("stroke-width", "1.5"), t3.setAttribute("stroke-linejoin", "round"), l2 = t3;
|
|
7088
7123
|
}
|
|
7089
7124
|
l2.setAttribute("pointer-events", "none"), l2.setAttribute("class", "pattern-overlay");
|
|
7090
7125
|
let u2 = Q.querySelector(".aspect-hit");
|
|
7091
7126
|
return u2 ? Q.insertBefore(l2, u2) : Q.appendChild(l2), l2;
|
|
7092
7127
|
}
|
|
7093
|
-
function
|
|
7128
|
+
function oy() {
|
|
7094
7129
|
Q == null || Q.querySelectorAll(".pattern-overlay").forEach((e5) => e5.remove());
|
|
7095
7130
|
}
|
|
7096
|
-
function
|
|
7097
|
-
|
|
7131
|
+
function sy(e5) {
|
|
7132
|
+
zv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, symbolEls: a2 }) => {
|
|
7098
7133
|
e5 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2) : t2.style.strokeOpacity = "0", a2.forEach((t3) => {
|
|
7099
7134
|
t3.style.display = e5 ? "" : "none";
|
|
7100
7135
|
});
|
|
@@ -7102,8 +7137,8 @@ function Bv(e5) {
|
|
|
7102
7137
|
t2.style.pointerEvents = e5 ? "all" : "none";
|
|
7103
7138
|
});
|
|
7104
7139
|
}
|
|
7105
|
-
function
|
|
7106
|
-
|
|
7140
|
+
function cy(e5) {
|
|
7141
|
+
zv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, orb: a2, symbolEls: o2 }) => {
|
|
7107
7142
|
a2 <= e5 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2, t2.style.display = "") : t2.style.display = "none", o2.forEach((t3) => {
|
|
7108
7143
|
t3.style.display = a2 <= e5 ? "" : "none";
|
|
7109
7144
|
});
|
|
@@ -7111,12 +7146,12 @@ function Vv(e5) {
|
|
|
7111
7146
|
e6.style.display = "";
|
|
7112
7147
|
});
|
|
7113
7148
|
}
|
|
7114
|
-
function
|
|
7149
|
+
function ly(e5, t2, n2, r2, i2, a2, o2) {
|
|
7115
7150
|
var s2, c2, l2, u2, d2, f2, p2, m2, h2;
|
|
7116
|
-
|
|
7151
|
+
Iv = a2 == null ? null : a2;
|
|
7117
7152
|
let g2 = e5.querySelector("#pan-zoom-controls");
|
|
7118
|
-
e5.innerHTML = "", g2 && e5.appendChild(g2),
|
|
7119
|
-
let _2 =
|
|
7153
|
+
e5.innerHTML = "", g2 && e5.appendChild(g2), zv.clear(), Pv = null, Jv();
|
|
7154
|
+
let _2 = gv(t2.planets), v2 = (s2 = t2.houses) == null ? [] : s2, ee2 = (c2 = t2.aspects) == null ? [] : c2, y2 = (l2 = (u2 = (d2 = v2[0]) == null ? void 0 : d2.cusp_lon) == null ? t2.ascendant : u2) == null ? 0 : l2, b2 = X("svg");
|
|
7120
7155
|
b2.setAttribute("viewBox", "0 0 500 500"), b2.setAttribute("width", "100%"), b2.setAttribute("height", "100%"), b2.setAttribute("overflow", "visible"), b2.style.overflow = "visible", b2.style.display = "block", e5.appendChild(b2), Q = b2;
|
|
7121
7156
|
{
|
|
7122
7157
|
let e6 = X("defs");
|
|
@@ -7134,29 +7169,29 @@ function Hv(e5, t2, n2, r2, i2, a2, o2) {
|
|
|
7134
7169
|
let te2 = X("g");
|
|
7135
7170
|
te2.setAttribute("class", "chart-layer"), te2.style.setProperty("--layer-index", "5"), b2.appendChild(te2);
|
|
7136
7171
|
let ne2 = X("g");
|
|
7137
|
-
b2.appendChild(ne2),
|
|
7172
|
+
b2.appendChild(ne2), Xv = y2;
|
|
7138
7173
|
let T2 = X("line");
|
|
7139
|
-
T2.setAttribute("stroke", "#7060b8"), T2.setAttribute("stroke-width", "1"), T2.setAttribute("stroke-dasharray", "2 2"), T2.setAttribute("pointer-events", "none"), T2.style.opacity = "0", T2.style.transition = "opacity 150ms ease", S2.appendChild(T2),
|
|
7174
|
+
T2.setAttribute("stroke", "#7060b8"), T2.setAttribute("stroke-width", "1"), T2.setAttribute("stroke-dasharray", "2 2"), T2.setAttribute("pointer-events", "none"), T2.style.opacity = "0", T2.style.transition = "opacity 150ms ease", S2.appendChild(T2), Yv = T2;
|
|
7140
7175
|
let re2 = X("circle");
|
|
7141
7176
|
re2.setAttribute("cx", "250"), re2.setAttribute("cy", "250"), re2.setAttribute("r", "244"), re2.style.fill = "var(--bg, #faf9f5)", re2.setAttribute("pointer-events", "none"), x2.appendChild(re2);
|
|
7142
|
-
let E2 =
|
|
7177
|
+
let E2 = ov(), ie2 = d_(E2), ae2 = (e6, t3) => {
|
|
7143
7178
|
e6.setAttribute("stroke", ie2.ring.stroke), e6.setAttribute("stroke-opacity", String(ie2.ring.opacity)), e6.setAttribute("stroke-width", t3);
|
|
7144
7179
|
};
|
|
7145
7180
|
ae2(re2, "0.5");
|
|
7146
7181
|
let oe2 = X("circle");
|
|
7147
|
-
oe2.setAttribute("cx", "250"), oe2.setAttribute("cy", "250"), oe2.setAttribute("r", String(
|
|
7182
|
+
oe2.setAttribute("cx", "250"), oe2.setAttribute("cy", "250"), oe2.setAttribute("r", String(K_)), oe2.style.fill = "var(--surface, #f2f1ea)", ae2(oe2, "0.6"), oe2.setAttribute("pointer-events", "none"), S2.appendChild(oe2);
|
|
7148
7183
|
let se2 = X("circle");
|
|
7149
|
-
se2.setAttribute("cx", "250"), se2.setAttribute("cy", "250"), se2.setAttribute("r", String(
|
|
7184
|
+
se2.setAttribute("cx", "250"), se2.setAttribute("cy", "250"), se2.setAttribute("r", String(q_)), se2.style.fill = "var(--bg, #faf9f5)", ae2(se2, "0.6"), se2.setAttribute("pointer-events", "none"), S2.appendChild(se2);
|
|
7150
7185
|
let ce2 = Array.from({ length: 12 }, (e6, t3) => u_(t3, E2));
|
|
7151
7186
|
for (let e6 = 0; e6 < 12; e6++) {
|
|
7152
|
-
let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3,
|
|
7153
|
-
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(
|
|
7154
|
-
let { x: c3, y: l3 } = Y(t3,
|
|
7187
|
+
let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, K_, y2), i3 = Y(n3, K_, y2), a3 = Y(t3, q_, y2), o3 = Y(n3, q_, y2), s3 = X("path");
|
|
7188
|
+
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(K_, " ").concat(K_, " 0 0 0 ").concat(i3.x.toFixed(1), " ").concat(i3.y.toFixed(1)), "L ".concat(o3.x.toFixed(1), " ").concat(o3.y.toFixed(1)), "A ".concat(q_, " ").concat(q_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", ce2[e6]), s3.setAttribute("pointer-events", "none"), b2.appendChild(s3);
|
|
7189
|
+
let { x: c3, y: l3 } = Y(t3, q_, y2), { x: u3, y: d3 } = Y(t3, K_, y2), f3 = X("line");
|
|
7155
7190
|
f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), ae2(f3, "0.5"), f3.setAttribute("pointer-events", "none"), S2.appendChild(f3);
|
|
7156
7191
|
let { x: p3, y: m3 } = Y(t3 + 15, 444 / 2, y2), h3 = X("text");
|
|
7157
|
-
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", "13"), h3.setAttribute("fill", l_(e6, E2)), h3.setAttribute("pointer-events", "none"), h3.style.fontFamily = a_, h3.textContent =
|
|
7192
|
+
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", "13"), h3.setAttribute("fill", l_(e6, E2)), h3.setAttribute("pointer-events", "none"), h3.style.fontFamily = a_, h3.textContent = nv[e6], S2.appendChild(h3);
|
|
7158
7193
|
for (let e7 = 1; e7 < 30; e7++) {
|
|
7159
|
-
let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ?
|
|
7194
|
+
let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ? K_ - 7 : K_ - 3, { x: a4, y: o4 } = Y(n4, K_, y2), { x: s4, y: c4 } = Y(n4, i4, y2), l4 = X("line");
|
|
7160
7195
|
l4.setAttribute("x1", a4.toFixed(1)), l4.setAttribute("y1", o4.toFixed(1)), l4.setAttribute("x2", s4.toFixed(1)), l4.setAttribute("y2", c4.toFixed(1));
|
|
7161
7196
|
let u4 = r4 ? ie2.tickMajor : ie2.tickMinor;
|
|
7162
7197
|
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"), S2.appendChild(l4);
|
|
@@ -7165,50 +7200,50 @@ function Hv(e5, t2, n2, r2, i2, a2, o2) {
|
|
|
7165
7200
|
let le2 = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
|
|
7166
7201
|
for (let e6 = 0; e6 < 12; e6++) {
|
|
7167
7202
|
var ue2, de2;
|
|
7168
|
-
let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3,
|
|
7169
|
-
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(
|
|
7170
|
-
let c3 = Z(
|
|
7171
|
-
s3.addEventListener("mouseenter", (t4) =>
|
|
7172
|
-
|
|
7203
|
+
let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, K_, y2), i3 = Y(n3, K_, y2), a3 = Y(t3, q_, y2), o3 = Y(n3, q_, y2), s3 = X("path");
|
|
7204
|
+
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(K_, " ").concat(K_, " 0 0 0 ").concat(i3.x.toFixed(1), " ").concat(i3.y.toFixed(1)), "L ".concat(o3.x.toFixed(1), " ").concat(o3.y.toFixed(1)), "A ".concat(q_, " ").concat(q_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", "transparent"), s3.setAttribute("class", "hit-region sign-hit"), s3.style.pointerEvents = "all", uy(s3, "".concat(rv[e6], " \u2014 click for sign info"));
|
|
7205
|
+
let c3 = Z(Ov[e6]), l3 = Z(kv[e6]), u3 = (ue2 = le2[rv[e6]]) == null ? "" : ue2, d3 = (de2 = Sv[rv[e6]]) == null ? "" : de2, f3 = "".concat(d3 ? d3 + " \xB7 " : "").concat(c3, " \xB7 ").concat(l3).concat(u3 ? " \xB7 Ruled by ".concat(u3) : "");
|
|
7206
|
+
s3.addEventListener("mouseenter", (t4) => vv(t4.clientX, t4.clientY, "".concat(nv[e6], " ").concat(rv[e6]), f3, "Click for sign detail")), s3.addEventListener("mousemove", (t4) => vv(t4.clientX, t4.clientY, "".concat(nv[e6], " ").concat(rv[e6]), f3, "Click for sign detail")), s3.addEventListener("mouseleave", yv), s3.addEventListener("click", (t4) => {
|
|
7207
|
+
yv(), Lv == null || Lv("".concat(nv[e6], " ").concat(rv[e6])), Gv(t4, e6, _2);
|
|
7173
7208
|
}), ne2.appendChild(s3);
|
|
7174
7209
|
}
|
|
7175
7210
|
let fe2 = X("circle");
|
|
7176
|
-
fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(
|
|
7211
|
+
fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(q_)), fe2.style.fill = "var(--surface, #f2f1ea)", fe2.setAttribute("pointer-events", "none"), C2.appendChild(fe2);
|
|
7177
7212
|
let pe2 = X("circle");
|
|
7178
|
-
if (pe2.setAttribute("cx", "250"), pe2.setAttribute("cy", "250"), pe2.setAttribute("r", String(
|
|
7213
|
+
if (pe2.setAttribute("cx", "250"), pe2.setAttribute("cy", "250"), pe2.setAttribute("r", String(X_)), pe2.style.fill = ie2.center, ae2(pe2, "0.6"), pe2.setAttribute("pointer-events", "none"), C2.appendChild(pe2), v2.length > 0) for (let e6 = 0; e6 < v2.length; e6++) {
|
|
7179
7214
|
let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], r3 = [1, 4, 7, 10].includes(t3.number), i3 = X("path");
|
|
7180
|
-
i3.setAttribute("d",
|
|
7181
|
-
let { x: a3, y: o3 } = Y(t3.cusp_lon,
|
|
7215
|
+
i3.setAttribute("d", ev(t3.cusp_lon, n3.cusp_lon, X_, q_, y2)), i3.setAttribute("fill", l_(Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), E2)), i3.setAttribute("fill-opacity", String(c_(E2).houseFillOpacity)), i3.setAttribute("pointer-events", "none"), C2.appendChild(i3);
|
|
7216
|
+
let { x: a3, y: o3 } = Y(t3.cusp_lon, X_, y2), { x: s3, y: c3 } = Y(t3.cusp_lon, q_, y2), l3 = X("line");
|
|
7182
7217
|
l3.setAttribute("x1", a3.toFixed(1)), l3.setAttribute("y1", o3.toFixed(1)), l3.setAttribute("x2", s3.toFixed(1)), l3.setAttribute("y2", c3.toFixed(1));
|
|
7183
7218
|
let u3 = r3 ? ie2.cuspAngular : ie2.cuspIntermediate;
|
|
7184
7219
|
l3.setAttribute("stroke", u3.stroke), l3.setAttribute("stroke-opacity", String(u3.opacity)), l3.setAttribute("stroke-width", r3 ? "1.6" : "0.8"), r3 || l3.setAttribute("stroke-dasharray", ie2.cuspDash(0.8)), l3.setAttribute("pointer-events", "none"), C2.appendChild(l3);
|
|
7185
|
-
let d3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: f3, y: p3 } = Y(t3.cusp_lon + d3 / 2,
|
|
7220
|
+
let d3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: f3, y: p3 } = Y(t3.cusp_lon + d3 / 2, Y_, y2), m3 = X("text");
|
|
7186
7221
|
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("font-weight", r3 ? "700" : "600"), m3.setAttribute("fill", c_(E2).foreground), m3.setAttribute("opacity", "0.9"), m3.setAttribute("pointer-events", "none"), m3.textContent = String(t3.number), C2.appendChild(m3);
|
|
7187
7222
|
}
|
|
7188
7223
|
let me2 = v2.find((e6) => e6.number === 1), he2 = v2.find((e6) => e6.number === 4), ge2 = v2.find((e6) => e6.number === 7), _e2 = v2.find((e6) => e6.number === 10), ve2 = [{ lon: (f2 = me2 == null ? void 0 : me2.cusp_lon) == null ? y2 : f2, label: "ASC" }, { lon: (p2 = ge2 == null ? void 0 : ge2.cusp_lon) == null ? (y2 + 180) % 360 : p2, label: "DSC" }, { lon: (m2 = _e2 == null ? void 0 : _e2.cusp_lon) == null ? (y2 + 270) % 360 : m2, label: "MC" }, { lon: (h2 = he2 == null ? void 0 : he2.cusp_lon) == null ? (y2 + 90) % 360 : h2, label: "IC" }];
|
|
7189
7224
|
for (let e6 of ve2) {
|
|
7190
7225
|
var ye2, be2;
|
|
7191
|
-
let t3 =
|
|
7226
|
+
let t3 = Kv[e6.label], { x: n3, y: r3 } = Y(e6.lon, 256, y2);
|
|
7192
7227
|
n3 = Math.min(Math.max(n3, 14), 486), r3 = Math.min(Math.max(r3, 10), 490);
|
|
7193
7228
|
let i3 = X("text");
|
|
7194
7229
|
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", "11"), i3.setAttribute("font-weight", "700"), i3.setAttribute("fill", c_(E2).foreground), i3.setAttribute("pointer-events", "none"), i3.setAttribute("class", "angle-label angle-".concat(e6.label.toLowerCase())), i3.style.transition = "opacity 150ms ease", i3.textContent = e6.label, C2.appendChild(i3);
|
|
7195
7230
|
let a3 = X("circle");
|
|
7196
|
-
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",
|
|
7197
|
-
let o3 = (be2 = t3 == null ? void 0 : t3.keyword) == null ? "" : be2, s3 =
|
|
7231
|
+
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", uy(a3, "".concat((ye2 = t3 == null ? void 0 : t3.title) == null ? e6.label : ye2, " \u2014 click for interpretation"));
|
|
7232
|
+
let o3 = (be2 = t3 == null ? void 0 : t3.keyword) == null ? "" : be2, s3 = fv(e6.lon), c3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(s3);
|
|
7198
7233
|
a3.addEventListener("mouseenter", (n4) => {
|
|
7199
7234
|
var r4;
|
|
7200
|
-
|
|
7235
|
+
vv(n4.clientX, n4.clientY, "".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4), c3, "Click for interpretation"), Zv(e6.lon), i3.style.opacity = "0.6";
|
|
7201
7236
|
}), a3.addEventListener("mouseleave", () => {
|
|
7202
|
-
|
|
7237
|
+
yv(), Qv(), i3.style.opacity = "";
|
|
7203
7238
|
}), a3.addEventListener("click", (n4) => {
|
|
7204
7239
|
var r4;
|
|
7205
|
-
|
|
7240
|
+
yv(), Zv(e6.lon, true), ty(), Lv == null || Lv("".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4, " \xB7 ").concat(s3)), qv(n4, e6.label, e6.lon);
|
|
7206
7241
|
}), ne2.appendChild(a3);
|
|
7207
7242
|
}
|
|
7208
7243
|
{
|
|
7209
7244
|
let e6 = X("g");
|
|
7210
7245
|
e6.setAttribute("pointer-events", "none");
|
|
7211
|
-
let t3 =
|
|
7246
|
+
let t3 = W_ - 50, n3 = G_ - 50;
|
|
7212
7247
|
e6.setAttribute("transform", "translate(".concat(t3, ",").concat(n3, ") scale(").concat(0.5813953488372093.toFixed(4), ") translate(-69,-110)")), e6.setAttribute("opacity", E2 ? "0.08" : "0.05");
|
|
7213
7248
|
let r3 = X("path");
|
|
7214
7249
|
r3.setAttribute("fill", c_(E2).foreground), r3.setAttribute("d", "M225.711945,199.983551 C225.292816,213.680542 221.995255,226.061340 214.416275,237.110443 C193.610641,267.442230 154.827423,271.316071 127.459396,255.072189 C123.775551,252.885712 120.882744,252.441498 116.873688,254.137070 C109.048920,257.446503 100.934502,259.899628 92.190125,259.379364 C83.542915,258.864868 78.616745,253.946121 78.684906,245.377151 C78.745262,237.789108 81.850891,231.152817 85.454010,224.735641 C88.304489,219.658905 91.245934,214.612274 95.084061,210.184647 C97.704369,207.161865 98.745560,203.844788 98.740883,199.721481 C98.699577,163.227264 125.082115,136.164413 161.509293,135.193466 C165.322968,135.092 169.315643,134.951 172.935333,135.916 C178.310226,137.349 182.595856,135.650 187.146591,133.280 C195.742508,128.804 204.726822,125.462 214.488632,124.281 C227.834183,122.666 234.932129,130.259 231.851456,143.429 C230.052628,151.119 226.752274,158.212 222.361359,164.760 C220.327988,167.792 220.017624,170.616 221.473969,174.100 C224.861847,182.205 225.468460,190.867 225.711945,199.983551 M212.976044,168.510834 C218.716415,160.882339 223.731537,152.880203 226.146439,143.492218 C228.308197,135.088409 225.333649,129.095078 217.846207,128.560104 C206.177933,127.726410 196.082672,132.729645 185.171341,138.349640 C187.816025,139.540573 189.463272,140.263855 191.095154,141.020279 C200.031250,145.162369 207.546783,151.055435 213.272079,159.124069 C214.113724,160.310181 215.663269,161.586777 214.829697,163.091461 C211.652573,168.826584 208.025726,174.252899 202.566681,179.006516 C201.549835,176.444733 200.923126,174.750778 200.212067,173.093002 C195.433319,161.951874 188.776291,152.487198 177.473648,146.963547 C174.609192,145.563675 172.292969,145.608887 169.595505,147.317566 C152.514618,158.137161 136.926010,170.829269 122.270142,184.706512 C120.686935,186.205612 119.364059,187.876480 119.190598,190.236053 C118.688568,197.065308 118.869385,203.864960 119.793037,210.651215 C121.255951,221.399521 126.239235,230.774902 131.349335,240.326111 C132.993088,240.252151 134.400635,239.345810 135.765091,238.453430 C144.400665,232.805634 153.133560,227.309341 161.286926,220.942139 C164.075363,218.764557 165.766891,216.649643 165.788437,212.774612 C165.823334,206.491791 170.826294,202.743942 176.973877,204.085724 C179.390350,204.613144 181.027267,204.346497 182.788132,202.634048 C193.536697,192.180939 204.343719,181.790634 212.976044,168.510834 M196.311264,238.774429 C205.223999,223.519989 207.059082,207.185013 204.308746,188.929276 C197.720764,194.995590 193.078613,201.379272 186.899475,206.146912 C184.795013,207.770645 183.863800,209.506882 184.135178,212.471619 C184.705627,218.704117 179.426636,223.881546 173.582184,222.584213 C169.742706,221.731949 167.311813,222.850525 164.693726,225.165817 C162.585052,227.030579 160.129227,228.496109 157.916992,230.251648 C151.305984,235.497787 144.002090,239.748337 136.880554,244.346085 C150.810440,260.746155 181.289062,262.140137 196.311264,238.774429 M101.954178,222.323334 C101.003220,218.898468 100.052269,215.473602 98.901512,211.329163 C91.673454,221.459351 85.061653,230.979462 83.800476,243.065674 C83.190475,248.911530 86.140854,252.991577 91.843674,253.598953 C100.879066,254.561295 109.050667,251.508087 117.776840,247.739761 C110.183830,240.480621 105.126755,232.419739 101.954178,222.323334 M129.303619,173.800827 C141.200867,163.092194 153.936737,153.435806 167.699600,144.113556 C142.265121,138.861908 122.832809,158.201233 120.741943,181.434265 C123.701614,178.779602 126.227280,176.514221 129.303619,173.800827 z"), e6.appendChild(r3), x2.appendChild(e6);
|
|
@@ -7217,9 +7252,9 @@ function Hv(e5, t2, n2, r2, i2, a2, o2) {
|
|
|
7217
7252
|
var xe2, D2, Se2, O2, Ce2, we2, Te2, Ee2, De2, Oe2, ke2, Ae2, je2, Me2, Ne2, Pe2, Fe2, Ie2, Le2;
|
|
7218
7253
|
let t3 = _2.find((t4) => t4.name.toLowerCase() === e6.planet1.toLowerCase()), n3 = _2.find((t4) => t4.name.toLowerCase() === e6.planet2.toLowerCase());
|
|
7219
7254
|
if (!t3 || !n3) continue;
|
|
7220
|
-
let r3 = (xe2 =
|
|
7255
|
+
let r3 = (xe2 = av((D2 = e6.type) == null ? "" : D2)) == null ? "#aaa" : xe2, { x: a3, y: o3 } = Y(t3.longitude, Z_, y2), { x: s3, y: c3 } = Y(n3.longitude, Z_, y2), l3 = Math.min((Se2 = e6.orb) == null ? 10 : Se2, 10), u3 = 0.95 - l3 / 10 * 0.55, d3 = X("line");
|
|
7221
7256
|
d3.setAttribute("x1", a3.toFixed(1)), d3.setAttribute("y1", o3.toFixed(1)), d3.setAttribute("x2", s3.toFixed(1)), d3.setAttribute("y2", c3.toFixed(1)), d3.setAttribute("pointer-events", "none"), d3.style.stroke = r3, d3.style.strokeOpacity = String(u3), d3.style.strokeWidth = l3 < 2 ? "1.6" : "1.1", w2.appendChild(d3);
|
|
7222
|
-
let f3 = (O2 =
|
|
7257
|
+
let f3 = (O2 = iv[(Ce2 = (we2 = e6.type) == null ? void 0 : we2.toLowerCase()) == null ? "" : Ce2]) == null ? "" : O2, p3 = a3 + (s3 - a3) * 0.35, m3 = o3 + (c3 - o3) * 0.35, h3 = [];
|
|
7223
7258
|
if (f3 && Math.hypot(s3 - a3, c3 - o3) > 36) {
|
|
7224
7259
|
let e7 = X("circle");
|
|
7225
7260
|
e7.setAttribute("cx", p3.toFixed(1)), e7.setAttribute("cy", m3.toFixed(1)), e7.setAttribute("r", "9"), e7.setAttribute("fill", ie2.center), e7.setAttribute("stroke", r3), e7.setAttribute("stroke-opacity", "0.9"), e7.setAttribute("stroke-width", "1"), e7.setAttribute("pointer-events", "none"), w2.appendChild(e7), h3.push(e7);
|
|
@@ -7227,31 +7262,31 @@ function Hv(e5, t2, n2, r2, i2, a2, o2) {
|
|
|
7227
7262
|
t4.setAttribute("x", p3.toFixed(1)), t4.setAttribute("y", m3.toFixed(1)), t4.setAttribute("text-anchor", "middle"), t4.setAttribute("dominant-baseline", "central"), t4.setAttribute("font-size", "11"), t4.setAttribute("font-weight", "700"), t4.setAttribute("fill", r3), t4.setAttribute("fill-opacity", "1"), t4.setAttribute("pointer-events", "none"), t4.textContent = f3, w2.appendChild(t4), h3.push(t4);
|
|
7228
7263
|
}
|
|
7229
7264
|
let g3 = X("line");
|
|
7230
|
-
g3.setAttribute("x1", a3.toFixed(1)), g3.setAttribute("y1", o3.toFixed(1)), g3.setAttribute("x2", s3.toFixed(1)), g3.setAttribute("y2", c3.toFixed(1)), g3.setAttribute("stroke", "transparent"), g3.setAttribute("stroke-width", "13"), g3.setAttribute("fill", "none"), g3.setAttribute("class", "hit-region aspect-hit"), g3.style.pointerEvents = "all",
|
|
7231
|
-
let v3 = (Ee2 =
|
|
7265
|
+
g3.setAttribute("x1", a3.toFixed(1)), g3.setAttribute("y1", o3.toFixed(1)), g3.setAttribute("x2", s3.toFixed(1)), g3.setAttribute("y2", c3.toFixed(1)), g3.setAttribute("stroke", "transparent"), g3.setAttribute("stroke-width", "13"), g3.setAttribute("fill", "none"), g3.setAttribute("class", "hit-region aspect-hit"), g3.style.pointerEvents = "all", uy(g3, "Aspect: ".concat((Te2 = e6.type) == null ? "Aspect" : Te2, " between ").concat(t3.name, " and ").concat(n3.name));
|
|
7266
|
+
let v3 = (Ee2 = tv[t3.name.toLowerCase()]) == null ? t3.name : Ee2, ee3 = (De2 = tv[n3.name.toLowerCase()]) == null ? n3.name : De2, b3 = (Oe2 = (ke2 = iv[(Ae2 = (je2 = e6.type) == null ? void 0 : je2.toLowerCase()) == null ? "" : Ae2]) == null ? e6.type : ke2) == null ? "" : Oe2, x3 = (Me2 = Cv[(Ne2 = (Pe2 = e6.type) == null ? void 0 : Pe2.toLowerCase()) == null ? "" : Ne2]) == null ? "" : Me2, S3 = "".concat(x3 ? x3 + " \xB7 " : "").concat(v3, " ").concat(b3, " ").concat(ee3, " \xB7 ").concat((Fe2 = (Ie2 = e6.orb) == null ? void 0 : Ie2.toFixed(1)) == null ? "?" : Fe2, "\xB0 orb").concat(e6.applying === true ? " (applying)" : e6.applying === false ? " (separating)" : "");
|
|
7232
7267
|
g3.addEventListener("mouseenter", (t4) => {
|
|
7233
7268
|
var n4;
|
|
7234
|
-
return
|
|
7269
|
+
return vv(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
|
|
7235
7270
|
}), g3.addEventListener("mousemove", (t4) => {
|
|
7236
7271
|
var n4;
|
|
7237
|
-
return
|
|
7238
|
-
}), g3.addEventListener("mouseleave",
|
|
7272
|
+
return vv(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
|
|
7273
|
+
}), g3.addEventListener("mouseleave", yv), g3.addEventListener("click", (t4) => {
|
|
7239
7274
|
var n4, r4, a4, o4, s4, c4;
|
|
7240
|
-
|
|
7241
|
-
let l4 = "".concat((n4 =
|
|
7242
|
-
|
|
7275
|
+
yv();
|
|
7276
|
+
let l4 = "".concat((n4 = iv[(r4 = (a4 = e6.type) == null ? void 0 : a4.toLowerCase()) == null ? "" : r4]) == null ? "" : n4, " ").concat(Z((o4 = e6.type) == null ? "Aspect" : o4), ": ").concat((s4 = tv[e6.planet1.toLowerCase()]) == null ? e6.planet1 : s4, " ").concat((c4 = tv[e6.planet2.toLowerCase()]) == null ? e6.planet2 : c4);
|
|
7277
|
+
Lv == null || Lv(l4), Hv(t4, e6, _2), i2(e6);
|
|
7243
7278
|
});
|
|
7244
7279
|
let C3 = [e6.planet1.toLowerCase(), e6.planet2.toLowerCase()].sort().join("|"), te3 = ((Le2 = e6.type) == null ? "unknown" : Le2).toLowerCase();
|
|
7245
|
-
|
|
7280
|
+
zv.set(C3, { vis: d3, color: r3, baseOpacity: String(u3), baseWidth: l3 < 2 ? "1.6" : "1.1", aspectType: te3, orb: l3, symbolEls: h3 }), ne2.appendChild(g3);
|
|
7246
7281
|
}
|
|
7247
|
-
let Re2 = _2.filter((e6) => !
|
|
7282
|
+
let Re2 = _2.filter((e6) => !uv.has(e6.name.toLowerCase())), k2 = _2.filter((e6) => uv.has(e6.name.toLowerCase())), ze2 = __(Re2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 8), Be2 = __(k2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 6), Ve2 = new Map([...ze2.entries(), ...Be2.entries()]);
|
|
7248
7283
|
for (let e6 of _2) {
|
|
7249
7284
|
var He2, Ue2, We2, Ge2;
|
|
7250
|
-
let t3 = (He2 =
|
|
7251
|
-
|
|
7252
|
-
let r3 = e6.name.toLowerCase(), i3 =
|
|
7285
|
+
let t3 = (He2 = tv[e6.name.toLowerCase()]) == null ? "\u2605" : He2;
|
|
7286
|
+
cv(e6.name);
|
|
7287
|
+
let r3 = e6.name.toLowerCase(), i3 = uv.has(r3), a3 = i3 ? J_ - 14 : J_, o3 = i3 ? J_ - 28 : J_ - 17, s3 = i3 ? J_ : 204, c3 = i3 ? "14" : "21", l3 = i3 ? "500" : "600", u3 = i3 ? Q_ - 2 : Q_, d3 = i3 ? "0.65" : "1", f3 = (Ue2 = Ve2.get(r3)) == null ? e6.longitude : Ue2, { x: p3, y: m3 } = Y(f3, a3, y2), h3 = X("g");
|
|
7253
7288
|
h3.setAttribute("class", "planet-glyph-group".concat(i3 ? " extended-body" : "")), h3.dataset.planet = r3, h3.style.transition = "opacity 200ms ease", h3.style.opacity = d3, te2.appendChild(h3);
|
|
7254
|
-
let { x: g3, y: _3 } = Y(e6.longitude,
|
|
7289
|
+
let { x: g3, y: _3 } = Y(e6.longitude, q_ - 5, y2), v3 = X("circle");
|
|
7255
7290
|
if (v3.setAttribute("cx", g3.toFixed(1)), v3.setAttribute("cy", _3.toFixed(1)), v3.setAttribute("r", i3 ? "1.8" : "2.5"), v3.setAttribute("fill", c_(E2).house), v3.setAttribute("opacity", "0.65"), v3.setAttribute("pointer-events", "none"), h3.appendChild(v3), x_(e6.longitude, f3) > 2) {
|
|
7256
7291
|
let e7 = X("line");
|
|
7257
7292
|
e7.setAttribute("x1", g3.toFixed(1)), e7.setAttribute("y1", _3.toFixed(1)), e7.setAttribute("x2", p3.toFixed(1)), e7.setAttribute("y2", m3.toFixed(1)), e7.setAttribute("stroke", c_(E2).house), e7.setAttribute("stroke-width", "0.7"), e7.setAttribute("stroke-opacity", "0.35"), e7.setAttribute("stroke-linecap", "round"), e7.setAttribute("pointer-events", "none"), h3.appendChild(e7);
|
|
@@ -7264,89 +7299,89 @@ function Hv(e5, t2, n2, r2, i2, a2, o2) {
|
|
|
7264
7299
|
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", i3 ? "6" : "8"), n3.setAttribute("fill", "#e05252"), n3.setAttribute("pointer-events", "none"), n3.textContent = "\u211E", h3.appendChild(n3);
|
|
7265
7300
|
}
|
|
7266
7301
|
let T3 = X("circle");
|
|
7267
|
-
T3.setAttribute("cx", p3.toFixed(1)), T3.setAttribute("cy", m3.toFixed(1)), T3.setAttribute("r", String(u3)), T3.setAttribute("fill", "transparent"), T3.setAttribute("class", "hit-region planet-hit"), T3.dataset.planet = r3, T3.style.pointerEvents = "all",
|
|
7268
|
-
let re3 = (We2 =
|
|
7302
|
+
T3.setAttribute("cx", p3.toFixed(1)), T3.setAttribute("cy", m3.toFixed(1)), T3.setAttribute("r", String(u3)), T3.setAttribute("fill", "transparent"), T3.setAttribute("class", "hit-region planet-hit"), T3.dataset.planet = r3, T3.style.pointerEvents = "all", uy(T3, "".concat(i3 ? "Extended body" : "Planet", ": ").concat(e6.name));
|
|
7303
|
+
let re3 = (We2 = bv[e6.name.toLowerCase()]) == null ? "" : We2, ie3 = e6.house ? (Ge2 = xv[e6.house]) == null ? "" : Ge2 : "", ae3 = "".concat(re3 ? re3 + " \xB7 " : "").concat(fv(e6.longitude)).concat(e6.house ? " \xB7 H".concat(e6.house).concat(ie3 ? " (" + ie3 + ")" : "") : "").concat(e6.retrograde ? " \u211E" : "");
|
|
7269
7304
|
T3.addEventListener("mouseenter", (n3) => {
|
|
7270
|
-
|
|
7271
|
-
}), T3.addEventListener("mousemove", (n3) =>
|
|
7272
|
-
|
|
7305
|
+
vv(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects"), Zv(e6.longitude);
|
|
7306
|
+
}), T3.addEventListener("mousemove", (n3) => vv(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects")), T3.addEventListener("mouseleave", () => {
|
|
7307
|
+
yv(), Pv !== e6.name.toLowerCase() && Qv();
|
|
7273
7308
|
}), T3.addEventListener("click", (t4) => {
|
|
7274
7309
|
var r4;
|
|
7275
|
-
if (
|
|
7276
|
-
|
|
7310
|
+
if (yv(), Pv === e6.name.toLowerCase()) {
|
|
7311
|
+
ny(), Jv(), Qv(), Lv == null || Lv(null);
|
|
7277
7312
|
return;
|
|
7278
7313
|
}
|
|
7279
|
-
|
|
7280
|
-
let i4 = (r4 =
|
|
7281
|
-
|
|
7314
|
+
Pv = e6.name.toLowerCase();
|
|
7315
|
+
let i4 = (r4 = tv[e6.name.toLowerCase()]) == null ? "" : r4;
|
|
7316
|
+
Lv == null || Lv("".concat(i4, " ").concat(Z(e6.name), " in ").concat(fv(e6.longitude))), Zv(e6.longitude, true), $v(e6.name), Vv(t4, e6, ee2), n2(e6);
|
|
7282
7317
|
}), ne2.appendChild(T3);
|
|
7283
7318
|
}
|
|
7284
7319
|
for (let e6 = 0; e6 < v2.length; e6++) {
|
|
7285
7320
|
var Ke2, qe2, Je2;
|
|
7286
|
-
let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (Ke2 = (qe2 = t3.sign) == null ?
|
|
7287
|
-
f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), f3.setAttribute("stroke", "transparent"), f3.setAttribute("stroke-width", String(
|
|
7288
|
-
|
|
7289
|
-
}), f3.addEventListener("mousemove", (e7) =>
|
|
7290
|
-
|
|
7321
|
+
let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (Ke2 = (qe2 = t3.sign) == null ? rv[i3] : qe2) == null ? "" : Ke2, o3 = (Je2 = xv[t3.number]) == null ? "" : Je2, s3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(fv(t3.cusp_lon), " \xB7 ").concat(a3), { x: c3, y: l3 } = Y(t3.cusp_lon, X_, y2), { x: u3, y: d3 } = Y(t3.cusp_lon, q_, y2), f3 = X("line");
|
|
7322
|
+
f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), f3.setAttribute("stroke", "transparent"), f3.setAttribute("stroke-width", String($_)), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region"), f3.style.pointerEvents = "all", uy(f3, "House ".concat(t3.number, " Cusp")), f3.addEventListener("mouseenter", (e7) => {
|
|
7323
|
+
vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning"), Zv(t3.cusp_lon);
|
|
7324
|
+
}), f3.addEventListener("mousemove", (e7) => vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), f3.addEventListener("mouseleave", () => {
|
|
7325
|
+
yv(), Qv();
|
|
7291
7326
|
}), f3.addEventListener("click", (e7) => {
|
|
7292
7327
|
var n4, i4;
|
|
7293
|
-
|
|
7294
|
-
let a4 = (n4 = (i4 = t3.sign) == null ?
|
|
7295
|
-
|
|
7328
|
+
yv();
|
|
7329
|
+
let a4 = (n4 = (i4 = t3.sign) == null ? rv[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
|
|
7330
|
+
Lv == null || Lv("House ".concat(t3.number, " \xB7 ").concat(a4)), Uv(e7, t3, _2), r2(t3);
|
|
7296
7331
|
}), ne2.appendChild(f3);
|
|
7297
|
-
let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2,
|
|
7298
|
-
g3.setAttribute("cx", m3.toFixed(1)), g3.setAttribute("cy", h3.toFixed(1)), g3.setAttribute("r", "14"), g3.setAttribute("fill", "transparent"), g3.setAttribute("class", "hit-region"), g3.style.pointerEvents = "all",
|
|
7299
|
-
|
|
7332
|
+
let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2, Y_, y2), g3 = X("circle");
|
|
7333
|
+
g3.setAttribute("cx", m3.toFixed(1)), g3.setAttribute("cy", h3.toFixed(1)), g3.setAttribute("r", "14"), g3.setAttribute("fill", "transparent"), g3.setAttribute("class", "hit-region"), g3.style.pointerEvents = "all", uy(g3, "House ".concat(t3.number, " Area")), g3.addEventListener("mouseenter", (e7) => vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mousemove", (e7) => vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mouseleave", () => {
|
|
7334
|
+
yv();
|
|
7300
7335
|
}), g3.addEventListener("click", (e7) => {
|
|
7301
7336
|
var n4, i4;
|
|
7302
|
-
|
|
7303
|
-
let a4 = (n4 = (i4 = t3.sign) == null ?
|
|
7304
|
-
|
|
7337
|
+
yv();
|
|
7338
|
+
let a4 = (n4 = (i4 = t3.sign) == null ? rv[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
|
|
7339
|
+
Lv == null || Lv("House ".concat(t3.number, " \xB7 ").concat(a4)), Uv(e7, t3, _2), r2(t3);
|
|
7305
7340
|
}), ne2.appendChild(g3);
|
|
7306
7341
|
}
|
|
7307
|
-
|
|
7342
|
+
Fv && document.removeEventListener("click", Fv, false), Fv = (e6) => {
|
|
7308
7343
|
let t3 = e6.target;
|
|
7309
|
-
t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (
|
|
7310
|
-
}, document.addEventListener("click",
|
|
7344
|
+
t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (ny(), Jv());
|
|
7345
|
+
}, document.addEventListener("click", Fv, false);
|
|
7311
7346
|
}
|
|
7312
|
-
function
|
|
7347
|
+
function uy(e5, t2) {
|
|
7313
7348
|
e5 && (e5.setAttribute("tabindex", "0"), e5.setAttribute("role", "button"), e5.setAttribute("aria-label", t2), e5.addEventListener("keydown", (t3) => {
|
|
7314
7349
|
let n2 = t3;
|
|
7315
7350
|
(n2.key === "Enter" || n2.key === " ") && (n2.preventDefault(), e5.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true })));
|
|
7316
7351
|
}));
|
|
7317
7352
|
}
|
|
7318
|
-
var
|
|
7319
|
-
function
|
|
7353
|
+
var dy = [{ label: "Placidus", value: "placidus" }, { label: "Whole Sign", value: "whole_sign" }, { label: "Equal", value: "equal" }, { label: "Koch", value: "koch" }, { label: "Regio.", value: "regiomontanus" }];
|
|
7354
|
+
function fy(e5, t2, n2) {
|
|
7320
7355
|
e5.innerHTML = "";
|
|
7321
7356
|
let r2 = document.createElement("span");
|
|
7322
7357
|
r2.className = "controls-label", r2.textContent = "Houses:", e5.appendChild(r2);
|
|
7323
|
-
for (let r3 of
|
|
7358
|
+
for (let r3 of dy) {
|
|
7324
7359
|
let i2 = document.createElement("button");
|
|
7325
7360
|
i2.className = "control-btn" + (r3.value === t2 ? " active" : ""), i2.textContent = r3.label, i2.title = "Switch to ".concat(r3.label, " house system"), i2.setAttribute("data-system", r3.value), i2.addEventListener("click", () => {
|
|
7326
7361
|
e5.querySelectorAll(".control-btn").forEach((e6) => e6.classList.remove("active")), i2.classList.add("active"), i2.disabled = true, i2.textContent = "".concat(r3.label, " \u2026"), n2(r3.value);
|
|
7327
7362
|
}), e5.appendChild(i2);
|
|
7328
7363
|
}
|
|
7329
7364
|
}
|
|
7330
|
-
function
|
|
7365
|
+
function py(e5, t2) {
|
|
7331
7366
|
e5.querySelectorAll(".control-btn").forEach((e6) => {
|
|
7332
7367
|
var n2;
|
|
7333
7368
|
let r2 = e6.getAttribute("data-system");
|
|
7334
7369
|
e6.disabled = false;
|
|
7335
|
-
let i2 =
|
|
7370
|
+
let i2 = dy.find((e7) => e7.value === r2);
|
|
7336
7371
|
e6.textContent = (n2 = i2 == null ? void 0 : i2.label) == null ? r2 : n2, e6.classList.toggle("active", r2 === t2);
|
|
7337
7372
|
});
|
|
7338
7373
|
}
|
|
7339
|
-
function
|
|
7374
|
+
function my(e5) {
|
|
7340
7375
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
7341
7376
|
}
|
|
7342
|
-
function
|
|
7377
|
+
function hy(e5) {
|
|
7343
7378
|
return e5.replace(/_/g, " ").replace(/\b\w/g, (e6) => e6.toUpperCase());
|
|
7344
7379
|
}
|
|
7345
|
-
function
|
|
7346
|
-
let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(
|
|
7380
|
+
function gy(e5) {
|
|
7381
|
+
let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(my(e6.title), "</span>") + e6.items.map((e7) => '<span class="legend-item"><span class="legend-glyph">'.concat(my(e7.glyph), "</span>").concat(my(e7.label), "</span>")).join("") + "</div>").join("");
|
|
7347
7382
|
return t2 ? '<details class="glyph-legend"><summary><span class="legend-spark">\u2726</span> Legend</summary><div class="legend-body">'.concat(t2, "</div></details>") : "";
|
|
7348
7383
|
}
|
|
7349
|
-
var
|
|
7384
|
+
var _y = class e4 {
|
|
7350
7385
|
constructor(t2) {
|
|
7351
7386
|
var n2, r2, i2, a2, s2, c2;
|
|
7352
7387
|
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();
|
|
@@ -7526,14 +7561,14 @@ var Xv = class e4 {
|
|
|
7526
7561
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7527
7562
|
}
|
|
7528
7563
|
};
|
|
7529
|
-
o(
|
|
7530
|
-
var
|
|
7531
|
-
function
|
|
7564
|
+
o(_y, "comboSeq", 0);
|
|
7565
|
+
var vy = { "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." } }, yy = '\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';
|
|
7566
|
+
function by() {
|
|
7532
7567
|
if (document.getElementById("oe-first-run-styles")) return;
|
|
7533
7568
|
let e5 = document.createElement("style");
|
|
7534
|
-
e5.id = "oe-first-run-styles", e5.textContent =
|
|
7569
|
+
e5.id = "oe-first-run-styles", e5.textContent = yy, document.head.appendChild(e5);
|
|
7535
7570
|
}
|
|
7536
|
-
function
|
|
7571
|
+
function xy(e5) {
|
|
7537
7572
|
let t2 = document.activeElement, n2 = document.createElement("div");
|
|
7538
7573
|
n2.className = "oe-welcome-backdrop";
|
|
7539
7574
|
let r2 = document.createElement("div");
|
|
@@ -7551,24 +7586,24 @@ function ey(e5) {
|
|
|
7551
7586
|
e6.key === "Escape" && (e6.preventDefault(), o2()), e6.key === "Tab" && (e6.preventDefault(), a2.focus());
|
|
7552
7587
|
}), requestAnimationFrame(() => a2.focus()), n2;
|
|
7553
7588
|
}
|
|
7554
|
-
function
|
|
7555
|
-
|
|
7556
|
-
let t2 =
|
|
7589
|
+
function Sy(e5) {
|
|
7590
|
+
by();
|
|
7591
|
+
let t2 = xy(vy[e5]);
|
|
7557
7592
|
document.body.appendChild(t2);
|
|
7558
7593
|
}
|
|
7559
|
-
var
|
|
7560
|
-
function
|
|
7594
|
+
var Cy = "\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";
|
|
7595
|
+
function wy() {
|
|
7561
7596
|
if (document.getElementById("oe-info-button-styles")) return;
|
|
7562
7597
|
let e5 = document.createElement("style");
|
|
7563
|
-
e5.id = "oe-info-button-styles", e5.textContent =
|
|
7598
|
+
e5.id = "oe-info-button-styles", e5.textContent = Cy, document.head.appendChild(e5);
|
|
7564
7599
|
}
|
|
7565
|
-
function
|
|
7600
|
+
function Ty(e5) {
|
|
7566
7601
|
if (document.getElementById("oe-info-button")) return;
|
|
7567
|
-
|
|
7602
|
+
wy();
|
|
7568
7603
|
let t2 = document.createElement("button");
|
|
7569
|
-
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", () =>
|
|
7604
|
+
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", () => Sy(e5)), document.body.appendChild(t2);
|
|
7570
7605
|
}
|
|
7571
|
-
function
|
|
7606
|
+
function Ey(e5) {
|
|
7572
7607
|
var t2;
|
|
7573
7608
|
if (!e5) return null;
|
|
7574
7609
|
if (e5.structuredContent != null && typeof e5.structuredContent == "object") return e5.structuredContent;
|
|
@@ -7581,10 +7616,10 @@ function ay(e5) {
|
|
|
7581
7616
|
}
|
|
7582
7617
|
return null;
|
|
7583
7618
|
}
|
|
7584
|
-
var
|
|
7585
|
-
function
|
|
7619
|
+
var Dy = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
|
|
7620
|
+
function Oy(e5, t2) {
|
|
7586
7621
|
if (!e5) return null;
|
|
7587
|
-
let n2 =
|
|
7622
|
+
let n2 = Dy.exec(e5.trim());
|
|
7588
7623
|
if (n2) {
|
|
7589
7624
|
let [, e6, t3, r3, i2, a2, o2] = n2, s2 = new Date(Date.UTC(+e6, t3 - 1, +r3, +i2, +a2, o2 ? +o2 : 0));
|
|
7590
7625
|
return isNaN(s2.getTime()) ? null : { date: s2, timeZone: "UTC" };
|
|
@@ -7592,31 +7627,31 @@ function sy(e5, t2) {
|
|
|
7592
7627
|
let r2 = new Date(e5);
|
|
7593
7628
|
return isNaN(r2.getTime()) ? null : { date: r2, timeZone: t2 || "UTC" };
|
|
7594
7629
|
}
|
|
7595
|
-
function
|
|
7630
|
+
function ky(e5) {
|
|
7596
7631
|
var t2;
|
|
7597
7632
|
if (!e5) return "";
|
|
7598
7633
|
let n2 = [], r2 = (t2 = e5.location) == null ? void 0 : t2.trim();
|
|
7599
7634
|
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) {
|
|
7600
|
-
let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ?
|
|
7635
|
+
let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ? Oy(e5.datetime, e5.timezone) : null;
|
|
7601
7636
|
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);
|
|
7602
7637
|
}
|
|
7603
7638
|
return n2.join(" \xB7 ");
|
|
7604
7639
|
}
|
|
7605
|
-
function
|
|
7606
|
-
let r2 =
|
|
7640
|
+
function Ay(e5, t2, n2 = "Chart") {
|
|
7641
|
+
let r2 = ky(t2);
|
|
7607
7642
|
return r2 ? "".concat(n2, ": ").concat(r2, "\n\n").concat(e5) : e5;
|
|
7608
7643
|
}
|
|
7609
|
-
function
|
|
7644
|
+
function jy(e5) {
|
|
7610
7645
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7611
7646
|
}
|
|
7612
|
-
function
|
|
7613
|
-
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(
|
|
7614
|
-
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(
|
|
7647
|
+
function My(e5) {
|
|
7648
|
+
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(jy(i2), "</button>") : "";
|
|
7649
|
+
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(jy(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
|
|
7615
7650
|
var o2;
|
|
7616
7651
|
(o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
|
|
7617
7652
|
}
|
|
7618
7653
|
}
|
|
7619
|
-
function
|
|
7654
|
+
function Ny(e5, t2, n2 = []) {
|
|
7620
7655
|
var r2, i2;
|
|
7621
7656
|
if (!t2 || t2.querySelector("#btn-fullscreen")) return;
|
|
7622
7657
|
let a2 = document.createElement("button");
|
|
@@ -7699,14 +7734,14 @@ function fy(e5, t2, n2 = []) {
|
|
|
7699
7734
|
}, 4e3);
|
|
7700
7735
|
}
|
|
7701
7736
|
}
|
|
7702
|
-
function
|
|
7737
|
+
function Py(e5, t2) {
|
|
7703
7738
|
e5.ontoolcancelled = (e6) => {
|
|
7704
7739
|
var n2, r2, i2;
|
|
7705
7740
|
let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
|
|
7706
|
-
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),
|
|
7741
|
+
console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false), Fy(a2);
|
|
7707
7742
|
};
|
|
7708
7743
|
}
|
|
7709
|
-
function
|
|
7744
|
+
function Fy(e5) {
|
|
7710
7745
|
var t2;
|
|
7711
7746
|
(t2 = document.getElementById("cancel-toast")) == null || t2.remove();
|
|
7712
7747
|
let n2 = document.createElement("div");
|
|
@@ -7714,7 +7749,7 @@ function my(e5) {
|
|
|
7714
7749
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7715
7750
|
}, 3e3);
|
|
7716
7751
|
}
|
|
7717
|
-
function
|
|
7752
|
+
function Iy(e5) {
|
|
7718
7753
|
var t2;
|
|
7719
7754
|
function n2(e6) {
|
|
7720
7755
|
if (!e6) return;
|
|
@@ -7727,48 +7762,48 @@ function hy(e5) {
|
|
|
7727
7762
|
n2(e6);
|
|
7728
7763
|
});
|
|
7729
7764
|
}
|
|
7730
|
-
var
|
|
7765
|
+
var Ly = document.getElementById("loading-state"), Ry = document.getElementById("chart-container"), zy = document.getElementById("chart-info"), By = document.getElementById("chart-status"), Vy = document.getElementById("controls-panel"), Hy = document.getElementById("patterns-strip"), Uy = document.getElementById("aspect-filter"), Wy = document.getElementById("overview-table"), Gy = document.getElementById("param-controls-container"), Ky = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, qy = "placidus", Jy = null;
|
|
7731
7766
|
h_(() => {
|
|
7732
|
-
$ &&
|
|
7767
|
+
$ && Qy($);
|
|
7733
7768
|
});
|
|
7734
|
-
var
|
|
7735
|
-
function
|
|
7736
|
-
|
|
7769
|
+
var Yy = false, Xy = false;
|
|
7770
|
+
function Zy(e5) {
|
|
7771
|
+
By && (e5 ? (By.textContent = "\xB7 ".concat(e5), By.setAttribute("data-active", "")) : (By.textContent = "", By.removeAttribute("data-active")));
|
|
7737
7772
|
}
|
|
7738
|
-
|
|
7773
|
+
Ky.ontoolresult = (e5) => {
|
|
7739
7774
|
var t2;
|
|
7740
|
-
let n2 =
|
|
7741
|
-
if (
|
|
7742
|
-
console.error("[ChartWheel] \u274C No chart data found in tool result"),
|
|
7775
|
+
let n2 = Ey(e5);
|
|
7776
|
+
if (Sb(), !n2 || !n2.planets) {
|
|
7777
|
+
console.error("[ChartWheel] \u274C No chart data found in tool result"), Cb("Chart data could not be parsed from the server response.", wb);
|
|
7743
7778
|
return;
|
|
7744
7779
|
}
|
|
7745
|
-
if ($ = n2,
|
|
7780
|
+
if ($ = n2, qy = (t2 = n2.house_system) == null ? "placidus" : t2, !Jy) {
|
|
7746
7781
|
var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
|
|
7747
7782
|
let e6 = (r2 = n2._birth_params) == null ? {} : r2, t3 = (i2 = (a2 = (o2 = e6.datetime) == null ? n2.datetime : o2) == null ? n2.birth_datetime : a2) == null ? "" : i2, p2 = (s2 = (c2 = e6.location) == null ? n2.location : c2) == null ? "" : s2, m2 = (l2 = (u2 = e6.timezone) == null ? n2.timezone : u2) == null ? "" : l2, h2 = (d2 = e6.latitude) == null ? n2.latitude : d2, g2 = (f2 = e6.longitude) == null ? n2.longitude : f2, _2 = "", v2 = "12:00";
|
|
7748
7783
|
if (t3 && t3.includes("T")) {
|
|
7749
7784
|
let e7 = t3.split("T");
|
|
7750
7785
|
_2 = e7[0], v2 = e7[1].substring(0, 5);
|
|
7751
7786
|
}
|
|
7752
|
-
|
|
7753
|
-
|
|
7787
|
+
Jy = new _y({ app: Ky, container: Gy, initialParams: { date: _2, time: v2, locationName: p2, timezone: m2, latitude: typeof h2 == "number" ? h2 : null, longitude: typeof g2 == "number" ? g2 : null }, showStepControls: false, costHint: "~1 credit", onRefresh: async (e7) => {
|
|
7788
|
+
Jy == null || Jy.setBusy(true), Ly.removeAttribute("hidden"), Ry.setAttribute("hidden", "");
|
|
7754
7789
|
try {
|
|
7755
7790
|
var t4, n3, r3, i3;
|
|
7756
|
-
let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o3 = new Promise((e8, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 =
|
|
7757
|
-
s3 ? ($ = s3, s3.house_system && (
|
|
7791
|
+
let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o3 = new Promise((e8, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 = Ey(await Promise.race([Ky.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: "".concat(a3).concat(e7.timezone ? "" : "Z"), latitude: (t4 = e7.latitude) == null ? void 0 : t4, longitude: (n3 = e7.longitude) == null ? void 0 : n3, timezone: (r3 = e7.timezone) == null ? void 0 : r3, location: (i3 = e7.locationName) == null ? void 0 : i3, house_system: qy || "placidus", chart_type: "natal" } }), o3]));
|
|
7792
|
+
s3 ? ($ = s3, s3.house_system && (qy = s3.house_system), Qy(s3)) : $ && (Ly.setAttribute("hidden", ""), Ry.removeAttribute("hidden"));
|
|
7758
7793
|
} catch (e8) {
|
|
7759
|
-
console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (
|
|
7794
|
+
console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (Ly.setAttribute("hidden", ""), Ry.removeAttribute("hidden"));
|
|
7760
7795
|
} finally {
|
|
7761
|
-
|
|
7796
|
+
Jy == null || Jy.setBusy(false);
|
|
7762
7797
|
}
|
|
7763
7798
|
} });
|
|
7764
7799
|
}
|
|
7765
|
-
|
|
7800
|
+
Qy(n2);
|
|
7766
7801
|
};
|
|
7767
|
-
function
|
|
7802
|
+
function Qy(e5) {
|
|
7768
7803
|
var t2, n2, r2, i2, a2, o2, s2;
|
|
7769
|
-
|
|
7770
|
-
let c2 =
|
|
7771
|
-
c2.length > 0 &&
|
|
7804
|
+
ib = null, Ly.setAttribute("hidden", ""), Ry.removeAttribute("hidden"), Gy.removeAttribute("hidden"), Vy.removeAttribute("hidden"), ly(Ry, e5, fb, pb, mb, yb, Xy ? hb() : void 0), Rv(Zy), fy(Vy, qy, bb), eb(e5), Ty("chart-wheel");
|
|
7805
|
+
let c2 = gv(e5.planets), l2 = (n2 = (r2 = (i2 = ((t2 = e5.houses) == null ? [] : t2)[0]) == null ? void 0 : i2.cusp_lon) == null ? e5.ascendant : r2) == null ? 0 : n2, u2 = (a2 = e5.aspects) == null ? [] : a2;
|
|
7806
|
+
c2.length > 0 && nb(c2, u2), ab(Mv(u2, c2), c2, l2), ub();
|
|
7772
7807
|
let d2 = document.getElementById("cw-action-bar");
|
|
7773
7808
|
if (!d2) {
|
|
7774
7809
|
d2 = document.createElement("div"), d2.id = "cw-action-bar", d2.className = "hd-action-bar";
|
|
@@ -7779,19 +7814,19 @@ function jy(e5) {
|
|
|
7779
7814
|
(f2 = document.getElementById("app")) == null || f2.prepend(d2);
|
|
7780
7815
|
}
|
|
7781
7816
|
}
|
|
7782
|
-
d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void
|
|
7817
|
+
d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void _b()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void vb());
|
|
7783
7818
|
}
|
|
7784
|
-
function
|
|
7819
|
+
function $y(e5) {
|
|
7785
7820
|
return String(e5).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
7786
7821
|
}
|
|
7787
|
-
function
|
|
7822
|
+
function eb(e5) {
|
|
7788
7823
|
var t2, n2, r2, i2, a2, o2, s2, c2, l2, u2;
|
|
7789
|
-
if (!
|
|
7824
|
+
if (!zy) return;
|
|
7790
7825
|
let d2 = (t2 = e5._birth_params) == null ? {} : t2, f2 = (n2 = (r2 = (i2 = d2.datetime) == null ? e5.datetime : i2) == null ? e5.birth_datetime : r2) == null ? "" : n2, p2 = (a2 = (o2 = d2.location) == null ? e5.location : o2) == null ? "" : a2, m2 = (s2 = (c2 = d2.timezone) == null ? e5.timezone : c2) == null ? "" : s2, h2 = (l2 = d2.latitude) == null ? e5.latitude : l2, g2 = (u2 = d2.longitude) == null ? e5.longitude : u2;
|
|
7791
|
-
|
|
7792
|
-
let _2 =
|
|
7826
|
+
qy.charAt(0).toUpperCase() + qy.slice(1);
|
|
7827
|
+
let _2 = gv(e5.planets).find((e6) => e6.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
|
|
7793
7828
|
try {
|
|
7794
|
-
let e6 = f2 && f2.includes("T") ?
|
|
7829
|
+
let e6 = f2 && f2.includes("T") ? Oy(f2, m2) : null;
|
|
7795
7830
|
if (e6) {
|
|
7796
7831
|
let { date: t3, timeZone: n3 } = e6;
|
|
7797
7832
|
ee2 = t3.toLocaleDateString("en-US", { weekday: "short", year: "numeric", month: "short", day: "numeric", timeZone: n3 }) + " \xB7 " + t3.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", hour12: true, timeZone: n3 });
|
|
@@ -7799,16 +7834,16 @@ function Ny(e5) {
|
|
|
7799
7834
|
} catch (e6) {
|
|
7800
7835
|
}
|
|
7801
7836
|
let y2 = typeof h2 == "number" && typeof g2 == "number" ? "".concat(Math.abs(h2).toFixed(2), "\xB0").concat(h2 >= 0 ? "N" : "S", ", ").concat(Math.abs(g2).toFixed(2), "\xB0").concat(g2 >= 0 ? "E" : "W") : "", b2 = [];
|
|
7802
|
-
if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(
|
|
7803
|
-
|
|
7837
|
+
if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat($y(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat($y(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat($y(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat($y(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat($y(v2), "</span>")), b2.length === 0) {
|
|
7838
|
+
zy.setAttribute("hidden", "");
|
|
7804
7839
|
return;
|
|
7805
7840
|
}
|
|
7806
|
-
|
|
7841
|
+
zy.innerHTML = b2.join(""), zy.removeAttribute("hidden");
|
|
7807
7842
|
}
|
|
7808
|
-
var
|
|
7809
|
-
function
|
|
7810
|
-
if (!
|
|
7811
|
-
let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron",
|
|
7843
|
+
var tb = /* @__PURE__ */ new Set([F_, I_, L_, "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
|
|
7844
|
+
function nb(e5, t2) {
|
|
7845
|
+
if (!Wy || e5.length === 0) return;
|
|
7846
|
+
let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", C_, w_, T_, E_], r2 = [...e5].sort((e6, t3) => {
|
|
7812
7847
|
let r3 = n2.indexOf(e6.name.toLowerCase()), i3 = n2.indexOf(t3.name.toLowerCase());
|
|
7813
7848
|
return r3 !== -1 && i3 !== -1 ? r3 - i3 : r3 === -1 ? i3 === -1 ? e6.name.localeCompare(t3.name) : 1 : -1;
|
|
7814
7849
|
}), i2 = {};
|
|
@@ -7818,15 +7853,15 @@ function Fy(e5, t2) {
|
|
|
7818
7853
|
}
|
|
7819
7854
|
let s2 = (e6) => e6.replace(/(^|\s|_)\w/g, (e7) => e7.toUpperCase()).replace(/_/g, " "), c2 = (e6) => ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"][Math.floor((e6 % 360 + 360) % 360 / 30)], l2 = r2.map((e6) => {
|
|
7820
7855
|
var t3, n3, r3, a3;
|
|
7821
|
-
let o3 = e6.name.toLowerCase(), l3 = (t3 =
|
|
7856
|
+
let o3 = e6.name.toLowerCase(), l3 = (t3 = tv[o3]) == null ? "\u2605" : t3, u3 = (n3 = e6.sign) == null ? c2(e6.longitude) : n3, d3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), p3 = tb.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
|
|
7822
7857
|
return '<tr class="'.concat(p3 ? "extended-row" : "", '" data-planet="').concat(o3, '">\n <td><span class="planet-sym">').concat(l3, "</span> ").concat(s2(e6.name)).concat(m2, "</td>\n <td>").concat(d3, "\xB0 ").concat(u3, " ").concat(String(f3).padStart(2, "0"), "\u2032</td>\n <td>H").concat((a3 = e6.house) == null ? "\u2013" : a3, "</td>\n <td>").concat(h2 > 0 ? h2 : "\u2013", "</td>\n </tr>");
|
|
7823
7858
|
}).join(""), u2 = "| Body | Sign | Degree | House | Retrograde |\n| --- | --- | --- | --- | --- |\n" + r2.map((e6) => {
|
|
7824
7859
|
var t3;
|
|
7825
7860
|
let n3 = (t3 = e6.sign) == null ? c2(e6.longitude) : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), a3 = e6.house == null ? "\u2013" : "H".concat(e6.house), o3 = e6.retrograde ? "\u211E" : "";
|
|
7826
7861
|
return "| ".concat(s2(e6.name), " | ").concat(n3, " | ").concat(r3, "\xB0 ").concat(String(i3).padStart(2, "0"), "\u2032 | ").concat(a3, " | ").concat(o3, " |");
|
|
7827
7862
|
}).join("\n");
|
|
7828
|
-
|
|
7829
|
-
let d2 =
|
|
7863
|
+
Wy.innerHTML = '\n <div class="overview-header">\n <button class="overview-toggle" aria-expanded="false">\n <span class="overview-chevron">\u25B6</span>\n Planet Positions ('.concat(r2.length, ')\n </button>\n <button class="overview-copy" type="button" title="Copy positions as a Markdown table">Copy</button>\n </div>\n <div class="overview-body">\n <table class="overview-tbl">\n <thead><tr><th>Body</th><th>Position</th><th>House</th><th>Asp</th></tr></thead>\n <tbody>').concat(l2, "</tbody>\n </table>\n </div>\n "), Wy.removeAttribute("hidden");
|
|
7864
|
+
let d2 = Wy.querySelector(".overview-copy");
|
|
7830
7865
|
d2 && d2.addEventListener("click", async (e6) => {
|
|
7831
7866
|
e6.stopPropagation();
|
|
7832
7867
|
try {
|
|
@@ -7836,14 +7871,14 @@ function Fy(e5, t2) {
|
|
|
7836
7871
|
d2.textContent = "Copy", d2.classList.remove("copied");
|
|
7837
7872
|
}, 1600);
|
|
7838
7873
|
} catch (e7) {
|
|
7839
|
-
|
|
7874
|
+
rb("Copy unavailable");
|
|
7840
7875
|
}
|
|
7841
7876
|
});
|
|
7842
|
-
let f2 =
|
|
7877
|
+
let f2 = Wy.querySelector(".overview-toggle"), p2 = Wy.querySelector(".overview-body");
|
|
7843
7878
|
f2 == null || f2.addEventListener("click", () => {
|
|
7844
7879
|
let e6 = f2.getAttribute("aria-expanded") === "true";
|
|
7845
7880
|
f2.setAttribute("aria-expanded", e6 ? "false" : "true"), p2.classList.toggle("open", !e6);
|
|
7846
|
-
}),
|
|
7881
|
+
}), Wy.querySelectorAll("tbody tr").forEach((e6) => {
|
|
7847
7882
|
var t3;
|
|
7848
7883
|
let n3 = (t3 = e6.dataset.planet) == null ? "" : t3;
|
|
7849
7884
|
n3 && (e6.addEventListener("mouseenter", () => {
|
|
@@ -7855,7 +7890,7 @@ function Fy(e5, t2) {
|
|
|
7855
7890
|
let t4 = document.querySelector("svg");
|
|
7856
7891
|
t4 && (t4.querySelectorAll(".planet-glyph-group").forEach((e7) => {
|
|
7857
7892
|
var t5;
|
|
7858
|
-
let n4 =
|
|
7893
|
+
let n4 = tb.has((t5 = e7.dataset.planet) == null ? "" : t5);
|
|
7859
7894
|
e7.style.opacity = n4 ? "0.65" : "1";
|
|
7860
7895
|
}), e6.classList.remove("active-row"));
|
|
7861
7896
|
}), e6.addEventListener("click", () => {
|
|
@@ -7866,7 +7901,7 @@ function Fy(e5, t2) {
|
|
|
7866
7901
|
}));
|
|
7867
7902
|
});
|
|
7868
7903
|
}
|
|
7869
|
-
function
|
|
7904
|
+
function rb(e5) {
|
|
7870
7905
|
var t2;
|
|
7871
7906
|
(t2 = document.getElementById("copy-toast")) == null || t2.remove();
|
|
7872
7907
|
let n2 = document.createElement("div");
|
|
@@ -7874,26 +7909,26 @@ function Iy(e5) {
|
|
|
7874
7909
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7875
7910
|
}, 2500);
|
|
7876
7911
|
}
|
|
7877
|
-
var
|
|
7878
|
-
function
|
|
7879
|
-
if (!
|
|
7912
|
+
var ib = null;
|
|
7913
|
+
function ab(e5, t2, n2) {
|
|
7914
|
+
if (!Hy) return;
|
|
7880
7915
|
if (e5.length === 0) {
|
|
7881
|
-
|
|
7916
|
+
Hy.setAttribute("hidden", ""), Hy.innerHTML = "";
|
|
7882
7917
|
return;
|
|
7883
7918
|
}
|
|
7884
7919
|
let r2 = { "T-Square": "#e08a52", "Grand Trine": "#52a8e0", "Grand Cross": "#e05252", Stellium: "#9a7fd4", Yod: "#52c07a", Kite: "#c0b052" };
|
|
7885
|
-
if (
|
|
7920
|
+
if (Hy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
|
|
7886
7921
|
var n3;
|
|
7887
7922
|
let i2 = (n3 = r2[e6.name]) == null ? "#888" : n3;
|
|
7888
7923
|
return '\n <button class="pattern-pill"\n data-idx="'.concat(t3, '"\n data-color="').concat(i2, '"\n style="color:').concat(i2, ";border-color:").concat(i2, '"\n title="').concat(e6.description, '">\n ').concat(e6.name, "\n </button>\n ");
|
|
7889
|
-
}).join(""), "\n "),
|
|
7924
|
+
}).join(""), "\n "), Hy.removeAttribute("hidden"), !Hy.querySelector(".pattern-ask-claude-btn")) {
|
|
7890
7925
|
let t3 = document.createElement("button");
|
|
7891
|
-
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Interpret", t3.style.display = "none",
|
|
7926
|
+
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Interpret", t3.style.display = "none", Hy.appendChild(t3), t3.addEventListener("click", () => {
|
|
7892
7927
|
var n3;
|
|
7893
|
-
let r3 =
|
|
7928
|
+
let r3 = ib;
|
|
7894
7929
|
if (r3 === null) return;
|
|
7895
7930
|
let i2 = e5[r3];
|
|
7896
|
-
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026",
|
|
7931
|
+
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", yb({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
|
|
7897
7932
|
t3.textContent = "\u2713 Sent", setTimeout(() => {
|
|
7898
7933
|
t3.textContent = "\u2728 Interpret", t3.disabled = false;
|
|
7899
7934
|
}, 2500);
|
|
@@ -7902,132 +7937,130 @@ function Ry(e5, t2, n2) {
|
|
|
7902
7937
|
});
|
|
7903
7938
|
});
|
|
7904
7939
|
}
|
|
7905
|
-
|
|
7940
|
+
Hy.querySelectorAll(".pattern-pill").forEach((r3) => {
|
|
7906
7941
|
r3.addEventListener("click", () => {
|
|
7907
7942
|
var i2;
|
|
7908
|
-
let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 =
|
|
7909
|
-
|
|
7943
|
+
let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = Hy.querySelector(".pattern-ask-claude-btn");
|
|
7944
|
+
ib === a2 ? (ib = null, ny(), c2 && (c2.style.display = "none"), Hy.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
7910
7945
|
var t3;
|
|
7911
7946
|
e6.classList.remove("active");
|
|
7912
7947
|
let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
|
|
7913
7948
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
7914
|
-
})) : (
|
|
7949
|
+
})) : (ib = a2, Hy.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
7915
7950
|
var t3;
|
|
7916
7951
|
e6.classList.remove("active");
|
|
7917
7952
|
let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
|
|
7918
7953
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
7919
|
-
}), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2,
|
|
7954
|
+
}), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, ey(o2.planets, o2.aspectKeys), t2 && n2 != null && (oy(), ay(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Interpret", c2.disabled = false));
|
|
7920
7955
|
});
|
|
7921
7956
|
});
|
|
7922
7957
|
}
|
|
7923
|
-
var
|
|
7924
|
-
function
|
|
7958
|
+
var ob = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], sb = true, cb = 8, lb = "true";
|
|
7959
|
+
function ub() {
|
|
7925
7960
|
var e5;
|
|
7926
|
-
if (!
|
|
7961
|
+
if (!Uy) return;
|
|
7927
7962
|
let t2 = (() => {
|
|
7928
7963
|
let e6 = $ == null ? void 0 : $.planets, t3 = [];
|
|
7929
|
-
Array.isArray(e6) ? e6.forEach((e7) => {
|
|
7930
|
-
var
|
|
7931
|
-
return t3.push(String((
|
|
7932
|
-
}) : e6 && typeof e6 == "object" && Object.keys(e6).forEach((e7) => t3.push(e7.toLowerCase()));
|
|
7933
|
-
let n3 = t3.some((e7) => e7 === "north node" || e7 === "north node (mean)" || e7 === "mean node"), r3 = t3.some((e7) => e7 === "true node" || e7 === "north node (true)");
|
|
7934
|
-
return n3 && r3;
|
|
7964
|
+
return Array.isArray(e6) ? e6.forEach((e7) => {
|
|
7965
|
+
var n3;
|
|
7966
|
+
return t3.push(String((n3 = e7 == null ? void 0 : e7.name) == null ? "" : n3).toLowerCase());
|
|
7967
|
+
}) : e6 && typeof e6 == "object" && Object.keys(e6).forEach((e7) => t3.push(e7.toLowerCase())), N_(t3);
|
|
7935
7968
|
})();
|
|
7936
|
-
|
|
7937
|
-
let n2 = t2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(
|
|
7938
|
-
|
|
7939
|
-
let r2 =
|
|
7969
|
+
mv(lb);
|
|
7970
|
+
let n2 = t2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(lb === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(lb === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
|
|
7971
|
+
sb = true, Uy.innerHTML = '\n <div class="asp-panel">\n <div class="asp-section">\n <span class="asp-section-label">Aspects</span>\n <button class="aspect-toggle-btn active" id="cw-aspect-vis-toggle"\n title="Toggle all natal aspect lines">\n <span class="toggle-icon">\u2295</span> Natal aspects\n </button>\n </div>\n <div class="asp-section">\n <span class="asp-section-label">Orb</span>\n '.concat(ob.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === cb ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
|
|
7972
|
+
let r2 = gv($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
|
|
7940
7973
|
for (let e6 of r2) {
|
|
7941
7974
|
let t3 = e6.name.toLowerCase();
|
|
7942
7975
|
if (i2.has(t3)) continue;
|
|
7943
7976
|
i2.add(t3);
|
|
7944
|
-
let n3 =
|
|
7945
|
-
n3 && a2.push({ glyph: n3, label:
|
|
7977
|
+
let n3 = tv[t3];
|
|
7978
|
+
n3 && a2.push({ glyph: n3, label: hy(e6.name) });
|
|
7946
7979
|
}
|
|
7947
7980
|
let o2 = [...new Set(((e5 = $ == null ? void 0 : $.aspects) == null ? [] : e5).map((e6) => {
|
|
7948
7981
|
var t3;
|
|
7949
7982
|
return ((t3 = e6.type) == null ? "" : t3).toLowerCase();
|
|
7950
7983
|
}).filter(Boolean))].map((e6) => {
|
|
7951
7984
|
var t3;
|
|
7952
|
-
return { glyph: (t3 =
|
|
7985
|
+
return { glyph: (t3 = iv[e6]) == null ? "" : t3, label: hy(e6) };
|
|
7953
7986
|
}).filter((e6) => e6.glyph);
|
|
7954
|
-
|
|
7987
|
+
Uy.insertAdjacentHTML("beforeend", gy([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), Uy.removeAttribute("hidden");
|
|
7955
7988
|
let s2 = document.getElementById("cw-aspect-vis-toggle");
|
|
7956
7989
|
s2 == null || s2.addEventListener("click", () => {
|
|
7957
|
-
|
|
7958
|
-
}),
|
|
7990
|
+
sb = !sb, sy(sb), s2.classList.toggle("active", sb), s2.querySelector(".toggle-icon").textContent = sb ? "\u2295" : "\u2296";
|
|
7991
|
+
}), Uy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
|
|
7959
7992
|
e6.addEventListener("click", () => {
|
|
7960
7993
|
var t3;
|
|
7961
7994
|
let n3 = parseFloat((t3 = e6.dataset.orb) == null ? "8" : t3);
|
|
7962
|
-
n3 !==
|
|
7995
|
+
n3 !== cb && (cb = n3, Uy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), cy(n3));
|
|
7963
7996
|
});
|
|
7964
|
-
}),
|
|
7997
|
+
}), Uy.querySelectorAll(".node-btn").forEach((e6) => {
|
|
7965
7998
|
e6.addEventListener("click", () => {
|
|
7966
7999
|
let t3 = e6.dataset.node === "mean" ? "mean" : "true";
|
|
7967
|
-
t3 ===
|
|
8000
|
+
t3 === lb || !$ || (lb = t3, mv(t3), Qy($));
|
|
7968
8001
|
});
|
|
7969
8002
|
});
|
|
7970
8003
|
}
|
|
7971
|
-
async function
|
|
7972
|
-
if (
|
|
8004
|
+
async function db(e5, t2) {
|
|
8005
|
+
if (Yy) try {
|
|
7973
8006
|
let n2 = "[Chart Wheel] Selected ".concat(e5, " \u2014 ").concat(Object.entries(t2).filter(([, e6]) => e6 != null && e6 !== false && e6 !== "").map(([e6, t3]) => "".concat(e6, ": ").concat(t3)).join(", "));
|
|
7974
|
-
await
|
|
8007
|
+
await Ky.updateModelContext({ content: [{ type: "text", text: n2 }] });
|
|
7975
8008
|
} catch (e6) {
|
|
7976
8009
|
console.warn("[ChartWheel] \u26A0\uFE0F updateModelContext failed:", e6);
|
|
7977
8010
|
}
|
|
7978
8011
|
}
|
|
7979
|
-
async function
|
|
8012
|
+
async function fb(e5) {
|
|
7980
8013
|
var t2, n2, r2, i2;
|
|
7981
|
-
|
|
8014
|
+
ib = null, Hy == null || Hy.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
7982
8015
|
var t3;
|
|
7983
8016
|
e6.classList.remove("active");
|
|
7984
8017
|
let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
|
|
7985
8018
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
7986
|
-
}), await
|
|
8019
|
+
}), await db("planet", { planet: e5.name, longitude: e5.longitude, sign: (t2 = e5.sign) == null ? null : t2, house: (n2 = e5.house) == null ? null : n2, retrograde: (r2 = e5.retrograde) == null ? false : r2, speed: (i2 = e5.speed) == null ? null : i2 });
|
|
7987
8020
|
}
|
|
7988
|
-
async function
|
|
8021
|
+
async function pb(e5) {
|
|
7989
8022
|
var t2, n2;
|
|
7990
|
-
await
|
|
8023
|
+
await db("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
|
|
7991
8024
|
}
|
|
7992
|
-
async function
|
|
8025
|
+
async function mb(e5) {
|
|
7993
8026
|
var t2, n2, r2, i2;
|
|
7994
|
-
await
|
|
8027
|
+
await db("aspect", { planet1: e5.planet1, planet2: e5.planet2, aspect_type: (t2 = e5.type) == null ? null : t2, orb: (n2 = e5.orb) == null ? null : n2, applying: (r2 = e5.applying) == null ? null : r2, angle: (i2 = e5.angle) == null ? null : i2 });
|
|
7995
8028
|
}
|
|
7996
|
-
function
|
|
8029
|
+
function hb() {
|
|
7997
8030
|
return async (e5) => {
|
|
7998
8031
|
try {
|
|
7999
8032
|
var t2, n2;
|
|
8000
|
-
let r2 = await
|
|
8033
|
+
let r2 = await Ky.createSamplingMessage({ messages: [{ role: "user", content: { type: "text", text: "You are interpreting a specific element in a natal chart. Be specific to the chart data \u2014 never generic. 2-3 sentences max.\n\nUser Request: ".concat(e5) } }], systemPrompt: "You are a professional Western astrologer giving a focused natal interpretation. Be specific to the chart data provided \u2014 never generic. Insightful and concise.", maxTokens: 300 });
|
|
8001
8034
|
return (t2 = r2 == null || (n2 = r2.content) == null ? void 0 : n2.text) == null ? null : t2;
|
|
8002
8035
|
} catch (e6) {
|
|
8003
8036
|
return console.error("[ChartWheel] Sampling failed:", e6), "Unable to load interpretation right now.";
|
|
8004
8037
|
}
|
|
8005
8038
|
};
|
|
8006
8039
|
}
|
|
8007
|
-
async function
|
|
8040
|
+
async function gb(e5) {
|
|
8008
8041
|
try {
|
|
8009
|
-
(await
|
|
8042
|
+
(await Ky.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
|
|
8010
8043
|
} catch (e6) {
|
|
8011
8044
|
console.error("[ChartWheel] sendMessage failed:", e6);
|
|
8012
8045
|
}
|
|
8013
8046
|
}
|
|
8014
|
-
async function
|
|
8047
|
+
async function _b() {
|
|
8015
8048
|
var e5, t2, n2, r2;
|
|
8016
8049
|
if (!$) return;
|
|
8017
|
-
let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 =
|
|
8050
|
+
let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = gv(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
|
|
8018
8051
|
var t3;
|
|
8019
8052
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
|
|
8020
8053
|
}).slice(0, 8).map((e6) => " \u2022 ".concat(e6.planet1, " ").concat(e6.type, " ").concat(e6.planet2, " (").concat(Number(e6.orb).toFixed(1), "\xB0, ").concat(e6.applying ? "applying" : "separating", ")")).join("\n") || " \u2022 No major aspects found";
|
|
8021
|
-
await
|
|
8054
|
+
await gb("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
|
|
8022
8055
|
var t3;
|
|
8023
8056
|
return " \u2022 ".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? ", House ".concat(e6.house) : "").concat(e6.retrograde ? " \u211E" : "");
|
|
8024
8057
|
}).join("\n"), "\n\nMajor aspects:\n").concat(c2, "\n\nCover: (1) Core identity and soul purpose (Sun, Moon, Ascendant), (2) The chart's dominant element, modality, and overall signature, (3) The most significant aspects and their psychological themes, (4) Key life areas of focus and challenge, (5) A practical synthesis \u2014 who is this person and what is their path?"));
|
|
8025
8058
|
}
|
|
8026
|
-
async function
|
|
8059
|
+
async function vb() {
|
|
8027
8060
|
var e5, t2, n2, r2;
|
|
8028
8061
|
if (!$) return;
|
|
8029
8062
|
let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5;
|
|
8030
|
-
await
|
|
8063
|
+
await gb("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(gv(i2.planets).slice(0, 4).map((e6) => {
|
|
8031
8064
|
var t3;
|
|
8032
8065
|
return "".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? " H".concat(e6.house) : "");
|
|
8033
8066
|
}).join(", ") || "unknown placements", ". Major aspects: ").concat(((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
|
|
@@ -8035,7 +8068,7 @@ async function Zy() {
|
|
|
8035
8068
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
|
|
8036
8069
|
}).slice(0, 5).map((e6) => "".concat(e6.planet1, " ").concat(e6.type, " ").concat(e6.planet2, " (").concat(Number(e6.orb).toFixed(1), "\xB0)")).join(", ") || "none detected", ".\n\nBased on this chart, please suggest 3-4 specific, insightful questions I could ask to understand this person more deeply \u2014 such as how particular placements manifest in real life, the most significant aspect dynamics, or how to integrate the chart's core tensions. Present each as a tappable question I can ask you."));
|
|
8037
8070
|
}
|
|
8038
|
-
async function
|
|
8071
|
+
async function yb(e5) {
|
|
8039
8072
|
let t2 = "";
|
|
8040
8073
|
if (e5.type === "planet") {
|
|
8041
8074
|
var n2;
|
|
@@ -8064,52 +8097,52 @@ async function Qy(e5) {
|
|
|
8064
8097
|
t2 = "Interpret the ".concat(n3.angle, " at ").concat(n3.position, " (").concat(n3.sign, " \xB7 ").concat(n3.element, " \xB7 ").concat(n3.modality, ") in this natal chart. Give a focused interpretation of what this angle represents for the native \u2014 identity, life direction, relationships, or roots depending on which angle \u2014 and how the sign on the angle shapes that expression.");
|
|
8065
8098
|
}
|
|
8066
8099
|
if (t2) {
|
|
8067
|
-
t2 =
|
|
8100
|
+
t2 = Ay(t2, $ == null ? void 0 : $._birth_params, "Natal chart");
|
|
8068
8101
|
try {
|
|
8069
|
-
let e6 = await
|
|
8102
|
+
let e6 = await Ky.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
|
|
8070
8103
|
if (e6.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e6), Error("Host rejected message");
|
|
8071
8104
|
} catch (e6) {
|
|
8072
8105
|
throw console.error("[ChartWheel] \u274C sendMessage failed:", e6), e6;
|
|
8073
8106
|
}
|
|
8074
8107
|
}
|
|
8075
8108
|
}
|
|
8076
|
-
async function
|
|
8109
|
+
async function bb(e5) {
|
|
8077
8110
|
if (!($ != null && $._birth_params)) {
|
|
8078
|
-
|
|
8111
|
+
py(Vy, qy);
|
|
8079
8112
|
return;
|
|
8080
8113
|
}
|
|
8081
8114
|
try {
|
|
8082
8115
|
var t2, n2, r2, i2;
|
|
8083
|
-
let a2 =
|
|
8084
|
-
a2 ? ($ = a2,
|
|
8116
|
+
let a2 = Ey(await Ky.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: $._birth_params.datetime, timezone: (t2 = $._birth_params.timezone) == null ? void 0 : t2, latitude: (n2 = $._birth_params.latitude) == null ? void 0 : n2, longitude: (r2 = $._birth_params.longitude) == null ? void 0 : r2, location: (i2 = $._birth_params.location) == null ? void 0 : i2, house_system: e5 } }));
|
|
8117
|
+
a2 ? ($ = a2, qy = e5, Qy(a2)) : py(Vy, qy);
|
|
8085
8118
|
} catch (e6) {
|
|
8086
|
-
console.error("[Chart] Recalculate failed:", e6),
|
|
8119
|
+
console.error("[Chart] Recalculate failed:", e6), py(Vy, qy);
|
|
8087
8120
|
}
|
|
8088
8121
|
}
|
|
8089
|
-
var
|
|
8090
|
-
function
|
|
8091
|
-
|
|
8122
|
+
var xb;
|
|
8123
|
+
function Sb() {
|
|
8124
|
+
xb && (clearTimeout(xb), xb = void 0);
|
|
8092
8125
|
}
|
|
8093
|
-
function
|
|
8094
|
-
|
|
8126
|
+
function Cb(e5, t2) {
|
|
8127
|
+
Sb(), Ly.setAttribute("hidden", ""), My({ container: Ry, message: e5, onRetry: t2 });
|
|
8095
8128
|
}
|
|
8096
|
-
function
|
|
8097
|
-
|
|
8098
|
-
|
|
8099
|
-
}, 3e4),
|
|
8129
|
+
function wb() {
|
|
8130
|
+
Sb(), Ry.setAttribute("hidden", ""), Ly.removeAttribute("hidden"), xb = setTimeout(() => {
|
|
8131
|
+
Cb("The chart didn't load. Tap to try again.", wb);
|
|
8132
|
+
}, 3e4), Ky.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
|
|
8100
8133
|
});
|
|
8101
8134
|
}
|
|
8102
|
-
|
|
8103
|
-
|
|
8135
|
+
Py(Ky, { loadingEl: Ly, contentEl: Ry, statusFn: Zy, paramControls: () => Jy }), xb = setTimeout(() => {
|
|
8136
|
+
Cb("Chart data is taking longer than expected.", wb);
|
|
8104
8137
|
}, 3e4), (async () => {
|
|
8105
8138
|
try {
|
|
8106
|
-
await
|
|
8107
|
-
let e5 =
|
|
8108
|
-
|
|
8109
|
-
$ &&
|
|
8110
|
-
}), $ &&
|
|
8139
|
+
await Ky.connect();
|
|
8140
|
+
let e5 = Ky.getHostCapabilities();
|
|
8141
|
+
Yy = !!(e5 != null && e5.modelContext), Xy = !!(e5 != null && e5.sampling), Ny(Ky, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), Iy(Ky), g_(Ky, () => {
|
|
8142
|
+
$ && Qy($);
|
|
8143
|
+
}), $ && Qy($);
|
|
8111
8144
|
} catch (e5) {
|
|
8112
|
-
console.error("[ChartWheel] \u274C app.connect() FAILED:", e5),
|
|
8145
|
+
console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), Cb("The chart didn't load. Tap to try again.", wb);
|
|
8113
8146
|
}
|
|
8114
8147
|
})();
|
|
8115
8148
|
</script>
|