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