@openephemeris/mcp-server 3.13.8 → 3.13.9
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/dist/tools/apps/bodygraph-app.js +78 -11
- package/dist/ui/bi-wheel.html +1771 -1704
- package/dist/ui/bodygraph.html +1360 -1335
- package/dist/ui/chart-wheel.html +304 -315
- package/package.json +1 -1
package/dist/ui/chart-wheel.html
CHANGED
|
@@ -7,15 +7,20 @@
|
|
|
7
7
|
<title>Chart Wheel Explorer</title>
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
<style>:root{--bg:#010203;--surface:#040609;--surface-2:#0b0d13;--border:#13161d;--border-strong:#242932;--text:#e2e4e9;--text-secondary:#777a80;--gold:#cc9c42;--gold-dim:#7b6540;--gold-glow:rgba(204,156,66,.2);--gold-subtle:rgba(204,156,66,.1);--success:#1da871;--error:#c53443;--radius:10px;--radius-sm:6px;--radius-pill:99px;--shadow:0 4px 20px rgba(0,0,0,.45);--shadow-md:0 8px 40px rgba(0,0,0,.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px rgba(0,0,0,.5);--planet-sun:#e9ab2b;--planet-moon:#abb8d2;--planet-mercury:#37b880;--planet-venus:#de73bd;--planet-mars:#dd4d57;--planet-jupiter:#9886ed;--planet-saturn:#589194;--planet-uranus:#24c1c9;--planet-neptune:#2f8adc;--planet-pluto:#a97cc9;--aspect-conjunction:#e9ab2b;--aspect-opposition:#dd4d57;--aspect-trine:#37b880;--aspect-square:#dd4d57;--aspect-sextile:#2f8adc;--color-fire:#ec6d3d;--color-earth:#779e4b;--color-air:#17a9cb;--color-water:#8678c9;--color-cardinal:#d9525a;--color-fixed:#cc9c42;--color-mutable:#1da871}@supports (color:color(display-p3 0 0 0)){:root{--bg:color(display-p3 .00515318 .00655345 .0110262);--surface:color(display-p3 .0181758 .0222118 .0344746);--surface-2:color(display-p3 .0438795 .0516065 .0708656);--border:color(display-p3 .0763929 .0859556 .109705);--border-strong:color(display-p3 .146313 .159736 .192938);--text:color(display-p3 .889546 .895785 .910689);--text-secondary:color(display-p3 .470023 .47923 .50135);--gold:color(display-p3 .76996 .617341 .321369);--gold-dim:color(display-p3 .469305 .400291 .270966);--gold-glow:color(display-p3 .76996 .617341 .321369/.2);--gold-subtle:color(display-p3 .76996 .617341 .321369/.1);--success:color(display-p3 .313719 .651039 .459895);--error:color(display-p3 .710345 .252818 .279408);--shadow:0 4px 20px color(display-p3 0 0 0/.45);--shadow-md:0 8px 40px color(display-p3 0 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px color(display-p3 0 0 0/.5);--planet-sun:color(display-p3 .877131 .680603 .28424);--planet-moon:color(display-p3 .679472 .718322 .813586);--planet-mercury:color(display-p3 .376022 .713332 .518194);--planet-venus:color(display-p3 .815343 .471375 .72873);--planet-mars:color(display-p3 .803557 .340931 .357065);--planet-jupiter:color(display-p3 .584642 .526796 .904819);--planet-saturn:color(display-p3 .398313 .564522 .578019);--planet-uranus:color(display-p3 .364235 .746318 .77845);--planet-neptune:color(display-p3 .290256 .532943 .838196);--planet-pluto:color(display-p3 .635092 .494812 .769187);--aspect-conjunction:color(display-p3 .877131 .680603 .28424);--aspect-opposition:color(display-p3 .803557 .340931 .357065);--aspect-trine:color(display-p3 .376022 .713332 .518194);--aspect-square:color(display-p3 .803557 .340931 .357065);--aspect-sextile:color(display-p3 .290256 .532943 .838196);--color-fire:color(display-p3 .864679 .454605 .289251);--color-earth:color(display-p3 .496575 .613452 .334223);--color-air:color(display-p3 .308318 .651825 .781829);--color-water:color(display-p3 .515326 .47381 .767317);--color-cardinal:color(display-p3 .790049 .355864 .367143);--color-fixed:color(display-p3 .76996 .617341 .321369);--color-mutable:color(display-p3 .313719 .651039 .459895)}}@supports (color:lab(0% 0 0)){:root{--bg:lab(.455387% .00626594 -.517511);--surface:lab(1.54195% -.000223517 -1.4246);--surface-2:lab(3.66055% -.0193194 -3.00652);--border:lab(7.15581% -.0557452 -5.11242);--border-strong:lab(16.3845% -.109613 -6.65551);--text:lab(90.6942% -.142396 -2.26941);--text-secondary:lab(51.2352% -.205308 -3.76425);--gold:lab(67.5798% 11.9379 52.333);--gold-dim:lab(44.394% 5.21129 24.4453);--gold-glow:lab(67.5798% 11.9379 52.333/.2);--gold-subtle:lab(67.5798% 11.9379 52.333/.1);--success:lab(61.2436% -46.7762 18.3644);--error:lab(45.8893% 57.7361 27.393);--shadow:0 4px 20px lab(0% 0 0/.45);--shadow-md:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px lab(0% 0 0/.5);--planet-sun:lab(74.5017% 15.8159 68.8514);--planet-moon:lab(74.277% -.405759 -14.8565);--planet-mercury:lab(67.0478% -46.5952 18.3141);--planet-venus:lab(62.9358% 49.4917 -19.8999);--planet-mars:lab(54.0218% 57.6814 26.7913);--planet-jupiter:lab(60.9189% 25.1968 -50.641);--planet-saturn:lab(56.5081% -18.8848 -7.8149);--planet-uranus:lab(71.0008% -37.5682 -15.4301);--planet-neptune:lab(55.2086% -4.9496 -50.4575);--planet-pluto:lab(58.8593% 28.4679 -33.3654);--aspect-conjunction:lab(74.5017% 15.8159 68.8514);--aspect-opposition:lab(54.0218% 57.6814 26.7913);--aspect-trine:lab(67.0478% -46.5952 18.3141);--aspect-square:lab(54.0218% 57.6814 26.7913);--aspect-sextile:lab(55.2086% -4.9496 -50.4575);--color-fire:lab(61.5466% 48.3829 50.2676);--color-earth:lab(60.647% -24.5491 38.2386);--color-air:lab(63.473% -27.3149 -28.2614);--color-water:lab(54.4132% 19.4196 -40.6625);--color-cardinal:lab(54.1324% 54.4527 25.0799);--color-fixed:lab(67.5798% 11.9379 52.333);--color-mutable:lab(61.2436% -46.7762 18.3644)}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;height:100%}body{background:var(--bg);color:var(--text);-webkit-user-select:none;-moz-user-select:none;user-select:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");font-family:Geist,Space Grotesk,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.5;overflow-x:hidden}#app{flex-direction:column;display:flex;position:relative}#loading-state{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;display:flex}#loading-state[hidden]{display:none}#loading-state p{letter-spacing:.05em;text-transform:uppercase;font-size:12px}.spinner{border:2px solid var(--border-strong);border-top-color:var(--gold);border-radius:50%;width:32px;height:32px;animation:1.1s cubic-bezier(.4,0,.6,1) infinite spin}@keyframes spin{to{transform:rotate(360deg)}}#chart-container{aspect-ratio:1;justify-content:center;align-items:center;width:100%;max-height:520px;padding:8px;display:flex;position:relative}#chart-container[hidden]{display:none}#chart-container svg{width:100%;height:100%}#chart-info{background:var(--surface);border-top:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:5px;padding:6px 12px;display:flex}#chart-info[hidden]{display:none!important}.info-chip{color:var(--text-secondary);border-radius:var(--radius-pill);white-space:nowrap;letter-spacing:.03em;background:#13161c;background:color(display-p3 .0777944 .086043 .106387);background:lab(7.16788% -.0827834 -4.39059);align-items:center;gap:3px;padding:2px 8px;font-size:10px;font-weight:500;line-height:1.6;display:inline-flex}.info-chip.sect{color:var(--gold);background:var(--gold-subtle);font-weight:600}.hit-region{cursor:pointer;fill:transparent;stroke:transparent;transition:fill .15s,stroke .15s,opacity .2s}.hit-region:hover{fill:var(--gold-subtle);stroke:var(--gold-dim);stroke-width:1px;stroke-opacity:.5}.hit-region.planet-hit{rx:12px;ry:12px}.hit-region.planet-hit:not(.dim):hover{filter:drop-shadow(0 0 6px var(--gold-glow))}.hit-region.dim{opacity:.12}.hit-region.aspect-hit{stroke-width:13px}.hit-region.aspect-hit.highlight{stroke:var(--aspect-color,var(--gold-dim));stroke-opacity:.5}.info-panel{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-md);z-index:900;opacity:0;pointer-events:none;width:min(340px,92vw);padding:14px 16px 12px;transition:opacity .18s cubic-bezier(.16,1,.3,1);position:fixed}.info-panel.visible{opacity:1;pointer-events:all}.info-header{align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.info-glyph{text-align:center;flex-shrink:0;width:34px;font-size:28px;line-height:1}.info-title{color:var(--text);flex:1;font-size:13px;font-weight:700}.info-name-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.info-pos{color:var(--text-secondary);margin-top:2px;font-family:JetBrains Mono,Courier New,monospace;font-size:11px;font-weight:400}.retro{color:var(--error);font-style:normal}.info-close{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:15px;line-height:1;transition:color .12s}.info-close:hover{color:var(--text)}.aspects-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:6px;font-size:10px;font-weight:700}.aspects-list{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-direction:column;gap:4px;max-height:140px;display:flex;overflow-y:auto}.aspects-list::-webkit-scrollbar{width:3px}.aspects-list::-webkit-scrollbar-track{background:0 0}.aspects-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.aspect-row{align-items:center;gap:7px;padding:3px 0;font-size:12px;display:flex}.aspect-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.aspect-sym{text-align:center;flex-shrink:0;width:16px;font-size:14px}.aspect-other{color:var(--text);flex:1}.aspect-meta{color:var(--text-secondary);white-space:nowrap;font-family:JetBrains Mono,monospace;font-size:11px}.no-aspects{color:var(--text-secondary);padding:4px 0;font-size:11px;font-style:italic}.info-hint{color:var(--gold-dim);letter-spacing:.03em;text-align:center;margin-top:10px;font-size:10px}.ask-claude-btn{border-radius:var(--radius-sm);width:100%;color:var(--gold);letter-spacing:.04em;cursor:pointer;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);justify-content:center;align-items:center;gap:6px;margin-top:12px;padding:9px 16px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:12px;font-weight:600;transition:background .16s,border-color .16s,box-shadow .16s;display:flex}.ask-claude-btn:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65);box-shadow:0 0 0 3px rgba(204,156,66,.12);box-shadow:0 0 0 3px color(display-p3 .76996 .617341 .321369/.12);box-shadow:0 0 0 3px lab(67.5798% 11.9379 52.333/.12)}.ask-claude-btn:disabled{opacity:.5;cursor:not-allowed}.ask-claude-btn.sending{color:var(--gold-dim);opacity:.8;cursor:wait;pointer-events:none;background:rgba(204,156,66,.08);background:color(display-p3 .76996 .617341 .321369/.08);background:lab(67.5798% 11.9379 52.333/.08);border-color:rgba(204,156,66,.25);border-color:color(display-p3 .76996 .617341 .321369/.25);border-color:lab(67.5798% 11.9379 52.333/.25)}.ask-claude-btn.sent{color:var(--success);pointer-events:none;background:rgba(29,168,113,.15);background:color(display-p3 .313719 .651039 .459895/.15);background:lab(61.2436% -46.7762 18.3644/.15);border-color:rgba(29,168,113,.5);border-color:color(display-p3 .313719 .651039 .459895/.5);border-color:lab(61.2436% -46.7762 18.3644/.5)}.ask-claude-btn.error{color:var(--error);background:rgba(197,52,67,.15);background:color(display-p3 .710345 .252818 .279408/.15);background:lab(45.8893% 57.7361 27.393/.15);border-color:rgba(197,52,67,.5);border-color:color(display-p3 .710345 .252818 .279408/.5);border-color:lab(45.8893% 57.7361 27.393/.5)}.chart-status{min-height:0;max-height:0;color:var(--gold);letter-spacing:.04em;opacity:0;background:var(--surface);border-top:1px solid var(--border);padding:0 14px;font-size:11px;font-weight:500;transition:max-height .24s cubic-bezier(.16,1,.3,1),padding .24s cubic-bezier(.16,1,.3,1),opacity .24s;overflow:hidden}.chart-status[data-active]{opacity:1;max-height:32px;padding:6px 14px}.aspect-pair-row{justify-content:space-between;align-items:center;gap:8px;padding:6px 0;display:flex}.aspect-pair-planet{flex:1;align-items:center;gap:6px;display:flex}.aspect-pair-glyph{text-align:center;flex-shrink:0;width:24px;font-size:18px;line-height:1}.aspect-pair-name{color:var(--text);font-size:12px;font-weight:600}.aspect-pair-pos{color:var(--text-secondary);margin-top:1px;font-family:JetBrains Mono,monospace;font-size:10px}.aspect-pair-sym{text-align:center;flex-shrink:0;width:24px;font-size:20px}.pattern-ask-claude-btn{border-radius:var(--radius-pill);color:var(--gold);letter-spacing:.04em;cursor:pointer;background:rgba(204,156,66,.1);background:color(display-p3 .76996 .617341 .321369/.1);background:lab(67.5798% 11.9379 52.333/.1);border:1px solid rgba(204,156,66,.35);border:1px solid color(display-p3 .76996 .617341 .321369/.35);border:1px solid lab(67.5798% 11.9379 52.333/.35);flex-shrink:0;margin-left:6px;padding:3px 10px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:10px;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s}.pattern-ask-claude-btn:hover{background:rgba(204,156,66,.18);background:color(display-p3 .76996 .617341 .321369/.18);background:lab(67.5798% 11.9379 52.333/.18);border-color:rgba(204,156,66,.6);border-color:color(display-p3 .76996 .617341 .321369/.6);border-color:lab(67.5798% 11.9379 52.333/.6);box-shadow:0 0 0 2px rgba(204,156,66,.1);box-shadow:0 0 0 2px color(display-p3 .76996 .617341 .321369/.1);box-shadow:0 0 0 2px lab(67.5798% 11.9379 52.333/.1)}.pattern-ask-claude-btn:disabled{opacity:.45;cursor:default}.dignity-badge{border-radius:var(--radius-pill);white-space:nowrap;align-items:center;gap:3px;padding:1px 7px;font-size:10px;font-weight:600;line-height:1.6;display:inline-flex}.dignity-domicile{color:#4bc98f;color:color(display-p3 .438181 .776546 .577613);color:lab(72.8515% -46.4433 18.2719);background:rgba(29,168,113,.15);background:color(display-p3 .313719 .651039 .459895/.15);background:lab(61.2436% -46.7762 18.3644/.15);border:1px solid rgba(29,168,113,.4);border:1px solid color(display-p3 .313719 .651039 .459895/.4);border:1px solid lab(61.2436% -46.7762 18.3644/.4)}.dignity-exaltation{color:#e6b55d;color:color(display-p3 .872302 .716587 .419329);color:lab(76.8879% 11.458 50.9953);background:rgba(204,156,66,.15);background:color(display-p3 .76996 .617341 .321369/.15);background:lab(67.5798% 11.9379 52.333/.15);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4)}.dignity-detriment{color:#e17174;color:color(display-p3 .827266 .46738 .465289);color:lab(61.4259% 44.7499 19.9857);background:rgba(197,52,67,.12);background:color(display-p3 .710345 .252818 .279408/.12);background:lab(45.8893% 57.7361 27.393/.12);border:1px solid rgba(197,52,67,.35);border:1px solid color(display-p3 .710345 .252818 .279408/.35);border:1px solid lab(45.8893% 57.7361 27.393/.35)}.dignity-fall{color:#7a869f;color:color(display-p3 .488637 .525017 .615022);color:lab(55.7075% -.240654 -14.7889);background:rgba(88,99,123,.12);background:color(display-p3 .353624 .387759 .473149/.12);background:lab(41.7762% -.0450611 -14.7162/.12);border:1px solid rgba(88,99,123,.3);border:1px solid color(display-p3 .353624 .387759 .473149/.3);border:1px solid lab(41.7762% -.0450611 -14.7162/.3)}#tally-panel{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:8px;padding:5px 12px;display:flex}.tally-section{flex-direction:column;gap:3px;display:flex}.tally-row{align-items:center;gap:6px;display:flex}.tally-item{white-space:nowrap;letter-spacing:.02em;border-radius:4px;padding:1px 6px;font-size:10px;font-weight:600}.tally-item.fire{color:var(--color-fire);background:rgba(236,109,61,.12);background:color(display-p3 .864679 .454605 .289251/.12);background:lab(61.5466% 48.3829 50.2676/.12)}.tally-item.earth{color:var(--color-earth);background:rgba(119,158,75,.12);background:color(display-p3 .496575 .613452 .334223/.12);background:lab(60.647% -24.5491 38.2386/.12)}.tally-item.air{color:var(--color-air);background:rgba(23,169,203,.12);background:color(display-p3 .308318 .651825 .781829/.12);background:lab(63.473% -27.3149 -28.2614/.12)}.tally-item.water{color:var(--color-water);background:rgba(134,120,201,.12);background:color(display-p3 .515326 .47381 .767317/.12);background:lab(54.4132% 19.4196 -40.6625/.12)}.tally-item.cardinal{color:var(--color-cardinal);background:rgba(217,82,90,.1);background:color(display-p3 .790049 .355864 .367143/.1);background:lab(54.1324% 54.4527 25.0799/.1)}.tally-item.fixed{color:var(--color-fixed);background:rgba(204,156,66,.1);background:color(display-p3 .76996 .617341 .321369/.1);background:lab(67.5798% 11.9379 52.333/.1)}.tally-item.mutable{color:var(--color-mutable);background:rgba(29,168,113,.1);background:color(display-p3 .313719 .651039 .459895/.1);background:lab(61.2436% -46.7762 18.3644/.1)}.tally-bar-row{padding:2px 0}.tally-bar{background:var(--border);border-radius:2px;width:96px;height:3px;display:flex;overflow:hidden}.tally-bar-fill{height:100%;transition:width .5s cubic-bezier(.16,1,.3,1)}.tally-bar-fill.fire{background:var(--color-fire)}.tally-bar-fill.earth{background:var(--color-earth)}.tally-bar-fill.air{background:var(--color-air)}.tally-bar-fill.water{background:var(--color-water)}.tally-divider{background:var(--border-strong);flex-shrink:0;width:1px;height:26px}#patterns-strip{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:5px;padding:5px 12px;display:flex}.patterns-label{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);white-space:nowrap;margin-right:2px;font-size:9px;font-weight:700}.pattern-pill{border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;opacity:.75;background:0 0;border:1px solid;align-items:center;gap:4px;padding:2px 9px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:10px;font-weight:600;transition:opacity .14s,box-shadow .14s;display:inline-flex}.pattern-pill:hover{opacity:1;box-shadow:0 0 0 2px currentColor / .2}.pattern-pill.active{color:#010203;color:color(display-p3 .00515318 .00655345 .0110262);color:lab(.455387% .00626594 -.517511);opacity:1;border-color:transparent;box-shadow:0 2px 10px rgba(0,0,0,.3);box-shadow:0 2px 10px color(display-p3 0 0 0/.3);box-shadow:0 2px 10px lab(0% 0 0/.3)}#aspect-filter{border-top:1px solid var(--border);scrollbar-width:none;flex-shrink:0;align-items:center;gap:4px;padding:4px 12px;display:flex;overflow-x:auto}#aspect-filter::-webkit-scrollbar{display:none}#aspect-filter[hidden]{display:none!important}#controls-panel{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;padding:8px 12px;display:flex}.controls-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;margin-right:2px;font-size:10px;font-weight:700}.control-btn{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;padding:3px 10px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:11px;transition:background .12s,color .12s,border-color .12s}.control-btn:hover{background:var(--gold-subtle);color:var(--gold);border-color:rgba(204,156,66,.4);border-color:color(display-p3 .76996 .617341 .321369/.4);border-color:lab(67.5798% 11.9379 52.333/.4)}.control-btn.active{color:var(--gold);background:rgba(204,156,66,.18);background:color(display-p3 .76996 .617341 .321369/.18);background:lab(67.5798% 11.9379 52.333/.18);border-color:rgba(204,156,66,.6);border-color:color(display-p3 .76996 .617341 .321369/.6);border-color:lab(67.5798% 11.9379 52.333/.6);font-weight:600}.controls-divider{background:var(--border-strong);flex-shrink:0;width:1px;height:18px;margin:0 4px}.tooltip{-webkit-backdrop-filter:blur(14px)saturate(1.6);backdrop-filter:blur(14px)saturate(1.6);border:1px solid var(--border-strong);border-radius:var(--radius);pointer-events:none;z-index:1000;opacity:0;background:rgba(7,9,14,.92);background:color(display-p3 .0286832 .0352525 .0537785/.92);background:lab(2.44746% .00379235 -2.33402/.92);max-width:220px;padding:8px 12px;font-size:12px;transition:opacity .12s;position:fixed;box-shadow:0 8px 32px rgba(0,0,0,.55),inset 0 .5px rgba(255,255,255,.04);box-shadow:0 8px 32px color(display-p3 0 0 0/.55),inset 0 .5px color(display-p3 1 1 1/.04);box-shadow:0 8px 32px lab(0% 0 0/.55),inset 0 .5px lab(100% 0 0/.04)}.tooltip.visible{opacity:1}.tooltip-title{color:var(--text);margin-bottom:2px;font-weight:700}.tooltip-detail{color:var(--text-secondary);line-height:1.4}.tooltip-hint{color:var(--gold-dim);letter-spacing:.03em;margin-top:4px;font-size:10px}.error-state{text-align:center;color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.error-state .error-icon{opacity:.6;margin-bottom:4px;font-size:28px}.hd-action-bar{flex-wrap:wrap;gap:8px;padding:10px 16px 6px;display:flex}.action-btn{color:#d4af37;letter-spacing:.02em;cursor:pointer;white-space:nowrap;background:rgba(212,175,55,.08);border:1px solid rgba(212,175,55,.3);border-radius:8px;align-items:center;gap:6px;padding:7px 16px;font-size:12px;font-weight:600;transition:background .2s,border-color .2s,transform .1s;display:inline-flex}.action-btn:hover{background:rgba(212,175,55,.15);border-color:rgba(212,175,55,.5);transform:translateY(-1px)}.action-btn:active{background:rgba(212,175,55,.2);transform:translateY(0)}.action-btn--primary{color:#f0d060;background:linear-gradient(135deg,rgba(212,175,55,.2),rgba(180,140,30,.25));border-color:rgba(212,175,55,.5)}.action-btn--primary:hover{background:linear-gradient(135deg,rgba(212,175,55,.3),rgba(180,140,30,.35));border-color:rgba(212,175,55,.7)}.param-controls{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;padding:8px 12px}.param-controls-grid{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.param-group{flex-direction:column;gap:4px;display:flex}.param-group label{text-transform:uppercase;color:var(--text-secondary);letter-spacing:.05em;font-size:10px;font-weight:700}.param-group input[type=date],.param-group input[type=time],.param-group input[type=text]{border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius-sm);background:#07090e;background:color(display-p3 .0286832 .0352525 .0537785);background:lab(2.44746% .00379235 -2.33402);width:130px;padding:4px 8px;font-family:inherit;font-size:12px;transition:border-color .15s}.param-group input:focus{border-color:var(--gold-dim);outline:none}.param-group-loc{flex:1;position:relative}.param-group-loc input{width:100%}.loc-suggestions{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:100;max-height:200px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.loc-item{color:var(--text);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid var(--border);padding:8px 10px;font-size:12px;overflow:hidden}.loc-item:last-child{border-bottom:none}.loc-item:hover{background:var(--gold-subtle);color:var(--gold)}.param-actions{align-items:flex-end;gap:6px;padding-top:14px;display:flex}.param-btn-icon{border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:26px;height:26px;transition:all .15s;display:flex}.param-btn-icon:hover{background:var(--surface-2);color:var(--text);border-color:var(--gold-dim)}.param-btn-primary{color:var(--gold);border-radius:var(--radius-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.05em;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);height:26px;padding:4px 12px;font-family:inherit;font-size:11px;font-weight:600;transition:all .15s}.param-btn-primary:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65)}.param-btn-primary:disabled{opacity:.5;cursor:not-allowed}
|
|
10
|
+
<style>:root{--bg:#010203;--surface:#040609;--surface-2:#0b0d13;--border:#13161d;--border-strong:#242932;--text:#e2e4e9;--text-secondary:#777a80;--gold:#cc9c42;--gold-dim:#7b6540;--gold-glow:rgba(204,156,66,.2);--gold-subtle:rgba(204,156,66,.1);--success:#1da871;--error:#c53443;--radius:10px;--radius-sm:6px;--radius-pill:99px;--shadow:0 4px 20px rgba(0,0,0,.45);--shadow-md:0 8px 40px rgba(0,0,0,.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px rgba(0,0,0,.5);--planet-sun:#e9ab2b;--planet-moon:#abb8d2;--planet-mercury:#37b880;--planet-venus:#de73bd;--planet-mars:#dd4d57;--planet-jupiter:#9886ed;--planet-saturn:#589194;--planet-uranus:#24c1c9;--planet-neptune:#2f8adc;--planet-pluto:#a97cc9;--aspect-conjunction:#e9ab2b;--aspect-opposition:#dd4d57;--aspect-trine:#37b880;--aspect-square:#dd4d57;--aspect-sextile:#2f8adc;--color-fire:#ec6d3d;--color-earth:#779e4b;--color-air:#17a9cb;--color-water:#8678c9;--color-cardinal:#d9525a;--color-fixed:#cc9c42;--color-mutable:#1da871}@supports (color:color(display-p3 0 0 0)){:root{--bg:color(display-p3 .00515318 .00655345 .0110262);--surface:color(display-p3 .0181758 .0222118 .0344746);--surface-2:color(display-p3 .0438795 .0516065 .0708656);--border:color(display-p3 .0763929 .0859556 .109705);--border-strong:color(display-p3 .146313 .159736 .192938);--text:color(display-p3 .889546 .895785 .910689);--text-secondary:color(display-p3 .470023 .47923 .50135);--gold:color(display-p3 .76996 .617341 .321369);--gold-dim:color(display-p3 .469305 .400291 .270966);--gold-glow:color(display-p3 .76996 .617341 .321369/.2);--gold-subtle:color(display-p3 .76996 .617341 .321369/.1);--success:color(display-p3 .313719 .651039 .459895);--error:color(display-p3 .710345 .252818 .279408);--shadow:0 4px 20px color(display-p3 0 0 0/.45);--shadow-md:0 8px 40px color(display-p3 0 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px color(display-p3 0 0 0/.5);--planet-sun:color(display-p3 .877131 .680603 .28424);--planet-moon:color(display-p3 .679472 .718322 .813586);--planet-mercury:color(display-p3 .376022 .713332 .518194);--planet-venus:color(display-p3 .815343 .471375 .72873);--planet-mars:color(display-p3 .803557 .340931 .357065);--planet-jupiter:color(display-p3 .584642 .526796 .904819);--planet-saturn:color(display-p3 .398313 .564522 .578019);--planet-uranus:color(display-p3 .364235 .746318 .77845);--planet-neptune:color(display-p3 .290256 .532943 .838196);--planet-pluto:color(display-p3 .635092 .494812 .769187);--aspect-conjunction:color(display-p3 .877131 .680603 .28424);--aspect-opposition:color(display-p3 .803557 .340931 .357065);--aspect-trine:color(display-p3 .376022 .713332 .518194);--aspect-square:color(display-p3 .803557 .340931 .357065);--aspect-sextile:color(display-p3 .290256 .532943 .838196);--color-fire:color(display-p3 .864679 .454605 .289251);--color-earth:color(display-p3 .496575 .613452 .334223);--color-air:color(display-p3 .308318 .651825 .781829);--color-water:color(display-p3 .515326 .47381 .767317);--color-cardinal:color(display-p3 .790049 .355864 .367143);--color-fixed:color(display-p3 .76996 .617341 .321369);--color-mutable:color(display-p3 .313719 .651039 .459895)}}@supports (color:lab(0% 0 0)){:root{--bg:lab(.455387% .00626594 -.517511);--surface:lab(1.54195% -.000223517 -1.4246);--surface-2:lab(3.66055% -.0193194 -3.00652);--border:lab(7.15581% -.0557452 -5.11242);--border-strong:lab(16.3845% -.109613 -6.65551);--text:lab(90.6942% -.142396 -2.26941);--text-secondary:lab(51.2352% -.205308 -3.76425);--gold:lab(67.5798% 11.9379 52.333);--gold-dim:lab(44.394% 5.21129 24.4453);--gold-glow:lab(67.5798% 11.9379 52.333/.2);--gold-subtle:lab(67.5798% 11.9379 52.333/.1);--success:lab(61.2436% -46.7762 18.3644);--error:lab(45.8893% 57.7361 27.393);--shadow:0 4px 20px lab(0% 0 0/.45);--shadow-md:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px lab(0% 0 0/.5);--planet-sun:lab(74.5017% 15.8159 68.8514);--planet-moon:lab(74.277% -.405759 -14.8565);--planet-mercury:lab(67.0478% -46.5952 18.3141);--planet-venus:lab(62.9358% 49.4917 -19.8999);--planet-mars:lab(54.0218% 57.6814 26.7913);--planet-jupiter:lab(60.9189% 25.1968 -50.641);--planet-saturn:lab(56.5081% -18.8848 -7.8149);--planet-uranus:lab(71.0008% -37.5682 -15.4301);--planet-neptune:lab(55.2086% -4.9496 -50.4575);--planet-pluto:lab(58.8593% 28.4679 -33.3654);--aspect-conjunction:lab(74.5017% 15.8159 68.8514);--aspect-opposition:lab(54.0218% 57.6814 26.7913);--aspect-trine:lab(67.0478% -46.5952 18.3141);--aspect-square:lab(54.0218% 57.6814 26.7913);--aspect-sextile:lab(55.2086% -4.9496 -50.4575);--color-fire:lab(61.5466% 48.3829 50.2676);--color-earth:lab(60.647% -24.5491 38.2386);--color-air:lab(63.473% -27.3149 -28.2614);--color-water:lab(54.4132% 19.4196 -40.6625);--color-cardinal:lab(54.1324% 54.4527 25.0799);--color-fixed:lab(67.5798% 11.9379 52.333);--color-mutable:lab(61.2436% -46.7762 18.3644)}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;height:100%}body{background:var(--bg);color:var(--text);-webkit-user-select:none;-moz-user-select:none;user-select:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");font-family:Geist,Space Grotesk,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.5;overflow-x:hidden}#app{flex-direction:column;display:flex;position:relative}#loading-state{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;display:flex}#loading-state[hidden]{display:none}#loading-state p{letter-spacing:.05em;text-transform:uppercase;font-size:12px}.spinner{border:2px solid var(--border-strong);border-top-color:var(--gold);border-radius:50%;width:32px;height:32px;animation:1.1s cubic-bezier(.4,0,.6,1) infinite spin}@keyframes spin{to{transform:rotate(360deg)}}#chart-container{aspect-ratio:1;justify-content:center;align-items:center;width:100%;max-height:520px;padding:8px;display:flex;position:relative}#chart-container[hidden]{display:none}#chart-container svg{width:100%;height:100%}#chart-info{background:var(--surface);border-top:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:5px;padding:6px 12px;display:flex}#chart-info[hidden]{display:none!important}.info-chip{color:var(--text-secondary);border-radius:var(--radius-pill);white-space:nowrap;letter-spacing:.03em;background:#13161c;background:color(display-p3 .0777944 .086043 .106387);background:lab(7.16788% -.0827834 -4.39059);align-items:center;gap:3px;padding:2px 8px;font-size:10px;font-weight:500;line-height:1.6;display:inline-flex}.info-chip.sect{color:var(--gold);background:var(--gold-subtle);font-weight:600}.hit-region{cursor:pointer;fill:transparent;stroke:transparent;transition:fill .15s,stroke .15s,opacity .2s}.hit-region:hover{fill:var(--gold-subtle);stroke:var(--gold-dim);stroke-width:1px;stroke-opacity:.5}.hit-region.planet-hit{rx:12px;ry:12px}.hit-region.planet-hit:not(.dim):hover{filter:drop-shadow(0 0 6px var(--gold-glow))}.hit-region.dim{opacity:.12}.hit-region.aspect-hit{stroke-width:13px}.hit-region.aspect-hit.highlight{stroke:var(--aspect-color,var(--gold-dim));stroke-opacity:.5}.info-panel{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-md);z-index:900;opacity:0;pointer-events:none;width:min(340px,92vw);padding:14px 16px 12px;transition:opacity .18s cubic-bezier(.16,1,.3,1);position:fixed}.info-panel.visible{opacity:1;pointer-events:all}.info-header{align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.info-glyph{text-align:center;flex-shrink:0;width:34px;font-size:28px;line-height:1}.info-title{color:var(--text);flex:1;font-size:13px;font-weight:700}.info-name-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.info-pos{color:var(--text-secondary);margin-top:2px;font-family:JetBrains Mono,Courier New,monospace;font-size:11px;font-weight:400}.retro{color:var(--error);font-style:normal}.info-close{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:15px;line-height:1;transition:color .12s}.info-close:hover{color:var(--text)}.aspects-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:6px;font-size:10px;font-weight:700}.aspects-list{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-direction:column;gap:4px;max-height:140px;display:flex;overflow-y:auto}.aspects-list::-webkit-scrollbar{width:3px}.aspects-list::-webkit-scrollbar-track{background:0 0}.aspects-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.aspect-row{align-items:center;gap:7px;padding:3px 0;font-size:12px;display:flex}.aspect-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.aspect-sym{text-align:center;flex-shrink:0;width:16px;font-size:14px}.aspect-other{color:var(--text);flex:1}.aspect-meta{color:var(--text-secondary);white-space:nowrap;font-family:JetBrains Mono,monospace;font-size:11px}.no-aspects{color:var(--text-secondary);padding:4px 0;font-size:11px;font-style:italic}.info-hint{color:var(--gold-dim);letter-spacing:.03em;text-align:center;margin-top:10px;font-size:10px}.ask-claude-btn{border-radius:var(--radius-sm);width:100%;color:var(--gold);letter-spacing:.04em;cursor:pointer;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);justify-content:center;align-items:center;gap:6px;margin-top:12px;padding:9px 16px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:12px;font-weight:600;transition:background .16s,border-color .16s,box-shadow .16s;display:flex}.ask-claude-btn:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65);box-shadow:0 0 0 3px rgba(204,156,66,.12);box-shadow:0 0 0 3px color(display-p3 .76996 .617341 .321369/.12);box-shadow:0 0 0 3px lab(67.5798% 11.9379 52.333/.12)}.ask-claude-btn:disabled{opacity:.5;cursor:not-allowed}.ask-claude-btn.sending{color:var(--gold-dim);opacity:.8;cursor:wait;pointer-events:none;background:rgba(204,156,66,.08);background:color(display-p3 .76996 .617341 .321369/.08);background:lab(67.5798% 11.9379 52.333/.08);border-color:rgba(204,156,66,.25);border-color:color(display-p3 .76996 .617341 .321369/.25);border-color:lab(67.5798% 11.9379 52.333/.25)}.ask-claude-btn.sent{color:var(--success);pointer-events:none;background:rgba(29,168,113,.15);background:color(display-p3 .313719 .651039 .459895/.15);background:lab(61.2436% -46.7762 18.3644/.15);border-color:rgba(29,168,113,.5);border-color:color(display-p3 .313719 .651039 .459895/.5);border-color:lab(61.2436% -46.7762 18.3644/.5)}.ask-claude-btn.error{color:var(--error);background:rgba(197,52,67,.15);background:color(display-p3 .710345 .252818 .279408/.15);background:lab(45.8893% 57.7361 27.393/.15);border-color:rgba(197,52,67,.5);border-color:color(display-p3 .710345 .252818 .279408/.5);border-color:lab(45.8893% 57.7361 27.393/.5)}.chart-status{min-height:0;max-height:0;color:var(--gold);letter-spacing:.04em;opacity:0;background:var(--surface);border-top:1px solid var(--border);padding:0 14px;font-size:11px;font-weight:500;transition:max-height .24s cubic-bezier(.16,1,.3,1),padding .24s cubic-bezier(.16,1,.3,1),opacity .24s;overflow:hidden}.chart-status[data-active]{opacity:1;max-height:32px;padding:6px 14px}.aspect-pair-row{justify-content:space-between;align-items:center;gap:8px;padding:6px 0;display:flex}.aspect-pair-planet{flex:1;align-items:center;gap:6px;display:flex}.aspect-pair-glyph{text-align:center;flex-shrink:0;width:24px;font-size:18px;line-height:1}.aspect-pair-name{color:var(--text);font-size:12px;font-weight:600}.aspect-pair-pos{color:var(--text-secondary);margin-top:1px;font-family:JetBrains Mono,monospace;font-size:10px}.aspect-pair-sym{text-align:center;flex-shrink:0;width:24px;font-size:20px}.pattern-ask-claude-btn{border-radius:var(--radius-pill);color:var(--gold);letter-spacing:.04em;cursor:pointer;background:rgba(204,156,66,.1);background:color(display-p3 .76996 .617341 .321369/.1);background:lab(67.5798% 11.9379 52.333/.1);border:1px solid rgba(204,156,66,.35);border:1px solid color(display-p3 .76996 .617341 .321369/.35);border:1px solid lab(67.5798% 11.9379 52.333/.35);flex-shrink:0;margin-left:6px;padding:3px 10px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:10px;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s}.pattern-ask-claude-btn:hover{background:rgba(204,156,66,.18);background:color(display-p3 .76996 .617341 .321369/.18);background:lab(67.5798% 11.9379 52.333/.18);border-color:rgba(204,156,66,.6);border-color:color(display-p3 .76996 .617341 .321369/.6);border-color:lab(67.5798% 11.9379 52.333/.6);box-shadow:0 0 0 2px rgba(204,156,66,.1);box-shadow:0 0 0 2px color(display-p3 .76996 .617341 .321369/.1);box-shadow:0 0 0 2px lab(67.5798% 11.9379 52.333/.1)}.pattern-ask-claude-btn:disabled{opacity:.45;cursor:default}.dignity-badge{border-radius:var(--radius-pill);white-space:nowrap;align-items:center;gap:3px;padding:1px 7px;font-size:10px;font-weight:600;line-height:1.6;display:inline-flex}.dignity-domicile{color:#4bc98f;color:color(display-p3 .438181 .776546 .577613);color:lab(72.8515% -46.4433 18.2719);background:rgba(29,168,113,.15);background:color(display-p3 .313719 .651039 .459895/.15);background:lab(61.2436% -46.7762 18.3644/.15);border:1px solid rgba(29,168,113,.4);border:1px solid color(display-p3 .313719 .651039 .459895/.4);border:1px solid lab(61.2436% -46.7762 18.3644/.4)}.dignity-exaltation{color:#e6b55d;color:color(display-p3 .872302 .716587 .419329);color:lab(76.8879% 11.458 50.9953);background:rgba(204,156,66,.15);background:color(display-p3 .76996 .617341 .321369/.15);background:lab(67.5798% 11.9379 52.333/.15);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4)}.dignity-detriment{color:#e17174;color:color(display-p3 .827266 .46738 .465289);color:lab(61.4259% 44.7499 19.9857);background:rgba(197,52,67,.12);background:color(display-p3 .710345 .252818 .279408/.12);background:lab(45.8893% 57.7361 27.393/.12);border:1px solid rgba(197,52,67,.35);border:1px solid color(display-p3 .710345 .252818 .279408/.35);border:1px solid lab(45.8893% 57.7361 27.393/.35)}.dignity-fall{color:#7a869f;color:color(display-p3 .488637 .525017 .615022);color:lab(55.7075% -.240654 -14.7889);background:rgba(88,99,123,.12);background:color(display-p3 .353624 .387759 .473149/.12);background:lab(41.7762% -.0450611 -14.7162/.12);border:1px solid rgba(88,99,123,.3);border:1px solid color(display-p3 .353624 .387759 .473149/.3);border:1px solid lab(41.7762% -.0450611 -14.7162/.3)}#tally-panel{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:8px;padding:5px 12px;display:flex}.tally-section{flex-direction:column;gap:3px;display:flex}.tally-row{align-items:center;gap:6px;display:flex}.tally-item{white-space:nowrap;letter-spacing:.02em;border-radius:4px;padding:1px 6px;font-size:10px;font-weight:600}.tally-item.fire{color:var(--color-fire);background:rgba(236,109,61,.12);background:color(display-p3 .864679 .454605 .289251/.12);background:lab(61.5466% 48.3829 50.2676/.12)}.tally-item.earth{color:var(--color-earth);background:rgba(119,158,75,.12);background:color(display-p3 .496575 .613452 .334223/.12);background:lab(60.647% -24.5491 38.2386/.12)}.tally-item.air{color:var(--color-air);background:rgba(23,169,203,.12);background:color(display-p3 .308318 .651825 .781829/.12);background:lab(63.473% -27.3149 -28.2614/.12)}.tally-item.water{color:var(--color-water);background:rgba(134,120,201,.12);background:color(display-p3 .515326 .47381 .767317/.12);background:lab(54.4132% 19.4196 -40.6625/.12)}.tally-item.cardinal{color:var(--color-cardinal);background:rgba(217,82,90,.1);background:color(display-p3 .790049 .355864 .367143/.1);background:lab(54.1324% 54.4527 25.0799/.1)}.tally-item.fixed{color:var(--color-fixed);background:rgba(204,156,66,.1);background:color(display-p3 .76996 .617341 .321369/.1);background:lab(67.5798% 11.9379 52.333/.1)}.tally-item.mutable{color:var(--color-mutable);background:rgba(29,168,113,.1);background:color(display-p3 .313719 .651039 .459895/.1);background:lab(61.2436% -46.7762 18.3644/.1)}.tally-bar-row{padding:2px 0}.tally-bar{background:var(--border);border-radius:2px;width:96px;height:3px;display:flex;overflow:hidden}.tally-bar-fill{height:100%;transition:width .5s cubic-bezier(.16,1,.3,1)}.tally-bar-fill.fire{background:var(--color-fire)}.tally-bar-fill.earth{background:var(--color-earth)}.tally-bar-fill.air{background:var(--color-air)}.tally-bar-fill.water{background:var(--color-water)}.tally-divider{background:var(--border-strong);flex-shrink:0;width:1px;height:26px}#patterns-strip{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:5px;padding:5px 12px;display:flex}.patterns-label{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);white-space:nowrap;margin-right:2px;font-size:9px;font-weight:700}.pattern-pill{border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;opacity:.75;background:0 0;border:1px solid;align-items:center;gap:4px;padding:2px 9px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:10px;font-weight:600;transition:opacity .14s,box-shadow .14s;display:inline-flex}.pattern-pill:hover{opacity:1;box-shadow:0 0 0 2px currentColor / .2}.pattern-pill.active{color:#010203;color:color(display-p3 .00515318 .00655345 .0110262);color:lab(.455387% .00626594 -.517511);opacity:1;border-color:transparent;box-shadow:0 2px 10px rgba(0,0,0,.3);box-shadow:0 2px 10px color(display-p3 0 0 0/.3);box-shadow:0 2px 10px lab(0% 0 0/.3)}#aspect-filter{border-top:1px solid var(--border);scrollbar-width:none;flex-shrink:0;align-items:center;gap:4px;padding:4px 12px;display:flex;overflow-x:auto}#aspect-filter::-webkit-scrollbar{display:none}#aspect-filter[hidden]{display:none!important}#controls-panel{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;padding:8px 12px;display:flex}.controls-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;margin-right:2px;font-size:10px;font-weight:700}.control-btn{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;padding:3px 10px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:11px;transition:background .12s,color .12s,border-color .12s}.control-btn:hover{background:var(--gold-subtle);color:var(--gold);border-color:rgba(204,156,66,.4);border-color:color(display-p3 .76996 .617341 .321369/.4);border-color:lab(67.5798% 11.9379 52.333/.4)}.control-btn.active{color:var(--gold);background:rgba(204,156,66,.18);background:color(display-p3 .76996 .617341 .321369/.18);background:lab(67.5798% 11.9379 52.333/.18);border-color:rgba(204,156,66,.6);border-color:color(display-p3 .76996 .617341 .321369/.6);border-color:lab(67.5798% 11.9379 52.333/.6);font-weight:600}.controls-divider{background:var(--border-strong);flex-shrink:0;width:1px;height:18px;margin:0 4px}.tooltip{-webkit-backdrop-filter:blur(14px)saturate(1.6);backdrop-filter:blur(14px)saturate(1.6);border:1px solid var(--border-strong);border-radius:var(--radius);pointer-events:none;z-index:1000;opacity:0;background:rgba(7,9,14,.92);background:color(display-p3 .0286832 .0352525 .0537785/.92);background:lab(2.44746% .00379235 -2.33402/.92);max-width:220px;padding:8px 12px;font-size:12px;transition:opacity .12s;position:fixed;box-shadow:0 8px 32px rgba(0,0,0,.55),inset 0 .5px rgba(255,255,255,.04);box-shadow:0 8px 32px color(display-p3 0 0 0/.55),inset 0 .5px color(display-p3 1 1 1/.04);box-shadow:0 8px 32px lab(0% 0 0/.55),inset 0 .5px lab(100% 0 0/.04)}.tooltip.visible{opacity:1}.tooltip-title{color:var(--text);margin-bottom:2px;font-weight:700}.tooltip-detail{color:var(--text-secondary);line-height:1.4}.tooltip-hint{color:var(--gold-dim);letter-spacing:.03em;margin-top:4px;font-size:10px}.error-state{text-align:center;color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.error-state .error-icon{opacity:.6;margin-bottom:4px;font-size:28px}.info-drawer{background:var(--surface-2,#080b11);border:1px solid var(--border-strong,#242933);width:100%;box-shadow:0 8px 40px rgba(0,0,0,.65), 0 0 0 1px var(--border-strong,#242933);opacity:0;pointer-events:none;border-radius:10px;max-height:0;padding:14px 16px 12px;transition:max-height .26s cubic-bezier(.16,1,.3,1),opacity .2s,padding .2s;position:relative;overflow:hidden}@supports (color:color(display-p3 0 0 0)){.info-drawer{background:var(--surface-2,color(display-p3 .0345774 .0431759 .0653236));border:1px solid var(--border-strong,color(display-p3 .144788 .159634 .196542));box-shadow:0 8px 40px color(display-p3 0 0 0/.65), 0 0 0 1px var(--border-strong,color(display-p3 .144788 .159634 .196542))}}@supports (color:lab(0% 0 0)){.info-drawer{background:var(--surface-2,lab(3.00584% .0228807 -3.15676));border:1px solid var(--border-strong,lab(16.3713% -.0768304 -7.37782));box-shadow:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong,lab(16.3713% -.0768304 -7.37782))}}.info-drawer:before{content:"";background:var(--border-strong,#242933);border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:0 auto 10px;display:block}@supports (color:color(display-p3 0 0 0)){.info-drawer:before{background:var(--border-strong,color(display-p3 .144788 .159634 .196542))}}@supports (color:lab(0% 0 0)){.info-drawer:before{background:var(--border-strong,lab(16.3713% -.0768304 -7.37782))}}.info-drawer.open{opacity:1;pointer-events:all;max-height:500px;padding:14px 16px 12px}.hd-action-bar{flex-wrap:wrap;gap:8px;padding:10px 16px 6px;display:flex}.action-btn{color:#d4af37;letter-spacing:.02em;cursor:pointer;white-space:nowrap;background:rgba(212,175,55,.08);border:1px solid rgba(212,175,55,.3);border-radius:8px;align-items:center;gap:6px;padding:7px 16px;font-size:12px;font-weight:600;transition:background .2s,border-color .2s,transform .1s;display:inline-flex}.action-btn:hover{background:rgba(212,175,55,.15);border-color:rgba(212,175,55,.5);transform:translateY(-1px)}.action-btn:active{background:rgba(212,175,55,.2);transform:translateY(0)}.action-btn--primary{color:#f0d060;background:linear-gradient(135deg,rgba(212,175,55,.2),rgba(180,140,30,.25));border-color:rgba(212,175,55,.5)}.action-btn--primary:hover{background:linear-gradient(135deg,rgba(212,175,55,.3),rgba(180,140,30,.35));border-color:rgba(212,175,55,.7)}.pan-zoom-controls{z-index:800;flex-direction:column;gap:6px;display:flex;position:fixed;bottom:20px;right:20px}.pan-zoom-controls[hidden]{display:none!important}.pan-btn{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;width:36px;height:36px;box-shadow:var(--shadow-md);justify-content:center;align-items:center;font-family:inherit;font-size:18px;transition:all .15s;display:flex}.pan-btn.reset{width:auto;padding:0 10px;font-size:11px;font-weight:500}.pan-btn:hover{background:var(--surface);border-color:var(--gold-dim);color:var(--gold)}.pan-btn:active{transform:scale(.95)}.oe-loader{width:64px;height:64px;stroke:var(--gold);stroke-width:2px;fill:none;stroke-dasharray:200;stroke-dashoffset:200px;filter:drop-shadow(0 0 4px var(--gold-glow));animation:2.5s cubic-bezier(.16,1,.3,1) infinite oe-draw}@keyframes oe-draw{0%{stroke-dashoffset:200px;stroke-opacity:.1}50%{stroke-dashoffset:0;stroke-opacity:1;filter:drop-shadow(0 0 8px var(--gold))}to{stroke-dashoffset:-200px;stroke-opacity:.1}}.param-controls{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;padding:8px 12px}.param-controls-grid{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.param-group{flex-direction:column;gap:4px;display:flex}.param-group label{text-transform:uppercase;color:var(--text-secondary);letter-spacing:.05em;font-size:10px;font-weight:700}.param-group input[type=date],.param-group input[type=time],.param-group input[type=text]{border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius-sm);background:#07090e;background:color(display-p3 .0286832 .0352525 .0537785);background:lab(2.44746% .00379235 -2.33402);width:130px;padding:4px 8px;font-family:inherit;font-size:12px;transition:border-color .15s}.param-group input:focus{border-color:var(--gold-dim);outline:none}.param-group-loc{flex:1;position:relative}.param-group-loc input{width:100%}.loc-suggestions{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:100;max-height:200px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.loc-item{color:var(--text);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid var(--border);padding:8px 10px;font-size:12px;overflow:hidden}.loc-item:last-child{border-bottom:none}.loc-item:hover{background:var(--gold-subtle);color:var(--gold)}.param-actions{align-items:flex-end;gap:6px;padding-top:14px;display:flex}.param-btn-icon{border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:26px;height:26px;transition:all .15s;display:flex}.param-btn-icon:hover{background:var(--surface-2);color:var(--text);border-color:var(--gold-dim)}.param-btn-primary{color:var(--gold);border-radius:var(--radius-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.05em;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);height:26px;padding:4px 12px;font-family:inherit;font-size:11px;font-weight:600;transition:all .15s}.param-btn-primary:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65)}.param-btn-primary:disabled{opacity:.5;cursor:not-allowed}
|
|
11
11
|
/*$vite$:1*/</style>
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="app">
|
|
15
15
|
<div id="loading-state">
|
|
16
|
-
<
|
|
16
|
+
<svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
|
|
17
17
|
<p>Computing ephemeris…</p>
|
|
18
18
|
</div>
|
|
19
|
+
<div id="pan-zoom-controls" class="pan-zoom-controls" hidden>
|
|
20
|
+
<button id="btn-zoom-in" class="pan-btn" aria-label="Zoom in">+</button>
|
|
21
|
+
<button id="btn-zoom-out" class="pan-btn" aria-label="Zoom out">-</button>
|
|
22
|
+
<button id="btn-reset-view" class="pan-btn reset" aria-label="Reset view">⟲ Reset</button>
|
|
23
|
+
</div>
|
|
19
24
|
<div id="chart-container" hidden></div>
|
|
20
25
|
<div id="chart-info" hidden></div>
|
|
21
26
|
<div id="chart-status" class="chart-status"></div>
|
|
@@ -6546,81 +6551,108 @@ var Kh = class e3 extends _h {
|
|
|
6546
6551
|
}
|
|
6547
6552
|
};
|
|
6548
6553
|
o(Kh, "ONE_SHOT_EVENTS", /* @__PURE__ */ new Set(["toolinput", "toolinputpartial", "toolresult", "toolcancelled"]));
|
|
6549
|
-
|
|
6554
|
+
function qh(e4, t2) {
|
|
6555
|
+
var n2, r2, i2, a2, o2, s2;
|
|
6556
|
+
let c2 = document.getElementById(t2), l2 = c2 == null ? void 0 : c2.querySelector("#btn-zoom-in"), u2 = c2 == null ? void 0 : c2.querySelector("#btn-zoom-out"), d2 = c2 == null ? void 0 : c2.querySelector("#btn-reset-view");
|
|
6557
|
+
c2 && (c2.hidden = false);
|
|
6558
|
+
let f2 = (n2 = (r2 = e4.getAttribute("viewBox")) == null ? void 0 : r2.split(/[\s,]+/).map(Number)) == null ? [0, 0, 500, 500] : n2, p2 = (i2 = f2[0]) == null ? 0 : i2, m2 = (a2 = f2[1]) == null ? 0 : a2, h2 = (o2 = f2[2]) == null ? 500 : o2, g2 = (s2 = f2[3]) == null ? 500 : s2, _2 = false, v2 = 0, y2 = 0, b2 = p2, x2 = m2, S2 = h2, C2 = g2, w2 = () => e4.setAttribute("viewBox", "".concat(b2, " ").concat(x2, " ").concat(S2, " ").concat(C2)), ee2 = (e5, t3 = 250, n3 = 250) => {
|
|
6559
|
+
let r3 = 1e3, i3 = Math.round(S2 * e5 * 10) / 10, a3 = Math.round(C2 * e5 * 10) / 10;
|
|
6560
|
+
i3 < 100 && (i3 = 100, a3 = 100, e5 = i3 / S2), i3 > r3 && (i3 = r3, a3 = r3, e5 = i3 / S2), i3 !== S2 && (b2 = Math.round((t3 - (t3 - b2) * e5) * 10) / 10, x2 = Math.round((n3 - (n3 - x2) * e5) * 10) / 10, S2 = i3, C2 = a3, w2());
|
|
6561
|
+
};
|
|
6562
|
+
l2 == null || l2.addEventListener("click", () => ee2(0.8)), u2 == null || u2.addEventListener("click", () => ee2(1.25)), d2 == null || d2.addEventListener("click", () => {
|
|
6563
|
+
b2 = p2, x2 = m2, S2 = h2, C2 = g2, w2();
|
|
6564
|
+
}), e4.addEventListener("wheel", (t3) => {
|
|
6565
|
+
t3.preventDefault();
|
|
6566
|
+
let n3 = Math.exp((t3.deltaY < 0 ? -1 : 1) * 0.1), r3 = e4.getBoundingClientRect(), i3 = t3.clientX - r3.left, a3 = t3.clientY - r3.top;
|
|
6567
|
+
ee2(n3, b2 + i3 / r3.width * S2, x2 + a3 / r3.height * C2);
|
|
6568
|
+
}, { passive: false }), e4.addEventListener("pointerdown", (t3) => {
|
|
6569
|
+
let n3 = t3.target;
|
|
6570
|
+
n3.closest && (n3.closest('[class*="-hit"]') || n3.closest('[class*="-activation"]') || n3.closest(".variable-arrow") || n3.closest("button")) || (_2 = true, v2 = t3.clientX, y2 = t3.clientY, e4.setPointerCapture(t3.pointerId), e4.style.cursor = "grabbing");
|
|
6571
|
+
}), e4.addEventListener("pointermove", (t3) => {
|
|
6572
|
+
if (!_2) return;
|
|
6573
|
+
let n3 = t3.clientX - v2, r3 = t3.clientY - y2;
|
|
6574
|
+
v2 = t3.clientX, y2 = t3.clientY;
|
|
6575
|
+
let i3 = e4.getBoundingClientRect(), a3 = n3 / i3.width * S2, o3 = r3 / i3.height * C2;
|
|
6576
|
+
b2 -= a3, x2 -= o3, w2();
|
|
6577
|
+
}), e4.addEventListener("pointerup", (t3) => {
|
|
6578
|
+
_2 && (_2 = false, e4.releasePointerCapture(t3.pointerId), e4.style.cursor = "default");
|
|
6579
|
+
});
|
|
6580
|
+
}
|
|
6581
|
+
var Jh = 250, Yh = 250, Xh = 240, Zh = 204, Qh = 190, $h = 159, eg = 140, tg = 134, ng = 15, rg = 20;
|
|
6550
6582
|
function X(e4, t2, n2) {
|
|
6551
6583
|
let r2 = -(e4 - n2 + 180) * Math.PI / 180;
|
|
6552
|
-
return { x:
|
|
6584
|
+
return { x: Jh + t2 * Math.cos(r2), y: Yh + t2 * Math.sin(r2) };
|
|
6553
6585
|
}
|
|
6554
6586
|
function Z(e4) {
|
|
6555
6587
|
return document.createElementNS("http://www.w3.org/2000/svg", e4);
|
|
6556
6588
|
}
|
|
6557
|
-
var
|
|
6558
|
-
function
|
|
6589
|
+
var ig = { sun: "\u2609", moon: "\u263D", mercury: "\u263F", venus: "\u2640", mars: "\u2642", jupiter: "\u2643", saturn: "\u2644", uranus: "\u2645", neptune: "\u2646", pluto: "\u2647", "north node": "\u260A", "south node": "\u260B", chiron: "\u26B7", "true node": "\u260A" }, ag = ["\u2648", "\u2649", "\u264A", "\u264B", "\u264C", "\u264D", "\u264E", "\u264F", "\u2650", "\u2651", "\u2652", "\u2653"], og = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], sg = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9", quincunx: "\u26BB", semisquare: "\u2220" };
|
|
6590
|
+
function cg(e4) {
|
|
6559
6591
|
var t2;
|
|
6560
6592
|
let n2 = e4.toLowerCase(), r2 = "--aspect-".concat(n2);
|
|
6561
6593
|
return getComputedStyle(document.documentElement).getPropertyValue(r2).trim() || ((t2 = { conjunction: "#9a7fd4", opposition: "#e05252", trine: "#52a8e0", square: "#e08a52", sextile: "#52c07a", quincunx: "#c0b052", semisquare: "#b07a5a" }[n2]) == null ? "#888" : t2);
|
|
6562
6594
|
}
|
|
6563
|
-
var
|
|
6564
|
-
function
|
|
6595
|
+
var lg = ["#e8854c", "#7aaa6a", "#5aaad0", "#8878c8", "#e8854c", "#7aaa6a", "#5aaad0", "#8878c8", "#e8854c", "#7aaa6a", "#5aaad0", "#8878c8"];
|
|
6596
|
+
function ug(e4) {
|
|
6565
6597
|
let t2 = "--planet-".concat(e4.toLowerCase().replace(/\s+/g, "-"));
|
|
6566
6598
|
return getComputedStyle(document.documentElement).getPropertyValue(t2).trim() || "var(--text)";
|
|
6567
6599
|
}
|
|
6568
|
-
var
|
|
6569
|
-
function
|
|
6600
|
+
var dg = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"]);
|
|
6601
|
+
function fg(e4) {
|
|
6570
6602
|
let t2 = (e4 % 360 + 360) % 360, n2 = Math.floor(t2 / 30), r2 = Math.floor(t2 % 30);
|
|
6571
|
-
return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(
|
|
6603
|
+
return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(og[n2]);
|
|
6572
6604
|
}
|
|
6573
6605
|
function Q(e4) {
|
|
6574
6606
|
return e4.replace(/\b\w/g, (e5) => e5.toUpperCase());
|
|
6575
6607
|
}
|
|
6576
|
-
function
|
|
6577
|
-
return Array.isArray(e4) ? e4 : e4 && typeof e4 == "object" ? Object.entries(e4).filter(([e5]) =>
|
|
6608
|
+
function pg(e4) {
|
|
6609
|
+
return Array.isArray(e4) ? e4 : e4 && typeof e4 == "object" ? Object.entries(e4).filter(([e5]) => dg.has(e5.toLowerCase())).map(([e5, t2]) => {
|
|
6578
6610
|
var n2, r2, i2, a2, o2, s2;
|
|
6579
6611
|
return { name: e5.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 };
|
|
6580
6612
|
}) : [];
|
|
6581
6613
|
}
|
|
6582
|
-
var
|
|
6583
|
-
function
|
|
6584
|
-
|
|
6585
|
-
let a2 = e4 + 14,
|
|
6586
|
-
|
|
6614
|
+
var mg = document.getElementById("tooltip");
|
|
6615
|
+
function hg(e4, t2, n2, r2, i2) {
|
|
6616
|
+
mg.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 ");
|
|
6617
|
+
let a2 = mg.getBoundingClientRect(), o2 = a2.width || 220, s2 = a2.height || 80, c2 = e4 + 14, l2 = t2 + 14;
|
|
6618
|
+
c2 + o2 > window.innerWidth - 14 && (c2 = e4 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14), mg.style.left = "".concat(Math.max(14, c2), "px"), mg.style.top = "".concat(Math.max(14, l2), "px"), mg.classList.add("visible");
|
|
6587
6619
|
}
|
|
6588
|
-
function
|
|
6589
|
-
|
|
6620
|
+
function gg() {
|
|
6621
|
+
mg.classList.remove("visible");
|
|
6590
6622
|
}
|
|
6591
|
-
function
|
|
6623
|
+
function _g(e4) {
|
|
6592
6624
|
return Math.floor((e4 % 360 + 360) % 360 / 30);
|
|
6593
6625
|
}
|
|
6594
|
-
var
|
|
6595
|
-
function
|
|
6596
|
-
let n2 = e4.toLowerCase(), r2 =
|
|
6626
|
+
var vg = { sun: [4], moon: [3], mercury: [2, 5], venus: [1, 6], mars: [0, 7], jupiter: [8, 11], saturn: [9, 10] }, yg = { sun: 0, moon: 1, mercury: 5, venus: 11, mars: 9, jupiter: 3, saturn: 6 };
|
|
6627
|
+
function bg(e4, t2) {
|
|
6628
|
+
let n2 = e4.toLowerCase(), r2 = _g(t2), i2 = vg[n2];
|
|
6597
6629
|
if (i2 != null && i2.includes(r2)) return { type: "domicile", label: "Domicile", emoji: "\u2302", cssClass: "dignity-domicile" };
|
|
6598
6630
|
if (i2 && i2.map((e5) => (e5 + 6) % 12).includes(r2)) return { type: "detriment", label: "Detriment", emoji: "\u2B07", cssClass: "dignity-detriment" };
|
|
6599
|
-
let a2 =
|
|
6631
|
+
let a2 = yg[n2];
|
|
6600
6632
|
return a2 !== void 0 && a2 === r2 ? { type: "exaltation", label: "Exaltation", emoji: "\u2605", cssClass: "dignity-exaltation" } : a2 !== void 0 && (a2 + 6) % 12 === r2 ? { type: "fall", label: "Fall", emoji: "\u2193", cssClass: "dignity-fall" } : null;
|
|
6601
6633
|
}
|
|
6602
|
-
var
|
|
6603
|
-
function
|
|
6634
|
+
var xg = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn"]), Sg = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], Cg = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"];
|
|
6635
|
+
function wg(e4, t2) {
|
|
6604
6636
|
let n2 = { fire: 0, earth: 0, air: 0, water: 0, cardinal: 0, fixed: 0, mutable: 0 };
|
|
6605
6637
|
for (let t3 of e4) {
|
|
6606
|
-
if (!
|
|
6607
|
-
let e5 =
|
|
6608
|
-
n2[
|
|
6638
|
+
if (!xg.has(t3.name.toLowerCase())) continue;
|
|
6639
|
+
let e5 = _g(t3.longitude);
|
|
6640
|
+
n2[Sg[e5]]++, n2[Cg[e5]]++;
|
|
6609
6641
|
}
|
|
6610
|
-
let r2 =
|
|
6611
|
-
return n2[
|
|
6642
|
+
let r2 = _g(t2);
|
|
6643
|
+
return n2[Sg[r2]]++, n2[Cg[r2]]++, n2;
|
|
6612
6644
|
}
|
|
6613
|
-
function
|
|
6645
|
+
function Tg(e4, t2) {
|
|
6614
6646
|
return [e4.toLowerCase(), t2.toLowerCase()].sort().join("|");
|
|
6615
6647
|
}
|
|
6616
|
-
function
|
|
6648
|
+
function Eg(e4, t2) {
|
|
6617
6649
|
return e4.filter((e5) => {
|
|
6618
6650
|
var n2;
|
|
6619
6651
|
return ((n2 = e5.type) == null ? "" : n2).toLowerCase() === t2;
|
|
6620
6652
|
});
|
|
6621
6653
|
}
|
|
6622
|
-
function
|
|
6623
|
-
let n2 = [], r2 =
|
|
6654
|
+
function Dg(e4, t2) {
|
|
6655
|
+
let n2 = [], r2 = Eg(e4, "square"), i2 = Eg(e4, "opposition"), a2 = Eg(e4, "trine"), o2 = Eg(e4, "sextile"), s2 = Eg(e4, "quincunx"), c2 = /* @__PURE__ */ new Set();
|
|
6624
6656
|
for (let e5 of i2) {
|
|
6625
6657
|
let i3 = e5.planet1.toLowerCase(), a3 = e5.planet2.toLowerCase(), o3 = r2.filter((e6) => e6.planet1.toLowerCase() === i3 || e6.planet2.toLowerCase() === i3);
|
|
6626
6658
|
for (let e6 of o3) {
|
|
@@ -6629,8 +6661,8 @@ function Eg(e4, t2) {
|
|
|
6629
6661
|
let s3 = [i3, a3, o4].sort().join("|");
|
|
6630
6662
|
if (!c2.has(s3) && r2.find((e7) => e7.planet1.toLowerCase() === o4 && e7.planet2.toLowerCase() === a3 || e7.planet2.toLowerCase() === o4 && e7.planet1.toLowerCase() === a3)) {
|
|
6631
6663
|
c2.add(s3);
|
|
6632
|
-
let e7 = t2.find((e8) => e8.name.toLowerCase() === o4), r3 = e7 ? Q(
|
|
6633
|
-
n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Q(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [
|
|
6664
|
+
let e7 = t2.find((e8) => e8.name.toLowerCase() === o4), r3 = e7 ? Q(Cg[_g(e7.longitude)]) : "";
|
|
6665
|
+
n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Q(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [Tg(i3, a3), Tg(i3, o4), Tg(a3, o4)] });
|
|
6634
6666
|
break;
|
|
6635
6667
|
}
|
|
6636
6668
|
}
|
|
@@ -6640,7 +6672,7 @@ function Eg(e4, t2) {
|
|
|
6640
6672
|
let r3 = a2[e5], i3 = a2[t3], o3 = [r3.planet1.toLowerCase(), r3.planet2.toLowerCase()], s3 = [i3.planet1.toLowerCase(), i3.planet2.toLowerCase()], c3 = o3.find((e6) => s3.includes(e6));
|
|
6641
6673
|
if (!c3) continue;
|
|
6642
6674
|
let u3 = o3.find((e6) => e6 !== c3), d3 = s3.find((e6) => e6 !== c3), f3 = [u3, c3, d3].sort().join("|");
|
|
6643
|
-
l2.has(f3) || a2.find((e6) => e6.planet1.toLowerCase() === u3 && e6.planet2.toLowerCase() === d3 || e6.planet2.toLowerCase() === u3 && e6.planet1.toLowerCase() === d3) && (l2.add(f3), n2.push({ name: "Grand Trine", description: "".concat(Q(u3), " \xB7 ").concat(Q(c3), " \xB7 ").concat(Q(d3)), planets: [u3, c3, d3], aspectKeys: [
|
|
6675
|
+
l2.has(f3) || a2.find((e6) => e6.planet1.toLowerCase() === u3 && e6.planet2.toLowerCase() === d3 || e6.planet2.toLowerCase() === u3 && e6.planet1.toLowerCase() === d3) && (l2.add(f3), n2.push({ name: "Grand Trine", description: "".concat(Q(u3), " \xB7 ").concat(Q(c3), " \xB7 ").concat(Q(d3)), planets: [u3, c3, d3], aspectKeys: [Tg(u3, c3), Tg(c3, d3), Tg(u3, d3)] }));
|
|
6644
6676
|
}
|
|
6645
6677
|
if (i2.length >= 2 && r2.length >= 4) for (let e5 = 0; e5 < i2.length; e5++) for (let a3 = e5 + 1; a3 < i2.length; a3++) {
|
|
6646
6678
|
let o3 = i2[e5], s3 = i2[a3], [c3, l3] = [o3.planet1.toLowerCase(), o3.planet2.toLowerCase()], [u3, d3] = [s3.planet1.toLowerCase(), s3.planet2.toLowerCase()];
|
|
@@ -6651,19 +6683,19 @@ function Eg(e4, t2) {
|
|
|
6651
6683
|
var n3, r3;
|
|
6652
6684
|
return { name: e7, lon: (n3 = (r3 = t2.find((t3) => t3.name.toLowerCase() === e7)) == null ? void 0 : r3.longitude) == null ? 0 : n3 };
|
|
6653
6685
|
}).sort((e7, t3) => e7.lon - t3.lon).map((e7) => e7.name);
|
|
6654
|
-
n2.push({ name: "Grand Cross", description: e6.map(Q).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [
|
|
6686
|
+
n2.push({ name: "Grand Cross", description: e6.map(Q).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [Tg(c3, l3), Tg(u3, d3), ...f3.map(([e7, t3]) => Tg(e7, t3))] });
|
|
6655
6687
|
}
|
|
6656
6688
|
}
|
|
6657
6689
|
let u2 = /* @__PURE__ */ new Set(["north node", "south node", "true node", "chiron"]), d2 = t2.filter((e5) => !u2.has(e5.name.toLowerCase())).map((e5) => ({ name: e5.name.toLowerCase(), lon: e5.longitude })), f2 = /* @__PURE__ */ new Map();
|
|
6658
6690
|
for (let { name: e5, lon: t3 } of d2) {
|
|
6659
6691
|
var p2;
|
|
6660
|
-
let n3 =
|
|
6692
|
+
let n3 = _g(t3), r3 = (p2 = f2.get(n3)) == null ? [] : p2;
|
|
6661
6693
|
r3.push(e5), f2.set(n3, r3);
|
|
6662
6694
|
}
|
|
6663
6695
|
for (let [e5, t3] of f2) if (t3.length >= 3) {
|
|
6664
6696
|
let r3 = [...t3].sort().join("|"), i3 = [];
|
|
6665
|
-
for (let e6 = 0; e6 < t3.length; e6++) for (let n3 = e6 + 1; n3 < t3.length; n3++) i3.push(
|
|
6666
|
-
n2.push({ name: "Stellium", description: "".concat(
|
|
6697
|
+
for (let e6 = 0; e6 < t3.length; e6++) for (let n3 = e6 + 1; n3 < t3.length; n3++) i3.push(Tg(t3[e6], t3[n3]));
|
|
6698
|
+
n2.push({ name: "Stellium", description: "".concat(og[e5], ": ").concat(t3.map(Q).join(", ")), planets: t3, aspectKeys: i3, _dedupeKey: r3 });
|
|
6667
6699
|
}
|
|
6668
6700
|
let m2 = [...d2].sort((e5, t3) => e5.lon - t3.lon), h2 = [...m2, ...m2.map((e5) => ({ ...e5, lon: e5.lon + 360 }))], g2 = /* @__PURE__ */ new Set();
|
|
6669
6701
|
for (let e5 = 0; e5 < h2.length - 2; e5++) {
|
|
@@ -6676,7 +6708,7 @@ function Eg(e4, t2) {
|
|
|
6676
6708
|
if (g2.has(t4)) continue;
|
|
6677
6709
|
if (g2.add(t4), !n2.some((e7) => e7._dedupeKey === t4)) {
|
|
6678
6710
|
let t5 = [];
|
|
6679
|
-
for (let n3 = 0; n3 < e6.length; n3++) for (let r4 = n3 + 1; r4 < e6.length; r4++) t5.push(
|
|
6711
|
+
for (let n3 = 0; n3 < e6.length; n3++) for (let r4 = n3 + 1; r4 < e6.length; r4++) t5.push(Tg(e6[n3], e6[r4]));
|
|
6680
6712
|
n2.push({ name: "Stellium", description: "Tight cluster: ".concat(e6.map(Q).join(", ")), planets: e6, aspectKeys: t5 });
|
|
6681
6713
|
}
|
|
6682
6714
|
}
|
|
@@ -6686,44 +6718,39 @@ function Eg(e4, t2) {
|
|
|
6686
6718
|
let r3 = s2[e5], i3 = s2[t3], a3 = [r3.planet1.toLowerCase(), r3.planet2.toLowerCase()], c3 = [i3.planet1.toLowerCase(), i3.planet2.toLowerCase()], l3 = a3.find((e6) => c3.includes(e6));
|
|
6687
6719
|
if (!l3) continue;
|
|
6688
6720
|
let u3 = a3.find((e6) => e6 !== l3), d3 = c3.find((e6) => e6 !== l3), f3 = [l3, u3, d3].sort().join("|");
|
|
6689
|
-
_2.has(f3) || o2.find((e6) => e6.planet1.toLowerCase() === u3 && e6.planet2.toLowerCase() === d3 || e6.planet2.toLowerCase() === u3 && e6.planet1.toLowerCase() === d3) && (_2.add(f3), n2.push({ name: "Yod", description: "Apex: ".concat(Q(l3)), planets: [l3, u3, d3], aspectKeys: [
|
|
6721
|
+
_2.has(f3) || o2.find((e6) => e6.planet1.toLowerCase() === u3 && e6.planet2.toLowerCase() === d3 || e6.planet2.toLowerCase() === u3 && e6.planet1.toLowerCase() === d3) && (_2.add(f3), n2.push({ name: "Yod", description: "Apex: ".concat(Q(l3)), planets: [l3, u3, d3], aspectKeys: [Tg(l3, u3), Tg(l3, d3), Tg(u3, d3)] }));
|
|
6690
6722
|
}
|
|
6691
6723
|
for (let e5 of n2) delete e5._dedupeKey;
|
|
6692
6724
|
return n2;
|
|
6693
6725
|
}
|
|
6694
|
-
var
|
|
6695
|
-
function
|
|
6696
|
-
|
|
6726
|
+
var Og = null, kg = null, Ag = null, jg = null, Mg = null, Ng = null;
|
|
6727
|
+
function Pg(e4) {
|
|
6728
|
+
Ng = e4;
|
|
6697
6729
|
}
|
|
6698
|
-
var
|
|
6699
|
-
function
|
|
6700
|
-
return
|
|
6730
|
+
var Fg = /* @__PURE__ */ new Map();
|
|
6731
|
+
function Ig() {
|
|
6732
|
+
return Og || (Og = document.createElement("div"), Og.id = "info-panel", Og.className = "info-panel", document.body.appendChild(Og), Og);
|
|
6701
6733
|
}
|
|
6702
|
-
function
|
|
6734
|
+
function Lg(e4, t2, n2) {
|
|
6703
6735
|
var r2, i2, a2, o2;
|
|
6704
|
-
let s2 =
|
|
6736
|
+
let s2 = Ig(), c2 = (r2 = ig[t2.name.toLowerCase()]) == null ? "\u2605" : r2, l2 = (i2 = ag[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : i2, u2 = bg(t2.name, t2.longitude), d2 = u2 ? '<span class="dignity-badge '.concat(u2.cssClass, '" title="').concat(u2.label, '">').concat(u2.emoji, " ").concat(u2.label, "</span>") : "", f2 = n2.filter((e5) => e5.planet1.toLowerCase() === t2.name.toLowerCase() || e5.planet2.toLowerCase() === t2.name.toLowerCase()).sort((e5, t3) => {
|
|
6705
6737
|
var n3, r3;
|
|
6706
6738
|
return ((n3 = e5.orb) == null ? 99 : n3) - ((r3 = t3.orb) == null ? 99 : r3);
|
|
6707
6739
|
}), p2 = f2.length ? f2.map((e5) => {
|
|
6708
6740
|
var n3, r3, i3, a3, o3, s3, c3;
|
|
6709
|
-
let l3 = e5.planet1.toLowerCase() === t2.name.toLowerCase() ? e5.planet2 : e5.planet1, u3 = (n3 =
|
|
6741
|
+
let l3 = e5.planet1.toLowerCase() === t2.name.toLowerCase() ? e5.planet2 : e5.planet1, u3 = (n3 = ig[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = sg[(a3 = (o3 = e5.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e5.type : i3) == null ? "\u2014" : r3, f3 = (s3 = cg((c3 = e5.type) == null ? "" : c3)) == null ? "#888" : s3, p3 = e5.orb == null ? "" : "".concat(e5.orb.toFixed(1), "\xB0"), m3 = e5.applying === true ? "\u2197" : e5.applying === false ? "\u2198" : "\xB7";
|
|
6710
6742
|
return '<div class="aspect-row">\n <span class="aspect-dot" style="background:'.concat(f3, '"></span>\n <span class="aspect-sym" style="color:').concat(f3, '">').concat(d3, '</span>\n <span class="aspect-other">').concat(u3, " ").concat(Q(l3), '</span>\n <span class="aspect-meta">').concat(p3, " ").concat(m3, "</span>\n </div>");
|
|
6711
|
-
}).join("") : '<div class="no-aspects">No listed aspects</div>', m2 =
|
|
6712
|
-
s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Q(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(
|
|
6713
|
-
let t3 = s2.getBoundingClientRect(), n3 =
|
|
6714
|
-
|
|
6715
|
-
let e5 = n3.getBoundingClientRect();
|
|
6716
|
-
r3 = e5.width, i3 = e5.height, a3 = e5.left, o3 = e5.top;
|
|
6717
|
-
} else r3 = window.innerWidth, i3 = window.innerHeight, a3 = 0, o3 = 0;
|
|
6718
|
-
let c3 = e4.clientX - a3 + 14, l3 = e4.clientY - o3 + 14;
|
|
6719
|
-
c3 + t3.width > r3 - 14 && (c3 = e4.clientX - a3 - t3.width - 14), l3 + t3.height > i3 - 14 && (l3 = e4.clientY - o3 - t3.height - 14), c3 = Math.max(14, c3), l3 = Math.max(14, l3), s2.style.left = "".concat(c3, "px"), s2.style.top = "".concat(l3, "px");
|
|
6743
|
+
}).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = Mg ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
|
|
6744
|
+
s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Q(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(fg(t2.longitude)).concat(t2.house ? " \xB7 House ".concat(t2.house) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Aspects</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), s2.classList.add("visible"), requestAnimationFrame(() => {
|
|
6745
|
+
let t3 = s2.getBoundingClientRect(), n3 = e4.clientX + 14, r3 = e4.clientY + 14;
|
|
6746
|
+
n3 + t3.width > window.innerWidth - 14 && (n3 = e4.clientX - t3.width - 14), r3 + t3.height > window.innerHeight - 14 && (r3 = e4.clientY - t3.height - 14), n3 = Math.max(14, n3), r3 = Math.max(14, r3), s2.style.left = "".concat(n3, "px"), s2.style.top = "".concat(r3, "px");
|
|
6720
6747
|
}), (a2 = document.getElementById("info-close-btn")) == null || a2.addEventListener("click", () => {
|
|
6721
|
-
|
|
6748
|
+
Bg(), Ug();
|
|
6722
6749
|
}), (o2 = document.getElementById("ask-claude-btn")) == null || o2.addEventListener("click", () => {
|
|
6723
6750
|
var e5, n3, r3, i3, a3;
|
|
6724
|
-
if (!
|
|
6751
|
+
if (!Mg) return;
|
|
6725
6752
|
let o3 = document.getElementById("ask-claude-btn");
|
|
6726
|
-
!o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"),
|
|
6753
|
+
!o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), Mg({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e5 = t2.sign) == null ? fg(t2.longitude) : e5, house: (n3 = t2.house) == null ? null : n3, retrograde: (r3 = t2.retrograde) == null ? false : r3, speed: (i3 = t2.speed) == null ? null : i3, dignity: (a3 = u2 == null ? void 0 : u2.label) == null ? null : a3, aspects: f2.map((e6) => ({ other: e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, type: e6.type, orb: e6.orb, applying: e6.applying })) } }).then(() => {
|
|
6727
6754
|
o3.textContent = "\u2713 Sent to Claude", o3.classList.remove("sending"), o3.classList.add("sent"), setTimeout(() => {
|
|
6728
6755
|
o3.textContent = "\u2728 Ask Claude to interpret", o3.classList.remove("sent"), o3.disabled = false;
|
|
6729
6756
|
}, 2500);
|
|
@@ -6732,24 +6759,19 @@ function Ig(e4, t2, n2) {
|
|
|
6732
6759
|
}));
|
|
6733
6760
|
});
|
|
6734
6761
|
}
|
|
6735
|
-
function
|
|
6762
|
+
function Rg(e4, t2, n2) {
|
|
6736
6763
|
var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
|
|
6737
|
-
let p2 =
|
|
6764
|
+
let p2 = Ig(), m2 = n2.find((e5) => e5.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e5) => e5.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = ig[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = ig[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = sg[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, y2 = cg((c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2), b2 = t2.orb == null ? "unknown orb" : "".concat(t2.orb.toFixed(2), "\xB0"), x2 = t2.applying === true ? "Applying (growing closer)" : t2.applying === false ? "Separating (moving apart)" : "", S2 = m2 ? "".concat(fg(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", C2 = h2 ? "".concat(fg(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", w2 = Mg ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
|
|
6738
6765
|
p2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(y2, '">').concat(v2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Q((u2 = t2.type) == null ? "Aspect" : u2), '</strong>\n </div>\n <div class="info-pos">').concat(b2).concat(x2 ? " \xB7 ".concat(x2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in Aspect</div>\n <div class="aspect-pair-row">\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(g2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Q(t2.planet1), '</div>\n <div class="aspect-pair-pos">').concat(S2, '</div>\n </div>\n </div>\n <span class="aspect-pair-sym" style="color:').concat(y2, '">').concat(v2, '</span>\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(_2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Q(t2.planet2), '</div>\n <div class="aspect-pair-pos">').concat(C2, "</div>\n </div>\n </div>\n </div>\n ").concat(w2, "\n "), p2.classList.add("visible"), requestAnimationFrame(() => {
|
|
6739
|
-
let t3 = p2.getBoundingClientRect(), n3 =
|
|
6740
|
-
|
|
6741
|
-
let e5 = n3.getBoundingClientRect();
|
|
6742
|
-
r3 = e5.width, i3 = e5.height, a3 = e5.left, o3 = e5.top;
|
|
6743
|
-
} else r3 = window.innerWidth, i3 = window.innerHeight, a3 = 0, o3 = 0;
|
|
6744
|
-
let s3 = e4.clientX - a3 + 14, c3 = e4.clientY - o3 + 14;
|
|
6745
|
-
s3 + t3.width > r3 - 14 && (s3 = e4.clientX - a3 - t3.width - 14), c3 + t3.height > i3 - 14 && (c3 = e4.clientY - o3 - t3.height - 14), s3 = Math.max(14, s3), c3 = Math.max(14, c3), p2.style.left = "".concat(s3, "px"), p2.style.top = "".concat(c3, "px");
|
|
6766
|
+
let t3 = p2.getBoundingClientRect(), n3 = e4.clientX + 14, r3 = e4.clientY + 14;
|
|
6767
|
+
n3 + t3.width > window.innerWidth - 14 && (n3 = e4.clientX - t3.width - 14), r3 + t3.height > window.innerHeight - 14 && (r3 = e4.clientY - t3.height - 14), n3 = Math.max(14, n3), r3 = Math.max(14, r3), p2.style.left = "".concat(n3, "px"), p2.style.top = "".concat(r3, "px");
|
|
6746
6768
|
}), (d2 = document.getElementById("info-close-btn")) == null || d2.addEventListener("click", () => {
|
|
6747
|
-
|
|
6769
|
+
Bg(), Ug();
|
|
6748
6770
|
}), (f2 = document.getElementById("ask-claude-btn")) == null || f2.addEventListener("click", () => {
|
|
6749
6771
|
var e5, n3, r3, i3, a3, o3, s3, c3;
|
|
6750
|
-
if (!
|
|
6772
|
+
if (!Mg) return;
|
|
6751
6773
|
let l3 = document.getElementById("ask-claude-btn");
|
|
6752
|
-
!l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"),
|
|
6774
|
+
!l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), Mg({ type: "aspect", data: { planet1: t2.planet1, planet2: t2.planet2, aspect_type: (e5 = t2.type) == null ? null : e5, orb: (n3 = t2.orb) == null ? null : n3, applying: (r3 = t2.applying) == null ? null : r3, angle: (i3 = t2.angle) == null ? null : i3, planet1_sign: (a3 = m2 == null ? void 0 : m2.sign) == null ? null : a3, planet1_house: (o3 = m2 == null ? void 0 : m2.house) == null ? null : o3, planet2_sign: (s3 = h2 == null ? void 0 : h2.sign) == null ? null : s3, planet2_house: (c3 = h2 == null ? void 0 : h2.house) == null ? null : c3 } }).then(() => {
|
|
6753
6775
|
l3.textContent = "Sent", l3.classList.remove("sending"), l3.classList.add("sent"), setTimeout(() => {
|
|
6754
6776
|
l3.textContent = "Ask Claude \u2014 Interpret", l3.classList.remove("sent"), l3.disabled = false;
|
|
6755
6777
|
}, 2500);
|
|
@@ -6758,13 +6780,13 @@ function Lg(e4, t2, n2) {
|
|
|
6758
6780
|
}));
|
|
6759
6781
|
});
|
|
6760
6782
|
}
|
|
6761
|
-
function
|
|
6783
|
+
function zg(e4, t2, n2) {
|
|
6762
6784
|
var r2, i2, a2, o2, s2;
|
|
6763
|
-
let c2 =
|
|
6785
|
+
let c2 = Ig(), l2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), u2 = (r2 = ag[l2]) == null ? "" : r2, d2 = (i2 = (a2 = t2.sign) == null ? og[l2] : a2) == null ? "" : i2, f2 = n2.filter((e5) => e5.house === t2.number), p2 = f2.length ? f2.map((e5) => {
|
|
6764
6786
|
var t3;
|
|
6765
|
-
let n3 = (t3 =
|
|
6787
|
+
let n3 = (t3 = ig[e5.name.toLowerCase()]) == null ? e5.name : t3, r3 = fg(e5.longitude), i3 = e5.retrograde ? " <span class='retro'>\u211E</span>" : "";
|
|
6766
6788
|
return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Q(e5.name)).concat(i3, '</span>\n <span class="aspect-meta">').concat(r3, "</span>\n </div>");
|
|
6767
|
-
}).join("") : '<div class="no-aspects">No planets in this house</div>', m2 =
|
|
6789
|
+
}).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = Mg ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
|
|
6768
6790
|
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>House ').concat(t2.number, '</strong>\n </div>\n <div class="info-pos">').concat(u2, " ").concat(d2, " on cusp").concat(t2.ruler ? " \xB7 ruled by ".concat(Q(t2.ruler)) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in House ').concat(t2.number, '</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), c2.classList.add("visible"), requestAnimationFrame(() => {
|
|
6769
6791
|
let t3 = c2.getBoundingClientRect(), n3 = c2.offsetParent, r3, i3, a3, o3;
|
|
6770
6792
|
if (n3) {
|
|
@@ -6774,14 +6796,14 @@ function Rg(e4, t2, n2) {
|
|
|
6774
6796
|
let s3 = e4.clientX - a3 + 14, l3 = e4.clientY - o3 + 14;
|
|
6775
6797
|
s3 + t3.width > r3 - 14 && (s3 = e4.clientX - a3 - t3.width - 14), l3 + t3.height > i3 - 14 && (l3 = e4.clientY - o3 - t3.height - 14), s3 = Math.max(14, s3), l3 = Math.max(14, l3), c2.style.left = "".concat(s3, "px"), c2.style.top = "".concat(l3, "px");
|
|
6776
6798
|
}), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
|
|
6777
|
-
|
|
6799
|
+
Bg(), Ug();
|
|
6778
6800
|
}), (s2 = document.getElementById("ask-claude-btn")) == null || s2.addEventListener("click", () => {
|
|
6779
6801
|
var e5;
|
|
6780
|
-
if (!
|
|
6802
|
+
if (!Mg) return;
|
|
6781
6803
|
let n3 = document.getElementById("ask-claude-btn");
|
|
6782
|
-
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"),
|
|
6804
|
+
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), Mg({ type: "house", data: { house_number: t2.number, sign: d2, cusp_longitude: t2.cusp_lon, ruler: (e5 = t2.ruler) == null ? null : e5, planets_in_house: f2.map((e6) => {
|
|
6783
6805
|
var t3, n4;
|
|
6784
|
-
return { name: e6.name, sign: (t3 = e6.sign) == null ?
|
|
6806
|
+
return { name: e6.name, sign: (t3 = e6.sign) == null ? fg(e6.longitude) : t3, retrograde: (n4 = e6.retrograde) == null ? false : n4 };
|
|
6785
6807
|
}) } }).then(() => {
|
|
6786
6808
|
n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
|
|
6787
6809
|
n3.textContent = "Ask Claude \u2014 Interpret", n3.classList.remove("sent"), n3.disabled = false;
|
|
@@ -6791,43 +6813,43 @@ function Rg(e4, t2, n2) {
|
|
|
6791
6813
|
}));
|
|
6792
6814
|
});
|
|
6793
6815
|
}
|
|
6794
|
-
function
|
|
6795
|
-
|
|
6816
|
+
function Bg() {
|
|
6817
|
+
Og == null || Og.classList.remove("visible"), kg = null, Ng == null || Ng(null);
|
|
6796
6818
|
}
|
|
6797
|
-
function
|
|
6819
|
+
function Vg(e4) {
|
|
6798
6820
|
let t2 = e4.toLowerCase();
|
|
6799
|
-
|
|
6821
|
+
Fg.forEach(({ vis: e5, color: n2 }, r2) => {
|
|
6800
6822
|
r2.split("|").includes(t2) ? (e5.style.stroke = n2, e5.style.strokeOpacity = "0.9", e5.style.strokeWidth = "2") : (e5.style.strokeOpacity = "0.06", e5.style.strokeWidth = "0.8");
|
|
6801
|
-
}),
|
|
6823
|
+
}), Ag == null || Ag.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.toggle("dim", e5.dataset.planet !== t2));
|
|
6802
6824
|
}
|
|
6803
|
-
function
|
|
6825
|
+
function Hg(e4, t2) {
|
|
6804
6826
|
let n2 = new Set(e4.map((e5) => e5.toLowerCase())), r2 = new Set(t2);
|
|
6805
|
-
|
|
6827
|
+
Fg.forEach(({ vis: e5, color: t3 }, n3) => {
|
|
6806
6828
|
r2.has(n3) ? (e5.style.stroke = t3, e5.style.strokeOpacity = "0.9", e5.style.strokeWidth = "2") : (e5.style.strokeOpacity = "0.06", e5.style.strokeWidth = "0.8");
|
|
6807
|
-
}),
|
|
6829
|
+
}), Ag == null || Ag.querySelectorAll(".planet-hit").forEach((e5) => {
|
|
6808
6830
|
var t3;
|
|
6809
6831
|
return e5.classList.toggle("dim", !n2.has((t3 = e5.dataset.planet) == null ? "" : t3));
|
|
6810
6832
|
});
|
|
6811
6833
|
}
|
|
6812
|
-
function
|
|
6813
|
-
|
|
6834
|
+
function Ug() {
|
|
6835
|
+
Fg.forEach(({ vis: e4, color: t2, baseOpacity: n2, baseWidth: r2 }) => {
|
|
6814
6836
|
e4.style.stroke = t2, e4.style.strokeOpacity = n2, e4.style.strokeWidth = r2;
|
|
6815
|
-
}),
|
|
6837
|
+
}), Ag == null || Ag.querySelectorAll(".planet-hit").forEach((e4) => e4.classList.remove("dim"));
|
|
6816
6838
|
}
|
|
6817
|
-
function
|
|
6818
|
-
|
|
6839
|
+
function Wg(e4) {
|
|
6840
|
+
Fg.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, aspectType: a2 }) => {
|
|
6819
6841
|
e4.has(a2) ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2) : t2.style.strokeOpacity = "0";
|
|
6820
6842
|
});
|
|
6821
6843
|
}
|
|
6822
|
-
function
|
|
6844
|
+
function Gg() {
|
|
6823
6845
|
let e4 = /* @__PURE__ */ new Set();
|
|
6824
|
-
return
|
|
6846
|
+
return Fg.forEach(({ aspectType: t2 }) => e4.add(t2)), [...e4].sort();
|
|
6825
6847
|
}
|
|
6826
|
-
function
|
|
6848
|
+
function Kg(e4, t2, n2, r2, i2, a2, o2) {
|
|
6827
6849
|
var s2, c2, l2, u2, d2, f2, p2, m2, h2;
|
|
6828
|
-
|
|
6829
|
-
let g2 =
|
|
6830
|
-
b2.setAttribute("viewBox", "0 0 500 500"), b2.setAttribute("width", "100%"), b2.setAttribute("height", "100%"), b2.style.display = "block", e4.appendChild(b2),
|
|
6850
|
+
Mg = a2 == null ? null : a2, e4.innerHTML = "", Fg.clear(), kg = null, Bg();
|
|
6851
|
+
let g2 = pg(t2.planets), _2 = (s2 = t2.houses) == null ? [] : s2, v2 = (c2 = t2.aspects) == null ? [] : c2, y2 = (l2 = (u2 = (d2 = _2[0]) == null ? void 0 : d2.cusp_lon) == null ? t2.ascendant : u2) == null ? 0 : l2, b2 = Z("svg");
|
|
6852
|
+
b2.setAttribute("viewBox", "0 0 500 500"), b2.setAttribute("width", "100%"), b2.setAttribute("height", "100%"), b2.style.display = "block", e4.appendChild(b2), Ag = b2, qh(b2, "pan-zoom-controls");
|
|
6831
6853
|
let x2 = Z("circle");
|
|
6832
6854
|
x2.setAttribute("cx", "250"), x2.setAttribute("cy", "250"), x2.setAttribute("r", "244"), x2.style.fill = "var(--bg, #faf9f5)", x2.setAttribute("stroke", "#d4cec8"), x2.setAttribute("stroke-width", "0.5"), x2.setAttribute("pointer-events", "none"), b2.appendChild(x2);
|
|
6833
6855
|
let S2 = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
@@ -6837,34 +6859,34 @@ function Gg(e4, t2, n2, r2, i2, a2, o2) {
|
|
|
6837
6859
|
} catch (e5) {
|
|
6838
6860
|
}
|
|
6839
6861
|
let C2 = Z("circle");
|
|
6840
|
-
C2.setAttribute("cx", "250"), C2.setAttribute("cy", "250"), C2.setAttribute("r", String(
|
|
6862
|
+
C2.setAttribute("cx", "250"), C2.setAttribute("cy", "250"), C2.setAttribute("r", String(Xh)), C2.setAttribute("fill", S2 ? "#141720" : "#f2ede6"), C2.setAttribute("stroke", S2 ? "#252a38" : "#c0b8a8"), C2.setAttribute("stroke-width", "0.5"), C2.setAttribute("pointer-events", "none"), b2.appendChild(C2);
|
|
6841
6863
|
let w2 = Z("circle");
|
|
6842
|
-
w2.setAttribute("cx", "250"), w2.setAttribute("cy", "250"), w2.setAttribute("r", String(
|
|
6864
|
+
w2.setAttribute("cx", "250"), w2.setAttribute("cy", "250"), w2.setAttribute("r", String(Zh)), w2.style.fill = "var(--bg, #faf9f5)", w2.setAttribute("stroke", S2 ? "#2d3548" : "#c0b8a8"), w2.setAttribute("stroke-width", "0.5"), w2.setAttribute("pointer-events", "none"), b2.appendChild(w2);
|
|
6843
6865
|
let ee2 = S2 ? ["rgba(200, 80, 60, 0.18)", "rgba(100,160, 70, 0.18)", "rgba(210,190, 60, 0.18)", "rgba( 70,120,200, 0.18)", "rgba(200, 80, 60, 0.18)", "rgba(100,160, 70, 0.18)", "rgba(210,190, 60, 0.18)", "rgba( 70,120,200, 0.18)", "rgba(200, 80, 60, 0.18)", "rgba(100,160, 70, 0.18)", "rgba(210,190, 60, 0.18)", "rgba( 70,120,200, 0.18)"] : ["rgba(210, 90, 60, 0.12)", "rgba( 90,150, 60, 0.12)", "rgba(200,180, 40, 0.12)", "rgba( 60,110,190, 0.12)", "rgba(210, 90, 60, 0.12)", "rgba( 90,150, 60, 0.12)", "rgba(200,180, 40, 0.12)", "rgba( 60,110,190, 0.12)", "rgba(210, 90, 60, 0.12)", "rgba( 90,150, 60, 0.12)", "rgba(200,180, 40, 0.12)", "rgba( 60,110,190, 0.12)"];
|
|
6844
6866
|
for (let e5 = 0; e5 < 12; e5++) {
|
|
6845
|
-
let t3 = e5 * 30, n3 = (e5 + 1) * 30, r3 = X(t3,
|
|
6846
|
-
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(
|
|
6847
|
-
let { x: c3, y: l3 } = X(t3,
|
|
6867
|
+
let t3 = e5 * 30, n3 = (e5 + 1) * 30, r3 = X(t3, Xh, y2), i3 = X(n3, Xh, y2), a3 = X(t3, Zh, y2), o3 = X(n3, Zh, y2), s3 = Z("path");
|
|
6868
|
+
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(Xh, " ").concat(Xh, " 0 0 0 ").concat(i3.x.toFixed(1), " ").concat(i3.y.toFixed(1)), "L ".concat(o3.x.toFixed(1), " ").concat(o3.y.toFixed(1)), "A ".concat(Zh, " ").concat(Zh, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", ee2[e5]), s3.setAttribute("pointer-events", "none"), b2.appendChild(s3);
|
|
6869
|
+
let { x: c3, y: l3 } = X(t3, Zh, y2), { x: u3, y: d3 } = X(t3, Xh, y2), f3 = Z("line");
|
|
6848
6870
|
f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), f3.setAttribute("stroke", S2 ? "#2d3548" : "#c0b8a8"), f3.setAttribute("stroke-width", "0.5"), f3.setAttribute("pointer-events", "none"), b2.appendChild(f3);
|
|
6849
|
-
let { x: p3, y: m3 } = X(t3 + 15, (
|
|
6850
|
-
h3.setAttribute("x", p3.toFixed(1)), h3.setAttribute("y", m3.toFixed(1)), h3.setAttribute("text-anchor", "middle"), h3.setAttribute("dominant-baseline", "central"), h3.setAttribute("font-size", "13"), h3.setAttribute("fill",
|
|
6871
|
+
let { x: p3, y: m3 } = X(t3 + 15, (Zh + Xh) / 2, y2), h3 = Z("text");
|
|
6872
|
+
h3.setAttribute("x", p3.toFixed(1)), h3.setAttribute("y", m3.toFixed(1)), h3.setAttribute("text-anchor", "middle"), h3.setAttribute("dominant-baseline", "central"), h3.setAttribute("font-size", "13"), h3.setAttribute("fill", lg[e5]), h3.setAttribute("pointer-events", "none"), h3.style.fontFamily = "serif", h3.textContent = ag[e5], b2.appendChild(h3);
|
|
6851
6873
|
}
|
|
6852
6874
|
let te2 = Z("circle");
|
|
6853
|
-
if (te2.setAttribute("cx", "250"), te2.setAttribute("cy", "250"), te2.setAttribute("r", String(
|
|
6854
|
-
let t3 = _2[e5], n3 = _2[(e5 + 1) % _2.length], r3 = [1, 4, 7, 10].includes(t3.number), { x: i3, y: a3 } = X(t3.cusp_lon,
|
|
6875
|
+
if (te2.setAttribute("cx", "250"), te2.setAttribute("cy", "250"), te2.setAttribute("r", String(eg)), te2.style.fill = "var(--bg, #faf9f5)", te2.setAttribute("stroke", S2 ? "#2d3548" : "#c0b8a8"), te2.setAttribute("stroke-width", "0.5"), te2.setAttribute("pointer-events", "none"), b2.appendChild(te2), _2.length > 0) for (let e5 = 0; e5 < _2.length; e5++) {
|
|
6876
|
+
let t3 = _2[e5], n3 = _2[(e5 + 1) % _2.length], r3 = [1, 4, 7, 10].includes(t3.number), { x: i3, y: a3 } = X(t3.cusp_lon, eg, y2), { x: o3, y: s3 } = X(t3.cusp_lon, Zh, y2), c3 = Z("line");
|
|
6855
6877
|
c3.setAttribute("x1", i3.toFixed(1)), c3.setAttribute("y1", a3.toFixed(1)), c3.setAttribute("x2", o3.toFixed(1)), c3.setAttribute("y2", s3.toFixed(1)), c3.setAttribute("stroke", r3 ? "#7060b8" : S2 ? "#3a3450" : "#a89898"), c3.setAttribute("stroke-width", r3 ? "1.5" : "0.7"), c3.setAttribute("pointer-events", "none"), b2.appendChild(c3);
|
|
6856
|
-
let l3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: u3, y: d3 } = X(t3.cusp_lon + l3 / 2,
|
|
6878
|
+
let l3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: u3, y: d3 } = X(t3.cusp_lon + l3 / 2, $h, y2), f3 = Z("text");
|
|
6857
6879
|
f3.setAttribute("x", u3.toFixed(1)), f3.setAttribute("y", d3.toFixed(1)), f3.setAttribute("text-anchor", "middle"), f3.setAttribute("dominant-baseline", "central"), f3.setAttribute("font-size", "9"), f3.setAttribute("fill", r3 ? "#7060b8" : "#90808a"), f3.setAttribute("pointer-events", "none"), f3.textContent = String(t3.number), b2.appendChild(f3);
|
|
6858
6880
|
}
|
|
6859
6881
|
let ne2 = _2.find((e5) => e5.number === 1), T2 = _2.find((e5) => e5.number === 4), re2 = _2.find((e5) => e5.number === 7), ie2 = _2.find((e5) => e5.number === 10), ae2 = [{ lon: (f2 = ne2 == null ? void 0 : ne2.cusp_lon) == null ? y2 : f2, label: "ASC" }, { lon: (p2 = re2 == null ? void 0 : re2.cusp_lon) == null ? (y2 + 180) % 360 : p2, label: "DSC" }, { lon: (m2 = ie2 == null ? void 0 : ie2.cusp_lon) == null ? (y2 + 270) % 360 : m2, label: "MC" }, { lon: (h2 = T2 == null ? void 0 : T2.cusp_lon) == null ? (y2 + 90) % 360 : h2, label: "IC" }];
|
|
6860
6882
|
for (let e5 of ae2) {
|
|
6861
|
-
let { x: t3, y: n3 } = X(e5.lon,
|
|
6883
|
+
let { x: t3, y: n3 } = X(e5.lon, Xh + 14, y2), r3 = Z("text");
|
|
6862
6884
|
r3.setAttribute("x", t3.toFixed(1)), r3.setAttribute("y", n3.toFixed(1)), r3.setAttribute("text-anchor", "middle"), r3.setAttribute("dominant-baseline", "central"), r3.setAttribute("font-size", "8"), r3.setAttribute("font-weight", "700"), r3.setAttribute("fill", "#7060b8"), r3.setAttribute("pointer-events", "none"), r3.textContent = e5.label, b2.appendChild(r3);
|
|
6863
6885
|
}
|
|
6864
6886
|
{
|
|
6865
6887
|
let e5 = Z("g");
|
|
6866
6888
|
e5.setAttribute("pointer-events", "none");
|
|
6867
|
-
let t3 =
|
|
6889
|
+
let t3 = Jh - 50, n3 = Yh - 50;
|
|
6868
6890
|
e5.setAttribute("transform", "translate(".concat(t3, ",").concat(n3, ") scale(").concat(0.5813953488372093.toFixed(4), ") translate(-69,-110)")), e5.setAttribute("opacity", S2 ? "0.08" : "0.05");
|
|
6869
6891
|
let r3 = Z("path");
|
|
6870
6892
|
r3.setAttribute("fill", S2 ? "#F0DFC3" : "#6366f1"), r3.setAttribute("d", "M225.711945,199.983551 C225.292816,213.680542 221.995255,226.061340 214.416275,237.110443 C193.610641,267.442230 154.827423,271.316071 127.459396,255.072189 C123.775551,252.885712 120.882744,252.441498 116.873688,254.137070 C109.048920,257.446503 100.934502,259.899628 92.190125,259.379364 C83.542915,258.864868 78.616745,253.946121 78.684906,245.377151 C78.745262,237.789108 81.850891,231.152817 85.454010,224.735641 C88.304489,219.658905 91.245934,214.612274 95.084061,210.184647 C97.704369,207.161865 98.745560,203.844788 98.740883,199.721481 C98.699577,163.227264 125.082115,136.164413 161.509293,135.193466 C165.322968,135.092 169.315643,134.951 172.935333,135.916 C178.310226,137.349 182.595856,135.650 187.146591,133.280 C195.742508,128.804 204.726822,125.462 214.488632,124.281 C227.834183,122.666 234.932129,130.259 231.851456,143.429 C230.052628,151.119 226.752274,158.212 222.361359,164.760 C220.327988,167.792 220.017624,170.616 221.473969,174.100 C224.861847,182.205 225.468460,190.867 225.711945,199.983551 M212.976044,168.510834 C218.716415,160.882339 223.731537,152.880203 226.146439,143.492218 C228.308197,135.088409 225.333649,129.095078 217.846207,128.560104 C206.177933,127.726410 196.082672,132.729645 185.171341,138.349640 C187.816025,139.540573 189.463272,140.263855 191.095154,141.020279 C200.031250,145.162369 207.546783,151.055435 213.272079,159.124069 C214.113724,160.310181 215.663269,161.586777 214.829697,163.091461 C211.652573,168.826584 208.025726,174.252899 202.566681,179.006516 C201.549835,176.444733 200.923126,174.750778 200.212067,173.093002 C195.433319,161.951874 188.776291,152.487198 177.473648,146.963547 C174.609192,145.563675 172.292969,145.608887 169.595505,147.317566 C152.514618,158.137161 136.926010,170.829269 122.270142,184.706512 C120.686935,186.205612 119.364059,187.876480 119.190598,190.236053 C118.688568,197.065308 118.869385,203.864960 119.793037,210.651215 C121.255951,221.399521 126.239235,230.774902 131.349335,240.326111 C132.993088,240.252151 134.400635,239.345810 135.765091,238.453430 C144.400665,232.805634 153.133560,227.309341 161.286926,220.942139 C164.075363,218.764557 165.766891,216.649643 165.788437,212.774612 C165.823334,206.491791 170.826294,202.743942 176.973877,204.085724 C179.390350,204.613144 181.027267,204.346497 182.788132,202.634048 C193.536697,192.180939 204.343719,181.790634 212.976044,168.510834 M196.311264,238.774429 C205.223999,223.519989 207.059082,207.185013 204.308746,188.929276 C197.720764,194.995590 193.078613,201.379272 186.899475,206.146912 C184.795013,207.770645 183.863800,209.506882 184.135178,212.471619 C184.705627,218.704117 179.426636,223.881546 173.582184,222.584213 C169.742706,221.731949 167.311813,222.850525 164.693726,225.165817 C162.585052,227.030579 160.129227,228.496109 157.916992,230.251648 C151.305984,235.497787 144.002090,239.748337 136.880554,244.346085 C150.810440,260.746155 181.289062,262.140137 196.311264,238.774429 M101.954178,222.323334 C101.003220,218.898468 100.052269,215.473602 98.901512,211.329163 C91.673454,221.459351 85.061653,230.979462 83.800476,243.065674 C83.190475,248.911530 86.140854,252.991577 91.843674,253.598953 C100.879066,254.561295 109.050667,251.508087 117.776840,247.739761 C110.183830,240.480621 105.126755,232.419739 101.954178,222.323334 M129.303619,173.800827 C141.200867,163.092194 153.936737,153.435806 167.699600,144.113556 C142.265121,138.861908 122.832809,158.201233 120.741943,181.434265 C123.701614,178.779602 126.227280,176.514221 129.303619,173.800827 z"), e5.appendChild(r3), b2.appendChild(e5);
|
|
@@ -6873,104 +6895,104 @@ function Gg(e4, t2, n2, r2, i2, a2, o2) {
|
|
|
6873
6895
|
var oe2, se2, ce2, le2, ue2, de2, fe2, pe2, me2, he2, ge2, _e2, ve2;
|
|
6874
6896
|
let t3 = g2.find((t4) => t4.name.toLowerCase() === e5.planet1.toLowerCase()), n3 = g2.find((t4) => t4.name.toLowerCase() === e5.planet2.toLowerCase());
|
|
6875
6897
|
if (!t3 || !n3) continue;
|
|
6876
|
-
let r3 = (oe2 =
|
|
6898
|
+
let r3 = (oe2 = cg((se2 = e5.type) == null ? "" : se2)) == null ? "#aaa" : oe2, { x: a3, y: o3 } = X(t3.longitude, tg, y2), { x: s3, y: c3 } = X(n3.longitude, tg, y2), l3 = Math.min((ce2 = e5.orb) == null ? 10 : ce2, 10), u3 = 0.55 - l3 / 10 * 0.38, d3 = Z("line");
|
|
6877
6899
|
d3.setAttribute("x1", a3.toFixed(1)), d3.setAttribute("y1", o3.toFixed(1)), d3.setAttribute("x2", s3.toFixed(1)), d3.setAttribute("y2", c3.toFixed(1)), d3.setAttribute("pointer-events", "none"), d3.style.stroke = r3, d3.style.strokeOpacity = String(u3), d3.style.strokeWidth = l3 < 2 ? "1.2" : "0.8", b2.appendChild(d3);
|
|
6878
6900
|
let f3 = Z("line");
|
|
6879
|
-
f3.setAttribute("x1", a3.toFixed(1)), f3.setAttribute("y1", o3.toFixed(1)), f3.setAttribute("x2", s3.toFixed(1)), f3.setAttribute("y2", c3.toFixed(1)), f3.setAttribute("stroke", "transparent"), f3.setAttribute("stroke-width", "13"), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region aspect-hit"), f3.style.pointerEvents = "all",
|
|
6880
|
-
let p3 = (ue2 =
|
|
6901
|
+
f3.setAttribute("x1", a3.toFixed(1)), f3.setAttribute("y1", o3.toFixed(1)), f3.setAttribute("x2", s3.toFixed(1)), f3.setAttribute("y2", c3.toFixed(1)), f3.setAttribute("stroke", "transparent"), f3.setAttribute("stroke-width", "13"), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region aspect-hit"), f3.style.pointerEvents = "all", qg(f3, "Aspect: ".concat((le2 = e5.type) == null ? "Aspect" : le2, " between ").concat(t3.name, " and ").concat(n3.name));
|
|
6902
|
+
let p3 = (ue2 = ig[t3.name.toLowerCase()]) == null ? t3.name : ue2, m3 = (de2 = ig[n3.name.toLowerCase()]) == null ? n3.name : de2, h3 = "".concat(p3, " ").concat((fe2 = (pe2 = sg[(me2 = (he2 = e5.type) == null ? void 0 : he2.toLowerCase()) == null ? "" : me2]) == null ? e5.type : pe2) == null ? "" : fe2, " ").concat(m3, " \xB7 ").concat((ge2 = (_e2 = e5.orb) == null ? void 0 : _e2.toFixed(1)) == null ? "?" : ge2, "\xB0 orb").concat(e5.applying === true ? " (applying)" : e5.applying === false ? " (separating)" : "");
|
|
6881
6903
|
f3.addEventListener("mouseenter", (t4) => {
|
|
6882
6904
|
var n4;
|
|
6883
|
-
return
|
|
6905
|
+
return hg(t4.clientX, t4.clientY, Q((n4 = e5.type) == null ? "Aspect" : n4), h3, "Click for interpretation");
|
|
6884
6906
|
}), f3.addEventListener("mousemove", (t4) => {
|
|
6885
6907
|
var n4;
|
|
6886
|
-
return
|
|
6887
|
-
}), f3.addEventListener("mouseleave",
|
|
6908
|
+
return hg(t4.clientX, t4.clientY, Q((n4 = e5.type) == null ? "Aspect" : n4), h3, "Click for interpretation");
|
|
6909
|
+
}), f3.addEventListener("mouseleave", gg), f3.addEventListener("click", (t4) => {
|
|
6888
6910
|
var n4, r4, a4, o4, s4, c4;
|
|
6889
|
-
|
|
6890
|
-
let l4 = "".concat((n4 =
|
|
6891
|
-
|
|
6911
|
+
gg();
|
|
6912
|
+
let l4 = "".concat((n4 = sg[(r4 = (a4 = e5.type) == null ? void 0 : a4.toLowerCase()) == null ? "" : r4]) == null ? "" : n4, " ").concat(Q((o4 = e5.type) == null ? "Aspect" : o4), ": ").concat((s4 = ig[e5.planet1.toLowerCase()]) == null ? e5.planet1 : s4, " ").concat((c4 = ig[e5.planet2.toLowerCase()]) == null ? e5.planet2 : c4);
|
|
6913
|
+
Ng == null || Ng(l4), Rg(t4, e5, g2), i2(e5);
|
|
6892
6914
|
});
|
|
6893
6915
|
let _3 = [e5.planet1.toLowerCase(), e5.planet2.toLowerCase()].sort().join("|"), v3 = ((ve2 = e5.type) == null ? "unknown" : ve2).toLowerCase();
|
|
6894
|
-
|
|
6916
|
+
Fg.set(_3, { vis: d3, color: r3, baseOpacity: String(u3), baseWidth: l3 < 2 ? "1.2" : "0.8", aspectType: v3 }), b2.appendChild(f3);
|
|
6895
6917
|
}
|
|
6896
6918
|
for (let e5 of g2) {
|
|
6897
6919
|
var ye2;
|
|
6898
|
-
let t3 = (ye2 =
|
|
6920
|
+
let t3 = (ye2 = ig[e5.name.toLowerCase()]) == null ? "\u2605" : ye2, r3 = ug(e5.name), { x: i3, y: a3 } = X(e5.longitude, Qh, y2), { x: o3, y: s3 } = X(e5.longitude, Zh - 5, y2), c3 = Z("circle");
|
|
6899
6921
|
c3.setAttribute("cx", o3.toFixed(1)), c3.setAttribute("cy", s3.toFixed(1)), c3.setAttribute("r", "2.5"), c3.setAttribute("fill", r3), c3.setAttribute("opacity", "0.65"), c3.setAttribute("pointer-events", "none"), b2.appendChild(c3);
|
|
6900
6922
|
let l3 = Z("text");
|
|
6901
6923
|
l3.setAttribute("x", i3.toFixed(1)), l3.setAttribute("y", a3.toFixed(1)), l3.setAttribute("text-anchor", "middle"), l3.setAttribute("dominant-baseline", "central"), l3.setAttribute("font-size", "15"), l3.setAttribute("pointer-events", "none"), l3.style.fill = r3, l3.style.fontFamily = "serif", l3.textContent = t3, b2.appendChild(l3);
|
|
6902
|
-
let u3 = Math.floor((e5.longitude % 360 + 360) % 360 % 30), { x: d3, y: f3 } = X(e5.longitude,
|
|
6924
|
+
let u3 = Math.floor((e5.longitude % 360 + 360) % 360 % 30), { x: d3, y: f3 } = X(e5.longitude, Qh - 17, y2), p3 = Z("text");
|
|
6903
6925
|
if (p3.setAttribute("x", d3.toFixed(1)), p3.setAttribute("y", f3.toFixed(1)), p3.setAttribute("text-anchor", "middle"), p3.setAttribute("dominant-baseline", "central"), p3.setAttribute("font-size", "7"), p3.setAttribute("fill", "#9080a0"), p3.setAttribute("pointer-events", "none"), p3.textContent = "".concat(u3, "\xB0"), b2.appendChild(p3), e5.retrograde) {
|
|
6904
|
-
let { x: t4, y: n3 } = X(e5.longitude,
|
|
6926
|
+
let { x: t4, y: n3 } = X(e5.longitude, Qh + 14, y2), r4 = Z("text");
|
|
6905
6927
|
r4.setAttribute("x", t4.toFixed(1)), r4.setAttribute("y", n3.toFixed(1)), r4.setAttribute("text-anchor", "middle"), r4.setAttribute("dominant-baseline", "central"), r4.setAttribute("font-size", "8"), r4.setAttribute("fill", "#e05252"), r4.setAttribute("pointer-events", "none"), r4.textContent = "\u211E", b2.appendChild(r4);
|
|
6906
6928
|
}
|
|
6907
6929
|
let m3 = Z("circle");
|
|
6908
|
-
m3.setAttribute("cx", i3.toFixed(1)), m3.setAttribute("cy", a3.toFixed(1)), m3.setAttribute("r", String(
|
|
6909
|
-
let h3 = "".concat(
|
|
6910
|
-
m3.addEventListener("mouseenter", (n3) =>
|
|
6930
|
+
m3.setAttribute("cx", i3.toFixed(1)), m3.setAttribute("cy", a3.toFixed(1)), m3.setAttribute("r", String(ng)), m3.setAttribute("fill", "transparent"), m3.setAttribute("class", "hit-region planet-hit"), m3.dataset.planet = e5.name.toLowerCase(), m3.style.pointerEvents = "all", qg(m3, "Planet: ".concat(e5.name));
|
|
6931
|
+
let h3 = "".concat(fg(e5.longitude)).concat(e5.house ? " \xB7 H".concat(e5.house) : "").concat(e5.retrograde ? " \u211E" : "");
|
|
6932
|
+
m3.addEventListener("mouseenter", (n3) => hg(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Q(e5.name)), h3, "Click for aspects")), m3.addEventListener("mousemove", (n3) => hg(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Q(e5.name)), h3, "Click for aspects")), m3.addEventListener("mouseleave", gg), m3.addEventListener("click", (t4) => {
|
|
6911
6933
|
var r4;
|
|
6912
|
-
if (
|
|
6913
|
-
|
|
6934
|
+
if (gg(), kg === e5.name.toLowerCase()) {
|
|
6935
|
+
Ug(), Bg(), Ng == null || Ng(null);
|
|
6914
6936
|
return;
|
|
6915
6937
|
}
|
|
6916
|
-
|
|
6917
|
-
let i4 = (r4 =
|
|
6918
|
-
|
|
6938
|
+
kg = e5.name.toLowerCase();
|
|
6939
|
+
let i4 = (r4 = ig[e5.name.toLowerCase()]) == null ? "" : r4;
|
|
6940
|
+
Ng == null || Ng("".concat(i4, " ").concat(Q(e5.name), " in ").concat(fg(e5.longitude))), Vg(e5.name), Lg(t4, e5, v2), n2(e5);
|
|
6919
6941
|
}), b2.appendChild(m3);
|
|
6920
6942
|
}
|
|
6921
6943
|
for (let e5 = 0; e5 < _2.length; e5++) {
|
|
6922
6944
|
var be2, xe2;
|
|
6923
|
-
let t3 = _2[e5], n3 = _2[(e5 + 1) % _2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (be2 = (xe2 = t3.sign) == null ?
|
|
6924
|
-
d3.setAttribute("x1", s3.toFixed(1)), d3.setAttribute("y1", c3.toFixed(1)), d3.setAttribute("x2", l3.toFixed(1)), d3.setAttribute("y2", u3.toFixed(1)), d3.setAttribute("stroke", "transparent"), d3.setAttribute("stroke-width", String(
|
|
6945
|
+
let t3 = _2[e5], n3 = _2[(e5 + 1) % _2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (be2 = (xe2 = t3.sign) == null ? og[i3] : xe2) == null ? "" : be2, o3 = "".concat(fg(t3.cusp_lon), " \xB7 ").concat(a3), { x: s3, y: c3 } = X(t3.cusp_lon, eg, y2), { x: l3, y: u3 } = X(t3.cusp_lon, Zh, y2), d3 = Z("line");
|
|
6946
|
+
d3.setAttribute("x1", s3.toFixed(1)), d3.setAttribute("y1", c3.toFixed(1)), d3.setAttribute("x2", l3.toFixed(1)), d3.setAttribute("y2", u3.toFixed(1)), d3.setAttribute("stroke", "transparent"), d3.setAttribute("stroke-width", String(rg)), d3.setAttribute("fill", "none"), d3.setAttribute("class", "hit-region"), d3.style.pointerEvents = "all", qg(d3, "House ".concat(t3.number, " Cusp")), d3.addEventListener("mouseenter", (e6) => hg(e6.clientX, e6.clientY, "House ".concat(t3.number), o3, "Click for meaning")), d3.addEventListener("mousemove", (e6) => hg(e6.clientX, e6.clientY, "House ".concat(t3.number), o3, "Click for meaning")), d3.addEventListener("mouseleave", gg), d3.addEventListener("click", (e6) => {
|
|
6925
6947
|
var n4, i4;
|
|
6926
|
-
|
|
6927
|
-
let a4 = (n4 = (i4 = t3.sign) == null ?
|
|
6928
|
-
|
|
6948
|
+
gg();
|
|
6949
|
+
let a4 = (n4 = (i4 = t3.sign) == null ? og[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
|
|
6950
|
+
Ng == null || Ng("House ".concat(t3.number, " \xB7 ").concat(a4)), zg(e6, t3, g2), r2(t3);
|
|
6929
6951
|
}), b2.appendChild(d3);
|
|
6930
|
-
let f3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: p3, y: m3 } = X(t3.cusp_lon + f3 / 2,
|
|
6931
|
-
h3.setAttribute("cx", p3.toFixed(1)), h3.setAttribute("cy", m3.toFixed(1)), h3.setAttribute("r", "14"), h3.setAttribute("fill", "transparent"), h3.setAttribute("class", "hit-region"), h3.style.pointerEvents = "all",
|
|
6952
|
+
let f3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: p3, y: m3 } = X(t3.cusp_lon + f3 / 2, $h, y2), h3 = Z("circle");
|
|
6953
|
+
h3.setAttribute("cx", p3.toFixed(1)), h3.setAttribute("cy", m3.toFixed(1)), h3.setAttribute("r", "14"), h3.setAttribute("fill", "transparent"), h3.setAttribute("class", "hit-region"), h3.style.pointerEvents = "all", qg(h3, "House ".concat(t3.number, " Area")), h3.addEventListener("mouseenter", (e6) => hg(e6.clientX, e6.clientY, "House ".concat(t3.number), o3, "Click for meaning")), h3.addEventListener("mousemove", (e6) => hg(e6.clientX, e6.clientY, "House ".concat(t3.number), o3, "Click for meaning")), h3.addEventListener("mouseleave", gg), h3.addEventListener("click", (e6) => {
|
|
6932
6954
|
var n4, i4;
|
|
6933
|
-
|
|
6934
|
-
let a4 = (n4 = (i4 = t3.sign) == null ?
|
|
6935
|
-
|
|
6955
|
+
gg();
|
|
6956
|
+
let a4 = (n4 = (i4 = t3.sign) == null ? og[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
|
|
6957
|
+
Ng == null || Ng("House ".concat(t3.number, " \xB7 ").concat(a4)), zg(e6, t3, g2), r2(t3);
|
|
6936
6958
|
}), b2.appendChild(h3);
|
|
6937
6959
|
}
|
|
6938
|
-
|
|
6960
|
+
jg && document.removeEventListener("click", jg, false), jg = (e5) => {
|
|
6939
6961
|
let t3 = e5.target;
|
|
6940
|
-
t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (
|
|
6941
|
-
}, document.addEventListener("click",
|
|
6962
|
+
t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (Ug(), Bg());
|
|
6963
|
+
}, document.addEventListener("click", jg, false);
|
|
6942
6964
|
}
|
|
6943
|
-
function
|
|
6965
|
+
function qg(e4, t2) {
|
|
6944
6966
|
e4 && (e4.setAttribute("tabindex", "0"), e4.setAttribute("role", "button"), e4.setAttribute("aria-label", t2), e4.addEventListener("keydown", (t3) => {
|
|
6945
6967
|
let n2 = t3;
|
|
6946
6968
|
(n2.key === "Enter" || n2.key === " ") && (n2.preventDefault(), e4.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true })));
|
|
6947
6969
|
}));
|
|
6948
6970
|
}
|
|
6949
|
-
var
|
|
6950
|
-
function
|
|
6971
|
+
var Jg = [{ label: "Placidus", value: "placidus" }, { label: "Whole Sign", value: "whole_sign" }, { label: "Equal", value: "equal" }, { label: "Koch", value: "koch" }, { label: "Regio.", value: "regiomontanus" }];
|
|
6972
|
+
function Yg(e4, t2, n2) {
|
|
6951
6973
|
e4.innerHTML = "";
|
|
6952
6974
|
let r2 = document.createElement("span");
|
|
6953
6975
|
r2.className = "controls-label", r2.textContent = "Houses:", e4.appendChild(r2);
|
|
6954
|
-
for (let r3 of
|
|
6976
|
+
for (let r3 of Jg) {
|
|
6955
6977
|
let i2 = document.createElement("button");
|
|
6956
6978
|
i2.className = "control-btn" + (r3.value === t2 ? " active" : ""), i2.textContent = r3.label, i2.title = "Switch to ".concat(r3.label, " house system"), i2.setAttribute("data-system", r3.value), i2.addEventListener("click", () => {
|
|
6957
6979
|
e4.querySelectorAll(".control-btn").forEach((e5) => e5.classList.remove("active")), i2.classList.add("active"), i2.disabled = true, i2.textContent = "".concat(r3.label, " \u2026"), n2(r3.value);
|
|
6958
6980
|
}), e4.appendChild(i2);
|
|
6959
6981
|
}
|
|
6960
6982
|
}
|
|
6961
|
-
function
|
|
6983
|
+
function Xg(e4, t2) {
|
|
6962
6984
|
e4.querySelectorAll(".control-btn").forEach((e5) => {
|
|
6963
6985
|
var n2;
|
|
6964
6986
|
let r2 = e5.getAttribute("data-system");
|
|
6965
6987
|
e5.disabled = false;
|
|
6966
|
-
let i2 =
|
|
6988
|
+
let i2 = Jg.find((e6) => e6.value === r2);
|
|
6967
6989
|
e5.textContent = (n2 = i2 == null ? void 0 : i2.label) == null ? r2 : n2, e5.classList.toggle("active", r2 === t2);
|
|
6968
6990
|
});
|
|
6969
6991
|
}
|
|
6970
|
-
var
|
|
6992
|
+
var Zg = class {
|
|
6971
6993
|
constructor(e4) {
|
|
6972
6994
|
var t2, n2, r2, i2, a2, s2;
|
|
6973
|
-
o(this, "config", void 0), o(this, "params", void 0), o(this, "dateInput", void 0), o(this, "timeInput", void 0), o(this, "
|
|
6995
|
+
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), this.config = e4, this.params = { date: ((t2 = e4.initialParams) == null ? void 0 : t2.date) || this.getTodayDate(), time: ((n2 = e4.initialParams) == null ? void 0 : n2.time) || "12:00", latitude: ((r2 = e4.initialParams) == null ? void 0 : r2.latitude) || null, longitude: ((i2 = e4.initialParams) == null ? void 0 : i2.longitude) || null, timezone: ((a2 = e4.initialParams) == null ? void 0 : a2.timezone) || null, locationName: ((s2 = e4.initialParams) == null ? void 0 : s2.locationName) || null }, this.render();
|
|
6974
6996
|
}
|
|
6975
6997
|
getTodayDate() {
|
|
6976
6998
|
return (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
|
|
@@ -6998,109 +7020,72 @@ var Xg = class {
|
|
|
6998
7020
|
this.params.time = e5.target.value;
|
|
6999
7021
|
}), r2.append(i2, this.timeInput);
|
|
7000
7022
|
let a2 = document.createElement("div");
|
|
7001
|
-
a2.className = "param-
|
|
7002
|
-
let o2 = document.createElement("label");
|
|
7003
|
-
o2.textContent = "Location", this.locationInput = document.createElement("input"), this.locationInput.type = "text", this.locationInput.placeholder = "Search city...", this.locationInput.value = this.params.locationName || "", this.suggestionsMenu = document.createElement("div"), this.suggestionsMenu.className = "loc-suggestions", this.suggestionsMenu.hidden = true, this.locationInput.addEventListener("input", (e5) => {
|
|
7004
|
-
let t3 = e5.target.value;
|
|
7005
|
-
if (this.searchTimeout && window.clearTimeout(this.searchTimeout), this.params.locationName = t3, this.params.latitude = null, t3.length < 2) {
|
|
7006
|
-
this.suggestionsMenu.hidden = true;
|
|
7007
|
-
return;
|
|
7008
|
-
}
|
|
7009
|
-
this.searchTimeout = window.setTimeout(() => this.searchLocation(t3), 300);
|
|
7010
|
-
}), document.addEventListener("click", (e5) => {
|
|
7011
|
-
a2.contains(e5.target) || (this.suggestionsMenu.hidden = true);
|
|
7012
|
-
}), a2.append(o2, this.locationInput, this.suggestionsMenu);
|
|
7013
|
-
let s2 = document.createElement("div");
|
|
7014
|
-
if (s2.className = "param-actions", this.config.showStepControls) {
|
|
7023
|
+
if (a2.className = "param-actions", this.config.showStepControls) {
|
|
7015
7024
|
let e5 = document.createElement("button");
|
|
7016
7025
|
e5.className = "param-btn-icon", e5.innerHTML = "\u25C0", e5.title = "Previous Day", e5.addEventListener("click", () => this.stepDay(-1));
|
|
7017
7026
|
let t3 = document.createElement("button");
|
|
7018
|
-
t3.className = "param-btn-icon", t3.innerHTML = "\u25B6", t3.title = "Next Day", t3.addEventListener("click", () => this.stepDay(1)),
|
|
7027
|
+
t3.className = "param-btn-icon", t3.innerHTML = "\u25B6", t3.title = "Next Day", t3.addEventListener("click", () => this.stepDay(1)), a2.append(e5, t3);
|
|
7019
7028
|
}
|
|
7020
7029
|
this.refreshBtn = document.createElement("button"), this.refreshBtn.className = "param-btn-primary", this.refreshBtn.textContent = "Refresh", this.refreshBtn.addEventListener("click", () => {
|
|
7021
|
-
if (this.params.latitude === null || this.params.longitude === null) {
|
|
7022
|
-
alert("Please select a location from the suggestions to ensure accurate timezone calculation.");
|
|
7023
|
-
return;
|
|
7024
|
-
}
|
|
7025
7030
|
this.config.onRefresh(this.params);
|
|
7026
|
-
}),
|
|
7031
|
+
}), a2.append(this.refreshBtn), e4.append(t2, r2, a2), this.config.container.append(e4);
|
|
7027
7032
|
}
|
|
7028
7033
|
stepDay(e4) {
|
|
7029
7034
|
if (!this.params.date) return;
|
|
7030
7035
|
let t2 = new Date(this.params.date);
|
|
7031
|
-
t2.setUTCDate(t2.getUTCDate() + e4), this.params.date = t2.toISOString().split("T")[0], this.dateInput.value = this.params.date, this.
|
|
7032
|
-
}
|
|
7033
|
-
async searchLocation(e4) {
|
|
7034
|
-
try {
|
|
7035
|
-
var t2;
|
|
7036
|
-
let n2 = (t2 = (await this.config.app.callServerTool({ name: "location_search", arguments: { query: e4 } })).content) == null || (t2 = t2.find((e5) => e5.type === "text")) == null ? void 0 : t2.text;
|
|
7037
|
-
if (!n2) return;
|
|
7038
|
-
let r2 = JSON.parse(n2).suggestions || [];
|
|
7039
|
-
this.renderSuggestions(r2);
|
|
7040
|
-
} catch (e5) {
|
|
7041
|
-
console.error("[ParamControls] Location search failed:", e5);
|
|
7042
|
-
}
|
|
7036
|
+
t2.setUTCDate(t2.getUTCDate() + e4), this.params.date = t2.toISOString().split("T")[0], this.dateInput.value = this.params.date, this.config.onRefresh(this.params);
|
|
7043
7037
|
}
|
|
7044
|
-
|
|
7045
|
-
if (this.suggestionsMenu.innerHTML = "", e4.length === 0) {
|
|
7046
|
-
this.suggestionsMenu.hidden = true;
|
|
7047
|
-
return;
|
|
7048
|
-
}
|
|
7049
|
-
this.suggestionsMenu.hidden = false, e4.forEach((e5) => {
|
|
7050
|
-
let t2 = document.createElement("div");
|
|
7051
|
-
t2.className = "loc-item", t2.textContent = e5.displayName, t2.addEventListener("click", () => {
|
|
7052
|
-
this.selectLocation(e5);
|
|
7053
|
-
}), this.suggestionsMenu.appendChild(t2);
|
|
7054
|
-
});
|
|
7055
|
-
}
|
|
7056
|
-
selectLocation(e4) {
|
|
7057
|
-
this.params.locationName = e4.displayName, this.params.latitude = e4.latitude, this.params.longitude = e4.longitude, this.params.timezone = e4.timezone || "UTC", this.locationInput.value = e4.displayName, this.suggestionsMenu.hidden = true;
|
|
7058
|
-
}
|
|
7059
|
-
}, Zg = "oe_mcp_first_run_";
|
|
7060
|
-
function Qg(e4) {
|
|
7061
|
-
return "".concat(Zg).concat(e4);
|
|
7062
|
-
}
|
|
7038
|
+
}, Qg = "oe_mcp_first_run_";
|
|
7063
7039
|
function $g(e4) {
|
|
7040
|
+
return "".concat(Qg).concat(e4);
|
|
7041
|
+
}
|
|
7042
|
+
function e_(e4) {
|
|
7064
7043
|
try {
|
|
7065
|
-
return localStorage.getItem(
|
|
7044
|
+
return localStorage.getItem($g(e4)) === "1";
|
|
7066
7045
|
} catch (e5) {
|
|
7067
7046
|
return true;
|
|
7068
7047
|
}
|
|
7069
7048
|
}
|
|
7070
|
-
function
|
|
7049
|
+
function t_(e4) {
|
|
7071
7050
|
try {
|
|
7072
|
-
localStorage.setItem(
|
|
7051
|
+
localStorage.setItem($g(e4), "1");
|
|
7073
7052
|
} catch (e5) {
|
|
7074
7053
|
}
|
|
7075
7054
|
}
|
|
7076
|
-
var
|
|
7077
|
-
function
|
|
7055
|
+
var n_ = { "chart-wheel": { stripIcon: "\u2726", stripTitle: "Welcome to your Natal Chart", stripHints: ["Click any <strong>planet</strong> for a deep placement reading", "Click any <strong>aspect line</strong> for its dynamic interpretation", "Click any <strong>house cusp</strong> for house themes", "Use the <strong>date controls</strong> to move through time"], modalText: "Your birth chart is now rendered \u2014 an exact celestial snapshot of the sky at your moment of birth." }, "bi-wheel": { stripIcon: "\u2295", stripTitle: "Welcome to the Bi-Wheel", stripHints: ["Click any <strong>inner planet</strong> for natal placement depth", "Click any <strong>outer planet</strong> for transit or synastry meaning", "Click a <strong>cross-aspect line</strong> for inter-chart dynamics", "Use the <strong>date controls</strong> to advance transits"], modalText: "Two charts are now layered \u2014 the inner wheel is your natal chart; the outer ring shows the second chart (transits or another person's planets)." }, bodygraph: { stripIcon: "\u25C8", stripTitle: "Welcome to your Bodygraph", stripHints: ["Click any <strong>center</strong> (defined or undefined) for its meaning", "Click any <strong>channel</strong> to explore its life theme", "Click any <strong>gate number</strong> for its I Ching hexagram reading", "Click a <strong>planet row</strong> in the sidebar for its HD role"], modalText: "Your bodygraph is now rendered \u2014 a living map of the energy centres, channels, and gates that define your design." } }, r_ = '\n .oe-welcome-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\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 background: linear-gradient(135deg, rgba(30,30,35,0.9) 0%, rgba(20,20,25,0.95) 100%);\n border: 1px solid rgba(255,215,0,0.15); /* Gold tint border */\n border-radius: 16px;\n padding: 32px;\n width: 90%;\n max-width: 440px;\n box-shadow: 0 20px 40px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.1);\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: #D4AF37; /* Gold */\n line-height: 1;\n text-shadow: 0 0 10px rgba(212,175,55,0.3);\n }\n\n .oe-welcome-title {\n font-size: 20px;\n font-weight: 600;\n color: rgba(255,255,255,0.95);\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: rgba(255,255,255,0.8);\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: rgba(255,255,255,0.7);\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: rgba(212,175,55,0.7); /* Muted gold */\n font-size: 12px;\n padding-top: 2px;\n }\n \n .oe-welcome-hints strong {\n color: rgba(255,255,255,0.9);\n font-weight: 600;\n }\n\n .oe-welcome-button {\n align-self: flex-end;\n background: rgba(212,175,55,0.15);\n color: #D4AF37;\n border: 1px solid rgba(212,175,55,0.3);\n padding: 10px 24px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n margin-top: 4px;\n }\n\n .oe-welcome-button:hover {\n background: rgba(212,175,55,0.25);\n border-color: rgba(212,175,55,0.5);\n transform: translateY(-1px);\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';
|
|
7056
|
+
function i_() {
|
|
7078
7057
|
if (document.getElementById("oe-first-run-styles")) return;
|
|
7079
7058
|
let e4 = document.createElement("style");
|
|
7080
|
-
e4.id = "oe-first-run-styles", e4.textContent =
|
|
7059
|
+
e4.id = "oe-first-run-styles", e4.textContent = r_, document.head.appendChild(e4);
|
|
7081
7060
|
}
|
|
7082
|
-
function
|
|
7061
|
+
function a_(e4, t2) {
|
|
7083
7062
|
let n2 = document.createElement("div");
|
|
7084
|
-
n2.className = "oe-welcome-
|
|
7085
|
-
let r2 =
|
|
7086
|
-
|
|
7087
|
-
|
|
7063
|
+
n2.className = "oe-welcome-backdrop";
|
|
7064
|
+
let r2 = document.createElement("div");
|
|
7065
|
+
r2.className = "oe-welcome-modal", r2.setAttribute("role", "dialog"), r2.setAttribute("aria-label", e4.stripTitle);
|
|
7066
|
+
let i2 = e4.stripHints.map((e5) => "<li>".concat(e5, "</li>")).join("");
|
|
7067
|
+
r2.innerHTML = '\n <div class="oe-welcome-header">\n <div class="oe-welcome-icon" aria-hidden="true">'.concat(e4.stripIcon, '</div>\n <h2 class="oe-welcome-title">').concat(e4.stripTitle, '</h2>\n </div>\n <p class="oe-welcome-text">').concat(e4.modalText, '</p>\n <ul class="oe-welcome-hints">').concat(i2, '</ul>\n <button class="oe-welcome-button" aria-label="Explore the chart">Explore</button>\n '), n2.appendChild(r2);
|
|
7068
|
+
let a2 = r2.querySelector(".oe-welcome-button"), o2 = () => {
|
|
7069
|
+
n2.classList.add("is-dismissing"), n2.addEventListener("animationend", () => n2.remove(), { once: true }), t_(t2);
|
|
7070
|
+
};
|
|
7071
|
+
return a2.addEventListener("click", o2), n2.addEventListener("click", (e5) => {
|
|
7072
|
+
e5.target === n2 && o2();
|
|
7088
7073
|
}), n2;
|
|
7089
7074
|
}
|
|
7090
|
-
function
|
|
7091
|
-
if (
|
|
7092
|
-
let n2 =
|
|
7093
|
-
|
|
7094
|
-
let r2 =
|
|
7095
|
-
|
|
7075
|
+
function o_(e4, t2) {
|
|
7076
|
+
if (e_(e4)) return;
|
|
7077
|
+
let n2 = n_[e4];
|
|
7078
|
+
i_();
|
|
7079
|
+
let r2 = a_(n2, e4);
|
|
7080
|
+
document.body.appendChild(r2);
|
|
7096
7081
|
}
|
|
7097
|
-
var
|
|
7082
|
+
var s_ = document.getElementById("loading-state"), c_ = document.getElementById("chart-container"), l_ = document.getElementById("chart-info"), u_ = document.getElementById("chart-status"), d_ = document.getElementById("controls-panel"), f_ = document.getElementById("tally-panel"), $ = document.getElementById("patterns-strip"), p_ = document.getElementById("aspect-filter"), m_ = document.getElementById("param-controls-container");
|
|
7098
7083
|
console.log("[ChartWheel] \u{1F680} main.ts loaded, creating App instance...");
|
|
7099
|
-
var
|
|
7100
|
-
function
|
|
7101
|
-
|
|
7084
|
+
var h_ = new Kh({ name: "Chart Wheel Explorer", version: "1.0.0" }), g_ = null, __ = "placidus", v_ = null, y_ = false, b_ = false;
|
|
7085
|
+
function x_(e4) {
|
|
7086
|
+
u_ && (e4 ? (u_.textContent = "\xB7 ".concat(e4), u_.setAttribute("data-active", "")) : (u_.textContent = "", u_.removeAttribute("data-active")));
|
|
7102
7087
|
}
|
|
7103
|
-
|
|
7088
|
+
h_.ontoolresult = (e4) => {
|
|
7104
7089
|
var t2, n2, r2, i2, a2, o2;
|
|
7105
7090
|
console.log("[ChartWheel] \u{1F4E6} ontoolresult received!", { contentLength: (t2 = (n2 = e4.content) == null ? void 0 : n2.length) == null ? 0 : t2, contentTypes: (r2 = (i2 = e4.content) == null ? void 0 : i2.map((e5) => e5.type)) == null ? [] : r2 });
|
|
7106
7091
|
let s2 = null;
|
|
@@ -7113,51 +7098,49 @@ m_.ontoolresult = (e4) => {
|
|
|
7113
7098
|
} catch (e5) {
|
|
7114
7099
|
}
|
|
7115
7100
|
if (!s2) {
|
|
7116
|
-
console.error("[ChartWheel] \u274C No chart data found in tool result"),
|
|
7101
|
+
console.error("[ChartWheel] \u274C No chart data found in tool result"), B_("Chart data could not be parsed from the server response.");
|
|
7117
7102
|
return;
|
|
7118
7103
|
}
|
|
7119
|
-
if (
|
|
7104
|
+
if (g_ = s2, __ = (o2 = s2.house_system) == null ? "placidus" : o2, !v_) {
|
|
7120
7105
|
var c2, l2, u2, d2, f2, p2, m2, h2, g2, _2;
|
|
7121
7106
|
let e5 = (c2 = s2._birth_params) == null ? {} : c2, t3 = (l2 = (u2 = (d2 = e5.datetime) == null ? s2.datetime : d2) == null ? s2.birth_datetime : u2) == null ? "" : l2, n3 = (f2 = (p2 = e5.location) == null ? s2.location : p2) == null ? "" : f2, r3 = (m2 = (h2 = e5.timezone) == null ? s2.timezone : h2) == null ? "" : m2, i3 = (g2 = e5.latitude) == null ? s2.latitude : g2, a3 = (_2 = e5.longitude) == null ? s2.longitude : _2, o3 = "", v2 = "12:00";
|
|
7122
7107
|
if (t3 && t3.includes("T")) {
|
|
7123
7108
|
let e6 = t3.split("T");
|
|
7124
7109
|
o3 = e6[0], v2 = e6[1].substring(0, 5);
|
|
7125
7110
|
}
|
|
7126
|
-
|
|
7127
|
-
|
|
7111
|
+
v_ = new Zg({ app: h_, container: m_, initialParams: { date: o3, time: v2, locationName: n3, timezone: r3, latitude: typeof i3 == "number" ? i3 : null, longitude: typeof a3 == "number" ? a3 : null }, showStepControls: false, onRefresh: async (e6) => {
|
|
7112
|
+
v_ == null || v_.setBusy(true), s_.removeAttribute("hidden"), c_.setAttribute("hidden", "");
|
|
7128
7113
|
try {
|
|
7129
7114
|
let t4 = "".concat(e6.date, "T").concat(e6.time, ":00");
|
|
7130
|
-
await
|
|
7115
|
+
await h_.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: "".concat(t4).concat(e6.timezone ? "" : "Z"), latitude: e6.latitude, longitude: e6.longitude, timezone: e6.timezone, location: e6.locationName, house_system: __ || "placidus", chart_type: "natal" } });
|
|
7131
7116
|
} catch (e7) {
|
|
7132
7117
|
console.error("Recalculate failed:", e7);
|
|
7133
7118
|
} finally {
|
|
7134
|
-
|
|
7119
|
+
v_ == null || v_.setBusy(false);
|
|
7135
7120
|
}
|
|
7136
7121
|
} });
|
|
7137
7122
|
}
|
|
7138
|
-
console.log("[ChartWheel] \u{1F3A8} Calling renderChart..."),
|
|
7123
|
+
console.log("[ChartWheel] \u{1F3A8} Calling renderChart..."), S_(s2), console.log("[ChartWheel] \u2705 renderChart completed");
|
|
7139
7124
|
};
|
|
7140
|
-
function
|
|
7125
|
+
function S_(e4) {
|
|
7141
7126
|
var t2, n2, r2, i2, a2, o2, s2;
|
|
7142
|
-
|
|
7143
|
-
let c2 =
|
|
7144
|
-
c2 &&
|
|
7145
|
-
let
|
|
7146
|
-
|
|
7147
|
-
|
|
7148
|
-
if (!f2) {
|
|
7149
|
-
f2 = document.createElement("div"), f2.id = "cw-action-bar", f2.className = "hd-action-bar";
|
|
7127
|
+
T_ = null, s_.setAttribute("hidden", ""), c_.removeAttribute("hidden"), m_.removeAttribute("hidden"), d_.removeAttribute("hidden"), Kg(c_, e4, j_, M_, N_, R_, b_ ? P_() : void 0), Pg(x_), Yg(d_, __, z_), C_(e4), o_("chart-wheel", c_);
|
|
7128
|
+
let c2 = pg(e4.planets), l2 = (n2 = (r2 = (i2 = ((t2 = e4.houses) == null ? [] : t2)[0]) == null ? void 0 : i2.cusp_lon) == null ? e4.ascendant : r2) == null ? 0 : n2, u2 = (a2 = e4.aspects) == null ? [] : a2;
|
|
7129
|
+
c2.length > 0 && w_(wg(c2, l2)), E_(Dg(u2, c2)), k_();
|
|
7130
|
+
let d2 = document.getElementById("cw-action-bar");
|
|
7131
|
+
if (!d2) {
|
|
7132
|
+
d2 = document.createElement("div"), d2.id = "cw-action-bar", d2.className = "hd-action-bar";
|
|
7150
7133
|
let e5 = document.getElementById("app");
|
|
7151
|
-
e5 == null || e5.prepend(
|
|
7134
|
+
e5 == null || e5.prepend(d2);
|
|
7152
7135
|
}
|
|
7153
|
-
|
|
7136
|
+
d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void I_()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void L_());
|
|
7154
7137
|
}
|
|
7155
|
-
function
|
|
7138
|
+
function C_(e4) {
|
|
7156
7139
|
var t2, n2, r2, i2, a2, o2, s2, c2, l2, u2;
|
|
7157
|
-
if (!
|
|
7140
|
+
if (!l_) return;
|
|
7158
7141
|
let d2 = (t2 = e4._birth_params) == null ? {} : t2, f2 = (n2 = (r2 = (i2 = d2.datetime) == null ? e4.datetime : i2) == null ? e4.birth_datetime : r2) == null ? "" : n2, p2 = (a2 = (o2 = d2.location) == null ? e4.location : o2) == null ? "" : a2, m2 = (s2 = (c2 = d2.timezone) == null ? e4.timezone : c2) == null ? "" : s2, h2 = (l2 = d2.latitude) == null ? e4.latitude : l2, g2 = (u2 = d2.longitude) == null ? e4.longitude : u2;
|
|
7159
|
-
|
|
7160
|
-
let _2 =
|
|
7142
|
+
__.charAt(0).toUpperCase() + __.slice(1);
|
|
7143
|
+
let _2 = pg(e4.planets).find((e5) => e5.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", y2 = f2;
|
|
7161
7144
|
try {
|
|
7162
7145
|
if (f2 && f2.includes("T")) {
|
|
7163
7146
|
let e5 = new Date(f2), t3 = m2 ? { timeZone: m2 } : {};
|
|
@@ -7167,18 +7150,18 @@ function S_(e4) {
|
|
|
7167
7150
|
}
|
|
7168
7151
|
let b2 = typeof h2 == "number" && typeof g2 == "number" ? "".concat(Math.abs(h2).toFixed(2), "\xB0").concat(h2 >= 0 ? "N" : "S", ", ").concat(Math.abs(g2).toFixed(2), "\xB0").concat(g2 >= 0 ? "E" : "W") : "", x2 = [];
|
|
7169
7152
|
if (y2 && x2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(y2, "</span>")), p2 && x2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat(p2, "</span>")), b2 && !p2 && x2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat(b2, "</span>")), m2 && x2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat(m2, "</span>")), v2 && x2.push('<span class="info-chip sect" title="Sect">'.concat(v2, "</span>")), x2.length === 0) {
|
|
7170
|
-
|
|
7153
|
+
l_.setAttribute("hidden", "");
|
|
7171
7154
|
return;
|
|
7172
7155
|
}
|
|
7173
|
-
|
|
7156
|
+
l_.innerHTML = x2.join(""), l_.removeAttribute("hidden");
|
|
7174
7157
|
}
|
|
7175
|
-
function
|
|
7176
|
-
if (!
|
|
7158
|
+
function w_(e4) {
|
|
7159
|
+
if (!f_) return;
|
|
7177
7160
|
let t2 = e4.fire + e4.earth + e4.air + e4.water, n2 = (e5) => t2 > 0 ? Math.round(e5 / t2 * 100) : 0;
|
|
7178
|
-
|
|
7161
|
+
f_.innerHTML = '\n <div class="tally-section">\n <div class="tally-row">\n <span class="tally-item fire" title="Fire">\u{1F525} '.concat(e4.fire, '</span>\n <span class="tally-item earth" title="Earth">\u{1F30D} ').concat(e4.earth, '</span>\n <span class="tally-item air" title="Air">\u{1F4A8} ').concat(e4.air, '</span>\n <span class="tally-item water" title="Water">\u{1F4A7} ').concat(e4.water, '</span>\n </div>\n <div class="tally-bar-row">\n <div class="tally-bar">\n <div class="tally-bar-fill fire" style="width:').concat(n2(e4.fire), '%" title="Fire ').concat(n2(e4.fire), '%"></div>\n <div class="tally-bar-fill earth" style="width:').concat(n2(e4.earth), '%" title="Earth ').concat(n2(e4.earth), '%"></div>\n <div class="tally-bar-fill air" style="width:').concat(n2(e4.air), '%" title="Air ').concat(n2(e4.air), '%"></div>\n <div class="tally-bar-fill water" style="width:').concat(n2(e4.water), '%" title="Water ').concat(n2(e4.water), '%"></div>\n </div>\n </div>\n </div>\n <div class="tally-divider"></div>\n <div class="tally-section">\n <div class="tally-row modality">\n <span class="tally-item cardinal" title="Cardinal">\u27F3 ').concat(e4.cardinal, '</span>\n <span class="tally-item fixed" title="Fixed">\u25A0 ').concat(e4.fixed, '</span>\n <span class="tally-item mutable" title="Mutable">\u224B ').concat(e4.mutable, "</span>\n </div>\n </div>\n "), f_.removeAttribute("hidden");
|
|
7179
7162
|
}
|
|
7180
|
-
var
|
|
7181
|
-
function
|
|
7163
|
+
var T_ = null;
|
|
7164
|
+
function E_(e4) {
|
|
7182
7165
|
if (!$) return;
|
|
7183
7166
|
if (e4.length === 0) {
|
|
7184
7167
|
$.setAttribute("hidden", ""), $.innerHTML = "";
|
|
@@ -7193,10 +7176,10 @@ function T_(e4) {
|
|
|
7193
7176
|
let t3 = document.createElement("button");
|
|
7194
7177
|
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Ask Claude", t3.style.display = "none", $.appendChild(t3), t3.addEventListener("click", () => {
|
|
7195
7178
|
var n2;
|
|
7196
|
-
let r2 =
|
|
7179
|
+
let r2 = T_;
|
|
7197
7180
|
if (r2 === null) return;
|
|
7198
7181
|
let i2 = e4[r2];
|
|
7199
|
-
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026",
|
|
7182
|
+
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", R_({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n2 = i2.description) == null ? "" : n2 } }).then(() => {
|
|
7200
7183
|
t3.textContent = "\u2713 Sent", setTimeout(() => {
|
|
7201
7184
|
t3.textContent = "\u2728 Ask Claude", t3.disabled = false;
|
|
7202
7185
|
}, 2500);
|
|
@@ -7209,112 +7192,118 @@ function T_(e4) {
|
|
|
7209
7192
|
t3.addEventListener("click", () => {
|
|
7210
7193
|
var n2;
|
|
7211
7194
|
let r2 = Number(t3.dataset.idx), i2 = e4[r2], a2 = (n2 = t3.dataset.color) == null ? "#888" : n2, o2 = $.querySelector(".pattern-ask-claude-btn");
|
|
7212
|
-
|
|
7195
|
+
T_ === r2 ? (T_ = null, Ug(), o2 && (o2.style.display = "none"), $.querySelectorAll(".pattern-pill").forEach((e5) => {
|
|
7213
7196
|
var t4;
|
|
7214
7197
|
e5.classList.remove("active");
|
|
7215
7198
|
let n3 = (t4 = e5.dataset.color) == null ? "#888" : t4;
|
|
7216
7199
|
e5.style.color = n3, e5.style.borderColor = n3, e5.style.background = "transparent";
|
|
7217
|
-
})) : (
|
|
7200
|
+
})) : (T_ = r2, $.querySelectorAll(".pattern-pill").forEach((e5) => {
|
|
7218
7201
|
var t4;
|
|
7219
7202
|
e5.classList.remove("active");
|
|
7220
7203
|
let n3 = (t4 = e5.dataset.color) == null ? "#888" : t4;
|
|
7221
7204
|
e5.style.color = n3, e5.style.borderColor = n3, e5.style.background = "transparent";
|
|
7222
|
-
}), t3.classList.add("active"), t3.style.background = a2, t3.style.color = "#fff", t3.style.borderColor = a2,
|
|
7205
|
+
}), t3.classList.add("active"), t3.style.background = a2, t3.style.color = "#fff", t3.style.borderColor = a2, Hg(i2.planets, i2.aspectKeys), o2 && (o2.style.display = "", o2.textContent = "\u2728 Ask Claude", o2.disabled = false));
|
|
7223
7206
|
});
|
|
7224
7207
|
});
|
|
7225
7208
|
}
|
|
7226
|
-
var
|
|
7227
|
-
function
|
|
7228
|
-
if (!
|
|
7229
|
-
let e4 =
|
|
7209
|
+
var D_ = { conjunction: "#9a7fd4", opposition: "#e05252", trine: "#52a8e0", square: "#e08a52", sextile: "#52c07a", quincunx: "#c0b052", semisquare: "#b07a5a" }, O_ = null;
|
|
7210
|
+
function k_() {
|
|
7211
|
+
if (!p_) return;
|
|
7212
|
+
let e4 = Gg();
|
|
7230
7213
|
if (e4.length === 0) {
|
|
7231
|
-
|
|
7214
|
+
p_.setAttribute("hidden", "");
|
|
7232
7215
|
return;
|
|
7233
7216
|
}
|
|
7234
|
-
|
|
7217
|
+
O_ = new Set(e4);
|
|
7235
7218
|
let t2 = (e5) => e5.charAt(0).toUpperCase() + e5.slice(1);
|
|
7236
|
-
|
|
7219
|
+
p_.innerHTML = '\n <span class="patterns-label">Aspects:</span>\n '.concat(e4.map((e5) => {
|
|
7237
7220
|
var n2, r2;
|
|
7238
|
-
let i2 = (n2 =
|
|
7221
|
+
let i2 = (n2 = D_[e5]) == null ? "#888" : n2, a2 = (r2 = sg[e5]) == null ? "" : r2;
|
|
7239
7222
|
return '\n <button class="pattern-pill aspect-type-pill active"\n data-type="'.concat(e5, '"\n data-color="').concat(i2, '"\n style="background:').concat(i2, ";color:#fff;border-color:").concat(i2, '"\n title="Toggle ').concat(t2(e5), ' aspects">\n ').concat(a2, " ").concat(t2(e5), "\n </button>\n ");
|
|
7240
|
-
}).join(""), "\n "),
|
|
7223
|
+
}).join(""), "\n "), p_.removeAttribute("hidden"), p_.querySelectorAll(".aspect-type-pill").forEach((e5) => {
|
|
7241
7224
|
e5.addEventListener("click", () => {
|
|
7242
7225
|
var t3, n2;
|
|
7243
|
-
if (!
|
|
7226
|
+
if (!O_) return;
|
|
7244
7227
|
let r2 = (t3 = e5.dataset.type) == null ? "" : t3, i2 = (n2 = e5.dataset.color) == null ? "#888" : n2;
|
|
7245
|
-
|
|
7228
|
+
O_.has(r2) ? (O_.delete(r2), e5.classList.remove("active"), e5.style.background = "transparent", e5.style.color = i2) : (O_.add(r2), e5.classList.add("active"), e5.style.background = i2, e5.style.color = "#fff"), T_ = null, $ == null || $.querySelectorAll(".pattern-pill").forEach((e6) => {
|
|
7246
7229
|
var t4;
|
|
7247
7230
|
e6.classList.remove("active");
|
|
7248
7231
|
let n3 = (t4 = e6.dataset.color) == null ? "#888" : t4;
|
|
7249
7232
|
e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
|
|
7250
7233
|
});
|
|
7251
7234
|
let a2 = $ == null ? void 0 : $.querySelector(".pattern-ask-claude-btn");
|
|
7252
|
-
a2 && (a2.style.display = "none"),
|
|
7235
|
+
a2 && (a2.style.display = "none"), Wg(O_);
|
|
7253
7236
|
});
|
|
7254
7237
|
});
|
|
7255
7238
|
}
|
|
7256
|
-
async function
|
|
7257
|
-
if (
|
|
7239
|
+
async function A_(e4, t2) {
|
|
7240
|
+
if (y_) try {
|
|
7258
7241
|
let n2 = "[Chart Wheel] User selected ".concat(e4, ": ").concat(JSON.stringify(t2, null, 2));
|
|
7259
|
-
await
|
|
7242
|
+
await h_.updateModelContext({ content: [{ type: "text", text: n2 }] }), console.log("[ChartWheel] \u{1F4CB} Model context updated: ".concat(e4));
|
|
7260
7243
|
} catch (e5) {
|
|
7261
7244
|
console.warn("[ChartWheel] \u26A0\uFE0F updateModelContext failed:", e5);
|
|
7262
7245
|
}
|
|
7263
7246
|
}
|
|
7264
|
-
async function
|
|
7247
|
+
async function j_(e4) {
|
|
7265
7248
|
var t2, n2, r2, i2;
|
|
7266
|
-
|
|
7249
|
+
T_ = null, $ == null || $.querySelectorAll(".pattern-pill").forEach((e5) => {
|
|
7267
7250
|
var t3;
|
|
7268
7251
|
e5.classList.remove("active");
|
|
7269
7252
|
let n3 = (t3 = e5.dataset.color) == null ? "#888" : t3;
|
|
7270
7253
|
e5.style.color = n3, e5.style.borderColor = n3, e5.style.background = "transparent";
|
|
7271
|
-
}), await
|
|
7254
|
+
}), await A_("planet", { planet: e4.name, longitude: e4.longitude, sign: (t2 = e4.sign) == null ? null : t2, house: (n2 = e4.house) == null ? null : n2, retrograde: (r2 = e4.retrograde) == null ? false : r2, speed: (i2 = e4.speed) == null ? null : i2 });
|
|
7272
7255
|
}
|
|
7273
|
-
async function
|
|
7256
|
+
async function M_(e4) {
|
|
7274
7257
|
var t2, n2;
|
|
7275
|
-
await
|
|
7258
|
+
await A_("house", { house_number: e4.number, sign: (t2 = e4.sign) == null ? null : t2, cusp_longitude: e4.cusp_lon, ruler: (n2 = e4.ruler) == null ? null : n2 });
|
|
7276
7259
|
}
|
|
7277
|
-
async function
|
|
7260
|
+
async function N_(e4) {
|
|
7278
7261
|
var t2, n2, r2, i2;
|
|
7279
|
-
await
|
|
7262
|
+
await A_("aspect", { planet1: e4.planet1, planet2: e4.planet2, aspect_type: (t2 = e4.type) == null ? null : t2, orb: (n2 = e4.orb) == null ? null : n2, applying: (r2 = e4.applying) == null ? null : r2, angle: (i2 = e4.angle) == null ? null : i2 });
|
|
7280
7263
|
}
|
|
7281
|
-
function
|
|
7264
|
+
function P_() {
|
|
7282
7265
|
return async (e4) => {
|
|
7283
7266
|
try {
|
|
7284
7267
|
var t2, n2;
|
|
7285
|
-
let r2 = await
|
|
7268
|
+
let r2 = await h_.createSamplingMessage({ messages: [{ role: "user", content: { type: "text", text: "(Astrology Exploration Suite Context)\nYou are interpreting a specific interactive element. Please keep it concise, just 2-3 sentences max.\n\nUser Request: ".concat(e4) } }], systemPrompt: "You are an astrological AI. Give a very concise, focused interpretation.", maxTokens: 300 });
|
|
7286
7269
|
return (t2 = r2 == null || (n2 = r2.content) == null ? void 0 : n2.text) == null ? null : t2;
|
|
7287
7270
|
} catch (e5) {
|
|
7288
7271
|
return console.error("[ChartWheel] Sampling failed:", e5), "Unable to load interpretation right now.";
|
|
7289
7272
|
}
|
|
7290
7273
|
};
|
|
7291
7274
|
}
|
|
7292
|
-
async function
|
|
7275
|
+
async function F_(e4) {
|
|
7293
7276
|
try {
|
|
7294
|
-
(await
|
|
7277
|
+
(await h_.sendMessage({ role: "user", content: [{ type: "text", text: e4 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
|
|
7295
7278
|
} catch (e5) {
|
|
7296
7279
|
console.error("[ChartWheel] sendMessage failed:", e5);
|
|
7297
7280
|
}
|
|
7298
7281
|
}
|
|
7299
|
-
async function
|
|
7282
|
+
async function I_() {
|
|
7300
7283
|
var e4, t2, n2, r2;
|
|
7301
|
-
if (!
|
|
7302
|
-
let i2 =
|
|
7284
|
+
if (!g_) return;
|
|
7285
|
+
let i2 = g_, a2 = (e4 = i2._birth_params) == null ? {} : e4, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = pg(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e5) => {
|
|
7303
7286
|
var t3;
|
|
7304
7287
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e5.type) == null ? "" : t3);
|
|
7305
7288
|
}).slice(0, 8).map((e5) => " \u2022 ".concat(e5.planet1, " ").concat(e5.type, " ").concat(e5.planet2, " (").concat(Number(e5.orb).toFixed(1), "\xB0, ").concat(e5.applying ? "applying" : "separating", ")")).join("\n") || " \u2022 No major aspects found";
|
|
7306
|
-
await
|
|
7289
|
+
await F_("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e5) => {
|
|
7307
7290
|
var t3;
|
|
7308
7291
|
return " \u2022 ".concat(e5.name, " in ").concat((t3 = e5.sign) == null ? "?" : t3).concat(e5.house ? ", House ".concat(e5.house) : "").concat(e5.retrograde ? " \u211E" : "");
|
|
7309
7292
|
}).join("\n"), "\n\nMajor aspects:\n").concat(c2, "\n\nCover: (1) Core identity and soul purpose (Sun, Moon, Ascendant), (2) The chart's dominant element, modality, and overall signature, (3) The most significant aspects and their psychological themes, (4) Key life areas of focus and challenge, (5) A practical synthesis \u2014 who is this person and what is their path?"));
|
|
7310
7293
|
}
|
|
7311
|
-
async function
|
|
7312
|
-
var e4, t2, n2;
|
|
7313
|
-
if (!
|
|
7314
|
-
let
|
|
7315
|
-
await
|
|
7294
|
+
async function L_() {
|
|
7295
|
+
var e4, t2, n2, r2;
|
|
7296
|
+
if (!g_) return;
|
|
7297
|
+
let i2 = g_, a2 = (e4 = i2._birth_params) == null ? {} : e4;
|
|
7298
|
+
await F_("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(pg(i2.planets).slice(0, 4).map((e5) => {
|
|
7299
|
+
var t3;
|
|
7300
|
+
return "".concat(e5.name, " in ").concat((t3 = e5.sign) == null ? "?" : t3).concat(e5.house ? " H".concat(e5.house) : "");
|
|
7301
|
+
}).join(", ") || "unknown placements", ". Major aspects: ").concat(((r2 = i2.aspects) == null ? [] : r2).filter((e5) => {
|
|
7302
|
+
var t3;
|
|
7303
|
+
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e5.type) == null ? "" : t3);
|
|
7304
|
+
}).slice(0, 5).map((e5) => "".concat(e5.planet1, " ").concat(e5.type, " ").concat(e5.planet2, " (").concat(Number(e5.orb).toFixed(1), "\xB0)")).join(", ") || "none detected", ".\n\nBased on this chart, please suggest 3-4 specific, insightful questions I could ask to understand this person more deeply \u2014 such as how particular placements manifest in real life, the most significant aspect dynamics, or how to integrate the chart's core tensions. Present each as a tappable question I can ask you."));
|
|
7316
7305
|
}
|
|
7317
|
-
async function
|
|
7306
|
+
async function R_(e4) {
|
|
7318
7307
|
let t2 = "";
|
|
7319
7308
|
if (e4.type === "planet") {
|
|
7320
7309
|
var n2;
|
|
@@ -7337,21 +7326,21 @@ async function L_(e4) {
|
|
|
7337
7326
|
}
|
|
7338
7327
|
if (t2) try {
|
|
7339
7328
|
console.log("[ChartWheel] \u{1F4AC} Sending interpretation request to Claude...");
|
|
7340
|
-
let e5 = await
|
|
7329
|
+
let e5 = await h_.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
|
|
7341
7330
|
if (e5.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e5), Error("Host rejected message");
|
|
7342
7331
|
console.log("[ChartWheel] \u2705 Message sent to chat thread");
|
|
7343
7332
|
} catch (e5) {
|
|
7344
7333
|
throw console.error("[ChartWheel] \u274C sendMessage failed:", e5), e5;
|
|
7345
7334
|
}
|
|
7346
7335
|
}
|
|
7347
|
-
async function
|
|
7348
|
-
if (!(
|
|
7349
|
-
|
|
7336
|
+
async function z_(e4) {
|
|
7337
|
+
if (!(g_ != null && g_._birth_params)) {
|
|
7338
|
+
Xg(d_, __);
|
|
7350
7339
|
return;
|
|
7351
7340
|
}
|
|
7352
7341
|
try {
|
|
7353
7342
|
var t2, n2, r2, i2, a2;
|
|
7354
|
-
let o2 = await
|
|
7343
|
+
let o2 = await h_.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: g_._birth_params.datetime, timezone: (t2 = g_._birth_params.timezone) == null ? void 0 : t2, latitude: (n2 = g_._birth_params.latitude) == null ? void 0 : n2, longitude: (r2 = g_._birth_params.longitude) == null ? void 0 : r2, location: (i2 = g_._birth_params.location) == null ? void 0 : i2, house_system: e4 } }), s2 = null;
|
|
7355
7344
|
for (let e5 of (a2 = o2.content) == null ? [] : a2) if (e5.type === "text" && e5.text) try {
|
|
7356
7345
|
let t3 = JSON.parse(e5.text);
|
|
7357
7346
|
if (t3 && typeof t3 == "object") {
|
|
@@ -7360,21 +7349,21 @@ async function R_(e4) {
|
|
|
7360
7349
|
}
|
|
7361
7350
|
} catch (e6) {
|
|
7362
7351
|
}
|
|
7363
|
-
s2 ? (
|
|
7352
|
+
s2 ? (g_ = s2, __ = e4, S_(s2)) : Xg(d_, __);
|
|
7364
7353
|
} catch (e5) {
|
|
7365
|
-
console.error("[Chart] Recalculate failed:", e5),
|
|
7354
|
+
console.error("[Chart] Recalculate failed:", e5), Xg(d_, __);
|
|
7366
7355
|
}
|
|
7367
7356
|
}
|
|
7368
|
-
function
|
|
7369
|
-
|
|
7357
|
+
function B_(e4) {
|
|
7358
|
+
s_.setAttribute("hidden", ""), c_.innerHTML = '\n <div class="error-state">\n <div class="error-icon">\u26A0\uFE0F</div>\n <p>'.concat(e4, "</p>\n </div>\n "), c_.removeAttribute("hidden");
|
|
7370
7359
|
}
|
|
7371
7360
|
console.log("[ChartWheel] \u{1F50C} Calling app.connect()..."), (async () => {
|
|
7372
7361
|
try {
|
|
7373
|
-
await
|
|
7374
|
-
let e4 =
|
|
7375
|
-
|
|
7362
|
+
await h_.connect(), console.log("[ChartWheel] \u2705 app.connect() completed \u2014 handshake OK");
|
|
7363
|
+
let e4 = h_.getHostCapabilities();
|
|
7364
|
+
y_ = !!(e4 != null && e4.modelContext), b_ = !!(e4 != null && e4.sampling), console.log("[ChartWheel] \u{1F50D} Host capabilities:", { modelContext: y_, serverTools: !!(e4 != null && e4.serverTools), sampling: b_ }), g_ && (console.log("[ChartWheel] \u{1F504} Re-rendering with interpretation mode enabled"), S_(g_));
|
|
7376
7365
|
} catch (e4) {
|
|
7377
|
-
console.error("[ChartWheel] \u274C app.connect() FAILED:", e4),
|
|
7366
|
+
console.error("[ChartWheel] \u274C app.connect() FAILED:", e4), B_("Connection failed: ".concat(e4 instanceof Error ? e4.message : String(e4)));
|
|
7378
7367
|
}
|
|
7379
7368
|
})();
|
|
7380
7369
|
</script>
|