@apirtc/react-lib 1.2.1-rc.2 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/components/VideoStream/index.d.ts +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/esm/components/VideoStream/index.d.ts +1 -1
- package/dist/esm/components/index.d.ts +1 -1
- package/dist/esm/hooks/index.d.ts +12 -12
- package/dist/esm/hooks/useTranscriptService.d.ts +4 -4
- package/dist/esm/hooks/useTranscriptService.spec.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/hooks/index.d.ts +12 -12
- package/dist/hooks/useTranscriptService.d.ts +4 -4
- package/dist/hooks/useTranscriptService.spec.d.ts +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/react-lib.production.min.js +1 -1
- package/dist/react-lib.production.min.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default, VideoStreamProps } from
|
|
1
|
+
export { default, VideoStreamProps } from './VideoStream';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as VideoStream, VideoStreamProps } from
|
|
1
|
+
export { default as VideoStream, VideoStreamProps } from './VideoStream';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default, VideoStreamProps } from
|
|
1
|
+
export { default, VideoStreamProps } from './VideoStream';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as VideoStream, VideoStreamProps } from
|
|
1
|
+
export { default as VideoStream, VideoStreamProps } from './VideoStream';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { useCameraStream } from
|
|
2
|
-
export { default as useConversation } from
|
|
3
|
-
export { default as useConversationContacts } from
|
|
4
|
-
export { default as useConversationMessages } from
|
|
5
|
-
export { default as useConversationModeration } from
|
|
6
|
-
export { default as useConversationStreams } from
|
|
7
|
-
export { default as usePresence } from
|
|
8
|
-
export { ApiKey, Credentials, default as useSession, LoginPassword, Token } from
|
|
9
|
-
export { default as useStreamApplyAudioProcessor } from
|
|
10
|
-
export { default as useStreamApplyVideoProcessor } from
|
|
11
|
-
export { default as useUserMediaDevices } from
|
|
12
|
-
export { default as useTranscriptService } from
|
|
1
|
+
export { useCameraStream } from './useCameraStream';
|
|
2
|
+
export { default as useConversation } from './useConversation';
|
|
3
|
+
export { default as useConversationContacts } from './useConversationContacts';
|
|
4
|
+
export { default as useConversationMessages } from './useConversationMessages';
|
|
5
|
+
export { default as useConversationModeration } from './useConversationModeration';
|
|
6
|
+
export { default as useConversationStreams } from './useConversationStreams';
|
|
7
|
+
export { default as usePresence } from './usePresence';
|
|
8
|
+
export { ApiKey, Credentials, default as useSession, LoginPassword, Token } from './useSession';
|
|
9
|
+
export { default as useStreamApplyAudioProcessor } from './useStreamApplyAudioProcessor';
|
|
10
|
+
export { default as useStreamApplyVideoProcessor } from './useStreamApplyVideoProcessor';
|
|
11
|
+
export { default as useUserMediaDevices } from './useUserMediaDevices';
|
|
12
|
+
export { default as useTranscriptService } from './useTranscriptService';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Conversation } from '@apirtc/apirtc';
|
|
2
2
|
/**
|
|
3
3
|
* A hook to start/stop and get messages from a transcriptService
|
|
4
4
|
* @param conversation an ApiRTC conversation
|
|
5
5
|
* @param autoStart boolean to automatically start transcription
|
|
6
6
|
*/
|
|
7
|
-
export default function useTranscriptService(conversation:
|
|
8
|
-
transcriptService: import("@
|
|
7
|
+
export default function useTranscriptService(conversation: Conversation | undefined, autoStart: boolean | undefined): {
|
|
8
|
+
transcriptService: import("@apirtc/ia").TranscriptService | null;
|
|
9
9
|
hasStarted: boolean;
|
|
10
|
-
transcripts: import("@
|
|
10
|
+
transcripts: import("@apirtc/ia").Transcript[];
|
|
11
11
|
startTranscriptService: () => Promise<void>;
|
|
12
12
|
stopTranscriptService: () => Promise<void>;
|
|
13
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import './getDisplayMedia.mock';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{useRef as t,useEffect as o,useState as n,useCallback as i,useMemo as a}from"react";import{UserAgent as r,MediaDevice as s}from"@apirtc/apirtc";function c(n){const{autoPlay:i=!0}=n,a=t(null);return o((()=>{const e=a.current;if(e&&n.stream)return n.stream.attachToElement(e),()=>{e.src=""}}),[n.stream]),e.createElement("video",{id:n.stream.getId(),style:{maxWidth:"100%"},ref:a,autoPlay:i,muted:n.muted})}const l={},d="useCameraStream";function b(e,t=l,i){const[a,r]=n(),[s,c]=n(!1),[b,u]=n();return o((()=>{if(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${d}|useEffect`,e,t),e){const o=e.getUserAgent();c(!0),o.createStream(t).then((e=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${d}|createStream`,t,e),r(e),u(void 0)})).catch((e=>{console.error(`${d}|createStream error`,t,e),r(void 0),i&&i(e),u(e)})).finally((()=>{c(!1)}))}else r(void 0),u(void 0)}),[e,t,i]),o((()=>{const e=a;if(e)return()=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${d}|release stream`,e),e.release()}}),[a]),{stream:a,grabbing:s,error:b}}const u="useConversation";function g(e,t,a,r=!0,s){const[c,l]=n(),[d,b]=n(!1),[g,L]=n(!1),p=i(((e={})=>(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|join`,c,e),new Promise(((t,o)=>{c?c.isJoined()?o(`${u}|join|conversation already joined`):(L(!0),c.join(e).then((()=>{b(!0),t()})).catch((e=>{o(e)})).finally((()=>{L(!1)}))):o(`${u}|join|conversation not defined`)})))),[c]),v=i((()=>(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|leave`,c),new Promise(((e,t)=>{c?c.isJoined()?c.leave().then((()=>{b(!1),e()})).catch((e=>{t(e)})):t(`${u}|leave|conversation is not joined`):t(`${u}|leave|conversation not defined`)})))),[c]);return o((()=>{if(e&&t){globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|getOrCreateConversation`,t,a);const o=e.getOrCreateConversation(t,a);return l(o),()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|useEffect cleanup`,t,a),o.isJoined()?o.leave().then((()=>{})).catch((e=>{globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${u}|useEffect conversation.leave()`,e)})).finally((()=>{o.destroy()})):o.destroy(),l(void 0),b(!1)}}}),[e,t,a]),o((()=>{if(c&&r){globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|useEffect`,c,r,s);const e=c,t=r;return t&&(L(!0),e.join(s).then((()=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${u}|joined`,e),b(!0)})).catch((t=>{globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${u}|useEffect conversation.join() error`,e,s,t)})).finally((()=>{L(!1)}))),()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|useEffect cleanup`,e,t),e.isJoined()&&e.leave().then((()=>{b(!1)})).catch((t=>{globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${u}|useEffect conversation.leave() error`,e,t)}))}}}),[c,a,r,s]),{conversation:c,joining:g,joined:d,join:p,leave:v}}const L="useConversationContacts";function p(e,t,i){const[a,r]=n([]);return o((()=>{if(e){const o=o=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${L}|on:contactJoined:`,e.getName(),o),r((e=>[...e,o])),t&&t(o)};e.on("contactJoined",o);const n=t=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${L}|on:contactLeft:`,e.getName(),t),r((e=>e.filter((e=>e!==t)))),i&&i(t)};return e.on("contactLeft",n),()=>{e.removeListener("contactJoined",o),e.removeListener("contactLeft",n),r(new Array)}}}),[e,t,i]),{contacts:a}}const v="useConversationMessages";function f(e){const[t,a]=n([]);o((()=>{if(e){const t=t=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${v}|on:message:`,e.getName(),t),a((e=>[...e,t]))};return e.on("message",t),()=>{e.removeListener("message",t),a(new Array)}}}),[e]);return{messages:t,sendMessage:i(((t,o)=>new Promise(((n,i)=>{null==e||e.sendMessage(t).then((i=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${v}|sentMessage`,e.getName(),i,t),a((e=>[...e,{content:t,sender:o,time:new Date}])),n()})).catch((e=>{globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${v}|sendMessage error`,e),i(e)}))}))),[e])}}const h="useConversationModeration";function m(e,t,i){const[a,r]=n(new Set);return o((()=>{if(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${h}|useEffect conversation`,e),e){const o=e=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${h}|on:contactJoinedWaitingRoom`,e),r((t=>new Set(t.add(e))))},n=e=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${h}|on:contactLeftWaitingRoom`,e),r((t=>(t.delete(e),new Set(t))))},a=e=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${h}|on:participantEjected`,e),!0===e.self?(globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${h}|Self participant was ejected`),i&&i()):t&&t(e.contact)};return e.on("contactJoinedWaitingRoom",o).on("contactLeftWaitingRoom",n).on("participantEjected",a),()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${h}|conversation clear`,e),e.removeListener("contactJoinedWaitingRoom",o).removeListener("contactLeftWaitingRoom",n).removeListener("participantEjected",a),r(new Set)}}}),[e,t,i]),{candidates:a}}function E(e){return null!=e}const T=[],$="useConversationStreams";function R(e,a=T,r){globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|hook render|${null==e?void 0:e.getName()}`,a.map((e=>null==e?void 0:e.options)));const s=t([]),[c,l]=n(new Array),[d,b]=n(new Array),u=i(((t,o)=>new Promise(((n,i)=>{e&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|publish|${e.getName()}`,t,o),e.publish(t,o).then((t=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|published|${e.getName()}`,t),l((e=>[...e,t])),n(t)})).catch((e=>{i(e)})))}))),[e]),g=i(((t,o)=>new Promise(((n,i)=>{e&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|replacePublishedStream|${e.getName()}|${t.getId()} -> ${o.getId()}`),e.replacePublishedStream(t,o).then((o=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|stream replaced|${e.getName()}`,t,o),l((e=>{const n=e.indexOf(t);return n>=0&&e.splice(n,1,o),Array.from(e)})),n(o)})).catch((e=>{i(e)})))}))),[e]),L=i((t=>{e&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|unpublish|${e.getName()}`,t.getId(),t),e.unpublish(t),l((e=>e.filter((e=>e!==t)))))}),[e]),p=i((()=>{const t=Math.max(s.current.length,a.length);globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|doHandlePublication`,a,JSON.stringify(s.current.map((e=>null==e?void 0:e.stream.getId()))),JSON.stringify(a.map((e=>null==e?void 0:e.stream.getId()))),t);const o=[...s.current],n=a.map((e=>e&&e.options?{stream:e.stream,options:Object.assign({},e.options)}:e));s.current.length=0,s.current.push(...n);const i=new Set(a.filter(E).map((e=>e.stream))),c=(e,t)=>{u(t.stream,t.options).catch((t=>{s.current.splice(e,1,null),r?r(t):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${$}|publish|error`,t)}))};for(let n=0;n<t;n++){const t=o[n],l=a[n];if(t&&l){const o=()=>{L(t.stream),c(n,l)};t.stream===l.stream?JSON.stringify(t.options)!==JSON.stringify(l.options)&&o():i.has(t.stream)?e&&!e.isPublishedStream(l.stream)&&c(n,l):e&&!e.isPublishedStream(l.stream)?JSON.stringify(t.options)===JSON.stringify(l.options)?g(t.stream,l.stream).catch((e=>{s.current.splice(n,1,null),r?r(e):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${$}|replacePublishedStream|error`,e)})):o():L(t.stream)}else t&&!l?i.has(t.stream)||L(t.stream):!t&&l&&e&&!e.isPublishedStream(l.stream)&&c(n,l)}}),[e,a,u,L,g,r]),v=i((()=>{e&&l((t=>(t.forEach((t=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|unpublish|${e.getName()}`,t),e.unpublish(t)})),[]))),s.current.length=0}),[e]),f=i((()=>{e&&b((t=>(t.forEach((t=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|unsubscribeToStream|${e.getName()}`,t),e.unsubscribeToStream(t.getId())})),[])))}),[e]),h=i((()=>{v(),f()}),[v,f]);return o((()=>{if(e){s.current.length=0;const t=t=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|on_streamAdded|${e.getName()}`,t),b((e=>[...e,t]))},o=t=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|on_streamRemoved|${e.getName()}`,t),b((e=>e.filter((e=>e!==t))))},n=t=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|on_streamListChanged|${e.getName()}`,t);const o=String(t.streamId);!0===t.isRemote&&("added"===t.listEventType?e.subscribeToStream(o):"removed"===t.listEventType&&e.unsubscribeToStream(o))};return e.on("streamAdded",t),e.on("streamRemoved",o),e.on("streamListChanged",n),()=>{e.removeListener("streamListChanged",n),e.removeListener("streamRemoved",o),e.removeListener("streamAdded",t),h()}}}),[e,h]),o((()=>{if(e){globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|useEffect doHandlePublication|${e.getName()}`,a);const t=()=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|on_joined|${e.getName()}`),p()},o=()=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|on_left|${e.getName()}`),h()};return e.on("joined",t),e.on("left",o),e.isJoined()&&p(),()=>{e.removeListener("joined",t),e.removeListener("left",o)}}}),[e,a,p,h]),{publishedStreams:c,subscribedStreams:d,publish:u,unpublish:L,replacePublishedStream:g,unpublishAll:v,unsubscribeAll:f}}const S="usePresence";function y(e,i){const a=t(new Set),r=t(new Map),[s,c]=n(new Map);o((()=>{if(e){const e=a.current,t=r.current;return()=>{e.clear(),t.clear(),c(new Map)}}}),[e]);const l=e=>{var t;const o=null!==(t=r.current.get(e))&&void 0!==t?t:new Set;return r.current.has(e)||r.current.set(e,o),o};return o((()=>{if(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${S}|useEffect session, groups`,i),e){const t=e,o=new Set(i);o.forEach((e=>{a.current.has(e)||(globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${S}|subscribeToGroup`,e),a.current.add(e),t.subscribeToGroup(e))}));let n=!1;if(a.current.forEach((e=>{o.has(e)||(globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${S}|unsubscribeToGroup`,e),t.unsubscribeToGroup(e),a.current.delete(e),r.current.delete(e),n=!0)})),n&&c(new Map(r.current)),i.length>0){const e=e=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${S}|contactListUpdate`,e);let t=!1;for(const n of Object.keys(e.joinedGroup))if(o.has(n)){const o=l(n);for(const i of e.joinedGroup[n])o.add(i),t=!0}for(const n of Object.keys(e.leftGroup))if(o.has(n)){const o=l(n);for(const i of e.leftGroup[n])o.delete(i),t=!0,0===o.size&&r.current.delete(n)}for(const o of e.userDataChanged)for(const e of r.current.values())if(e.has(o)){t=!0;break}t&&c(new Map(r.current))};return t.on("contactListUpdate",e),()=>{t.removeListener("contactListUpdate",e)}}}}),[e,i]),{contactsByGroup:s}}const w="useSession";function I(e,t,i){const[a,s]=n(),[c,l]=n(!1);o((()=>{if(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${w}|useEffect credentials, options`,e,t),e)return d(e,t).catch((e=>{console.error(`${w}|connection failed`,e),s(void 0),i?i(e):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${w}|connect|error`,e)})),()=>{s(void 0),l(!1)}}),[e,t,i]),o((()=>{if(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${w}|useEffect session`,a),a){const e=a;return()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${w}|useEffect session cleanup`,e),e.disconnect().then((()=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${w}|disconnected`,e)})).catch((e=>{console.error(`${w}|disconnect`,e)}))}}}),[a]);const d=(e,t)=>new Promise(((o,n)=>{const i=t||{cloudUrl:"https://cloud.apirtc.com"};let a;if("object"==typeof(c=e)&&"username"in c)i.password=e.password,a=new r({uri:`apirtc:${e.username}`});else if(function(e){return"object"==typeof e&&"apiKey"in e}(e))a=new r({uri:`apiKey:${e.apiKey}`});else{if(!function(e){return"object"==typeof e&&"token"in e}(e))return void n("credentials not recognized");a=new r({uri:`token:${e.token}`})}var c;l(!0),a.register(i).then((e=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${w}|connected`,e),s(e),o()})).catch((e=>{n(e)})).finally((()=>{l(!1)}))}));return{session:a,connecting:c,connect:d,disconnect:()=>{s(void 0)}}}const D="useStreamApplyAudioProcessor";function N(e,i,a){const r=t(),[s,c]=n(e),[l,d]=n(!1),[b,u]=n();return o((()=>()=>{r.current=void 0}),[e]),o((()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${D}|useEffect`,e,i),c(e);const t=r.current||(null==e?void 0:e.audioAppliedFilter)||"none";return e&&i!==t&&(d(!0),e.applyAudioProcessor(i).then((e=>{c(e),r.current=i,u(void 0)})).catch((t=>{u(t),a?a(t):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${D}|useEffect`,e,i,t)})).finally((()=>{d(!1)}))),()=>{u(void 0)}}),[e,i,a]),{stream:s,applying:l,applied:r.current||(null==e?void 0:e.audioAppliedFilter)||"none",error:b}}const j="useStreamApplyVideoProcessor";function A(e,i,a,r){const s=t(),[c,l]=n(e),[d,b]=n(!1),[u,g]=n();return o((()=>()=>{s.current=void 0}),[e]),o((()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${j}|useEffect`,e,i,a),l(e);const t=s.current||(null==e?void 0:e.videoAppliedFilter)||"none";return e&&i!==t&&(b(!0),e.applyVideoProcessor(i,a).then((e=>{l(e),s.current=i,g(void 0)})).catch((t=>{g(t),r?r(t):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${j}|useEffect`,e,i,a,t)})).finally((()=>{b(!1)}))),()=>{g(void 0)}}),[e,i,a,r]),{stream:c,applying:d,applied:s.current||(null==e?void 0:e.videoAppliedFilter)||"none",error:u}}const W="useUserMediaDevices",P=e=>{try{const t=localStorage.getItem(e),o=t?JSON.parse(t):null;return o?new s(o.id,o.type,o.label):void 0}catch(e){return void console.warn(`${W}|getMediaDeviceFromLocalStorage`,e)}},J=(e,t)=>{try{localStorage.setItem(e,t)}catch(e){}};function O(e,t){const i=a((()=>t?`${t}.audioIn`:void 0),[t]),r=a((()=>t?`${t}.audioOut`:void 0),[t]),s=a((()=>t?`${t}.videoIn`:void 0),[t]),[c,l]=n((()=>i?P(i):void 0)),[d,b]=n((()=>r?P(r):void 0)),[u,g]=n((()=>s?P(s):void 0)),[L,p]=n({audioinput:c?{[c.getId()]:c}:{},audiooutput:d?{[d.getId()]:d}:{},videoinput:u?{[u.getId()]:u}:{}});return o((()=>{if(e){const t=e.getUserAgent(),o=()=>{const e=t.getUserMediaDevices();globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${W}|mediaDeviceChanged`,e),p(e),l((t=>t?e.audioinput[t.getId()]:void 0)),b((t=>t?e.audiooutput[t.getId()]:void 0)),g((t=>t?e.videoinput[t.getId()]:void 0))};return t.on("mediaDeviceChanged",o),()=>{t.removeListener("mediaDeviceChanged",o)}}}),[e]),o((()=>{c&&i&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${W}|Storing audioIn`,c),J(i,JSON.stringify({id:c.getId(),type:c.getType(),label:c.getLabel()})))}),[i,c]),o((()=>{d&&r&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${W}|Storing audioOut`,d),J(r,JSON.stringify({id:d.getId(),type:d.getType(),label:d.getLabel()})))}),[r,d]),o((()=>{u&&s&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${W}|Storing videoIn`,u),J(s,JSON.stringify({id:u.getId(),type:u.getType(),label:u.getLabel()})))}),[s,u]),{userMediaDevices:L,selectedAudioIn:c,selectedAudioInId:null==c?void 0:c.getId(),setSelectedAudioIn:l,selectedAudioOut:d,selectedAudioOutId:null==d?void 0:d.getId(),setSelectedAudioOut:b,selectedVideoIn:u,selectedVideoInId:null==u?void 0:u.getId(),setSelectedVideoIn:g}}function C(e,t,o,n){return new(o||(o=Promise))((function(i,a){function r(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(r,s)}c((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const M="useTranscriptService";function k(e,t){const[a,r]=n(null),[s,c]=n(!1),[l,d]=n([]);o((()=>{if(a)return;let e=!0;return import("@apizee/ia").then((({TranscriptService:t})=>{if(!e)return void(globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|instanciation aborted - component unmounted`));const o=new t;r(o)})),()=>{e=!1}}),[a]),o((()=>{if(!a)return void(globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|useEffect transcript listener skipped - transcriptService not ready`));const e=e=>{const{transcript:t}=e;globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${M}|onTranscript`,t),d((e=>[...e,t]))};return a.addEventListener("transcript",e),()=>{a.removeEventListener("transcript",e),globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${M}|useEffect cleanup`,"onTranscript")}}),[a]);const b=i((()=>C(this,void 0,void 0,(function*(){globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${M}|startTranscriptService transcriptService, hasStarted`,a,s),a?s?globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|startTranscriptService aborted - already started`):e?yield a.start(e).then((()=>{console.log(`${M}|startTranscriptService - started`),c(!0)})).catch((e=>{console.error(`${M}|startTranscriptService - failed`,e)})):console.warn(`${M}|startTranscriptService aborted - conversation not provided`):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|startTranscriptService aborted - transcriptService not initialized`)}))),[a,s,e]),u=i((()=>C(this,void 0,void 0,(function*(){a?e?yield a.stop(e).then((()=>{console.log(`${M}|stopTranscriptService - stopped`),c(!1)})).catch((e=>{console.error(`${M}|stopTranscriptService - failed`,e)})):console.warn(`${M}|stopTranscriptService aborted - conversation not provided`):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|stopTranscriptService aborted - transcriptService not initialized`)}))),[a,e]);return o((()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${M}|useEffect autoStartTranscriptService autoStart, conversation`,t,e),t?e?b():globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|useEffect - auto start transcription not possible if conversation not provided`):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|useEffect autoStart skipped - autoStart=false`)}),[t,e,b]),{transcriptService:a,hasStarted:s,transcripts:l,startTranscriptService:b,stopTranscriptService:u}}const G={level:"info",isDebugEnabled:!1,isInfoEnabled:!0,isWarnEnabled:!0};function U(e){switch(e){case"debug":globalThis.apirtcReactLibLogLevel={level:"debug",isDebugEnabled:!0,isInfoEnabled:!0,isWarnEnabled:!0};break;case"info":default:globalThis.apirtcReactLibLogLevel=G;break;case"warn":globalThis.apirtcReactLibLogLevel={level:"warn",isDebugEnabled:!1,isInfoEnabled:!1,isWarnEnabled:!0};break;case"error":globalThis.apirtcReactLibLogLevel={level:"error",isDebugEnabled:!1,isInfoEnabled:!1,isWarnEnabled:!1}}return globalThis.apirtcReactLibLogLevel}globalThis.apirtcReactLibLogLevel=G,globalThis.setApirtcReactLibLogLevel=U;export{c as VideoStream,U as setLogLevel,b as useCameraStream,g as useConversation,p as useConversationContacts,f as useConversationMessages,m as useConversationModeration,R as useConversationStreams,y as usePresence,I as useSession,N as useStreamApplyAudioProcessor,A as useStreamApplyVideoProcessor,k as useTranscriptService,O as useUserMediaDevices};
|
|
1
|
+
import e,{useRef as t,useEffect as o,useState as n,useCallback as i,useMemo as a}from"react";import{UserAgent as r,MediaDevice as s}from"@apirtc/apirtc";function c(n){const{autoPlay:i=!0}=n,a=t(null);return o(()=>{const e=a.current;if(e&&n.stream)return n.stream.attachToElement(e),()=>{e.src=""}},[n.stream]),e.createElement("video",{id:n.stream.getId(),style:{maxWidth:"100%"},ref:a,autoPlay:i,muted:n.muted})}const l={},d="useCameraStream";function b(e,t=l,i){const[a,r]=n(),[s,c]=n(!1),[b,u]=n();return o(()=>{if(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${d}|useEffect`,e,t),e){const o=e.getUserAgent();c(!0),o.createStream(t).then(e=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${d}|createStream`,t,e),r(e),u(void 0)}).catch(e=>{console.error(`${d}|createStream error`,t,e),r(void 0),i&&i(e),u(e)}).finally(()=>{c(!1)})}else r(void 0),u(void 0)},[e,t,i]),o(()=>{const e=a;if(e)return()=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${d}|release stream`,e),e.release()}},[a]),{stream:a,grabbing:s,error:b}}const u="useConversation";function g(e,t,a,r=!0,s){const[c,l]=n(),[d,b]=n(!1),[g,L]=n(!1),p=i((e={})=>(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|join`,c,e),new Promise((t,o)=>{c?c.isJoined()?o(`${u}|join|conversation already joined`):(L(!0),c.join(e).then(()=>{b(!0),t()}).catch(e=>{o(e)}).finally(()=>{L(!1)})):o(`${u}|join|conversation not defined`)})),[c]),v=i(()=>(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|leave`,c),new Promise((e,t)=>{c?c.isJoined()?c.leave().then(()=>{b(!1),e()}).catch(e=>{t(e)}):t(`${u}|leave|conversation is not joined`):t(`${u}|leave|conversation not defined`)})),[c]);return o(()=>{if(e&&t){globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|getOrCreateConversation`,t,a);const o=e.getOrCreateConversation(t,a);return l(o),()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|useEffect cleanup`,t,a),o.isJoined()?o.leave().then(()=>{}).catch(e=>{globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${u}|useEffect conversation.leave()`,e)}).finally(()=>{o.destroy()}):o.destroy(),l(void 0),b(!1)}}},[e,t,a]),o(()=>{if(c&&r){globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|useEffect`,c,r,s);const e=c,t=r;return t&&(L(!0),e.join(s).then(()=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${u}|joined`,e),b(!0)}).catch(t=>{globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${u}|useEffect conversation.join() error`,e,s,t)}).finally(()=>{L(!1)})),()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${u}|useEffect cleanup`,e,t),e.isJoined()&&e.leave().then(()=>{b(!1)}).catch(t=>{globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${u}|useEffect conversation.leave() error`,e,t)})}}},[c,a,r,s]),{conversation:c,joining:g,joined:d,join:p,leave:v}}const L="useConversationContacts";function p(e,t,i){const[a,r]=n([]);return o(()=>{if(e){const o=o=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${L}|on:contactJoined:`,e.getName(),o),r(e=>[...e,o]),t&&t(o)};e.on("contactJoined",o);const n=t=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${L}|on:contactLeft:`,e.getName(),t),r(e=>e.filter(e=>e!==t)),i&&i(t)};return e.on("contactLeft",n),()=>{e.removeListener("contactJoined",o),e.removeListener("contactLeft",n),r(new Array)}}},[e,t,i]),{contacts:a}}const v="useConversationMessages";function f(e){const[t,a]=n([]);o(()=>{if(e){const t=t=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${v}|on:message:`,e.getName(),t),a(e=>[...e,t])};return e.on("message",t),()=>{e.removeListener("message",t),a(new Array)}}},[e]);return{messages:t,sendMessage:i((t,o)=>new Promise((n,i)=>{null==e||e.sendMessage(t).then(i=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${v}|sentMessage`,e.getName(),i,t),a(e=>[...e,{content:t,sender:o,time:new Date}]),n()}).catch(e=>{globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${v}|sendMessage error`,e),i(e)})}),[e])}}const h="useConversationModeration";function m(e,t,i){const[a,r]=n(new Set);return o(()=>{if(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${h}|useEffect conversation`,e),e){const o=e=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${h}|on:contactJoinedWaitingRoom`,e),r(t=>new Set(t.add(e)))},n=e=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${h}|on:contactLeftWaitingRoom`,e),r(t=>(t.delete(e),new Set(t)))},a=e=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${h}|on:participantEjected`,e),!0===e.self?(globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${h}|Self participant was ejected`),i&&i()):t&&t(e.contact)};return e.on("contactJoinedWaitingRoom",o).on("contactLeftWaitingRoom",n).on("participantEjected",a),()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${h}|conversation clear`,e),e.removeListener("contactJoinedWaitingRoom",o).removeListener("contactLeftWaitingRoom",n).removeListener("participantEjected",a),r(new Set)}}},[e,t,i]),{candidates:a}}function E(e){return null!=e}const T=[],$="useConversationStreams";function R(e,a=T,r){globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|hook render|${null==e?void 0:e.getName()}`,a.map(e=>null==e?void 0:e.options));const s=t([]),[c,l]=n(new Array),[d,b]=n(new Array),u=i((t,o)=>new Promise((n,i)=>{e&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|publish|${e.getName()}`,t,o),e.publish(t,o).then(t=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|published|${e.getName()}`,t),l(e=>[...e,t]),n(t)}).catch(e=>{i(e)}))}),[e]),g=i((t,o)=>new Promise((n,i)=>{e&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|replacePublishedStream|${e.getName()}|${t.getId()} -> ${o.getId()}`),e.replacePublishedStream(t,o).then(o=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|stream replaced|${e.getName()}`,t,o),l(e=>{const n=e.indexOf(t);return n>=0&&e.splice(n,1,o),Array.from(e)}),n(o)}).catch(e=>{i(e)}))}),[e]),L=i(t=>{e&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|unpublish|${e.getName()}`,t.getId(),t),e.unpublish(t),l(e=>e.filter(e=>e!==t)))},[e]),p=i(()=>{const t=Math.max(s.current.length,a.length);globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|doHandlePublication`,a,JSON.stringify(s.current.map(e=>null==e?void 0:e.stream.getId())),JSON.stringify(a.map(e=>null==e?void 0:e.stream.getId())),t);const o=[...s.current],n=a.map(e=>e&&e.options?{stream:e.stream,options:Object.assign({},e.options)}:e);s.current.length=0,s.current.push(...n);const i=new Set(a.filter(E).map(e=>e.stream)),c=(e,t)=>{u(t.stream,t.options).catch(t=>{s.current.splice(e,1,null),r?r(t):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${$}|publish|error`,t)})};for(let n=0;n<t;n++){const t=o[n],l=a[n];if(t&&l){const o=()=>{L(t.stream),c(n,l)};t.stream===l.stream?JSON.stringify(t.options)!==JSON.stringify(l.options)&&o():i.has(t.stream)?e&&!e.isPublishedStream(l.stream)&&c(n,l):e&&!e.isPublishedStream(l.stream)?JSON.stringify(t.options)===JSON.stringify(l.options)?g(t.stream,l.stream).catch(e=>{s.current.splice(n,1,null),r?r(e):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${$}|replacePublishedStream|error`,e)}):o():L(t.stream)}else t&&!l?i.has(t.stream)||L(t.stream):!t&&l&&e&&!e.isPublishedStream(l.stream)&&c(n,l)}},[e,a,u,L,g,r]),v=i(()=>{e&&l(t=>(t.forEach(t=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|unpublish|${e.getName()}`,t),e.unpublish(t)}),[])),s.current.length=0},[e]),f=i(()=>{e&&b(t=>(t.forEach(t=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|unsubscribeToStream|${e.getName()}`,t),e.unsubscribeToStream(t.getId())}),[]))},[e]),h=i(()=>{v(),f()},[v,f]);return o(()=>{if(e){s.current.length=0;const t=t=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|on_streamAdded|${e.getName()}`,t),b(e=>[...e,t])},o=t=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|on_streamRemoved|${e.getName()}`,t),b(e=>e.filter(e=>e!==t))},n=t=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|on_streamListChanged|${e.getName()}`,t);const o=String(t.streamId);!0===t.isRemote&&("added"===t.listEventType?e.subscribeToStream(o):"removed"===t.listEventType&&e.unsubscribeToStream(o))};return e.on("streamAdded",t),e.on("streamRemoved",o),e.on("streamListChanged",n),()=>{e.removeListener("streamListChanged",n),e.removeListener("streamRemoved",o),e.removeListener("streamAdded",t),h()}}},[e,h]),o(()=>{if(e){globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${$}|useEffect doHandlePublication|${e.getName()}`,a);const t=()=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|on_joined|${e.getName()}`),p()},o=()=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${$}|on_left|${e.getName()}`),h()};return e.on("joined",t),e.on("left",o),e.isJoined()&&p(),()=>{e.removeListener("joined",t),e.removeListener("left",o)}}},[e,a,p,h]),{publishedStreams:c,subscribedStreams:d,publish:u,unpublish:L,replacePublishedStream:g,unpublishAll:v,unsubscribeAll:f}}const S="usePresence";function y(e,i){const a=t(new Set),r=t(new Map),[s,c]=n(new Map);o(()=>{if(e){const e=a.current,t=r.current;return()=>{e.clear(),t.clear(),c(new Map)}}},[e]);const l=e=>{var t;const o=null!==(t=r.current.get(e))&&void 0!==t?t:new Set;return r.current.has(e)||r.current.set(e,o),o};return o(()=>{if(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${S}|useEffect session, groups`,i),e){const t=e,o=new Set(i);o.forEach(e=>{a.current.has(e)||(globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${S}|subscribeToGroup`,e),a.current.add(e),t.subscribeToGroup(e))});let n=!1;if(a.current.forEach(e=>{o.has(e)||(globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${S}|unsubscribeToGroup`,e),t.unsubscribeToGroup(e),a.current.delete(e),r.current.delete(e),n=!0)}),n&&c(new Map(r.current)),i.length>0){const e=e=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${S}|contactListUpdate`,e);let t=!1;for(const n of Object.keys(e.joinedGroup))if(o.has(n)){const o=l(n);for(const i of e.joinedGroup[n])o.add(i),t=!0}for(const n of Object.keys(e.leftGroup))if(o.has(n)){const o=l(n);for(const i of e.leftGroup[n])o.delete(i),t=!0,0===o.size&&r.current.delete(n)}for(const o of e.userDataChanged)for(const e of r.current.values())if(e.has(o)){t=!0;break}t&&c(new Map(r.current))};return t.on("contactListUpdate",e),()=>{t.removeListener("contactListUpdate",e)}}}},[e,i]),{contactsByGroup:s}}const w="useSession";function I(e,t,i){const[a,s]=n(),[c,l]=n(!1);o(()=>{if(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${w}|useEffect credentials, options`,e,t),e)return d(e,t).catch(e=>{console.error(`${w}|connection failed`,e),s(void 0),i?i(e):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${w}|connect|error`,e)}),()=>{s(void 0),l(!1)}},[e,t,i]),o(()=>{if(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${w}|useEffect session`,a),a){const e=a;return()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${w}|useEffect session cleanup`,e),e.disconnect().then(()=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${w}|disconnected`,e)}).catch(e=>{console.error(`${w}|disconnect`,e)})}}},[a]);const d=(e,t)=>new Promise((o,n)=>{const i=t||{cloudUrl:"https://cloud.apirtc.com"};let a;if("object"==typeof(c=e)&&"username"in c)i.password=e.password,a=new r({uri:`apirtc:${e.username}`});else if(function(e){return"object"==typeof e&&"apiKey"in e}(e))a=new r({uri:`apiKey:${e.apiKey}`});else{if(!function(e){return"object"==typeof e&&"token"in e}(e))return void n("credentials not recognized");a=new r({uri:`token:${e.token}`})}var c;l(!0),a.register(i).then(e=>{globalThis.apirtcReactLibLogLevel.isInfoEnabled&&console.info(`${w}|connected`,e),s(e),o()}).catch(e=>{n(e)}).finally(()=>{l(!1)})});return{session:a,connecting:c,connect:d,disconnect:()=>{s(void 0)}}}const D="useStreamApplyAudioProcessor";function N(e,i,a){const r=t(),[s,c]=n(e),[l,d]=n(!1),[b,u]=n();return o(()=>()=>{r.current=void 0},[e]),o(()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${D}|useEffect`,e,i),c(e);const t=r.current||(null==e?void 0:e.audioAppliedFilter)||"none";return e&&i!==t&&(d(!0),e.applyAudioProcessor(i).then(e=>{c(e),r.current=i,u(void 0)}).catch(t=>{u(t),a?a(t):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${D}|useEffect`,e,i,t)}).finally(()=>{d(!1)})),()=>{u(void 0)}},[e,i,a]),{stream:s,applying:l,applied:r.current||(null==e?void 0:e.audioAppliedFilter)||"none",error:b}}const j="useStreamApplyVideoProcessor";function A(e,i,a,r){const s=t(),[c,l]=n(e),[d,b]=n(!1),[u,g]=n();return o(()=>()=>{s.current=void 0},[e]),o(()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${j}|useEffect`,e,i,a),l(e);const t=s.current||(null==e?void 0:e.videoAppliedFilter)||"none";return e&&i!==t&&(b(!0),e.applyVideoProcessor(i,a).then(e=>{l(e),s.current=i,g(void 0)}).catch(t=>{g(t),r?r(t):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${j}|useEffect`,e,i,a,t)}).finally(()=>{b(!1)})),()=>{g(void 0)}},[e,i,a,r]),{stream:c,applying:d,applied:s.current||(null==e?void 0:e.videoAppliedFilter)||"none",error:u}}const W="useUserMediaDevices",P=e=>{try{const t=localStorage.getItem(e),o=t?JSON.parse(t):null;return o?new s(o.id,o.type,o.label):void 0}catch(e){return void console.warn(`${W}|getMediaDeviceFromLocalStorage`,e)}},J=(e,t)=>{try{localStorage.setItem(e,t)}catch(e){}};function O(e,t){const i=a(()=>t?`${t}.audioIn`:void 0,[t]),r=a(()=>t?`${t}.audioOut`:void 0,[t]),s=a(()=>t?`${t}.videoIn`:void 0,[t]),[c,l]=n(()=>i?P(i):void 0),[d,b]=n(()=>r?P(r):void 0),[u,g]=n(()=>s?P(s):void 0),[L,p]=n({audioinput:c?{[c.getId()]:c}:{},audiooutput:d?{[d.getId()]:d}:{},videoinput:u?{[u.getId()]:u}:{}});return o(()=>{if(e){const t=e.getUserAgent(),o=()=>{const e=t.getUserMediaDevices();globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${W}|mediaDeviceChanged`,e),p(e),l(t=>t?e.audioinput[t.getId()]:void 0),b(t=>t?e.audiooutput[t.getId()]:void 0),g(t=>t?e.videoinput[t.getId()]:void 0)};return t.on("mediaDeviceChanged",o),()=>{t.removeListener("mediaDeviceChanged",o)}}},[e]),o(()=>{c&&i&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${W}|Storing audioIn`,c),J(i,JSON.stringify({id:c.getId(),type:c.getType(),label:c.getLabel()})))},[i,c]),o(()=>{d&&r&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${W}|Storing audioOut`,d),J(r,JSON.stringify({id:d.getId(),type:d.getType(),label:d.getLabel()})))},[r,d]),o(()=>{u&&s&&(globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${W}|Storing videoIn`,u),J(s,JSON.stringify({id:u.getId(),type:u.getType(),label:u.getLabel()})))},[s,u]),{userMediaDevices:L,selectedAudioIn:c,selectedAudioInId:null==c?void 0:c.getId(),setSelectedAudioIn:l,selectedAudioOut:d,selectedAudioOutId:null==d?void 0:d.getId(),setSelectedAudioOut:b,selectedVideoIn:u,selectedVideoInId:null==u?void 0:u.getId(),setSelectedVideoIn:g}}function C(e,t,o,n){return new(o||(o=Promise))(function(i,a){function r(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(r,s)}c((n=n.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;const M="useTranscriptService";function k(e,t){const[a,r]=n(null),[s,c]=n(!1),[l,d]=n([]);o(()=>{if(a)return;let e=!0;return import("@apirtc/ia").then(({TranscriptService:t})=>{if(!e)return void(globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|instanciation aborted - component unmounted`));const o=new t;r(o)}),()=>{e=!1}},[a]),o(()=>{if(!a)return void(globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|useEffect transcript listener skipped - transcriptService not ready`));const e=e=>{const{transcript:t}=e;globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${M}|onTranscript`,t),d(e=>[...e,t])};return a.addEventListener("transcript",e),()=>{a.removeEventListener("transcript",e),globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${M}|useEffect cleanup`,"onTranscript")}},[a]);const b=i(()=>C(this,void 0,void 0,function*(){globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${M}|startTranscriptService transcriptService, hasStarted`,a,s),a?s?globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|startTranscriptService aborted - already started`):e?yield a.start(e).then(()=>{console.log(`${M}|startTranscriptService - started`),c(!0)}).catch(e=>{console.error(`${M}|startTranscriptService - failed`,e)}):console.warn(`${M}|startTranscriptService aborted - conversation not provided`):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|startTranscriptService aborted - transcriptService not initialized`)}),[a,s,e]),u=i(()=>C(this,void 0,void 0,function*(){a?e?yield a.stop(e).then(()=>{console.log(`${M}|stopTranscriptService - stopped`),c(!1)}).catch(e=>{console.error(`${M}|stopTranscriptService - failed`,e)}):console.warn(`${M}|stopTranscriptService aborted - conversation not provided`):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|stopTranscriptService aborted - transcriptService not initialized`)}),[a,e]);return o(()=>{globalThis.apirtcReactLibLogLevel.isDebugEnabled&&console.debug(`${M}|useEffect autoStartTranscriptService autoStart, conversation`,t,e),t?e?b():globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|useEffect - auto start transcription not possible if conversation not provided`):globalThis.apirtcReactLibLogLevel.isWarnEnabled&&console.warn(`${M}|useEffect autoStart skipped - autoStart=false`)},[t,e,b]),{transcriptService:a,hasStarted:s,transcripts:l,startTranscriptService:b,stopTranscriptService:u}}const G={level:"info",isDebugEnabled:!1,isInfoEnabled:!0,isWarnEnabled:!0};function U(e){switch(e){case"debug":globalThis.apirtcReactLibLogLevel={level:"debug",isDebugEnabled:!0,isInfoEnabled:!0,isWarnEnabled:!0};break;case"info":default:globalThis.apirtcReactLibLogLevel=G;break;case"warn":globalThis.apirtcReactLibLogLevel={level:"warn",isDebugEnabled:!1,isInfoEnabled:!1,isWarnEnabled:!0};break;case"error":globalThis.apirtcReactLibLogLevel={level:"error",isDebugEnabled:!1,isInfoEnabled:!1,isWarnEnabled:!1}}return globalThis.apirtcReactLibLogLevel}globalThis.apirtcReactLibLogLevel=G,globalThis.setApirtcReactLibLogLevel=U;export{c as VideoStream,U as setLogLevel,b as useCameraStream,g as useConversation,p as useConversationContacts,f as useConversationMessages,m as useConversationModeration,R as useConversationStreams,y as usePresence,I as useSession,N as useStreamApplyAudioProcessor,A as useStreamApplyVideoProcessor,k as useTranscriptService,O as useUserMediaDevices};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|