@streamyy/client 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +4 -4
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/client.d.ts +6 -6
  4. package/dist/client.js +3 -3
  5. package/dist/components/CallControls.d.ts +9 -1
  6. package/dist/components/CallControls.d.ts.map +1 -1
  7. package/dist/components/CallControls.js +13 -8
  8. package/dist/components/CallControls.js.map +1 -1
  9. package/dist/components/IncomingCallCard.d.ts +7 -3
  10. package/dist/components/IncomingCallCard.d.ts.map +1 -1
  11. package/dist/components/IncomingCallCard.js +18 -25
  12. package/dist/components/IncomingCallCard.js.map +1 -1
  13. package/dist/components/StreammyCallWidget.d.ts +17 -2
  14. package/dist/components/StreammyCallWidget.d.ts.map +1 -1
  15. package/dist/components/StreammyCallWidget.js +220 -119
  16. package/dist/components/StreammyCallWidget.js.map +1 -1
  17. package/dist/components/StreamyyCallWidget.d.ts +27 -0
  18. package/dist/components/StreamyyCallWidget.d.ts.map +1 -0
  19. package/dist/components/StreamyyCallWidget.js +347 -0
  20. package/dist/components/StreamyyCallWidget.js.map +1 -0
  21. package/dist/components/VideoStage.d.ts.map +1 -1
  22. package/dist/components/VideoStage.js +12 -48
  23. package/dist/components/VideoStage.js.map +1 -1
  24. package/dist/components/VideoTile.d.ts +1 -1
  25. package/dist/components/VideoTile.d.ts.map +1 -1
  26. package/dist/components/VideoTile.js +18 -14
  27. package/dist/components/VideoTile.js.map +1 -1
  28. package/dist/hooks/useRingtone.d.ts +2 -2
  29. package/dist/hooks/useRingtone.d.ts.map +1 -1
  30. package/dist/hooks/useRingtone.js +11 -7
  31. package/dist/hooks/useRingtone.js.map +1 -1
  32. package/dist/hooks/useStreamyy.d.ts +28 -0
  33. package/dist/hooks/useStreamyy.d.ts.map +1 -0
  34. package/dist/hooks/useStreamyy.js +533 -0
  35. package/dist/hooks/useStreamyy.js.map +1 -0
  36. package/dist/index.d.ts +2 -2
  37. package/dist/index.js +2 -2
  38. package/dist/types.d.ts +30 -30
  39. package/dist/webrtc/peer-session.d.ts +3 -3
  40. package/dist/webrtc/peer-session.js +1 -1
  41. package/package.json +1 -1
@@ -0,0 +1,347 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef, useState } from "react";
3
+ import { CallControls } from "./CallControls.js";
4
+ import { IncomingCallCard } from "./IncomingCallCard.js";
5
+ import { VideoStage } from "./VideoStage.js";
6
+ import { useRingtone } from "../hooks/useRingtone.js";
7
+ import { useStreamyy } from "../hooks/useStreamyy.js";
8
+ const finishedStatuses = new Set(["ended", "declined", "cancelled", "missed", "failed"]);
9
+ const statusLabel = {
10
+ idle: "Ready",
11
+ initiated: "Calling...",
12
+ ringing: "Ringing...",
13
+ accepted: "Connecting...",
14
+ ongoing: "Connected",
15
+ declined: "Declined",
16
+ cancelled: "Cancelled",
17
+ ended: "Call ended",
18
+ failed: "Call failed",
19
+ missed: "Missed call",
20
+ };
21
+ const iconStyle = {
22
+ width: "1.45rem",
23
+ height: "1.45rem",
24
+ display: "block",
25
+ };
26
+ const PhoneIcon = ({ crossed = false }) => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: iconStyle, children: [_jsx("path", { d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.86 19.86 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6A19.86 19.86 0 0 1 2.12 4.18 2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.12.9.35 1.77.68 2.6a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.48-1.25a2 2 0 0 1 2.11-.45c.83.33 1.7.56 2.6.68A2 2 0 0 1 22 16.92Z" }), crossed ? _jsx("path", { d: "M4 4l16 16" }) : null] }));
27
+ const VideoIcon = ({ off = false }) => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: iconStyle, children: [_jsx("path", { d: "M23 7l-7 5 7 5V7Z" }), _jsx("rect", { x: "1", y: "5", width: "15", height: "14", rx: "2", ry: "2" }), off ? _jsx("path", { d: "M3 3l18 18" }) : null] }));
28
+ const MicIcon = ({ off = false }) => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: iconStyle, children: [_jsx("path", { d: "M12 1a3 3 0 0 1 3 3v8a3 3 0 0 1-6 0V4a3 3 0 0 1 3-3Z" }), _jsx("path", { d: "M19 10v2a7 7 0 0 1-14 0v-2" }), _jsx("path", { d: "M12 19v4" }), _jsx("path", { d: "M8 23h8" }), off ? _jsx("path", { d: "M4 4l16 16" }) : null] }));
29
+ const CheckIcon = () => (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.4", strokeLinecap: "round", strokeLinejoin: "round", style: iconStyle, children: _jsx("path", { d: "M20 6 9 17l-5-5" }) }));
30
+ const XIcon = () => (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.4", strokeLinecap: "round", strokeLinejoin: "round", style: iconStyle, children: [_jsx("path", { d: "M18 6 6 18" }), _jsx("path", { d: "m6 6 12 12" })] }));
31
+ const defaultIcons = {
32
+ audio: _jsx(PhoneIcon, {}),
33
+ video: _jsx(VideoIcon, {}),
34
+ mute: _jsx(MicIcon, {}),
35
+ unmute: _jsx(MicIcon, { off: true }),
36
+ videoOn: _jsx(VideoIcon, {}),
37
+ videoOff: _jsx(VideoIcon, { off: true }),
38
+ accept: _jsx(CheckIcon, {}),
39
+ decline: _jsx(XIcon, {}),
40
+ hangup: _jsx(PhoneIcon, { crossed: true }),
41
+ };
42
+ const avatarFallback = (value) => value.slice(0, 2).toUpperCase() || "?";
43
+ const getRemoteId = (call) => call.direction === "incoming" ? call.callerId : call.receiverId;
44
+ const readAvatarFromMetadata = (call, role) => {
45
+ const metadata = call.metadata;
46
+ if (!metadata) {
47
+ return undefined;
48
+ }
49
+ const remoteKey = call.direction === "incoming" ? "callerAvatarSrc" : "receiverAvatarSrc";
50
+ const key = role === "remote"
51
+ ? remoteKey
52
+ : role === "caller"
53
+ ? "callerAvatarSrc"
54
+ : "receiverAvatarSrc";
55
+ const candidate = metadata[key];
56
+ return typeof candidate === "string" ? candidate : undefined;
57
+ };
58
+ const formatDuration = (totalSeconds) => {
59
+ const minutes = Math.floor(totalSeconds / 60);
60
+ const seconds = totalSeconds % 60;
61
+ return `${String(minutes).padStart(2, "0")}:${String(seconds).padStart(2, "0")}`;
62
+ };
63
+ const DefaultAvatar = ({ label, src, size, }) => (_jsx("div", { style: {
64
+ width: size,
65
+ height: size,
66
+ borderRadius: "999px",
67
+ padding: "0.28rem",
68
+ background: "#00c781",
69
+ display: "grid",
70
+ placeItems: "center",
71
+ boxSizing: "border-box",
72
+ }, children: _jsx("div", { style: {
73
+ width: "100%",
74
+ height: "100%",
75
+ borderRadius: "999px",
76
+ background: "#282a2f",
77
+ display: "grid",
78
+ placeItems: "center",
79
+ overflow: "hidden",
80
+ color: "white",
81
+ fontWeight: 700,
82
+ fontSize: "1.35rem",
83
+ }, children: src ? (_jsx("img", { src: src, alt: label, style: { width: "100%", height: "100%", objectFit: "cover" } })) : (avatarFallback(label)) }) }));
84
+ const RemoteAudio = ({ stream }) => {
85
+ const ref = useRef(null);
86
+ useEffect(() => {
87
+ if (ref.current) {
88
+ ref.current.srcObject = stream;
89
+ }
90
+ }, [stream]);
91
+ return _jsx("audio", { ref: ref, autoPlay: true, playsInline: true });
92
+ };
93
+ export const StreamyyCallWidget = ({ defaultReceiverId = "", defaultCallType = "video", title = "Streamyy Calling", subtitle = "Ready-made calling UI", ringtones, renderIncomingCall, renderCallInterface, resolveAvatarSrc, icons, }) => {
94
+ const { activeCall, callStatus, media, startAudioCall, startVideoCall, acceptCall, declineCall, cancelCall, endCall, toggleMute, toggleVideo, clearActiveCall, connected, reconnecting, } = useStreamyy();
95
+ const [selectedType, setSelectedType] = useState(defaultCallType);
96
+ const [durationSeconds, setDurationSeconds] = useState(0);
97
+ const callTimerRef = useRef(null);
98
+ const timedCallIdRef = useRef(null);
99
+ const startedAtRef = useRef(null);
100
+ const mergedIcons = { ...defaultIcons, ...icons };
101
+ const isIncomingRinging = activeCall?.direction === "incoming" &&
102
+ (activeCall.status === "ringing" || activeCall.status === "initiated");
103
+ const isOutgoingRinging = activeCall?.direction === "outgoing" && (callStatus === "initiated" || callStatus === "ringing");
104
+ const isFinished = activeCall ? finishedStatuses.has(callStatus) : false;
105
+ useRingtone(Boolean(isIncomingRinging), ringtones?.incoming, "incoming");
106
+ useRingtone(Boolean(isOutgoingRinging), ringtones?.outgoing, "outgoing");
107
+ const liveLabel = useMemo(() => statusLabel[callStatus] ?? callStatus, [callStatus]);
108
+ useEffect(() => {
109
+ if (!activeCall) {
110
+ timedCallIdRef.current = null;
111
+ startedAtRef.current = null;
112
+ setDurationSeconds(0);
113
+ if (callTimerRef.current !== null) {
114
+ window.clearInterval(callTimerRef.current);
115
+ callTimerRef.current = null;
116
+ }
117
+ return;
118
+ }
119
+ if (timedCallIdRef.current !== activeCall.callId) {
120
+ timedCallIdRef.current = activeCall.callId;
121
+ startedAtRef.current = null;
122
+ setDurationSeconds(0);
123
+ if (callTimerRef.current !== null) {
124
+ window.clearInterval(callTimerRef.current);
125
+ callTimerRef.current = null;
126
+ }
127
+ }
128
+ const shouldRunTimer = !isIncomingRinging &&
129
+ !isFinished &&
130
+ (callStatus === "accepted" || callStatus === "ongoing");
131
+ if (!shouldRunTimer) {
132
+ if (callTimerRef.current !== null) {
133
+ window.clearInterval(callTimerRef.current);
134
+ callTimerRef.current = null;
135
+ }
136
+ return;
137
+ }
138
+ if (startedAtRef.current === null) {
139
+ startedAtRef.current = Date.now();
140
+ setDurationSeconds(0);
141
+ }
142
+ const updateDuration = () => {
143
+ if (startedAtRef.current === null) {
144
+ return;
145
+ }
146
+ setDurationSeconds(Math.max(0, Math.floor((Date.now() - startedAtRef.current) / 1000)));
147
+ };
148
+ updateDuration();
149
+ if (callTimerRef.current === null) {
150
+ callTimerRef.current = window.setInterval(updateDuration, 1000);
151
+ }
152
+ return () => {
153
+ if (callTimerRef.current !== null) {
154
+ window.clearInterval(callTimerRef.current);
155
+ callTimerRef.current = null;
156
+ }
157
+ };
158
+ }, [activeCall, callStatus, isFinished, isIncomingRinging]);
159
+ useEffect(() => {
160
+ if (!activeCall || !isFinished) {
161
+ return;
162
+ }
163
+ const timer = window.setTimeout(() => {
164
+ clearActiveCall();
165
+ }, 1200);
166
+ return () => {
167
+ window.clearTimeout(timer);
168
+ };
169
+ }, [activeCall, clearActiveCall, isFinished]);
170
+ const currentRemoteId = activeCall ? getRemoteId(activeCall) : defaultReceiverId || "Remote";
171
+ const remoteAvatar = activeCall
172
+ ? (resolveAvatarSrc?.(activeCall, "remote") ?? readAvatarFromMetadata(activeCall, "remote"))
173
+ : undefined;
174
+ const headerSubtext = durationSeconds > 0 || (callStatus === "accepted" || callStatus === "ongoing")
175
+ ? formatDuration(durationSeconds)
176
+ : liveLabel;
177
+ const endCurrentCall = async () => {
178
+ if (!activeCall) {
179
+ return;
180
+ }
181
+ if (activeCall.direction === "outgoing" && (callStatus === "initiated" || callStatus === "ringing")) {
182
+ await cancelCall(activeCall.callId);
183
+ return;
184
+ }
185
+ await endCall(activeCall.callId);
186
+ };
187
+ const startCurrentTypeCall = async () => {
188
+ if (!defaultReceiverId.trim()) {
189
+ return;
190
+ }
191
+ if (selectedType === "audio") {
192
+ await startAudioCall(defaultReceiverId.trim(), { startedFrom: "streamyy-default-ui" });
193
+ return;
194
+ }
195
+ await startVideoCall(defaultReceiverId.trim(), { startedFrom: "streamyy-default-ui" });
196
+ };
197
+ const callRendererProps = activeCall === null
198
+ ? null
199
+ : {
200
+ activeCall,
201
+ callStatus,
202
+ connected,
203
+ reconnecting,
204
+ media,
205
+ clear: clearActiveCall,
206
+ cancel: async () => cancelCall(activeCall.callId),
207
+ end: async () => endCall(activeCall.callId),
208
+ toggleMute,
209
+ toggleVideo,
210
+ };
211
+ return (_jsxs("section", { style: {
212
+ position: "relative",
213
+ width: "100%",
214
+ minHeight: "100vh",
215
+ background: "#111315",
216
+ color: "white",
217
+ overflow: "hidden",
218
+ }, children: [!activeCall ? (_jsx("section", { style: {
219
+ minHeight: "100vh",
220
+ display: "grid",
221
+ placeItems: "center",
222
+ padding: "1.5rem",
223
+ background: "#111315",
224
+ }, children: _jsxs("div", { style: {
225
+ width: "min(24rem, 100%)",
226
+ display: "grid",
227
+ gap: "1rem",
228
+ padding: "1.4rem",
229
+ borderRadius: "1.8rem",
230
+ background: "#1d1d21",
231
+ border: "1px solid rgba(255, 255, 255, 0.06)",
232
+ justifyItems: "center",
233
+ }, children: [_jsxs("div", { style: { display: "grid", gap: "0.35rem", justifyItems: "center", textAlign: "center" }, children: [_jsx("strong", { style: { fontSize: "1.3rem" }, children: title }), _jsx("span", { style: { color: "rgba(255, 255, 255, 0.56)", lineHeight: 1.5 }, children: subtitle })] }), _jsxs("div", { style: { display: "flex", gap: "0.85rem", justifyContent: "center" }, children: [_jsx("button", { type: "button", "aria-label": "Start audio call", disabled: !defaultReceiverId.trim(), onClick: () => {
234
+ setSelectedType("audio");
235
+ void startAudioCall(defaultReceiverId.trim(), { startedFrom: "streamyy-default-ui" });
236
+ }, style: {
237
+ width: "4rem",
238
+ height: "4rem",
239
+ borderRadius: "999px",
240
+ border: selectedType === "audio" ? "1px solid #00c781" : "1px solid rgba(255, 255, 255, 0.08)",
241
+ background: "#282a2f",
242
+ color: "white",
243
+ display: "grid",
244
+ placeItems: "center",
245
+ cursor: defaultReceiverId.trim() ? "pointer" : "not-allowed",
246
+ opacity: defaultReceiverId.trim() ? 1 : 0.48,
247
+ }, children: mergedIcons.audio }), _jsx("button", { type: "button", "aria-label": "Start video call", disabled: !defaultReceiverId.trim(), onClick: () => {
248
+ setSelectedType("video");
249
+ void startVideoCall(defaultReceiverId.trim(), { startedFrom: "streamyy-default-ui" });
250
+ }, style: {
251
+ width: "4rem",
252
+ height: "4rem",
253
+ borderRadius: "999px",
254
+ border: selectedType === "video" ? "1px solid #00c781" : "1px solid rgba(255, 255, 255, 0.08)",
255
+ background: "#282a2f",
256
+ color: "white",
257
+ display: "grid",
258
+ placeItems: "center",
259
+ cursor: defaultReceiverId.trim() ? "pointer" : "not-allowed",
260
+ opacity: defaultReceiverId.trim() ? 1 : 0.48,
261
+ }, children: mergedIcons.video })] }), _jsx("button", { type: "button", disabled: !defaultReceiverId.trim(), onClick: () => {
262
+ void startCurrentTypeCall();
263
+ }, style: {
264
+ borderRadius: "999px",
265
+ border: 0,
266
+ background: "#282a2f",
267
+ color: "white",
268
+ padding: "0.9rem 1rem",
269
+ cursor: defaultReceiverId.trim() ? "pointer" : "not-allowed",
270
+ opacity: defaultReceiverId.trim() ? 1 : 0.48,
271
+ width: "100%",
272
+ }, children: "Start call" })] }) })) : null, activeCall && isIncomingRinging
273
+ ? renderIncomingCall
274
+ ? renderIncomingCall({
275
+ call: activeCall,
276
+ connected,
277
+ reconnecting,
278
+ accept: async () => acceptCall(activeCall.callId),
279
+ decline: async (reason) => declineCall(activeCall.callId, reason),
280
+ })
281
+ : (_jsx("section", { style: {
282
+ position: "absolute",
283
+ inset: 0,
284
+ display: "grid",
285
+ placeItems: "center",
286
+ padding: "1rem",
287
+ background: "rgba(0, 0, 0, 0.58)",
288
+ backdropFilter: "blur(16px)",
289
+ zIndex: 2,
290
+ }, children: _jsx(IncomingCallCard, { call: activeCall, avatar: _jsx(DefaultAvatar, { label: activeCall.callerId, src: remoteAvatar, size: "6.6rem" }), acceptIcon: mergedIcons.accept, declineIcon: mergedIcons.decline, onAccept: () => {
291
+ void acceptCall(activeCall.callId);
292
+ }, onDecline: () => {
293
+ void declineCall(activeCall.callId);
294
+ } }) }))
295
+ : null, activeCall && !isIncomingRinging
296
+ ? renderCallInterface && callRendererProps
297
+ ? renderCallInterface(callRendererProps)
298
+ : (_jsxs("section", { style: {
299
+ position: "relative",
300
+ width: "100%",
301
+ minHeight: "100vh",
302
+ background: activeCall.callType === "video" ? "#111315" : "#202224",
303
+ }, children: [activeCall.callType === "video" ? (_jsx("div", { style: {
304
+ position: "absolute",
305
+ inset: 0,
306
+ }, children: _jsx(VideoStage, { localStream: media.localStream, remoteStream: media.remoteStream, localLabel: "", remoteLabel: "", localMirrored: true }) })) : (_jsx("div", { style: {
307
+ minHeight: "100vh",
308
+ display: "grid",
309
+ placeItems: "center",
310
+ padding: "2rem 1.5rem 8rem",
311
+ }, children: _jsxs("div", { style: { display: "grid", justifyItems: "center", gap: "1rem" }, children: [_jsx(DefaultAvatar, { label: currentRemoteId, src: remoteAvatar, size: "7.5rem" }), _jsx("strong", { style: { fontSize: "2rem", lineHeight: 1.1 }, children: currentRemoteId })] }) })), _jsxs("div", { style: {
312
+ position: "absolute",
313
+ top: "2rem",
314
+ left: "50%",
315
+ transform: "translateX(-50%)",
316
+ display: "grid",
317
+ justifyItems: "center",
318
+ gap: "0.55rem",
319
+ zIndex: 2,
320
+ }, children: [_jsx("div", { style: {
321
+ padding: "0.5rem 1rem",
322
+ borderRadius: "999px",
323
+ background: "rgba(31, 31, 35, 0.76)",
324
+ backdropFilter: "blur(14px)",
325
+ fontWeight: 700,
326
+ fontSize: "1rem",
327
+ }, children: currentRemoteId }), _jsx("span", { style: { color: "rgba(255, 255, 255, 0.72)", fontSize: "0.95rem" }, children: headerSubtext })] }), _jsx("div", { style: {
328
+ position: "absolute",
329
+ left: "50%",
330
+ bottom: "2rem",
331
+ transform: "translateX(-50%)",
332
+ zIndex: 2,
333
+ }, children: _jsx(CallControls, { state: {
334
+ muted: media.muted,
335
+ videoEnabled: media.videoEnabled,
336
+ }, icons: {
337
+ mute: mergedIcons.mute,
338
+ unmute: mergedIcons.unmute,
339
+ video: mergedIcons.videoOn,
340
+ videoOff: mergedIcons.videoOff,
341
+ hangup: mergedIcons.hangup,
342
+ }, showVideoToggle: activeCall.callType === "video" && media.hasLocalVideo, onToggleMute: () => toggleMute(), onToggleVideo: () => toggleVideo(), onHangup: () => {
343
+ void endCurrentCall();
344
+ } }) })] }))
345
+ : null, media.remoteStream ? _jsx(RemoteAudio, { stream: media.remoteStream }) : null] }));
346
+ };
347
+ //# sourceMappingURL=StreamyyCallWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamyyCallWidget.js","sourceRoot":"","sources":["../../src/components/StreamyyCallWidget.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VideoStage.d.ts","sourceRoot":"","sources":["../../src/components/VideoStage.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACtC;AAED,eAAO,MAAM,UAAU,GAAI,yGAQxB,eAAe,QAkGjB,CAAC"}
1
+ {"version":3,"file":"VideoStage.d.ts","sourceRoot":"","sources":["../../src/components/VideoStage.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACtC;AAED,eAAO,MAAM,UAAU,GAAI,yGAQxB,eAAe,QAmDjB,CAAC"}
@@ -4,55 +4,19 @@ import { VideoTile } from "./VideoTile.js";
4
4
  export const VideoStage = ({ localStream, remoteStream, localLabel = "You", remoteLabel = "Remote", localMirrored = false, remoteMirrored = false, defaultMainView = "remote", }) => {
5
5
  const [mainView, setMainView] = useState(defaultMainView);
6
6
  const mainTile = useMemo(() => mainView === "local"
7
- ? {
8
- stream: localStream,
9
- label: localLabel,
10
- mirrored: localMirrored,
11
- muted: true,
12
- }
13
- : {
14
- stream: remoteStream,
15
- label: remoteLabel,
16
- mirrored: remoteMirrored,
17
- muted: false,
18
- }, [localLabel, localMirrored, localStream, mainView, remoteLabel, remoteMirrored, remoteStream]);
7
+ ? { stream: localStream, label: localLabel, mirrored: localMirrored, muted: true }
8
+ : { stream: remoteStream, label: remoteLabel, mirrored: remoteMirrored, muted: false }, [localLabel, localMirrored, localStream, mainView, remoteLabel, remoteMirrored, remoteStream]);
19
9
  const thumbnailTile = useMemo(() => mainView === "local"
20
- ? {
21
- stream: remoteStream,
22
- label: remoteLabel,
23
- mirrored: remoteMirrored,
24
- muted: false,
25
- key: "remote",
26
- }
27
- : {
28
- stream: localStream,
29
- label: localLabel,
30
- mirrored: localMirrored,
31
- muted: true,
32
- key: "local",
33
- }, [localLabel, localMirrored, localStream, mainView, remoteLabel, remoteMirrored, remoteStream]);
34
- const toggleMainView = () => {
35
- setMainView((current) => (current === "local" ? "remote" : "local"));
36
- };
37
- return (_jsxs("section", { style: {
38
- position: "relative",
39
- display: "grid",
40
- gap: "0.75rem",
41
- }, children: [_jsx(VideoTile, { stream: mainTile.stream, label: mainTile.label, mirrored: mainTile.mirrored, muted: mainTile.muted, active: true }), _jsx("div", { style: {
10
+ ? { stream: remoteStream, label: remoteLabel, mirrored: remoteMirrored, muted: false }
11
+ : { stream: localStream, label: localLabel, mirrored: localMirrored, muted: true }, [localLabel, localMirrored, localStream, mainView, remoteLabel, remoteMirrored, remoteStream]);
12
+ return (_jsxs("section", { style: { position: "relative", width: "100%", height: "100%" }, children: [_jsx(VideoTile, { stream: mainTile.stream, label: mainTile.label, mirrored: mainTile.mirrored, muted: mainTile.muted, active: true }), _jsx("div", { style: {
42
13
  position: "absolute",
43
- right: "1rem",
44
- bottom: "3.25rem",
45
- width: "30%",
46
- minWidth: "8rem",
47
- maxWidth: "12rem",
48
- }, children: _jsx(VideoTile, { stream: thumbnailTile.stream, label: thumbnailTile.label, mirrored: thumbnailTile.mirrored, muted: thumbnailTile.muted, compact: true, onClick: toggleMainView }) }), _jsx("button", { type: "button", onClick: toggleMainView, style: {
49
- justifySelf: "start",
50
- borderRadius: "999px",
51
- border: "1px solid rgba(148, 163, 184, 0.2)",
52
- background: "rgba(15, 23, 42, 0.88)",
53
- color: "white",
54
- padding: "0.7rem 0.95rem",
55
- cursor: "pointer",
56
- }, children: "Swap videos" })] }));
14
+ top: "1.25rem",
15
+ right: "1.25rem",
16
+ width: "min(18vw, 7.5rem)",
17
+ minWidth: "6.5rem",
18
+ }, children: _jsx(VideoTile, { stream: thumbnailTile.stream, label: thumbnailTile.label, mirrored: thumbnailTile.mirrored, muted: thumbnailTile.muted, compact: true, onClick: () => {
19
+ setMainView((current) => (current === "local" ? "remote" : "local"));
20
+ } }) })] }));
57
21
  };
58
22
  //# sourceMappingURL=VideoStage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoStage.js","sourceRoot":"","sources":["../../src/components/VideoStage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VideoStage.js","sourceRoot":"","sources":["../../src/components/VideoStage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAY3C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,WAAW,EACX,YAAY,EACZ,UAAU,GAAG,KAAK,EAClB,WAAW,GAAG,QAAQ,EACtB,aAAa,GAAG,KAAK,EACrB,cAAc,GAAG,KAAK,EACtB,eAAe,GAAG,QAAQ,GACV,EAAE,EAAE;IACpB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAqB,eAAe,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,OAAO,CACtB,GAAG,EAAE,CACH,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE;QAClF,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,EAC1F,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,CAC9F,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CACH,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE;QACtF,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EACtF,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,CAC9F,CAAC;IAEF,OAAO,CACL,mBAAS,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aACrE,KAAC,SAAS,IACR,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,MAAM,SACN,EAEF,cACE,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,SAAS;oBACd,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,mBAAmB;oBAC1B,QAAQ,EAAE,QAAQ;iBACnB,YAED,KAAC,SAAS,IACR,MAAM,EAAE,aAAa,CAAC,MAAM,EAC5B,KAAK,EAAE,aAAa,CAAC,KAAK,EAC1B,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAChC,KAAK,EAAE,aAAa,CAAC,KAAK,EAC1B,OAAO,QACP,OAAO,EAAE,GAAG,EAAE;wBACZ,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBACvE,CAAC,GACD,GACE,IACE,CACX,CAAC;AACJ,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export interface VideoTileProps {
2
2
  stream: MediaStream | null;
3
3
  muted?: boolean;
4
- label: string;
4
+ label?: string;
5
5
  mirrored?: boolean;
6
6
  onClick?: () => void;
7
7
  active?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"VideoTile.d.ts","sourceRoot":"","sources":["../../src/components/VideoTile.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,SAAS,GAAI,+DAQvB,cAAc,QA6ChB,CAAC"}
1
+ {"version":3,"file":"VideoTile.d.ts","sourceRoot":"","sources":["../../src/components/VideoTile.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,SAAS,GAAI,+DAQvB,cAAc,QAiDhB,CAAC"}
@@ -7,23 +7,27 @@ export const VideoTile = ({ stream, muted = false, label, mirrored = false, onCl
7
7
  ref.current.srcObject = stream;
8
8
  }
9
9
  }, [stream]);
10
- return (_jsxs("figure", { style: {
11
- display: "grid",
12
- gap: "0.5rem",
13
- margin: 0,
14
- }, children: [_jsx("video", { ref: ref, autoPlay: true, playsInline: true, muted: muted, onClick: onClick, style: {
10
+ return (_jsxs("figure", { style: { display: "grid", margin: 0, width: "100%", height: "100%" }, children: [_jsx("video", { ref: ref, autoPlay: true, playsInline: true, muted: muted, onClick: onClick, style: {
15
11
  width: "100%",
16
- minHeight: compact ? "7rem" : "12rem",
17
- background: "#111827",
18
- borderRadius: "1rem",
12
+ height: compact ? "8.5rem" : "100%",
13
+ minHeight: compact ? "8.5rem" : "100%",
14
+ background: "#2b2b2f",
15
+ borderRadius: compact ? "1.15rem" : "0",
19
16
  objectFit: "cover",
20
17
  transform: mirrored ? "scaleX(-1)" : "none",
21
18
  cursor: onClick ? "pointer" : "default",
22
- border: active ? "2px solid rgba(56, 189, 248, 0.9)" : "1px solid rgba(148, 163, 184, 0.18)",
23
- boxShadow: active ? "0 0 0 4px rgba(14, 165, 233, 0.12)" : "none",
24
- } }), _jsx("figcaption", { style: {
25
- color: "rgba(226, 232, 240, 0.82)",
26
- fontSize: compact ? "0.85rem" : "0.95rem",
27
- }, children: label })] }));
19
+ border: compact ? "1px solid rgba(255, 255, 255, 0.12)" : active ? 0 : 0,
20
+ boxShadow: compact ? "0 16px 32px rgba(0, 0, 0, 0.38)" : "none",
21
+ } }), label ? (_jsx("figcaption", { style: {
22
+ position: compact ? "absolute" : "absolute",
23
+ left: compact ? "0.75rem" : "1rem",
24
+ bottom: compact ? "0.75rem" : "1rem",
25
+ color: "white",
26
+ fontSize: compact ? "0.78rem" : "0.92rem",
27
+ background: "rgba(0, 0, 0, 0.34)",
28
+ borderRadius: "999px",
29
+ padding: "0.3rem 0.55rem",
30
+ backdropFilter: "blur(12px)",
31
+ }, children: label })) : null] }));
28
32
  };
29
33
  //# sourceMappingURL=VideoTile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoTile.js","sourceRoot":"","sources":["../../src/components/VideoTile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAY1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACxB,MAAM,EACN,KAAK,GAAG,KAAK,EACb,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,OAAO,EACP,MAAM,GAAG,KAAK,EACd,OAAO,GAAG,KAAK,GACA,EAAE,EAAE;IACnB,MAAM,GAAG,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;QACjC,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CACL,kBACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,QAAQ;YACb,MAAM,EAAE,CAAC;SACV,aAED,gBACE,GAAG,EAAE,GAAG,EACR,QAAQ,QACR,WAAW,QACX,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE;oBACL,KAAK,EAAE,MAAM;oBACb,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;oBACrC,UAAU,EAAE,SAAS;oBACrB,YAAY,EAAE,MAAM;oBACpB,SAAS,EAAE,OAAO;oBAClB,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;oBAC3C,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBACvC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,qCAAqC;oBAC5F,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,MAAM;iBAClE,GACD,EACF,qBACE,KAAK,EAAE;oBACL,KAAK,EAAE,2BAA2B;oBAClC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;iBAC1C,YAEA,KAAK,GACK,IACN,CACV,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"VideoTile.js","sourceRoot":"","sources":["../../src/components/VideoTile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAY1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACxB,MAAM,EACN,KAAK,GAAG,KAAK,EACb,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,OAAO,EACP,MAAM,GAAG,KAAK,EACd,OAAO,GAAG,KAAK,GACA,EAAE,EAAE;IACnB,MAAM,GAAG,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;QACjC,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CACL,kBAAQ,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAC1E,gBACE,GAAG,EAAE,GAAG,EACR,QAAQ,QACR,WAAW,QACX,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE;oBACL,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;oBACnC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;oBACtC,UAAU,EAAE,SAAS;oBACrB,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;oBACvC,SAAS,EAAE,OAAO;oBAClB,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;oBAC3C,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBACvC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,MAAM;iBAChE,GACD,EACD,KAAK,CAAC,CAAC,CAAC,CACP,qBACE,KAAK,EAAE;oBACL,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;oBAC3C,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;oBAClC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;oBACpC,KAAK,EAAE,OAAO;oBACd,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBACzC,UAAU,EAAE,qBAAqB;oBACjC,YAAY,EAAE,OAAO;oBACrB,OAAO,EAAE,gBAAgB;oBACzB,cAAc,EAAE,YAAY;iBAC7B,YAEA,KAAK,GACK,CACd,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { StreammyRingtoneSource } from "../types.js";
1
+ import type { StreamyyRingtoneSource } from "../types.js";
2
2
  export declare const defaultRingtones: {
3
3
  readonly incoming: {
4
4
  kind: "pattern";
@@ -11,5 +11,5 @@ export declare const defaultRingtones: {
11
11
  volume?: number;
12
12
  };
13
13
  };
14
- export declare const useRingtone: (active: boolean, source: StreammyRingtoneSource | undefined, fallback: "incoming" | "outgoing") => void;
14
+ export declare const useRingtone: (enabled: boolean, source: StreamyyRingtoneSource | undefined, fallback: "incoming" | "outgoing") => void;
15
15
  //# sourceMappingURL=useRingtone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRingtone.d.ts","sourceRoot":"","sources":["../../src/hooks/useRingtone.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAmB,MAAM,aAAa,CAAC;AAqB3E,eAAO,MAAM,gBAAgB;;;;;;;;;;;CAGnB,CAAC;AA+EX,eAAO,MAAM,WAAW,GACtB,QAAQ,OAAO,EACf,QAAQ,sBAAsB,GAAG,SAAS,EAC1C,UAAU,UAAU,GAAG,UAAU,KAChC,IAoBF,CAAC"}
1
+ {"version":3,"file":"useRingtone.d.ts","sourceRoot":"","sources":["../../src/hooks/useRingtone.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAmB,MAAM,aAAa,CAAC;AAqB3E,eAAO,MAAM,gBAAgB;;;;;;;;;;;CAGnB,CAAC;AAuFX,eAAO,MAAM,WAAW,GACtB,SAAS,OAAO,EAChB,QAAQ,sBAAsB,GAAG,SAAS,EAC1C,UAAU,UAAU,GAAG,UAAU,KAChC,IAkBF,CAAC"}
@@ -78,22 +78,26 @@ const startUrlPlayback = (source) => {
78
78
  audio.currentTime = 0;
79
79
  };
80
80
  };
81
- export const useRingtone = (active, source, fallback) => {
81
+ const createPlayback = (source) => {
82
+ if (source.kind === "url") {
83
+ return startUrlPlayback(source);
84
+ }
85
+ return startPatternPlayback(source);
86
+ };
87
+ export const useRingtone = (enabled, source, fallback) => {
82
88
  const stopRef = useRef(null);
83
89
  useEffect(() => {
84
- if (!active) {
90
+ if (!enabled) {
85
91
  stopRef.current?.();
86
92
  stopRef.current = null;
87
93
  return;
88
94
  }
89
- const selected = source ?? defaultRingtones[fallback];
90
- stopRef.current?.();
91
- stopRef.current =
92
- selected.kind === "url" ? startUrlPlayback(selected) : startPatternPlayback(selected);
95
+ const resolvedSource = source ?? defaultRingtones[fallback];
96
+ stopRef.current = createPlayback(resolvedSource);
93
97
  return () => {
94
98
  stopRef.current?.();
95
99
  stopRef.current = null;
96
100
  };
97
- }, [active, fallback, source]);
101
+ }, [enabled, fallback, source]);
98
102
  };
99
103
  //# sourceMappingURL=useRingtone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRingtone.js","sourceRoot":"","sources":["../../src/hooks/useRingtone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useRingtone.js","sourceRoot":"","sources":["../../src/hooks/useRingtone.ts"],"names":[],"mappings":"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"}