@sonordev/site-kit 6.3.3 → 6.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/agent-manifest.json +1 -1
  2. package/dist/{AnalyticsProvider-IZXUFR7B.js → AnalyticsProvider-4F7VWRAJ.js} +10 -10
  3. package/dist/{AnalyticsProvider-IZXUFR7B.js.map → AnalyticsProvider-4F7VWRAJ.js.map} +1 -1
  4. package/dist/{AnalyticsProvider-K5DRCKEB.mjs → AnalyticsProvider-DQQLEE3B.mjs} +6 -6
  5. package/dist/{AnalyticsProvider-K5DRCKEB.mjs.map → AnalyticsProvider-DQQLEE3B.mjs.map} +1 -1
  6. package/dist/{ArticleViewTracker-TLQT5MJP.mjs → ArticleViewTracker-3QRIQZOL.mjs} +5 -5
  7. package/dist/{ArticleViewTracker-TLQT5MJP.mjs.map → ArticleViewTracker-3QRIQZOL.mjs.map} +1 -1
  8. package/dist/{ArticleViewTracker-OYYQABG3.js → ArticleViewTracker-B4J2IKWS.js} +6 -6
  9. package/dist/{ArticleViewTracker-OYYQABG3.js.map → ArticleViewTracker-B4J2IKWS.js.map} +1 -1
  10. package/dist/{ChatWidget-4GAGGANM.js → ChatWidget-NGZLBGGZ.js} +10 -10
  11. package/dist/{ChatWidget-4GAGGANM.js.map → ChatWidget-NGZLBGGZ.js.map} +1 -1
  12. package/dist/{ChatWidget-JTI25HIA.mjs → ChatWidget-S2IEUKSM.mjs} +7 -7
  13. package/dist/{ChatWidget-JTI25HIA.mjs.map → ChatWidget-S2IEUKSM.mjs.map} +1 -1
  14. package/dist/EngageWidget-DKXCD6VU.js +21 -0
  15. package/dist/{EngageWidget-LNTIXBFA.js.map → EngageWidget-DKXCD6VU.js.map} +1 -1
  16. package/dist/EngageWidget-XAG3OUTN.mjs +12 -0
  17. package/dist/{EngageWidget-YM2JPXXJ.mjs.map → EngageWidget-XAG3OUTN.mjs.map} +1 -1
  18. package/dist/{FileField-U327LS7Q.js → FileField-QSQS6WRY.js} +6 -6
  19. package/dist/{FileField-U327LS7Q.js.map → FileField-QSQS6WRY.js.map} +1 -1
  20. package/dist/{FileField-KIQMFWW6.mjs → FileField-QYAHRTRI.mjs} +5 -5
  21. package/dist/{FileField-KIQMFWW6.mjs.map → FileField-QYAHRTRI.mjs.map} +1 -1
  22. package/dist/{FormSpotlight-BKMGDP3Z.mjs → FormSpotlight-OK2F4YEI.mjs} +3 -3
  23. package/dist/{FormSpotlight-BKMGDP3Z.mjs.map → FormSpotlight-OK2F4YEI.mjs.map} +1 -1
  24. package/dist/{FormSpotlight-SAYR5PQW.js → FormSpotlight-TNG5KXWM.js} +9 -9
  25. package/dist/{FormSpotlight-SAYR5PQW.js.map → FormSpotlight-TNG5KXWM.js.map} +1 -1
  26. package/dist/{FormStage-GBH4PXW7.js → FormStage-7QKWC76Z.js} +9 -9
  27. package/dist/{FormStage-GBH4PXW7.js.map → FormStage-7QKWC76Z.js.map} +1 -1
  28. package/dist/{FormStage-35VWCKJ4.mjs → FormStage-EKTMBUHT.mjs} +3 -3
  29. package/dist/{FormStage-35VWCKJ4.mjs.map → FormStage-EKTMBUHT.mjs.map} +1 -1
  30. package/dist/ManagedForm-2LGVJVNO.mjs +16 -0
  31. package/dist/{ManagedForm-GOZNJ66K.mjs.map → ManagedForm-2LGVJVNO.mjs.map} +1 -1
  32. package/dist/ManagedForm-LQK3KJUH.js +25 -0
  33. package/dist/{ManagedForm-MKSPZAI3.js.map → ManagedForm-LQK3KJUH.js.map} +1 -1
  34. package/dist/{ManagedNewsletterForm-3FJU7HUS.mjs → ManagedNewsletterForm-7EUEAMU5.mjs} +6 -6
  35. package/dist/{ManagedNewsletterForm-3FJU7HUS.mjs.map → ManagedNewsletterForm-7EUEAMU5.mjs.map} +1 -1
  36. package/dist/{ManagedNewsletterForm-BMXJ2BXD.js → ManagedNewsletterForm-DNSCX7Y5.js} +7 -7
  37. package/dist/{ManagedNewsletterForm-BMXJ2BXD.js.map → ManagedNewsletterForm-DNSCX7Y5.js.map} +1 -1
  38. package/dist/{SignalCore-N2JUB4D4.mjs → SignalCore-OPQXRYKI.mjs} +5 -5
  39. package/dist/{SignalCore-N2JUB4D4.mjs.map → SignalCore-OPQXRYKI.mjs.map} +1 -1
  40. package/dist/{SignalCore-DEGICRY2.js → SignalCore-SVJYWIM6.js} +11 -11
  41. package/dist/{SignalCore-DEGICRY2.js.map → SignalCore-SVJYWIM6.js.map} +1 -1
  42. package/dist/SitemapSync-JQFUZMGW.js +18 -0
  43. package/dist/{SitemapSync-HRQ7KLP5.js.map → SitemapSync-JQFUZMGW.js.map} +1 -1
  44. package/dist/SitemapSync-ZJY5DKLU.mjs +9 -0
  45. package/dist/{SitemapSync-JIORN4Z5.mjs.map → SitemapSync-ZJY5DKLU.mjs.map} +1 -1
  46. package/dist/analytics/index.js +9 -9
  47. package/dist/analytics/index.mjs +4 -4
  48. package/dist/articles/index.js +1 -1
  49. package/dist/articles/index.mjs +1 -1
  50. package/dist/articles/server-ui.js +1 -1
  51. package/dist/articles/server-ui.mjs +1 -1
  52. package/dist/{chunk-YTVVICWW.js → chunk-4SFSLUBA.js} +5 -5
  53. package/dist/{chunk-YTVVICWW.js.map → chunk-4SFSLUBA.js.map} +1 -1
  54. package/dist/{chunk-EE7J66MJ.mjs → chunk-562DSBYR.mjs} +3 -3
  55. package/dist/{chunk-EE7J66MJ.mjs.map → chunk-562DSBYR.mjs.map} +1 -1
  56. package/dist/{chunk-KMJM55P6.js → chunk-5XEEDDZ4.js} +4 -4
  57. package/dist/{chunk-KMJM55P6.js.map → chunk-5XEEDDZ4.js.map} +1 -1
  58. package/dist/{chunk-X5FQXU5J.mjs → chunk-64HKUCAF.mjs} +3 -3
  59. package/dist/{chunk-X5FQXU5J.mjs.map → chunk-64HKUCAF.mjs.map} +1 -1
  60. package/dist/{chunk-NRBITVDK.js → chunk-6FNFM7JL.js} +3 -4
  61. package/dist/chunk-6FNFM7JL.js.map +1 -0
  62. package/dist/{chunk-GFWSYLGO.mjs → chunk-6GRM7YZG.mjs} +4 -4
  63. package/dist/{chunk-GFWSYLGO.mjs.map → chunk-6GRM7YZG.mjs.map} +1 -1
  64. package/dist/{chunk-4F4CHBVS.js → chunk-7LHG6GR3.js} +10 -10
  65. package/dist/{chunk-4F4CHBVS.js.map → chunk-7LHG6GR3.js.map} +1 -1
  66. package/dist/{chunk-7EW22AND.js → chunk-7YELMDJ3.js} +14 -14
  67. package/dist/{chunk-7EW22AND.js.map → chunk-7YELMDJ3.js.map} +1 -1
  68. package/dist/{chunk-CB3WK2OW.js → chunk-CIBH3PMQ.js} +5 -5
  69. package/dist/{chunk-CB3WK2OW.js.map → chunk-CIBH3PMQ.js.map} +1 -1
  70. package/dist/{chunk-DHCU3RTK.js → chunk-CLQSKHE6.js} +14 -14
  71. package/dist/{chunk-DHCU3RTK.js.map → chunk-CLQSKHE6.js.map} +1 -1
  72. package/dist/{chunk-LPUP2TSV.js → chunk-CZMZEUB6.js} +15 -15
  73. package/dist/{chunk-LPUP2TSV.js.map → chunk-CZMZEUB6.js.map} +1 -1
  74. package/dist/{chunk-PHTL4CPD.mjs → chunk-D37H4JI6.mjs} +3 -3
  75. package/dist/{chunk-PHTL4CPD.mjs.map → chunk-D37H4JI6.mjs.map} +1 -1
  76. package/dist/{chunk-M26C37WI.mjs → chunk-DVAAKEMG.mjs} +3 -3
  77. package/dist/{chunk-M26C37WI.mjs.map → chunk-DVAAKEMG.mjs.map} +1 -1
  78. package/dist/{chunk-6OA4VMSL.mjs → chunk-DXSSC3KO.mjs} +3 -3
  79. package/dist/{chunk-6OA4VMSL.mjs.map → chunk-DXSSC3KO.mjs.map} +1 -1
  80. package/dist/{chunk-4T3CV7DK.js → chunk-E7KNZVH7.js} +8 -8
  81. package/dist/{chunk-4T3CV7DK.js.map → chunk-E7KNZVH7.js.map} +1 -1
  82. package/dist/{chunk-LRSLYZXP.mjs → chunk-EEPOZWUL.mjs} +4 -4
  83. package/dist/{chunk-LRSLYZXP.mjs.map → chunk-EEPOZWUL.mjs.map} +1 -1
  84. package/dist/{chunk-A6PXU6IU.js → chunk-ESFDSHMC.js} +11 -11
  85. package/dist/{chunk-A6PXU6IU.js.map → chunk-ESFDSHMC.js.map} +1 -1
  86. package/dist/chunk-EYKLUW63.js +8 -0
  87. package/dist/{chunk-6PQJH6YR.js.map → chunk-EYKLUW63.js.map} +1 -1
  88. package/dist/{chunk-SBCG2ZLK.js → chunk-FDSMD2KO.js} +3 -3
  89. package/dist/{chunk-SBCG2ZLK.js.map → chunk-FDSMD2KO.js.map} +1 -1
  90. package/dist/{chunk-DFVWOIJE.js → chunk-FGA5FT7Y.js} +6 -6
  91. package/dist/{chunk-DFVWOIJE.js.map → chunk-FGA5FT7Y.js.map} +1 -1
  92. package/dist/{chunk-GWQTFMM2.js → chunk-H3365D42.js} +5 -5
  93. package/dist/{chunk-GWQTFMM2.js.map → chunk-H3365D42.js.map} +1 -1
  94. package/dist/{chunk-HCN3IKMW.mjs → chunk-HPGPOUHU.mjs} +3 -4
  95. package/dist/chunk-HPGPOUHU.mjs.map +1 -0
  96. package/dist/{chunk-RWUFJGZX.js → chunk-IBSHXE73.js} +11 -11
  97. package/dist/{chunk-RWUFJGZX.js.map → chunk-IBSHXE73.js.map} +1 -1
  98. package/dist/{chunk-F5RO6HVF.js → chunk-IFFDCOLU.js} +4 -4
  99. package/dist/{chunk-F5RO6HVF.js.map → chunk-IFFDCOLU.js.map} +1 -1
  100. package/dist/{chunk-HMTFTO5G.mjs → chunk-JONESD5P.mjs} +5 -5
  101. package/dist/{chunk-HMTFTO5G.mjs.map → chunk-JONESD5P.mjs.map} +1 -1
  102. package/dist/{chunk-YA2XM3KX.mjs → chunk-JSLFGJG4.mjs} +4 -4
  103. package/dist/{chunk-YA2XM3KX.mjs.map → chunk-JSLFGJG4.mjs.map} +1 -1
  104. package/dist/{chunk-EE7D6BSA.mjs → chunk-KTFZNSRY.mjs} +3 -3
  105. package/dist/{chunk-EE7D6BSA.mjs.map → chunk-KTFZNSRY.mjs.map} +1 -1
  106. package/dist/{chunk-YVP4JJFL.mjs → chunk-M6PJTITK.mjs} +4 -4
  107. package/dist/{chunk-YVP4JJFL.mjs.map → chunk-M6PJTITK.mjs.map} +1 -1
  108. package/dist/{chunk-ZNYYWNCH.js → chunk-MMQLQHZX.js} +3 -3
  109. package/dist/{chunk-ZNYYWNCH.js.map → chunk-MMQLQHZX.js.map} +1 -1
  110. package/dist/{chunk-NNQJUMFQ.js → chunk-N2LYSNZT.js} +9 -9
  111. package/dist/{chunk-NNQJUMFQ.js.map → chunk-N2LYSNZT.js.map} +1 -1
  112. package/dist/{chunk-2TSDPEMA.js → chunk-NMB47GMV.js} +7 -7
  113. package/dist/{chunk-2TSDPEMA.js.map → chunk-NMB47GMV.js.map} +1 -1
  114. package/dist/{chunk-S3RPDQA7.js → chunk-NQYO54EB.js} +3 -3
  115. package/dist/{chunk-S3RPDQA7.js.map → chunk-NQYO54EB.js.map} +1 -1
  116. package/dist/{chunk-LBGOC22N.mjs → chunk-NUHIODBD.mjs} +3 -3
  117. package/dist/{chunk-LBGOC22N.mjs.map → chunk-NUHIODBD.mjs.map} +1 -1
  118. package/dist/{chunk-UTSKVISR.js → chunk-PPY73K4P.js} +15 -15
  119. package/dist/{chunk-UTSKVISR.js.map → chunk-PPY73K4P.js.map} +1 -1
  120. package/dist/{chunk-NP6BRB6Z.mjs → chunk-V57WFNHY.mjs} +3 -3
  121. package/dist/{chunk-NP6BRB6Z.mjs.map → chunk-V57WFNHY.mjs.map} +1 -1
  122. package/dist/{chunk-T4ZA4RCC.mjs → chunk-VXVLZAR5.mjs} +3 -3
  123. package/dist/{chunk-T4ZA4RCC.mjs.map → chunk-VXVLZAR5.mjs.map} +1 -1
  124. package/dist/{chunk-A2ENMRTN.mjs → chunk-W2UA4UUZ.mjs} +3 -3
  125. package/dist/{chunk-A2ENMRTN.mjs.map → chunk-W2UA4UUZ.mjs.map} +1 -1
  126. package/dist/{chunk-377Z7GOV.mjs → chunk-WS3J5T3K.mjs} +4 -4
  127. package/dist/{chunk-377Z7GOV.mjs.map → chunk-WS3J5T3K.mjs.map} +1 -1
  128. package/dist/chunk-WT5WNIR2.mjs +6 -0
  129. package/dist/{chunk-GBMVAKX3.mjs.map → chunk-WT5WNIR2.mjs.map} +1 -1
  130. package/dist/{chunk-PBBARB5B.mjs → chunk-YPDOYPWJ.mjs} +3 -3
  131. package/dist/{chunk-PBBARB5B.mjs.map → chunk-YPDOYPWJ.mjs.map} +1 -1
  132. package/dist/{chunk-7SHTA3NT.mjs → chunk-Z3Q5UTZU.mjs} +8 -8
  133. package/dist/{chunk-7SHTA3NT.mjs.map → chunk-Z3Q5UTZU.mjs.map} +1 -1
  134. package/dist/{chunk-XUVD6I2E.mjs → chunk-ZIZBE6Y6.mjs} +3 -3
  135. package/dist/{chunk-XUVD6I2E.mjs.map → chunk-ZIZBE6Y6.mjs.map} +1 -1
  136. package/dist/cli/index.js +3 -3
  137. package/dist/cli/index.mjs +1 -1
  138. package/dist/client/index.js +4 -4
  139. package/dist/client/index.mjs +3 -3
  140. package/dist/commerce/index.js +57 -57
  141. package/dist/commerce/index.mjs +5 -5
  142. package/dist/engage/index.js +9 -9
  143. package/dist/engage/index.mjs +6 -6
  144. package/dist/fleet/index.js +8 -8
  145. package/dist/fleet/index.mjs +4 -4
  146. package/dist/forms/index.js +13 -13
  147. package/dist/forms/index.mjs +7 -7
  148. package/dist/forms/server.js +2 -2
  149. package/dist/forms/server.mjs +1 -1
  150. package/dist/images/index.js +11 -11
  151. package/dist/images/index.mjs +4 -4
  152. package/dist/index.js +63 -63
  153. package/dist/index.mjs +9 -9
  154. package/dist/layout/client.js +8 -8
  155. package/dist/layout/client.mjs +7 -7
  156. package/dist/layout/index.js +10 -10
  157. package/dist/layout/index.mjs +8 -8
  158. package/dist/llms/aiRobots.d.ts +22 -14
  159. package/dist/llms/aiRobots.d.ts.map +1 -1
  160. package/dist/llms/index.js +6 -6
  161. package/dist/llms/index.mjs +1 -1
  162. package/dist/maps/index.js +5 -5
  163. package/dist/maps/index.mjs +3 -3
  164. package/dist/robots/index.js +8 -8
  165. package/dist/robots/index.mjs +2 -2
  166. package/dist/search/index.js +4 -4
  167. package/dist/search/index.mjs +3 -3
  168. package/dist/seo/client.js +5 -5
  169. package/dist/seo/client.mjs +4 -4
  170. package/dist/seo/index.js +5 -5
  171. package/dist/seo/index.mjs +4 -4
  172. package/dist/server/index.js +3 -3
  173. package/dist/server/index.mjs +2 -2
  174. package/dist/shared/version.d.ts +1 -1
  175. package/dist/signal/index.js +11 -11
  176. package/dist/signal/index.mjs +2 -2
  177. package/dist/sync/index.js +17 -17
  178. package/dist/sync/index.mjs +4 -4
  179. package/package.json +1 -1
  180. package/dist/EngageWidget-LNTIXBFA.js +0 -21
  181. package/dist/EngageWidget-YM2JPXXJ.mjs +0 -12
  182. package/dist/ManagedForm-GOZNJ66K.mjs +0 -16
  183. package/dist/ManagedForm-MKSPZAI3.js +0 -25
  184. package/dist/SitemapSync-HRQ7KLP5.js +0 -18
  185. package/dist/SitemapSync-JIORN4Z5.mjs +0 -9
  186. package/dist/chunk-6PQJH6YR.js +0 -8
  187. package/dist/chunk-GBMVAKX3.mjs +0 -6
  188. package/dist/chunk-HCN3IKMW.mjs.map +0 -1
  189. package/dist/chunk-NRBITVDK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/signal/store.ts","../src/signal/SignalBridge.tsx"],"names":["useSyncExternalStore","dynamic","useState","useRef","useCallback","useMemo","useEffect","jsxs","Fragment","jsx"],"mappings":"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","file":"chunk-S3RPDQA7.js","sourcesContent":["'use client'\n\n/**\n * Signal store — module singleton behind useSignal().\n *\n * 4.0: SignalBridge no longer wraps page children in a React context; it\n * mounts as a childless sibling and publishes its API here. useSignal()\n * subscribes via useSyncExternalStore, so consumers work anywhere in the\n * tree — and BEFORE the bridge mounts, they get a buffering stub whose\n * trackEvent/trackOutcome queue calls that the bridge drains on publish.\n * getExperiment returns null pre-publish, identical to the pre-config\n * `loading` window consumers already handle.\n *\n * Behavior change vs 3.x (major): useSignal() no longer throws outside a\n * SignalBridge. With signal disabled it stays a bounded no-op stub — a\n * one-time debug warning fires instead of a crash.\n */\n\nimport { useSyncExternalStore } from 'react'\nimport type {\n SignalContextValue,\n SignalEvent,\n SignalOutcome,\n} from './types'\n\nconst pendingEvents: Partial<SignalEvent>[] = []\nconst pendingOutcomes: SignalOutcome[] = []\nconst MAX_PENDING = 100\nlet warnedNoBridge = false\n\n/** Frozen pre-bridge stub — stable reference (useSyncExternalStore requirement). */\nconst STUB: SignalContextValue = Object.freeze({\n config: null,\n loading: true,\n error: null,\n trackEvent: (event: Partial<SignalEvent>) => {\n if (pendingEvents.length < MAX_PENDING) pendingEvents.push(event)\n else if (!warnedNoBridge) {\n warnedNoBridge = true\n console.warn('[site-kit] Signal events are queuing but no SignalBridge has mounted — is signal enabled on SiteKitLayout?')\n }\n },\n trackOutcome: (outcome: SignalOutcome) => {\n if (pendingOutcomes.length < MAX_PENDING) pendingOutcomes.push(outcome)\n },\n getExperiment: () => null,\n refreshConfig: async () => {},\n})\n\nlet current: SignalContextValue = STUB\nconst listeners = new Set<() => void>()\n\nfunction emit() {\n for (const l of listeners) l()\n}\n\n/** Bridge-side: publish the live API (called whenever its value changes). */\nexport function publishSignal(value: SignalContextValue): void {\n const firstPublish = current === STUB\n current = value\n if (firstPublish) {\n // Drain calls made before the bridge mounted. The bridge's own trackEvent\n // buffers again internally until SignalCore loads, so nothing is lost.\n pendingEvents.splice(0).forEach(e => value.trackEvent(e))\n pendingOutcomes.splice(0).forEach(o => value.trackOutcome(o))\n }\n emit()\n}\n\n/** Bridge-side: reset on unmount so a remount starts clean (tests, HMR). */\nexport function resetSignal(): void {\n current = STUB\n emit()\n}\n\nfunction subscribe(onChange: () => void) {\n listeners.add(onChange)\n return () => listeners.delete(onChange)\n}\n\nconst getSnapshot = () => current\nconst getServerSnapshot = () => STUB\n\n/**\n * Access Signal (experiments, behavioral events) from anywhere in the tree.\n * No provider required — see module docs for pre-mount buffering semantics.\n */\nexport function useSignal(): SignalContextValue {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n","/**\n * @sonordev/site-kit/signal - SignalBridge\n *\n * Central coordination layer for Signal AI integration.\n *\n * Architecture (2026-07 perf release): SignalBridge is a tiny SSR-SAFE context shell. It\n * renders {children} immediately — children server-render and hydrate\n * normally, no ssr:false wrapper — and lazy-loads the heavy machinery\n * (SignalCore: config fetch, SSE streaming, experiment assignment, event\n * queue, behavior tracking) as a CHILDLESS sibling. The core registers its\n * imperative API into the shell on mount; `trackEvent`/`trackOutcome` calls\n * made before the core is ready are buffered and drained on registration.\n *\n * This removes the old failure mode where enabling `signal` de-opted the\n * whole route to client rendering (the same SSR bailout the analytics\n * sibling-mount fixed) — the #1 recommendation of the 2026-07 perf audit.\n *\n * The core is NOT idle-deferred: experiment variants must apply as early as\n * possible, so it starts loading on hydration.\n */\n\n'use client'\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport dynamic from 'next/dynamic'\nimport type { SignalCoreApi, SignalCoreState } from './SignalCore'\nimport type {\n SignalConfig,\n SignalContextValue,\n SignalBridgeProps,\n SignalEvent,\n SignalOutcome,\n ExperimentAssignment,\n} from './types'\n\n// Heavy machinery — loaded client-side only, never wraps content.\nimport { publishSignal, resetSignal, useSignal } from './store'\n\nconst LazySignalCore = dynamic(\n () => import('./SignalCore').then(m => ({ default: m.SignalCore })),\n { ssr: false },\n)\n\n// ============================================\n// Context\n// ============================================\n\n// 4.0: the context is gone. useSignal() reads the module store, so consumers\n// work anywhere in the tree and SignalBridge mounts as a childless sibling.\nexport { useSignal } from './store'\n\n// ============================================\n// SignalBridge Component (shell)\n// ============================================\n\nexport function SignalBridge({\n enabled = true,\n realtime = true,\n experiments = true,\n behaviorTracking = true,\n visitorId: externalVisitorId,\n sessionId: externalSessionId,\n pageMetadataRef,\n children,\n}: SignalBridgeProps) {\n const [config, setConfig] = useState<SignalConfig | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<Error | null>(null)\n\n const coreRef = useRef<SignalCoreApi | null>(null)\n // Calls made before the core chunk loads are buffered here and drained on\n // registration — consumers can call trackEvent/trackOutcome from first render.\n const pendingEventsRef = useRef<Partial<SignalEvent>[]>([])\n const pendingOutcomesRef = useRef<SignalOutcome[]>([])\n\n const handleState = useCallback((state: SignalCoreState) => {\n setConfig(state.config)\n setLoading(state.loading)\n setError(state.error)\n }, [])\n\n const handleRegister = useCallback((api: SignalCoreApi | null) => {\n coreRef.current = api\n if (api) {\n pendingEventsRef.current.splice(0).forEach(event => api.trackEvent(event))\n pendingOutcomesRef.current.splice(0).forEach(outcome => api.trackOutcome(outcome))\n }\n }, [])\n\n const trackEvent = useCallback((event: Partial<SignalEvent>) => {\n if (coreRef.current) {\n coreRef.current.trackEvent(event)\n } else {\n pendingEventsRef.current.push(event)\n }\n }, [])\n\n const trackOutcome = useCallback((outcome: SignalOutcome) => {\n if (coreRef.current) {\n coreRef.current.trackOutcome(outcome)\n } else {\n pendingOutcomesRef.current.push(outcome)\n }\n }, [])\n\n const getExperiment = useCallback((experimentId: string): ExperimentAssignment | null => {\n // null before the core loads — identical to the pre-config-fetch behavior\n // consumers already handle via `loading`.\n return coreRef.current?.getExperiment(experimentId) ?? null\n }, [])\n\n const refreshConfig = useCallback(async () => {\n await coreRef.current?.refreshConfig()\n }, [])\n\n const contextValue = useMemo<SignalContextValue>(() => ({\n config,\n loading,\n error,\n trackEvent,\n trackOutcome,\n getExperiment,\n refreshConfig,\n }), [config, loading, error, trackEvent, trackOutcome, getExperiment, refreshConfig])\n\n // Publish to the module store (drains pre-mount buffered calls on first\n // publish); reset on unmount so tests/HMR start clean.\n useEffect(() => {\n publishSignal(contextValue)\n }, [contextValue])\n useEffect(() => () => resetSignal(), [])\n\n return (\n <>\n {children}\n {enabled && (\n <LazySignalCore\n enabled={enabled}\n realtime={realtime}\n experiments={experiments}\n behaviorTracking={behaviorTracking}\n externalVisitorId={externalVisitorId}\n externalSessionId={externalSessionId}\n pageMetadataRef={pageMetadataRef}\n onRegister={handleRegister}\n onState={handleState}\n />\n )}\n </>\n )\n}\n\n// ============================================\n// Convenience Hooks\n// ============================================\n\n/**\n * Hook to access Signal config\n */\nexport function useSignalConfig(): SignalConfig | null {\n const { config } = useSignal()\n return config\n}\n\n/**\n * Hook for tracking events\n */\nexport function useSignalEvent() {\n const { trackEvent } = useSignal()\n return trackEvent\n}\n\n/**\n * Hook for tracking outcomes/conversions\n */\nexport function useSignalOutcome() {\n const { trackOutcome } = useSignal()\n return { trackOutcome }\n}\n\n/**\n * Hook for experiment assignment\n */\nexport function useSignalExperiment(experimentId: string): {\n assignment: ExperimentAssignment | null\n variant: string | null\n isControl: boolean\n} {\n const { getExperiment, config } = useSignal()\n const assignment = getExperiment(experimentId)\n\n // Check if experiment is running\n const experiment = config?.experiments?.find(e => e.id === experimentId)\n const isRunning = experiment?.status === 'running'\n\n return {\n assignment: isRunning ? assignment : null,\n variant: isRunning && assignment ? assignment.variant_key : null,\n isControl: !assignment || assignment.variant_key === 'control',\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/signal/store.ts","../src/signal/SignalBridge.tsx"],"names":["useSyncExternalStore","dynamic","useState","useRef","useCallback","useMemo","useEffect","jsxs","Fragment","jsx"],"mappings":"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","file":"chunk-NQYO54EB.js","sourcesContent":["'use client'\n\n/**\n * Signal store — module singleton behind useSignal().\n *\n * 4.0: SignalBridge no longer wraps page children in a React context; it\n * mounts as a childless sibling and publishes its API here. useSignal()\n * subscribes via useSyncExternalStore, so consumers work anywhere in the\n * tree — and BEFORE the bridge mounts, they get a buffering stub whose\n * trackEvent/trackOutcome queue calls that the bridge drains on publish.\n * getExperiment returns null pre-publish, identical to the pre-config\n * `loading` window consumers already handle.\n *\n * Behavior change vs 3.x (major): useSignal() no longer throws outside a\n * SignalBridge. With signal disabled it stays a bounded no-op stub — a\n * one-time debug warning fires instead of a crash.\n */\n\nimport { useSyncExternalStore } from 'react'\nimport type {\n SignalContextValue,\n SignalEvent,\n SignalOutcome,\n} from './types'\n\nconst pendingEvents: Partial<SignalEvent>[] = []\nconst pendingOutcomes: SignalOutcome[] = []\nconst MAX_PENDING = 100\nlet warnedNoBridge = false\n\n/** Frozen pre-bridge stub — stable reference (useSyncExternalStore requirement). */\nconst STUB: SignalContextValue = Object.freeze({\n config: null,\n loading: true,\n error: null,\n trackEvent: (event: Partial<SignalEvent>) => {\n if (pendingEvents.length < MAX_PENDING) pendingEvents.push(event)\n else if (!warnedNoBridge) {\n warnedNoBridge = true\n console.warn('[site-kit] Signal events are queuing but no SignalBridge has mounted — is signal enabled on SiteKitLayout?')\n }\n },\n trackOutcome: (outcome: SignalOutcome) => {\n if (pendingOutcomes.length < MAX_PENDING) pendingOutcomes.push(outcome)\n },\n getExperiment: () => null,\n refreshConfig: async () => {},\n})\n\nlet current: SignalContextValue = STUB\nconst listeners = new Set<() => void>()\n\nfunction emit() {\n for (const l of listeners) l()\n}\n\n/** Bridge-side: publish the live API (called whenever its value changes). */\nexport function publishSignal(value: SignalContextValue): void {\n const firstPublish = current === STUB\n current = value\n if (firstPublish) {\n // Drain calls made before the bridge mounted. The bridge's own trackEvent\n // buffers again internally until SignalCore loads, so nothing is lost.\n pendingEvents.splice(0).forEach(e => value.trackEvent(e))\n pendingOutcomes.splice(0).forEach(o => value.trackOutcome(o))\n }\n emit()\n}\n\n/** Bridge-side: reset on unmount so a remount starts clean (tests, HMR). */\nexport function resetSignal(): void {\n current = STUB\n emit()\n}\n\nfunction subscribe(onChange: () => void) {\n listeners.add(onChange)\n return () => listeners.delete(onChange)\n}\n\nconst getSnapshot = () => current\nconst getServerSnapshot = () => STUB\n\n/**\n * Access Signal (experiments, behavioral events) from anywhere in the tree.\n * No provider required — see module docs for pre-mount buffering semantics.\n */\nexport function useSignal(): SignalContextValue {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n","/**\n * @sonordev/site-kit/signal - SignalBridge\n *\n * Central coordination layer for Signal AI integration.\n *\n * Architecture (2026-07 perf release): SignalBridge is a tiny SSR-SAFE context shell. It\n * renders {children} immediately — children server-render and hydrate\n * normally, no ssr:false wrapper — and lazy-loads the heavy machinery\n * (SignalCore: config fetch, SSE streaming, experiment assignment, event\n * queue, behavior tracking) as a CHILDLESS sibling. The core registers its\n * imperative API into the shell on mount; `trackEvent`/`trackOutcome` calls\n * made before the core is ready are buffered and drained on registration.\n *\n * This removes the old failure mode where enabling `signal` de-opted the\n * whole route to client rendering (the same SSR bailout the analytics\n * sibling-mount fixed) — the #1 recommendation of the 2026-07 perf audit.\n *\n * The core is NOT idle-deferred: experiment variants must apply as early as\n * possible, so it starts loading on hydration.\n */\n\n'use client'\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport dynamic from 'next/dynamic'\nimport type { SignalCoreApi, SignalCoreState } from './SignalCore'\nimport type {\n SignalConfig,\n SignalContextValue,\n SignalBridgeProps,\n SignalEvent,\n SignalOutcome,\n ExperimentAssignment,\n} from './types'\n\n// Heavy machinery — loaded client-side only, never wraps content.\nimport { publishSignal, resetSignal, useSignal } from './store'\n\nconst LazySignalCore = dynamic(\n () => import('./SignalCore').then(m => ({ default: m.SignalCore })),\n { ssr: false },\n)\n\n// ============================================\n// Context\n// ============================================\n\n// 4.0: the context is gone. useSignal() reads the module store, so consumers\n// work anywhere in the tree and SignalBridge mounts as a childless sibling.\nexport { useSignal } from './store'\n\n// ============================================\n// SignalBridge Component (shell)\n// ============================================\n\nexport function SignalBridge({\n enabled = true,\n realtime = true,\n experiments = true,\n behaviorTracking = true,\n visitorId: externalVisitorId,\n sessionId: externalSessionId,\n pageMetadataRef,\n children,\n}: SignalBridgeProps) {\n const [config, setConfig] = useState<SignalConfig | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<Error | null>(null)\n\n const coreRef = useRef<SignalCoreApi | null>(null)\n // Calls made before the core chunk loads are buffered here and drained on\n // registration — consumers can call trackEvent/trackOutcome from first render.\n const pendingEventsRef = useRef<Partial<SignalEvent>[]>([])\n const pendingOutcomesRef = useRef<SignalOutcome[]>([])\n\n const handleState = useCallback((state: SignalCoreState) => {\n setConfig(state.config)\n setLoading(state.loading)\n setError(state.error)\n }, [])\n\n const handleRegister = useCallback((api: SignalCoreApi | null) => {\n coreRef.current = api\n if (api) {\n pendingEventsRef.current.splice(0).forEach(event => api.trackEvent(event))\n pendingOutcomesRef.current.splice(0).forEach(outcome => api.trackOutcome(outcome))\n }\n }, [])\n\n const trackEvent = useCallback((event: Partial<SignalEvent>) => {\n if (coreRef.current) {\n coreRef.current.trackEvent(event)\n } else {\n pendingEventsRef.current.push(event)\n }\n }, [])\n\n const trackOutcome = useCallback((outcome: SignalOutcome) => {\n if (coreRef.current) {\n coreRef.current.trackOutcome(outcome)\n } else {\n pendingOutcomesRef.current.push(outcome)\n }\n }, [])\n\n const getExperiment = useCallback((experimentId: string): ExperimentAssignment | null => {\n // null before the core loads — identical to the pre-config-fetch behavior\n // consumers already handle via `loading`.\n return coreRef.current?.getExperiment(experimentId) ?? null\n }, [])\n\n const refreshConfig = useCallback(async () => {\n await coreRef.current?.refreshConfig()\n }, [])\n\n const contextValue = useMemo<SignalContextValue>(() => ({\n config,\n loading,\n error,\n trackEvent,\n trackOutcome,\n getExperiment,\n refreshConfig,\n }), [config, loading, error, trackEvent, trackOutcome, getExperiment, refreshConfig])\n\n // Publish to the module store (drains pre-mount buffered calls on first\n // publish); reset on unmount so tests/HMR start clean.\n useEffect(() => {\n publishSignal(contextValue)\n }, [contextValue])\n useEffect(() => () => resetSignal(), [])\n\n return (\n <>\n {children}\n {enabled && (\n <LazySignalCore\n enabled={enabled}\n realtime={realtime}\n experiments={experiments}\n behaviorTracking={behaviorTracking}\n externalVisitorId={externalVisitorId}\n externalSessionId={externalSessionId}\n pageMetadataRef={pageMetadataRef}\n onRegister={handleRegister}\n onState={handleState}\n />\n )}\n </>\n )\n}\n\n// ============================================\n// Convenience Hooks\n// ============================================\n\n/**\n * Hook to access Signal config\n */\nexport function useSignalConfig(): SignalConfig | null {\n const { config } = useSignal()\n return config\n}\n\n/**\n * Hook for tracking events\n */\nexport function useSignalEvent() {\n const { trackEvent } = useSignal()\n return trackEvent\n}\n\n/**\n * Hook for tracking outcomes/conversions\n */\nexport function useSignalOutcome() {\n const { trackOutcome } = useSignal()\n return { trackOutcome }\n}\n\n/**\n * Hook for experiment assignment\n */\nexport function useSignalExperiment(experimentId: string): {\n assignment: ExperimentAssignment | null\n variant: string | null\n isControl: boolean\n} {\n const { getExperiment, config } = useSignal()\n const assignment = getExperiment(experimentId)\n\n // Check if experiment is running\n const experiment = config?.experiments?.find(e => e.id === experimentId)\n const isRunning = experiment?.status === 'running'\n\n return {\n assignment: isRunning ? assignment : null,\n variant: isRunning && assignment ? assignment.variant_key : null,\n isControl: !assignment || assignment.variant_key === 'control',\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { resolveSiteHost } from './chunk-KZVSB5WE.mjs';
2
- import { configureSiteCredential, currentCredential } from './chunk-EE7J66MJ.mjs';
2
+ import { configureSiteCredential, currentCredential } from './chunk-562DSBYR.mjs';
3
3
 
4
4
  // src/shared/publishCredential.ts
5
5
  function publishSiteCredential({
@@ -17,5 +17,5 @@ function publishSiteCredential({
17
17
  }
18
18
 
19
19
  export { publishSiteCredential };
20
- //# sourceMappingURL=chunk-LBGOC22N.mjs.map
21
- //# sourceMappingURL=chunk-LBGOC22N.mjs.map
20
+ //# sourceMappingURL=chunk-NUHIODBD.mjs.map
21
+ //# sourceMappingURL=chunk-NUHIODBD.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shared/publishCredential.ts"],"names":[],"mappings":";;;;AA0DO,SAAS,qBAAA,CAAsB;AAAA,EACpC,MAAA;AAAA,EACA,MAAA,GAAS,sBAAA;AAAA,EACT,IAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,EAAuC;AACrC,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAKnC,EAAA,uBAAA,CAAwB,EAAE,UAAA,EAAY,MAAA,EAAQ,MAAA,EAAQ,CAAA;AACrD,EAAC,OAAe,oBAAA,GAAuB,MAAA;AACvC,EAAC,MAAA,CAAe,oBAAA,GAAuB,iBAAA,CAAkB,MAAM,CAAA;AAC/D,EAAC,OAAe,kBAAA,GAAqB,KAAA;AACrC,EAAC,MAAA,CAAe,iBAAA,GAAoB,IAAA,IAAQ,eAAA,EAAgB;AAC/D","file":"chunk-LBGOC22N.mjs","sourcesContent":["/**\n * @sonordev/site-kit shared — Client credential + window-global publishing\n *\n * SINGLE SOURCE OF TRUTH for seeding the browser-side token manager and the\n * `window.__SITE_KIT_*` globals that every client module reads. Used by:\n *\n * - `SiteKitClientProviders` (core `SiteKitLayout`)\n * - `SiteKitCredential` (`@sonordev/site-kit/client`) — the public component\n * for layouts that are NOT core `SiteKitLayout`, e.g.\n * `@sonordev/agency-site-kit`'s `AgencySiteKitLayout`.\n *\n * Do not re-fork this. Before it existed, agency sites hand-rolled their own\n * \"set the globals on mount\" component (upforge's `UptradeSiteKitInit`), and\n * because those copies had no access to the token manager they published the\n * RAW `sonor_` key into the client bundle — the exact exposure the mint exists\n * to prevent. Any layout that puts a credential on `window` goes through here.\n *\n * Client-safe: no `server-only` guard, SSR-safe (every write is window-gated).\n * The minting half is server-only and lives in `../server/mint-site-token`.\n */\n// Leaf modules, NOT '../sites/contract' — see sites/normalize.ts. Importing the\n// full contract here shipped its JSON schema to every browser that loads a\n// credential-publishing entry.\nimport { resolveSiteHost } from '../sites/resolve'\nimport { configureSiteCredential, currentCredential } from './siteToken'\n\n/**\n * Re-exported so the client-side callers below and every existing importer keep\n * a single name for this. The implementation lives in `../sites/resolve` — the\n * ONE resolver shared by the browser (this file) and the build-time sitemap /\n * llms.txt path, so both tag the same host.\n */\nexport { resolveSiteHost }\n\nexport interface PublishSiteCredentialOptions {\n /**\n * The credential the layout minted server-side. In 3.2+ this is a short-lived\n * `st1.` token that `sonorFetch` refreshes transparently. A raw `sonor_` key\n * still works (2.x kit, or the mint-failed fallback) but should never be\n * routed here from a client component — it would ship the secret to the\n * browser.\n */\n apiKey?: string\n apiUrl?: string\n /** Pre-resolved sub-site host. Omit to resolve via `resolveSiteHost`. */\n site?: string\n debug?: boolean\n}\n\n/**\n * Seed the token manager and publish the `window.__SITE_KIT_*` globals.\n *\n * Called during RENDER, not in an effect: client modules read these globals in\n * their own mount effects, and effects run child-first, so an effect-based\n * publish would land after the modules that need it.\n *\n * No-op on the server.\n */\nexport function publishSiteCredential({\n apiKey,\n apiUrl = 'https://api.sonor.io',\n site,\n debug = false,\n}: PublishSiteCredentialOptions): void {\n if (typeof window === 'undefined') return\n\n // Seed the client token manager. The window global is set to the freshest\n // token held — a prior page this session may already have refreshed past the\n // seed the layout injected. In raw-key mode this is a passthrough.\n configureSiteCredential({ credential: apiKey, apiUrl })\n ;(window as any).__SITE_KIT_API_URL__ = apiUrl\n ;(window as any).__SITE_KIT_API_KEY__ = currentCredential(apiKey)\n ;(window as any).__SITE_KIT_DEBUG__ = debug\n ;(window as any).__SITE_KIT_SITE__ = site ?? resolveSiteHost()\n}\n"]}
1
+ {"version":3,"sources":["../src/shared/publishCredential.ts"],"names":[],"mappings":";;;;AA0DO,SAAS,qBAAA,CAAsB;AAAA,EACpC,MAAA;AAAA,EACA,MAAA,GAAS,sBAAA;AAAA,EACT,IAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,EAAuC;AACrC,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAKnC,EAAA,uBAAA,CAAwB,EAAE,UAAA,EAAY,MAAA,EAAQ,MAAA,EAAQ,CAAA;AACrD,EAAC,OAAe,oBAAA,GAAuB,MAAA;AACvC,EAAC,MAAA,CAAe,oBAAA,GAAuB,iBAAA,CAAkB,MAAM,CAAA;AAC/D,EAAC,OAAe,kBAAA,GAAqB,KAAA;AACrC,EAAC,MAAA,CAAe,iBAAA,GAAoB,IAAA,IAAQ,eAAA,EAAgB;AAC/D","file":"chunk-NUHIODBD.mjs","sourcesContent":["/**\n * @sonordev/site-kit shared — Client credential + window-global publishing\n *\n * SINGLE SOURCE OF TRUTH for seeding the browser-side token manager and the\n * `window.__SITE_KIT_*` globals that every client module reads. Used by:\n *\n * - `SiteKitClientProviders` (core `SiteKitLayout`)\n * - `SiteKitCredential` (`@sonordev/site-kit/client`) — the public component\n * for layouts that are NOT core `SiteKitLayout`, e.g.\n * `@sonordev/agency-site-kit`'s `AgencySiteKitLayout`.\n *\n * Do not re-fork this. Before it existed, agency sites hand-rolled their own\n * \"set the globals on mount\" component (upforge's `UptradeSiteKitInit`), and\n * because those copies had no access to the token manager they published the\n * RAW `sonor_` key into the client bundle — the exact exposure the mint exists\n * to prevent. Any layout that puts a credential on `window` goes through here.\n *\n * Client-safe: no `server-only` guard, SSR-safe (every write is window-gated).\n * The minting half is server-only and lives in `../server/mint-site-token`.\n */\n// Leaf modules, NOT '../sites/contract' — see sites/normalize.ts. Importing the\n// full contract here shipped its JSON schema to every browser that loads a\n// credential-publishing entry.\nimport { resolveSiteHost } from '../sites/resolve'\nimport { configureSiteCredential, currentCredential } from './siteToken'\n\n/**\n * Re-exported so the client-side callers below and every existing importer keep\n * a single name for this. The implementation lives in `../sites/resolve` — the\n * ONE resolver shared by the browser (this file) and the build-time sitemap /\n * llms.txt path, so both tag the same host.\n */\nexport { resolveSiteHost }\n\nexport interface PublishSiteCredentialOptions {\n /**\n * The credential the layout minted server-side. In 3.2+ this is a short-lived\n * `st1.` token that `sonorFetch` refreshes transparently. A raw `sonor_` key\n * still works (2.x kit, or the mint-failed fallback) but should never be\n * routed here from a client component — it would ship the secret to the\n * browser.\n */\n apiKey?: string\n apiUrl?: string\n /** Pre-resolved sub-site host. Omit to resolve via `resolveSiteHost`. */\n site?: string\n debug?: boolean\n}\n\n/**\n * Seed the token manager and publish the `window.__SITE_KIT_*` globals.\n *\n * Called during RENDER, not in an effect: client modules read these globals in\n * their own mount effects, and effects run child-first, so an effect-based\n * publish would land after the modules that need it.\n *\n * No-op on the server.\n */\nexport function publishSiteCredential({\n apiKey,\n apiUrl = 'https://api.sonor.io',\n site,\n debug = false,\n}: PublishSiteCredentialOptions): void {\n if (typeof window === 'undefined') return\n\n // Seed the client token manager. The window global is set to the freshest\n // token held — a prior page this session may already have refreshed past the\n // seed the layout injected. In raw-key mode this is a passthrough.\n configureSiteCredential({ credential: apiKey, apiUrl })\n ;(window as any).__SITE_KIT_API_URL__ = apiUrl\n ;(window as any).__SITE_KIT_API_KEY__ = currentCredential(apiKey)\n ;(window as any).__SITE_KIT_DEBUG__ = debug\n ;(window as any).__SITE_KIT_SITE__ = site ?? resolveSiteHost()\n}\n"]}
@@ -3,9 +3,9 @@
3
3
 
4
4
  var chunkESP5RMB7_js = require('./chunk-ESP5RMB7.js');
5
5
  var chunkNBOBOYMT_js = require('./chunk-NBOBOYMT.js');
6
- var chunkNNQJUMFQ_js = require('./chunk-NNQJUMFQ.js');
6
+ var chunkN2LYSNZT_js = require('./chunk-N2LYSNZT.js');
7
7
  var chunkM2N7NY3V_js = require('./chunk-M2N7NY3V.js');
8
- var chunkLPUP2TSV_js = require('./chunk-LPUP2TSV.js');
8
+ var chunkCZMZEUB6_js = require('./chunk-CZMZEUB6.js');
9
9
  var react = require('react');
10
10
  var ReactMarkdown = require('react-markdown');
11
11
  var jsxRuntime = require('react/jsx-runtime');
@@ -92,7 +92,7 @@ function InlineManagedForm({ slug, prefill, primaryColor, primaryRgb }) {
92
92
  submit,
93
93
  isSubmitting,
94
94
  isComplete
95
- } = chunkNNQJUMFQ_js.useForm(slug, { initialValues: prefill || {} });
95
+ } = chunkN2LYSNZT_js.useForm(slug, { initialValues: prefill || {} });
96
96
  const cardStyle = {
97
97
  marginTop: 8,
98
98
  padding: 12,
@@ -441,7 +441,7 @@ function ChatWidget(props) {
441
441
  const { apiKey } = getApiConfig();
442
442
  if (!apiKey) return;
443
443
  let cancelled = false;
444
- chunkLPUP2TSV_js.sonorFetch(`${baseUrl}/api/public/seo/project-info`, {}, { apiKey, retries: 0 }).then((res) => res.ok ? res.json() : null).then((data) => {
444
+ chunkCZMZEUB6_js.sonorFetch(`${baseUrl}/api/public/seo/project-info`, {}, { apiKey, retries: 0 }).then((res) => res.ok ? res.json() : null).then((data) => {
445
445
  if (cancelled || !data?.valid || !data?.project_id) return;
446
446
  setResolvedProjectId(data.project_id);
447
447
  }).catch(() => {
@@ -458,7 +458,7 @@ function ChatWidget(props) {
458
458
  return;
459
459
  }
460
460
  let cancelled = false;
461
- chunkLPUP2TSV_js.sonorFetch(`${baseUrl}/engage/widget/config?projectId=${projectId}`, {}, { apiKey, retries: 0 }).then((res) => res.ok ? res.json() : null).then((json) => {
461
+ chunkCZMZEUB6_js.sonorFetch(`${baseUrl}/engage/widget/config?projectId=${projectId}`, {}, { apiKey, retries: 0 }).then((res) => res.ok ? res.json() : null).then((json) => {
462
462
  if (!cancelled) setWidgetConfig(json?.data ?? null);
463
463
  }).catch((error) => {
464
464
  if (process.env.NODE_ENV === "development") {
@@ -546,7 +546,7 @@ function EchoChat({ projectId, widgetConfig, config, apiUrl: propApiUrl, signalU
546
546
  const apiKey = ensureApiKey();
547
547
  if (!apiKey) return null;
548
548
  try {
549
- const response = await chunkLPUP2TSV_js.sonorFetch(`${baseUrl}/engage/widget/availability?projectId=${projectId}`, {}, { apiKey, retries: 0 });
549
+ const response = await chunkCZMZEUB6_js.sonorFetch(`${baseUrl}/engage/widget/availability?projectId=${projectId}`, {}, { apiKey, retries: 0 });
550
550
  if (response.ok) {
551
551
  const { data } = await response.json();
552
552
  setAvailability(data);
@@ -563,7 +563,7 @@ function EchoChat({ projectId, widgetConfig, config, apiUrl: propApiUrl, signalU
563
563
  const apiKey = ensureApiKey();
564
564
  if (!apiKey) return null;
565
565
  try {
566
- const response = await chunkLPUP2TSV_js.sonorFetch(`${baseUrl}/engage/widget/session`, {
566
+ const response = await chunkCZMZEUB6_js.sonorFetch(`${baseUrl}/engage/widget/session`, {
567
567
  method: "POST",
568
568
  headers: { "Content-Type": "application/json" },
569
569
  body: JSON.stringify({
@@ -624,7 +624,7 @@ function EchoChat({ projectId, widgetConfig, config, apiUrl: propApiUrl, signalU
624
624
  pageUrl: typeof window !== "undefined" ? window.location.href : void 0,
625
625
  ...siteContext ? { siteContext } : {}
626
626
  };
627
- const res = await chunkLPUP2TSV_js.sonorFetch(url, {
627
+ const res = await chunkCZMZEUB6_js.sonorFetch(url, {
628
628
  method: "POST",
629
629
  headers: {
630
630
  "Content-Type": "application/json"
@@ -727,7 +727,7 @@ function EchoChat({ projectId, widgetConfig, config, apiUrl: propApiUrl, signalU
727
727
  if (currentSessionId) {
728
728
  const apiKey = ensureApiKey();
729
729
  if (apiKey) {
730
- chunkLPUP2TSV_js.sonorFetch(`${baseUrl}/engage/widget/messages?sessionId=${currentSessionId}`, {}, { apiKey, retries: 0 }).then((res) => res.ok ? res.json() : null).then((json) => {
730
+ chunkCZMZEUB6_js.sonorFetch(`${baseUrl}/engage/widget/messages?sessionId=${currentSessionId}`, {}, { apiKey, retries: 0 }).then((res) => res.ok ? res.json() : null).then((json) => {
731
731
  const data = json?.data ?? json;
732
732
  if (Array.isArray(data) && data.length) {
733
733
  setMessages((prev) => {
@@ -790,7 +790,7 @@ function EchoChat({ projectId, widgetConfig, config, apiUrl: propApiUrl, signalU
790
790
  try {
791
791
  const apiKey = ensureApiKey();
792
792
  if (!apiKey) return;
793
- const response = await chunkLPUP2TSV_js.sonorFetch(`${baseUrl}/engage/widget/messages?sessionId=${currentSessionId}`, {}, { apiKey, retries: 0 });
793
+ const response = await chunkCZMZEUB6_js.sonorFetch(`${baseUrl}/engage/widget/messages?sessionId=${currentSessionId}`, {}, { apiKey, retries: 0 });
794
794
  if (response.ok) {
795
795
  const { data } = await response.json();
796
796
  setMessages((prev) => {
@@ -920,7 +920,7 @@ function EchoChat({ projectId, widgetConfig, config, apiUrl: propApiUrl, signalU
920
920
  form.append("file", file);
921
921
  form.append("sessionId", sessionId);
922
922
  form.append("visitorId", visitorId);
923
- const res = await chunkLPUP2TSV_js.sonorFetch(`${baseUrl}/engage/widget/upload`, {
923
+ const res = await chunkCZMZEUB6_js.sonorFetch(`${baseUrl}/engage/widget/upload`, {
924
924
  method: "POST",
925
925
  body: form
926
926
  }, { apiKey, retries: 0 });
@@ -1020,7 +1020,7 @@ function EchoChat({ projectId, widgetConfig, config, apiUrl: propApiUrl, signalU
1020
1020
  if (!apiKey) return;
1021
1021
  setCheckingHandoff(true);
1022
1022
  try {
1023
- const res = await chunkLPUP2TSV_js.sonorFetch(`${baseUrl}/engage/widget/handoff`, {
1023
+ const res = await chunkCZMZEUB6_js.sonorFetch(`${baseUrl}/engage/widget/handoff`, {
1024
1024
  method: "POST",
1025
1025
  headers: { "Content-Type": "application/json" },
1026
1026
  body: JSON.stringify({ sessionId })
@@ -1059,7 +1059,7 @@ function EchoChat({ projectId, widgetConfig, config, apiUrl: propApiUrl, signalU
1059
1059
  setIsLoading(true);
1060
1060
  setOfflineError(null);
1061
1061
  try {
1062
- const response = await chunkLPUP2TSV_js.sonorFetch(`${baseUrl}/engage/widget/offline-form`, {
1062
+ const response = await chunkCZMZEUB6_js.sonorFetch(`${baseUrl}/engage/widget/offline-form`, {
1063
1063
  method: "POST",
1064
1064
  headers: { "Content-Type": "application/json" },
1065
1065
  body: JSON.stringify({
@@ -1673,5 +1673,5 @@ function EchoChat({ projectId, widgetConfig, config, apiUrl: propApiUrl, signalU
1673
1673
  exports.ChatWidget = ChatWidget;
1674
1674
  exports.EchoChat = EchoChat;
1675
1675
  exports.isChatEnabled = isChatEnabled;
1676
- //# sourceMappingURL=chunk-UTSKVISR.js.map
1677
- //# sourceMappingURL=chunk-UTSKVISR.js.map
1676
+ //# sourceMappingURL=chunk-PPY73K4P.js.map
1677
+ //# sourceMappingURL=chunk-PPY73K4P.js.map