@paramms/chat-widget 1.0.33 → 1.0.34

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/react.js CHANGED
@@ -1,321 +1,352 @@
1
- import { jsxs as W, jsx as p, Fragment as k } from "react/jsx-runtime";
2
- import { useState as D, useRef as M, useEffect as z } from "react";
3
- import { mount as H } from "./index.js";
4
- function P({
5
- url: g,
6
- apiUrl: l,
7
- profileId: v,
8
- token: d,
9
- refreshToken: w,
10
- userId: n,
1
+ import { jsxs as L, jsx as u, Fragment as F } from "react/jsx-runtime";
2
+ import { useState as D, useRef as $, useEffect as _ } from "react";
3
+ import { mount as W } from "./index.js";
4
+ function J({
5
+ url: a,
6
+ apiUrl: n,
7
+ profileId: r,
8
+ token: t,
9
+ refreshToken: l,
10
+ userId: o,
11
11
  userName: c,
12
- userEmail: s,
13
- userAvatar: f,
14
- contextTitle: x,
15
- contextSubtitle: y,
16
- contextStatus: R,
17
- subjectId: t,
18
- accent: b,
19
- launcher: h,
20
- position: i,
21
- quickReplies: u,
22
- height: m = "100%",
23
- i18n: a,
24
- translateLang: C
12
+ userEmail: p,
13
+ userAvatar: b,
14
+ contextTitle: m,
15
+ contextSubtitle: x,
16
+ contextStatus: C,
17
+ subjectId: M,
18
+ accent: j,
19
+ launcher: e,
20
+ position: y,
21
+ quickReplies: d,
22
+ height: v = "100%",
23
+ i18n: f,
24
+ translateLang: g
25
25
  }) {
26
- const r = M(null), o = M(null);
27
- return z(() => {
28
- var e;
29
- if (r.current)
30
- return (e = o.current) == null || e.close(), o.current = H({
31
- el: r.current,
32
- url: g,
33
- ...l ? { apiUrl: l } : {},
34
- profileId: v,
35
- ...t ? { subjectId: t } : {},
36
- ...d ? { token: d } : {},
37
- ...w ? { refreshToken: w } : {},
38
- ...n ? { userId: n } : {},
39
- ...n || c || s || f ? {
26
+ const w = $(null), h = $(null);
27
+ return _(() => {
28
+ var i;
29
+ if (w.current)
30
+ return (i = h.current) == null || i.close(), h.current = W({
31
+ el: w.current,
32
+ url: a,
33
+ ...n ? { apiUrl: n } : {},
34
+ profileId: r,
35
+ ...M ? { subjectId: M } : {},
36
+ ...t ? { token: t } : {},
37
+ ...l ? { refreshToken: l } : {},
38
+ ...o ? { userId: o } : {},
39
+ ...o || c || p || b ? {
40
40
  user: {
41
41
  ...c ? { name: c } : {},
42
- ...s ? { email: s } : {},
43
- ...f ? { avatar: f } : {}
42
+ ...p ? { email: p } : {},
43
+ ...b ? { avatar: b } : {}
44
44
  }
45
45
  } : {},
46
- ...x ? {
46
+ ...m ? {
47
47
  subject: {
48
- title: x,
49
- ...y ? { subtitle: y } : {},
50
- ...R ? { status: R } : {}
48
+ title: m,
49
+ ...x ? { subtitle: x } : {},
50
+ ...C ? { status: C } : {}
51
51
  }
52
52
  } : {},
53
- ...u ? { quickReplies: u } : {},
54
- ...b ? { accent: b } : {},
55
- ...C ? { translateLang: C } : {},
56
- ...a ? { i18n: a } : {},
57
- ...h ? { launcher: h, position: i ?? "bottom-right" } : {}
53
+ ...d ? { quickReplies: d } : {},
54
+ ...j ? { accent: j } : {},
55
+ ...g ? { translateLang: g } : {},
56
+ ...f ? { i18n: f } : {},
57
+ ...e ? { launcher: e, position: y ?? "bottom-right" } : {}
58
58
  }), () => {
59
- var j;
60
- (j = o.current) == null || j.close(), o.current = null;
59
+ var s;
60
+ (s = h.current) == null || s.close(), h.current = null;
61
61
  };
62
- }, [g, l, v, t, d, n, c, s, b, h, i, C]), /* @__PURE__ */ p(
62
+ }, [a, n, r, M, t, o, c, p, j, e, y, g]), /* @__PURE__ */ u(
63
63
  "div",
64
64
  {
65
- ref: r,
66
- style: h ? { width: 0, height: 0, overflow: "hidden" } : { width: "100%", height: m, minHeight: m === "100%" ? "480px" : void 0 }
65
+ ref: w,
66
+ style: e ? { width: 0, height: 0, overflow: "hidden" } : { width: "100%", height: v, minHeight: v === "100%" ? "480px" : void 0 }
67
67
  }
68
68
  );
69
69
  }
70
- const O = [
70
+ const Y = [
71
71
  "Is this still available?",
72
72
  "Can I schedule a viewing?",
73
73
  "What is your best price?"
74
74
  ];
75
- function G({
76
- url: g,
77
- apiUrl: l,
78
- profileId: v,
79
- token: d,
80
- refreshToken: w,
81
- listingId: n,
75
+ function P({
76
+ url: a,
77
+ apiUrl: n,
78
+ profileId: r,
79
+ token: t,
80
+ refreshToken: l,
81
+ listingId: o,
82
82
  listingTitle: c,
83
- listingMeta: s,
84
- listingPrice: f,
85
- listingStatus: x,
86
- userId: y,
87
- userName: R,
88
- userEmail: t,
89
- userAvatar: b,
90
- accent: h,
91
- launcher: i,
92
- position: u,
93
- quickReplies: m,
94
- height: a = "100%",
95
- i18n: C,
96
- translateLang: r
83
+ listingMeta: p,
84
+ listingPrice: b,
85
+ listingStatus: m,
86
+ userId: x,
87
+ userName: C,
88
+ userEmail: M,
89
+ userAvatar: j,
90
+ accent: e,
91
+ launcher: y,
92
+ position: d,
93
+ quickReplies: v,
94
+ height: f = "100%",
95
+ i18n: g,
96
+ translateLang: w
97
97
  }) {
98
- const o = M(null), e = M(null);
99
- return z(() => {
100
- if (!o.current) return;
101
- let j = !1;
102
- const $ = setTimeout(() => {
103
- var L;
104
- j || !o.current || ((L = e.current) == null || L.close(), e.current = H({
105
- el: o.current,
106
- url: g,
107
- ...l ? { apiUrl: l } : {},
108
- profileId: v,
109
- ...n ? { subjectId: `listing_${n}` } : {},
110
- ...d ? { token: d } : {},
111
- ...w ? { refreshToken: w } : {},
112
- ...y ? { userId: y } : {},
113
- ...y || R || t || b ? {
98
+ const h = $(null), i = $(null);
99
+ return _(() => {
100
+ if (!h.current) return;
101
+ let s = !1;
102
+ const R = setTimeout(() => {
103
+ var z;
104
+ s || !h.current || ((z = i.current) == null || z.close(), i.current = W({
105
+ el: h.current,
106
+ url: a,
107
+ ...n ? { apiUrl: n } : {},
108
+ profileId: r,
109
+ ...o ? { subjectId: `listing_${o}` } : {},
110
+ ...t ? { token: t } : {},
111
+ ...l ? { refreshToken: l } : {},
112
+ ...x ? { userId: x } : {},
113
+ ...x || C || M || j ? {
114
114
  user: {
115
- ...R ? { name: R } : {},
116
- ...t ? { email: t } : {},
117
- ...b ? { avatar: b } : {},
118
- ...n ? { meta: { listingId: n } } : {}
115
+ ...C ? { name: C } : {},
116
+ ...M ? { email: M } : {},
117
+ ...j ? { avatar: j } : {},
118
+ ...o ? { meta: { listingId: o } } : {}
119
119
  }
120
120
  } : {},
121
121
  ...c ? {
122
122
  subject: {
123
123
  title: c,
124
- ...s ? { subtitle: s } : {},
125
- ...f ? { tags: [`$${f.toLocaleString()}`] } : {},
126
- ...x ? { status: x } : {}
124
+ ...p ? { subtitle: p } : {},
125
+ ...b ? { tags: [`$${b.toLocaleString()}`] } : {},
126
+ ...m ? { status: m } : {}
127
127
  }
128
128
  } : {},
129
- quickReplies: m ?? O,
130
- ...h ? { accent: h } : {},
131
- ...r ? { translateLang: r } : {},
132
- ...C ? { i18n: C } : {},
133
- ...i ? { launcher: i, position: u ?? "bottom-right" } : {}
129
+ quickReplies: v ?? Y,
130
+ ...e ? { accent: e } : {},
131
+ ...w ? { translateLang: w } : {},
132
+ ...g ? { i18n: g } : {},
133
+ ...y ? { launcher: y, position: d ?? "bottom-right" } : {}
134
134
  }));
135
135
  }, 0);
136
136
  return () => {
137
- var L;
138
- j = !0, clearTimeout($), (L = e.current) == null || L.close(), e.current = null;
137
+ var z;
138
+ s = !0, clearTimeout(R), (z = i.current) == null || z.close(), i.current = null;
139
139
  };
140
- }, [g, l, v, n, d, y, h, i, u, r]), /* @__PURE__ */ p(
140
+ }, [a, n, r, o, t, x, e, y, d, w]), /* @__PURE__ */ u(
141
141
  "div",
142
142
  {
143
- ref: o,
144
- style: i ? { width: 0, height: 0, overflow: "hidden" } : { width: "100%", height: a, minHeight: a === "100%" ? "480px" : void 0 }
143
+ ref: h,
144
+ style: y ? { width: 0, height: 0, overflow: "hidden" } : { width: "100%", height: f, minHeight: f === "100%" ? "480px" : void 0 }
145
145
  }
146
146
  );
147
147
  }
148
- function B({
149
- url: g,
150
- apiUrl: l,
151
- profileId: v,
152
- token: d,
153
- refreshToken: w,
154
- userId: n,
155
- userName: c,
156
- userEmail: s,
157
- accent: f,
148
+ function B(a) {
149
+ const [n, r] = D(
150
+ typeof window < "u" && window.innerWidth <= a
151
+ );
152
+ return _(() => {
153
+ if (typeof window > "u" || !window.matchMedia) return;
154
+ const t = window.matchMedia(`(max-width: ${a}px)`), l = (o) => r(o.matches);
155
+ return r(t.matches), t.addEventListener("change", l), () => t.removeEventListener("change", l);
156
+ }, [a]), n;
157
+ }
158
+ function A({
159
+ url: a,
160
+ apiUrl: n,
161
+ profileId: r,
162
+ tenantId: t,
163
+ token: l,
164
+ refreshToken: o,
165
+ userId: c,
166
+ userName: p,
167
+ userEmail: b,
168
+ accent: m,
158
169
  height: x = "100%",
159
- i18n: y,
160
- scope: R = "tenant"
170
+ i18n: C,
171
+ scope: M = "tenant"
161
172
  }) {
162
- const [t, b] = D(null), h = M(null), i = M(null), u = M(null), m = M(null);
163
- z(() => {
164
- if (!h.current) return;
165
- let r = !1;
166
- return import("./chatlist.js").then(({ mountChatList: o }) => {
167
- r || !h.current || (u.current = o({
168
- el: h.current,
169
- url: g,
170
- ...l ? { apiUrl: l } : {},
171
- profileId: v,
172
- scope: R,
173
- onSelect: (e) => b(e),
173
+ const j = !r && !t, [e, y] = D(null), d = $(null), v = $(null), f = $(null), g = $(null);
174
+ _(() => {
175
+ if (!d.current) return;
176
+ let h = !1;
177
+ return import("./chatlist.js").then(({ mountChatList: i }) => {
178
+ h || !d.current || (f.current = i({
179
+ el: d.current,
180
+ url: a,
181
+ ...n ? { apiUrl: n } : {},
182
+ ...r ? { profileId: r } : {},
183
+ ...t ? { tenantId: t } : {},
184
+ scope: M,
185
+ onSelect: (s) => y(s),
174
186
  // Compose (✎) opens the chatroom's general support thread — without
175
187
  // this a user with no conversations yet had an empty list and no way
176
188
  // to ever start one, which is what made ChatApp feel broken.
177
- onNewChat: () => b({ id: "__new__", state: "open", updatedAt: Date.now() }),
178
- ...d ? { token: d } : {},
179
- ...n ? { userId: n } : {},
180
- ...f ? { accent: f } : {},
181
- ...y ? { i18n: y } : {}
189
+ // Compose target: the configured chatroom, else the tenant's default
190
+ // (oldest chatroom, reported by the server on the first list fetch).
191
+ onNewChat: () => {
192
+ var R;
193
+ const s = (R = f.current) == null ? void 0 : R.defaultProfileId();
194
+ s && y({ id: "__new__", profileId: s, state: "open", updatedAt: Date.now() });
195
+ },
196
+ ...l ? { token: l } : {},
197
+ ...c ? { userId: c } : {},
198
+ ...m ? { accent: m } : {},
199
+ ...C ? { i18n: C } : {}
182
200
  }));
183
201
  }), () => {
184
- var o;
185
- r = !0, (o = u.current) == null || o.close(), u.current = null;
202
+ var i;
203
+ h = !0, (i = f.current) == null || i.close(), f.current = null;
186
204
  };
187
- }, [g, l, v, d, n, R]), z(() => {
188
- var o;
189
- if (!i.current || !t) return;
190
- (o = m.current) == null || o.close(), m.current = H({
191
- el: i.current,
192
- url: g,
193
- ...l ? { apiUrl: l } : {},
194
- profileId: t.profileId ?? v,
205
+ }, [a, n, r, t, l, c, M]), _(() => {
206
+ var i;
207
+ if (!v.current || !e) return;
208
+ (i = g.current) == null || i.close(), g.current = W({
209
+ el: v.current,
210
+ url: a,
211
+ ...n ? { apiUrl: n } : {},
212
+ profileId: e.profileId ?? r,
213
+ // rows always carry theirs; compose sets one explicitly
195
214
  // DM rows open as direct conversations (kind + peer). Opening them via
196
215
  // their dm:… subjectId only works for the participant that OWNS the
197
216
  // thread key — the other side would silently fork a duplicate.
198
- ...t.kind === "direct" && t.peerId ? { kind: "direct", peerId: t.peerId } : t.subjectId ? { subjectId: t.subjectId } : {},
199
- ...d ? { token: d } : {},
200
- ...w ? { refreshToken: w } : {},
201
- ...n ? { userId: n } : {},
202
- ...n || c || s ? {
217
+ ...e.kind === "direct" && e.peerId ? { kind: "direct", peerId: e.peerId } : e.subjectId ? { subjectId: e.subjectId } : {},
218
+ ...l ? { token: l } : {},
219
+ ...o ? { refreshToken: o } : {},
220
+ ...c ? { userId: c } : {},
221
+ ...c || p || b ? {
203
222
  user: {
204
- ...c ? { name: c } : {},
205
- ...s ? { email: s } : {}
223
+ ...p ? { name: p } : {},
224
+ ...b ? { email: b } : {}
206
225
  }
207
226
  } : {},
208
- ...t.subjectTitle ? {
227
+ ...e.subjectTitle ? {
209
228
  subject: {
210
- title: t.subjectTitle,
211
- ...t.subjectMeta ? { subtitle: t.subjectMeta } : {}
229
+ title: e.subjectTitle,
230
+ ...e.subjectMeta ? { subtitle: e.subjectMeta } : {}
212
231
  }
213
232
  } : {},
214
- ...f ? { accent: f } : {}
233
+ ...m ? { accent: m } : {}
215
234
  });
216
- const r = setInterval(() => {
217
- var e;
218
- return (e = u.current) == null ? void 0 : e.refresh();
235
+ const h = setInterval(() => {
236
+ var s;
237
+ return (s = f.current) == null ? void 0 : s.refresh();
219
238
  }, 2e4);
220
239
  return () => {
221
- var e, j;
222
- clearInterval(r), (e = m.current) == null || e.close(), m.current = null, (j = u.current) == null || j.refresh();
240
+ var s, R;
241
+ clearInterval(h), (s = g.current) == null || s.close(), g.current = null, (R = f.current) == null || R.refresh();
223
242
  };
224
- }, [t == null ? void 0 : t.id]);
225
- const [a, C] = D(typeof window < "u" && window.innerWidth < 768);
226
- return z(() => {
227
- if (typeof window > "u" || !window.matchMedia) return;
228
- const r = window.matchMedia("(max-width: 767px)"), o = (e) => C(e.matches);
229
- return C(r.matches), r.addEventListener("change", o), () => r.removeEventListener("change", o);
230
- }, []), /* @__PURE__ */ W("div", { style: { display: "flex", width: "100%", height: x, minHeight: "400px", overflow: "hidden" }, children: [
231
- /* @__PURE__ */ p("div", { style: {
232
- width: a ? "100%" : "360px",
233
- flex: a && t ? "none" : void 0,
234
- display: a && t ? "none" : "flex",
243
+ }, [e == null ? void 0 : e.id]);
244
+ const w = B(767);
245
+ return j ? /* @__PURE__ */ L("div", { style: { padding: 16, font: "13px system-ui", color: "#b91c1c", background: "#fef2f2", borderRadius: 8 }, children: [
246
+ "[relay] <ChatApp/> needs a ",
247
+ /* @__PURE__ */ u("code", { children: "profileId" }),
248
+ " or a ",
249
+ /* @__PURE__ */ u("code", { children: "tenantId" }),
250
+ "."
251
+ ] }) : /* @__PURE__ */ L("div", { style: { display: "flex", width: "100%", height: x, minHeight: "400px", overflow: "hidden" }, children: [
252
+ /* @__PURE__ */ u("div", { style: {
253
+ width: w ? "100%" : "360px",
254
+ flex: w && e ? "none" : void 0,
255
+ display: w && e ? "none" : "flex",
235
256
  flexDirection: "column",
236
- borderRight: a ? "none" : "1px solid #e8eaed",
257
+ borderRight: w ? "none" : "1px solid #e8eaed",
237
258
  minWidth: 0
238
- }, children: /* @__PURE__ */ p("div", { ref: h, style: { width: "100%", height: "100%" } }) }),
239
- t ? /* @__PURE__ */ W("div", { style: { flex: 1, display: "flex", flexDirection: "column", minWidth: 0, position: "relative" }, children: [
240
- a && /* @__PURE__ */ p(
259
+ }, children: /* @__PURE__ */ u("div", { ref: d, style: { width: "100%", height: "100%" } }) }),
260
+ e ? /* @__PURE__ */ L("div", { style: { flex: 1, display: "flex", flexDirection: "column", minWidth: 0, position: "relative" }, children: [
261
+ w && /* @__PURE__ */ u(
241
262
  "button",
242
263
  {
243
- onClick: () => b(null),
264
+ onClick: () => y(null),
244
265
  style: { position: "absolute", top: 12, left: 12, zIndex: 10, background: "none", border: "none", fontSize: 22, cursor: "pointer", color: "#1c1b1a" },
245
266
  children: "←"
246
267
  }
247
268
  ),
248
- /* @__PURE__ */ p("div", { ref: i, style: { width: "100%", height: "100%" } })
249
- ] }) : /* @__PURE__ */ p("div", { style: { flex: 1, display: a ? "none" : "flex", alignItems: "center", justifyContent: "center", color: "#9b9690", fontSize: 14 }, children: "Select a conversation" })
269
+ /* @__PURE__ */ u("div", { ref: v, style: { width: "100%", height: "100%" } })
270
+ ] }) : /* @__PURE__ */ u("div", { style: { flex: 1, display: w ? "none" : "flex", alignItems: "center", justifyContent: "center", color: "#9b9690", fontSize: 14 }, children: "Select a conversation" })
250
271
  ] });
251
272
  }
252
- function J({
253
- url: g,
254
- apiUrl: l,
255
- profileId: v,
256
- token: d,
257
- refreshToken: w,
258
- userId: n,
259
- userName: c,
260
- userEmail: s,
261
- scope: f,
273
+ function Q({
274
+ url: a,
275
+ apiUrl: n,
276
+ profileId: r,
277
+ tenantId: t,
278
+ token: l,
279
+ refreshToken: o,
280
+ userId: c,
281
+ userName: p,
282
+ userEmail: b,
283
+ scope: m,
262
284
  accent: x = "#4F63F5",
263
- floating: y = !0,
264
- position: R = "bottom-right",
265
- label: t,
266
- panelWidth: b,
267
- panelHeight: h = "600px"
285
+ floating: C = !0,
286
+ position: M = "bottom-right",
287
+ label: j,
288
+ panelWidth: e,
289
+ panelHeight: y = "600px"
268
290
  }) {
269
- const [i, u] = D(!1), m = M(null), a = R === "bottom-right", r = t ?? (y ? "💬" : "Messages");
270
- if (z(() => {
271
- const S = (F) => {
272
- F.key === "Escape" && u(!1);
291
+ const [d, v] = D(!1), f = $(null), g = M === "bottom-right", h = j ?? (C ? "💬" : "Messages"), i = B(479);
292
+ if (_(() => {
293
+ const S = (O) => {
294
+ O.key === "Escape" && v(!1);
273
295
  };
274
296
  return document.addEventListener("keydown", S), () => document.removeEventListener("keydown", S);
275
- }, []), y) {
276
- const S = typeof window < "u" && window.innerWidth < 480, F = S ? "100vw" : b ?? "420px", E = S ? "100dvh" : h;
277
- return /* @__PURE__ */ W("div", { style: {
297
+ }, []), C)
298
+ return /* @__PURE__ */ L("div", { style: {
278
299
  position: "fixed",
279
- [a ? "right" : "left"]: "20px",
300
+ [g ? "right" : "left"]: "20px",
280
301
  bottom: "20px",
281
302
  zIndex: 9999,
282
303
  display: "flex",
283
304
  flexDirection: "column",
284
- alignItems: a ? "flex-end" : "flex-start",
305
+ alignItems: g ? "flex-end" : "flex-start",
285
306
  gap: "12px"
286
307
  }, children: [
287
- /* @__PURE__ */ p("div", { style: {
288
- width: F,
289
- height: E,
290
- borderRadius: S ? "0" : "16px",
308
+ /* @__PURE__ */ u("div", { style: {
309
+ ...i ? {
310
+ position: "fixed",
311
+ inset: 0,
312
+ width: "100%",
313
+ height: "100dvh",
314
+ borderRadius: "0",
315
+ zIndex: 9998
316
+ } : {
317
+ width: `min(${e ?? "420px"}, calc(100vw - 40px))`,
318
+ height: `min(${y}, calc(100dvh - 108px))`,
319
+ borderRadius: "16px"
320
+ },
291
321
  overflow: "hidden",
292
- boxShadow: "0 8px 40px rgba(0,0,0,.18)",
322
+ boxShadow: i ? "none" : "0 8px 40px rgba(0,0,0,.18)",
293
323
  background: "#fff",
294
- display: i ? "flex" : "none",
324
+ display: d ? "flex" : "none",
295
325
  flexDirection: "column",
296
- transformOrigin: `bottom ${a ? "right" : "left"}`,
297
- animation: i ? "ocl-pop-in .18s ease" : "none"
298
- }, children: /* @__PURE__ */ p(
299
- B,
326
+ transformOrigin: `bottom ${g ? "right" : "left"}`,
327
+ animation: d ? "ocl-pop-in .18s ease" : "none"
328
+ }, children: /* @__PURE__ */ u(
329
+ A,
300
330
  {
301
- url: g,
302
- ...l ? { apiUrl: l } : {},
303
- profileId: v,
304
- ...d ? { token: d } : {},
305
- ...w ? { refreshToken: w } : {},
306
- ...n ? { userId: n } : {},
307
- ...c ? { userName: c } : {},
308
- ...s ? { userEmail: s } : {},
309
- ...f ? { scope: f } : {},
331
+ url: a,
332
+ ...n ? { apiUrl: n } : {},
333
+ ...r ? { profileId: r } : {},
334
+ ...t ? { tenantId: t } : {},
335
+ ...l ? { token: l } : {},
336
+ ...o ? { refreshToken: o } : {},
337
+ ...c ? { userId: c } : {},
338
+ ...p ? { userName: p } : {},
339
+ ...b ? { userEmail: b } : {},
340
+ ...m ? { scope: m } : {},
310
341
  accent: x,
311
342
  height: "100%"
312
343
  }
313
344
  ) }),
314
- /* @__PURE__ */ p(
345
+ /* @__PURE__ */ u(
315
346
  "button",
316
347
  {
317
- ref: m,
318
- onClick: () => u((_) => !_),
348
+ ref: f,
349
+ onClick: () => v((S) => !S),
319
350
  style: {
320
351
  width: "56px",
321
352
  height: "56px",
@@ -329,35 +360,34 @@ function J({
329
360
  boxShadow: "0 4px 16px rgba(0,0,0,.25)",
330
361
  transition: "transform .15s"
331
362
  },
332
- onMouseEnter: (_) => {
333
- _.target.style.transform = "scale(1.08)";
363
+ onMouseEnter: (S) => {
364
+ S.target.style.transform = "scale(1.08)";
334
365
  },
335
- onMouseLeave: (_) => {
336
- _.target.style.transform = "scale(1)";
366
+ onMouseLeave: (S) => {
367
+ S.target.style.transform = "scale(1)";
337
368
  },
338
- children: i ? "✕" : r
369
+ children: d ? "✕" : h
339
370
  }
340
371
  ),
341
- /* @__PURE__ */ p("style", { children: "@keyframes ocl-pop-in { from { opacity:0; transform:scale(.95) } to { opacity:1; transform:scale(1) } }" })
372
+ /* @__PURE__ */ u("style", { children: "@keyframes ocl-pop-in { from { opacity:0; transform:scale(.95) } to { opacity:1; transform:scale(1) } }" })
342
373
  ] });
343
- }
344
- const o = b ?? "420px", [e, j] = D(null), $ = () => {
345
- !i && m.current && j(m.current.getBoundingClientRect()), u((S) => !S);
346
- }, L = e ? e.bottom + 8 : 0, A = e ? window.innerWidth - e.right : 0;
347
- return /* @__PURE__ */ W(k, { children: [
348
- /* @__PURE__ */ W(
374
+ const s = `min(${e ?? "420px"}, calc(100vw - 16px))`, [R, z] = D(null), H = () => {
375
+ !d && f.current && z(f.current.getBoundingClientRect()), v((S) => !S);
376
+ }, k = R ? R.bottom + 8 : 0, E = R ? Math.max(8, window.innerWidth - R.right) : 0;
377
+ return /* @__PURE__ */ L(F, { children: [
378
+ /* @__PURE__ */ L(
349
379
  "button",
350
380
  {
351
- ref: m,
352
- onClick: $,
381
+ ref: f,
382
+ onClick: H,
353
383
  style: {
354
384
  display: "inline-flex",
355
385
  alignItems: "center",
356
386
  gap: "6px",
357
387
  padding: "8px 16px",
358
388
  borderRadius: "8px",
359
- background: i ? x : "transparent",
360
- color: i ? "#fff" : x,
389
+ background: d ? x : "transparent",
390
+ color: d ? "#fff" : x,
361
391
  border: `2px solid ${x}`,
362
392
  fontSize: "14px",
363
393
  fontWeight: 600,
@@ -366,54 +396,62 @@ function J({
366
396
  },
367
397
  children: [
368
398
  "💬 ",
369
- r
399
+ h
370
400
  ]
371
401
  }
372
402
  ),
373
- i && e && /* @__PURE__ */ W(k, { children: [
374
- /* @__PURE__ */ p(
403
+ d && R && /* @__PURE__ */ L(F, { children: [
404
+ /* @__PURE__ */ u(
375
405
  "div",
376
406
  {
377
- onClick: () => u(!1),
407
+ onClick: () => v(!1),
378
408
  style: { position: "fixed", inset: 0, zIndex: 9998 }
379
409
  }
380
410
  ),
381
- /* @__PURE__ */ p("div", { style: {
411
+ /* @__PURE__ */ u("div", { style: {
382
412
  position: "fixed",
383
- top: L,
384
- right: A,
385
- width: o,
386
- height: h,
387
- borderRadius: "16px",
413
+ ...i ? {
414
+ inset: 0,
415
+ width: "100%",
416
+ height: "100dvh",
417
+ borderRadius: "0"
418
+ } : {
419
+ top: k,
420
+ right: E,
421
+ width: s,
422
+ height: `min(${y}, calc(100dvh - ${k}px - 12px))`,
423
+ borderRadius: "16px"
424
+ },
388
425
  overflow: "hidden",
389
- boxShadow: "0 8px 40px rgba(0,0,0,.2)",
426
+ boxShadow: i ? "none" : "0 8px 40px rgba(0,0,0,.2)",
390
427
  background: "#fff",
391
428
  zIndex: 9999,
392
429
  animation: "ocl-slide-in .18s ease"
393
- }, children: /* @__PURE__ */ p(
394
- B,
430
+ }, children: /* @__PURE__ */ u(
431
+ A,
395
432
  {
396
- url: g,
397
- ...l ? { apiUrl: l } : {},
398
- profileId: v,
399
- ...d ? { token: d } : {},
400
- ...w ? { refreshToken: w } : {},
401
- ...n ? { userId: n } : {},
402
- ...c ? { userName: c } : {},
403
- ...s ? { userEmail: s } : {},
404
- ...f ? { scope: f } : {},
433
+ url: a,
434
+ ...n ? { apiUrl: n } : {},
435
+ ...r ? { profileId: r } : {},
436
+ ...t ? { tenantId: t } : {},
437
+ ...l ? { token: l } : {},
438
+ ...o ? { refreshToken: o } : {},
439
+ ...c ? { userId: c } : {},
440
+ ...p ? { userName: p } : {},
441
+ ...b ? { userEmail: b } : {},
442
+ ...m ? { scope: m } : {},
405
443
  accent: x,
406
444
  height: "100%"
407
445
  }
408
446
  ) }),
409
- /* @__PURE__ */ p("style", { children: "@keyframes ocl-slide-in { from { opacity:0; transform:translateY(-8px) } to { opacity:1; transform:translateY(0) } }" })
447
+ /* @__PURE__ */ u("style", { children: "@keyframes ocl-slide-in { from { opacity:0; transform:translateY(-8px) } to { opacity:1; transform:translateY(0) } }" })
410
448
  ] })
411
449
  ] });
412
450
  }
413
451
  export {
414
- B as ChatApp,
415
- J as ChatAppLauncher,
416
- P as ChatWidget,
417
- G as MarketplaceChat
452
+ A as ChatApp,
453
+ Q as ChatAppLauncher,
454
+ J as ChatWidget,
455
+ P as MarketplaceChat
418
456
  };
419
457
  //# sourceMappingURL=react.js.map