@flamingo-stack/openframe-frontend-core 0.0.498 → 0.0.499
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-MVORKLWX.cjs → chunk-2CEDCSYD.cjs} +32 -32
- package/dist/{chunk-MVORKLWX.cjs.map → chunk-2CEDCSYD.cjs.map} +1 -1
- package/dist/{chunk-G6ARA2HD.js → chunk-3AXJESKA.js} +3 -3
- package/dist/{chunk-THC3K262.cjs → chunk-44YXQBNM.cjs} +3 -3
- package/dist/{chunk-THC3K262.cjs.map → chunk-44YXQBNM.cjs.map} +1 -1
- package/dist/{chunk-TTYJAZ7P.cjs → chunk-47LHA4QI.cjs} +3 -3
- package/dist/{chunk-TTYJAZ7P.cjs.map → chunk-47LHA4QI.cjs.map} +1 -1
- package/dist/{chunk-XI44QDCD.cjs → chunk-6QVV3OLL.cjs} +40 -40
- package/dist/{chunk-XI44QDCD.cjs.map → chunk-6QVV3OLL.cjs.map} +1 -1
- package/dist/{chunk-4NIBKEED.cjs → chunk-7DUMNMED.cjs} +12 -12
- package/dist/{chunk-4NIBKEED.cjs.map → chunk-7DUMNMED.cjs.map} +1 -1
- package/dist/{chunk-6GAJETAP.js → chunk-AEZ5BXLJ.js} +4 -4
- package/dist/{chunk-MF3VJKHT.js → chunk-BAMTV6GL.js} +2 -2
- package/dist/{chunk-2R25CGSO.cjs → chunk-EP7ELZTU.cjs} +73 -73
- package/dist/{chunk-2R25CGSO.cjs.map → chunk-EP7ELZTU.cjs.map} +1 -1
- package/dist/{chunk-ZHNWWFIM.cjs → chunk-FLZTUE2T.cjs} +5 -5
- package/dist/{chunk-ZHNWWFIM.cjs.map → chunk-FLZTUE2T.cjs.map} +1 -1
- package/dist/{chunk-P47NN7RY.js → chunk-GSONSIWG.js} +28 -3
- package/dist/chunk-GSONSIWG.js.map +1 -0
- package/dist/{chunk-6WTCJI5R.js → chunk-IUP26OXG.js} +2 -2
- package/dist/{chunk-W24U7ZUV.cjs → chunk-KQKU4VXB.cjs} +40 -15
- package/dist/chunk-KQKU4VXB.cjs.map +1 -0
- package/dist/{chunk-ZBTIN7RC.cjs → chunk-NSDDV4F6.cjs} +40 -40
- package/dist/{chunk-ZBTIN7RC.cjs.map → chunk-NSDDV4F6.cjs.map} +1 -1
- package/dist/{chunk-KK4M4URN.js → chunk-O7JY7LRP.js} +3 -3
- package/dist/{chunk-XSNKSMB3.js → chunk-Q66TP2LY.js} +5 -5
- package/dist/{chunk-4EHQEMN4.cjs → chunk-Q6B7VAHN.cjs} +18 -18
- package/dist/{chunk-4EHQEMN4.cjs.map → chunk-Q6B7VAHN.cjs.map} +1 -1
- package/dist/{chunk-WEUNPE3S.js → chunk-QL5YB4F7.js} +2 -2
- package/dist/{chunk-OYPUQJJ2.js → chunk-QUFB5SDZ.js} +41 -7
- package/dist/{chunk-OYPUQJJ2.js.map → chunk-QUFB5SDZ.js.map} +1 -1
- package/dist/{chunk-2OPD6KRB.js → chunk-QWCW4Z75.js} +5 -5
- package/dist/{chunk-VLWVM6ZS.js → chunk-RAL274JM.js} +3 -3
- package/dist/{chunk-A3Z63ZL5.cjs → chunk-RBZOUGCL.cjs} +73 -73
- package/dist/{chunk-A3Z63ZL5.cjs.map → chunk-RBZOUGCL.cjs.map} +1 -1
- package/dist/{chunk-K5HHLTSG.js → chunk-SSYE7BQC.js} +2 -2
- package/dist/{chunk-5ZL7PA63.js → chunk-TTJSLIXA.js} +2 -2
- package/dist/{chunk-W4XZ3FBZ.js → chunk-UD4IT3GY.js} +6 -6
- package/dist/{chunk-ZEZTITQZ.cjs → chunk-V2APV4E4.cjs} +142 -108
- package/dist/chunk-V2APV4E4.cjs.map +1 -0
- package/dist/{chunk-T67MZAQJ.cjs → chunk-W42256FC.cjs} +29 -29
- package/dist/{chunk-T67MZAQJ.cjs.map → chunk-W42256FC.cjs.map} +1 -1
- package/dist/{chunk-ZTE32A7C.cjs → chunk-WJ2S6I34.cjs} +7 -7
- package/dist/{chunk-ZTE32A7C.cjs.map → chunk-WJ2S6I34.cjs.map} +1 -1
- package/dist/{chunk-MSB3PEPP.cjs → chunk-XV22URNM.cjs} +15 -15
- package/dist/{chunk-MSB3PEPP.cjs.map → chunk-XV22URNM.cjs.map} +1 -1
- package/dist/{chunk-VOOEX4IZ.js → chunk-YDNIQLAP.js} +6 -6
- package/dist/components/case-studies/index.cjs +10 -10
- package/dist/components/case-studies/index.js +4 -4
- package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts +5 -2
- package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +4 -4
- package/dist/components/chat/index.js +3 -3
- package/dist/components/chat/types/api.types.d.ts +9 -2
- package/dist/components/chat/types/api.types.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/docs/index.js +6 -6
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/embeds/index.js +4 -4
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/features/index.js +3 -3
- package/dist/components/help-center-pages/index.cjs +23 -23
- package/dist/components/help-center-pages/index.js +14 -14
- package/dist/components/index.cjs +137 -137
- package/dist/components/index.js +12 -12
- package/dist/components/navigation/index.cjs +4 -4
- package/dist/components/navigation/index.js +3 -3
- package/dist/components/onboarding-guides/index.cjs +8 -8
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/tickets/index.cjs +7 -7
- package/dist/components/tickets/index.js +6 -6
- package/dist/components/ui/index.cjs +4 -4
- package/dist/components/ui/index.js +3 -3
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.js +2 -2
- package/dist/index.cjs +4 -4
- package/dist/index.js +3 -3
- package/dist/nats/index.cjs +2 -2
- package/dist/nats/index.js +1 -1
- package/dist/nats/nats.d.ts +18 -1
- package/dist/nats/nats.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +7 -3
- package/src/components/chat/hooks/use-jetstream-dialog-subscription.ts +77 -5
- package/src/components/chat/types/api.types.ts +9 -2
- package/src/nats/.nats.md +2 -2
- package/src/nats/nats.ts +70 -5
- package/dist/chunk-P47NN7RY.js.map +0 -1
- package/dist/chunk-W24U7ZUV.cjs.map +0 -1
- package/dist/chunk-ZEZTITQZ.cjs.map +0 -1
- /package/dist/{chunk-G6ARA2HD.js.map → chunk-3AXJESKA.js.map} +0 -0
- /package/dist/{chunk-6GAJETAP.js.map → chunk-AEZ5BXLJ.js.map} +0 -0
- /package/dist/{chunk-MF3VJKHT.js.map → chunk-BAMTV6GL.js.map} +0 -0
- /package/dist/{chunk-6WTCJI5R.js.map → chunk-IUP26OXG.js.map} +0 -0
- /package/dist/{chunk-KK4M4URN.js.map → chunk-O7JY7LRP.js.map} +0 -0
- /package/dist/{chunk-XSNKSMB3.js.map → chunk-Q66TP2LY.js.map} +0 -0
- /package/dist/{chunk-WEUNPE3S.js.map → chunk-QL5YB4F7.js.map} +0 -0
- /package/dist/{chunk-2OPD6KRB.js.map → chunk-QWCW4Z75.js.map} +0 -0
- /package/dist/{chunk-VLWVM6ZS.js.map → chunk-RAL274JM.js.map} +0 -0
- /package/dist/{chunk-K5HHLTSG.js.map → chunk-SSYE7BQC.js.map} +0 -0
- /package/dist/{chunk-5ZL7PA63.js.map → chunk-TTJSLIXA.js.map} +0 -0
- /package/dist/{chunk-W4XZ3FBZ.js.map → chunk-UD4IT3GY.js.map} +0 -0
- /package/dist/{chunk-VOOEX4IZ.js.map → chunk-YDNIQLAP.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-KQKU4VXB.cjs","../src/nats/nats.ts","../src/nats/shared-connection.ts","../src/nats/nats-provider.tsx","../src/nats/use-nats-subscription.ts"],"names":[],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-KQKU4VXB.cjs","sourcesContent":[null,"import type {\n ConnectionOptions,\n Consumer,\n ConsumerEvents,\n ConsumerMessages,\n JsMsg,\n MsgHdrs as NatsHeaders,\n Msg,\n NatsConnection,\n Subscription,\n} from 'nats.ws'\n\nexport type { JsMsg, Msg, Subscription } from 'nats.ws'\n\nexport type JetStreamDeliverPolicy = 'new' | 'byStartSequence'\n\nexport interface JetStreamOrderedSubscribeOptions {\n streamName: string\n filterSubject: string\n deliverPolicy: JetStreamDeliverPolicy\n /** Required when deliverPolicy === 'byStartSequence'. */\n optStartSeq?: number\n /**\n * Auto-cleanup the ephemeral consumer after this idle time. Defaults to\n * nats.ws's own. Applies to the consumer created first: nats.ws only reads it\n * when the start sequence is the one it was built with, so every consumer it\n * recreates afterwards reverts to the library default.\n */\n inactiveThresholdMs?: number\n /** AbortSignal to tear down the consumer. */\n signal?: AbortSignal\n /**\n * The ordered consumer had to be rebuilt: the server dropped the ephemeral\n * consumer (its inactivity threshold elapsed while the page was suspended or\n * offline), heartbeats were missed, or a sequence gap was detected. nats.ws\n * recreates it from the last delivered sequence, so this is NOT an error —\n * but everything that aged out of the stream while it was gone is\n * unrecoverable from the tail, and no connection event announces it (the\n * WebSocket never dropped). Callers that keep persisted history alongside\n * the live tail must refetch it here, or they keep showing a snapshot from\n * before the gap.\n */\n onRecovered?: () => void\n}\n\nexport interface JetStreamSubscriptionHandle {\n unsubscribe(): void\n}\n\nexport interface NatsClientOptions {\n /**\n * NATS server URL(s), for example:\n * - \"wss://nats.example.com:443\"\n * - [\"wss://nats-1.example.com:443\", \"wss://nats-2.example.com:443\"]\n */\n servers: string | string[]\n\n /**\n * Connection name (shows up in NATS monitoring).\n */\n name?: string\n\n /**\n * Auth options (pick one: token or user/pass).\n */\n token?: string\n user?: string\n pass?: string\n\n /**\n * Reconnect behavior.\n */\n reconnect?: boolean\n maxReconnectAttempts?: number\n reconnectTimeWaitMs?: number\n\n /**\n * Exponential backoff for reconnect delays.\n * When set, uses `reconnectDelayHandler` from nats.ws under the hood,\n * overriding `reconnectTimeWaitMs`.\n */\n exponentialBackoff?: {\n /** Initial delay in ms (default: 1000) */\n initialDelayMs?: number\n /** Maximum delay cap in ms (default: 30000) */\n maxDelayMs?: number\n /** Multiplier per attempt (default: 2) */\n multiplier?: number\n /** Add random jitter 0-50% of delay to prevent thundering herd (default: true) */\n jitter?: boolean\n }\n\n /**\n * Ping behavior (keep-alive).\n */\n pingIntervalMs?: number\n maxPingOut?: number\n\n /**\n * Optional inbox prefix (useful if you want to isolate request/reply inboxes).\n */\n inboxPrefix?: string\n\n /**\n * Connection timeout in milliseconds (maps to `nats.ws` connect option `timeout`).\n * If you see `NatsError: TIMEOUT` during connect, increase this.\n */\n connectTimeoutMs?: number\n}\n\nexport interface NatsSubscribeOptions {\n /**\n * Queue group for load-balancing messages across subscribers.\n */\n queue?: string\n\n /**\n * Auto-unsubscribe after receiving this many messages.\n */\n max?: number\n\n /**\n * Abort signal to stop message iteration and unsubscribe.\n */\n signal?: AbortSignal\n}\n\nexport type NatsHeadersInit = Record<string, string> | NatsHeaders | undefined\n\nexport interface NatsPublishOptions {\n headers?: NatsHeadersInit\n}\n\nexport interface NatsRequestOptions {\n timeoutMs?: number\n headers?: NatsHeadersInit\n}\n\nexport interface NatsSubscriptionHandle {\n readonly subscription: Subscription\n unsubscribe(): void\n}\n\nexport type NatsStatus =\n | 'connecting'\n | 'connected'\n | 'disconnected'\n | 'reconnecting'\n | 'closed'\n | 'error'\n\nexport interface NatsStatusEvent {\n status: NatsStatus\n data?: unknown\n}\n\nexport interface NatsClient {\n connect(): Promise<void>\n close(): Promise<void>\n\n isConnected(): boolean\n\n publishBytes(subject: string, payload: Uint8Array, options?: NatsPublishOptions): void\n publishString(subject: string, payload: string, options?: NatsPublishOptions): void\n publishJson<T>(subject: string, payload: T, options?: NatsPublishOptions): void\n\n requestBytes(subject: string, payload: Uint8Array, options?: NatsRequestOptions): Promise<Msg>\n requestString(subject: string, payload: string, options?: NatsRequestOptions): Promise<string>\n requestJson<TResponse, TRequest = unknown>(\n subject: string,\n payload: TRequest,\n options?: NatsRequestOptions,\n ): Promise<TResponse>\n\n subscribeBytes(\n subject: string,\n onMessage: (msg: Msg) => void | Promise<void>,\n options?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle\n subscribeString(\n subject: string,\n onMessage: (payload: string, msg: Msg) => void | Promise<void>,\n options?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle\n subscribeJson<T>(\n subject: string,\n onMessage: (payload: T, msg: Msg) => void | Promise<void>,\n options?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle\n\n /**\n * Subscribe to a JetStream subject via an ephemeral OrderedConsumer (no acks).\n * Use `optStartSeq` with `deliverPolicy: 'byStartSequence'` to resume from a known offset,\n * or `deliverPolicy: 'new'` to live-tail.\n */\n subscribeJetStreamOrdered(\n onMessage: (msg: JsMsg) => void | Promise<void>,\n options: JetStreamOrderedSubscribeOptions,\n ): Promise<JetStreamSubscriptionHandle>\n\n onStatus(listener: (event: NatsStatusEvent) => void): () => void\n}\n\nfunction assertClientSide(): void {\n // This wrapper is meant for browser/Tauri usage via WebSockets.\n // Keep it safe to import from Next.js server bundles by throwing only when used.\n if (typeof window === 'undefined') {\n throw new Error('NATS client can only connect from the browser/runtime with WebSocket support (window is undefined).')\n }\n}\n\nasync function importNats(): Promise<typeof import('nats.ws')> {\n // Browser/Tauri only: always use the websocket client (no Node-only deps).\n return await import('nats.ws')\n}\n\nfunction toNatsHeaders(nats: typeof import('nats.ws'), init: NatsHeadersInit): NatsHeaders | undefined {\n if (!init) return undefined\n if (typeof (init as NatsHeaders).get === 'function') return init as NatsHeaders\n\n const h = nats.headers()\n for (const [k, v] of Object.entries(init as Record<string, string>)) {\n if (v !== undefined && v !== null) h.set(k, String(v))\n }\n return h\n}\n\n/** Returns a cryptographically random float in [0, 1). */\nfunction cryptoRandom(): number {\n const buf = new Uint32Array(1)\n crypto.getRandomValues(buf)\n return buf[0] / (0xffffffff + 1)\n}\n\ninterface ExponentialBackoffHandle {\n handler: () => number\n reset: () => void\n}\n\nfunction createExponentialBackoffHandler(opts: NonNullable<NatsClientOptions['exponentialBackoff']>): ExponentialBackoffHandle {\n const initialDelay = opts.initialDelayMs ?? 1000\n const maxDelay = opts.maxDelayMs ?? 30_000\n const multiplier = opts.multiplier ?? 2\n const jitter = opts.jitter ?? true\n\n let attempt = 0\n\n return {\n handler: (): number => {\n const delay = Math.min(initialDelay * multiplier ** attempt, maxDelay)\n attempt++\n return jitter ? delay * (0.5 + cryptoRandom() * 0.5) : delay\n },\n reset: () => {\n attempt = 0\n },\n }\n}\n\nfunction mapOptionsToConnectionOptions(\n opts: NatsClientOptions,\n backoff?: ExponentialBackoffHandle,\n): ConnectionOptions {\n return {\n servers: opts.servers,\n name: opts.name,\n token: opts.token,\n user: opts.user,\n pass: opts.pass,\n timeout: opts.connectTimeoutMs ?? 15000,\n reconnect: opts.reconnect ?? true,\n maxReconnectAttempts: opts.maxReconnectAttempts,\n reconnectTimeWait: opts.reconnectTimeWaitMs,\n reconnectDelayHandler: backoff?.handler,\n pingInterval: opts.pingIntervalMs,\n maxPingOut: opts.maxPingOut,\n inboxPrefix: opts.inboxPrefix,\n }\n}\n\nfunction mapNatsTypeToStatus(type: unknown): NatsStatus | null {\n const t = String(type).toLowerCase()\n if (t.includes('disconnect')) return 'disconnected'\n if (t === 'reconnecting') return 'reconnecting'\n if (t === 'reconnect' || t.includes('connect')) return 'connected'\n if (t.includes('error')) return 'error'\n if (t.includes('close')) return 'closed'\n return null\n}\n\n/**\n * Report an ordered consumer rebuilding itself.\n *\n * nats.ws announces this on the message iterator's status channel and nowhere\n * else — the iterator keeps yielding, the WebSocket never drops, and nothing\n * consumes that channel unless someone asks for it. That silence is what lets a\n * tail resume after a suspended page having permanently missed whatever expired\n * from the stream meanwhile: the recreation resumes from the last delivered\n * sequence, so the gap is invisible from the tail alone.\n *\n * `recreatedEvent` is nats.ws's own enum value rather than a literal of ours: a\n * copy that drifted from the library would kill this signal silently, which is\n * the failure mode the signal exists to prevent.\n *\n * The status channel is closed along with the iterator, which ends this loop.\n */\nfunction watchForRecovery(\n iter: ConsumerMessages,\n recreatedEvent: ConsumerEvents.OrderedConsumerRecreated,\n onRecovered?: () => void,\n): void {\n if (!onRecovered) return\n void (async () => {\n try {\n const status = await iter.status()\n for await (const event of status) {\n if (event.type !== recreatedEvent) continue\n try {\n onRecovered()\n } catch (e) {\n // A caller that throws must not take the watch down with it — this\n // loop is the only thing reporting recoveries for this subscription.\n console.warn('[nats] onRecovered threw:', e)\n }\n }\n } catch {\n // Status ends with the subscription — nothing left to report.\n }\n })()\n}\n\nexport function createNatsClient(options: NatsClientOptions): NatsClient {\n let nc: NatsConnection | null = null\n let statusLoopAbort: AbortController | null = null\n let connectInFlight: Promise<void> | null = null\n\n const backoff = options.exponentialBackoff\n ? createExponentialBackoffHandler(options.exponentialBackoff)\n : undefined\n\n const statusListeners = new Set<(event: NatsStatusEvent) => void>()\n\n function emitStatus(event: NatsStatusEvent) {\n for (const listener of statusListeners) {\n try {\n listener(event)\n } catch {\n // ignore listener failures\n }\n }\n }\n\n async function connect(): Promise<void> {\n if (nc && !nc.isClosed()) return\n if (connectInFlight) return connectInFlight\n assertClientSide()\n\n connectInFlight = (async () => {\n try {\n emitStatus({ status: 'connecting' })\n\n const nats = await importNats()\n const conn = await nats.connect(mapOptionsToConnectionOptions(options, backoff))\n nc = conn\n\n emitStatus({ status: 'connected' })\n\n statusLoopAbort = new AbortController()\n const signal = statusLoopAbort.signal\n\n ;(async () => {\n try {\n for await (const s of conn.status()) {\n if (signal.aborted) return\n const mapped = mapNatsTypeToStatus((s as any)?.type)\n if (mapped) {\n if (mapped === 'connected' && backoff) {\n backoff.reset()\n }\n emitStatus({ status: mapped, data: (s as any)?.data })\n if (mapped === 'closed') {\n nc = null\n }\n }\n }\n } catch (e) {\n if (!signal.aborted) {\n emitStatus({ status: 'error', data: e })\n \n if (nc === conn && conn.isClosed()) {\n nc = null\n emitStatus({ status: 'closed' })\n }\n }\n }\n })().catch(() => {\n // ignore\n })\n } finally {\n connectInFlight = null\n }\n })()\n\n return connectInFlight\n }\n\n async function close(): Promise<void> {\n const conn = nc\n nc = null\n\n if (statusLoopAbort) {\n try {\n statusLoopAbort.abort()\n } catch {\n // ignore\n }\n statusLoopAbort = null\n }\n\n if (!conn) return\n try {\n await conn.drain()\n } finally {\n try {\n await conn.close()\n } finally {\n emitStatus({ status: 'closed' })\n }\n }\n }\n\n function requireConnection(): NatsConnection {\n if (!nc) throw new Error('NATS is not connected. Call client.connect() first.')\n return nc\n }\n\n function isConnected(): boolean {\n return Boolean(nc) && !nc!.isClosed()\n }\n\n function publishBytes(subject: string, payload: Uint8Array, opts?: NatsPublishOptions): void {\n const conn = requireConnection()\n ;(async () => {\n const nats = await importNats()\n conn.publish(subject, payload, { headers: toNatsHeaders(nats, opts?.headers) })\n })().catch((e) => emitStatus({ status: 'error', data: e }))\n }\n\n function publishString(subject: string, payload: string, opts?: NatsPublishOptions): void {\n ;(async () => {\n const nats = await importNats()\n const sc = nats.StringCodec()\n publishBytes(subject, sc.encode(payload), opts)\n })().catch((e) => emitStatus({ status: 'error', data: e }))\n }\n\n function publishJson<T>(subject: string, payload: T, opts?: NatsPublishOptions): void {\n ;(async () => {\n const nats = await importNats()\n const jc = nats.JSONCodec<T>()\n publishBytes(subject, jc.encode(payload), opts)\n })().catch((e) => emitStatus({ status: 'error', data: e }))\n }\n\n async function requestBytes(subject: string, payload: Uint8Array, opts?: NatsRequestOptions): Promise<Msg> {\n const conn = requireConnection()\n const nats = await importNats()\n const msg = await conn.request(subject, payload, {\n timeout: opts?.timeoutMs ?? 2000,\n headers: toNatsHeaders(nats, opts?.headers),\n })\n return msg\n }\n\n async function requestString(subject: string, payload: string, opts?: NatsRequestOptions): Promise<string> {\n const nats = await importNats()\n const sc = nats.StringCodec()\n const msg = await requestBytes(subject, sc.encode(payload), opts)\n return sc.decode(msg.data)\n }\n\n async function requestJson<TResponse, TRequest = unknown>(\n subject: string,\n payload: TRequest,\n opts?: NatsRequestOptions,\n ): Promise<TResponse> {\n const nats = await importNats()\n const reqCodec = nats.JSONCodec<TRequest>()\n const resCodec = nats.JSONCodec<TResponse>()\n const msg = await requestBytes(subject, reqCodec.encode(payload), opts)\n return resCodec.decode(msg.data)\n }\n\n function subscribeBytes(\n subject: string,\n onMessage: (msg: Msg) => void | Promise<void>,\n opts?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle {\n const conn = requireConnection()\n const sub = conn.subscribe(subject, { queue: opts?.queue })\n if (typeof opts?.max === 'number') sub.unsubscribe(opts.max)\n\n const abortController = new AbortController()\n const signal = opts?.signal ?? abortController.signal\n\n ;(async () => {\n try {\n for await (const msg of sub) {\n if (signal.aborted) break\n await onMessage(msg)\n }\n } catch (e) {\n emitStatus({ status: 'error', data: e })\n } finally {\n try {\n sub.unsubscribe()\n } catch {\n // ignore\n }\n }\n })().catch((e) => emitStatus({ status: 'error', data: e }))\n\n return {\n subscription: sub,\n unsubscribe() {\n try {\n abortController.abort()\n } catch {\n // ignore\n }\n try {\n sub.unsubscribe()\n } catch {\n // ignore\n }\n },\n }\n }\n\n function subscribeString(\n subject: string,\n onMessage: (payload: string, msg: Msg) => void | Promise<void>,\n opts?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle {\n return subscribeBytes(\n subject,\n async (msg) => {\n const nats = await importNats()\n const sc = nats.StringCodec()\n await onMessage(sc.decode(msg.data), msg)\n },\n opts,\n )\n }\n\n function subscribeJson<T>(\n subject: string,\n onMessage: (payload: T, msg: Msg) => void | Promise<void>,\n opts?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle {\n return subscribeBytes(\n subject,\n async (msg) => {\n const nats = await importNats()\n const jc = nats.JSONCodec<T>()\n await onMessage(jc.decode(msg.data), msg)\n },\n opts,\n )\n }\n\n async function subscribeJetStreamOrdered(\n onMessage: (msg: JsMsg) => void | Promise<void>,\n opts: JetStreamOrderedSubscribeOptions,\n ): Promise<JetStreamSubscriptionHandle> {\n const conn = requireConnection()\n if (opts.signal?.aborted) {\n return { unsubscribe() {} }\n }\n\n const nats = await importNats()\n if (opts.signal?.aborted) {\n return { unsubscribe() {} }\n }\n\n const js = conn.jetstream()\n const consumer: Consumer = await js.consumers.get(opts.streamName, {\n filterSubjects: opts.filterSubject,\n deliver_policy: nats.DeliverPolicy.StartSequence,\n opt_start_seq: opts.optStartSeq ?? 0,\n // Milliseconds, NOT nanoseconds: nats.ws runs this through its own\n // `nanos()` before it reaches the server. Pre-converting here multiplied\n // it by 1e6 twice, putting the threshold ~9.5 years out — so the ephemeral\n // consumer never expired. Two consequences, both silent: every reconnect\n // and dialog switch orphaned a consumer server-side, and a client that\n // stopped pulling never got the `consumer deleted` that drives the ordered\n // consumer's self-repair. Undefined stays undefined so nats.ws applies its\n // own default rather than a copy of it.\n inactive_threshold: opts.inactiveThresholdMs,\n })\n\n const iterRef: { current: ConsumerMessages | null } = { current: null }\n let closed = false\n\n const onAbort = () => {\n void teardown()\n }\n opts.signal?.addEventListener('abort', onAbort, { once: true })\n\n async function teardown(): Promise<void> {\n if (closed) return\n closed = true\n opts.signal?.removeEventListener('abort', onAbort)\n const iter = iterRef.current\n iterRef.current = null\n if (iter) {\n try {\n await iter.close()\n } catch {\n // ignore\n }\n }\n }\n\n if (opts.signal?.aborted) {\n void teardown()\n return { unsubscribe() {} }\n }\n\n ;(async () => {\n try {\n const iter = await consumer.consume()\n if (closed) {\n try {\n await iter.close()\n } catch {\n // ignore\n }\n return\n }\n iterRef.current = iter\n watchForRecovery(iter, nats.ConsumerEvents.OrderedConsumerRecreated, opts.onRecovered)\n for await (const msg of iter) {\n if (closed) break\n try {\n await onMessage(msg)\n } catch (e) {\n emitStatus({ status: 'error', data: e })\n }\n }\n } catch (e) {\n if (!closed) emitStatus({ status: 'error', data: e })\n }\n })().catch((e) => emitStatus({ status: 'error', data: e }))\n\n return {\n unsubscribe() {\n void teardown()\n },\n }\n }\n\n function onStatus(listener: (event: NatsStatusEvent) => void): () => void {\n statusListeners.add(listener)\n return () => statusListeners.delete(listener)\n }\n\n return {\n connect,\n close,\n isConnected,\n publishBytes,\n publishString,\n publishJson,\n requestBytes,\n requestString,\n requestJson,\n subscribeBytes,\n subscribeString,\n subscribeJson,\n subscribeJetStreamOrdered,\n onStatus,\n }\n}\n","import { createNatsClient, type NatsClient, type NatsStatus, type NatsStatusEvent } from './nats'\n\nexport const NATS_DEFAULTS = {\n SHARED_CLOSE_DELAY_MS: 3000,\n CONNECT_TIMEOUT_MS: 10_000,\n PING_INTERVAL_MS: 30_000,\n MAX_PING_OUT: 3,\n RETRY_INITIAL_DELAY_MS: 1000,\n RETRY_MAX_DELAY_MS: 30_000,\n RETRY_MULTIPLIER: 2,\n} as const\n\nexport interface NatsReconnectionBackoff {\n /** Number of fast retries before exponential phase kicks in. Default: 0. */\n fastRetries?: number\n /** Delay used during the fast-retry phase. Default: RETRY_INITIAL_DELAY_MS. */\n fastRetryDelayMs?: number\n /** Base delay for the exponential phase. Default: RETRY_INITIAL_DELAY_MS. */\n initialDelayMs?: number\n /** Upper cap on any single retry delay. Default: RETRY_MAX_DELAY_MS. */\n maxDelayMs?: number\n /** Per-attempt multiplier during exponential phase. Default: RETRY_MULTIPLIER. */\n multiplier?: number\n}\n\nexport interface SharedConnection {\n wsUrl: string\n client: NatsClient\n connectPromise: Promise<void> | null\n refCount: number\n closeTimer: ReturnType<typeof setTimeout> | null\n retryTimer: ReturnType<typeof setTimeout> | null\n /**\n * Identity of the consumer driving reconnect. When set, other consumers\n * should observe status only and skip their own scheduleRetry — otherwise\n * each disconnect triggers multiple concurrent connect() calls racing over\n * connectPromise.\n */\n retryOwner: object | null\n}\n\nexport interface AcquireClientOptions {\n name?: string\n user?: string\n pass?: string\n connectTimeoutMs?: number\n pingIntervalMs?: number\n maxPingOut?: number\n}\n\nexport interface ReleaseClientOptions {\n delayMs?: number\n}\n\n// One shared connection PER URL. The previous single-slot implementation\n// force-closed whatever was connected the moment any consumer acquired a\n// DIFFERENT URL — even with live refs on it. With two chat surfaces on\n// distinct endpoints (`/ws/nats` client chat vs `/ws/nats-api` dashboard)\n// mounted at once, each acquire killed the other's socket, and the loser's\n// retry loop self-cancelled (connection identity mismatch) leaving a dead\n// subscription that silently received nothing.\nconst connections = new Map<string, SharedConnection>()\n\n/** Legacy accessor from the single-slot era: returns the first live shared\n * connection, or null. With MULTIPLE URLs connected (e.g. `/ws/nats` client\n * chat + `/ws/nats-api` dashboard mounted together) \"first\" is whichever\n * surface acquired first — an arbitrary, mount-order-dependent answer.\n * Prefer `getSharedConnectionFor(url)`; this stays only for external\n * registry-pinned consumers of the old single-connection API. */\nexport function getSharedConnection(): SharedConnection | null {\n const first = connections.values().next()\n return first.done ? null : first.value\n}\n\nexport function acquireClient(url: string, opts?: AcquireClientOptions): SharedConnection {\n let conn = connections.get(url)\n\n if (!conn) {\n const {\n name = 'openframe-frontend',\n user = 'machine',\n pass = '',\n connectTimeoutMs = NATS_DEFAULTS.CONNECT_TIMEOUT_MS,\n pingIntervalMs = NATS_DEFAULTS.PING_INTERVAL_MS,\n maxPingOut = NATS_DEFAULTS.MAX_PING_OUT,\n } = opts ?? {}\n\n const client = createNatsClient({\n servers: url,\n name,\n user,\n pass,\n connectTimeoutMs,\n reconnect: false,\n pingIntervalMs,\n maxPingOut,\n })\n\n conn = {\n wsUrl: url,\n client,\n connectPromise: null,\n refCount: 0,\n closeTimer: null,\n retryTimer: null,\n retryOwner: null,\n }\n connections.set(url, conn)\n }\n\n conn.refCount += 1\n if (conn.closeTimer) {\n clearTimeout(conn.closeTimer)\n conn.closeTimer = null\n }\n return conn\n}\n\nexport function releaseClient(url: string, opts?: ReleaseClientOptions): void {\n const conn = connections.get(url)\n if (!conn) return\n\n conn.refCount = Math.max(0, conn.refCount - 1)\n if (conn.refCount > 0) return\n\n const delay = opts?.delayMs ?? NATS_DEFAULTS.SHARED_CLOSE_DELAY_MS\n conn.closeTimer = setTimeout(() => {\n conn.closeTimer = null\n // A new acquire may have raced in during the grace period.\n if (conn.refCount > 0) return\n if (connections.get(url) === conn) {\n connections.delete(url)\n }\n if (conn.retryTimer) {\n clearTimeout(conn.retryTimer)\n conn.retryTimer = null\n }\n void conn.client.close().catch(() => {})\n }, delay)\n}\n\nexport function getSharedConnectionFor(url: string | null | undefined): SharedConnection | null {\n if (!url) return null\n return connections.get(url) ?? null\n}\n\n// ---------------------------------------------------------------------------\n// Connection lifecycle: retry + status loop, shared by NatsProvider and the\n// chat hooks. Each consumer that wants to drive reconnect creates an\n// ownerToken and calls startConnectionLifecycle(). The first caller to claim\n// retryOwner runs the actual retry loop; subsequent claimants observe status\n// only. When the owner unmounts and releases retryOwner, the next status\n// event lets a surviving consumer pick up ownership opportunistically.\n// ---------------------------------------------------------------------------\n\nexport interface ConnectionLifecycleOptions {\n conn: SharedConnection\n wsUrl: string\n onBeforeReconnect?: () => Promise<void> | void\n backoff?: NatsReconnectionBackoff\n getFreshUrl: () => string | null\n /** Called on every status change (after closed-guard). */\n onStatusChange?: (status: NatsStatus, evt: NatsStatusEvent) => void\n /**\n * Decide which statuses should trigger a retry attempt. Defaults to closed +\n * disconnected. Override to skip 'error' (JetStream protocol errors that\n * don't close the WS) or include it.\n */\n shouldRetryOn?: (status: NatsStatus) => boolean\n}\n\nexport interface ConnectionLifecycleHandle {\n /** Stop observing status, clear any pending retry, release ownership if held. */\n stop(): void\n}\n\nconst defaultShouldRetryOn = (status: NatsStatus) => status === 'closed' || status === 'disconnected'\n\nexport function startConnectionLifecycle(options: ConnectionLifecycleOptions): ConnectionLifecycleHandle {\n const { conn, wsUrl } = options\n // Each lifecycle gets its own identity for retry ownership. The first lifecycle to claim\n // an unowned connection drives reconnect; later attachers observe status only until the\n // owner releases (see opportunistic claim in scheduleRetry).\n const ownerToken = {}\n if (!conn.retryOwner) conn.retryOwner = ownerToken\n\n let closed = false\n let retryAttempt = 0\n\n function emitSynthetic(status: NatsStatus) {\n if (closed) return\n options.onStatusChange?.(status, { status })\n if (status === 'connected') {\n retryAttempt = 0\n }\n }\n\n function scheduleRetry() {\n if (closed) return\n if (getSharedConnectionFor(wsUrl) !== conn) return\n if (!conn.retryOwner) conn.retryOwner = ownerToken\n if (conn.retryOwner !== ownerToken) return\n\n if (conn.retryTimer) {\n clearTimeout(conn.retryTimer)\n conn.retryTimer = null\n }\n\n const cfg = options.backoff ?? {}\n const fastRetries = cfg.fastRetries ?? 0\n const fastDelay = cfg.fastRetryDelayMs ?? NATS_DEFAULTS.RETRY_INITIAL_DELAY_MS\n const baseDelay = cfg.initialDelayMs ?? NATS_DEFAULTS.RETRY_INITIAL_DELAY_MS\n const maxDelay = cfg.maxDelayMs ?? NATS_DEFAULTS.RETRY_MAX_DELAY_MS\n const multiplier = cfg.multiplier ?? NATS_DEFAULTS.RETRY_MULTIPLIER\n\n const delay =\n retryAttempt < fastRetries\n ? fastDelay\n : Math.min(baseDelay * multiplier ** (retryAttempt - fastRetries), maxDelay)\n const jitteredDelay = delay * (0.5 + Math.random() * 0.5)\n retryAttempt++\n\n conn.retryTimer = setTimeout(async () => {\n conn.retryTimer = null\n if (closed) return\n if (getSharedConnectionFor(wsUrl) !== conn) return\n\n try {\n await options.onBeforeReconnect?.()\n } catch {\n // continue regardless of token-refresh outcome\n }\n if (closed) return\n if (getSharedConnectionFor(wsUrl) !== conn) return\n\n const freshUrl = options.getFreshUrl()\n if (freshUrl !== wsUrl) return\n\n try {\n conn.connectPromise = null\n conn.connectPromise = conn.client.connect()\n await conn.connectPromise\n if (!closed && getSharedConnectionFor(wsUrl) === conn) {\n retryAttempt = 0\n }\n } catch {\n conn.connectPromise = null\n if (!closed && getSharedConnectionFor(wsUrl) === conn) {\n scheduleRetry()\n }\n }\n }, jitteredDelay)\n }\n\n const shouldRetryOn = options.shouldRetryOn ?? defaultShouldRetryOn\n\n const unsubStatus = conn.client.onStatus((evt) => {\n if (closed) return\n options.onStatusChange?.(evt.status, evt)\n if (evt.status === 'connected') {\n retryAttempt = 0\n }\n if (shouldRetryOn(evt.status)) {\n scheduleRetry()\n }\n })\n\n if (conn.client.isConnected()) {\n emitSynthetic('connected')\n }\n\n void (async () => {\n try {\n conn.connectPromise ||= conn.client.connect()\n await conn.connectPromise\n } catch {\n conn.connectPromise = null\n if (closed) return\n\n emitSynthetic('disconnected')\n scheduleRetry()\n }\n })()\n\n return {\n stop() {\n closed = true\n unsubStatus()\n if (conn.retryTimer) {\n clearTimeout(conn.retryTimer)\n conn.retryTimer = null\n }\n if (conn.retryOwner === ownerToken) {\n conn.retryOwner = null\n }\n },\n }\n}\n","'use client'\n\nimport * as React from 'react'\nimport type { NatsClient, NatsStatus } from './nats'\nimport {\n acquireClient,\n releaseClient,\n startConnectionLifecycle,\n type AcquireClientOptions,\n type NatsReconnectionBackoff,\n} from './shared-connection'\n\nexport type { NatsReconnectionBackoff } from './shared-connection'\n\nexport interface NatsProviderProps {\n children: React.ReactNode\n /** Return the current NATS WebSocket URL (or null when not yet available, e.g. unauthenticated). */\n getWsUrl: () => string | null\n /** Called before each reconnect attempt. */\n onBeforeReconnect?: () => Promise<void> | void\n clientConfig?: AcquireClientOptions\n reconnectionBackoff?: NatsReconnectionBackoff\n /**\n * Bump this to force re-evaluating `getWsUrl()` (e.g. when auth state flips).\n * Provider does not subscribe to external auth state by itself.\n */\n urlRevision?: unknown\n}\n\nexport interface NatsContextValue {\n client: NatsClient | null\n status: NatsStatus\n isReady: boolean\n reconnectionCount: number\n}\n\nconst NatsContext = React.createContext<NatsContextValue | null>(null)\n\nexport function NatsProvider({\n children,\n getWsUrl,\n onBeforeReconnect,\n clientConfig,\n reconnectionBackoff,\n urlRevision,\n}: NatsProviderProps) {\n const [client, setClient] = React.useState<NatsClient | null>(null)\n const [status, setStatus] = React.useState<NatsStatus>('closed')\n const [reconnectionCount, setReconnectionCount] = React.useState(0)\n\n const getWsUrlRef = React.useRef(getWsUrl)\n React.useEffect(() => {\n getWsUrlRef.current = getWsUrl\n }, [getWsUrl])\n\n const onBeforeReconnectRef = React.useRef(onBeforeReconnect)\n React.useEffect(() => {\n onBeforeReconnectRef.current = onBeforeReconnect\n }, [onBeforeReconnect])\n\n const reconnectionBackoffRef = React.useRef(reconnectionBackoff)\n React.useEffect(() => {\n reconnectionBackoffRef.current = reconnectionBackoff\n }, [reconnectionBackoff])\n\n const clientConfigRef = React.useRef(clientConfig)\n React.useEffect(() => {\n clientConfigRef.current = clientConfig\n }, [clientConfig])\n\n const heldUrlRef = React.useRef<string | null>(null)\n const hadConnectionBeforeRef = React.useRef(false)\n\n React.useEffect(() => {\n const wsUrl = getWsUrlRef.current()\n\n if (!wsUrl) {\n if (heldUrlRef.current) {\n releaseClient(heldUrlRef.current)\n heldUrlRef.current = null\n setClient(null)\n setStatus('closed')\n }\n return\n }\n\n if (heldUrlRef.current && heldUrlRef.current !== wsUrl) {\n releaseClient(heldUrlRef.current)\n heldUrlRef.current = null\n }\n\n const conn = acquireClient(wsUrl, clientConfigRef.current)\n heldUrlRef.current = wsUrl\n setClient(conn.client)\n setStatus(conn.client.isConnected() ? 'connected' : 'connecting')\n\n const lifecycle = startConnectionLifecycle({\n conn,\n wsUrl,\n onBeforeReconnect: () => onBeforeReconnectRef.current?.(),\n backoff: reconnectionBackoffRef.current,\n getFreshUrl: () => getWsUrlRef.current(),\n onStatusChange: (newStatus) => {\n if (newStatus === 'error') return\n setStatus(newStatus)\n if (newStatus === 'connected') {\n if (hadConnectionBeforeRef.current) {\n setReconnectionCount((c) => c + 1)\n }\n hadConnectionBeforeRef.current = true\n }\n },\n })\n\n return () => {\n lifecycle.stop()\n if (heldUrlRef.current) {\n releaseClient(heldUrlRef.current)\n heldUrlRef.current = null\n }\n setClient(null)\n setStatus('closed')\n }\n }, [urlRevision])\n\n const value = React.useMemo<NatsContextValue>(\n () => ({\n client,\n status,\n isReady: status === 'connected' && client !== null,\n reconnectionCount,\n }),\n [client, status, reconnectionCount],\n )\n\n return <NatsContext.Provider value={value}>{children}</NatsContext.Provider>\n}\n\nexport function useNats(): NatsContextValue {\n const ctx = React.useContext(NatsContext)\n if (!ctx) throw new Error('useNats must be used inside <NatsProvider>')\n return ctx\n}\n\nexport function useOptionalNats(): NatsContextValue | null {\n return React.useContext(NatsContext)\n}\n","'use client'\n\nimport * as React from 'react'\nimport type { JsMsg, Msg, NatsSubscribeOptions } from './nats'\nimport { useOptionalNats } from './nats-provider'\n\nexport interface UseNatsSubscriptionOptions extends NatsSubscribeOptions {\n enabled?: boolean\n}\n\nexport interface UseNatsSubscriptionReturn {\n isSubscribed: boolean\n isReady: boolean\n}\n\n/**\n * Subscribe to a NATS subject using the shared connection from <NatsProvider>.\n * Automatically (re)subscribes when the connection becomes ready, when the\n * subject changes, and after reconnections.\n */\nexport function useNatsSubscription(\n subject: string | null,\n onMessage: (msg: Msg) => void | Promise<void>,\n options?: UseNatsSubscriptionOptions,\n): UseNatsSubscriptionReturn {\n const nats = useOptionalNats()\n const handlerRef = React.useRef(onMessage)\n React.useEffect(() => {\n handlerRef.current = onMessage\n }, [onMessage])\n\n const [isSubscribed, setIsSubscribed] = React.useState(false)\n\n const enabled = options?.enabled !== false\n const queue = options?.queue\n const max = options?.max\n const reconnectionCount = nats?.reconnectionCount ?? 0\n const isReady = !!nats?.isReady\n const client = nats?.client ?? null\n\n React.useEffect(() => {\n if (!client || !isReady || !subject || !enabled) {\n setIsSubscribed(false)\n return\n }\n\n const sub = client.subscribeBytes(\n subject,\n (msg) => handlerRef.current(msg),\n { queue, max },\n )\n setIsSubscribed(true)\n\n return () => {\n setIsSubscribed(false)\n try {\n sub.unsubscribe()\n } catch {\n // ignore\n }\n }\n // reconnectionCount intentionally in deps: re-subscribe after reconnect\n }, [client, isReady, subject, enabled, queue, max, reconnectionCount])\n\n return { isSubscribed, isReady }\n}\n\nexport type UseNatsJsonSubscriptionOptions = UseNatsSubscriptionOptions\n\nexport function useNatsJsonSubscription<T = unknown>(\n subject: string | null,\n onPayload: (payload: T, msg: Msg) => void | Promise<void>,\n options?: UseNatsJsonSubscriptionOptions,\n): UseNatsSubscriptionReturn {\n const handlerRef = React.useRef(onPayload)\n React.useEffect(() => {\n handlerRef.current = onPayload\n }, [onPayload])\n\n const decoderRef = React.useRef<TextDecoder | null>(null)\n if (!decoderRef.current && typeof TextDecoder !== 'undefined') {\n decoderRef.current = new TextDecoder()\n }\n\n const wrapped = React.useCallback(async (msg: Msg) => {\n const decoder = decoderRef.current\n if (!decoder) return\n try {\n const parsed = JSON.parse(decoder.decode(msg.data)) as T\n await handlerRef.current(parsed, msg)\n } catch {\n // ignore malformed payloads\n }\n }, [])\n\n return useNatsSubscription(subject, wrapped, options)\n}\n\nexport type NatsJsMsg = JsMsg\n"]}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkWJ2S6I34cjs = require('./chunk-WJ2S6I34.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunk7DUMNMEDcjs = require('./chunk-7DUMNMED.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
@@ -19,13 +19,13 @@ var _chunk4NIBKEEDcjs = require('./chunk-4NIBKEED.cjs');
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _chunkV2APV4E4cjs = require('./chunk-V2APV4E4.cjs');
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
var
|
|
28
|
+
var _chunk47LHA4QIcjs = require('./chunk-47LHA4QI.cjs');
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
var _chunkLILQJ3UZcjs = require('./chunk-LILQJ3UZ.cjs');
|
|
@@ -1043,9 +1043,9 @@ function useDocNavigation() {
|
|
|
1043
1043
|
function scrollToContent() {
|
|
1044
1044
|
const article = document.querySelector("article");
|
|
1045
1045
|
if (article) {
|
|
1046
|
-
|
|
1046
|
+
_chunk47LHA4QIcjs.scrollElementIntoView.call(void 0, article, { headerOffset: _chunk47LHA4QIcjs.HUB_HEADER_OFFSET_PX });
|
|
1047
1047
|
} else {
|
|
1048
|
-
|
|
1048
|
+
_chunk47LHA4QIcjs.scrollElementIntoView.call(void 0, document.documentElement);
|
|
1049
1049
|
}
|
|
1050
1050
|
}
|
|
1051
1051
|
function findFirstDocPath(folder) {
|
|
@@ -1065,8 +1065,8 @@ function findFirstDocPath(folder) {
|
|
|
1065
1065
|
}
|
|
1066
1066
|
function useDocumentTree(config, initialPath) {
|
|
1067
1067
|
const { structureEndpoint, contentEndpoint, baseRoute } = config;
|
|
1068
|
-
const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => (
|
|
1069
|
-
const cleanInitialPath =
|
|
1068
|
+
const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => ( _chunkV2APV4E4cjs.DEFAULT_FOLDER_INDEX_FILE));
|
|
1069
|
+
const cleanInitialPath = _chunkV2APV4E4cjs.stripFolderIndexFromPath.call(void 0,
|
|
1070
1070
|
_optionalChain([initialPath, 'optionalAccess', _2 => _2.replace, 'call', _3 => _3(/\/$/, "")]) || "",
|
|
1071
1071
|
folderIndexFile
|
|
1072
1072
|
);
|
|
@@ -1092,12 +1092,12 @@ function useDocumentTree(config, initialPath) {
|
|
|
1092
1092
|
} else if (pathname.startsWith(`${normalizedBaseRoute}/`)) {
|
|
1093
1093
|
pathFromUrl = pathname.substring(`${normalizedBaseRoute}/`.length);
|
|
1094
1094
|
}
|
|
1095
|
-
pathFromUrl =
|
|
1095
|
+
pathFromUrl = _chunkV2APV4E4cjs.stripFolderIndexFromPath.call(void 0, pathFromUrl, folderIndexFile);
|
|
1096
1096
|
if (pathFromUrl !== selectedPathRef.current) {
|
|
1097
1097
|
setSelectedPath(pathFromUrl);
|
|
1098
1098
|
if (pathFromUrl) {
|
|
1099
1099
|
const parentPath = pathFromUrl.includes("/") ? pathFromUrl.substring(0, pathFromUrl.lastIndexOf("/")) : pathFromUrl;
|
|
1100
|
-
setExpandedNodes(new Set(
|
|
1100
|
+
setExpandedNodes(new Set(_chunkV2APV4E4cjs.getDocAncestorNodeIds.call(void 0, parentPath)));
|
|
1101
1101
|
}
|
|
1102
1102
|
setTimeout(() => {
|
|
1103
1103
|
scrollToContent();
|
|
@@ -1112,7 +1112,7 @@ function useDocumentTree(config, initialPath) {
|
|
|
1112
1112
|
setSelectedPath(cleanInitialPath);
|
|
1113
1113
|
if (cleanInitialPath) {
|
|
1114
1114
|
const parentPath = cleanInitialPath.includes("/") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
|
|
1115
|
-
setExpandedNodes(new Set(
|
|
1115
|
+
setExpandedNodes(new Set(_chunkV2APV4E4cjs.getDocAncestorNodeIds.call(void 0, parentPath)));
|
|
1116
1116
|
}
|
|
1117
1117
|
setTimeout(scrollToContent, 150);
|
|
1118
1118
|
}, [cleanInitialPath]);
|
|
@@ -1132,7 +1132,7 @@ function useDocumentTree(config, initialPath) {
|
|
|
1132
1132
|
if (selectedPath === "") {
|
|
1133
1133
|
pathToFetch = folderIndexFile;
|
|
1134
1134
|
} else {
|
|
1135
|
-
const node =
|
|
1135
|
+
const node = _chunkV2APV4E4cjs.findDocNodeByPath.call(void 0, selectedPath, structure);
|
|
1136
1136
|
if (node && node.type === "folder" && !node.hasReadme) {
|
|
1137
1137
|
const firstDocPath = findFirstDocPath(node);
|
|
1138
1138
|
if (!firstDocPath) {
|
|
@@ -1164,7 +1164,7 @@ function useDocumentTree(config, initialPath) {
|
|
|
1164
1164
|
try {
|
|
1165
1165
|
setIsLoadingStructure(true);
|
|
1166
1166
|
setError(null);
|
|
1167
|
-
const response = await
|
|
1167
|
+
const response = await _chunk47LHA4QIcjs.contentFetch.call(void 0, structureEndpoint);
|
|
1168
1168
|
if (!response.ok) {
|
|
1169
1169
|
throw new Error("Failed to load documentation structure");
|
|
1170
1170
|
}
|
|
@@ -1174,7 +1174,7 @@ function useDocumentTree(config, initialPath) {
|
|
|
1174
1174
|
if (cleanInitialPath) {
|
|
1175
1175
|
const pathForExpansion = cleanInitialPath.includes(".") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
|
|
1176
1176
|
if (pathForExpansion) {
|
|
1177
|
-
setExpandedNodes(new Set(
|
|
1177
|
+
setExpandedNodes(new Set(_chunkV2APV4E4cjs.getDocAncestorNodeIds.call(void 0, pathForExpansion)));
|
|
1178
1178
|
}
|
|
1179
1179
|
} else if (result.data.length > 0) {
|
|
1180
1180
|
const hasRootReadme = result.data.some(
|
|
@@ -1204,7 +1204,7 @@ function useDocumentTree(config, initialPath) {
|
|
|
1204
1204
|
const fetchContent = async (path) => {
|
|
1205
1205
|
try {
|
|
1206
1206
|
setIsLoadingContent(true);
|
|
1207
|
-
const response = await
|
|
1207
|
+
const response = await _chunk47LHA4QIcjs.contentFetch.call(void 0, `${contentEndpoint}?path=${encodeURIComponent(path)}`);
|
|
1208
1208
|
if (path !== lastFetchedPath.current) return;
|
|
1209
1209
|
if (!response.ok) {
|
|
1210
1210
|
if (response.status === 404) {
|
|
@@ -1216,8 +1216,8 @@ function useDocumentTree(config, initialPath) {
|
|
|
1216
1216
|
setContent(null);
|
|
1217
1217
|
return;
|
|
1218
1218
|
}
|
|
1219
|
-
const probe =
|
|
1220
|
-
|
|
1219
|
+
const probe = _chunkV2APV4E4cjs.findDocNodeByPath.call(void 0,
|
|
1220
|
+
_chunkV2APV4E4cjs.stripFolderIndexFromPath.call(void 0, path, folderIndexFile),
|
|
1221
1221
|
structure
|
|
1222
1222
|
);
|
|
1223
1223
|
const probeIsNoReadmeFolder = !!probe && probe.type === "folder" && !probe.hasReadme;
|
|
@@ -1274,16 +1274,16 @@ function useDocumentTree(config, initialPath) {
|
|
|
1274
1274
|
if (node.type === "folder") {
|
|
1275
1275
|
setExpandedNodes((prev) => {
|
|
1276
1276
|
if (prev.has(node.id)) {
|
|
1277
|
-
const ancestorIds =
|
|
1277
|
+
const ancestorIds = _chunkV2APV4E4cjs.getDocAncestorNodeIds.call(void 0, node.path);
|
|
1278
1278
|
ancestorIds.pop();
|
|
1279
1279
|
return new Set(ancestorIds);
|
|
1280
1280
|
}
|
|
1281
|
-
return new Set(
|
|
1281
|
+
return new Set(_chunkV2APV4E4cjs.getDocAncestorNodeIds.call(void 0, node.path));
|
|
1282
1282
|
});
|
|
1283
1283
|
} else {
|
|
1284
1284
|
const lastSlash = node.path.lastIndexOf("/");
|
|
1285
1285
|
if (lastSlash > 0) {
|
|
1286
|
-
setExpandedNodes(new Set(
|
|
1286
|
+
setExpandedNodes(new Set(_chunkV2APV4E4cjs.getDocAncestorNodeIds.call(void 0, node.path.substring(0, lastSlash))));
|
|
1287
1287
|
}
|
|
1288
1288
|
}
|
|
1289
1289
|
lastFetchedPath.current = null;
|
|
@@ -1295,9 +1295,9 @@ function useDocumentTree(config, initialPath) {
|
|
|
1295
1295
|
const hashIndex = path.indexOf("#");
|
|
1296
1296
|
const anchor = hashIndex !== -1 ? path.substring(hashIndex) : "";
|
|
1297
1297
|
const cleanPath = path.replace(/\/$/, "").split("#")[0];
|
|
1298
|
-
const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _4 => _4.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current :
|
|
1298
|
+
const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _4 => _4.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current : _chunkV2APV4E4cjs.stripFolderIndexFromPath.call(void 0, cleanPath, folderIndexFile);
|
|
1299
1299
|
if (anchor && _optionalChain([options, 'optionalAccess', _5 => _5.fromInternalLink]) && pathForSelection === selectedPathRef.current) {
|
|
1300
|
-
|
|
1300
|
+
_chunk47LHA4QIcjs.navigateSamePageHash.call(void 0, anchor, { headerOffset: _chunk47LHA4QIcjs.HUB_HEADER_OFFSET_PX });
|
|
1301
1301
|
return;
|
|
1302
1302
|
}
|
|
1303
1303
|
const scrollAfterNav = () => {
|
|
@@ -1305,7 +1305,7 @@ function useDocumentTree(config, initialPath) {
|
|
|
1305
1305
|
setTimeout(() => {
|
|
1306
1306
|
const el = document.getElementById(anchor.substring(1));
|
|
1307
1307
|
if (el) {
|
|
1308
|
-
|
|
1308
|
+
_chunk47LHA4QIcjs.scrollElementIntoView.call(void 0, el, { headerOffset: _chunk47LHA4QIcjs.HUB_HEADER_OFFSET_PX });
|
|
1309
1309
|
} else {
|
|
1310
1310
|
scrollToContent();
|
|
1311
1311
|
}
|
|
@@ -1357,8 +1357,8 @@ function useDocumentTree(config, initialPath) {
|
|
|
1357
1357
|
return docNavigation.register({
|
|
1358
1358
|
baseRoute: normalizedBaseRoute,
|
|
1359
1359
|
findNodeByPath: (path) => {
|
|
1360
|
-
const clean =
|
|
1361
|
-
return _nullishCoalesce(
|
|
1360
|
+
const clean = _chunkV2APV4E4cjs.stripFolderIndexFromPath.call(void 0, path.replace(/\/$/, "").split("#")[0], folderIndexFile);
|
|
1361
|
+
return _nullishCoalesce(_chunkV2APV4E4cjs.findDocNodeByPath.call(void 0, clean, structure), () => ( null));
|
|
1362
1362
|
},
|
|
1363
1363
|
selectNode
|
|
1364
1364
|
});
|
|
@@ -1399,7 +1399,7 @@ function useScrollSpy(sections) {
|
|
|
1399
1399
|
if (!targetElement) return;
|
|
1400
1400
|
isScrollingFromClick.current = true;
|
|
1401
1401
|
setActiveSection(sectionId);
|
|
1402
|
-
|
|
1402
|
+
_chunk47LHA4QIcjs.scrollElementIntoView.call(void 0, targetElement, { headerOffset: SCROLL_OFFSET });
|
|
1403
1403
|
setTimeout(() => {
|
|
1404
1404
|
isScrollingFromClick.current = false;
|
|
1405
1405
|
}, 800);
|
|
@@ -1443,7 +1443,7 @@ function useDocsResolveLink(sourceId, resolveLinkEndpoint) {
|
|
|
1443
1443
|
return _react.useCallback.call(void 0,
|
|
1444
1444
|
async (href, currentPath) => {
|
|
1445
1445
|
try {
|
|
1446
|
-
const response = await
|
|
1446
|
+
const response = await _chunk47LHA4QIcjs.contentFetch.call(void 0, resolvedResolveLinkEndpoint, {
|
|
1447
1447
|
method: "POST",
|
|
1448
1448
|
headers: { "Content-Type": "application/json" },
|
|
1449
1449
|
body: JSON.stringify({ link: href, currentPath, source: sourceId })
|
|
@@ -1531,7 +1531,7 @@ function DocViewerContent({
|
|
|
1531
1531
|
label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _23 => _23.label]), () => ( "Back to home")),
|
|
1532
1532
|
onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _24 => _24.href]), () => ( "/")))
|
|
1533
1533
|
};
|
|
1534
|
-
const docSearch =
|
|
1534
|
+
const docSearch = _chunk7DUMNMEDcjs.useDocSearch.call(void 0, {
|
|
1535
1535
|
source: chatSource,
|
|
1536
1536
|
baseRoute,
|
|
1537
1537
|
searchEndpoint,
|
|
@@ -1555,7 +1555,7 @@ function DocViewerContent({
|
|
|
1555
1555
|
onResolveLink: resolveLink
|
|
1556
1556
|
});
|
|
1557
1557
|
}, [content, renderContent, navigateToDoc, sourceId, resolveLink]);
|
|
1558
|
-
const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([
|
|
1558
|
+
const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([_chunkV2APV4E4cjs.findDocNodeByPath.call(void 0, selectedPath, structure), 'optionalAccess', _25 => _25.documentType]) : void 0;
|
|
1559
1559
|
const activeDocType = _nullishCoalesce(_optionalChain([content, 'optionalAccess', _26 => _26.documentType]), () => ( selectedNodeDocType));
|
|
1560
1560
|
const isMarkdownContent = !activeDocType || activeDocType === "markdown";
|
|
1561
1561
|
const showStickyNav = isMarkdownContent;
|
|
@@ -1566,9 +1566,9 @@ function DocViewerContent({
|
|
|
1566
1566
|
const containerBgStyle = colorPalette.containerBackground !== "transparent" ? { backgroundColor: colorPalette.containerBackground } : {};
|
|
1567
1567
|
const defaultEmptyText = structure.length > 0 ? "Select a document from the sidebar to view" : "No documents yet. Add content from the admin panel.";
|
|
1568
1568
|
const resolvedEmptyText = emptyStateText || defaultEmptyText;
|
|
1569
|
-
const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: { ...bgStyle, ...containerBgStyle }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1569
|
+
const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: { ...bgStyle, ...containerBgStyle }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV2APV4E4cjs.PageLayout, { title, subtitle, titleSize: "h1", titleWrap: true, backButton: _nullishCoalesce(backCfg, () => ( void 0)), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full flex flex-col gap-10", children: [
|
|
1570
1570
|
showAIChat && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1571
|
-
|
|
1571
|
+
_chunk7DUMNMEDcjs.DocSearchBar,
|
|
1572
1572
|
{
|
|
1573
1573
|
placeholder: `Search ${_optionalChain([sidebarLabel, 'optionalAccess', _30 => _30.toLowerCase, 'call', _31 => _31()]) || "documents"}...`,
|
|
1574
1574
|
query: docSearch.query,
|
|
@@ -1589,7 +1589,7 @@ function DocViewerContent({
|
|
|
1589
1589
|
!error && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col lg:flex-row gap-6 lg:gap-10 items-start flex-1", children: [
|
|
1590
1590
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full lg:w-[320px] lg:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "lg:sticky lg:top-20", children: isLoadingStructure ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CategorySidebarSkeleton, {}) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
1591
1591
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentMobileDropdown, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1592
|
-
|
|
1592
|
+
_chunkV2APV4E4cjs.MobileNavigationDropdown,
|
|
1593
1593
|
{
|
|
1594
1594
|
nodes: structure,
|
|
1595
1595
|
selectedPath,
|
|
@@ -1603,7 +1603,7 @@ function DocViewerContent({
|
|
|
1603
1603
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentSidebar, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
|
|
1604
1604
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h5 font-semibold text-ods-text-secondary", children: sidebarLabel }),
|
|
1605
1605
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1606
|
-
|
|
1606
|
+
_chunkV2APV4E4cjs.MultiLevelNavigation,
|
|
1607
1607
|
{
|
|
1608
1608
|
nodes: structure,
|
|
1609
1609
|
selectedPath,
|
|
@@ -1648,7 +1648,7 @@ function DocViewerContent({
|
|
|
1648
1648
|
showStickyNav && content && stickyNavSections.length > 0 && !isLoadingContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "sticky top-24", children: [
|
|
1649
1649
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h5 font-semibold text-ods-text-secondary mb-4", children: "ON THIS PAGE" }),
|
|
1650
1650
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1651
|
-
|
|
1651
|
+
_chunkV2APV4E4cjs.StickySectionNav,
|
|
1652
1652
|
{
|
|
1653
1653
|
sections: stickyNavSections,
|
|
1654
1654
|
activeSection,
|
|
@@ -1663,7 +1663,7 @@ function DocViewerContent({
|
|
|
1663
1663
|
) })
|
|
1664
1664
|
] })
|
|
1665
1665
|
] }) }) });
|
|
1666
|
-
return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1666
|
+
return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV2APV4E4cjs.PageShell, { contentClassName: `${bgClass} ${className}`, children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `page-shell-content ${bgClass} ${className}`.trim(), children: inner });
|
|
1667
1667
|
}
|
|
1668
1668
|
|
|
1669
1669
|
// src/components/docs/skeletons.tsx
|
|
@@ -1759,11 +1759,11 @@ function EmbedSkeleton({ documentType } = {}) {
|
|
|
1759
1759
|
|
|
1760
1760
|
var DEFAULT_TITLE = "Documents";
|
|
1761
1761
|
var defaultFallbackRenderer = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-center py-16", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary", children: "Unsupported document type" }) });
|
|
1762
|
-
var defaultPdfRenderer = (content, handlers) => content.fileUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1763
|
-
var defaultGoogleSheetRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1764
|
-
var defaultFigmaRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1762
|
+
var defaultPdfRenderer = (content, handlers) => content.fileUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWJ2S6I34cjs.PdfViewer, { src: content.fileUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
|
|
1763
|
+
var defaultGoogleSheetRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWJ2S6I34cjs.GoogleSheetsViewer, { externalUrl: content.externalUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
|
|
1764
|
+
var defaultFigmaRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV2APV4E4cjs.FigmaEmbed, { url: content.externalUrl, title: content.fileName, loading: "eager" }) : defaultFallbackRenderer(content, handlers);
|
|
1765
1765
|
var defaultFileRenderer = (content) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1766
|
-
|
|
1766
|
+
_chunkWJ2S6I34cjs.FileDownloadCard,
|
|
1767
1767
|
{
|
|
1768
1768
|
fileName: content.fileName,
|
|
1769
1769
|
mimeType: content.mimeType,
|
|
@@ -1845,4 +1845,4 @@ function DocsHubPage({
|
|
|
1845
1845
|
|
|
1846
1846
|
|
|
1847
1847
|
exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.UnifiedSkeleton = UnifiedSkeleton; exports.TextSkeleton = TextSkeleton; exports.InteractiveSkeleton = InteractiveSkeleton; exports.MediaSkeleton = MediaSkeleton; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.HeroSkeleton = HeroSkeleton; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.DocNavigationProvider = DocNavigationProvider; exports.useDocNavigation = useDocNavigation; exports.useDocumentTree = useDocumentTree; exports.useScrollSpy = useScrollSpy; exports.DocViewer = DocViewer; exports.MarkdownSkeleton = MarkdownSkeleton; exports.EmbedSkeleton = EmbedSkeleton; exports.DocsHubPage = DocsHubPage;
|
|
1848
|
-
//# sourceMappingURL=chunk-
|
|
1848
|
+
//# sourceMappingURL=chunk-NSDDV4F6.cjs.map
|