@roxyapi/ui-react 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +75 -7
- package/README.md +17 -11
- package/dist/components/angel-number-card.d.ts +1 -1
- package/dist/components/angel-number-card.js +1 -1
- package/dist/components/angel-number-card.js.map +3 -3
- package/dist/components/angel-number-lookup.d.ts +1 -1
- package/dist/components/angel-number-lookup.js +1 -1
- package/dist/components/angel-number-lookup.js.map +3 -3
- package/dist/components/ashtakavarga-grid.d.ts +1 -1
- package/dist/components/ashtakavarga-grid.js +1 -1
- package/dist/components/ashtakavarga-grid.js.map +3 -3
- package/dist/components/aspects-table.d.ts +1 -1
- package/dist/components/aspects-table.js +1 -1
- package/dist/components/aspects-table.js.map +3 -3
- package/dist/components/astrocartography-map.d.ts +1 -1
- package/dist/components/astrocartography-map.js +1 -1
- package/dist/components/astrocartography-map.js.map +3 -3
- package/dist/components/biorhythm-chart.d.ts +1 -1
- package/dist/components/biorhythm-chart.js +1 -1
- package/dist/components/biorhythm-chart.js.map +3 -3
- package/dist/components/bodygraph.d.ts +1 -1
- package/dist/components/bodygraph.js +1 -1
- package/dist/components/bodygraph.js.map +3 -3
- package/dist/components/choghadiya-grid.d.ts +1 -1
- package/dist/components/choghadiya-grid.js +1 -1
- package/dist/components/choghadiya-grid.js.map +3 -3
- package/dist/components/compatibility-card.d.ts +1 -1
- package/dist/components/compatibility-card.js +1 -1
- package/dist/components/compatibility-card.js.map +3 -3
- package/dist/components/crystal-card.d.ts +1 -1
- package/dist/components/crystal-card.js +1 -1
- package/dist/components/crystal-card.js.map +3 -3
- package/dist/components/crystal-grid.d.ts +1 -1
- package/dist/components/crystal-grid.js +1 -1
- package/dist/components/crystal-grid.js.map +3 -3
- package/dist/components/dasha-timeline.d.ts +1 -1
- package/dist/components/dasha-timeline.js +1 -1
- package/dist/components/dasha-timeline.js.map +3 -3
- package/dist/components/data.d.ts +13 -1
- package/dist/components/data.d.ts.map +1 -1
- package/dist/components/data.js +1 -1
- package/dist/components/data.js.map +3 -3
- package/dist/components/divisional-chart.d.ts +1 -1
- package/dist/components/divisional-chart.js +1 -1
- package/dist/components/divisional-chart.js.map +3 -3
- package/dist/components/dosha-card.d.ts +1 -1
- package/dist/components/dosha-card.js +1 -1
- package/dist/components/dosha-card.js.map +3 -3
- package/dist/components/dream-card.d.ts +1 -1
- package/dist/components/dream-card.js +1 -1
- package/dist/components/dream-card.js.map +3 -3
- package/dist/components/dream-search.d.ts +1 -1
- package/dist/components/dream-search.js +1 -1
- package/dist/components/dream-search.js.map +3 -3
- package/dist/components/endpoint-form.js +1 -1
- package/dist/components/endpoint-form.js.map +3 -3
- package/dist/components/fixed-stars.d.ts +1 -1
- package/dist/components/fixed-stars.js +1 -1
- package/dist/components/fixed-stars.js.map +3 -3
- package/dist/components/forecast-digest.d.ts +1 -1
- package/dist/components/forecast-digest.js +1 -1
- package/dist/components/forecast-digest.js.map +3 -3
- package/dist/components/forecast-timeline.d.ts +1 -1
- package/dist/components/forecast-timeline.js +1 -1
- package/dist/components/forecast-timeline.js.map +3 -3
- package/dist/components/guna-milan.d.ts +1 -1
- package/dist/components/guna-milan.js +1 -1
- package/dist/components/guna-milan.js.map +3 -3
- package/dist/components/hd-connection.d.ts +1 -1
- package/dist/components/hd-connection.js +1 -1
- package/dist/components/hd-connection.js.map +3 -3
- package/dist/components/hd-penta.d.ts +1 -1
- package/dist/components/hd-penta.js +1 -1
- package/dist/components/hd-penta.js.map +3 -3
- package/dist/components/hd-type-card.d.ts +1 -1
- package/dist/components/hd-type-card.js +1 -1
- package/dist/components/hd-type-card.js.map +3 -3
- package/dist/components/hd-variables.d.ts +1 -1
- package/dist/components/hd-variables.js +1 -1
- package/dist/components/hd-variables.js.map +3 -3
- package/dist/components/hexagram.d.ts +1 -1
- package/dist/components/hexagram.js +1 -1
- package/dist/components/hexagram.js.map +3 -3
- package/dist/components/hora-table.d.ts +1 -1
- package/dist/components/hora-table.js +1 -1
- package/dist/components/hora-table.js.map +3 -3
- package/dist/components/horoscope-card.d.ts +1 -1
- package/dist/components/horoscope-card.js +1 -1
- package/dist/components/horoscope-card.js.map +3 -3
- package/dist/components/kp-chart.d.ts +1 -1
- package/dist/components/kp-chart.js +1 -1
- package/dist/components/kp-chart.js.map +3 -3
- package/dist/components/kp-planets-table.d.ts +1 -1
- package/dist/components/kp-planets-table.js +1 -1
- package/dist/components/kp-planets-table.js.map +3 -3
- package/dist/components/kp-ruling-planets.d.ts +1 -1
- package/dist/components/kp-ruling-planets.js +1 -1
- package/dist/components/kp-ruling-planets.js.map +3 -3
- package/dist/components/local-space-compass.d.ts +1 -1
- package/dist/components/local-space-compass.js +1 -1
- package/dist/components/local-space-compass.js.map +3 -3
- package/dist/components/location-search.d.ts +1 -1
- package/dist/components/location-search.js +1 -1
- package/dist/components/location-search.js.map +3 -3
- package/dist/components/moon-phase.d.ts +1 -1
- package/dist/components/moon-phase.js +1 -1
- package/dist/components/moon-phase.js.map +3 -3
- package/dist/components/nakshatra-card.d.ts +1 -1
- package/dist/components/nakshatra-card.js +1 -1
- package/dist/components/nakshatra-card.js.map +3 -3
- package/dist/components/natal-chart.d.ts +1 -1
- package/dist/components/natal-chart.js +1 -1
- package/dist/components/natal-chart.js.map +3 -3
- package/dist/components/numerology-card.d.ts +1 -1
- package/dist/components/numerology-card.js +1 -1
- package/dist/components/numerology-card.js.map +3 -3
- package/dist/components/panchang-table.d.ts +1 -1
- package/dist/components/panchang-table.js +1 -1
- package/dist/components/panchang-table.js.map +3 -3
- package/dist/components/positions-table.d.ts +1 -1
- package/dist/components/positions-table.js +1 -1
- package/dist/components/positions-table.js.map +3 -3
- package/dist/components/profection-card.d.ts +1 -1
- package/dist/components/profection-card.js +1 -1
- package/dist/components/profection-card.js.map +3 -3
- package/dist/components/reference-card.d.ts +1 -1
- package/dist/components/reference-card.js +1 -1
- package/dist/components/reference-card.js.map +3 -3
- package/dist/components/relocation-wheel.d.ts +1 -1
- package/dist/components/relocation-wheel.js +1 -1
- package/dist/components/relocation-wheel.js.map +3 -3
- package/dist/components/shadbala-table.d.ts +1 -1
- package/dist/components/shadbala-table.js +1 -1
- package/dist/components/shadbala-table.js.map +3 -3
- package/dist/components/synastry-chart.d.ts +1 -1
- package/dist/components/synastry-chart.js +1 -1
- package/dist/components/synastry-chart.js.map +3 -3
- package/dist/components/tarot-card.d.ts +1 -1
- package/dist/components/tarot-card.js +1 -1
- package/dist/components/tarot-card.js.map +3 -3
- package/dist/components/tarot-catalog.d.ts +1 -1
- package/dist/components/tarot-catalog.js +1 -1
- package/dist/components/tarot-catalog.js.map +3 -3
- package/dist/components/tarot-spread.d.ts +1 -1
- package/dist/components/tarot-spread.js +1 -1
- package/dist/components/tarot-spread.js.map +3 -3
- package/dist/components/transits-table.d.ts +1 -1
- package/dist/components/transits-table.js +1 -1
- package/dist/components/transits-table.js.map +3 -3
- package/dist/components/vedic-aspects.d.ts +1 -1
- package/dist/components/vedic-aspects.js +1 -1
- package/dist/components/vedic-aspects.js.map +3 -3
- package/dist/components/vedic-kundli.d.ts +1 -1
- package/dist/components/vedic-kundli.js +1 -1
- package/dist/components/vedic-kundli.js.map +3 -3
- package/dist/components/vedic-planets-table.d.ts +1 -1
- package/dist/components/vedic-planets-table.js +1 -1
- package/dist/components/vedic-planets-table.js.map +3 -3
- package/dist/components/western-planets-table.d.ts +1 -1
- package/dist/components/western-planets-table.js +1 -1
- package/dist/components/western-planets-table.js.map +3 -3
- package/dist/components/yoga-list.d.ts +1 -1
- package/dist/components/yoga-list.js +1 -1
- package/dist/components/yoga-list.js.map +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/load-ui.d.ts +22 -2
- package/dist/load-ui.d.ts.map +1 -1
- package/dist/load-ui.js +1 -1
- package/dist/load-ui.js.map +3 -3
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types.gen.d.ts +36741 -0
- package/dist/types/types.gen.d.ts.map +1 -0
- package/package.json +4 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/shadbala-table.tsx", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { ShadbalaResponse } from '
|
|
5
|
-
"mappings": "AAAA,UAAYA,MAAW,
|
|
6
|
-
"names": ["React", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "resolve", "reject", "url", "existing", "RoxyShadbalaTable", "data", "className", "style", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { ShadbalaResponse } from '../types/index.js';\n\ntype ElementAttrs = Omit<\n\tReact.HTMLAttributes<HTMLElement>,\n\t'children' | 'data'\n>;\n\nexport interface RoxyShadbalaTableProps extends ElementAttrs {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: ShadbalaResponse;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\n}\n\nexport const RoxyShadbalaTable = React.forwardRef<HTMLElement | null, RoxyShadbalaTableProps>(\n\tfunction RoxyShadbalaTable({ data, className, style, endpoint, method, publishableKey, baseUrl, specUrl, ...rest }, ref) {\n\t\tconst internal = React.useRef<HTMLElement | null>(null);\n\t\tReact.useImperativeHandle<HTMLElement | null, HTMLElement | null>(\n\t\t\tref,\n\t\t\t() => internal.current,\n\t\t\t[],\n\t\t);\n\t\tconst [loaded, setLoaded] = React.useState(false);\n\t\tconst [error, setError] = React.useState<Error | null>(null);\n\n\t\tReact.useEffect(() => {\n\t\t\tlet active = true;\n\t\t\tensureScriptLoaded()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (active) setLoaded(true);\n\t\t\t\t})\n\t\t\t\t.catch((err: unknown) => {\n\t\t\t\t\tif (!active) return;\n\t\t\t\t\tsetError(err instanceof Error ? err : new Error(String(err)));\n\t\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tactive = false;\n\t\t\t};\n\t\t}, []);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && data !== undefined) {\n\t\t\t\t(el as unknown as { data: unknown }).data = data;\n\t\t\t}\n\t\t}, [data, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && endpoint !== undefined) {\n\t\t\t\t(el as unknown as { endpoint: string }).endpoint = endpoint;\n\t\t\t}\n\t\t}, [endpoint, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && method !== undefined) {\n\t\t\t\t(el as unknown as { method: 'GET' | 'POST' }).method = method;\n\t\t\t}\n\t\t}, [method, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && publishableKey !== undefined) {\n\t\t\t\t(el as unknown as { publishableKey: string }).publishableKey = publishableKey;\n\t\t\t}\n\t\t}, [publishableKey, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && baseUrl !== undefined) {\n\t\t\t\t(el as unknown as { baseUrl: string }).baseUrl = baseUrl;\n\t\t\t}\n\t\t}, [baseUrl, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && specUrl !== undefined) {\n\t\t\t\t(el as unknown as { specUrl: string }).specUrl = specUrl;\n\t\t\t}\n\t\t}, [specUrl, loaded]);\n\n\t\tif (error) {\n\t\t\treturn React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ role: 'alert', className, style },\n\t\t\t\t`Roxy UI script load failed: ${error.message}`,\n\t\t\t);\n\t\t}\n\n\t\treturn React.createElement('roxy-shadbala-table', {\n\t\t\tref: internal,\n\t\t\tclassName,\n\t\t\tstyle,\n\t\t\t...rest,\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 * React server components and Next.js SSR work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.15.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// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-react\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "AAAA,UAAYA,MAAW,QCoBhB,IAAMC,EAAkB,SAEzBC,EAAY,oBACZC,EAAkB,2DAClBC,EAAkB,4CAClBC,EAAkB,YAEpBC,EAA+B,KAEnC,SAASC,EAAUC,EAAyB,CAC3C,MAAI,CAACA,GAAWA,IAAY,SAAiBL,EACtC,GAAGC,CAAe,GAAGI,CAAO,GAAGH,CAAe,EACtD,CAEO,SAASI,EACfD,EAAkBP,EAClBS,EACgB,CAChB,OAAI,OAAO,SAAa,IAAoB,QAAQ,QAAQ,EACxDJ,IAEJA,EAAS,IAAI,QAAc,CAACK,EAASC,IAAW,CAC/C,IAAMC,EAAM,GAAGH,GAAWH,EAAUC,CAAO,CAAC,cACxCM,EAAW,SAAS,eAAeZ,CAAS,EAChD,GAAIY,EAAU,CACTA,EAAS,QAAQ,SAAW,OAC/BH,EAAQ,GAERG,EAAS,iBAAiB,OAAQ,IAAMH,EAAQ,CAAC,EACjDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,GAElF,MACD,CACAE,EAAW,SAAS,cAAc,QAAQ,EAC1CA,EAAS,GAAKZ,EACdY,EAAS,IAAMD,EACfC,EAAS,MAAQ,GACjBA,EAAS,YAAc,YACvBA,EAAS,iBAAiB,OAAQ,IAAM,CACvCA,EAAU,QAAQ,OAAS,OAC3BH,EAAQ,CACT,CAAC,EACDG,EAAS,iBAAiB,QAAS,IAAMF,EAAO,IAAI,MAAM,qBAAqB,CAAC,CAAC,EACjF,SAAS,KAAK,YAAYE,CAAQ,CACnC,CAAC,EACMR,EACR,CDvCO,IAAMS,EAA0B,aACtC,SAA2B,CAAE,KAAAC,EAAM,UAAAC,EAAW,MAAAC,EAAO,SAAAC,EAAU,OAAAC,EAAQ,eAAAC,EAAgB,QAAAC,EAAS,QAAAC,EAAS,GAAGC,CAAK,EAAGC,EAAK,CACxH,IAAMC,EAAiB,SAA2B,IAAI,EAChD,sBACLD,EACA,IAAMC,EAAS,QACf,CAAC,CACF,EACA,GAAM,CAACC,EAAQC,CAAS,EAAU,WAAS,EAAK,EAC1C,CAACC,EAAOC,CAAQ,EAAU,WAAuB,IAAI,EA2D3D,OAzDM,YAAU,IAAM,CACrB,IAAIC,EAAS,GACb,OAAAC,EAAmB,EACjB,KAAK,IAAM,CACPD,GAAQH,EAAU,EAAI,CAC3B,CAAC,EACA,MAAOK,GAAiB,CACnBF,GACLD,EAASG,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CAAC,CAC7D,CAAC,EACK,IAAM,CACZF,EAAS,EACV,CACD,EAAG,CAAC,CAAC,EAEC,YAAU,IAAM,CACrB,IAAMG,EAAKR,EAAS,QAChBQ,GAAMlB,IAAS,SACjBkB,EAAoC,KAAOlB,EAE9C,EAAG,CAACA,EAAMW,CAAM,CAAC,EAEX,YAAU,IAAM,CACrB,IAAMO,EAAKR,EAAS,QAChBQ,GAAMf,IAAa,SACrBe,EAAuC,SAAWf,EAErD,EAAG,CAACA,EAAUQ,CAAM,CAAC,EAEf,YAAU,IAAM,CACrB,IAAMO,EAAKR,EAAS,QAChBQ,GAAMd,IAAW,SACnBc,EAA6C,OAASd,EAEzD,EAAG,CAACA,EAAQO,CAAM,CAAC,EAEb,YAAU,IAAM,CACrB,IAAMO,EAAKR,EAAS,QAChBQ,GAAMb,IAAmB,SAC3Ba,EAA6C,eAAiBb,EAEjE,EAAG,CAACA,EAAgBM,CAAM,CAAC,EAErB,YAAU,IAAM,CACrB,IAAMO,EAAKR,EAAS,QAChBQ,GAAMZ,IAAY,SACpBY,EAAsC,QAAUZ,EAEnD,EAAG,CAACA,EAASK,CAAM,CAAC,EAEd,YAAU,IAAM,CACrB,IAAMO,EAAKR,EAAS,QAChBQ,GAAMX,IAAY,SACpBW,EAAsC,QAAUX,EAEnD,EAAG,CAACA,EAASI,CAAM,CAAC,EAEhBE,EACU,gBACZ,MACA,CAAE,KAAM,QAAS,UAAAZ,EAAW,MAAAC,CAAM,EAClC,+BAA+BW,EAAM,OAAO,EAC7C,EAGY,gBAAc,sBAAuB,CACjD,IAAKH,EACL,UAAAT,EACA,MAAAC,EACA,GAAGM,CACJ,CAAC,CACF,CACD",
|
|
6
|
+
"names": ["React", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyShadbalaTable", "data", "className", "style", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { CalculateSynastryResponse, NatalChartResponse } from '
|
|
2
|
+
import type { CalculateSynastryResponse, NatalChartResponse } from '../types/index.js';
|
|
3
3
|
type ElementAttrs = Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'data'>;
|
|
4
4
|
export interface RoxySynastryChartProps extends ElementAttrs {
|
|
5
5
|
/** Spec-derived response payload. Pass the raw RoxyAPI response. */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as t from"react";var m="roxyapi-ui-loader",
|
|
1
|
+
import*as t from"react";var C="0.15.0",m="roxyapi-ui-loader",L="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",T="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",w="/dist/cdn",d=null;function P(s){return!s||s==="latest"?L:`${T}${s}${w}`}function R(s=C,i){return typeof document>"u"?Promise.resolve():d||(d=new Promise((a,l)=>{let u=`${i??P(s)}/roxy-ui.js`,n=document.getElementById(m);if(n){n.dataset.loaded==="true"?a():(n.addEventListener("load",()=>a()),n.addEventListener("error",()=>l(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=m,n.src=u,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",a()}),n.addEventListener("error",()=>l(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),d)}var _=t.forwardRef(function({data:i,className:a,style:l,endpoint:u,method:n,publishableKey:c,baseUrl:f,specUrl:p,...S},x){let r=t.useRef(null);t.useImperativeHandle(x,()=>r.current,[]);let[o,g]=t.useState(!1),[y,h]=t.useState(null);return t.useEffect(()=>{let e=!0;return R().then(()=>{e&&g(!0)}).catch(E=>{e&&h(E instanceof Error?E:new Error(String(E)))}),()=>{e=!1}},[]),t.useEffect(()=>{let e=r.current;e&&i!==void 0&&(e.data=i)},[i,o]),t.useEffect(()=>{let e=r.current;e&&u!==void 0&&(e.endpoint=u)},[u,o]),t.useEffect(()=>{let e=r.current;e&&n!==void 0&&(e.method=n)},[n,o]),t.useEffect(()=>{let e=r.current;e&&c!==void 0&&(e.publishableKey=c)},[c,o]),t.useEffect(()=>{let e=r.current;e&&f!==void 0&&(e.baseUrl=f)},[f,o]),t.useEffect(()=>{let e=r.current;e&&p!==void 0&&(e.specUrl=p)},[p,o]),y?t.createElement("div",{role:"alert",className:a,style:l},`Roxy UI script load failed: ${y.message}`):t.createElement("roxy-synastry-chart",{ref:r,className:a,style:l,...S})});export{_ as RoxySynastryChart};
|
|
2
2
|
//# sourceMappingURL=synastry-chart.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/synastry-chart.tsx", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { CalculateSynastryResponse, NatalChartResponse } from '
|
|
5
|
-
"mappings": "AAAA,UAAYA,MAAW,
|
|
6
|
-
"names": ["React", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "resolve", "reject", "url", "existing", "RoxySynastryChart", "data", "className", "style", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { CalculateSynastryResponse, NatalChartResponse } from '../types/index.js';\n\ntype ElementAttrs = Omit<\n\tReact.HTMLAttributes<HTMLElement>,\n\t'children' | 'data'\n>;\n\nexport interface RoxySynastryChartProps extends ElementAttrs {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: CalculateSynastryResponse & { person1?: { planets?: NatalChartResponse['planets'] }; person2?: { planets?: NatalChartResponse['planets'] } };\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\n}\n\nexport const RoxySynastryChart = React.forwardRef<HTMLElement | null, RoxySynastryChartProps>(\n\tfunction RoxySynastryChart({ data, className, style, endpoint, method, publishableKey, baseUrl, specUrl, ...rest }, ref) {\n\t\tconst internal = React.useRef<HTMLElement | null>(null);\n\t\tReact.useImperativeHandle<HTMLElement | null, HTMLElement | null>(\n\t\t\tref,\n\t\t\t() => internal.current,\n\t\t\t[],\n\t\t);\n\t\tconst [loaded, setLoaded] = React.useState(false);\n\t\tconst [error, setError] = React.useState<Error | null>(null);\n\n\t\tReact.useEffect(() => {\n\t\t\tlet active = true;\n\t\t\tensureScriptLoaded()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (active) setLoaded(true);\n\t\t\t\t})\n\t\t\t\t.catch((err: unknown) => {\n\t\t\t\t\tif (!active) return;\n\t\t\t\t\tsetError(err instanceof Error ? err : new Error(String(err)));\n\t\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tactive = false;\n\t\t\t};\n\t\t}, []);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && data !== undefined) {\n\t\t\t\t(el as unknown as { data: unknown }).data = data;\n\t\t\t}\n\t\t}, [data, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && endpoint !== undefined) {\n\t\t\t\t(el as unknown as { endpoint: string }).endpoint = endpoint;\n\t\t\t}\n\t\t}, [endpoint, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && method !== undefined) {\n\t\t\t\t(el as unknown as { method: 'GET' | 'POST' }).method = method;\n\t\t\t}\n\t\t}, [method, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && publishableKey !== undefined) {\n\t\t\t\t(el as unknown as { publishableKey: string }).publishableKey = publishableKey;\n\t\t\t}\n\t\t}, [publishableKey, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && baseUrl !== undefined) {\n\t\t\t\t(el as unknown as { baseUrl: string }).baseUrl = baseUrl;\n\t\t\t}\n\t\t}, [baseUrl, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && specUrl !== undefined) {\n\t\t\t\t(el as unknown as { specUrl: string }).specUrl = specUrl;\n\t\t\t}\n\t\t}, [specUrl, loaded]);\n\n\t\tif (error) {\n\t\t\treturn React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ role: 'alert', className, style },\n\t\t\t\t`Roxy UI script load failed: ${error.message}`,\n\t\t\t);\n\t\t}\n\n\t\treturn React.createElement('roxy-synastry-chart', {\n\t\t\tref: internal,\n\t\t\tclassName,\n\t\t\tstyle,\n\t\t\t...rest,\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 * React server components and Next.js SSR work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.15.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// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-react\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxySynastryChart", "data", "className", "style", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { GetCardResponse, GetDailyCardResponse } from '
|
|
2
|
+
import type { GetCardResponse, GetDailyCardResponse } from '../types/index.js';
|
|
3
3
|
type ElementAttrs = Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'data'>;
|
|
4
4
|
export interface RoxyTarotCardProps extends ElementAttrs {
|
|
5
5
|
/** Spec-derived response payload. Pass the raw RoxyAPI response. */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as t from"react";var R="roxyapi-ui-loader",
|
|
1
|
+
import*as t from"react";var L="0.15.0",R="roxyapi-ui-loader",C="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",w="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",P="/dist/cdn",c=null;function h(s){return!s||s==="latest"?C:`${w}${s}${P}`}function y(s=L,i){return typeof document>"u"?Promise.resolve():c||(c=new Promise((a,d)=>{let u=`${i??h(s)}/roxy-ui.js`,n=document.getElementById(R);if(n){n.dataset.loaded==="true"?a():(n.addEventListener("load",()=>a()),n.addEventListener("error",()=>d(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=R,n.src=u,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",a()}),n.addEventListener("error",()=>d(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),c)}var _=t.forwardRef(function({data:i,className:a,style:d,endpoint:u,method:n,publishableKey:l,baseUrl:f,specUrl:p,...x},g){let r=t.useRef(null);t.useImperativeHandle(g,()=>r.current,[]);let[o,T]=t.useState(!1),[m,S]=t.useState(null);return t.useEffect(()=>{let e=!0;return y().then(()=>{e&&T(!0)}).catch(E=>{e&&S(E instanceof Error?E:new Error(String(E)))}),()=>{e=!1}},[]),t.useEffect(()=>{let e=r.current;e&&i!==void 0&&(e.data=i)},[i,o]),t.useEffect(()=>{let e=r.current;e&&u!==void 0&&(e.endpoint=u)},[u,o]),t.useEffect(()=>{let e=r.current;e&&n!==void 0&&(e.method=n)},[n,o]),t.useEffect(()=>{let e=r.current;e&&l!==void 0&&(e.publishableKey=l)},[l,o]),t.useEffect(()=>{let e=r.current;e&&f!==void 0&&(e.baseUrl=f)},[f,o]),t.useEffect(()=>{let e=r.current;e&&p!==void 0&&(e.specUrl=p)},[p,o]),m?t.createElement("div",{role:"alert",className:a,style:d},`Roxy UI script load failed: ${m.message}`):t.createElement("roxy-tarot-card",{ref:r,className:a,style:d,...x})});export{_ as RoxyTarotCard};
|
|
2
2
|
//# sourceMappingURL=tarot-card.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/tarot-card.tsx", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { GetCardResponse, GetDailyCardResponse } from '
|
|
5
|
-
"mappings": "AAAA,UAAYA,MAAW,
|
|
6
|
-
"names": ["React", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "resolve", "reject", "url", "existing", "RoxyTarotCard", "data", "className", "style", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { GetCardResponse, GetDailyCardResponse } from '../types/index.js';\n\ntype ElementAttrs = Omit<\n\tReact.HTMLAttributes<HTMLElement>,\n\t'children' | 'data'\n>;\n\nexport interface RoxyTarotCardProps extends ElementAttrs {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: GetCardResponse | GetDailyCardResponse;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\n}\n\nexport const RoxyTarotCard = React.forwardRef<HTMLElement | null, RoxyTarotCardProps>(\n\tfunction RoxyTarotCard({ data, className, style, endpoint, method, publishableKey, baseUrl, specUrl, ...rest }, ref) {\n\t\tconst internal = React.useRef<HTMLElement | null>(null);\n\t\tReact.useImperativeHandle<HTMLElement | null, HTMLElement | null>(\n\t\t\tref,\n\t\t\t() => internal.current,\n\t\t\t[],\n\t\t);\n\t\tconst [loaded, setLoaded] = React.useState(false);\n\t\tconst [error, setError] = React.useState<Error | null>(null);\n\n\t\tReact.useEffect(() => {\n\t\t\tlet active = true;\n\t\t\tensureScriptLoaded()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (active) setLoaded(true);\n\t\t\t\t})\n\t\t\t\t.catch((err: unknown) => {\n\t\t\t\t\tif (!active) return;\n\t\t\t\t\tsetError(err instanceof Error ? err : new Error(String(err)));\n\t\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tactive = false;\n\t\t\t};\n\t\t}, []);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && data !== undefined) {\n\t\t\t\t(el as unknown as { data: unknown }).data = data;\n\t\t\t}\n\t\t}, [data, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && endpoint !== undefined) {\n\t\t\t\t(el as unknown as { endpoint: string }).endpoint = endpoint;\n\t\t\t}\n\t\t}, [endpoint, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && method !== undefined) {\n\t\t\t\t(el as unknown as { method: 'GET' | 'POST' }).method = method;\n\t\t\t}\n\t\t}, [method, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && publishableKey !== undefined) {\n\t\t\t\t(el as unknown as { publishableKey: string }).publishableKey = publishableKey;\n\t\t\t}\n\t\t}, [publishableKey, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && baseUrl !== undefined) {\n\t\t\t\t(el as unknown as { baseUrl: string }).baseUrl = baseUrl;\n\t\t\t}\n\t\t}, [baseUrl, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && specUrl !== undefined) {\n\t\t\t\t(el as unknown as { specUrl: string }).specUrl = specUrl;\n\t\t\t}\n\t\t}, [specUrl, loaded]);\n\n\t\tif (error) {\n\t\t\treturn React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ role: 'alert', className, style },\n\t\t\t\t`Roxy UI script load failed: ${error.message}`,\n\t\t\t);\n\t\t}\n\n\t\treturn React.createElement('roxy-tarot-card', {\n\t\t\tref: internal,\n\t\t\tclassName,\n\t\t\tstyle,\n\t\t\t...rest,\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 * React server components and Next.js SSR work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.15.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// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-react\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyTarotCard", "data", "className", "style", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { ListCardsResponse } from '
|
|
2
|
+
import type { ListCardsResponse } from '../types/index.js';
|
|
3
3
|
type ElementAttrs = Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'data'>;
|
|
4
4
|
export interface RoxyTarotCatalogProps extends ElementAttrs {
|
|
5
5
|
/** Spec-derived response payload. Pass the raw RoxyAPI response. */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as t from"react";var g="roxyapi-ui-loader",
|
|
1
|
+
import*as t from"react";var w="0.15.0",g="roxyapi-ui-loader",C="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",P="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",h="/dist/cdn",c=null;function k(a){return!a||a==="latest"?C:`${P}${a}${h}`}function x(a=w,i){return typeof document>"u"?Promise.resolve():c||(c=new Promise((o,d)=>{let u=`${i??k(a)}/roxy-ui.js`,n=document.getElementById(g);if(n){n.dataset.loaded==="true"?o():(n.addEventListener("load",()=>o()),n.addEventListener("error",()=>d(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=g,n.src=u,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",o()}),n.addEventListener("error",()=>d(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),c)}var _=t.forwardRef(function({data:i,className:o,style:d,heading:u,endpoint:n,method:l,publishableKey:f,baseUrl:E,specUrl:p,...y},T){let r=t.useRef(null);t.useImperativeHandle(T,()=>r.current,[]);let[s,L]=t.useState(!1),[R,S]=t.useState(null);return t.useEffect(()=>{let e=!0;return x().then(()=>{e&&L(!0)}).catch(m=>{e&&S(m instanceof Error?m:new Error(String(m)))}),()=>{e=!1}},[]),t.useEffect(()=>{let e=r.current;e&&i!==void 0&&(e.data=i)},[i,s]),t.useEffect(()=>{let e=r.current;e&&u!==void 0&&(e.heading=u)},[u,s]),t.useEffect(()=>{let e=r.current;e&&n!==void 0&&(e.endpoint=n)},[n,s]),t.useEffect(()=>{let e=r.current;e&&l!==void 0&&(e.method=l)},[l,s]),t.useEffect(()=>{let e=r.current;e&&f!==void 0&&(e.publishableKey=f)},[f,s]),t.useEffect(()=>{let e=r.current;e&&E!==void 0&&(e.baseUrl=E)},[E,s]),t.useEffect(()=>{let e=r.current;e&&p!==void 0&&(e.specUrl=p)},[p,s]),R?t.createElement("div",{role:"alert",className:o,style:d},`Roxy UI script load failed: ${R.message}`):t.createElement("roxy-tarot-catalog",{ref:r,className:o,style:d,...y})});export{_ as RoxyTarotCatalog};
|
|
2
2
|
//# sourceMappingURL=tarot-catalog.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/tarot-catalog.tsx", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { ListCardsResponse } from '
|
|
5
|
-
"mappings": "AAAA,UAAYA,MAAW,
|
|
6
|
-
"names": ["React", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "resolve", "reject", "url", "existing", "RoxyTarotCatalog", "data", "className", "style", "heading", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { ListCardsResponse } from '../types/index.js';\n\ntype ElementAttrs = Omit<\n\tReact.HTMLAttributes<HTMLElement>,\n\t'children' | 'data'\n>;\n\nexport interface RoxyTarotCatalogProps extends ElementAttrs {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: ListCardsResponse;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n\t/** Override the auto-derived gallery heading. Empty by default, in which case the heading is \"Tarot deck\". */\n\theading?: string;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\n}\n\nexport const RoxyTarotCatalog = React.forwardRef<HTMLElement | null, RoxyTarotCatalogProps>(\n\tfunction RoxyTarotCatalog({ data, className, style, heading, endpoint, method, publishableKey, baseUrl, specUrl, ...rest }, ref) {\n\t\tconst internal = React.useRef<HTMLElement | null>(null);\n\t\tReact.useImperativeHandle<HTMLElement | null, HTMLElement | null>(\n\t\t\tref,\n\t\t\t() => internal.current,\n\t\t\t[],\n\t\t);\n\t\tconst [loaded, setLoaded] = React.useState(false);\n\t\tconst [error, setError] = React.useState<Error | null>(null);\n\n\t\tReact.useEffect(() => {\n\t\t\tlet active = true;\n\t\t\tensureScriptLoaded()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (active) setLoaded(true);\n\t\t\t\t})\n\t\t\t\t.catch((err: unknown) => {\n\t\t\t\t\tif (!active) return;\n\t\t\t\t\tsetError(err instanceof Error ? err : new Error(String(err)));\n\t\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tactive = false;\n\t\t\t};\n\t\t}, []);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && data !== undefined) {\n\t\t\t\t(el as unknown as { data: unknown }).data = data;\n\t\t\t}\n\t\t}, [data, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && heading !== undefined) {\n\t\t\t\t(el as unknown as { heading: string }).heading = heading;\n\t\t\t}\n\t\t}, [heading, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && endpoint !== undefined) {\n\t\t\t\t(el as unknown as { endpoint: string }).endpoint = endpoint;\n\t\t\t}\n\t\t}, [endpoint, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && method !== undefined) {\n\t\t\t\t(el as unknown as { method: 'GET' | 'POST' }).method = method;\n\t\t\t}\n\t\t}, [method, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && publishableKey !== undefined) {\n\t\t\t\t(el as unknown as { publishableKey: string }).publishableKey = publishableKey;\n\t\t\t}\n\t\t}, [publishableKey, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && baseUrl !== undefined) {\n\t\t\t\t(el as unknown as { baseUrl: string }).baseUrl = baseUrl;\n\t\t\t}\n\t\t}, [baseUrl, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && specUrl !== undefined) {\n\t\t\t\t(el as unknown as { specUrl: string }).specUrl = specUrl;\n\t\t\t}\n\t\t}, [specUrl, loaded]);\n\n\t\tif (error) {\n\t\t\treturn React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ role: 'alert', className, style },\n\t\t\t\t`Roxy UI script load failed: ${error.message}`,\n\t\t\t);\n\t\t}\n\n\t\treturn React.createElement('roxy-tarot-catalog', {\n\t\t\tref: internal,\n\t\t\tclassName,\n\t\t\tstyle,\n\t\t\t...rest,\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 * React server components and Next.js SSR work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.15.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// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-react\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyTarotCatalog", "data", "className", "style", "heading", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { CastCareerSpreadResponse, CastCelticCrossResponse, CastCustomSpreadResponse, CastLoveSpreadResponse, CastReadingResponse, CastThreeCardResponse, CastYesNoResponse, DrawCardsResponse } from '
|
|
2
|
+
import type { CastCareerSpreadResponse, CastCelticCrossResponse, CastCustomSpreadResponse, CastLoveSpreadResponse, CastReadingResponse, CastThreeCardResponse, CastYesNoResponse, DrawCardsResponse } from '../types/index.js';
|
|
3
3
|
type ElementAttrs = Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'data'>;
|
|
4
4
|
export interface RoxyTarotSpreadProps extends ElementAttrs {
|
|
5
5
|
/** Spec-derived response payload. Pass the raw RoxyAPI response. */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as t from"react";var C="roxyapi-ui-loader",
|
|
1
|
+
import*as t from"react";var w="0.15.0",C="roxyapi-ui-loader",L="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",h="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",v="/dist/cdn",u=null;function P(a){return!a||a==="latest"?L:`${h}${a}${v}`}function S(a=w,d){return typeof document>"u"?Promise.resolve():u||(u=new Promise((o,i)=>{let c=`${d??P(a)}/roxy-ui.js`,n=document.getElementById(C);if(n){n.dataset.loaded==="true"?o():(n.addEventListener("load",()=>o()),n.addEventListener("error",()=>i(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=C,n.src=c,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",o()}),n.addEventListener("error",()=>i(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),u)}var _=t.forwardRef(function({data:d,className:o,style:i,spread:c,endpoint:n,method:l,publishableKey:p,baseUrl:f,specUrl:R,...y},g){let r=t.useRef(null);t.useImperativeHandle(g,()=>r.current,[]);let[s,x]=t.useState(!1),[m,T]=t.useState(null);return t.useEffect(()=>{let e=!0;return S().then(()=>{e&&x(!0)}).catch(E=>{e&&T(E instanceof Error?E:new Error(String(E)))}),()=>{e=!1}},[]),t.useEffect(()=>{let e=r.current;e&&d!==void 0&&(e.data=d)},[d,s]),t.useEffect(()=>{let e=r.current;e&&c!==void 0&&(e.spread=c)},[c,s]),t.useEffect(()=>{let e=r.current;e&&n!==void 0&&(e.endpoint=n)},[n,s]),t.useEffect(()=>{let e=r.current;e&&l!==void 0&&(e.method=l)},[l,s]),t.useEffect(()=>{let e=r.current;e&&p!==void 0&&(e.publishableKey=p)},[p,s]),t.useEffect(()=>{let e=r.current;e&&f!==void 0&&(e.baseUrl=f)},[f,s]),t.useEffect(()=>{let e=r.current;e&&R!==void 0&&(e.specUrl=R)},[R,s]),m?t.createElement("div",{role:"alert",className:o,style:i},`Roxy UI script load failed: ${m.message}`):t.createElement("roxy-tarot-spread",{ref:r,className:o,style:i,...y})});export{_ as RoxyTarotSpread};
|
|
2
2
|
//# sourceMappingURL=tarot-spread.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/tarot-spread.tsx", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { CastCareerSpreadResponse, CastCelticCrossResponse, CastCustomSpreadResponse, CastLoveSpreadResponse, CastReadingResponse, CastThreeCardResponse, CastYesNoResponse, DrawCardsResponse } from '
|
|
5
|
-
"mappings": "AAAA,UAAYA,MAAW,
|
|
6
|
-
"names": ["React", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "resolve", "reject", "url", "existing", "RoxyTarotSpread", "data", "className", "style", "spread", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { CastCareerSpreadResponse, CastCelticCrossResponse, CastCustomSpreadResponse, CastLoveSpreadResponse, CastReadingResponse, CastThreeCardResponse, CastYesNoResponse, DrawCardsResponse } from '../types/index.js';\n\ntype ElementAttrs = Omit<\n\tReact.HTMLAttributes<HTMLElement>,\n\t'children' | 'data'\n>;\n\nexport interface RoxyTarotSpreadProps extends ElementAttrs {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: CastThreeCardResponse | CastCelticCrossResponse | CastLoveSpreadResponse | CastYesNoResponse | CastReadingResponse | CastCareerSpreadResponse | CastCustomSpreadResponse | DrawCardsResponse;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n\t/** Which spread layout the response is for. Positions the cards and selects the reading template. */\n\tspread?: 'three-card' | 'celtic-cross' | 'love' | 'career' | 'custom' | 'yes-no' | 'draw';\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\n}\n\nexport const RoxyTarotSpread = React.forwardRef<HTMLElement | null, RoxyTarotSpreadProps>(\n\tfunction RoxyTarotSpread({ data, className, style, spread, endpoint, method, publishableKey, baseUrl, specUrl, ...rest }, ref) {\n\t\tconst internal = React.useRef<HTMLElement | null>(null);\n\t\tReact.useImperativeHandle<HTMLElement | null, HTMLElement | null>(\n\t\t\tref,\n\t\t\t() => internal.current,\n\t\t\t[],\n\t\t);\n\t\tconst [loaded, setLoaded] = React.useState(false);\n\t\tconst [error, setError] = React.useState<Error | null>(null);\n\n\t\tReact.useEffect(() => {\n\t\t\tlet active = true;\n\t\t\tensureScriptLoaded()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (active) setLoaded(true);\n\t\t\t\t})\n\t\t\t\t.catch((err: unknown) => {\n\t\t\t\t\tif (!active) return;\n\t\t\t\t\tsetError(err instanceof Error ? err : new Error(String(err)));\n\t\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tactive = false;\n\t\t\t};\n\t\t}, []);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && data !== undefined) {\n\t\t\t\t(el as unknown as { data: unknown }).data = data;\n\t\t\t}\n\t\t}, [data, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && spread !== undefined) {\n\t\t\t\t(el as unknown as { spread: 'three-card' | 'celtic-cross' | 'love' | 'career' | 'custom' | 'yes-no' | 'draw' }).spread = spread;\n\t\t\t}\n\t\t}, [spread, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && endpoint !== undefined) {\n\t\t\t\t(el as unknown as { endpoint: string }).endpoint = endpoint;\n\t\t\t}\n\t\t}, [endpoint, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && method !== undefined) {\n\t\t\t\t(el as unknown as { method: 'GET' | 'POST' }).method = method;\n\t\t\t}\n\t\t}, [method, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && publishableKey !== undefined) {\n\t\t\t\t(el as unknown as { publishableKey: string }).publishableKey = publishableKey;\n\t\t\t}\n\t\t}, [publishableKey, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && baseUrl !== undefined) {\n\t\t\t\t(el as unknown as { baseUrl: string }).baseUrl = baseUrl;\n\t\t\t}\n\t\t}, [baseUrl, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && specUrl !== undefined) {\n\t\t\t\t(el as unknown as { specUrl: string }).specUrl = specUrl;\n\t\t\t}\n\t\t}, [specUrl, loaded]);\n\n\t\tif (error) {\n\t\t\treturn React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ role: 'alert', className, style },\n\t\t\t\t`Roxy UI script load failed: ${error.message}`,\n\t\t\t);\n\t\t}\n\n\t\treturn React.createElement('roxy-tarot-spread', {\n\t\t\tref: internal,\n\t\t\tclassName,\n\t\t\tstyle,\n\t\t\t...rest,\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 * React server components and Next.js SSR work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.15.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// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-react\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyTarotSpread", "data", "className", "style", "spread", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { TransitsResponse } from '
|
|
2
|
+
import type { TransitsResponse } from '../types/index.js';
|
|
3
3
|
type ElementAttrs = Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'data'>;
|
|
4
4
|
export interface RoxyTransitsTableProps extends ElementAttrs {
|
|
5
5
|
/** Spec-derived response payload. Pass the raw RoxyAPI response. */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as t from"react";var R="roxyapi-ui-loader",
|
|
1
|
+
import*as t from"react";var L="0.15.0",R="roxyapi-ui-loader",w="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",P="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",b="/dist/cdn",l=null;function h(s){return!s||s==="latest"?w:`${P}${s}${b}`}function T(s=L,o){return typeof document>"u"?Promise.resolve():l||(l=new Promise((a,d)=>{let u=`${o??h(s)}/roxy-ui.js`,n=document.getElementById(R);if(n){n.dataset.loaded==="true"?a():(n.addEventListener("load",()=>a()),n.addEventListener("error",()=>d(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=R,n.src=u,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",a()}),n.addEventListener("error",()=>d(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),l)}var _=t.forwardRef(function({data:o,className:a,style:d,endpoint:u,method:n,publishableKey:c,baseUrl:f,specUrl:E,...x},y){let r=t.useRef(null);t.useImperativeHandle(y,()=>r.current,[]);let[i,g]=t.useState(!1),[m,S]=t.useState(null);return t.useEffect(()=>{let e=!0;return T().then(()=>{e&&g(!0)}).catch(p=>{e&&S(p instanceof Error?p:new Error(String(p)))}),()=>{e=!1}},[]),t.useEffect(()=>{let e=r.current;e&&o!==void 0&&(e.data=o)},[o,i]),t.useEffect(()=>{let e=r.current;e&&u!==void 0&&(e.endpoint=u)},[u,i]),t.useEffect(()=>{let e=r.current;e&&n!==void 0&&(e.method=n)},[n,i]),t.useEffect(()=>{let e=r.current;e&&c!==void 0&&(e.publishableKey=c)},[c,i]),t.useEffect(()=>{let e=r.current;e&&f!==void 0&&(e.baseUrl=f)},[f,i]),t.useEffect(()=>{let e=r.current;e&&E!==void 0&&(e.specUrl=E)},[E,i]),m?t.createElement("div",{role:"alert",className:a,style:d},`Roxy UI script load failed: ${m.message}`):t.createElement("roxy-transits-table",{ref:r,className:a,style:d,...x})});export{_ as RoxyTransitsTable};
|
|
2
2
|
//# sourceMappingURL=transits-table.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/transits-table.tsx", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { TransitsResponse } from '
|
|
5
|
-
"mappings": "AAAA,UAAYA,MAAW,
|
|
6
|
-
"names": ["React", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "resolve", "reject", "url", "existing", "RoxyTransitsTable", "data", "className", "style", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { TransitsResponse } from '../types/index.js';\n\ntype ElementAttrs = Omit<\n\tReact.HTMLAttributes<HTMLElement>,\n\t'children' | 'data'\n>;\n\nexport interface RoxyTransitsTableProps extends ElementAttrs {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: TransitsResponse;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\n}\n\nexport const RoxyTransitsTable = React.forwardRef<HTMLElement | null, RoxyTransitsTableProps>(\n\tfunction RoxyTransitsTable({ data, className, style, endpoint, method, publishableKey, baseUrl, specUrl, ...rest }, ref) {\n\t\tconst internal = React.useRef<HTMLElement | null>(null);\n\t\tReact.useImperativeHandle<HTMLElement | null, HTMLElement | null>(\n\t\t\tref,\n\t\t\t() => internal.current,\n\t\t\t[],\n\t\t);\n\t\tconst [loaded, setLoaded] = React.useState(false);\n\t\tconst [error, setError] = React.useState<Error | null>(null);\n\n\t\tReact.useEffect(() => {\n\t\t\tlet active = true;\n\t\t\tensureScriptLoaded()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (active) setLoaded(true);\n\t\t\t\t})\n\t\t\t\t.catch((err: unknown) => {\n\t\t\t\t\tif (!active) return;\n\t\t\t\t\tsetError(err instanceof Error ? err : new Error(String(err)));\n\t\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tactive = false;\n\t\t\t};\n\t\t}, []);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && data !== undefined) {\n\t\t\t\t(el as unknown as { data: unknown }).data = data;\n\t\t\t}\n\t\t}, [data, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && endpoint !== undefined) {\n\t\t\t\t(el as unknown as { endpoint: string }).endpoint = endpoint;\n\t\t\t}\n\t\t}, [endpoint, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && method !== undefined) {\n\t\t\t\t(el as unknown as { method: 'GET' | 'POST' }).method = method;\n\t\t\t}\n\t\t}, [method, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && publishableKey !== undefined) {\n\t\t\t\t(el as unknown as { publishableKey: string }).publishableKey = publishableKey;\n\t\t\t}\n\t\t}, [publishableKey, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && baseUrl !== undefined) {\n\t\t\t\t(el as unknown as { baseUrl: string }).baseUrl = baseUrl;\n\t\t\t}\n\t\t}, [baseUrl, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && specUrl !== undefined) {\n\t\t\t\t(el as unknown as { specUrl: string }).specUrl = specUrl;\n\t\t\t}\n\t\t}, [specUrl, loaded]);\n\n\t\tif (error) {\n\t\t\treturn React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ role: 'alert', className, style },\n\t\t\t\t`Roxy UI script load failed: ${error.message}`,\n\t\t\t);\n\t\t}\n\n\t\treturn React.createElement('roxy-transits-table', {\n\t\t\tref: internal,\n\t\t\tclassName,\n\t\t\tstyle,\n\t\t\t...rest,\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 * React server components and Next.js SSR work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.15.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// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-react\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyTransitsTable", "data", "className", "style", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { CalculateDrishtiResponse } from '
|
|
2
|
+
import type { CalculateDrishtiResponse } from '../types/index.js';
|
|
3
3
|
type ElementAttrs = Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'data'>;
|
|
4
4
|
export interface RoxyVedicAspectsProps extends ElementAttrs {
|
|
5
5
|
/** Spec-derived response payload. Pass the raw RoxyAPI response. */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as t from"react";var R="roxyapi-ui-loader",
|
|
1
|
+
import*as t from"react";var T="0.15.0",R="roxyapi-ui-loader",w="https://cdn.jsdelivr.net/npm/@roxyapi/ui@latest/dist/cdn",h="https://cdn.jsdelivr.net/npm/@roxyapi/ui@",A="/dist/cdn",u=null;function P(s){return!s||s==="latest"?w:`${h}${s}${A}`}function x(s=T,o){return typeof document>"u"?Promise.resolve():u||(u=new Promise((i,c)=>{let d=`${o??P(s)}/roxy-ui.js`,n=document.getElementById(R);if(n){n.dataset.loaded==="true"?i():(n.addEventListener("load",()=>i()),n.addEventListener("error",()=>c(new Error("roxy-ui load failed"))));return}n=document.createElement("script"),n.id=R,n.src=d,n.async=!0,n.crossOrigin="anonymous",n.addEventListener("load",()=>{n.dataset.loaded="true",i()}),n.addEventListener("error",()=>c(new Error("roxy-ui load failed"))),document.head.appendChild(n)}),u)}var _=t.forwardRef(function({data:o,className:i,style:c,endpoint:d,method:n,publishableKey:l,baseUrl:f,specUrl:p,...y},g){let r=t.useRef(null);t.useImperativeHandle(g,()=>r.current,[]);let[a,S]=t.useState(!1),[m,L]=t.useState(null);return t.useEffect(()=>{let e=!0;return x().then(()=>{e&&S(!0)}).catch(E=>{e&&L(E instanceof Error?E:new Error(String(E)))}),()=>{e=!1}},[]),t.useEffect(()=>{let e=r.current;e&&o!==void 0&&(e.data=o)},[o,a]),t.useEffect(()=>{let e=r.current;e&&d!==void 0&&(e.endpoint=d)},[d,a]),t.useEffect(()=>{let e=r.current;e&&n!==void 0&&(e.method=n)},[n,a]),t.useEffect(()=>{let e=r.current;e&&l!==void 0&&(e.publishableKey=l)},[l,a]),t.useEffect(()=>{let e=r.current;e&&f!==void 0&&(e.baseUrl=f)},[f,a]),t.useEffect(()=>{let e=r.current;e&&p!==void 0&&(e.specUrl=p)},[p,a]),m?t.createElement("div",{role:"alert",className:i,style:c},`Roxy UI script load failed: ${m.message}`):t.createElement("roxy-vedic-aspects",{ref:r,className:i,style:c,...y})});export{_ as RoxyVedicAspects};
|
|
2
2
|
//# sourceMappingURL=vedic-aspects.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/vedic-aspects.tsx", "../../src/load-ui.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { CalculateDrishtiResponse } from '
|
|
5
|
-
"mappings": "AAAA,UAAYA,MAAW,
|
|
6
|
-
"names": ["React", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "resolve", "reject", "url", "existing", "RoxyVedicAspects", "data", "className", "style", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport { ensureScriptLoaded } from '../load-ui.js';\nimport type { CalculateDrishtiResponse } from '../types/index.js';\n\ntype ElementAttrs = Omit<\n\tReact.HTMLAttributes<HTMLElement>,\n\t'children' | 'data'\n>;\n\nexport interface RoxyVedicAspectsProps extends ElementAttrs {\n\t/** Spec-derived response payload. Pass the raw RoxyAPI response. */\n\tdata?: CalculateDrishtiResponse;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n\t/** Endpoint path for built-in self-fetch (uncontrolled mode), e.g. \"astrology/natal-chart\". The component renders its own input form, fetches with the publishable key, and displays the result. Leave unset for controlled mode (pass `data`). */\n\tendpoint?: string;\n\t/** HTTP method for the self-fetch request. Defaults to POST. */\n\tmethod?: 'GET' | 'POST';\n\t/** Browser-safe publishable key (pk_) for self-fetch. A secret key is refused client-side and never sent. */\n\tpublishableKey?: string;\n\t/** Override the API origin for self-hosted or proxied deployments. */\n\tbaseUrl?: string;\n\t/** Override the OpenAPI spec URL the self-fetch form introspects. */\n\tspecUrl?: string;\n\n}\n\nexport const RoxyVedicAspects = React.forwardRef<HTMLElement | null, RoxyVedicAspectsProps>(\n\tfunction RoxyVedicAspects({ data, className, style, endpoint, method, publishableKey, baseUrl, specUrl, ...rest }, ref) {\n\t\tconst internal = React.useRef<HTMLElement | null>(null);\n\t\tReact.useImperativeHandle<HTMLElement | null, HTMLElement | null>(\n\t\t\tref,\n\t\t\t() => internal.current,\n\t\t\t[],\n\t\t);\n\t\tconst [loaded, setLoaded] = React.useState(false);\n\t\tconst [error, setError] = React.useState<Error | null>(null);\n\n\t\tReact.useEffect(() => {\n\t\t\tlet active = true;\n\t\t\tensureScriptLoaded()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (active) setLoaded(true);\n\t\t\t\t})\n\t\t\t\t.catch((err: unknown) => {\n\t\t\t\t\tif (!active) return;\n\t\t\t\t\tsetError(err instanceof Error ? err : new Error(String(err)));\n\t\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tactive = false;\n\t\t\t};\n\t\t}, []);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && data !== undefined) {\n\t\t\t\t(el as unknown as { data: unknown }).data = data;\n\t\t\t}\n\t\t}, [data, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && endpoint !== undefined) {\n\t\t\t\t(el as unknown as { endpoint: string }).endpoint = endpoint;\n\t\t\t}\n\t\t}, [endpoint, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && method !== undefined) {\n\t\t\t\t(el as unknown as { method: 'GET' | 'POST' }).method = method;\n\t\t\t}\n\t\t}, [method, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && publishableKey !== undefined) {\n\t\t\t\t(el as unknown as { publishableKey: string }).publishableKey = publishableKey;\n\t\t\t}\n\t\t}, [publishableKey, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && baseUrl !== undefined) {\n\t\t\t\t(el as unknown as { baseUrl: string }).baseUrl = baseUrl;\n\t\t\t}\n\t\t}, [baseUrl, loaded]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = internal.current;\n\t\t\tif (el && specUrl !== undefined) {\n\t\t\t\t(el as unknown as { specUrl: string }).specUrl = specUrl;\n\t\t\t}\n\t\t}, [specUrl, loaded]);\n\n\t\tif (error) {\n\t\t\treturn React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ role: 'alert', className, style },\n\t\t\t\t`Roxy UI script load failed: ${error.message}`,\n\t\t\t);\n\t\t}\n\n\t\treturn React.createElement('roxy-vedic-aspects', {\n\t\t\tref: internal,\n\t\t\tclassName,\n\t\t\tstyle,\n\t\t\t...rest,\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 * React server components and Next.js SSR work without a flash.\n *\n * Defaults to the EXACT @roxyapi/ui release this wrapper was built against, so\n * `@roxyapi/ui-vue@x.y.z` always runs `@roxyapi/ui@x.y.z` and a lockfile actually\n * pins the runtime. It used to default to '@latest', which meant a pinned wrapper\n * silently picked up whatever the CDN was serving, and a new @roxyapi/ui release\n * changed the elements under every existing install with no lockfile change.\n *\n * Pass an explicit `version` to override, or 'latest' to opt back into floating.\n *\n * Pass `baseUrl` to serve the bundle from your own origin instead of the CDN, which is\n * what an air-gapped install or a strict Content-Security-Policy needs: copy\n * `node_modules/@roxyapi/ui/dist/cdn/` onto your host and call this once at app entry,\n * before any component mounts. The loader keeps a single shared promise, so the first\n * call wins and every component reuses it.\n */\n/** The @roxyapi/ui release this wrapper was generated against. The loader defaults to it, so the wrapper version in your lockfile is the runtime you actually get. */\nexport const ROXY_UI_VERSION = \"0.15.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// Default export retained for convenience; matches the named export.\nexport default ensureScriptLoaded;\n// Surfaces the embedded @roxyapi/ui version this build of @roxyapi/ui-react\n// was generated against. Useful for diagnostics; not load-bearing.\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "ROXY_UI_VERSION", "SCRIPT_ID", "CDN_BASE_LATEST", "CDN_BASE_PREFIX", "CDN_BASE_SUFFIX", "loaded", "buildBase", "version", "ensureScriptLoaded", "baseUrl", "resolve", "reject", "url", "existing", "RoxyVedicAspects", "data", "className", "style", "endpoint", "method", "publishableKey", "baseUrl", "specUrl", "rest", "ref", "internal", "loaded", "setLoaded", "error", "setError", "active", "ensureScriptLoaded", "err", "el"]
|
|
7
7
|
}
|