@flamingo-stack/openframe-frontend-core 0.0.690 → 0.0.691-2504.7650.1

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 (149) hide show
  1. package/dist/{chunk-22RSJ57Z.js → chunk-2YVTGPM7.js} +2 -2
  2. package/dist/{chunk-V5NOURSR.js → chunk-4HZXOQRM.js} +5 -5
  3. package/dist/{chunk-MDYTAKJ5.cjs → chunk-4N2JOPAQ.cjs} +22 -22
  4. package/dist/{chunk-MDYTAKJ5.cjs.map → chunk-4N2JOPAQ.cjs.map} +1 -1
  5. package/dist/{chunk-QNWQQ4RT.cjs → chunk-53O6PQ3F.cjs} +7 -7
  6. package/dist/{chunk-QNWQQ4RT.cjs.map → chunk-53O6PQ3F.cjs.map} +1 -1
  7. package/dist/{chunk-X4WBGDNW.cjs → chunk-5N2ZSB42.cjs} +18 -18
  8. package/dist/{chunk-X4WBGDNW.cjs.map → chunk-5N2ZSB42.cjs.map} +1 -1
  9. package/dist/{chunk-XRSJER2B.js → chunk-6Z26ZMR4.js} +4 -4
  10. package/dist/{chunk-HLEXYTOE.js → chunk-7EPGJOKN.js} +4 -4
  11. package/dist/{chunk-DOUG4UEZ.js → chunk-7WYWPELF.js} +11 -11
  12. package/dist/{chunk-ZBQZJAC7.cjs → chunk-BXAGR3PO.cjs} +7 -7
  13. package/dist/chunk-BXAGR3PO.cjs.map +1 -0
  14. package/dist/{chunk-QUGV2GT3.cjs → chunk-BXE2RZEV.cjs} +34 -34
  15. package/dist/{chunk-QUGV2GT3.cjs.map → chunk-BXE2RZEV.cjs.map} +1 -1
  16. package/dist/{chunk-DLRE5Y3G.js → chunk-C2SVJVEB.js} +2 -2
  17. package/dist/{chunk-OC3QH5WG.js → chunk-CMYDGVTZ.js} +2 -2
  18. package/dist/{chunk-VLWUKFQE.cjs → chunk-CWXRZVDI.cjs} +751 -710
  19. package/dist/chunk-CWXRZVDI.cjs.map +1 -0
  20. package/dist/{chunk-2PQKZWWP.js → chunk-DC3G4XGP.js} +6 -6
  21. package/dist/{chunk-KZXKT5AX.cjs → chunk-DDWLF2JV.cjs} +14 -14
  22. package/dist/{chunk-KZXKT5AX.cjs.map → chunk-DDWLF2JV.cjs.map} +1 -1
  23. package/dist/{chunk-NMXL34Z2.cjs → chunk-DVSPRY2V.cjs} +3 -3
  24. package/dist/{chunk-NMXL34Z2.cjs.map → chunk-DVSPRY2V.cjs.map} +1 -1
  25. package/dist/{chunk-OQVHGPHA.js → chunk-DZMDG7PC.js} +3 -3
  26. package/dist/{chunk-2MGTNYHW.cjs → chunk-ESFPY5FF.cjs} +100 -100
  27. package/dist/{chunk-2MGTNYHW.cjs.map → chunk-ESFPY5FF.cjs.map} +1 -1
  28. package/dist/{chunk-S5M5SEW2.js → chunk-FNMQ2J44.js} +5 -5
  29. package/dist/{chunk-UAKWSR3U.js → chunk-GDZ7IC5B.js} +2 -2
  30. package/dist/{chunk-OD2WMUAO.cjs → chunk-GZRU2A4L.cjs} +197 -197
  31. package/dist/{chunk-OD2WMUAO.cjs.map → chunk-GZRU2A4L.cjs.map} +1 -1
  32. package/dist/{chunk-3ZAIHRQH.cjs → chunk-H54RDLVC.cjs} +35 -35
  33. package/dist/{chunk-3ZAIHRQH.cjs.map → chunk-H54RDLVC.cjs.map} +1 -1
  34. package/dist/{chunk-Q76YVNCQ.js → chunk-HM7ZGABI.js} +2 -2
  35. package/dist/{chunk-YCKGUQA2.cjs → chunk-I27PWVWE.cjs} +17 -12
  36. package/dist/chunk-I27PWVWE.cjs.map +1 -0
  37. package/dist/{chunk-25X43LSD.js → chunk-JSG7WZKV.js} +4 -4
  38. package/dist/{chunk-AIXPQT3G.js → chunk-KMW2PXBU.js} +52 -11
  39. package/dist/chunk-KMW2PXBU.js.map +1 -0
  40. package/dist/{chunk-TBJWPNHU.js → chunk-KVDLL4LU.js} +4 -4
  41. package/dist/chunk-KVDLL4LU.js.map +1 -0
  42. package/dist/{chunk-54X75QTC.cjs → chunk-LCENRN2N.cjs} +14 -14
  43. package/dist/{chunk-54X75QTC.cjs.map → chunk-LCENRN2N.cjs.map} +1 -1
  44. package/dist/{chunk-BJHM2OEY.cjs → chunk-LNKLB7GM.cjs} +17 -17
  45. package/dist/{chunk-BJHM2OEY.cjs.map → chunk-LNKLB7GM.cjs.map} +1 -1
  46. package/dist/{chunk-JGVJRUGB.cjs → chunk-MIZU2OTO.cjs} +4 -4
  47. package/dist/{chunk-JGVJRUGB.cjs.map → chunk-MIZU2OTO.cjs.map} +1 -1
  48. package/dist/{chunk-TSENCZUL.js → chunk-MJI5GVT7.js} +11 -11
  49. package/dist/{chunk-BOM6MMWB.cjs → chunk-N3526CTH.cjs} +3 -3
  50. package/dist/{chunk-BOM6MMWB.cjs.map → chunk-N3526CTH.cjs.map} +1 -1
  51. package/dist/{chunk-D7BFS7N6.cjs → chunk-N4S7RBUM.cjs} +3 -3
  52. package/dist/{chunk-D7BFS7N6.cjs.map → chunk-N4S7RBUM.cjs.map} +1 -1
  53. package/dist/{chunk-4HBYEZ3I.cjs → chunk-SA4KQCNB.cjs} +82 -82
  54. package/dist/{chunk-4HBYEZ3I.cjs.map → chunk-SA4KQCNB.cjs.map} +1 -1
  55. package/dist/{chunk-RF2EYX3B.js → chunk-SC44YJCF.js} +2 -2
  56. package/dist/{chunk-2OD2PPNO.cjs → chunk-SDORFSFK.cjs} +37 -37
  57. package/dist/{chunk-2OD2PPNO.cjs.map → chunk-SDORFSFK.cjs.map} +1 -1
  58. package/dist/{chunk-42RQ4NIL.js → chunk-TSNGVWQO.js} +6 -6
  59. package/dist/{chunk-DMXI5D2Q.cjs → chunk-USKQURNF.cjs} +3 -3
  60. package/dist/{chunk-DMXI5D2Q.cjs.map → chunk-USKQURNF.cjs.map} +1 -1
  61. package/dist/{chunk-2KILTCND.js → chunk-UVUNBXS6.js} +6 -1
  62. package/dist/chunk-UVUNBXS6.js.map +1 -0
  63. package/dist/{chunk-5CBQBTGN.cjs → chunk-WZYIAKIH.cjs} +7 -7
  64. package/dist/{chunk-5CBQBTGN.cjs.map → chunk-WZYIAKIH.cjs.map} +1 -1
  65. package/dist/{chunk-2V4KPBNZ.js → chunk-XAOAYDGR.js} +3 -3
  66. package/dist/{chunk-U4OJCJTH.js → chunk-XBYF4SGD.js} +4 -4
  67. package/dist/{chunk-FCQR6VY4.cjs → chunk-Y3BC7TOJ.cjs} +26 -26
  68. package/dist/{chunk-FCQR6VY4.cjs.map → chunk-Y3BC7TOJ.cjs.map} +1 -1
  69. package/dist/{chunk-P27OGSQL.cjs → chunk-Y3Q76RAA.cjs} +37 -37
  70. package/dist/{chunk-P27OGSQL.cjs.map → chunk-Y3Q76RAA.cjs.map} +1 -1
  71. package/dist/{chunk-4BUPMSLY.js → chunk-Y7ZEVTLC.js} +3 -3
  72. package/dist/{chunk-Z622ACFD.js → chunk-Y7ZQZOE6.js} +5 -5
  73. package/dist/{chunk-5A3WSWZD.js → chunk-Z5FHXCXF.js} +8 -8
  74. package/dist/{chunk-UFXV64WQ.cjs → chunk-ZLYLHP64.cjs} +9 -9
  75. package/dist/{chunk-UFXV64WQ.cjs.map → chunk-ZLYLHP64.cjs.map} +1 -1
  76. package/dist/components/case-studies/index.cjs +20 -20
  77. package/dist/components/case-studies/index.js +7 -7
  78. package/dist/components/chat/index.cjs +4 -4
  79. package/dist/components/chat/index.js +3 -3
  80. package/dist/components/contact/index.cjs +8 -8
  81. package/dist/components/contact/index.js +7 -7
  82. package/dist/components/docs/index.cjs +11 -11
  83. package/dist/components/docs/index.js +10 -10
  84. package/dist/components/embeds/index.cjs +8 -8
  85. package/dist/components/embeds/index.js +7 -7
  86. package/dist/components/faq/index.cjs +9 -9
  87. package/dist/components/faq/index.js +8 -8
  88. package/dist/components/features/index.cjs +7 -7
  89. package/dist/components/features/index.js +6 -6
  90. package/dist/components/help-center-pages/index.cjs +101 -101
  91. package/dist/components/help-center-pages/index.js +21 -21
  92. package/dist/components/index.cjs +65 -65
  93. package/dist/components/index.js +21 -21
  94. package/dist/components/meeting-scheduler/index.cjs +58 -58
  95. package/dist/components/meeting-scheduler/index.js +8 -8
  96. package/dist/components/navigation/index.cjs +10 -10
  97. package/dist/components/navigation/index.js +9 -9
  98. package/dist/components/onboarding-guides/index.cjs +11 -11
  99. package/dist/components/onboarding-guides/index.js +10 -10
  100. package/dist/components/related-content/index.cjs +6 -6
  101. package/dist/components/related-content/index.js +5 -5
  102. package/dist/components/tickets/index.cjs +12 -12
  103. package/dist/components/tickets/index.js +11 -11
  104. package/dist/components/tickets/ticket-live-provider.d.ts.map +1 -1
  105. package/dist/components/ui/index.cjs +7 -7
  106. package/dist/components/ui/index.js +6 -6
  107. package/dist/hooks/index.cjs +4 -4
  108. package/dist/hooks/index.js +3 -3
  109. package/dist/index.cjs +12 -12
  110. package/dist/index.js +10 -10
  111. package/dist/utils/embed-authed-fetch.d.ts +18 -0
  112. package/dist/utils/embed-authed-fetch.d.ts.map +1 -1
  113. package/dist/utils/index.cjs +50 -6
  114. package/dist/utils/index.cjs.map +1 -1
  115. package/dist/utils/index.js +50 -6
  116. package/dist/utils/index.js.map +1 -1
  117. package/dist/utils/sse-subscription.d.ts +29 -11
  118. package/dist/utils/sse-subscription.d.ts.map +1 -1
  119. package/package.json +1 -1
  120. package/src/components/tickets/ticket-live-provider.tsx +14 -12
  121. package/src/utils/embed-authed-fetch.ts +21 -0
  122. package/src/utils/sse-subscription.ts +107 -20
  123. package/dist/chunk-2KILTCND.js.map +0 -1
  124. package/dist/chunk-AIXPQT3G.js.map +0 -1
  125. package/dist/chunk-TBJWPNHU.js.map +0 -1
  126. package/dist/chunk-VLWUKFQE.cjs.map +0 -1
  127. package/dist/chunk-YCKGUQA2.cjs.map +0 -1
  128. package/dist/chunk-ZBQZJAC7.cjs.map +0 -1
  129. /package/dist/{chunk-22RSJ57Z.js.map → chunk-2YVTGPM7.js.map} +0 -0
  130. /package/dist/{chunk-V5NOURSR.js.map → chunk-4HZXOQRM.js.map} +0 -0
  131. /package/dist/{chunk-XRSJER2B.js.map → chunk-6Z26ZMR4.js.map} +0 -0
  132. /package/dist/{chunk-HLEXYTOE.js.map → chunk-7EPGJOKN.js.map} +0 -0
  133. /package/dist/{chunk-DOUG4UEZ.js.map → chunk-7WYWPELF.js.map} +0 -0
  134. /package/dist/{chunk-DLRE5Y3G.js.map → chunk-C2SVJVEB.js.map} +0 -0
  135. /package/dist/{chunk-OC3QH5WG.js.map → chunk-CMYDGVTZ.js.map} +0 -0
  136. /package/dist/{chunk-2PQKZWWP.js.map → chunk-DC3G4XGP.js.map} +0 -0
  137. /package/dist/{chunk-OQVHGPHA.js.map → chunk-DZMDG7PC.js.map} +0 -0
  138. /package/dist/{chunk-S5M5SEW2.js.map → chunk-FNMQ2J44.js.map} +0 -0
  139. /package/dist/{chunk-UAKWSR3U.js.map → chunk-GDZ7IC5B.js.map} +0 -0
  140. /package/dist/{chunk-Q76YVNCQ.js.map → chunk-HM7ZGABI.js.map} +0 -0
  141. /package/dist/{chunk-25X43LSD.js.map → chunk-JSG7WZKV.js.map} +0 -0
  142. /package/dist/{chunk-TSENCZUL.js.map → chunk-MJI5GVT7.js.map} +0 -0
  143. /package/dist/{chunk-RF2EYX3B.js.map → chunk-SC44YJCF.js.map} +0 -0
  144. /package/dist/{chunk-42RQ4NIL.js.map → chunk-TSNGVWQO.js.map} +0 -0
  145. /package/dist/{chunk-2V4KPBNZ.js.map → chunk-XAOAYDGR.js.map} +0 -0
  146. /package/dist/{chunk-U4OJCJTH.js.map → chunk-XBYF4SGD.js.map} +0 -0
  147. /package/dist/{chunk-4BUPMSLY.js.map → chunk-Y7ZEVTLC.js.map} +0 -0
  148. /package/dist/{chunk-Z622ACFD.js.map → chunk-Y7ZQZOE6.js.map} +0 -0
  149. /package/dist/{chunk-5A3WSWZD.js.map → chunk-Z5FHXCXF.js.map} +0 -0
@@ -3766,6 +3766,10 @@ function setEmbedAuthAdapter(adapter2) {
3766
3766
  }
3767
3767
  storeRegisteredAuthAdapter(adapter2);
3768
3768
  }
3769
+ function subscribeEmbedCredentialChange(listener) {
3770
+ return getRegisteredAuthAdapter()?.subscribe?.(listener) ?? (() => {
3771
+ });
3772
+ }
3769
3773
  function embedAuthedFetch(url, init = {}) {
3770
3774
  assertSameOrigin(url);
3771
3775
  let baseHeaders;
@@ -3873,6 +3877,9 @@ var SUBSCRIBE_CONFIRM_TIMEOUT_MS = 15e3;
3873
3877
  var SERVER_RETRY_GRACE_MS = 9e4;
3874
3878
  var FAILED_RECONNECT_DELAY_MS = 3e4;
3875
3879
  var HIDDEN_GRACE_MS = 45e3;
3880
+ var AUTH_RETRY_INITIAL_MS = 3e4;
3881
+ var AUTH_RETRY_MAX_MS = 3e5;
3882
+ var PRESENCE_RETRY_MIN_INTERVAL_MS = 3e4;
3876
3883
  function createSseSubscription(options) {
3877
3884
  const {
3878
3885
  url,
@@ -3888,6 +3895,10 @@ function createSseSubscription(options) {
3888
3895
  let closed = false;
3889
3896
  let suspended = false;
3890
3897
  let attempt = 0;
3898
+ let authAttempt = 0;
3899
+ let stalled = false;
3900
+ let awaitingAuth = false;
3901
+ let lastConnectAt = 0;
3891
3902
  let generation = 0;
3892
3903
  let abortController = null;
3893
3904
  let retryTimerId = null;
@@ -3964,7 +3975,6 @@ function createSseSubscription(options) {
3964
3975
  confirmTimerId = clearLifecycleTimer(confirmTimerId);
3965
3976
  serverGraceTimerId = clearLifecycleTimer(serverGraceTimerId);
3966
3977
  failedDelayTimerId = clearLifecycleTimer(failedDelayTimerId);
3967
- hiddenGraceTimerId = clearLifecycleTimer(hiddenGraceTimerId);
3968
3978
  };
3969
3979
  const armSilenceTimer = () => {
3970
3980
  if (silenceTimerId) clearTimeout(silenceTimerId);
@@ -3972,16 +3982,23 @@ function createSseSubscription(options) {
3972
3982
  abortController?.abort();
3973
3983
  }, silenceTimeoutMs);
3974
3984
  };
3975
- const scheduleReconnect = () => {
3985
+ const scheduleReconnect = (delayMs) => {
3976
3986
  if (closed || suspended || retryTimerId) return;
3977
- setStatus("reconnecting");
3978
- const backoff = Math.min(maxBackoffMs, initialBackoffMs * 2 ** attempt);
3987
+ if (failedDelayTimerId) {
3988
+ setStatus("reconnecting");
3989
+ return;
3990
+ }
3991
+ let backoff = delayMs;
3992
+ if (backoff === void 0) {
3993
+ backoff = Math.min(maxBackoffMs, initialBackoffMs * 2 ** attempt);
3994
+ attempt += 1;
3995
+ }
3979
3996
  const jitter = backoff * 0.25 * Math.random();
3980
- attempt += 1;
3981
3997
  retryTimerId = setTimeout(() => {
3982
3998
  retryTimerId = null;
3983
3999
  void connect();
3984
4000
  }, backoff + jitter);
4001
+ setStatus("reconnecting");
3985
4002
  };
3986
4003
  const parseFrame = (rawFrame) => {
3987
4004
  let eventName = "message";
@@ -4013,6 +4030,9 @@ function createSseSubscription(options) {
4013
4030
  async function connect() {
4014
4031
  if (closed || suspended) return;
4015
4032
  const gen = ++generation;
4033
+ stalled = false;
4034
+ awaitingAuth = false;
4035
+ lastConnectAt = Date.now();
4016
4036
  setStatus("connecting");
4017
4037
  abortController = new AbortController();
4018
4038
  let response;
@@ -4040,9 +4060,19 @@ function createSseSubscription(options) {
4040
4060
  return;
4041
4061
  }
4042
4062
  const blockLayer = response.headers.get("x-block-layer");
4063
+ const blockNote = blockLayer ? ` (x-block-layer: ${blockLayer})` : "";
4064
+ if (response.status === 401 && pauseWhenHidden) {
4065
+ const delayMs = Math.min(AUTH_RETRY_MAX_MS, AUTH_RETRY_INITIAL_MS * 2 ** authAttempt);
4066
+ authAttempt += 1;
4067
+ console.warn(`[sse-subscription] 401 for ${url}${blockNote} \u2014 retrying in ~${Math.round(delayMs / 1e3)}s`);
4068
+ awaitingAuth = true;
4069
+ scheduleReconnect(delayMs);
4070
+ return;
4071
+ }
4043
4072
  console.warn(
4044
- `[sse-subscription] terminal ${response.status} for ${url}${blockLayer ? ` (x-block-layer: ${blockLayer})` : ""} \u2014 not retrying`
4073
+ `[sse-subscription] terminal ${response.status} for ${url}${blockNote} \u2014 ${pauseWhenHidden ? "retrying on presence" : "not retrying"}`
4045
4074
  );
4075
+ stalled = pauseWhenHidden;
4046
4076
  setStatus("terminal");
4047
4077
  return;
4048
4078
  }
@@ -4051,6 +4081,7 @@ function createSseSubscription(options) {
4051
4081
  return;
4052
4082
  }
4053
4083
  attempt = 0;
4084
+ authAttempt = 0;
4054
4085
  setStatus("open");
4055
4086
  armSilenceTimer();
4056
4087
  confirmTimerId = clearLifecycleTimer(confirmTimerId);
@@ -4112,6 +4143,10 @@ function createSseSubscription(options) {
4112
4143
  abortController?.abort();
4113
4144
  setStatus("suspended");
4114
4145
  };
4146
+ const retryIfStalled = () => {
4147
+ if (!stalled || Date.now() - lastConnectAt < PRESENCE_RETRY_MIN_INTERVAL_MS) return;
4148
+ doReconnect();
4149
+ };
4115
4150
  const onVisibilityChange = () => {
4116
4151
  if (document.visibilityState === "hidden") {
4117
4152
  if (!hiddenGraceTimerId) {
@@ -4126,15 +4161,21 @@ function createSseSubscription(options) {
4126
4161
  if (suspended) {
4127
4162
  suspended = false;
4128
4163
  void connect();
4164
+ return;
4129
4165
  }
4166
+ retryIfStalled();
4130
4167
  };
4131
4168
  const onOnline = () => {
4132
4169
  if (!suspended) doReconnect();
4133
4170
  };
4171
+ const unsubscribeCredentials = pauseWhenHidden && fetchImpl === embedAuthedFetch ? subscribeEmbedCredentialChange(() => {
4172
+ if (awaitingAuth) doReconnect();
4173
+ }) : null;
4134
4174
  const listenersActive = pauseWhenHidden && typeof document !== "undefined" && typeof window !== "undefined";
4135
4175
  if (listenersActive) {
4136
4176
  document.addEventListener("visibilitychange", onVisibilityChange);
4137
4177
  window.addEventListener("online", onOnline);
4178
+ window.addEventListener("focus", retryIfStalled);
4138
4179
  }
4139
4180
  void connect();
4140
4181
  return {
@@ -4143,11 +4184,14 @@ function createSseSubscription(options) {
4143
4184
  closed = true;
4144
4185
  generation += 1;
4145
4186
  clearTimers();
4187
+ hiddenGraceTimerId = clearLifecycleTimer(hiddenGraceTimerId);
4146
4188
  abortController?.abort();
4147
4189
  if (listenersActive) {
4148
4190
  document.removeEventListener("visibilitychange", onVisibilityChange);
4149
4191
  window.removeEventListener("online", onOnline);
4192
+ window.removeEventListener("focus", retryIfStalled);
4150
4193
  }
4194
+ unsubscribeCredentials?.();
4151
4195
  setConnected(false);
4152
4196
  onStatusChange?.("closed");
4153
4197
  },