@100mslive/hms-video-store
Advanced tools
Comparing version 0.1.2 to 0.1.3
import { IHMSActions } from '../IHMSActions'; | ||
import { HMSSdk } from '@100mslive/hms-video'; | ||
import { IHMSStoreReadOnly } from '../IHMSStore'; | ||
import { IHMSStore } from '../IHMSStore'; | ||
export declare class HMSReactiveStore { | ||
@@ -13,3 +13,3 @@ private readonly hmsActions; | ||
*/ | ||
getStore(): IHMSStoreReadOnly; | ||
getStore(): IHMSStore; | ||
/** | ||
@@ -16,0 +16,0 @@ * Any action which may modify the store or may need to talk to the SDK will happen |
@@ -1,4 +0,3 @@ | ||
import { UseStore } from 'zustand'; | ||
import { HMSStore } from './schema'; | ||
import { StateSelector, Subscribe } from 'zustand/vanilla'; | ||
import { StateSelector, StoreApi, Subscribe } from 'zustand/vanilla'; | ||
/** | ||
@@ -8,3 +7,3 @@ * HMS Reactive store can be used to subscribe to different parts of the store using selectors | ||
*/ | ||
export interface IHMSStore extends UseStore<HMSStore> { | ||
export interface IHMSStore extends StoreApi<HMSStore> { | ||
/** | ||
@@ -11,0 +10,0 @@ * Get a part of store using a selector which is true at the current point of time |
@@ -1,2 +0,2 @@ | ||
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("reselect"),r=require("@100mslive/hms-video"),n=e(require("zustand")),o=require("zustand/middleware"),i=e(require("immer"));function a(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function s(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function s(e){a(i,n,o,s,c,"next",e)}function c(e){a(i,n,o,s,c,"throw",e)}s(void 0)}))}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function u(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return c(e,void 0);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,void 0):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,d,f,h=(function(e){var t=function(e){var t=Object.prototype,r=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function s(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,r){return e[t]=r}}function c(e,t,r,n){var o=Object.create((t&&t.prototype instanceof d?t:d).prototype),i=new T(n||[]);return o._invoke=function(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=S(a,r);if(s){if(s===l)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=u(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===l)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(e,r,i),o}function u(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var l={};function d(){}function f(){}function h(){}var p={};p[o]=function(){return this};var v=Object.getPrototypeOf,y=v&&v(v(w([])));y&&y!==t&&r.call(y,o)&&(p=y);var g=h.prototype=d.prototype=Object.create(p);function k(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){var n;this._invoke=function(o,i){function a(){return new t((function(n,a){!function n(o,i,a,s){var c=u(e[o],e,i);if("throw"!==c.type){var l=c.arg,d=l.value;return d&&"object"==typeof d&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(d).then((function(e){l.value=e,a(l)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function S(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method))return l;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var n=u(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,l;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,l):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,l)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function w(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:E}}function E(){return{value:void 0,done:!0}}return f.prototype=g.constructor=h,h.constructor=f,f.displayName=s(h,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,h):(e.__proto__=h,s(e,a,"GeneratorFunction")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},k(m.prototype),m.prototype[i]=function(){return this},e.AsyncIterator=m,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new m(c(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},k(g),s(g,a,"Generator"),g[o]=function(){return this},g.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=w,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(x),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,l):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),l},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),x(r),l}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;x(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:w(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function("r","regeneratorRuntime = r")(t)}}(f={exports:{}}),f.exports);!function(e){e.CHAT="chat"}(l||(l={})),function(e){e[e.PEER_JOINED=0]="PEER_JOINED",e[e.PEER_LEFT=1]="PEER_LEFT",e[e.AUDIO_TOGGLED=2]="AUDIO_TOGGLED",e[e.VIDEO_TOGGLED=3]="VIDEO_TOGGLED",e[e.BECAME_DOMINANT_SPEAKER=4]="BECAME_DOMINANT_SPEAKER",e[e.RESIGNED_DOMINANT_SPEAKER=5]="RESIGNED_DOMINANT_SPEAKER",e[e.STARTED_SPEAKING=6]="STARTED_SPEAKING",e[e.STOPPED_SPEAKING=7]="STOPPED_SPEAKING"}(d||(d={}));var p=function(){function e(){}return e.convertPeer=function(e){var t,r;return{id:e.peerId,name:e.name,role:e.role,isLocal:e.isLocal,videoTrack:null==(t=e.videoTrack)?void 0:t.trackId,audioTrack:null==(r=e.audioTrack)?void 0:r.trackId,auxiliaryTracks:e.auxiliaryTracks.map((function(e){return e.trackId}))}},e.convertTrack=function(e){return{id:e.trackId,source:e.source,type:e.type,enabled:e.enabled,displayEnabled:e.enabled}},e.convertRoom=function(e){return{id:e.id,name:e.name,hasWaitingRoom:e.hasWaitingRoom,shareableLink:e.shareableLink}},e.convertMessage=function(e){return{sender:e.sender,time:e.time,type:e.type,message:e.message}},e}(),v=function(e){return e.room},y=function(e){return e.peers},g=function(e){return e.settings},k=t.createSelector(g,(function(e){return e.maxTileCount})),m=function(e){return e.speakers},S=function(e,t){return t?e.speakers[t]:null},b=t.createSelector([v],(function(e){return e&&e.isConnected})),x=t.createSelector([v,y],(function(e,t){return e.peers.map((function(e){return t[e]}))})),T=t.createSelector(x,(function(e){return e.filter((function(e){return e.isLocal}))[0]})),w=t.createSelector(T,(function(e){return e.id})),E=t.createSelector(x,(function(e){return e.filter((function(e){return!e.isLocal}))})),I=t.createSelector(y,m,(function(e,t){var r=Object.entries(t).sort((function(e,t){var r,n,o=(null==(r=e[1])?void 0:r.audioLevel)||0;return((null==(n=t[1])?void 0:n.audioLevel)||0)>o?1:-1}));if(r.length>0&&r[0][1].audioLevel&&r[0][1].audioLevel>0){var n=r[0][0];if(n in e)return e[n].name}return null})),L=t.createSelector([y,function(e,t){return t}],(function(e,t){return t?e[t]:null})),P=t.createSelector(L,(function(e){return null==e?void 0:e.name})),D=t.createSelector(S,(function(e){return(null==e?void 0:e.audioLevel)||0})),A=function(e){return e.tracks},M=t.createSelector(T,(function(e){return null==e?void 0:e.audioTrack})),O=t.createSelector(T,(function(e){return null==e?void 0:e.videoTrack})),_=function(e){var t=T(e);return C(e,null==t?void 0:t.audioTrack)},R=function(e){var t=T(e);return C(e,null==t?void 0:t.videoTrack)},N=function(e){return j(e,T(e))};function j(e,t){return t&&t.auxiliaryTracks.some((function(t){return!(!t||!e.tracks[t])&&K(e.tracks[t])}))}function K(e){return e&&"video"===e.type&&"screen"===e.source}function C(e,t){return!(!t||!e.tracks[t])&&e.tracks[t].enabled}var G=function(e){return e.messages.byID},H=function(e){return e.messages.allIDs},U=t.createSelector(H,(function(e){return e.length})),J=t.createSelector(G,(function(e){return Object.values(e).filter((function(e){return!e.read})).length})),V=t.createSelector(H,G,(function(e,t){var r=[];return e.forEach((function(e){r.push(t[e])})),r})),F=t.createSelector([y,A],(function(e,t){return Object.values(e).map((function(e){var r;return{peer:e,isAudioEnabled:!!e.audioTrack&&(null==(r=t[e.audioTrack])?void 0:r.enabled)}}))})),B="HMS-Store:",W=function(){function e(){}return e.d=function(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];(e=console).debug.apply(e,[B].concat(r))},e.i=function(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];(e=console).log.apply(e,[B].concat(r))},e.w=function(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];(e=console).warn.apply(e,[B].concat(r))},e.e=function(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];(e=console).error.apply(e,[B].concat(r))},e}(),q=function(e,t){return e&&t},Y=function(e,t){return e&&!t},z=function(e,t){return!e&&t},$=function(e,t){if(e===t)return!0;if(!e||!t||e.length!==t.length)return!1;for(var r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0},Q=function(e,t){for(var r,n=new Set,o=u(e);!(r=o()).done;)n.add(r.value);for(var i,a=u(t);!(i=a()).done;)n.add(i.value);return Array.from(n)};function X(e,t,r,n){e.isLocal&&e.videoTrack&&t.videoTrack&&e.videoTrack!==t.videoTrack&&(n[e.videoTrack]=n[t.videoTrack],delete n[t.videoTrack],r[e.videoTrack]=r[t.videoTrack],r[e.videoTrack].id=e.videoTrack,delete r[t.videoTrack],t.videoTrack=e.videoTrack)}var Z=function(){function e(e,t){this.hmsSDKTracks={},this.isRoomJoinCalled=!1,this.store=e,this.sdk=t}var t=e.prototype;return t.join=function(e){if(this.isRoomJoinCalled)this.logPossibleInconsistency("room join is called again");else try{this.sdkJoinWithListeners(e),this.isRoomJoinCalled=!0}catch(e){return this.isRoomJoinCalled=!1,void W.e("Failed to connect to room - ",e)}},t.leave=function(){var e=s(h.mark((function e(){var t=this;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.store.getState(b)){e.next=4;break}return this.logPossibleInconsistency("room leave is called when no room is connected"),e.abrupt("return");case 4:return e.abrupt("return",this.sdk.leave().then((function(){t.resetState(),W.i("left room")})).catch((function(e){W.e("error in leaving room - ",e)})));case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.setScreenShareEnabled=function(){var e=s(h.mark((function e(t){return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=5;break}return e.next=3,this.startScreenShare();case 3:e.next=7;break;case 5:return e.next=7,this.stopScreenShare();case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setLocalAudioEnabled=function(){var e=s(h.mark((function e(t){var r;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.store.getState(M))){e.next=6;break}return this.store.getState(_)===t&&this.logPossibleInconsistency("local audio track muted states."),e.next=6,this.setEnabledTrack(r,t);case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setLocalVideoEnabled=function(){var e=s(h.mark((function e(t){var r;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.store.getState(O))){e.next=6;break}return this.store.getState(R)===t&&this.logPossibleInconsistency("local video track muted states."),e.next=6,this.setEnabledTrack(r,t);case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setAudioSettings=function(){var e=s(h.mark((function e(t){var r;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.store.getState(M))){e.next=5;break}return e.next=4,this.setSDKLocalAudioTrackSettings(r,t);case 4:this.syncPeers();case 5:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setVideoSettings=function(){var e=s(h.mark((function e(t){var r;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.store.getState(O))){e.next=5;break}return e.next=4,this.setSDKLocalVideoTrackSettings(r,t);case 4:this.syncPeers();case 5:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.sendMessage=function(e){if(""!==e.trim()){var t=this.sdk.sendMessage(l.CHAT,e),r=p.convertMessage(t);r.read=!0,r.senderName="You",this.onHMSMessage(r)}else W.d("Ignoring empty message send")},t.setMessageRead=function(e,t){var r=this;this.store.setState((function(n){t?n.messages.byID[t]?n.messages.byID[t].read=e:r.logPossibleInconsistency("no message with id is found"):n.messages.allIDs.forEach((function(t){n.messages.byID[t].read=e}))}))},t.attachVideo=function(){var e=s(h.mark((function e(t,r){var n;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.hmsSDKTracks[t])||"video"!==n.type){e.next=6;break}return e.next=4,n.addSink(r);case 4:e.next=7;break;case 6:this.logPossibleInconsistency("no video track found to add sink");case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),t.detachVideo=function(){var e=s(h.mark((function e(t,r){var n;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.hmsSDKTracks[t])||"video"!==n.type){e.next=6;break}return e.next=4,n.removeSink(r);case 4:e.next=7;break;case 6:this.logPossibleInconsistency("no video track found to remove sink");case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),t.resetState=function(){this.store.setState((function(e){Object.assign(e,{room:{id:"",isConnected:!1,name:"",peers:[],shareableLink:"",hasWaitingRoom:!1},peers:{},tracks:{},messages:{byID:{},allIDs:[]},speakers:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:"",maxTileCount:9}})})),this.isRoomJoinCalled=!1,this.hmsSDKTracks={}},t.sdkJoinWithListeners=function(e){this.sdk.join(e,{onJoin:this.onJoin.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onTrackUpdate:this.onTrackUpdate.bind(this),onMessageReceived:this.onMessageReceived.bind(this),onError:this.onError.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})},t.startScreenShare=function(){var e=s(h.mark((function e(){return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.store.getState(N)){e.next=7;break}return e.next=4,this.sdk.startScreenShare(this.syncPeers.bind(this));case 4:this.syncPeers(),e.next=8;break;case 7:this.logPossibleInconsistency("start screenshare is called while it's on");case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.stopScreenShare=function(){var e=s(h.mark((function e(){return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.store.getState(N)){e.next=7;break}return e.next=4,this.sdk.stopScreenShare();case 4:this.syncPeers(),e.next=8;break;case 7:this.logPossibleInconsistency("stop screenshare is called while it's not on");case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.setEnabledTrack=function(){var e=s(h.mark((function e(t,r){var n=this;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.store.setState((function(e){e.tracks[t]?e.tracks[t].displayEnabled=r:n.logPossibleInconsistency("track id not found for setEnabled")})),e.prev=1,e.next=4,this.setEnabledSDKTrack(t,r);case 4:this.syncPeers(),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(1),this.store.setState((function(e){e.tracks[t].displayEnabled=!r}));case 10:case"end":return e.stop()}}),e,this,[[1,7]])})));return function(t,r){return e.apply(this,arguments)}}(),t.syncPeers=function(){for(var e,t=this,r={},n=[],o={},i={},a={},s=u(this.sdk.getPeers());!(e=s()).done;){var c=e.value,l=p.convertPeer(c);r[l.id]=l,n.push(l.id);for(var d,f=u([c.audioTrack,c.videoTrack].concat(c.auxiliaryTracks));!(d=f()).done;){var h=d.value;if(h){var v=p.convertTrack(h);this.enrichHMSTrack(v,h),o[v.id]=v,i[h.trackId]=h}}l.isLocal&&Object.assign(a,this.getMediaSettings(c))}this.store.setState((function(e){e.room.peers=n;var s=e.tracks;!function(e,t,r,n){for(var o,i=u(Q(Object.keys(e),Object.keys(t)));!(o=i()).done;){var a=o.value,s=e[a],c=t[a];q(s,c)?($(s.auxiliaryTracks,c.auxiliaryTracks)&&(c.auxiliaryTracks=s.auxiliaryTracks),X(s,c,r,n),Object.assign(s,c)):Y(s,c)?delete e[a]:z(s,c)&&(e[a]=c)}}(e.peers,r,o,i),function(e,t){for(var r,n=u(Q(Object.keys(e),Object.keys(t)));!(r=n()).done;){var o=r.value,i=e[o],a=t[o];q(i,a)?Object.assign(i,a):Y(i,a)?delete e[o]:z(i,a)&&(e[o]=a)}}(s,o),Object.assign(e.settings,a),t.hmsSDKTracks=i}))},t.onJoin=function(e){this.store.setState((function(t){Object.assign(t.room,p.convertRoom(e)),t.room.isConnected=!0})),this.syncPeers()},t.onRoomUpdate=function(){this.syncPeers()},t.onPeerUpdate=function(e){e!==d.BECAME_DOMINANT_SPEAKER&&e!==d.RESIGNED_DOMINANT_SPEAKER&&this.syncPeers()},t.onTrackUpdate=function(){this.syncPeers()},t.onMessageReceived=function(e){var t=p.convertMessage(e);t.read=!1,t.senderName=P(this.store.getState(),t.sender),this.onHMSMessage(t)},t.onHMSMessage=function(e){var t=this;this.store.setState((function(r){e.id=String(t.store.getState(U)+1),r.messages.byID[e.id]=e,r.messages.allIDs.push(e.id)}))},t.onAudioLevelUpdate=function(e){this.store.setState((function(t){var r={};e.forEach((function(e){r[e.peerId]=e.audioLevel,t.speakers[e.peerId]||(t.speakers[e.peerId]={})}));for(var n=0,o=Object.entries(t.speakers);n<o.length;n++){var i=o[n],a=i[0],s=i[1];s.audioLevel=r[a]||0,0===s.audioLevel&&delete t.speakers[a]}}))},t.onError=function(e){1===Math.floor(e.code/1e3)&&this.leave().then((function(){return console.log("error from SDK, left room.")})),W.e("received error from sdk",e)},t.setEnabledSDKTrack=function(){var e=s(h.mark((function e(t,r){var n;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.hmsSDKTracks[t])){e.next=6;break}return e.next=4,n.setEnabled(r);case 4:e.next=7;break;case 6:this.logPossibleInconsistency("track "+t+" not present, unable to enabled/disable");case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),t.setSDKLocalVideoTrackSettings=function(){var e=s(h.mark((function e(t,r){var n;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.hmsSDKTracks[t])){e.next=6;break}return e.next=4,n.setSettings(r);case 4:e.next=7;break;case 6:this.logPossibleInconsistency("local track "+t+" not present, unable to set settings");case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),t.setSDKLocalAudioTrackSettings=function(){var e=s(h.mark((function e(t,r){var n;return h.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.hmsSDKTracks[t])){e.next=6;break}return e.next=4,n.setSettings(r);case 4:e.next=7;break;case 6:this.logPossibleInconsistency("local track "+t+" not present, unable to set settings");case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),t.enrichHMSTrack=function(e,t){var r=t.getMediaTrackSettings();e.height=r.height,e.width=r.width},t.getMediaSettings=function(e){var t,r,n,o;return{audioInputDeviceId:null==(t=e.audioTrack)||null==(r=t.settings)?void 0:r.deviceId,videoInputDeviceId:null==(n=e.audioTrack)||null==(o=n.settings)?void 0:o.deviceId}},t.logPossibleInconsistency=function(e){W.w("possible inconsistency detected - ",e)},e}();exports.HMSReactiveStore=function(){function e(e){e||(e=new r.HMSSdk),this.store=this.createNewHMSStore(),this.hmsActions=new Z(this.store,e)}var t=e.prototype;return t.getStore=function(){return this.store},t.getHMSActions=function(){return this.hmsActions},t.onNotification=function(){throw new Error("Not yet implemented")},t.createNewHMSStore=function(){var e=n(o.devtools(this.immerMiddleware((function(){return{room:{id:"",isConnected:!1,name:"",peers:[],shareableLink:"",hasWaitingRoom:!1},peers:{},tracks:{},messages:{byID:{},allIDs:[]},speakers:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:"",maxTileCount:9}}})),"HMSStore")),t=e.setState;e.setState=function(e){return t(i(e))};var r=e.getState;return e.getState=function(e){return e?e(r()):r()},e},t.immerMiddleware=function(e){return function(t,r,n){return e((function(e){return t(i(e))}),r,n)}},e}(),exports.HMSSDKActions=Z,exports.selectCameraStreamByPeerID=function(e,t){var r=L(e,t);if(r&&r.videoTrack&&""!==r.videoTrack)return e.tracks[r.videoTrack]},exports.selectDominantSpeakerName=I,exports.selectHMSMessages=V,exports.selectHMSMessagesCount=U,exports.selectIsConnectedToRoom=b,exports.selectIsLocalAudioEnabled=_,exports.selectIsLocalScreenShared=N,exports.selectIsLocalVideoDisplayEnabled=function(e){var t=T(e);return function(e,t){return!(!t||!e.tracks[t])&&e.tracks[t].displayEnabled}(e,null==t?void 0:t.videoTrack)},exports.selectIsLocalVideoEnabled=R,exports.selectIsPeerAudioEnabled=function(e,t){var r=L(e,t);return C(e,null==r?void 0:r.audioTrack)},exports.selectIsPeerVideoEnabled=function(e,t){var r=L(e,t);return C(e,null==r?void 0:r.videoTrack)},exports.selectIsSomeoneScreenSharing=function(e){return x(e).some((function(t){return j(e,t)}))},exports.selectLocalAudioTrackID=M,exports.selectLocalMediaSettings=g,exports.selectLocalPeer=T,exports.selectLocalPeerID=w,exports.selectLocalVideoTrackID=O,exports.selectMaxTilesCount=k,exports.selectMessageIDsInOrder=H,exports.selectMessagesMap=G,exports.selectPeerAudioByID=D,exports.selectPeerByID=L,exports.selectPeerNameByID=P,exports.selectPeerScreenSharing=function(e){return x(e).find((function(t){return j(e,t)}))},exports.selectPeers=x,exports.selectPeersMap=y,exports.selectPeersWithAudioStatus=F,exports.selectRemotePeers=E,exports.selectScreenShareByPeerID=function(e,t){var r=L(e,t);if(r&&j(e,r)){var n=null==r?void 0:r.auxiliaryTracks.find((function(t){return K(e.tracks[t])}));return n?e.tracks[n]:void 0}},exports.selectTracksMap=A,exports.selectUnreadHMSMessagesCount=J,exports.trackIDSelector=function(e,t){return t}; | ||
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("reselect"),r=require("@100mslive/hms-video"),n=e(require("zustand/vanilla")),o=require("zustand/middleware"),i=e(require("immer"));function a(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function s(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function s(e){a(i,n,o,s,c,"next",e)}function c(e){a(i,n,o,s,c,"throw",e)}s(void 0)}))}}function c(){return(c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function l(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return u(e,void 0);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,void 0):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,d,h,p=(function(e){var t=function(e){var t=Object.prototype,r=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function s(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,r){return e[t]=r}}function c(e,t,r,n){var o=Object.create((t&&t.prototype instanceof f?t:f).prototype),i=new w(n||[]);return o._invoke=function(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=S(a,r);if(s){if(s===l)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=u(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===l)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(e,r,i),o}function u(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var l={};function f(){}function d(){}function h(){}var p={};p[o]=function(){return this};var v=Object.getPrototypeOf,y=v&&v(v(T([])));y&&y!==t&&r.call(y,o)&&(p=y);var g=h.prototype=f.prototype=Object.create(p);function k(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function m(e,t){var n;this._invoke=function(o,i){function a(){return new t((function(n,a){!function n(o,i,a,s){var c=u(e[o],e,i);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==typeof f&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(f).then((function(e){l.value=e,a(l)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function S(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method))return l;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var n=u(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,l;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,l):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,l)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function w(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function T(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:E}}function E(){return{value:void 0,done:!0}}return d.prototype=g.constructor=h,h.constructor=d,d.displayName=s(h,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,h):(e.__proto__=h,s(e,a,"GeneratorFunction")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},k(m.prototype),m.prototype[i]=function(){return this},e.AsyncIterator=m,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new m(c(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},k(g),s(g,a,"Generator"),g[o]=function(){return this},g.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=T,w.prototype={constructor:w,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(x),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,l):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),l},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),x(r),l}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;x(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:T(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function("r","regeneratorRuntime = r")(t)}}(h={exports:{}}),h.exports);!function(e){e.CHAT="chat"}(f||(f={})),function(e){e[e.PEER_JOINED=0]="PEER_JOINED",e[e.PEER_LEFT=1]="PEER_LEFT",e[e.AUDIO_TOGGLED=2]="AUDIO_TOGGLED",e[e.VIDEO_TOGGLED=3]="VIDEO_TOGGLED",e[e.BECAME_DOMINANT_SPEAKER=4]="BECAME_DOMINANT_SPEAKER",e[e.RESIGNED_DOMINANT_SPEAKER=5]="RESIGNED_DOMINANT_SPEAKER",e[e.STARTED_SPEAKING=6]="STARTED_SPEAKING",e[e.STOPPED_SPEAKING=7]="STOPPED_SPEAKING"}(d||(d={}));var v=function(){function e(){}return e.convertPeer=function(e){var t,r;return{id:e.peerId,name:e.name,role:e.role,isLocal:e.isLocal,videoTrack:null==(t=e.videoTrack)?void 0:t.trackId,audioTrack:null==(r=e.audioTrack)?void 0:r.trackId,auxiliaryTracks:e.auxiliaryTracks.map((function(e){return e.trackId}))}},e.convertTrack=function(e){return{id:e.trackId,source:e.source,type:e.type,enabled:e.enabled,displayEnabled:e.enabled}},e.convertRoom=function(e){return{id:e.id,name:e.name,hasWaitingRoom:e.hasWaitingRoom,shareableLink:e.shareableLink}},e.convertMessage=function(e){return{sender:e.sender,time:e.time,type:e.type,message:e.message}},e}(),y=function(e){return e.room},g=function(e){return e.peers},k=function(e){return e.settings},m=t.createSelector(k,(function(e){return e.maxTileCount})),S=function(e){return e.speakers},b=function(e,t){return t?e.speakers[t]:null},x=t.createSelector([y],(function(e){return e&&e.isConnected})),w=t.createSelector([y,g],(function(e,t){return e.peers.map((function(e){return t[e]}))})),T=t.createSelector(w,(function(e){return e.filter((function(e){return e.isLocal}))[0]})),E=t.createSelector(T,(function(e){return e.id})),I=t.createSelector(w,(function(e){return e.filter((function(e){return!e.isLocal}))})),L=t.createSelector(g,S,(function(e,t){var r=Object.entries(t).sort((function(e,t){var r,n,o=(null==(r=e[1])?void 0:r.audioLevel)||0;return((null==(n=t[1])?void 0:n.audioLevel)||0)>o?1:-1}));if(r.length>0&&r[0][1].audioLevel&&r[0][1].audioLevel>0){var n=r[0][0];if(n in e)return e[n].name}return null})),P=t.createSelector([g,function(e,t){return t}],(function(e,t){return t?e[t]:null})),D=t.createSelector(P,(function(e){return null==e?void 0:e.name})),A=t.createSelector(b,(function(e){return(null==e?void 0:e.audioLevel)||0})),M=function(e){return e.tracks},O=t.createSelector(T,(function(e){return null==e?void 0:e.audioTrack})),_=t.createSelector(T,(function(e){return null==e?void 0:e.videoTrack})),R=function(e){var t=T(e);return G(e,null==t?void 0:t.audioTrack)},N=function(e){var t=T(e);return G(e,null==t?void 0:t.videoTrack)},j=function(e){return K(e,T(e))};function K(e,t){return t&&t.auxiliaryTracks.some((function(t){return!(!t||!e.tracks[t])&&C(e.tracks[t])}))}function C(e){return e&&"video"===e.type&&"screen"===e.source}function G(e,t){return!(!t||!e.tracks[t])&&e.tracks[t].enabled}var H=function(e){return e.messages.byID},U=function(e){return e.messages.allIDs},J=t.createSelector(U,(function(e){return e.length})),V=t.createSelector(H,(function(e){return Object.values(e).filter((function(e){return!e.read})).length})),F=t.createSelector(U,H,(function(e,t){var r=[];return e.forEach((function(e){r.push(t[e])})),r})),B=t.createSelector([g,M],(function(e,t){return Object.values(e).map((function(e){var r;return{peer:e,isAudioEnabled:!!e.audioTrack&&(null==(r=t[e.audioTrack])?void 0:r.enabled)}}))})),W="HMS-Store:",q=function(){function e(){}return e.d=function(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];(e=console).debug.apply(e,[W].concat(r))},e.i=function(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];(e=console).log.apply(e,[W].concat(r))},e.w=function(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];(e=console).warn.apply(e,[W].concat(r))},e.e=function(){for(var e,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];(e=console).error.apply(e,[W].concat(r))},e}(),Y=function(e,t){return e&&t},z=function(e,t){return e&&!t},$=function(e,t){return!e&&t},Q=function(e,t){if(e===t)return!0;if(!e||!t||e.length!==t.length)return!1;for(var r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0},X=function(e,t){for(var r,n=new Set,o=l(e);!(r=o()).done;)n.add(r.value);for(var i,a=l(t);!(i=a()).done;)n.add(i.value);return Array.from(n)};function Z(e,t,r,n){e.isLocal&&e.videoTrack&&t.videoTrack&&e.videoTrack!==t.videoTrack&&(n[e.videoTrack]=n[t.videoTrack],delete n[t.videoTrack],r[e.videoTrack]=r[t.videoTrack],r[e.videoTrack].id=e.videoTrack,delete r[t.videoTrack],t.videoTrack=e.videoTrack)}var ee=function(){function e(e,t){this.hmsSDKTracks={},this.isRoomJoinCalled=!1,this.store=e,this.sdk=t}var t=e.prototype;return t.join=function(e){if(this.isRoomJoinCalled)this.logPossibleInconsistency("room join is called again");else try{this.sdkJoinWithListeners(e),this.isRoomJoinCalled=!0}catch(e){return this.isRoomJoinCalled=!1,void q.e("Failed to connect to room - ",e)}},t.leave=function(){var e=s(p.mark((function e(){var t=this;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.store.getState(x)){e.next=4;break}return this.logPossibleInconsistency("room leave is called when no room is connected"),e.abrupt("return");case 4:return e.abrupt("return",this.sdk.leave().then((function(){t.resetState(),q.i("left room")})).catch((function(e){q.e("error in leaving room - ",e)})));case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.setScreenShareEnabled=function(){var e=s(p.mark((function e(t){return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=5;break}return e.next=3,this.startScreenShare();case 3:e.next=7;break;case 5:return e.next=7,this.stopScreenShare();case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setLocalAudioEnabled=function(){var e=s(p.mark((function e(t){var r;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.store.getState(O))){e.next=6;break}return this.store.getState(R)===t&&this.logPossibleInconsistency("local audio track muted states."),e.next=6,this.setEnabledTrack(r,t);case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setLocalVideoEnabled=function(){var e=s(p.mark((function e(t){var r;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.store.getState(_))){e.next=6;break}return this.store.getState(N)===t&&this.logPossibleInconsistency("local video track muted states."),e.next=6,this.setEnabledTrack(r,t);case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setAudioSettings=function(){var e=s(p.mark((function e(t){var r;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.store.getState(O))){e.next=5;break}return e.next=4,this.setSDKLocalAudioTrackSettings(r,t);case 4:this.syncPeers();case 5:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.setVideoSettings=function(){var e=s(p.mark((function e(t){var r;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.store.getState(_))){e.next=5;break}return e.next=4,this.setSDKLocalVideoTrackSettings(r,t);case 4:this.syncPeers();case 5:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),t.sendMessage=function(e){if(""!==e.trim()){var t=this.sdk.sendMessage(f.CHAT,e),r=v.convertMessage(t);r.read=!0,r.senderName="You",this.onHMSMessage(r)}else q.d("Ignoring empty message send")},t.setMessageRead=function(e,t){var r=this;this.store.setState((function(n){t?n.messages.byID[t]?n.messages.byID[t].read=e:r.logPossibleInconsistency("no message with id is found"):n.messages.allIDs.forEach((function(t){n.messages.byID[t].read=e}))}))},t.attachVideo=function(){var e=s(p.mark((function e(t,r){var n;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.hmsSDKTracks[t])||"video"!==n.type){e.next=6;break}return e.next=4,n.addSink(r);case 4:e.next=7;break;case 6:this.logPossibleInconsistency("no video track found to add sink");case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),t.detachVideo=function(){var e=s(p.mark((function e(t,r){var n;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.hmsSDKTracks[t])||"video"!==n.type){e.next=6;break}return e.next=4,n.removeSink(r);case 4:e.next=7;break;case 6:this.logPossibleInconsistency("no video track found to remove sink");case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),t.resetState=function(){this.store.setState((function(e){Object.assign(e,{room:{id:"",isConnected:!1,name:"",peers:[],shareableLink:"",hasWaitingRoom:!1},peers:{},tracks:{},messages:{byID:{},allIDs:[]},speakers:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:"",maxTileCount:9}})})),this.isRoomJoinCalled=!1,this.hmsSDKTracks={}},t.sdkJoinWithListeners=function(e){this.sdk.join(e,{onJoin:this.onJoin.bind(this),onRoomUpdate:this.onRoomUpdate.bind(this),onPeerUpdate:this.onPeerUpdate.bind(this),onTrackUpdate:this.onTrackUpdate.bind(this),onMessageReceived:this.onMessageReceived.bind(this),onError:this.onError.bind(this)}),this.sdk.addAudioListener({onAudioLevelUpdate:this.onAudioLevelUpdate.bind(this)})},t.startScreenShare=function(){var e=s(p.mark((function e(){return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.store.getState(j)){e.next=7;break}return e.next=4,this.sdk.startScreenShare(this.syncPeers.bind(this));case 4:this.syncPeers(),e.next=8;break;case 7:this.logPossibleInconsistency("start screenshare is called while it's on");case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.stopScreenShare=function(){var e=s(p.mark((function e(){return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.store.getState(j)){e.next=7;break}return e.next=4,this.sdk.stopScreenShare();case 4:this.syncPeers(),e.next=8;break;case 7:this.logPossibleInconsistency("stop screenshare is called while it's not on");case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.setEnabledTrack=function(){var e=s(p.mark((function e(t,r){var n=this;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.store.setState((function(e){e.tracks[t]?e.tracks[t].displayEnabled=r:n.logPossibleInconsistency("track id not found for setEnabled")})),e.prev=1,e.next=4,this.setEnabledSDKTrack(t,r);case 4:this.syncPeers(),e.next=10;break;case 7:e.prev=7,e.t0=e.catch(1),this.store.setState((function(e){e.tracks[t].displayEnabled=!r}));case 10:case"end":return e.stop()}}),e,this,[[1,7]])})));return function(t,r){return e.apply(this,arguments)}}(),t.syncPeers=function(){for(var e,t=this,r={},n=[],o={},i={},a={},s=l(this.sdk.getPeers());!(e=s()).done;){var c=e.value,u=v.convertPeer(c);r[u.id]=u,n.push(u.id);for(var f,d=l([c.audioTrack,c.videoTrack].concat(c.auxiliaryTracks));!(f=d()).done;){var h=f.value;if(h){var p=v.convertTrack(h);this.enrichHMSTrack(p,h),o[p.id]=p,i[h.trackId]=h}}u.isLocal&&Object.assign(a,this.getMediaSettings(c))}this.store.setState((function(e){e.room.peers=n;var s=e.tracks;!function(e,t,r,n){for(var o,i=l(X(Object.keys(e),Object.keys(t)));!(o=i()).done;){var a=o.value,s=e[a],c=t[a];Y(s,c)?(Q(s.auxiliaryTracks,c.auxiliaryTracks)&&(c.auxiliaryTracks=s.auxiliaryTracks),Z(s,c,r,n),Object.assign(s,c)):z(s,c)?delete e[a]:$(s,c)&&(e[a]=c)}}(e.peers,r,o,i),function(e,t){for(var r,n=l(X(Object.keys(e),Object.keys(t)));!(r=n()).done;){var o=r.value,i=e[o],a=t[o];Y(i,a)?Object.assign(i,a):z(i,a)?delete e[o]:$(i,a)&&(e[o]=a)}}(s,o),Object.assign(e.settings,a),t.hmsSDKTracks=i}))},t.onJoin=function(e){this.store.setState((function(t){Object.assign(t.room,v.convertRoom(e)),t.room.isConnected=!0})),this.syncPeers()},t.onRoomUpdate=function(){this.syncPeers()},t.onPeerUpdate=function(e){e!==d.BECAME_DOMINANT_SPEAKER&&e!==d.RESIGNED_DOMINANT_SPEAKER&&this.syncPeers()},t.onTrackUpdate=function(){this.syncPeers()},t.onMessageReceived=function(e){var t=v.convertMessage(e);t.read=!1,t.senderName=D(this.store.getState(),t.sender),this.onHMSMessage(t)},t.onHMSMessage=function(e){var t=this;this.store.setState((function(r){e.id=String(t.store.getState(J)+1),r.messages.byID[e.id]=e,r.messages.allIDs.push(e.id)}))},t.onAudioLevelUpdate=function(e){this.store.setState((function(t){var r={};e.forEach((function(e){r[e.peerId]=e.audioLevel,t.speakers[e.peerId]||(t.speakers[e.peerId]={})}));for(var n=0,o=Object.entries(t.speakers);n<o.length;n++){var i=o[n],a=i[0],s=i[1];s.audioLevel=r[a]||0,0===s.audioLevel&&delete t.speakers[a]}}))},t.onError=function(e){1===Math.floor(e.code/1e3)&&this.leave().then((function(){return console.log("error from SDK, left room.")})),q.e("received error from sdk",e)},t.setEnabledSDKTrack=function(){var e=s(p.mark((function e(t,r){var n;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.hmsSDKTracks[t])){e.next=6;break}return e.next=4,n.setEnabled(r);case 4:e.next=7;break;case 6:this.logPossibleInconsistency("track "+t+" not present, unable to enabled/disable");case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),t.setSDKLocalVideoTrackSettings=function(){var e=s(p.mark((function e(t,r){var n;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.hmsSDKTracks[t])){e.next=6;break}return e.next=4,n.setSettings(r);case 4:e.next=7;break;case 6:this.logPossibleInconsistency("local track "+t+" not present, unable to set settings");case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),t.setSDKLocalAudioTrackSettings=function(){var e=s(p.mark((function e(t,r){var n;return p.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.hmsSDKTracks[t])){e.next=6;break}return e.next=4,n.setSettings(r);case 4:e.next=7;break;case 6:this.logPossibleInconsistency("local track "+t+" not present, unable to set settings");case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),t.enrichHMSTrack=function(e,t){var r=t.getMediaTrackSettings();e.height=r.height,e.width=r.width},t.getMediaSettings=function(e){var t,r,n,o;return{audioInputDeviceId:null==(t=e.audioTrack)||null==(r=t.settings)?void 0:r.deviceId,videoInputDeviceId:null==(n=e.audioTrack)||null==(o=n.settings)?void 0:o.deviceId}},t.logPossibleInconsistency=function(e){q.w("possible inconsistency detected - ",e)},e}();exports.HMSReactiveStore=function(){function e(e){e||(e=new r.HMSSdk),this.store=this.createNewHMSStore(),this.hmsActions=new ee(this.store,e)}var t=e.prototype;return t.getStore=function(){return c({},this.store,{setState:function(){throw new Error("Mutating store is not allowed")}})},t.getHMSActions=function(){return this.hmsActions},t.onNotification=function(){throw new Error("Not yet implemented")},t.createNewHMSStore=function(){var e=n(o.devtools(this.immerMiddleware((function(){return{room:{id:"",isConnected:!1,name:"",peers:[],shareableLink:"",hasWaitingRoom:!1},peers:{},tracks:{},messages:{byID:{},allIDs:[]},speakers:{},settings:{audioInputDeviceId:"",audioOutputDeviceId:"",videoInputDeviceId:"",maxTileCount:9}}})),"HMSStore")),t=e.setState;e.setState=function(e){return t(i(e))};var r=e.getState;return e.getState=function(e){return e?e(r()):r()},e},t.immerMiddleware=function(e){return function(t,r,n){return e((function(e){return t(i(e))}),r,n)}},e}(),exports.HMSSDKActions=ee,exports.selectCameraStreamByPeerID=function(e,t){var r=P(e,t);if(r&&r.videoTrack&&""!==r.videoTrack)return e.tracks[r.videoTrack]},exports.selectDominantSpeakerName=L,exports.selectHMSMessages=F,exports.selectHMSMessagesCount=J,exports.selectIsConnectedToRoom=x,exports.selectIsLocalAudioEnabled=R,exports.selectIsLocalScreenShared=j,exports.selectIsLocalVideoDisplayEnabled=function(e){var t=T(e);return function(e,t){return!(!t||!e.tracks[t])&&e.tracks[t].displayEnabled}(e,null==t?void 0:t.videoTrack)},exports.selectIsLocalVideoEnabled=N,exports.selectIsPeerAudioEnabled=function(e,t){var r=P(e,t);return G(e,null==r?void 0:r.audioTrack)},exports.selectIsPeerVideoEnabled=function(e,t){var r=P(e,t);return G(e,null==r?void 0:r.videoTrack)},exports.selectIsSomeoneScreenSharing=function(e){return w(e).some((function(t){return K(e,t)}))},exports.selectLocalAudioTrackID=O,exports.selectLocalMediaSettings=k,exports.selectLocalPeer=T,exports.selectLocalPeerID=E,exports.selectLocalVideoTrackID=_,exports.selectMaxTilesCount=m,exports.selectMessageIDsInOrder=U,exports.selectMessagesMap=H,exports.selectPeerAudioByID=A,exports.selectPeerByID=P,exports.selectPeerNameByID=D,exports.selectPeerScreenSharing=function(e){return w(e).find((function(t){return K(e,t)}))},exports.selectPeers=w,exports.selectPeersMap=g,exports.selectPeersWithAudioStatus=B,exports.selectRemotePeers=I,exports.selectScreenShareByPeerID=function(e,t){var r=P(e,t);if(r&&K(e,r)){var n=null==r?void 0:r.auxiliaryTracks.find((function(t){return C(e.tracks[t])}));return n?e.tracks[n]:void 0}},exports.selectTracksMap=M,exports.selectUnreadHMSMessagesCount=V,exports.trackIDSelector=function(e,t){return t}; | ||
//# sourceMappingURL=hms-video-store.cjs.production.min.js.map |
@@ -5,5 +5,8 @@ import React from 'react'; | ||
import { EqualityChecker, StateSelector } from 'zustand'; | ||
export interface IHMSReactStore extends IHMSStoreReadOnly { | ||
<U>(selector: StateSelector<HMSStore, U>, equalityFn?: EqualityChecker<U>): U; | ||
} | ||
export interface HMSRoomProviderProps { | ||
actions?: IHMSActions; | ||
store?: IHMSStoreReadOnly; | ||
store?: IHMSReactStore; | ||
} | ||
@@ -10,0 +13,0 @@ export declare const HMSRoomProvider: React.FC<HMSRoomProviderProps>; |
{ | ||
"version": "0.1.2", | ||
"version": "0.1.3", | ||
"license": "MIT", | ||
@@ -4,0 +4,0 @@ "main": "dist/index.js", |
# 100ms Reactive Store | ||
![Test](https://github.com/100mslive/hms-video-store/actions/workflows/main.yaml/badge.svg) | ||
![Size](https://github.com/100mslive/hms-video-store/actions/workflows/size.yml/badge.svg) | ||
[![Publish](https://github.com/100mslive/hms-video-store/actions/workflows/npm-publish.yml/badge.svg)](https://www.npmjs.com/package/@100mslive/hms-video-store) | ||
![Publish Beta](https://github.com/100mslive/hms-video-store/actions/workflows/npm-publish-beta.yml/badge.svg?branch=develop) | ||
[![Bundle Size](https://badgen.net/bundlephobia/minzip/@100mslive/hms-video-store)](https://bundlephobia.com/result?p=@100mslive/hms-video-store) | ||
@@ -30,7 +30,12 @@ ![Tree shaking](https://badgen.net/bundlephobia/tree-shaking/@100mslive/hms-video-store) | ||
functions - | ||
* getState() -> get the full current state of the UI, true at current time | ||
* subscribe(callback, selector) -> | ||
* getState(selector) -> get the current state of the UI, true at the time of function call | ||
* subscribe(callback, selector) -> subscribe to a portion of the state selected by the | ||
passed in selector such that whenever the portion changes, the passed in callback is notified. | ||
2. Actions - The actions interface for dispatching actions which in turn may reach | ||
out to server and update the store. | ||
out to server and update the store. Check the interface with detailed doc | ||
[here](src/core/IHMSActions.ts). | ||
We also provide optimized and efficient selectors for most common use cases. These are | ||
available in [this folder](src/core/selectors). | ||
Important Note: The data received from either getState or Subscribe is immutable, the | ||
@@ -87,8 +92,8 @@ object received is frozen, and it is not allowed to mutate it. You'll get an error | ||
## Redux Devtools Images of the store | ||
## Out of Box Support for [Redux Devtools Extension](https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=en) | ||
#### Store State | ||
### Store State | ||
![Store State](images/store-state.png) | ||
#### Store Graph | ||
### Store Graph | ||
![Store State](images/store-graph.png) |
import { IHMSActions } from '../IHMSActions'; | ||
import { HMSSDKActions } from './HMSSDKActions'; | ||
import { HMSSdk } from '@100mslive/hms-video'; | ||
import { IHMSStore, IHMSStoreReadOnly } from '../IHMSStore'; | ||
import create, { SetState } from 'zustand'; | ||
import { IHMSStore } from '../IHMSStore'; | ||
import create, { SetState } from 'zustand/vanilla'; | ||
import { createDefaultStoreState, HMSStore } from '../schema'; | ||
@@ -28,5 +28,7 @@ import { devtools } from 'zustand/middleware'; | ||
*/ | ||
getStore(): IHMSStoreReadOnly { | ||
// override subscribe requiring a selector | ||
return this.store; | ||
getStore(): IHMSStore { | ||
const setStateError = () => { | ||
throw new Error('Mutating store is not allowed'); | ||
}; | ||
return { ...this.store, setState: setStateError }; | ||
} | ||
@@ -33,0 +35,0 @@ |
@@ -1,4 +0,3 @@ | ||
import { UseStore } from 'zustand'; | ||
import { HMSStore } from './schema'; | ||
import { StateSelector, Subscribe } from 'zustand/vanilla'; | ||
import { StateSelector, StoreApi, Subscribe } from 'zustand/vanilla'; | ||
@@ -9,3 +8,3 @@ /** | ||
*/ | ||
export interface IHMSStore extends UseStore<HMSStore> { | ||
export interface IHMSStore extends StoreApi<HMSStore> { | ||
/** | ||
@@ -12,0 +11,0 @@ * Get a part of store using a selector which is true at the current point of time |
import React, { createContext, useContext } from 'react'; | ||
import { HMSReactiveStore, HMSStore, IHMSActions, IHMSStore } from '../core'; | ||
import { HMSReactiveStore, HMSStore, IHMSActions } from '../core'; | ||
import { IHMSStoreReadOnly } from '../core/IHMSStore'; | ||
import { EqualityChecker, StateSelector } from 'zustand'; | ||
import create, { EqualityChecker, StateSelector } from 'zustand'; | ||
import shallow from 'zustand/shallow'; | ||
import { HMSLogger } from '../common/ui-logger'; | ||
export interface IHMSReactStore extends IHMSStoreReadOnly { | ||
<U>(selector: StateSelector<HMSStore, U>, equalityFn?: EqualityChecker<U>): U; | ||
} | ||
interface HMSContextProviderProps { | ||
actions: IHMSActions; // for actions which may also mutate store | ||
store: IHMSStoreReadOnly; // readonly store, don't mutate this | ||
store: IHMSReactStore; // readonly store, don't mutate this | ||
} | ||
@@ -15,3 +19,3 @@ | ||
actions?: IHMSActions; | ||
store?: IHMSStoreReadOnly; | ||
store?: IHMSReactStore; | ||
} | ||
@@ -34,3 +38,3 @@ | ||
actions: hmsReactiveStore.getHMSActions(), | ||
store: hmsReactiveStore.getStore(), | ||
store: create<HMSStore>(hmsReactiveStore.getStore()), // convert vanilla store in react hook | ||
}; | ||
@@ -64,3 +68,3 @@ } | ||
} | ||
const useStore = HMSContextConsumer.store as IHMSStore; | ||
const useStore = HMSContextConsumer.store; | ||
return useStore(selector, equalityFn); | ||
@@ -67,0 +71,0 @@ }; |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
555236
5587
98