@linktr.ee/messaging-react 1.4.0-rc-1761046174 → 1.4.0-rc-1761085992

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/index.js CHANGED
@@ -1,10 +1,10 @@
1
- import { jsx as e, jsxs as c, Fragment as oe } from "react/jsx-runtime";
2
- import T from "classnames";
3
- import X, { createContext as xe, useContext as Ne, useCallback as O, useState as v, useRef as H, useEffect as G } from "react";
4
- import { StreamChatService as Ce } from "@linktr.ee/messaging-core";
5
- import { Chat as be, useChatContext as ve, ChannelList as we, Channel as Ee, Window as Ie, MessageList as ye, useChannelStateContext as Se, MessageInput as Re } from "stream-chat-react";
6
- import { NotePencilIcon as ke, XIcon as de, ArrowLeftIcon as De, DotsThreeIcon as Pe, SpinnerGapIcon as J, SignOutIcon as Te, ProhibitInsetIcon as ae, FlagIcon as Oe, MagnifyingGlassIcon as Ue, ChatCircleDotsIcon as ie } from "@phosphor-icons/react";
7
- const ue = xe({
1
+ import { jsx as e, jsxs as i, Fragment as oe } from "react/jsx-runtime";
2
+ import P from "classnames";
3
+ import Q, { createContext as Ne, useContext as Ce, useCallback as M, useState as E, useRef as H, useEffect as G } from "react";
4
+ import { StreamChatService as be } from "@linktr.ee/messaging-core";
5
+ import { Chat as ve, useChatContext as we, ChannelList as Ee, Channel as Ie, Window as ye, MessageList as Se, useChannelStateContext as Re, MessageInput as ke } from "stream-chat-react";
6
+ import { NotePencilIcon as Te, XIcon as de, ArrowLeftIcon as Pe, DotsThreeIcon as De, SpinnerGapIcon as K, SignOutIcon as Me, ProhibitInsetIcon as ae, FlagIcon as Oe, MagnifyingGlassIcon as Ue, ChatCircleDotsIcon as ie } from "@phosphor-icons/react";
7
+ const ue = Ne({
8
8
  service: null,
9
9
  client: null,
10
10
  isConnected: !1,
@@ -15,213 +15,213 @@ const ue = xe({
15
15
  refreshConnection: async () => {
16
16
  },
17
17
  debug: !1
18
- }), K = () => Ne(ue), Je = ({
19
- children: t,
18
+ }), ee = () => Ce(ue), Ke = ({
19
+ children: n,
20
20
  user: s,
21
- serviceConfig: r,
21
+ serviceConfig: t,
22
22
  apiKey: o,
23
23
  capabilities: a = {},
24
- customization: d = {},
25
- debug: h = !1
24
+ customization: c = {},
25
+ debug: d = !1
26
26
  }) => {
27
- const n = O(
28
- (C, ...R) => {
29
- h && console.log(`🔥 [MessagingProvider] ${C}`, ...R);
27
+ const r = M(
28
+ (f, ...S) => {
29
+ d && console.log(`🔥 [MessagingProvider] ${f}`, ...S);
30
30
  },
31
- [h]
31
+ [d]
32
32
  );
33
- n("🔄 RENDER START", {
33
+ r("🔄 RENDER START", {
34
34
  userId: s == null ? void 0 : s.id,
35
35
  apiKey: (o == null ? void 0 : o.substring(0, 8)) + "...",
36
- serviceConfig: !!r,
36
+ serviceConfig: !!t,
37
37
  capabilities: Object.keys(a),
38
- customization: Object.keys(d)
38
+ customization: Object.keys(c)
39
39
  });
40
- const [l, w] = v(null), [f, b] = v(null), [i, N] = v(!1), [g, y] = v(!1), [E, U] = v(null), D = H(!1), I = H({
40
+ const [l, b] = E(null), [x, v] = E(null), [u, m] = E(!1), [C, w] = E(!1), [y, D] = E(null), O = H(!1), I = H({
41
41
  userId: s == null ? void 0 : s.id,
42
42
  apiKey: o,
43
- serviceConfig: r,
43
+ serviceConfig: t,
44
44
  capabilities: a,
45
- customization: d
46
- }), S = H(0);
47
- S.current++, n("📊 RENDER INFO", {
48
- renderCount: S.current,
45
+ customization: c
46
+ }), R = H(0);
47
+ R.current++, r("📊 RENDER INFO", {
48
+ renderCount: R.current,
49
49
  currentProps: { userId: s == null ? void 0 : s.id, apiKey: (o == null ? void 0 : o.substring(0, 8)) + "..." },
50
50
  propChanges: {
51
51
  userChanged: I.current.userId !== (s == null ? void 0 : s.id),
52
52
  apiKeyChanged: I.current.apiKey !== o,
53
- serviceConfigChanged: I.current.serviceConfig !== r,
53
+ serviceConfigChanged: I.current.serviceConfig !== t,
54
54
  capabilitiesChanged: I.current.capabilities !== a,
55
- customizationChanged: I.current.customization !== d
55
+ customizationChanged: I.current.customization !== c
56
56
  }
57
57
  }), I.current = {
58
58
  userId: s == null ? void 0 : s.id,
59
59
  apiKey: o,
60
- serviceConfig: r,
60
+ serviceConfig: t,
61
61
  capabilities: a,
62
- customization: d
62
+ customization: c
63
63
  }, G(() => {
64
- const C = S.current;
65
- if (n("🔧 SERVICE INIT EFFECT TRIGGERED", {
66
- renderCount: C,
64
+ const f = R.current;
65
+ if (r("🔧 SERVICE INIT EFFECT TRIGGERED", {
66
+ renderCount: f,
67
67
  apiKey: !!o,
68
- serviceConfig: !!r,
68
+ serviceConfig: !!t,
69
69
  dependencies: {
70
70
  apiKey: (o == null ? void 0 : o.substring(0, 8)) + "...",
71
- serviceConfigRef: r,
72
- serviceConfigStable: I.current.serviceConfig === r,
71
+ serviceConfigRef: t,
72
+ serviceConfigStable: I.current.serviceConfig === t,
73
73
  apiKeyStable: I.current.apiKey === o
74
74
  }
75
- }), !o || !r) {
76
- n("⚠️ SERVICE INIT SKIPPED", {
77
- renderCount: C,
75
+ }), !o || !t) {
76
+ r("⚠️ SERVICE INIT SKIPPED", {
77
+ renderCount: f,
78
78
  reason: "Missing apiKey or serviceConfig"
79
79
  });
80
80
  return;
81
81
  }
82
- n("🚀 CREATING NEW SERVICE", {
83
- renderCount: C,
82
+ r("🚀 CREATING NEW SERVICE", {
83
+ renderCount: f,
84
84
  apiKey: (o == null ? void 0 : o.substring(0, 8)) + "...",
85
- serviceConfigChanged: I.current.serviceConfig !== r
85
+ serviceConfigChanged: I.current.serviceConfig !== t
86
86
  });
87
- const R = new Ce({
88
- ...r,
87
+ const S = new be({
88
+ ...t,
89
89
  apiKey: o,
90
- debug: h
90
+ debug: d
91
91
  });
92
- return w(R), n("✅ SERVICE SET", {
93
- renderCount: C,
94
- serviceInstance: !!R
92
+ return b(S), r("✅ SERVICE SET", {
93
+ renderCount: f,
94
+ serviceInstance: !!S
95
95
  }), () => {
96
- n("🧹 SERVICE CLEANUP", {
97
- renderCount: C,
96
+ r("🧹 SERVICE CLEANUP", {
97
+ renderCount: f,
98
98
  reason: "Effect cleanup"
99
- }), R.disconnectUser().catch(console.error);
99
+ }), S.disconnectUser().catch(console.error);
100
100
  };
101
- }, [o, r, h, n]);
102
- const P = H(null);
101
+ }, [o, t, d, r]);
102
+ const T = H(null);
103
103
  G(() => {
104
- var R, $;
105
- if (n("🔗 USER CONNECTION EFFECT TRIGGERED", {
104
+ var S, V;
105
+ if (r("🔗 USER CONNECTION EFFECT TRIGGERED", {
106
106
  hasService: !!l,
107
107
  hasUser: !!s,
108
108
  userId: s == null ? void 0 : s.id,
109
- isConnecting: D.current,
110
- isConnected: i,
109
+ isConnecting: O.current,
110
+ isConnected: u,
111
111
  dependencies: { service: !!l, userId: s == null ? void 0 : s.id }
112
112
  }), !l || !s) {
113
- n("⚠️ USER CONNECTION SKIPPED", "Missing service or user");
113
+ r("⚠️ USER CONNECTION SKIPPED", "Missing service or user");
114
114
  return;
115
115
  }
116
- if (D.current) {
117
- n("⚠️ USER CONNECTION SKIPPED", "Already connecting");
116
+ if (O.current) {
117
+ r("⚠️ USER CONNECTION SKIPPED", "Already connecting");
118
118
  return;
119
119
  }
120
- if (((R = P.current) == null ? void 0 : R.serviceId) === l && (($ = P.current) == null ? void 0 : $.userId) === s.id) {
121
- n(
120
+ if (((S = T.current) == null ? void 0 : S.serviceId) === l && ((V = T.current) == null ? void 0 : V.userId) === s.id) {
121
+ r(
122
122
  "⚠️ USER CONNECTION SKIPPED",
123
123
  "Already connected this user with this service"
124
124
  );
125
125
  return;
126
126
  }
127
127
  (async () => {
128
- n("🚀 STARTING USER CONNECTION", { userId: s.id }), D.current = !0, y(!0), U(null);
128
+ r("🚀 STARTING USER CONNECTION", { userId: s.id }), O.current = !0, w(!0), D(null);
129
129
  try {
130
- n("📞 CALLING SERVICE.CONNECTUSER", { userId: s.id });
131
- const L = await l.connectUser(s);
132
- b(L), N(!0), P.current = { serviceId: l, userId: s.id }, n("✅ USER CONNECTION SUCCESS", {
130
+ r("📞 CALLING SERVICE.CONNECTUSER", { userId: s.id });
131
+ const U = await l.connectUser(s);
132
+ v(U), m(!0), T.current = { serviceId: l, userId: s.id }, r("✅ USER CONNECTION SUCCESS", {
133
133
  userId: s.id,
134
- clientId: L.userID
134
+ clientId: U.userID
135
135
  });
136
- } catch (L) {
137
- const _ = L instanceof Error ? L.message : "Connection failed";
138
- U(_), n("❌ USER CONNECTION ERROR", {
136
+ } catch (U) {
137
+ const j = U instanceof Error ? U.message : "Connection failed";
138
+ D(j), r("❌ USER CONNECTION ERROR", {
139
139
  userId: s.id,
140
- error: _
140
+ error: j
141
141
  });
142
142
  } finally {
143
- y(!1), D.current = !1, n("🔄 USER CONNECTION FINISHED", {
143
+ w(!1), O.current = !1, r("🔄 USER CONNECTION FINISHED", {
144
144
  userId: s.id,
145
- isConnected: i
145
+ isConnected: u
146
146
  });
147
147
  }
148
148
  })();
149
- }, [l, s, n, i]), G(() => (n("🔌 CLEANUP EFFECT REGISTERED", {
149
+ }, [l, s, r, u]), G(() => (r("🔌 CLEANUP EFFECT REGISTERED", {
150
150
  hasService: !!l,
151
- isConnected: i
151
+ isConnected: u
152
152
  }), () => {
153
- l && i ? (n(
153
+ l && u ? (r(
154
154
  "🧹 CLEANUP EFFECT TRIGGERED",
155
155
  "Cleaning up connection on unmount"
156
- ), P.current = null, l.disconnectUser().catch(console.error)) : n("🔇 CLEANUP EFFECT SKIPPED", {
156
+ ), T.current = null, l.disconnectUser().catch(console.error)) : r("🔇 CLEANUP EFFECT SKIPPED", {
157
157
  hasService: !!l,
158
- isConnected: i
158
+ isConnected: u
159
159
  });
160
- }), [l, i, n]);
161
- const m = O(async () => {
162
- if (n("🔄 REFRESH CONNECTION CALLED", {
160
+ }), [l, u, r]);
161
+ const h = M(async () => {
162
+ if (r("🔄 REFRESH CONNECTION CALLED", {
163
163
  hasService: !!l,
164
164
  hasUser: !!s
165
165
  }), !l || !s) {
166
- n("⚠️ REFRESH CONNECTION SKIPPED", "Missing service or user");
166
+ r("⚠️ REFRESH CONNECTION SKIPPED", "Missing service or user");
167
167
  return;
168
168
  }
169
- n("🚀 STARTING CONNECTION REFRESH", { userId: s.id }), y(!0);
169
+ r("🚀 STARTING CONNECTION REFRESH", { userId: s.id }), w(!0);
170
170
  try {
171
- n("🔌 DISCONNECTING FOR REFRESH"), await l.disconnectUser(), n("📞 RECONNECTING FOR REFRESH");
172
- const C = await l.connectUser(s);
173
- b(C), N(!0), U(null), n("✅ CONNECTION REFRESH SUCCESS", { userId: s.id });
174
- } catch (C) {
175
- const R = C instanceof Error ? C.message : "Refresh failed";
176
- U(R), n("❌ CONNECTION REFRESH ERROR", {
171
+ r("🔌 DISCONNECTING FOR REFRESH"), await l.disconnectUser(), r("📞 RECONNECTING FOR REFRESH");
172
+ const f = await l.connectUser(s);
173
+ v(f), m(!0), D(null), r("✅ CONNECTION REFRESH SUCCESS", { userId: s.id });
174
+ } catch (f) {
175
+ const S = f instanceof Error ? f.message : "Refresh failed";
176
+ D(S), r("❌ CONNECTION REFRESH ERROR", {
177
177
  userId: s.id,
178
- error: R
178
+ error: S
179
179
  });
180
180
  } finally {
181
- y(!1), n("🔄 CONNECTION REFRESH FINISHED", { userId: s.id });
181
+ w(!1), r("🔄 CONNECTION REFRESH FINISHED", { userId: s.id });
182
182
  }
183
- }, [l, s, n]), u = X.useMemo(() => (n("💫 CONTEXT VALUE MEMOIZATION", {
183
+ }, [l, s, r]), g = Q.useMemo(() => (r("💫 CONTEXT VALUE MEMOIZATION", {
184
184
  hasService: !!l,
185
- hasClient: !!f,
186
- isConnected: i,
187
- isLoading: g,
188
- hasError: !!E,
185
+ hasClient: !!x,
186
+ isConnected: u,
187
+ isLoading: C,
188
+ hasError: !!y,
189
189
  capabilitiesKeys: Object.keys(a),
190
- customizationKeys: Object.keys(d)
190
+ customizationKeys: Object.keys(c)
191
191
  }), {
192
192
  service: l,
193
- client: f,
194
- isConnected: i,
195
- isLoading: g,
196
- error: E,
193
+ client: x,
194
+ isConnected: u,
195
+ isLoading: C,
196
+ error: y,
197
197
  capabilities: a,
198
- customization: d,
199
- refreshConnection: m,
200
- debug: h
198
+ customization: c,
199
+ refreshConnection: h,
200
+ debug: d
201
201
  }), [
202
202
  l,
203
- f,
204
- i,
205
- g,
206
- E,
203
+ x,
204
+ u,
205
+ C,
206
+ y,
207
207
  a,
208
- d,
209
- m,
208
+ c,
210
209
  h,
211
- n
210
+ d,
211
+ r
212
212
  ]);
213
- return n("🔄 RENDER END", {
214
- renderCount: S.current,
215
- willRenderChat: !!(f && i),
216
- contextValueReady: !!u
217
- }), /* @__PURE__ */ e(ue.Provider, { value: u, children: f && i ? /* @__PURE__ */ e(be, { client: f, children: t }) : t });
218
- }, Me = () => K();
219
- function ee({ label: t, className: s, children: r, ...o }) {
220
- return /* @__PURE__ */ c(
213
+ return r("🔄 RENDER END", {
214
+ renderCount: R.current,
215
+ willRenderChat: !!(x && u),
216
+ contextValueReady: !!g
217
+ }), /* @__PURE__ */ e(ue.Provider, { value: g, children: x && u ? /* @__PURE__ */ e(ve, { client: x, children: n }) : n });
218
+ }, Le = () => ee();
219
+ function se({ label: n, className: s, children: t, ...o }) {
220
+ return /* @__PURE__ */ i(
221
221
  "button",
222
222
  {
223
223
  type: "button",
224
- className: T(
224
+ className: P(
225
225
  "rounded-full p-2 transition-colors focus-ring",
226
226
  {
227
227
  "cursor-not-allowed opacity-50": o.disabled,
@@ -231,13 +231,13 @@ function ee({ label: t, className: s, children: r, ...o }) {
231
231
  ),
232
232
  ...o,
233
233
  children: [
234
- /* @__PURE__ */ e("span", { className: "sr-only", children: t }),
235
- r
234
+ /* @__PURE__ */ e("span", { className: "sr-only", children: n }),
235
+ t
236
236
  ]
237
237
  }
238
238
  );
239
239
  }
240
- function Le(t) {
240
+ function Fe(n) {
241
241
  const s = [
242
242
  { color: "#8129D9" },
243
243
  // purple
@@ -264,32 +264,32 @@ function Le(t) {
264
264
  { color: "#70764d" }
265
265
  // olive green
266
266
  ];
267
- let r = 0;
268
- for (let a = 0; a < t.length; a++)
269
- r = (r << 5) - r + t.charCodeAt(a), r = r & r;
270
- const o = Math.abs(r) % s.length;
267
+ let t = 0;
268
+ for (let a = 0; a < n.length; a++)
269
+ t = (t << 5) - t + n.charCodeAt(a), t = t & t;
270
+ const o = Math.abs(t) % s.length;
271
271
  return s[o];
272
272
  }
273
- const se = ({
274
- id: t,
273
+ const ne = ({
274
+ id: n,
275
275
  name: s,
276
- image: r,
276
+ image: t,
277
277
  size: o = 40,
278
278
  className: a
279
279
  }) => {
280
- const { color: d } = Le(t), h = s.charAt(0).toUpperCase(), l = o < 32 ? "text-xs" : o < 56 ? "text-sm" : "text-lg";
280
+ const { color: c } = Fe(n), d = s.charAt(0).toUpperCase(), l = o < 32 ? "text-xs" : o < 56 ? "text-sm" : "text-lg";
281
281
  return /* @__PURE__ */ e(
282
282
  "div",
283
283
  {
284
- className: T(
284
+ className: P(
285
285
  "flex-shrink-0 overflow-hidden rounded-full",
286
286
  a
287
287
  ),
288
288
  style: { width: `${o}px`, height: `${o}px` },
289
- children: r ? /* @__PURE__ */ e(
289
+ children: t ? /* @__PURE__ */ e(
290
290
  "img",
291
291
  {
292
- src: r,
292
+ src: t,
293
293
  alt: "",
294
294
  className: "h-full w-full object-cover aspect-square"
295
295
  }
@@ -297,159 +297,159 @@ const se = ({
297
297
  "div",
298
298
  {
299
299
  "aria-hidden": "true",
300
- className: T(
300
+ className: P(
301
301
  "flex h-full w-full items-center justify-center font-semibold",
302
302
  l
303
303
  ),
304
304
  style: {
305
- color: d,
306
- backgroundColor: `color-mix(in srgb, ${d} 20%, transparent)`
305
+ color: c,
306
+ backgroundColor: `color-mix(in srgb, ${c} 20%, transparent)`
307
307
  },
308
- children: h
308
+ children: d
309
309
  }
310
310
  )
311
311
  }
312
312
  );
313
- }, Fe = ({ channel: t, selectedChannel: s, onChannelSelect: r, debug: o = !1 }) => {
314
- var g, y, E, U, D, I, S;
315
- const a = (s == null ? void 0 : s.id) === (t == null ? void 0 : t.id), d = () => {
316
- t && r(t);
317
- }, n = Object.values(((g = t == null ? void 0 : t.state) == null ? void 0 : g.members) || {}).find(
318
- (P) => {
319
- var m, u;
320
- return ((m = P.user) == null ? void 0 : m.id) && P.user.id !== ((u = t == null ? void 0 : t._client) == null ? void 0 : u.userID);
313
+ }, pe = ({ channel: n, selectedChannel: s, onChannelSelect: t, debug: o = !1 }) => {
314
+ var C, w, y, D, O, I, R;
315
+ const a = (s == null ? void 0 : s.id) === (n == null ? void 0 : n.id), c = () => {
316
+ n && t(n);
317
+ }, r = Object.values(((C = n == null ? void 0 : n.state) == null ? void 0 : C.members) || {}).find(
318
+ (T) => {
319
+ var h, g;
320
+ return ((h = T.user) == null ? void 0 : h.id) && T.user.id !== ((g = n == null ? void 0 : n._client) == null ? void 0 : g.userID);
321
321
  }
322
- ), l = ((y = n == null ? void 0 : n.user) == null ? void 0 : y.name) || "Conversation", w = (E = n == null ? void 0 : n.user) == null ? void 0 : E.image, f = (D = (U = t == null ? void 0 : t.state) == null ? void 0 : U.messages) == null ? void 0 : D[t.state.messages.length - 1], b = (f == null ? void 0 : f.text) || "No messages yet", i = f != null && f.created_at ? new Date(f.created_at).toLocaleTimeString([], {
322
+ ), l = ((w = r == null ? void 0 : r.user) == null ? void 0 : w.name) || "Conversation", b = (y = r == null ? void 0 : r.user) == null ? void 0 : y.image, x = (O = (D = n == null ? void 0 : n.state) == null ? void 0 : D.messages) == null ? void 0 : O[n.state.messages.length - 1], v = (x == null ? void 0 : x.text) || "No messages yet", u = x != null && x.created_at ? new Date(x.created_at).toLocaleTimeString([], {
323
323
  hour: "2-digit",
324
324
  minute: "2-digit"
325
- }) : "", N = ((I = t == null ? void 0 : t.state) == null ? void 0 : I.unreadCount) || 0;
325
+ }) : "", m = ((I = n == null ? void 0 : n.state) == null ? void 0 : I.unreadCount) || 0;
326
326
  return o && console.log("📺 [ChannelList] 📋 CHANNEL PREVIEW RENDER", {
327
- channelId: t == null ? void 0 : t.id,
327
+ channelId: n == null ? void 0 : n.id,
328
328
  isSelected: a,
329
329
  participantName: l,
330
- unread: N,
331
- hasTimestamp: !!i
330
+ unread: m,
331
+ hasTimestamp: !!u
332
332
  }), /* @__PURE__ */ e(
333
333
  "button",
334
334
  {
335
335
  type: "button",
336
- onClick: d,
337
- className: T(
336
+ onClick: c,
337
+ className: P(
338
338
  "w-full px-4 py-3 transition-colors border-b border-sand text-left max-w-full overflow-hidden focus-ring",
339
339
  {
340
340
  "bg-primary-alt/10 border-l-4 border-l-primary": a,
341
341
  "hover:bg-sand": !a
342
342
  }
343
343
  ),
344
- children: /* @__PURE__ */ c("div", { className: "flex items-start gap-3", children: [
344
+ children: /* @__PURE__ */ i("div", { className: "flex items-start gap-3", children: [
345
345
  /* @__PURE__ */ e(
346
- se,
346
+ ne,
347
347
  {
348
- id: ((S = n == null ? void 0 : n.user) == null ? void 0 : S.id) || t.id || "unknown",
348
+ id: ((R = r == null ? void 0 : r.user) == null ? void 0 : R.id) || n.id || "unknown",
349
349
  name: l,
350
- image: w,
350
+ image: b,
351
351
  size: 44
352
352
  }
353
353
  ),
354
- /* @__PURE__ */ c("div", { className: "flex-1 min-w-0 flex flex-col gap-1", children: [
355
- /* @__PURE__ */ c("div", { className: "flex items-center justify-between gap-2", children: [
354
+ /* @__PURE__ */ i("div", { className: "flex-1 min-w-0 flex flex-col gap-1", children: [
355
+ /* @__PURE__ */ i("div", { className: "flex items-center justify-between gap-2", children: [
356
356
  /* @__PURE__ */ e(
357
357
  "h3",
358
358
  {
359
- className: T(
359
+ className: P(
360
360
  "text-sm font-medium truncate",
361
361
  a ? "text-primary" : "text-charcoal"
362
362
  ),
363
363
  children: l
364
364
  }
365
365
  ),
366
- i && /* @__PURE__ */ e("span", { className: "text-xs text-stone flex-shrink-0", children: i })
366
+ u && /* @__PURE__ */ e("span", { className: "text-xs text-stone flex-shrink-0", children: u })
367
367
  ] }),
368
- /* @__PURE__ */ c("div", { className: "flex items-center justify-between gap-2 min-w-0", children: [
369
- /* @__PURE__ */ e("p", { className: "text-xs text-stone mr-2 flex-1 line-clamp-2", children: b }),
370
- N > 0 && /* @__PURE__ */ e("span", { className: "bg-primary text-white text-xs px-2 py-0.5 rounded-full min-w-[20px] text-center flex-shrink-0", children: N > 99 ? "99+" : N })
368
+ /* @__PURE__ */ i("div", { className: "flex items-center justify-between gap-2 min-w-0", children: [
369
+ /* @__PURE__ */ e("p", { className: "text-xs text-stone mr-2 flex-1 line-clamp-2", children: v }),
370
+ m > 0 && /* @__PURE__ */ e("span", { className: "bg-primary text-white text-xs px-2 py-0.5 rounded-full min-w-[20px] text-center flex-shrink-0", children: m > 99 ? "99+" : m })
371
371
  ] })
372
372
  ] })
373
373
  ] })
374
374
  }
375
375
  );
376
- }, pe = ({
377
- onChannelSelect: t,
376
+ }, je = ({
377
+ onChannelSelect: n,
378
378
  selectedChannel: s,
379
- showStartConversation: r = !1,
379
+ showStartConversation: t = !1,
380
380
  onStartConversation: o,
381
381
  participantLabel: a = "participants",
382
- className: d
382
+ className: c
383
383
  }) => {
384
- var f;
385
- const h = X.useRef(0);
386
- h.current++;
387
- const { debug: n = !1 } = K();
388
- n && console.log("📺 [ChannelList] 🔄 RENDER START", {
389
- renderCount: h.current,
384
+ var x;
385
+ const d = Q.useRef(0);
386
+ d.current++;
387
+ const { debug: r = !1 } = ee();
388
+ r && console.log("📺 [ChannelList] 🔄 RENDER START", {
389
+ renderCount: d.current,
390
390
  selectedChannelId: s == null ? void 0 : s.id,
391
- showStartConversation: r,
391
+ showStartConversation: t,
392
392
  participantLabel: a
393
393
  });
394
- const { client: l } = ve();
395
- n && console.log("📺 [ChannelList] 📡 CHAT CONTEXT", {
396
- renderCount: h.current,
394
+ const { client: l } = we();
395
+ r && console.log("📺 [ChannelList] 📡 CHAT CONTEXT", {
396
+ renderCount: d.current,
397
397
  hasClient: !!l,
398
398
  clientUserId: l == null ? void 0 : l.userID,
399
- clientConnected: (f = l == null ? void 0 : l.wsConnection) == null ? void 0 : f.isHealthy
399
+ clientConnected: (x = l == null ? void 0 : l.wsConnection) == null ? void 0 : x.isHealthy
400
400
  });
401
- const w = X.useMemo(() => {
402
- const b = l.userID, i = b ? { type: "messaging", members: { $in: [b] }, hidden: !1 } : { type: "messaging" };
403
- return n && console.log("📺 [ChannelList] 🔍 FILTERS MEMOIZED", {
404
- renderCount: h.current,
405
- userId: b,
406
- filters: i
407
- }), i;
408
- }, [l.userID, n]);
409
- return /* @__PURE__ */ c(
401
+ const b = Q.useMemo(() => {
402
+ const v = l.userID, u = v ? { type: "messaging", members: { $in: [v] }, hidden: !1 } : { type: "messaging" };
403
+ return r && console.log("📺 [ChannelList] 🔍 FILTERS MEMOIZED", {
404
+ renderCount: d.current,
405
+ userId: v,
406
+ filters: u
407
+ }), u;
408
+ }, [l.userID, r]);
409
+ return /* @__PURE__ */ i(
410
410
  "div",
411
411
  {
412
- className: T(
412
+ className: P(
413
413
  "messaging-channel-list h-full flex flex-col min-w-0 overflow-hidden",
414
- d
414
+ c
415
415
  ),
416
416
  children: [
417
- /* @__PURE__ */ e("div", { className: "px-4 py-4 border-b border-sand bg-chalk", children: /* @__PURE__ */ c("div", { className: "flex items-center justify-between gap-3 min-h-10 min-w-0", children: [
417
+ /* @__PURE__ */ e("div", { className: "px-4 py-4 border-b border-sand bg-chalk", children: /* @__PURE__ */ i("div", { className: "flex items-center justify-between gap-3 min-h-10 min-w-0", children: [
418
418
  /* @__PURE__ */ e("h2", { className: "text-lg font-semibold text-charcoal", children: "Conversations" }),
419
- /* @__PURE__ */ e("div", { className: "flex items-center gap-2", children: r && o && /* @__PURE__ */ e(
420
- ee,
419
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-2", children: t && o && /* @__PURE__ */ e(
420
+ se,
421
421
  {
422
422
  label: "Start a new conversation",
423
423
  onClick: o,
424
424
  className: "inline-flex size-10 items-center justify-center",
425
- children: /* @__PURE__ */ e(ke, { className: "h-5 w-5" })
425
+ children: /* @__PURE__ */ e(Te, { className: "h-5 w-5" })
426
426
  }
427
427
  ) })
428
428
  ] }) }),
429
- /* @__PURE__ */ e("div", { className: "flex-1 overflow-hidden min-w-0", children: (n && console.log("📺 [ChannelList] 🎬 RENDERING STREAM CHANNEL LIST", {
430
- renderCount: h.current,
431
- filters: w,
429
+ /* @__PURE__ */ e("div", { className: "flex-1 overflow-hidden min-w-0", children: (r && console.log("📺 [ChannelList] 🎬 RENDERING STREAM CHANNEL LIST", {
430
+ renderCount: d.current,
431
+ filters: b,
432
432
  hasClient: !!l,
433
433
  clientUserId: l == null ? void 0 : l.userID
434
434
  }), /* @__PURE__ */ e(
435
- we,
435
+ Ee,
436
436
  {
437
- filters: w,
437
+ filters: b,
438
438
  sort: { last_message_at: -1 },
439
439
  options: { limit: 30 },
440
- Preview: (b) => {
441
- var i, N;
442
- return n && console.log("📺 [ChannelList] 📋 CHANNEL PREVIEW RENDER", {
443
- channelId: (i = b.channel) == null ? void 0 : i.id,
440
+ Preview: (v) => {
441
+ var u, m;
442
+ return r && console.log("📺 [ChannelList] 📋 CHANNEL PREVIEW RENDER", {
443
+ channelId: (u = v.channel) == null ? void 0 : u.id,
444
444
  selectedChannelId: s == null ? void 0 : s.id,
445
- isSelected: (s == null ? void 0 : s.id) === ((N = b.channel) == null ? void 0 : N.id)
445
+ isSelected: (s == null ? void 0 : s.id) === ((m = v.channel) == null ? void 0 : m.id)
446
446
  }), /* @__PURE__ */ e(
447
- Fe,
447
+ pe,
448
448
  {
449
- ...b,
449
+ ...v,
450
450
  selectedChannel: s,
451
- onChannelSelect: t,
452
- debug: n
451
+ onChannelSelect: n,
452
+ debug: r
453
453
  }
454
454
  );
455
455
  }
@@ -458,215 +458,215 @@ const se = ({
458
458
  ]
459
459
  }
460
460
  );
461
- }, Y = ({
462
- variant: t = "default",
461
+ }, J = ({
462
+ variant: n = "default",
463
463
  className: s,
464
- children: r,
464
+ children: t,
465
465
  ...o
466
466
  }) => /* @__PURE__ */ e(
467
467
  "button",
468
468
  {
469
469
  type: "button",
470
- className: T(
470
+ className: P(
471
471
  "flex w-full items-center gap-3 rounded-lg px-4 py-3 text-left text-sm transition-colors focus-ring disabled:cursor-not-allowed disabled:opacity-60",
472
- t === "danger" ? "text-danger hover:bg-danger/50" : "text-charcoal hover:bg-sand",
472
+ n === "danger" ? "text-danger hover:bg-danger/50" : "text-charcoal hover:bg-sand",
473
473
  s
474
474
  ),
475
475
  ...o,
476
- children: r
476
+ children: t
477
477
  }
478
478
  );
479
- function me({ onClick: t }) {
480
- return /* @__PURE__ */ e(ee, { label: "Close", onClick: t, className: "p-1", children: /* @__PURE__ */ e(de, { className: "h-5 w-5 text-stone", weight: "bold" }) });
479
+ function me({ onClick: n }) {
480
+ return /* @__PURE__ */ e(se, { label: "Close", onClick: n, className: "p-1", children: /* @__PURE__ */ e(de, { className: "h-5 w-5 text-stone", weight: "bold" }) });
481
481
  }
482
- const je = ({ renderActions: t }) => /* @__PURE__ */ c("div", { className: "message-input flex items-center gap-2 p-4", children: [
483
- t && t(),
484
- /* @__PURE__ */ e("div", { className: "flex-1", children: /* @__PURE__ */ e(Re, { focus: !0, maxRows: 4 }) })
485
- ] }), Be = ({ onBack: t, showBackButton: s, onShowInfo: r, canShowInfo: o }) => {
486
- var l, w, f, b;
487
- const { channel: a } = Se(), d = X.useMemo(() => Object.values(a.state.members || {}).find(
488
- (N) => {
489
- var g;
490
- return ((g = N.user) == null ? void 0 : g.id) && N.user.id !== a._client.userID;
482
+ const Be = ({ renderActions: n }) => /* @__PURE__ */ i("div", { className: "message-input flex items-center gap-2 p-4", children: [
483
+ n && n(),
484
+ /* @__PURE__ */ e("div", { className: "flex-1", children: /* @__PURE__ */ e(ke, { focus: !0, maxRows: 4 }) })
485
+ ] }), Ae = ({ onBack: n, showBackButton: s, onShowInfo: t, canShowInfo: o }) => {
486
+ var l, b, x, v;
487
+ const { channel: a } = Re(), c = Q.useMemo(() => Object.values(a.state.members || {}).find(
488
+ (m) => {
489
+ var C;
490
+ return ((C = m.user) == null ? void 0 : C.id) && m.user.id !== a._client.userID;
491
491
  }
492
- ), [a._client.userID, a.state.members]), h = ((l = d == null ? void 0 : d.user) == null ? void 0 : l.name) || ((w = d == null ? void 0 : d.user) == null ? void 0 : w.id) || "Unknown member", n = (f = d == null ? void 0 : d.user) == null ? void 0 : f.image;
493
- return /* @__PURE__ */ c("div", { className: "flex items-center justify-between gap-3 min-h-12", children: [
494
- /* @__PURE__ */ c("div", { className: "flex items-center gap-3 min-w-0", children: [
495
- s && t && /* @__PURE__ */ e(
492
+ ), [a._client.userID, a.state.members]), d = ((l = c == null ? void 0 : c.user) == null ? void 0 : l.name) || ((b = c == null ? void 0 : c.user) == null ? void 0 : b.id) || "Unknown member", r = (x = c == null ? void 0 : c.user) == null ? void 0 : x.image;
493
+ return /* @__PURE__ */ i("div", { className: "flex items-center justify-between gap-3 min-h-12", children: [
494
+ /* @__PURE__ */ i("div", { className: "flex items-center gap-3 min-w-0", children: [
495
+ s && n && /* @__PURE__ */ e(
496
496
  "button",
497
497
  {
498
498
  type: "button",
499
- onClick: t,
499
+ onClick: n,
500
500
  className: "inline-flex items-center justify-center w-8 h-8 rounded-lg hover:bg-sand focus:outline-none focus:ring-2 focus:ring-primary transition-colors lg:hidden",
501
501
  "aria-label": "Back to conversations",
502
- children: /* @__PURE__ */ e(De, { className: "h-5 w-5 text-stone", weight: "bold" })
502
+ children: /* @__PURE__ */ e(Pe, { className: "h-5 w-5 text-stone", weight: "bold" })
503
503
  }
504
504
  ),
505
505
  /* @__PURE__ */ e(
506
- se,
506
+ ne,
507
507
  {
508
- id: ((b = d == null ? void 0 : d.user) == null ? void 0 : b.id) || a.id || "unknown",
509
- name: h,
510
- image: n,
508
+ id: ((v = c == null ? void 0 : c.user) == null ? void 0 : v.id) || a.id || "unknown",
509
+ name: d,
510
+ image: r,
511
511
  size: 40
512
512
  }
513
513
  ),
514
- /* @__PURE__ */ e("div", { className: "min-w-0", children: /* @__PURE__ */ e("h1", { className: "text-lg font-semibold text-charcoal truncate", children: h }) })
514
+ /* @__PURE__ */ e("div", { className: "min-w-0", children: /* @__PURE__ */ e("h1", { className: "text-lg font-semibold text-charcoal truncate", children: d }) })
515
515
  ] }),
516
- o && r && /* @__PURE__ */ e(ee, { label: "Chat info", onClick: r, children: /* @__PURE__ */ e(Pe, { className: "h-6 w-6 text-charcoal", weight: "bold" }) })
516
+ o && t && /* @__PURE__ */ e(se, { label: "Chat info", onClick: t, children: /* @__PURE__ */ e(De, { className: "h-6 w-6 text-charcoal", weight: "bold" }) })
517
517
  ] });
518
- }, Ae = ({
519
- isOpen: t,
518
+ }, He = ({
519
+ isOpen: n,
520
520
  onClose: s,
521
- participant: r,
521
+ participant: t,
522
522
  channel: o,
523
523
  followerStatusLabel: a,
524
- onLeaveConversation: d,
525
- onBlockParticipant: h
524
+ onLeaveConversation: c,
525
+ onBlockParticipant: d
526
526
  }) => {
527
- var L, _, V, W, z, j, q;
528
- const { service: n, debug: l } = K(), w = H(null), [f, b] = v(!1), [i, N] = v(!1), [g, y] = v(!1);
527
+ var U, j, Z, $, W, z, A;
528
+ const { service: r, debug: l } = ee(), b = H(null), [x, v] = E(!1), [u, m] = E(!1), [C, w] = E(!1);
529
529
  G(() => {
530
- const k = w.current;
531
- k && (t ? k.showModal() : k.close());
532
- }, [t]);
533
- const E = O(async () => {
530
+ const k = b.current;
531
+ k && (n ? k.showModal() : k.close());
532
+ }, [n]);
533
+ const y = M(async () => {
534
534
  var k;
535
- if (!(!n || !((k = r == null ? void 0 : r.user) != null && k.id)))
535
+ if (!(!r || !((k = t == null ? void 0 : t.user) != null && k.id)))
536
536
  try {
537
- const B = (await n.getBlockedUsers()).some(
538
- (A) => {
539
- var Q;
540
- return A.blocked_user_id === ((Q = r == null ? void 0 : r.user) == null ? void 0 : Q.id);
537
+ const B = (await r.getBlockedUsers()).some(
538
+ (q) => {
539
+ var X;
540
+ return q.blocked_user_id === ((X = t == null ? void 0 : t.user) == null ? void 0 : X.id);
541
541
  }
542
542
  );
543
- b(B);
544
- } catch (M) {
543
+ v(B);
544
+ } catch (L) {
545
545
  console.error(
546
546
  "[ChannelInfoDialog] Failed to check blocked status:",
547
- M
547
+ L
548
548
  );
549
549
  }
550
- }, [n, (L = r == null ? void 0 : r.user) == null ? void 0 : L.id]);
550
+ }, [r, (U = t == null ? void 0 : t.user) == null ? void 0 : U.id]);
551
551
  G(() => {
552
- t && E();
553
- }, [t, E]);
554
- const U = async () => {
552
+ n && y();
553
+ }, [n, y]);
554
+ const D = async () => {
555
555
  var k;
556
- if (!i) {
557
- l && console.log("[ChannelInfoDialog] Leave conversation", o.cid), N(!0);
556
+ if (!u) {
557
+ l && console.log("[ChannelInfoDialog] Leave conversation", o.cid), m(!0);
558
558
  try {
559
- const M = ((k = o._client) == null ? void 0 : k.userID) ?? null;
560
- await o.hide(M, !1), d && await d(o), s();
561
- } catch (M) {
562
- console.error("[ChannelInfoDialog] Failed to leave conversation", M);
559
+ const L = ((k = o._client) == null ? void 0 : k.userID) ?? null;
560
+ await o.hide(L, !1), c && await c(o), s();
561
+ } catch (L) {
562
+ console.error("[ChannelInfoDialog] Failed to leave conversation", L);
563
563
  } finally {
564
- N(!1);
564
+ m(!1);
565
565
  }
566
566
  }
567
- }, D = async () => {
568
- var k, M, B;
569
- if (!(g || !n)) {
570
- l && console.log("[ChannelInfoDialog] Block member", (k = r == null ? void 0 : r.user) == null ? void 0 : k.id), y(!0);
567
+ }, O = async () => {
568
+ var k, L, B;
569
+ if (!(C || !r)) {
570
+ l && console.log("[ChannelInfoDialog] Block member", (k = t == null ? void 0 : t.user) == null ? void 0 : k.id), w(!0);
571
571
  try {
572
- await n.blockUser((M = r == null ? void 0 : r.user) == null ? void 0 : M.id), h && await h((B = r == null ? void 0 : r.user) == null ? void 0 : B.id), s();
573
- } catch (A) {
574
- console.error("[ChannelInfoDialog] Failed to block member", A);
572
+ await r.blockUser((L = t == null ? void 0 : t.user) == null ? void 0 : L.id), d && await d((B = t == null ? void 0 : t.user) == null ? void 0 : B.id), s();
573
+ } catch (q) {
574
+ console.error("[ChannelInfoDialog] Failed to block member", q);
575
575
  } finally {
576
- y(!1);
576
+ w(!1);
577
577
  }
578
578
  }
579
579
  }, I = async () => {
580
- var k, M, B;
581
- if (!(g || !n)) {
582
- l && console.log("[ChannelInfoDialog] Unblock member", (k = r == null ? void 0 : r.user) == null ? void 0 : k.id), y(!0);
580
+ var k, L, B;
581
+ if (!(C || !r)) {
582
+ l && console.log("[ChannelInfoDialog] Unblock member", (k = t == null ? void 0 : t.user) == null ? void 0 : k.id), w(!0);
583
583
  try {
584
- await n.unBlockUser((M = r == null ? void 0 : r.user) == null ? void 0 : M.id), h && await h((B = r == null ? void 0 : r.user) == null ? void 0 : B.id), s();
585
- } catch (A) {
586
- console.error("[ChannelInfoDialog] Failed to unblock member", A);
584
+ await r.unBlockUser((L = t == null ? void 0 : t.user) == null ? void 0 : L.id), d && await d((B = t == null ? void 0 : t.user) == null ? void 0 : B.id), s();
585
+ } catch (q) {
586
+ console.error("[ChannelInfoDialog] Failed to unblock member", q);
587
587
  } finally {
588
- y(!1);
588
+ w(!1);
589
589
  }
590
590
  }
591
- }, S = () => {
591
+ }, R = () => {
592
592
  s(), window.open(
593
593
  "https://linktr.ee/s/about/trust-center/report",
594
594
  "_blank",
595
595
  "noopener,noreferrer"
596
596
  );
597
597
  };
598
- if (!r) return null;
599
- const P = ((_ = r.user) == null ? void 0 : _.name) || ((V = r.user) == null ? void 0 : V.id) || "Unknown member", m = (W = r.user) == null ? void 0 : W.image, u = (z = r.user) == null ? void 0 : z.email, C = (j = r.user) == null ? void 0 : j.username, R = u || (C ? `linktr.ee/${C}` : void 0), $ = ((q = r.user) == null ? void 0 : q.id) || "unknown";
598
+ if (!t) return null;
599
+ const T = ((j = t.user) == null ? void 0 : j.name) || ((Z = t.user) == null ? void 0 : Z.id) || "Unknown member", h = ($ = t.user) == null ? void 0 : $.image, g = (W = t.user) == null ? void 0 : W.email, f = (z = t.user) == null ? void 0 : z.username, S = g || (f ? `linktr.ee/${f}` : void 0), V = ((A = t.user) == null ? void 0 : A.id) || "unknown";
600
600
  return (
601
601
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
602
602
  /* @__PURE__ */ e(
603
603
  "dialog",
604
604
  {
605
- ref: w,
605
+ ref: b,
606
606
  className: "mes-dialog",
607
607
  onClose: s,
608
608
  onClick: (k) => {
609
- k.target === w.current && s();
609
+ k.target === b.current && s();
610
610
  },
611
- children: /* @__PURE__ */ c("div", { className: "ml-auto flex h-full w-full flex-col bg-white shadow-max-elevation-light", children: [
612
- /* @__PURE__ */ c("div", { className: "flex items-center justify-between border-b border-sand px-4 py-3", children: [
611
+ children: /* @__PURE__ */ i("div", { className: "ml-auto flex h-full w-full flex-col bg-white shadow-max-elevation-light", children: [
612
+ /* @__PURE__ */ i("div", { className: "flex items-center justify-between border-b border-sand px-4 py-3", children: [
613
613
  /* @__PURE__ */ e("h2", { className: "text-base font-semibold text-charcoal", children: "Chat info" }),
614
614
  /* @__PURE__ */ e(me, { onClick: s })
615
615
  ] }),
616
- /* @__PURE__ */ c("div", { className: "flex-1 overflow-y-auto px-6 py-6", children: [
617
- /* @__PURE__ */ e("div", { className: "rounded-2xl bg-chalk p-4", children: /* @__PURE__ */ c("div", { className: "flex items-center gap-4", children: [
616
+ /* @__PURE__ */ i("div", { className: "flex-1 overflow-y-auto px-6 py-6", children: [
617
+ /* @__PURE__ */ e("div", { className: "rounded-2xl bg-chalk p-4", children: /* @__PURE__ */ i("div", { className: "flex items-center gap-4", children: [
618
618
  /* @__PURE__ */ e(
619
- se,
619
+ ne,
620
620
  {
621
- id: $,
622
- name: P,
623
- image: m,
621
+ id: V,
622
+ name: T,
623
+ image: h,
624
624
  size: 64
625
625
  }
626
626
  ),
627
- /* @__PURE__ */ c("div", { className: "min-w-0 flex-1", children: [
628
- /* @__PURE__ */ e("p", { className: "truncate text-base font-semibold text-charcoal", children: P }),
629
- R && /* @__PURE__ */ e("p", { className: "truncate text-sm text-stone", children: R }),
627
+ /* @__PURE__ */ i("div", { className: "min-w-0 flex-1", children: [
628
+ /* @__PURE__ */ e("p", { className: "truncate text-base font-semibold text-charcoal", children: T }),
629
+ S && /* @__PURE__ */ e("p", { className: "truncate text-sm text-stone", children: S }),
630
630
  a && /* @__PURE__ */ e("span", { className: "mt-2 inline-flex items-center rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-700", children: a })
631
631
  ] })
632
632
  ] }) }),
633
- /* @__PURE__ */ c("ul", { className: "flex flex-col gap-2 mt-2", children: [
634
- /* @__PURE__ */ e("li", { children: /* @__PURE__ */ c(
635
- Y,
633
+ /* @__PURE__ */ i("ul", { className: "flex flex-col gap-2 mt-2", children: [
634
+ /* @__PURE__ */ e("li", { children: /* @__PURE__ */ i(
635
+ J,
636
636
  {
637
- onClick: U,
638
- disabled: i,
639
- "aria-busy": i,
637
+ onClick: D,
638
+ disabled: u,
639
+ "aria-busy": u,
640
640
  children: [
641
- i ? /* @__PURE__ */ e(J, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ e(Te, { className: "h-5 w-5" }),
641
+ u ? /* @__PURE__ */ e(K, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ e(Me, { className: "h-5 w-5" }),
642
642
  /* @__PURE__ */ e("span", { children: "Leave Conversation" })
643
643
  ]
644
644
  }
645
645
  ) }),
646
- /* @__PURE__ */ e("li", { children: f ? /* @__PURE__ */ c(
647
- Y,
646
+ /* @__PURE__ */ e("li", { children: x ? /* @__PURE__ */ i(
647
+ J,
648
648
  {
649
649
  onClick: I,
650
- disabled: g,
651
- "aria-busy": g,
650
+ disabled: C,
651
+ "aria-busy": C,
652
652
  children: [
653
- g ? /* @__PURE__ */ e(J, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ e(ae, { className: "h-5 w-5" }),
653
+ C ? /* @__PURE__ */ e(K, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ e(ae, { className: "h-5 w-5" }),
654
654
  /* @__PURE__ */ e("span", { children: "Unblock" })
655
655
  ]
656
656
  }
657
- ) : /* @__PURE__ */ c(
658
- Y,
657
+ ) : /* @__PURE__ */ i(
658
+ J,
659
659
  {
660
- onClick: D,
661
- disabled: g,
662
- "aria-busy": g,
660
+ onClick: O,
661
+ disabled: C,
662
+ "aria-busy": C,
663
663
  children: [
664
- g ? /* @__PURE__ */ e(J, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ e(ae, { className: "h-5 w-5" }),
664
+ C ? /* @__PURE__ */ e(K, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ e(ae, { className: "h-5 w-5" }),
665
665
  /* @__PURE__ */ e("span", { children: "Block" })
666
666
  ]
667
667
  }
668
668
  ) }),
669
- /* @__PURE__ */ e("li", { children: /* @__PURE__ */ c(Y, { variant: "danger", onClick: S, children: [
669
+ /* @__PURE__ */ e("li", { children: /* @__PURE__ */ i(J, { variant: "danger", onClick: R, children: [
670
670
  /* @__PURE__ */ e(Oe, { className: "h-5 w-5" }),
671
671
  /* @__PURE__ */ e("span", { children: "Report" })
672
672
  ] }) })
@@ -676,73 +676,73 @@ const je = ({ renderActions: t }) => /* @__PURE__ */ c("div", { className: "mess
676
676
  }
677
677
  )
678
678
  );
679
- }, He = ({
680
- channel: t,
679
+ }, Ge = ({
680
+ channel: n,
681
681
  onBack: s,
682
- showBackButton: r = !1,
682
+ showBackButton: t = !1,
683
683
  renderMessageInputActions: o,
684
684
  onLeaveConversation: a,
685
- onBlockParticipant: d,
686
- className: h
685
+ onBlockParticipant: c,
686
+ className: d
687
687
  }) => {
688
- const [n, l] = v(!1), w = X.useMemo(() => Object.values(t.state.members || {}).find(
689
- (i) => {
690
- var N;
691
- return ((N = i.user) == null ? void 0 : N.id) && i.user.id !== t._client.userID;
688
+ const [r, l] = E(!1), b = Q.useMemo(() => Object.values(n.state.members || {}).find(
689
+ (u) => {
690
+ var m;
691
+ return ((m = u.user) == null ? void 0 : m.id) && u.user.id !== n._client.userID;
692
692
  }
693
- ), [t._client.userID, t.state.members]), f = X.useMemo(() => {
694
- const b = t.data ?? {};
695
- return b.followerStatus ? String(b.followerStatus) : b.isFollower ? "Subscribed to you" : void 0;
696
- }, [t.data]);
697
- return /* @__PURE__ */ c(
693
+ ), [n._client.userID, n.state.members]), x = Q.useMemo(() => {
694
+ const v = n.data ?? {};
695
+ return v.followerStatus ? String(v.followerStatus) : v.isFollower ? "Subscribed to you" : void 0;
696
+ }, [n.data]);
697
+ return /* @__PURE__ */ i(
698
698
  "div",
699
699
  {
700
- className: T(
700
+ className: P(
701
701
  "messaging-channel-view h-full flex flex-col",
702
- h
702
+ d
703
703
  ),
704
704
  children: [
705
- /* @__PURE__ */ e(Ee, { channel: t, children: /* @__PURE__ */ c(Ie, { children: [
705
+ /* @__PURE__ */ e(Ie, { channel: n, children: /* @__PURE__ */ i(ye, { children: [
706
706
  /* @__PURE__ */ e("div", { className: "border-b border-sand bg-white px-4 py-3", children: /* @__PURE__ */ e(
707
- Be,
707
+ Ae,
708
708
  {
709
709
  onBack: s,
710
- showBackButton: r,
710
+ showBackButton: t,
711
711
  onShowInfo: () => l(!0),
712
- canShowInfo: !!w
712
+ canShowInfo: !!b
713
713
  }
714
714
  ) }),
715
- /* @__PURE__ */ e("div", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ e(ye, { hideDeletedMessages: !0, hideNewMessageSeparator: !1 }) }),
715
+ /* @__PURE__ */ e("div", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ e(Se, { hideDeletedMessages: !0, hideNewMessageSeparator: !1 }) }),
716
716
  /* @__PURE__ */ e(
717
- je,
717
+ Be,
718
718
  {
719
- renderActions: () => o == null ? void 0 : o(t)
719
+ renderActions: () => o == null ? void 0 : o(n)
720
720
  }
721
721
  )
722
722
  ] }) }),
723
723
  /* @__PURE__ */ e(
724
- Ae,
724
+ He,
725
725
  {
726
- isOpen: n,
726
+ isOpen: r,
727
727
  onClose: () => l(!1),
728
- participant: w,
729
- channel: t,
730
- followerStatusLabel: f,
728
+ participant: b,
729
+ channel: n,
730
+ followerStatusLabel: x,
731
731
  onLeaveConversation: a,
732
- onBlockParticipant: d
732
+ onBlockParticipant: c
733
733
  }
734
734
  )
735
735
  ]
736
736
  }
737
737
  );
738
738
  };
739
- function Ge({
740
- searchQuery: t,
739
+ function $e({
740
+ searchQuery: n,
741
741
  setSearchQuery: s,
742
- placeholder: r
742
+ placeholder: t
743
743
  }) {
744
744
  const o = H(null);
745
- return /* @__PURE__ */ c("div", { className: "relative", children: [
745
+ return /* @__PURE__ */ i("div", { className: "relative", children: [
746
746
  /* @__PURE__ */ e(
747
747
  Ue,
748
748
  {
@@ -755,14 +755,14 @@ function Ge({
755
755
  {
756
756
  ref: o,
757
757
  type: "text",
758
- placeholder: r,
759
- value: t,
758
+ placeholder: t,
759
+ value: n,
760
760
  onChange: (a) => s(a.target.value),
761
761
  className: "w-full pl-10 pr-10 py-3 text-sm border border-sand rounded-xl focus:outline-none focus:ring-2 focus:ring-black focus:border-transparent"
762
762
  }
763
763
  ),
764
- t && /* @__PURE__ */ e(
765
- ee,
764
+ n && /* @__PURE__ */ e(
765
+ se,
766
766
  {
767
767
  label: "Clear search",
768
768
  onClick: () => {
@@ -775,177 +775,177 @@ function Ge({
775
775
  )
776
776
  ] });
777
777
  }
778
- const $e = ({
779
- participantSource: t,
778
+ const _e = ({
779
+ participantSource: n,
780
780
  onSelectParticipant: s,
781
- onClose: r,
781
+ onClose: t,
782
782
  existingParticipantIds: o = /* @__PURE__ */ new Set(),
783
783
  participantLabel: a = "participants",
784
- searchPlaceholder: d = "Search participants...",
785
- className: h
784
+ searchPlaceholder: c = "Search participants...",
785
+ className: d
786
786
  }) => {
787
- const { debug: n } = K(), [l, w] = v(""), [f, b] = v([]), [i, N] = v(!1), [g, y] = v(null), [E, U] = v(
787
+ const { debug: r } = ee(), [l, b] = E(""), [x, v] = E([]), [u, m] = E(!1), [C, w] = E(null), [y, D] = E(
788
788
  null
789
- ), D = H(!1);
789
+ ), O = H(!1);
790
790
  G(() => {
791
- if (t.loading) {
792
- n && console.log(
791
+ if (n.loading) {
792
+ r && console.log(
793
793
  "[ParticipantPicker] Waiting for participant source to finish loading..."
794
794
  );
795
795
  return;
796
796
  }
797
- if (D.current) return;
797
+ if (O.current) return;
798
798
  (async () => {
799
- n && console.log("[ParticipantPicker] Loading initial participants..."), N(!0), y(null);
799
+ r && console.log("[ParticipantPicker] Loading initial participants..."), m(!0), w(null);
800
800
  try {
801
- const u = await t.loadParticipants({
801
+ const g = await n.loadParticipants({
802
802
  search: "",
803
803
  // Load all participants initially
804
804
  limit: 100
805
805
  });
806
- b(u.participants), D.current = !0, n && console.log(
806
+ v(g.participants), O.current = !0, r && console.log(
807
807
  "[ParticipantPicker] Participants loaded successfully:",
808
- u.participants.length
808
+ g.participants.length
809
809
  );
810
- } catch (u) {
811
- const C = u instanceof Error ? u.message : "Failed to load participants";
812
- y(C), console.error("[ParticipantPicker] Failed to load participants:", u);
810
+ } catch (g) {
811
+ const f = g instanceof Error ? g.message : "Failed to load participants";
812
+ w(f), console.error("[ParticipantPicker] Failed to load participants:", g);
813
813
  } finally {
814
- N(!1);
814
+ m(!1);
815
815
  }
816
816
  })();
817
- }, [t.loading, n]);
818
- const I = f.filter((m) => !o.has(m.id)).filter((m) => {
819
- var C;
817
+ }, [n.loading, r]);
818
+ const I = x.filter((h) => !o.has(h.id)).filter((h) => {
819
+ var f;
820
820
  if (!l) return !0;
821
- const u = l.toLowerCase();
822
- return m.name.toLowerCase().includes(u) || ((C = m.email) == null ? void 0 : C.toLowerCase().includes(u)) || !1;
823
- }), S = O(
824
- async (m) => {
825
- if (!E) {
826
- U(m.id);
821
+ const g = l.toLowerCase();
822
+ return h.name.toLowerCase().includes(g) || ((f = h.email) == null ? void 0 : f.toLowerCase().includes(g)) || !1;
823
+ }), R = M(
824
+ async (h) => {
825
+ if (!y) {
826
+ D(h.id);
827
827
  try {
828
- await s(m);
829
- } catch (u) {
830
- console.error("[ParticipantPicker] Failed to start chat:", u), U(null);
828
+ await s(h);
829
+ } catch (g) {
830
+ console.error("[ParticipantPicker] Failed to start chat:", g), D(null);
831
831
  }
832
832
  }
833
833
  },
834
- [s, E]
835
- ), P = (m, u) => {
836
- (m.key === "Enter" || m.key === " ") && (m.preventDefault(), S(u));
834
+ [s, y]
835
+ ), T = (h, g) => {
836
+ (h.key === "Enter" || h.key === " ") && (h.preventDefault(), R(g));
837
837
  };
838
- return /* @__PURE__ */ c("div", { className: T("flex flex-col h-full", h), children: [
839
- /* @__PURE__ */ c("div", { className: "px-4 py-4 border-b border-sand bg-chalk", children: [
840
- /* @__PURE__ */ c("div", { className: "flex items-center justify-between mb-3", children: [
838
+ return /* @__PURE__ */ i("div", { className: P("flex flex-col h-full", d), children: [
839
+ /* @__PURE__ */ i("div", { className: "px-4 py-4 border-b border-sand bg-chalk", children: [
840
+ /* @__PURE__ */ i("div", { className: "flex items-center justify-between mb-3", children: [
841
841
  /* @__PURE__ */ e("h2", { className: "text-lg font-semibold text-charcoal", children: "Start a new Conversation" }),
842
- /* @__PURE__ */ e(me, { onClick: r })
842
+ /* @__PURE__ */ e(me, { onClick: t })
843
843
  ] }),
844
- /* @__PURE__ */ c("p", { className: "text-xs text-stone mb-3", children: [
844
+ /* @__PURE__ */ i("p", { className: "text-xs text-stone mb-3", children: [
845
845
  "Select a ",
846
846
  a.slice(0, -1),
847
847
  " to start messaging (",
848
848
  I.length,
849
849
  " available)",
850
- t.totalCount !== void 0 && ` • ${t.totalCount} ${a} total`
850
+ n.totalCount !== void 0 && ` • ${n.totalCount} ${a} total`
851
851
  ] }),
852
852
  /* @__PURE__ */ e(
853
- Ge,
853
+ $e,
854
854
  {
855
855
  searchQuery: l,
856
- setSearchQuery: w,
857
- placeholder: d
856
+ setSearchQuery: b,
857
+ placeholder: c
858
858
  }
859
859
  )
860
860
  ] }),
861
- g && /* @__PURE__ */ c("div", { className: "p-4 text-sm text-danger bg-danger-alt", children: [
861
+ C && /* @__PURE__ */ i("div", { className: "p-4 text-sm text-danger bg-danger-alt", children: [
862
862
  "Error loading ",
863
863
  a,
864
864
  ": ",
865
- g
865
+ C
866
866
  ] }),
867
- /* @__PURE__ */ e("div", { className: "flex-1 overflow-auto", children: i && I.length === 0 ? /* @__PURE__ */ e("div", { className: "h-32 flex items-center justify-center", children: /* @__PURE__ */ c("div", { className: "flex items-center space-x-2", children: [
867
+ /* @__PURE__ */ e("div", { className: "flex-1 overflow-auto", children: u && I.length === 0 ? /* @__PURE__ */ e("div", { className: "h-32 flex items-center justify-center", children: /* @__PURE__ */ i("div", { className: "flex items-center space-x-2", children: [
868
868
  /* @__PURE__ */ e("div", { className: "w-4 h-4 animate-spin rounded-full border-2 border-primary border-t-transparent" }),
869
- /* @__PURE__ */ c("span", { className: "text-sm text-stone", children: [
869
+ /* @__PURE__ */ i("span", { className: "text-sm text-stone", children: [
870
870
  "Loading ",
871
871
  a,
872
872
  "..."
873
873
  ] })
874
- ] }) }) : I.length === 0 ? /* @__PURE__ */ c("div", { className: "p-6 text-center", children: [
874
+ ] }) }) : I.length === 0 ? /* @__PURE__ */ i("div", { className: "p-6 text-center", children: [
875
875
  /* @__PURE__ */ e("div", { className: "mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-sand", children: /* @__PURE__ */ e(ie, { className: "h-8 w-8 text-charcoal" }) }),
876
- /* @__PURE__ */ e("h3", { className: "text-sm font-semibold text-charcoal mb-2", children: l ? `No ${a} found` : f.length > 0 ? `Already chatting with all ${a}` : `No ${a} yet` }),
877
- /* @__PURE__ */ e("p", { className: "text-xs text-stone", children: l ? "Try a different search term" : f.length > 0 ? `You have existing conversations with all your ${a}` : `${a.charAt(0).toUpperCase() + a.slice(1)} will appear here` })
878
- ] }) : /* @__PURE__ */ c("ul", { className: "space-y-0", children: [
879
- I.map((m) => {
880
- const u = m.name || m.email || m.id, C = m.email && m.name ? m.email : m.phone;
876
+ /* @__PURE__ */ e("h3", { className: "text-sm font-semibold text-charcoal mb-2", children: l ? `No ${a} found` : x.length > 0 ? `Already chatting with all ${a}` : `No ${a} yet` }),
877
+ /* @__PURE__ */ e("p", { className: "text-xs text-stone", children: l ? "Try a different search term" : x.length > 0 ? `You have existing conversations with all your ${a}` : `${a.charAt(0).toUpperCase() + a.slice(1)} will appear here` })
878
+ ] }) : /* @__PURE__ */ i("ul", { className: "space-y-0", children: [
879
+ I.map((h) => {
880
+ const g = h.name || h.email || h.id, f = h.email && h.name ? h.email : h.phone;
881
881
  return /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
882
882
  "button",
883
883
  {
884
884
  type: "button",
885
- onClick: () => S(m),
886
- onKeyDown: (R) => P(R, m),
885
+ onClick: () => R(h),
886
+ onKeyDown: (S) => T(S, h),
887
887
  className: "w-full px-4 py-3 hover:bg-sand transition-colors border-b border-sand text-left focus:outline-none focus:ring-2 focus:ring-black",
888
- children: /* @__PURE__ */ c("div", { className: "flex items-center justify-between", children: [
889
- /* @__PURE__ */ c("div", { className: "flex items-center space-x-3 flex-1 min-w-0", children: [
888
+ children: /* @__PURE__ */ i("div", { className: "flex items-center justify-between", children: [
889
+ /* @__PURE__ */ i("div", { className: "flex items-center space-x-3 flex-1 min-w-0", children: [
890
890
  /* @__PURE__ */ e(
891
- se,
891
+ ne,
892
892
  {
893
- id: m.id,
894
- name: u,
895
- image: m.image,
893
+ id: h.id,
894
+ name: g,
895
+ image: h.image,
896
896
  size: 40
897
897
  }
898
898
  ),
899
- /* @__PURE__ */ c("div", { className: "flex-1 min-w-0", children: [
900
- /* @__PURE__ */ e("h4", { className: "text-sm font-medium text-charcoal truncate", children: u }),
901
- C && /* @__PURE__ */ e("p", { className: "text-xs text-stone truncate", children: C })
899
+ /* @__PURE__ */ i("div", { className: "flex-1 min-w-0", children: [
900
+ /* @__PURE__ */ e("h4", { className: "text-sm font-medium text-charcoal truncate", children: g }),
901
+ f && /* @__PURE__ */ e("p", { className: "text-xs text-stone truncate", children: f })
902
902
  ] })
903
903
  ] }),
904
- /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: E === m.id ? /* @__PURE__ */ e(J, { className: "h-5 w-5 text-primary animate-spin" }) : /* @__PURE__ */ e(ie, { className: "h-5 w-5 text-stone" }) })
904
+ /* @__PURE__ */ e("div", { className: "flex-shrink-0", children: y === h.id ? /* @__PURE__ */ e(K, { className: "h-5 w-5 text-primary animate-spin" }) : /* @__PURE__ */ e(ie, { className: "h-5 w-5 text-stone" }) })
905
905
  ] })
906
906
  }
907
- ) }, m.id);
907
+ ) }, h.id);
908
908
  }),
909
- i && /* @__PURE__ */ e("li", { className: "p-4 flex justify-center", children: /* @__PURE__ */ c("div", { className: "flex items-center space-x-2", children: [
909
+ u && /* @__PURE__ */ e("li", { className: "p-4 flex justify-center", children: /* @__PURE__ */ i("div", { className: "flex items-center space-x-2", children: [
910
910
  /* @__PURE__ */ e("div", { className: "w-4 h-4 animate-spin rounded-full border-2 border-primary border-t-transparent" }),
911
911
  /* @__PURE__ */ e("span", { className: "text-sm text-stone", children: "Loading more..." })
912
912
  ] }) })
913
913
  ] }) })
914
914
  ] });
915
- }, _e = ({ hasChannels: t, onStartConversation: s, participantLabel: r }) => /* @__PURE__ */ e("div", { className: "messaging-empty-state flex items-center justify-center h-full p-8 text-balance", children: /* @__PURE__ */ c("div", { className: "text-center max-w-sm", children: [
915
+ }, Ve = ({ hasChannels: n, onStartConversation: s, participantLabel: t }) => /* @__PURE__ */ e("div", { className: "messaging-empty-state flex items-center justify-center h-full p-8 text-balance", children: /* @__PURE__ */ i("div", { className: "text-center max-w-sm", children: [
916
916
  /* @__PURE__ */ e("div", { className: "w-24 h-24 bg-primary-alt/10 rounded-full flex items-center justify-center mx-auto mb-6", children: /* @__PURE__ */ e("span", { className: "text-4xl", children: "💬" }) }),
917
917
  /* @__PURE__ */ e("h2", { className: "font-semibold text-charcoal", children: "Welcome to Messages" }),
918
- /* @__PURE__ */ e("p", { className: "text-stone text-sm mb-6", children: t ? /* @__PURE__ */ c(oe, { children: [
918
+ /* @__PURE__ */ e("p", { className: "text-stone text-sm mb-6", children: n ? /* @__PURE__ */ i(oe, { children: [
919
919
  "Choose a conversation from the list or",
920
920
  " ",
921
- s && /* @__PURE__ */ c(ce, { onClick: s, children: [
921
+ s && /* @__PURE__ */ i(ce, { onClick: s, children: [
922
922
  "start a new conversation with a ",
923
- r.slice(0, -1),
923
+ t.slice(0, -1),
924
924
  "."
925
925
  ] })
926
- ] }) : s && /* @__PURE__ */ c(oe, { children: [
927
- /* @__PURE__ */ c(ce, { onClick: s, children: [
926
+ ] }) : s && /* @__PURE__ */ i(oe, { children: [
927
+ /* @__PURE__ */ i(ce, { onClick: s, children: [
928
928
  "Start a new conversation with one of your ",
929
- r
929
+ t
930
930
  ] }),
931
931
  " ",
932
932
  "to begin messaging."
933
933
  ] }) })
934
934
  ] }) }), ce = ({
935
- onClick: t,
935
+ onClick: n,
936
936
  children: s
937
937
  }) => /* @__PURE__ */ e(
938
938
  "button",
939
939
  {
940
940
  type: "button",
941
- onClick: t,
941
+ onClick: n,
942
942
  className: "inline-flex items-center gap-1 text-sm font-medium text-primary hover:text-primary-alt focus:outline-none focus:ring-2 focus:ring-primary",
943
943
  children: s
944
944
  }
945
- ), re = ({ message: t, onBack: s }) => /* @__PURE__ */ e("div", { className: "messaging-error-state flex items-center justify-center h-full p-8", children: /* @__PURE__ */ c("div", { className: "text-center max-w-sm", children: [
945
+ ), re = ({ message: n, onBack: s }) => /* @__PURE__ */ e("div", { className: "messaging-error-state flex items-center justify-center h-full p-8", children: /* @__PURE__ */ i("div", { className: "text-center max-w-sm", children: [
946
946
  /* @__PURE__ */ e("div", { className: "w-24 h-24 bg-danger-alt/20 rounded-full flex items-center justify-center mx-auto mb-6", children: /* @__PURE__ */ e("span", { className: "text-4xl", children: "⚠️" }) }),
947
947
  /* @__PURE__ */ e("h2", { className: "font-semibold text-charcoal mb-2", children: "Oops!" }),
948
- /* @__PURE__ */ e("p", { className: "text-stone text-sm mb-6", children: t }),
948
+ /* @__PURE__ */ e("p", { className: "text-stone text-sm mb-6", children: n }),
949
949
  s && /* @__PURE__ */ e(
950
950
  "button",
951
951
  {
@@ -955,12 +955,12 @@ const $e = ({
955
955
  children: "Go Back"
956
956
  }
957
957
  )
958
- ] }) }), Ve = ({ className: t, message: s }) => /* @__PURE__ */ c(
958
+ ] }) }), We = ({ className: n, message: s }) => /* @__PURE__ */ i(
959
959
  "div",
960
960
  {
961
- className: T("flex items-center justify-center h-full", t),
961
+ className: P("flex items-center justify-center h-full", n),
962
962
  children: [
963
- /* @__PURE__ */ c("svg", { viewBox: "0 0 100 100", className: "size-8 fill-pebble", stroke: "none", children: [
963
+ /* @__PURE__ */ i("svg", { viewBox: "0 0 100 100", className: "size-8 fill-pebble", stroke: "none", children: [
964
964
  /* @__PURE__ */ e("circle", { cx: "6", cy: "50", r: "6", children: /* @__PURE__ */ e(
965
965
  "animateTransform",
966
966
  {
@@ -998,181 +998,216 @@ const $e = ({
998
998
  s && /* @__PURE__ */ e("span", { className: "text-stone", children: s })
999
999
  ]
1000
1000
  }
1001
- ), We = () => /* @__PURE__ */ e("div", { className: "messaging-loading-state flex items-center justify-center h-full", children: /* @__PURE__ */ c("div", { className: "flex items-center", children: [
1002
- /* @__PURE__ */ e(Ve, { className: "w-6 h-6" }),
1001
+ ), ze = () => /* @__PURE__ */ e("div", { className: "messaging-loading-state flex items-center justify-center h-full", children: /* @__PURE__ */ i("div", { className: "flex items-center", children: [
1002
+ /* @__PURE__ */ e(We, { className: "w-6 h-6" }),
1003
1003
  /* @__PURE__ */ e("span", { className: "text-sm text-stone", children: "Loading messages" })
1004
- ] }) }), Ke = ({
1005
- capabilities: t = {},
1004
+ ] }) }), es = ({
1005
+ capabilities: n = {},
1006
1006
  className: s,
1007
- renderMessageInputActions: r,
1007
+ renderMessageInputActions: t,
1008
1008
  onChannelSelect: o,
1009
1009
  onParticipantSelect: a,
1010
- initialParticipantFilter: d
1010
+ initialParticipantFilter: c,
1011
+ initialParticipantData: d
1011
1012
  }) => {
1012
1013
  const {
1013
- service: h,
1014
- client: n,
1015
- isConnected: l,
1016
- isLoading: w,
1017
- error: f,
1018
- refreshConnection: b,
1019
- debug: i
1020
- } = Me(), [N, g] = v(null), [y, E] = v(!1), [U, D] = v(!1), [I, S] = v(/* @__PURE__ */ new Set()), [P, m] = v(0), [u, C] = v(!1), [R, $] = v(null), L = H(null), {
1021
- showStartConversation: _ = !1,
1022
- participantSource: V,
1014
+ service: r,
1015
+ client: l,
1016
+ isConnected: b,
1017
+ isLoading: x,
1018
+ error: v,
1019
+ refreshConnection: u,
1020
+ debug: m
1021
+ } = Le(), [C, w] = E(null), [y, D] = E(!1), [O, I] = E(!1), [R, T] = E(/* @__PURE__ */ new Set()), [h, g] = E(0), [f, S] = E(!1), [V, U] = E(null), j = H(null), {
1022
+ showStartConversation: Z = !1,
1023
+ participantSource: $,
1023
1024
  participantLabel: W = "participants"
1024
- } = t, z = H(null), j = O(async () => {
1025
- if (!n || !l) return;
1026
- const x = n.userID;
1027
- if (x)
1025
+ } = n, z = H(null), A = M(async () => {
1026
+ if (!l || !b) return;
1027
+ const N = l.userID;
1028
+ if (N)
1028
1029
  try {
1029
- i && console.log("[MessagingShell] Syncing channels for user:", x);
1030
- const p = await n.queryChannels(
1030
+ m && console.log("[MessagingShell] Syncing channels for user:", N);
1031
+ const p = await l.queryChannels(
1031
1032
  {
1032
1033
  type: "messaging",
1033
- members: { $in: [x] }
1034
+ members: { $in: [N] }
1034
1035
  },
1035
1036
  {},
1036
1037
  { limit: 100 }
1037
1038
  ), F = /* @__PURE__ */ new Set();
1038
- p.forEach((ne) => {
1039
- const fe = ne.state.members;
1040
- Object.values(fe).forEach((ge) => {
1039
+ p.forEach((_) => {
1040
+ const ge = _.state.members;
1041
+ Object.values(ge).forEach((xe) => {
1041
1042
  var le;
1042
- const te = (le = ge.user) == null ? void 0 : le.id;
1043
- te && te !== x && F.add(te);
1043
+ const te = (le = xe.user) == null ? void 0 : le.id;
1044
+ te && te !== N && F.add(te);
1044
1045
  });
1045
- }), S(F), E(p.length > 0), z.current = x, i && console.log("[MessagingShell] Channels synced successfully:", {
1046
+ }), T(F), D(p.length > 0), z.current = N, m && console.log("[MessagingShell] Channels synced successfully:", {
1046
1047
  channelCount: p.length,
1047
1048
  memberCount: F.size
1048
1049
  });
1049
1050
  } catch (p) {
1050
1051
  console.error("[MessagingShell] Failed to sync channels:", p);
1051
1052
  }
1052
- }, [n, l, i]);
1053
+ }, [l, b, m]);
1053
1054
  G(() => {
1054
- if (!n || !l) return;
1055
- const x = n.userID;
1056
- x && z.current !== x && j();
1057
- }, [n, l, j]), G(() => {
1058
- if (!d || !n || !l) return;
1055
+ if (!l || !b) return;
1056
+ const N = l.userID;
1057
+ N && z.current !== N && A();
1058
+ }, [l, b, A]), G(() => {
1059
+ if (!c || !l || !b) return;
1059
1060
  (async () => {
1060
- const p = n.userID;
1061
+ const p = l.userID;
1061
1062
  if (p)
1062
1063
  try {
1063
- i && console.log(
1064
+ m && console.log(
1064
1065
  "[MessagingShell] Loading initial conversation with:",
1065
- d
1066
+ c
1066
1067
  );
1067
- const F = await n.queryChannels(
1068
+ const F = await l.queryChannels(
1068
1069
  {
1069
1070
  type: "messaging",
1070
- members: { $in: [p, d] }
1071
+ members: { $eq: [p, c] }
1071
1072
  },
1072
1073
  {},
1073
1074
  { limit: 1 }
1074
1075
  );
1075
- F.length > 0 ? (g(F[0]), C(!0), $(null), i && console.log(
1076
- "[MessagingShell] Initial conversation loaded:",
1077
- F[0].id
1078
- )) : ($("No conversation found with this account"), i && console.log(
1079
- "[MessagingShell] No conversation found for:",
1080
- d
1081
- ));
1076
+ if (F.length > 0)
1077
+ w(F[0]), S(!0), U(null), m && console.log(
1078
+ "[MessagingShell] Initial conversation loaded:",
1079
+ F[0].id
1080
+ );
1081
+ else if (d && r) {
1082
+ m && console.log(
1083
+ "[MessagingShell] No conversation found, creating one for:",
1084
+ d
1085
+ );
1086
+ try {
1087
+ const _ = await r.startChannelWithParticipant({
1088
+ id: d.id,
1089
+ name: d.name,
1090
+ email: d.email,
1091
+ phone: d.phone
1092
+ });
1093
+ w(_), S(!0), U(null), m && console.log(
1094
+ "[MessagingShell] Channel created and loaded:",
1095
+ _.id
1096
+ );
1097
+ } catch (_) {
1098
+ console.error(
1099
+ "[MessagingShell] Failed to create conversation:",
1100
+ _
1101
+ ), U("Failed to create conversation");
1102
+ }
1103
+ } else
1104
+ U(
1105
+ "No conversation found with this account"
1106
+ ), m && console.log(
1107
+ "[MessagingShell] No conversation found for:",
1108
+ c
1109
+ );
1082
1110
  } catch (F) {
1083
1111
  console.error(
1084
1112
  "[MessagingShell] Failed to load initial conversation:",
1085
1113
  F
1086
- ), $("Failed to load conversation");
1114
+ ), U("Failed to load conversation");
1087
1115
  }
1088
1116
  })();
1089
- }, [d, n, l, i]);
1090
- const q = O(
1091
- (x) => {
1092
- g(x), o == null || o(x);
1117
+ }, [
1118
+ c,
1119
+ d,
1120
+ l,
1121
+ b,
1122
+ r,
1123
+ m
1124
+ ]);
1125
+ const k = M(
1126
+ (N) => {
1127
+ w(N), o == null || o(N);
1093
1128
  },
1094
1129
  [o]
1095
- ), k = O(() => {
1096
- u || g(null);
1097
- }, [u]), M = O(() => {
1098
- var x;
1099
- V && (m((p) => p + 1), D(!0), (x = L.current) == null || x.showModal());
1100
- }, [V]), B = O(
1101
- async (x) => {
1130
+ ), L = M(() => {
1131
+ f || w(null);
1132
+ }, [f]), B = M(() => {
1133
+ var N;
1134
+ $ && (g((p) => p + 1), I(!0), (N = j.current) == null || N.showModal());
1135
+ }, [$]), q = M(
1136
+ async (N) => {
1102
1137
  var p;
1103
- if (h)
1138
+ if (r)
1104
1139
  try {
1105
- i && console.log(
1140
+ m && console.log(
1106
1141
  "[MessagingShell] Starting conversation with:",
1107
- x.id
1142
+ N.id
1108
1143
  );
1109
- const F = await h.startChannelWithParticipant({
1110
- id: x.id,
1111
- name: x.name,
1112
- email: x.email,
1113
- phone: x.phone
1144
+ const F = await r.startChannelWithParticipant({
1145
+ id: N.id,
1146
+ name: N.name,
1147
+ email: N.email,
1148
+ phone: N.phone
1114
1149
  });
1115
1150
  try {
1116
1151
  await F.show();
1117
- } catch (ne) {
1118
- console.warn("[MessagingShell] Failed to unhide channel:", ne);
1152
+ } catch (_) {
1153
+ console.warn("[MessagingShell] Failed to unhide channel:", _);
1119
1154
  }
1120
- g(F), D(!1), (p = L.current) == null || p.close(), a == null || a(x);
1155
+ w(F), I(!1), (p = j.current) == null || p.close(), a == null || a(N);
1121
1156
  } catch (F) {
1122
1157
  console.error("[MessagingShell] Failed to start conversation:", F);
1123
1158
  }
1124
1159
  },
1125
- [h, a, i]
1126
- ), A = O(() => {
1127
- var x;
1128
- D(!1), (x = L.current) == null || x.close();
1129
- }, []), Q = O(
1130
- async (x) => {
1131
- i && console.log("[MessagingShell] Leaving conversation:", x.id), g(null), z.current = null, await j();
1160
+ [r, a, m]
1161
+ ), X = M(() => {
1162
+ var N;
1163
+ I(!1), (N = j.current) == null || N.close();
1164
+ }, []), he = M(
1165
+ async (N) => {
1166
+ m && console.log("[MessagingShell] Leaving conversation:", N.id), w(null), S(!1), z.current = null, await A();
1132
1167
  },
1133
- [j, i]
1134
- ), he = O(
1135
- async (x) => {
1136
- i && console.log("[MessagingShell] Blocking participant:", x), g(null), z.current = null, await j();
1168
+ [A, m]
1169
+ ), fe = M(
1170
+ async (N) => {
1171
+ m && console.log("[MessagingShell] Blocking participant:", N), w(null), S(!1), z.current = null, await A();
1137
1172
  },
1138
- [j, i]
1139
- ), Z = !!N;
1140
- return w ? /* @__PURE__ */ e("div", { className: T("h-full", s), children: /* @__PURE__ */ e(We, {}) }) : f ? /* @__PURE__ */ e("div", { className: T("h-full", s), children: /* @__PURE__ */ e(re, { message: f, onBack: b }) }) : !l || !n ? /* @__PURE__ */ e("div", { className: T("h-full", s), children: /* @__PURE__ */ e(
1173
+ [A, m]
1174
+ ), Y = !!C;
1175
+ return x ? /* @__PURE__ */ e("div", { className: P("h-full", s), children: /* @__PURE__ */ e(ze, {}) }) : v ? /* @__PURE__ */ e("div", { className: P("h-full", s), children: /* @__PURE__ */ e(re, { message: v, onBack: u }) }) : !b || !l ? /* @__PURE__ */ e("div", { className: P("h-full", s), children: /* @__PURE__ */ e(
1141
1176
  re,
1142
1177
  {
1143
1178
  message: "Not connected to messaging service",
1144
- onBack: b
1179
+ onBack: u
1145
1180
  }
1146
- ) }) : R ? /* @__PURE__ */ e("div", { className: T("h-full", s), children: /* @__PURE__ */ e(re, { message: R }) }) : /* @__PURE__ */ c(
1181
+ ) }) : V ? /* @__PURE__ */ e("div", { className: P("h-full", s), children: /* @__PURE__ */ e(re, { message: V }) }) : /* @__PURE__ */ i(
1147
1182
  "div",
1148
1183
  {
1149
- className: T(
1184
+ className: P(
1150
1185
  "messaging-shell h-full bg-white overflow-hidden",
1151
1186
  s
1152
1187
  ),
1153
1188
  children: [
1154
- /* @__PURE__ */ c("div", { className: "flex h-full min-h-0", children: [
1189
+ /* @__PURE__ */ i("div", { className: "flex h-full min-h-0", children: [
1155
1190
  /* @__PURE__ */ e(
1156
1191
  "div",
1157
1192
  {
1158
- className: T(
1193
+ className: P(
1159
1194
  "messaging-channel-list-sidebar min-h-0 min-w-0 bg-white lg:bg-chalk lg:flex lg:flex-col lg:border-r lg:border-sand",
1160
1195
  {
1161
1196
  // In direct conversation mode, always hide the channel list
1162
- hidden: u,
1197
+ hidden: f,
1163
1198
  // Normal mode: hide on mobile when channel selected, show on desktop
1164
- "hidden lg:flex lg:w-80 lg:min-w-[280px] lg:max-w-[360px]": !u && Z,
1199
+ "hidden lg:flex lg:w-80 lg:min-w-[280px] lg:max-w-[360px]": !f && Y,
1165
1200
  // Normal mode: show when no channel selected
1166
- "flex flex-col w-full lg:flex-1 lg:max-w-2xl": !u && !Z
1201
+ "flex flex-col w-full lg:flex-1 lg:max-w-2xl": !f && !Y
1167
1202
  }
1168
1203
  ),
1169
1204
  children: /* @__PURE__ */ e(
1170
- pe,
1205
+ je,
1171
1206
  {
1172
- onChannelSelect: q,
1173
- selectedChannel: N || void 0,
1174
- showStartConversation: _ && !!V,
1175
- onStartConversation: M,
1207
+ onChannelSelect: k,
1208
+ selectedChannel: C || void 0,
1209
+ showStartConversation: Z && !!$,
1210
+ onStartConversation: B,
1176
1211
  participantLabel: W
1177
1212
  }
1178
1213
  )
@@ -1181,113 +1216,113 @@ const $e = ({
1181
1216
  /* @__PURE__ */ e(
1182
1217
  "div",
1183
1218
  {
1184
- className: T(
1219
+ className: P(
1185
1220
  "messaging-conversation-view flex-1 flex-col min-w-0 min-h-0",
1186
1221
  {
1187
1222
  // In direct conversation mode, always show (full width)
1188
- flex: u || Z,
1223
+ flex: f || Y,
1189
1224
  // Normal mode: hide on mobile when no channel selected
1190
- "hidden lg:flex": !u && !Z
1225
+ "hidden lg:flex": !f && !Y
1191
1226
  }
1192
1227
  ),
1193
- children: N ? /* @__PURE__ */ e("div", { className: "flex-1 min-h-0 flex flex-col", children: /* @__PURE__ */ e(
1194
- He,
1228
+ children: C ? /* @__PURE__ */ e("div", { className: "flex-1 min-h-0 flex flex-col", children: /* @__PURE__ */ e(
1229
+ Ge,
1195
1230
  {
1196
- channel: N,
1197
- onBack: k,
1198
- showBackButton: !0,
1199
- renderMessageInputActions: r,
1200
- onLeaveConversation: Q,
1201
- onBlockParticipant: he
1231
+ channel: C,
1232
+ onBack: L,
1233
+ showBackButton: !f,
1234
+ renderMessageInputActions: t,
1235
+ onLeaveConversation: he,
1236
+ onBlockParticipant: fe
1202
1237
  },
1203
- N.id
1238
+ C.id
1204
1239
  ) }) : /* @__PURE__ */ e(
1205
- _e,
1240
+ Ve,
1206
1241
  {
1207
1242
  hasChannels: y,
1208
- onStartConversation: _ ? M : void 0,
1243
+ onStartConversation: Z ? B : void 0,
1209
1244
  participantLabel: W
1210
1245
  }
1211
1246
  )
1212
1247
  }
1213
1248
  )
1214
1249
  ] }),
1215
- V && // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
1250
+ $ && // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
1216
1251
  /* @__PURE__ */ e(
1217
1252
  "dialog",
1218
1253
  {
1219
- ref: L,
1254
+ ref: j,
1220
1255
  className: "mes-dialog",
1221
- onClick: (x) => {
1222
- x.target === L.current && A();
1256
+ onClick: (N) => {
1257
+ N.target === j.current && X();
1223
1258
  },
1224
- onClose: A,
1259
+ onClose: X,
1225
1260
  children: /* @__PURE__ */ e("div", { className: "h-full w-full bg-white shadow-max-elevation-light", children: /* @__PURE__ */ e(
1226
- $e,
1261
+ _e,
1227
1262
  {
1228
- participantSource: V,
1229
- onSelectParticipant: B,
1230
- onClose: A,
1231
- existingParticipantIds: I,
1263
+ participantSource: $,
1264
+ onSelectParticipant: q,
1265
+ onClose: X,
1266
+ existingParticipantIds: R,
1232
1267
  participantLabel: W,
1233
1268
  searchPlaceholder: `Search ${W}...`
1234
1269
  },
1235
- P
1270
+ h
1236
1271
  ) })
1237
1272
  }
1238
1273
  )
1239
1274
  ]
1240
1275
  }
1241
1276
  );
1242
- }, es = (t, s = {}) => {
1243
- const { initialSearch: r = "", pageSize: o = 20 } = s, [a, d] = v([]), [h, n] = v(!1), [l, w] = v(null), [f, b] = v(r), [i, N] = v(!0), [g, y] = v(), E = O(async (S = !1, P) => {
1244
- if (h) return;
1245
- const m = P !== void 0 ? P : f;
1246
- n(!0), w(null);
1277
+ }, ss = (n, s = {}) => {
1278
+ const { initialSearch: t = "", pageSize: o = 20 } = s, [a, c] = E([]), [d, r] = E(!1), [l, b] = E(null), [x, v] = E(t), [u, m] = E(!0), [C, w] = E(), y = M(async (R = !1, T) => {
1279
+ if (d) return;
1280
+ const h = T !== void 0 ? T : x;
1281
+ r(!0), b(null);
1247
1282
  try {
1248
- const u = await t.loadParticipants({
1249
- search: m || void 0,
1283
+ const g = await n.loadParticipants({
1284
+ search: h || void 0,
1250
1285
  limit: o,
1251
- cursor: S ? void 0 : g
1286
+ cursor: R ? void 0 : C
1252
1287
  });
1253
- d(
1254
- (C) => S ? u.participants : [...C, ...u.participants]
1255
- ), N(u.hasMore), y(u.nextCursor);
1256
- } catch (u) {
1257
- const C = u instanceof Error ? u.message : "Failed to load participants";
1258
- w(C), console.error("[useParticipants] Load error:", u);
1288
+ c(
1289
+ (f) => R ? g.participants : [...f, ...g.participants]
1290
+ ), m(g.hasMore), w(g.nextCursor);
1291
+ } catch (g) {
1292
+ const f = g instanceof Error ? g.message : "Failed to load participants";
1293
+ b(f), console.error("[useParticipants] Load error:", g);
1259
1294
  } finally {
1260
- n(!1);
1295
+ r(!1);
1261
1296
  }
1262
- }, [t, f, g, o, h]), U = O(() => {
1263
- i && !h && E(!1);
1264
- }, [i, h, E]), D = O((S) => {
1265
- b(S), y(void 0), E(!0, S);
1266
- }, [E]), I = O(() => {
1267
- y(void 0), E(!0);
1268
- }, [E]);
1297
+ }, [n, x, C, o, d]), D = M(() => {
1298
+ u && !d && y(!1);
1299
+ }, [u, d, y]), O = M((R) => {
1300
+ v(R), w(void 0), y(!0, R);
1301
+ }, [y]), I = M(() => {
1302
+ w(void 0), y(!0);
1303
+ }, [y]);
1269
1304
  return G(() => {
1270
- E(!0);
1271
- }, [t.loadParticipants]), {
1305
+ y(!0);
1306
+ }, [n.loadParticipants]), {
1272
1307
  participants: a,
1273
- loading: h,
1308
+ loading: d,
1274
1309
  error: l,
1275
- searchQuery: f,
1276
- hasMore: i,
1277
- totalCount: t.totalCount,
1278
- loadMore: U,
1279
- search: D,
1310
+ searchQuery: x,
1311
+ hasMore: u,
1312
+ totalCount: n.totalCount,
1313
+ loadMore: D,
1314
+ search: O,
1280
1315
  refresh: I
1281
1316
  };
1282
1317
  };
1283
1318
  export {
1284
- se as Avatar,
1285
- pe as ChannelList,
1286
- He as ChannelView,
1287
- Je as MessagingProvider,
1288
- Ke as MessagingShell,
1289
- $e as ParticipantPicker,
1290
- Me as useMessaging,
1291
- es as useParticipants
1319
+ ne as Avatar,
1320
+ je as ChannelList,
1321
+ Ge as ChannelView,
1322
+ Ke as MessagingProvider,
1323
+ es as MessagingShell,
1324
+ _e as ParticipantPicker,
1325
+ Le as useMessaging,
1326
+ ss as useParticipants
1292
1327
  };
1293
1328
  //# sourceMappingURL=index.js.map