@openephemeris/mcp-server 4.10.0 → 4.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/dist/tools/apps/_location-resolver.d.ts +1 -1
- package/dist/tools/apps/_location-resolver.js +23 -2
- package/dist/tools/apps/bazi-app.js +10 -3
- package/dist/tools/apps/chart-wheel-app.js +8 -4
- package/dist/tools/datetime.js +10 -1
- package/dist/ui/bazi.html +1604 -1601
- package/dist/ui/bi-wheel.html +1886 -1881
- package/dist/ui/bodygraph.html +1352 -1337
- package/dist/ui/chart-wheel.html +406 -401
- package/dist/ui/moon-phase.html +38 -35
- package/dist/ui/transit-timeline.html +38 -35
- package/dist/ui/vedic-chart.html +38 -35
- package/package.json +1 -1
package/dist/ui/chart-wheel.html
CHANGED
|
@@ -6613,80 +6613,80 @@ function i_(e5, t2) {
|
|
|
6613
6613
|
};
|
|
6614
6614
|
e5.addEventListener("pointerup", E2), e5.addEventListener("pointercancel", E2);
|
|
6615
6615
|
}
|
|
6616
|
-
var a_ = { fire: "#f55f7c", earth: "#24e6a8", air: "#ffc94d", water: "#49b6ea", fireTint: "rgba(245,95,124,0.20)", earthTint: "rgba(36,230,168,0.20)", airTint: "rgba(255,201,77,0.20)", waterTint: "rgba(73,182,234,0.20)", points: "#118ab2", others: "#ffa500", house: "#7a8695", transit: "#c19bf2", ink: "#f7f3f0" },
|
|
6617
|
-
function
|
|
6618
|
-
return e5 ?
|
|
6616
|
+
var a_ = '"Segoe UI Symbol", "Noto Sans Symbols", "Noto Sans Symbols2", "Apple Symbols", "DejaVu Sans", serif', o_ = { fire: "#f55f7c", earth: "#24e6a8", air: "#ffc94d", water: "#49b6ea", fireTint: "rgba(245,95,124,0.20)", earthTint: "rgba(36,230,168,0.20)", airTint: "rgba(255,201,77,0.20)", waterTint: "rgba(73,182,234,0.20)", points: "#118ab2", others: "#ffa500", house: "#7a8695", transit: "#c19bf2", ink: "#f7f3f0" }, s_ = { fire: "#e23a63", earth: "#079e78", air: "#c99418", water: "#0f7ea3", fireTint: "rgba(239,71,111,0.12)", earthTint: "rgba(6,214,160,0.13)", airTint: "rgba(255,209,102,0.20)", waterTint: "rgba(17,138,178,0.12)", points: "#118ab2", others: "#ffa500", house: "#6f8496", transit: "#7b3fb5", ink: "#0b1220" };
|
|
6617
|
+
function c_(e5) {
|
|
6618
|
+
return e5 ? o_ : s_;
|
|
6619
6619
|
}
|
|
6620
|
-
function
|
|
6621
|
-
let n2 =
|
|
6620
|
+
function l_(e5, t2) {
|
|
6621
|
+
let n2 = c_(t2);
|
|
6622
6622
|
return [n2.fire, n2.earth, n2.air, n2.water][(e5 % 12 + 12) % 12 % 4];
|
|
6623
6623
|
}
|
|
6624
|
-
function
|
|
6625
|
-
let n2 =
|
|
6624
|
+
function u_(e5, t2) {
|
|
6625
|
+
let n2 = c_(t2);
|
|
6626
6626
|
return [n2.fireTint, n2.earthTint, n2.airTint, n2.waterTint][(e5 % 12 + 12) % 12 % 4];
|
|
6627
6627
|
}
|
|
6628
|
-
var
|
|
6629
|
-
function
|
|
6630
|
-
return
|
|
6628
|
+
var d_;
|
|
6629
|
+
function f_() {
|
|
6630
|
+
return d_ ? d_ === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
6631
6631
|
}
|
|
6632
|
-
function
|
|
6632
|
+
function p_(e5 = f_()) {
|
|
6633
6633
|
let t2 = e5 ? "dark" : "light";
|
|
6634
6634
|
return document.documentElement.setAttribute("data-theme", t2), t2;
|
|
6635
6635
|
}
|
|
6636
|
-
function
|
|
6637
|
-
|
|
6636
|
+
function m_(e5) {
|
|
6637
|
+
p_();
|
|
6638
6638
|
try {
|
|
6639
6639
|
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (t2) => {
|
|
6640
|
-
|
|
6640
|
+
d_ || e5 == null || e5(p_(t2.matches));
|
|
6641
6641
|
});
|
|
6642
6642
|
} catch (e6) {
|
|
6643
6643
|
}
|
|
6644
6644
|
}
|
|
6645
|
-
function
|
|
6645
|
+
function h_(e5, t2) {
|
|
6646
6646
|
var n2, r2;
|
|
6647
6647
|
let i2 = (e6) => {
|
|
6648
6648
|
let n3 = e6 == null ? void 0 : e6.theme;
|
|
6649
6649
|
if (n3 !== "light" && n3 !== "dark") return;
|
|
6650
|
-
|
|
6651
|
-
let r3 = document.documentElement.getAttribute("data-theme"), i3 =
|
|
6650
|
+
d_ = n3;
|
|
6651
|
+
let r3 = document.documentElement.getAttribute("data-theme"), i3 = p_(n3 === "dark");
|
|
6652
6652
|
i3 !== r3 && (t2 == null || t2(i3));
|
|
6653
6653
|
};
|
|
6654
6654
|
(n2 = e5.addEventListener) == null || n2.call(e5, "hostcontextchanged", i2), i2((r2 = e5.getHostContext) == null ? void 0 : r2.call(e5));
|
|
6655
6655
|
}
|
|
6656
|
-
function
|
|
6656
|
+
function g_(e5, t2) {
|
|
6657
6657
|
if (e5.length <= 1) {
|
|
6658
6658
|
let t3 = /* @__PURE__ */ new Map();
|
|
6659
6659
|
for (let n3 of e5) t3.set(n3.name, n3.longitude);
|
|
6660
6660
|
return t3;
|
|
6661
6661
|
}
|
|
6662
6662
|
let n2 = [...e5].sort((e6, t3) => e6.longitude - t3.longitude), r2 = [], i2 = [];
|
|
6663
|
-
for (let e6 of n2) r2.push(e6.longitude), i2.push(
|
|
6664
|
-
|
|
6663
|
+
for (let e6 of n2) r2.push(e6.longitude), i2.push(__(e6.longitude, i2, t2));
|
|
6664
|
+
y_(i2, r2, t2);
|
|
6665
6665
|
let a2 = /* @__PURE__ */ new Map();
|
|
6666
|
-
for (let e6 = 0; e6 < n2.length; e6++) a2.set(n2[e6].name,
|
|
6666
|
+
for (let e6 = 0; e6 < n2.length; e6++) a2.set(n2[e6].name, x_(i2[e6]));
|
|
6667
6667
|
return a2;
|
|
6668
6668
|
}
|
|
6669
|
-
function
|
|
6669
|
+
function __(e5, t2, n2) {
|
|
6670
6670
|
if (t2.length === 0) return e5;
|
|
6671
6671
|
let r2 = Math.max(0.55, n2 / 4), i2 = Math.max(8, Math.min(40, n2 * 5)), a2 = Math.floor(i2 / r2);
|
|
6672
|
-
if (
|
|
6672
|
+
if (v_(e5, t2, n2)) return e5;
|
|
6673
6673
|
for (let i3 = 1; i3 <= a2; i3++) {
|
|
6674
6674
|
let a3 = i3 * r2;
|
|
6675
|
-
if (
|
|
6676
|
-
if (
|
|
6675
|
+
if (v_(e5 + a3, t2, n2)) return e5 + a3;
|
|
6676
|
+
if (v_(e5 - a3, t2, n2)) return e5 - a3;
|
|
6677
6677
|
}
|
|
6678
6678
|
return e5;
|
|
6679
6679
|
}
|
|
6680
|
-
function
|
|
6681
|
-
for (let r2 of t2) if (
|
|
6680
|
+
function v_(e5, t2, n2) {
|
|
6681
|
+
for (let r2 of t2) if (b_(e5, r2) < n2) return false;
|
|
6682
6682
|
return true;
|
|
6683
6683
|
}
|
|
6684
|
-
function
|
|
6684
|
+
function y_(e5, t2, n2) {
|
|
6685
6685
|
let r2 = e5.length;
|
|
6686
6686
|
if (!(r2 <= 1)) for (let t3 = 0; t3 < 80; t3++) {
|
|
6687
6687
|
let t4 = true;
|
|
6688
6688
|
for (let i2 = 0; i2 < r2; i2++) for (let a2 = i2 + 1; a2 < r2; a2++) {
|
|
6689
|
-
let r3 = n2 -
|
|
6689
|
+
let r3 = n2 - b_(e5[i2], e5[a2]);
|
|
6690
6690
|
if (r3 > 0.01) {
|
|
6691
6691
|
t4 = false;
|
|
6692
6692
|
let n3 = r3 * 0.65 / 2, o2 = e5[a2] - e5[i2];
|
|
@@ -6698,89 +6698,89 @@ function v_(e5, t2, n2) {
|
|
|
6698
6698
|
if (t4) break;
|
|
6699
6699
|
}
|
|
6700
6700
|
}
|
|
6701
|
-
function
|
|
6701
|
+
function b_(e5, t2) {
|
|
6702
6702
|
let n2 = ((t2 - e5) % 360 + 540) % 360 - 180;
|
|
6703
6703
|
return Math.abs(n2);
|
|
6704
6704
|
}
|
|
6705
|
-
function
|
|
6705
|
+
function x_(e5) {
|
|
6706
6706
|
return (e5 % 360 + 360) % 360;
|
|
6707
6707
|
}
|
|
6708
|
-
var
|
|
6708
|
+
var S_ = 250, C_ = 250, w_ = 240, T_ = 204, E_ = 190, D_ = 159, O_ = 140, k_ = 134, A_ = 15, j_ = 20;
|
|
6709
6709
|
function Y(e5, t2, n2) {
|
|
6710
6710
|
let r2 = -(e5 - n2 + 180) * Math.PI / 180;
|
|
6711
|
-
return { x:
|
|
6711
|
+
return { x: S_ + t2 * Math.cos(r2), y: C_ + t2 * Math.sin(r2) };
|
|
6712
6712
|
}
|
|
6713
6713
|
function X(e5) {
|
|
6714
6714
|
return document.createElementNS("http://www.w3.org/2000/svg", e5);
|
|
6715
6715
|
}
|
|
6716
|
-
var
|
|
6717
|
-
function
|
|
6716
|
+
var M_ = { 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", 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" }, N_ = ["\u2648", "\u2649", "\u264A", "\u264B", "\u264C", "\u264D", "\u264E", "\u264F", "\u2650", "\u2651", "\u2652", "\u2653"].map((e5) => e5 + "\uFE0E"), P_ = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], F_ = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9", quincunx: "\u26BB", semisquare: "\u2220" };
|
|
6717
|
+
function I_(e5) {
|
|
6718
6718
|
var t2;
|
|
6719
6719
|
let n2 = e5.toLowerCase(), r2 = "--aspect-".concat(n2);
|
|
6720
6720
|
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);
|
|
6721
6721
|
}
|
|
6722
|
-
var
|
|
6723
|
-
function
|
|
6722
|
+
var L_ = f_, R_ = (e5) => l_(e5, L_());
|
|
6723
|
+
function z_(e5) {
|
|
6724
6724
|
let t2 = "--planet-".concat(e5.toLowerCase().replace(/\s+/g, "-"));
|
|
6725
6725
|
return getComputedStyle(document.documentElement).getPropertyValue(t2).trim() || "var(--text)";
|
|
6726
6726
|
}
|
|
6727
|
-
var
|
|
6728
|
-
function
|
|
6727
|
+
var B_ = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"]), V_ = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]), H_ = /* @__PURE__ */ new Set([...B_, ...V_]);
|
|
6728
|
+
function U_(e5) {
|
|
6729
6729
|
let t2 = (e5 % 360 + 360) % 360, n2 = Math.floor(t2 / 30), r2 = Math.floor(t2 % 30);
|
|
6730
|
-
return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(
|
|
6730
|
+
return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(P_[n2]);
|
|
6731
6731
|
}
|
|
6732
6732
|
function Z(e5) {
|
|
6733
6733
|
return e5.replace(/\b\w/g, (e6) => e6.toUpperCase());
|
|
6734
6734
|
}
|
|
6735
|
-
var
|
|
6736
|
-
function W_(e5) {
|
|
6737
|
-
U_ = e5;
|
|
6738
|
-
}
|
|
6735
|
+
var W_ = "true";
|
|
6739
6736
|
function G_(e5) {
|
|
6737
|
+
W_ = e5;
|
|
6738
|
+
}
|
|
6739
|
+
function K_(e5) {
|
|
6740
6740
|
let t2 = e5.some((e6) => e6.name.toLowerCase() === "true node"), n2 = e5.some((e6) => e6.name.toLowerCase() === "north node");
|
|
6741
6741
|
if (!t2 || !n2) return e5;
|
|
6742
|
-
let r2 =
|
|
6742
|
+
let r2 = W_ === "true" ? "north node" : "true node";
|
|
6743
6743
|
return e5.filter((e6) => e6.name.toLowerCase() !== r2);
|
|
6744
6744
|
}
|
|
6745
|
-
function
|
|
6746
|
-
return Array.isArray(e5) ?
|
|
6745
|
+
function q_(e5) {
|
|
6746
|
+
return Array.isArray(e5) ? K_(e5) : e5 && typeof e5 == "object" ? K_(Object.entries(e5).filter(([e6]) => H_.has(e6.toLowerCase())).map(([e6, t2]) => {
|
|
6747
6747
|
var n2, r2, i2, a2, o2, s2;
|
|
6748
6748
|
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 };
|
|
6749
6749
|
})) : [];
|
|
6750
6750
|
}
|
|
6751
|
-
var
|
|
6752
|
-
function
|
|
6753
|
-
|
|
6754
|
-
let a2 =
|
|
6755
|
-
c2 + o2 > window.innerWidth - 14 && (c2 = e5 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14),
|
|
6751
|
+
var J_ = document.getElementById("tooltip");
|
|
6752
|
+
function Y_(e5, t2, n2, r2, i2) {
|
|
6753
|
+
J_.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 ");
|
|
6754
|
+
let a2 = J_.getBoundingClientRect(), o2 = a2.width || 220, s2 = a2.height || 80, c2 = e5 + 14, l2 = t2 + 14;
|
|
6755
|
+
c2 + o2 > window.innerWidth - 14 && (c2 = e5 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14), J_.style.left = "".concat(Math.max(14, c2), "px"), J_.style.top = "".concat(Math.max(14, l2), "px"), J_.classList.add("visible");
|
|
6756
6756
|
}
|
|
6757
|
-
function
|
|
6758
|
-
|
|
6757
|
+
function X_() {
|
|
6758
|
+
J_.classList.remove("visible");
|
|
6759
6759
|
}
|
|
6760
|
-
var
|
|
6761
|
-
function
|
|
6760
|
+
var Z_ = { 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", 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" }, Q_ = { 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" }, $_ = { 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" }, ev = { conjunction: "fusion & amplification", opposition: "polarity & integration", trine: "ease & natural flow", square: "tension & growth", sextile: "opportunity & cooperation", quincunx: "adjustment & recalibration", semisquare: "friction & minor tension" };
|
|
6761
|
+
function tv(e5) {
|
|
6762
6762
|
return Math.floor((e5 % 360 + 360) % 360 / 30);
|
|
6763
6763
|
}
|
|
6764
|
-
var
|
|
6765
|
-
function
|
|
6766
|
-
let n2 = e5.toLowerCase(), r2 =
|
|
6764
|
+
var nv = { sun: [4], moon: [3], mercury: [2, 5], venus: [1, 6], mars: [0, 7], jupiter: [8, 11], saturn: [9, 10] }, rv = { sun: 0, moon: 1, mercury: 5, venus: 11, mars: 9, jupiter: 3, saturn: 6 };
|
|
6765
|
+
function iv(e5, t2) {
|
|
6766
|
+
let n2 = e5.toLowerCase(), r2 = tv(t2), i2 = nv[n2];
|
|
6767
6767
|
if (i2 != null && i2.includes(r2)) return { type: "domicile", label: "Domicile", emoji: "\u2302", cssClass: "dignity-domicile" };
|
|
6768
6768
|
if (i2 && i2.map((e6) => (e6 + 6) % 12).includes(r2)) return { type: "detriment", label: "Detriment", emoji: "\u2B07", cssClass: "dignity-detriment" };
|
|
6769
|
-
let a2 =
|
|
6769
|
+
let a2 = rv[n2];
|
|
6770
6770
|
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;
|
|
6771
6771
|
}
|
|
6772
|
-
var
|
|
6773
|
-
function
|
|
6772
|
+
var av = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], ov = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"];
|
|
6773
|
+
function sv(e5, t2) {
|
|
6774
6774
|
return [e5.toLowerCase(), t2.toLowerCase()].sort().join("|");
|
|
6775
6775
|
}
|
|
6776
|
-
function
|
|
6776
|
+
function cv(e5, t2) {
|
|
6777
6777
|
return e5.filter((e6) => {
|
|
6778
6778
|
var n2;
|
|
6779
6779
|
return ((n2 = e6.type) == null ? "" : n2).toLowerCase() === t2;
|
|
6780
6780
|
});
|
|
6781
6781
|
}
|
|
6782
|
-
function
|
|
6783
|
-
let n2 = [], r2 =
|
|
6782
|
+
function lv(e5, t2) {
|
|
6783
|
+
let n2 = [], r2 = cv(e5, "square"), i2 = cv(e5, "opposition"), a2 = cv(e5, "trine"), o2 = cv(e5, "sextile"), s2 = cv(e5, "quincunx"), c2 = /* @__PURE__ */ new Set();
|
|
6784
6784
|
for (let e6 of i2) {
|
|
6785
6785
|
let i3 = e6.planet1.toLowerCase(), a3 = e6.planet2.toLowerCase(), o3 = r2.filter((e7) => e7.planet1.toLowerCase() === i3 || e7.planet2.toLowerCase() === i3);
|
|
6786
6786
|
for (let e7 of o3) {
|
|
@@ -6789,8 +6789,8 @@ function cv(e5, t2) {
|
|
|
6789
6789
|
let s3 = [i3, a3, o4].sort().join("|");
|
|
6790
6790
|
if (!c2.has(s3) && r2.find((e8) => e8.planet1.toLowerCase() === o4 && e8.planet2.toLowerCase() === a3 || e8.planet2.toLowerCase() === o4 && e8.planet1.toLowerCase() === a3)) {
|
|
6791
6791
|
c2.add(s3);
|
|
6792
|
-
let e8 = t2.find((e9) => e9.name.toLowerCase() === o4), r3 = e8 ? Z(
|
|
6793
|
-
n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [
|
|
6792
|
+
let e8 = t2.find((e9) => e9.name.toLowerCase() === o4), r3 = e8 ? Z(ov[tv(e8.longitude)]) : "";
|
|
6793
|
+
n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [sv(i3, a3), sv(i3, o4), sv(a3, o4)] });
|
|
6794
6794
|
break;
|
|
6795
6795
|
}
|
|
6796
6796
|
}
|
|
@@ -6800,7 +6800,7 @@ function cv(e5, t2) {
|
|
|
6800
6800
|
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));
|
|
6801
6801
|
if (!c3) continue;
|
|
6802
6802
|
let u3 = o3.find((e7) => e7 !== c3), d3 = s3.find((e7) => e7 !== c3), f3 = [u3, c3, d3].sort().join("|");
|
|
6803
|
-
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: [
|
|
6803
|
+
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: [sv(u3, c3), sv(c3, d3), sv(u3, d3)] }));
|
|
6804
6804
|
}
|
|
6805
6805
|
if (i2.length >= 2 && r2.length >= 4) for (let e6 = 0; e6 < i2.length; e6++) for (let a3 = e6 + 1; a3 < i2.length; a3++) {
|
|
6806
6806
|
let o3 = i2[e6], s3 = i2[a3], [c3, l3] = [o3.planet1.toLowerCase(), o3.planet2.toLowerCase()], [u3, d3] = [s3.planet1.toLowerCase(), s3.planet2.toLowerCase()];
|
|
@@ -6811,19 +6811,19 @@ function cv(e5, t2) {
|
|
|
6811
6811
|
var n3, r3;
|
|
6812
6812
|
return { name: e8, lon: (n3 = (r3 = t2.find((t3) => t3.name.toLowerCase() === e8)) == null ? void 0 : r3.longitude) == null ? 0 : n3 };
|
|
6813
6813
|
}).sort((e8, t3) => e8.lon - t3.lon).map((e8) => e8.name);
|
|
6814
|
-
n2.push({ name: "Grand Cross", description: e7.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [
|
|
6814
|
+
n2.push({ name: "Grand Cross", description: e7.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [sv(c3, l3), sv(u3, d3), ...f3.map(([e8, t3]) => sv(e8, t3))] });
|
|
6815
6815
|
}
|
|
6816
6816
|
}
|
|
6817
6817
|
let u2 = /* @__PURE__ */ new Set(["north node", "south node", "true node", "chiron"]), d2 = t2.filter((e6) => !u2.has(e6.name.toLowerCase())).map((e6) => ({ name: e6.name.toLowerCase(), lon: e6.longitude })), f2 = /* @__PURE__ */ new Map();
|
|
6818
6818
|
for (let { name: e6, lon: t3 } of d2) {
|
|
6819
6819
|
var p2;
|
|
6820
|
-
let n3 =
|
|
6820
|
+
let n3 = tv(t3), r3 = (p2 = f2.get(n3)) == null ? [] : p2;
|
|
6821
6821
|
r3.push(e6), f2.set(n3, r3);
|
|
6822
6822
|
}
|
|
6823
6823
|
for (let [e6, t3] of f2) if (t3.length >= 3) {
|
|
6824
6824
|
let r3 = [...t3].sort().join("|"), i3 = [];
|
|
6825
|
-
for (let e7 = 0; e7 < t3.length; e7++) for (let n3 = e7 + 1; n3 < t3.length; n3++) i3.push(
|
|
6826
|
-
n2.push({ name: "Stellium", description: "".concat(
|
|
6825
|
+
for (let e7 = 0; e7 < t3.length; e7++) for (let n3 = e7 + 1; n3 < t3.length; n3++) i3.push(sv(t3[e7], t3[n3]));
|
|
6826
|
+
n2.push({ name: "Stellium", description: "".concat(P_[e6], ": ").concat(t3.map(Z).join(", ")), planets: t3, aspectKeys: i3, _dedupeKey: r3 });
|
|
6827
6827
|
}
|
|
6828
6828
|
let m2 = [...d2].sort((e6, t3) => e6.lon - t3.lon), h2 = [...m2, ...m2.map((e6) => ({ ...e6, lon: e6.lon + 360 }))], g2 = /* @__PURE__ */ new Set();
|
|
6829
6829
|
for (let e6 = 0; e6 < h2.length - 2; e6++) {
|
|
@@ -6836,7 +6836,7 @@ function cv(e5, t2) {
|
|
|
6836
6836
|
if (g2.has(t4)) continue;
|
|
6837
6837
|
if (g2.add(t4), !n2.some((e8) => e8._dedupeKey === t4)) {
|
|
6838
6838
|
let t5 = [];
|
|
6839
|
-
for (let n3 = 0; n3 < e7.length; n3++) for (let r4 = n3 + 1; r4 < e7.length; r4++) t5.push(
|
|
6839
|
+
for (let n3 = 0; n3 < e7.length; n3++) for (let r4 = n3 + 1; r4 < e7.length; r4++) t5.push(sv(e7[n3], e7[r4]));
|
|
6840
6840
|
n2.push({ name: "Stellium", description: "Tight cluster: ".concat(e7.map(Z).join(", ")), planets: e7, aspectKeys: t5 });
|
|
6841
6841
|
}
|
|
6842
6842
|
}
|
|
@@ -6846,7 +6846,7 @@ function cv(e5, t2) {
|
|
|
6846
6846
|
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));
|
|
6847
6847
|
if (!l3) continue;
|
|
6848
6848
|
let u3 = a3.find((e7) => e7 !== l3), d3 = c3.find((e7) => e7 !== l3), f3 = [l3, u3, d3].sort().join("|");
|
|
6849
|
-
_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: [
|
|
6849
|
+
_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: [sv(l3, u3), sv(l3, d3), sv(u3, d3)] }));
|
|
6850
6850
|
}
|
|
6851
6851
|
let v2 = /* @__PURE__ */ new Set(), ee2 = n2.filter((e6) => e6.name === "Grand Trine");
|
|
6852
6852
|
for (let e6 of ee2) {
|
|
@@ -6857,43 +6857,43 @@ function cv(e5, t2) {
|
|
|
6857
6857
|
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);
|
|
6858
6858
|
if (!p3 || !m3) continue;
|
|
6859
6859
|
let h3 = [t3, r3, a3, f3].sort().join("|");
|
|
6860
|
-
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,
|
|
6860
|
+
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, sv(f3, c3), sv(f3, l3), sv(f3, u3)] }));
|
|
6861
6861
|
}
|
|
6862
6862
|
}
|
|
6863
6863
|
for (let e6 of n2) delete e6._dedupeKey;
|
|
6864
6864
|
return n2;
|
|
6865
6865
|
}
|
|
6866
|
-
var
|
|
6867
|
-
function
|
|
6868
|
-
|
|
6866
|
+
var uv = null, dv = null, Q = null, fv = null, pv = null, mv = null;
|
|
6867
|
+
function hv(e5) {
|
|
6868
|
+
mv = e5;
|
|
6869
6869
|
}
|
|
6870
|
-
var
|
|
6871
|
-
function
|
|
6870
|
+
var gv = /* @__PURE__ */ new Map();
|
|
6871
|
+
function _v() {
|
|
6872
6872
|
var e5;
|
|
6873
|
-
if (
|
|
6873
|
+
if (uv) return uv;
|
|
6874
6874
|
let t2 = document.getElementById("info-panel");
|
|
6875
|
-
if (t2) return
|
|
6876
|
-
|
|
6875
|
+
if (t2) return uv = t2, uv;
|
|
6876
|
+
uv = document.createElement("div"), uv.id = "info-panel", uv.className = "info-panel";
|
|
6877
6877
|
let n2 = document.getElementById("chart-container");
|
|
6878
|
-
return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(
|
|
6878
|
+
return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(uv, n2.nextSibling) : (e5 = document.getElementById("app")) == null || e5.appendChild(uv), uv;
|
|
6879
6879
|
}
|
|
6880
|
-
function
|
|
6880
|
+
function vv(e5, t2, n2) {
|
|
6881
6881
|
var r2, i2, a2, o2;
|
|
6882
|
-
let s2 =
|
|
6882
|
+
let s2 = _v(), c2 = (r2 = M_[t2.name.toLowerCase()]) == null ? "\u2605" : r2, l2 = (i2 = N_[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : i2, u2 = iv(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) => {
|
|
6883
6883
|
var n3, r3;
|
|
6884
6884
|
return ((n3 = e6.orb) == null ? 99 : n3) - ((r3 = t3.orb) == null ? 99 : r3);
|
|
6885
6885
|
}), p2 = f2.length ? f2.map((e6) => {
|
|
6886
6886
|
var n3, r3, i3, a3, o3, s3, c3;
|
|
6887
|
-
let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 =
|
|
6887
|
+
let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 = M_[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = F_[(a3 = (o3 = e6.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e6.type : i3) == null ? "\u2014" : r3, f3 = (s3 = I_((c3 = e6.type) == null ? "" : c3)) == null ? "#888" : s3, p3 = e6.orb == null ? "" : "".concat(e6.orb.toFixed(1), "\xB0"), m3 = e6.applying === true ? "\u2197" : e6.applying === false ? "\u2198" : "\xB7";
|
|
6888
6888
|
return '<div class="aspect-row">\n <span class="aspect-dot" style="background:'.concat(f3, '"></span>\n <span class="aspect-sym" style="color:').concat(f3, '">').concat(d3, '</span>\n <span class="aspect-other">').concat(u3, " ").concat(Z(l3), '</span>\n <span class="aspect-meta">').concat(p3, " ").concat(m3, "</span>\n </div>");
|
|
6889
|
-
}).join("") : '<div class="no-aspects">No listed aspects</div>', m2 =
|
|
6890
|
-
s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(
|
|
6891
|
-
|
|
6889
|
+
}).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
|
|
6890
|
+
s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(U_(t2.longitude)).concat(t2.house ? " \xB7 House ".concat(t2.house) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Aspects</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), s2.classList.add("visible"), s2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (a2 = document.getElementById("info-close-btn")) == null || a2.addEventListener("click", () => {
|
|
6891
|
+
Tv(), Nv();
|
|
6892
6892
|
}), (o2 = document.getElementById("ask-claude-btn")) == null || o2.addEventListener("click", () => {
|
|
6893
6893
|
var e6, n3, r3, i3, a3;
|
|
6894
|
-
if (!
|
|
6894
|
+
if (!pv) return;
|
|
6895
6895
|
let o3 = document.getElementById("ask-claude-btn");
|
|
6896
|
-
!o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"),
|
|
6896
|
+
!o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), pv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e6 = t2.sign) == null ? U_(t2.longitude) : e6, house: (n3 = t2.house) == null ? null : n3, retrograde: (r3 = t2.retrograde) == null ? false : r3, speed: (i3 = t2.speed) == null ? null : i3, dignity: (a3 = u2 == null ? void 0 : u2.label) == null ? null : a3, aspects: f2.map((e7) => ({ other: e7.planet1.toLowerCase() === t2.name.toLowerCase() ? e7.planet2 : e7.planet1, type: e7.type, orb: e7.orb, applying: e7.applying })) } }).then(() => {
|
|
6897
6897
|
o3.textContent = "\u2713 Sent to Claude", o3.classList.remove("sending"), o3.classList.add("sent"), setTimeout(() => {
|
|
6898
6898
|
o3.textContent = "\u2728 Ask Claude to interpret", o3.classList.remove("sent"), o3.disabled = false;
|
|
6899
6899
|
}, 2500);
|
|
@@ -6902,16 +6902,16 @@ function _v(e5, t2, n2) {
|
|
|
6902
6902
|
}));
|
|
6903
6903
|
});
|
|
6904
6904
|
}
|
|
6905
|
-
function
|
|
6905
|
+
function yv(e5, t2, n2) {
|
|
6906
6906
|
var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
|
|
6907
|
-
let p2 =
|
|
6907
|
+
let p2 = _v(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = M_[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = M_[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = F_[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = I_((c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2), y2 = t2.orb == null ? "unknown orb" : "".concat(t2.orb.toFixed(2), "\xB0"), b2 = t2.applying === true ? "Applying (growing closer)" : t2.applying === false ? "Separating (moving apart)" : "", x2 = m2 ? "".concat(U_(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(U_(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
|
|
6908
6908
|
p2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(ee2, '">').concat(v2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z((u2 = t2.type) == null ? "Aspect" : u2), '</strong>\n </div>\n <div class="info-pos">').concat(y2).concat(b2 ? " \xB7 ".concat(b2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in Aspect</div>\n <div class="aspect-pair-row">\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(g2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet1), '</div>\n <div class="aspect-pair-pos">').concat(x2, '</div>\n </div>\n </div>\n <span class="aspect-pair-sym" style="color:').concat(ee2, '">').concat(v2, '</span>\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(_2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet2), '</div>\n <div class="aspect-pair-pos">').concat(S2, "</div>\n </div>\n </div>\n </div>\n ").concat(C2, "\n "), p2.classList.add("visible"), p2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (d2 = document.getElementById("info-close-btn")) == null || d2.addEventListener("click", () => {
|
|
6909
|
-
|
|
6909
|
+
Tv(), Nv();
|
|
6910
6910
|
}), (f2 = document.getElementById("ask-claude-btn")) == null || f2.addEventListener("click", () => {
|
|
6911
6911
|
var e6, n3, r3, i3, a3, o3, s3, c3;
|
|
6912
|
-
if (!
|
|
6912
|
+
if (!pv) return;
|
|
6913
6913
|
let l3 = document.getElementById("ask-claude-btn");
|
|
6914
|
-
!l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"),
|
|
6914
|
+
!l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), pv({ type: "aspect", data: { planet1: t2.planet1, planet2: t2.planet2, aspect_type: (e6 = t2.type) == null ? null : e6, orb: (n3 = t2.orb) == null ? null : n3, applying: (r3 = t2.applying) == null ? null : r3, angle: (i3 = t2.angle) == null ? null : i3, planet1_sign: (a3 = m2 == null ? void 0 : m2.sign) == null ? null : a3, planet1_house: (o3 = m2 == null ? void 0 : m2.house) == null ? null : o3, planet2_sign: (s3 = h2 == null ? void 0 : h2.sign) == null ? null : s3, planet2_house: (c3 = h2 == null ? void 0 : h2.house) == null ? null : c3 } }).then(() => {
|
|
6915
6915
|
l3.textContent = "Sent", l3.classList.remove("sending"), l3.classList.add("sent"), setTimeout(() => {
|
|
6916
6916
|
l3.textContent = "Ask Claude \u2014 Interpret", l3.classList.remove("sent"), l3.disabled = false;
|
|
6917
6917
|
}, 2500);
|
|
@@ -6920,22 +6920,22 @@ function vv(e5, t2, n2) {
|
|
|
6920
6920
|
}));
|
|
6921
6921
|
});
|
|
6922
6922
|
}
|
|
6923
|
-
function
|
|
6923
|
+
function bv(e5, t2, n2) {
|
|
6924
6924
|
var r2, i2, a2, o2, s2;
|
|
6925
|
-
let c2 =
|
|
6925
|
+
let c2 = _v(), l2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), u2 = (r2 = N_[l2]) == null ? "" : r2, d2 = (i2 = (a2 = t2.sign) == null ? P_[l2] : a2) == null ? "" : i2, f2 = n2.filter((e6) => e6.house === t2.number), p2 = f2.length ? f2.map((e6) => {
|
|
6926
6926
|
var t3;
|
|
6927
|
-
let n3 = (t3 =
|
|
6927
|
+
let n3 = (t3 = M_[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = U_(e6.longitude), i3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "";
|
|
6928
6928
|
return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e6.name)).concat(i3, '</span>\n <span class="aspect-meta">').concat(r3, "</span>\n </div>");
|
|
6929
|
-
}).join("") : '<div class="no-aspects">No planets in this house</div>', m2 =
|
|
6929
|
+
}).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
|
|
6930
6930
|
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>House ').concat(t2.number, '</strong>\n </div>\n <div class="info-pos">').concat(u2, " ").concat(d2, " on cusp").concat(t2.ruler ? " \xB7 ruled by ".concat(Z(t2.ruler)) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in House ').concat(t2.number, '</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
|
|
6931
|
-
|
|
6931
|
+
Tv(), Nv();
|
|
6932
6932
|
}), (s2 = document.getElementById("ask-claude-btn")) == null || s2.addEventListener("click", () => {
|
|
6933
6933
|
var e6;
|
|
6934
|
-
if (!
|
|
6934
|
+
if (!pv) return;
|
|
6935
6935
|
let n3 = document.getElementById("ask-claude-btn");
|
|
6936
|
-
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"),
|
|
6936
|
+
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), pv({ 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) => {
|
|
6937
6937
|
var t3, n4;
|
|
6938
|
-
return { name: e7.name, sign: (t3 = e7.sign) == null ?
|
|
6938
|
+
return { name: e7.name, sign: (t3 = e7.sign) == null ? U_(e7.longitude) : t3, retrograde: (n4 = e7.retrograde) == null ? false : n4 };
|
|
6939
6939
|
}) } }).then(() => {
|
|
6940
6940
|
n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
|
|
6941
6941
|
n3.textContent = "Ask Claude \u2014 Interpret", n3.classList.remove("sent"), n3.disabled = false;
|
|
@@ -6945,22 +6945,22 @@ function yv(e5, t2, n2) {
|
|
|
6945
6945
|
}));
|
|
6946
6946
|
});
|
|
6947
6947
|
}
|
|
6948
|
-
var
|
|
6949
|
-
function
|
|
6948
|
+
var xv = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
|
|
6949
|
+
function Sv(e5, t2, n2) {
|
|
6950
6950
|
var r2, i2, a2, o2, s2;
|
|
6951
|
-
let c2 =
|
|
6951
|
+
let c2 = _v(), l2 = P_[t2], u2 = N_[t2], d2 = Z(av[t2]), f2 = Z(ov[t2]), p2 = (r2 = xv[l2]) == null ? "" : r2, m2 = (i2 = M_[p2.toLowerCase()]) == null ? "" : i2, h2 = n2.filter((e6) => Math.floor((e6.longitude % 360 + 360) % 360 / 30) === t2), g2 = h2.length ? h2.map((e6) => {
|
|
6952
6952
|
var t3;
|
|
6953
|
-
let n3 = (t3 =
|
|
6953
|
+
let n3 = (t3 = M_[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 30 - r3) * 60), a3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "", o3 = iv(e6.name, e6.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
|
|
6954
6954
|
return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e6.name)).concat(a3).concat(s3, '</span>\n <span class="aspect-meta">').concat(r3, "\xB0").concat(i3.toString().padStart(2, "0"), "\u2032</span>\n </div>");
|
|
6955
|
-
}).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 =
|
|
6956
|
-
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(
|
|
6957
|
-
|
|
6955
|
+
}).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 = pv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Ask Claude \u2014 Interpret '.concat(l2, "</button>") : "";
|
|
6956
|
+
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(R_(t2), '">').concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(l2, '</strong>\n </div>\n <div class="info-pos">').concat(_2, " ").concat(d2, " \xB7 ").concat(f2).concat(p2 ? " \xB7 Ruled by ".concat(m2, " ").concat(p2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in ').concat(l2, '</div>\n <div class="aspects-list">').concat(g2, "</div>\n ").concat(v2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
|
|
6957
|
+
Tv(), Nv();
|
|
6958
6958
|
}), (s2 = document.getElementById("sign-ask-claude-btn")) == null || s2.addEventListener("click", () => {
|
|
6959
|
-
if (!
|
|
6959
|
+
if (!pv) return;
|
|
6960
6960
|
let e6 = document.getElementById("sign-ask-claude-btn");
|
|
6961
|
-
!e6 || e6.disabled || (e6.disabled = true, e6.textContent = "Sending\u2026", e6.classList.add("sending"),
|
|
6961
|
+
!e6 || e6.disabled || (e6.disabled = true, e6.textContent = "Sending\u2026", e6.classList.add("sending"), pv({ type: "sign", data: { sign: l2, element: d2, modality: f2, ruler: p2 || null, planets_in_sign: h2.map((e7) => {
|
|
6962
6962
|
var t3, n3;
|
|
6963
|
-
return { name: e7.name, longitude: e7.longitude, position:
|
|
6963
|
+
return { name: e7.name, longitude: e7.longitude, position: U_(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3, house: (n3 = e7.house) == null ? null : n3 };
|
|
6964
6964
|
}) } }).then(() => {
|
|
6965
6965
|
e6.textContent = "Sent", e6.classList.remove("sending"), e6.classList.add("sent"), setTimeout(() => {
|
|
6966
6966
|
e6.textContent = "Ask Claude \u2014 Interpret ".concat(l2), e6.classList.remove("sent"), e6.disabled = false;
|
|
@@ -6970,17 +6970,17 @@ function xv(e5, t2, n2) {
|
|
|
6970
6970
|
}));
|
|
6971
6971
|
});
|
|
6972
6972
|
}
|
|
6973
|
-
var
|
|
6974
|
-
function
|
|
6973
|
+
var Cv = { 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"] } };
|
|
6974
|
+
function wv(e5, t2, n2) {
|
|
6975
6975
|
var r2, i2;
|
|
6976
|
-
let a2 =
|
|
6976
|
+
let a2 = _v(), o2 = Cv[t2];
|
|
6977
6977
|
if (!o2) return;
|
|
6978
|
-
let s2 =
|
|
6978
|
+
let s2 = U_(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(av[c2]), u2 = Z(ov[c2]), d2 = N_[c2], f2 = R_(c2);
|
|
6979
6979
|
a2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:#7060b8;font-family:system-ui;font-weight:700;font-size:15px">'.concat(o2.symbol, '</span>\n <div class="info-title">\n <div class="info-name-row"><strong>').concat(o2.title, '</strong></div>\n <div class="info-pos">').concat(o2.keyword, '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="planet-in-sign" style="margin:8px 0 4px">\n <span style="color:').concat(f2, ';font-family:serif;font-size:14px;margin-right:4px">').concat(d2, '</span>\n <span style="font-size:12px;color:var(--text-muted,#888)">').concat(s2, " \xB7 ").concat(l2, " \xB7 ").concat(u2, '</span>\n </div>\n <div class="planet-meaning" style="font-size:12px;line-height:1.55;margin-bottom:8px">').concat(o2.meaning, '</div>\n <div class="aspects-title">Themes</div>\n <div class="aspects-list">\n ').concat(o2.themes.map((e6) => '<div class="aspect-row"><span class="aspect-other">'.concat(e6, "</span></div>")).join(""), '\n </div>\n <div class="panel-actions" style="margin-top:10px">\n <button class="ask-claude-btn" id="angle-ask-claude-btn">\n Ask Claude \u2014 Interpret ').concat(o2.title, "\n </button>\n </div>\n "), a2.classList.add("visible"), a2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (r2 = document.getElementById("info-close-btn")) == null || r2.addEventListener("click", () => {
|
|
6980
|
-
|
|
6980
|
+
Tv(), Nv();
|
|
6981
6981
|
}), (i2 = document.getElementById("angle-ask-claude-btn")) == null || i2.addEventListener("click", (e6) => {
|
|
6982
6982
|
let t3 = e6.currentTarget;
|
|
6983
|
-
t3.textContent = "Sending\u2026", t3.disabled = true,
|
|
6983
|
+
t3.textContent = "Sending\u2026", t3.disabled = true, pv == null || pv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: P_[c2], position: s2, element: l2, modality: u2 } }).then(() => {
|
|
6984
6984
|
t3.textContent = "Sent", setTimeout(() => {
|
|
6985
6985
|
t3.textContent = "Ask Claude \u2014 Interpret ".concat(o2.title), t3.disabled = false;
|
|
6986
6986
|
}, 2500);
|
|
@@ -6989,22 +6989,22 @@ function Cv(e5, t2, n2) {
|
|
|
6989
6989
|
});
|
|
6990
6990
|
});
|
|
6991
6991
|
}
|
|
6992
|
-
function
|
|
6993
|
-
|
|
6992
|
+
function Tv() {
|
|
6993
|
+
uv == null || uv.classList.remove("visible"), dv = null, kv(), mv == null || mv(null);
|
|
6994
6994
|
}
|
|
6995
|
-
var
|
|
6996
|
-
function
|
|
6997
|
-
let n2 =
|
|
6995
|
+
var Ev = null, Dv = 0;
|
|
6996
|
+
function Ov(e5, t2 = false) {
|
|
6997
|
+
let n2 = Ev;
|
|
6998
6998
|
if (!n2) return;
|
|
6999
|
-
let r2 =
|
|
6999
|
+
let r2 = Dv, i2 = Y(e5, w_, r2), a2 = Y(e5, 198, r2);
|
|
7000
7000
|
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";
|
|
7001
7001
|
}
|
|
7002
|
-
function
|
|
7003
|
-
|
|
7002
|
+
function kv() {
|
|
7003
|
+
Ev && (Ev.style.opacity = "0");
|
|
7004
7004
|
}
|
|
7005
|
-
function
|
|
7005
|
+
function Av(e5) {
|
|
7006
7006
|
let t2 = e5.toLowerCase(), n2 = /* @__PURE__ */ new Set();
|
|
7007
|
-
|
|
7007
|
+
gv.forEach(({ vis: e6, color: r2, symbolEls: i2 }, a2) => {
|
|
7008
7008
|
let o2 = a2.split("|");
|
|
7009
7009
|
if (o2.includes(t2)) {
|
|
7010
7010
|
e6.style.stroke = r2, e6.style.strokeOpacity = "0.95", e6.style.strokeWidth = "2", e6.setAttribute("filter", "url(#aspect-glow)"), i2.forEach((e7) => {
|
|
@@ -7024,9 +7024,9 @@ function kv(e5) {
|
|
|
7024
7024
|
e6.classList.toggle("dim", i2 !== t2 && !n2.has(i2));
|
|
7025
7025
|
});
|
|
7026
7026
|
}
|
|
7027
|
-
function
|
|
7027
|
+
function jv(e5, t2) {
|
|
7028
7028
|
let n2 = new Set(e5.map((e6) => e6.toLowerCase())), r2 = new Set(t2);
|
|
7029
|
-
|
|
7029
|
+
gv.forEach(({ vis: e6, color: t3, symbolEls: n3 }, i2) => {
|
|
7030
7030
|
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) => {
|
|
7031
7031
|
e7.style.opacity = "1";
|
|
7032
7032
|
})) : (e6.style.strokeOpacity = "0.05", e6.style.strokeWidth = "0.7", e6.removeAttribute("filter"), n3.forEach((e7) => {
|
|
@@ -7040,8 +7040,8 @@ function Av(e5, t2) {
|
|
|
7040
7040
|
return e6.classList.toggle("dim", !n2.has((t3 = e6.dataset.planet) == null ? "" : t3));
|
|
7041
7041
|
});
|
|
7042
7042
|
}
|
|
7043
|
-
function
|
|
7044
|
-
|
|
7043
|
+
function Mv() {
|
|
7044
|
+
gv.forEach(({ vis: e5, symbolEls: t2 }) => {
|
|
7045
7045
|
e5.style.strokeOpacity = "0.05", e5.style.strokeWidth = "0.7", e5.removeAttribute("filter"), t2.forEach((e6) => {
|
|
7046
7046
|
e6.style.opacity = "0.12";
|
|
7047
7047
|
});
|
|
@@ -7049,17 +7049,17 @@ function jv() {
|
|
|
7049
7049
|
e5.style.opacity = "0.35";
|
|
7050
7050
|
}), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.add("dim"));
|
|
7051
7051
|
}
|
|
7052
|
-
function
|
|
7053
|
-
|
|
7052
|
+
function Nv() {
|
|
7053
|
+
gv.forEach(({ vis: e5, color: t2, baseOpacity: n2, baseWidth: r2, symbolEls: i2 }) => {
|
|
7054
7054
|
e5.style.stroke = t2, e5.style.strokeOpacity = n2, e5.style.strokeWidth = r2, e5.removeAttribute("filter"), i2.forEach((e6) => {
|
|
7055
7055
|
e6.style.opacity = "";
|
|
7056
7056
|
});
|
|
7057
7057
|
}), Q == null || Q.querySelectorAll(".planet-glyph-group").forEach((e5) => {
|
|
7058
7058
|
e5.style.opacity = "";
|
|
7059
|
-
}), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")),
|
|
7059
|
+
}), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")), Lv();
|
|
7060
7060
|
}
|
|
7061
|
-
var
|
|
7062
|
-
function
|
|
7061
|
+
var Pv = { "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)" }, Fv = { "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)" };
|
|
7062
|
+
function Iv(e5, t2, n2) {
|
|
7063
7063
|
var r2, i2;
|
|
7064
7064
|
if (!Q) return null;
|
|
7065
7065
|
let a2 = /* @__PURE__ */ new Map();
|
|
@@ -7067,26 +7067,26 @@ function Fv(e5, t2, n2) {
|
|
|
7067
7067
|
let o2 = [];
|
|
7068
7068
|
for (let t3 of e5.planets) {
|
|
7069
7069
|
let e6 = a2.get(t3.toLowerCase());
|
|
7070
|
-
e6 != null && o2.push(Y(e6,
|
|
7070
|
+
e6 != null && o2.push(Y(e6, k_, n2));
|
|
7071
7071
|
}
|
|
7072
7072
|
if (o2.length < 2) return null;
|
|
7073
|
-
let s2 = (r2 =
|
|
7073
|
+
let s2 = (r2 = Pv[e5.name]) == null ? "rgba(128,128,128,0.12)" : r2, c2 = (i2 = Fv[e5.name]) == null ? "rgba(128,128,128,0.60)" : i2, l2;
|
|
7074
7074
|
if (o2.length === 2) {
|
|
7075
7075
|
let e6 = X("line");
|
|
7076
7076
|
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;
|
|
7077
7077
|
} else {
|
|
7078
|
-
let e6 = [...o2].sort((e7, t4) => Math.atan2(e7.y -
|
|
7078
|
+
let e6 = [...o2].sort((e7, t4) => Math.atan2(e7.y - C_, e7.x - S_) - Math.atan2(t4.y - C_, t4.x - S_)).map((e7) => "".concat(e7.x.toFixed(1), ",").concat(e7.y.toFixed(1))).join(" "), t3 = X("polygon");
|
|
7079
7079
|
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;
|
|
7080
7080
|
}
|
|
7081
7081
|
l2.setAttribute("pointer-events", "none"), l2.setAttribute("class", "pattern-overlay");
|
|
7082
7082
|
let u2 = Q.querySelector(".aspect-hit");
|
|
7083
7083
|
return u2 ? Q.insertBefore(l2, u2) : Q.appendChild(l2), l2;
|
|
7084
7084
|
}
|
|
7085
|
-
function
|
|
7085
|
+
function Lv() {
|
|
7086
7086
|
Q == null || Q.querySelectorAll(".pattern-overlay").forEach((e5) => e5.remove());
|
|
7087
7087
|
}
|
|
7088
|
-
function
|
|
7089
|
-
|
|
7088
|
+
function Rv(e5) {
|
|
7089
|
+
gv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, symbolEls: a2 }) => {
|
|
7090
7090
|
e5 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2) : t2.style.strokeOpacity = "0", a2.forEach((t3) => {
|
|
7091
7091
|
t3.style.display = e5 ? "" : "none";
|
|
7092
7092
|
});
|
|
@@ -7094,8 +7094,8 @@ function Lv(e5) {
|
|
|
7094
7094
|
t2.style.pointerEvents = e5 ? "all" : "none";
|
|
7095
7095
|
});
|
|
7096
7096
|
}
|
|
7097
|
-
function
|
|
7098
|
-
|
|
7097
|
+
function zv(e5) {
|
|
7098
|
+
gv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, orb: a2, symbolEls: o2 }) => {
|
|
7099
7099
|
a2 <= e5 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2, t2.style.display = "") : t2.style.display = "none", o2.forEach((t3) => {
|
|
7100
7100
|
t3.style.display = a2 <= e5 ? "" : "none";
|
|
7101
7101
|
});
|
|
@@ -7103,12 +7103,12 @@ function Rv(e5) {
|
|
|
7103
7103
|
e6.style.display = "";
|
|
7104
7104
|
});
|
|
7105
7105
|
}
|
|
7106
|
-
function
|
|
7106
|
+
function Bv(e5, t2, n2, r2, i2, a2, o2) {
|
|
7107
7107
|
var s2, c2, l2, u2, d2, f2, p2, m2, h2;
|
|
7108
|
-
|
|
7108
|
+
pv = a2 == null ? null : a2;
|
|
7109
7109
|
let g2 = e5.querySelector("#pan-zoom-controls");
|
|
7110
|
-
e5.innerHTML = "", g2 && e5.appendChild(g2),
|
|
7111
|
-
let _2 =
|
|
7110
|
+
e5.innerHTML = "", g2 && e5.appendChild(g2), gv.clear(), dv = null, Tv();
|
|
7111
|
+
let _2 = q_(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");
|
|
7112
7112
|
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;
|
|
7113
7113
|
{
|
|
7114
7114
|
let e6 = X("defs");
|
|
@@ -7126,80 +7126,82 @@ function zv(e5, t2, n2, r2, i2, a2, o2) {
|
|
|
7126
7126
|
let te2 = X("g");
|
|
7127
7127
|
te2.setAttribute("class", "chart-layer"), te2.style.setProperty("--layer-index", "5"), b2.appendChild(te2);
|
|
7128
7128
|
let ne2 = X("g");
|
|
7129
|
-
b2.appendChild(ne2),
|
|
7129
|
+
b2.appendChild(ne2), Dv = y2;
|
|
7130
7130
|
let T2 = X("line");
|
|
7131
|
-
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),
|
|
7131
|
+
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), Ev = T2;
|
|
7132
7132
|
let re2 = X("circle");
|
|
7133
7133
|
re2.setAttribute("cx", "250"), re2.setAttribute("cy", "250"), re2.setAttribute("r", "244"), re2.style.fill = "var(--bg, #faf9f5)", re2.setAttribute("stroke", "#d4cec8"), re2.setAttribute("stroke-width", "0.5"), re2.setAttribute("pointer-events", "none"), x2.appendChild(re2);
|
|
7134
|
-
let E2 =
|
|
7135
|
-
ie2.setAttribute("cx", "250"), ie2.setAttribute("cy", "250"), ie2.setAttribute("r", String(
|
|
7134
|
+
let E2 = L_(), ie2 = X("circle");
|
|
7135
|
+
ie2.setAttribute("cx", "250"), ie2.setAttribute("cy", "250"), ie2.setAttribute("r", String(w_)), ie2.setAttribute("fill", E2 ? "#141720" : "#f2ede6"), ie2.setAttribute("stroke", E2 ? "#252a38" : "#c0b8a8"), ie2.setAttribute("stroke-width", "0.5"), ie2.setAttribute("pointer-events", "none"), S2.appendChild(ie2);
|
|
7136
7136
|
let ae2 = X("circle");
|
|
7137
|
-
ae2.setAttribute("cx", "250"), ae2.setAttribute("cy", "250"), ae2.setAttribute("r", String(
|
|
7138
|
-
let oe2 = Array.from({ length: 12 }, (e6, t3) =>
|
|
7137
|
+
ae2.setAttribute("cx", "250"), ae2.setAttribute("cy", "250"), ae2.setAttribute("r", String(T_)), ae2.style.fill = "var(--bg, #faf9f5)", ae2.setAttribute("stroke", E2 ? "#2d3548" : "#c0b8a8"), ae2.setAttribute("stroke-width", "0.5"), ae2.setAttribute("pointer-events", "none"), S2.appendChild(ae2);
|
|
7138
|
+
let oe2 = Array.from({ length: 12 }, (e6, t3) => u_(t3, E2)), se2 = E2 ? "rgba(180,170,160,0.28)" : "rgba(100,90,80,0.22)", ce2 = E2 ? "rgba(180,170,160,0.50)" : "rgba(100,90,80,0.40)";
|
|
7139
7139
|
for (let e6 = 0; e6 < 12; e6++) {
|
|
7140
|
-
let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3,
|
|
7141
|
-
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(
|
|
7142
|
-
let { x: c3, y: l3 } = Y(t3,
|
|
7140
|
+
let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, w_, y2), i3 = Y(n3, w_, y2), a3 = Y(t3, T_, y2), o3 = Y(n3, T_, y2), s3 = X("path");
|
|
7141
|
+
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(w_, " ").concat(w_, " 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(T_, " ").concat(T_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", oe2[e6]), s3.setAttribute("pointer-events", "none"), b2.appendChild(s3);
|
|
7142
|
+
let { x: c3, y: l3 } = Y(t3, T_, y2), { x: u3, y: d3 } = Y(t3, w_, y2), f3 = X("line");
|
|
7143
7143
|
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", E2 ? "#2d3548" : "#c0b8a8"), f3.setAttribute("stroke-width", "0.5"), f3.setAttribute("pointer-events", "none"), S2.appendChild(f3);
|
|
7144
7144
|
let { x: p3, y: m3 } = Y(t3 + 15, 444 / 2, y2), h3 = X("text");
|
|
7145
|
-
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",
|
|
7145
|
+
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 = N_[e6], S2.appendChild(h3);
|
|
7146
7146
|
for (let e7 = 1; e7 < 30; e7++) {
|
|
7147
|
-
let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ?
|
|
7147
|
+
let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ? w_ - 7 : w_ - 3, { x: a4, y: o4 } = Y(n4, w_, y2), { x: s4, y: c4 } = Y(n4, i4, y2), l4 = X("line");
|
|
7148
7148
|
l4.setAttribute("x1", a4.toFixed(1)), l4.setAttribute("y1", o4.toFixed(1)), l4.setAttribute("x2", s4.toFixed(1)), l4.setAttribute("y2", c4.toFixed(1)), l4.setAttribute("stroke", r4 ? ce2 : se2), l4.setAttribute("stroke-width", r4 ? "0.8" : "0.5"), l4.setAttribute("pointer-events", "none"), S2.appendChild(l4);
|
|
7149
7149
|
}
|
|
7150
7150
|
}
|
|
7151
7151
|
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" };
|
|
7152
7152
|
for (let e6 = 0; e6 < 12; e6++) {
|
|
7153
7153
|
var ue2, de2;
|
|
7154
|
-
let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3,
|
|
7155
|
-
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(
|
|
7156
|
-
let c3 = Z(
|
|
7157
|
-
s3.addEventListener("mouseenter", (t4) =>
|
|
7158
|
-
|
|
7154
|
+
let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, w_, y2), i3 = Y(n3, w_, y2), a3 = Y(t3, T_, y2), o3 = Y(n3, T_, y2), s3 = X("path");
|
|
7155
|
+
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(w_, " ").concat(w_, " 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(T_, " ").concat(T_, " 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", Vv(s3, "".concat(P_[e6], " \u2014 click for sign info"));
|
|
7156
|
+
let c3 = Z(av[e6]), l3 = Z(ov[e6]), u3 = (ue2 = le2[P_[e6]]) == null ? "" : ue2, d3 = (de2 = $_[P_[e6]]) == null ? "" : de2, f3 = "".concat(d3 ? d3 + " \xB7 " : "").concat(c3, " \xB7 ").concat(l3).concat(u3 ? " \xB7 Ruled by ".concat(u3) : "");
|
|
7157
|
+
s3.addEventListener("mouseenter", (t4) => Y_(t4.clientX, t4.clientY, "".concat(N_[e6], " ").concat(P_[e6]), f3, "Click for sign detail")), s3.addEventListener("mousemove", (t4) => Y_(t4.clientX, t4.clientY, "".concat(N_[e6], " ").concat(P_[e6]), f3, "Click for sign detail")), s3.addEventListener("mouseleave", X_), s3.addEventListener("click", (t4) => {
|
|
7158
|
+
X_(), mv == null || mv("".concat(N_[e6], " ").concat(P_[e6])), Sv(t4, e6, _2);
|
|
7159
7159
|
}), ne2.appendChild(s3);
|
|
7160
7160
|
}
|
|
7161
7161
|
let fe2 = X("circle");
|
|
7162
|
-
|
|
7163
|
-
|
|
7162
|
+
fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(T_)), fe2.style.fill = "var(--surface, #f2f1ea)", fe2.setAttribute("pointer-events", "none"), C2.appendChild(fe2);
|
|
7163
|
+
let pe2 = X("circle");
|
|
7164
|
+
if (pe2.setAttribute("cx", "250"), pe2.setAttribute("cy", "250"), pe2.setAttribute("r", String(O_)), pe2.style.fill = "var(--bg, #faf9f5)", pe2.setAttribute("stroke", E2 ? "#2d3548" : "#c0b8a8"), pe2.setAttribute("stroke-width", "0.5"), pe2.setAttribute("pointer-events", "none"), C2.appendChild(pe2), v2.length > 0) for (let e6 = 0; e6 < v2.length; e6++) {
|
|
7165
|
+
let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], r3 = [1, 4, 7, 10].includes(t3.number), { x: i3, y: a3 } = Y(t3.cusp_lon, O_, y2), { x: o3, y: s3 } = Y(t3.cusp_lon, T_, y2), c3 = X("line");
|
|
7164
7166
|
c3.setAttribute("x1", i3.toFixed(1)), c3.setAttribute("y1", a3.toFixed(1)), c3.setAttribute("x2", o3.toFixed(1)), c3.setAttribute("y2", s3.toFixed(1)), c3.setAttribute("stroke", r3 ? "#7060b8" : E2 ? "#3a3450" : "#a89898"), c3.setAttribute("stroke-width", r3 ? "1.5" : "0.7"), c3.setAttribute("pointer-events", "none"), C2.appendChild(c3);
|
|
7165
|
-
let l3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: u3, y: d3 } = Y(t3.cusp_lon + l3 / 2,
|
|
7167
|
+
let l3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: u3, y: d3 } = Y(t3.cusp_lon + l3 / 2, D_, y2), f3 = X("text");
|
|
7166
7168
|
f3.setAttribute("x", u3.toFixed(1)), f3.setAttribute("y", d3.toFixed(1)), f3.setAttribute("text-anchor", "middle"), f3.setAttribute("dominant-baseline", "central"), f3.setAttribute("font-size", "9"), f3.setAttribute("fill", r3 ? "#7060b8" : "#90808a"), f3.setAttribute("pointer-events", "none"), f3.textContent = String(t3.number), C2.appendChild(f3);
|
|
7167
7169
|
}
|
|
7168
|
-
let
|
|
7169
|
-
for (let e6 of
|
|
7170
|
-
var
|
|
7171
|
-
let t3 =
|
|
7170
|
+
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" }];
|
|
7171
|
+
for (let e6 of ve2) {
|
|
7172
|
+
var ye2, be2;
|
|
7173
|
+
let t3 = Cv[e6.label], { x: n3, y: r3 } = Y(e6.lon, 256, y2);
|
|
7172
7174
|
n3 = Math.min(Math.max(n3, 14), 486), r3 = Math.min(Math.max(r3, 10), 490);
|
|
7173
7175
|
let i3 = X("text");
|
|
7174
7176
|
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", "#7060b8"), 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);
|
|
7175
7177
|
let a3 = X("circle");
|
|
7176
|
-
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",
|
|
7177
|
-
let o3 = (
|
|
7178
|
+
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", Vv(a3, "".concat((ye2 = t3 == null ? void 0 : t3.title) == null ? e6.label : ye2, " \u2014 click for interpretation"));
|
|
7179
|
+
let o3 = (be2 = t3 == null ? void 0 : t3.keyword) == null ? "" : be2, s3 = U_(e6.lon), c3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(s3);
|
|
7178
7180
|
a3.addEventListener("mouseenter", (n4) => {
|
|
7179
7181
|
var r4;
|
|
7180
|
-
|
|
7182
|
+
Y_(n4.clientX, n4.clientY, "".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4), c3, "Click for interpretation"), Ov(e6.lon), i3.style.opacity = "0.6";
|
|
7181
7183
|
}), a3.addEventListener("mouseleave", () => {
|
|
7182
|
-
|
|
7184
|
+
X_(), kv(), i3.style.opacity = "";
|
|
7183
7185
|
}), a3.addEventListener("click", (n4) => {
|
|
7184
7186
|
var r4;
|
|
7185
|
-
|
|
7187
|
+
X_(), Ov(e6.lon, true), Mv(), mv == null || mv("".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4, " \xB7 ").concat(s3)), wv(n4, e6.label, e6.lon);
|
|
7186
7188
|
}), ne2.appendChild(a3);
|
|
7187
7189
|
}
|
|
7188
7190
|
{
|
|
7189
7191
|
let e6 = X("g");
|
|
7190
7192
|
e6.setAttribute("pointer-events", "none");
|
|
7191
|
-
let t3 =
|
|
7193
|
+
let t3 = S_ - 50, n3 = C_ - 50;
|
|
7192
7194
|
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");
|
|
7193
7195
|
let r3 = X("path");
|
|
7194
7196
|
r3.setAttribute("fill", E2 ? "#F0DFC3" : "#6366f1"), 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);
|
|
7195
7197
|
}
|
|
7196
7198
|
for (let e6 of ee2) {
|
|
7197
|
-
var
|
|
7199
|
+
var xe2, D2, Se2, O2, Ce2, we2, Te2, Ee2, De2, Oe2, ke2, Ae2, je2, Me2, Ne2, Pe2, Fe2, Ie2, Le2;
|
|
7198
7200
|
let t3 = _2.find((t4) => t4.name.toLowerCase() === e6.planet1.toLowerCase()), n3 = _2.find((t4) => t4.name.toLowerCase() === e6.planet2.toLowerCase());
|
|
7199
7201
|
if (!t3 || !n3) continue;
|
|
7200
|
-
let r3 = (
|
|
7202
|
+
let r3 = (xe2 = I_((D2 = e6.type) == null ? "" : D2)) == null ? "#aaa" : xe2, { x: a3, y: o3 } = Y(t3.longitude, k_, y2), { x: s3, y: c3 } = Y(n3.longitude, k_, y2), l3 = Math.min((Se2 = e6.orb) == null ? 10 : Se2, 10), u3 = 0.95 - l3 / 10 * 0.55, d3 = X("line");
|
|
7201
7203
|
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);
|
|
7202
|
-
let f3 = (
|
|
7204
|
+
let f3 = (O2 = F_[(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 = [];
|
|
7203
7205
|
if (f3 && Math.hypot(s3 - a3, c3 - o3) > 36) {
|
|
7204
7206
|
let e7 = X("circle");
|
|
7205
7207
|
e7.setAttribute("cx", p3.toFixed(1)), e7.setAttribute("cy", m3.toFixed(1)), e7.setAttribute("r", "7"), e7.setAttribute("fill", "var(--bg, #0a0a10)"), e7.setAttribute("stroke", r3), e7.setAttribute("stroke-opacity", "0.30"), e7.setAttribute("stroke-width", "0.6"), e7.setAttribute("pointer-events", "none"), w2.appendChild(e7), h3.push(e7);
|
|
@@ -7207,126 +7209,126 @@ function zv(e5, t2, n2, r2, i2, a2, o2) {
|
|
|
7207
7209
|
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", "8.5"), t4.setAttribute("fill", r3), t4.setAttribute("fill-opacity", String(Math.min(u3 + 0.35, 1))), t4.setAttribute("pointer-events", "none"), t4.textContent = f3, w2.appendChild(t4), h3.push(t4);
|
|
7208
7210
|
}
|
|
7209
7211
|
let g3 = X("line");
|
|
7210
|
-
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",
|
|
7211
|
-
let v3 = (
|
|
7212
|
+
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", Vv(g3, "Aspect: ".concat((Te2 = e6.type) == null ? "Aspect" : Te2, " between ").concat(t3.name, " and ").concat(n3.name));
|
|
7213
|
+
let v3 = (Ee2 = M_[t3.name.toLowerCase()]) == null ? t3.name : Ee2, ee3 = (De2 = M_[n3.name.toLowerCase()]) == null ? n3.name : De2, b3 = (Oe2 = (ke2 = F_[(Ae2 = (je2 = e6.type) == null ? void 0 : je2.toLowerCase()) == null ? "" : Ae2]) == null ? e6.type : ke2) == null ? "" : Oe2, x3 = (Me2 = ev[(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)" : "");
|
|
7212
7214
|
g3.addEventListener("mouseenter", (t4) => {
|
|
7213
7215
|
var n4;
|
|
7214
|
-
return
|
|
7216
|
+
return Y_(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
|
|
7215
7217
|
}), g3.addEventListener("mousemove", (t4) => {
|
|
7216
7218
|
var n4;
|
|
7217
|
-
return
|
|
7218
|
-
}), g3.addEventListener("mouseleave",
|
|
7219
|
+
return Y_(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
|
|
7220
|
+
}), g3.addEventListener("mouseleave", X_), g3.addEventListener("click", (t4) => {
|
|
7219
7221
|
var n4, r4, a4, o4, s4, c4;
|
|
7220
|
-
|
|
7221
|
-
let l4 = "".concat((n4 =
|
|
7222
|
-
|
|
7222
|
+
X_();
|
|
7223
|
+
let l4 = "".concat((n4 = F_[(r4 = (a4 = e6.type) == null ? void 0 : a4.toLowerCase()) == null ? "" : r4]) == null ? "" : n4, " ").concat(Z((o4 = e6.type) == null ? "Aspect" : o4), ": ").concat((s4 = M_[e6.planet1.toLowerCase()]) == null ? e6.planet1 : s4, " ").concat((c4 = M_[e6.planet2.toLowerCase()]) == null ? e6.planet2 : c4);
|
|
7224
|
+
mv == null || mv(l4), yv(t4, e6, _2), i2(e6);
|
|
7223
7225
|
});
|
|
7224
|
-
let C3 = [e6.planet1.toLowerCase(), e6.planet2.toLowerCase()].sort().join("|"), te3 = ((
|
|
7225
|
-
|
|
7226
|
+
let C3 = [e6.planet1.toLowerCase(), e6.planet2.toLowerCase()].sort().join("|"), te3 = ((Le2 = e6.type) == null ? "unknown" : Le2).toLowerCase();
|
|
7227
|
+
gv.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);
|
|
7226
7228
|
}
|
|
7227
|
-
let
|
|
7229
|
+
let Re2 = _2.filter((e6) => !V_.has(e6.name.toLowerCase())), k2 = _2.filter((e6) => V_.has(e6.name.toLowerCase())), ze2 = g_(Re2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 8), Be2 = g_(k2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 6), Ve2 = new Map([...ze2.entries(), ...Be2.entries()]);
|
|
7228
7230
|
for (let e6 of _2) {
|
|
7229
|
-
var
|
|
7230
|
-
let t3 = (
|
|
7231
|
-
|
|
7232
|
-
let r3 = e6.name.toLowerCase(), i3 =
|
|
7231
|
+
var He2, Ue2, We2, Ge2;
|
|
7232
|
+
let t3 = (He2 = M_[e6.name.toLowerCase()]) == null ? "\u2605" : He2;
|
|
7233
|
+
z_(e6.name);
|
|
7234
|
+
let r3 = e6.name.toLowerCase(), i3 = V_.has(r3), a3 = i3 ? E_ - 14 : E_, o3 = i3 ? E_ - 28 : E_ - 17, s3 = i3 ? E_ : 204, c3 = i3 ? "13" : "18", l3 = i3 ? "500" : "600", u3 = i3 ? A_ - 2 : A_, 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");
|
|
7233
7235
|
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);
|
|
7234
|
-
let { x: g3, y: _3 } = Y(e6.longitude,
|
|
7235
|
-
if (v3.setAttribute("cx", g3.toFixed(1)), v3.setAttribute("cy", _3.toFixed(1)), v3.setAttribute("r", i3 ? "1.8" : "2.5"), v3.setAttribute("fill",
|
|
7236
|
+
let { x: g3, y: _3 } = Y(e6.longitude, T_ - 5, y2), v3 = X("circle");
|
|
7237
|
+
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), b_(e6.longitude, f3) > 2) {
|
|
7236
7238
|
let e7 = X("line");
|
|
7237
|
-
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",
|
|
7239
|
+
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);
|
|
7238
7240
|
}
|
|
7239
7241
|
let b3 = X("text");
|
|
7240
|
-
b3.setAttribute("x", p3.toFixed(1)), b3.setAttribute("y", m3.toFixed(1)), b3.setAttribute("text-anchor", "middle"), b3.setAttribute("dominant-baseline", "central"), b3.setAttribute("font-size", c3), b3.setAttribute("font-weight", l3), b3.setAttribute("pointer-events", "none"), b3.style.fill =
|
|
7242
|
+
b3.setAttribute("x", p3.toFixed(1)), b3.setAttribute("y", m3.toFixed(1)), b3.setAttribute("text-anchor", "middle"), b3.setAttribute("dominant-baseline", "central"), b3.setAttribute("font-size", c3), b3.setAttribute("font-weight", l3), b3.setAttribute("pointer-events", "none"), b3.style.fill = c_(E2).ink, b3.style.fontFamily = a_, b3.textContent = t3, h3.appendChild(b3);
|
|
7241
7243
|
let x3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), { x: S3, y: C3 } = Y(f3, o3, y2), w3 = X("text");
|
|
7242
7244
|
if (w3.setAttribute("x", S3.toFixed(1)), w3.setAttribute("y", C3.toFixed(1)), w3.setAttribute("text-anchor", "middle"), w3.setAttribute("dominant-baseline", "central"), w3.setAttribute("font-size", i3 ? "7" : "8.5"), w3.setAttribute("font-weight", "500"), w3.setAttribute("fill", "#9080a0"), w3.setAttribute("pointer-events", "none"), w3.textContent = "".concat(x3, "\xB0"), h3.appendChild(w3), e6.retrograde) {
|
|
7243
7245
|
let { x: e7, y: t4 } = Y(f3, s3, y2), n3 = X("text");
|
|
7244
7246
|
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);
|
|
7245
7247
|
}
|
|
7246
7248
|
let T3 = X("circle");
|
|
7247
|
-
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",
|
|
7248
|
-
let re3 = (
|
|
7249
|
+
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", Vv(T3, "".concat(i3 ? "Extended body" : "Planet", ": ").concat(e6.name));
|
|
7250
|
+
let re3 = (We2 = Z_[e6.name.toLowerCase()]) == null ? "" : We2, ie3 = e6.house ? (Ge2 = Q_[e6.house]) == null ? "" : Ge2 : "", ae3 = "".concat(re3 ? re3 + " \xB7 " : "").concat(U_(e6.longitude)).concat(e6.house ? " \xB7 H".concat(e6.house).concat(ie3 ? " (" + ie3 + ")" : "") : "").concat(e6.retrograde ? " \u211E" : "");
|
|
7249
7251
|
T3.addEventListener("mouseenter", (n3) => {
|
|
7250
|
-
|
|
7251
|
-
}), T3.addEventListener("mousemove", (n3) =>
|
|
7252
|
-
|
|
7252
|
+
Y_(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects"), Ov(e6.longitude);
|
|
7253
|
+
}), T3.addEventListener("mousemove", (n3) => Y_(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects")), T3.addEventListener("mouseleave", () => {
|
|
7254
|
+
X_(), dv !== e6.name.toLowerCase() && kv();
|
|
7253
7255
|
}), T3.addEventListener("click", (t4) => {
|
|
7254
7256
|
var r4;
|
|
7255
|
-
if (
|
|
7256
|
-
|
|
7257
|
+
if (X_(), dv === e6.name.toLowerCase()) {
|
|
7258
|
+
Nv(), Tv(), kv(), mv == null || mv(null);
|
|
7257
7259
|
return;
|
|
7258
7260
|
}
|
|
7259
|
-
|
|
7260
|
-
let i4 = (r4 =
|
|
7261
|
-
|
|
7261
|
+
dv = e6.name.toLowerCase();
|
|
7262
|
+
let i4 = (r4 = M_[e6.name.toLowerCase()]) == null ? "" : r4;
|
|
7263
|
+
mv == null || mv("".concat(i4, " ").concat(Z(e6.name), " in ").concat(U_(e6.longitude))), Ov(e6.longitude, true), Av(e6.name), vv(t4, e6, ee2), n2(e6);
|
|
7262
7264
|
}), ne2.appendChild(T3);
|
|
7263
7265
|
}
|
|
7264
7266
|
for (let e6 = 0; e6 < v2.length; e6++) {
|
|
7265
|
-
var
|
|
7266
|
-
let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (
|
|
7267
|
-
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(
|
|
7268
|
-
|
|
7269
|
-
}), f3.addEventListener("mousemove", (e7) =>
|
|
7270
|
-
|
|
7267
|
+
var Ke2, qe2, Je2;
|
|
7268
|
+
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 ? P_[i3] : qe2) == null ? "" : Ke2, o3 = (Je2 = Q_[t3.number]) == null ? "" : Je2, s3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(U_(t3.cusp_lon), " \xB7 ").concat(a3), { x: c3, y: l3 } = Y(t3.cusp_lon, O_, y2), { x: u3, y: d3 } = Y(t3.cusp_lon, T_, y2), f3 = X("line");
|
|
7269
|
+
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(j_)), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region"), f3.style.pointerEvents = "all", Vv(f3, "House ".concat(t3.number, " Cusp")), f3.addEventListener("mouseenter", (e7) => {
|
|
7270
|
+
Y_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning"), Ov(t3.cusp_lon);
|
|
7271
|
+
}), f3.addEventListener("mousemove", (e7) => Y_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), f3.addEventListener("mouseleave", () => {
|
|
7272
|
+
X_(), kv();
|
|
7271
7273
|
}), f3.addEventListener("click", (e7) => {
|
|
7272
7274
|
var n4, i4;
|
|
7273
|
-
|
|
7274
|
-
let a4 = (n4 = (i4 = t3.sign) == null ?
|
|
7275
|
-
|
|
7275
|
+
X_();
|
|
7276
|
+
let a4 = (n4 = (i4 = t3.sign) == null ? P_[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
|
|
7277
|
+
mv == null || mv("House ".concat(t3.number, " \xB7 ").concat(a4)), bv(e7, t3, _2), r2(t3);
|
|
7276
7278
|
}), ne2.appendChild(f3);
|
|
7277
|
-
let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2,
|
|
7278
|
-
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",
|
|
7279
|
-
|
|
7279
|
+
let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2, D_, y2), g3 = X("circle");
|
|
7280
|
+
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", Vv(g3, "House ".concat(t3.number, " Area")), g3.addEventListener("mouseenter", (e7) => Y_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mousemove", (e7) => Y_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mouseleave", () => {
|
|
7281
|
+
X_();
|
|
7280
7282
|
}), g3.addEventListener("click", (e7) => {
|
|
7281
7283
|
var n4, i4;
|
|
7282
|
-
|
|
7283
|
-
let a4 = (n4 = (i4 = t3.sign) == null ?
|
|
7284
|
-
|
|
7284
|
+
X_();
|
|
7285
|
+
let a4 = (n4 = (i4 = t3.sign) == null ? P_[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
|
|
7286
|
+
mv == null || mv("House ".concat(t3.number, " \xB7 ").concat(a4)), bv(e7, t3, _2), r2(t3);
|
|
7285
7287
|
}), ne2.appendChild(g3);
|
|
7286
7288
|
}
|
|
7287
|
-
|
|
7289
|
+
fv && document.removeEventListener("click", fv, false), fv = (e6) => {
|
|
7288
7290
|
let t3 = e6.target;
|
|
7289
|
-
t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (
|
|
7290
|
-
}, document.addEventListener("click",
|
|
7291
|
+
t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (Nv(), Tv());
|
|
7292
|
+
}, document.addEventListener("click", fv, false);
|
|
7291
7293
|
}
|
|
7292
|
-
function
|
|
7294
|
+
function Vv(e5, t2) {
|
|
7293
7295
|
e5 && (e5.setAttribute("tabindex", "0"), e5.setAttribute("role", "button"), e5.setAttribute("aria-label", t2), e5.addEventListener("keydown", (t3) => {
|
|
7294
7296
|
let n2 = t3;
|
|
7295
7297
|
(n2.key === "Enter" || n2.key === " ") && (n2.preventDefault(), e5.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true })));
|
|
7296
7298
|
}));
|
|
7297
7299
|
}
|
|
7298
|
-
var
|
|
7299
|
-
function
|
|
7300
|
+
var Hv = [{ label: "Placidus", value: "placidus" }, { label: "Whole Sign", value: "whole_sign" }, { label: "Equal", value: "equal" }, { label: "Koch", value: "koch" }, { label: "Regio.", value: "regiomontanus" }];
|
|
7301
|
+
function Uv(e5, t2, n2) {
|
|
7300
7302
|
e5.innerHTML = "";
|
|
7301
7303
|
let r2 = document.createElement("span");
|
|
7302
7304
|
r2.className = "controls-label", r2.textContent = "Houses:", e5.appendChild(r2);
|
|
7303
|
-
for (let r3 of
|
|
7305
|
+
for (let r3 of Hv) {
|
|
7304
7306
|
let i2 = document.createElement("button");
|
|
7305
7307
|
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", () => {
|
|
7306
7308
|
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);
|
|
7307
7309
|
}), e5.appendChild(i2);
|
|
7308
7310
|
}
|
|
7309
7311
|
}
|
|
7310
|
-
function
|
|
7312
|
+
function Wv(e5, t2) {
|
|
7311
7313
|
e5.querySelectorAll(".control-btn").forEach((e6) => {
|
|
7312
7314
|
var n2;
|
|
7313
7315
|
let r2 = e6.getAttribute("data-system");
|
|
7314
7316
|
e6.disabled = false;
|
|
7315
|
-
let i2 =
|
|
7317
|
+
let i2 = Hv.find((e7) => e7.value === r2);
|
|
7316
7318
|
e6.textContent = (n2 = i2 == null ? void 0 : i2.label) == null ? r2 : n2, e6.classList.toggle("active", r2 === t2);
|
|
7317
7319
|
});
|
|
7318
7320
|
}
|
|
7319
|
-
function
|
|
7321
|
+
function Gv(e5) {
|
|
7320
7322
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
7321
7323
|
}
|
|
7322
|
-
function
|
|
7324
|
+
function Kv(e5) {
|
|
7323
7325
|
return e5.replace(/_/g, " ").replace(/\b\w/g, (e6) => e6.toUpperCase());
|
|
7324
7326
|
}
|
|
7325
|
-
function
|
|
7326
|
-
let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(
|
|
7327
|
+
function qv(e5) {
|
|
7328
|
+
let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(Gv(e6.title), "</span>") + e6.items.map((e7) => '<span class="legend-item"><span class="legend-glyph">'.concat(Gv(e7.glyph), "</span>").concat(Gv(e7.label), "</span>")).join("") + "</div>").join("");
|
|
7327
7329
|
return t2 ? '<details class="glyph-legend"><summary><span class="legend-spark">\u2726</span> Legend</summary><div class="legend-body">'.concat(t2, "</div></details>") : "";
|
|
7328
7330
|
}
|
|
7329
|
-
var
|
|
7331
|
+
var Jv = class e4 {
|
|
7330
7332
|
constructor(t2) {
|
|
7331
7333
|
var n2, r2, i2, a2, s2, c2;
|
|
7332
7334
|
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();
|
|
@@ -7506,46 +7508,49 @@ var qv = class e4 {
|
|
|
7506
7508
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7507
7509
|
}
|
|
7508
7510
|
};
|
|
7509
|
-
o(
|
|
7510
|
-
var
|
|
7511
|
-
function
|
|
7512
|
-
return Jv.has(e5);
|
|
7513
|
-
}
|
|
7514
|
-
function Xv(e5) {
|
|
7515
|
-
Jv.add(e5);
|
|
7516
|
-
}
|
|
7517
|
-
var Zv = { "chart-wheel": { stripIcon: "\u2726", stripTitle: "Welcome to your 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: "Your birth chart is now rendered \u2014 an exact celestial snapshot of the sky at your moment of birth." }, "bi-wheel": { stripIcon: "\u2295", stripTitle: "Welcome to 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 now layered \u2014 the inner wheel is your natal chart; the outer ring shows the second chart (transits or another person's planets)." }, bodygraph: { stripIcon: "\u25C8", stripTitle: "Welcome to your 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: "Your bodygraph is now rendered \u2014 a living map of the energy centres, channels, and gates that define your design." }, "vedic-chart": { stripIcon: "\u{1F549}", stripTitle: "Welcome to your Jyotish Chart", stripHints: ["Click any <strong>rashi cell</strong> for its themes and any planets placed there", "The <strong>diagonal mark</strong> shows your Lagna (Ascendant) rashi", "Use the <strong>action bar</strong> for a full chart interpretation", "Click <strong>Moon & Nakshatra</strong> for lunar mansion detail"], modalText: "Your Vedic birth chart is now rendered as a South Indian Rashi grid \u2014 sidereal planetary placements by fixed sign." }, "transit-timeline": { stripIcon: "\u2604", stripTitle: "Welcome to your 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 your natal chart \u2014 the exact dates outer-planet energies activate your placements." }, "moon-phase": { stripIcon: "\u263E", stripTitle: "Welcome to 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 \u2014 a snapshot of tonight's sky." }, bazi: { stripIcon: "\u56DB", stripTitle: "Welcome to your BaZi Chart", stripHints: ["Click any <strong>pillar</strong> (Year, Month, Day, Hour) for its interpretation", "The <strong>Day Master</strong> is your core identity element", "The <strong>Wu Xing bar</strong> shows your Five Element balance"], modalText: "Your BaZi (Four Pillars of Destiny) chart is now rendered \u2014 a map of the Heavenly Stems and Earthly Branches present at your moment of birth." } }, Qv = '\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';
|
|
7518
|
-
function $v() {
|
|
7511
|
+
o(Jv, "comboSeq", 0);
|
|
7512
|
+
var Yv = { "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." } }, Xv = '\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';
|
|
7513
|
+
function Zv() {
|
|
7519
7514
|
if (document.getElementById("oe-first-run-styles")) return;
|
|
7520
7515
|
let e5 = document.createElement("style");
|
|
7521
|
-
e5.id = "oe-first-run-styles", e5.textContent =
|
|
7522
|
-
}
|
|
7523
|
-
function
|
|
7524
|
-
let
|
|
7525
|
-
|
|
7526
|
-
let
|
|
7527
|
-
|
|
7528
|
-
let
|
|
7529
|
-
|
|
7530
|
-
let
|
|
7531
|
-
|
|
7532
|
-
|
|
7533
|
-
}, { once: true })
|
|
7516
|
+
e5.id = "oe-first-run-styles", e5.textContent = Xv, document.head.appendChild(e5);
|
|
7517
|
+
}
|
|
7518
|
+
function Qv(e5) {
|
|
7519
|
+
let t2 = document.activeElement, n2 = document.createElement("div");
|
|
7520
|
+
n2.className = "oe-welcome-backdrop";
|
|
7521
|
+
let r2 = document.createElement("div");
|
|
7522
|
+
r2.className = "oe-welcome-modal", r2.setAttribute("role", "dialog"), r2.setAttribute("aria-modal", "true"), r2.setAttribute("aria-labelledby", "oe-welcome-title");
|
|
7523
|
+
let i2 = e5.stripHints.map((e6) => "<li>".concat(e6, "</li>")).join("");
|
|
7524
|
+
r2.innerHTML = '\n <div class="oe-welcome-header">\n <div class="oe-welcome-icon" aria-hidden="true">'.concat(e5.stripIcon, '</div>\n <h2 id="oe-welcome-title" class="oe-welcome-title">').concat(e5.stripTitle, '</h2>\n </div>\n <p class="oe-welcome-text">').concat(e5.modalText, '</p>\n <ul class="oe-welcome-hints">').concat(i2, '</ul>\n <button class="oe-welcome-button" aria-label="Explore the chart">Explore</button>\n '), n2.appendChild(r2);
|
|
7525
|
+
let a2 = r2.querySelector(".oe-welcome-button"), o2 = () => {
|
|
7526
|
+
n2.classList.add("is-dismissing"), n2.addEventListener("animationend", () => {
|
|
7527
|
+
n2.remove(), t2 == null || t2.focus();
|
|
7528
|
+
}, { once: true });
|
|
7534
7529
|
};
|
|
7535
|
-
return
|
|
7536
|
-
e6.target ===
|
|
7537
|
-
}),
|
|
7538
|
-
e6.key === "Escape" && (e6.preventDefault(),
|
|
7539
|
-
}), requestAnimationFrame(() =>
|
|
7540
|
-
}
|
|
7541
|
-
function
|
|
7542
|
-
|
|
7543
|
-
let
|
|
7544
|
-
|
|
7545
|
-
|
|
7546
|
-
|
|
7530
|
+
return a2.addEventListener("click", o2), n2.addEventListener("click", (e6) => {
|
|
7531
|
+
e6.target === n2 && o2();
|
|
7532
|
+
}), n2.addEventListener("keydown", (e6) => {
|
|
7533
|
+
e6.key === "Escape" && (e6.preventDefault(), o2()), e6.key === "Tab" && (e6.preventDefault(), a2.focus());
|
|
7534
|
+
}), requestAnimationFrame(() => a2.focus()), n2;
|
|
7535
|
+
}
|
|
7536
|
+
function $v(e5) {
|
|
7537
|
+
Zv();
|
|
7538
|
+
let t2 = Qv(Yv[e5]);
|
|
7539
|
+
document.body.appendChild(t2);
|
|
7540
|
+
}
|
|
7541
|
+
var ey = "\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";
|
|
7542
|
+
function ty() {
|
|
7543
|
+
if (document.getElementById("oe-info-button-styles")) return;
|
|
7544
|
+
let e5 = document.createElement("style");
|
|
7545
|
+
e5.id = "oe-info-button-styles", e5.textContent = ey, document.head.appendChild(e5);
|
|
7547
7546
|
}
|
|
7548
7547
|
function ny(e5) {
|
|
7548
|
+
if (document.getElementById("oe-info-button")) return;
|
|
7549
|
+
ty();
|
|
7550
|
+
let t2 = document.createElement("button");
|
|
7551
|
+
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", () => $v(e5)), document.body.appendChild(t2);
|
|
7552
|
+
}
|
|
7553
|
+
function ry(e5) {
|
|
7549
7554
|
var t2;
|
|
7550
7555
|
if (!e5) return null;
|
|
7551
7556
|
if (e5.structuredContent != null && typeof e5.structuredContent == "object") return e5.structuredContent;
|
|
@@ -7558,17 +7563,17 @@ function ny(e5) {
|
|
|
7558
7563
|
}
|
|
7559
7564
|
return null;
|
|
7560
7565
|
}
|
|
7561
|
-
function
|
|
7566
|
+
function iy(e5) {
|
|
7562
7567
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7563
7568
|
}
|
|
7564
|
-
function
|
|
7565
|
-
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(
|
|
7566
|
-
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(
|
|
7569
|
+
function ay(e5) {
|
|
7570
|
+
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(iy(i2), "</button>") : "";
|
|
7571
|
+
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(iy(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
|
|
7567
7572
|
var o2;
|
|
7568
7573
|
(o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
|
|
7569
7574
|
}
|
|
7570
7575
|
}
|
|
7571
|
-
function
|
|
7576
|
+
function oy(e5, t2, n2 = []) {
|
|
7572
7577
|
var r2, i2;
|
|
7573
7578
|
if (!t2 || t2.querySelector("#btn-fullscreen")) return;
|
|
7574
7579
|
let a2 = document.createElement("button");
|
|
@@ -7651,14 +7656,14 @@ function ay(e5, t2, n2 = []) {
|
|
|
7651
7656
|
}, 4e3);
|
|
7652
7657
|
}
|
|
7653
7658
|
}
|
|
7654
|
-
function
|
|
7659
|
+
function sy(e5, t2) {
|
|
7655
7660
|
e5.ontoolcancelled = (e6) => {
|
|
7656
7661
|
var n2, r2, i2;
|
|
7657
7662
|
let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
|
|
7658
|
-
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),
|
|
7663
|
+
console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false), cy(a2);
|
|
7659
7664
|
};
|
|
7660
7665
|
}
|
|
7661
|
-
function
|
|
7666
|
+
function cy(e5) {
|
|
7662
7667
|
var t2;
|
|
7663
7668
|
(t2 = document.getElementById("cancel-toast")) == null || t2.remove();
|
|
7664
7669
|
let n2 = document.createElement("div");
|
|
@@ -7666,7 +7671,7 @@ function sy(e5) {
|
|
|
7666
7671
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7667
7672
|
}, 3e3);
|
|
7668
7673
|
}
|
|
7669
|
-
function
|
|
7674
|
+
function ly(e5) {
|
|
7670
7675
|
var t2;
|
|
7671
7676
|
function n2(e6) {
|
|
7672
7677
|
if (!e6) return;
|
|
@@ -7679,48 +7684,48 @@ function cy(e5) {
|
|
|
7679
7684
|
n2(e6);
|
|
7680
7685
|
});
|
|
7681
7686
|
}
|
|
7682
|
-
var
|
|
7683
|
-
|
|
7684
|
-
$ &&
|
|
7687
|
+
var uy = document.getElementById("loading-state"), dy = document.getElementById("chart-container"), fy = document.getElementById("chart-info"), py = document.getElementById("chart-status"), my = document.getElementById("controls-panel"), hy = document.getElementById("patterns-strip"), gy = document.getElementById("aspect-filter"), _y = document.getElementById("overview-table"), vy = document.getElementById("param-controls-container"), yy = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, by = "placidus", xy = null;
|
|
7688
|
+
m_(() => {
|
|
7689
|
+
$ && Ty($);
|
|
7685
7690
|
});
|
|
7686
|
-
var
|
|
7687
|
-
function
|
|
7688
|
-
|
|
7691
|
+
var Sy = false, Cy = false;
|
|
7692
|
+
function wy(e5) {
|
|
7693
|
+
py && (e5 ? (py.textContent = "\xB7 ".concat(e5), py.setAttribute("data-active", "")) : (py.textContent = "", py.removeAttribute("data-active")));
|
|
7689
7694
|
}
|
|
7690
|
-
|
|
7695
|
+
yy.ontoolresult = (e5) => {
|
|
7691
7696
|
var t2;
|
|
7692
|
-
let n2 =
|
|
7693
|
-
if (
|
|
7694
|
-
console.error("[ChartWheel] \u274C No chart data found in tool result"),
|
|
7697
|
+
let n2 = ry(e5);
|
|
7698
|
+
if (Yy(), !n2 || !n2.planets) {
|
|
7699
|
+
console.error("[ChartWheel] \u274C No chart data found in tool result"), Xy("Chart data could not be parsed from the server response.", Zy);
|
|
7695
7700
|
return;
|
|
7696
7701
|
}
|
|
7697
|
-
if ($ = n2,
|
|
7702
|
+
if ($ = n2, by = (t2 = n2.house_system) == null ? "placidus" : t2, !xy) {
|
|
7698
7703
|
var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
|
|
7699
7704
|
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";
|
|
7700
7705
|
if (t3 && t3.includes("T")) {
|
|
7701
7706
|
let e7 = t3.split("T");
|
|
7702
7707
|
_2 = e7[0], v2 = e7[1].substring(0, 5);
|
|
7703
7708
|
}
|
|
7704
|
-
|
|
7705
|
-
|
|
7709
|
+
xy = new Jv({ app: yy, container: vy, 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) => {
|
|
7710
|
+
xy == null || xy.setBusy(true), uy.removeAttribute("hidden"), dy.setAttribute("hidden", "");
|
|
7706
7711
|
try {
|
|
7707
7712
|
var t4, n3, r3, i3;
|
|
7708
|
-
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 =
|
|
7709
|
-
s3 ? ($ = s3, s3.house_system && (
|
|
7713
|
+
let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o3 = new Promise((e8, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 = ry(await Promise.race([yy.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: by || "placidus", chart_type: "natal" } }), o3]));
|
|
7714
|
+
s3 ? ($ = s3, s3.house_system && (by = s3.house_system), Ty(s3)) : $ && (uy.setAttribute("hidden", ""), dy.removeAttribute("hidden"));
|
|
7710
7715
|
} catch (e8) {
|
|
7711
|
-
console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (
|
|
7716
|
+
console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (uy.setAttribute("hidden", ""), dy.removeAttribute("hidden"));
|
|
7712
7717
|
} finally {
|
|
7713
|
-
|
|
7718
|
+
xy == null || xy.setBusy(false);
|
|
7714
7719
|
}
|
|
7715
7720
|
} });
|
|
7716
7721
|
}
|
|
7717
|
-
|
|
7722
|
+
Ty(n2);
|
|
7718
7723
|
};
|
|
7719
|
-
function
|
|
7724
|
+
function Ty(e5) {
|
|
7720
7725
|
var t2, n2, r2, i2, a2, o2, s2;
|
|
7721
|
-
|
|
7722
|
-
let c2 =
|
|
7723
|
-
c2.length > 0 &&
|
|
7726
|
+
jy = null, uy.setAttribute("hidden", ""), dy.removeAttribute("hidden"), vy.removeAttribute("hidden"), my.removeAttribute("hidden"), Bv(dy, e5, zy, By, Vy, Ky, Cy ? Hy() : void 0), hv(wy), Uv(my, by, qy), Dy(e5), ny("chart-wheel");
|
|
7727
|
+
let c2 = q_(e5.planets), l2 = (n2 = (r2 = (i2 = ((t2 = e5.houses) == null ? [] : t2)[0]) == null ? void 0 : i2.cusp_lon) == null ? e5.ascendant : r2) == null ? 0 : n2, u2 = (a2 = e5.aspects) == null ? [] : a2;
|
|
7728
|
+
c2.length > 0 && ky(c2, u2), My(lv(u2, c2), c2, l2), Ly();
|
|
7724
7729
|
let d2 = document.getElementById("cw-action-bar");
|
|
7725
7730
|
if (!d2) {
|
|
7726
7731
|
d2 = document.createElement("div"), d2.id = "cw-action-bar", d2.className = "hd-action-bar";
|
|
@@ -7731,17 +7736,17 @@ function wy(e5) {
|
|
|
7731
7736
|
(f2 = document.getElementById("app")) == null || f2.prepend(d2);
|
|
7732
7737
|
}
|
|
7733
7738
|
}
|
|
7734
|
-
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
|
|
7739
|
+
d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void Wy()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void Gy());
|
|
7735
7740
|
}
|
|
7736
|
-
function
|
|
7741
|
+
function Ey(e5) {
|
|
7737
7742
|
return String(e5).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
7738
7743
|
}
|
|
7739
|
-
function
|
|
7744
|
+
function Dy(e5) {
|
|
7740
7745
|
var t2, n2, r2, i2, a2, o2, s2, c2, l2, u2;
|
|
7741
|
-
if (!
|
|
7746
|
+
if (!fy) return;
|
|
7742
7747
|
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;
|
|
7743
|
-
|
|
7744
|
-
let _2 =
|
|
7748
|
+
by.charAt(0).toUpperCase() + by.slice(1);
|
|
7749
|
+
let _2 = q_(e5.planets).find((e6) => e6.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
|
|
7745
7750
|
try {
|
|
7746
7751
|
if (f2 && f2.includes("T")) {
|
|
7747
7752
|
let e6 = new Date(f2), t3 = m2 ? { timeZone: m2 } : {};
|
|
@@ -7750,15 +7755,15 @@ function Ey(e5) {
|
|
|
7750
7755
|
} catch (e6) {
|
|
7751
7756
|
}
|
|
7752
7757
|
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 = [];
|
|
7753
|
-
if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(
|
|
7754
|
-
|
|
7758
|
+
if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(Ey(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat(Ey(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat(Ey(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat(Ey(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat(Ey(v2), "</span>")), b2.length === 0) {
|
|
7759
|
+
fy.setAttribute("hidden", "");
|
|
7755
7760
|
return;
|
|
7756
7761
|
}
|
|
7757
|
-
|
|
7762
|
+
fy.innerHTML = b2.join(""), fy.removeAttribute("hidden");
|
|
7758
7763
|
}
|
|
7759
|
-
var
|
|
7760
|
-
function
|
|
7761
|
-
if (!
|
|
7764
|
+
var Oy = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
|
|
7765
|
+
function ky(e5, t2) {
|
|
7766
|
+
if (!_y || e5.length === 0) return;
|
|
7762
7767
|
let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"], r2 = [...e5].sort((e6, t3) => {
|
|
7763
7768
|
let r3 = n2.indexOf(e6.name.toLowerCase()), i3 = n2.indexOf(t3.name.toLowerCase());
|
|
7764
7769
|
return r3 !== -1 && i3 !== -1 ? r3 - i3 : r3 === -1 ? i3 === -1 ? e6.name.localeCompare(t3.name) : 1 : -1;
|
|
@@ -7769,15 +7774,15 @@ function Oy(e5, t2) {
|
|
|
7769
7774
|
}
|
|
7770
7775
|
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) => {
|
|
7771
7776
|
var t3, n3, r3, a3;
|
|
7772
|
-
let o3 = e6.name.toLowerCase(), l3 = (t3 =
|
|
7777
|
+
let o3 = e6.name.toLowerCase(), l3 = (t3 = M_[o3]) == null ? "\u2605" : t3, u3 = (n3 = e6.sign) == null ? c2(e6.longitude) : n3, d3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), p3 = Oy.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
|
|
7773
7778
|
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>");
|
|
7774
7779
|
}).join(""), u2 = "| Body | Sign | Degree | House | Retrograde |\n| --- | --- | --- | --- | --- |\n" + r2.map((e6) => {
|
|
7775
7780
|
var t3;
|
|
7776
7781
|
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" : "";
|
|
7777
7782
|
return "| ".concat(s2(e6.name), " | ").concat(n3, " | ").concat(r3, "\xB0 ").concat(String(i3).padStart(2, "0"), "\u2032 | ").concat(a3, " | ").concat(o3, " |");
|
|
7778
7783
|
}).join("\n");
|
|
7779
|
-
|
|
7780
|
-
let d2 =
|
|
7784
|
+
_y.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 "), _y.removeAttribute("hidden");
|
|
7785
|
+
let d2 = _y.querySelector(".overview-copy");
|
|
7781
7786
|
d2 && d2.addEventListener("click", async (e6) => {
|
|
7782
7787
|
e6.stopPropagation();
|
|
7783
7788
|
try {
|
|
@@ -7787,14 +7792,14 @@ function Oy(e5, t2) {
|
|
|
7787
7792
|
d2.textContent = "Copy", d2.classList.remove("copied");
|
|
7788
7793
|
}, 1600);
|
|
7789
7794
|
} catch (e7) {
|
|
7790
|
-
|
|
7795
|
+
Ay("Copy unavailable");
|
|
7791
7796
|
}
|
|
7792
7797
|
});
|
|
7793
|
-
let f2 =
|
|
7798
|
+
let f2 = _y.querySelector(".overview-toggle"), p2 = _y.querySelector(".overview-body");
|
|
7794
7799
|
f2 == null || f2.addEventListener("click", () => {
|
|
7795
7800
|
let e6 = f2.getAttribute("aria-expanded") === "true";
|
|
7796
7801
|
f2.setAttribute("aria-expanded", e6 ? "false" : "true"), p2.classList.toggle("open", !e6);
|
|
7797
|
-
}),
|
|
7802
|
+
}), _y.querySelectorAll("tbody tr").forEach((e6) => {
|
|
7798
7803
|
var t3;
|
|
7799
7804
|
let n3 = (t3 = e6.dataset.planet) == null ? "" : t3;
|
|
7800
7805
|
n3 && (e6.addEventListener("mouseenter", () => {
|
|
@@ -7806,7 +7811,7 @@ function Oy(e5, t2) {
|
|
|
7806
7811
|
let t4 = document.querySelector("svg");
|
|
7807
7812
|
t4 && (t4.querySelectorAll(".planet-glyph-group").forEach((e7) => {
|
|
7808
7813
|
var t5;
|
|
7809
|
-
let n4 =
|
|
7814
|
+
let n4 = Oy.has((t5 = e7.dataset.planet) == null ? "" : t5);
|
|
7810
7815
|
e7.style.opacity = n4 ? "0.65" : "1";
|
|
7811
7816
|
}), e6.classList.remove("active-row"));
|
|
7812
7817
|
}), e6.addEventListener("click", () => {
|
|
@@ -7817,7 +7822,7 @@ function Oy(e5, t2) {
|
|
|
7817
7822
|
}));
|
|
7818
7823
|
});
|
|
7819
7824
|
}
|
|
7820
|
-
function
|
|
7825
|
+
function Ay(e5) {
|
|
7821
7826
|
var t2;
|
|
7822
7827
|
(t2 = document.getElementById("copy-toast")) == null || t2.remove();
|
|
7823
7828
|
let n2 = document.createElement("div");
|
|
@@ -7825,26 +7830,26 @@ function ky(e5) {
|
|
|
7825
7830
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7826
7831
|
}, 2500);
|
|
7827
7832
|
}
|
|
7828
|
-
var
|
|
7829
|
-
function
|
|
7830
|
-
if (!
|
|
7833
|
+
var jy = null;
|
|
7834
|
+
function My(e5, t2, n2) {
|
|
7835
|
+
if (!hy) return;
|
|
7831
7836
|
if (e5.length === 0) {
|
|
7832
|
-
|
|
7837
|
+
hy.setAttribute("hidden", ""), hy.innerHTML = "";
|
|
7833
7838
|
return;
|
|
7834
7839
|
}
|
|
7835
7840
|
let r2 = { "T-Square": "#e08a52", "Grand Trine": "#52a8e0", "Grand Cross": "#e05252", Stellium: "#9a7fd4", Yod: "#52c07a", Kite: "#c0b052" };
|
|
7836
|
-
if (
|
|
7841
|
+
if (hy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
|
|
7837
7842
|
var n3;
|
|
7838
7843
|
let i2 = (n3 = r2[e6.name]) == null ? "#888" : n3;
|
|
7839
7844
|
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 ");
|
|
7840
|
-
}).join(""), "\n "),
|
|
7845
|
+
}).join(""), "\n "), hy.removeAttribute("hidden"), !hy.querySelector(".pattern-ask-claude-btn")) {
|
|
7841
7846
|
let t3 = document.createElement("button");
|
|
7842
|
-
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Ask Claude", t3.style.display = "none",
|
|
7847
|
+
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Ask Claude", t3.style.display = "none", hy.appendChild(t3), t3.addEventListener("click", () => {
|
|
7843
7848
|
var n3;
|
|
7844
|
-
let r3 =
|
|
7849
|
+
let r3 = jy;
|
|
7845
7850
|
if (r3 === null) return;
|
|
7846
7851
|
let i2 = e5[r3];
|
|
7847
|
-
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026",
|
|
7852
|
+
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", Ky({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
|
|
7848
7853
|
t3.textContent = "\u2713 Sent", setTimeout(() => {
|
|
7849
7854
|
t3.textContent = "\u2728 Ask Claude", t3.disabled = false;
|
|
7850
7855
|
}, 2500);
|
|
@@ -7853,28 +7858,28 @@ function jy(e5, t2, n2) {
|
|
|
7853
7858
|
});
|
|
7854
7859
|
});
|
|
7855
7860
|
}
|
|
7856
|
-
|
|
7861
|
+
hy.querySelectorAll(".pattern-pill").forEach((r3) => {
|
|
7857
7862
|
r3.addEventListener("click", () => {
|
|
7858
7863
|
var i2;
|
|
7859
|
-
let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 =
|
|
7860
|
-
|
|
7864
|
+
let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = hy.querySelector(".pattern-ask-claude-btn");
|
|
7865
|
+
jy === a2 ? (jy = null, Nv(), c2 && (c2.style.display = "none"), hy.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
7861
7866
|
var t3;
|
|
7862
7867
|
e6.classList.remove("active");
|
|
7863
7868
|
let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
|
|
7864
7869
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
7865
|
-
})) : (
|
|
7870
|
+
})) : (jy = a2, hy.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
7866
7871
|
var t3;
|
|
7867
7872
|
e6.classList.remove("active");
|
|
7868
7873
|
let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
|
|
7869
7874
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
7870
|
-
}), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2,
|
|
7875
|
+
}), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, jv(o2.planets, o2.aspectKeys), t2 && n2 != null && (Lv(), Iv(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Ask Claude", c2.disabled = false));
|
|
7871
7876
|
});
|
|
7872
7877
|
});
|
|
7873
7878
|
}
|
|
7874
|
-
var
|
|
7875
|
-
function
|
|
7879
|
+
var Ny = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], Py = true, Fy = 8, Iy = "true";
|
|
7880
|
+
function Ly() {
|
|
7876
7881
|
var e5;
|
|
7877
|
-
if (!
|
|
7882
|
+
if (!gy) return;
|
|
7878
7883
|
let t2 = (() => {
|
|
7879
7884
|
let e6 = $ == null ? void 0 : $.planets, t3 = [];
|
|
7880
7885
|
Array.isArray(e6) ? e6.forEach((e7) => {
|
|
@@ -7884,101 +7889,101 @@ function Iy() {
|
|
|
7884
7889
|
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)");
|
|
7885
7890
|
return n3 && r3;
|
|
7886
7891
|
})();
|
|
7887
|
-
|
|
7888
|
-
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(
|
|
7889
|
-
|
|
7890
|
-
let r2 =
|
|
7892
|
+
G_(Iy);
|
|
7893
|
+
let n2 = t2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(Iy === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(Iy === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
|
|
7894
|
+
Py = true, gy.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(Ny.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === Fy ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
|
|
7895
|
+
let r2 = q_($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
|
|
7891
7896
|
for (let e6 of r2) {
|
|
7892
7897
|
let t3 = e6.name.toLowerCase();
|
|
7893
7898
|
if (i2.has(t3)) continue;
|
|
7894
7899
|
i2.add(t3);
|
|
7895
|
-
let n3 =
|
|
7896
|
-
n3 && a2.push({ glyph: n3, label:
|
|
7900
|
+
let n3 = M_[t3];
|
|
7901
|
+
n3 && a2.push({ glyph: n3, label: Kv(e6.name) });
|
|
7897
7902
|
}
|
|
7898
7903
|
let o2 = [...new Set(((e5 = $ == null ? void 0 : $.aspects) == null ? [] : e5).map((e6) => {
|
|
7899
7904
|
var t3;
|
|
7900
7905
|
return ((t3 = e6.type) == null ? "" : t3).toLowerCase();
|
|
7901
7906
|
}).filter(Boolean))].map((e6) => {
|
|
7902
7907
|
var t3;
|
|
7903
|
-
return { glyph: (t3 =
|
|
7908
|
+
return { glyph: (t3 = F_[e6]) == null ? "" : t3, label: Kv(e6) };
|
|
7904
7909
|
}).filter((e6) => e6.glyph);
|
|
7905
|
-
|
|
7910
|
+
gy.insertAdjacentHTML("beforeend", qv([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), gy.removeAttribute("hidden");
|
|
7906
7911
|
let s2 = document.getElementById("cw-aspect-vis-toggle");
|
|
7907
7912
|
s2 == null || s2.addEventListener("click", () => {
|
|
7908
|
-
|
|
7909
|
-
}),
|
|
7913
|
+
Py = !Py, Rv(Py), s2.classList.toggle("active", Py), s2.querySelector(".toggle-icon").textContent = Py ? "\u2295" : "\u2296";
|
|
7914
|
+
}), gy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
|
|
7910
7915
|
e6.addEventListener("click", () => {
|
|
7911
7916
|
var t3;
|
|
7912
7917
|
let n3 = parseFloat((t3 = e6.dataset.orb) == null ? "8" : t3);
|
|
7913
|
-
n3 !==
|
|
7918
|
+
n3 !== Fy && (Fy = n3, gy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), zv(n3));
|
|
7914
7919
|
});
|
|
7915
|
-
}),
|
|
7920
|
+
}), gy.querySelectorAll(".node-btn").forEach((e6) => {
|
|
7916
7921
|
e6.addEventListener("click", () => {
|
|
7917
7922
|
let t3 = e6.dataset.node === "mean" ? "mean" : "true";
|
|
7918
|
-
t3 ===
|
|
7923
|
+
t3 === Iy || !$ || (Iy = t3, G_(t3), Ty($));
|
|
7919
7924
|
});
|
|
7920
7925
|
});
|
|
7921
7926
|
}
|
|
7922
|
-
async function
|
|
7923
|
-
if (
|
|
7927
|
+
async function Ry(e5, t2) {
|
|
7928
|
+
if (Sy) try {
|
|
7924
7929
|
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(", "));
|
|
7925
|
-
await
|
|
7930
|
+
await yy.updateModelContext({ content: [{ type: "text", text: n2 }] });
|
|
7926
7931
|
} catch (e6) {
|
|
7927
7932
|
console.warn("[ChartWheel] \u26A0\uFE0F updateModelContext failed:", e6);
|
|
7928
7933
|
}
|
|
7929
7934
|
}
|
|
7930
|
-
async function
|
|
7935
|
+
async function zy(e5) {
|
|
7931
7936
|
var t2, n2, r2, i2;
|
|
7932
|
-
|
|
7937
|
+
jy = null, hy == null || hy.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
7933
7938
|
var t3;
|
|
7934
7939
|
e6.classList.remove("active");
|
|
7935
7940
|
let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
|
|
7936
7941
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
7937
|
-
}), await
|
|
7942
|
+
}), await Ry("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 });
|
|
7938
7943
|
}
|
|
7939
|
-
async function
|
|
7944
|
+
async function By(e5) {
|
|
7940
7945
|
var t2, n2;
|
|
7941
|
-
await
|
|
7946
|
+
await Ry("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
|
|
7942
7947
|
}
|
|
7943
|
-
async function
|
|
7948
|
+
async function Vy(e5) {
|
|
7944
7949
|
var t2, n2, r2, i2;
|
|
7945
|
-
await
|
|
7950
|
+
await Ry("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 });
|
|
7946
7951
|
}
|
|
7947
|
-
function
|
|
7952
|
+
function Hy() {
|
|
7948
7953
|
return async (e5) => {
|
|
7949
7954
|
try {
|
|
7950
7955
|
var t2, n2;
|
|
7951
|
-
let r2 = await
|
|
7956
|
+
let r2 = await yy.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 });
|
|
7952
7957
|
return (t2 = r2 == null || (n2 = r2.content) == null ? void 0 : n2.text) == null ? null : t2;
|
|
7953
7958
|
} catch (e6) {
|
|
7954
7959
|
return console.error("[ChartWheel] Sampling failed:", e6), "Unable to load interpretation right now.";
|
|
7955
7960
|
}
|
|
7956
7961
|
};
|
|
7957
7962
|
}
|
|
7958
|
-
async function
|
|
7963
|
+
async function Uy(e5) {
|
|
7959
7964
|
try {
|
|
7960
|
-
(await
|
|
7965
|
+
(await yy.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
|
|
7961
7966
|
} catch (e6) {
|
|
7962
7967
|
console.error("[ChartWheel] sendMessage failed:", e6);
|
|
7963
7968
|
}
|
|
7964
7969
|
}
|
|
7965
|
-
async function
|
|
7970
|
+
async function Wy() {
|
|
7966
7971
|
var e5, t2, n2, r2;
|
|
7967
7972
|
if (!$) return;
|
|
7968
|
-
let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 =
|
|
7973
|
+
let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = q_(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
|
|
7969
7974
|
var t3;
|
|
7970
7975
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
|
|
7971
7976
|
}).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";
|
|
7972
|
-
await
|
|
7977
|
+
await Uy("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
|
|
7973
7978
|
var t3;
|
|
7974
7979
|
return " \u2022 ".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? ", House ".concat(e6.house) : "").concat(e6.retrograde ? " \u211E" : "");
|
|
7975
7980
|
}).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?"));
|
|
7976
7981
|
}
|
|
7977
|
-
async function
|
|
7982
|
+
async function Gy() {
|
|
7978
7983
|
var e5, t2, n2, r2;
|
|
7979
7984
|
if (!$) return;
|
|
7980
7985
|
let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5;
|
|
7981
|
-
await
|
|
7986
|
+
await Uy("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(q_(i2.planets).slice(0, 4).map((e6) => {
|
|
7982
7987
|
var t3;
|
|
7983
7988
|
return "".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? " H".concat(e6.house) : "");
|
|
7984
7989
|
}).join(", ") || "unknown placements", ". Major aspects: ").concat(((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
|
|
@@ -7986,7 +7991,7 @@ async function Wy() {
|
|
|
7986
7991
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
|
|
7987
7992
|
}).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."));
|
|
7988
7993
|
}
|
|
7989
|
-
async function
|
|
7994
|
+
async function Ky(e5) {
|
|
7990
7995
|
let t2 = "";
|
|
7991
7996
|
if (e5.type === "planet") {
|
|
7992
7997
|
var n2;
|
|
@@ -8015,49 +8020,49 @@ async function Gy(e5) {
|
|
|
8015
8020
|
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.");
|
|
8016
8021
|
}
|
|
8017
8022
|
if (t2) try {
|
|
8018
|
-
let e6 = await
|
|
8023
|
+
let e6 = await yy.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
|
|
8019
8024
|
if (e6.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e6), Error("Host rejected message");
|
|
8020
8025
|
} catch (e6) {
|
|
8021
8026
|
throw console.error("[ChartWheel] \u274C sendMessage failed:", e6), e6;
|
|
8022
8027
|
}
|
|
8023
8028
|
}
|
|
8024
|
-
async function
|
|
8029
|
+
async function qy(e5) {
|
|
8025
8030
|
if (!($ != null && $._birth_params)) {
|
|
8026
|
-
|
|
8031
|
+
Wv(my, by);
|
|
8027
8032
|
return;
|
|
8028
8033
|
}
|
|
8029
8034
|
try {
|
|
8030
8035
|
var t2, n2, r2, i2;
|
|
8031
|
-
let a2 =
|
|
8032
|
-
a2 ? ($ = a2,
|
|
8036
|
+
let a2 = ry(await yy.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 } }));
|
|
8037
|
+
a2 ? ($ = a2, by = e5, Ty(a2)) : Wv(my, by);
|
|
8033
8038
|
} catch (e6) {
|
|
8034
|
-
console.error("[Chart] Recalculate failed:", e6),
|
|
8039
|
+
console.error("[Chart] Recalculate failed:", e6), Wv(my, by);
|
|
8035
8040
|
}
|
|
8036
8041
|
}
|
|
8037
|
-
var
|
|
8038
|
-
function
|
|
8039
|
-
|
|
8042
|
+
var Jy;
|
|
8043
|
+
function Yy() {
|
|
8044
|
+
Jy && (clearTimeout(Jy), Jy = void 0);
|
|
8040
8045
|
}
|
|
8041
|
-
function
|
|
8042
|
-
|
|
8046
|
+
function Xy(e5, t2) {
|
|
8047
|
+
Yy(), uy.setAttribute("hidden", ""), ay({ container: dy, message: e5, onRetry: t2 });
|
|
8043
8048
|
}
|
|
8044
|
-
function
|
|
8045
|
-
|
|
8046
|
-
|
|
8047
|
-
}, 3e4),
|
|
8049
|
+
function Zy() {
|
|
8050
|
+
Yy(), dy.setAttribute("hidden", ""), uy.removeAttribute("hidden"), Jy = setTimeout(() => {
|
|
8051
|
+
Xy("The chart didn't load. Tap to try again.", Zy);
|
|
8052
|
+
}, 3e4), yy.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
|
|
8048
8053
|
});
|
|
8049
8054
|
}
|
|
8050
|
-
|
|
8051
|
-
|
|
8055
|
+
sy(yy, { loadingEl: uy, contentEl: dy, statusFn: wy, paramControls: () => xy }), Jy = setTimeout(() => {
|
|
8056
|
+
Xy("Chart data is taking longer than expected.", Zy);
|
|
8052
8057
|
}, 3e4), (async () => {
|
|
8053
8058
|
try {
|
|
8054
|
-
await
|
|
8055
|
-
let e5 =
|
|
8056
|
-
|
|
8057
|
-
$ &&
|
|
8058
|
-
}), $ &&
|
|
8059
|
+
await yy.connect();
|
|
8060
|
+
let e5 = yy.getHostCapabilities();
|
|
8061
|
+
Sy = !!(e5 != null && e5.modelContext), Cy = !!(e5 != null && e5.sampling), oy(yy, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), ly(yy), h_(yy, () => {
|
|
8062
|
+
$ && Ty($);
|
|
8063
|
+
}), $ && Ty($);
|
|
8059
8064
|
} catch (e5) {
|
|
8060
|
-
console.error("[ChartWheel] \u274C app.connect() FAILED:", e5),
|
|
8065
|
+
console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), Xy("The chart didn't load. Tap to try again.", Zy);
|
|
8061
8066
|
}
|
|
8062
8067
|
})();
|
|
8063
8068
|
</script>
|