react-use-opentok
Version:
React Hook for @opentok/client SDK
3 lines (2 loc) • 7.34 kB
JavaScript
var e,n=require("react"),t=(e=require("@opentok/client"))&&"object"==typeof e&&"default"in e?e.default:e;function r(e,n,t,r,o,i,s){try{var c=e[i](s),a=c.value}catch(e){return void t(e)}c.done?n(a):Promise.resolve(a).then(r,o)}function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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?i(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var t=[],r=!0,o=!1,i=void 0;try{for(var s,c=e[Symbol.iterator]();!(r=(s=c.next()).done)&&(t.push(s.value),!n||t.length!==n);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw i}}return t}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function a(e){return function(e){if(Array.isArray(e)){for(var n=0,t=new Array(e.length);n<e.length;n++)t[n]=e[n];return t}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var u={isSessionInitialized:!1,connectionId:void 0,isSessionConnected:!1,session:void 0,connections:[],streams:[],subscribers:[],publisher:{}},l=function(e,n){var t=n.type,r=n.payload;switch(t){case"UPDATE":return s({},e,{},r);case"ADD_CONNECTION":return s({},e,{connections:[].concat(a(e.connections),[r])});case"REMOVE_CONNECTION":return s({},e,{connections:a(e.connections.filter((function(e){return e.connectionId!==r.connectionId})))});case"ADD_STREAM":return s({},e,{streams:[].concat(a(e.streams),[r])});case"REMOVE_STREAM":return s({},e,{streams:a(e.streams.filter((function(e){return e.streamId!==r.streamId})))});case"SET_PUBLISHER":var i=r.name,c=r.publisher;return s({},e,{publisher:s({},e.publisher,o({},i,c))});case"REMOVE_PUBLISHER":var u=r.name;return s({},e,{publisher:s({},e.publisher,o({},u,null))});case"ADD_SUBSCRIBER":return s({},e,{subscribers:[].concat(a(e.subscribers),[r])});case"REMOVE_SUBSCRIBER":return s({},e,{subscribers:a(e.subscribers.filter((function(e){return e.streamId!==r.streamId})))});default:return e}},f=["archiveStarted","archiveStopped","connectionCreated","connectionDestroyed","sessionConnected","sessionDisconnected","sessionReconnected","sessionReconnecting","signal","streamCreated","streamDestroyed","streamPropertyChanged"],d=function(e,t,r){if(!f.some((function(n){return e.startsWith(n)})))throw new Error("The event type is NOT supported");if("function"!=typeof t)throw new Error("Incorrect value or type of callback");n.useEffect((function(){if("string"==typeof(r||{}).sessionId)return r.on(e,t),function(){r.off(e,t)}}),[r,e,t])},p={insertMode:"append",width:"100%",height:"100%"};module.exports=function(){var e=function(){var e=c(n.useReducer(l,u),2),t=e[0],r=e[1];return[t,n.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})}}}),[])]}(),o=c(e,2),i=o[0],a=o[1],f=i.isSessionConnected,b=i.session,m=i.subscribers,y=i.publisher,h=i.streams,v=n.useCallback((function(e){a.addConnection(e.connection)}),[a]),S=n.useCallback((function(e){a.removeConnection(e.connection)}),[a]),E=n.useCallback((function(e){a.addStream(e.stream)}),[a]),O=n.useCallback((function(e){a.removeStream(e.stream)}),[a]),C=n.useCallback((function(e){var n=e.apiKey,r=e.sessionId,o=e.sessionOptions;return new Promise((function(e){var i=t.initSession(n,r,o);a.update({session:i,isSessionInitialized:!0}),e(i)}))}),[a]),I=n.useCallback((function(e,n){return new Promise((function(t,r){return e?n?void n.connect(e,(function(e){if(e)r(e);else{var o=n.connection.connectionId;a.update({connectionId:o,isSessionConnected:!0}),t(o)}})):r("[react-use-opentok] session does not exist."):r("[react-use-opentok] token does not exist.")}))}),[a]),w=n.useCallback(function(){var e,n=(e=regeneratorRuntime.mark((function e(n){var t,r,o,i,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=n.apiKey,r=n.sessionId,o=n.token,i=n.sessionOptions,e.next=3,C({apiKey:t,sessionId:r,sessionOptions:i});case 3:return s=e.sent,e.next=6,I(o,s);case 6:case"end":return e.stop()}}),e)})),function(){var n=this,t=arguments;return new Promise((function(o,i){var s=e.apply(n,t);function c(e){r(s,o,i,c,a,"next",e)}function a(e){r(s,o,i,c,a,"throw",e)}c(void 0)}))});return function(e){return n.apply(this,arguments)}}(),[I,C]),R=n.useCallback((function(){b.disconnect(),a.update({connectionId:null,isSessionConnected:!1})}),[a,b]),g=n.useCallback((function(e){var n=e.name,r=e.element,o=e.options;if(y[n])throw new Error("The publisher(".concat(n,") is already existed"));return new Promise((function(e,n){e(t.initPublisher(r,s({},p,{},o),(function(e){e&&n(e)})))})).then((function(e){return new Promise((function(t,r){b.publish(e,(function(o){o?r(o):(a.setPublisher({name:n,publisher:e}),a.addStream(e.stream),t(e.stream))}))}))}))}),[a,y,b]),P=n.useCallback((function(e){var n=e.name;if(!y||!y[n])throw new Error("[unpublish] publisher[".concat(n,"] is undefined"));var t=y&&y[n]&&y[n].stream;b.unpublish(y[n]),a.removePublisher({name:n}),a.removeStream(t)}),[a,y,b]),D=n.useCallback((function(e){var n=e.stream,t=e.element,r=e.options,o=n.streamId,i=h.find((function(e){return e.streamId===o})),c=b.subscribe(i,t,s({},p,{},r));return a.addSubscriber(c),c}),[a,b,h]),k=n.useCallback((function(e){var n=e.stream.streamId,t=m.find((function(e){return e.streamId===n}));b.unsubscribe(t),a.removeSubscriber(t)}),[a,b,m]),A=n.useCallback((function(e){var n=e.type,t=e.data,r=e.completionHandler;if(!f)throw new Error("Session is not connected");var o={data:t};"string"==typeof n&&n.length>0&&(o.type=n),b.signal(o,(function(e){e?console.warn("signal error: "+e.message):"function"==typeof r&&r()}))}),[f,b]);return d("connectionCreated",v,b),d("connectionDestroyed",S,b),d("streamCreated",E,b),d("streamDestroyed",O,b),[i,{initSessionAndConnect:w,initSession:C,connectSession:I,disconnectSession:R,publish:g,unpublish:P,subscribe:D,unsubscribe:k,sendSignal:A}]};
//# sourceMappingURL=react-use-opentok.cjs.min.js.map
;