@roxyapi/ui-vue 0.27.1 → 0.27.2
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/AGENTS.md +3 -1
- package/dist/components/angel-number-card.js +1 -1
- package/dist/components/angel-number-card.js.map +2 -2
- package/dist/components/angel-number-lookup.js +1 -1
- package/dist/components/angel-number-lookup.js.map +2 -2
- package/dist/components/arudha-padas.js +1 -1
- package/dist/components/arudha-padas.js.map +2 -2
- package/dist/components/ashtakavarga-grid.js +1 -1
- package/dist/components/ashtakavarga-grid.js.map +2 -2
- package/dist/components/aspects-table.js +1 -1
- package/dist/components/aspects-table.js.map +2 -2
- package/dist/components/astrocartography-map.js +1 -1
- package/dist/components/astrocartography-map.js.map +2 -2
- package/dist/components/bhav-chalit-table.js +1 -1
- package/dist/components/bhav-chalit-table.js.map +2 -2
- package/dist/components/bhava-bala-table.js +1 -1
- package/dist/components/bhava-bala-table.js.map +2 -2
- package/dist/components/biorhythm-chart.js +1 -1
- package/dist/components/biorhythm-chart.js.map +2 -2
- package/dist/components/bodygraph.js +1 -1
- package/dist/components/bodygraph.js.map +2 -2
- package/dist/components/chara-karakas.js +1 -1
- package/dist/components/chara-karakas.js.map +2 -2
- package/dist/components/choghadiya-grid.js +1 -1
- package/dist/components/choghadiya-grid.js.map +2 -2
- package/dist/components/compatibility-card.js +1 -1
- package/dist/components/compatibility-card.js.map +2 -2
- package/dist/components/crystal-card.js +1 -1
- package/dist/components/crystal-card.js.map +2 -2
- package/dist/components/crystal-grid.js +1 -1
- package/dist/components/crystal-grid.js.map +2 -2
- package/dist/components/dasha-timeline.js +1 -1
- package/dist/components/dasha-timeline.js.map +2 -2
- package/dist/components/data.js +1 -1
- package/dist/components/data.js.map +2 -2
- package/dist/components/divisional-chart.js +1 -1
- package/dist/components/divisional-chart.js.map +2 -2
- package/dist/components/dosha-card.js +1 -1
- package/dist/components/dosha-card.js.map +2 -2
- package/dist/components/dream-card.js +1 -1
- package/dist/components/dream-card.js.map +2 -2
- package/dist/components/dream-search.js +1 -1
- package/dist/components/dream-search.js.map +2 -2
- package/dist/components/endpoint-form.js +1 -1
- package/dist/components/endpoint-form.js.map +2 -2
- package/dist/components/ephemeris-table.js +1 -1
- package/dist/components/ephemeris-table.js.map +2 -2
- package/dist/components/fixed-stars.js +1 -1
- package/dist/components/fixed-stars.js.map +2 -2
- package/dist/components/forecast-digest.js +1 -1
- package/dist/components/forecast-digest.js.map +2 -2
- package/dist/components/forecast-timeline.js +1 -1
- package/dist/components/forecast-timeline.js.map +2 -2
- package/dist/components/gochara-table.js +1 -1
- package/dist/components/gochara-table.js.map +2 -2
- package/dist/components/guna-milan.js +1 -1
- package/dist/components/guna-milan.js.map +2 -2
- package/dist/components/hd-connection.js +1 -1
- package/dist/components/hd-connection.js.map +2 -2
- package/dist/components/hd-penta.js +1 -1
- package/dist/components/hd-penta.js.map +2 -2
- package/dist/components/hd-type-card.js +1 -1
- package/dist/components/hd-type-card.js.map +2 -2
- package/dist/components/hd-variables.js +1 -1
- package/dist/components/hd-variables.js.map +2 -2
- package/dist/components/heliacal-table.js +1 -1
- package/dist/components/heliacal-table.js.map +2 -2
- package/dist/components/hexagram.js +1 -1
- package/dist/components/hexagram.js.map +2 -2
- package/dist/components/hora-table.js +1 -1
- package/dist/components/hora-table.js.map +2 -2
- package/dist/components/horoscope-card.js +1 -1
- package/dist/components/horoscope-card.js.map +2 -2
- package/dist/components/kp-chart.js +1 -1
- package/dist/components/kp-chart.js.map +2 -2
- package/dist/components/kp-planets-table.js +1 -1
- package/dist/components/kp-planets-table.js.map +2 -2
- package/dist/components/kp-ruling-planets.js +1 -1
- package/dist/components/kp-ruling-planets.js.map +2 -2
- package/dist/components/local-space-compass.js +1 -1
- package/dist/components/local-space-compass.js.map +2 -2
- package/dist/components/location-search.js +1 -1
- package/dist/components/location-search.js.map +2 -2
- package/dist/components/moon-phase.js +1 -1
- package/dist/components/moon-phase.js.map +2 -2
- package/dist/components/nakshatra-card.js +1 -1
- package/dist/components/nakshatra-card.js.map +2 -2
- package/dist/components/natal-chart.js +1 -1
- package/dist/components/natal-chart.js.map +2 -2
- package/dist/components/numerology-card.js +1 -1
- package/dist/components/numerology-card.js.map +2 -2
- package/dist/components/panchang-table.js +1 -1
- package/dist/components/panchang-table.js.map +2 -2
- package/dist/components/positions-table.js +1 -1
- package/dist/components/positions-table.js.map +2 -2
- package/dist/components/profection-card.js +1 -1
- package/dist/components/profection-card.js.map +2 -2
- package/dist/components/reference-card.js +1 -1
- package/dist/components/reference-card.js.map +2 -2
- package/dist/components/relocation-wheel.js +1 -1
- package/dist/components/relocation-wheel.js.map +2 -2
- package/dist/components/shadbala-table.js +1 -1
- package/dist/components/shadbala-table.js.map +2 -2
- package/dist/components/synastry-chart.js +1 -1
- package/dist/components/synastry-chart.js.map +2 -2
- package/dist/components/tarot-card.js +1 -1
- package/dist/components/tarot-card.js.map +2 -2
- package/dist/components/tarot-catalog.js +1 -1
- package/dist/components/tarot-catalog.js.map +2 -2
- package/dist/components/tarot-spread.js +1 -1
- package/dist/components/tarot-spread.js.map +2 -2
- package/dist/components/transit-wheel.js +1 -1
- package/dist/components/transit-wheel.js.map +2 -2
- package/dist/components/transits-table.js +1 -1
- package/dist/components/transits-table.js.map +2 -2
- package/dist/components/upagraha-table.js +1 -1
- package/dist/components/upagraha-table.js.map +2 -2
- package/dist/components/vedic-aspects.js +1 -1
- package/dist/components/vedic-aspects.js.map +2 -2
- package/dist/components/vedic-kundli.js +1 -1
- package/dist/components/vedic-kundli.js.map +2 -2
- package/dist/components/vedic-planets-table.js +1 -1
- package/dist/components/vedic-planets-table.js.map +2 -2
- package/dist/components/western-planets-table.js +1 -1
- package/dist/components/western-planets-table.js.map +2 -2
- package/dist/components/yoga-list.js +1 -1
- package/dist/components/yoga-list.js.map +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/load-ui.d.ts +37 -1
- package/dist/load-ui.d.ts.map +1 -1
- package/dist/load-ui.js +1 -1
- package/dist/load-ui.js.map +3 -3
- package/dist/types/types.gen.d.ts +135 -42
- package/dist/types/types.gen.d.ts.map +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -614,7 +614,9 @@ roxy-natal-chart::part(card) {
|
|
|
614
614
|
| `section` | Any structural block, paired with a specific name (`section patterns`), so `::part(patterns)` targets that block alone |
|
|
615
615
|
| `readings` | The interpretation accordion |
|
|
616
616
|
| `reading` | One disclosure card inside it |
|
|
617
|
-
| `form`, `loading`, `error`, `attribution` | The built-in states |
|
|
617
|
+
| `form`, `loading`, `error`, `edit-bar`, `attribution` | The built-in states, on every component |
|
|
618
|
+
|
|
619
|
+
The table is the shared vocabulary, not the whole list. **`components-catalog.json` carries a `parts` array for every component, so you can read the exact names a component answers to instead of guessing or inspecting the DOM.** A name means the same block wherever it appears, which is what makes one rule enough: `::part(aspects)` reaches the aspect grid on a natal chart, the aspect list on an aspects table and the transit aspects on a transits table alike.
|
|
618
620
|
|
|
619
621
|
Two notes. Parts reach exactly one shadow root deep, and a component that draws another one re-exports its parts, so `roxy-relocation-wheel::part(readings)` reaches the wheel it nests. And to remove a reading rather than hide it, use `hide-readings` (above): a `display: none` rule still ships the words in the page.
|
|
620
622
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent as
|
|
1
|
+
import{defineComponent as y,h as s,onMounted as b,ref as f}from"vue";var u="0.27.2",o="roxyapi-ui-loader",p="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",m="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",c="/dist/cdn",i=null;function g(e){return!e||e==="latest"?p:`${m}${e}${c}`}function a(e=u,r){return typeof document>"u"?Promise.resolve():i||(i=new Promise((n,d)=>{let l=`${r??g(e)}/roxy-ui.js`,t=document.getElementById(o);if(t){t.dataset.loaded==="true"?n():(t.addEventListener("load",()=>n()),t.addEventListener("error",()=>d(new Error("roxy-ui load failed"))));return}t=document.createElement("script"),t.id=o,t.src=l,t.async=!0,t.crossOrigin="anonymous",t.addEventListener("load",()=>{t.dataset.loaded="true",n()}),t.addEventListener("error",()=>d(new Error("roxy-ui load failed"))),document.head.appendChild(t)}),i)}var R=y({name:"RoxyAngelNumberCard",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},attribution:{type:String},hideReadings:{type:Boolean}},setup(e){let r=f(null);return b(()=>{a().catch(n=>{r.value=n instanceof Error?n:new Error(String(n))})}),()=>{if(r.value)return s("div",{role:"alert"},`Roxy UI script load failed: ${r.value.message}`);let n={};return e.data!==void 0&&(n[".data"]=e.data),e.endpoint!==void 0&&(n[".endpoint"]=e.endpoint),e.method!==void 0&&(n[".method"]=e.method),e.publishableKey!==void 0&&(n[".publishableKey"]=e.publishableKey),e.baseUrl!==void 0&&(n[".baseUrl"]=e.baseUrl),e.specUrl!==void 0&&(n[".specUrl"]=e.specUrl),e.lang!==void 0&&(n[".lang"]=e.lang),e.submitLabel!==void 0&&(n[".submitLabel"]=e.submitLabel),e.attribution!==void 0&&(n[".attribution"]=e.attribution),e.hideReadings!==void 0&&(n[".hideReadings"]=e.hideReadings),s("roxy-angel-number-card",n)}}});export{R as RoxyAngelNumberCard};
|
|
2
2
|
//# sourceMappingURL=angel-number-card.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/angel-number-card.ts", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { GetAngelNumberResponse } from '../types/index.js';\n\nexport interface RoxyAngelNumberCardProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: GetAngelNumberResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyAngelNumberCard = defineComponent({\n\tname: 'RoxyAngelNumberCard',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyAngelNumberCardProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyAngelNumberCardProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyAngelNumberCardProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyAngelNumberCardProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyAngelNumberCardProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyAngelNumberCardProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyAngelNumberCardProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyAngelNumberCardProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyAngelNumberCardProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAngelNumberCardProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-angel-number-card', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.1\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,
|
|
4
|
+
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { GetAngelNumberResponse } from '../types/index.js';\n\nexport interface RoxyAngelNumberCardProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: GetAngelNumberResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyAngelNumberCard = defineComponent({\n\tname: 'RoxyAngelNumberCard',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyAngelNumberCardProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyAngelNumberCardProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyAngelNumberCardProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyAngelNumberCardProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyAngelNumberCardProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyAngelNumberCardProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyAngelNumberCardProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyAngelNumberCardProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyAngelNumberCardProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAngelNumberCardProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-angel-number-card', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * {@link ensureLocaleLoaded} is the other half and is OPT-IN: it loads the label\n * catalogue for one language from the same release, so a non-English app calls\n * both. There is one catalogue, shipped by `@roxyapi/ui` and read by every\n * wrapper, so nothing is restated here.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.2\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n/** Every language a label catalogue ships for. English is absent on purpose: the catalogue key IS the English string, so an English page downloads nothing. */\nexport const ROXY_UI_LOCALES = [\"de\",\"es\",\"fr\",\"hi\",\"pt\",\"ru\",\"tr\"] as const;\n\nconst localesLoaded = new Map<string, Promise<void>>();\n\n/**\n * Load the label catalogue for one language, so the components write their own\n * headings, buttons, empty states and form labels in it.\n *\n * Call it once at app entry, beside `ensureScriptLoaded`. The components read the\n * language from the page (their own `lang` attribute, the nearest ancestor\n * carrying one, or `<html lang>`), so this call supplies the WORDS and the page\n * supplies the CHOICE. Loading a catalogue a page never asks for is harmless.\n *\n * `es-AR`, `es-MX` and `es-419` all resolve to the `es` catalogue, so pass the\n * page tag as it stands. English resolves to nothing at all and is not an error:\n * the catalogue is keyed by the English text, so an English page needs no payload.\n * A language outside `ROXY_UI_LOCALES` resolves the same way rather than appending\n * a script tag that 404s.\n *\n * `version` and `baseUrl` behave exactly as they do for {@link ensureScriptLoaded},\n * and passing the same `baseUrl` to both is what an air-gapped or strict-CSP host\n * needs: copy `node_modules/@roxyapi/ui/dist/cdn/` onto your own origin, which\n * carries `locales/` beside `roxy-ui.js`.\n *\n * @example\n * ```ts\n * import { ensureScriptLoaded, ensureLocaleLoaded } from '@roxyapi/ui-vue';\n *\n * ensureScriptLoaded();\n * ensureLocaleLoaded(document.documentElement.lang);\n * ```\n */\nexport function ensureLocaleLoaded(\n\tlang: string,\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tconst base = (lang || '').toLowerCase().split('-')[0] ?? '';\n\tif (!(ROXY_UI_LOCALES as readonly string[]).includes(base)) {\n\t\treturn Promise.resolve();\n\t}\n\tconst existing = localesLoaded.get(base);\n\tif (existing) return existing;\n\n\tconst pending = new Promise<void>((resolve, reject) => {\n\t\tconst id = `${SCRIPT_ID}-locale-${base}`;\n\t\tlet el = document.getElementById(id) as HTMLScriptElement | null;\n\t\tif (el) {\n\t\t\tif (el.dataset.loaded === 'true') resolve();\n\t\t\telse {\n\t\t\t\tel.addEventListener('load', () => resolve());\n\t\t\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tel = document.createElement('script');\n\t\tel.id = id;\n\t\tel.src = `${baseUrl ?? buildBase(version)}/locales/${base}.js`;\n\t\tel.async = true;\n\t\tel.crossOrigin = 'anonymous';\n\t\tel.addEventListener('load', () => {\n\t\t\tel!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\tdocument.head.appendChild(el);\n\t});\n\tlocalesLoaded.set(base, pending);\n\treturn pending;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,MCyB3D,IAAMC,EAAkB,SAEzBC,EAAY,oBACZC,EAAkB,2DAClBC,EAAkB,4CAClBC,EAAkB,YAEpBC,EAA+B,KAEnC,SAASC,EAAUC,EAAyB,CAC3C,MAAI,CAACA,GAAWA,IAAY,SAAiBL,EACtC,GAAGC,CAAe,GAAGI,CAAO,GAAGH,CAAe,EACtD,CAEO,SAASI,EACfD,EAAkBP,EAClBS,EACgB,CAChB,OAAI,OAAO,SAAa,IAAoB,QAAQ,QAAQ,EACxDJ,IAEJA,EAAS,IAAI,QAAc,CAACK,EAASC,IAAW,CAC/C,IAAMC,EAAM,GAAGH,GAAWH,EAAUC,CAAO,CAAC,cACxCM,EAAW,SAAS,eAAeZ,CAAS,EAChD,GAAIY,EAAU,CACTA,EAAS,QAAQ,SAAW,OAC/BH,EAAQ,GAERG,EAAS,iBAAiB,OAAQ,IAAMH,EAAQ,CAAC,EACjDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,GAElF,MACD,CACAE,EAAW,SAAS,cAAc,QAAQ,EAC1CA,EAAS,GAAKZ,EACdY,EAAS,IAAMD,EACfC,EAAS,MAAQ,GACjBA,EAAS,YAAc,YACvBA,EAAS,iBAAiB,OAAQ,IAAM,CACvCA,EAAU,QAAQ,OAAS,OAC3BH,EAAQ,CACT,CAAC,EACDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,EACjF,SAAS,KAAK,YAAYE,CAAQ,CACnC,CAAC,EACMR,EACR,CD5CO,IAAMS,EAAsBC,EAAgB,CAClD,KAAM,sBACN,MAAO,CACN,KAAM,CAAE,KAAM,MAAqD,EACnE,SAAU,CAAE,KAAM,MAAyD,EAC3E,OAAQ,CAAE,KAAM,MAAuD,EACvE,eAAgB,CAAE,KAAM,MAA+D,EACvF,QAAS,CAAE,KAAM,MAAwD,EACzE,QAAS,CAAE,KAAM,MAAwD,EACzE,KAAM,CAAE,KAAM,MAAqD,EACnE,YAAa,CAAE,KAAM,MAA4D,EACjF,YAAa,CAAE,KAAM,MAA4D,EACjF,aAAc,CAAE,KAAM,OAA8D,CACrF,EACA,MAAMC,EAAO,CACZ,IAAMC,EAAYC,EAAkB,IAAI,EAExC,OAAAC,EAAU,IAAM,CACfC,EAAmB,EAAE,MAAOC,GAAiB,CAC5CJ,EAAU,MAAQI,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CACrE,CAAC,CACF,CAAC,EAEM,IAAM,CACZ,GAAIJ,EAAU,MACb,OAAOK,EACN,MACA,CAAE,KAAM,OAAQ,EAChB,+BAA+BL,EAAU,MAAM,OAAO,EACvD,EAGD,IAAMM,EAAwC,CAAC,EAC/C,OAAIP,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,WAAa,SAAWO,EAAa,WAAW,EAAIP,EAAM,UAChEA,EAAM,SAAW,SAAWO,EAAa,SAAS,EAAIP,EAAM,QAC5DA,EAAM,iBAAmB,SAAWO,EAAa,iBAAiB,EAAIP,EAAM,gBAC5EA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,eAAiB,SAAWO,EAAa,eAAe,EAAIP,EAAM,cAErEM,EAAE,yBAA0BC,CAAY,CAChD,CACD,CACD,CAAC",
|
|
6
6
|
"names": ["defineComponent", "h", "onMounted", "ref", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyAngelNumberCard", "defineComponent", "props", "loadError", "ref", "onMounted", "ensureScriptLoaded", "err", "h", "elementProps"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent as g,h as
|
|
1
|
+
import{defineComponent as g,h as s,onMounted as b,ref as f}from"vue";var u="0.27.2",d="roxyapi-ui-loader",p="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",c="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",m="/dist/cdn",o=null;function y(e){return!e||e==="latest"?p:`${c}${e}${m}`}function a(e=u,r){return typeof document>"u"?Promise.resolve():o||(o=new Promise((n,i)=>{let l=`${r??y(e)}/roxy-ui.js`,t=document.getElementById(d);if(t){t.dataset.loaded==="true"?n():(t.addEventListener("load",()=>n()),t.addEventListener("error",()=>i(new Error("roxy-ui load failed"))));return}t=document.createElement("script"),t.id=d,t.src=l,t.async=!0,t.crossOrigin="anonymous",t.addEventListener("load",()=>{t.dataset.loaded="true",n()}),t.addEventListener("error",()=>i(new Error("roxy-ui load failed"))),document.head.appendChild(t)}),o)}var E=g({name:"RoxyAngelNumberLookup",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},attribution:{type:String},hideReadings:{type:Boolean}},setup(e){let r=f(null);return b(()=>{a().catch(n=>{r.value=n instanceof Error?n:new Error(String(n))})}),()=>{if(r.value)return s("div",{role:"alert"},`Roxy UI script load failed: ${r.value.message}`);let n={};return e.data!==void 0&&(n[".data"]=e.data),e.endpoint!==void 0&&(n[".endpoint"]=e.endpoint),e.method!==void 0&&(n[".method"]=e.method),e.publishableKey!==void 0&&(n[".publishableKey"]=e.publishableKey),e.baseUrl!==void 0&&(n[".baseUrl"]=e.baseUrl),e.specUrl!==void 0&&(n[".specUrl"]=e.specUrl),e.lang!==void 0&&(n[".lang"]=e.lang),e.submitLabel!==void 0&&(n[".submitLabel"]=e.submitLabel),e.attribution!==void 0&&(n[".attribution"]=e.attribution),e.hideReadings!==void 0&&(n[".hideReadings"]=e.hideReadings),s("roxy-angel-number-lookup",n)}}});export{E as RoxyAngelNumberLookup};
|
|
2
2
|
//# sourceMappingURL=angel-number-lookup.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/angel-number-lookup.ts", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { AnalyzeNumberSequenceResponse } from '../types/index.js';\n\nexport interface RoxyAngelNumberLookupProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: AnalyzeNumberSequenceResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyAngelNumberLookup = defineComponent({\n\tname: 'RoxyAngelNumberLookup',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyAngelNumberLookupProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyAngelNumberLookupProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyAngelNumberLookupProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyAngelNumberLookupProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyAngelNumberLookupProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyAngelNumberLookupProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyAngelNumberLookupProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyAngelNumberLookupProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyAngelNumberLookupProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAngelNumberLookupProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-angel-number-lookup', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.1\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,
|
|
4
|
+
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { AnalyzeNumberSequenceResponse } from '../types/index.js';\n\nexport interface RoxyAngelNumberLookupProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: AnalyzeNumberSequenceResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyAngelNumberLookup = defineComponent({\n\tname: 'RoxyAngelNumberLookup',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyAngelNumberLookupProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyAngelNumberLookupProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyAngelNumberLookupProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyAngelNumberLookupProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyAngelNumberLookupProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyAngelNumberLookupProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyAngelNumberLookupProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyAngelNumberLookupProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyAngelNumberLookupProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAngelNumberLookupProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-angel-number-lookup', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * {@link ensureLocaleLoaded} is the other half and is OPT-IN: it loads the label\n * catalogue for one language from the same release, so a non-English app calls\n * both. There is one catalogue, shipped by `@roxyapi/ui` and read by every\n * wrapper, so nothing is restated here.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.2\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n/** Every language a label catalogue ships for. English is absent on purpose: the catalogue key IS the English string, so an English page downloads nothing. */\nexport const ROXY_UI_LOCALES = [\"de\",\"es\",\"fr\",\"hi\",\"pt\",\"ru\",\"tr\"] as const;\n\nconst localesLoaded = new Map<string, Promise<void>>();\n\n/**\n * Load the label catalogue for one language, so the components write their own\n * headings, buttons, empty states and form labels in it.\n *\n * Call it once at app entry, beside `ensureScriptLoaded`. The components read the\n * language from the page (their own `lang` attribute, the nearest ancestor\n * carrying one, or `<html lang>`), so this call supplies the WORDS and the page\n * supplies the CHOICE. Loading a catalogue a page never asks for is harmless.\n *\n * `es-AR`, `es-MX` and `es-419` all resolve to the `es` catalogue, so pass the\n * page tag as it stands. English resolves to nothing at all and is not an error:\n * the catalogue is keyed by the English text, so an English page needs no payload.\n * A language outside `ROXY_UI_LOCALES` resolves the same way rather than appending\n * a script tag that 404s.\n *\n * `version` and `baseUrl` behave exactly as they do for {@link ensureScriptLoaded},\n * and passing the same `baseUrl` to both is what an air-gapped or strict-CSP host\n * needs: copy `node_modules/@roxyapi/ui/dist/cdn/` onto your own origin, which\n * carries `locales/` beside `roxy-ui.js`.\n *\n * @example\n * ```ts\n * import { ensureScriptLoaded, ensureLocaleLoaded } from '@roxyapi/ui-vue';\n *\n * ensureScriptLoaded();\n * ensureLocaleLoaded(document.documentElement.lang);\n * ```\n */\nexport function ensureLocaleLoaded(\n\tlang: string,\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tconst base = (lang || '').toLowerCase().split('-')[0] ?? '';\n\tif (!(ROXY_UI_LOCALES as readonly string[]).includes(base)) {\n\t\treturn Promise.resolve();\n\t}\n\tconst existing = localesLoaded.get(base);\n\tif (existing) return existing;\n\n\tconst pending = new Promise<void>((resolve, reject) => {\n\t\tconst id = `${SCRIPT_ID}-locale-${base}`;\n\t\tlet el = document.getElementById(id) as HTMLScriptElement | null;\n\t\tif (el) {\n\t\t\tif (el.dataset.loaded === 'true') resolve();\n\t\t\telse {\n\t\t\t\tel.addEventListener('load', () => resolve());\n\t\t\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tel = document.createElement('script');\n\t\tel.id = id;\n\t\tel.src = `${baseUrl ?? buildBase(version)}/locales/${base}.js`;\n\t\tel.async = true;\n\t\tel.crossOrigin = 'anonymous';\n\t\tel.addEventListener('load', () => {\n\t\t\tel!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\tdocument.head.appendChild(el);\n\t});\n\tlocalesLoaded.set(base, pending);\n\treturn pending;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,MCyB3D,IAAMC,EAAkB,SAEzBC,EAAY,oBACZC,EAAkB,2DAClBC,EAAkB,4CAClBC,EAAkB,YAEpBC,EAA+B,KAEnC,SAASC,EAAUC,EAAyB,CAC3C,MAAI,CAACA,GAAWA,IAAY,SAAiBL,EACtC,GAAGC,CAAe,GAAGI,CAAO,GAAGH,CAAe,EACtD,CAEO,SAASI,EACfD,EAAkBP,EAClBS,EACgB,CAChB,OAAI,OAAO,SAAa,IAAoB,QAAQ,QAAQ,EACxDJ,IAEJA,EAAS,IAAI,QAAc,CAACK,EAASC,IAAW,CAC/C,IAAMC,EAAM,GAAGH,GAAWH,EAAUC,CAAO,CAAC,cACxCM,EAAW,SAAS,eAAeZ,CAAS,EAChD,GAAIY,EAAU,CACTA,EAAS,QAAQ,SAAW,OAC/BH,EAAQ,GAERG,EAAS,iBAAiB,OAAQ,IAAMH,EAAQ,CAAC,EACjDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,GAElF,MACD,CACAE,EAAW,SAAS,cAAc,QAAQ,EAC1CA,EAAS,GAAKZ,EACdY,EAAS,IAAMD,EACfC,EAAS,MAAQ,GACjBA,EAAS,YAAc,YACvBA,EAAS,iBAAiB,OAAQ,IAAM,CACvCA,EAAU,QAAQ,OAAS,OAC3BH,EAAQ,CACT,CAAC,EACDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,EACjF,SAAS,KAAK,YAAYE,CAAQ,CACnC,CAAC,EACMR,EACR,CD5CO,IAAMS,EAAwBC,EAAgB,CACpD,KAAM,wBACN,MAAO,CACN,KAAM,CAAE,KAAM,MAAuD,EACrE,SAAU,CAAE,KAAM,MAA2D,EAC7E,OAAQ,CAAE,KAAM,MAAyD,EACzE,eAAgB,CAAE,KAAM,MAAiE,EACzF,QAAS,CAAE,KAAM,MAA0D,EAC3E,QAAS,CAAE,KAAM,MAA0D,EAC3E,KAAM,CAAE,KAAM,MAAuD,EACrE,YAAa,CAAE,KAAM,MAA8D,EACnF,YAAa,CAAE,KAAM,MAA8D,EACnF,aAAc,CAAE,KAAM,OAAgE,CACvF,EACA,MAAMC,EAAO,CACZ,IAAMC,EAAYC,EAAkB,IAAI,EAExC,OAAAC,EAAU,IAAM,CACfC,EAAmB,EAAE,MAAOC,GAAiB,CAC5CJ,EAAU,MAAQI,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CACrE,CAAC,CACF,CAAC,EAEM,IAAM,CACZ,GAAIJ,EAAU,MACb,OAAOK,EACN,MACA,CAAE,KAAM,OAAQ,EAChB,+BAA+BL,EAAU,MAAM,OAAO,EACvD,EAGD,IAAMM,EAAwC,CAAC,EAC/C,OAAIP,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,WAAa,SAAWO,EAAa,WAAW,EAAIP,EAAM,UAChEA,EAAM,SAAW,SAAWO,EAAa,SAAS,EAAIP,EAAM,QAC5DA,EAAM,iBAAmB,SAAWO,EAAa,iBAAiB,EAAIP,EAAM,gBAC5EA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,eAAiB,SAAWO,EAAa,eAAe,EAAIP,EAAM,cAErEM,EAAE,2BAA4BC,CAAY,CAClD,CACD,CACD,CAAC",
|
|
6
6
|
"names": ["defineComponent", "h", "onMounted", "ref", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyAngelNumberLookup", "defineComponent", "props", "loadError", "ref", "onMounted", "ensureScriptLoaded", "err", "h", "elementProps"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent as
|
|
1
|
+
import{defineComponent as m,h as s,onMounted as P,ref as g}from"vue";var u="0.27.2",i="roxyapi-ui-loader",p="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",c="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",y="/dist/cdn",a=null;function f(e){return!e||e==="latest"?p:`${c}${e}${y}`}function o(e=u,r){return typeof document>"u"?Promise.resolve():a||(a=new Promise((t,d)=>{let l=`${r??f(e)}/roxy-ui.js`,n=document.getElementById(i);if(n){n.dataset.loaded==="true"?t():(n.addEventListener("load",()=>t()),n.addEventListener("error",()=>d(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=i,n.src=l,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",t()}),n.addEventListener("error",()=>d(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),a)}var E=m({name:"RoxyArudhaPadas",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},attribution:{type:String},hideReadings:{type:Boolean}},setup(e){let r=g(null);return P(()=>{o().catch(t=>{r.value=t instanceof Error?t:new Error(String(t))})}),()=>{if(r.value)return s("div",{role:"alert"},`Roxy UI script load failed: ${r.value.message}`);let t={};return e.data!==void 0&&(t[".data"]=e.data),e.endpoint!==void 0&&(t[".endpoint"]=e.endpoint),e.method!==void 0&&(t[".method"]=e.method),e.publishableKey!==void 0&&(t[".publishableKey"]=e.publishableKey),e.baseUrl!==void 0&&(t[".baseUrl"]=e.baseUrl),e.specUrl!==void 0&&(t[".specUrl"]=e.specUrl),e.lang!==void 0&&(t[".lang"]=e.lang),e.submitLabel!==void 0&&(t[".submitLabel"]=e.submitLabel),e.attribution!==void 0&&(t[".attribution"]=e.attribution),e.hideReadings!==void 0&&(t[".hideReadings"]=e.hideReadings),s("roxy-arudha-padas",t)}}});export{E as RoxyArudhaPadas};
|
|
2
2
|
//# sourceMappingURL=arudha-padas.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/arudha-padas.ts", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { ArudhaResponse } from '../types/index.js';\n\nexport interface RoxyArudhaPadasProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: ArudhaResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyArudhaPadas = defineComponent({\n\tname: 'RoxyArudhaPadas',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyArudhaPadasProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyArudhaPadasProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyArudhaPadasProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyArudhaPadasProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyArudhaPadasProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyArudhaPadasProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyArudhaPadasProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyArudhaPadasProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyArudhaPadasProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyArudhaPadasProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-arudha-padas', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.1\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,
|
|
4
|
+
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { ArudhaResponse } from '../types/index.js';\n\nexport interface RoxyArudhaPadasProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: ArudhaResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyArudhaPadas = defineComponent({\n\tname: 'RoxyArudhaPadas',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyArudhaPadasProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyArudhaPadasProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyArudhaPadasProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyArudhaPadasProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyArudhaPadasProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyArudhaPadasProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyArudhaPadasProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyArudhaPadasProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyArudhaPadasProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyArudhaPadasProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-arudha-padas', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * {@link ensureLocaleLoaded} is the other half and is OPT-IN: it loads the label\n * catalogue for one language from the same release, so a non-English app calls\n * both. There is one catalogue, shipped by `@roxyapi/ui` and read by every\n * wrapper, so nothing is restated here.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.2\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n/** Every language a label catalogue ships for. English is absent on purpose: the catalogue key IS the English string, so an English page downloads nothing. */\nexport const ROXY_UI_LOCALES = [\"de\",\"es\",\"fr\",\"hi\",\"pt\",\"ru\",\"tr\"] as const;\n\nconst localesLoaded = new Map<string, Promise<void>>();\n\n/**\n * Load the label catalogue for one language, so the components write their own\n * headings, buttons, empty states and form labels in it.\n *\n * Call it once at app entry, beside `ensureScriptLoaded`. The components read the\n * language from the page (their own `lang` attribute, the nearest ancestor\n * carrying one, or `<html lang>`), so this call supplies the WORDS and the page\n * supplies the CHOICE. Loading a catalogue a page never asks for is harmless.\n *\n * `es-AR`, `es-MX` and `es-419` all resolve to the `es` catalogue, so pass the\n * page tag as it stands. English resolves to nothing at all and is not an error:\n * the catalogue is keyed by the English text, so an English page needs no payload.\n * A language outside `ROXY_UI_LOCALES` resolves the same way rather than appending\n * a script tag that 404s.\n *\n * `version` and `baseUrl` behave exactly as they do for {@link ensureScriptLoaded},\n * and passing the same `baseUrl` to both is what an air-gapped or strict-CSP host\n * needs: copy `node_modules/@roxyapi/ui/dist/cdn/` onto your own origin, which\n * carries `locales/` beside `roxy-ui.js`.\n *\n * @example\n * ```ts\n * import { ensureScriptLoaded, ensureLocaleLoaded } from '@roxyapi/ui-vue';\n *\n * ensureScriptLoaded();\n * ensureLocaleLoaded(document.documentElement.lang);\n * ```\n */\nexport function ensureLocaleLoaded(\n\tlang: string,\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tconst base = (lang || '').toLowerCase().split('-')[0] ?? '';\n\tif (!(ROXY_UI_LOCALES as readonly string[]).includes(base)) {\n\t\treturn Promise.resolve();\n\t}\n\tconst existing = localesLoaded.get(base);\n\tif (existing) return existing;\n\n\tconst pending = new Promise<void>((resolve, reject) => {\n\t\tconst id = `${SCRIPT_ID}-locale-${base}`;\n\t\tlet el = document.getElementById(id) as HTMLScriptElement | null;\n\t\tif (el) {\n\t\t\tif (el.dataset.loaded === 'true') resolve();\n\t\t\telse {\n\t\t\t\tel.addEventListener('load', () => resolve());\n\t\t\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tel = document.createElement('script');\n\t\tel.id = id;\n\t\tel.src = `${baseUrl ?? buildBase(version)}/locales/${base}.js`;\n\t\tel.async = true;\n\t\tel.crossOrigin = 'anonymous';\n\t\tel.addEventListener('load', () => {\n\t\t\tel!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\tdocument.head.appendChild(el);\n\t});\n\tlocalesLoaded.set(base, pending);\n\treturn pending;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,MCyB3D,IAAMC,EAAkB,SAEzBC,EAAY,oBACZC,EAAkB,2DAClBC,EAAkB,4CAClBC,EAAkB,YAEpBC,EAA+B,KAEnC,SAASC,EAAUC,EAAyB,CAC3C,MAAI,CAACA,GAAWA,IAAY,SAAiBL,EACtC,GAAGC,CAAe,GAAGI,CAAO,GAAGH,CAAe,EACtD,CAEO,SAASI,EACfD,EAAkBP,EAClBS,EACgB,CAChB,OAAI,OAAO,SAAa,IAAoB,QAAQ,QAAQ,EACxDJ,IAEJA,EAAS,IAAI,QAAc,CAACK,EAASC,IAAW,CAC/C,IAAMC,EAAM,GAAGH,GAAWH,EAAUC,CAAO,CAAC,cACxCM,EAAW,SAAS,eAAeZ,CAAS,EAChD,GAAIY,EAAU,CACTA,EAAS,QAAQ,SAAW,OAC/BH,EAAQ,GAERG,EAAS,iBAAiB,OAAQ,IAAMH,EAAQ,CAAC,EACjDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,GAElF,MACD,CACAE,EAAW,SAAS,cAAc,QAAQ,EAC1CA,EAAS,GAAKZ,EACdY,EAAS,IAAMD,EACfC,EAAS,MAAQ,GACjBA,EAAS,YAAc,YACvBA,EAAS,iBAAiB,OAAQ,IAAM,CACvCA,EAAU,QAAQ,OAAS,OAC3BH,EAAQ,CACT,CAAC,EACDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,EACjF,SAAS,KAAK,YAAYE,CAAQ,CACnC,CAAC,EACMR,EACR,CD5CO,IAAMS,EAAkBC,EAAgB,CAC9C,KAAM,kBACN,MAAO,CACN,KAAM,CAAE,KAAM,MAAiD,EAC/D,SAAU,CAAE,KAAM,MAAqD,EACvE,OAAQ,CAAE,KAAM,MAAmD,EACnE,eAAgB,CAAE,KAAM,MAA2D,EACnF,QAAS,CAAE,KAAM,MAAoD,EACrE,QAAS,CAAE,KAAM,MAAoD,EACrE,KAAM,CAAE,KAAM,MAAiD,EAC/D,YAAa,CAAE,KAAM,MAAwD,EAC7E,YAAa,CAAE,KAAM,MAAwD,EAC7E,aAAc,CAAE,KAAM,OAA0D,CACjF,EACA,MAAMC,EAAO,CACZ,IAAMC,EAAYC,EAAkB,IAAI,EAExC,OAAAC,EAAU,IAAM,CACfC,EAAmB,EAAE,MAAOC,GAAiB,CAC5CJ,EAAU,MAAQI,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CACrE,CAAC,CACF,CAAC,EAEM,IAAM,CACZ,GAAIJ,EAAU,MACb,OAAOK,EACN,MACA,CAAE,KAAM,OAAQ,EAChB,+BAA+BL,EAAU,MAAM,OAAO,EACvD,EAGD,IAAMM,EAAwC,CAAC,EAC/C,OAAIP,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,WAAa,SAAWO,EAAa,WAAW,EAAIP,EAAM,UAChEA,EAAM,SAAW,SAAWO,EAAa,SAAS,EAAIP,EAAM,QAC5DA,EAAM,iBAAmB,SAAWO,EAAa,iBAAiB,EAAIP,EAAM,gBAC5EA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,eAAiB,SAAWO,EAAa,eAAe,EAAIP,EAAM,cAErEM,EAAE,oBAAqBC,CAAY,CAC3C,CACD,CACD,CAAC",
|
|
6
6
|
"names": ["defineComponent", "h", "onMounted", "ref", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyArudhaPadas", "defineComponent", "props", "loadError", "ref", "onMounted", "ensureScriptLoaded", "err", "h", "elementProps"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent as
|
|
1
|
+
import{defineComponent as f,h as s,onMounted as m,ref as h}from"vue";var u="0.27.2",d="roxyapi-ui-loader",p="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",g="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",c="/dist/cdn",n=null;function y(e){return!e||e==="latest"?p:`${g}${e}${c}`}function o(e=u,a){return typeof document>"u"?Promise.resolve():n||(n=new Promise((t,i)=>{let l=`${a??y(e)}/roxy-ui.js`,r=document.getElementById(d);if(r){r.dataset.loaded==="true"?t():(r.addEventListener("load",()=>t()),r.addEventListener("error",()=>i(new Error("roxy-ui load failed"))));return}r=document.createElement("script"),r.id=d,r.src=l,r.async=!0,r.crossOrigin="anonymous",r.addEventListener("load",()=>{r.dataset.loaded="true",t()}),r.addEventListener("error",()=>i(new Error("roxy-ui load failed"))),document.head.appendChild(r)}),n)}var x=f({name:"RoxyAshtakavargaGrid",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},attribution:{type:String},hideReadings:{type:Boolean}},setup(e){let a=h(null);return m(()=>{o().catch(t=>{a.value=t instanceof Error?t:new Error(String(t))})}),()=>{if(a.value)return s("div",{role:"alert"},`Roxy UI script load failed: ${a.value.message}`);let t={};return e.data!==void 0&&(t[".data"]=e.data),e.endpoint!==void 0&&(t[".endpoint"]=e.endpoint),e.method!==void 0&&(t[".method"]=e.method),e.publishableKey!==void 0&&(t[".publishableKey"]=e.publishableKey),e.baseUrl!==void 0&&(t[".baseUrl"]=e.baseUrl),e.specUrl!==void 0&&(t[".specUrl"]=e.specUrl),e.lang!==void 0&&(t[".lang"]=e.lang),e.submitLabel!==void 0&&(t[".submitLabel"]=e.submitLabel),e.attribution!==void 0&&(t[".attribution"]=e.attribution),e.hideReadings!==void 0&&(t[".hideReadings"]=e.hideReadings),s("roxy-ashtakavarga-grid",t)}}});export{x as RoxyAshtakavargaGrid};
|
|
2
2
|
//# sourceMappingURL=ashtakavarga-grid.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/ashtakavarga-grid.ts", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { AshtakavargaResponse } from '../types/index.js';\n\nexport interface RoxyAshtakavargaGridProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: AshtakavargaResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyAshtakavargaGrid = defineComponent({\n\tname: 'RoxyAshtakavargaGrid',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyAshtakavargaGridProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyAshtakavargaGridProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyAshtakavargaGridProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyAshtakavargaGridProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyAshtakavargaGridProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyAshtakavargaGridProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyAshtakavargaGridProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyAshtakavargaGridProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyAshtakavargaGridProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAshtakavargaGridProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-ashtakavarga-grid', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.1\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,
|
|
4
|
+
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { AshtakavargaResponse } from '../types/index.js';\n\nexport interface RoxyAshtakavargaGridProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: AshtakavargaResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyAshtakavargaGrid = defineComponent({\n\tname: 'RoxyAshtakavargaGrid',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyAshtakavargaGridProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyAshtakavargaGridProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyAshtakavargaGridProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyAshtakavargaGridProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyAshtakavargaGridProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyAshtakavargaGridProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyAshtakavargaGridProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyAshtakavargaGridProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyAshtakavargaGridProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAshtakavargaGridProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-ashtakavarga-grid', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * {@link ensureLocaleLoaded} is the other half and is OPT-IN: it loads the label\n * catalogue for one language from the same release, so a non-English app calls\n * both. There is one catalogue, shipped by `@roxyapi/ui` and read by every\n * wrapper, so nothing is restated here.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.2\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n/** Every language a label catalogue ships for. English is absent on purpose: the catalogue key IS the English string, so an English page downloads nothing. */\nexport const ROXY_UI_LOCALES = [\"de\",\"es\",\"fr\",\"hi\",\"pt\",\"ru\",\"tr\"] as const;\n\nconst localesLoaded = new Map<string, Promise<void>>();\n\n/**\n * Load the label catalogue for one language, so the components write their own\n * headings, buttons, empty states and form labels in it.\n *\n * Call it once at app entry, beside `ensureScriptLoaded`. The components read the\n * language from the page (their own `lang` attribute, the nearest ancestor\n * carrying one, or `<html lang>`), so this call supplies the WORDS and the page\n * supplies the CHOICE. Loading a catalogue a page never asks for is harmless.\n *\n * `es-AR`, `es-MX` and `es-419` all resolve to the `es` catalogue, so pass the\n * page tag as it stands. English resolves to nothing at all and is not an error:\n * the catalogue is keyed by the English text, so an English page needs no payload.\n * A language outside `ROXY_UI_LOCALES` resolves the same way rather than appending\n * a script tag that 404s.\n *\n * `version` and `baseUrl` behave exactly as they do for {@link ensureScriptLoaded},\n * and passing the same `baseUrl` to both is what an air-gapped or strict-CSP host\n * needs: copy `node_modules/@roxyapi/ui/dist/cdn/` onto your own origin, which\n * carries `locales/` beside `roxy-ui.js`.\n *\n * @example\n * ```ts\n * import { ensureScriptLoaded, ensureLocaleLoaded } from '@roxyapi/ui-vue';\n *\n * ensureScriptLoaded();\n * ensureLocaleLoaded(document.documentElement.lang);\n * ```\n */\nexport function ensureLocaleLoaded(\n\tlang: string,\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tconst base = (lang || '').toLowerCase().split('-')[0] ?? '';\n\tif (!(ROXY_UI_LOCALES as readonly string[]).includes(base)) {\n\t\treturn Promise.resolve();\n\t}\n\tconst existing = localesLoaded.get(base);\n\tif (existing) return existing;\n\n\tconst pending = new Promise<void>((resolve, reject) => {\n\t\tconst id = `${SCRIPT_ID}-locale-${base}`;\n\t\tlet el = document.getElementById(id) as HTMLScriptElement | null;\n\t\tif (el) {\n\t\t\tif (el.dataset.loaded === 'true') resolve();\n\t\t\telse {\n\t\t\t\tel.addEventListener('load', () => resolve());\n\t\t\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tel = document.createElement('script');\n\t\tel.id = id;\n\t\tel.src = `${baseUrl ?? buildBase(version)}/locales/${base}.js`;\n\t\tel.async = true;\n\t\tel.crossOrigin = 'anonymous';\n\t\tel.addEventListener('load', () => {\n\t\t\tel!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\tdocument.head.appendChild(el);\n\t});\n\tlocalesLoaded.set(base, pending);\n\treturn pending;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,MCyB3D,IAAMC,EAAkB,SAEzBC,EAAY,oBACZC,EAAkB,2DAClBC,EAAkB,4CAClBC,EAAkB,YAEpBC,EAA+B,KAEnC,SAASC,EAAUC,EAAyB,CAC3C,MAAI,CAACA,GAAWA,IAAY,SAAiBL,EACtC,GAAGC,CAAe,GAAGI,CAAO,GAAGH,CAAe,EACtD,CAEO,SAASI,EACfD,EAAkBP,EAClBS,EACgB,CAChB,OAAI,OAAO,SAAa,IAAoB,QAAQ,QAAQ,EACxDJ,IAEJA,EAAS,IAAI,QAAc,CAACK,EAASC,IAAW,CAC/C,IAAMC,EAAM,GAAGH,GAAWH,EAAUC,CAAO,CAAC,cACxCM,EAAW,SAAS,eAAeZ,CAAS,EAChD,GAAIY,EAAU,CACTA,EAAS,QAAQ,SAAW,OAC/BH,EAAQ,GAERG,EAAS,iBAAiB,OAAQ,IAAMH,EAAQ,CAAC,EACjDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,GAElF,MACD,CACAE,EAAW,SAAS,cAAc,QAAQ,EAC1CA,EAAS,GAAKZ,EACdY,EAAS,IAAMD,EACfC,EAAS,MAAQ,GACjBA,EAAS,YAAc,YACvBA,EAAS,iBAAiB,OAAQ,IAAM,CACvCA,EAAU,QAAQ,OAAS,OAC3BH,EAAQ,CACT,CAAC,EACDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,EACjF,SAAS,KAAK,YAAYE,CAAQ,CACnC,CAAC,EACMR,EACR,CD5CO,IAAMS,EAAuBC,EAAgB,CACnD,KAAM,uBACN,MAAO,CACN,KAAM,CAAE,KAAM,MAAsD,EACpE,SAAU,CAAE,KAAM,MAA0D,EAC5E,OAAQ,CAAE,KAAM,MAAwD,EACxE,eAAgB,CAAE,KAAM,MAAgE,EACxF,QAAS,CAAE,KAAM,MAAyD,EAC1E,QAAS,CAAE,KAAM,MAAyD,EAC1E,KAAM,CAAE,KAAM,MAAsD,EACpE,YAAa,CAAE,KAAM,MAA6D,EAClF,YAAa,CAAE,KAAM,MAA6D,EAClF,aAAc,CAAE,KAAM,OAA+D,CACtF,EACA,MAAMC,EAAO,CACZ,IAAMC,EAAYC,EAAkB,IAAI,EAExC,OAAAC,EAAU,IAAM,CACfC,EAAmB,EAAE,MAAOC,GAAiB,CAC5CJ,EAAU,MAAQI,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CACrE,CAAC,CACF,CAAC,EAEM,IAAM,CACZ,GAAIJ,EAAU,MACb,OAAOK,EACN,MACA,CAAE,KAAM,OAAQ,EAChB,+BAA+BL,EAAU,MAAM,OAAO,EACvD,EAGD,IAAMM,EAAwC,CAAC,EAC/C,OAAIP,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,WAAa,SAAWO,EAAa,WAAW,EAAIP,EAAM,UAChEA,EAAM,SAAW,SAAWO,EAAa,SAAS,EAAIP,EAAM,QAC5DA,EAAM,iBAAmB,SAAWO,EAAa,iBAAiB,EAAIP,EAAM,gBAC5EA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,eAAiB,SAAWO,EAAa,eAAe,EAAIP,EAAM,cAErEM,EAAE,yBAA0BC,CAAY,CAChD,CACD,CACD,CAAC",
|
|
6
6
|
"names": ["defineComponent", "h", "onMounted", "ref", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyAshtakavargaGrid", "defineComponent", "props", "loadError", "ref", "onMounted", "ensureScriptLoaded", "err", "h", "elementProps"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent as f,h as d,onMounted as
|
|
1
|
+
import{defineComponent as f,h as d,onMounted as m,ref as g}from"vue";var u="0.27.2",a="roxyapi-ui-loader",p="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",c="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",y="/dist/cdn",r=null;function b(e){return!e||e==="latest"?p:`${c}${e}${y}`}function o(e=u,s){return typeof document>"u"?Promise.resolve():r||(r=new Promise((t,i)=>{let l=`${s??b(e)}/roxy-ui.js`,n=document.getElementById(a);if(n){n.dataset.loaded==="true"?t():(n.addEventListener("load",()=>t()),n.addEventListener("error",()=>i(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=a,n.src=l,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",t()}),n.addEventListener("error",()=>i(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),r)}var R=f({name:"RoxyAspectsTable",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},attribution:{type:String},hideReadings:{type:Boolean}},setup(e){let s=g(null);return m(()=>{o().catch(t=>{s.value=t instanceof Error?t:new Error(String(t))})}),()=>{if(s.value)return d("div",{role:"alert"},`Roxy UI script load failed: ${s.value.message}`);let t={};return e.data!==void 0&&(t[".data"]=e.data),e.endpoint!==void 0&&(t[".endpoint"]=e.endpoint),e.method!==void 0&&(t[".method"]=e.method),e.publishableKey!==void 0&&(t[".publishableKey"]=e.publishableKey),e.baseUrl!==void 0&&(t[".baseUrl"]=e.baseUrl),e.specUrl!==void 0&&(t[".specUrl"]=e.specUrl),e.lang!==void 0&&(t[".lang"]=e.lang),e.submitLabel!==void 0&&(t[".submitLabel"]=e.submitLabel),e.attribution!==void 0&&(t[".attribution"]=e.attribution),e.hideReadings!==void 0&&(t[".hideReadings"]=e.hideReadings),d("roxy-aspects-table",t)}}});export{R as RoxyAspectsTable};
|
|
2
2
|
//# sourceMappingURL=aspects-table.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/aspects-table.ts", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { CalculateAspectsResponse, CalculateTransitAspectsResponse, DetectAspectPatternsResponse } from '../types/index.js';\n\nexport interface RoxyAspectsTableProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: CalculateAspectsResponse | CalculateTransitAspectsResponse | DetectAspectPatternsResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyAspectsTable = defineComponent({\n\tname: 'RoxyAspectsTable',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyAspectsTableProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyAspectsTableProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyAspectsTableProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyAspectsTableProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyAspectsTableProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyAspectsTableProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyAspectsTableProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyAspectsTableProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyAspectsTableProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAspectsTableProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-aspects-table', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.1\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,
|
|
4
|
+
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { CalculateAspectsResponse, CalculateTransitAspectsResponse, DetectAspectPatternsResponse } from '../types/index.js';\n\nexport interface RoxyAspectsTableProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: CalculateAspectsResponse | CalculateTransitAspectsResponse | DetectAspectPatternsResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyAspectsTable = defineComponent({\n\tname: 'RoxyAspectsTable',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyAspectsTableProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyAspectsTableProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyAspectsTableProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyAspectsTableProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyAspectsTableProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyAspectsTableProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyAspectsTableProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyAspectsTableProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyAspectsTableProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAspectsTableProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-aspects-table', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * {@link ensureLocaleLoaded} is the other half and is OPT-IN: it loads the label\n * catalogue for one language from the same release, so a non-English app calls\n * both. There is one catalogue, shipped by `@roxyapi/ui` and read by every\n * wrapper, so nothing is restated here.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.2\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n/** Every language a label catalogue ships for. English is absent on purpose: the catalogue key IS the English string, so an English page downloads nothing. */\nexport const ROXY_UI_LOCALES = [\"de\",\"es\",\"fr\",\"hi\",\"pt\",\"ru\",\"tr\"] as const;\n\nconst localesLoaded = new Map<string, Promise<void>>();\n\n/**\n * Load the label catalogue for one language, so the components write their own\n * headings, buttons, empty states and form labels in it.\n *\n * Call it once at app entry, beside `ensureScriptLoaded`. The components read the\n * language from the page (their own `lang` attribute, the nearest ancestor\n * carrying one, or `<html lang>`), so this call supplies the WORDS and the page\n * supplies the CHOICE. Loading a catalogue a page never asks for is harmless.\n *\n * `es-AR`, `es-MX` and `es-419` all resolve to the `es` catalogue, so pass the\n * page tag as it stands. English resolves to nothing at all and is not an error:\n * the catalogue is keyed by the English text, so an English page needs no payload.\n * A language outside `ROXY_UI_LOCALES` resolves the same way rather than appending\n * a script tag that 404s.\n *\n * `version` and `baseUrl` behave exactly as they do for {@link ensureScriptLoaded},\n * and passing the same `baseUrl` to both is what an air-gapped or strict-CSP host\n * needs: copy `node_modules/@roxyapi/ui/dist/cdn/` onto your own origin, which\n * carries `locales/` beside `roxy-ui.js`.\n *\n * @example\n * ```ts\n * import { ensureScriptLoaded, ensureLocaleLoaded } from '@roxyapi/ui-vue';\n *\n * ensureScriptLoaded();\n * ensureLocaleLoaded(document.documentElement.lang);\n * ```\n */\nexport function ensureLocaleLoaded(\n\tlang: string,\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tconst base = (lang || '').toLowerCase().split('-')[0] ?? '';\n\tif (!(ROXY_UI_LOCALES as readonly string[]).includes(base)) {\n\t\treturn Promise.resolve();\n\t}\n\tconst existing = localesLoaded.get(base);\n\tif (existing) return existing;\n\n\tconst pending = new Promise<void>((resolve, reject) => {\n\t\tconst id = `${SCRIPT_ID}-locale-${base}`;\n\t\tlet el = document.getElementById(id) as HTMLScriptElement | null;\n\t\tif (el) {\n\t\t\tif (el.dataset.loaded === 'true') resolve();\n\t\t\telse {\n\t\t\t\tel.addEventListener('load', () => resolve());\n\t\t\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tel = document.createElement('script');\n\t\tel.id = id;\n\t\tel.src = `${baseUrl ?? buildBase(version)}/locales/${base}.js`;\n\t\tel.async = true;\n\t\tel.crossOrigin = 'anonymous';\n\t\tel.addEventListener('load', () => {\n\t\t\tel!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\tdocument.head.appendChild(el);\n\t});\n\tlocalesLoaded.set(base, pending);\n\treturn pending;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,MCyB3D,IAAMC,EAAkB,SAEzBC,EAAY,oBACZC,EAAkB,2DAClBC,EAAkB,4CAClBC,EAAkB,YAEpBC,EAA+B,KAEnC,SAASC,EAAUC,EAAyB,CAC3C,MAAI,CAACA,GAAWA,IAAY,SAAiBL,EACtC,GAAGC,CAAe,GAAGI,CAAO,GAAGH,CAAe,EACtD,CAEO,SAASI,EACfD,EAAkBP,EAClBS,EACgB,CAChB,OAAI,OAAO,SAAa,IAAoB,QAAQ,QAAQ,EACxDJ,IAEJA,EAAS,IAAI,QAAc,CAACK,EAASC,IAAW,CAC/C,IAAMC,EAAM,GAAGH,GAAWH,EAAUC,CAAO,CAAC,cACxCM,EAAW,SAAS,eAAeZ,CAAS,EAChD,GAAIY,EAAU,CACTA,EAAS,QAAQ,SAAW,OAC/BH,EAAQ,GAERG,EAAS,iBAAiB,OAAQ,IAAMH,EAAQ,CAAC,EACjDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,GAElF,MACD,CACAE,EAAW,SAAS,cAAc,QAAQ,EAC1CA,EAAS,GAAKZ,EACdY,EAAS,IAAMD,EACfC,EAAS,MAAQ,GACjBA,EAAS,YAAc,YACvBA,EAAS,iBAAiB,OAAQ,IAAM,CACvCA,EAAU,QAAQ,OAAS,OAC3BH,EAAQ,CACT,CAAC,EACDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,EACjF,SAAS,KAAK,YAAYE,CAAQ,CACnC,CAAC,EACMR,EACR,CD5CO,IAAMS,EAAmBC,EAAgB,CAC/C,KAAM,mBACN,MAAO,CACN,KAAM,CAAE,KAAM,MAAkD,EAChE,SAAU,CAAE,KAAM,MAAsD,EACxE,OAAQ,CAAE,KAAM,MAAoD,EACpE,eAAgB,CAAE,KAAM,MAA4D,EACpF,QAAS,CAAE,KAAM,MAAqD,EACtE,QAAS,CAAE,KAAM,MAAqD,EACtE,KAAM,CAAE,KAAM,MAAkD,EAChE,YAAa,CAAE,KAAM,MAAyD,EAC9E,YAAa,CAAE,KAAM,MAAyD,EAC9E,aAAc,CAAE,KAAM,OAA2D,CAClF,EACA,MAAMC,EAAO,CACZ,IAAMC,EAAYC,EAAkB,IAAI,EAExC,OAAAC,EAAU,IAAM,CACfC,EAAmB,EAAE,MAAOC,GAAiB,CAC5CJ,EAAU,MAAQI,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CACrE,CAAC,CACF,CAAC,EAEM,IAAM,CACZ,GAAIJ,EAAU,MACb,OAAOK,EACN,MACA,CAAE,KAAM,OAAQ,EAChB,+BAA+BL,EAAU,MAAM,OAAO,EACvD,EAGD,IAAMM,EAAwC,CAAC,EAC/C,OAAIP,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,WAAa,SAAWO,EAAa,WAAW,EAAIP,EAAM,UAChEA,EAAM,SAAW,SAAWO,EAAa,SAAS,EAAIP,EAAM,QAC5DA,EAAM,iBAAmB,SAAWO,EAAa,iBAAiB,EAAIP,EAAM,gBAC5EA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,eAAiB,SAAWO,EAAa,eAAe,EAAIP,EAAM,cAErEM,EAAE,qBAAsBC,CAAY,CAC5C,CACD,CACD,CAAC",
|
|
6
6
|
"names": ["defineComponent", "h", "onMounted", "ref", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyAspectsTable", "defineComponent", "props", "loadError", "ref", "onMounted", "ensureScriptLoaded", "err", "h", "elementProps"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent as f,h as d,onMounted as
|
|
1
|
+
import{defineComponent as f,h as d,onMounted as m,ref as h}from"vue";var p="0.27.2",i="roxyapi-ui-loader",u="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",c="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",y="/dist/cdn",o=null;function g(e){return!e||e==="latest"?u:`${c}${e}${y}`}function s(e=p,n){return typeof document>"u"?Promise.resolve():o||(o=new Promise((t,a)=>{let l=`${n??g(e)}/roxy-ui.js`,r=document.getElementById(i);if(r){r.dataset.loaded==="true"?t():(r.addEventListener("load",()=>t()),r.addEventListener("error",()=>a(new Error("roxy-ui load failed"))));return}r=document.createElement("script"),r.id=i,r.src=l,r.async=!0,r.crossOrigin="anonymous",r.addEventListener("load",()=>{r.dataset.loaded="true",t()}),r.addEventListener("error",()=>a(new Error("roxy-ui load failed"))),document.head.appendChild(r)}),o)}var E=f({name:"RoxyAstrocartographyMap",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},attribution:{type:String},hideReadings:{type:Boolean}},setup(e){let n=h(null);return m(()=>{s().catch(t=>{n.value=t instanceof Error?t:new Error(String(t))})}),()=>{if(n.value)return d("div",{role:"alert"},`Roxy UI script load failed: ${n.value.message}`);let t={};return e.data!==void 0&&(t[".data"]=e.data),e.endpoint!==void 0&&(t[".endpoint"]=e.endpoint),e.method!==void 0&&(t[".method"]=e.method),e.publishableKey!==void 0&&(t[".publishableKey"]=e.publishableKey),e.baseUrl!==void 0&&(t[".baseUrl"]=e.baseUrl),e.specUrl!==void 0&&(t[".specUrl"]=e.specUrl),e.lang!==void 0&&(t[".lang"]=e.lang),e.submitLabel!==void 0&&(t[".submitLabel"]=e.submitLabel),e.attribution!==void 0&&(t[".attribution"]=e.attribution),e.hideReadings!==void 0&&(t[".hideReadings"]=e.hideReadings),d("roxy-astrocartography-map",t)}}});export{E as RoxyAstrocartographyMap};
|
|
2
2
|
//# sourceMappingURL=astrocartography-map.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/astrocartography-map.ts", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { AstrocartographyResponse } from '../types/index.js';\n\nexport interface RoxyAstrocartographyMapProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: AstrocartographyResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyAstrocartographyMap = defineComponent({\n\tname: 'RoxyAstrocartographyMap',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyAstrocartographyMapProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyAstrocartographyMapProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyAstrocartographyMapProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyAstrocartographyMapProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyAstrocartographyMapProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyAstrocartographyMapProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyAstrocartographyMapProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyAstrocartographyMapProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyAstrocartographyMapProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAstrocartographyMapProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-astrocartography-map', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.1\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,
|
|
4
|
+
"sourcesContent": ["import { defineComponent, h, onMounted, type PropType, ref } from 'vue';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { AstrocartographyResponse } from '../types/index.js';\n\nexport interface RoxyAstrocartographyMapProps {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: AstrocartographyResponse;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\t/** Response language for self-fetch, forwarded to the API `lang` query parameter (en, tr, de, es, hi, pt, fr, ru). The form never shows a language field; the site owner sets it here. Defaults to English. */\n\tlang?: string;\n\t/** Override the self-fetch form submit-button label. Empty derives an outcome-first label from the endpoint (Get reading, Generate, Compare, Cast). */\n\tsubmitLabel?: string;\n\t/** Render a small \"Spiritual data by RoxyAPI\" credit under a self-fetch result, linking back to RoxyAPI. Off by default; set any value to enable, or \"off\" to force it off. Never shown in controlled mode. */\n\tattribution?: string;\n\t/** Render the chart and the data and omit the written interpretation. Off by default. Use it when the page supplies its own words: the wheels, tables, grids, legends and numbers stay, and the interpretive prose is left out of the markup entirely. */\n\thideReadings?: boolean;\n}\n\nexport const RoxyAstrocartographyMap = defineComponent({\n\tname: 'RoxyAstrocartographyMap',\n\tprops: {\n\t\tdata: { type: Object as PropType<RoxyAstrocartographyMapProps['data']> },\n\t\tendpoint: { type: String as PropType<RoxyAstrocartographyMapProps['endpoint']> },\n\t\tmethod: { type: String as PropType<RoxyAstrocartographyMapProps['method']> },\n\t\tpublishableKey: { type: String as PropType<RoxyAstrocartographyMapProps['publishableKey']> },\n\t\tbaseUrl: { type: String as PropType<RoxyAstrocartographyMapProps['baseUrl']> },\n\t\tspecUrl: { type: String as PropType<RoxyAstrocartographyMapProps['specUrl']> },\n\t\tlang: { type: String as PropType<RoxyAstrocartographyMapProps['lang']> },\n\t\tsubmitLabel: { type: String as PropType<RoxyAstrocartographyMapProps['submitLabel']> },\n\t\tattribution: { type: String as PropType<RoxyAstrocartographyMapProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAstrocartographyMapProps['hideReadings']> },\n\t},\n\tsetup(props) {\n\t\tconst loadError = ref<Error | null>(null);\n\n\t\tonMounted(() => {\n\t\t\tensureScriptLoaded().catch((err: unknown) => {\n\t\t\t\tloadError.value = err instanceof Error ? err : new Error(String(err));\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (loadError.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ role: 'alert' },\n\t\t\t\t\t`Roxy UI script load failed: ${loadError.value.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst elementProps: Record<string, unknown> = {};\n\t\t\tif (props.data !== undefined) elementProps['.data'] = props.data;\n\t\t\tif (props.endpoint !== undefined) elementProps['.endpoint'] = props.endpoint;\n\t\t\tif (props.method !== undefined) elementProps['.method'] = props.method;\n\t\t\tif (props.publishableKey !== undefined) elementProps['.publishableKey'] = props.publishableKey;\n\t\t\tif (props.baseUrl !== undefined) elementProps['.baseUrl'] = props.baseUrl;\n\t\t\tif (props.specUrl !== undefined) elementProps['.specUrl'] = props.specUrl;\n\t\t\tif (props.lang !== undefined) elementProps['.lang'] = props.lang;\n\t\t\tif (props.submitLabel !== undefined) elementProps['.submitLabel'] = props.submitLabel;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\n\t\t\treturn h('roxy-astrocartography-map', elementProps);\n\t\t};\n\t},\n});\n", "/**\n * Loads the matching component bundle on first mount. Idempotent across\n * many components on the same page. Skips on the server (no document) so\n * Nuxt and Vue server rendering work without a flash.\n *\n * {@link ensureLocaleLoaded} is the other half and is OPT-IN: it loads the label\n * catalogue for one language from the same release, so a non-English app calls\n * both. There is one catalogue, shipped by `@roxyapi/ui` and read by every\n * wrapper, so nothing is restated here.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.27.2\";\n\nconst SCRIPT_ID = 'roxyapi-ui-loader';\nconst CDN_BASE_LATEST = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn\";\nconst CDN_BASE_PREFIX = \"https://cdn.jsdelivr.net/npm/@roxyapi/ui@\";\nconst CDN_BASE_SUFFIX = \"/dist/cdn\";\n\nlet loaded: Promise<void> | null = null;\n\nfunction buildBase(version: string): string {\n\tif (!version || version === 'latest') return CDN_BASE_LATEST;\n\treturn `${CDN_BASE_PREFIX}${version}${CDN_BASE_SUFFIX}`;\n}\n\nexport function ensureScriptLoaded(\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tif (loaded) return loaded;\n\n\tloaded = new Promise<void>((resolve, reject) => {\n\t\tconst url = `${baseUrl ?? buildBase(version)}/roxy-ui.js`;\n\t\tlet existing = document.getElementById(SCRIPT_ID) as HTMLScriptElement | null;\n\t\tif (existing) {\n\t\t\tif (existing.dataset.loaded === 'true') {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\texisting.addEventListener('load', () => resolve());\n\t\t\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\texisting = document.createElement('script');\n\t\texisting.id = SCRIPT_ID;\n\t\texisting.src = url;\n\t\texisting.async = true;\n\t\texisting.crossOrigin = 'anonymous';\n\t\texisting.addEventListener('load', () => {\n\t\t\texisting!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\texisting.addEventListener('error', () => reject(new Error('roxy-ui load failed')));\n\t\tdocument.head.appendChild(existing);\n\t});\n\treturn loaded;\n}\n\n/** Every language a label catalogue ships for. English is absent on purpose: the catalogue key IS the English string, so an English page downloads nothing. */\nexport const ROXY_UI_LOCALES = [\"de\",\"es\",\"fr\",\"hi\",\"pt\",\"ru\",\"tr\"] as const;\n\nconst localesLoaded = new Map<string, Promise<void>>();\n\n/**\n * Load the label catalogue for one language, so the components write their own\n * headings, buttons, empty states and form labels in it.\n *\n * Call it once at app entry, beside `ensureScriptLoaded`. The components read the\n * language from the page (their own `lang` attribute, the nearest ancestor\n * carrying one, or `<html lang>`), so this call supplies the WORDS and the page\n * supplies the CHOICE. Loading a catalogue a page never asks for is harmless.\n *\n * `es-AR`, `es-MX` and `es-419` all resolve to the `es` catalogue, so pass the\n * page tag as it stands. English resolves to nothing at all and is not an error:\n * the catalogue is keyed by the English text, so an English page needs no payload.\n * A language outside `ROXY_UI_LOCALES` resolves the same way rather than appending\n * a script tag that 404s.\n *\n * `version` and `baseUrl` behave exactly as they do for {@link ensureScriptLoaded},\n * and passing the same `baseUrl` to both is what an air-gapped or strict-CSP host\n * needs: copy `node_modules/@roxyapi/ui/dist/cdn/` onto your own origin, which\n * carries `locales/` beside `roxy-ui.js`.\n *\n * @example\n * ```ts\n * import { ensureScriptLoaded, ensureLocaleLoaded } from '@roxyapi/ui-vue';\n *\n * ensureScriptLoaded();\n * ensureLocaleLoaded(document.documentElement.lang);\n * ```\n */\nexport function ensureLocaleLoaded(\n\tlang: string,\n\tversion: string = ROXY_UI_VERSION,\n\tbaseUrl?: string,\n): Promise<void> {\n\tif (typeof document === 'undefined') return Promise.resolve();\n\tconst base = (lang || '').toLowerCase().split('-')[0] ?? '';\n\tif (!(ROXY_UI_LOCALES as readonly string[]).includes(base)) {\n\t\treturn Promise.resolve();\n\t}\n\tconst existing = localesLoaded.get(base);\n\tif (existing) return existing;\n\n\tconst pending = new Promise<void>((resolve, reject) => {\n\t\tconst id = `${SCRIPT_ID}-locale-${base}`;\n\t\tlet el = document.getElementById(id) as HTMLScriptElement | null;\n\t\tif (el) {\n\t\t\tif (el.dataset.loaded === 'true') resolve();\n\t\t\telse {\n\t\t\t\tel.addEventListener('load', () => resolve());\n\t\t\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tel = document.createElement('script');\n\t\tel.id = id;\n\t\tel.src = `${baseUrl ?? buildBase(version)}/locales/${base}.js`;\n\t\tel.async = true;\n\t\tel.crossOrigin = 'anonymous';\n\t\tel.addEventListener('load', () => {\n\t\t\tel!.dataset.loaded = 'true';\n\t\t\tresolve();\n\t\t});\n\t\tel.addEventListener('error', () => reject(new Error(`roxy-ui locale ${base} load failed`)));\n\t\tdocument.head.appendChild(el);\n\t});\n\tlocalesLoaded.set(base, pending);\n\treturn pending;\n}\n\n// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-vue\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,EAAiB,KAAAC,EAAG,aAAAC,EAA0B,OAAAC,MAAW,MCyB3D,IAAMC,EAAkB,SAEzBC,EAAY,oBACZC,EAAkB,2DAClBC,EAAkB,4CAClBC,EAAkB,YAEpBC,EAA+B,KAEnC,SAASC,EAAUC,EAAyB,CAC3C,MAAI,CAACA,GAAWA,IAAY,SAAiBL,EACtC,GAAGC,CAAe,GAAGI,CAAO,GAAGH,CAAe,EACtD,CAEO,SAASI,EACfD,EAAkBP,EAClBS,EACgB,CAChB,OAAI,OAAO,SAAa,IAAoB,QAAQ,QAAQ,EACxDJ,IAEJA,EAAS,IAAI,QAAc,CAACK,EAASC,IAAW,CAC/C,IAAMC,EAAM,GAAGH,GAAWH,EAAUC,CAAO,CAAC,cACxCM,EAAW,SAAS,eAAeZ,CAAS,EAChD,GAAIY,EAAU,CACTA,EAAS,QAAQ,SAAW,OAC/BH,EAAQ,GAERG,EAAS,iBAAiB,OAAQ,IAAMH,EAAQ,CAAC,EACjDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,GAElF,MACD,CACAE,EAAW,SAAS,cAAc,QAAQ,EAC1CA,EAAS,GAAKZ,EACdY,EAAS,IAAMD,EACfC,EAAS,MAAQ,GACjBA,EAAS,YAAc,YACvBA,EAAS,iBAAiB,OAAQ,IAAM,CACvCA,EAAU,QAAQ,OAAS,OAC3BH,EAAQ,CACT,CAAC,EACDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,EACjF,SAAS,KAAK,YAAYE,CAAQ,CACnC,CAAC,EACMR,EACR,CD5CO,IAAMS,EAA0BC,EAAgB,CACtD,KAAM,0BACN,MAAO,CACN,KAAM,CAAE,KAAM,MAAyD,EACvE,SAAU,CAAE,KAAM,MAA6D,EAC/E,OAAQ,CAAE,KAAM,MAA2D,EAC3E,eAAgB,CAAE,KAAM,MAAmE,EAC3F,QAAS,CAAE,KAAM,MAA4D,EAC7E,QAAS,CAAE,KAAM,MAA4D,EAC7E,KAAM,CAAE,KAAM,MAAyD,EACvE,YAAa,CAAE,KAAM,MAAgE,EACrF,YAAa,CAAE,KAAM,MAAgE,EACrF,aAAc,CAAE,KAAM,OAAkE,CACzF,EACA,MAAMC,EAAO,CACZ,IAAMC,EAAYC,EAAkB,IAAI,EAExC,OAAAC,EAAU,IAAM,CACfC,EAAmB,EAAE,MAAOC,GAAiB,CAC5CJ,EAAU,MAAQI,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CACrE,CAAC,CACF,CAAC,EAEM,IAAM,CACZ,GAAIJ,EAAU,MACb,OAAOK,EACN,MACA,CAAE,KAAM,OAAQ,EAChB,+BAA+BL,EAAU,MAAM,OAAO,EACvD,EAGD,IAAMM,EAAwC,CAAC,EAC/C,OAAIP,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,WAAa,SAAWO,EAAa,WAAW,EAAIP,EAAM,UAChEA,EAAM,SAAW,SAAWO,EAAa,SAAS,EAAIP,EAAM,QAC5DA,EAAM,iBAAmB,SAAWO,EAAa,iBAAiB,EAAIP,EAAM,gBAC5EA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,UAAY,SAAWO,EAAa,UAAU,EAAIP,EAAM,SAC9DA,EAAM,OAAS,SAAWO,EAAa,OAAO,EAAIP,EAAM,MACxDA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,cAAgB,SAAWO,EAAa,cAAc,EAAIP,EAAM,aACtEA,EAAM,eAAiB,SAAWO,EAAa,eAAe,EAAIP,EAAM,cAErEM,EAAE,4BAA6BC,CAAY,CACnD,CACD,CACD,CAAC",
|
|
6
6
|
"names": ["defineComponent", "h", "onMounted", "ref", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyAstrocartographyMap", "defineComponent", "props", "loadError", "ref", "onMounted", "ensureScriptLoaded", "err", "h", "elementProps"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent as
|
|
1
|
+
import{defineComponent as b,h as l,onMounted as f,ref as m}from"vue";var u="0.27.2",o="roxyapi-ui-loader",p="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",c="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",y="/dist/cdn",a=null;function h(e){return!e||e==="latest"?p:`${c}${e}${y}`}function d(e=u,i){return typeof document>"u"?Promise.resolve():a||(a=new Promise((t,r)=>{let s=`${i??h(e)}/roxy-ui.js`,n=document.getElementById(o);if(n){n.dataset.loaded==="true"?t():(n.addEventListener("load",()=>t()),n.addEventListener("error",()=>r(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=o,n.src=s,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",t()}),n.addEventListener("error",()=>r(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),a)}var x=b({name:"RoxyBhavChalitTable",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},attribution:{type:String},hideReadings:{type:Boolean}},setup(e){let i=m(null);return f(()=>{d().catch(t=>{i.value=t instanceof Error?t:new Error(String(t))})}),()=>{if(i.value)return l("div",{role:"alert"},`Roxy UI script load failed: ${i.value.message}`);let t={};return e.data!==void 0&&(t[".data"]=e.data),e.endpoint!==void 0&&(t[".endpoint"]=e.endpoint),e.method!==void 0&&(t[".method"]=e.method),e.publishableKey!==void 0&&(t[".publishableKey"]=e.publishableKey),e.baseUrl!==void 0&&(t[".baseUrl"]=e.baseUrl),e.specUrl!==void 0&&(t[".specUrl"]=e.specUrl),e.lang!==void 0&&(t[".lang"]=e.lang),e.submitLabel!==void 0&&(t[".submitLabel"]=e.submitLabel),e.attribution!==void 0&&(t[".attribution"]=e.attribution),e.hideReadings!==void 0&&(t[".hideReadings"]=e.hideReadings),l("roxy-bhav-chalit-table",t)}}});export{x as RoxyBhavChalitTable};
|
|
2
2
|
//# sourceMappingURL=bhav-chalit-table.js.map
|