UNPKG

react-use-opentok

Version:
3 lines (2 loc) 8.3 kB
"use strict";var e=require("@babel/runtime/helpers/defineProperty"),n=require("@babel/runtime/regenerator"),t=require("@babel/runtime/helpers/asyncToGenerator"),r=require("@babel/runtime/helpers/slicedToArray"),s=require("react"),o=require("@babel/runtime/helpers/toConsumableArray"),i=require("@opentok/client");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=a(e),u=a(n),l=a(t),p=a(r),d=a(o),f=a(i);function b(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function m(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?b(Object(t),!0).forEach((function(n){c.default(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):b(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}var h={isSessionInitialized:!1,connectionId:void 0,isSessionConnected:!1,session:void 0,connections:[],streams:[],subscribers:[],publisher:{}},O=function(e,n){var t=n.type,r=n.payload;switch(t){case"UPDATE":return m(m({},e),r);case"ADD_CONNECTION":return m(m({},e),{},{connections:[].concat(d.default(e.connections),[r])});case"REMOVE_CONNECTION":return m(m({},e),{},{connections:d.default(e.connections.filter((function(e){return e.connectionId!==r.connectionId})))});case"ADD_STREAM":return m(m({},e),{},{streams:[].concat(d.default(e.streams),[r])});case"REMOVE_STREAM":return m(m({},e),{},{streams:d.default(e.streams.filter((function(e){return e.streamId!==r.streamId})))});case"SET_PUBLISHER":var s=r.name,o=r.publisher;return m(m({},e),{},{publisher:m(m({},e.publisher),{},c.default({},s,o))});case"REMOVE_PUBLISHER":var i=r.name;return m(m({},e),{},{publisher:m(m({},e.publisher),{},c.default({},i,null))});case"ADD_SUBSCRIBER":return m(m({},e),{},{subscribers:[].concat(d.default(e.subscribers),[r])});case"REMOVE_SUBSCRIBER":return m(m({},e),{},{subscribers:d.default(e.subscribers.filter((function(e){return e.streamId!==r.streamId})))});default:return e}},y=["archiveStarted","archiveStopped","connectionCreated","connectionDestroyed","sessionConnected","sessionDisconnected","sessionReconnected","sessionReconnecting","signal","streamCreated","streamDestroyed","streamPropertyChanged"],v=function(e,n,t){if(!y.some((function(n){return e.startsWith(n)})))throw new Error("[ReactUseOpenTok] useSessionEventHandler: The event type is NOT supported");if("function"!=typeof n)throw new Error("[ReactUseOpenTok] useSessionEventHandler: Incorrect value or type of callback");s.useEffect((function(){if("string"==typeof(t||{}).sessionId)return t.on(e,n),function(){t.off(e,n)}}),[t,e,n])};function E(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function S(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?E(Object(t),!0).forEach((function(n){c.default(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):E(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}var P={insertMode:"append",width:"100%",height:"100%"};module.exports=function(){var e=function(){var e=s.useReducer(O,h),n=p.default(e,2),t=n[0],r=n[1];return[t,s.useMemo((function(){return{update:function(e){r({type:"UPDATE",payload:e})},addConnection:function(e){r({type:"ADD_CONNECTION",payload:e})},removeConnection:function(e){r({type:"REMOVE_CONNECTION",payload:e})},addStream:function(e){r({type:"ADD_STREAM",payload:e})},removeStream:function(e){r({type:"REMOVE_STREAM",payload:e})},setPublisher:function(e){var n=e.name,t=e.publisher;r({type:"SET_PUBLISHER",payload:{name:n,publisher:t}})},removePublisher:function(e){var n=e.name;r({type:"REMOVE_PUBLISHER",payload:{name:n}})},addSubscriber:function(e){r({type:"ADD_SUBSCRIBER",payload:e})},removeSubscriber:function(e){r({type:"REMOVE_SUBSCRIBER",payload:e})}}}),[])]}(),n=p.default(e,2),t=n[0],r=n[1],o=t.isSessionConnected,i=t.session,a=t.subscribers,c=t.publisher,d=t.streams,b=s.useCallback((function(e){r.addConnection(e.connection)}),[r]),m=s.useCallback((function(e){r.removeConnection(e.connection)}),[r]),y=s.useCallback((function(e){r.addStream(e.stream)}),[r]),E=s.useCallback((function(e){r.removeStream(e.stream)}),[r]),C=s.useCallback((function(e){var n=e.apiKey,t=e.sessionId,s=e.sessionOptions;return new Promise((function(e){var o=f.default.initSession(n,t,s);r.update({session:o,isSessionInitialized:!0}),e(o)}))}),[r]),w=s.useCallback((function(e,n){return new Promise((function(t,s){return e?n?void n.connect(e,(function(e){if(e)s(e);else{var o=n.connection.connectionId;r.update({connectionId:o,isSessionConnected:!0}),t(o)}})):s("[ReactUseOpenTok] session does not exist."):s("[ReactUseOpenTok] token does not exist.")}))}),[r]),R=s.useCallback(function(){var e=l.default(u.default.mark((function e(n){var t,r,s,o,i;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=n.apiKey,r=n.sessionId,s=n.token,o=n.sessionOptions,e.next=3,C({apiKey:t,sessionId:r,sessionOptions:o});case 3:return i=e.sent,e.next=6,w(s,i);case 6:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),[w,C]),k=s.useCallback((function(){i.disconnect(),r.update({connectionId:null,isSessionConnected:!1})}),[r,i]),I=s.useCallback((function(e){var n=e.name,t=e.element,s=e.options;if(c[n])throw new Error("[ReactUseOpenTok] initPublisher: The publisher(".concat(n,") is already existed"));return new Promise((function(e,o){var i=f.default.initPublisher(t,S(S({},P),s),(function(e){e&&o(e)}));r.setPublisher({name:n,publisher:i}),e(i)}))}),[r,i,c]),T=s.useCallback((function(e){var n=e.name;if(!c[n])throw new Error("[ReactUseOpenTok] removePublisher: The publisher(".concat(n,") is not existed"));if(d.some((function(e){return e.streamId===c[n].stream.streamId})))throw new Error("[ReactUseOpenTok] removePublisher: can NOT remove published publisher, please use unpublish instead.");c[n].destroy(),r.removePublisher({name:n})}),[r,d,c]),D=s.useCallback((function(e){var n=e.name;if(!c[n])throw new Error("[ReactUseOpenTok] publishPublisher: The publisher(".concat(n,") is not existed"));return new Promise((function(e,t){i.publish(c[n],(function(s){s?t(s):(r.addStream(c[n].stream),e(c[n].stream))}))}))}),[r,i,c]),g=s.useCallback((function(e){var n=e.name,t=e.element,s=e.options;if(c[n])throw new Error("[ReactUseOpenTok] publish: The publisher(".concat(n,") is already existed"));return new Promise((function(e,n){e(f.default.initPublisher(t,S(S({},P),s),(function(e){e&&n(e)})))})).then((function(e){return new Promise((function(t,s){i.publish(e,(function(o){o?s(o):(r.setPublisher({name:n,publisher:e}),r.addStream(e.stream),t(e.stream))}))}))}))}),[r,c,i]),j=s.useCallback((function(e){var n=e.name;if(!c||!c[n])throw new Error("[ReactUseOpenTok] unpublish: publisher[".concat(n,"] is undefined"));var t=c&&c[n]&&c[n].stream;i.unpublish(c[n]),r.removePublisher({name:n}),r.removeStream(t)}),[r,c,i]),U=s.useCallback((function(e){var n=e.stream,t=e.element,s=e.options,o=i.subscribe(n,t,S(S({},P),s));return r.addSubscriber(o),o}),[r,i]),_=s.useCallback((function(e){var n=e.stream.streamId,t=a.find((function(e){return e.streamId===n}));i.unsubscribe(t),r.removeSubscriber(t)}),[r,i,a]),A=s.useCallback((function(e){var n=e.type,t=e.data,r=e.to,s=e.completionHandler;if(!o)throw new Error("[ReactUseOpenTok] sendSignal: Session is not connected");var a=S(S({data:t},n&&{type:n}),r&&{to:r});i.signal(a,(function(e){if(e)throw new Error("[ReactUseOpenTok] sendSignal error: "+e.message);"function"==typeof s&&s()}))}),[o,i]);return v("connectionCreated",b,i),v("connectionDestroyed",m,i),v("streamCreated",y,i),v("streamDestroyed",E,i),[t,{initSessionAndConnect:R,initSession:C,connectSession:w,disconnectSession:k,initPublisher:I,removePublisher:T,publishPublisher:D,publish:g,unpublish:j,subscribe:U,unsubscribe:_,sendSignal:A}]}; //# sourceMappingURL=react-use-opentok.cjs.min.js.map