@roxyapi/ui 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/components/biorhythm-chart.js +1 -1
- package/dist/cdn/components/biorhythm-chart.js.map +2 -2
- package/dist/cdn/components/dasha-timeline.js +3 -3
- package/dist/cdn/components/dasha-timeline.js.map +4 -4
- package/dist/cdn/components/divisional-chart.js +67 -1
- package/dist/cdn/components/divisional-chart.js.map +2 -2
- package/dist/cdn/components/natal-chart.js +10 -1
- package/dist/cdn/components/natal-chart.js.map +2 -2
- package/dist/cdn/components/synastry-chart.js +7 -1
- package/dist/cdn/components/synastry-chart.js.map +2 -2
- package/dist/cdn/components/vedic-kundli.js +67 -1
- package/dist/cdn/components/vedic-kundli.js.map +2 -2
- package/dist/cdn/roxy-ui.js +84 -3
- package/dist/cdn/roxy-ui.js.map +4 -4
- package/dist/components/biorhythm-chart.js +1 -1
- package/dist/components/biorhythm-chart.js.map +2 -2
- package/dist/components/dasha-timeline.d.ts.map +1 -1
- package/dist/components/dasha-timeline.js +1 -1
- package/dist/components/dasha-timeline.js.map +4 -4
- package/dist/components/divisional-chart.js +67 -1
- package/dist/components/divisional-chart.js.map +2 -2
- package/dist/components/natal-chart.js +10 -1
- package/dist/components/natal-chart.js.map +2 -2
- package/dist/components/synastry-chart.js +7 -1
- package/dist/components/synastry-chart.js.map +2 -2
- package/dist/components/vedic-kundli.js +67 -1
- package/dist/components/vedic-kundli.js.map +2 -2
- package/dist/index.cjs +82 -1
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +82 -1
- package/dist/index.js.map +4 -4
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/dasha-timeline.ts +7 -16
- package/src/version.ts +1 -1
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use strict";var RoxyUI_natal_chart=(()=>{var K=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ee=Object.prototype.hasOwnProperty;var re=(i,t)=>{for(var e in t)K(i,e,{get:t[e],enumerable:!0})},se=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of te(t))!ee.call(i,s)&&s!==e&&K(i,s,{get:()=>t[s],enumerable:!(r=wt(t,s))||r.enumerable});return i};var ne=i=>se(K({},"__esModule",{value:!0}),i),U=(i,t,e,r)=>{for(var s=r>1?void 0:r?wt(t,e):t,o=i.length-1,n;o>=0;o--)(n=i[o])&&(s=(r?n(t,e,s):n(s))||s);return r&&s&&K(t,e,s),s};var Se={};re(Se,{RoxyNatalChart:()=>S});var Y=globalThis,J=Y.ShadowRoot&&(Y.ShadyCSS===void 0||Y.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,st=Symbol(),Et=new WeakMap,z=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==st)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o,e=this.t;if(J&&t===void 0){let r=e!==void 0&&e.length===1;r&&(t=Et.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&Et.set(e,t))}return t}toString(){return this.cssText}},Pt=i=>new z(typeof i=="string"?i:i+"",void 0,st),A=(i,...t)=>{let e=i.length===1?i[0]:t.reduce((r,s,o)=>r+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+i[o+1],i[0]);return new z(e,i,st)},kt=(i,t)=>{if(J)i.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of t){let r=document.createElement("style"),s=Y.litNonce;s!==void 0&&r.setAttribute("nonce",s),r.textContent=e.cssText,i.appendChild(r)}},nt=J?i=>i:i=>i instanceof CSSStyleSheet?(t=>{let e="";for(let r of t.cssRules)e+=r.cssText;return Pt(e)})(i):i;var{is:oe,defineProperty:ie,getOwnPropertyDescriptor:ae,getOwnPropertyNames:le,getOwnPropertySymbols:ce,getPrototypeOf:de}=Object,Z=globalThis,Ct=Z.trustedTypes,pe=Ct?Ct.emptyScript:"",he=Z.reactiveElementPolyfillSupport,I=(i,t)=>i,D={toAttribute(i,t){switch(t){case Boolean:i=i?pe:null;break;case Object:case Array:i=i==null?i:JSON.stringify(i)}return i},fromAttribute(i,t){let e=i;switch(t){case Boolean:e=i!==null;break;case Number:e=i===null?null:Number(i);break;case Object:case Array:try{e=JSON.parse(i)}catch{e=null}}return e}},X=(i,t)=>!oe(i,t),Tt={attribute:!0,type:String,converter:D,reflect:!1,useDefault:!1,hasChanged:X};Symbol.metadata??=Symbol("metadata"),Z.litPropertyMetadata??=new WeakMap;var _=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=Tt){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(t,e),!e.noAccessor){let r=Symbol(),s=this.getPropertyDescriptor(t,r,e);s!==void 0&&ie(this.prototype,t,s)}}static getPropertyDescriptor(t,e,r){let{get:s,set:o}=ae(this.prototype,t)??{get(){return this[e]},set(n){this[e]=n}};return{get:s,set(n){let a=s?.call(this);o?.call(this,n),this.requestUpdate(t,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??Tt}static _$Ei(){if(this.hasOwnProperty(I("elementProperties")))return;let t=de(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(I("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(I("properties"))){let e=this.properties,r=[...le(e),...ce(e)];for(let s of r)this.createProperty(s,e[s])}let t=this[Symbol.metadata];if(t!==null){let e=litPropertyMetadata.get(t);if(e!==void 0)for(let[r,s]of e)this.elementProperties.set(r,s)}this._$Eh=new Map;for(let[e,r]of this.elementProperties){let s=this._$Eu(e,r);s!==void 0&&this._$Eh.set(s,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){let e=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let s of r)e.unshift(nt(s))}else t!==void 0&&e.push(nt(t));return e}static _$Eu(t,e){let r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),this.renderRoot!==void 0&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){let t=new Map,e=this.constructor.elementProperties;for(let r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){let t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return kt(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$ET(t,e){let r=this.constructor.elementProperties.get(t),s=this.constructor._$Eu(t,r);if(s!==void 0&&r.reflect===!0){let o=(r.converter?.toAttribute!==void 0?r.converter:D).toAttribute(e,r.type);this._$Em=t,o==null?this.removeAttribute(s):this.setAttribute(s,o),this._$Em=null}}_$AK(t,e){let r=this.constructor,s=r._$Eh.get(t);if(s!==void 0&&this._$Em!==s){let o=r.getPropertyOptions(s),n=typeof o.converter=="function"?{fromAttribute:o.converter}:o.converter?.fromAttribute!==void 0?o.converter:D;this._$Em=s;let a=n.fromAttribute(e,o.type);this[s]=a??this._$Ej?.get(s)??a,this._$Em=null}}requestUpdate(t,e,r,s=!1,o){if(t!==void 0){let n=this.constructor;if(s===!1&&(o=this[t]),r??=n.getPropertyOptions(t),!((r.hasChanged??X)(o,e)||r.useDefault&&r.reflect&&o===this._$Ej?.get(t)&&!this.hasAttribute(n._$Eu(t,r))))return;this.C(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(t,e,{useDefault:r,reflect:s,wrapped:o},n){r&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,n??e??this[t]),o!==!0||n!==void 0)||(this._$AL.has(t)||(this.hasUpdated||r||(e=void 0),this._$AL.set(t,e)),s===!0&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[s,o]of this._$Ep)this[s]=o;this._$Ep=void 0}let r=this.constructor.elementProperties;if(r.size>0)for(let[s,o]of r){let{wrapped:n}=o,a=this[s];n!==!0||this._$AL.has(s)||a===void 0||this.C(s,void 0,o,a)}}let t=!1,e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach(r=>r.hostUpdate?.()),this.update(e)):this._$EM()}catch(r){throw t=!1,this._$EM(),r}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(t){}firstUpdated(t){}};_.elementStyles=[],_.shadowRootOptions={mode:"open"},_[I("elementProperties")]=new Map,_[I("finalized")]=new Map,he?.({ReactiveElement:_}),(Z.reactiveElementVersions??=[]).push("2.1.2");var pt=globalThis,Mt=i=>i,Q=pt.trustedTypes,Rt=Q?Q.createPolicy("lit-html",{createHTML:i=>i}):void 0,zt="$lit$",w=`lit$${Math.random().toFixed(9).slice(2)}$`,It="?"+w,ue=`<${It}>`,C=document,q=()=>C.createComment(""),B=i=>i===null||typeof i!="object"&&typeof i!="function",ht=Array.isArray,me=i=>ht(i)||typeof i?.[Symbol.iterator]=="function",ot=`[
|
|
2
2
|
\f\r]`,j=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Lt=/-->/g,Nt=/>/g,P=RegExp(`>|${ot}(?:([^\\s"'>=/]+)(${ot}*=${ot}*(?:[^
|
|
3
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),Ot=/'/g,Ht=/"/g,Dt=/^(?:script|style|textarea|title)$/i,ut=i=>(t,...e)=>({_$litType$:i,strings:t,values:e}),u=ut(1),x=ut(2),Te=ut(3),T=Symbol.for("lit-noChange"),h=Symbol.for("lit-nothing"),Ut=new WeakMap,k=C.createTreeWalker(C,129);function jt(i,t){if(!ht(i)||!i.hasOwnProperty("raw"))throw Error("invalid template strings array");return Rt!==void 0?Rt.createHTML(t):t}var ge=(i,t)=>{let e=i.length-1,r=[],s,o=t===2?"<svg>":t===3?"<math>":"",n=j;for(let a=0;a<e;a++){let l=i[a],p,m,d=-1,g=0;for(;g<l.length&&(n.lastIndex=g,m=n.exec(l),m!==null);)g=n.lastIndex,n===j?m[1]==="!--"?n=Lt:m[1]!==void 0?n=Nt:m[2]!==void 0?(Dt.test(m[2])&&(s=RegExp("</"+m[2],"g")),n=P):m[3]!==void 0&&(n=P):n===P?m[0]===">"?(n=s??j,d=-1):m[1]===void 0?d=-2:(d=n.lastIndex-m[2].length,p=m[1],n=m[3]===void 0?P:m[3]==='"'?Ht:Ot):n===Ht||n===Ot?n=P:n===Lt||n===Nt?n=j:(n=P,s=void 0);let f=n===P&&i[a+1].startsWith("/>")?" ":"";o+=n===j?l+ue:d>=0?(r.push(p),l.slice(0,d)+zt+l.slice(d)+w+f):l+w+(d===-2?a:f)}return[jt(i,o+(i[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),r]},G=class i{constructor({strings:t,_$litType$:e},r){let s;this.parts=[];let o=0,n=0,a=t.length-1,l=this.parts,[p,m]=ge(t,e);if(this.el=i.createElement(p,r),k.currentNode=this.el.content,e===2||e===3){let d=this.el.content.firstChild;d.replaceWith(...d.childNodes)}for(;(s=k.nextNode())!==null&&l.length<a;){if(s.nodeType===1){if(s.hasAttributes())for(let d of s.getAttributeNames())if(d.endsWith(zt)){let g=m[n++],f=s.getAttribute(d).split(w),b=/([.?@])?(.*)/.exec(g);l.push({type:1,index:o,name:b[2],strings:f,ctor:b[1]==="."?at:b[1]==="?"?lt:b[1]==="@"?ct:L}),s.removeAttribute(d)}else d.startsWith(w)&&(l.push({type:6,index:o}),s.removeAttribute(d));if(Dt.test(s.tagName)){let d=s.textContent.split(w),g=d.length-1;if(g>0){s.textContent=Q?Q.emptyScript:"";for(let f=0;f<g;f++)s.append(d[f],q()),k.nextNode(),l.push({type:2,index:++o});s.append(d[g],q())}}}else if(s.nodeType===8)if(s.data===It)l.push({type:2,index:o});else{let d=-1;for(;(d=s.data.indexOf(w,d+1))!==-1;)l.push({type:7,index:o}),d+=w.length-1}o++}}static createElement(t,e){let r=C.createElement("template");return r.innerHTML=t,r}};function R(i,t,e=i,r){if(t===T)return t;let s=r!==void 0?e._$Co?.[r]:e._$Cl,o=B(t)?void 0:t._$litDirective$;return s?.constructor!==o&&(s?._$AO?.(!1),o===void 0?s=void 0:(s=new o(i),s._$AT(i,e,r)),r!==void 0?(e._$Co??=[])[r]=s:e._$Cl=s),s!==void 0&&(t=R(i,s._$AS(i,t.values),s,r)),t}var it=class{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){let{el:{content:e},parts:r}=this._$AD,s=(t?.creationScope??C).importNode(e,!0);k.currentNode=s;let o=k.nextNode(),n=0,a=0,l=r[0];for(;l!==void 0;){if(n===l.index){let p;l.type===2?p=new V(o,o.nextSibling,this,t):l.type===1?p=new l.ctor(o,l.name,l.strings,this,t):l.type===6&&(p=new dt(o,this,t)),this._$AV.push(p),l=r[++a]}n!==l?.index&&(o=k.nextNode(),n++)}return k.currentNode=C,s}p(t){let e=0;for(let r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}},V=class i{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,e,r,s){this.type=2,this._$AH=h,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=s,this._$Cv=s?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode,e=this._$AM;return e!==void 0&&t?.nodeType===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=R(this,t,e),B(t)?t===h||t==null||t===""?(this._$AH!==h&&this._$AR(),this._$AH=h):t!==this._$AH&&t!==T&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):me(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==h&&B(this._$AH)?this._$AA.nextSibling.data=t:this.T(C.createTextNode(t)),this._$AH=t}$(t){let{values:e,_$litType$:r}=t,s=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=G.createElement(jt(r.h,r.h[0]),this.options)),r);if(this._$AH?._$AD===s)this._$AH.p(e);else{let o=new it(s,this),n=o.u(this.options);o.p(e),this.T(n),this._$AH=o}}_$AC(t){let e=Ut.get(t.strings);return e===void 0&&Ut.set(t.strings,e=new G(t)),e}k(t){ht(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,r,s=0;for(let o of t)s===e.length?e.push(r=new i(this.O(q()),this.O(q()),this,this.options)):r=e[s],r._$AI(o),s++;s<e.length&&(this._$AR(r&&r._$AB.nextSibling,s),e.length=s)}_$AR(t=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);t!==this._$AB;){let r=Mt(t).nextSibling;Mt(t).remove(),t=r}}setConnected(t){this._$AM===void 0&&(this._$Cv=t,this._$AP?.(t))}},L=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,r,s,o){this.type=1,this._$AH=h,this._$AN=void 0,this.element=t,this.name=e,this._$AM=s,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=h}_$AI(t,e=this,r,s){let o=this.strings,n=!1;if(o===void 0)t=R(this,t,e,0),n=!B(t)||t!==this._$AH&&t!==T,n&&(this._$AH=t);else{let a=t,l,p;for(t=o[0],l=0;l<o.length-1;l++)p=R(this,a[r+l],e,l),p===T&&(p=this._$AH[l]),n||=!B(p)||p!==this._$AH[l],p===h?t=h:t!==h&&(t+=(p??"")+o[l+1]),this._$AH[l]=p}n&&!s&&this.j(t)}j(t){t===h?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}},at=class extends L{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===h?void 0:t}},lt=class extends L{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==h)}},ct=class extends L{constructor(t,e,r,s,o){super(t,e,r,s,o),this.type=5}_$AI(t,e=this){if((t=R(this,t,e,0)??h)===T)return;let r=this._$AH,s=t===h&&r!==h||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,o=t!==h&&(r===h||s);s&&this.element.removeEventListener(this.name,this,r),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}},dt=class{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){R(this,t)}};var ye=pt.litHtmlPolyfillSupport;ye?.(G,V),(pt.litHtmlVersions??=[]).push("3.3.2");var qt=(i,t,e)=>{let r=e?.renderBefore??t,s=r._$litPart$;if(s===void 0){let o=e?.renderBefore??null;r._$litPart$=s=new V(t.insertBefore(q(),o),o,void 0,e??{})}return s._$AI(i),s};var mt=globalThis,E=class extends _{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=qt(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return T}};E._$litElement$=!0,E.finalized=!0,mt.litElementHydrateSupport?.({LitElement:E});var fe=mt.litElementPolyfillSupport;fe?.({LitElement:E});(mt.litElementVersions??=[]).push("4.2.2");var Bt=i=>(t,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(i,t)}):customElements.define(i,t)};var xe={attribute:!0,type:String,converter:D,reflect:!1,hasChanged:X},$e=(i=xe,t,e)=>{let{kind:r,metadata:s}=e,o=globalThis.litPropertyMetadata.get(s);if(o===void 0&&globalThis.litPropertyMetadata.set(s,o=new Map),r==="setter"&&((i=Object.create(i)).wrapped=!0),o.set(e.name,i),r==="accessor"){let{name:n}=e;return{set(a){let l=t.get.call(this);t.set.call(this,a),this.requestUpdate(n,l,i,!0,a)},init(a){return a!==void 0&&this.C(n,void 0,i,a),a}}}if(r==="setter"){let{name:n}=e;return function(a){let l=this[n];t.call(this,a),this.requestUpdate(n,l,i,!0,a)}}throw Error("Unsupported decorator location: "+r)};function F(i){return(t,e)=>typeof e=="object"?$e(i,t,e):((r,s,o)=>{let n=s.hasOwnProperty(o);return s.constructor.createProperty(o,r),n?Object.getOwnPropertyDescriptor(s,o):void 0})(i,t,e)}function Gt(i){return F({...i,state:!0,attribute:!1})}var M={Sun:"\u2609",Moon:"\u263D",Mercury:"\u263F",Venus:"\u2640",Earth:"\u2641",Mars:"\u2642",Jupiter:"\u2643",Saturn:"\u2644",Uranus:"\u2645",Neptune:"\u2646",Pluto:"\u2647",Rahu:"\u260A",Ketu:"\u260B",Ascendant:"Asc",Lagna:"La",NorthNode:"\u260A",SouthNode:"\u260B","North node":"\u260A","South node":"\u260B",Chiron:"\u26B7",Lilith:"\u26B8","Black moon lilith":"\u26B8"};var Vt={Aries:"\u2648",Taurus:"\u2649",Gemini:"\u264A",Cancer:"\u264B",Leo:"\u264C",Virgo:"\u264D",Libra:"\u264E",Scorpio:"\u264F",Sagittarius:"\u2650",Capricorn:"\u2651",Aquarius:"\u2652",Pisces:"\u2653"};var N=["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"],yr=N.map(i=>i.toLowerCase()),gt={conjunction:"\u260C",opposition:"\u260D",trine:"\u25B3",square:"\u25A1",sextile:"\u2731",quincunx:"\u22BB",semisextile:"\u22BC"};var Ft=A`:host{font-family:var(--roxy-font-sans,system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);color:var(--roxy-fg,#0a0a0a);font-size:var(--roxy-text-base,1rem);line-height:var(--roxy-leading-normal,1.5);animation:roxy-fade-in var(--roxy-motion-duration,.2s) var(--roxy-motion-easing,cubic-bezier(.4, 0, .2, 1)) both;background:0 0;display:block;container-type:inline-size}*,:before,:after{box-sizing:border-box}@keyframes roxy-fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){:host{animation:none}}.roxy-skeleton{background:linear-gradient(90deg, var(--roxy-border,#e4e4e7) 0%, color-mix(in srgb, var(--roxy-border,#e4e4e7) 60%, transparent) 50%, var(--roxy-border,#e4e4e7) 100%);border-radius:var(--roxy-radius-md,8px);background-size:200% 100%;animation:1.4s ease-in-out infinite roxy-shimmer}@keyframes roxy-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.roxy-skeleton{animation:none}}.roxy-empty{padding:var(--roxy-space-lg,1.5rem);color:var(--roxy-muted,#71717a);text-align:center;font-size:var(--roxy-text-sm,.875rem)}:host(:focus-within) .roxy-card{outline:2px solid var(--roxy-ring,#f59e0b66);outline-offset:2px}:host{font-variant-emoji:text}`;function v(i){let t=i%360;return t<0?t+360:t}function yt(i){let t=v(i),e=Math.floor(t/30)%12,r=t%30,s=Math.floor(r),o=(r-s)*60,n=Math.floor(o),a=Math.round((o-n)*60);return{sign:N[e]??"Aries",signIndex:e,degree:s,minute:n,second:a}}function ft(i){return v(i+180)}function Wt(i,t){let e=v(i),r=v(t)-e;return r<0&&(r+=360),v(e+r/2)}function y(i,t,e,r){let s=r*Math.PI/180;return{x:i+e*Math.cos(s),y:t+e*Math.sin(s)}}function Kt(){return u`<svg class="roxy-chevron" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M4 6l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>`}var Yt=A`summary{list-style:none}summary::-webkit-details-marker{display:none}.roxy-chevron{aspect-ratio:auto;width:14px;height:14px;color:var(--roxy-muted,#71717a);transition:transform var(--roxy-motion-duration,.2s) var(--roxy-motion-easing,ease);flex-shrink:0}details[open]>summary .roxy-chevron{transform:rotate(180deg)}@media (prefers-reduced-motion:reduce){.roxy-chevron{transition:none}}`;function et(i,t=1){return typeof i!="number"||!Number.isFinite(i)?"":i.toFixed(t).replace(/\.?0+$/,"")}var xt={conjunction:"aspect-conjunction",sextile:"aspect-sextile",square:"aspect-square",trine:"aspect-trine",opposition:"aspect-opposition"};function $t(i){return(i.type??"").toLowerCase().replace(/_/g,"-")}var be="roxy-data";function ve(i){return i.nodeName==="SCRIPT"&&i.getAttribute("type")==="application/json"}var rt=class{constructor(t){this.host=t,t.addController(this)}hostConnected(){if(this.host.data!=null)return;let t=this.read();t!==void 0&&(this.host.data=t,this.host.requestUpdate())}read(){let t=this.findInlineScript();return t?this.parse(t.textContent):void 0}findInlineScript(){for(let t of Array.from(this.host.children))if(ve(t)&&t.classList.contains(be))return t;return null}parse(t){if(t?.trim())try{return JSON.parse(t)}catch{return}}};function $(i){return i?i.charAt(0).toUpperCase()+i.slice(1).toLowerCase():""}var Jt=A`.roxy-tablist{border-bottom:2px solid var(--roxy-border,#e4e4e7);gap:2px;display:flex}.roxy-tab{padding:var(--roxy-space-xs,.25rem) var(--roxy-space-md,1rem);font-size:var(--roxy-text-sm,.875rem);cursor:pointer;color:var(--roxy-muted,#71717a);transition:color var(--roxy-motion-duration,.2s) var(--roxy-motion-easing,ease);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;font-family:inherit}.roxy-tab[aria-selected=true]{color:var(--roxy-accent-fg,#b45309);border-bottom-color:var(--roxy-accent,#f59e0b);font-weight:var(--roxy-weight-bold,600)}.roxy-tab:hover:not([aria-selected=true]){color:var(--roxy-fg,#0a0a0a)}.roxy-tab:focus-visible{outline:2px solid var(--roxy-ring,#f59e0b66);outline-offset:2px;border-radius:4px}`;function Zt(i){let{items:t,active:e,onSelect:r,label:s,idPrefix:o,controls:n=!1}=i;return u`<div class="roxy-tablist" role="tablist" aria-label="${s}" @keydown="${l=>{if(l.key!=="ArrowRight"&&l.key!=="ArrowLeft")return;l.preventDefault();let p=t.findIndex(f=>f.id===e);if(p===-1)return;let m=l.key==="ArrowRight"?1:-1,d=t[(p+m+t.length)%t.length];if(!d)return;r(d.id);let g=l.currentTarget.getRootNode();requestAnimationFrame(()=>{g.querySelector(`#${o}-tab-${d.id}`)?.focus()})}}">${t.map(l=>u`<button type="button" class="roxy-tab" role="tab" id="${o}-tab-${l.id}" aria-selected="${e===l.id?"true":"false"}" aria-controls="${n&&e===l.id?`${o}-panel-${l.id}`:h}" tabindex="${e===l.id?"0":"-1"}" @click="${()=>r(l.id)}">${l.label}</button>`)}</div>`}var vt=420,c=vt/2,O=164,bt=146,W=120,H=96,Ae=178,_e=196,S=class extends E{constructor(){super();this.data=null;this.houseSystem="placidus";this.view="wheel";new rt(this)}getPlanets(){return this.data?.planets??[]}getAscendant(){return this.data?.ascendant?.longitude??0}getMidheaven(){let e=this.data?.midheaven?.longitude;return typeof e=="number"?e:null}toAngle(e){return 180+this.getAscendant()-e}render(){if(!this.data)return u`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.getPlanets(),r=this.data.aspects??[],s=this.view;return u`<div class="wrap"><header><h2 class="title">Natal chart</h2>${this.data.birthDetails?u`<div class="meta">${[this.data.birthDetails.date,this.data.birthDetails.time].filter(Boolean).join(" \xB7 ")}</div>`:h}</header>${Zt({items:[{id:"wheel",label:"Wheel"},{id:"grid",label:"Aspect grid"}],active:s,onSelect:o=>{this.view=o},label:"Natal chart views",idPrefix:"natal",controls:!0})}<div id="natal-panel-${s}" role="tabpanel" aria-labelledby="natal-tab-${s}">${s==="wheel"?this.renderWheel(e,r):this.renderAspectGrid(e,r)}</div><div class="legend"><span>${e.length} planets</span> <span>${r.length} aspects</span> ${this.data.houseSystem?u`<span>${this.data.houseSystem} houses</span>`:h} <span><span class="legend-swatch" style="background:var(--roxy-success)"></span>harmonious</span> <span><span class="legend-swatch" style="background:var(--roxy-danger)"></span>challenging</span></div>${this.renderDetails()} ${this.renderInterpretations()}</div>`}renderWheel(e,r){return u`<svg viewBox="0 0 ${vt} ${vt}" role="img" aria-label="Natal chart wheel with twelve houses, planets, and aspects"><title>Natal chart wheel</title><desc>Twelve zodiac sign segments around a circular wheel. Planet glyphs are placed at their ecliptic longitudes. Aspect lines connect related planets.</desc><circle class="wheel-line" cx="${c}" cy="${c}" r="${O}" stroke-width="1.5"/><circle class="wheel-line" cx="${c}" cy="${c}" r="${bt-14}" stroke-width="0.8"/><circle class="wheel-line" cx="${c}" cy="${c}" r="${W}" stroke-width="1"/><circle class="wheel-line" cx="${c}" cy="${c}" r="${H-16}" stroke-width="0.5"/>${this.renderTicks()} ${this.renderSpokes()} ${this.renderSigns()} ${this.renderHouseNumbers()} ${this.renderCuspDegrees()} ${this.renderAspects(e,r)} ${this.renderPlanets(e)} ${this.renderAngles()}</svg>`}renderAspectGrid(e,r){let s=e.map(n=>$(n.name)),o=new Map;for(let n of r){let a=[$(n.planet1),$(n.planet2)].sort().join("|");o.set(a,n)}return s.length===0?u`<p class="roxy-empty" role="status">No planets to grid</p>`:u`<div class="grid-scroll"><table class="aspect-grid" aria-label="Planet by planet aspect grid"><thead><tr><th></th>${s.slice(0,-1).map(n=>{let a=M[n]??n.slice(0,2);return u`<th scope="col" title="${n}">${a}</th>`})}</tr></thead><tbody>${s.slice(1).map((n,a)=>{let l=M[n]??n.slice(0,2);return u`<tr><th scope="row" title="${n}">${l}</th>${s.slice(0,a+1).map(p=>{let m=o.get([n,p].sort().join("|"));if(!m)return u`<td class="empty"></td>`;let d=$t(m),g=gt[d]??gt[d.replace(/-/g,"")]??d.slice(0,3),f=xt[d]??"aspect-other",b=et(m.orb,1);return u`<td class="${`cell ${f}`}" title="${`${n} ${d} ${p}${b?` (orb ${b}\xB0)`:""}`}"><span class="asp">${g}</span></td>`})} ${s.slice(a+1,-1).map(()=>u`<td class="empty"></td>`)}</tr>`})}</tbody></table></div>`}renderAngles(){let e=this.getAscendant(),r=this.getMidheaven(),s=[this.renderAngleMark(e,"ASC"),this.renderAngleMark(ft(e),"DSC")];r!==null&&(s.push(this.renderAngleMark(r,"MC")),s.push(this.renderAngleMark(ft(r),"IC")));let o=this.data?.partOfFortune?.longitude;typeof o=="number"&&s.push(this.renderAngleMark(v(o),"PoF"));let n=this.data?.vertex?.longitude;return typeof n=="number"&&s.push(this.renderAngleMark(v(n),"Vtx")),s}renderAngleMark(e,r){let s=this.toAngle(e),o=y(c,c,O,s),n=y(c,c,Ae,s),a=y(c,c,_e,s);return x`<g><line class="angle-tick" x1="${o.x}" y1="${o.y}" x2="${n.x}" y2="${n.y}"><text class="angle-marker" x="${a.x}" y="${a.y}" text-anchor="middle" dominant-baseline="central">${r}</text></g>`}renderSpokes(){let e=this.data?.houses??[];return(e.length===12?e.map(s=>s.longitude):Array.from({length:12},(s,o)=>this.getAscendant()+o*30)).map(s=>{let o=this.toAngle(s),n=y(c,c,W,o),a=y(c,c,O,o);return x`<line class="wheel-line" x1="${n.x}" y1="${n.y}" x2="${a.x}" y2="${a.y}" stroke-width="0.8">`})}renderSigns(){return N.map((e,r)=>{let s=this.toAngle(r*30+15),o=y(c,c,bt,s);return x`<text class="sign-glyph" x="${o.x}" y="${o.y}" text-anchor="middle" dominant-baseline="central">${Vt[e]}</text>`})}renderHouseNumbers(){let e=this.data?.houses??[];if(e.length===12)return e.map((s,o)=>{let n=e[(o+1)%12],a=Wt(s.longitude,n?n.longitude:s.longitude+30),l=y(c,c,W-12,this.toAngle(a));return x`<text class="house-num" x="${l.x}" y="${l.y}" text-anchor="middle" dominant-baseline="central">${s.number}</text>`});let r=Math.floor(this.getAscendant()/30);return Array.from({length:12},(s,o)=>{let n=this.toAngle(o*30+15),a=y(c,c,W-12,n),l=(o-r+12)%12+1;return x`<text class="house-num" x="${a.x}" y="${a.y}" text-anchor="middle" dominant-baseline="central">${l}</text>`})}renderTicks(){let e=[];for(let r=0;r<360;r+=5){let s=this.toAngle(r),o=r%30===0,n=o?bt-14:O-5,a=y(c,c,n,s),l=y(c,c,O,s);e.push(x`<line class="${o?"tick tick-major":"tick"}" x1="${a.x}" y1="${a.y}" x2="${l.x}" y2="${l.y}" stroke-width="${o?1:.5}">`)}return e}renderCuspDegrees(){let e=this.data?.houses??[];return e.length!==12?h:e.map(r=>{let s=this.toAngle(r.longitude),o=y(c,c,W+9,s),n=yt(r.longitude);return x`<text class="cusp-deg" x="${o.x}" y="${o.y}" text-anchor="middle" dominant-baseline="central">${n.degree}°${String(n.minute).padStart(2,"0")}'</text>`})}renderPlanets(e){let s=e.filter(n=>Number.isFinite(n.longitude)).map(n=>({p:n,trueLon:v(n.longitude),displayLon:v(n.longitude)})).sort((n,a)=>n.trueLon-a.trueLon);for(let n=1;n<s.length;n++){let a=s[n-1],l=s[n];if(!a||!l)continue;let p=a.displayLon+7;l.displayLon<p&&(l.displayLon=p)}let o=s[s.length-1];if(o&&o.displayLon>360){let n=o.displayLon-360;for(let a of s)a.displayLon-=n}return s.map(({p:n,trueLon:a,displayLon:l})=>{let p=this.toAngle(a),m=this.toAngle(l),d=y(c,c,H,m),g=y(c,c,H-13,m),f=y(c,c,O-4,p),b=y(c,c,H+8,m),Xt=M[$(n.name)]??n.name.slice(0,2),At=yt(n.longitude),_t=n.isRetrograde===!0,St=`${At.degree}\xB0${String(At.minute).padStart(2,"0")}'`,Qt=Math.abs(l-a)>.5;return x`<g>${Qt?x`<line class="planet-leader" x1="${f.x}" y1="${f.y}" x2="${b.x}" y2="${b.y}">`:h}<text class="planet-glyph" x="${d.x}" y="${d.y}" text-anchor="middle" dominant-baseline="central"><title>${n.name}${_t?" retrograde":""} - ${St} ${n.sign??""}</title>${Xt}</text><text class="planet-deg" x="${g.x}" y="${g.y}" text-anchor="middle" dominant-baseline="central">${St}${_t?x`<tspan class="retro">℞</tspan>`:h}</text></g>`})}renderDetails(){let e=this.data?.summary,r=this.data?.aspectsInterpretation;if(!e&&!r)return h;let s=e?.retrogradePlanets??[];return u`<div class="details">${e?.dominantElement||e?.dominantModality?u`<div class="pill-row">${e.dominantElement?u`<span class="pill">Dominant element: ${e.dominantElement}</span>`:h} ${e.dominantModality?u`<span class="pill">Dominant modality: ${e.dominantModality}</span>`:h}</div>`:h} ${r?u`<div class="pill-row"><span class="pill pill--success">Harmonious ${r.harmonious}</span> <span class="pill pill--danger">Challenging ${r.challenging}</span> <span class="pill pill--muted">Neutral ${r.neutral}</span></div>`:h} ${s.length>0?u`<div class="pill-row">${s.map(o=>{let n=M[o]??o.slice(0,2);return u`<span class="pill pill--muted">${n} ${o} R</span>`})}</div>`:h} ${r?.summary?u`<p class="summary">${r.summary}</p>`:h} ${this.renderElementModalityGrid()}</div>`}renderElementModalityGrid(){let e=this.getPlanets();if(e.length===0)return h;let r=["Fire","Earth","Air","Water"],s=["Cardinal","Fixed","Mutable"],o=N,n={};for(let a of r)n[a]={Cardinal:[],Fixed:[],Mutable:[]};for(let a of e){let l=o.indexOf($(a.sign??""));if(l<0)continue;let p=r[l%4],m=s[l%3],d=M[$(a.name)]??$(a.name).slice(0,2);n[p]?.[m]?.push(d)}return u`<table class="em-grid" aria-label="Element and modality distribution"><thead><tr><th></th>${s.map(a=>u`<th scope="col">${a.slice(0,3)}</th>`)}<th scope="col">Total</th></tr></thead><tbody>${r.map(a=>{let l=s.reduce((p,m)=>p+(n[a]?.[m]?.length??0),0);return u`<tr><th scope="row">${a}</th>${s.map(p=>u`<td>${(n[a]?.[p]??[]).join(" ")}</td>`)}<td class="em-total">${l}</td></tr>`})}<tr><th scope="row">Total</th>${s.map(a=>u`<td class="em-total">${r.reduce((l,p)=>l+(n[p]?.[a]?.length??0),0)}</td>`)}<td class="em-total">${e.length}</td></tr></tbody></table>`}renderInterpretations(){let e=this.getPlanets().filter(r=>r.interpretation);return e.length===0?h:u`<section class="interpretations"><h3>Planet readings</h3>${e.map((r,s)=>{let o=r.interpretation,n=M[$(r.name)]??"",a=et(r.degree??0,1);return u`<details class="interp-card" name="natal-planet-readings" ?open="${s===0}"><summary><span>${n} ${r.name}</span> <span class="interp-aside"><small>${r.sign??""} ${a}</small> ${Kt()}</span></summary><div class="interp-body">${o.summary?u`<p class="interp-summary">${o.summary}</p>`:h} ${o.detailed?u`<p class="interp-detail">${o.detailed}</p>`:h} ${o.keywords?.length?u`<div class="interp-keywords">${o.keywords.map(l=>u`<span class="kw">${l}</span>`)}</div>`:h}</div></details>`})}</section>`}renderAspects(e,r){let s=new Map;for(let o of e){if(typeof o.longitude!="number")continue;let n=$(o.name);n&&s.set(n,o.longitude)}return r.map(o=>{let n=s.get($(o.planet1)),a=s.get($(o.planet2));if(n===void 0||a===void 0)return h;let l=y(c,c,H-18,this.toAngle(n)),p=y(c,c,H-18,this.toAngle(a)),m=$t(o),d=xt[m]??"aspect-other",g=et(o.orb,1);return x`<line class="${`aspect ${d}`}" x1="${l.x}" y1="${l.y}" x2="${p.x}" y2="${p.y}"><title>${o.planet1} ${m||""} ${o.planet2}${g?` (orb ${g}\xB0)`:""}</title></line>`})}};S.styles=[Ft,Jt,Yt,A`.wrap{gap:var(--roxy-space-md,1rem);width:100%;display:grid}.title{font-size:var(--roxy-text-lg,1.125rem);font-weight:var(--roxy-weight-bold,600);color:var(--roxy-primary,#0f172a);margin:0}.meta{color:var(--roxy-muted,#71717a);font-size:var(--roxy-text-sm,.875rem)}svg{aspect-ratio:1;width:100%;max-width:560px;height:auto;margin:0 auto;display:block}.wheel-line{fill:none;stroke:var(--roxy-border,#e4e4e7)}.sign-glyph{fill:var(--roxy-secondary,#475569);font-size:14px;font-family:var(--roxy-font-sans)}.planet-glyph{fill:var(--roxy-accent,#f59e0b);font-size:14px;font-weight:600;font-family:var(--roxy-font-sans)}.planet-deg{fill:var(--roxy-fg,#0a0a0a);font-size:7px;font-family:var(--roxy-font-sans)}@container (width<=480px){.sign-glyph,.planet-glyph{font-size:18px}.planet-deg{font-size:10px}.house-num{font-size:12px}}.planet-deg .retro{fill:var(--roxy-danger,#dc2626)}.planet-leader{stroke:var(--roxy-accent,#f59e0b);stroke-width:.5px;opacity:.55}.house-num{fill:var(--roxy-muted,#71717a);font-size:9px;font-family:var(--roxy-font-sans)}.cusp-deg{fill:var(--roxy-muted,#71717a);font-size:6px;font-family:var(--roxy-font-sans)}.tick{stroke:var(--roxy-border,#e4e4e7)}.tick-major{stroke:var(--roxy-secondary,#475569)}.aspect{stroke-width:.8px;fill:none;opacity:.55}.aspect-trine,.aspect-sextile{stroke:var(--roxy-success,#16a34a)}.aspect-square,.aspect-opposition{stroke:var(--roxy-danger,#dc2626)}.aspect-conjunction{stroke:var(--roxy-accent-fg,#b45309)}.aspect-other{stroke:var(--roxy-muted,#71717a);opacity:.4}.angle-marker{fill:var(--roxy-accent-fg,#b45309);font-size:10px;font-weight:700;font-family:var(--roxy-font-sans);letter-spacing:.04em}.angle-tick{stroke:var(--roxy-accent-fg,#b45309);stroke-width:1.5px}.legend{font-size:var(--roxy-text-xs,.75rem);color:var(--roxy-muted,#71717a);gap:var(--roxy-space-md,1rem);flex-wrap:wrap;display:flex}.legend-swatch{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.grid-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}table.aspect-grid{border-collapse:collapse;font-size:var(--roxy-text-xs,.75rem);margin:0 auto}table.aspect-grid th,table.aspect-grid td{text-align:center;border:1px solid var(--roxy-border,#e4e4e7);width:1.6rem;height:1.6rem;padding:0}table.aspect-grid th{color:var(--roxy-secondary,#475569);font-weight:var(--roxy-weight-bold,600)}table.aspect-grid td.cell{cursor:default}table.aspect-grid td.empty{background:color-mix(in srgb, var(--roxy-border,#e4e4e7) 18%, transparent)}table.aspect-grid td .asp{font-size:.95em;line-height:1}table.aspect-grid td.aspect-trine .asp,table.aspect-grid td.aspect-sextile .asp{color:var(--roxy-success,#16a34a)}table.aspect-grid td.aspect-square .asp,table.aspect-grid td.aspect-opposition .asp{color:var(--roxy-danger,#dc2626)}table.aspect-grid td.aspect-conjunction .asp{color:var(--roxy-accent-fg,#b45309)}table.aspect-grid td.aspect-other .asp{color:var(--roxy-muted,#71717a)}.details{margin-top:var(--roxy-space-md,1rem)}.pill-row{gap:var(--roxy-space-xs,.25rem);margin-bottom:var(--roxy-space-xs,.25rem);flex-wrap:wrap;display:flex}.pill{border-radius:var(--roxy-radius-sm,4px);font-size:var(--roxy-text-xs,.75rem);background:color-mix(in srgb, var(--roxy-fg,#0f172a) 8%, transparent);color:var(--roxy-fg,#0f172a);padding:2px 8px}.pill--success{background:color-mix(in srgb, var(--roxy-success,#16a34a) 15%, transparent);color:var(--roxy-success,#16a34a)}.pill--danger{background:color-mix(in srgb, var(--roxy-danger,#dc2626) 15%, transparent);color:var(--roxy-danger,#dc2626)}.pill--muted{background:color-mix(in srgb, var(--roxy-border,#e4e4e7) 60%, transparent);color:var(--roxy-fg,#0a0a0a)}.summary{color:var(--roxy-fg,#0f172a);font-size:var(--roxy-text-sm,.875rem);margin:var(--roxy-space-md,1rem) 0}.em-grid{border-collapse:collapse;font-size:var(--roxy-text-xs,.75rem);width:100%}.em-grid th,.em-grid td{border:1px solid var(--roxy-border,#e4e4e7);text-align:center;vertical-align:middle;padding:3px 5px}.em-grid th{color:var(--roxy-muted,#71717a);font-weight:var(--roxy-weight-bold,600);text-transform:uppercase;letter-spacing:.04em}.em-grid th[scope=row]{text-align:left}.em-grid td{color:var(--roxy-accent,#f59e0b);min-width:1.4rem;font-size:.95em;line-height:1.4}.em-grid .em-total{color:var(--roxy-fg,#0a0a0a);font-weight:var(--roxy-weight-bold,600);background:color-mix(in srgb, var(--roxy-border,#e4e4e7) 25%, transparent)}.interpretations{margin-top:var(--roxy-space-md,1rem)}.interpretations h3{font-size:var(--roxy-text-sm,.875rem);color:var(--roxy-muted,#71717a);text-transform:uppercase;letter-spacing:.06em;margin:0 0 var(--roxy-space-sm,.5rem);font-weight:600}.interp-card{border:1px solid var(--roxy-border,#e4e4e7);border-radius:var(--roxy-radius-md,8px);padding:var(--roxy-space-sm,.5rem) var(--roxy-space-md,1rem);margin-bottom:var(--roxy-space-xs,.25rem)}.interp-card summary{cursor:pointer;color:var(--roxy-fg,#0f172a);justify-content:space-between;align-items:center;gap:var(--roxy-space-md,1rem);font-weight:500;display:flex}.interp-aside{align-items:center;gap:.6em;display:inline-flex}.interp-aside small{color:var(--roxy-muted,#71717a);font-weight:400}.interp-body{margin-top:var(--roxy-space-xs,.25rem);color:var(--roxy-fg,#0f172a);font-size:var(--roxy-text-sm,.875rem)}.interp-keywords{flex-wrap:wrap;gap:.25rem;margin-top:.5rem;display:flex}.interp-keywords .kw{background:color-mix(in srgb, var(--roxy-accent,#f59e0b) 14%, transparent);color:var(--roxy-accent-fg,#b45309);font-size:var(--roxy-text-xs,.75rem);border-radius:9999px;padding:1px 8px}`],U([F({attribute:!1})],S.prototype,"data",2),U([F({type:String,attribute:"house-system",reflect:!0})],S.prototype,"houseSystem",2),U([Gt()],S.prototype,"view",2),S=U([Bt("roxy-natal-chart")],S);return ne(Se);})();
|
|
3
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),Ot=/'/g,Ht=/"/g,Dt=/^(?:script|style|textarea|title)$/i,ut=i=>(t,...e)=>({_$litType$:i,strings:t,values:e}),u=ut(1),x=ut(2),Te=ut(3),T=Symbol.for("lit-noChange"),h=Symbol.for("lit-nothing"),Ut=new WeakMap,k=C.createTreeWalker(C,129);function jt(i,t){if(!ht(i)||!i.hasOwnProperty("raw"))throw Error("invalid template strings array");return Rt!==void 0?Rt.createHTML(t):t}var ge=(i,t)=>{let e=i.length-1,r=[],s,o=t===2?"<svg>":t===3?"<math>":"",n=j;for(let a=0;a<e;a++){let l=i[a],p,m,d=-1,g=0;for(;g<l.length&&(n.lastIndex=g,m=n.exec(l),m!==null);)g=n.lastIndex,n===j?m[1]==="!--"?n=Lt:m[1]!==void 0?n=Nt:m[2]!==void 0?(Dt.test(m[2])&&(s=RegExp("</"+m[2],"g")),n=P):m[3]!==void 0&&(n=P):n===P?m[0]===">"?(n=s??j,d=-1):m[1]===void 0?d=-2:(d=n.lastIndex-m[2].length,p=m[1],n=m[3]===void 0?P:m[3]==='"'?Ht:Ot):n===Ht||n===Ot?n=P:n===Lt||n===Nt?n=j:(n=P,s=void 0);let f=n===P&&i[a+1].startsWith("/>")?" ":"";o+=n===j?l+ue:d>=0?(r.push(p),l.slice(0,d)+zt+l.slice(d)+w+f):l+w+(d===-2?a:f)}return[jt(i,o+(i[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),r]},G=class i{constructor({strings:t,_$litType$:e},r){let s;this.parts=[];let o=0,n=0,a=t.length-1,l=this.parts,[p,m]=ge(t,e);if(this.el=i.createElement(p,r),k.currentNode=this.el.content,e===2||e===3){let d=this.el.content.firstChild;d.replaceWith(...d.childNodes)}for(;(s=k.nextNode())!==null&&l.length<a;){if(s.nodeType===1){if(s.hasAttributes())for(let d of s.getAttributeNames())if(d.endsWith(zt)){let g=m[n++],f=s.getAttribute(d).split(w),b=/([.?@])?(.*)/.exec(g);l.push({type:1,index:o,name:b[2],strings:f,ctor:b[1]==="."?at:b[1]==="?"?lt:b[1]==="@"?ct:L}),s.removeAttribute(d)}else d.startsWith(w)&&(l.push({type:6,index:o}),s.removeAttribute(d));if(Dt.test(s.tagName)){let d=s.textContent.split(w),g=d.length-1;if(g>0){s.textContent=Q?Q.emptyScript:"";for(let f=0;f<g;f++)s.append(d[f],q()),k.nextNode(),l.push({type:2,index:++o});s.append(d[g],q())}}}else if(s.nodeType===8)if(s.data===It)l.push({type:2,index:o});else{let d=-1;for(;(d=s.data.indexOf(w,d+1))!==-1;)l.push({type:7,index:o}),d+=w.length-1}o++}}static createElement(t,e){let r=C.createElement("template");return r.innerHTML=t,r}};function R(i,t,e=i,r){if(t===T)return t;let s=r!==void 0?e._$Co?.[r]:e._$Cl,o=B(t)?void 0:t._$litDirective$;return s?.constructor!==o&&(s?._$AO?.(!1),o===void 0?s=void 0:(s=new o(i),s._$AT(i,e,r)),r!==void 0?(e._$Co??=[])[r]=s:e._$Cl=s),s!==void 0&&(t=R(i,s._$AS(i,t.values),s,r)),t}var it=class{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){let{el:{content:e},parts:r}=this._$AD,s=(t?.creationScope??C).importNode(e,!0);k.currentNode=s;let o=k.nextNode(),n=0,a=0,l=r[0];for(;l!==void 0;){if(n===l.index){let p;l.type===2?p=new V(o,o.nextSibling,this,t):l.type===1?p=new l.ctor(o,l.name,l.strings,this,t):l.type===6&&(p=new dt(o,this,t)),this._$AV.push(p),l=r[++a]}n!==l?.index&&(o=k.nextNode(),n++)}return k.currentNode=C,s}p(t){let e=0;for(let r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}},V=class i{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,e,r,s){this.type=2,this._$AH=h,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=s,this._$Cv=s?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode,e=this._$AM;return e!==void 0&&t?.nodeType===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=R(this,t,e),B(t)?t===h||t==null||t===""?(this._$AH!==h&&this._$AR(),this._$AH=h):t!==this._$AH&&t!==T&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):me(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==h&&B(this._$AH)?this._$AA.nextSibling.data=t:this.T(C.createTextNode(t)),this._$AH=t}$(t){let{values:e,_$litType$:r}=t,s=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=G.createElement(jt(r.h,r.h[0]),this.options)),r);if(this._$AH?._$AD===s)this._$AH.p(e);else{let o=new it(s,this),n=o.u(this.options);o.p(e),this.T(n),this._$AH=o}}_$AC(t){let e=Ut.get(t.strings);return e===void 0&&Ut.set(t.strings,e=new G(t)),e}k(t){ht(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,r,s=0;for(let o of t)s===e.length?e.push(r=new i(this.O(q()),this.O(q()),this,this.options)):r=e[s],r._$AI(o),s++;s<e.length&&(this._$AR(r&&r._$AB.nextSibling,s),e.length=s)}_$AR(t=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);t!==this._$AB;){let r=Mt(t).nextSibling;Mt(t).remove(),t=r}}setConnected(t){this._$AM===void 0&&(this._$Cv=t,this._$AP?.(t))}},L=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,r,s,o){this.type=1,this._$AH=h,this._$AN=void 0,this.element=t,this.name=e,this._$AM=s,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=h}_$AI(t,e=this,r,s){let o=this.strings,n=!1;if(o===void 0)t=R(this,t,e,0),n=!B(t)||t!==this._$AH&&t!==T,n&&(this._$AH=t);else{let a=t,l,p;for(t=o[0],l=0;l<o.length-1;l++)p=R(this,a[r+l],e,l),p===T&&(p=this._$AH[l]),n||=!B(p)||p!==this._$AH[l],p===h?t=h:t!==h&&(t+=(p??"")+o[l+1]),this._$AH[l]=p}n&&!s&&this.j(t)}j(t){t===h?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}},at=class extends L{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===h?void 0:t}},lt=class extends L{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==h)}},ct=class extends L{constructor(t,e,r,s,o){super(t,e,r,s,o),this.type=5}_$AI(t,e=this){if((t=R(this,t,e,0)??h)===T)return;let r=this._$AH,s=t===h&&r!==h||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,o=t!==h&&(r===h||s);s&&this.element.removeEventListener(this.name,this,r),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}},dt=class{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){R(this,t)}};var ye=pt.litHtmlPolyfillSupport;ye?.(G,V),(pt.litHtmlVersions??=[]).push("3.3.2");var qt=(i,t,e)=>{let r=e?.renderBefore??t,s=r._$litPart$;if(s===void 0){let o=e?.renderBefore??null;r._$litPart$=s=new V(t.insertBefore(q(),o),o,void 0,e??{})}return s._$AI(i),s};var mt=globalThis,E=class extends _{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=qt(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return T}};E._$litElement$=!0,E.finalized=!0,mt.litElementHydrateSupport?.({LitElement:E});var fe=mt.litElementPolyfillSupport;fe?.({LitElement:E});(mt.litElementVersions??=[]).push("4.2.2");var Bt=i=>(t,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(i,t)}):customElements.define(i,t)};var xe={attribute:!0,type:String,converter:D,reflect:!1,hasChanged:X},$e=(i=xe,t,e)=>{let{kind:r,metadata:s}=e,o=globalThis.litPropertyMetadata.get(s);if(o===void 0&&globalThis.litPropertyMetadata.set(s,o=new Map),r==="setter"&&((i=Object.create(i)).wrapped=!0),o.set(e.name,i),r==="accessor"){let{name:n}=e;return{set(a){let l=t.get.call(this);t.set.call(this,a),this.requestUpdate(n,l,i,!0,a)},init(a){return a!==void 0&&this.C(n,void 0,i,a),a}}}if(r==="setter"){let{name:n}=e;return function(a){let l=this[n];t.call(this,a),this.requestUpdate(n,l,i,!0,a)}}throw Error("Unsupported decorator location: "+r)};function F(i){return(t,e)=>typeof e=="object"?$e(i,t,e):((r,s,o)=>{let n=s.hasOwnProperty(o);return s.constructor.createProperty(o,r),n?Object.getOwnPropertyDescriptor(s,o):void 0})(i,t,e)}function Gt(i){return F({...i,state:!0,attribute:!1})}var M={Sun:"\u2609",Moon:"\u263D",Mercury:"\u263F",Venus:"\u2640",Earth:"\u2641",Mars:"\u2642",Jupiter:"\u2643",Saturn:"\u2644",Uranus:"\u2645",Neptune:"\u2646",Pluto:"\u2647",Rahu:"\u260A",Ketu:"\u260B",Ascendant:"Asc",Lagna:"La",NorthNode:"\u260A",SouthNode:"\u260B","North node":"\u260A","South node":"\u260B",Chiron:"\u26B7",Lilith:"\u26B8","Black moon lilith":"\u26B8"};var Vt={Aries:"\u2648",Taurus:"\u2649",Gemini:"\u264A",Cancer:"\u264B",Leo:"\u264C",Virgo:"\u264D",Libra:"\u264E",Scorpio:"\u264F",Sagittarius:"\u2650",Capricorn:"\u2651",Aquarius:"\u2652",Pisces:"\u2653"};var N=["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"],yr=N.map(i=>i.toLowerCase()),gt={conjunction:"\u260C",opposition:"\u260D",trine:"\u25B3",square:"\u25A1",sextile:"\u2731",quincunx:"\u22BB",semisextile:"\u22BC"};var Ft=A`:host{font-family:var(--roxy-font-sans,system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);color:var(--roxy-fg,#0a0a0a);font-size:var(--roxy-text-base,1rem);line-height:var(--roxy-leading-normal,1.5);animation:roxy-fade-in var(--roxy-motion-duration,.2s) var(--roxy-motion-easing,cubic-bezier(.4, 0, .2, 1)) both;background:0 0;display:block;container-type:inline-size}*,:before,:after{box-sizing:border-box}@keyframes roxy-fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){:host{animation:none}}.roxy-skeleton{background:linear-gradient(90deg, var(--roxy-border,#e4e4e7) 0%, color-mix(in srgb, var(--roxy-border,#e4e4e7) 60%, transparent) 50%, var(--roxy-border,#e4e4e7) 100%);border-radius:var(--roxy-radius-md,8px);background-size:200% 100%;animation:1.4s ease-in-out infinite roxy-shimmer}@keyframes roxy-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.roxy-skeleton{animation:none}}.roxy-empty{padding:var(--roxy-space-lg,1.5rem);color:var(--roxy-muted,#71717a);text-align:center;font-size:var(--roxy-text-sm,.875rem)}:host(:focus-within) .roxy-card{outline:2px solid var(--roxy-ring,#f59e0b66);outline-offset:2px}:host{font-variant-emoji:text}`;function v(i){let t=i%360;return t<0?t+360:t}function yt(i){let t=v(i),e=Math.floor(t/30)%12,r=t%30,s=Math.floor(r),o=(r-s)*60,n=Math.floor(o),a=Math.round((o-n)*60);return{sign:N[e]??"Aries",signIndex:e,degree:s,minute:n,second:a}}function ft(i){return v(i+180)}function Wt(i,t){let e=v(i),r=v(t)-e;return r<0&&(r+=360),v(e+r/2)}function y(i,t,e,r){let s=r*Math.PI/180;return{x:i+e*Math.cos(s),y:t+e*Math.sin(s)}}function Kt(){return u`<svg class="roxy-chevron" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M4 6l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>`}var Yt=A`summary{list-style:none}summary::-webkit-details-marker{display:none}.roxy-chevron{aspect-ratio:auto;width:14px;height:14px;color:var(--roxy-muted,#71717a);transition:transform var(--roxy-motion-duration,.2s) var(--roxy-motion-easing,ease);flex-shrink:0}details[open]>summary .roxy-chevron{transform:rotate(180deg)}@media (prefers-reduced-motion:reduce){.roxy-chevron{transition:none}}`;function et(i,t=1){return typeof i!="number"||!Number.isFinite(i)?"":i.toFixed(t).replace(/\.?0+$/,"")}var xt={conjunction:"aspect-conjunction",sextile:"aspect-sextile",square:"aspect-square",trine:"aspect-trine",opposition:"aspect-opposition"};function $t(i){return(i.type??"").toLowerCase().replace(/_/g,"-")}var be="roxy-data";function ve(i){return i.nodeName==="SCRIPT"&&i.getAttribute("type")==="application/json"}var rt=class{constructor(t){this.host=t,t.addController(this)}hostConnected(){if(this.host.data!=null)return;let t=this.read();t!==void 0&&(this.host.data=t,this.host.requestUpdate())}read(){let t=this.findInlineScript();return t?this.parse(t.textContent):void 0}findInlineScript(){for(let t of Array.from(this.host.children))if(ve(t)&&t.classList.contains(be))return t;return null}parse(t){if(t?.trim())try{return JSON.parse(t)}catch{return}}};function $(i){return i?i.charAt(0).toUpperCase()+i.slice(1).toLowerCase():""}var Jt=A`.roxy-tablist{border-bottom:2px solid var(--roxy-border,#e4e4e7);gap:2px;display:flex}.roxy-tab{padding:var(--roxy-space-xs,.25rem) var(--roxy-space-md,1rem);font-size:var(--roxy-text-sm,.875rem);cursor:pointer;color:var(--roxy-muted,#71717a);transition:color var(--roxy-motion-duration,.2s) var(--roxy-motion-easing,ease);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;font-family:inherit}.roxy-tab[aria-selected=true]{color:var(--roxy-accent-fg,#b45309);border-bottom-color:var(--roxy-accent,#f59e0b);font-weight:var(--roxy-weight-bold,600)}.roxy-tab:hover:not([aria-selected=true]){color:var(--roxy-fg,#0a0a0a)}.roxy-tab:focus-visible{outline:2px solid var(--roxy-ring,#f59e0b66);outline-offset:2px;border-radius:4px}`;function Zt(i){let{items:t,active:e,onSelect:r,label:s,idPrefix:o,controls:n=!1}=i;return u`<div class="roxy-tablist" role="tablist" aria-label="${s}" @keydown="${l=>{if(l.key!=="ArrowRight"&&l.key!=="ArrowLeft")return;l.preventDefault();let p=t.findIndex(f=>f.id===e);if(p===-1)return;let m=l.key==="ArrowRight"?1:-1,d=t[(p+m+t.length)%t.length];if(!d)return;r(d.id);let g=l.currentTarget.getRootNode();requestAnimationFrame(()=>{g.querySelector(`#${o}-tab-${d.id}`)?.focus()})}}">${t.map(l=>u`<button type="button" class="roxy-tab" role="tab" id="${o}-tab-${l.id}" aria-selected="${e===l.id?"true":"false"}" aria-controls="${n&&e===l.id?`${o}-panel-${l.id}`:h}" tabindex="${e===l.id?"0":"-1"}" @click="${()=>r(l.id)}">${l.label}</button>`)}</div>`}var vt=420,c=vt/2,O=164,bt=146,W=120,H=96,Ae=178,_e=196,S=class extends E{constructor(){super();this.data=null;this.houseSystem="placidus";this.view="wheel";new rt(this)}getPlanets(){return this.data?.planets??[]}getAscendant(){return this.data?.ascendant?.longitude??0}getMidheaven(){let e=this.data?.midheaven?.longitude;return typeof e=="number"?e:null}toAngle(e){return 180+this.getAscendant()-e}render(){if(!this.data)return u`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.getPlanets(),r=this.data.aspects??[],s=this.view;return u`<div class="wrap"><header><h2 class="title">Natal chart</h2>${this.data.birthDetails?u`<div class="meta">${[this.data.birthDetails.date,this.data.birthDetails.time].filter(Boolean).join(" \xB7 ")}</div>`:h}</header>${Zt({items:[{id:"wheel",label:"Wheel"},{id:"grid",label:"Aspect grid"}],active:s,onSelect:o=>{this.view=o},label:"Natal chart views",idPrefix:"natal",controls:!0})}<div id="natal-panel-${s}" role="tabpanel" aria-labelledby="natal-tab-${s}">${s==="wheel"?this.renderWheel(e,r):this.renderAspectGrid(e,r)}</div><div class="legend"><span>${e.length} planets</span> <span>${r.length} aspects</span> ${this.data.houseSystem?u`<span>${this.data.houseSystem} houses</span>`:h} <span><span class="legend-swatch" style="background:var(--roxy-success)"></span>harmonious</span> <span><span class="legend-swatch" style="background:var(--roxy-danger)"></span>challenging</span></div>${this.renderDetails()} ${this.renderInterpretations()}</div>`}renderWheel(e,r){return u`<svg viewBox="0 0 ${vt} ${vt}" role="img" aria-label="Natal chart wheel with twelve houses, planets, and aspects"><title>Natal chart wheel</title><desc>Twelve zodiac sign segments around a circular wheel. Planet glyphs are placed at their ecliptic longitudes. Aspect lines connect related planets.</desc><circle class="wheel-line" cx="${c}" cy="${c}" r="${O}" stroke-width="1.5"/><circle class="wheel-line" cx="${c}" cy="${c}" r="${bt-14}" stroke-width="0.8"/><circle class="wheel-line" cx="${c}" cy="${c}" r="${W}" stroke-width="1"/><circle class="wheel-line" cx="${c}" cy="${c}" r="${H-16}" stroke-width="0.5"/>${this.renderTicks()} ${this.renderSpokes()} ${this.renderSigns()} ${this.renderHouseNumbers()} ${this.renderCuspDegrees()} ${this.renderAspects(e,r)} ${this.renderPlanets(e)} ${this.renderAngles()}</svg>`}renderAspectGrid(e,r){let s=e.map(n=>$(n.name)),o=new Map;for(let n of r){let a=[$(n.planet1),$(n.planet2)].sort().join("|");o.set(a,n)}return s.length===0?u`<p class="roxy-empty" role="status">No planets to grid</p>`:u`<div class="grid-scroll"><table class="aspect-grid" aria-label="Planet by planet aspect grid"><thead><tr><th></th>${s.slice(0,-1).map(n=>{let a=M[n]??n.slice(0,2);return u`<th scope="col" title="${n}">${a}</th>`})}</tr></thead><tbody>${s.slice(1).map((n,a)=>{let l=M[n]??n.slice(0,2);return u`<tr><th scope="row" title="${n}">${l}</th>${s.slice(0,a+1).map(p=>{let m=o.get([n,p].sort().join("|"));if(!m)return u`<td class="empty"></td>`;let d=$t(m),g=gt[d]??gt[d.replace(/-/g,"")]??d.slice(0,3),f=xt[d]??"aspect-other",b=et(m.orb,1);return u`<td class="${`cell ${f}`}" title="${`${n} ${d} ${p}${b?` (orb ${b}\xB0)`:""}`}"><span class="asp">${g}</span></td>`})} ${s.slice(a+1,-1).map(()=>u`<td class="empty"></td>`)}</tr>`})}</tbody></table></div>`}renderAngles(){let e=this.getAscendant(),r=this.getMidheaven(),s=[this.renderAngleMark(e,"ASC"),this.renderAngleMark(ft(e),"DSC")];r!==null&&(s.push(this.renderAngleMark(r,"MC")),s.push(this.renderAngleMark(ft(r),"IC")));let o=this.data?.partOfFortune?.longitude;typeof o=="number"&&s.push(this.renderAngleMark(v(o),"PoF"));let n=this.data?.vertex?.longitude;return typeof n=="number"&&s.push(this.renderAngleMark(v(n),"Vtx")),s}renderAngleMark(e,r){let s=this.toAngle(e),o=y(c,c,O,s),n=y(c,c,Ae,s),a=y(c,c,_e,s);return x`
|
|
4
|
+
<g>
|
|
5
|
+
<line class="angle-tick" x1=${o.x} y1=${o.y} x2=${n.x} y2=${n.y} />
|
|
6
|
+
<text class="angle-marker" x=${a.x} y=${a.y} text-anchor="middle" dominant-baseline="central">${r}</text>
|
|
7
|
+
</g>
|
|
8
|
+
`}renderSpokes(){let e=this.data?.houses??[];return(e.length===12?e.map(s=>s.longitude):Array.from({length:12},(s,o)=>this.getAscendant()+o*30)).map(s=>{let o=this.toAngle(s),n=y(c,c,W,o),a=y(c,c,O,o);return x`<line class="wheel-line" x1=${n.x} y1=${n.y} x2=${a.x} y2=${a.y} stroke-width="0.8" />`})}renderSigns(){return N.map((e,r)=>{let s=this.toAngle(r*30+15),o=y(c,c,bt,s);return x`<text class="sign-glyph" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${Vt[e]}</text>`})}renderHouseNumbers(){let e=this.data?.houses??[];if(e.length===12)return e.map((s,o)=>{let n=e[(o+1)%12],a=Wt(s.longitude,n?n.longitude:s.longitude+30),l=y(c,c,W-12,this.toAngle(a));return x`<text class="house-num" x=${l.x} y=${l.y} text-anchor="middle" dominant-baseline="central">${s.number}</text>`});let r=Math.floor(this.getAscendant()/30);return Array.from({length:12},(s,o)=>{let n=this.toAngle(o*30+15),a=y(c,c,W-12,n),l=(o-r+12)%12+1;return x`<text class="house-num" x=${a.x} y=${a.y} text-anchor="middle" dominant-baseline="central">${l}</text>`})}renderTicks(){let e=[];for(let r=0;r<360;r+=5){let s=this.toAngle(r),o=r%30===0,n=o?bt-14:O-5,a=y(c,c,n,s),l=y(c,c,O,s);e.push(x`<line class=${o?"tick tick-major":"tick"} x1=${a.x} y1=${a.y} x2=${l.x} y2=${l.y} stroke-width=${o?1:.5} />`)}return e}renderCuspDegrees(){let e=this.data?.houses??[];return e.length!==12?h:e.map(r=>{let s=this.toAngle(r.longitude),o=y(c,c,W+9,s),n=yt(r.longitude);return x`<text class="cusp-deg" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${n.degree}°${String(n.minute).padStart(2,"0")}'</text>`})}renderPlanets(e){let s=e.filter(n=>Number.isFinite(n.longitude)).map(n=>({p:n,trueLon:v(n.longitude),displayLon:v(n.longitude)})).sort((n,a)=>n.trueLon-a.trueLon);for(let n=1;n<s.length;n++){let a=s[n-1],l=s[n];if(!a||!l)continue;let p=a.displayLon+7;l.displayLon<p&&(l.displayLon=p)}let o=s[s.length-1];if(o&&o.displayLon>360){let n=o.displayLon-360;for(let a of s)a.displayLon-=n}return s.map(({p:n,trueLon:a,displayLon:l})=>{let p=this.toAngle(a),m=this.toAngle(l),d=y(c,c,H,m),g=y(c,c,H-13,m),f=y(c,c,O-4,p),b=y(c,c,H+8,m),Xt=M[$(n.name)]??n.name.slice(0,2),At=yt(n.longitude),_t=n.isRetrograde===!0,St=`${At.degree}\xB0${String(At.minute).padStart(2,"0")}'`,Qt=Math.abs(l-a)>.5;return x`<g>
|
|
9
|
+
${Qt?x`<line class="planet-leader" x1=${f.x} y1=${f.y} x2=${b.x} y2=${b.y} />`:h}
|
|
10
|
+
<text class="planet-glyph" x=${d.x} y=${d.y} text-anchor="middle" dominant-baseline="central"><title>${n.name}${_t?" retrograde":""} - ${St} ${n.sign??""}</title>${Xt}</text>
|
|
11
|
+
<text class="planet-deg" x=${g.x} y=${g.y} text-anchor="middle" dominant-baseline="central">${St}${_t?x`<tspan class="retro"> ℞</tspan>`:h}</text>
|
|
12
|
+
</g>`})}renderDetails(){let e=this.data?.summary,r=this.data?.aspectsInterpretation;if(!e&&!r)return h;let s=e?.retrogradePlanets??[];return u`<div class="details">${e?.dominantElement||e?.dominantModality?u`<div class="pill-row">${e.dominantElement?u`<span class="pill">Dominant element: ${e.dominantElement}</span>`:h} ${e.dominantModality?u`<span class="pill">Dominant modality: ${e.dominantModality}</span>`:h}</div>`:h} ${r?u`<div class="pill-row"><span class="pill pill--success">Harmonious ${r.harmonious}</span> <span class="pill pill--danger">Challenging ${r.challenging}</span> <span class="pill pill--muted">Neutral ${r.neutral}</span></div>`:h} ${s.length>0?u`<div class="pill-row">${s.map(o=>{let n=M[o]??o.slice(0,2);return u`<span class="pill pill--muted">${n} ${o} R</span>`})}</div>`:h} ${r?.summary?u`<p class="summary">${r.summary}</p>`:h} ${this.renderElementModalityGrid()}</div>`}renderElementModalityGrid(){let e=this.getPlanets();if(e.length===0)return h;let r=["Fire","Earth","Air","Water"],s=["Cardinal","Fixed","Mutable"],o=N,n={};for(let a of r)n[a]={Cardinal:[],Fixed:[],Mutable:[]};for(let a of e){let l=o.indexOf($(a.sign??""));if(l<0)continue;let p=r[l%4],m=s[l%3],d=M[$(a.name)]??$(a.name).slice(0,2);n[p]?.[m]?.push(d)}return u`<table class="em-grid" aria-label="Element and modality distribution"><thead><tr><th></th>${s.map(a=>u`<th scope="col">${a.slice(0,3)}</th>`)}<th scope="col">Total</th></tr></thead><tbody>${r.map(a=>{let l=s.reduce((p,m)=>p+(n[a]?.[m]?.length??0),0);return u`<tr><th scope="row">${a}</th>${s.map(p=>u`<td>${(n[a]?.[p]??[]).join(" ")}</td>`)}<td class="em-total">${l}</td></tr>`})}<tr><th scope="row">Total</th>${s.map(a=>u`<td class="em-total">${r.reduce((l,p)=>l+(n[p]?.[a]?.length??0),0)}</td>`)}<td class="em-total">${e.length}</td></tr></tbody></table>`}renderInterpretations(){let e=this.getPlanets().filter(r=>r.interpretation);return e.length===0?h:u`<section class="interpretations"><h3>Planet readings</h3>${e.map((r,s)=>{let o=r.interpretation,n=M[$(r.name)]??"",a=et(r.degree??0,1);return u`<details class="interp-card" name="natal-planet-readings" ?open="${s===0}"><summary><span>${n} ${r.name}</span> <span class="interp-aside"><small>${r.sign??""} ${a}</small> ${Kt()}</span></summary><div class="interp-body">${o.summary?u`<p class="interp-summary">${o.summary}</p>`:h} ${o.detailed?u`<p class="interp-detail">${o.detailed}</p>`:h} ${o.keywords?.length?u`<div class="interp-keywords">${o.keywords.map(l=>u`<span class="kw">${l}</span>`)}</div>`:h}</div></details>`})}</section>`}renderAspects(e,r){let s=new Map;for(let o of e){if(typeof o.longitude!="number")continue;let n=$(o.name);n&&s.set(n,o.longitude)}return r.map(o=>{let n=s.get($(o.planet1)),a=s.get($(o.planet2));if(n===void 0||a===void 0)return h;let l=y(c,c,H-18,this.toAngle(n)),p=y(c,c,H-18,this.toAngle(a)),m=$t(o),d=xt[m]??"aspect-other",g=et(o.orb,1);return x`<line class=${`aspect ${d}`} x1=${l.x} y1=${l.y} x2=${p.x} y2=${p.y}><title>${o.planet1} ${m||""} ${o.planet2}${g?` (orb ${g}\xB0)`:""}</title></line>`})}};S.styles=[Ft,Jt,Yt,A`.wrap{gap:var(--roxy-space-md,1rem);width:100%;display:grid}.title{font-size:var(--roxy-text-lg,1.125rem);font-weight:var(--roxy-weight-bold,600);color:var(--roxy-primary,#0f172a);margin:0}.meta{color:var(--roxy-muted,#71717a);font-size:var(--roxy-text-sm,.875rem)}svg{aspect-ratio:1;width:100%;max-width:560px;height:auto;margin:0 auto;display:block}.wheel-line{fill:none;stroke:var(--roxy-border,#e4e4e7)}.sign-glyph{fill:var(--roxy-secondary,#475569);font-size:14px;font-family:var(--roxy-font-sans)}.planet-glyph{fill:var(--roxy-accent,#f59e0b);font-size:14px;font-weight:600;font-family:var(--roxy-font-sans)}.planet-deg{fill:var(--roxy-fg,#0a0a0a);font-size:7px;font-family:var(--roxy-font-sans)}@container (width<=480px){.sign-glyph,.planet-glyph{font-size:18px}.planet-deg{font-size:10px}.house-num{font-size:12px}}.planet-deg .retro{fill:var(--roxy-danger,#dc2626)}.planet-leader{stroke:var(--roxy-accent,#f59e0b);stroke-width:.5px;opacity:.55}.house-num{fill:var(--roxy-muted,#71717a);font-size:9px;font-family:var(--roxy-font-sans)}.cusp-deg{fill:var(--roxy-muted,#71717a);font-size:6px;font-family:var(--roxy-font-sans)}.tick{stroke:var(--roxy-border,#e4e4e7)}.tick-major{stroke:var(--roxy-secondary,#475569)}.aspect{stroke-width:.8px;fill:none;opacity:.55}.aspect-trine,.aspect-sextile{stroke:var(--roxy-success,#16a34a)}.aspect-square,.aspect-opposition{stroke:var(--roxy-danger,#dc2626)}.aspect-conjunction{stroke:var(--roxy-accent-fg,#b45309)}.aspect-other{stroke:var(--roxy-muted,#71717a);opacity:.4}.angle-marker{fill:var(--roxy-accent-fg,#b45309);font-size:10px;font-weight:700;font-family:var(--roxy-font-sans);letter-spacing:.04em}.angle-tick{stroke:var(--roxy-accent-fg,#b45309);stroke-width:1.5px}.legend{font-size:var(--roxy-text-xs,.75rem);color:var(--roxy-muted,#71717a);gap:var(--roxy-space-md,1rem);flex-wrap:wrap;display:flex}.legend-swatch{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.grid-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}table.aspect-grid{border-collapse:collapse;font-size:var(--roxy-text-xs,.75rem);margin:0 auto}table.aspect-grid th,table.aspect-grid td{text-align:center;border:1px solid var(--roxy-border,#e4e4e7);width:1.6rem;height:1.6rem;padding:0}table.aspect-grid th{color:var(--roxy-secondary,#475569);font-weight:var(--roxy-weight-bold,600)}table.aspect-grid td.cell{cursor:default}table.aspect-grid td.empty{background:color-mix(in srgb, var(--roxy-border,#e4e4e7) 18%, transparent)}table.aspect-grid td .asp{font-size:.95em;line-height:1}table.aspect-grid td.aspect-trine .asp,table.aspect-grid td.aspect-sextile .asp{color:var(--roxy-success,#16a34a)}table.aspect-grid td.aspect-square .asp,table.aspect-grid td.aspect-opposition .asp{color:var(--roxy-danger,#dc2626)}table.aspect-grid td.aspect-conjunction .asp{color:var(--roxy-accent-fg,#b45309)}table.aspect-grid td.aspect-other .asp{color:var(--roxy-muted,#71717a)}.details{margin-top:var(--roxy-space-md,1rem)}.pill-row{gap:var(--roxy-space-xs,.25rem);margin-bottom:var(--roxy-space-xs,.25rem);flex-wrap:wrap;display:flex}.pill{border-radius:var(--roxy-radius-sm,4px);font-size:var(--roxy-text-xs,.75rem);background:color-mix(in srgb, var(--roxy-fg,#0f172a) 8%, transparent);color:var(--roxy-fg,#0f172a);padding:2px 8px}.pill--success{background:color-mix(in srgb, var(--roxy-success,#16a34a) 15%, transparent);color:var(--roxy-success,#16a34a)}.pill--danger{background:color-mix(in srgb, var(--roxy-danger,#dc2626) 15%, transparent);color:var(--roxy-danger,#dc2626)}.pill--muted{background:color-mix(in srgb, var(--roxy-border,#e4e4e7) 60%, transparent);color:var(--roxy-fg,#0a0a0a)}.summary{color:var(--roxy-fg,#0f172a);font-size:var(--roxy-text-sm,.875rem);margin:var(--roxy-space-md,1rem) 0}.em-grid{border-collapse:collapse;font-size:var(--roxy-text-xs,.75rem);width:100%}.em-grid th,.em-grid td{border:1px solid var(--roxy-border,#e4e4e7);text-align:center;vertical-align:middle;padding:3px 5px}.em-grid th{color:var(--roxy-muted,#71717a);font-weight:var(--roxy-weight-bold,600);text-transform:uppercase;letter-spacing:.04em}.em-grid th[scope=row]{text-align:left}.em-grid td{color:var(--roxy-accent,#f59e0b);min-width:1.4rem;font-size:.95em;line-height:1.4}.em-grid .em-total{color:var(--roxy-fg,#0a0a0a);font-weight:var(--roxy-weight-bold,600);background:color-mix(in srgb, var(--roxy-border,#e4e4e7) 25%, transparent)}.interpretations{margin-top:var(--roxy-space-md,1rem)}.interpretations h3{font-size:var(--roxy-text-sm,.875rem);color:var(--roxy-muted,#71717a);text-transform:uppercase;letter-spacing:.06em;margin:0 0 var(--roxy-space-sm,.5rem);font-weight:600}.interp-card{border:1px solid var(--roxy-border,#e4e4e7);border-radius:var(--roxy-radius-md,8px);padding:var(--roxy-space-sm,.5rem) var(--roxy-space-md,1rem);margin-bottom:var(--roxy-space-xs,.25rem)}.interp-card summary{cursor:pointer;color:var(--roxy-fg,#0f172a);justify-content:space-between;align-items:center;gap:var(--roxy-space-md,1rem);font-weight:500;display:flex}.interp-aside{align-items:center;gap:.6em;display:inline-flex}.interp-aside small{color:var(--roxy-muted,#71717a);font-weight:400}.interp-body{margin-top:var(--roxy-space-xs,.25rem);color:var(--roxy-fg,#0f172a);font-size:var(--roxy-text-sm,.875rem)}.interp-keywords{flex-wrap:wrap;gap:.25rem;margin-top:.5rem;display:flex}.interp-keywords .kw{background:color-mix(in srgb, var(--roxy-accent,#f59e0b) 14%, transparent);color:var(--roxy-accent-fg,#b45309);font-size:var(--roxy-text-xs,.75rem);border-radius:9999px;padding:1px 8px}`],U([F({attribute:!1})],S.prototype,"data",2),U([F({type:String,attribute:"house-system",reflect:!0})],S.prototype,"houseSystem",2),U([Gt()],S.prototype,"view",2),S=U([Bt("roxy-natal-chart")],S);return ne(Se);})();
|
|
4
13
|
/*! Bundled license information:
|
|
5
14
|
|
|
6
15
|
@lit/reactive-element/css-tag.js:
|