@roxyapi/ui-vue 0.32.1 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/AGENTS.md +3 -1
  2. package/README.md +1 -1
  3. package/dist/components/angel-number-card.d.ts +8 -0
  4. package/dist/components/angel-number-card.d.ts.map +1 -1
  5. package/dist/components/angel-number-card.js +1 -1
  6. package/dist/components/angel-number-card.js.map +2 -2
  7. package/dist/components/angel-number-lookup.d.ts +8 -0
  8. package/dist/components/angel-number-lookup.d.ts.map +1 -1
  9. package/dist/components/angel-number-lookup.js +1 -1
  10. package/dist/components/angel-number-lookup.js.map +2 -2
  11. package/dist/components/arudha-padas.d.ts +8 -0
  12. package/dist/components/arudha-padas.d.ts.map +1 -1
  13. package/dist/components/arudha-padas.js +1 -1
  14. package/dist/components/arudha-padas.js.map +2 -2
  15. package/dist/components/ashtakavarga-grid.d.ts +8 -0
  16. package/dist/components/ashtakavarga-grid.d.ts.map +1 -1
  17. package/dist/components/ashtakavarga-grid.js +1 -1
  18. package/dist/components/ashtakavarga-grid.js.map +2 -2
  19. package/dist/components/aspects-table.d.ts +8 -0
  20. package/dist/components/aspects-table.d.ts.map +1 -1
  21. package/dist/components/aspects-table.js +1 -1
  22. package/dist/components/aspects-table.js.map +2 -2
  23. package/dist/components/astrocartography-map.d.ts +8 -0
  24. package/dist/components/astrocartography-map.d.ts.map +1 -1
  25. package/dist/components/astrocartography-map.js +1 -1
  26. package/dist/components/astrocartography-map.js.map +2 -2
  27. package/dist/components/bhav-chalit-table.d.ts +8 -0
  28. package/dist/components/bhav-chalit-table.d.ts.map +1 -1
  29. package/dist/components/bhav-chalit-table.js +1 -1
  30. package/dist/components/bhav-chalit-table.js.map +2 -2
  31. package/dist/components/bhava-bala-table.d.ts +8 -0
  32. package/dist/components/bhava-bala-table.d.ts.map +1 -1
  33. package/dist/components/bhava-bala-table.js +1 -1
  34. package/dist/components/bhava-bala-table.js.map +2 -2
  35. package/dist/components/biorhythm-chart.d.ts +8 -0
  36. package/dist/components/biorhythm-chart.d.ts.map +1 -1
  37. package/dist/components/biorhythm-chart.js +1 -1
  38. package/dist/components/biorhythm-chart.js.map +2 -2
  39. package/dist/components/bodygraph.d.ts +8 -0
  40. package/dist/components/bodygraph.d.ts.map +1 -1
  41. package/dist/components/bodygraph.js +1 -1
  42. package/dist/components/bodygraph.js.map +2 -2
  43. package/dist/components/chara-karakas.d.ts +8 -0
  44. package/dist/components/chara-karakas.d.ts.map +1 -1
  45. package/dist/components/chara-karakas.js +1 -1
  46. package/dist/components/chara-karakas.js.map +2 -2
  47. package/dist/components/choghadiya-grid.d.ts +8 -0
  48. package/dist/components/choghadiya-grid.d.ts.map +1 -1
  49. package/dist/components/choghadiya-grid.js +1 -1
  50. package/dist/components/choghadiya-grid.js.map +2 -2
  51. package/dist/components/compatibility-card.d.ts +8 -0
  52. package/dist/components/compatibility-card.d.ts.map +1 -1
  53. package/dist/components/compatibility-card.js +1 -1
  54. package/dist/components/compatibility-card.js.map +2 -2
  55. package/dist/components/crystal-card.d.ts +8 -0
  56. package/dist/components/crystal-card.d.ts.map +1 -1
  57. package/dist/components/crystal-card.js +1 -1
  58. package/dist/components/crystal-card.js.map +2 -2
  59. package/dist/components/crystal-grid.d.ts +8 -0
  60. package/dist/components/crystal-grid.d.ts.map +1 -1
  61. package/dist/components/crystal-grid.js +1 -1
  62. package/dist/components/crystal-grid.js.map +2 -2
  63. package/dist/components/dasha-timeline.d.ts +8 -0
  64. package/dist/components/dasha-timeline.d.ts.map +1 -1
  65. package/dist/components/dasha-timeline.js +1 -1
  66. package/dist/components/dasha-timeline.js.map +2 -2
  67. package/dist/components/data.d.ts +8 -0
  68. package/dist/components/data.d.ts.map +1 -1
  69. package/dist/components/data.js +1 -1
  70. package/dist/components/data.js.map +2 -2
  71. package/dist/components/divisional-chart.d.ts +8 -0
  72. package/dist/components/divisional-chart.d.ts.map +1 -1
  73. package/dist/components/divisional-chart.js +1 -1
  74. package/dist/components/divisional-chart.js.map +2 -2
  75. package/dist/components/dosha-card.d.ts +8 -0
  76. package/dist/components/dosha-card.d.ts.map +1 -1
  77. package/dist/components/dosha-card.js +1 -1
  78. package/dist/components/dosha-card.js.map +2 -2
  79. package/dist/components/dream-card.d.ts +8 -0
  80. package/dist/components/dream-card.d.ts.map +1 -1
  81. package/dist/components/dream-card.js +1 -1
  82. package/dist/components/dream-card.js.map +2 -2
  83. package/dist/components/dream-search.d.ts +8 -0
  84. package/dist/components/dream-search.d.ts.map +1 -1
  85. package/dist/components/dream-search.js +1 -1
  86. package/dist/components/dream-search.js.map +2 -2
  87. package/dist/components/endpoint-form.js +1 -1
  88. package/dist/components/endpoint-form.js.map +1 -1
  89. package/dist/components/ephemeris-table.d.ts +8 -0
  90. package/dist/components/ephemeris-table.d.ts.map +1 -1
  91. package/dist/components/ephemeris-table.js +1 -1
  92. package/dist/components/ephemeris-table.js.map +2 -2
  93. package/dist/components/fixed-stars.d.ts +8 -0
  94. package/dist/components/fixed-stars.d.ts.map +1 -1
  95. package/dist/components/fixed-stars.js +1 -1
  96. package/dist/components/fixed-stars.js.map +2 -2
  97. package/dist/components/forecast-digest.d.ts +8 -0
  98. package/dist/components/forecast-digest.d.ts.map +1 -1
  99. package/dist/components/forecast-digest.js +1 -1
  100. package/dist/components/forecast-digest.js.map +2 -2
  101. package/dist/components/forecast-timeline.d.ts +8 -0
  102. package/dist/components/forecast-timeline.d.ts.map +1 -1
  103. package/dist/components/forecast-timeline.js +1 -1
  104. package/dist/components/forecast-timeline.js.map +2 -2
  105. package/dist/components/gochara-table.d.ts +8 -0
  106. package/dist/components/gochara-table.d.ts.map +1 -1
  107. package/dist/components/gochara-table.js +1 -1
  108. package/dist/components/gochara-table.js.map +2 -2
  109. package/dist/components/guna-milan.d.ts +8 -0
  110. package/dist/components/guna-milan.d.ts.map +1 -1
  111. package/dist/components/guna-milan.js +1 -1
  112. package/dist/components/guna-milan.js.map +2 -2
  113. package/dist/components/hd-connection.d.ts +8 -0
  114. package/dist/components/hd-connection.d.ts.map +1 -1
  115. package/dist/components/hd-connection.js +1 -1
  116. package/dist/components/hd-connection.js.map +2 -2
  117. package/dist/components/hd-penta.d.ts +8 -0
  118. package/dist/components/hd-penta.d.ts.map +1 -1
  119. package/dist/components/hd-penta.js +1 -1
  120. package/dist/components/hd-penta.js.map +2 -2
  121. package/dist/components/hd-type-card.d.ts +8 -0
  122. package/dist/components/hd-type-card.d.ts.map +1 -1
  123. package/dist/components/hd-type-card.js +1 -1
  124. package/dist/components/hd-type-card.js.map +2 -2
  125. package/dist/components/hd-variables.d.ts +8 -0
  126. package/dist/components/hd-variables.d.ts.map +1 -1
  127. package/dist/components/hd-variables.js +1 -1
  128. package/dist/components/hd-variables.js.map +2 -2
  129. package/dist/components/heliacal-table.d.ts +8 -0
  130. package/dist/components/heliacal-table.d.ts.map +1 -1
  131. package/dist/components/heliacal-table.js +1 -1
  132. package/dist/components/heliacal-table.js.map +2 -2
  133. package/dist/components/hexagram.d.ts +8 -0
  134. package/dist/components/hexagram.d.ts.map +1 -1
  135. package/dist/components/hexagram.js +1 -1
  136. package/dist/components/hexagram.js.map +2 -2
  137. package/dist/components/hora-table.d.ts +8 -0
  138. package/dist/components/hora-table.d.ts.map +1 -1
  139. package/dist/components/hora-table.js +1 -1
  140. package/dist/components/hora-table.js.map +2 -2
  141. package/dist/components/horoscope-card.d.ts +8 -0
  142. package/dist/components/horoscope-card.d.ts.map +1 -1
  143. package/dist/components/horoscope-card.js +1 -1
  144. package/dist/components/horoscope-card.js.map +2 -2
  145. package/dist/components/kp-chart.d.ts +8 -0
  146. package/dist/components/kp-chart.d.ts.map +1 -1
  147. package/dist/components/kp-chart.js +1 -1
  148. package/dist/components/kp-chart.js.map +2 -2
  149. package/dist/components/kp-planets-table.d.ts +8 -0
  150. package/dist/components/kp-planets-table.d.ts.map +1 -1
  151. package/dist/components/kp-planets-table.js +1 -1
  152. package/dist/components/kp-planets-table.js.map +2 -2
  153. package/dist/components/kp-ruling-planets.d.ts +8 -0
  154. package/dist/components/kp-ruling-planets.d.ts.map +1 -1
  155. package/dist/components/kp-ruling-planets.js +1 -1
  156. package/dist/components/kp-ruling-planets.js.map +2 -2
  157. package/dist/components/local-space-compass.d.ts +8 -0
  158. package/dist/components/local-space-compass.d.ts.map +1 -1
  159. package/dist/components/local-space-compass.js +1 -1
  160. package/dist/components/local-space-compass.js.map +2 -2
  161. package/dist/components/location-search.js +1 -1
  162. package/dist/components/location-search.js.map +1 -1
  163. package/dist/components/moon-phase.d.ts +8 -0
  164. package/dist/components/moon-phase.d.ts.map +1 -1
  165. package/dist/components/moon-phase.js +1 -1
  166. package/dist/components/moon-phase.js.map +2 -2
  167. package/dist/components/nakshatra-card.d.ts +8 -0
  168. package/dist/components/nakshatra-card.d.ts.map +1 -1
  169. package/dist/components/nakshatra-card.js +1 -1
  170. package/dist/components/nakshatra-card.js.map +2 -2
  171. package/dist/components/natal-chart.d.ts +8 -0
  172. package/dist/components/natal-chart.d.ts.map +1 -1
  173. package/dist/components/natal-chart.js +1 -1
  174. package/dist/components/natal-chart.js.map +2 -2
  175. package/dist/components/numerology-card.d.ts +8 -0
  176. package/dist/components/numerology-card.d.ts.map +1 -1
  177. package/dist/components/numerology-card.js +1 -1
  178. package/dist/components/numerology-card.js.map +2 -2
  179. package/dist/components/panchang-table.d.ts +8 -0
  180. package/dist/components/panchang-table.d.ts.map +1 -1
  181. package/dist/components/panchang-table.js +1 -1
  182. package/dist/components/panchang-table.js.map +2 -2
  183. package/dist/components/positions-table.d.ts +8 -0
  184. package/dist/components/positions-table.d.ts.map +1 -1
  185. package/dist/components/positions-table.js +1 -1
  186. package/dist/components/positions-table.js.map +2 -2
  187. package/dist/components/profection-card.d.ts +8 -0
  188. package/dist/components/profection-card.d.ts.map +1 -1
  189. package/dist/components/profection-card.js +1 -1
  190. package/dist/components/profection-card.js.map +2 -2
  191. package/dist/components/reference-card.d.ts +8 -0
  192. package/dist/components/reference-card.d.ts.map +1 -1
  193. package/dist/components/reference-card.js +1 -1
  194. package/dist/components/reference-card.js.map +2 -2
  195. package/dist/components/relocation-wheel.d.ts +8 -0
  196. package/dist/components/relocation-wheel.d.ts.map +1 -1
  197. package/dist/components/relocation-wheel.js +1 -1
  198. package/dist/components/relocation-wheel.js.map +2 -2
  199. package/dist/components/shadbala-table.d.ts +8 -0
  200. package/dist/components/shadbala-table.d.ts.map +1 -1
  201. package/dist/components/shadbala-table.js +1 -1
  202. package/dist/components/shadbala-table.js.map +2 -2
  203. package/dist/components/synastry-chart.d.ts +8 -0
  204. package/dist/components/synastry-chart.d.ts.map +1 -1
  205. package/dist/components/synastry-chart.js +1 -1
  206. package/dist/components/synastry-chart.js.map +2 -2
  207. package/dist/components/tarot-card.d.ts +8 -0
  208. package/dist/components/tarot-card.d.ts.map +1 -1
  209. package/dist/components/tarot-card.js +1 -1
  210. package/dist/components/tarot-card.js.map +2 -2
  211. package/dist/components/tarot-catalog.d.ts +8 -0
  212. package/dist/components/tarot-catalog.d.ts.map +1 -1
  213. package/dist/components/tarot-catalog.js +1 -1
  214. package/dist/components/tarot-catalog.js.map +2 -2
  215. package/dist/components/tarot-spread.d.ts +8 -0
  216. package/dist/components/tarot-spread.d.ts.map +1 -1
  217. package/dist/components/tarot-spread.js +1 -1
  218. package/dist/components/tarot-spread.js.map +2 -2
  219. package/dist/components/transit-wheel.d.ts +8 -0
  220. package/dist/components/transit-wheel.d.ts.map +1 -1
  221. package/dist/components/transit-wheel.js +1 -1
  222. package/dist/components/transit-wheel.js.map +2 -2
  223. package/dist/components/transits-table.d.ts +8 -0
  224. package/dist/components/transits-table.d.ts.map +1 -1
  225. package/dist/components/transits-table.js +1 -1
  226. package/dist/components/transits-table.js.map +2 -2
  227. package/dist/components/upagraha-table.d.ts +8 -0
  228. package/dist/components/upagraha-table.d.ts.map +1 -1
  229. package/dist/components/upagraha-table.js +1 -1
  230. package/dist/components/upagraha-table.js.map +2 -2
  231. package/dist/components/vedic-aspects.d.ts +8 -0
  232. package/dist/components/vedic-aspects.d.ts.map +1 -1
  233. package/dist/components/vedic-aspects.js +1 -1
  234. package/dist/components/vedic-aspects.js.map +2 -2
  235. package/dist/components/vedic-daily.d.ts +8 -0
  236. package/dist/components/vedic-daily.d.ts.map +1 -1
  237. package/dist/components/vedic-daily.js +1 -1
  238. package/dist/components/vedic-daily.js.map +2 -2
  239. package/dist/components/vedic-kundli.d.ts +8 -0
  240. package/dist/components/vedic-kundli.d.ts.map +1 -1
  241. package/dist/components/vedic-kundli.js +1 -1
  242. package/dist/components/vedic-kundli.js.map +2 -2
  243. package/dist/components/vedic-planets-table.d.ts +8 -0
  244. package/dist/components/vedic-planets-table.d.ts.map +1 -1
  245. package/dist/components/vedic-planets-table.js +1 -1
  246. package/dist/components/vedic-planets-table.js.map +2 -2
  247. package/dist/components/western-planets-table.d.ts +8 -0
  248. package/dist/components/western-planets-table.d.ts.map +1 -1
  249. package/dist/components/western-planets-table.js +1 -1
  250. package/dist/components/western-planets-table.js.map +2 -2
  251. package/dist/components/yoga-list.d.ts +8 -0
  252. package/dist/components/yoga-list.d.ts.map +1 -1
  253. package/dist/components/yoga-list.js +1 -1
  254. package/dist/components/yoga-list.js.map +2 -2
  255. package/dist/index.cjs +1 -1
  256. package/dist/index.cjs.map +2 -2
  257. package/dist/index.js +1 -1
  258. package/dist/index.js.map +3 -3
  259. package/dist/load-ui.d.ts +1 -1
  260. package/dist/load-ui.js +1 -1
  261. package/dist/load-ui.js.map +1 -1
  262. package/package.json +1 -1
package/AGENTS.md CHANGED
@@ -379,6 +379,8 @@ For a static chart with no picker, fetch in a Server Component and pass `data` t
379
379
 
380
380
  The city search is the one request the form issues on its own, while a visitor is still typing. When the page routes RoxyAPI traffic through your own server, give it a route for that search and name it with `location-url` (absolute, or relative to the page). Then the form calls your server for cities too, and no key of any kind reaches the browser. The same attribute works on any component in self-fetch mode, alongside `submit-url`, and on a one-tag widget as `data-location-url`.
381
381
 
382
+ A rendering component in self-fetch mode (Pattern 4) can also send data of your own with what it submits, which the bare form above does not need because your own code writes that request. Give it `submit-context` with a JSON object and your `submit-url` route receives that object as `context` beside the request, which is where a page attaches its own verification data to a submission. The component passes it through untouched and reads no key of it, so its shape is yours to choose; leave the attribute off and your route receives exactly the request it always did. A one-tag widget takes it as `data-submit-context`.
383
+
382
384
  ```html
383
385
  <roxy-endpoint-form
384
386
  data-endpoint="vedic-astrology/birth-chart"
@@ -421,7 +423,7 @@ In React, the same props are typed: `<RoxyNatalChart endpoint="astrology/natal-c
421
423
 
422
424
  **Three optional attributes on the self-fetch element.** `lang` sets the response language (`en`, `tr`, `de`, `es`, `hi`, `pt`, `fr`, `ru`): put it on the element (`<roxy-horoscope-card lang="de" ...>`) and the form routes it to the `?lang=` query on submit, so visitors never see a language field. `submit-label` overrides the derived button label. `attribution` renders a small "Spiritual data by RoxyAPI" credit under the result: off by default, and the one-tag script below turns it on unless you set `data-attribution="off"`. None of these apply in controlled mode.
423
425
 
424
- **One tag, no element wiring.** For the simplest embed, load `dist/cdn/widgets.js` and drop a `<div data-roxy-widget="{slug}" data-publishable-key="pk_live_...">`. The script mounts the matching component from a generated slug map: with every path parameter supplied as a `data-*` attribute (`data-sign`, `data-id`) it fetches on mount, otherwise it renders the same input form. A second `data-*` attribute picks a variant (`data-period`, `data-mode`, `data-type`, `data-spread`). To keep every key on your own server instead, drop the publishable key and give the tag `data-submit-url` and `data-location-url`: the widget renders the form and routes both its requests there.
426
+ **One tag, no element wiring.** For the simplest embed, load `dist/cdn/widgets.js` and drop a `<div data-roxy-widget="{slug}" data-publishable-key="pk_live_...">`. The script mounts the matching component from a generated slug map: with every path parameter supplied as a `data-*` attribute (`data-sign`, `data-id`) it fetches on mount, otherwise it renders the same input form. A second `data-*` attribute picks a variant (`data-period`, `data-mode`, `data-type`, `data-spread`). To keep every key on your own server instead, drop the publishable key and give the tag `data-submit-url` and `data-location-url`: the widget renders the form and routes both its requests there. `data-submit-context` rides along with the submitted one.
425
427
 
426
428
  **Theme every widget in one link.** Add `<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/styles/themes/practitioner.css">` for a warm rosewater serif look, or set the `--roxy-font-display` token alone to swap result headings to a display face (it defaults to the body font, so nothing changes until you set it). See [THEMING.md](packages/ui/THEMING.md).
427
429
 
package/README.md CHANGED
@@ -582,7 +582,7 @@ Two ways to feed a component, and the key rule for each:
582
582
 
583
583
  Set `ROXY_API_KEY` to your secret key in your server env for the server-side SDK examples on this page. For self-fetch embedding with no backend, use a publishable key (see the fully client-side pattern in [`AGENTS.md`](AGENTS.md)).
584
584
 
585
- The self-fetch form renders spec-driven inputs (a zodiac tile picker, a boolean toggle, native date and time, a city search), collapses optional fields under one Advanced disclosure, and reads a `lang` attribute for localized responses. When the page routes RoxyAPI traffic through your own server instead, `submit-url` names the route that answers the submitted request and `location-url` names the one that answers the city search, so both halves of a birth-data form go to your server and no key of any kind reaches the browser. For the simplest embed, load `dist/cdn/widgets.js` and drop one `<div data-roxy-widget="{slug}" data-publishable-key="pk_live_...">`: with the required attributes present it fetches on mount, otherwise it renders the form. That tag takes `data-submit-url` and `data-location-url` too, so a one-tag embed can route both its requests through your server and carry no key at all. A single `<link>` to the [practitioner theme preset](https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/styles/themes/practitioner.css) restyles every widget on the page.
585
+ The self-fetch form renders spec-driven inputs (a zodiac tile picker, a boolean toggle, native date and time, a city search), collapses optional fields under one Advanced disclosure, and reads a `lang` attribute for localized responses. When the page routes RoxyAPI traffic through your own server instead, `submit-url` names the route that answers the submitted request and `location-url` names the one that answers the city search, so both halves of a birth-data form go to your server and no key of any kind reaches the browser. `submit-context` takes a JSON object of your own and hands it to that route as `context` beside the request, which is where a page attaches its own verification data to a submission. For the simplest embed, load `dist/cdn/widgets.js` and drop one `<div data-roxy-widget="{slug}" data-publishable-key="pk_live_...">`: with the required attributes present it fetches on mount, otherwise it renders the form. That tag takes `data-submit-url`, `data-location-url` and `data-submit-context` too, so a one-tag embed can route both its requests through your server and carry no key at all. A single `<link>` to the [practitioner theme preset](https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/styles/themes/practitioner.css) restyles every widget on the page.
586
586
 
587
587
  ## Distribution
588
588
 
@@ -13,6 +13,8 @@ export interface RoxyAngelNumberCardProps {
13
13
  baseUrl?: string;
14
14
  /** Your own backend route, which holds the secret key. Self-fetch POSTs `{ path, method, body, query }` there instead of calling RoxyAPI directly and renders the JSON your route returns, so no key of any kind reaches the browser. */
15
15
  submitUrl?: string;
16
+ /** An object of your own, sent to your submitUrl route as `context` beside the request, so a page can attach its own verification data to a proxied submission. Passed through untouched and never read by the component: what it holds is for your page and your route to agree on. Unset, nothing is added and the route receives the request exactly as before. Rides the submitUrl path only; a direct call sends what the endpoint declares. */
17
+ submitContext?: Record<string, unknown>;
16
18
  /** Where the self-fetch form city search sends its request, absolute or relative to the page. The companion of submitUrl: the city search is a GET the form issues on its own while a visitor types, so a page that routes its API traffic through its own server names that route here as well. Unset, the search calls the public location endpoint. */
17
19
  locationUrl?: string;
18
20
  /** Override the OpenAPI spec URL the self-fetch form introspects. */
@@ -49,6 +51,9 @@ export declare const RoxyAngelNumberCard: import("vue").DefineComponent<import("
49
51
  submitUrl: {
50
52
  type: PropType<RoxyAngelNumberCardProps["submitUrl"]>;
51
53
  };
54
+ submitContext: {
55
+ type: PropType<RoxyAngelNumberCardProps["submitContext"]>;
56
+ };
52
57
  locationUrl: {
53
58
  type: PropType<RoxyAngelNumberCardProps["locationUrl"]>;
54
59
  };
@@ -94,6 +99,9 @@ export declare const RoxyAngelNumberCard: import("vue").DefineComponent<import("
94
99
  submitUrl: {
95
100
  type: PropType<RoxyAngelNumberCardProps["submitUrl"]>;
96
101
  };
102
+ submitContext: {
103
+ type: PropType<RoxyAngelNumberCardProps["submitContext"]>;
104
+ };
97
105
  locationUrl: {
98
106
  type: PropType<RoxyAngelNumberCardProps["locationUrl"]>;
99
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"angel-number-card.d.ts","sourceRoot":"","sources":["../../src/components/angel-number-card.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angel-number-card.d.ts","sourceRoot":"","sources":["../../src/components/angel-number-card.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineComponent as g,h as s,onMounted as p,ref as f}from"vue";var u="0.32.1",d="roxyapi-ui-loader",m="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",c="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",y="/dist/cdn",i=null;function b(e){return!e||e==="latest"?m:`${c}${e}${y}`}function a(e=u,t){return typeof document>"u"?Promise.resolve():i||(i=new Promise((n,o)=>{let l=`${t??b(e)}/roxy-ui.js`,r=document.getElementById(d);if(r){r.dataset.loaded==="true"?n():(r.addEventListener("load",()=>n()),r.addEventListener("error",()=>o(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",n()}),r.addEventListener("error",()=>o(new Error("roxy-ui load failed"))),document.head.appendChild(r)}),i)}var R=g({name:"RoxyAngelNumberCard",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},submitUrl:{type:String},locationUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},remember:{type:Boolean},attribution:{type:String},hideReadings:{type:Boolean},hideSections:{type:String}},setup(e){let t=f(null);return p(()=>{a().catch(n=>{t.value=n instanceof Error?n:new Error(String(n))})}),()=>{if(t.value)return s("div",{role:"alert"},`Roxy UI script load failed: ${t.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.submitUrl!==void 0&&(n[".submitUrl"]=e.submitUrl),e.locationUrl!==void 0&&(n[".locationUrl"]=e.locationUrl),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.remember!==void 0&&(n[".remember"]=e.remember),e.attribution!==void 0&&(n[".attribution"]=e.attribution),e.hideReadings!==void 0&&(n[".hideReadings"]=e.hideReadings),e.hideSections!==void 0&&(n[".hideSections"]=e.hideSections),s("roxy-angel-number-card",n)}}});export{R as RoxyAngelNumberCard};
1
+ import{defineComponent as g,h as s,onMounted as p,ref as f}from"vue";var u="0.33.0",d="roxyapi-ui-loader",m="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",b="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",c="/dist/cdn",i=null;function y(e){return!e||e==="latest"?m:`${b}${e}${c}`}function a(e=u,r){return typeof document>"u"?Promise.resolve():i||(i=new Promise((n,o)=>{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",()=>o(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",()=>o(new Error("roxy-ui load failed"))),document.head.appendChild(t)}),i)}var h=g({name:"RoxyAngelNumberCard",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},submitUrl:{type:String},submitContext:{type:Object},locationUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},remember:{type:Boolean},attribution:{type:String},hideReadings:{type:Boolean},hideSections:{type:String}},setup(e){let r=f(null);return p(()=>{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.submitUrl!==void 0&&(n[".submitUrl"]=e.submitUrl),e.submitContext!==void 0&&(n[".submitContext"]=e.submitContext),e.locationUrl!==void 0&&(n[".locationUrl"]=e.locationUrl),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.remember!==void 0&&(n[".remember"]=e.remember),e.attribution!==void 0&&(n[".attribution"]=e.attribution),e.hideReadings!==void 0&&(n[".hideReadings"]=e.hideReadings),e.hideSections!==void 0&&(n[".hideSections"]=e.hideSections),s("roxy-angel-number-card",n)}}});export{h 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. Absolute, or relative to the page for a same-origin route. */\n\tbaseUrl?: string;\n\t/** Your own backend route, which holds the secret key. Self-fetch POSTs `{ path, method, body, query }` there instead of calling RoxyAPI directly and renders the JSON your route returns, so no key of any kind reaches the browser. */\n\tsubmitUrl?: string;\n\t/** Where the self-fetch form city search sends its request, absolute or relative to the page. The companion of submitUrl: the city search is a GET the form issues on its own while a visitor types, so a page that routes its API traffic through its own server names that route here as well. Unset, the search calls the public location endpoint. */\n\tlocationUrl?: 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/** Persist the last self-fetch form values in sessionStorage, keyed by endpoint, and prefill the form when the visitor returns. Off by default. */\n\tremember?: boolean;\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\t/** Comma-separated list of `part` names to take off this component, for example \"patterns\" or \"patterns, legend\". Per element rather than per site, so the same component can drop a block on one page and keep it on another with no CSS. Sibling of hideReadings and a different tool: this hides a whole block whatever it contains, where hideReadings drops interpretive prose out of the markup. Names come from the `parts` array in components-catalog.json; a name the component does not carry hides nothing and is not an error. */\n\thideSections?: string;\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\tsubmitUrl: { type: String as PropType<RoxyAngelNumberCardProps['submitUrl']> },\n\t\tlocationUrl: { type: String as PropType<RoxyAngelNumberCardProps['locationUrl']> },\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\tremember: { type: Boolean as PropType<RoxyAngelNumberCardProps['remember']> },\n\t\tattribution: { type: String as PropType<RoxyAngelNumberCardProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAngelNumberCardProps['hideReadings']> },\n\t\thideSections: { type: String as PropType<RoxyAngelNumberCardProps['hideSections']> },\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.submitUrl !== undefined) elementProps['.submitUrl'] = props.submitUrl;\n\t\t\tif (props.locationUrl !== undefined) elementProps['.locationUrl'] = props.locationUrl;\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.remember !== undefined) elementProps['.remember'] = props.remember;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\t\t\tif (props.hideSections !== undefined) elementProps['.hideSections'] = props.hideSections;\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.32.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/** 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": "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",
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. Absolute, or relative to the page for a same-origin route. */\n\tbaseUrl?: string;\n\t/** Your own backend route, which holds the secret key. Self-fetch POSTs `{ path, method, body, query }` there instead of calling RoxyAPI directly and renders the JSON your route returns, so no key of any kind reaches the browser. */\n\tsubmitUrl?: string;\n\t/** An object of your own, sent to your submitUrl route as `context` beside the request, so a page can attach its own verification data to a proxied submission. Passed through untouched and never read by the component: what it holds is for your page and your route to agree on. Unset, nothing is added and the route receives the request exactly as before. Rides the submitUrl path only; a direct call sends what the endpoint declares. */\n\tsubmitContext?: Record<string, unknown>;\n\t/** Where the self-fetch form city search sends its request, absolute or relative to the page. The companion of submitUrl: the city search is a GET the form issues on its own while a visitor types, so a page that routes its API traffic through its own server names that route here as well. Unset, the search calls the public location endpoint. */\n\tlocationUrl?: 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/** Persist the last self-fetch form values in sessionStorage, keyed by endpoint, and prefill the form when the visitor returns. Off by default. */\n\tremember?: boolean;\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\t/** Comma-separated list of `part` names to take off this component, for example \"patterns\" or \"patterns, legend\". Per element rather than per site, so the same component can drop a block on one page and keep it on another with no CSS. Sibling of hideReadings and a different tool: this hides a whole block whatever it contains, where hideReadings drops interpretive prose out of the markup. Names come from the `parts` array in components-catalog.json; a name the component does not carry hides nothing and is not an error. */\n\thideSections?: string;\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\tsubmitUrl: { type: String as PropType<RoxyAngelNumberCardProps['submitUrl']> },\n\t\tsubmitContext: { type: Object as PropType<RoxyAngelNumberCardProps['submitContext']> },\n\t\tlocationUrl: { type: String as PropType<RoxyAngelNumberCardProps['locationUrl']> },\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\tremember: { type: Boolean as PropType<RoxyAngelNumberCardProps['remember']> },\n\t\tattribution: { type: String as PropType<RoxyAngelNumberCardProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAngelNumberCardProps['hideReadings']> },\n\t\thideSections: { type: String as PropType<RoxyAngelNumberCardProps['hideSections']> },\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.submitUrl !== undefined) elementProps['.submitUrl'] = props.submitUrl;\n\t\t\tif (props.submitContext !== undefined) elementProps['.submitContext'] = props.submitContext;\n\t\t\tif (props.locationUrl !== undefined) elementProps['.locationUrl'] = props.locationUrl;\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.remember !== undefined) elementProps['.remember'] = props.remember;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\t\t\tif (props.hideSections !== undefined) elementProps['.hideSections'] = props.hideSections;\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.33.0\";\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": "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",
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
  }
@@ -13,6 +13,8 @@ export interface RoxyAngelNumberLookupProps {
13
13
  baseUrl?: string;
14
14
  /** Your own backend route, which holds the secret key. Self-fetch POSTs `{ path, method, body, query }` there instead of calling RoxyAPI directly and renders the JSON your route returns, so no key of any kind reaches the browser. */
15
15
  submitUrl?: string;
16
+ /** An object of your own, sent to your submitUrl route as `context` beside the request, so a page can attach its own verification data to a proxied submission. Passed through untouched and never read by the component: what it holds is for your page and your route to agree on. Unset, nothing is added and the route receives the request exactly as before. Rides the submitUrl path only; a direct call sends what the endpoint declares. */
17
+ submitContext?: Record<string, unknown>;
16
18
  /** Where the self-fetch form city search sends its request, absolute or relative to the page. The companion of submitUrl: the city search is a GET the form issues on its own while a visitor types, so a page that routes its API traffic through its own server names that route here as well. Unset, the search calls the public location endpoint. */
17
19
  locationUrl?: string;
18
20
  /** Override the OpenAPI spec URL the self-fetch form introspects. */
@@ -49,6 +51,9 @@ export declare const RoxyAngelNumberLookup: import("vue").DefineComponent<import
49
51
  submitUrl: {
50
52
  type: PropType<RoxyAngelNumberLookupProps["submitUrl"]>;
51
53
  };
54
+ submitContext: {
55
+ type: PropType<RoxyAngelNumberLookupProps["submitContext"]>;
56
+ };
52
57
  locationUrl: {
53
58
  type: PropType<RoxyAngelNumberLookupProps["locationUrl"]>;
54
59
  };
@@ -94,6 +99,9 @@ export declare const RoxyAngelNumberLookup: import("vue").DefineComponent<import
94
99
  submitUrl: {
95
100
  type: PropType<RoxyAngelNumberLookupProps["submitUrl"]>;
96
101
  };
102
+ submitContext: {
103
+ type: PropType<RoxyAngelNumberLookupProps["submitContext"]>;
104
+ };
97
105
  locationUrl: {
98
106
  type: PropType<RoxyAngelNumberLookupProps["locationUrl"]>;
99
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"angel-number-lookup.d.ts","sourceRoot":"","sources":["../../src/components/angel-number-lookup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angel-number-lookup.d.ts","sourceRoot":"","sources":["../../src/components/angel-number-lookup.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineComponent as b,h as s,onMounted as g,ref as f}from"vue";var u="0.32.1",d="roxyapi-ui-loader",m="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",p="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",c="/dist/cdn",o=null;function y(e){return!e||e==="latest"?m:`${p}${e}${c}`}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 h=b({name:"RoxyAngelNumberLookup",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},submitUrl:{type:String},locationUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},remember:{type:Boolean},attribution:{type:String},hideReadings:{type:Boolean},hideSections:{type:String}},setup(e){let r=f(null);return g(()=>{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.submitUrl!==void 0&&(n[".submitUrl"]=e.submitUrl),e.locationUrl!==void 0&&(n[".locationUrl"]=e.locationUrl),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.remember!==void 0&&(n[".remember"]=e.remember),e.attribution!==void 0&&(n[".attribution"]=e.attribution),e.hideReadings!==void 0&&(n[".hideReadings"]=e.hideReadings),e.hideSections!==void 0&&(n[".hideSections"]=e.hideSections),s("roxy-angel-number-lookup",n)}}});export{h as RoxyAngelNumberLookup};
1
+ import{defineComponent as y,h as a,onMounted as g,ref as f}from"vue";var u="0.33.0",d="roxyapi-ui-loader",m="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",p="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",b="/dist/cdn",r=null;function c(e){return!e||e==="latest"?m:`${p}${e}${b}`}function s(e=u,o){return typeof document>"u"?Promise.resolve():r||(r=new Promise((n,i)=>{let l=`${o??c(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)}),r)}var R=y({name:"RoxyAngelNumberLookup",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},submitUrl:{type:String},submitContext:{type:Object},locationUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},remember:{type:Boolean},attribution:{type:String},hideReadings:{type:Boolean},hideSections:{type:String}},setup(e){let o=f(null);return g(()=>{s().catch(n=>{o.value=n instanceof Error?n:new Error(String(n))})}),()=>{if(o.value)return a("div",{role:"alert"},`Roxy UI script load failed: ${o.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.submitUrl!==void 0&&(n[".submitUrl"]=e.submitUrl),e.submitContext!==void 0&&(n[".submitContext"]=e.submitContext),e.locationUrl!==void 0&&(n[".locationUrl"]=e.locationUrl),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.remember!==void 0&&(n[".remember"]=e.remember),e.attribution!==void 0&&(n[".attribution"]=e.attribution),e.hideReadings!==void 0&&(n[".hideReadings"]=e.hideReadings),e.hideSections!==void 0&&(n[".hideSections"]=e.hideSections),a("roxy-angel-number-lookup",n)}}});export{R 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. Absolute, or relative to the page for a same-origin route. */\n\tbaseUrl?: string;\n\t/** Your own backend route, which holds the secret key. Self-fetch POSTs `{ path, method, body, query }` there instead of calling RoxyAPI directly and renders the JSON your route returns, so no key of any kind reaches the browser. */\n\tsubmitUrl?: string;\n\t/** Where the self-fetch form city search sends its request, absolute or relative to the page. The companion of submitUrl: the city search is a GET the form issues on its own while a visitor types, so a page that routes its API traffic through its own server names that route here as well. Unset, the search calls the public location endpoint. */\n\tlocationUrl?: 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/** Persist the last self-fetch form values in sessionStorage, keyed by endpoint, and prefill the form when the visitor returns. Off by default. */\n\tremember?: boolean;\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\t/** Comma-separated list of `part` names to take off this component, for example \"patterns\" or \"patterns, legend\". Per element rather than per site, so the same component can drop a block on one page and keep it on another with no CSS. Sibling of hideReadings and a different tool: this hides a whole block whatever it contains, where hideReadings drops interpretive prose out of the markup. Names come from the `parts` array in components-catalog.json; a name the component does not carry hides nothing and is not an error. */\n\thideSections?: string;\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\tsubmitUrl: { type: String as PropType<RoxyAngelNumberLookupProps['submitUrl']> },\n\t\tlocationUrl: { type: String as PropType<RoxyAngelNumberLookupProps['locationUrl']> },\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\tremember: { type: Boolean as PropType<RoxyAngelNumberLookupProps['remember']> },\n\t\tattribution: { type: String as PropType<RoxyAngelNumberLookupProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAngelNumberLookupProps['hideReadings']> },\n\t\thideSections: { type: String as PropType<RoxyAngelNumberLookupProps['hideSections']> },\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.submitUrl !== undefined) elementProps['.submitUrl'] = props.submitUrl;\n\t\t\tif (props.locationUrl !== undefined) elementProps['.locationUrl'] = props.locationUrl;\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.remember !== undefined) elementProps['.remember'] = props.remember;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\t\t\tif (props.hideSections !== undefined) elementProps['.hideSections'] = props.hideSections;\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.32.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/** 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": "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",
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. Absolute, or relative to the page for a same-origin route. */\n\tbaseUrl?: string;\n\t/** Your own backend route, which holds the secret key. Self-fetch POSTs `{ path, method, body, query }` there instead of calling RoxyAPI directly and renders the JSON your route returns, so no key of any kind reaches the browser. */\n\tsubmitUrl?: string;\n\t/** An object of your own, sent to your submitUrl route as `context` beside the request, so a page can attach its own verification data to a proxied submission. Passed through untouched and never read by the component: what it holds is for your page and your route to agree on. Unset, nothing is added and the route receives the request exactly as before. Rides the submitUrl path only; a direct call sends what the endpoint declares. */\n\tsubmitContext?: Record<string, unknown>;\n\t/** Where the self-fetch form city search sends its request, absolute or relative to the page. The companion of submitUrl: the city search is a GET the form issues on its own while a visitor types, so a page that routes its API traffic through its own server names that route here as well. Unset, the search calls the public location endpoint. */\n\tlocationUrl?: 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/** Persist the last self-fetch form values in sessionStorage, keyed by endpoint, and prefill the form when the visitor returns. Off by default. */\n\tremember?: boolean;\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\t/** Comma-separated list of `part` names to take off this component, for example \"patterns\" or \"patterns, legend\". Per element rather than per site, so the same component can drop a block on one page and keep it on another with no CSS. Sibling of hideReadings and a different tool: this hides a whole block whatever it contains, where hideReadings drops interpretive prose out of the markup. Names come from the `parts` array in components-catalog.json; a name the component does not carry hides nothing and is not an error. */\n\thideSections?: string;\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\tsubmitUrl: { type: String as PropType<RoxyAngelNumberLookupProps['submitUrl']> },\n\t\tsubmitContext: { type: Object as PropType<RoxyAngelNumberLookupProps['submitContext']> },\n\t\tlocationUrl: { type: String as PropType<RoxyAngelNumberLookupProps['locationUrl']> },\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\tremember: { type: Boolean as PropType<RoxyAngelNumberLookupProps['remember']> },\n\t\tattribution: { type: String as PropType<RoxyAngelNumberLookupProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyAngelNumberLookupProps['hideReadings']> },\n\t\thideSections: { type: String as PropType<RoxyAngelNumberLookupProps['hideSections']> },\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.submitUrl !== undefined) elementProps['.submitUrl'] = props.submitUrl;\n\t\t\tif (props.submitContext !== undefined) elementProps['.submitContext'] = props.submitContext;\n\t\t\tif (props.locationUrl !== undefined) elementProps['.locationUrl'] = props.locationUrl;\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.remember !== undefined) elementProps['.remember'] = props.remember;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\t\t\tif (props.hideSections !== undefined) elementProps['.hideSections'] = props.hideSections;\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.33.0\";\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": "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",
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
  }
@@ -13,6 +13,8 @@ export interface RoxyArudhaPadasProps {
13
13
  baseUrl?: string;
14
14
  /** Your own backend route, which holds the secret key. Self-fetch POSTs `{ path, method, body, query }` there instead of calling RoxyAPI directly and renders the JSON your route returns, so no key of any kind reaches the browser. */
15
15
  submitUrl?: string;
16
+ /** An object of your own, sent to your submitUrl route as `context` beside the request, so a page can attach its own verification data to a proxied submission. Passed through untouched and never read by the component: what it holds is for your page and your route to agree on. Unset, nothing is added and the route receives the request exactly as before. Rides the submitUrl path only; a direct call sends what the endpoint declares. */
17
+ submitContext?: Record<string, unknown>;
16
18
  /** Where the self-fetch form city search sends its request, absolute or relative to the page. The companion of submitUrl: the city search is a GET the form issues on its own while a visitor types, so a page that routes its API traffic through its own server names that route here as well. Unset, the search calls the public location endpoint. */
17
19
  locationUrl?: string;
18
20
  /** Override the OpenAPI spec URL the self-fetch form introspects. */
@@ -49,6 +51,9 @@ export declare const RoxyArudhaPadas: import("vue").DefineComponent<import("vue"
49
51
  submitUrl: {
50
52
  type: PropType<RoxyArudhaPadasProps["submitUrl"]>;
51
53
  };
54
+ submitContext: {
55
+ type: PropType<RoxyArudhaPadasProps["submitContext"]>;
56
+ };
52
57
  locationUrl: {
53
58
  type: PropType<RoxyArudhaPadasProps["locationUrl"]>;
54
59
  };
@@ -94,6 +99,9 @@ export declare const RoxyArudhaPadas: import("vue").DefineComponent<import("vue"
94
99
  submitUrl: {
95
100
  type: PropType<RoxyArudhaPadasProps["submitUrl"]>;
96
101
  };
102
+ submitContext: {
103
+ type: PropType<RoxyArudhaPadasProps["submitContext"]>;
104
+ };
97
105
  locationUrl: {
98
106
  type: PropType<RoxyArudhaPadasProps["locationUrl"]>;
99
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"arudha-padas.d.ts","sourceRoot":"","sources":["../../src/components/arudha-padas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,QAAQ,EAAO,MAAM,KAAK,CAAC;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACpC,oEAAoE;IACpE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,mPAAmP;IACnP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,6GAA6G;IAC7G,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iIAAiI;IACjI,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yOAAyO;IACzO,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0VAA0V;IAC1V,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+MAA+M;IAC/M,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uJAAuJ;IACvJ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mJAAmJ;IACnJ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+MAA+M;IAC/M,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0PAA0P;IAC1P,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+gBAA+gB;IAC/gB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,eAAe;;cAGF,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;;;cAClC,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;;;cAC5C,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;;;cAChC,QAAQ,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;;;cACvD,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;;;cACvC,QAAQ,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;;;cACzC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;;;cACjD,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;;;cAC5C,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;;;cAC/B,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;;;cAC/C,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;;;cACxC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;;;cAC3C,QAAQ,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;;;cAC/C,QAAQ,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;;;;;;cAbtD,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;;;cAClC,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;;;cAC5C,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;;;cAChC,QAAQ,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;;;cACvD,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;;;cACvC,QAAQ,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;;;cACzC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;;;cACjD,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;;;cAC5C,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;;;cAC/B,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;;;cAC/C,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;;;cACxC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;;;cAC3C,QAAQ,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;;;cAC/C,QAAQ,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;;iGAuC9E,CAAC"}
1
+ {"version":3,"file":"arudha-padas.d.ts","sourceRoot":"","sources":["../../src/components/arudha-padas.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineComponent as f,h as s,onMounted as P,ref as b}from"vue";var u="0.32.1",d="roxyapi-ui-loader",c="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",y="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",p="/dist/cdn",i=null;function m(e){return!e||e==="latest"?c:`${y}${e}${p}`}function o(e=u,r){return typeof document>"u"?Promise.resolve():i||(i=new Promise((t,a)=>{let l=`${r??m(e)}/roxy-ui.js`,n=document.getElementById(d);if(n){n.dataset.loaded==="true"?t():(n.addEventListener("load",()=>t()),n.addEventListener("error",()=>a(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=d,n.src=l,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",t()}),n.addEventListener("error",()=>a(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),i)}var R=f({name:"RoxyArudhaPadas",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},submitUrl:{type:String},locationUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},remember:{type:Boolean},attribution:{type:String},hideReadings:{type:Boolean},hideSections:{type:String}},setup(e){let r=b(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.submitUrl!==void 0&&(t[".submitUrl"]=e.submitUrl),e.locationUrl!==void 0&&(t[".locationUrl"]=e.locationUrl),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.remember!==void 0&&(t[".remember"]=e.remember),e.attribution!==void 0&&(t[".attribution"]=e.attribution),e.hideReadings!==void 0&&(t[".hideReadings"]=e.hideReadings),e.hideSections!==void 0&&(t[".hideSections"]=e.hideSections),s("roxy-arudha-padas",t)}}});export{R as RoxyArudhaPadas};
1
+ import{defineComponent as P,h as s,onMounted as f,ref as b}from"vue";var u="0.33.0",d="roxyapi-ui-loader",c="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",y="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",m="/dist/cdn",i=null;function p(e){return!e||e==="latest"?c:`${y}${e}${m}`}function o(e=u,r){return typeof document>"u"?Promise.resolve():i||(i=new Promise((t,a)=>{let l=`${r??p(e)}/roxy-ui.js`,n=document.getElementById(d);if(n){n.dataset.loaded==="true"?t():(n.addEventListener("load",()=>t()),n.addEventListener("error",()=>a(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=d,n.src=l,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",t()}),n.addEventListener("error",()=>a(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),i)}var R=P({name:"RoxyArudhaPadas",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},submitUrl:{type:String},submitContext:{type:Object},locationUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},remember:{type:Boolean},attribution:{type:String},hideReadings:{type:Boolean},hideSections:{type:String}},setup(e){let r=b(null);return f(()=>{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.submitUrl!==void 0&&(t[".submitUrl"]=e.submitUrl),e.submitContext!==void 0&&(t[".submitContext"]=e.submitContext),e.locationUrl!==void 0&&(t[".locationUrl"]=e.locationUrl),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.remember!==void 0&&(t[".remember"]=e.remember),e.attribution!==void 0&&(t[".attribution"]=e.attribution),e.hideReadings!==void 0&&(t[".hideReadings"]=e.hideReadings),e.hideSections!==void 0&&(t[".hideSections"]=e.hideSections),s("roxy-arudha-padas",t)}}});export{R 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. Absolute, or relative to the page for a same-origin route. */\n\tbaseUrl?: string;\n\t/** Your own backend route, which holds the secret key. Self-fetch POSTs `{ path, method, body, query }` there instead of calling RoxyAPI directly and renders the JSON your route returns, so no key of any kind reaches the browser. */\n\tsubmitUrl?: string;\n\t/** Where the self-fetch form city search sends its request, absolute or relative to the page. The companion of submitUrl: the city search is a GET the form issues on its own while a visitor types, so a page that routes its API traffic through its own server names that route here as well. Unset, the search calls the public location endpoint. */\n\tlocationUrl?: 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/** Persist the last self-fetch form values in sessionStorage, keyed by endpoint, and prefill the form when the visitor returns. Off by default. */\n\tremember?: boolean;\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\t/** Comma-separated list of `part` names to take off this component, for example \"patterns\" or \"patterns, legend\". Per element rather than per site, so the same component can drop a block on one page and keep it on another with no CSS. Sibling of hideReadings and a different tool: this hides a whole block whatever it contains, where hideReadings drops interpretive prose out of the markup. Names come from the `parts` array in components-catalog.json; a name the component does not carry hides nothing and is not an error. */\n\thideSections?: string;\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\tsubmitUrl: { type: String as PropType<RoxyArudhaPadasProps['submitUrl']> },\n\t\tlocationUrl: { type: String as PropType<RoxyArudhaPadasProps['locationUrl']> },\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\tremember: { type: Boolean as PropType<RoxyArudhaPadasProps['remember']> },\n\t\tattribution: { type: String as PropType<RoxyArudhaPadasProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyArudhaPadasProps['hideReadings']> },\n\t\thideSections: { type: String as PropType<RoxyArudhaPadasProps['hideSections']> },\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.submitUrl !== undefined) elementProps['.submitUrl'] = props.submitUrl;\n\t\t\tif (props.locationUrl !== undefined) elementProps['.locationUrl'] = props.locationUrl;\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.remember !== undefined) elementProps['.remember'] = props.remember;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\t\t\tif (props.hideSections !== undefined) elementProps['.hideSections'] = props.hideSections;\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.32.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/** 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": "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",
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. Absolute, or relative to the page for a same-origin route. */\n\tbaseUrl?: string;\n\t/** Your own backend route, which holds the secret key. Self-fetch POSTs `{ path, method, body, query }` there instead of calling RoxyAPI directly and renders the JSON your route returns, so no key of any kind reaches the browser. */\n\tsubmitUrl?: string;\n\t/** An object of your own, sent to your submitUrl route as `context` beside the request, so a page can attach its own verification data to a proxied submission. Passed through untouched and never read by the component: what it holds is for your page and your route to agree on. Unset, nothing is added and the route receives the request exactly as before. Rides the submitUrl path only; a direct call sends what the endpoint declares. */\n\tsubmitContext?: Record<string, unknown>;\n\t/** Where the self-fetch form city search sends its request, absolute or relative to the page. The companion of submitUrl: the city search is a GET the form issues on its own while a visitor types, so a page that routes its API traffic through its own server names that route here as well. Unset, the search calls the public location endpoint. */\n\tlocationUrl?: 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/** Persist the last self-fetch form values in sessionStorage, keyed by endpoint, and prefill the form when the visitor returns. Off by default. */\n\tremember?: boolean;\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\t/** Comma-separated list of `part` names to take off this component, for example \"patterns\" or \"patterns, legend\". Per element rather than per site, so the same component can drop a block on one page and keep it on another with no CSS. Sibling of hideReadings and a different tool: this hides a whole block whatever it contains, where hideReadings drops interpretive prose out of the markup. Names come from the `parts` array in components-catalog.json; a name the component does not carry hides nothing and is not an error. */\n\thideSections?: string;\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\tsubmitUrl: { type: String as PropType<RoxyArudhaPadasProps['submitUrl']> },\n\t\tsubmitContext: { type: Object as PropType<RoxyArudhaPadasProps['submitContext']> },\n\t\tlocationUrl: { type: String as PropType<RoxyArudhaPadasProps['locationUrl']> },\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\tremember: { type: Boolean as PropType<RoxyArudhaPadasProps['remember']> },\n\t\tattribution: { type: String as PropType<RoxyArudhaPadasProps['attribution']> },\n\t\thideReadings: { type: Boolean as PropType<RoxyArudhaPadasProps['hideReadings']> },\n\t\thideSections: { type: String as PropType<RoxyArudhaPadasProps['hideSections']> },\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.submitUrl !== undefined) elementProps['.submitUrl'] = props.submitUrl;\n\t\t\tif (props.submitContext !== undefined) elementProps['.submitContext'] = props.submitContext;\n\t\t\tif (props.locationUrl !== undefined) elementProps['.locationUrl'] = props.locationUrl;\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.remember !== undefined) elementProps['.remember'] = props.remember;\n\t\t\tif (props.attribution !== undefined) elementProps['.attribution'] = props.attribution;\n\t\t\tif (props.hideReadings !== undefined) elementProps['.hideReadings'] = props.hideReadings;\n\t\t\tif (props.hideSections !== undefined) elementProps['.hideSections'] = props.hideSections;\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.33.0\";\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": "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",
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
  }
@@ -13,6 +13,8 @@ export interface RoxyAshtakavargaGridProps {
13
13
  baseUrl?: string;
14
14
  /** Your own backend route, which holds the secret key. Self-fetch POSTs `{ path, method, body, query }` there instead of calling RoxyAPI directly and renders the JSON your route returns, so no key of any kind reaches the browser. */
15
15
  submitUrl?: string;
16
+ /** An object of your own, sent to your submitUrl route as `context` beside the request, so a page can attach its own verification data to a proxied submission. Passed through untouched and never read by the component: what it holds is for your page and your route to agree on. Unset, nothing is added and the route receives the request exactly as before. Rides the submitUrl path only; a direct call sends what the endpoint declares. */
17
+ submitContext?: Record<string, unknown>;
16
18
  /** Where the self-fetch form city search sends its request, absolute or relative to the page. The companion of submitUrl: the city search is a GET the form issues on its own while a visitor types, so a page that routes its API traffic through its own server names that route here as well. Unset, the search calls the public location endpoint. */
17
19
  locationUrl?: string;
18
20
  /** Override the OpenAPI spec URL the self-fetch form introspects. */
@@ -49,6 +51,9 @@ export declare const RoxyAshtakavargaGrid: import("vue").DefineComponent<import(
49
51
  submitUrl: {
50
52
  type: PropType<RoxyAshtakavargaGridProps["submitUrl"]>;
51
53
  };
54
+ submitContext: {
55
+ type: PropType<RoxyAshtakavargaGridProps["submitContext"]>;
56
+ };
52
57
  locationUrl: {
53
58
  type: PropType<RoxyAshtakavargaGridProps["locationUrl"]>;
54
59
  };
@@ -94,6 +99,9 @@ export declare const RoxyAshtakavargaGrid: import("vue").DefineComponent<import(
94
99
  submitUrl: {
95
100
  type: PropType<RoxyAshtakavargaGridProps["submitUrl"]>;
96
101
  };
102
+ submitContext: {
103
+ type: PropType<RoxyAshtakavargaGridProps["submitContext"]>;
104
+ };
97
105
  locationUrl: {
98
106
  type: PropType<RoxyAshtakavargaGridProps["locationUrl"]>;
99
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ashtakavarga-grid.d.ts","sourceRoot":"","sources":["../../src/components/ashtakavarga-grid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ashtakavarga-grid.d.ts","sourceRoot":"","sources":["../../src/components/ashtakavarga-grid.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineComponent as p,h as s,onMounted as f,ref as b}from"vue";var u="0.32.1",o="roxyapi-ui-loader",c="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",g="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",y="/dist/cdn",i=null;function m(e){return!e||e==="latest"?c:`${g}${e}${y}`}function d(e=u,a){return typeof document>"u"?Promise.resolve():i||(i=new Promise((t,n)=>{let l=`${a??m(e)}/roxy-ui.js`,r=document.getElementById(o);if(r){r.dataset.loaded==="true"?t():(r.addEventListener("load",()=>t()),r.addEventListener("error",()=>n(new Error("roxy-ui load failed"))));return}r=document.createElement("script"),r.id=o,r.src=l,r.async=!0,r.crossOrigin="anonymous",r.addEventListener("load",()=>{r.dataset.loaded="true",t()}),r.addEventListener("error",()=>n(new Error("roxy-ui load failed"))),document.head.appendChild(r)}),i)}var x=p({name:"RoxyAshtakavargaGrid",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},submitUrl:{type:String},locationUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},remember:{type:Boolean},attribution:{type:String},hideReadings:{type:Boolean},hideSections:{type:String}},setup(e){let a=b(null);return f(()=>{d().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.submitUrl!==void 0&&(t[".submitUrl"]=e.submitUrl),e.locationUrl!==void 0&&(t[".locationUrl"]=e.locationUrl),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.remember!==void 0&&(t[".remember"]=e.remember),e.attribution!==void 0&&(t[".attribution"]=e.attribution),e.hideReadings!==void 0&&(t[".hideReadings"]=e.hideReadings),e.hideSections!==void 0&&(t[".hideSections"]=e.hideSections),s("roxy-ashtakavarga-grid",t)}}});export{x as RoxyAshtakavargaGrid};
1
+ import{defineComponent as p,h as s,onMounted as f,ref as b}from"vue";var u="0.33.0",o="roxyapi-ui-loader",c="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",y="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",g="/dist/cdn",i=null;function m(e){return!e||e==="latest"?c:`${y}${e}${g}`}function d(e=u,n){return typeof document>"u"?Promise.resolve():i||(i=new Promise((t,a)=>{let l=`${n??m(e)}/roxy-ui.js`,r=document.getElementById(o);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=o,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)}),i)}var v=p({name:"RoxyAshtakavargaGrid",props:{data:{type:Object},endpoint:{type:String},method:{type:String},publishableKey:{type:String},baseUrl:{type:String},submitUrl:{type:String},submitContext:{type:Object},locationUrl:{type:String},specUrl:{type:String},lang:{type:String},submitLabel:{type:String},remember:{type:Boolean},attribution:{type:String},hideReadings:{type:Boolean},hideSections:{type:String}},setup(e){let n=b(null);return f(()=>{d().catch(t=>{n.value=t instanceof Error?t:new Error(String(t))})}),()=>{if(n.value)return s("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.submitUrl!==void 0&&(t[".submitUrl"]=e.submitUrl),e.submitContext!==void 0&&(t[".submitContext"]=e.submitContext),e.locationUrl!==void 0&&(t[".locationUrl"]=e.locationUrl),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.remember!==void 0&&(t[".remember"]=e.remember),e.attribution!==void 0&&(t[".attribution"]=e.attribution),e.hideReadings!==void 0&&(t[".hideReadings"]=e.hideReadings),e.hideSections!==void 0&&(t[".hideSections"]=e.hideSections),s("roxy-ashtakavarga-grid",t)}}});export{v as RoxyAshtakavargaGrid};
2
2
  //# sourceMappingURL=ashtakavarga-grid.js.map